aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-02-11 22:16:52 +0800
committerPéter Szilágyi <peterke@gmail.com>2016-02-11 22:16:52 +0800
commitb019f3ee29ce55c3d515ee8bafe0f4bb14221c0a (patch)
tree26e023be6c99a10e82a5a0ebadd1e42cefe9bd3c
parentb05e472c076d30035233d6a8b5fb3360b236e3ff (diff)
downloadgo-tangerine-b019f3ee29ce55c3d515ee8bafe0f4bb14221c0a.tar
go-tangerine-b019f3ee29ce55c3d515ee8bafe0f4bb14221c0a.tar.gz
go-tangerine-b019f3ee29ce55c3d515ee8bafe0f4bb14221c0a.tar.bz2
go-tangerine-b019f3ee29ce55c3d515ee8bafe0f4bb14221c0a.tar.lz
go-tangerine-b019f3ee29ce55c3d515ee8bafe0f4bb14221c0a.tar.xz
go-tangerine-b019f3ee29ce55c3d515ee8bafe0f4bb14221c0a.tar.zst
go-tangerine-b019f3ee29ce55c3d515ee8bafe0f4bb14221c0a.zip
Godeps: update all dependencies to latest code
-rw-r--r--Godeps/Godeps.json99
-rw-r--r--Godeps/_workspace/src/github.com/Gustav-Simonsson/go-opencl/cl/cl_test.go254
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/.travis.yml6
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/README.md43
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/app.go62
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/appveyor.yml16
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/autocomplete/bash_autocomplete5
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/command.go108
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/context.go6
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/flag.go135
-rw-r--r--Godeps/_workspace/src/github.com/codegangsta/cli/help.go6
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/LICENSE13
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/bypass.go151
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/bypasssafe.go37
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common.go135
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common_test.go298
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/config.go5
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump.go31
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump_test.go1021
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dumpcgo_test.go97
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dumpnocgo_test.go26
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/example_test.go230
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/format_test.go1535
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/internal_test.go156
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/spew_test.go308
-rw-r--r--Godeps/_workspace/src/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go82
-rw-r--r--Godeps/_workspace/src/github.com/ethereum/ethash/ethash_test.go221
-rw-r--r--Godeps/_workspace/src/github.com/fatih/color/color.go53
-rw-r--r--Godeps/_workspace/src/github.com/fatih/color/color_test.go176
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/.gitignore1
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/README.md169
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/barchart.go (renamed from Godeps/_workspace/src/github.com/gizak/termui/bar.go)67
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/block.go286
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/block_common.go (renamed from Godeps/_workspace/src/github.com/gizak/termui/box_others.go)8
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/block_test.go46
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/block_windows.go (renamed from Godeps/_workspace/src/github.com/gizak/termui/box_windows.go)2
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/box.go117
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/buffer.go106
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/canvas.go12
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/canvas_test.go55
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/config26
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/debug/debuger.go117
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/doc.go2
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/events.go455
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/events_test.go28
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/barchart.go35
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/barchart.pngbin15386 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/dashboard.gifbin453764 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/dashboard.go148
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/gauge.go62
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/gauge.pngbin32431 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/grid.gifbin800288 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/grid.go134
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/linechart.go68
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/linechart.pngbin139361 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/list.go41
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/list.pngbin37227 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/mbarchart.go50
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/mbarchart.pngbin20075 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/par.go48
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/par.pngbin65773 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/sparklines.go65
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/sparklines.pngbin43431 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/theme.go143
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/themedefault.pngbin105508 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/example/themehelloworld.pngbin90111 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/gauge.go90
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/grid.go20
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/grid_test.go98
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/helper.go156
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/helper_test.go58
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/linechart.go (renamed from Godeps/_workspace/src/github.com/gizak/termui/chart.go)153
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/linechart_others.go (renamed from Godeps/_workspace/src/github.com/gizak/termui/chart_others.go)2
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/linechart_windows.go (renamed from Godeps/_workspace/src/github.com/gizak/termui/chart_windows.go)2
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/list.go53
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/mbarchart.go (renamed from Godeps/_workspace/src/github.com/gizak/termui/mbar.go)103
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/p.go71
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/par.go64
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/point.go28
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/pos.go78
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/render.go117
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/sparkline.go83
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/test/runtest.go66
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/textbuilder.go215
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/theme.go58
-rw-r--r--Godeps/_workspace/src/github.com/gizak/termui/widget.go94
-rw-r--r--Godeps/_workspace/src/github.com/golang/snappy/AUTHORS15
-rw-r--r--Godeps/_workspace/src/github.com/golang/snappy/CONTRIBUTORS37
-rw-r--r--Godeps/_workspace/src/github.com/golang/snappy/LICENSE27
-rw-r--r--Godeps/_workspace/src/github.com/golang/snappy/README7
-rw-r--r--Godeps/_workspace/src/github.com/golang/snappy/decode.go (renamed from Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/decode.go)30
-rw-r--r--Godeps/_workspace/src/github.com/golang/snappy/encode.go (renamed from Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/encode.go)192
-rw-r--r--Godeps/_workspace/src/github.com/golang/snappy/snappy.go (renamed from Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/snappy.go)15
-rw-r--r--Godeps/_workspace/src/github.com/hashicorp/golang-lru/2q.go212
-rw-r--r--Godeps/_workspace/src/github.com/hashicorp/golang-lru/arc.go257
-rw-r--r--Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru.go147
-rw-r--r--Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru_test.go127
-rw-r--r--Godeps/_workspace/src/github.com/hashicorp/golang-lru/simplelru/lru.go160
-rw-r--r--Godeps/_workspace/src/github.com/jackpal/gateway/LICENSE27
-rw-r--r--Godeps/_workspace/src/github.com/jackpal/gateway/README.md7
-rw-r--r--Godeps/_workspace/src/github.com/jackpal/gateway/gateway_darwin.go40
-rw-r--r--Godeps/_workspace/src/github.com/jackpal/gateway/gateway_linux.go75
-rw-r--r--Godeps/_workspace/src/github.com/jackpal/gateway/gateway_unimplemented.go14
-rw-r--r--Godeps/_workspace/src/github.com/jackpal/gateway/gateway_windows.go43
-rw-r--r--Godeps/_workspace/src/github.com/jackpal/go-nat-pmp/natpmp.go12
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-colorable/LICENSE (renamed from Godeps/_workspace/src/github.com/shiena/ansicolor/LICENSE)2
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-colorable/README.md43
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-colorable/colorable_others.go16
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-colorable/colorable_windows.go782
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_appengine.go9
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_bsd.go1
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_linux.go1
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_solaris.go16
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_windows.go1
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth.go70
-rw-r--r--Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth_test.go134
-rw-r--r--Godeps/_workspace/src/github.com/nsf/termbox-go/README.md2
-rw-r--r--Godeps/_workspace/src/github.com/nsf/termbox-go/api.go2
-rw-r--r--Godeps/_workspace/src/github.com/nsf/termbox-go/api_common.go6
-rw-r--r--Godeps/_workspace/src/github.com/nsf/termbox-go/api_windows.go6
-rw-r--r--Godeps/_workspace/src/github.com/nsf/termbox-go/termbox.go127
-rw-r--r--Godeps/_workspace/src/github.com/nsf/termbox-go/termbox_windows.go65
-rw-r--r--Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo.go6
-rw-r--r--Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo_builtin.go8
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/.travis.yml10
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/README.md13
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/hash.go2
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/json.go12
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/json_test.go32
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/node.go20
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/seq_test.go66
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/sql.go36
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/sql_test.go53
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/time.go14
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/util.go2
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/uuid.go39
-rw-r--r--Godeps/_workspace/src/github.com/pborman/uuid/uuid_test.go390
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/README.md17
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/common.go26
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/input.go17
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/input_test.go61
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/input_windows.go8
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/line.go228
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/line_test.go90
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/output.go12
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/output_windows.go18
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/prefix_test.go37
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/race_test.go44
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/width.go34
-rw-r--r--Godeps/_workspace/src/github.com/peterh/liner/width_test.go87
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/.travis.yml14
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/README.md49
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/counter_test.go77
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/debug_test.go48
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma.go2
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma_test.go225
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/exp/exp.go148
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/gauge_float64_test.go38
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/gauge_test.go37
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite.go2
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite_test.go22
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/histogram_test.go95
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/influxdb/influxdb.go114
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/json.go2
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/json_test.go28
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/librato/librato.go7
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/log.go31
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/meter_test.go60
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/metrics_test.go107
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/opentsdb_test.go22
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry.go67
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry_test.go118
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime.go56
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_gccpufraction.go9
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_no_gccpufraction.go9
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_test.go78
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/sample_test.go363
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/timer_test.go81
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/validate.sh10
-rw-r--r--Godeps/_workspace/src/github.com/rcrowley/go-metrics/writer_test.go22
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/README.markdown8
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/array_test.go716
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/bug_test.go617
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_array.go2
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_test.go136
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/clone.go18
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_expression.go8
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_statement.go3
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_test.go54
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/date_test.go481
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/dbg/dbg.go2
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/documentation_test.go95
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go192
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/function_test.go280
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/global_test.go355
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/json_test.go183
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/math_test.go303
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/number_test.go165
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go639
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/otto.go91
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/otto_.go4
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/otto_error_test.go48
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/otto_test.go1379
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/panic_test.go40
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/parser/expression.go2
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/parser/lexer_test.go380
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/parser/marshal_test.go930
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser.go3
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser_test.go1004
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/parser/regexp_test.go149
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/parser_test.go42
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/reflect_test.go483
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/regexp_test.go290
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/repl/repl.go115
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/runtime.go213
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/runtime_test.go778
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/script_test.go78
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/stash.go21
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/string_test.go365
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/testing_test.go135
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/type_function.go11
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/type_go_map.go2
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/underscore/source.go1
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_arrays_test.go344
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_chaining_test.go95
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_collections_test.go698
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_functions_test.go208
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_objects_test.go826
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_test.go165
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_utility_test.go419
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/value.go44
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/value_test.go281
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/.gitignore27
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/README.md100
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor.go20
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor/main.go27
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_ansi.go17
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_test.go25
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_windows.go351
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_windows_test.go236
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/example_test.go24
-rw-r--r--Godeps/_workspace/src/github.com/shiena/ansicolor/export_test.go19
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/LICENSE24
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go26
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch_test.go120
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/bench2_test.go58
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/bench_test.go464
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/cache/bench2_test.go30
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/cache/cache_test.go554
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/corrupt_test.go500
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db.go596
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go281
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_iter.go42
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_snapshot.go8
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_state.go68
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_test.go2665
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_transaction.go289
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_util.go50
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_write.go113
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors.go1
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors/errors.go24
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/external_test.go58
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/filter/bloom_test.go142
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/array_iter_test.go30
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/indexed_iter_test.go83
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/iter_suite_test.go11
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/merged_iter_test.go60
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal.go3
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal_test.go818
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key.go17
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key_test.go133
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/leveldb_suite_test.go11
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/bench_test.go75
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb.go9
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb_suite_test.go11
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb_test.go135
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/opt/options.go91
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/options.go41
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session.go312
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_compaction.go302
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record.go74
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record_test.go64
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_util.go113
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go565
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_plan9.go17
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_solaris.go25
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_test.go142
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_unix.go37
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_windows.go17
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage.go207
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage_test.go66
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/storage.go154
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage_test.go539
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table.go85
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/block_test.go139
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go12
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_suite_test.go11
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_test.go122
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go8
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/kvtest.go206
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/storage.go468
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil_test.go63
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util.go14
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go1
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_test.go369
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/version.go258
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/gosnappy/LICENSE27
-rw-r--r--Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/snappy_test.go364
-rw-r--r--Godeps/_workspace/src/golang.org/x/crypto/LICENSE27
-rw-r--r--Godeps/_workspace/src/golang.org/x/crypto/PATENTS22
-rw-r--r--Godeps/_workspace/src/golang.org/x/crypto/pbkdf2/pbkdf2_test.go157
-rw-r--r--Godeps/_workspace/src/golang.org/x/crypto/ripemd160/ripemd160_test.go64
-rw-r--r--Godeps/_workspace/src/golang.org/x/crypto/scrypt/scrypt_test.go160
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/LICENSE27
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/PATENTS22
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/context.go4
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/context_test.go575
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq.go19
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq_go14.go23
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/ctxhttp.go140
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/context/withtimeout_test.go26
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/atom/atom_test.go109
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/atom/table_test.go351
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/charset.go21
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/charset_test.go236
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/gen.go111
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/table.go235
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-charset.html48
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html48
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html49
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html49
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html47
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/README9
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.htmlbin2670 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.htmlbin2682 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html49
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html48
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html48
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/meta-content-attribute.html48
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/entity_test.go29
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/escape_test.go97
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/example_test.go40
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/node_test.go146
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/parse_test.go388
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/render.go2
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/render_test.go156
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/go1.html2237
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/README28
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/adoption01.dat194
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/adoption02.dat31
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/comments01.dat135
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/doctype01.dat370
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/entities01.dat603
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/entities02.dat249
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/html5test-com.dat246
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/inbody01.dat43
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/isindex.dat40
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.datbin115 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat52
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.datbin4166 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scriptdata01.dat308
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat15
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat28
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tables01.dat212
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests1.dat1952
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests10.dat799
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests11.dat482
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests12.dat62
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests14.dat74
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests15.dat208
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests16.dat2299
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests17.dat153
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests18.dat269
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests19.dat1237
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests2.dat763
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests20.dat455
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests21.dat221
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests22.dat157
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests23.dat155
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests24.dat79
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests25.dat219
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests26.dat313
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests3.dat305
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests4.dat59
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests5.dat191
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests6.dat663
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests7.dat390
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests8.dat148
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests9.dat457
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat741
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tricky01.dat261
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/webkit01.dat610
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/webkit02.dat159
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/html/token_test.go748
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/exampledial_test.go31
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/examplehandler_test.go26
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go50
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/hybi_test.go590
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/server.go5
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go3
-rw-r--r--Godeps/_workspace/src/golang.org/x/net/websocket/websocket_test.go414
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/LICENSE27
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/PATENTS22
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/.gitignore1
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm.s10
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_386.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_amd64.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_arm.s30
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_arm64.s30
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_386.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_amd64.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_386.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_amd64.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_arm.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_386.s35
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_amd64.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_arm.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_arm64.s24
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_ppc64x.s28
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_386.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_amd64.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_arm.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_openbsd_386.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_openbsd_amd64.s29
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/asm_solaris_amd64.s17
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/constants.go13
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/env_unix.go27
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/env_unset.go14
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/flock.go24
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/flock_linux_32bit.go13
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/gccgo.go46
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/gccgo_c.c41
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/gccgo_linux_amd64.go20
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh274
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh476
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl323
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl294
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl264
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl39
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl50
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl63
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl58
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl58
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl50
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/race.go30
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/race0.go25
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_linux.go36
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go103
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/str.go26
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go74
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_bsd.go628
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go509
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go79
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go81
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go73
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go79
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go411
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_386.go63
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go63
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go682
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go63
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go63
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go63
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go1086
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go388
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go146
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go233
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go150
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go96
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd.go492
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go44
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go44
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go44
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_no_getwd.go11
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go303
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go44
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go44
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris.go713
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go37
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/syscall_unix.go297
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/types_darwin.go250
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/types_dragonfly.go242
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/types_freebsd.go353
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go406
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/types_netbsd.go232
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/types_openbsd.go244
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/types_solaris.go260
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_386.go1576
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_amd64.go1576
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_arm.go1293
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_arm64.go1576
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_386.go1530
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go1530
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_386.go1743
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_amd64.go1748
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_arm.go1729
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go1817
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go1818
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go1742
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go1896
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go1969
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go1968
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_386.go1712
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_amd64.go1702
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_arm.go1688
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_openbsd_386.go1584
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_openbsd_amd64.go1583
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_solaris_amd64.go1436
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go1426
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go1442
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go1426
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go1426
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_386.go1412
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go1412
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go1664
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go1664
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go1664
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go1628
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go1822
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go1756
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go1750
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go1792
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go1792
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go1326
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go1326
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go1326
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go1386
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go1386
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_solaris_amd64.go1559
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysctl_openbsd.go270
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_386.go398
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_amd64.go398
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_arm.go358
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_arm64.go398
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_386.go304
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go304
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_386.go351
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go351
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_arm.go351
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_386.go355
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_amd64.go321
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_arm.go356
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_arm64.go272
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_ppc64.go360
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go353
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_386.go273
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go273
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_arm.go273
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_openbsd_386.go207
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go207
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_solaris_amd64.go13
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_386.go447
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_amd64.go462
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_arm.go449
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_arm64.go457
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_386.go437
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go443
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_386.go502
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_amd64.go505
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_arm.go497
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go590
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go608
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go579
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go595
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go605
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go605
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_386.go396
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_amd64.go403
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_arm.go401
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_openbsd_386.go441
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_openbsd_amd64.go448
-rw-r--r--Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_solaris_amd64.go422
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/LICENSE27
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/PATENTS22
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/charmap/charmap.go30
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go151
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go1110
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go220
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/encoding_test.go1033
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/example_test.go40
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/gen.go167
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/htmlindex.go49
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/map.go105
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/tables.go352
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/ianaindex/example_test.go26
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/internal/identifier/identifier.go3
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/internal/internal.go31
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/japanese/eucjp.go3
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/japanese/iso2022jp.go31
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go3
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/korean/euckr.go17
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go3
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go102
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-gb18030.txt510
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-utf-16le.txtbin51932 -> 0 bytes
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-utf-8.txt510
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-windows-1252.txt510
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt178
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt178
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt178
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt178
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt107
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt107
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt107
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt107
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt106
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt106
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt175
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt175
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/traditionalchinese/big5.go16
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go132
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/internal/tag/tag.go100
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/internal/utf8internal/utf8internal.go87
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/Makefile16
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/common.go16
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/coverage.go197
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/dict.go92
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/display.go343
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/lookup.go238
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/maketables.go596
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/display/tables.go44965
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/gen_common.go20
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/gen_index.go162
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/go1_1.go38
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/go1_2.go11
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/index.go757
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/language.go975
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/lookup.go396
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/maketables.go1635
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/match.go840
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/parse.go859
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/tables.go2742
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/language/tags.go143
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/runes/cond.go126
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/runes/runes.go278
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/transform/examples_test.go37
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/transform/transform.go20
-rw-r--r--Godeps/_workspace/src/golang.org/x/text/transform/transform_test.go1082
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/benchmark.go30
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/benchmark_test.go91
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/bootstrap_test.go82
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/check.go132
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/check_test.go207
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/checkers_test.go272
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/export_test.go9
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/fixture_test.go484
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/foundation_test.go335
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/helpers.go8
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/helpers_test.go519
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/printer_test.go104
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/reporter.go88
-rw-r--r--Godeps/_workspace/src/gopkg.in/check.v1/run_test.go419
-rw-r--r--Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_nots_test.go282
-rw-r--r--Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_test.go188
-rw-r--r--Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_ts_test.go321
-rw-r--r--Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/LICENSE25
-rw-r--r--Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/example_test.go44
-rw-r--r--Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/prque_test.go130
-rw-r--r--Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/sstack_test.go100
659 files changed, 164083 insertions, 66792 deletions
diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json
index b5703f7f2..dcf0a60cb 100644
--- a/Godeps/Godeps.json
+++ b/Godeps/Godeps.json
@@ -6,13 +6,17 @@
],
"Deps": [
{
+ "ImportPath": "github.com/Gustav-Simonsson/go-opencl/cl",
+ "Rev": "593e01cfc4f3353585015321e01951d4a907d3ef"
+ },
+ {
"ImportPath": "github.com/codegangsta/cli",
- "Comment": "1.2.0-161-gf445c89",
- "Rev": "f445c894402839580d30de47551cedc152dad814"
+ "Comment": "1.2.0-215-g0ab42fd",
+ "Rev": "0ab42fd482c27cf2c95e7794ad3bb2082c2ab2d7"
},
{
"ImportPath": "github.com/davecgh/go-spew/spew",
- "Rev": "3e6e67c4dcea3ac2f25fd4731abc0e1deaf36216"
+ "Rev": "5215b55f46b2b919f50a1df0eaa5886afe4e3b3d"
},
{
"ImportPath": "github.com/ethereum/ethash",
@@ -21,101 +25,126 @@
},
{
"ImportPath": "github.com/fatih/color",
- "Comment": "v0.1-5-gf773d4c",
- "Rev": "f773d4c806cc8e4a5749d6a35e2a4bbcd71443d6"
+ "Comment": "v0.1-12-g9aae6aa",
+ "Rev": "9aae6aaa22315390f03959adca2c4d395b02fcef"
},
{
"ImportPath": "github.com/gizak/termui",
- "Rev": "bab8dce01c193d82bc04888a0a9a7814d505f532"
+ "Rev": "08a5d3f67b7d9ec87830ea39c48e570a1f18531f"
+ },
+ {
+ "ImportPath": "github.com/golang/snappy",
+ "Rev": "799c780093d646c1b79d30894e22512c319fa137"
},
{
"ImportPath": "github.com/hashicorp/golang-lru",
- "Rev": "7f9ef20a0256f494e24126014135cf893ab71e9e"
+ "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4"
},
{
"ImportPath": "github.com/huin/goupnp",
- "Rev": "90f71cb5dd6d4606388666d2cda4ce2f563d2185"
+ "Rev": "46bde78b11f3f021f2a511df138be9e2fc7506e8"
+ },
+ {
+ "ImportPath": "github.com/jackpal/gateway",
+ "Rev": "192609c58b8985e645cbe82ddcb28a4362ca0fdc"
},
{
"ImportPath": "github.com/jackpal/go-nat-pmp",
- "Rev": "a45aa3d54aef73b504e15eb71bea0e5565b5e6e1"
+ "Rev": "46523a463303c6ede3ddfe45bde1c7ed52ebaacd"
+ },
+ {
+ "ImportPath": "github.com/mattn/go-colorable",
+ "Rev": "9fdad7c47650b7d2e1da50644c1f4ba7f172f252"
},
{
"ImportPath": "github.com/mattn/go-isatty",
- "Rev": "7fcbc72f853b92b5720db4a6b8482be612daef24"
+ "Rev": "56b76bdf51f7708750eac80fa38b952bb9f32639"
},
{
"ImportPath": "github.com/mattn/go-runewidth",
- "Comment": "travisish-33-g5890272",
- "Rev": "5890272cd41c5103531cd7b79e428d99c9e97f76"
+ "Comment": "travisish-44-ge882a96",
+ "Rev": "e882a96ec18dd43fa283187b66af74497c9101c0"
},
{
"ImportPath": "github.com/nsf/termbox-go",
- "Rev": "ca2931516914070bb7f934c83e408689cea8dfb7"
+ "Rev": "362329b0aa6447eadd52edd8d660ec1dff470295"
},
{
"ImportPath": "github.com/pborman/uuid",
- "Rev": "cccd189d45f7ac3368a0d127efb7f4d08ae0b655"
+ "Comment": "v1.0-6-g0f1a469",
+ "Rev": "0f1a46960a86dcdf5dd30d3e6568a497a997909f"
},
{
"ImportPath": "github.com/peterh/liner",
- "Rev": "29f6a646557d83e2b6e9ba05c45fbea9c006dbe8"
+ "Rev": "ad1edfd30321d8f006ccf05f1e0524adeb943060"
},
{
"ImportPath": "github.com/rcrowley/go-metrics",
- "Rev": "a5cfc242a56ba7fa70b785f678d6214837bf93b9"
+ "Rev": "51425a2415d21afadfd55cd93432c0bc69e9598d"
},
{
"ImportPath": "github.com/robertkrimen/otto",
- "Rev": "dea31a3d392779af358ec41f77a07fcc7e9d04ba"
- },
- {
- "ImportPath": "github.com/shiena/ansicolor",
- "Rev": "a5e2b567a4dd6cc74545b8a4f27c9d63b9e7735b"
+ "Rev": "c21072f61b64b51ea58138ccacf0a85d54b9f07c"
},
{
"ImportPath": "github.com/syndtr/goleveldb/leveldb",
- "Rev": "4875955338b0a434238a31165cb87255ab6e9e4a"
- },
- {
- "ImportPath": "github.com/syndtr/gosnappy/snappy",
- "Rev": "156a073208e131d7d2e212cb749feae7c339e846"
+ "Rev": "e7e6f5b5ef25adb580feac515f9ccec514d0bda8"
},
{
"ImportPath": "golang.org/x/crypto/pbkdf2",
- "Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
+ "Rev": "1f22c0103821b9390939b6776727195525381532"
},
{
"ImportPath": "golang.org/x/crypto/ripemd160",
- "Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
+ "Rev": "1f22c0103821b9390939b6776727195525381532"
},
{
"ImportPath": "golang.org/x/crypto/scrypt",
- "Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
+ "Rev": "1f22c0103821b9390939b6776727195525381532"
},
{
"ImportPath": "golang.org/x/net/context",
- "Rev": "e0403b4e005737430c05a57aac078479844f919c"
+ "Rev": "8968c61983e8f51a91b8c0ef25bf739278c89634"
},
{
"ImportPath": "golang.org/x/net/html",
- "Rev": "e0403b4e005737430c05a57aac078479844f919c"
+ "Rev": "8968c61983e8f51a91b8c0ef25bf739278c89634"
},
{
"ImportPath": "golang.org/x/net/websocket",
- "Rev": "e0403b4e005737430c05a57aac078479844f919c"
+ "Rev": "8968c61983e8f51a91b8c0ef25bf739278c89634"
+ },
+ {
+ "ImportPath": "golang.org/x/sys/unix",
+ "Rev": "50c6bc5e4292a1d4e65c6e9be5f53be28bcbe28e"
},
{
"ImportPath": "golang.org/x/text/encoding",
- "Rev": "c93e7c9fff19fb9139b5ab04ce041833add0134e"
+ "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ },
+ {
+ "ImportPath": "golang.org/x/text/internal/tag",
+ "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ },
+ {
+ "ImportPath": "golang.org/x/text/internal/utf8internal",
+ "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ },
+ {
+ "ImportPath": "golang.org/x/text/language",
+ "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
+ },
+ {
+ "ImportPath": "golang.org/x/text/runes",
+ "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
},
{
"ImportPath": "golang.org/x/text/transform",
- "Rev": "c93e7c9fff19fb9139b5ab04ce041833add0134e"
+ "Rev": "09761194ac5034a97b2bfad4f5b896b0ac350b3e"
},
{
"ImportPath": "gopkg.in/check.v1",
- "Rev": "64131543e7896d5bcc6bd5a76287eb75ea96c673"
+ "Rev": "4f90aeace3a26ad7021961c297b22c42160c7b25"
},
{
"ImportPath": "gopkg.in/fatih/set.v0",
diff --git a/Godeps/_workspace/src/github.com/Gustav-Simonsson/go-opencl/cl/cl_test.go b/Godeps/_workspace/src/github.com/Gustav-Simonsson/go-opencl/cl/cl_test.go
deleted file mode 100644
index 7659ce14f..000000000
--- a/Godeps/_workspace/src/github.com/Gustav-Simonsson/go-opencl/cl/cl_test.go
+++ /dev/null
@@ -1,254 +0,0 @@
-package cl
-
-import (
- "math/rand"
- "reflect"
- "strings"
- "testing"
-)
-
-var kernelSource = `
-__kernel void square(
- __global float* input,
- __global float* output,
- const unsigned int count)
-{
- int i = get_global_id(0);
- if(i < count)
- output[i] = input[i] * input[i];
-}
-`
-
-func getObjectStrings(object interface{}) map[string]string {
- v := reflect.ValueOf(object)
- t := reflect.TypeOf(object)
-
- strs := make(map[string]string)
-
- numMethods := t.NumMethod()
- for i := 0; i < numMethods; i++ {
- method := t.Method(i)
- if method.Type.NumIn() == 1 && method.Type.NumOut() == 1 && method.Type.Out(0).Kind() == reflect.String {
- // this is a string-returning method with (presumably) only a pointer receiver parameter
- // call it
- outs := v.Method(i).Call([]reflect.Value{})
- // put the result in our map
- strs[method.Name] = (outs[0].Interface()).(string)
- }
- }
-
- return strs
-}
-
-func TestPlatformStringsContainNoNULs(t *testing.T) {
- platforms, err := GetPlatforms()
- if err != nil {
- t.Fatalf("Failed to get platforms: %+v", err)
- }
-
- for _, p := range platforms {
- for key, value := range getObjectStrings(p) {
- if strings.Contains(value, "\x00") {
- t.Fatalf("platform string %q = %+q contains NUL", key, value)
- }
- }
- }
-}
-
-func TestDeviceStringsContainNoNULs(t *testing.T) {
- platforms, err := GetPlatforms()
- if err != nil {
- t.Fatalf("Failed to get platforms: %+v", err)
- }
-
- for _, p := range platforms {
- devs, err := p.GetDevices(DeviceTypeAll)
- if err != nil {
- t.Fatalf("Failed to get devices for platform %q: %+v", p.Name(), err)
- }
-
- for _, d := range devs {
- for key, value := range getObjectStrings(d) {
- if strings.Contains(value, "\x00") {
- t.Fatalf("device string %q = %+q contains NUL", key, value)
- }
- }
- }
- }
-}
-
-func TestHello(t *testing.T) {
- var data [1024]float32
- for i := 0; i < len(data); i++ {
- data[i] = rand.Float32()
- }
-
- platforms, err := GetPlatforms()
- if err != nil {
- t.Fatalf("Failed to get platforms: %+v", err)
- }
- for i, p := range platforms {
- t.Logf("Platform %d:", i)
- t.Logf(" Name: %s", p.Name())
- t.Logf(" Vendor: %s", p.Vendor())
- t.Logf(" Profile: %s", p.Profile())
- t.Logf(" Version: %s", p.Version())
- t.Logf(" Extensions: %s", p.Extensions())
- }
- platform := platforms[0]
-
- devices, err := platform.GetDevices(DeviceTypeAll)
- if err != nil {
- t.Fatalf("Failed to get devices: %+v", err)
- }
- if len(devices) == 0 {
- t.Fatalf("GetDevices returned no devices")
- }
- deviceIndex := -1
- for i, d := range devices {
- if deviceIndex < 0 && d.Type() == DeviceTypeGPU {
- deviceIndex = i
- }
- t.Logf("Device %d (%s): %s", i, d.Type(), d.Name())
- t.Logf(" Address Bits: %d", d.AddressBits())
- t.Logf(" Available: %+v", d.Available())
- // t.Logf(" Built-In Kernels: %s", d.BuiltInKernels())
- t.Logf(" Compiler Available: %+v", d.CompilerAvailable())
- t.Logf(" Double FP Config: %s", d.DoubleFPConfig())
- t.Logf(" Driver Version: %s", d.DriverVersion())
- t.Logf(" Error Correction Supported: %+v", d.ErrorCorrectionSupport())
- t.Logf(" Execution Capabilities: %s", d.ExecutionCapabilities())
- t.Logf(" Extensions: %s", d.Extensions())
- t.Logf(" Global Memory Cache Type: %s", d.GlobalMemCacheType())
- t.Logf(" Global Memory Cacheline Size: %d KB", d.GlobalMemCachelineSize()/1024)
- t.Logf(" Global Memory Size: %d MB", d.GlobalMemSize()/(1024*1024))
- t.Logf(" Half FP Config: %s", d.HalfFPConfig())
- t.Logf(" Host Unified Memory: %+v", d.HostUnifiedMemory())
- t.Logf(" Image Support: %+v", d.ImageSupport())
- t.Logf(" Image2D Max Dimensions: %d x %d", d.Image2DMaxWidth(), d.Image2DMaxHeight())
- t.Logf(" Image3D Max Dimenionns: %d x %d x %d", d.Image3DMaxWidth(), d.Image3DMaxHeight(), d.Image3DMaxDepth())
- // t.Logf(" Image Max Buffer Size: %d", d.ImageMaxBufferSize())
- // t.Logf(" Image Max Array Size: %d", d.ImageMaxArraySize())
- // t.Logf(" Linker Available: %+v", d.LinkerAvailable())
- t.Logf(" Little Endian: %+v", d.EndianLittle())
- t.Logf(" Local Mem Size Size: %d KB", d.LocalMemSize()/1024)
- t.Logf(" Local Mem Type: %s", d.LocalMemType())
- t.Logf(" Max Clock Frequency: %d", d.MaxClockFrequency())
- t.Logf(" Max Compute Units: %d", d.MaxComputeUnits())
- t.Logf(" Max Constant Args: %d", d.MaxConstantArgs())
- t.Logf(" Max Constant Buffer Size: %d KB", d.MaxConstantBufferSize()/1024)
- t.Logf(" Max Mem Alloc Size: %d KB", d.MaxMemAllocSize()/1024)
- t.Logf(" Max Parameter Size: %d", d.MaxParameterSize())
- t.Logf(" Max Read-Image Args: %d", d.MaxReadImageArgs())
- t.Logf(" Max Samplers: %d", d.MaxSamplers())
- t.Logf(" Max Work Group Size: %d", d.MaxWorkGroupSize())
- t.Logf(" Max Work Item Dimensions: %d", d.MaxWorkItemDimensions())
- t.Logf(" Max Work Item Sizes: %d", d.MaxWorkItemSizes())
- t.Logf(" Max Write-Image Args: %d", d.MaxWriteImageArgs())
- t.Logf(" Memory Base Address Alignment: %d", d.MemBaseAddrAlign())
- t.Logf(" Native Vector Width Char: %d", d.NativeVectorWidthChar())
- t.Logf(" Native Vector Width Short: %d", d.NativeVectorWidthShort())
- t.Logf(" Native Vector Width Int: %d", d.NativeVectorWidthInt())
- t.Logf(" Native Vector Width Long: %d", d.NativeVectorWidthLong())
- t.Logf(" Native Vector Width Float: %d", d.NativeVectorWidthFloat())
- t.Logf(" Native Vector Width Double: %d", d.NativeVectorWidthDouble())
- t.Logf(" Native Vector Width Half: %d", d.NativeVectorWidthHalf())
- t.Logf(" OpenCL C Version: %s", d.OpenCLCVersion())
- // t.Logf(" Parent Device: %+v", d.ParentDevice())
- t.Logf(" Profile: %s", d.Profile())
- t.Logf(" Profiling Timer Resolution: %d", d.ProfilingTimerResolution())
- t.Logf(" Vendor: %s", d.Vendor())
- t.Logf(" Version: %s", d.Version())
- }
- if deviceIndex < 0 {
- deviceIndex = 0
- }
- device := devices[deviceIndex]
- t.Logf("Using device %d", deviceIndex)
- context, err := CreateContext([]*Device{device})
- if err != nil {
- t.Fatalf("CreateContext failed: %+v", err)
- }
- // imageFormats, err := context.GetSupportedImageFormats(0, MemObjectTypeImage2D)
- // if err != nil {
- // t.Fatalf("GetSupportedImageFormats failed: %+v", err)
- // }
- // t.Logf("Supported image formats: %+v", imageFormats)
- queue, err := context.CreateCommandQueue(device, 0)
- if err != nil {
- t.Fatalf("CreateCommandQueue failed: %+v", err)
- }
- program, err := context.CreateProgramWithSource([]string{kernelSource})
- if err != nil {
- t.Fatalf("CreateProgramWithSource failed: %+v", err)
- }
- if err := program.BuildProgram(nil, ""); err != nil {
- t.Fatalf("BuildProgram failed: %+v", err)
- }
- kernel, err := program.CreateKernel("square")
- if err != nil {
- t.Fatalf("CreateKernel failed: %+v", err)
- }
- for i := 0; i < 3; i++ {
- name, err := kernel.ArgName(i)
- if err == ErrUnsupported {
- break
- } else if err != nil {
- t.Errorf("GetKernelArgInfo for name failed: %+v", err)
- break
- } else {
- t.Logf("Kernel arg %d: %s", i, name)
- }
- }
- input, err := context.CreateEmptyBuffer(MemReadOnly, 4*len(data))
- if err != nil {
- t.Fatalf("CreateBuffer failed for input: %+v", err)
- }
- output, err := context.CreateEmptyBuffer(MemReadOnly, 4*len(data))
- if err != nil {
- t.Fatalf("CreateBuffer failed for output: %+v", err)
- }
- if _, err := queue.EnqueueWriteBufferFloat32(input, true, 0, data[:], nil); err != nil {
- t.Fatalf("EnqueueWriteBufferFloat32 failed: %+v", err)
- }
- if err := kernel.SetArgs(input, output, uint32(len(data))); err != nil {
- t.Fatalf("SetKernelArgs failed: %+v", err)
- }
-
- local, err := kernel.WorkGroupSize(device)
- if err != nil {
- t.Fatalf("WorkGroupSize failed: %+v", err)
- }
- t.Logf("Work group size: %d", local)
- size, _ := kernel.PreferredWorkGroupSizeMultiple(nil)
- t.Logf("Preferred Work Group Size Multiple: %d", size)
-
- global := len(data)
- d := len(data) % local
- if d != 0 {
- global += local - d
- }
- if _, err := queue.EnqueueNDRangeKernel(kernel, nil, []int{global}, []int{local}, nil); err != nil {
- t.Fatalf("EnqueueNDRangeKernel failed: %+v", err)
- }
-
- if err := queue.Finish(); err != nil {
- t.Fatalf("Finish failed: %+v", err)
- }
-
- results := make([]float32, len(data))
- if _, err := queue.EnqueueReadBufferFloat32(output, true, 0, results, nil); err != nil {
- t.Fatalf("EnqueueReadBufferFloat32 failed: %+v", err)
- }
-
- correct := 0
- for i, v := range data {
- if results[i] == v*v {
- correct++
- }
- }
-
- if correct != len(data) {
- t.Fatalf("%d/%d correct values", correct, len(data))
- }
-}
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/.travis.yml b/Godeps/_workspace/src/github.com/codegangsta/cli/.travis.yml
index 34d39c871..87ba52f98 100644
--- a/Godeps/_workspace/src/github.com/codegangsta/cli/.travis.yml
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/.travis.yml
@@ -7,6 +7,12 @@ go:
- 1.2.2
- 1.3.3
- 1.4.2
+- 1.5.1
+- tip
+
+matrix:
+ allow_failures:
+ - go: tip
script:
- go vet ./...
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/README.md b/Godeps/_workspace/src/github.com/codegangsta/cli/README.md
index 234655710..ae0a4ca3a 100644
--- a/Godeps/_workspace/src/github.com/codegangsta/cli/README.md
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/README.md
@@ -1,16 +1,19 @@
[![Coverage](http://gocover.io/_badge/github.com/codegangsta/cli?0)](http://gocover.io/github.com/codegangsta/cli)
-[![Build Status](https://travis-ci.org/codegangsta/cli.png?branch=master)](https://travis-ci.org/codegangsta/cli)
+[![Build Status](https://travis-ci.org/codegangsta/cli.svg?branch=master)](https://travis-ci.org/codegangsta/cli)
[![GoDoc](https://godoc.org/github.com/codegangsta/cli?status.svg)](https://godoc.org/github.com/codegangsta/cli)
# cli.go
+
`cli.go` is simple, fast, and fun package for building command line apps in Go. The goal is to enable developers to write fast and distributable command line applications in an expressive way.
## Overview
+
Command line apps are usually so tiny that there is absolutely no reason why your code should *not* be self-documenting. Things like generating help text and parsing command flags/options should not hinder productivity when writing a command line app.
**This is where `cli.go` comes into play.** `cli.go` makes command line programming fun, organized, and expressive!
## Installation
+
Make sure you have a working Go environment (go 1.1+ is *required*). [See the install instructions](http://golang.org/doc/install.html).
To install `cli.go`, simply run:
@@ -24,6 +27,7 @@ export PATH=$PATH:$GOPATH/bin
```
## Getting Started
+
One of the philosophies behind `cli.go` is that an API should be playful and full of discovery. So a `cli.go` app can be as little as one line of code in `main()`.
``` go
@@ -123,6 +127,7 @@ GLOBAL OPTIONS
```
### Arguments
+
You can lookup arguments by calling the `Args` function on `cli.Context`.
``` go
@@ -134,7 +139,9 @@ app.Action = func(c *cli.Context) {
```
### Flags
+
Setting and querying flags is simple.
+
``` go
...
app.Flags = []cli.Flag {
@@ -158,6 +165,33 @@ app.Action = func(c *cli.Context) {
...
```
+You can also set a destination variable for a flag, to which the content will be scanned.
+
+``` go
+...
+var language string
+app.Flags = []cli.Flag {
+ cli.StringFlag{
+ Name: "lang",
+ Value: "english",
+ Usage: "language for the greeting",
+ Destination: &language,
+ },
+}
+app.Action = func(c *cli.Context) {
+ name := "someone"
+ if len(c.Args()) > 0 {
+ name = c.Args()[0]
+ }
+ if language == "spanish" {
+ println("Hola", name)
+ } else {
+ println("Hello", name)
+ }
+}
+...
+```
+
See full list of flags at http://godoc.org/github.com/codegangsta/cli
#### Alternate Names
@@ -207,6 +241,7 @@ app.Flags = []cli.Flag {
### Subcommands
Subcommands can be defined for a more git-like command line app.
+
```go
...
app.Commands = []cli.Command{
@@ -257,6 +292,7 @@ You can enable completion commands by setting the `EnableBashCompletion`
flag on the `App` object. By default, this setting will only auto-complete to
show an app's subcommands, but you can write your own completion methods for
the App or its subcommands.
+
```go
...
var tasks = []string{"cook", "clean", "laundry", "eat", "sleep", "code"}
@@ -299,8 +335,8 @@ automatically install it there if you are distributing a package). Don't forget
to source the file to make it active in the current shell.
```
- sudo cp src/bash_autocomplete /etc/bash_completion.d/<myprogram>
- source /etc/bash_completion.d/<myprogram>
+sudo cp src/bash_autocomplete /etc/bash_completion.d/<myprogram>
+source /etc/bash_completion.d/<myprogram>
```
Alternatively, you can just document that users should source the generic
@@ -308,6 +344,7 @@ Alternatively, you can just document that users should source the generic
to the name of their program (as above).
## Contribution Guidelines
+
Feel free to put up a pull request to fix a bug or maybe add a feature. I will give it a code review and make sure that it does not break backwards compatibility. If I or any other collaborators agree that it is in line with the vision of the project, we will work with you to get the code into a mergeable state and merge it into the master branch.
If you have contributed something significant to the project, I will most likely add you as a collaborator. As a collaborator you are given the ability to merge others pull requests. It is very important that new code does not break existing code, so be careful about what code you do choose to merge. If you have any questions feel free to link @codegangsta to the issue in question and we can review it together.
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/app.go b/Godeps/_workspace/src/github.com/codegangsta/cli/app.go
index 9a15c0c03..1ea3fd0b1 100644
--- a/Godeps/_workspace/src/github.com/codegangsta/cli/app.go
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/app.go
@@ -5,18 +5,21 @@ import (
"io"
"io/ioutil"
"os"
+ "path"
"time"
)
-// App is the main structure of a cli application. It is recomended that
+// App is the main structure of a cli application. It is recommended that
// an app be created with the cli.NewApp() function
type App struct {
- // The name of the program. Defaults to os.Args[0]
+ // The name of the program. Defaults to path.Base(os.Args[0])
Name string
// Full name of command for help, defaults to Name
HelpName string
// Description of the program.
Usage string
+ // Text to override the USAGE section of help
+ UsageText string
// Description of the program argument format.
ArgsUsage string
// Version of the program
@@ -43,6 +46,10 @@ type App struct {
Action func(context *Context)
// Execute this function if the proper command cannot be found
CommandNotFound func(context *Context, command string)
+ // Execute this function, if an usage error occurs. This is useful for displaying customized usage error messages.
+ // This function is able to replace the original error messages.
+ // If this function is not set, the "Incorrect usage" is displayed and the execution is interrupted.
+ OnUsageError func(context *Context, err error, isSubcommand bool) error
// Compilation date
Compiled time.Time
// List of all authors who contributed
@@ -70,9 +77,10 @@ func compileTime() time.Time {
// Creates a new cli Application with some reasonable defaults for Name, Usage, Version and Action.
func NewApp() *App {
return &App{
- Name: os.Args[0],
- HelpName: os.Args[0],
+ Name: path.Base(os.Args[0]),
+ HelpName: path.Base(os.Args[0]),
Usage: "A new cli application",
+ UsageText: "",
Version: "0.0.0",
BashComplete: DefaultAppComplete,
Action: helpCommand.Action,
@@ -118,25 +126,28 @@ func (a *App) Run(arguments []string) (err error) {
set.SetOutput(ioutil.Discard)
err = set.Parse(arguments[1:])
nerr := normalizeFlags(a.Flags, set)
+ context := NewContext(a, set, nil)
if nerr != nil {
fmt.Fprintln(a.Writer, nerr)
- context := NewContext(a, set, nil)
ShowAppHelp(context)
return nerr
}
- context := NewContext(a, set, nil)
-
- if err != nil {
- fmt.Fprintln(a.Writer, "Incorrect Usage.")
- fmt.Fprintln(a.Writer)
- ShowAppHelp(context)
- return err
- }
if checkCompletions(context) {
return nil
}
+ if err != nil {
+ if a.OnUsageError != nil {
+ err := a.OnUsageError(context, err, false)
+ return err
+ } else {
+ fmt.Fprintf(a.Writer, "%s\n\n", "Incorrect Usage.")
+ ShowAppHelp(context)
+ return err
+ }
+ }
+
if !a.HideHelp && checkHelp(context) {
ShowAppHelp(context)
return nil
@@ -149,8 +160,7 @@ func (a *App) Run(arguments []string) (err error) {
if a.After != nil {
defer func() {
- afterErr := a.After(context)
- if afterErr != nil {
+ if afterErr := a.After(context); afterErr != nil {
if err != nil {
err = NewMultiError(err, afterErr)
} else {
@@ -161,8 +171,10 @@ func (a *App) Run(arguments []string) (err error) {
}
if a.Before != nil {
- err := a.Before(context)
+ err = a.Before(context)
if err != nil {
+ fmt.Fprintf(a.Writer, "%v\n\n", err)
+ ShowAppHelp(context)
return err
}
}
@@ -233,17 +245,21 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) {
return nerr
}
- if err != nil {
- fmt.Fprintln(a.Writer, "Incorrect Usage.")
- fmt.Fprintln(a.Writer)
- ShowSubcommandHelp(context)
- return err
- }
-
if checkCompletions(context) {
return nil
}
+ if err != nil {
+ if a.OnUsageError != nil {
+ err = a.OnUsageError(context, err, true)
+ return err
+ } else {
+ fmt.Fprintf(a.Writer, "%s\n\n", "Incorrect Usage.")
+ ShowSubcommandHelp(context)
+ return err
+ }
+ }
+
if len(a.Commands) > 0 {
if checkSubcommandHelp(context) {
return nil
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/appveyor.yml b/Godeps/_workspace/src/github.com/codegangsta/cli/appveyor.yml
new file mode 100644
index 000000000..3ca7afabd
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/appveyor.yml
@@ -0,0 +1,16 @@
+version: "{build}"
+
+os: Windows Server 2012 R2
+
+install:
+ - go version
+ - go env
+
+build_script:
+ - cd %APPVEYOR_BUILD_FOLDER%
+ - go vet ./...
+ - go test -v ./...
+
+test: off
+
+deploy: off
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/autocomplete/bash_autocomplete b/Godeps/_workspace/src/github.com/codegangsta/cli/autocomplete/bash_autocomplete
index d9231f4cf..21a232f1f 100644
--- a/Godeps/_workspace/src/github.com/codegangsta/cli/autocomplete/bash_autocomplete
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/autocomplete/bash_autocomplete
@@ -3,13 +3,12 @@
: ${PROG:=$(basename ${BASH_SOURCE})}
_cli_bash_autocomplete() {
- local cur prev opts base
+ local cur opts base
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion )
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
}
- complete -F _cli_bash_autocomplete $PROG \ No newline at end of file
+ complete -F _cli_bash_autocomplete $PROG
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/command.go b/Godeps/_workspace/src/github.com/codegangsta/cli/command.go
index fac754deb..bbf42ae40 100644
--- a/Godeps/_workspace/src/github.com/codegangsta/cli/command.go
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/command.go
@@ -16,6 +16,8 @@ type Command struct {
Aliases []string
// A short description of the usage of this command
Usage string
+ // Custom text to show on USAGE section of help
+ UsageText string
// A longer explanation of how the command works
Description string
// A short description of the arguments of this command
@@ -30,6 +32,10 @@ type Command struct {
After func(context *Context) error
// The function to call when this command is invoked
Action func(context *Context)
+ // Execute this function, if an usage error occurs. This is useful for displaying customized usage error messages.
+ // This function is able to replace the original error messages.
+ // If this function is not set, the "Incorrect usage" is displayed and the execution is interrupted.
+ OnUsageError func(context *Context, err error) error
// List of child commands
Subcommands []Command
// List of flags to parse
@@ -54,8 +60,8 @@ func (c Command) FullName() string {
}
// Invokes the command given the context, parses ctx.Args() to generate command-specific flags
-func (c Command) Run(ctx *Context) error {
- if len(c.Subcommands) > 0 || c.Before != nil || c.After != nil {
+func (c Command) Run(ctx *Context) (err error) {
+ if len(c.Subcommands) > 0 {
return c.startApp(ctx)
}
@@ -74,41 +80,54 @@ func (c Command) Run(ctx *Context) error {
set := flagSet(c.Name, c.Flags)
set.SetOutput(ioutil.Discard)
- firstFlagIndex := -1
- terminatorIndex := -1
- for index, arg := range ctx.Args() {
- if arg == "--" {
- terminatorIndex = index
- break
- } else if strings.HasPrefix(arg, "-") && firstFlagIndex == -1 {
- firstFlagIndex = index
+ if !c.SkipFlagParsing {
+ firstFlagIndex := -1
+ terminatorIndex := -1
+ for index, arg := range ctx.Args() {
+ if arg == "--" {
+ terminatorIndex = index
+ break
+ } else if arg == "-" {
+ // Do nothing. A dash alone is not really a flag.
+ continue
+ } else if strings.HasPrefix(arg, "-") && firstFlagIndex == -1 {
+ firstFlagIndex = index
+ }
}
- }
- var err error
- if firstFlagIndex > -1 && !c.SkipFlagParsing {
- args := ctx.Args()
- regularArgs := make([]string, len(args[1:firstFlagIndex]))
- copy(regularArgs, args[1:firstFlagIndex])
+ if firstFlagIndex > -1 {
+ args := ctx.Args()
+ regularArgs := make([]string, len(args[1:firstFlagIndex]))
+ copy(regularArgs, args[1:firstFlagIndex])
+
+ var flagArgs []string
+ if terminatorIndex > -1 {
+ flagArgs = args[firstFlagIndex:terminatorIndex]
+ regularArgs = append(regularArgs, args[terminatorIndex:]...)
+ } else {
+ flagArgs = args[firstFlagIndex:]
+ }
- var flagArgs []string
- if terminatorIndex > -1 {
- flagArgs = args[firstFlagIndex:terminatorIndex]
- regularArgs = append(regularArgs, args[terminatorIndex:]...)
+ err = set.Parse(append(flagArgs, regularArgs...))
} else {
- flagArgs = args[firstFlagIndex:]
+ err = set.Parse(ctx.Args().Tail())
}
-
- err = set.Parse(append(flagArgs, regularArgs...))
} else {
- err = set.Parse(ctx.Args().Tail())
+ if c.SkipFlagParsing {
+ err = set.Parse(append([]string{"--"}, ctx.Args().Tail()...))
+ }
}
if err != nil {
- fmt.Fprintln(ctx.App.Writer, "Incorrect Usage.")
- fmt.Fprintln(ctx.App.Writer)
- ShowCommandHelp(ctx, c.Name)
- return err
+ if c.OnUsageError != nil {
+ err := c.OnUsageError(ctx, err)
+ return err
+ } else {
+ fmt.Fprintln(ctx.App.Writer, "Incorrect Usage.")
+ fmt.Fprintln(ctx.App.Writer)
+ ShowCommandHelp(ctx, c.Name)
+ return err
+ }
}
nerr := normalizeFlags(c.Flags, set)
@@ -127,6 +146,30 @@ func (c Command) Run(ctx *Context) error {
if checkCommandHelp(context, c.Name) {
return nil
}
+
+ if c.After != nil {
+ defer func() {
+ afterErr := c.After(context)
+ if afterErr != nil {
+ if err != nil {
+ err = NewMultiError(err, afterErr)
+ } else {
+ err = afterErr
+ }
+ }
+ }()
+ }
+
+ if c.Before != nil {
+ err := c.Before(context)
+ if err != nil {
+ fmt.Fprintln(ctx.App.Writer, err)
+ fmt.Fprintln(ctx.App.Writer)
+ ShowCommandHelp(ctx, c.Name)
+ return err
+ }
+ }
+
context.Command = c
c.Action(context)
return nil
@@ -160,7 +203,7 @@ func (c Command) startApp(ctx *Context) error {
if c.HelpName == "" {
app.HelpName = c.HelpName
} else {
- app.HelpName = fmt.Sprintf("%s %s", ctx.App.Name, c.Name)
+ app.HelpName = app.Name
}
if c.Description != "" {
@@ -199,12 +242,9 @@ func (c Command) startApp(ctx *Context) error {
app.Action = helpSubcommand.Action
}
- var newCmds []Command
- for _, cc := range app.Commands {
- cc.commandNamePath = []string{c.Name, cc.Name}
- newCmds = append(newCmds, cc)
+ for index, cc := range app.Commands {
+ app.Commands[index].commandNamePath = []string{c.Name, cc.Name}
}
- app.Commands = newCmds
return app.RunAsSubcommand(ctx)
}
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/context.go b/Godeps/_workspace/src/github.com/codegangsta/cli/context.go
index f541f41c3..0513d34f6 100644
--- a/Godeps/_workspace/src/github.com/codegangsta/cli/context.go
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/context.go
@@ -163,7 +163,7 @@ func (c *Context) GlobalIsSet(name string) bool {
// Returns a slice of flag names used in this context.
func (c *Context) FlagNames() (names []string) {
for _, flag := range c.Command.Flags {
- name := strings.Split(flag.getName(), ",")[0]
+ name := strings.Split(flag.GetName(), ",")[0]
if name == "help" {
continue
}
@@ -175,7 +175,7 @@ func (c *Context) FlagNames() (names []string) {
// Returns a slice of global flag names used by the app.
func (c *Context) GlobalFlagNames() (names []string) {
for _, flag := range c.App.Flags {
- name := strings.Split(flag.getName(), ",")[0]
+ name := strings.Split(flag.GetName(), ",")[0]
if name == "help" || name == "version" {
continue
}
@@ -360,7 +360,7 @@ func normalizeFlags(flags []Flag, set *flag.FlagSet) error {
visited[f.Name] = true
})
for _, f := range flags {
- parts := strings.Split(f.getName(), ",")
+ parts := strings.Split(f.GetName(), ",")
if len(parts) == 1 {
continue
}
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/flag.go b/Godeps/_workspace/src/github.com/codegangsta/cli/flag.go
index 531b09130..e951c2df7 100644
--- a/Godeps/_workspace/src/github.com/codegangsta/cli/flag.go
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/flag.go
@@ -4,6 +4,7 @@ import (
"flag"
"fmt"
"os"
+ "runtime"
"strconv"
"strings"
"time"
@@ -29,13 +30,13 @@ var HelpFlag = BoolFlag{
}
// Flag is a common interface related to parsing flags in cli.
-// For more advanced flag parsing techniques, it is recomended that
+// For more advanced flag parsing techniques, it is recommended that
// this interface be implemented.
type Flag interface {
fmt.Stringer
// Apply Flag settings to the given flag set
Apply(*flag.FlagSet)
- getName() string
+ GetName() string
}
func flagSet(name string, flags []Flag) *flag.FlagSet {
@@ -73,7 +74,18 @@ type GenericFlag struct {
// help text to the user (uses the String() method of the generic flag to show
// the value)
func (f GenericFlag) String() string {
- return withEnvHint(f.EnvVar, fmt.Sprintf("%s%s \"%v\"\t%v", prefixFor(f.Name), f.Name, f.Value, f.Usage))
+ return withEnvHint(f.EnvVar, fmt.Sprintf("%s %v\t%v", prefixedNames(f.Name), f.FormatValueHelp(), f.Usage))
+}
+
+func (f GenericFlag) FormatValueHelp() string {
+ if f.Value == nil {
+ return ""
+ }
+ s := f.Value.String()
+ if len(s) == 0 {
+ return ""
+ }
+ return fmt.Sprintf("\"%s\"", s)
}
// Apply takes the flagset and calls Set on the generic flag with the value
@@ -95,7 +107,7 @@ func (f GenericFlag) Apply(set *flag.FlagSet) {
})
}
-func (f GenericFlag) getName() string {
+func (f GenericFlag) GetName() string {
return f.Name
}
@@ -159,7 +171,7 @@ func (f StringSliceFlag) Apply(set *flag.FlagSet) {
})
}
-func (f StringSliceFlag) getName() string {
+func (f StringSliceFlag) GetName() string {
return f.Name
}
@@ -231,15 +243,16 @@ func (f IntSliceFlag) Apply(set *flag.FlagSet) {
})
}
-func (f IntSliceFlag) getName() string {
+func (f IntSliceFlag) GetName() string {
return f.Name
}
// BoolFlag is a switch that defaults to false
type BoolFlag struct {
- Name string
- Usage string
- EnvVar string
+ Name string
+ Usage string
+ EnvVar string
+ Destination *bool
}
// String returns a readable representation of this value (for usage defaults)
@@ -264,20 +277,25 @@ func (f BoolFlag) Apply(set *flag.FlagSet) {
}
eachName(f.Name, func(name string) {
+ if f.Destination != nil {
+ set.BoolVar(f.Destination, name, val, f.Usage)
+ return
+ }
set.Bool(name, val, f.Usage)
})
}
-func (f BoolFlag) getName() string {
+func (f BoolFlag) GetName() string {
return f.Name
}
// BoolTFlag this represents a boolean flag that is true by default, but can
// still be set to false by --some-flag=false
type BoolTFlag struct {
- Name string
- Usage string
- EnvVar string
+ Name string
+ Usage string
+ EnvVar string
+ Destination *bool
}
// String returns a readable representation of this value (for usage defaults)
@@ -302,34 +320,38 @@ func (f BoolTFlag) Apply(set *flag.FlagSet) {
}
eachName(f.Name, func(name string) {
+ if f.Destination != nil {
+ set.BoolVar(f.Destination, name, val, f.Usage)
+ return
+ }
set.Bool(name, val, f.Usage)
})
}
-func (f BoolTFlag) getName() string {
+func (f BoolTFlag) GetName() string {
return f.Name
}
// StringFlag represents a flag that takes as string value
type StringFlag struct {
- Name string
- Value string
- Usage string
- EnvVar string
+ Name string
+ Value string
+ Usage string
+ EnvVar string
+ Destination *string
}
// String returns the usage
func (f StringFlag) String() string {
- var fmtString string
- fmtString = "%s %v\t%v"
+ return withEnvHint(f.EnvVar, fmt.Sprintf("%s %v\t%v", prefixedNames(f.Name), f.FormatValueHelp(), f.Usage))
+}
- if len(f.Value) > 0 {
- fmtString = "%s \"%v\"\t%v"
- } else {
- fmtString = "%s %v\t%v"
+func (f StringFlag) FormatValueHelp() string {
+ s := f.Value
+ if len(s) == 0 {
+ return ""
}
-
- return withEnvHint(f.EnvVar, fmt.Sprintf(fmtString, prefixedNames(f.Name), f.Value, f.Usage))
+ return fmt.Sprintf("\"%s\"", s)
}
// Apply populates the flag given the flag set and environment
@@ -345,21 +367,26 @@ func (f StringFlag) Apply(set *flag.FlagSet) {
}
eachName(f.Name, func(name string) {
+ if f.Destination != nil {
+ set.StringVar(f.Destination, name, f.Value, f.Usage)
+ return
+ }
set.String(name, f.Value, f.Usage)
})
}
-func (f StringFlag) getName() string {
+func (f StringFlag) GetName() string {
return f.Name
}
// IntFlag is a flag that takes an integer
// Errors if the value provided cannot be parsed
type IntFlag struct {
- Name string
- Value int
- Usage string
- EnvVar string
+ Name string
+ Value int
+ Usage string
+ EnvVar string
+ Destination *int
}
// String returns the usage
@@ -383,21 +410,26 @@ func (f IntFlag) Apply(set *flag.FlagSet) {
}
eachName(f.Name, func(name string) {
+ if f.Destination != nil {
+ set.IntVar(f.Destination, name, f.Value, f.Usage)
+ return
+ }
set.Int(name, f.Value, f.Usage)
})
}
-func (f IntFlag) getName() string {
+func (f IntFlag) GetName() string {
return f.Name
}
// DurationFlag is a flag that takes a duration specified in Go's duration
// format: https://golang.org/pkg/time/#ParseDuration
type DurationFlag struct {
- Name string
- Value time.Duration
- Usage string
- EnvVar string
+ Name string
+ Value time.Duration
+ Usage string
+ EnvVar string
+ Destination *time.Duration
}
// String returns a readable representation of this value (for usage defaults)
@@ -421,21 +453,26 @@ func (f DurationFlag) Apply(set *flag.FlagSet) {
}
eachName(f.Name, func(name string) {
+ if f.Destination != nil {
+ set.DurationVar(f.Destination, name, f.Value, f.Usage)
+ return
+ }
set.Duration(name, f.Value, f.Usage)
})
}
-func (f DurationFlag) getName() string {
+func (f DurationFlag) GetName() string {
return f.Name
}
// Float64Flag is a flag that takes an float value
// Errors if the value provided cannot be parsed
type Float64Flag struct {
- Name string
- Value float64
- Usage string
- EnvVar string
+ Name string
+ Value float64
+ Usage string
+ EnvVar string
+ Destination *float64
}
// String returns the usage
@@ -458,11 +495,15 @@ func (f Float64Flag) Apply(set *flag.FlagSet) {
}
eachName(f.Name, func(name string) {
+ if f.Destination != nil {
+ set.Float64Var(f.Destination, name, f.Value, f.Usage)
+ return
+ }
set.Float64(name, f.Value, f.Usage)
})
}
-func (f Float64Flag) getName() string {
+func (f Float64Flag) GetName() string {
return f.Name
}
@@ -491,7 +532,15 @@ func prefixedNames(fullName string) (prefixed string) {
func withEnvHint(envVar, str string) string {
envText := ""
if envVar != "" {
- envText = fmt.Sprintf(" [$%s]", strings.Join(strings.Split(envVar, ","), ", $"))
+ prefix := "$"
+ suffix := ""
+ sep := ", $"
+ if runtime.GOOS == "windows" {
+ prefix = "%"
+ suffix = "%"
+ sep = "%, %"
+ }
+ envText = fmt.Sprintf(" [%s%s%s]", prefix, strings.Join(strings.Split(envVar, ","), sep), suffix)
}
return str + envText
}
diff --git a/Godeps/_workspace/src/github.com/codegangsta/cli/help.go b/Godeps/_workspace/src/github.com/codegangsta/cli/help.go
index a246f63ac..15916f86a 100644
--- a/Godeps/_workspace/src/github.com/codegangsta/cli/help.go
+++ b/Godeps/_workspace/src/github.com/codegangsta/cli/help.go
@@ -15,7 +15,7 @@ var AppHelpTemplate = `NAME:
{{.Name}} - {{.Usage}}
USAGE:
- {{.HelpName}} {{if .Flags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}
+ {{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} {{if .Flags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}
{{if .Version}}
VERSION:
{{.Version}}
@@ -180,7 +180,9 @@ func printHelp(out io.Writer, templ string, data interface{}) {
t := template.Must(template.New("help").Funcs(funcMap).Parse(templ))
err := t.Execute(w, data)
if err != nil {
- panic(err)
+ // If the writer is closed, t.Execute will fail, and there's nothing
+ // we can do to recover. We could send this to os.Stderr if we need.
+ return
}
w.Flush()
}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/LICENSE b/Godeps/_workspace/src/github.com/davecgh/go-spew/LICENSE
new file mode 100644
index 000000000..2a7cfd2bf
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/davecgh/go-spew/LICENSE
@@ -0,0 +1,13 @@
+Copyright (c) 2012-2013 Dave Collins <dave@davec.name>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/bypass.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/bypass.go
new file mode 100644
index 000000000..565bf5899
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/bypass.go
@@ -0,0 +1,151 @@
+// Copyright (c) 2015 Dave Collins <dave@davec.name>
+//
+// Permission to use, copy, modify, and distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+// NOTE: Due to the following build constraints, this file will only be compiled
+// when the code is not running on Google App Engine and "-tags disableunsafe"
+// is not added to the go build command line.
+// +build !appengine,!disableunsafe
+
+package spew
+
+import (
+ "reflect"
+ "unsafe"
+)
+
+const (
+ // UnsafeDisabled is a build-time constant which specifies whether or
+ // not access to the unsafe package is available.
+ UnsafeDisabled = false
+
+ // ptrSize is the size of a pointer on the current arch.
+ ptrSize = unsafe.Sizeof((*byte)(nil))
+)
+
+var (
+ // offsetPtr, offsetScalar, and offsetFlag are the offsets for the
+ // internal reflect.Value fields. These values are valid before golang
+ // commit ecccf07e7f9d which changed the format. The are also valid
+ // after commit 82f48826c6c7 which changed the format again to mirror
+ // the original format. Code in the init function updates these offsets
+ // as necessary.
+ offsetPtr = uintptr(ptrSize)
+ offsetScalar = uintptr(0)
+ offsetFlag = uintptr(ptrSize * 2)
+
+ // flagKindWidth and flagKindShift indicate various bits that the
+ // reflect package uses internally to track kind information.
+ //
+ // flagRO indicates whether or not the value field of a reflect.Value is
+ // read-only.
+ //
+ // flagIndir indicates whether the value field of a reflect.Value is
+ // the actual data or a pointer to the data.
+ //
+ // These values are valid before golang commit 90a7c3c86944 which
+ // changed their positions. Code in the init function updates these
+ // flags as necessary.
+ flagKindWidth = uintptr(5)
+ flagKindShift = uintptr(flagKindWidth - 1)
+ flagRO = uintptr(1 << 0)
+ flagIndir = uintptr(1 << 1)
+)
+
+func init() {
+ // Older versions of reflect.Value stored small integers directly in the
+ // ptr field (which is named val in the older versions). Versions
+ // between commits ecccf07e7f9d and 82f48826c6c7 added a new field named
+ // scalar for this purpose which unfortunately came before the flag
+ // field, so the offset of the flag field is different for those
+ // versions.
+ //
+ // This code constructs a new reflect.Value from a known small integer
+ // and checks if the size of the reflect.Value struct indicates it has
+ // the scalar field. When it does, the offsets are updated accordingly.
+ vv := reflect.ValueOf(0xf00)
+ if unsafe.Sizeof(vv) == (ptrSize * 4) {
+ offsetScalar = ptrSize * 2
+ offsetFlag = ptrSize * 3
+ }
+
+ // Commit 90a7c3c86944 changed the flag positions such that the low
+ // order bits are the kind. This code extracts the kind from the flags
+ // field and ensures it's the correct type. When it's not, the flag
+ // order has been changed to the newer format, so the flags are updated
+ // accordingly.
+ upf := unsafe.Pointer(uintptr(unsafe.Pointer(&vv)) + offsetFlag)
+ upfv := *(*uintptr)(upf)
+ flagKindMask := uintptr((1<<flagKindWidth - 1) << flagKindShift)
+ if (upfv&flagKindMask)>>flagKindShift != uintptr(reflect.Int) {
+ flagKindShift = 0
+ flagRO = 1 << 5
+ flagIndir = 1 << 6
+
+ // Commit adf9b30e5594 modified the flags to separate the
+ // flagRO flag into two bits which specifies whether or not the
+ // field is embedded. This causes flagIndir to move over a bit
+ // and means that flagRO is the combination of either of the
+ // original flagRO bit and the new bit.
+ //
+ // This code detects the change by extracting what used to be
+ // the indirect bit to ensure it's set. When it's not, the flag
+ // order has been changed to the newer format, so the flags are
+ // updated accordingly.
+ if upfv&flagIndir == 0 {
+ flagRO = 3 << 5
+ flagIndir = 1 << 7
+ }
+ }
+}
+
+// unsafeReflectValue converts the passed reflect.Value into a one that bypasses
+// the typical safety restrictions preventing access to unaddressable and
+// unexported data. It works by digging the raw pointer to the underlying
+// value out of the protected value and generating a new unprotected (unsafe)
+// reflect.Value to it.
+//
+// This allows us to check for implementations of the Stringer and error
+// interfaces to be used for pretty printing ordinarily unaddressable and
+// inaccessible values such as unexported struct fields.
+func unsafeReflectValue(v reflect.Value) (rv reflect.Value) {
+ indirects := 1
+ vt := v.Type()
+ upv := unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetPtr)
+ rvf := *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetFlag))
+ if rvf&flagIndir != 0 {
+ vt = reflect.PtrTo(v.Type())
+ indirects++
+ } else if offsetScalar != 0 {
+ // The value is in the scalar field when it's not one of the
+ // reference types.
+ switch vt.Kind() {
+ case reflect.Uintptr:
+ case reflect.Chan:
+ case reflect.Func:
+ case reflect.Map:
+ case reflect.Ptr:
+ case reflect.UnsafePointer:
+ default:
+ upv = unsafe.Pointer(uintptr(unsafe.Pointer(&v)) +
+ offsetScalar)
+ }
+ }
+
+ pv := reflect.NewAt(vt, upv)
+ rv = pv
+ for i := 0; i < indirects; i++ {
+ rv = rv.Elem()
+ }
+ return rv
+}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/bypasssafe.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/bypasssafe.go
new file mode 100644
index 000000000..457e41235
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/bypasssafe.go
@@ -0,0 +1,37 @@
+// Copyright (c) 2015 Dave Collins <dave@davec.name>
+//
+// Permission to use, copy, modify, and distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+// NOTE: Due to the following build constraints, this file will only be compiled
+// when either the code is running on Google App Engine or "-tags disableunsafe"
+// is added to the go build command line.
+// +build appengine disableunsafe
+
+package spew
+
+import "reflect"
+
+const (
+ // UnsafeDisabled is a build-time constant which specifies whether or
+ // not access to the unsafe package is available.
+ UnsafeDisabled = true
+)
+
+// unsafeReflectValue typically converts the passed reflect.Value into a one
+// that bypasses the typical safety restrictions preventing access to
+// unaddressable and unexported data. However, doing this relies on access to
+// the unsafe package. This is a stub version which simply returns the passed
+// reflect.Value when the unsafe package is not available.
+func unsafeReflectValue(v reflect.Value) reflect.Value {
+ return v
+}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common.go
index 8252cd3ee..14f02dc15 100644
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common.go
+++ b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common.go
@@ -23,116 +23,8 @@ import (
"reflect"
"sort"
"strconv"
- "unsafe"
)
-const (
- // ptrSize is the size of a pointer on the current arch.
- ptrSize = unsafe.Sizeof((*byte)(nil))
-)
-
-var (
- // offsetPtr, offsetScalar, and offsetFlag are the offsets for the
- // internal reflect.Value fields. These values are valid before golang
- // commit ecccf07e7f9d which changed the format. The are also valid
- // after commit 82f48826c6c7 which changed the format again to mirror
- // the original format. Code in the init function updates these offsets
- // as necessary.
- offsetPtr = uintptr(ptrSize)
- offsetScalar = uintptr(0)
- offsetFlag = uintptr(ptrSize * 2)
-
- // flagKindWidth and flagKindShift indicate various bits that the
- // reflect package uses internally to track kind information.
- //
- // flagRO indicates whether or not the value field of a reflect.Value is
- // read-only.
- //
- // flagIndir indicates whether the value field of a reflect.Value is
- // the actual data or a pointer to the data.
- //
- // These values are valid before golang commit 90a7c3c86944 which
- // changed their positions. Code in the init function updates these
- // flags as necessary.
- flagKindWidth = uintptr(5)
- flagKindShift = uintptr(flagKindWidth - 1)
- flagRO = uintptr(1 << 0)
- flagIndir = uintptr(1 << 1)
-)
-
-func init() {
- // Older versions of reflect.Value stored small integers directly in the
- // ptr field (which is named val in the older versions). Versions
- // between commits ecccf07e7f9d and 82f48826c6c7 added a new field named
- // scalar for this purpose which unfortunately came before the flag
- // field, so the offset of the flag field is different for those
- // versions.
- //
- // This code constructs a new reflect.Value from a known small integer
- // and checks if the size of the reflect.Value struct indicates it has
- // the scalar field. When it does, the offsets are updated accordingly.
- vv := reflect.ValueOf(0xf00)
- if unsafe.Sizeof(vv) == (ptrSize * 4) {
- offsetScalar = ptrSize * 2
- offsetFlag = ptrSize * 3
- }
-
- // Commit 90a7c3c86944 changed the flag positions such that the low
- // order bits are the kind. This code extracts the kind from the flags
- // field and ensures it's the correct type. When it's not, the flag
- // order has been changed to the newer format, so the flags are updated
- // accordingly.
- upf := unsafe.Pointer(uintptr(unsafe.Pointer(&vv)) + offsetFlag)
- upfv := *(*uintptr)(upf)
- flagKindMask := uintptr((1<<flagKindWidth - 1) << flagKindShift)
- if (upfv&flagKindMask)>>flagKindShift != uintptr(reflect.Int) {
- flagKindShift = 0
- flagRO = 1 << 5
- flagIndir = 1 << 6
- }
-}
-
-// unsafeReflectValue converts the passed reflect.Value into a one that bypasses
-// the typical safety restrictions preventing access to unaddressable and
-// unexported data. It works by digging the raw pointer to the underlying
-// value out of the protected value and generating a new unprotected (unsafe)
-// reflect.Value to it.
-//
-// This allows us to check for implementations of the Stringer and error
-// interfaces to be used for pretty printing ordinarily unaddressable and
-// inaccessible values such as unexported struct fields.
-func unsafeReflectValue(v reflect.Value) (rv reflect.Value) {
- indirects := 1
- vt := v.Type()
- upv := unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetPtr)
- rvf := *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&v)) + offsetFlag))
- if rvf&flagIndir != 0 {
- vt = reflect.PtrTo(v.Type())
- indirects++
- } else if offsetScalar != 0 {
- // The value is in the scalar field when it's not one of the
- // reference types.
- switch vt.Kind() {
- case reflect.Uintptr:
- case reflect.Chan:
- case reflect.Func:
- case reflect.Map:
- case reflect.Ptr:
- case reflect.UnsafePointer:
- default:
- upv = unsafe.Pointer(uintptr(unsafe.Pointer(&v)) +
- offsetScalar)
- }
- }
-
- pv := reflect.NewAt(vt, upv)
- rv = pv
- for i := 0; i < indirects; i++ {
- rv = rv.Elem()
- }
- return rv
-}
-
// Some constants in the form of bytes to avoid string overhead. This mirrors
// the technique used in the fmt package.
var (
@@ -194,9 +86,14 @@ func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool)
// We need an interface to check if the type implements the error or
// Stringer interface. However, the reflect package won't give us an
// interface on certain things like unexported struct fields in order
- // to enforce visibility rules. We use unsafe to bypass these restrictions
- // since this package does not mutate the values.
+ // to enforce visibility rules. We use unsafe, when it's available,
+ // to bypass these restrictions since this package does not mutate the
+ // values.
if !v.CanInterface() {
+ if UnsafeDisabled {
+ return false
+ }
+
v = unsafeReflectValue(v)
}
@@ -206,21 +103,15 @@ func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handled bool)
// mutate the value, however, types which choose to satisify an error or
// Stringer interface with a pointer receiver should not be mutating their
// state inside these interface methods.
- var viface interface{}
- if !cs.DisablePointerMethods {
- if !v.CanAddr() {
- v = unsafeReflectValue(v)
- }
- viface = v.Addr().Interface()
- } else {
- if v.CanAddr() {
- v = v.Addr()
- }
- viface = v.Interface()
+ if !cs.DisablePointerMethods && !UnsafeDisabled && !v.CanAddr() {
+ v = unsafeReflectValue(v)
+ }
+ if v.CanAddr() {
+ v = v.Addr()
}
// Is it an error or Stringer?
- switch iface := viface.(type) {
+ switch iface := v.Interface().(type) {
case error:
defer catchPanic(w, v)
if cs.ContinueOnMethod {
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common_test.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common_test.go
deleted file mode 100644
index 39b7525b3..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/common_test.go
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright (c) 2013 Dave Collins <dave@davec.name>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-package spew_test
-
-import (
- "fmt"
- "reflect"
- "testing"
-
- "github.com/davecgh/go-spew/spew"
-)
-
-// custom type to test Stinger interface on non-pointer receiver.
-type stringer string
-
-// String implements the Stringer interface for testing invocation of custom
-// stringers on types with non-pointer receivers.
-func (s stringer) String() string {
- return "stringer " + string(s)
-}
-
-// custom type to test Stinger interface on pointer receiver.
-type pstringer string
-
-// String implements the Stringer interface for testing invocation of custom
-// stringers on types with only pointer receivers.
-func (s *pstringer) String() string {
- return "stringer " + string(*s)
-}
-
-// xref1 and xref2 are cross referencing structs for testing circular reference
-// detection.
-type xref1 struct {
- ps2 *xref2
-}
-type xref2 struct {
- ps1 *xref1
-}
-
-// indirCir1, indirCir2, and indirCir3 are used to generate an indirect circular
-// reference for testing detection.
-type indirCir1 struct {
- ps2 *indirCir2
-}
-type indirCir2 struct {
- ps3 *indirCir3
-}
-type indirCir3 struct {
- ps1 *indirCir1
-}
-
-// embed is used to test embedded structures.
-type embed struct {
- a string
-}
-
-// embedwrap is used to test embedded structures.
-type embedwrap struct {
- *embed
- e *embed
-}
-
-// panicer is used to intentionally cause a panic for testing spew properly
-// handles them
-type panicer int
-
-func (p panicer) String() string {
- panic("test panic")
-}
-
-// customError is used to test custom error interface invocation.
-type customError int
-
-func (e customError) Error() string {
- return fmt.Sprintf("error: %d", int(e))
-}
-
-// stringizeWants converts a slice of wanted test output into a format suitable
-// for a test error message.
-func stringizeWants(wants []string) string {
- s := ""
- for i, want := range wants {
- if i > 0 {
- s += fmt.Sprintf("want%d: %s", i+1, want)
- } else {
- s += "want: " + want
- }
- }
- return s
-}
-
-// testFailed returns whether or not a test failed by checking if the result
-// of the test is in the slice of wanted strings.
-func testFailed(result string, wants []string) bool {
- for _, want := range wants {
- if result == want {
- return false
- }
- }
- return true
-}
-
-type sortableStruct struct {
- x int
-}
-
-func (ss sortableStruct) String() string {
- return fmt.Sprintf("ss.%d", ss.x)
-}
-
-type unsortableStruct struct {
- x int
-}
-
-type sortTestCase struct {
- input []reflect.Value
- expected []reflect.Value
-}
-
-func helpTestSortValues(tests []sortTestCase, cs *spew.ConfigState, t *testing.T) {
- getInterfaces := func(values []reflect.Value) []interface{} {
- interfaces := []interface{}{}
- for _, v := range values {
- interfaces = append(interfaces, v.Interface())
- }
- return interfaces
- }
-
- for _, test := range tests {
- spew.SortValues(test.input, cs)
- // reflect.DeepEqual cannot really make sense of reflect.Value,
- // probably because of all the pointer tricks. For instance,
- // v(2.0) != v(2.0) on a 32-bits system. Turn them into interface{}
- // instead.
- input := getInterfaces(test.input)
- expected := getInterfaces(test.expected)
- if !reflect.DeepEqual(input, expected) {
- t.Errorf("Sort mismatch:\n %v != %v", input, expected)
- }
- }
-}
-
-// TestSortValues ensures the sort functionality for relect.Value based sorting
-// works as intended.
-func TestSortValues(t *testing.T) {
- v := reflect.ValueOf
-
- a := v("a")
- b := v("b")
- c := v("c")
- embedA := v(embed{"a"})
- embedB := v(embed{"b"})
- embedC := v(embed{"c"})
- tests := []sortTestCase{
- // No values.
- {
- []reflect.Value{},
- []reflect.Value{},
- },
- // Bools.
- {
- []reflect.Value{v(false), v(true), v(false)},
- []reflect.Value{v(false), v(false), v(true)},
- },
- // Ints.
- {
- []reflect.Value{v(2), v(1), v(3)},
- []reflect.Value{v(1), v(2), v(3)},
- },
- // Uints.
- {
- []reflect.Value{v(uint8(2)), v(uint8(1)), v(uint8(3))},
- []reflect.Value{v(uint8(1)), v(uint8(2)), v(uint8(3))},
- },
- // Floats.
- {
- []reflect.Value{v(2.0), v(1.0), v(3.0)},
- []reflect.Value{v(1.0), v(2.0), v(3.0)},
- },
- // Strings.
- {
- []reflect.Value{b, a, c},
- []reflect.Value{a, b, c},
- },
- // Array
- {
- []reflect.Value{v([3]int{3, 2, 1}), v([3]int{1, 3, 2}), v([3]int{1, 2, 3})},
- []reflect.Value{v([3]int{1, 2, 3}), v([3]int{1, 3, 2}), v([3]int{3, 2, 1})},
- },
- // Uintptrs.
- {
- []reflect.Value{v(uintptr(2)), v(uintptr(1)), v(uintptr(3))},
- []reflect.Value{v(uintptr(1)), v(uintptr(2)), v(uintptr(3))},
- },
- // SortableStructs.
- {
- // Note: not sorted - DisableMethods is set.
- []reflect.Value{v(sortableStruct{2}), v(sortableStruct{1}), v(sortableStruct{3})},
- []reflect.Value{v(sortableStruct{2}), v(sortableStruct{1}), v(sortableStruct{3})},
- },
- // UnsortableStructs.
- {
- // Note: not sorted - SpewKeys is false.
- []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})},
- []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})},
- },
- // Invalid.
- {
- []reflect.Value{embedB, embedA, embedC},
- []reflect.Value{embedB, embedA, embedC},
- },
- }
- cs := spew.ConfigState{DisableMethods: true, SpewKeys: false}
- helpTestSortValues(tests, &cs, t)
-}
-
-// TestSortValuesWithMethods ensures the sort functionality for relect.Value
-// based sorting works as intended when using string methods.
-func TestSortValuesWithMethods(t *testing.T) {
- v := reflect.ValueOf
-
- a := v("a")
- b := v("b")
- c := v("c")
- tests := []sortTestCase{
- // Ints.
- {
- []reflect.Value{v(2), v(1), v(3)},
- []reflect.Value{v(1), v(2), v(3)},
- },
- // Strings.
- {
- []reflect.Value{b, a, c},
- []reflect.Value{a, b, c},
- },
- // SortableStructs.
- {
- []reflect.Value{v(sortableStruct{2}), v(sortableStruct{1}), v(sortableStruct{3})},
- []reflect.Value{v(sortableStruct{1}), v(sortableStruct{2}), v(sortableStruct{3})},
- },
- // UnsortableStructs.
- {
- // Note: not sorted - SpewKeys is false.
- []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})},
- []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})},
- },
- }
- cs := spew.ConfigState{DisableMethods: false, SpewKeys: false}
- helpTestSortValues(tests, &cs, t)
-}
-
-// TestSortValuesWithSpew ensures the sort functionality for relect.Value
-// based sorting works as intended when using spew to stringify keys.
-func TestSortValuesWithSpew(t *testing.T) {
- v := reflect.ValueOf
-
- a := v("a")
- b := v("b")
- c := v("c")
- tests := []sortTestCase{
- // Ints.
- {
- []reflect.Value{v(2), v(1), v(3)},
- []reflect.Value{v(1), v(2), v(3)},
- },
- // Strings.
- {
- []reflect.Value{b, a, c},
- []reflect.Value{a, b, c},
- },
- // SortableStructs.
- {
- []reflect.Value{v(sortableStruct{2}), v(sortableStruct{1}), v(sortableStruct{3})},
- []reflect.Value{v(sortableStruct{1}), v(sortableStruct{2}), v(sortableStruct{3})},
- },
- // UnsortableStructs.
- {
- []reflect.Value{v(unsortableStruct{2}), v(unsortableStruct{1}), v(unsortableStruct{3})},
- []reflect.Value{v(unsortableStruct{1}), v(unsortableStruct{2}), v(unsortableStruct{3})},
- },
- }
- cs := spew.ConfigState{DisableMethods: true, SpewKeys: true}
- helpTestSortValues(tests, &cs, t)
-}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/config.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/config.go
index 9e21b38ca..ee1ab07b3 100644
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/config.go
+++ b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/config.go
@@ -61,7 +61,10 @@ type ConfigState struct {
// with a pointer receiver could technically mutate the value, however,
// in practice, types which choose to satisify an error or Stringer
// interface with a pointer receiver should not be mutating their state
- // inside these interface methods.
+ // inside these interface methods. As a result, this option relies on
+ // access to the unsafe package, so it will not have any effect when
+ // running in environments without access to the unsafe package such as
+ // Google App Engine or with the "disableunsafe" build tag specified.
DisablePointerMethods bool
// ContinueOnMethod specifies whether or not recursion should continue once
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump.go
index 5783145b7..a0ff95e27 100644
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump.go
+++ b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump.go
@@ -181,25 +181,28 @@ func (d *dumpState) dumpSlice(v reflect.Value) {
// Try to use existing uint8 slices and fall back to converting
// and copying if that fails.
case vt.Kind() == reflect.Uint8:
- // We need an addressable interface to convert the type back
- // into a byte slice. However, the reflect package won't give
- // us an interface on certain things like unexported struct
- // fields in order to enforce visibility rules. We use unsafe
- // to bypass these restrictions since this package does not
+ // We need an addressable interface to convert the type
+ // to a byte slice. However, the reflect package won't
+ // give us an interface on certain things like
+ // unexported struct fields in order to enforce
+ // visibility rules. We use unsafe, when available, to
+ // bypass these restrictions since this package does not
// mutate the values.
vs := v
if !vs.CanInterface() || !vs.CanAddr() {
vs = unsafeReflectValue(vs)
}
- vs = vs.Slice(0, numEntries)
-
- // Use the existing uint8 slice if it can be type
- // asserted.
- iface := vs.Interface()
- if slice, ok := iface.([]uint8); ok {
- buf = slice
- doHexDump = true
- break
+ if !UnsafeDisabled {
+ vs = vs.Slice(0, numEntries)
+
+ // Use the existing uint8 slice if it can be
+ // type asserted.
+ iface := vs.Interface()
+ if slice, ok := iface.([]uint8); ok {
+ buf = slice
+ doHexDump = true
+ break
+ }
}
// The underlying data needs to be converted if it can't
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump_test.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump_test.go
deleted file mode 100644
index 3dd908917..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dump_test.go
+++ /dev/null
@@ -1,1021 +0,0 @@
-/*
- * Copyright (c) 2013 Dave Collins <dave@davec.name>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
-Test Summary:
-NOTE: For each test, a nil pointer, a single pointer and double pointer to the
-base test element are also tested to ensure proper indirection across all types.
-
-- Max int8, int16, int32, int64, int
-- Max uint8, uint16, uint32, uint64, uint
-- Boolean true and false
-- Standard complex64 and complex128
-- Array containing standard ints
-- Array containing type with custom formatter on pointer receiver only
-- Array containing interfaces
-- Array containing bytes
-- Slice containing standard float32 values
-- Slice containing type with custom formatter on pointer receiver only
-- Slice containing interfaces
-- Slice containing bytes
-- Nil slice
-- Standard string
-- Nil interface
-- Sub-interface
-- Map with string keys and int vals
-- Map with custom formatter type on pointer receiver only keys and vals
-- Map with interface keys and values
-- Map with nil interface value
-- Struct with primitives
-- Struct that contains another struct
-- Struct that contains custom type with Stringer pointer interface via both
- exported and unexported fields
-- Struct that contains embedded struct and field to same struct
-- Uintptr to 0 (null pointer)
-- Uintptr address of real variable
-- Unsafe.Pointer to 0 (null pointer)
-- Unsafe.Pointer to address of real variable
-- Nil channel
-- Standard int channel
-- Function with no params and no returns
-- Function with param and no returns
-- Function with multiple params and multiple returns
-- Struct that is circular through self referencing
-- Structs that are circular through cross referencing
-- Structs that are indirectly circular
-- Type that panics in its Stringer interface
-*/
-
-package spew_test
-
-import (
- "bytes"
- "fmt"
- "testing"
- "unsafe"
-
- "github.com/davecgh/go-spew/spew"
-)
-
-// dumpTest is used to describe a test to be perfomed against the Dump method.
-type dumpTest struct {
- in interface{}
- wants []string
-}
-
-// dumpTests houses all of the tests to be performed against the Dump method.
-var dumpTests = make([]dumpTest, 0)
-
-// addDumpTest is a helper method to append the passed input and desired result
-// to dumpTests
-func addDumpTest(in interface{}, wants ...string) {
- test := dumpTest{in, wants}
- dumpTests = append(dumpTests, test)
-}
-
-func addIntDumpTests() {
- // Max int8.
- v := int8(127)
- nv := (*int8)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "int8"
- vs := "127"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Max int16.
- v2 := int16(32767)
- nv2 := (*int16)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "int16"
- v2s := "32767"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*"+v2t+")(<nil>)\n")
-
- // Max int32.
- v3 := int32(2147483647)
- nv3 := (*int32)(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "int32"
- v3s := "2147483647"
- addDumpTest(v3, "("+v3t+") "+v3s+"\n")
- addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n")
- addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n")
- addDumpTest(nv3, "(*"+v3t+")(<nil>)\n")
-
- // Max int64.
- v4 := int64(9223372036854775807)
- nv4 := (*int64)(nil)
- pv4 := &v4
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "int64"
- v4s := "9223372036854775807"
- addDumpTest(v4, "("+v4t+") "+v4s+"\n")
- addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n")
- addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n")
- addDumpTest(nv4, "(*"+v4t+")(<nil>)\n")
-
- // Max int.
- v5 := int(2147483647)
- nv5 := (*int)(nil)
- pv5 := &v5
- v5Addr := fmt.Sprintf("%p", pv5)
- pv5Addr := fmt.Sprintf("%p", &pv5)
- v5t := "int"
- v5s := "2147483647"
- addDumpTest(v5, "("+v5t+") "+v5s+"\n")
- addDumpTest(pv5, "(*"+v5t+")("+v5Addr+")("+v5s+")\n")
- addDumpTest(&pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")("+v5s+")\n")
- addDumpTest(nv5, "(*"+v5t+")(<nil>)\n")
-}
-
-func addUintDumpTests() {
- // Max uint8.
- v := uint8(255)
- nv := (*uint8)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "uint8"
- vs := "255"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Max uint16.
- v2 := uint16(65535)
- nv2 := (*uint16)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "uint16"
- v2s := "65535"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*"+v2t+")(<nil>)\n")
-
- // Max uint32.
- v3 := uint32(4294967295)
- nv3 := (*uint32)(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "uint32"
- v3s := "4294967295"
- addDumpTest(v3, "("+v3t+") "+v3s+"\n")
- addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n")
- addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n")
- addDumpTest(nv3, "(*"+v3t+")(<nil>)\n")
-
- // Max uint64.
- v4 := uint64(18446744073709551615)
- nv4 := (*uint64)(nil)
- pv4 := &v4
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "uint64"
- v4s := "18446744073709551615"
- addDumpTest(v4, "("+v4t+") "+v4s+"\n")
- addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n")
- addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n")
- addDumpTest(nv4, "(*"+v4t+")(<nil>)\n")
-
- // Max uint.
- v5 := uint(4294967295)
- nv5 := (*uint)(nil)
- pv5 := &v5
- v5Addr := fmt.Sprintf("%p", pv5)
- pv5Addr := fmt.Sprintf("%p", &pv5)
- v5t := "uint"
- v5s := "4294967295"
- addDumpTest(v5, "("+v5t+") "+v5s+"\n")
- addDumpTest(pv5, "(*"+v5t+")("+v5Addr+")("+v5s+")\n")
- addDumpTest(&pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")("+v5s+")\n")
- addDumpTest(nv5, "(*"+v5t+")(<nil>)\n")
-}
-
-func addBoolDumpTests() {
- // Boolean true.
- v := bool(true)
- nv := (*bool)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "bool"
- vs := "true"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Boolean false.
- v2 := bool(false)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "bool"
- v2s := "false"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
-}
-
-func addFloatDumpTests() {
- // Standard float32.
- v := float32(3.1415)
- nv := (*float32)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "float32"
- vs := "3.1415"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Standard float64.
- v2 := float64(3.1415926)
- nv2 := (*float64)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "float64"
- v2s := "3.1415926"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*"+v2t+")(<nil>)\n")
-}
-
-func addComplexDumpTests() {
- // Standard complex64.
- v := complex(float32(6), -2)
- nv := (*complex64)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "complex64"
- vs := "(6-2i)"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Standard complex128.
- v2 := complex(float64(-6), 2)
- nv2 := (*complex128)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "complex128"
- v2s := "(-6+2i)"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*"+v2t+")(<nil>)\n")
-}
-
-func addArrayDumpTests() {
- // Array containing standard ints.
- v := [3]int{1, 2, 3}
- vLen := fmt.Sprintf("%d", len(v))
- vCap := fmt.Sprintf("%d", cap(v))
- nv := (*[3]int)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "int"
- vs := "(len=" + vLen + " cap=" + vCap + ") {\n (" + vt + ") 1,\n (" +
- vt + ") 2,\n (" + vt + ") 3\n}"
- addDumpTest(v, "([3]"+vt+") "+vs+"\n")
- addDumpTest(pv, "(*[3]"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**[3]"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*[3]"+vt+")(<nil>)\n")
-
- // Array containing type with custom formatter on pointer receiver only.
- v2i0 := pstringer("1")
- v2i1 := pstringer("2")
- v2i2 := pstringer("3")
- v2 := [3]pstringer{v2i0, v2i1, v2i2}
- v2i0Len := fmt.Sprintf("%d", len(v2i0))
- v2i1Len := fmt.Sprintf("%d", len(v2i1))
- v2i2Len := fmt.Sprintf("%d", len(v2i2))
- v2Len := fmt.Sprintf("%d", len(v2))
- v2Cap := fmt.Sprintf("%d", cap(v2))
- nv2 := (*[3]pstringer)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "spew_test.pstringer"
- v2s := "(len=" + v2Len + " cap=" + v2Cap + ") {\n (" + v2t + ") (len=" +
- v2i0Len + ") stringer 1,\n (" + v2t + ") (len=" + v2i1Len +
- ") stringer 2,\n (" + v2t + ") (len=" + v2i2Len + ") " +
- "stringer 3\n}"
- addDumpTest(v2, "([3]"+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*[3]"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**[3]"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*[3]"+v2t+")(<nil>)\n")
-
- // Array containing interfaces.
- v3i0 := "one"
- v3 := [3]interface{}{v3i0, int(2), uint(3)}
- v3i0Len := fmt.Sprintf("%d", len(v3i0))
- v3Len := fmt.Sprintf("%d", len(v3))
- v3Cap := fmt.Sprintf("%d", cap(v3))
- nv3 := (*[3]interface{})(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "[3]interface {}"
- v3t2 := "string"
- v3t3 := "int"
- v3t4 := "uint"
- v3s := "(len=" + v3Len + " cap=" + v3Cap + ") {\n (" + v3t2 + ") " +
- "(len=" + v3i0Len + ") \"one\",\n (" + v3t3 + ") 2,\n (" +
- v3t4 + ") 3\n}"
- addDumpTest(v3, "("+v3t+") "+v3s+"\n")
- addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n")
- addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n")
- addDumpTest(nv3, "(*"+v3t+")(<nil>)\n")
-
- // Array containing bytes.
- v4 := [34]byte{
- 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
- 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
- 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
- 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
- 0x31, 0x32,
- }
- v4Len := fmt.Sprintf("%d", len(v4))
- v4Cap := fmt.Sprintf("%d", cap(v4))
- nv4 := (*[34]byte)(nil)
- pv4 := &v4
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "[34]uint8"
- v4s := "(len=" + v4Len + " cap=" + v4Cap + ") " +
- "{\n 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20" +
- " |............... |\n" +
- " 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30" +
- " |!\"#$%&'()*+,-./0|\n" +
- " 00000020 31 32 " +
- " |12|\n}"
- addDumpTest(v4, "("+v4t+") "+v4s+"\n")
- addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n")
- addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n")
- addDumpTest(nv4, "(*"+v4t+")(<nil>)\n")
-}
-
-func addSliceDumpTests() {
- // Slice containing standard float32 values.
- v := []float32{3.14, 6.28, 12.56}
- vLen := fmt.Sprintf("%d", len(v))
- vCap := fmt.Sprintf("%d", cap(v))
- nv := (*[]float32)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "float32"
- vs := "(len=" + vLen + " cap=" + vCap + ") {\n (" + vt + ") 3.14,\n (" +
- vt + ") 6.28,\n (" + vt + ") 12.56\n}"
- addDumpTest(v, "([]"+vt+") "+vs+"\n")
- addDumpTest(pv, "(*[]"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**[]"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*[]"+vt+")(<nil>)\n")
-
- // Slice containing type with custom formatter on pointer receiver only.
- v2i0 := pstringer("1")
- v2i1 := pstringer("2")
- v2i2 := pstringer("3")
- v2 := []pstringer{v2i0, v2i1, v2i2}
- v2i0Len := fmt.Sprintf("%d", len(v2i0))
- v2i1Len := fmt.Sprintf("%d", len(v2i1))
- v2i2Len := fmt.Sprintf("%d", len(v2i2))
- v2Len := fmt.Sprintf("%d", len(v2))
- v2Cap := fmt.Sprintf("%d", cap(v2))
- nv2 := (*[]pstringer)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "spew_test.pstringer"
- v2s := "(len=" + v2Len + " cap=" + v2Cap + ") {\n (" + v2t + ") (len=" +
- v2i0Len + ") stringer 1,\n (" + v2t + ") (len=" + v2i1Len +
- ") stringer 2,\n (" + v2t + ") (len=" + v2i2Len + ") " +
- "stringer 3\n}"
- addDumpTest(v2, "([]"+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*[]"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**[]"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*[]"+v2t+")(<nil>)\n")
-
- // Slice containing interfaces.
- v3i0 := "one"
- v3 := []interface{}{v3i0, int(2), uint(3), nil}
- v3i0Len := fmt.Sprintf("%d", len(v3i0))
- v3Len := fmt.Sprintf("%d", len(v3))
- v3Cap := fmt.Sprintf("%d", cap(v3))
- nv3 := (*[]interface{})(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "[]interface {}"
- v3t2 := "string"
- v3t3 := "int"
- v3t4 := "uint"
- v3t5 := "interface {}"
- v3s := "(len=" + v3Len + " cap=" + v3Cap + ") {\n (" + v3t2 + ") " +
- "(len=" + v3i0Len + ") \"one\",\n (" + v3t3 + ") 2,\n (" +
- v3t4 + ") 3,\n (" + v3t5 + ") <nil>\n}"
- addDumpTest(v3, "("+v3t+") "+v3s+"\n")
- addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n")
- addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n")
- addDumpTest(nv3, "(*"+v3t+")(<nil>)\n")
-
- // Slice containing bytes.
- v4 := []byte{
- 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
- 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
- 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
- 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
- 0x31, 0x32,
- }
- v4Len := fmt.Sprintf("%d", len(v4))
- v4Cap := fmt.Sprintf("%d", cap(v4))
- nv4 := (*[]byte)(nil)
- pv4 := &v4
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "[]uint8"
- v4s := "(len=" + v4Len + " cap=" + v4Cap + ") " +
- "{\n 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20" +
- " |............... |\n" +
- " 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30" +
- " |!\"#$%&'()*+,-./0|\n" +
- " 00000020 31 32 " +
- " |12|\n}"
- addDumpTest(v4, "("+v4t+") "+v4s+"\n")
- addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n")
- addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n")
- addDumpTest(nv4, "(*"+v4t+")(<nil>)\n")
-
- // Nil slice.
- v5 := []int(nil)
- nv5 := (*[]int)(nil)
- pv5 := &v5
- v5Addr := fmt.Sprintf("%p", pv5)
- pv5Addr := fmt.Sprintf("%p", &pv5)
- v5t := "[]int"
- v5s := "<nil>"
- addDumpTest(v5, "("+v5t+") "+v5s+"\n")
- addDumpTest(pv5, "(*"+v5t+")("+v5Addr+")("+v5s+")\n")
- addDumpTest(&pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")("+v5s+")\n")
- addDumpTest(nv5, "(*"+v5t+")(<nil>)\n")
-}
-
-func addStringDumpTests() {
- // Standard string.
- v := "test"
- vLen := fmt.Sprintf("%d", len(v))
- nv := (*string)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "string"
- vs := "(len=" + vLen + ") \"test\""
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-}
-
-func addInterfaceDumpTests() {
- // Nil interface.
- var v interface{}
- nv := (*interface{})(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "interface {}"
- vs := "<nil>"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Sub-interface.
- v2 := interface{}(uint16(65535))
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "uint16"
- v2s := "65535"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
-}
-
-func addMapDumpTests() {
- // Map with string keys and int vals.
- k := "one"
- kk := "two"
- m := map[string]int{k: 1, kk: 2}
- klen := fmt.Sprintf("%d", len(k)) // not kLen to shut golint up
- kkLen := fmt.Sprintf("%d", len(kk))
- mLen := fmt.Sprintf("%d", len(m))
- nilMap := map[string]int(nil)
- nm := (*map[string]int)(nil)
- pm := &m
- mAddr := fmt.Sprintf("%p", pm)
- pmAddr := fmt.Sprintf("%p", &pm)
- mt := "map[string]int"
- mt1 := "string"
- mt2 := "int"
- ms := "(len=" + mLen + ") {\n (" + mt1 + ") (len=" + klen + ") " +
- "\"one\": (" + mt2 + ") 1,\n (" + mt1 + ") (len=" + kkLen +
- ") \"two\": (" + mt2 + ") 2\n}"
- ms2 := "(len=" + mLen + ") {\n (" + mt1 + ") (len=" + kkLen + ") " +
- "\"two\": (" + mt2 + ") 2,\n (" + mt1 + ") (len=" + klen +
- ") \"one\": (" + mt2 + ") 1\n}"
- addDumpTest(m, "("+mt+") "+ms+"\n", "("+mt+") "+ms2+"\n")
- addDumpTest(pm, "(*"+mt+")("+mAddr+")("+ms+")\n",
- "(*"+mt+")("+mAddr+")("+ms2+")\n")
- addDumpTest(&pm, "(**"+mt+")("+pmAddr+"->"+mAddr+")("+ms+")\n",
- "(**"+mt+")("+pmAddr+"->"+mAddr+")("+ms2+")\n")
- addDumpTest(nm, "(*"+mt+")(<nil>)\n")
- addDumpTest(nilMap, "("+mt+") <nil>\n")
-
- // Map with custom formatter type on pointer receiver only keys and vals.
- k2 := pstringer("one")
- v2 := pstringer("1")
- m2 := map[pstringer]pstringer{k2: v2}
- k2Len := fmt.Sprintf("%d", len(k2))
- v2Len := fmt.Sprintf("%d", len(v2))
- m2Len := fmt.Sprintf("%d", len(m2))
- nilMap2 := map[pstringer]pstringer(nil)
- nm2 := (*map[pstringer]pstringer)(nil)
- pm2 := &m2
- m2Addr := fmt.Sprintf("%p", pm2)
- pm2Addr := fmt.Sprintf("%p", &pm2)
- m2t := "map[spew_test.pstringer]spew_test.pstringer"
- m2t1 := "spew_test.pstringer"
- m2t2 := "spew_test.pstringer"
- m2s := "(len=" + m2Len + ") {\n (" + m2t1 + ") (len=" + k2Len + ") " +
- "stringer one: (" + m2t2 + ") (len=" + v2Len + ") stringer 1\n}"
- addDumpTest(m2, "("+m2t+") "+m2s+"\n")
- addDumpTest(pm2, "(*"+m2t+")("+m2Addr+")("+m2s+")\n")
- addDumpTest(&pm2, "(**"+m2t+")("+pm2Addr+"->"+m2Addr+")("+m2s+")\n")
- addDumpTest(nm2, "(*"+m2t+")(<nil>)\n")
- addDumpTest(nilMap2, "("+m2t+") <nil>\n")
-
- // Map with interface keys and values.
- k3 := "one"
- k3Len := fmt.Sprintf("%d", len(k3))
- m3 := map[interface{}]interface{}{k3: 1}
- m3Len := fmt.Sprintf("%d", len(m3))
- nilMap3 := map[interface{}]interface{}(nil)
- nm3 := (*map[interface{}]interface{})(nil)
- pm3 := &m3
- m3Addr := fmt.Sprintf("%p", pm3)
- pm3Addr := fmt.Sprintf("%p", &pm3)
- m3t := "map[interface {}]interface {}"
- m3t1 := "string"
- m3t2 := "int"
- m3s := "(len=" + m3Len + ") {\n (" + m3t1 + ") (len=" + k3Len + ") " +
- "\"one\": (" + m3t2 + ") 1\n}"
- addDumpTest(m3, "("+m3t+") "+m3s+"\n")
- addDumpTest(pm3, "(*"+m3t+")("+m3Addr+")("+m3s+")\n")
- addDumpTest(&pm3, "(**"+m3t+")("+pm3Addr+"->"+m3Addr+")("+m3s+")\n")
- addDumpTest(nm3, "(*"+m3t+")(<nil>)\n")
- addDumpTest(nilMap3, "("+m3t+") <nil>\n")
-
- // Map with nil interface value.
- k4 := "nil"
- k4Len := fmt.Sprintf("%d", len(k4))
- m4 := map[string]interface{}{k4: nil}
- m4Len := fmt.Sprintf("%d", len(m4))
- nilMap4 := map[string]interface{}(nil)
- nm4 := (*map[string]interface{})(nil)
- pm4 := &m4
- m4Addr := fmt.Sprintf("%p", pm4)
- pm4Addr := fmt.Sprintf("%p", &pm4)
- m4t := "map[string]interface {}"
- m4t1 := "string"
- m4t2 := "interface {}"
- m4s := "(len=" + m4Len + ") {\n (" + m4t1 + ") (len=" + k4Len + ")" +
- " \"nil\": (" + m4t2 + ") <nil>\n}"
- addDumpTest(m4, "("+m4t+") "+m4s+"\n")
- addDumpTest(pm4, "(*"+m4t+")("+m4Addr+")("+m4s+")\n")
- addDumpTest(&pm4, "(**"+m4t+")("+pm4Addr+"->"+m4Addr+")("+m4s+")\n")
- addDumpTest(nm4, "(*"+m4t+")(<nil>)\n")
- addDumpTest(nilMap4, "("+m4t+") <nil>\n")
-}
-
-func addStructDumpTests() {
- // Struct with primitives.
- type s1 struct {
- a int8
- b uint8
- }
- v := s1{127, 255}
- nv := (*s1)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "spew_test.s1"
- vt2 := "int8"
- vt3 := "uint8"
- vs := "{\n a: (" + vt2 + ") 127,\n b: (" + vt3 + ") 255\n}"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Struct that contains another struct.
- type s2 struct {
- s1 s1
- b bool
- }
- v2 := s2{s1{127, 255}, true}
- nv2 := (*s2)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "spew_test.s2"
- v2t2 := "spew_test.s1"
- v2t3 := "int8"
- v2t4 := "uint8"
- v2t5 := "bool"
- v2s := "{\n s1: (" + v2t2 + ") {\n a: (" + v2t3 + ") 127,\n b: (" +
- v2t4 + ") 255\n },\n b: (" + v2t5 + ") true\n}"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*"+v2t+")(<nil>)\n")
-
- // Struct that contains custom type with Stringer pointer interface via both
- // exported and unexported fields.
- type s3 struct {
- s pstringer
- S pstringer
- }
- v3 := s3{"test", "test2"}
- nv3 := (*s3)(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "spew_test.s3"
- v3t2 := "spew_test.pstringer"
- v3s := "{\n s: (" + v3t2 + ") (len=4) stringer test,\n S: (" + v3t2 +
- ") (len=5) stringer test2\n}"
- addDumpTest(v3, "("+v3t+") "+v3s+"\n")
- addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n")
- addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n")
- addDumpTest(nv3, "(*"+v3t+")(<nil>)\n")
-
- // Struct that contains embedded struct and field to same struct.
- e := embed{"embedstr"}
- eLen := fmt.Sprintf("%d", len("embedstr"))
- v4 := embedwrap{embed: &e, e: &e}
- nv4 := (*embedwrap)(nil)
- pv4 := &v4
- eAddr := fmt.Sprintf("%p", &e)
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "spew_test.embedwrap"
- v4t2 := "spew_test.embed"
- v4t3 := "string"
- v4s := "{\n embed: (*" + v4t2 + ")(" + eAddr + ")({\n a: (" + v4t3 +
- ") (len=" + eLen + ") \"embedstr\"\n }),\n e: (*" + v4t2 +
- ")(" + eAddr + ")({\n a: (" + v4t3 + ") (len=" + eLen + ")" +
- " \"embedstr\"\n })\n}"
- addDumpTest(v4, "("+v4t+") "+v4s+"\n")
- addDumpTest(pv4, "(*"+v4t+")("+v4Addr+")("+v4s+")\n")
- addDumpTest(&pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")("+v4s+")\n")
- addDumpTest(nv4, "(*"+v4t+")(<nil>)\n")
-}
-
-func addUintptrDumpTests() {
- // Null pointer.
- v := uintptr(0)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "uintptr"
- vs := "<nil>"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
-
- // Address of real variable.
- i := 1
- v2 := uintptr(unsafe.Pointer(&i))
- nv2 := (*uintptr)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "uintptr"
- v2s := fmt.Sprintf("%p", &i)
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*"+v2t+")(<nil>)\n")
-}
-
-func addUnsafePointerDumpTests() {
- // Null pointer.
- v := unsafe.Pointer(uintptr(0))
- nv := (*unsafe.Pointer)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "unsafe.Pointer"
- vs := "<nil>"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Address of real variable.
- i := 1
- v2 := unsafe.Pointer(&i)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "unsafe.Pointer"
- v2s := fmt.Sprintf("%p", &i)
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-}
-
-func addChanDumpTests() {
- // Nil channel.
- var v chan int
- pv := &v
- nv := (*chan int)(nil)
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "chan int"
- vs := "<nil>"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Real channel.
- v2 := make(chan int)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "chan int"
- v2s := fmt.Sprintf("%p", v2)
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
-}
-
-func addFuncDumpTests() {
- // Function with no params and no returns.
- v := addIntDumpTests
- nv := (*func())(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "func()"
- vs := fmt.Sprintf("%p", v)
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-
- // Function with param and no returns.
- v2 := TestDump
- nv2 := (*func(*testing.T))(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "func(*testing.T)"
- v2s := fmt.Sprintf("%p", v2)
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s+")\n")
- addDumpTest(nv2, "(*"+v2t+")(<nil>)\n")
-
- // Function with multiple params and multiple returns.
- var v3 = func(i int, s string) (b bool, err error) {
- return true, nil
- }
- nv3 := (*func(int, string) (bool, error))(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "func(int, string) (bool, error)"
- v3s := fmt.Sprintf("%p", v3)
- addDumpTest(v3, "("+v3t+") "+v3s+"\n")
- addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s+")\n")
- addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s+")\n")
- addDumpTest(nv3, "(*"+v3t+")(<nil>)\n")
-}
-
-func addCircularDumpTests() {
- // Struct that is circular through self referencing.
- type circular struct {
- c *circular
- }
- v := circular{nil}
- v.c = &v
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "spew_test.circular"
- vs := "{\n c: (*" + vt + ")(" + vAddr + ")({\n c: (*" + vt + ")(" +
- vAddr + ")(<already shown>)\n })\n}"
- vs2 := "{\n c: (*" + vt + ")(" + vAddr + ")(<already shown>)\n}"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs2+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs2+")\n")
-
- // Structs that are circular through cross referencing.
- v2 := xref1{nil}
- ts2 := xref2{&v2}
- v2.ps2 = &ts2
- pv2 := &v2
- ts2Addr := fmt.Sprintf("%p", &ts2)
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "spew_test.xref1"
- v2t2 := "spew_test.xref2"
- v2s := "{\n ps2: (*" + v2t2 + ")(" + ts2Addr + ")({\n ps1: (*" + v2t +
- ")(" + v2Addr + ")({\n ps2: (*" + v2t2 + ")(" + ts2Addr +
- ")(<already shown>)\n })\n })\n}"
- v2s2 := "{\n ps2: (*" + v2t2 + ")(" + ts2Addr + ")({\n ps1: (*" + v2t +
- ")(" + v2Addr + ")(<already shown>)\n })\n}"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
- addDumpTest(pv2, "(*"+v2t+")("+v2Addr+")("+v2s2+")\n")
- addDumpTest(&pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")("+v2s2+")\n")
-
- // Structs that are indirectly circular.
- v3 := indirCir1{nil}
- tic2 := indirCir2{nil}
- tic3 := indirCir3{&v3}
- tic2.ps3 = &tic3
- v3.ps2 = &tic2
- pv3 := &v3
- tic2Addr := fmt.Sprintf("%p", &tic2)
- tic3Addr := fmt.Sprintf("%p", &tic3)
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "spew_test.indirCir1"
- v3t2 := "spew_test.indirCir2"
- v3t3 := "spew_test.indirCir3"
- v3s := "{\n ps2: (*" + v3t2 + ")(" + tic2Addr + ")({\n ps3: (*" + v3t3 +
- ")(" + tic3Addr + ")({\n ps1: (*" + v3t + ")(" + v3Addr +
- ")({\n ps2: (*" + v3t2 + ")(" + tic2Addr +
- ")(<already shown>)\n })\n })\n })\n}"
- v3s2 := "{\n ps2: (*" + v3t2 + ")(" + tic2Addr + ")({\n ps3: (*" + v3t3 +
- ")(" + tic3Addr + ")({\n ps1: (*" + v3t + ")(" + v3Addr +
- ")(<already shown>)\n })\n })\n}"
- addDumpTest(v3, "("+v3t+") "+v3s+"\n")
- addDumpTest(pv3, "(*"+v3t+")("+v3Addr+")("+v3s2+")\n")
- addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s2+")\n")
-}
-
-func addPanicDumpTests() {
- // Type that panics in its Stringer interface.
- v := panicer(127)
- nv := (*panicer)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "spew_test.panicer"
- vs := "(PANIC=test panic)127"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-}
-
-func addErrorDumpTests() {
- // Type that has a custom Error interface.
- v := customError(127)
- nv := (*customError)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "spew_test.customError"
- vs := "error: 127"
- addDumpTest(v, "("+vt+") "+vs+"\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
- addDumpTest(nv, "(*"+vt+")(<nil>)\n")
-}
-
-// TestDump executes all of the tests described by dumpTests.
-func TestDump(t *testing.T) {
- // Setup tests.
- addIntDumpTests()
- addUintDumpTests()
- addBoolDumpTests()
- addFloatDumpTests()
- addComplexDumpTests()
- addArrayDumpTests()
- addSliceDumpTests()
- addStringDumpTests()
- addInterfaceDumpTests()
- addMapDumpTests()
- addStructDumpTests()
- addUintptrDumpTests()
- addUnsafePointerDumpTests()
- addChanDumpTests()
- addFuncDumpTests()
- addCircularDumpTests()
- addPanicDumpTests()
- addErrorDumpTests()
- addCgoDumpTests()
-
- t.Logf("Running %d tests", len(dumpTests))
- for i, test := range dumpTests {
- buf := new(bytes.Buffer)
- spew.Fdump(buf, test.in)
- s := buf.String()
- if testFailed(s, test.wants) {
- t.Errorf("Dump #%d\n got: %s %s", i, s, stringizeWants(test.wants))
- continue
- }
- }
-}
-
-func TestDumpSortedKeys(t *testing.T) {
- cfg := spew.ConfigState{SortKeys: true}
- s := cfg.Sdump(map[int]string{1: "1", 3: "3", 2: "2"})
- expected := `(map[int]string) (len=3) {
-(int) 1: (string) (len=1) "1",
-(int) 2: (string) (len=1) "2",
-(int) 3: (string) (len=1) "3"
-}
-`
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
- s = cfg.Sdump(map[stringer]int{"1": 1, "3": 3, "2": 2})
- expected = `(map[spew_test.stringer]int) (len=3) {
-(spew_test.stringer) (len=1) stringer 1: (int) 1,
-(spew_test.stringer) (len=1) stringer 2: (int) 2,
-(spew_test.stringer) (len=1) stringer 3: (int) 3
-}
-`
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
- s = cfg.Sdump(map[pstringer]int{pstringer("1"): 1, pstringer("3"): 3, pstringer("2"): 2})
- expected = `(map[spew_test.pstringer]int) (len=3) {
-(spew_test.pstringer) (len=1) stringer 1: (int) 1,
-(spew_test.pstringer) (len=1) stringer 2: (int) 2,
-(spew_test.pstringer) (len=1) stringer 3: (int) 3
-}
-`
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
- s = cfg.Sdump(map[customError]int{customError(1): 1, customError(3): 3, customError(2): 2})
- expected = `(map[spew_test.customError]int) (len=3) {
-(spew_test.customError) error: 1: (int) 1,
-(spew_test.customError) error: 2: (int) 2,
-(spew_test.customError) error: 3: (int) 3
-}
-`
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
-}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dumpcgo_test.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dumpcgo_test.go
deleted file mode 100644
index 9b8a358ec..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dumpcgo_test.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2013 Dave Collins <dave@davec.name>
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-// NOTE: Due to the following build constraints, this file will only be compiled
-// when both cgo is supported and "-tags testcgo" is added to the go test
-// command line. This means the cgo tests are only added (and hence run) when
-// specifially requested. This configuration is used because spew itself
-// does not require cgo to run even though it does handle certain cgo types
-// specially. Rather than forcing all clients to require cgo and an external
-// C compiler just to run the tests, this scheme makes them optional.
-// +build cgo,testcgo
-
-package spew_test
-
-import (
- "fmt"
- "github.com/davecgh/go-spew/spew/testdata"
-)
-
-func addCgoDumpTests() {
- // C char pointer.
- v := testdata.GetCgoCharPointer()
- nv := testdata.GetCgoNullCharPointer()
- pv := &v
- vcAddr := fmt.Sprintf("%p", v)
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "*testdata._Ctype_char"
- vs := "116"
- addDumpTest(v, "("+vt+")("+vcAddr+")("+vs+")\n")
- addDumpTest(pv, "(*"+vt+")("+vAddr+"->"+vcAddr+")("+vs+")\n")
- addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+"->"+vcAddr+")("+vs+")\n")
- addDumpTest(nv, "("+vt+")(<nil>)\n")
-
- // C char array.
- v2, v2l, v2c := testdata.GetCgoCharArray()
- v2Len := fmt.Sprintf("%d", v2l)
- v2Cap := fmt.Sprintf("%d", v2c)
- v2t := "[6]testdata._Ctype_char"
- v2s := "(len=" + v2Len + " cap=" + v2Cap + ") " +
- "{\n 00000000 74 65 73 74 32 00 " +
- " |test2.|\n}"
- addDumpTest(v2, "("+v2t+") "+v2s+"\n")
-
- // C unsigned char array.
- v3, v3l, v3c := testdata.GetCgoUnsignedCharArray()
- v3Len := fmt.Sprintf("%d", v3l)
- v3Cap := fmt.Sprintf("%d", v3c)
- v3t := "[6]testdata._Ctype_unsignedchar"
- v3s := "(len=" + v3Len + " cap=" + v3Cap + ") " +
- "{\n 00000000 74 65 73 74 33 00 " +
- " |test3.|\n}"
- addDumpTest(v3, "("+v3t+") "+v3s+"\n")
-
- // C signed char array.
- v4, v4l, v4c := testdata.GetCgoSignedCharArray()
- v4Len := fmt.Sprintf("%d", v4l)
- v4Cap := fmt.Sprintf("%d", v4c)
- v4t := "[6]testdata._Ctype_schar"
- v4t2 := "testdata._Ctype_schar"
- v4s := "(len=" + v4Len + " cap=" + v4Cap + ") " +
- "{\n (" + v4t2 + ") 116,\n (" + v4t2 + ") 101,\n (" + v4t2 +
- ") 115,\n (" + v4t2 + ") 116,\n (" + v4t2 + ") 52,\n (" + v4t2 +
- ") 0\n}"
- addDumpTest(v4, "("+v4t+") "+v4s+"\n")
-
- // C uint8_t array.
- v5, v5l, v5c := testdata.GetCgoUint8tArray()
- v5Len := fmt.Sprintf("%d", v5l)
- v5Cap := fmt.Sprintf("%d", v5c)
- v5t := "[6]testdata._Ctype_uint8_t"
- v5s := "(len=" + v5Len + " cap=" + v5Cap + ") " +
- "{\n 00000000 74 65 73 74 35 00 " +
- " |test5.|\n}"
- addDumpTest(v5, "("+v5t+") "+v5s+"\n")
-
- // C typedefed unsigned char array.
- v6, v6l, v6c := testdata.GetCgoTypdefedUnsignedCharArray()
- v6Len := fmt.Sprintf("%d", v6l)
- v6Cap := fmt.Sprintf("%d", v6c)
- v6t := "[6]testdata._Ctype_custom_uchar_t"
- v6s := "(len=" + v6Len + " cap=" + v6Cap + ") " +
- "{\n 00000000 74 65 73 74 36 00 " +
- " |test6.|\n}"
- addDumpTest(v6, "("+v6t+") "+v6s+"\n")
-}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dumpnocgo_test.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dumpnocgo_test.go
deleted file mode 100644
index 52a0971fb..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/dumpnocgo_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013 Dave Collins <dave@davec.name>
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-// NOTE: Due to the following build constraints, this file will only be compiled
-// when either cgo is not supported or "-tags testcgo" is not added to the go
-// test command line. This file intentionally does not setup any cgo tests in
-// this scenario.
-// +build !cgo !testcgo
-
-package spew_test
-
-func addCgoDumpTests() {
- // Don't add any tests for cgo since this file is only compiled when
- // there should not be any cgo tests.
-}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/example_test.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/example_test.go
deleted file mode 100644
index a7acd1412..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/example_test.go
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (c) 2013 Dave Collins <dave@davec.name>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-package spew_test
-
-import (
- "fmt"
- "github.com/davecgh/go-spew/spew"
-)
-
-type Flag int
-
-const (
- flagOne Flag = iota
- flagTwo
-)
-
-var flagStrings = map[Flag]string{
- flagOne: "flagOne",
- flagTwo: "flagTwo",
-}
-
-func (f Flag) String() string {
- if s, ok := flagStrings[f]; ok {
- return s
- }
- return fmt.Sprintf("Unknown flag (%d)", int(f))
-}
-
-type Bar struct {
- flag Flag
- data uintptr
-}
-
-type Foo struct {
- unexportedField Bar
- ExportedField map[interface{}]interface{}
-}
-
-// This example demonstrates how to use Dump to dump variables to stdout.
-func ExampleDump() {
- // The following package level declarations are assumed for this example:
- /*
- type Flag int
-
- const (
- flagOne Flag = iota
- flagTwo
- )
-
- var flagStrings = map[Flag]string{
- flagOne: "flagOne",
- flagTwo: "flagTwo",
- }
-
- func (f Flag) String() string {
- if s, ok := flagStrings[f]; ok {
- return s
- }
- return fmt.Sprintf("Unknown flag (%d)", int(f))
- }
-
- type Bar struct {
- flag Flag
- data uintptr
- }
-
- type Foo struct {
- unexportedField Bar
- ExportedField map[interface{}]interface{}
- }
- */
-
- // Setup some sample data structures for the example.
- bar := Bar{Flag(flagTwo), uintptr(0)}
- s1 := Foo{bar, map[interface{}]interface{}{"one": true}}
- f := Flag(5)
- b := []byte{
- 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
- 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
- 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
- 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
- 0x31, 0x32,
- }
-
- // Dump!
- spew.Dump(s1, f, b)
-
- // Output:
- // (spew_test.Foo) {
- // unexportedField: (spew_test.Bar) {
- // flag: (spew_test.Flag) flagTwo,
- // data: (uintptr) <nil>
- // },
- // ExportedField: (map[interface {}]interface {}) (len=1) {
- // (string) (len=3) "one": (bool) true
- // }
- // }
- // (spew_test.Flag) Unknown flag (5)
- // ([]uint8) (len=34 cap=34) {
- // 00000000 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 |............... |
- // 00000010 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 |!"#$%&'()*+,-./0|
- // 00000020 31 32 |12|
- // }
- //
-}
-
-// This example demonstrates how to use Printf to display a variable with a
-// format string and inline formatting.
-func ExamplePrintf() {
- // Create a double pointer to a uint 8.
- ui8 := uint8(5)
- pui8 := &ui8
- ppui8 := &pui8
-
- // Create a circular data type.
- type circular struct {
- ui8 uint8
- c *circular
- }
- c := circular{ui8: 1}
- c.c = &c
-
- // Print!
- spew.Printf("ppui8: %v\n", ppui8)
- spew.Printf("circular: %v\n", c)
-
- // Output:
- // ppui8: <**>5
- // circular: {1 <*>{1 <*><shown>}}
-}
-
-// This example demonstrates how to use a ConfigState.
-func ExampleConfigState() {
- // Modify the indent level of the ConfigState only. The global
- // configuration is not modified.
- scs := spew.ConfigState{Indent: "\t"}
-
- // Output using the ConfigState instance.
- v := map[string]int{"one": 1}
- scs.Printf("v: %v\n", v)
- scs.Dump(v)
-
- // Output:
- // v: map[one:1]
- // (map[string]int) (len=1) {
- // (string) (len=3) "one": (int) 1
- // }
-}
-
-// This example demonstrates how to use ConfigState.Dump to dump variables to
-// stdout
-func ExampleConfigState_Dump() {
- // See the top-level Dump example for details on the types used in this
- // example.
-
- // Create two ConfigState instances with different indentation.
- scs := spew.ConfigState{Indent: "\t"}
- scs2 := spew.ConfigState{Indent: " "}
-
- // Setup some sample data structures for the example.
- bar := Bar{Flag(flagTwo), uintptr(0)}
- s1 := Foo{bar, map[interface{}]interface{}{"one": true}}
-
- // Dump using the ConfigState instances.
- scs.Dump(s1)
- scs2.Dump(s1)
-
- // Output:
- // (spew_test.Foo) {
- // unexportedField: (spew_test.Bar) {
- // flag: (spew_test.Flag) flagTwo,
- // data: (uintptr) <nil>
- // },
- // ExportedField: (map[interface {}]interface {}) (len=1) {
- // (string) (len=3) "one": (bool) true
- // }
- // }
- // (spew_test.Foo) {
- // unexportedField: (spew_test.Bar) {
- // flag: (spew_test.Flag) flagTwo,
- // data: (uintptr) <nil>
- // },
- // ExportedField: (map[interface {}]interface {}) (len=1) {
- // (string) (len=3) "one": (bool) true
- // }
- // }
- //
-}
-
-// This example demonstrates how to use ConfigState.Printf to display a variable
-// with a format string and inline formatting.
-func ExampleConfigState_Printf() {
- // See the top-level Dump example for details on the types used in this
- // example.
-
- // Create two ConfigState instances and modify the method handling of the
- // first ConfigState only.
- scs := spew.NewDefaultConfig()
- scs2 := spew.NewDefaultConfig()
- scs.DisableMethods = true
-
- // Alternatively
- // scs := spew.ConfigState{Indent: " ", DisableMethods: true}
- // scs2 := spew.ConfigState{Indent: " "}
-
- // This is of type Flag which implements a Stringer and has raw value 1.
- f := flagTwo
-
- // Dump using the ConfigState instances.
- scs.Printf("f: %v\n", f)
- scs2.Printf("f: %v\n", f)
-
- // Output:
- // f: 1
- // f: flagTwo
-}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/format_test.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/format_test.go
deleted file mode 100644
index b0f9761a4..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/format_test.go
+++ /dev/null
@@ -1,1535 +0,0 @@
-/*
- * Copyright (c) 2013 Dave Collins <dave@davec.name>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
-Test Summary:
-NOTE: For each test, a nil pointer, a single pointer and double pointer to the
-base test element are also tested to ensure proper indirection across all types.
-
-- Max int8, int16, int32, int64, int
-- Max uint8, uint16, uint32, uint64, uint
-- Boolean true and false
-- Standard complex64 and complex128
-- Array containing standard ints
-- Array containing type with custom formatter on pointer receiver only
-- Array containing interfaces
-- Slice containing standard float32 values
-- Slice containing type with custom formatter on pointer receiver only
-- Slice containing interfaces
-- Nil slice
-- Standard string
-- Nil interface
-- Sub-interface
-- Map with string keys and int vals
-- Map with custom formatter type on pointer receiver only keys and vals
-- Map with interface keys and values
-- Map with nil interface value
-- Struct with primitives
-- Struct that contains another struct
-- Struct that contains custom type with Stringer pointer interface via both
- exported and unexported fields
-- Struct that contains embedded struct and field to same struct
-- Uintptr to 0 (null pointer)
-- Uintptr address of real variable
-- Unsafe.Pointer to 0 (null pointer)
-- Unsafe.Pointer to address of real variable
-- Nil channel
-- Standard int channel
-- Function with no params and no returns
-- Function with param and no returns
-- Function with multiple params and multiple returns
-- Struct that is circular through self referencing
-- Structs that are circular through cross referencing
-- Structs that are indirectly circular
-- Type that panics in its Stringer interface
-- Type that has a custom Error interface
-- %x passthrough with uint
-- %#x passthrough with uint
-- %f passthrough with precision
-- %f passthrough with width and precision
-- %d passthrough with width
-- %q passthrough with string
-*/
-
-package spew_test
-
-import (
- "bytes"
- "fmt"
- "testing"
- "unsafe"
-
- "github.com/davecgh/go-spew/spew"
-)
-
-// formatterTest is used to describe a test to be perfomed against NewFormatter.
-type formatterTest struct {
- format string
- in interface{}
- wants []string
-}
-
-// formatterTests houses all of the tests to be performed against NewFormatter.
-var formatterTests = make([]formatterTest, 0)
-
-// addFormatterTest is a helper method to append the passed input and desired
-// result to formatterTests.
-func addFormatterTest(format string, in interface{}, wants ...string) {
- test := formatterTest{format, in, wants}
- formatterTests = append(formatterTests, test)
-}
-
-func addIntFormatterTests() {
- // Max int8.
- v := int8(127)
- nv := (*int8)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "int8"
- vs := "127"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Max int16.
- v2 := int16(32767)
- nv2 := (*int16)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "int16"
- v2s := "32767"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-
- // Max int32.
- v3 := int32(2147483647)
- nv3 := (*int32)(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "int32"
- v3s := "2147483647"
- addFormatterTest("%v", v3, v3s)
- addFormatterTest("%v", pv3, "<*>"+v3s)
- addFormatterTest("%v", &pv3, "<**>"+v3s)
- addFormatterTest("%v", nv3, "<nil>")
- addFormatterTest("%+v", v3, v3s)
- addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s)
- addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%#v", v3, "("+v3t+")"+v3s)
- addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s)
- addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
- addFormatterTest("%#+v", v3, "("+v3t+")"+v3s)
- addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s)
- addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
-
- // Max int64.
- v4 := int64(9223372036854775807)
- nv4 := (*int64)(nil)
- pv4 := &v4
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "int64"
- v4s := "9223372036854775807"
- addFormatterTest("%v", v4, v4s)
- addFormatterTest("%v", pv4, "<*>"+v4s)
- addFormatterTest("%v", &pv4, "<**>"+v4s)
- addFormatterTest("%v", nv4, "<nil>")
- addFormatterTest("%+v", v4, v4s)
- addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s)
- addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s)
- addFormatterTest("%+v", nv4, "<nil>")
- addFormatterTest("%#v", v4, "("+v4t+")"+v4s)
- addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s)
- addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s)
- addFormatterTest("%#v", nv4, "(*"+v4t+")"+"<nil>")
- addFormatterTest("%#+v", v4, "("+v4t+")"+v4s)
- addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s)
- addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s)
- addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"<nil>")
-
- // Max int.
- v5 := int(2147483647)
- nv5 := (*int)(nil)
- pv5 := &v5
- v5Addr := fmt.Sprintf("%p", pv5)
- pv5Addr := fmt.Sprintf("%p", &pv5)
- v5t := "int"
- v5s := "2147483647"
- addFormatterTest("%v", v5, v5s)
- addFormatterTest("%v", pv5, "<*>"+v5s)
- addFormatterTest("%v", &pv5, "<**>"+v5s)
- addFormatterTest("%v", nv5, "<nil>")
- addFormatterTest("%+v", v5, v5s)
- addFormatterTest("%+v", pv5, "<*>("+v5Addr+")"+v5s)
- addFormatterTest("%+v", &pv5, "<**>("+pv5Addr+"->"+v5Addr+")"+v5s)
- addFormatterTest("%+v", nv5, "<nil>")
- addFormatterTest("%#v", v5, "("+v5t+")"+v5s)
- addFormatterTest("%#v", pv5, "(*"+v5t+")"+v5s)
- addFormatterTest("%#v", &pv5, "(**"+v5t+")"+v5s)
- addFormatterTest("%#v", nv5, "(*"+v5t+")"+"<nil>")
- addFormatterTest("%#+v", v5, "("+v5t+")"+v5s)
- addFormatterTest("%#+v", pv5, "(*"+v5t+")("+v5Addr+")"+v5s)
- addFormatterTest("%#+v", &pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")"+v5s)
- addFormatterTest("%#+v", nv5, "(*"+v5t+")"+"<nil>")
-}
-
-func addUintFormatterTests() {
- // Max uint8.
- v := uint8(255)
- nv := (*uint8)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "uint8"
- vs := "255"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Max uint16.
- v2 := uint16(65535)
- nv2 := (*uint16)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "uint16"
- v2s := "65535"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-
- // Max uint32.
- v3 := uint32(4294967295)
- nv3 := (*uint32)(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "uint32"
- v3s := "4294967295"
- addFormatterTest("%v", v3, v3s)
- addFormatterTest("%v", pv3, "<*>"+v3s)
- addFormatterTest("%v", &pv3, "<**>"+v3s)
- addFormatterTest("%v", nv3, "<nil>")
- addFormatterTest("%+v", v3, v3s)
- addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s)
- addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%#v", v3, "("+v3t+")"+v3s)
- addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s)
- addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
- addFormatterTest("%#+v", v3, "("+v3t+")"+v3s)
- addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s)
- addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
-
- // Max uint64.
- v4 := uint64(18446744073709551615)
- nv4 := (*uint64)(nil)
- pv4 := &v4
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "uint64"
- v4s := "18446744073709551615"
- addFormatterTest("%v", v4, v4s)
- addFormatterTest("%v", pv4, "<*>"+v4s)
- addFormatterTest("%v", &pv4, "<**>"+v4s)
- addFormatterTest("%v", nv4, "<nil>")
- addFormatterTest("%+v", v4, v4s)
- addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s)
- addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s)
- addFormatterTest("%+v", nv4, "<nil>")
- addFormatterTest("%#v", v4, "("+v4t+")"+v4s)
- addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s)
- addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s)
- addFormatterTest("%#v", nv4, "(*"+v4t+")"+"<nil>")
- addFormatterTest("%#+v", v4, "("+v4t+")"+v4s)
- addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s)
- addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s)
- addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"<nil>")
-
- // Max uint.
- v5 := uint(4294967295)
- nv5 := (*uint)(nil)
- pv5 := &v5
- v5Addr := fmt.Sprintf("%p", pv5)
- pv5Addr := fmt.Sprintf("%p", &pv5)
- v5t := "uint"
- v5s := "4294967295"
- addFormatterTest("%v", v5, v5s)
- addFormatterTest("%v", pv5, "<*>"+v5s)
- addFormatterTest("%v", &pv5, "<**>"+v5s)
- addFormatterTest("%v", nv5, "<nil>")
- addFormatterTest("%+v", v5, v5s)
- addFormatterTest("%+v", pv5, "<*>("+v5Addr+")"+v5s)
- addFormatterTest("%+v", &pv5, "<**>("+pv5Addr+"->"+v5Addr+")"+v5s)
- addFormatterTest("%+v", nv5, "<nil>")
- addFormatterTest("%#v", v5, "("+v5t+")"+v5s)
- addFormatterTest("%#v", pv5, "(*"+v5t+")"+v5s)
- addFormatterTest("%#v", &pv5, "(**"+v5t+")"+v5s)
- addFormatterTest("%#v", nv5, "(*"+v5t+")"+"<nil>")
- addFormatterTest("%#+v", v5, "("+v5t+")"+v5s)
- addFormatterTest("%#+v", pv5, "(*"+v5t+")("+v5Addr+")"+v5s)
- addFormatterTest("%#+v", &pv5, "(**"+v5t+")("+pv5Addr+"->"+v5Addr+")"+v5s)
- addFormatterTest("%#v", nv5, "(*"+v5t+")"+"<nil>")
-}
-
-func addBoolFormatterTests() {
- // Boolean true.
- v := bool(true)
- nv := (*bool)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "bool"
- vs := "true"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Boolean false.
- v2 := bool(false)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "bool"
- v2s := "false"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
-}
-
-func addFloatFormatterTests() {
- // Standard float32.
- v := float32(3.1415)
- nv := (*float32)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "float32"
- vs := "3.1415"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Standard float64.
- v2 := float64(3.1415926)
- nv2 := (*float64)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "float64"
- v2s := "3.1415926"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-}
-
-func addComplexFormatterTests() {
- // Standard complex64.
- v := complex(float32(6), -2)
- nv := (*complex64)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "complex64"
- vs := "(6-2i)"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Standard complex128.
- v2 := complex(float64(-6), 2)
- nv2 := (*complex128)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "complex128"
- v2s := "(-6+2i)"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-}
-
-func addArrayFormatterTests() {
- // Array containing standard ints.
- v := [3]int{1, 2, 3}
- nv := (*[3]int)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "[3]int"
- vs := "[1 2 3]"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Array containing type with custom formatter on pointer receiver only.
- v2 := [3]pstringer{"1", "2", "3"}
- nv2 := (*[3]pstringer)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "[3]spew_test.pstringer"
- v2s := "[stringer 1 stringer 2 stringer 3]"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-
- // Array containing interfaces.
- v3 := [3]interface{}{"one", int(2), uint(3)}
- nv3 := (*[3]interface{})(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "[3]interface {}"
- v3t2 := "string"
- v3t3 := "int"
- v3t4 := "uint"
- v3s := "[one 2 3]"
- v3s2 := "[(" + v3t2 + ")one (" + v3t3 + ")2 (" + v3t4 + ")3]"
- addFormatterTest("%v", v3, v3s)
- addFormatterTest("%v", pv3, "<*>"+v3s)
- addFormatterTest("%v", &pv3, "<**>"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%+v", v3, v3s)
- addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s)
- addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%#v", v3, "("+v3t+")"+v3s2)
- addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s2)
- addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s2)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
- addFormatterTest("%#+v", v3, "("+v3t+")"+v3s2)
- addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s2)
- addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s2)
- addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"<nil>")
-}
-
-func addSliceFormatterTests() {
- // Slice containing standard float32 values.
- v := []float32{3.14, 6.28, 12.56}
- nv := (*[]float32)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "[]float32"
- vs := "[3.14 6.28 12.56]"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Slice containing type with custom formatter on pointer receiver only.
- v2 := []pstringer{"1", "2", "3"}
- nv2 := (*[]pstringer)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "[]spew_test.pstringer"
- v2s := "[stringer 1 stringer 2 stringer 3]"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-
- // Slice containing interfaces.
- v3 := []interface{}{"one", int(2), uint(3), nil}
- nv3 := (*[]interface{})(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "[]interface {}"
- v3t2 := "string"
- v3t3 := "int"
- v3t4 := "uint"
- v3t5 := "interface {}"
- v3s := "[one 2 3 <nil>]"
- v3s2 := "[(" + v3t2 + ")one (" + v3t3 + ")2 (" + v3t4 + ")3 (" + v3t5 +
- ")<nil>]"
- addFormatterTest("%v", v3, v3s)
- addFormatterTest("%v", pv3, "<*>"+v3s)
- addFormatterTest("%v", &pv3, "<**>"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%+v", v3, v3s)
- addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s)
- addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%#v", v3, "("+v3t+")"+v3s2)
- addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s2)
- addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s2)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
- addFormatterTest("%#+v", v3, "("+v3t+")"+v3s2)
- addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s2)
- addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s2)
- addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"<nil>")
-
- // Nil slice.
- var v4 []int
- nv4 := (*[]int)(nil)
- pv4 := &v4
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "[]int"
- v4s := "<nil>"
- addFormatterTest("%v", v4, v4s)
- addFormatterTest("%v", pv4, "<*>"+v4s)
- addFormatterTest("%v", &pv4, "<**>"+v4s)
- addFormatterTest("%+v", nv4, "<nil>")
- addFormatterTest("%+v", v4, v4s)
- addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s)
- addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s)
- addFormatterTest("%+v", nv4, "<nil>")
- addFormatterTest("%#v", v4, "("+v4t+")"+v4s)
- addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s)
- addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s)
- addFormatterTest("%#v", nv4, "(*"+v4t+")"+"<nil>")
- addFormatterTest("%#+v", v4, "("+v4t+")"+v4s)
- addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s)
- addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s)
- addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"<nil>")
-}
-
-func addStringFormatterTests() {
- // Standard string.
- v := "test"
- nv := (*string)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "string"
- vs := "test"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-}
-
-func addInterfaceFormatterTests() {
- // Nil interface.
- var v interface{}
- nv := (*interface{})(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "interface {}"
- vs := "<nil>"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Sub-interface.
- v2 := interface{}(uint16(65535))
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "uint16"
- v2s := "65535"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
-}
-
-func addMapFormatterTests() {
- // Map with string keys and int vals.
- v := map[string]int{"one": 1, "two": 2}
- nilMap := map[string]int(nil)
- nv := (*map[string]int)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "map[string]int"
- vs := "map[one:1 two:2]"
- vs2 := "map[two:2 one:1]"
- addFormatterTest("%v", v, vs, vs2)
- addFormatterTest("%v", pv, "<*>"+vs, "<*>"+vs2)
- addFormatterTest("%v", &pv, "<**>"+vs, "<**>"+vs2)
- addFormatterTest("%+v", nilMap, "<nil>")
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs, vs2)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs, "<*>("+vAddr+")"+vs2)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs,
- "<**>("+pvAddr+"->"+vAddr+")"+vs2)
- addFormatterTest("%+v", nilMap, "<nil>")
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs, "("+vt+")"+vs2)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs, "(*"+vt+")"+vs2)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs, "(**"+vt+")"+vs2)
- addFormatterTest("%#v", nilMap, "("+vt+")"+"<nil>")
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs, "("+vt+")"+vs2)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs,
- "(*"+vt+")("+vAddr+")"+vs2)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs,
- "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs2)
- addFormatterTest("%#+v", nilMap, "("+vt+")"+"<nil>")
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Map with custom formatter type on pointer receiver only keys and vals.
- v2 := map[pstringer]pstringer{"one": "1"}
- nv2 := (*map[pstringer]pstringer)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "map[spew_test.pstringer]spew_test.pstringer"
- v2s := "map[stringer one:stringer 1]"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-
- // Map with interface keys and values.
- v3 := map[interface{}]interface{}{"one": 1}
- nv3 := (*map[interface{}]interface{})(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "map[interface {}]interface {}"
- v3t1 := "string"
- v3t2 := "int"
- v3s := "map[one:1]"
- v3s2 := "map[(" + v3t1 + ")one:(" + v3t2 + ")1]"
- addFormatterTest("%v", v3, v3s)
- addFormatterTest("%v", pv3, "<*>"+v3s)
- addFormatterTest("%v", &pv3, "<**>"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%+v", v3, v3s)
- addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s)
- addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%#v", v3, "("+v3t+")"+v3s2)
- addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s2)
- addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s2)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
- addFormatterTest("%#+v", v3, "("+v3t+")"+v3s2)
- addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s2)
- addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s2)
- addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"<nil>")
-
- // Map with nil interface value
- v4 := map[string]interface{}{"nil": nil}
- nv4 := (*map[string]interface{})(nil)
- pv4 := &v4
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "map[string]interface {}"
- v4t1 := "interface {}"
- v4s := "map[nil:<nil>]"
- v4s2 := "map[nil:(" + v4t1 + ")<nil>]"
- addFormatterTest("%v", v4, v4s)
- addFormatterTest("%v", pv4, "<*>"+v4s)
- addFormatterTest("%v", &pv4, "<**>"+v4s)
- addFormatterTest("%+v", nv4, "<nil>")
- addFormatterTest("%+v", v4, v4s)
- addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s)
- addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s)
- addFormatterTest("%+v", nv4, "<nil>")
- addFormatterTest("%#v", v4, "("+v4t+")"+v4s2)
- addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s2)
- addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s2)
- addFormatterTest("%#v", nv4, "(*"+v4t+")"+"<nil>")
- addFormatterTest("%#+v", v4, "("+v4t+")"+v4s2)
- addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s2)
- addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s2)
- addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"<nil>")
-}
-
-func addStructFormatterTests() {
- // Struct with primitives.
- type s1 struct {
- a int8
- b uint8
- }
- v := s1{127, 255}
- nv := (*s1)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "spew_test.s1"
- vt2 := "int8"
- vt3 := "uint8"
- vs := "{127 255}"
- vs2 := "{a:127 b:255}"
- vs3 := "{a:(" + vt2 + ")127 b:(" + vt3 + ")255}"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs2)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs2)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs2)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs3)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs3)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs3)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs3)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs3)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs3)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Struct that contains another struct.
- type s2 struct {
- s1 s1
- b bool
- }
- v2 := s2{s1{127, 255}, true}
- nv2 := (*s2)(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "spew_test.s2"
- v2t2 := "spew_test.s1"
- v2t3 := "int8"
- v2t4 := "uint8"
- v2t5 := "bool"
- v2s := "{{127 255} true}"
- v2s2 := "{s1:{a:127 b:255} b:true}"
- v2s3 := "{s1:(" + v2t2 + "){a:(" + v2t3 + ")127 b:(" + v2t4 + ")255} b:(" +
- v2t5 + ")true}"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s2)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s2)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s2)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s3)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s3)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s3)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s3)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s3)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s3)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-
- // Struct that contains custom type with Stringer pointer interface via both
- // exported and unexported fields.
- type s3 struct {
- s pstringer
- S pstringer
- }
- v3 := s3{"test", "test2"}
- nv3 := (*s3)(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "spew_test.s3"
- v3t2 := "spew_test.pstringer"
- v3s := "{stringer test stringer test2}"
- v3s2 := "{s:stringer test S:stringer test2}"
- v3s3 := "{s:(" + v3t2 + ")stringer test S:(" + v3t2 + ")stringer test2}"
- addFormatterTest("%v", v3, v3s)
- addFormatterTest("%v", pv3, "<*>"+v3s)
- addFormatterTest("%v", &pv3, "<**>"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%+v", v3, v3s2)
- addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s2)
- addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s2)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%#v", v3, "("+v3t+")"+v3s3)
- addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s3)
- addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s3)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
- addFormatterTest("%#+v", v3, "("+v3t+")"+v3s3)
- addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s3)
- addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s3)
- addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"<nil>")
-
- // Struct that contains embedded struct and field to same struct.
- e := embed{"embedstr"}
- v4 := embedwrap{embed: &e, e: &e}
- nv4 := (*embedwrap)(nil)
- pv4 := &v4
- eAddr := fmt.Sprintf("%p", &e)
- v4Addr := fmt.Sprintf("%p", pv4)
- pv4Addr := fmt.Sprintf("%p", &pv4)
- v4t := "spew_test.embedwrap"
- v4t2 := "spew_test.embed"
- v4t3 := "string"
- v4s := "{<*>{embedstr} <*>{embedstr}}"
- v4s2 := "{embed:<*>(" + eAddr + "){a:embedstr} e:<*>(" + eAddr +
- "){a:embedstr}}"
- v4s3 := "{embed:(*" + v4t2 + "){a:(" + v4t3 + ")embedstr} e:(*" + v4t2 +
- "){a:(" + v4t3 + ")embedstr}}"
- v4s4 := "{embed:(*" + v4t2 + ")(" + eAddr + "){a:(" + v4t3 +
- ")embedstr} e:(*" + v4t2 + ")(" + eAddr + "){a:(" + v4t3 + ")embedstr}}"
- addFormatterTest("%v", v4, v4s)
- addFormatterTest("%v", pv4, "<*>"+v4s)
- addFormatterTest("%v", &pv4, "<**>"+v4s)
- addFormatterTest("%+v", nv4, "<nil>")
- addFormatterTest("%+v", v4, v4s2)
- addFormatterTest("%+v", pv4, "<*>("+v4Addr+")"+v4s2)
- addFormatterTest("%+v", &pv4, "<**>("+pv4Addr+"->"+v4Addr+")"+v4s2)
- addFormatterTest("%+v", nv4, "<nil>")
- addFormatterTest("%#v", v4, "("+v4t+")"+v4s3)
- addFormatterTest("%#v", pv4, "(*"+v4t+")"+v4s3)
- addFormatterTest("%#v", &pv4, "(**"+v4t+")"+v4s3)
- addFormatterTest("%#v", nv4, "(*"+v4t+")"+"<nil>")
- addFormatterTest("%#+v", v4, "("+v4t+")"+v4s4)
- addFormatterTest("%#+v", pv4, "(*"+v4t+")("+v4Addr+")"+v4s4)
- addFormatterTest("%#+v", &pv4, "(**"+v4t+")("+pv4Addr+"->"+v4Addr+")"+v4s4)
- addFormatterTest("%#+v", nv4, "(*"+v4t+")"+"<nil>")
-}
-
-func addUintptrFormatterTests() {
- // Null pointer.
- v := uintptr(0)
- nv := (*uintptr)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "uintptr"
- vs := "<nil>"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Address of real variable.
- i := 1
- v2 := uintptr(unsafe.Pointer(&i))
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "uintptr"
- v2s := fmt.Sprintf("%p", &i)
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
-}
-
-func addUnsafePointerFormatterTests() {
- // Null pointer.
- v := unsafe.Pointer(uintptr(0))
- nv := (*unsafe.Pointer)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "unsafe.Pointer"
- vs := "<nil>"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Address of real variable.
- i := 1
- v2 := unsafe.Pointer(&i)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "unsafe.Pointer"
- v2s := fmt.Sprintf("%p", &i)
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
-}
-
-func addChanFormatterTests() {
- // Nil channel.
- var v chan int
- pv := &v
- nv := (*chan int)(nil)
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "chan int"
- vs := "<nil>"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Real channel.
- v2 := make(chan int)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "chan int"
- v2s := fmt.Sprintf("%p", v2)
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
-}
-
-func addFuncFormatterTests() {
- // Function with no params and no returns.
- v := addIntFormatterTests
- nv := (*func())(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "func()"
- vs := fmt.Sprintf("%p", v)
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-
- // Function with param and no returns.
- v2 := TestFormatter
- nv2 := (*func(*testing.T))(nil)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "func(*testing.T)"
- v2s := fmt.Sprintf("%p", v2)
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s)
- addFormatterTest("%v", &pv2, "<**>"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%+v", v2, v2s)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%+v", nv2, "<nil>")
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s)
- addFormatterTest("%#v", nv2, "(*"+v2t+")"+"<nil>")
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s)
- addFormatterTest("%#+v", nv2, "(*"+v2t+")"+"<nil>")
-
- // Function with multiple params and multiple returns.
- var v3 = func(i int, s string) (b bool, err error) {
- return true, nil
- }
- nv3 := (*func(int, string) (bool, error))(nil)
- pv3 := &v3
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "func(int, string) (bool, error)"
- v3s := fmt.Sprintf("%p", v3)
- addFormatterTest("%v", v3, v3s)
- addFormatterTest("%v", pv3, "<*>"+v3s)
- addFormatterTest("%v", &pv3, "<**>"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%+v", v3, v3s)
- addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s)
- addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%+v", nv3, "<nil>")
- addFormatterTest("%#v", v3, "("+v3t+")"+v3s)
- addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s)
- addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s)
- addFormatterTest("%#v", nv3, "(*"+v3t+")"+"<nil>")
- addFormatterTest("%#+v", v3, "("+v3t+")"+v3s)
- addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s)
- addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s)
- addFormatterTest("%#+v", nv3, "(*"+v3t+")"+"<nil>")
-}
-
-func addCircularFormatterTests() {
- // Struct that is circular through self referencing.
- type circular struct {
- c *circular
- }
- v := circular{nil}
- v.c = &v
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "spew_test.circular"
- vs := "{<*>{<*><shown>}}"
- vs2 := "{<*><shown>}"
- vs3 := "{c:<*>(" + vAddr + "){c:<*>(" + vAddr + ")<shown>}}"
- vs4 := "{c:<*>(" + vAddr + ")<shown>}"
- vs5 := "{c:(*" + vt + "){c:(*" + vt + ")<shown>}}"
- vs6 := "{c:(*" + vt + ")<shown>}"
- vs7 := "{c:(*" + vt + ")(" + vAddr + "){c:(*" + vt + ")(" + vAddr +
- ")<shown>}}"
- vs8 := "{c:(*" + vt + ")(" + vAddr + ")<shown>}"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs2)
- addFormatterTest("%v", &pv, "<**>"+vs2)
- addFormatterTest("%+v", v, vs3)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs4)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs4)
- addFormatterTest("%#v", v, "("+vt+")"+vs5)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs6)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs6)
- addFormatterTest("%#+v", v, "("+vt+")"+vs7)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs8)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs8)
-
- // Structs that are circular through cross referencing.
- v2 := xref1{nil}
- ts2 := xref2{&v2}
- v2.ps2 = &ts2
- pv2 := &v2
- ts2Addr := fmt.Sprintf("%p", &ts2)
- v2Addr := fmt.Sprintf("%p", pv2)
- pv2Addr := fmt.Sprintf("%p", &pv2)
- v2t := "spew_test.xref1"
- v2t2 := "spew_test.xref2"
- v2s := "{<*>{<*>{<*><shown>}}}"
- v2s2 := "{<*>{<*><shown>}}"
- v2s3 := "{ps2:<*>(" + ts2Addr + "){ps1:<*>(" + v2Addr + "){ps2:<*>(" +
- ts2Addr + ")<shown>}}}"
- v2s4 := "{ps2:<*>(" + ts2Addr + "){ps1:<*>(" + v2Addr + ")<shown>}}"
- v2s5 := "{ps2:(*" + v2t2 + "){ps1:(*" + v2t + "){ps2:(*" + v2t2 +
- ")<shown>}}}"
- v2s6 := "{ps2:(*" + v2t2 + "){ps1:(*" + v2t + ")<shown>}}"
- v2s7 := "{ps2:(*" + v2t2 + ")(" + ts2Addr + "){ps1:(*" + v2t +
- ")(" + v2Addr + "){ps2:(*" + v2t2 + ")(" + ts2Addr +
- ")<shown>}}}"
- v2s8 := "{ps2:(*" + v2t2 + ")(" + ts2Addr + "){ps1:(*" + v2t +
- ")(" + v2Addr + ")<shown>}}"
- addFormatterTest("%v", v2, v2s)
- addFormatterTest("%v", pv2, "<*>"+v2s2)
- addFormatterTest("%v", &pv2, "<**>"+v2s2)
- addFormatterTest("%+v", v2, v2s3)
- addFormatterTest("%+v", pv2, "<*>("+v2Addr+")"+v2s4)
- addFormatterTest("%+v", &pv2, "<**>("+pv2Addr+"->"+v2Addr+")"+v2s4)
- addFormatterTest("%#v", v2, "("+v2t+")"+v2s5)
- addFormatterTest("%#v", pv2, "(*"+v2t+")"+v2s6)
- addFormatterTest("%#v", &pv2, "(**"+v2t+")"+v2s6)
- addFormatterTest("%#+v", v2, "("+v2t+")"+v2s7)
- addFormatterTest("%#+v", pv2, "(*"+v2t+")("+v2Addr+")"+v2s8)
- addFormatterTest("%#+v", &pv2, "(**"+v2t+")("+pv2Addr+"->"+v2Addr+")"+v2s8)
-
- // Structs that are indirectly circular.
- v3 := indirCir1{nil}
- tic2 := indirCir2{nil}
- tic3 := indirCir3{&v3}
- tic2.ps3 = &tic3
- v3.ps2 = &tic2
- pv3 := &v3
- tic2Addr := fmt.Sprintf("%p", &tic2)
- tic3Addr := fmt.Sprintf("%p", &tic3)
- v3Addr := fmt.Sprintf("%p", pv3)
- pv3Addr := fmt.Sprintf("%p", &pv3)
- v3t := "spew_test.indirCir1"
- v3t2 := "spew_test.indirCir2"
- v3t3 := "spew_test.indirCir3"
- v3s := "{<*>{<*>{<*>{<*><shown>}}}}"
- v3s2 := "{<*>{<*>{<*><shown>}}}"
- v3s3 := "{ps2:<*>(" + tic2Addr + "){ps3:<*>(" + tic3Addr + "){ps1:<*>(" +
- v3Addr + "){ps2:<*>(" + tic2Addr + ")<shown>}}}}"
- v3s4 := "{ps2:<*>(" + tic2Addr + "){ps3:<*>(" + tic3Addr + "){ps1:<*>(" +
- v3Addr + ")<shown>}}}"
- v3s5 := "{ps2:(*" + v3t2 + "){ps3:(*" + v3t3 + "){ps1:(*" + v3t +
- "){ps2:(*" + v3t2 + ")<shown>}}}}"
- v3s6 := "{ps2:(*" + v3t2 + "){ps3:(*" + v3t3 + "){ps1:(*" + v3t +
- ")<shown>}}}"
- v3s7 := "{ps2:(*" + v3t2 + ")(" + tic2Addr + "){ps3:(*" + v3t3 + ")(" +
- tic3Addr + "){ps1:(*" + v3t + ")(" + v3Addr + "){ps2:(*" + v3t2 +
- ")(" + tic2Addr + ")<shown>}}}}"
- v3s8 := "{ps2:(*" + v3t2 + ")(" + tic2Addr + "){ps3:(*" + v3t3 + ")(" +
- tic3Addr + "){ps1:(*" + v3t + ")(" + v3Addr + ")<shown>}}}"
- addFormatterTest("%v", v3, v3s)
- addFormatterTest("%v", pv3, "<*>"+v3s2)
- addFormatterTest("%v", &pv3, "<**>"+v3s2)
- addFormatterTest("%+v", v3, v3s3)
- addFormatterTest("%+v", pv3, "<*>("+v3Addr+")"+v3s4)
- addFormatterTest("%+v", &pv3, "<**>("+pv3Addr+"->"+v3Addr+")"+v3s4)
- addFormatterTest("%#v", v3, "("+v3t+")"+v3s5)
- addFormatterTest("%#v", pv3, "(*"+v3t+")"+v3s6)
- addFormatterTest("%#v", &pv3, "(**"+v3t+")"+v3s6)
- addFormatterTest("%#+v", v3, "("+v3t+")"+v3s7)
- addFormatterTest("%#+v", pv3, "(*"+v3t+")("+v3Addr+")"+v3s8)
- addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s8)
-}
-
-func addPanicFormatterTests() {
- // Type that panics in its Stringer interface.
- v := panicer(127)
- nv := (*panicer)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "spew_test.panicer"
- vs := "(PANIC=test panic)127"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-}
-
-func addErrorFormatterTests() {
- // Type that has a custom Error interface.
- v := customError(127)
- nv := (*customError)(nil)
- pv := &v
- vAddr := fmt.Sprintf("%p", pv)
- pvAddr := fmt.Sprintf("%p", &pv)
- vt := "spew_test.customError"
- vs := "error: 127"
- addFormatterTest("%v", v, vs)
- addFormatterTest("%v", pv, "<*>"+vs)
- addFormatterTest("%v", &pv, "<**>"+vs)
- addFormatterTest("%v", nv, "<nil>")
- addFormatterTest("%+v", v, vs)
- addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
- addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%+v", nv, "<nil>")
- addFormatterTest("%#v", v, "("+vt+")"+vs)
- addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
- addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
- addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
- addFormatterTest("%#+v", v, "("+vt+")"+vs)
- addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
- addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
- addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
-}
-
-func addPassthroughFormatterTests() {
- // %x passthrough with uint.
- v := uint(4294967295)
- pv := &v
- vAddr := fmt.Sprintf("%x", pv)
- pvAddr := fmt.Sprintf("%x", &pv)
- vs := "ffffffff"
- addFormatterTest("%x", v, vs)
- addFormatterTest("%x", pv, vAddr)
- addFormatterTest("%x", &pv, pvAddr)
-
- // %#x passthrough with uint.
- v2 := int(2147483647)
- pv2 := &v2
- v2Addr := fmt.Sprintf("%#x", pv2)
- pv2Addr := fmt.Sprintf("%#x", &pv2)
- v2s := "0x7fffffff"
- addFormatterTest("%#x", v2, v2s)
- addFormatterTest("%#x", pv2, v2Addr)
- addFormatterTest("%#x", &pv2, pv2Addr)
-
- // %f passthrough with precision.
- addFormatterTest("%.2f", 3.1415, "3.14")
- addFormatterTest("%.3f", 3.1415, "3.142")
- addFormatterTest("%.4f", 3.1415, "3.1415")
-
- // %f passthrough with width and precision.
- addFormatterTest("%5.2f", 3.1415, " 3.14")
- addFormatterTest("%6.3f", 3.1415, " 3.142")
- addFormatterTest("%7.4f", 3.1415, " 3.1415")
-
- // %d passthrough with width.
- addFormatterTest("%3d", 127, "127")
- addFormatterTest("%4d", 127, " 127")
- addFormatterTest("%5d", 127, " 127")
-
- // %q passthrough with string.
- addFormatterTest("%q", "test", "\"test\"")
-}
-
-// TestFormatter executes all of the tests described by formatterTests.
-func TestFormatter(t *testing.T) {
- // Setup tests.
- addIntFormatterTests()
- addUintFormatterTests()
- addBoolFormatterTests()
- addFloatFormatterTests()
- addComplexFormatterTests()
- addArrayFormatterTests()
- addSliceFormatterTests()
- addStringFormatterTests()
- addInterfaceFormatterTests()
- addMapFormatterTests()
- addStructFormatterTests()
- addUintptrFormatterTests()
- addUnsafePointerFormatterTests()
- addChanFormatterTests()
- addFuncFormatterTests()
- addCircularFormatterTests()
- addPanicFormatterTests()
- addErrorFormatterTests()
- addPassthroughFormatterTests()
-
- t.Logf("Running %d tests", len(formatterTests))
- for i, test := range formatterTests {
- buf := new(bytes.Buffer)
- spew.Fprintf(buf, test.format, test.in)
- s := buf.String()
- if testFailed(s, test.wants) {
- t.Errorf("Formatter #%d format: %s got: %s %s", i, test.format, s,
- stringizeWants(test.wants))
- continue
- }
- }
-}
-
-type testStruct struct {
- x int
-}
-
-func (ts testStruct) String() string {
- return fmt.Sprintf("ts.%d", ts.x)
-}
-
-type testStructP struct {
- x int
-}
-
-func (ts *testStructP) String() string {
- return fmt.Sprintf("ts.%d", ts.x)
-}
-
-func TestPrintSortedKeys(t *testing.T) {
- cfg := spew.ConfigState{SortKeys: true}
- s := cfg.Sprint(map[int]string{1: "1", 3: "3", 2: "2"})
- expected := "map[1:1 2:2 3:3]"
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
- s = cfg.Sprint(map[stringer]int{"1": 1, "3": 3, "2": 2})
- expected = "map[stringer 1:1 stringer 2:2 stringer 3:3]"
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
- s = cfg.Sprint(map[pstringer]int{pstringer("1"): 1, pstringer("3"): 3, pstringer("2"): 2})
- expected = "map[stringer 1:1 stringer 2:2 stringer 3:3]"
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
- s = cfg.Sprint(map[testStruct]int{testStruct{1}: 1, testStruct{3}: 3, testStruct{2}: 2})
- expected = "map[ts.1:1 ts.2:2 ts.3:3]"
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
- s = cfg.Sprint(map[testStructP]int{testStructP{1}: 1, testStructP{3}: 3, testStructP{2}: 2})
- expected = "map[ts.1:1 ts.2:2 ts.3:3]"
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-
- s = cfg.Sprint(map[customError]int{customError(1): 1, customError(3): 3, customError(2): 2})
- expected = "map[error: 1:1 error: 2:2 error: 3:3]"
- if s != expected {
- t.Errorf("Sorted keys mismatch:\n %v %v", s, expected)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/internal_test.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/internal_test.go
deleted file mode 100644
index b583bfdef..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/internal_test.go
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2013 Dave Collins <dave@davec.name>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
-This test file is part of the spew package rather than than the spew_test
-package because it needs access to internals to properly test certain cases
-which are not possible via the public interface since they should never happen.
-*/
-
-package spew
-
-import (
- "bytes"
- "reflect"
- "testing"
- "unsafe"
-)
-
-// dummyFmtState implements a fake fmt.State to use for testing invalid
-// reflect.Value handling. This is necessary because the fmt package catches
-// invalid values before invoking the formatter on them.
-type dummyFmtState struct {
- bytes.Buffer
-}
-
-func (dfs *dummyFmtState) Flag(f int) bool {
- if f == int('+') {
- return true
- }
- return false
-}
-
-func (dfs *dummyFmtState) Precision() (int, bool) {
- return 0, false
-}
-
-func (dfs *dummyFmtState) Width() (int, bool) {
- return 0, false
-}
-
-// TestInvalidReflectValue ensures the dump and formatter code handles an
-// invalid reflect value properly. This needs access to internal state since it
-// should never happen in real code and therefore can't be tested via the public
-// API.
-func TestInvalidReflectValue(t *testing.T) {
- i := 1
-
- // Dump invalid reflect value.
- v := new(reflect.Value)
- buf := new(bytes.Buffer)
- d := dumpState{w: buf, cs: &Config}
- d.dump(*v)
- s := buf.String()
- want := "<invalid>"
- if s != want {
- t.Errorf("InvalidReflectValue #%d\n got: %s want: %s", i, s, want)
- }
- i++
-
- // Formatter invalid reflect value.
- buf2 := new(dummyFmtState)
- f := formatState{value: *v, cs: &Config, fs: buf2}
- f.format(*v)
- s = buf2.String()
- want = "<invalid>"
- if s != want {
- t.Errorf("InvalidReflectValue #%d got: %s want: %s", i, s, want)
- }
-}
-
-// changeKind uses unsafe to intentionally change the kind of a reflect.Value to
-// the maximum kind value which does not exist. This is needed to test the
-// fallback code which punts to the standard fmt library for new types that
-// might get added to the language.
-func changeKind(v *reflect.Value, readOnly bool) {
- rvf := (*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(v)) + offsetFlag))
- *rvf = *rvf | ((1<<flagKindWidth - 1) << flagKindShift)
- if readOnly {
- *rvf |= flagRO
- } else {
- *rvf &= ^uintptr(flagRO)
- }
-}
-
-// TestAddedReflectValue tests functionaly of the dump and formatter code which
-// falls back to the standard fmt library for new types that might get added to
-// the language.
-func TestAddedReflectValue(t *testing.T) {
- i := 1
-
- // Dump using a reflect.Value that is exported.
- v := reflect.ValueOf(int8(5))
- changeKind(&v, false)
- buf := new(bytes.Buffer)
- d := dumpState{w: buf, cs: &Config}
- d.dump(v)
- s := buf.String()
- want := "(int8) 5"
- if s != want {
- t.Errorf("TestAddedReflectValue #%d\n got: %s want: %s", i, s, want)
- }
- i++
-
- // Dump using a reflect.Value that is not exported.
- changeKind(&v, true)
- buf.Reset()
- d.dump(v)
- s = buf.String()
- want = "(int8) <int8 Value>"
- if s != want {
- t.Errorf("TestAddedReflectValue #%d\n got: %s want: %s", i, s, want)
- }
- i++
-
- // Formatter using a reflect.Value that is exported.
- changeKind(&v, false)
- buf2 := new(dummyFmtState)
- f := formatState{value: v, cs: &Config, fs: buf2}
- f.format(v)
- s = buf2.String()
- want = "5"
- if s != want {
- t.Errorf("TestAddedReflectValue #%d got: %s want: %s", i, s, want)
- }
- i++
-
- // Formatter using a reflect.Value that is not exported.
- changeKind(&v, true)
- buf2.Reset()
- f = formatState{value: v, cs: &Config, fs: buf2}
- f.format(v)
- s = buf2.String()
- want = "<int8 Value>"
- if s != want {
- t.Errorf("TestAddedReflectValue #%d got: %s want: %s", i, s, want)
- }
-}
-
-// SortValues makes the internal sortValues function available to the test
-// package.
-func SortValues(values []reflect.Value, cs *ConfigState) {
- sortValues(values, cs)
-}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/spew_test.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/spew_test.go
deleted file mode 100644
index 3831ed2fb..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/spew_test.go
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (c) 2013 Dave Collins <dave@davec.name>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-package spew_test
-
-import (
- "bytes"
- "fmt"
- "github.com/davecgh/go-spew/spew"
- "io/ioutil"
- "os"
- "testing"
-)
-
-// spewFunc is used to identify which public function of the spew package or
-// ConfigState a test applies to.
-type spewFunc int
-
-const (
- fCSFdump spewFunc = iota
- fCSFprint
- fCSFprintf
- fCSFprintln
- fCSPrint
- fCSPrintln
- fCSSdump
- fCSSprint
- fCSSprintf
- fCSSprintln
- fCSErrorf
- fCSNewFormatter
- fErrorf
- fFprint
- fFprintln
- fPrint
- fPrintln
- fSdump
- fSprint
- fSprintf
- fSprintln
-)
-
-// Map of spewFunc values to names for pretty printing.
-var spewFuncStrings = map[spewFunc]string{
- fCSFdump: "ConfigState.Fdump",
- fCSFprint: "ConfigState.Fprint",
- fCSFprintf: "ConfigState.Fprintf",
- fCSFprintln: "ConfigState.Fprintln",
- fCSSdump: "ConfigState.Sdump",
- fCSPrint: "ConfigState.Print",
- fCSPrintln: "ConfigState.Println",
- fCSSprint: "ConfigState.Sprint",
- fCSSprintf: "ConfigState.Sprintf",
- fCSSprintln: "ConfigState.Sprintln",
- fCSErrorf: "ConfigState.Errorf",
- fCSNewFormatter: "ConfigState.NewFormatter",
- fErrorf: "spew.Errorf",
- fFprint: "spew.Fprint",
- fFprintln: "spew.Fprintln",
- fPrint: "spew.Print",
- fPrintln: "spew.Println",
- fSdump: "spew.Sdump",
- fSprint: "spew.Sprint",
- fSprintf: "spew.Sprintf",
- fSprintln: "spew.Sprintln",
-}
-
-func (f spewFunc) String() string {
- if s, ok := spewFuncStrings[f]; ok {
- return s
- }
- return fmt.Sprintf("Unknown spewFunc (%d)", int(f))
-}
-
-// spewTest is used to describe a test to be performed against the public
-// functions of the spew package or ConfigState.
-type spewTest struct {
- cs *spew.ConfigState
- f spewFunc
- format string
- in interface{}
- want string
-}
-
-// spewTests houses the tests to be performed against the public functions of
-// the spew package and ConfigState.
-//
-// These tests are only intended to ensure the public functions are exercised
-// and are intentionally not exhaustive of types. The exhaustive type
-// tests are handled in the dump and format tests.
-var spewTests []spewTest
-
-// redirStdout is a helper function to return the standard output from f as a
-// byte slice.
-func redirStdout(f func()) ([]byte, error) {
- tempFile, err := ioutil.TempFile("", "ss-test")
- if err != nil {
- return nil, err
- }
- fileName := tempFile.Name()
- defer os.Remove(fileName) // Ignore error
-
- origStdout := os.Stdout
- os.Stdout = tempFile
- f()
- os.Stdout = origStdout
- tempFile.Close()
-
- return ioutil.ReadFile(fileName)
-}
-
-func initSpewTests() {
- // Config states with various settings.
- scsDefault := spew.NewDefaultConfig()
- scsNoMethods := &spew.ConfigState{Indent: " ", DisableMethods: true}
- scsNoPmethods := &spew.ConfigState{Indent: " ", DisablePointerMethods: true}
- scsMaxDepth := &spew.ConfigState{Indent: " ", MaxDepth: 1}
- scsContinue := &spew.ConfigState{Indent: " ", ContinueOnMethod: true}
-
- // Variables for tests on types which implement Stringer interface with and
- // without a pointer receiver.
- ts := stringer("test")
- tps := pstringer("test")
-
- // depthTester is used to test max depth handling for structs, array, slices
- // and maps.
- type depthTester struct {
- ic indirCir1
- arr [1]string
- slice []string
- m map[string]int
- }
- dt := depthTester{indirCir1{nil}, [1]string{"arr"}, []string{"slice"},
- map[string]int{"one": 1}}
-
- // Variable for tests on types which implement error interface.
- te := customError(10)
-
- spewTests = []spewTest{
- {scsDefault, fCSFdump, "", int8(127), "(int8) 127\n"},
- {scsDefault, fCSFprint, "", int16(32767), "32767"},
- {scsDefault, fCSFprintf, "%v", int32(2147483647), "2147483647"},
- {scsDefault, fCSFprintln, "", int(2147483647), "2147483647\n"},
- {scsDefault, fCSPrint, "", int64(9223372036854775807), "9223372036854775807"},
- {scsDefault, fCSPrintln, "", uint8(255), "255\n"},
- {scsDefault, fCSSdump, "", uint8(64), "(uint8) 64\n"},
- {scsDefault, fCSSprint, "", complex(1, 2), "(1+2i)"},
- {scsDefault, fCSSprintf, "%v", complex(float32(3), 4), "(3+4i)"},
- {scsDefault, fCSSprintln, "", complex(float64(5), 6), "(5+6i)\n"},
- {scsDefault, fCSErrorf, "%#v", uint16(65535), "(uint16)65535"},
- {scsDefault, fCSNewFormatter, "%v", uint32(4294967295), "4294967295"},
- {scsDefault, fErrorf, "%v", uint64(18446744073709551615), "18446744073709551615"},
- {scsDefault, fFprint, "", float32(3.14), "3.14"},
- {scsDefault, fFprintln, "", float64(6.28), "6.28\n"},
- {scsDefault, fPrint, "", true, "true"},
- {scsDefault, fPrintln, "", false, "false\n"},
- {scsDefault, fSdump, "", complex(-10, -20), "(complex128) (-10-20i)\n"},
- {scsDefault, fSprint, "", complex(-1, -2), "(-1-2i)"},
- {scsDefault, fSprintf, "%v", complex(float32(-3), -4), "(-3-4i)"},
- {scsDefault, fSprintln, "", complex(float64(-5), -6), "(-5-6i)\n"},
- {scsNoMethods, fCSFprint, "", ts, "test"},
- {scsNoMethods, fCSFprint, "", &ts, "<*>test"},
- {scsNoMethods, fCSFprint, "", tps, "test"},
- {scsNoMethods, fCSFprint, "", &tps, "<*>test"},
- {scsNoPmethods, fCSFprint, "", ts, "stringer test"},
- {scsNoPmethods, fCSFprint, "", &ts, "<*>stringer test"},
- {scsNoPmethods, fCSFprint, "", tps, "test"},
- {scsNoPmethods, fCSFprint, "", &tps, "<*>stringer test"},
- {scsMaxDepth, fCSFprint, "", dt, "{{<max>} [<max>] [<max>] map[<max>]}"},
- {scsMaxDepth, fCSFdump, "", dt, "(spew_test.depthTester) {\n" +
- " ic: (spew_test.indirCir1) {\n <max depth reached>\n },\n" +
- " arr: ([1]string) (len=1 cap=1) {\n <max depth reached>\n },\n" +
- " slice: ([]string) (len=1 cap=1) {\n <max depth reached>\n },\n" +
- " m: (map[string]int) (len=1) {\n <max depth reached>\n }\n}\n"},
- {scsContinue, fCSFprint, "", ts, "(stringer test) test"},
- {scsContinue, fCSFdump, "", ts, "(spew_test.stringer) " +
- "(len=4) (stringer test) \"test\"\n"},
- {scsContinue, fCSFprint, "", te, "(error: 10) 10"},
- {scsContinue, fCSFdump, "", te, "(spew_test.customError) " +
- "(error: 10) 10\n"},
- }
-}
-
-// TestSpew executes all of the tests described by spewTests.
-func TestSpew(t *testing.T) {
- initSpewTests()
-
- t.Logf("Running %d tests", len(spewTests))
- for i, test := range spewTests {
- buf := new(bytes.Buffer)
- switch test.f {
- case fCSFdump:
- test.cs.Fdump(buf, test.in)
-
- case fCSFprint:
- test.cs.Fprint(buf, test.in)
-
- case fCSFprintf:
- test.cs.Fprintf(buf, test.format, test.in)
-
- case fCSFprintln:
- test.cs.Fprintln(buf, test.in)
-
- case fCSPrint:
- b, err := redirStdout(func() { test.cs.Print(test.in) })
- if err != nil {
- t.Errorf("%v #%d %v", test.f, i, err)
- continue
- }
- buf.Write(b)
-
- case fCSPrintln:
- b, err := redirStdout(func() { test.cs.Println(test.in) })
- if err != nil {
- t.Errorf("%v #%d %v", test.f, i, err)
- continue
- }
- buf.Write(b)
-
- case fCSSdump:
- str := test.cs.Sdump(test.in)
- buf.WriteString(str)
-
- case fCSSprint:
- str := test.cs.Sprint(test.in)
- buf.WriteString(str)
-
- case fCSSprintf:
- str := test.cs.Sprintf(test.format, test.in)
- buf.WriteString(str)
-
- case fCSSprintln:
- str := test.cs.Sprintln(test.in)
- buf.WriteString(str)
-
- case fCSErrorf:
- err := test.cs.Errorf(test.format, test.in)
- buf.WriteString(err.Error())
-
- case fCSNewFormatter:
- fmt.Fprintf(buf, test.format, test.cs.NewFormatter(test.in))
-
- case fErrorf:
- err := spew.Errorf(test.format, test.in)
- buf.WriteString(err.Error())
-
- case fFprint:
- spew.Fprint(buf, test.in)
-
- case fFprintln:
- spew.Fprintln(buf, test.in)
-
- case fPrint:
- b, err := redirStdout(func() { spew.Print(test.in) })
- if err != nil {
- t.Errorf("%v #%d %v", test.f, i, err)
- continue
- }
- buf.Write(b)
-
- case fPrintln:
- b, err := redirStdout(func() { spew.Println(test.in) })
- if err != nil {
- t.Errorf("%v #%d %v", test.f, i, err)
- continue
- }
- buf.Write(b)
-
- case fSdump:
- str := spew.Sdump(test.in)
- buf.WriteString(str)
-
- case fSprint:
- str := spew.Sprint(test.in)
- buf.WriteString(str)
-
- case fSprintf:
- str := spew.Sprintf(test.format, test.in)
- buf.WriteString(str)
-
- case fSprintln:
- str := spew.Sprintln(test.in)
- buf.WriteString(str)
-
- default:
- t.Errorf("%v #%d unrecognized function", test.f, i)
- continue
- }
- s := buf.String()
- if test.want != s {
- t.Errorf("ConfigState #%d\n got: %s want: %s", i, s, test.want)
- continue
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go b/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go
deleted file mode 100644
index 5c87dd456..000000000
--- a/Godeps/_workspace/src/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (c) 2013 Dave Collins <dave@davec.name>
-//
-// Permission to use, copy, modify, and distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-// NOTE: Due to the following build constraints, this file will only be compiled
-// when both cgo is supported and "-tags testcgo" is added to the go test
-// command line. This code should really only be in the dumpcgo_test.go file,
-// but unfortunately Go will not allow cgo in test files, so this is a
-// workaround to allow cgo types to be tested. This configuration is used
-// because spew itself does not require cgo to run even though it does handle
-// certain cgo types specially. Rather than forcing all clients to require cgo
-// and an external C compiler just to run the tests, this scheme makes them
-// optional.
-// +build cgo,testcgo
-
-package testdata
-
-/*
-#include <stdint.h>
-typedef unsigned char custom_uchar_t;
-
-char *ncp = 0;
-char *cp = "test";
-char ca[6] = {'t', 'e', 's', 't', '2', '\0'};
-unsigned char uca[6] = {'t', 'e', 's', 't', '3', '\0'};
-signed char sca[6] = {'t', 'e', 's', 't', '4', '\0'};
-uint8_t ui8ta[6] = {'t', 'e', 's', 't', '5', '\0'};
-custom_uchar_t tuca[6] = {'t', 'e', 's', 't', '6', '\0'};
-*/
-import "C"
-
-// GetCgoNullCharPointer returns a null char pointer via cgo. This is only
-// used for tests.
-func GetCgoNullCharPointer() interface{} {
- return C.ncp
-}
-
-// GetCgoCharPointer returns a char pointer via cgo. This is only used for
-// tests.
-func GetCgoCharPointer() interface{} {
- return C.cp
-}
-
-// GetCgoCharArray returns a char array via cgo and the array's len and cap.
-// This is only used for tests.
-func GetCgoCharArray() (interface{}, int, int) {
- return C.ca, len(C.ca), cap(C.ca)
-}
-
-// GetCgoUnsignedCharArray returns an unsigned char array via cgo and the
-// array's len and cap. This is only used for tests.
-func GetCgoUnsignedCharArray() (interface{}, int, int) {
- return C.uca, len(C.uca), cap(C.uca)
-}
-
-// GetCgoSignedCharArray returns a signed char array via cgo and the array's len
-// and cap. This is only used for tests.
-func GetCgoSignedCharArray() (interface{}, int, int) {
- return C.sca, len(C.sca), cap(C.sca)
-}
-
-// GetCgoUint8tArray returns a uint8_t array via cgo and the array's len and
-// cap. This is only used for tests.
-func GetCgoUint8tArray() (interface{}, int, int) {
- return C.ui8ta, len(C.ui8ta), cap(C.ui8ta)
-}
-
-// GetCgoTypdefedUnsignedCharArray returns a typedefed unsigned char array via
-// cgo and the array's len and cap. This is only used for tests.
-func GetCgoTypdefedUnsignedCharArray() (interface{}, int, int) {
- return C.tuca, len(C.tuca), cap(C.tuca)
-}
diff --git a/Godeps/_workspace/src/github.com/ethereum/ethash/ethash_test.go b/Godeps/_workspace/src/github.com/ethereum/ethash/ethash_test.go
deleted file mode 100644
index e0ca0bd85..000000000
--- a/Godeps/_workspace/src/github.com/ethereum/ethash/ethash_test.go
+++ /dev/null
@@ -1,221 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// Copyright 2015 Lefteris Karapetsas <lefteris@refu.co>
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
-package ethash
-
-import (
- "bytes"
- "crypto/rand"
- "encoding/hex"
- "log"
- "math/big"
- "os"
- "sync"
- "testing"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/crypto"
-)
-
-func init() {
- // glog.SetV(6)
- // glog.SetToStderr(true)
-}
-
-type testBlock struct {
- difficulty *big.Int
- hashNoNonce common.Hash
- nonce uint64
- mixDigest common.Hash
- number uint64
-}
-
-func (b *testBlock) Difficulty() *big.Int { return b.difficulty }
-func (b *testBlock) HashNoNonce() common.Hash { return b.hashNoNonce }
-func (b *testBlock) Nonce() uint64 { return b.nonce }
-func (b *testBlock) MixDigest() common.Hash { return b.mixDigest }
-func (b *testBlock) NumberU64() uint64 { return b.number }
-
-var validBlocks = []*testBlock{
- // from proof of concept nine testnet, epoch 0
- {
- number: 22,
- hashNoNonce: common.HexToHash("372eca2454ead349c3df0ab5d00b0b706b23e49d469387db91811cee0358fc6d"),
- difficulty: big.NewInt(132416),
- nonce: 0x495732e0ed7a801c,
- mixDigest: common.HexToHash("2f74cdeb198af0b9abe65d22d372e22fb2d474371774a9583c1cc427a07939f5"),
- },
- // from proof of concept nine testnet, epoch 1
- {
- number: 30001,
- hashNoNonce: common.HexToHash("7e44356ee3441623bc72a683fd3708fdf75e971bbe294f33e539eedad4b92b34"),
- difficulty: big.NewInt(1532671),
- nonce: 0x318df1c8adef7e5e,
- mixDigest: common.HexToHash("144b180aad09ae3c81fb07be92c8e6351b5646dda80e6844ae1b697e55ddde84"),
- },
- // from proof of concept nine testnet, epoch 2
- {
- number: 60000,
- hashNoNonce: common.HexToHash("5fc898f16035bf5ac9c6d9077ae1e3d5fc1ecc3c9fd5bee8bb00e810fdacbaa0"),
- difficulty: big.NewInt(2467358),
- nonce: 0x50377003e5d830ca,
- mixDigest: common.HexToHash("ab546a5b73c452ae86dadd36f0ed83a6745226717d3798832d1b20b489e82063"),
- },
-}
-
-var invalidZeroDiffBlock = testBlock{
- number: 61440000,
- hashNoNonce: crypto.Sha3Hash([]byte("foo")),
- difficulty: big.NewInt(0),
- nonce: 0xcafebabec00000fe,
- mixDigest: crypto.Sha3Hash([]byte("bar")),
-}
-
-func TestEthashVerifyValid(t *testing.T) {
- eth := New()
- for i, block := range validBlocks {
- if !eth.Verify(block) {
- t.Errorf("block %d (%x) did not validate.", i, block.hashNoNonce[:6])
- }
- }
-}
-
-func TestEthashVerifyInvalid(t *testing.T) {
- eth := New()
- if eth.Verify(&invalidZeroDiffBlock) {
- t.Errorf("should not validate - we just ensure it does not panic on this block")
- }
-}
-
-func TestEthashConcurrentVerify(t *testing.T) {
- eth, err := NewForTesting()
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(eth.Full.Dir)
-
- block := &testBlock{difficulty: big.NewInt(10)}
- nonce, md := eth.Search(block, nil, 0)
- block.nonce = nonce
- block.mixDigest = common.BytesToHash(md)
-
- // Verify the block concurrently to check for data races.
- var wg sync.WaitGroup
- wg.Add(100)
- for i := 0; i < 100; i++ {
- go func() {
- if !eth.Verify(block) {
- t.Error("Block could not be verified")
- }
- wg.Done()
- }()
- }
- wg.Wait()
-}
-
-func TestEthashConcurrentSearch(t *testing.T) {
- eth, err := NewForTesting()
- if err != nil {
- t.Fatal(err)
- }
- eth.Turbo(true)
- defer os.RemoveAll(eth.Full.Dir)
-
- type searchRes struct {
- n uint64
- md []byte
- }
-
- var (
- block = &testBlock{difficulty: big.NewInt(35000)}
- nsearch = 10
- wg = new(sync.WaitGroup)
- found = make(chan searchRes)
- stop = make(chan struct{})
- )
- rand.Read(block.hashNoNonce[:])
- wg.Add(nsearch)
- // launch n searches concurrently.
- for i := 0; i < nsearch; i++ {
- go func() {
- nonce, md := eth.Search(block, stop, 0)
- select {
- case found <- searchRes{n: nonce, md: md}:
- case <-stop:
- }
- wg.Done()
- }()
- }
-
- // wait for one of them to find the nonce
- res := <-found
- // stop the others
- close(stop)
- wg.Wait()
-
- block.nonce = res.n
- block.mixDigest = common.BytesToHash(res.md)
- if !eth.Verify(block) {
- t.Error("Block could not be verified")
- }
-}
-
-func TestEthashSearchAcrossEpoch(t *testing.T) {
- eth, err := NewForTesting()
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(eth.Full.Dir)
-
- for i := epochLength - 40; i < epochLength+40; i++ {
- block := &testBlock{number: i, difficulty: big.NewInt(90)}
- rand.Read(block.hashNoNonce[:])
- nonce, md := eth.Search(block, nil, 0)
- block.nonce = nonce
- block.mixDigest = common.BytesToHash(md)
- if !eth.Verify(block) {
- t.Fatalf("Block could not be verified")
- }
- }
-}
-
-func TestGetSeedHash(t *testing.T) {
- seed0, err := GetSeedHash(0)
- if err != nil {
- t.Errorf("Failed to get seedHash for block 0: %v", err)
- }
- if bytes.Compare(seed0, make([]byte, 32)) != 0 {
- log.Printf("seedHash for block 0 should be 0s, was: %v\n", seed0)
- }
- seed1, err := GetSeedHash(30000)
- if err != nil {
- t.Error(err)
- }
-
- // From python:
- // > from pyethash import get_seedhash
- // > get_seedhash(30000)
- expectedSeed1, err := hex.DecodeString("290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563")
- if err != nil {
- t.Error(err)
- }
-
- if bytes.Compare(seed1, expectedSeed1) != 0 {
- log.Printf("seedHash for block 1 should be: %v,\nactual value: %v\n", expectedSeed1, seed1)
- }
-
-}
diff --git a/Godeps/_workspace/src/github.com/fatih/color/color.go b/Godeps/_workspace/src/github.com/fatih/color/color.go
index c4a10c3c8..e3e997284 100644
--- a/Godeps/_workspace/src/github.com/fatih/color/color.go
+++ b/Godeps/_workspace/src/github.com/fatih/color/color.go
@@ -6,8 +6,8 @@ import (
"strconv"
"strings"
+ "github.com/mattn/go-colorable"
"github.com/mattn/go-isatty"
- "github.com/shiena/ansicolor"
)
// NoColor defines if the output is colorized or not. It's dynamically set to
@@ -53,6 +53,18 @@ const (
FgWhite
)
+// Foreground Hi-Intensity text colors
+const (
+ FgHiBlack Attribute = iota + 90
+ FgHiRed
+ FgHiGreen
+ FgHiYellow
+ FgHiBlue
+ FgHiMagenta
+ FgHiCyan
+ FgHiWhite
+)
+
// Background text colors
const (
BgBlack Attribute = iota + 40
@@ -65,6 +77,18 @@ const (
BgWhite
)
+// Background Hi-Intensity text colors
+const (
+ BgHiBlack Attribute = iota + 100
+ BgHiRed
+ BgHiGreen
+ BgHiYellow
+ BgHiBlue
+ BgHiMagenta
+ BgHiCyan
+ BgHiWhite
+)
+
// New returns a newly created color object.
func New(value ...Attribute) *Color {
c := &Color{params: make([]Attribute, 0)}
@@ -123,7 +147,7 @@ func (c *Color) prepend(value Attribute) {
// Output defines the standard output of the print functions. By default
// os.Stdout is used.
-var Output = ansicolor.NewAnsiColorWriter(os.Stdout)
+var Output = colorable.NewColorableStdout()
// Print formats using the default formats for its operands and writes to
// standard output. Spaces are added between operands when neither is a
@@ -259,6 +283,31 @@ func (c *Color) isNoColorSet() bool {
return NoColor
}
+// Equals returns a boolean value indicating whether two colors are equal.
+func (c *Color) Equals(c2 *Color) bool {
+ if len(c.params) != len(c2.params) {
+ return false
+ }
+
+ for _, attr := range c.params {
+ if !c2.attrExists(attr) {
+ return false
+ }
+ }
+
+ return true
+}
+
+func (c *Color) attrExists(a Attribute) bool {
+ for _, attr := range c.params {
+ if attr == a {
+ return true
+ }
+ }
+
+ return false
+}
+
func boolPtr(v bool) *bool {
return &v
}
diff --git a/Godeps/_workspace/src/github.com/fatih/color/color_test.go b/Godeps/_workspace/src/github.com/fatih/color/color_test.go
deleted file mode 100644
index a1192b559..000000000
--- a/Godeps/_workspace/src/github.com/fatih/color/color_test.go
+++ /dev/null
@@ -1,176 +0,0 @@
-package color
-
-import (
- "bytes"
- "fmt"
- "os"
- "testing"
-
- "github.com/shiena/ansicolor"
-)
-
-// Testing colors is kinda different. First we test for given colors and their
-// escaped formatted results. Next we create some visual tests to be tested.
-// Each visual test includes the color name to be compared.
-func TestColor(t *testing.T) {
- rb := new(bytes.Buffer)
- Output = rb
-
- testColors := []struct {
- text string
- code Attribute
- }{
- {text: "black", code: FgBlack},
- {text: "red", code: FgRed},
- {text: "green", code: FgGreen},
- {text: "yellow", code: FgYellow},
- {text: "blue", code: FgBlue},
- {text: "magent", code: FgMagenta},
- {text: "cyan", code: FgCyan},
- {text: "white", code: FgWhite},
- }
-
- for _, c := range testColors {
- New(c.code).Print(c.text)
-
- line, _ := rb.ReadString('\n')
- scannedLine := fmt.Sprintf("%q", line)
- colored := fmt.Sprintf("\x1b[%dm%s\x1b[0m", c.code, c.text)
- escapedForm := fmt.Sprintf("%q", colored)
-
- fmt.Printf("%s\t: %s\n", c.text, line)
-
- if scannedLine != escapedForm {
- t.Errorf("Expecting %s, got '%s'\n", escapedForm, scannedLine)
- }
- }
-}
-
-func TestNoColor(t *testing.T) {
- rb := new(bytes.Buffer)
- Output = rb
-
- testColors := []struct {
- text string
- code Attribute
- }{
- {text: "black", code: FgBlack},
- {text: "red", code: FgRed},
- {text: "green", code: FgGreen},
- {text: "yellow", code: FgYellow},
- {text: "blue", code: FgBlue},
- {text: "magent", code: FgMagenta},
- {text: "cyan", code: FgCyan},
- {text: "white", code: FgWhite},
- }
-
- for _, c := range testColors {
- p := New(c.code)
- p.DisableColor()
- p.Print(c.text)
-
- line, _ := rb.ReadString('\n')
- if line != c.text {
- t.Errorf("Expecting %s, got '%s'\n", c.text, line)
- }
- }
-
- // global check
- NoColor = true
- defer func() {
- NoColor = false
- }()
- for _, c := range testColors {
- p := New(c.code)
- p.Print(c.text)
-
- line, _ := rb.ReadString('\n')
- if line != c.text {
- t.Errorf("Expecting %s, got '%s'\n", c.text, line)
- }
- }
-
-}
-
-func TestColorVisual(t *testing.T) {
- // First Visual Test
- fmt.Println("")
- Output = ansicolor.NewAnsiColorWriter(os.Stdout)
-
- New(FgRed).Printf("red\t")
- New(BgRed).Print(" ")
- New(FgRed, Bold).Println(" red")
-
- New(FgGreen).Printf("green\t")
- New(BgGreen).Print(" ")
- New(FgGreen, Bold).Println(" green")
-
- New(FgYellow).Printf("yellow\t")
- New(BgYellow).Print(" ")
- New(FgYellow, Bold).Println(" yellow")
-
- New(FgBlue).Printf("blue\t")
- New(BgBlue).Print(" ")
- New(FgBlue, Bold).Println(" blue")
-
- New(FgMagenta).Printf("magenta\t")
- New(BgMagenta).Print(" ")
- New(FgMagenta, Bold).Println(" magenta")
-
- New(FgCyan).Printf("cyan\t")
- New(BgCyan).Print(" ")
- New(FgCyan, Bold).Println(" cyan")
-
- New(FgWhite).Printf("white\t")
- New(BgWhite).Print(" ")
- New(FgWhite, Bold).Println(" white")
- fmt.Println("")
-
- // Second Visual test
- Black("black")
- Red("red")
- Green("green")
- Yellow("yellow")
- Blue("blue")
- Magenta("magenta")
- Cyan("cyan")
- White("white")
-
- // Third visual test
- fmt.Println()
- Set(FgBlue)
- fmt.Println("is this blue?")
- Unset()
-
- Set(FgMagenta)
- fmt.Println("and this magenta?")
- Unset()
-
- // Fourth Visual test
- fmt.Println()
- blue := New(FgBlue).PrintlnFunc()
- blue("blue text with custom print func")
-
- red := New(FgRed).PrintfFunc()
- red("red text with a printf func: %d\n", 123)
-
- put := New(FgYellow).SprintFunc()
- warn := New(FgRed).SprintFunc()
-
- fmt.Fprintf(Output, "this is a %s and this is %s.\n", put("warning"), warn("error"))
-
- info := New(FgWhite, BgGreen).SprintFunc()
- fmt.Fprintf(Output, "this %s rocks!\n", info("package"))
-
- // Fifth Visual Test
- fmt.Println()
-
- fmt.Fprintln(Output, BlackString("black"))
- fmt.Fprintln(Output, RedString("red"))
- fmt.Fprintln(Output, GreenString("green"))
- fmt.Fprintln(Output, YellowString("yellow"))
- fmt.Fprintln(Output, BlueString("blue"))
- fmt.Fprintln(Output, MagentaString("magenta"))
- fmt.Fprintln(Output, CyanString("cyan"))
- fmt.Fprintln(Output, WhiteString("white"))
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/.gitignore b/Godeps/_workspace/src/github.com/gizak/termui/.gitignore
index daf913b1b..eb1369fd4 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/.gitignore
+++ b/Godeps/_workspace/src/github.com/gizak/termui/.gitignore
@@ -22,3 +22,4 @@ _testmain.go
*.exe
*.test
*.prof
+.DS_Store
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/README.md b/Godeps/_workspace/src/github.com/gizak/termui/README.md
index b9bc3024d..0e1d41b08 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/README.md
+++ b/Godeps/_workspace/src/github.com/gizak/termui/README.md
@@ -1,55 +1,30 @@
# termui [![Build Status](https://travis-ci.org/gizak/termui.svg?branch=master)](https://travis-ci.org/gizak/termui) [![Doc Status](https://godoc.org/github.com/gizak/termui?status.png)](https://godoc.org/github.com/gizak/termui)
-## Update 23/06/2015
-Pull requests and master branch are freezing, waiting for merging from `refactoring` branch.
+<img src="./_example/dashboard.gif" alt="demo cast under osx 10.10; Terminal.app; Menlo Regular 12pt.)" width="80%">
-## Notice
-termui comes with ABSOLUTELY NO WARRANTY, and there is a breaking change coming up (see refactoring branch) which will change the `Bufferer` interface and many others. These changes reduce calculation overhead and introduce a new drawing buffer with better capacibilities. We will step into the next stage (call it beta) after merging these changes.
+`termui` is a cross-platform, easy-to-compile, and fully-customizable terminal dashboard. It is inspired by [blessed-contrib](https://github.com/yaronn/blessed-contrib), but purely in Go.
-## Introduction
-Go terminal dashboard. Inspired by [blessed-contrib](https://github.com/yaronn/blessed-contrib), but purely in Go.
+Now version v2 has arrived! It brings new event system, new theme system, new `Buffer` interface and specific colour text rendering. (some docs are missing, but it will be completed soon!)
-Cross-platform, easy to compile, and fully-customizable.
-
-__Demo:__ (cast under osx 10.10; Terminal.app; Menlo Regular 12pt.)
+## Installation
-<img src="./example/dashboard.gif" alt="demo" width="600">
+`master` mirrors v2 branch, to install:
-__Grid layout:__
+ go get -u github.com/gizak/termui
-Expressive syntax, using [12 columns grid system](http://www.w3schools.com/bootstrap/bootstrap_grid_system.asp)
-```go
- import ui "github.com/gizak/termui"
- // init and create widgets...
+For the compatible reason, you can choose to install the legacy version of `termui`:
- // build
- ui.Body.AddRows(
- ui.NewRow(
- ui.NewCol(6, 0, widget0),
- ui.NewCol(6, 0, widget1)),
- ui.NewRow(
- ui.NewCol(3, 0, widget2),
- ui.NewCol(3, 0, widget30, widget31, widget32),
- ui.NewCol(6, 0, widget4)))
+ go get gopkg.in/gizak/termui.v1
- // calculate layout
- ui.Body.Align()
-
- ui.Render(ui.Body)
-```
-[demo code:](https://github.com/gizak/termui/blob/master/example/grid.go)
-
-<img src="./example/grid.gif" alt="grid" width="500">
-
-## Installation
+## Usage
- go get github.com/gizak/termui
+### Layout
-## Usage
+To use `termui`, the very first thing you may want to know is how to manage layout. `termui` offers two ways of doing this, known as absolute layout and grid layout.
-Each component's layout is a bit like HTML block (box model), which has border and padding.
+__Absolute layout__
-The `Border` property can be chosen to hide or display (with its border label), when it comes to display, the label takes 1 padding space (i.e. in css: `padding: 1;`, innerHeight and innerWidth therefore shrunk by 1).
+Each widget has an underlying block structure which basically is a box model. It has border, label and padding properties. A border of a widget can be chosen to hide or display (with its border label), you can pick a different front/back colour for the border as well. To display such a widget at a specific location in terminal window, you need to assign `.X`, `.Y`, `.Height`, `.Width` values for each widget before send it to `.Render`. Let's demonstrate these by a code snippet:
`````go
import ui "github.com/gizak/termui" // <- ui shortcut, optional
@@ -65,20 +40,20 @@ The `Border` property can be chosen to hide or display (with its border label),
p.Height = 3
p.Width = 50
p.TextFgColor = ui.ColorWhite
- p.Border.Label = "Text Box"
- p.Border.FgColor = ui.ColorCyan
+ p.BorderLabel = "Text Box"
+ p.BorderFg = ui.ColorCyan
g := ui.NewGauge()
g.Percent = 50
g.Width = 50
g.Height = 3
g.Y = 11
- g.Border.Label = "Gauge"
+ g.BorderLabel = "Gauge"
g.BarColor = ui.ColorRed
- g.Border.FgColor = ui.ColorWhite
- g.Border.LabelFgColor = ui.ColorCyan
+ g.BorderFg = ui.ColorWhite
+ g.BorderLabelFg = ui.ColorCyan
- ui.Render(p, g)
+ ui.Render(p, g) // feel free to call Render, it's async and non-block
// event handler...
}
@@ -86,62 +61,74 @@ The `Border` property can be chosen to hide or display (with its border label),
Note that components can be overlapped (I'd rather call this a feature...), `Render(rs ...Renderer)` renders its args from left to right (i.e. each component's weight is arising from left to right).
-## Themes
-
-_All_ colors in _all_ components can be changed at _any_ time, while there provides some predefined color schemes:
-
-```go
-// for now there are only two themes: default and helloworld
-termui.UseTheme("helloworld")
-
-// create components...
-```
-The `default ` theme's settings depend on the user's terminal color scheme, which is saying if your terminal default font color is white and background is white, it will be like:
-
-<img src="./example/themedefault.png" alt="default" type="image/png" width="600">
-
-The `helloworld` color scheme drops in some colors!
-
-<img src="./example/themehelloworld.png" alt="helloworld" type="image/png" width="600">
-
-## Widgets
-
-#### Par
-
-[demo code](https://github.com/gizak/termui/blob/master/example/par.go)
-
-<img src="./example/par.png" alt="par" type="image/png" width="300">
+__Grid layout:__
-#### List
-[demo code](https://github.com/gizak/termui/blob/master/example/list.go)
+<img src="./_example/grid.gif" alt="grid" width="60%">
-<img src="./example/list.png" alt="list" type="image/png" width="200">
+Grid layout uses [12 columns grid system](http://www.w3schools.com/bootstrap/bootstrap_grid_system.asp) with expressive syntax. To use `Grid`, all we need to do is build a widget tree consisting of `Row`s and Cols (Actually a Col is also a `Row` but with a widget endpoint attached).
-#### Gauge
-[demo code](https://github.com/gizak/termui/blob/master/example/gauge.go)
+```go
+ import ui "github.com/gizak/termui"
+ // init and create widgets...
-<img src="./example/gauge.png" alt="gauge" type="image/png" width="350">
+ // build
+ ui.Body.AddRows(
+ ui.NewRow(
+ ui.NewCol(6, 0, widget0),
+ ui.NewCol(6, 0, widget1)),
+ ui.NewRow(
+ ui.NewCol(3, 0, widget2),
+ ui.NewCol(3, 0, widget30, widget31, widget32),
+ ui.NewCol(6, 0, widget4)))
-#### Line Chart
-[demo code](https://github.com/gizak/termui/blob/master/example/linechart.go)
+ // calculate layout
+ ui.Body.Align()
-<img src="./example/linechart.png" alt="linechart" type="image/png" width="450">
+ ui.Render(ui.Body)
+```
-#### Bar Chart
-[demo code](https://github.com/gizak/termui/blob/master/example/barchart.go)
+### Events
-<img src="./example/barchart.png" alt="barchart" type="image/png" width="150">
+`termui` ships with a http-like event mux handling system. All events are channeled up from different sources (typing, click, windows resize, custom event) and then encoded as universal `Event` object. `Event.Path` indicates the event type and `Event.Data` stores the event data struct. Add a handler to a certain event is easy as below:
-#### Mult-Bar / Stacked-Bar Chart
-[demo code](https://github.com/gizak/termui/blob/master/example/mbarchart.go)
+```go
+ // handle key q pressing
+ ui.Handle("/sys/kbd/q", func(ui.Event) {
+ // press q to quit
+ ui.StopLoop()
+ })
+
+ ui.Handle("/sys/kbd/C-x", func(ui.Event) {
+ // handle Ctrl + x combination
+ })
+
+ ui.Handle("/sys/kbd", func(ui.Event) {
+ // handle all other key pressing
+ })
+
+ // handle a 1s timer
+ ui.Handle("/timer/1s", func(e ui.Event) {
+ t := e.Data.(ui.EvtTimer)
+ // t is a EvtTimer
+ if t.Count%2 ==0 {
+ // do something
+ }
+ })
-<img src="./example/mbarchart.png" alt="barchart" type="image/png" width="150">
+ ui.Loop() // block until StopLoop is called
+```
-#### Sparklines
-[demo code](https://github.com/gizak/termui/blob/master/example/sparklines.go)
+### Widgets
-<img src="./example/sparklines.png" alt="sparklines" type="image/png" width="350">
+Click image to see the corresponding demo codes.
+[<img src="./_example/par.png" alt="par" type="image/png" width="45%">](https://github.com/gizak/termui/blob/master/_example/par.go)
+[<img src="./_example/list.png" alt="list" type="image/png" width="45%">](https://github.com/gizak/termui/blob/master/_example/list.go)
+[<img src="./_example/gauge.png" alt="gauge" type="image/png" width="45%">](https://github.com/gizak/termui/blob/master/_example/gauge.go)
+[<img src="./_example/linechart.png" alt="linechart" type="image/png" width="45%">](https://github.com/gizak/termui/blob/master/_example/linechart.go)
+[<img src="./_example/barchart.png" alt="barchart" type="image/png" width="45%">](https://github.com/gizak/termui/blob/master/_example/barchart.go)
+[<img src="./_example/mbarchart.png" alt="barchart" type="image/png" width="45%">](https://github.com/gizak/termui/blob/master/_example/mbarchart.go)
+[<img src="./_example/sparklines.png" alt="sparklines" type="image/png" width="45%">](https://github.com/gizak/termui/blob/master/_example/sparklines.go)
## GoDoc
@@ -150,10 +137,12 @@ The `helloworld` color scheme drops in some colors!
## TODO
- [x] Grid layout
-- [ ] Event system
-- [ ] Canvas widget
-- [ ] Refine APIs
+- [x] Event system
+- [x] Canvas widget
+- [x] Refine APIs
- [ ] Focusable widgets
+## Changelog
+
## License
This library is under the [MIT License](http://opensource.org/licenses/MIT)
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/bar.go b/Godeps/_workspace/src/github.com/gizak/termui/barchart.go
index 57bae0ae8..980e958e2 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/bar.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/barchart.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
@@ -39,16 +39,16 @@ type BarChart struct {
// NewBarChart returns a new *BarChart with current theme.
func NewBarChart() *BarChart {
bc := &BarChart{Block: *NewBlock()}
- bc.BarColor = theme.BarChartBar
- bc.NumColor = theme.BarChartNum
- bc.TextColor = theme.BarChartText
+ bc.BarColor = ThemeAttr("barchart.bar.bg")
+ bc.NumColor = ThemeAttr("barchart.num.fg")
+ bc.TextColor = ThemeAttr("barchart.text.fg")
bc.BarGap = 1
bc.BarWidth = 3
return bc
}
func (bc *BarChart) layout() {
- bc.numBar = bc.innerWidth / (bc.BarGap + bc.BarWidth)
+ bc.numBar = bc.innerArea.Dx() / (bc.BarGap + bc.BarWidth)
bc.labels = make([][]rune, bc.numBar)
bc.dataNum = make([][]rune, len(bc.Data))
@@ -69,7 +69,7 @@ func (bc *BarChart) layout() {
bc.max = bc.Data[i]
}
}
- bc.scale = float64(bc.max) / float64(bc.innerHeight-1)
+ bc.scale = float64(bc.max) / float64(bc.innerArea.Dy()-1)
}
func (bc *BarChart) SetMax(max int) {
@@ -80,8 +80,8 @@ func (bc *BarChart) SetMax(max int) {
}
// Buffer implements Bufferer interface.
-func (bc *BarChart) Buffer() []Point {
- ps := bc.Block.Buffer()
+func (bc *BarChart) Buffer() Buffer {
+ buf := bc.Block.Buffer()
bc.layout()
for i := 0; i < bc.numBar && i < len(bc.Data) && i < len(bc.DataLabels); i++ {
@@ -90,46 +90,49 @@ func (bc *BarChart) Buffer() []Point {
// plot bar
for j := 0; j < bc.BarWidth; j++ {
for k := 0; k < h; k++ {
- p := Point{}
- p.Ch = ' '
- p.Bg = bc.BarColor
+ c := Cell{
+ Ch: ' ',
+ Bg: bc.BarColor,
+ }
if bc.BarColor == ColorDefault { // when color is default, space char treated as transparent!
- p.Bg |= AttrReverse
+ c.Bg |= AttrReverse
}
- p.X = bc.innerX + i*(bc.BarWidth+bc.BarGap) + j
- p.Y = bc.innerY + bc.innerHeight - 2 - k
- ps = append(ps, p)
+ x := bc.innerArea.Min.X + i*(bc.BarWidth+bc.BarGap) + j
+ y := bc.innerArea.Min.Y + bc.innerArea.Dy() - 2 - k
+ buf.Set(x, y, c)
}
}
// plot text
for j, k := 0, 0; j < len(bc.labels[i]); j++ {
w := charWidth(bc.labels[i][j])
- p := Point{}
- p.Ch = bc.labels[i][j]
- p.Bg = bc.BgColor
- p.Fg = bc.TextColor
- p.Y = bc.innerY + bc.innerHeight - 1
- p.X = bc.innerX + oftX + k
- ps = append(ps, p)
+ c := Cell{
+ Ch: bc.labels[i][j],
+ Bg: bc.Bg,
+ Fg: bc.TextColor,
+ }
+ y := bc.innerArea.Min.Y + bc.innerArea.Dy() - 1
+ x := bc.innerArea.Min.X + oftX + k
+ buf.Set(x, y, c)
k += w
}
// plot num
for j := 0; j < len(bc.dataNum[i]); j++ {
- p := Point{}
- p.Ch = bc.dataNum[i][j]
- p.Fg = bc.NumColor
- p.Bg = bc.BarColor
+ c := Cell{
+ Ch: bc.dataNum[i][j],
+ Fg: bc.NumColor,
+ Bg: bc.BarColor,
+ }
if bc.BarColor == ColorDefault { // the same as above
- p.Bg |= AttrReverse
+ c.Bg |= AttrReverse
}
if h == 0 {
- p.Bg = bc.BgColor
+ c.Bg = bc.Bg
}
- p.X = bc.innerX + oftX + (bc.BarWidth-len(bc.dataNum[i]))/2 + j
- p.Y = bc.innerY + bc.innerHeight - 2
- ps = append(ps, p)
+ x := bc.innerArea.Min.X + oftX + (bc.BarWidth-len(bc.dataNum[i]))/2 + j
+ y := bc.innerArea.Min.Y + bc.innerArea.Dy() - 2
+ buf.Set(x, y, c)
}
}
- return bc.Block.chopOverflow(ps)
+ return buf
}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/block.go b/Godeps/_workspace/src/github.com/gizak/termui/block.go
index 953136596..418738c8d 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/block.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/block.go
@@ -1,142 +1,240 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
package termui
+import "image"
+
+// Hline is a horizontal line.
+type Hline struct {
+ X int
+ Y int
+ Len int
+ Fg Attribute
+ Bg Attribute
+}
+
+// Vline is a vertical line.
+type Vline struct {
+ X int
+ Y int
+ Len int
+ Fg Attribute
+ Bg Attribute
+}
+
+// Buffer draws a horizontal line.
+func (l Hline) Buffer() Buffer {
+ if l.Len <= 0 {
+ return NewBuffer()
+ }
+ return NewFilledBuffer(l.X, l.Y, l.X+l.Len, l.Y+1, HORIZONTAL_LINE, l.Fg, l.Bg)
+}
+
+// Buffer draws a vertical line.
+func (l Vline) Buffer() Buffer {
+ if l.Len <= 0 {
+ return NewBuffer()
+ }
+ return NewFilledBuffer(l.X, l.Y, l.X+1, l.Y+l.Len, VERTICAL_LINE, l.Fg, l.Bg)
+}
+
+// Buffer draws a box border.
+func (b Block) drawBorder(buf Buffer) {
+ if !b.Border {
+ return
+ }
+
+ min := b.area.Min
+ max := b.area.Max
+
+ x0 := min.X
+ y0 := min.Y
+ x1 := max.X - 1
+ y1 := max.Y - 1
+
+ // draw lines
+ if b.BorderTop {
+ buf.Merge(Hline{x0, y0, x1 - x0, b.BorderFg, b.BorderBg}.Buffer())
+ }
+ if b.BorderBottom {
+ buf.Merge(Hline{x0, y1, x1 - x0, b.BorderFg, b.BorderBg}.Buffer())
+ }
+ if b.BorderLeft {
+ buf.Merge(Vline{x0, y0, y1 - y0, b.BorderFg, b.BorderBg}.Buffer())
+ }
+ if b.BorderRight {
+ buf.Merge(Vline{x1, y0, y1 - y0, b.BorderFg, b.BorderBg}.Buffer())
+ }
+
+ // draw corners
+ if b.BorderTop && b.BorderLeft && b.area.Dx() > 0 && b.area.Dy() > 0 {
+ buf.Set(x0, y0, Cell{TOP_LEFT, b.BorderFg, b.BorderBg})
+ }
+ if b.BorderTop && b.BorderRight && b.area.Dx() > 1 && b.area.Dy() > 0 {
+ buf.Set(x1, y0, Cell{TOP_RIGHT, b.BorderFg, b.BorderBg})
+ }
+ if b.BorderBottom && b.BorderLeft && b.area.Dx() > 0 && b.area.Dy() > 1 {
+ buf.Set(x0, y1, Cell{BOTTOM_LEFT, b.BorderFg, b.BorderBg})
+ }
+ if b.BorderBottom && b.BorderRight && b.area.Dx() > 1 && b.area.Dy() > 1 {
+ buf.Set(x1, y1, Cell{BOTTOM_RIGHT, b.BorderFg, b.BorderBg})
+ }
+}
+
+func (b Block) drawBorderLabel(buf Buffer) {
+ maxTxtW := b.area.Dx() - 2
+ tx := DTrimTxCls(DefaultTxBuilder.Build(b.BorderLabel, b.BorderLabelFg, b.BorderLabelBg), maxTxtW)
+
+ for i, w := 0, 0; i < len(tx); i++ {
+ buf.Set(b.area.Min.X+1+w, b.area.Min.Y, tx[i])
+ w += tx[i].Width()
+ }
+}
+
// Block is a base struct for all other upper level widgets,
// consider it as css: display:block.
// Normally you do not need to create it manually.
type Block struct {
+ area image.Rectangle
+ innerArea image.Rectangle
X int
Y int
- Border labeledBorder
- IsDisplay bool
- HasBorder bool
- BgColor Attribute
+ Border bool
+ BorderFg Attribute
+ BorderBg Attribute
+ BorderLeft bool
+ BorderRight bool
+ BorderTop bool
+ BorderBottom bool
+ BorderLabel string
+ BorderLabelFg Attribute
+ BorderLabelBg Attribute
+ Display bool
+ Bg Attribute
Width int
Height int
- innerWidth int
- innerHeight int
- innerX int
- innerY int
PaddingTop int
PaddingBottom int
PaddingLeft int
PaddingRight int
+ id string
+ Float Align
}
// NewBlock returns a *Block which inherits styles from current theme.
func NewBlock() *Block {
- d := Block{}
- d.IsDisplay = true
- d.HasBorder = theme.HasBorder
- d.Border.BgColor = theme.BorderBg
- d.Border.FgColor = theme.BorderFg
- d.Border.LabelBgColor = theme.BorderLabelTextBg
- d.Border.LabelFgColor = theme.BorderLabelTextFg
- d.BgColor = theme.BlockBg
- d.Width = 2
- d.Height = 2
- return &d
-}
-
-// compute box model
-func (d *Block) align() {
- d.innerWidth = d.Width - d.PaddingLeft - d.PaddingRight
- d.innerHeight = d.Height - d.PaddingTop - d.PaddingBottom
- d.innerX = d.X + d.PaddingLeft
- d.innerY = d.Y + d.PaddingTop
-
- if d.HasBorder {
- d.innerHeight -= 2
- d.innerWidth -= 2
- d.Border.X = d.X
- d.Border.Y = d.Y
- d.Border.Width = d.Width
- d.Border.Height = d.Height
- d.innerX++
- d.innerY++
- }
+ b := Block{}
+ b.Display = true
+ b.Border = true
+ b.BorderLeft = true
+ b.BorderRight = true
+ b.BorderTop = true
+ b.BorderBottom = true
+ b.BorderBg = ThemeAttr("border.bg")
+ b.BorderFg = ThemeAttr("border.fg")
+ b.BorderLabelBg = ThemeAttr("label.bg")
+ b.BorderLabelFg = ThemeAttr("label.fg")
+ b.Bg = ThemeAttr("block.bg")
+ b.Width = 2
+ b.Height = 2
+ b.id = GenId()
+ b.Float = AlignNone
+ return &b
+}
- if d.innerHeight < 0 {
- d.innerHeight = 0
- }
- if d.innerWidth < 0 {
- d.innerWidth = 0
- }
+func (b Block) Id() string {
+ return b.id
+}
+// Align computes box model
+func (b *Block) Align() {
+ // outer
+ b.area.Min.X = 0
+ b.area.Min.Y = 0
+ b.area.Max.X = b.Width
+ b.area.Max.Y = b.Height
+
+ // float
+ b.area = AlignArea(TermRect(), b.area, b.Float)
+ b.area = MoveArea(b.area, b.X, b.Y)
+
+ // inner
+ b.innerArea.Min.X = b.area.Min.X + b.PaddingLeft
+ b.innerArea.Min.Y = b.area.Min.Y + b.PaddingTop
+ b.innerArea.Max.X = b.area.Max.X - b.PaddingRight
+ b.innerArea.Max.Y = b.area.Max.Y - b.PaddingBottom
+
+ if b.Border {
+ if b.BorderLeft {
+ b.innerArea.Min.X++
+ }
+ if b.BorderRight {
+ b.innerArea.Max.X--
+ }
+ if b.BorderTop {
+ b.innerArea.Min.Y++
+ }
+ if b.BorderBottom {
+ b.innerArea.Max.Y--
+ }
+ }
}
// InnerBounds returns the internal bounds of the block after aligning and
// calculating the padding and border, if any.
-func (d *Block) InnerBounds() (x, y, width, height int) {
- d.align()
- return d.innerX, d.innerY, d.innerWidth, d.innerHeight
+func (b *Block) InnerBounds() image.Rectangle {
+ b.Align()
+ return b.innerArea
}
// Buffer implements Bufferer interface.
// Draw background and border (if any).
-func (d *Block) Buffer() []Point {
- d.align()
+func (b *Block) Buffer() Buffer {
+ b.Align()
- ps := []Point{}
- if !d.IsDisplay {
- return ps
- }
+ buf := NewBuffer()
+ buf.SetArea(b.area)
+ buf.Fill(' ', ColorDefault, b.Bg)
- if d.HasBorder {
- ps = d.Border.Buffer()
- }
+ b.drawBorder(buf)
+ b.drawBorderLabel(buf)
- for i := 0; i < d.innerWidth; i++ {
- for j := 0; j < d.innerHeight; j++ {
- p := Point{}
- p.X = d.X + 1 + i
- p.Y = d.Y + 1 + j
- p.Ch = ' '
- p.Bg = d.BgColor
- ps = append(ps, p)
- }
- }
- return ps
+ return buf
}
// GetHeight implements GridBufferer.
// It returns current height of the block.
-func (d Block) GetHeight() int {
- return d.Height
+func (b Block) GetHeight() int {
+ return b.Height
}
// SetX implements GridBufferer interface, which sets block's x position.
-func (d *Block) SetX(x int) {
- d.X = x
+func (b *Block) SetX(x int) {
+ b.X = x
}
// SetY implements GridBufferer interface, it sets y position for block.
-func (d *Block) SetY(y int) {
- d.Y = y
+func (b *Block) SetY(y int) {
+ b.Y = y
}
// SetWidth implements GridBuffer interface, it sets block's width.
-func (d *Block) SetWidth(w int) {
- d.Width = w
-}
-
-// chop the overflow parts
-func (d *Block) chopOverflow(ps []Point) []Point {
- nps := make([]Point, 0, len(ps))
- x := d.X
- y := d.Y
- w := d.Width
- h := d.Height
- for _, v := range ps {
- if v.X >= x &&
- v.X < x+w &&
- v.Y >= y &&
- v.Y < y+h {
- nps = append(nps, v)
- }
- }
- return nps
+func (b *Block) SetWidth(w int) {
+ b.Width = w
}
+
+func (b Block) InnerWidth() int {
+ return b.innerArea.Dx()
+}
+
+func (b Block) InnerHeight() int {
+ return b.innerArea.Dy()
+}
+
+func (b Block) InnerX() int {
+ return b.innerArea.Min.X
+}
+
+func (b Block) InnerY() int { return b.innerArea.Min.Y }
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/box_others.go b/Godeps/_workspace/src/github.com/gizak/termui/block_common.go
index bcc3d7ded..0f972cbbd 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/box_others.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/block_common.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
@@ -12,3 +12,9 @@ const HORIZONTAL_LINE = '─'
const TOP_LEFT = '┌'
const BOTTOM_RIGHT = '┘'
const BOTTOM_LEFT = '└'
+const VERTICAL_LEFT = '┤'
+const VERTICAL_RIGHT = '├'
+const HORIZONTAL_DOWN = '┬'
+const HORIZONTAL_UP = '┴'
+const QUOTA_LEFT = '«'
+const QUOTA_RIGHT = '»'
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/block_test.go b/Godeps/_workspace/src/github.com/gizak/termui/block_test.go
deleted file mode 100644
index 2de205b21..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/block_test.go
+++ /dev/null
@@ -1,46 +0,0 @@
-package termui
-
-import "testing"
-
-func TestBlock_InnerBounds(t *testing.T) {
- b := NewBlock()
- b.X = 10
- b.Y = 11
- b.Width = 12
- b.Height = 13
-
- assert := func(name string, x, y, w, h int) {
- t.Log(name)
- cx, cy, cw, ch := b.InnerBounds()
- if cx != x {
- t.Errorf("expected x to be %d but got %d", x, cx)
- }
- if cy != y {
- t.Errorf("expected y to be %d but got %d", y, cy)
- }
- if cw != w {
- t.Errorf("expected width to be %d but got %d", w, cw)
- }
- if ch != h {
- t.Errorf("expected height to be %d but got %d", h, ch)
- }
- }
-
- b.HasBorder = false
- assert("no border, no padding", 10, 11, 12, 13)
-
- b.HasBorder = true
- assert("border, no padding", 11, 12, 10, 11)
-
- b.PaddingBottom = 2
- assert("border, 2b padding", 11, 12, 10, 9)
-
- b.PaddingTop = 3
- assert("border, 2b 3t padding", 11, 15, 10, 6)
-
- b.PaddingLeft = 4
- assert("border, 2b 3t 4l padding", 15, 15, 6, 6)
-
- b.PaddingRight = 5
- assert("border, 2b 3t 4l 5r padding", 15, 15, 1, 6)
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/box_windows.go b/Godeps/_workspace/src/github.com/gizak/termui/block_windows.go
index dd39019fe..4dbc017de 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/box_windows.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/block_windows.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/box.go b/Godeps/_workspace/src/github.com/gizak/termui/box.go
deleted file mode 100644
index 1dcfd8692..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/box.go
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-package termui
-
-type border struct {
- X int
- Y int
- Width int
- Height int
- FgColor Attribute
- BgColor Attribute
-}
-
-type hline struct {
- X int
- Y int
- Length int
- FgColor Attribute
- BgColor Attribute
-}
-
-type vline struct {
- X int
- Y int
- Length int
- FgColor Attribute
- BgColor Attribute
-}
-
-// Draw a horizontal line.
-func (l hline) Buffer() []Point {
- pts := make([]Point, l.Length)
- for i := 0; i < l.Length; i++ {
- pts[i].X = l.X + i
- pts[i].Y = l.Y
- pts[i].Ch = HORIZONTAL_LINE
- pts[i].Bg = l.BgColor
- pts[i].Fg = l.FgColor
- }
- return pts
-}
-
-// Draw a vertical line.
-func (l vline) Buffer() []Point {
- pts := make([]Point, l.Length)
- for i := 0; i < l.Length; i++ {
- pts[i].X = l.X
- pts[i].Y = l.Y + i
- pts[i].Ch = VERTICAL_LINE
- pts[i].Bg = l.BgColor
- pts[i].Fg = l.FgColor
- }
- return pts
-}
-
-// Draw a box border.
-func (b border) Buffer() []Point {
- if b.Width < 2 || b.Height < 2 {
- return nil
- }
- pts := make([]Point, 2*b.Width+2*b.Height-4)
-
- pts[0].X = b.X
- pts[0].Y = b.Y
- pts[0].Fg = b.FgColor
- pts[0].Bg = b.BgColor
- pts[0].Ch = TOP_LEFT
-
- pts[1].X = b.X + b.Width - 1
- pts[1].Y = b.Y
- pts[1].Fg = b.FgColor
- pts[1].Bg = b.BgColor
- pts[1].Ch = TOP_RIGHT
-
- pts[2].X = b.X
- pts[2].Y = b.Y + b.Height - 1
- pts[2].Fg = b.FgColor
- pts[2].Bg = b.BgColor
- pts[2].Ch = BOTTOM_LEFT
-
- pts[3].X = b.X + b.Width - 1
- pts[3].Y = b.Y + b.Height - 1
- pts[3].Fg = b.FgColor
- pts[3].Bg = b.BgColor
- pts[3].Ch = BOTTOM_RIGHT
-
- copy(pts[4:], (hline{b.X + 1, b.Y, b.Width - 2, b.FgColor, b.BgColor}).Buffer())
- copy(pts[4+b.Width-2:], (hline{b.X + 1, b.Y + b.Height - 1, b.Width - 2, b.FgColor, b.BgColor}).Buffer())
- copy(pts[4+2*b.Width-4:], (vline{b.X, b.Y + 1, b.Height - 2, b.FgColor, b.BgColor}).Buffer())
- copy(pts[4+2*b.Width-4+b.Height-2:], (vline{b.X + b.Width - 1, b.Y + 1, b.Height - 2, b.FgColor, b.BgColor}).Buffer())
-
- return pts
-}
-
-type labeledBorder struct {
- border
- Label string
- LabelFgColor Attribute
- LabelBgColor Attribute
-}
-
-// Draw a box border with label.
-func (lb labeledBorder) Buffer() []Point {
- ps := lb.border.Buffer()
- maxTxtW := lb.Width - 2
- rs := trimStr2Runes(lb.Label, maxTxtW)
-
- for i, j, w := 0, 0, 0; i < len(rs); i++ {
- w = charWidth(rs[i])
- ps = append(ps, newPointWithAttrs(rs[i], lb.X+1+j, lb.Y, lb.LabelFgColor, lb.LabelBgColor))
- j += w
- }
-
- return ps
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/buffer.go b/Godeps/_workspace/src/github.com/gizak/termui/buffer.go
new file mode 100644
index 000000000..60e77863a
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gizak/termui/buffer.go
@@ -0,0 +1,106 @@
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Use of this source code is governed by a MIT license that can
+// be found in the LICENSE file.
+
+package termui
+
+import "image"
+
+// Cell is a rune with assigned Fg and Bg
+type Cell struct {
+ Ch rune
+ Fg Attribute
+ Bg Attribute
+}
+
+// Buffer is a renderable rectangle cell data container.
+type Buffer struct {
+ Area image.Rectangle // selected drawing area
+ CellMap map[image.Point]Cell
+}
+
+// At returns the cell at (x,y).
+func (b Buffer) At(x, y int) Cell {
+ return b.CellMap[image.Pt(x, y)]
+}
+
+// Set assigns a char to (x,y)
+func (b Buffer) Set(x, y int, c Cell) {
+ b.CellMap[image.Pt(x, y)] = c
+}
+
+// Bounds returns the domain for which At can return non-zero color.
+func (b Buffer) Bounds() image.Rectangle {
+ x0, y0, x1, y1 := 0, 0, 0, 0
+ for p := range b.CellMap {
+ if p.X > x1 {
+ x1 = p.X
+ }
+ if p.X < x0 {
+ x0 = p.X
+ }
+ if p.Y > y1 {
+ y1 = p.Y
+ }
+ if p.Y < y0 {
+ y0 = p.Y
+ }
+ }
+ return image.Rect(x0, y0, x1, y1)
+}
+
+// SetArea assigns a new rect area to Buffer b.
+func (b *Buffer) SetArea(r image.Rectangle) {
+ b.Area.Max = r.Max
+ b.Area.Min = r.Min
+}
+
+// Sync sets drawing area to the buffer's bound
+func (b Buffer) Sync() {
+ b.SetArea(b.Bounds())
+}
+
+// NewCell returns a new cell
+func NewCell(ch rune, fg, bg Attribute) Cell {
+ return Cell{ch, fg, bg}
+}
+
+// Merge merges bs Buffers onto b
+func (b *Buffer) Merge(bs ...Buffer) {
+ for _, buf := range bs {
+ for p, v := range buf.CellMap {
+ b.Set(p.X, p.Y, v)
+ }
+ b.SetArea(b.Area.Union(buf.Area))
+ }
+}
+
+// NewBuffer returns a new Buffer
+func NewBuffer() Buffer {
+ return Buffer{
+ CellMap: make(map[image.Point]Cell),
+ Area: image.Rectangle{}}
+}
+
+// Fill fills the Buffer b with ch,fg and bg.
+func (b Buffer) Fill(ch rune, fg, bg Attribute) {
+ for x := b.Area.Min.X; x < b.Area.Max.X; x++ {
+ for y := b.Area.Min.Y; y < b.Area.Max.Y; y++ {
+ b.Set(x, y, Cell{ch, fg, bg})
+ }
+ }
+}
+
+// NewFilledBuffer returns a new Buffer filled with ch, fb and bg.
+func NewFilledBuffer(x0, y0, x1, y1 int, ch rune, fg, bg Attribute) Buffer {
+ buf := NewBuffer()
+ buf.Area.Min = image.Pt(x0, y0)
+ buf.Area.Max = image.Pt(x1, y1)
+
+ for x := buf.Area.Min.X; x < buf.Area.Max.X; x++ {
+ for y := buf.Area.Min.Y; y < buf.Area.Max.Y; y++ {
+ buf.Set(x, y, Cell{ch, fg, bg})
+ }
+ }
+ return buf
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/canvas.go b/Godeps/_workspace/src/github.com/gizak/termui/canvas.go
index 614635ee4..4173780f3 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/canvas.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/canvas.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
@@ -63,12 +63,10 @@ func (c Canvas) Unset(x, y int) {
}
// Buffer returns un-styled points
-func (c Canvas) Buffer() []Point {
- ps := make([]Point, len(c))
- i := 0
+func (c Canvas) Buffer() Buffer {
+ buf := NewBuffer()
for k, v := range c {
- ps[i] = newPoint(v+brailleBase, k[0], k[1])
- i++
+ buf.Set(k[0], k[1], Cell{Ch: v + brailleBase})
}
- return ps
+ return buf
}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/canvas_test.go b/Godeps/_workspace/src/github.com/gizak/termui/canvas_test.go
deleted file mode 100644
index 021949ced..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/canvas_test.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package termui
-
-import (
- "testing"
-
- "github.com/davecgh/go-spew/spew"
-)
-
-func TestCanvasSet(t *testing.T) {
- c := NewCanvas()
- c.Set(0, 0)
- c.Set(0, 1)
- c.Set(0, 2)
- c.Set(0, 3)
- c.Set(1, 3)
- c.Set(2, 3)
- c.Set(3, 3)
- c.Set(4, 3)
- c.Set(5, 3)
- spew.Dump(c)
-}
-
-func TestCanvasUnset(t *testing.T) {
- c := NewCanvas()
- c.Set(0, 0)
- c.Set(0, 1)
- c.Set(0, 2)
- c.Unset(0, 2)
- spew.Dump(c)
- c.Unset(0, 3)
- spew.Dump(c)
-}
-
-func TestCanvasBuffer(t *testing.T) {
- c := NewCanvas()
- c.Set(0, 0)
- c.Set(0, 1)
- c.Set(0, 2)
- c.Set(0, 3)
- c.Set(1, 3)
- c.Set(2, 3)
- c.Set(3, 3)
- c.Set(4, 3)
- c.Set(5, 3)
- c.Set(6, 3)
- c.Set(7, 2)
- c.Set(8, 1)
- c.Set(9, 0)
- bufs := c.Buffer()
- rs := make([]rune, len(bufs))
- for i, v := range bufs {
- rs[i] = v.Ch
- }
- spew.Dump(string(rs))
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/config b/Godeps/_workspace/src/github.com/gizak/termui/config
new file mode 100644
index 000000000..18fd6a401
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gizak/termui/config
@@ -0,0 +1,26 @@
+#!/usr/bin/env perl6
+
+use v6;
+
+my $copyright = '// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Use of this source code is governed by a MIT license that can
+// be found in the LICENSE file.
+
+';
+
+sub MAIN('update-docstr', Str $srcp) {
+ if $srcp.IO.f {
+ $_ = $srcp.IO.slurp;
+ if m/^ \/\/\s Copyright .+? \n\n/ {
+ unless ~$/ eq $copyright {
+ s/^ \/\/\s Copyright .+? \n\n /$copyright/;
+ spurt $srcp, $_;
+ say "[updated] doc string for:"~$srcp;
+ }
+ } else {
+ say "[added] doc string for "~$srcp~" (no match found)";
+ $_ = $copyright ~ $_;
+ spurt $srcp, $_;
+ }
+ }
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/debug/debuger.go b/Godeps/_workspace/src/github.com/gizak/termui/debug/debuger.go
new file mode 100644
index 000000000..f723b9686
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gizak/termui/debug/debuger.go
@@ -0,0 +1,117 @@
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Use of this source code is governed by a MIT license that can
+// be found in the LICENSE file.
+
+package debug
+
+import (
+ "fmt"
+ "net/http"
+
+ "golang.org/x/net/websocket"
+)
+
+type Server struct {
+ Port string
+ Addr string
+ Path string
+ Msg chan string
+ chs []chan string
+}
+
+type Client struct {
+ Port string
+ Addr string
+ Path string
+ ws *websocket.Conn
+}
+
+var defaultPort = ":8080"
+
+func NewServer() *Server {
+ return &Server{
+ Port: defaultPort,
+ Addr: "localhost",
+ Path: "/echo",
+ Msg: make(chan string),
+ chs: make([]chan string, 0),
+ }
+}
+
+func NewClient() Client {
+ return Client{
+ Port: defaultPort,
+ Addr: "localhost",
+ Path: "/echo",
+ }
+}
+
+func (c Client) ConnectAndListen() error {
+ ws, err := websocket.Dial("ws://"+c.Addr+c.Port+c.Path, "", "http://"+c.Addr)
+ if err != nil {
+ return err
+ }
+ defer ws.Close()
+
+ var m string
+ for {
+ err := websocket.Message.Receive(ws, &m)
+ if err != nil {
+ fmt.Print(err)
+ return err
+ }
+ fmt.Print(m)
+ }
+}
+
+func (s *Server) ListenAndServe() error {
+ http.Handle(s.Path, websocket.Handler(func(ws *websocket.Conn) {
+ defer ws.Close()
+
+ mc := make(chan string)
+ s.chs = append(s.chs, mc)
+
+ for m := range mc {
+ websocket.Message.Send(ws, m)
+ }
+ }))
+
+ go func() {
+ for msg := range s.Msg {
+ for _, c := range s.chs {
+ go func(a chan string) {
+ a <- msg
+ }(c)
+ }
+ }
+ }()
+
+ return http.ListenAndServe(s.Port, nil)
+}
+
+func (s *Server) Log(msg string) {
+ go func() { s.Msg <- msg }()
+}
+
+func (s *Server) Logf(format string, a ...interface{}) {
+ s.Log(fmt.Sprintf(format, a...))
+}
+
+var DefaultServer = NewServer()
+var DefaultClient = NewClient()
+
+func ListenAndServe() error {
+ return DefaultServer.ListenAndServe()
+}
+
+func ConnectAndListen() error {
+ return DefaultClient.ConnectAndListen()
+}
+
+func Log(msg string) {
+ DefaultServer.Log(msg)
+}
+
+func Logf(format string, a ...interface{}) {
+ DefaultServer.Logf(format, a...)
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/doc.go b/Godeps/_workspace/src/github.com/gizak/termui/doc.go
index 43f886f55..b80e46415 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/doc.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/doc.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/events.go b/Godeps/_workspace/src/github.com/gizak/termui/events.go
index 23a189b56..177bbb4b0 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/events.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/events.go
@@ -1,219 +1,316 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
-//
-// Portions of this file uses [termbox-go](https://github.com/nsf/termbox-go/blob/54b74d087b7c397c402d0e3b66d2ccb6eaf5c2b4/api_common.go)
-// by [authors](https://github.com/nsf/termbox-go/blob/master/AUTHORS)
-// under [license](https://github.com/nsf/termbox-go/blob/master/LICENSE)
package termui
-import "github.com/nsf/termbox-go"
+import (
+ "path"
+ "strconv"
+ "sync"
+ "time"
-/***********************************termbox-go**************************************/
-
-type (
- EventType uint8
- Modifier uint8
- Key uint16
+ "github.com/nsf/termbox-go"
)
-// This type represents a termbox event. The 'Mod', 'Key' and 'Ch' fields are
-// valid if 'Type' is EventKey. The 'Width' and 'Height' fields are valid if
-// 'Type' is EventResize. The 'Err' field is valid if 'Type' is EventError.
type Event struct {
- Type EventType // one of Event* constants
- Mod Modifier // one of Mod* constants or 0
- Key Key // one of Key* constants, invalid if 'Ch' is not 0
- Ch rune // a unicode character
- Width int // width of the screen
- Height int // height of the screen
- Err error // error in case if input failed
- MouseX int // x coord of mouse
- MouseY int // y coord of mouse
- N int // number of bytes written when getting a raw event
-}
-
-const (
- KeyF1 Key = 0xFFFF - iota
- KeyF2
- KeyF3
- KeyF4
- KeyF5
- KeyF6
- KeyF7
- KeyF8
- KeyF9
- KeyF10
- KeyF11
- KeyF12
- KeyInsert
- KeyDelete
- KeyHome
- KeyEnd
- KeyPgup
- KeyPgdn
- KeyArrowUp
- KeyArrowDown
- KeyArrowLeft
- KeyArrowRight
- key_min // see terminfo
- MouseLeft
- MouseMiddle
- MouseRight
-)
+ Type string
+ Path string
+ From string
+ To string
+ Data interface{}
+ Time int64
+}
-const (
- KeyCtrlTilde Key = 0x00
- KeyCtrl2 Key = 0x00
- KeyCtrlSpace Key = 0x00
- KeyCtrlA Key = 0x01
- KeyCtrlB Key = 0x02
- KeyCtrlC Key = 0x03
- KeyCtrlD Key = 0x04
- KeyCtrlE Key = 0x05
- KeyCtrlF Key = 0x06
- KeyCtrlG Key = 0x07
- KeyBackspace Key = 0x08
- KeyCtrlH Key = 0x08
- KeyTab Key = 0x09
- KeyCtrlI Key = 0x09
- KeyCtrlJ Key = 0x0A
- KeyCtrlK Key = 0x0B
- KeyCtrlL Key = 0x0C
- KeyEnter Key = 0x0D
- KeyCtrlM Key = 0x0D
- KeyCtrlN Key = 0x0E
- KeyCtrlO Key = 0x0F
- KeyCtrlP Key = 0x10
- KeyCtrlQ Key = 0x11
- KeyCtrlR Key = 0x12
- KeyCtrlS Key = 0x13
- KeyCtrlT Key = 0x14
- KeyCtrlU Key = 0x15
- KeyCtrlV Key = 0x16
- KeyCtrlW Key = 0x17
- KeyCtrlX Key = 0x18
- KeyCtrlY Key = 0x19
- KeyCtrlZ Key = 0x1A
- KeyEsc Key = 0x1B
- KeyCtrlLsqBracket Key = 0x1B
- KeyCtrl3 Key = 0x1B
- KeyCtrl4 Key = 0x1C
- KeyCtrlBackslash Key = 0x1C
- KeyCtrl5 Key = 0x1D
- KeyCtrlRsqBracket Key = 0x1D
- KeyCtrl6 Key = 0x1E
- KeyCtrl7 Key = 0x1F
- KeyCtrlSlash Key = 0x1F
- KeyCtrlUnderscore Key = 0x1F
- KeySpace Key = 0x20
- KeyBackspace2 Key = 0x7F
- KeyCtrl8 Key = 0x7F
-)
+var sysEvtChs []chan Event
-// Alt modifier constant, see Event.Mod field and SetInputMode function.
-const (
- ModAlt Modifier = 0x01
-)
+type EvtKbd struct {
+ KeyStr string
+}
-// Event type. See Event.Type field.
-const (
- EventKey EventType = iota
- EventResize
- EventMouse
- EventError
- EventInterrupt
- EventRaw
- EventNone
-)
+func evtKbd(e termbox.Event) EvtKbd {
+ ek := EvtKbd{}
-/**************************************end**************************************/
+ k := string(e.Ch)
+ pre := ""
+ mod := ""
-// convert termbox.Event to termui.Event
-func uiEvt(e termbox.Event) Event {
- event := Event{}
- event.Type = EventType(e.Type)
- event.Mod = Modifier(e.Mod)
- event.Key = Key(e.Key)
- event.Ch = e.Ch
- event.Width = e.Width
- event.Height = e.Height
- event.Err = e.Err
- event.MouseX = e.MouseX
- event.MouseY = e.MouseY
- event.N = e.N
+ if e.Mod == termbox.ModAlt {
+ mod = "M-"
+ }
+ if e.Ch == 0 {
+ if e.Key > 0xFFFF-12 {
+ k = "<f" + strconv.Itoa(0xFFFF-int(e.Key)+1) + ">"
+ } else if e.Key > 0xFFFF-25 {
+ ks := []string{"<insert>", "<delete>", "<home>", "<end>", "<previous>", "<next>", "<up>", "<down>", "<left>", "<right>"}
+ k = ks[0xFFFF-int(e.Key)-12]
+ }
- return event
+ if e.Key <= 0x7F {
+ pre = "C-"
+ k = string('a' - 1 + int(e.Key))
+ kmap := map[termbox.Key][2]string{
+ termbox.KeyCtrlSpace: {"C-", "<space>"},
+ termbox.KeyBackspace: {"", "<backspace>"},
+ termbox.KeyTab: {"", "<tab>"},
+ termbox.KeyEnter: {"", "<enter>"},
+ termbox.KeyEsc: {"", "<escape>"},
+ termbox.KeyCtrlBackslash: {"C-", "\\"},
+ termbox.KeyCtrlSlash: {"C-", "/"},
+ termbox.KeySpace: {"", "<space>"},
+ termbox.KeyCtrl8: {"C-", "8"},
+ }
+ if sk, ok := kmap[e.Key]; ok {
+ pre = sk[0]
+ k = sk[1]
+ }
+ }
+ }
+
+ ek.KeyStr = pre + mod + k
+ return ek
}
-var evtChs = make([]chan Event, 0)
+func crtTermboxEvt(e termbox.Event) Event {
+ systypemap := map[termbox.EventType]string{
+ termbox.EventKey: "keyboard",
+ termbox.EventResize: "window",
+ termbox.EventMouse: "mouse",
+ termbox.EventError: "error",
+ termbox.EventInterrupt: "interrupt",
+ }
+ ne := Event{From: "/sys", Time: time.Now().Unix()}
+ typ := e.Type
+ ne.Type = systypemap[typ]
+
+ switch typ {
+ case termbox.EventKey:
+ kbd := evtKbd(e)
+ ne.Path = "/sys/kbd/" + kbd.KeyStr
+ ne.Data = kbd
+ case termbox.EventResize:
+ wnd := EvtWnd{}
+ wnd.Width = e.Width
+ wnd.Height = e.Height
+ ne.Path = "/sys/wnd/resize"
+ ne.Data = wnd
+ case termbox.EventError:
+ err := EvtErr(e.Err)
+ ne.Path = "/sys/err"
+ ne.Data = err
+ case termbox.EventMouse:
+ m := EvtMouse{}
+ m.X = e.MouseX
+ m.Y = e.MouseY
+ ne.Path = "/sys/mouse"
+ ne.Data = m
+ }
+ return ne
+}
-// EventCh returns an output-only event channel.
-// This function can be called many times (multiplexer).
-func EventCh() <-chan Event {
- out := make(chan Event)
- evtChs = append(evtChs, out)
- return out
+type EvtWnd struct {
+ Width int
+ Height int
}
-// turn on event listener
-func evtListen() {
- go func() {
- for {
- e := termbox.PollEvent()
- // dispatch
- for _, c := range evtChs {
- go func(ch chan Event) {
- ch <- uiEvt(e)
- }(c)
- }
+type EvtMouse struct {
+ X int
+ Y int
+ Press string
+}
+
+type EvtErr error
+
+func hookTermboxEvt() {
+ for {
+ e := termbox.PollEvent()
+
+ for _, c := range sysEvtChs {
+ go func(ch chan Event) {
+ ch <- crtTermboxEvt(e)
+ }(c)
}
+ }
+}
+
+func NewSysEvtCh() chan Event {
+ ec := make(chan Event)
+ sysEvtChs = append(sysEvtChs, ec)
+ return ec
+}
+
+var DefaultEvtStream = NewEvtStream()
+
+type EvtStream struct {
+ sync.RWMutex
+ srcMap map[string]chan Event
+ stream chan Event
+ wg sync.WaitGroup
+ sigStopLoop chan Event
+ Handlers map[string]func(Event)
+ hook func(Event)
+}
+
+func NewEvtStream() *EvtStream {
+ return &EvtStream{
+ srcMap: make(map[string]chan Event),
+ stream: make(chan Event),
+ Handlers: make(map[string]func(Event)),
+ sigStopLoop: make(chan Event),
+ }
+}
+
+func (es *EvtStream) Init() {
+ es.Merge("internal", es.sigStopLoop)
+ go func() {
+ es.wg.Wait()
+ close(es.stream)
}()
}
-/*
-// EventHandlers is a handler sequence
-var EventHandlers []func(Event)
+func cleanPath(p string) string {
+ if p == "" {
+ return "/"
+ }
+ if p[0] != '/' {
+ p = "/" + p
+ }
+ return path.Clean(p)
+}
-var signalQuit = make(chan bool)
+func isPathMatch(pattern, path string) bool {
+ if len(pattern) == 0 {
+ return false
+ }
+ n := len(pattern)
+ return len(path) >= n && path[0:n] == pattern
+}
+
+func (es *EvtStream) Merge(name string, ec chan Event) {
+ es.Lock()
+ defer es.Unlock()
+
+ es.wg.Add(1)
+ es.srcMap[name] = ec
-// Quit sends quit signal to terminate termui
-func Quit() {
- signalQuit <- true
+ go func(a chan Event) {
+ for n := range a {
+ n.From = name
+ es.stream <- n
+ }
+ es.wg.Done()
+ }(ec)
}
-// Wait listening to signalQuit, block operation.
-func Wait() {
- <-signalQuit
+func (es *EvtStream) Handle(path string, handler func(Event)) {
+ es.Handlers[cleanPath(path)] = handler
}
-// RegEvtHandler register function into TSEventHandler sequence.
-func RegEvtHandler(fn func(Event)) {
- EventHandlers = append(EventHandlers, fn)
+func findMatch(mux map[string]func(Event), path string) string {
+ n := -1
+ pattern := ""
+ for m := range mux {
+ if !isPathMatch(m, path) {
+ continue
+ }
+ if len(m) > n {
+ pattern = m
+ n = len(m)
+ }
+ }
+ return pattern
+
}
-// EventLoop handles all events and
-// redirects every event to callbacks in EventHandlers
-func EventLoop() {
- evt := make(chan termbox.Event)
+func (es *EvtStream) match(path string) string {
+ return findMatch(es.Handlers, path)
+}
+
+func (es *EvtStream) Hook(f func(Event)) {
+ es.hook = f
+}
+func (es *EvtStream) Loop() {
+ for e := range es.stream {
+ switch e.Path {
+ case "/sig/stoploop":
+ return
+ }
+ go func(a Event) {
+ es.RLock()
+ defer es.RUnlock()
+ if pattern := es.match(a.Path); pattern != "" {
+ es.Handlers[pattern](a)
+ }
+ }(e)
+ if es.hook != nil {
+ es.hook(e)
+ }
+ }
+}
+
+func (es *EvtStream) StopLoop() {
go func() {
- for {
- evt <- termbox.PollEvent()
+ e := Event{
+ Path: "/sig/stoploop",
}
+ es.sigStopLoop <- e
}()
+}
- for {
- select {
- case c := <-signalQuit:
- defer func() { signalQuit <- c }()
- return
- case e := <-evt:
- for _, fn := range EventHandlers {
- fn(uiEvt(e))
+func Merge(name string, ec chan Event) {
+ DefaultEvtStream.Merge(name, ec)
+}
+
+func Handle(path string, handler func(Event)) {
+ DefaultEvtStream.Handle(path, handler)
+}
+
+func Loop() {
+ DefaultEvtStream.Loop()
+}
+
+func StopLoop() {
+ DefaultEvtStream.StopLoop()
+}
+
+type EvtTimer struct {
+ Duration time.Duration
+ Count uint64
+}
+
+func NewTimerCh(du time.Duration) chan Event {
+ t := make(chan Event)
+
+ go func(a chan Event) {
+ n := uint64(0)
+ for {
+ n++
+ time.Sleep(du)
+ e := Event{}
+ e.Type = "timer"
+ e.Path = "/timer/" + du.String()
+ e.Time = time.Now().Unix()
+ e.Data = EvtTimer{
+ Duration: du,
+ Count: n,
}
+ t <- e
+
}
- }
+ }(t)
+ return t
+}
+
+var DefualtHandler = func(e Event) {
+}
+
+var usrEvtCh = make(chan Event)
+
+func SendCustomEvt(path string, data interface{}) {
+ e := Event{}
+ e.Path = path
+ e.Data = data
+ e.Time = time.Now().Unix()
+ usrEvtCh <- e
}
-*/
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/events_test.go b/Godeps/_workspace/src/github.com/gizak/termui/events_test.go
deleted file mode 100644
index 1137b1d26..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/events_test.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-//
-// Portions of this file uses [termbox-go](https://github.com/nsf/termbox-go/blob/54b74d087b7c397c402d0e3b66d2ccb6eaf5c2b4/api_common.go)
-// by [authors](https://github.com/nsf/termbox-go/blob/master/AUTHORS)
-// under [license](https://github.com/nsf/termbox-go/blob/master/LICENSE)
-
-package termui
-
-import (
- "errors"
- "testing"
-
- termbox "github.com/nsf/termbox-go"
- "github.com/stretchr/testify/assert"
-)
-
-type boxEvent termbox.Event
-
-func TestUiEvt(t *testing.T) {
- err := errors.New("This is a mock error")
- event := boxEvent{3, 5, 2, 'H', 200, 500, err, 50, 30, 2}
- expetced := Event{3, 5, 2, 'H', 200, 500, err, 50, 30, 2}
-
- // We need to do that ugly casting so that vet does not complain
- assert.Equal(t, uiEvt(termbox.Event(event)), expetced)
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/barchart.go b/Godeps/_workspace/src/github.com/gizak/termui/example/barchart.go
deleted file mode 100644
index 83947f580..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/barchart.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import "github.com/gizak/termui"
-
-func main() {
- err := termui.Init()
- if err != nil {
- panic(err)
- }
- defer termui.Close()
-
- termui.UseTheme("helloworld")
-
- bc := termui.NewBarChart()
- data := []int{3, 2, 5, 3, 9, 5, 3, 2, 5, 8, 3, 2, 4, 5, 3, 2, 5, 7, 5, 3, 2, 6, 7, 4, 6, 3, 6, 7, 8, 3, 6, 4, 5, 3, 2, 4, 6, 4, 8, 5, 9, 4, 3, 6, 5, 3, 6}
- bclabels := []string{"S0", "S1", "S2", "S3", "S4", "S5"}
- bc.Border.Label = "Bar Chart"
- bc.Data = data
- bc.Width = 26
- bc.Height = 10
- bc.DataLabels = bclabels
- bc.TextColor = termui.ColorGreen
- bc.BarColor = termui.ColorRed
- bc.NumColor = termui.ColorYellow
-
- termui.Render(bc)
-
- <-termui.EventCh()
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/barchart.png b/Godeps/_workspace/src/github.com/gizak/termui/example/barchart.png
deleted file mode 100644
index a37912f7f..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/barchart.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/dashboard.gif b/Godeps/_workspace/src/github.com/gizak/termui/example/dashboard.gif
deleted file mode 100644
index 8e1859c72..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/dashboard.gif
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/dashboard.go b/Godeps/_workspace/src/github.com/gizak/termui/example/dashboard.go
deleted file mode 100644
index c14bb4413..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/dashboard.go
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import ui "github.com/gizak/termui"
-import "math"
-
-import "time"
-
-func main() {
- err := ui.Init()
- if err != nil {
- panic(err)
- }
- defer ui.Close()
-
- p := ui.NewPar(":PRESS q TO QUIT DEMO")
- p.Height = 3
- p.Width = 50
- p.TextFgColor = ui.ColorWhite
- p.Border.Label = "Text Box"
- p.Border.FgColor = ui.ColorCyan
-
- strs := []string{"[0] gizak/termui", "[1] editbox.go", "[2] iterrupt.go", "[3] keyboard.go", "[4] output.go", "[5] random_out.go", "[6] dashboard.go", "[7] nsf/termbox-go"}
- list := ui.NewList()
- list.Items = strs
- list.ItemFgColor = ui.ColorYellow
- list.Border.Label = "List"
- list.Height = 7
- list.Width = 25
- list.Y = 4
-
- g := ui.NewGauge()
- g.Percent = 50
- g.Width = 50
- g.Height = 3
- g.Y = 11
- g.Border.Label = "Gauge"
- g.BarColor = ui.ColorRed
- g.Border.FgColor = ui.ColorWhite
- g.Border.LabelFgColor = ui.ColorCyan
-
- spark := ui.Sparkline{}
- spark.Height = 1
- spark.Title = "srv 0:"
- spdata := []int{4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1, 7, 10, 10, 14, 13, 6, 4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1, 7, 10, 10, 14, 13, 6, 4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1, 7, 10, 10, 14, 13, 6, 4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1, 7, 10, 10, 14, 13, 6}
- spark.Data = spdata
- spark.LineColor = ui.ColorCyan
- spark.TitleColor = ui.ColorWhite
-
- spark1 := ui.Sparkline{}
- spark1.Height = 1
- spark1.Title = "srv 1:"
- spark1.Data = spdata
- spark1.TitleColor = ui.ColorWhite
- spark1.LineColor = ui.ColorRed
-
- sp := ui.NewSparklines(spark, spark1)
- sp.Width = 25
- sp.Height = 7
- sp.Border.Label = "Sparkline"
- sp.Y = 4
- sp.X = 25
-
- sinps := (func() []float64 {
- n := 220
- ps := make([]float64, n)
- for i := range ps {
- ps[i] = 1 + math.Sin(float64(i)/5)
- }
- return ps
- })()
-
- lc := ui.NewLineChart()
- lc.Border.Label = "dot-mode Line Chart"
- lc.Data = sinps
- lc.Width = 50
- lc.Height = 11
- lc.X = 0
- lc.Y = 14
- lc.AxesColor = ui.ColorWhite
- lc.LineColor = ui.ColorRed | ui.AttrBold
- lc.Mode = "dot"
-
- bc := ui.NewBarChart()
- bcdata := []int{3, 2, 5, 3, 9, 5, 3, 2, 5, 8, 3, 2, 4, 5, 3, 2, 5, 7, 5, 3, 2, 6, 7, 4, 6, 3, 6, 7, 8, 3, 6, 4, 5, 3, 2, 4, 6, 4, 8, 5, 9, 4, 3, 6, 5, 3, 6}
- bclabels := []string{"S0", "S1", "S2", "S3", "S4", "S5"}
- bc.Border.Label = "Bar Chart"
- bc.Width = 26
- bc.Height = 10
- bc.X = 51
- bc.Y = 0
- bc.DataLabels = bclabels
- bc.BarColor = ui.ColorGreen
- bc.NumColor = ui.ColorBlack
-
- lc1 := ui.NewLineChart()
- lc1.Border.Label = "braille-mode Line Chart"
- lc1.Data = sinps
- lc1.Width = 26
- lc1.Height = 11
- lc1.X = 51
- lc1.Y = 14
- lc1.AxesColor = ui.ColorWhite
- lc1.LineColor = ui.ColorYellow | ui.AttrBold
-
- p1 := ui.NewPar("Hey!\nI am a borderless block!")
- p1.HasBorder = false
- p1.Width = 26
- p1.Height = 2
- p1.TextFgColor = ui.ColorMagenta
- p1.X = 52
- p1.Y = 11
-
- draw := func(t int) {
- g.Percent = t % 101
- list.Items = strs[t%9:]
- sp.Lines[0].Data = spdata[:30+t%50]
- sp.Lines[1].Data = spdata[:35+t%50]
- lc.Data = sinps[t/2:]
- lc1.Data = sinps[2*t:]
- bc.Data = bcdata[t/2%10:]
- ui.Render(p, list, g, sp, lc, bc, lc1, p1)
- }
-
- evt := ui.EventCh()
-
- i := 0
- for {
- select {
- case e := <-evt:
- if e.Type == ui.EventKey && e.Ch == 'q' {
- return
- }
- default:
- draw(i)
- i++
- if i == 102 {
- return
- }
- time.Sleep(time.Second / 2)
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/gauge.go b/Godeps/_workspace/src/github.com/gizak/termui/example/gauge.go
deleted file mode 100644
index b7033580f..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/gauge.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import "github.com/gizak/termui"
-
-func main() {
- err := termui.Init()
- if err != nil {
- panic(err)
- }
- defer termui.Close()
-
- termui.UseTheme("helloworld")
-
- g0 := termui.NewGauge()
- g0.Percent = 40
- g0.Width = 50
- g0.Height = 3
- g0.Border.Label = "Slim Gauge"
- g0.BarColor = termui.ColorRed
- g0.Border.FgColor = termui.ColorWhite
- g0.Border.LabelFgColor = termui.ColorCyan
-
- g2 := termui.NewGauge()
- g2.Percent = 60
- g2.Width = 50
- g2.Height = 3
- g2.PercentColor = termui.ColorBlue
- g2.Y = 3
- g2.Border.Label = "Slim Gauge"
- g2.BarColor = termui.ColorYellow
- g2.Border.FgColor = termui.ColorWhite
-
- g1 := termui.NewGauge()
- g1.Percent = 30
- g1.Width = 50
- g1.Height = 5
- g1.Y = 6
- g1.Border.Label = "Big Gauge"
- g1.PercentColor = termui.ColorYellow
- g1.BarColor = termui.ColorGreen
- g1.Border.FgColor = termui.ColorWhite
- g1.Border.LabelFgColor = termui.ColorMagenta
-
- g3 := termui.NewGauge()
- g3.Percent = 50
- g3.Width = 50
- g3.Height = 3
- g3.Y = 11
- g3.Border.Label = "Gauge with custom label"
- g3.Label = "{{percent}}% (100MBs free)"
- g3.LabelAlign = termui.AlignRight
-
- termui.Render(g0, g1, g2, g3)
-
- <-termui.EventCh()
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/gauge.png b/Godeps/_workspace/src/github.com/gizak/termui/example/gauge.png
deleted file mode 100644
index 5c20e6e8a..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/gauge.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/grid.gif b/Godeps/_workspace/src/github.com/gizak/termui/example/grid.gif
deleted file mode 100644
index 7490043de..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/grid.gif
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/grid.go b/Godeps/_workspace/src/github.com/gizak/termui/example/grid.go
deleted file mode 100644
index 49121411f..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/grid.go
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import ui "github.com/gizak/termui"
-import "math"
-import "time"
-
-func main() {
- err := ui.Init()
- if err != nil {
- panic(err)
- }
- defer ui.Close()
-
- sinps := (func() []float64 {
- n := 400
- ps := make([]float64, n)
- for i := range ps {
- ps[i] = 1 + math.Sin(float64(i)/5)
- }
- return ps
- })()
- sinpsint := (func() []int {
- ps := make([]int, len(sinps))
- for i, v := range sinps {
- ps[i] = int(100*v + 10)
- }
- return ps
- })()
-
- ui.UseTheme("helloworld")
-
- spark := ui.Sparkline{}
- spark.Height = 8
- spdata := sinpsint
- spark.Data = spdata[:100]
- spark.LineColor = ui.ColorCyan
- spark.TitleColor = ui.ColorWhite
-
- sp := ui.NewSparklines(spark)
- sp.Height = 11
- sp.Border.Label = "Sparkline"
-
- lc := ui.NewLineChart()
- lc.Border.Label = "braille-mode Line Chart"
- lc.Data = sinps
- lc.Height = 11
- lc.AxesColor = ui.ColorWhite
- lc.LineColor = ui.ColorYellow | ui.AttrBold
-
- gs := make([]*ui.Gauge, 3)
- for i := range gs {
- gs[i] = ui.NewGauge()
- gs[i].Height = 2
- gs[i].HasBorder = false
- gs[i].Percent = i * 10
- gs[i].PaddingBottom = 1
- gs[i].BarColor = ui.ColorRed
- }
-
- ls := ui.NewList()
- ls.HasBorder = false
- ls.Items = []string{
- "[1] Downloading File 1",
- "", // == \newline
- "[2] Downloading File 2",
- "",
- "[3] Uploading File 3",
- }
- ls.Height = 5
-
- par := ui.NewPar("<> This row has 3 columns\n<- Widgets can be stacked up like left side\n<- Stacked widgets are treated as a single widget")
- par.Height = 5
- par.Border.Label = "Demonstration"
-
- // build layout
- ui.Body.AddRows(
- ui.NewRow(
- ui.NewCol(6, 0, sp),
- ui.NewCol(6, 0, lc)),
- ui.NewRow(
- ui.NewCol(3, 0, ls),
- ui.NewCol(3, 0, gs[0], gs[1], gs[2]),
- ui.NewCol(6, 0, par)))
-
- // calculate layout
- ui.Body.Align()
-
- done := make(chan bool)
- redraw := make(chan bool)
-
- update := func() {
- for i := 0; i < 103; i++ {
- for _, g := range gs {
- g.Percent = (g.Percent + 3) % 100
- }
-
- sp.Lines[0].Data = spdata[:100+i]
- lc.Data = sinps[2*i:]
-
- time.Sleep(time.Second / 2)
- redraw <- true
- }
- done <- true
- }
-
- evt := ui.EventCh()
-
- ui.Render(ui.Body)
- go update()
-
- for {
- select {
- case e := <-evt:
- if e.Type == ui.EventKey && e.Ch == 'q' {
- return
- }
- if e.Type == ui.EventResize {
- ui.Body.Width = ui.TermWidth()
- ui.Body.Align()
- go func() { redraw <- true }()
- }
- case <-done:
- return
- case <-redraw:
- ui.Render(ui.Body)
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/linechart.go b/Godeps/_workspace/src/github.com/gizak/termui/example/linechart.go
deleted file mode 100644
index 1db543496..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/linechart.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import (
- "math"
-
- "github.com/gizak/termui"
-)
-
-func main() {
- err := termui.Init()
- if err != nil {
- panic(err)
- }
- defer termui.Close()
-
- termui.UseTheme("helloworld")
-
- sinps := (func() []float64 {
- n := 220
- ps := make([]float64, n)
- for i := range ps {
- ps[i] = 1 + math.Sin(float64(i)/5)
- }
- return ps
- })()
-
- lc0 := termui.NewLineChart()
- lc0.Border.Label = "braille-mode Line Chart"
- lc0.Data = sinps
- lc0.Width = 50
- lc0.Height = 12
- lc0.X = 0
- lc0.Y = 0
- lc0.AxesColor = termui.ColorWhite
- lc0.LineColor = termui.ColorGreen | termui.AttrBold
-
- lc1 := termui.NewLineChart()
- lc1.Border.Label = "dot-mode Line Chart"
- lc1.Mode = "dot"
- lc1.Data = sinps
- lc1.Width = 26
- lc1.Height = 12
- lc1.X = 51
- lc1.DotStyle = '+'
- lc1.AxesColor = termui.ColorWhite
- lc1.LineColor = termui.ColorYellow | termui.AttrBold
-
- lc2 := termui.NewLineChart()
- lc2.Border.Label = "dot-mode Line Chart"
- lc2.Mode = "dot"
- lc2.Data = sinps[4:]
- lc2.Width = 77
- lc2.Height = 16
- lc2.X = 0
- lc2.Y = 12
- lc2.AxesColor = termui.ColorWhite
- lc2.LineColor = termui.ColorCyan | termui.AttrBold
-
- termui.Render(lc0, lc1, lc2)
-
- <-termui.EventCh()
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/linechart.png b/Godeps/_workspace/src/github.com/gizak/termui/example/linechart.png
deleted file mode 100644
index 655ef435f..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/linechart.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/list.go b/Godeps/_workspace/src/github.com/gizak/termui/example/list.go
deleted file mode 100644
index d33a3616c..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/list.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import "github.com/gizak/termui"
-
-func main() {
- err := termui.Init()
- if err != nil {
- panic(err)
- }
- defer termui.Close()
-
- termui.UseTheme("helloworld")
-
- strs := []string{
- "[0] github.com/gizak/termui",
- "[1] 你好,世界",
- "[2] こんにちは世界",
- "[3] keyboard.go",
- "[4] output.go",
- "[5] random_out.go",
- "[6] dashboard.go",
- "[7] nsf/termbox-go"}
-
- ls := termui.NewList()
- ls.Items = strs
- ls.ItemFgColor = termui.ColorYellow
- ls.Border.Label = "List"
- ls.Height = 7
- ls.Width = 25
- ls.Y = 0
-
- termui.Render(ls)
-
- <-termui.EventCh()
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/list.png b/Godeps/_workspace/src/github.com/gizak/termui/example/list.png
deleted file mode 100644
index 8ca08c079..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/list.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/mbarchart.go b/Godeps/_workspace/src/github.com/gizak/termui/example/mbarchart.go
deleted file mode 100644
index a32a28e0a..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/mbarchart.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import "github.com/gizak/termui"
-
-func main() {
- err := termui.Init()
- if err != nil {
- panic(err)
- }
- defer termui.Close()
-
- termui.UseTheme("helloworld")
-
- bc := termui.NewMBarChart()
- math := []int{90, 85, 90, 80}
- english := []int{70, 85, 75, 60}
- science := []int{75, 60, 80, 85}
- compsci := []int{100, 100, 100, 100}
- bc.Data[0] = math
- bc.Data[1] = english
- bc.Data[2] = science
- bc.Data[3] = compsci
- studentsName := []string{"Ken", "Rob", "Dennis", "Linus"}
- bc.Border.Label = "Student's Marks X-Axis=Name Y-Axis=Marks[Math,English,Science,ComputerScience] in %"
- bc.Width = 100
- bc.Height = 50
- bc.Y = 10
- bc.BarWidth = 10
- bc.DataLabels = studentsName
- bc.ShowScale = true //Show y_axis scale value (min and max)
- bc.SetMax(400)
-
- bc.TextColor = termui.ColorGreen //this is color for label (x-axis)
- bc.BarColor[3] = termui.ColorGreen //BarColor for computerscience
- bc.BarColor[1] = termui.ColorYellow //Bar Color for english
- bc.NumColor[3] = termui.ColorRed // Num color for computerscience
- bc.NumColor[1] = termui.ColorRed // num color for english
-
- //Other colors are automatically populated, btw All the students seems do well in computerscience. :p
-
- termui.Render(bc)
-
- <-termui.EventCh()
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/mbarchart.png b/Godeps/_workspace/src/github.com/gizak/termui/example/mbarchart.png
deleted file mode 100644
index 9a4252616..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/mbarchart.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/par.go b/Godeps/_workspace/src/github.com/gizak/termui/example/par.go
deleted file mode 100644
index ffbc60aa8..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/par.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import "github.com/gizak/termui"
-
-func main() {
- err := termui.Init()
- if err != nil {
- panic(err)
- }
- defer termui.Close()
-
- termui.UseTheme("helloworld")
-
- par0 := termui.NewPar("Borderless Text")
- par0.Height = 1
- par0.Width = 20
- par0.Y = 1
- par0.HasBorder = false
-
- par1 := termui.NewPar("你好,世界。")
- par1.Height = 3
- par1.Width = 17
- par1.X = 20
- par1.Border.Label = "标签"
-
- par2 := termui.NewPar("Simple text\nwith label. It can be multilined with \\n or break automatically")
- par2.Height = 5
- par2.Width = 37
- par2.Y = 4
- par2.Border.Label = "Multiline"
- par2.Border.FgColor = termui.ColorYellow
-
- par3 := termui.NewPar("Long text with label and it is auto trimmed.")
- par3.Height = 3
- par3.Width = 37
- par3.Y = 9
- par3.Border.Label = "Auto Trim"
-
- termui.Render(par0, par1, par2, par3)
-
- <-termui.EventCh()
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/par.png b/Godeps/_workspace/src/github.com/gizak/termui/example/par.png
deleted file mode 100644
index a85e64415..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/par.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/sparklines.go b/Godeps/_workspace/src/github.com/gizak/termui/example/sparklines.go
deleted file mode 100644
index f04baf570..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/sparklines.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import "github.com/gizak/termui"
-
-func main() {
- err := termui.Init()
- if err != nil {
- panic(err)
- }
- defer termui.Close()
-
- termui.UseTheme("helloworld")
-
- data := []int{4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1, 7, 10, 10, 14, 13, 6}
- spl0 := termui.NewSparkline()
- spl0.Data = data[3:]
- spl0.Title = "Sparkline 0"
- spl0.LineColor = termui.ColorGreen
-
- // single
- spls0 := termui.NewSparklines(spl0)
- spls0.Height = 2
- spls0.Width = 20
- spls0.HasBorder = false
-
- spl1 := termui.NewSparkline()
- spl1.Data = data
- spl1.Title = "Sparkline 1"
- spl1.LineColor = termui.ColorRed
-
- spl2 := termui.NewSparkline()
- spl2.Data = data[5:]
- spl2.Title = "Sparkline 2"
- spl2.LineColor = termui.ColorMagenta
-
- // group
- spls1 := termui.NewSparklines(spl0, spl1, spl2)
- spls1.Height = 8
- spls1.Width = 20
- spls1.Y = 3
- spls1.Border.Label = "Group Sparklines"
-
- spl3 := termui.NewSparkline()
- spl3.Data = data
- spl3.Title = "Enlarged Sparkline"
- spl3.Height = 8
- spl3.LineColor = termui.ColorYellow
-
- spls2 := termui.NewSparklines(spl3)
- spls2.Height = 11
- spls2.Width = 30
- spls2.Border.FgColor = termui.ColorCyan
- spls2.X = 21
- spls2.Border.Label = "Tweeked Sparkline"
-
- termui.Render(spls0, spls1, spls2)
-
- <-termui.EventCh()
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/sparklines.png b/Godeps/_workspace/src/github.com/gizak/termui/example/sparklines.png
deleted file mode 100644
index 9dd7c82b1..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/sparklines.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/theme.go b/Godeps/_workspace/src/github.com/gizak/termui/example/theme.go
deleted file mode 100644
index 30c51a343..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/theme.go
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import ui "github.com/gizak/termui"
-import "math"
-
-import "time"
-
-func main() {
- err := ui.Init()
- if err != nil {
- panic(err)
- }
- defer ui.Close()
-
- ui.UseTheme("helloworld")
-
- p := ui.NewPar(":PRESS q TO QUIT DEMO")
- p.Height = 3
- p.Width = 50
- p.Border.Label = "Text Box"
-
- strs := []string{"[0] gizak/termui", "[1] editbox.go", "[2] iterrupt.go", "[3] keyboard.go", "[4] output.go", "[5] random_out.go", "[6] dashboard.go", "[7] nsf/termbox-go"}
- list := ui.NewList()
- list.Items = strs
- list.Border.Label = "List"
- list.Height = 7
- list.Width = 25
- list.Y = 4
-
- g := ui.NewGauge()
- g.Percent = 50
- g.Width = 50
- g.Height = 3
- g.Y = 11
- g.Border.Label = "Gauge"
-
- spark := ui.NewSparkline()
- spark.Title = "srv 0:"
- spdata := []int{4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1, 7, 10, 10, 14, 13, 6}
- spark.Data = spdata
-
- spark1 := ui.NewSparkline()
- spark1.Title = "srv 1:"
- spark1.Data = spdata
-
- sp := ui.NewSparklines(spark, spark1)
- sp.Width = 25
- sp.Height = 7
- sp.Border.Label = "Sparkline"
- sp.Y = 4
- sp.X = 25
-
- lc := ui.NewLineChart()
- sinps := (func() []float64 {
- n := 100
- ps := make([]float64, n)
- for i := range ps {
- ps[i] = 1 + math.Sin(float64(i)/4)
- }
- return ps
- })()
-
- lc.Border.Label = "Line Chart"
- lc.Data = sinps
- lc.Width = 50
- lc.Height = 11
- lc.X = 0
- lc.Y = 14
- lc.Mode = "dot"
-
- bc := ui.NewBarChart()
- bcdata := []int{3, 2, 5, 3, 9, 5, 3, 2, 5, 8, 3, 2, 4, 5, 3, 2, 5, 7, 5, 3, 2, 6, 7, 4, 6, 3, 6, 7, 8, 3, 6, 4, 5, 3, 2, 4, 6, 4, 8, 5, 9, 4, 3, 6, 5, 3, 6}
- bclabels := []string{"S0", "S1", "S2", "S3", "S4", "S5"}
- bc.Border.Label = "Bar Chart"
- bc.Width = 26
- bc.Height = 10
- bc.X = 51
- bc.Y = 0
- bc.DataLabels = bclabels
-
- lc1 := ui.NewLineChart()
- lc1.Border.Label = "Line Chart"
- rndwalk := (func() []float64 {
- n := 150
- d := make([]float64, n)
- for i := 1; i < n; i++ {
- if i < 20 {
- d[i] = d[i-1] + 0.01
- }
- if i > 20 {
- d[i] = d[i-1] - 0.05
- }
- }
- return d
- })()
- lc1.Data = rndwalk
- lc1.Width = 26
- lc1.Height = 11
- lc1.X = 51
- lc1.Y = 14
-
- p1 := ui.NewPar("Hey!\nI am a borderless block!")
- p1.HasBorder = false
- p1.Width = 26
- p1.Height = 2
- p1.X = 52
- p1.Y = 11
-
- draw := func(t int) {
- g.Percent = t % 101
- list.Items = strs[t%9:]
- sp.Lines[0].Data = spdata[t%10:]
- sp.Lines[1].Data = spdata[t/2%10:]
- lc.Data = sinps[t/2:]
- lc1.Data = rndwalk[t:]
- bc.Data = bcdata[t/2%10:]
- ui.Render(p, list, g, sp, lc, bc, lc1, p1)
- }
-
- evt := ui.EventCh()
- i := 0
- for {
- select {
- case e := <-evt:
- if e.Type == ui.EventKey && e.Ch == 'q' {
- return
- }
- default:
- draw(i)
- i++
- if i == 102 {
- return
- }
- time.Sleep(time.Second / 2)
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/themedefault.png b/Godeps/_workspace/src/github.com/gizak/termui/example/themedefault.png
deleted file mode 100644
index 23b574f96..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/themedefault.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/example/themehelloworld.png b/Godeps/_workspace/src/github.com/gizak/termui/example/themehelloworld.png
deleted file mode 100644
index eaf4d9303..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/example/themehelloworld.png
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/gauge.go b/Godeps/_workspace/src/github.com/gizak/termui/gauge.go
index 986f4f3dc..244d2995e 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/gauge.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/gauge.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
@@ -21,33 +21,27 @@ import (
g.PercentColor = termui.ColorBlue
*/
-// Align is the position of the gauge's label.
-type Align int
-
-// All supported positions.
-const (
- AlignLeft Align = iota
- AlignCenter
- AlignRight
-)
+const ColorUndef Attribute = Attribute(^uint16(0))
type Gauge struct {
Block
- Percent int
- BarColor Attribute
- PercentColor Attribute
- Label string
- LabelAlign Align
+ Percent int
+ BarColor Attribute
+ PercentColor Attribute
+ PercentColorHighlighted Attribute
+ Label string
+ LabelAlign Align
}
// NewGauge return a new gauge with current theme.
func NewGauge() *Gauge {
g := &Gauge{
- Block: *NewBlock(),
- PercentColor: theme.GaugePercent,
- BarColor: theme.GaugeBar,
- Label: "{{percent}}%",
- LabelAlign: AlignCenter,
+ Block: *NewBlock(),
+ PercentColor: ThemeAttr("gauge.percent.fg"),
+ BarColor: ThemeAttr("gauge.bar.bg"),
+ Label: "{{percent}}%",
+ LabelAlign: AlignCenter,
+ PercentColorHighlighted: ColorUndef,
}
g.Width = 12
@@ -56,28 +50,26 @@ func NewGauge() *Gauge {
}
// Buffer implements Bufferer interface.
-func (g *Gauge) Buffer() []Point {
- ps := g.Block.Buffer()
+func (g *Gauge) Buffer() Buffer {
+ buf := g.Block.Buffer()
// plot bar
- w := g.Percent * g.innerWidth / 100
- for i := 0; i < g.innerHeight; i++ {
+ w := g.Percent * g.innerArea.Dx() / 100
+ for i := 0; i < g.innerArea.Dy(); i++ {
for j := 0; j < w; j++ {
- p := Point{}
- p.X = g.innerX + j
- p.Y = g.innerY + i
- p.Ch = ' '
- p.Bg = g.BarColor
- if p.Bg == ColorDefault {
- p.Bg |= AttrReverse
+ c := Cell{}
+ c.Ch = ' '
+ c.Bg = g.BarColor
+ if c.Bg == ColorDefault {
+ c.Bg |= AttrReverse
}
- ps = append(ps, p)
+ buf.Set(g.innerArea.Min.X+j, g.innerArea.Min.Y+i, c)
}
}
// plot percentage
s := strings.Replace(g.Label, "{{percent}}", strconv.Itoa(g.Percent), -1)
- pry := g.innerY + g.innerHeight/2
+ pry := g.innerArea.Min.Y + g.innerArea.Dy()/2
rs := str2runes(s)
var pos int
switch g.LabelAlign {
@@ -85,29 +77,33 @@ func (g *Gauge) Buffer() []Point {
pos = 0
case AlignCenter:
- pos = (g.innerWidth - strWidth(s)) / 2
+ pos = (g.innerArea.Dx() - strWidth(s)) / 2
case AlignRight:
- pos = g.innerWidth - strWidth(s)
+ pos = g.innerArea.Dx() - strWidth(s) - 1
}
+ pos += g.innerArea.Min.X
for i, v := range rs {
- p := Point{}
- p.X = 1 + pos + i
- p.Y = pry
- p.Ch = v
- p.Fg = g.PercentColor
- if w+g.innerX > pos+i {
- p.Bg = g.BarColor
- if p.Bg == ColorDefault {
- p.Bg |= AttrReverse
+ c := Cell{
+ Ch: v,
+ Fg: g.PercentColor,
+ }
+
+ if w+g.innerArea.Min.X > pos+i {
+ c.Bg = g.BarColor
+ if c.Bg == ColorDefault {
+ c.Bg |= AttrReverse
}
+ if g.PercentColorHighlighted != ColorUndef {
+ c.Fg = g.PercentColorHighlighted
+ }
} else {
- p.Bg = g.Block.BgColor
+ c.Bg = g.Block.Bg
}
- ps = append(ps, p)
+ buf.Set(1+pos+i, pry, c)
}
- return g.Block.chopOverflow(ps)
+ return buf
}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/grid.go b/Godeps/_workspace/src/github.com/gizak/termui/grid.go
index 5f6e85e76..364442e02 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/grid.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/grid.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
@@ -160,8 +160,8 @@ func (r *Row) SetWidth(w int) {
// Buffer implements Bufferer interface,
// recursively merge all widgets buffer
-func (r *Row) Buffer() []Point {
- merged := []Point{}
+func (r *Row) Buffer() Buffer {
+ merged := NewBuffer()
if r.isRenderableLeaf() {
return r.Widget.Buffer()
@@ -169,13 +169,13 @@ func (r *Row) Buffer() []Point {
// for those are not leaves but have a renderable widget
if r.Widget != nil {
- merged = append(merged, r.Widget.Buffer()...)
+ merged.Merge(r.Widget.Buffer())
}
// collect buffer from children
if !r.isLeaf() {
for _, c := range r.Cols {
- merged = append(merged, c.Buffer()...)
+ merged.Merge(c.Buffer())
}
}
@@ -267,13 +267,13 @@ func (g *Grid) Align() {
}
// Buffer implments Bufferer interface.
-func (g Grid) Buffer() []Point {
- ps := []Point{}
+func (g Grid) Buffer() Buffer {
+ buf := NewBuffer()
+
for _, r := range g.Rows {
- ps = append(ps, r.Buffer()...)
+ buf.Merge(r.Buffer())
}
- return ps
+ return buf
}
-// Body corresponds to the entire terminal display region.
var Body *Grid
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/grid_test.go b/Godeps/_workspace/src/github.com/gizak/termui/grid_test.go
deleted file mode 100644
index cdafb2052..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/grid_test.go
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-package termui
-
-import (
- "testing"
-
- "github.com/davecgh/go-spew/spew"
-)
-
-var r *Row
-
-func TestRowWidth(t *testing.T) {
- p0 := NewPar("p0")
- p0.Height = 1
- p1 := NewPar("p1")
- p1.Height = 1
- p2 := NewPar("p2")
- p2.Height = 1
- p3 := NewPar("p3")
- p3.Height = 1
-
- /* test against tree:
-
- r
- / \
- 0:w 1
- / \
- 10:w 11
- /
- 110:w
- /
- 1100:w
- */
- /*
- r = &row{
- Span: 12,
- Cols: []*row{
- &row{Widget: p0, Span: 6},
- &row{
- Span: 6,
- Cols: []*row{
- &row{Widget: p1, Span: 6},
- &row{
- Span: 6,
- Cols: []*row{
- &row{
- Span: 12,
- Widget: p2,
- Cols: []*row{
- &row{Span: 12, Widget: p3}}}}}}}}}
- */
-
- r = NewRow(
- NewCol(6, 0, p0),
- NewCol(6, 0,
- NewRow(
- NewCol(6, 0, p1),
- NewCol(6, 0, p2, p3))))
-
- r.assignWidth(100)
- if r.Width != 100 ||
- (r.Cols[0].Width) != 50 ||
- (r.Cols[1].Width) != 50 ||
- (r.Cols[1].Cols[0].Width) != 25 ||
- (r.Cols[1].Cols[1].Width) != 25 ||
- (r.Cols[1].Cols[1].Cols[0].Width) != 25 ||
- (r.Cols[1].Cols[1].Cols[0].Cols[0].Width) != 25 {
- t.Error("assignWidth fails")
- }
-}
-
-func TestRowHeight(t *testing.T) {
- spew.Dump()
-
- if (r.solveHeight()) != 2 ||
- (r.Cols[1].Cols[1].Height) != 2 ||
- (r.Cols[1].Cols[1].Cols[0].Height) != 2 ||
- (r.Cols[1].Cols[0].Height) != 1 {
- t.Error("solveHeight fails")
- }
-}
-
-func TestAssignXY(t *testing.T) {
- r.assignX(0)
- r.assignY(0)
- if (r.Cols[0].X) != 0 ||
- (r.Cols[1].Cols[0].X) != 50 ||
- (r.Cols[1].Cols[1].X) != 75 ||
- (r.Cols[1].Cols[1].Cols[0].X) != 75 ||
- (r.Cols[1].Cols[0].Y) != 0 ||
- (r.Cols[1].Cols[1].Cols[0].Y) != 0 ||
- (r.Cols[1].Cols[1].Cols[0].Cols[0].Y) != 1 {
- t.Error("assignXY fails")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/helper.go b/Godeps/_workspace/src/github.com/gizak/termui/helper.go
index 80d8a0278..6690e7fb0 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/helper.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/helper.go
@@ -1,10 +1,15 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
package termui
-import tm "github.com/nsf/termbox-go"
+import (
+ "regexp"
+ "strings"
+
+ tm "github.com/nsf/termbox-go"
+)
import rw "github.com/mattn/go-runewidth"
/* ---------------Port from termbox-go --------------------- */
@@ -12,6 +17,7 @@ import rw "github.com/mattn/go-runewidth"
// Attribute is printable cell's color and style.
type Attribute uint16
+// 8 basic clolrs
const (
ColorDefault Attribute = iota
ColorBlack
@@ -24,7 +30,10 @@ const (
ColorWhite
)
-const NumberofColors = 8 //Have a constant that defines number of colors
+//Have a constant that defines number of colors
+const NumberofColors = 8
+
+// Text style
const (
AttrBold Attribute = 1 << (iota + 9)
AttrUnderline
@@ -46,15 +55,39 @@ func str2runes(s string) []rune {
return []rune(s)
}
+// Here for backwards-compatibility.
func trimStr2Runes(s string, w int) []rune {
+ return TrimStr2Runes(s, w)
+}
+
+// TrimStr2Runes trims string to w[-1 rune], appends …, and returns the runes
+// of that string if string is grather then n. If string is small then w,
+// return the runes.
+func TrimStr2Runes(s string, w int) []rune {
if w <= 0 {
return []rune{}
}
+
sw := rw.StringWidth(s)
if sw > w {
return []rune(rw.Truncate(s, w, dot))
}
- return str2runes(s) //[]rune(rw.Truncate(s, w, ""))
+ return str2runes(s)
+}
+
+// TrimStrIfAppropriate trim string to "s[:-1] + …"
+// if string > width otherwise return string
+func TrimStrIfAppropriate(s string, w int) string {
+ if w <= 0 {
+ return ""
+ }
+
+ sw := rw.StringWidth(s)
+ if sw > w {
+ return rw.Truncate(s, w, dot)
+ }
+
+ return s
}
func strWidth(s string) int {
@@ -64,3 +97,118 @@ func strWidth(s string) int {
func charWidth(ch rune) int {
return rw.RuneWidth(ch)
}
+
+var whiteSpaceRegex = regexp.MustCompile(`\s`)
+
+// StringToAttribute converts text to a termui attribute. You may specifiy more
+// then one attribute like that: "BLACK, BOLD, ...". All whitespaces
+// are ignored.
+func StringToAttribute(text string) Attribute {
+ text = whiteSpaceRegex.ReplaceAllString(strings.ToLower(text), "")
+ attributes := strings.Split(text, ",")
+ result := Attribute(0)
+
+ for _, theAttribute := range attributes {
+ var match Attribute
+ switch theAttribute {
+ case "reset", "default":
+ match = ColorDefault
+
+ case "black":
+ match = ColorBlack
+
+ case "red":
+ match = ColorRed
+
+ case "green":
+ match = ColorGreen
+
+ case "yellow":
+ match = ColorYellow
+
+ case "blue":
+ match = ColorBlue
+
+ case "magenta":
+ match = ColorMagenta
+
+ case "cyan":
+ match = ColorCyan
+
+ case "white":
+ match = ColorWhite
+
+ case "bold":
+ match = AttrBold
+
+ case "underline":
+ match = AttrUnderline
+
+ case "reverse":
+ match = AttrReverse
+ }
+
+ result |= match
+ }
+
+ return result
+}
+
+// TextCells returns a coloured text cells []Cell
+func TextCells(s string, fg, bg Attribute) []Cell {
+ cs := make([]Cell, 0, len(s))
+
+ // sequence := MarkdownTextRendererFactory{}.TextRenderer(s).Render(fg, bg)
+ // runes := []rune(sequence.NormalizedText)
+ runes := str2runes(s)
+
+ for n := range runes {
+ // point, _ := sequence.PointAt(n, 0, 0)
+ // cs = append(cs, Cell{point.Ch, point.Fg, point.Bg})
+ cs = append(cs, Cell{runes[n], fg, bg})
+ }
+ return cs
+}
+
+// Width returns the actual screen space the cell takes (usually 1 or 2).
+func (c Cell) Width() int {
+ return charWidth(c.Ch)
+}
+
+// Copy return a copy of c
+func (c Cell) Copy() Cell {
+ return c
+}
+
+// TrimTxCells trims the overflowed text cells sequence.
+func TrimTxCells(cs []Cell, w int) []Cell {
+ if len(cs) <= w {
+ return cs
+ }
+ return cs[:w]
+}
+
+// DTrimTxCls trims the overflowed text cells sequence and append dots at the end.
+func DTrimTxCls(cs []Cell, w int) []Cell {
+ l := len(cs)
+ if l <= 0 {
+ return []Cell{}
+ }
+
+ rt := make([]Cell, 0, w)
+ csw := 0
+ for i := 0; i < l && csw <= w; i++ {
+ c := cs[i]
+ cw := c.Width()
+
+ if cw+csw < w {
+ rt = append(rt, c)
+ csw += cw
+ } else {
+ rt = append(rt, Cell{'…', c.Fg, c.Bg})
+ break
+ }
+ }
+
+ return rt
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/helper_test.go b/Godeps/_workspace/src/github.com/gizak/termui/helper_test.go
deleted file mode 100644
index 6d1a56130..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/helper_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-package termui
-
-import (
- "testing"
-
- "github.com/davecgh/go-spew/spew"
-)
-
-func TestStr2Rune(t *testing.T) {
- s := "你好,世界."
- rs := str2runes(s)
- if len(rs) != 6 {
- t.Error()
- }
-}
-
-func TestWidth(t *testing.T) {
- s0 := "つのだ☆HIRO"
- s1 := "11111111111"
- spew.Dump(s0)
- spew.Dump(s1)
- // above not align for setting East Asian Ambiguous to wide!!
-
- if strWidth(s0) != strWidth(s1) {
- t.Error("str len failed")
- }
-
- len1 := []rune{'a', '2', '&', '「', 'オ', '。'} //will false: 'ᆵ', 'ᄚ', 'ᄒ'
- for _, v := range len1 {
- if charWidth(v) != 1 {
- t.Error("len1 failed")
- }
- }
-
- len2 := []rune{'漢', '字', '한', '자', '你', '好', 'だ', '。', '%', 's', 'E', 'ョ', '、', 'ヲ'}
- for _, v := range len2 {
- if charWidth(v) != 2 {
- t.Error("len2 failed")
- }
- }
-}
-
-func TestTrim(t *testing.T) {
- s := "つのだ☆HIRO"
- if string(trimStr2Runes(s, 10)) != "つのだ☆HI"+dot {
- t.Error("trim failed")
- }
- if string(trimStr2Runes(s, 11)) != "つのだ☆HIRO" {
- t.Error("avoid tail trim failed")
- }
- if string(trimStr2Runes(s, 15)) != "つのだ☆HIRO" {
- t.Error("avoid trim failed")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/chart.go b/Godeps/_workspace/src/github.com/gizak/termui/linechart.go
index d6fb8bc7d..f2829148e 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/chart.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/linechart.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
@@ -74,8 +74,8 @@ type LineChart struct {
// NewLineChart returns a new LineChart with current theme.
func NewLineChart() *LineChart {
lc := &LineChart{Block: *NewBlock()}
- lc.AxesColor = theme.LineChartAxes
- lc.LineColor = theme.LineChartLine
+ lc.AxesColor = ThemeAttr("linechart.axes.fg")
+ lc.LineColor = ThemeAttr("linechart.line.fg")
lc.Mode = "braille"
lc.DotStyle = '•'
lc.axisXLebelGap = 2
@@ -87,8 +87,8 @@ func NewLineChart() *LineChart {
// one cell contains two data points
// so the capicity is 2x as dot-mode
-func (lc *LineChart) renderBraille() []Point {
- ps := []Point{}
+func (lc *LineChart) renderBraille() Buffer {
+ buf := NewBuffer()
// return: b -> which cell should the point be in
// m -> in the cell, divided into 4 equal height levels, which subcell?
@@ -104,44 +104,48 @@ func (lc *LineChart) renderBraille() []Point {
b1, m1 := getPos(lc.Data[2*i+1])
if b0 == b1 {
- p := Point{}
- p.Ch = braillePatterns[[2]int{m0, m1}]
- p.Bg = lc.BgColor
- p.Fg = lc.LineColor
- p.Y = lc.innerY + lc.innerHeight - 3 - b0
- p.X = lc.innerX + lc.labelYSpace + 1 + i
- ps = append(ps, p)
+ c := Cell{
+ Ch: braillePatterns[[2]int{m0, m1}],
+ Bg: lc.Bg,
+ Fg: lc.LineColor,
+ }
+ y := lc.innerArea.Min.Y + lc.innerArea.Dy() - 3 - b0
+ x := lc.innerArea.Min.X + lc.labelYSpace + 1 + i
+ buf.Set(x, y, c)
} else {
- p0 := newPointWithAttrs(lSingleBraille[m0],
- lc.innerX+lc.labelYSpace+1+i,
- lc.innerY+lc.innerHeight-3-b0,
- lc.LineColor,
- lc.BgColor)
- p1 := newPointWithAttrs(rSingleBraille[m1],
- lc.innerX+lc.labelYSpace+1+i,
- lc.innerY+lc.innerHeight-3-b1,
- lc.LineColor,
- lc.BgColor)
- ps = append(ps, p0, p1)
+ c0 := Cell{Ch: lSingleBraille[m0],
+ Fg: lc.LineColor,
+ Bg: lc.Bg}
+ x0 := lc.innerArea.Min.X + lc.labelYSpace + 1 + i
+ y0 := lc.innerArea.Min.Y + lc.innerArea.Dy() - 3 - b0
+ buf.Set(x0, y0, c0)
+
+ c1 := Cell{Ch: rSingleBraille[m1],
+ Fg: lc.LineColor,
+ Bg: lc.Bg}
+ x1 := lc.innerArea.Min.X + lc.labelYSpace + 1 + i
+ y1 := lc.innerArea.Min.Y + lc.innerArea.Dy() - 3 - b1
+ buf.Set(x1, y1, c1)
}
}
- return ps
+ return buf
}
-func (lc *LineChart) renderDot() []Point {
- ps := []Point{}
+func (lc *LineChart) renderDot() Buffer {
+ buf := NewBuffer()
for i := 0; i < len(lc.Data) && i < lc.axisXWidth; i++ {
- p := Point{}
- p.Ch = lc.DotStyle
- p.Fg = lc.LineColor
- p.Bg = lc.BgColor
- p.X = lc.innerX + lc.labelYSpace + 1 + i
- p.Y = lc.innerY + lc.innerHeight - 3 - int((lc.Data[i]-lc.bottomValue)/lc.scale+0.5)
- ps = append(ps, p)
+ c := Cell{
+ Ch: lc.DotStyle,
+ Fg: lc.LineColor,
+ Bg: lc.Bg,
+ }
+ x := lc.innerArea.Min.X + lc.labelYSpace + 1 + i
+ y := lc.innerArea.Min.Y + lc.innerArea.Dy() - 3 - int((lc.Data[i]-lc.bottomValue)/lc.scale+0.5)
+ buf.Set(x, y, c)
}
- return ps
+ return buf
}
func (lc *LineChart) calcLabelX() {
@@ -220,9 +224,9 @@ func (lc *LineChart) calcLayout() {
lc.maxY = lc.Data[0]
// valid visible range
- vrange := lc.innerWidth
+ vrange := lc.innerArea.Dx()
if lc.Mode == "braille" {
- vrange = 2 * lc.innerWidth
+ vrange = 2 * lc.innerArea.Dx()
}
if vrange > len(lc.Data) {
vrange = len(lc.Data)
@@ -247,40 +251,30 @@ func (lc *LineChart) calcLayout() {
lc.topValue = lc.maxY + 0.2*span
}
- lc.axisYHeight = lc.innerHeight - 2
+ lc.axisYHeight = lc.innerArea.Dy() - 2
lc.calcLabelY()
- lc.axisXWidth = lc.innerWidth - 1 - lc.labelYSpace
+ lc.axisXWidth = lc.innerArea.Dx() - 1 - lc.labelYSpace
lc.calcLabelX()
- lc.drawingX = lc.innerX + 1 + lc.labelYSpace
- lc.drawingY = lc.innerY
+ lc.drawingX = lc.innerArea.Min.X + 1 + lc.labelYSpace
+ lc.drawingY = lc.innerArea.Min.Y
}
-func (lc *LineChart) plotAxes() []Point {
- origY := lc.innerY + lc.innerHeight - 2
- origX := lc.innerX + lc.labelYSpace
+func (lc *LineChart) plotAxes() Buffer {
+ buf := NewBuffer()
+
+ origY := lc.innerArea.Min.Y + lc.innerArea.Dy() - 2
+ origX := lc.innerArea.Min.X + lc.labelYSpace
- ps := []Point{newPointWithAttrs(ORIGIN, origX, origY, lc.AxesColor, lc.BgColor)}
+ buf.Set(origX, origY, Cell{Ch: ORIGIN, Fg: lc.AxesColor, Bg: lc.Bg})
for x := origX + 1; x < origX+lc.axisXWidth; x++ {
- p := Point{}
- p.X = x
- p.Y = origY
- p.Bg = lc.BgColor
- p.Fg = lc.AxesColor
- p.Ch = HDASH
- ps = append(ps, p)
+ buf.Set(x, origY, Cell{Ch: HDASH, Fg: lc.AxesColor, Bg: lc.Bg})
}
for dy := 1; dy <= lc.axisYHeight; dy++ {
- p := Point{}
- p.X = origX
- p.Y = origY - dy
- p.Bg = lc.BgColor
- p.Fg = lc.AxesColor
- p.Ch = VDASH
- ps = append(ps, p)
+ buf.Set(origX, origY-dy, Cell{Ch: VDASH, Fg: lc.AxesColor, Bg: lc.Bg})
}
// x label
@@ -290,13 +284,14 @@ func (lc *LineChart) plotAxes() []Point {
break
}
for j, r := range rs {
- p := Point{}
- p.Ch = r
- p.Fg = lc.AxesColor
- p.Bg = lc.BgColor
- p.X = origX + oft + j
- p.Y = lc.innerY + lc.innerHeight - 1
- ps = append(ps, p)
+ c := Cell{
+ Ch: r,
+ Fg: lc.AxesColor,
+ Bg: lc.Bg,
+ }
+ x := origX + oft + j
+ y := lc.innerArea.Min.Y + lc.innerArea.Dy() - 1
+ buf.Set(x, y, c)
}
oft += len(rs) + lc.axisXLebelGap
}
@@ -304,33 +299,31 @@ func (lc *LineChart) plotAxes() []Point {
// y labels
for i, rs := range lc.labelY {
for j, r := range rs {
- p := Point{}
- p.Ch = r
- p.Fg = lc.AxesColor
- p.Bg = lc.BgColor
- p.X = lc.innerX + j
- p.Y = origY - i*(lc.axisYLebelGap+1)
- ps = append(ps, p)
+ buf.Set(
+ lc.innerArea.Min.X+j,
+ origY-i*(lc.axisYLebelGap+1),
+ Cell{Ch: r, Fg: lc.AxesColor, Bg: lc.Bg})
}
}
- return ps
+ return buf
}
// Buffer implements Bufferer interface.
-func (lc *LineChart) Buffer() []Point {
- ps := lc.Block.Buffer()
+func (lc *LineChart) Buffer() Buffer {
+ buf := lc.Block.Buffer()
+
if lc.Data == nil || len(lc.Data) == 0 {
- return ps
+ return buf
}
lc.calcLayout()
- ps = append(ps, lc.plotAxes()...)
+ buf.Merge(lc.plotAxes())
if lc.Mode == "dot" {
- ps = append(ps, lc.renderDot()...)
+ buf.Merge(lc.renderDot())
} else {
- ps = append(ps, lc.renderBraille()...)
+ buf.Merge(lc.renderBraille())
}
- return lc.Block.chopOverflow(ps)
+ return buf
}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/chart_others.go b/Godeps/_workspace/src/github.com/gizak/termui/linechart_others.go
index 8911873b6..7e2e66b3e 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/chart_others.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/linechart_others.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/chart_windows.go b/Godeps/_workspace/src/github.com/gizak/termui/linechart_windows.go
index 9f9a5e96c..1478b5ce3 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/chart_windows.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/linechart_windows.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/list.go b/Godeps/_workspace/src/github.com/gizak/termui/list.go
index 0640932f2..670015fd3 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/list.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/list.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
@@ -41,64 +41,49 @@ type List struct {
func NewList() *List {
l := &List{Block: *NewBlock()}
l.Overflow = "hidden"
- l.ItemFgColor = theme.ListItemFg
- l.ItemBgColor = theme.ListItemBg
+ l.ItemFgColor = ThemeAttr("list.item.fg")
+ l.ItemBgColor = ThemeAttr("list.item.bg")
return l
}
// Buffer implements Bufferer interface.
-func (l *List) Buffer() []Point {
- ps := l.Block.Buffer()
+func (l *List) Buffer() Buffer {
+ buf := l.Block.Buffer()
+
switch l.Overflow {
case "wrap":
- rs := str2runes(strings.Join(l.Items, "\n"))
+ cs := DefaultTxBuilder.Build(strings.Join(l.Items, "\n"), l.ItemFgColor, l.ItemBgColor)
i, j, k := 0, 0, 0
- for i < l.innerHeight && k < len(rs) {
- w := charWidth(rs[k])
- if rs[k] == '\n' || j+w > l.innerWidth {
+ for i < l.innerArea.Dy() && k < len(cs) {
+ w := cs[k].Width()
+ if cs[k].Ch == '\n' || j+w > l.innerArea.Dx() {
i++
j = 0
- if rs[k] == '\n' {
+ if cs[k].Ch == '\n' {
k++
}
continue
}
- pi := Point{}
- pi.X = l.innerX + j
- pi.Y = l.innerY + i
-
- pi.Ch = rs[k]
- pi.Bg = l.ItemBgColor
- pi.Fg = l.ItemFgColor
+ buf.Set(l.innerArea.Min.X+j, l.innerArea.Min.Y+i, cs[k])
- ps = append(ps, pi)
k++
j++
}
case "hidden":
trimItems := l.Items
- if len(trimItems) > l.innerHeight {
- trimItems = trimItems[:l.innerHeight]
+ if len(trimItems) > l.innerArea.Dy() {
+ trimItems = trimItems[:l.innerArea.Dy()]
}
for i, v := range trimItems {
- rs := trimStr2Runes(v, l.innerWidth)
-
+ cs := DTrimTxCls(DefaultTxBuilder.Build(v, l.ItemFgColor, l.ItemBgColor), l.innerArea.Dx())
j := 0
- for _, vv := range rs {
- w := charWidth(vv)
- p := Point{}
- p.X = l.innerX + j
- p.Y = l.innerY + i
-
- p.Ch = vv
- p.Bg = l.ItemBgColor
- p.Fg = l.ItemFgColor
-
- ps = append(ps, p)
+ for _, vv := range cs {
+ w := vv.Width()
+ buf.Set(l.innerArea.Min.X+j, l.innerArea.Min.Y+i, vv)
j += w
}
}
}
- return l.Block.chopOverflow(ps)
+ return buf
}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/mbar.go b/Godeps/_workspace/src/github.com/gizak/termui/mbarchart.go
index 9d18c2cb4..231de277f 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/mbar.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/mbarchart.go
@@ -1,4 +1,4 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
@@ -48,16 +48,16 @@ type MBarChart struct {
// NewBarChart returns a new *BarChart with current theme.
func NewMBarChart() *MBarChart {
bc := &MBarChart{Block: *NewBlock()}
- bc.BarColor[0] = theme.MBarChartBar
- bc.NumColor[0] = theme.MBarChartNum
- bc.TextColor = theme.MBarChartText
+ bc.BarColor[0] = ThemeAttr("mbarchart.bar.bg")
+ bc.NumColor[0] = ThemeAttr("mbarchart.num.fg")
+ bc.TextColor = ThemeAttr("mbarchart.text.fg")
bc.BarGap = 1
bc.BarWidth = 3
return bc
}
func (bc *MBarChart) layout() {
- bc.numBar = bc.innerWidth / (bc.BarGap + bc.BarWidth)
+ bc.numBar = bc.innerArea.Dx() / (bc.BarGap + bc.BarWidth)
bc.labels = make([][]rune, bc.numBar)
DataLen := 0
LabelLen := len(bc.DataLabels)
@@ -129,9 +129,9 @@ func (bc *MBarChart) layout() {
if bc.ShowScale {
s := fmt.Sprintf("%d", bc.max)
bc.maxScale = trimStr2Runes(s, len(s))
- bc.scale = float64(bc.max) / float64(bc.innerHeight-2)
+ bc.scale = float64(bc.max) / float64(bc.innerArea.Dy()-2)
} else {
- bc.scale = float64(bc.max) / float64(bc.innerHeight-1)
+ bc.scale = float64(bc.max) / float64(bc.innerArea.Dy()-1)
}
}
@@ -144,8 +144,8 @@ func (bc *MBarChart) SetMax(max int) {
}
// Buffer implements Bufferer interface.
-func (bc *MBarChart) Buffer() []Point {
- ps := bc.Block.Buffer()
+func (bc *MBarChart) Buffer() Buffer {
+ buf := bc.Block.Buffer()
bc.layout()
var oftX int
@@ -157,15 +157,17 @@ func (bc *MBarChart) Buffer() []Point {
// plot bars
for j := 0; j < bc.BarWidth; j++ {
for k := 0; k < h; k++ {
- p := Point{}
- p.Ch = ' '
- p.Bg = bc.BarColor[i1]
+ c := Cell{
+ Ch: ' ',
+ Bg: bc.BarColor[i1],
+ }
if bc.BarColor[i1] == ColorDefault { // when color is default, space char treated as transparent!
- p.Bg |= AttrReverse
+ c.Bg |= AttrReverse
}
- p.X = bc.innerX + i*(bc.BarWidth+bc.BarGap) + j
- p.Y = bc.innerY + bc.innerHeight - 2 - k - ph
- ps = append(ps, p)
+ x := bc.innerArea.Min.X + i*(bc.BarWidth+bc.BarGap) + j
+ y := bc.innerArea.Min.Y + bc.innerArea.Dy() - 2 - k - ph
+ buf.Set(x, y, c)
+
}
}
ph += h
@@ -173,13 +175,14 @@ func (bc *MBarChart) Buffer() []Point {
// plot text
for j, k := 0, 0; j < len(bc.labels[i]); j++ {
w := charWidth(bc.labels[i][j])
- p := Point{}
- p.Ch = bc.labels[i][j]
- p.Bg = bc.BgColor
- p.Fg = bc.TextColor
- p.Y = bc.innerY + bc.innerHeight - 1
- p.X = bc.innerX + oftX + ((bc.BarWidth - len(bc.labels[i])) / 2) + k
- ps = append(ps, p)
+ c := Cell{
+ Ch: bc.labels[i][j],
+ Bg: bc.Bg,
+ Fg: bc.TextColor,
+ }
+ y := bc.innerArea.Min.Y + bc.innerArea.Dy() - 1
+ x := bc.innerArea.Max.X + oftX + ((bc.BarWidth - len(bc.labels[i])) / 2) + k
+ buf.Set(x, y, c)
k += w
}
// plot num
@@ -187,19 +190,20 @@ func (bc *MBarChart) Buffer() []Point {
for i1 := 0; i1 < bc.numStack; i1++ {
h := int(float64(bc.Data[i1][i]) / bc.scale)
for j := 0; j < len(bc.dataNum[i1][i]) && h > 0; j++ {
- p := Point{}
- p.Ch = bc.dataNum[i1][i][j]
- p.Fg = bc.NumColor[i1]
- p.Bg = bc.BarColor[i1]
+ c := Cell{
+ Ch: bc.dataNum[i1][i][j],
+ Fg: bc.NumColor[i1],
+ Bg: bc.BarColor[i1],
+ }
if bc.BarColor[i1] == ColorDefault { // the same as above
- p.Bg |= AttrReverse
+ c.Bg |= AttrReverse
}
if h == 0 {
- p.Bg = bc.BgColor
+ c.Bg = bc.Bg
}
- p.X = bc.innerX + oftX + (bc.BarWidth-len(bc.dataNum[i1][i]))/2 + j
- p.Y = bc.innerY + bc.innerHeight - 2 - ph
- ps = append(ps, p)
+ x := bc.innerArea.Min.X + oftX + (bc.BarWidth-len(bc.dataNum[i1][i]))/2 + j
+ y := bc.innerArea.Min.Y + bc.innerArea.Dy() - 2 - ph
+ buf.Set(x, y, c)
}
ph += h
}
@@ -208,26 +212,31 @@ func (bc *MBarChart) Buffer() []Point {
if bc.ShowScale {
//Currently bar graph only supprts data range from 0 to MAX
//Plot 0
- p := Point{}
- p.Ch = '0'
- p.Bg = bc.BgColor
- p.Fg = bc.TextColor
- p.Y = bc.innerY + bc.innerHeight - 2
- p.X = bc.X
- ps = append(ps, p)
+ c := Cell{
+ Ch: '0',
+ Bg: bc.Bg,
+ Fg: bc.TextColor,
+ }
+
+ y := bc.innerArea.Min.Y + bc.innerArea.Dy() - 2
+ x := bc.X
+ buf.Set(x, y, c)
//Plot the maximum sacle value
for i := 0; i < len(bc.maxScale); i++ {
- p := Point{}
- p.Ch = bc.maxScale[i]
- p.Bg = bc.BgColor
- p.Fg = bc.TextColor
- p.Y = bc.innerY
- p.X = bc.X + i
- ps = append(ps, p)
+ c := Cell{
+ Ch: bc.maxScale[i],
+ Bg: bc.Bg,
+ Fg: bc.TextColor,
+ }
+
+ y := bc.innerArea.Min.Y
+ x := bc.X + i
+
+ buf.Set(x, y, c)
}
}
- return bc.Block.chopOverflow(ps)
+ return buf
}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/p.go b/Godeps/_workspace/src/github.com/gizak/termui/p.go
deleted file mode 100644
index e327d7489..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/p.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-package termui
-
-// Par displays a paragraph.
-/*
- par := termui.NewPar("Simple Text")
- par.Height = 3
- par.Width = 17
- par.Border.Label = "Label"
-*/
-type Par struct {
- Block
- Text string
- TextFgColor Attribute
- TextBgColor Attribute
-}
-
-// NewPar returns a new *Par with given text as its content.
-func NewPar(s string) *Par {
- return &Par{
- Block: *NewBlock(),
- Text: s,
- TextFgColor: theme.ParTextFg,
- TextBgColor: theme.ParTextBg}
-}
-
-// Buffer implements Bufferer interface.
-func (p *Par) Buffer() []Point {
- ps := p.Block.Buffer()
-
- rs := str2runes(p.Text)
- i, j, k := 0, 0, 0
- for i < p.innerHeight && k < len(rs) {
- // the width of char is about to print
- w := charWidth(rs[k])
-
- if rs[k] == '\n' || j+w > p.innerWidth {
- i++
- j = 0 // set x = 0
- if rs[k] == '\n' {
- k++
- }
-
- if i >= p.innerHeight {
- ps = append(ps, newPointWithAttrs('…',
- p.innerX+p.innerWidth-1,
- p.innerY+p.innerHeight-1,
- p.TextFgColor, p.TextBgColor))
- break
- }
-
- continue
- }
- pi := Point{}
- pi.X = p.innerX + j
- pi.Y = p.innerY + i
-
- pi.Ch = rs[k]
- pi.Bg = p.TextBgColor
- pi.Fg = p.TextFgColor
-
- ps = append(ps, pi)
-
- k++
- j += w
- }
- return p.Block.chopOverflow(ps)
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/par.go b/Godeps/_workspace/src/github.com/gizak/termui/par.go
new file mode 100644
index 000000000..c01bd0020
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gizak/termui/par.go
@@ -0,0 +1,64 @@
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Use of this source code is governed by a MIT license that can
+// be found in the LICENSE file.
+
+package termui
+
+// Par displays a paragraph.
+/*
+ par := termui.NewPar("Simple Text")
+ par.Height = 3
+ par.Width = 17
+ par.Border.Label = "Label"
+*/
+type Par struct {
+ Block
+ Text string
+ TextFgColor Attribute
+ TextBgColor Attribute
+}
+
+// NewPar returns a new *Par with given text as its content.
+func NewPar(s string) *Par {
+ return &Par{
+ Block: *NewBlock(),
+ Text: s,
+ TextFgColor: ThemeAttr("par.text.fg"),
+ TextBgColor: ThemeAttr("par.text.bg"),
+ }
+}
+
+// Buffer implements Bufferer interface.
+func (p *Par) Buffer() Buffer {
+ buf := p.Block.Buffer()
+
+ fg, bg := p.TextFgColor, p.TextBgColor
+ cs := DefaultTxBuilder.Build(p.Text, fg, bg)
+
+ y, x, n := 0, 0, 0
+ for y < p.innerArea.Dy() && n < len(cs) {
+ w := cs[n].Width()
+ if cs[n].Ch == '\n' || x+w > p.innerArea.Dx() {
+ y++
+ x = 0 // set x = 0
+ if cs[n].Ch == '\n' {
+ n++
+ }
+
+ if y >= p.innerArea.Dy() {
+ buf.Set(p.innerArea.Min.X+p.innerArea.Dx()-1,
+ p.innerArea.Min.Y+p.innerArea.Dy()-1,
+ Cell{Ch: '…', Fg: p.TextFgColor, Bg: p.TextBgColor})
+ break
+ }
+ continue
+ }
+
+ buf.Set(p.innerArea.Min.X+x, p.innerArea.Min.Y+y, cs[n])
+
+ n++
+ x += w
+ }
+
+ return buf
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/point.go b/Godeps/_workspace/src/github.com/gizak/termui/point.go
deleted file mode 100644
index c381af9a4..000000000
--- a/Godeps/_workspace/src/github.com/gizak/termui/point.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
-// Use of this source code is governed by a MIT license that can
-// be found in the LICENSE file.
-
-package termui
-
-// Point stands for a single cell in terminal.
-type Point struct {
- Ch rune
- Bg Attribute
- Fg Attribute
- X int
- Y int
-}
-
-func newPoint(c rune, x, y int) (p Point) {
- p.Ch = c
- p.X = x
- p.Y = y
- return
-}
-
-func newPointWithAttrs(c rune, x, y int, fg, bg Attribute) Point {
- p := newPoint(c, x, y)
- p.Bg = bg
- p.Fg = fg
- return p
-}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/pos.go b/Godeps/_workspace/src/github.com/gizak/termui/pos.go
new file mode 100644
index 000000000..2046dce5a
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gizak/termui/pos.go
@@ -0,0 +1,78 @@
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Use of this source code is governed by a MIT license that can
+// be found in the LICENSE file.
+
+package termui
+
+import "image"
+
+// Align is the position of the gauge's label.
+type Align uint
+
+// All supported positions.
+const (
+ AlignNone Align = 0
+ AlignLeft Align = 1 << iota
+ AlignRight
+ AlignBottom
+ AlignTop
+ AlignCenterVertical
+ AlignCenterHorizontal
+ AlignCenter = AlignCenterVertical | AlignCenterHorizontal
+)
+
+func AlignArea(parent, child image.Rectangle, a Align) image.Rectangle {
+ w, h := child.Dx(), child.Dy()
+
+ // parent center
+ pcx, pcy := parent.Min.X+parent.Dx()/2, parent.Min.Y+parent.Dy()/2
+ // child center
+ ccx, ccy := child.Min.X+child.Dx()/2, child.Min.Y+child.Dy()/2
+
+ if a&AlignLeft == AlignLeft {
+ child.Min.X = parent.Min.X
+ child.Max.X = child.Min.X + w
+ }
+
+ if a&AlignRight == AlignRight {
+ child.Max.X = parent.Max.X
+ child.Min.X = child.Max.X - w
+ }
+
+ if a&AlignBottom == AlignBottom {
+ child.Max.Y = parent.Max.Y
+ child.Min.Y = child.Max.Y - h
+ }
+
+ if a&AlignTop == AlignRight {
+ child.Min.Y = parent.Min.Y
+ child.Max.Y = child.Min.Y + h
+ }
+
+ if a&AlignCenterHorizontal == AlignCenterHorizontal {
+ child.Min.X += pcx - ccx
+ child.Max.X = child.Min.X + w
+ }
+
+ if a&AlignCenterVertical == AlignCenterVertical {
+ child.Min.Y += pcy - ccy
+ child.Max.Y = child.Min.Y + h
+ }
+
+ return child
+}
+
+func MoveArea(a image.Rectangle, dx, dy int) image.Rectangle {
+ a.Min.X += dx
+ a.Max.X += dx
+ a.Min.Y += dy
+ a.Max.Y += dy
+ return a
+}
+
+var termWidth int
+var termHeight int
+
+func TermRect() image.Rectangle {
+ return image.Rect(0, 0, termWidth, termHeight)
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/render.go b/Godeps/_workspace/src/github.com/gizak/termui/render.go
index d697d0aea..36544f063 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/render.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/render.go
@@ -1,29 +1,62 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
package termui
-import tm "github.com/nsf/termbox-go"
+import (
+ "image"
+ "sync"
+ "time"
+
+ tm "github.com/nsf/termbox-go"
+)
// Bufferer should be implemented by all renderable components.
type Bufferer interface {
- Buffer() []Point
+ Buffer() Buffer
}
// Init initializes termui library. This function should be called before any others.
// After initialization, the library must be finalized by 'Close' function.
func Init() error {
+ if err := tm.Init(); err != nil {
+ return err
+ }
+
+ sysEvtChs = make([]chan Event, 0)
+ go hookTermboxEvt()
+
+ renderJobs = make(chan []Bufferer)
+ //renderLock = new(sync.RWMutex)
+
Body = NewGrid()
Body.X = 0
Body.Y = 0
- Body.BgColor = theme.BodyBg
- defer func() {
- w, _ := tm.Size()
- Body.Width = w
- evtListen()
+ Body.BgColor = ThemeAttr("bg")
+ Body.Width = TermWidth()
+
+ DefaultEvtStream.Init()
+ DefaultEvtStream.Merge("termbox", NewSysEvtCh())
+ DefaultEvtStream.Merge("timer", NewTimerCh(time.Second))
+ DefaultEvtStream.Merge("custom", usrEvtCh)
+
+ DefaultEvtStream.Handle("/", DefualtHandler)
+ DefaultEvtStream.Handle("/sys/wnd/resize", func(e Event) {
+ w := e.Data.(EvtWnd)
+ Body.Width = w.Width
+ })
+
+ DefaultWgtMgr = NewWgtMgr()
+ DefaultEvtStream.Hook(DefaultWgtMgr.WgtHandlersHook())
+
+ go func() {
+ for bs := range renderJobs {
+ render(bs...)
+ }
}()
- return tm.Init()
+
+ return nil
}
// Close finalizes termui library,
@@ -32,29 +65,71 @@ func Close() {
tm.Close()
}
+var renderLock sync.Mutex
+
+func termSync() {
+ renderLock.Lock()
+ tm.Sync()
+ termWidth, termHeight = tm.Size()
+ renderLock.Unlock()
+}
+
// TermWidth returns the current terminal's width.
func TermWidth() int {
- tm.Sync()
- w, _ := tm.Size()
- return w
+ termSync()
+ return termWidth
}
// TermHeight returns the current terminal's height.
func TermHeight() int {
- tm.Sync()
- _, h := tm.Size()
- return h
+ termSync()
+ return termHeight
}
// Render renders all Bufferer in the given order from left to right,
// right could overlap on left ones.
-func Render(rs ...Bufferer) {
- tm.Clear(tm.ColorDefault, toTmAttr(theme.BodyBg))
- for _, r := range rs {
- buf := r.Buffer()
- for _, v := range buf {
- tm.SetCell(v.X, v.Y, v.Ch, toTmAttr(v.Fg), toTmAttr(v.Bg))
+func render(bs ...Bufferer) {
+
+ for _, b := range bs {
+
+ buf := b.Buffer()
+ // set cels in buf
+ for p, c := range buf.CellMap {
+ if p.In(buf.Area) {
+
+ tm.SetCell(p.X, p.Y, c.Ch, toTmAttr(c.Fg), toTmAttr(c.Bg))
+
+ }
}
+
}
+
+ renderLock.Lock()
+ // render
tm.Flush()
+ renderLock.Unlock()
+}
+
+func Clear() {
+ tm.Clear(tm.ColorDefault, toTmAttr(ThemeAttr("bg")))
+}
+
+func clearArea(r image.Rectangle, bg Attribute) {
+ for i := r.Min.X; i < r.Max.X; i++ {
+ for j := r.Min.Y; j < r.Max.Y; j++ {
+ tm.SetCell(i, j, ' ', tm.ColorDefault, toTmAttr(bg))
+ }
+ }
+}
+
+func ClearArea(r image.Rectangle, bg Attribute) {
+ clearArea(r, bg)
+ tm.Flush()
+}
+
+var renderJobs chan []Bufferer
+
+func Render(bs ...Bufferer) {
+ //go func() { renderJobs <- bs }()
+ renderJobs <- bs
}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/sparkline.go b/Godeps/_workspace/src/github.com/gizak/termui/sparkline.go
index c63a5857f..312ad9563 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/sparkline.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/sparkline.go
@@ -1,12 +1,10 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
package termui
-import "math"
-
-// Sparkline is like: ▅▆▂▂▅▇▂▂▃▆▆▆▅▃
+// Sparkline is like: ▅▆▂▂▅▇▂▂▃▆▆▆▅▃. The data points should be non-negative integers.
/*
data := []int{4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1}
spl := termui.NewSparkline()
@@ -49,8 +47,8 @@ func (s *Sparklines) Add(sl Sparkline) {
func NewSparkline() Sparkline {
return Sparkline{
Height: 1,
- TitleColor: theme.SparklineTitle,
- LineColor: theme.SparklineLine}
+ TitleColor: ThemeAttr("sparkline.title.fg"),
+ LineColor: ThemeAttr("sparkline.line.fg")}
}
// NewSparklines return a new *Spaklines with given Sparkline(s), you can always add a new Sparkline later.
@@ -67,13 +65,13 @@ func (sl *Sparklines) update() {
sl.Lines[i].displayHeight = v.Height + 1
}
}
- sl.displayWidth = sl.innerWidth
+ sl.displayWidth = sl.innerArea.Dx()
// get how many lines gotta display
h := 0
sl.displayLines = 0
for _, v := range sl.Lines {
- if h+v.displayHeight <= sl.innerHeight {
+ if h+v.displayHeight <= sl.innerArea.Dy() {
sl.displayLines++
} else {
break
@@ -84,20 +82,24 @@ func (sl *Sparklines) update() {
for i := 0; i < sl.displayLines; i++ {
data := sl.Lines[i].Data
- max := math.MinInt32
+ max := 0
for _, v := range data {
if max < v {
max = v
}
}
sl.Lines[i].max = max
- sl.Lines[i].scale = float32(8*sl.Lines[i].Height) / float32(max)
+ if max != 0 {
+ sl.Lines[i].scale = float32(8*sl.Lines[i].Height) / float32(max)
+ } else { // when all negative
+ sl.Lines[i].scale = 0
+ }
}
}
// Buffer implements Bufferer interface.
-func (sl *Sparklines) Buffer() []Point {
- ps := sl.Block.Buffer()
+func (sl *Sparklines) Buffer() Buffer {
+ buf := sl.Block.Buffer()
sl.update()
oftY := 0
@@ -105,52 +107,61 @@ func (sl *Sparklines) Buffer() []Point {
l := sl.Lines[i]
data := l.Data
- if len(data) > sl.innerWidth {
- data = data[len(data)-sl.innerWidth:]
+ if len(data) > sl.innerArea.Dx() {
+ data = data[len(data)-sl.innerArea.Dx():]
}
if l.Title != "" {
- rs := trimStr2Runes(l.Title, sl.innerWidth)
+ rs := trimStr2Runes(l.Title, sl.innerArea.Dx())
oftX := 0
for _, v := range rs {
w := charWidth(v)
- p := Point{}
- p.Ch = v
- p.Fg = l.TitleColor
- p.Bg = sl.BgColor
- p.X = sl.innerX + oftX
- p.Y = sl.innerY + oftY
- ps = append(ps, p)
+ c := Cell{
+ Ch: v,
+ Fg: l.TitleColor,
+ Bg: sl.Bg,
+ }
+ x := sl.innerArea.Min.X + oftX
+ y := sl.innerArea.Min.Y + oftY
+ buf.Set(x, y, c)
oftX += w
}
}
for j, v := range data {
+ // display height of the data point, zero when data is negative
h := int(float32(v)*l.scale + 0.5)
+ if v < 0 {
+ h = 0
+ }
+
barCnt := h / 8
barMod := h % 8
for jj := 0; jj < barCnt; jj++ {
- p := Point{}
- p.X = sl.innerX + j
- p.Y = sl.innerY + oftY + l.Height - jj
- p.Ch = ' ' // => sparks[7]
- p.Bg = l.LineColor
+ c := Cell{
+ Ch: ' ', // => sparks[7]
+ Bg: l.LineColor,
+ }
+ x := sl.innerArea.Min.X + j
+ y := sl.innerArea.Min.Y + oftY + l.Height - jj
+
//p.Bg = sl.BgColor
- ps = append(ps, p)
+ buf.Set(x, y, c)
}
if barMod != 0 {
- p := Point{}
- p.X = sl.innerX + j
- p.Y = sl.innerY + oftY + l.Height - barCnt
- p.Ch = sparks[barMod-1]
- p.Fg = l.LineColor
- p.Bg = sl.BgColor
- ps = append(ps, p)
+ c := Cell{
+ Ch: sparks[barMod-1],
+ Fg: l.LineColor,
+ Bg: sl.Bg,
+ }
+ x := sl.innerArea.Min.X + j
+ y := sl.innerArea.Min.Y + oftY + l.Height - barCnt
+ buf.Set(x, y, c)
}
}
oftY += l.displayHeight
}
- return sl.Block.chopOverflow(ps)
+ return buf
}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/test/runtest.go b/Godeps/_workspace/src/github.com/gizak/termui/test/runtest.go
new file mode 100644
index 000000000..99794c4db
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gizak/termui/test/runtest.go
@@ -0,0 +1,66 @@
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Use of this source code is governed by a MIT license that can
+// be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/gizak/termui"
+ "github.com/gizak/termui/debug"
+)
+
+func main() {
+ // run as client
+ if len(os.Args) > 1 {
+ fmt.Print(debug.ConnectAndListen())
+ return
+ }
+
+ // run as server
+ go func() { panic(debug.ListenAndServe()) }()
+
+ if err := termui.Init(); err != nil {
+ panic(err)
+ }
+ defer termui.Close()
+
+ //termui.UseTheme("helloworld")
+ b := termui.NewBlock()
+ b.Width = 20
+ b.Height = 20
+ b.Float = termui.AlignCenter
+ b.BorderLabel = "[HELLO](fg-red,bg-white) [WORLD](fg-blue,bg-green)"
+
+ termui.Render(b)
+
+ termui.Handle("/sys", func(e termui.Event) {
+ k, ok := e.Data.(termui.EvtKbd)
+ debug.Logf("->%v\n", e)
+ if ok && k.KeyStr == "q" {
+ termui.StopLoop()
+ }
+ })
+
+ termui.Handle(("/usr"), func(e termui.Event) {
+ debug.Logf("->%v\n", e)
+ })
+
+ termui.Handle("/timer/1s", func(e termui.Event) {
+ t := e.Data.(termui.EvtTimer)
+ termui.SendCustomEvt("/usr/t", t.Count)
+
+ if t.Count%2 == 0 {
+ b.BorderLabel = "[HELLO](fg-red,bg-green) [WORLD](fg-blue,bg-white)"
+ } else {
+ b.BorderLabel = "[HELLO](fg-blue,bg-white) [WORLD](fg-red,bg-green)"
+ }
+
+ termui.Render(b)
+
+ })
+
+ termui.Loop()
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/textbuilder.go b/Godeps/_workspace/src/github.com/gizak/termui/textbuilder.go
new file mode 100644
index 000000000..6ff6d21f3
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gizak/termui/textbuilder.go
@@ -0,0 +1,215 @@
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Use of this source code is governed by a MIT license that can
+// be found in the LICENSE file.
+
+package termui
+
+import (
+ "regexp"
+ "strings"
+)
+
+// TextBuilder is a minial interface to produce text []Cell using sepcific syntax (markdown).
+type TextBuilder interface {
+ Build(s string, fg, bg Attribute) []Cell
+}
+
+// DefaultTxBuilder is set to be MarkdownTxBuilder.
+var DefaultTxBuilder = NewMarkdownTxBuilder()
+
+// MarkdownTxBuilder implements TextBuilder interface, using markdown syntax.
+type MarkdownTxBuilder struct {
+ baseFg Attribute
+ baseBg Attribute
+ plainTx []rune
+ markers []marker
+}
+
+type marker struct {
+ st int
+ ed int
+ fg Attribute
+ bg Attribute
+}
+
+var colorMap = map[string]Attribute{
+ "red": ColorRed,
+ "blue": ColorBlue,
+ "black": ColorBlack,
+ "cyan": ColorCyan,
+ "yellow": ColorYellow,
+ "white": ColorWhite,
+ "default": ColorDefault,
+ "green": ColorGreen,
+ "magenta": ColorMagenta,
+}
+
+var attrMap = map[string]Attribute{
+ "bold": AttrBold,
+ "underline": AttrUnderline,
+ "reverse": AttrReverse,
+}
+
+func rmSpc(s string) string {
+ reg := regexp.MustCompile(`\s+`)
+ return reg.ReplaceAllString(s, "")
+}
+
+// readAttr translates strings like `fg-red,fg-bold,bg-white` to fg and bg Attribute
+func (mtb MarkdownTxBuilder) readAttr(s string) (Attribute, Attribute) {
+ fg := mtb.baseFg
+ bg := mtb.baseBg
+
+ updateAttr := func(a Attribute, attrs []string) Attribute {
+ for _, s := range attrs {
+ // replace the color
+ if c, ok := colorMap[s]; ok {
+ a &= 0xFF00 // erase clr 0 ~ 8 bits
+ a |= c // set clr
+ }
+ // add attrs
+ if c, ok := attrMap[s]; ok {
+ a |= c
+ }
+ }
+ return a
+ }
+
+ ss := strings.Split(s, ",")
+ fgs := []string{}
+ bgs := []string{}
+ for _, v := range ss {
+ subs := strings.Split(v, "-")
+ if len(subs) > 1 {
+ if subs[0] == "fg" {
+ fgs = append(fgs, subs[1])
+ }
+ if subs[0] == "bg" {
+ bgs = append(bgs, subs[1])
+ }
+ }
+ }
+
+ fg = updateAttr(fg, fgs)
+ bg = updateAttr(bg, bgs)
+ return fg, bg
+}
+
+func (mtb *MarkdownTxBuilder) reset() {
+ mtb.plainTx = []rune{}
+ mtb.markers = []marker{}
+}
+
+// parse streams and parses text into normalized text and render sequence.
+func (mtb *MarkdownTxBuilder) parse(str string) {
+ rs := str2runes(str)
+ normTx := []rune{}
+ square := []rune{}
+ brackt := []rune{}
+ accSquare := false
+ accBrackt := false
+ cntSquare := 0
+
+ reset := func() {
+ square = []rune{}
+ brackt = []rune{}
+ accSquare = false
+ accBrackt = false
+ cntSquare = 0
+ }
+ // pipe stacks into normTx and clear
+ rollback := func() {
+ normTx = append(normTx, square...)
+ normTx = append(normTx, brackt...)
+ reset()
+ }
+ // chop first and last
+ chop := func(s []rune) []rune {
+ return s[1 : len(s)-1]
+ }
+
+ for i, r := range rs {
+ switch {
+ // stacking brackt
+ case accBrackt:
+ brackt = append(brackt, r)
+ if ')' == r {
+ fg, bg := mtb.readAttr(string(chop(brackt)))
+ st := len(normTx)
+ ed := len(normTx) + len(square) - 2
+ mtb.markers = append(mtb.markers, marker{st, ed, fg, bg})
+ normTx = append(normTx, chop(square)...)
+ reset()
+ } else if i+1 == len(rs) {
+ rollback()
+ }
+ // stacking square
+ case accSquare:
+ switch {
+ // squares closed and followed by a '('
+ case cntSquare == 0 && '(' == r:
+ accBrackt = true
+ brackt = append(brackt, '(')
+ // squares closed but not followed by a '('
+ case cntSquare == 0:
+ rollback()
+ if '[' == r {
+ accSquare = true
+ cntSquare = 1
+ brackt = append(brackt, '[')
+ } else {
+ normTx = append(normTx, r)
+ }
+ // hit the end
+ case i+1 == len(rs):
+ square = append(square, r)
+ rollback()
+ case '[' == r:
+ cntSquare++
+ square = append(square, '[')
+ case ']' == r:
+ cntSquare--
+ square = append(square, ']')
+ // normal char
+ default:
+ square = append(square, r)
+ }
+ // stacking normTx
+ default:
+ if '[' == r {
+ accSquare = true
+ cntSquare = 1
+ square = append(square, '[')
+ } else {
+ normTx = append(normTx, r)
+ }
+ }
+ }
+
+ mtb.plainTx = normTx
+}
+
+// Build implements TextBuilder interface.
+func (mtb MarkdownTxBuilder) Build(s string, fg, bg Attribute) []Cell {
+ mtb.baseFg = fg
+ mtb.baseBg = bg
+ mtb.reset()
+ mtb.parse(s)
+ cs := make([]Cell, len(mtb.plainTx))
+ for i := range cs {
+ cs[i] = Cell{Ch: mtb.plainTx[i], Fg: fg, Bg: bg}
+ }
+ for _, mrk := range mtb.markers {
+ for i := mrk.st; i < mrk.ed; i++ {
+ cs[i].Fg = mrk.fg
+ cs[i].Bg = mrk.bg
+ }
+ }
+
+ return cs
+}
+
+// NewMarkdownTxBuilder returns a TextBuilder employing markdown syntax.
+func NewMarkdownTxBuilder() TextBuilder {
+ return MarkdownTxBuilder{}
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/theme.go b/Godeps/_workspace/src/github.com/gizak/termui/theme.go
index c8ad94756..c3ccda559 100644
--- a/Godeps/_workspace/src/github.com/gizak/termui/theme.go
+++ b/Godeps/_workspace/src/github.com/gizak/termui/theme.go
@@ -1,9 +1,12 @@
-// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
// Use of this source code is governed by a MIT license that can
// be found in the LICENSE file.
package termui
+import "strings"
+
+/*
// A ColorScheme represents the current look-and-feel of the dashboard.
type ColorScheme struct {
BodyBg Attribute
@@ -29,6 +32,7 @@ type ColorScheme struct {
MBarChartBar Attribute
MBarChartText Attribute
MBarChartNum Attribute
+ TabActiveBg Attribute
}
// default color scheme depends on the user's terminal setting.
@@ -58,6 +62,7 @@ var themeHelloWorld = ColorScheme{
MBarChartBar: ColorRed,
MBarChartNum: ColorWhite,
MBarChartText: ColorCyan,
+ TabActiveBg: ColorMagenta,
}
var theme = themeDefault // global dep
@@ -82,3 +87,54 @@ func UseTheme(th string) {
theme = themeDefault
}
}
+*/
+
+var ColorMap = map[string]Attribute{
+ "fg": ColorWhite,
+ "bg": ColorDefault,
+ "border.fg": ColorWhite,
+ "label.fg": ColorGreen,
+ "par.fg": ColorYellow,
+ "par.label.bg": ColorWhite,
+}
+
+func ThemeAttr(name string) Attribute {
+ return lookUpAttr(ColorMap, name)
+}
+
+func lookUpAttr(clrmap map[string]Attribute, name string) Attribute {
+
+ a, ok := clrmap[name]
+ if ok {
+ return a
+ }
+
+ ns := strings.Split(name, ".")
+ for i := range ns {
+ nn := strings.Join(ns[i:len(ns)], ".")
+ a, ok = ColorMap[nn]
+ if ok {
+ break
+ }
+ }
+
+ return a
+}
+
+// 0<=r,g,b <= 5
+func ColorRGB(r, g, b int) Attribute {
+ within := func(n int) int {
+ if n < 0 {
+ return 0
+ }
+
+ if n > 5 {
+ return 5
+ }
+
+ return n
+ }
+
+ r, b, g = within(r), within(b), within(g)
+ return Attribute(0x0f + 36*r + 6*g + b)
+}
diff --git a/Godeps/_workspace/src/github.com/gizak/termui/widget.go b/Godeps/_workspace/src/github.com/gizak/termui/widget.go
new file mode 100644
index 000000000..35cf143a3
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gizak/termui/widget.go
@@ -0,0 +1,94 @@
+// Copyright 2016 Zack Guo <gizak@icloud.com>. All rights reserved.
+// Use of this source code is governed by a MIT license that can
+// be found in the LICENSE file.
+
+package termui
+
+import (
+ "fmt"
+ "sync"
+)
+
+// event mixins
+type WgtMgr map[string]WgtInfo
+
+type WgtInfo struct {
+ Handlers map[string]func(Event)
+ WgtRef Widget
+ Id string
+}
+
+type Widget interface {
+ Id() string
+}
+
+func NewWgtInfo(wgt Widget) WgtInfo {
+ return WgtInfo{
+ Handlers: make(map[string]func(Event)),
+ WgtRef: wgt,
+ Id: wgt.Id(),
+ }
+}
+
+func NewWgtMgr() WgtMgr {
+ wm := WgtMgr(make(map[string]WgtInfo))
+ return wm
+
+}
+
+func (wm WgtMgr) AddWgt(wgt Widget) {
+ wm[wgt.Id()] = NewWgtInfo(wgt)
+}
+
+func (wm WgtMgr) RmWgt(wgt Widget) {
+ wm.RmWgtById(wgt.Id())
+}
+
+func (wm WgtMgr) RmWgtById(id string) {
+ delete(wm, id)
+}
+
+func (wm WgtMgr) AddWgtHandler(id, path string, h func(Event)) {
+ if w, ok := wm[id]; ok {
+ w.Handlers[path] = h
+ }
+}
+
+func (wm WgtMgr) RmWgtHandler(id, path string) {
+ if w, ok := wm[id]; ok {
+ delete(w.Handlers, path)
+ }
+}
+
+var counter struct {
+ sync.RWMutex
+ count int
+}
+
+func GenId() string {
+ counter.Lock()
+ defer counter.Unlock()
+
+ counter.count += 1
+ return fmt.Sprintf("%d", counter.count)
+}
+
+func (wm WgtMgr) WgtHandlersHook() func(Event) {
+ return func(e Event) {
+ for _, v := range wm {
+ if k := findMatch(v.Handlers, e.Path); k != "" {
+ v.Handlers[k](e)
+ }
+ }
+ }
+}
+
+var DefaultWgtMgr WgtMgr
+
+func (b *Block) Handle(path string, handler func(Event)) {
+ if _, ok := DefaultWgtMgr[b.Id()]; !ok {
+ DefaultWgtMgr.AddWgt(b)
+ }
+
+ DefaultWgtMgr.AddWgtHandler(b.Id(), path, handler)
+}
diff --git a/Godeps/_workspace/src/github.com/golang/snappy/AUTHORS b/Godeps/_workspace/src/github.com/golang/snappy/AUTHORS
new file mode 100644
index 000000000..bcfa19520
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/golang/snappy/AUTHORS
@@ -0,0 +1,15 @@
+# This is the official list of Snappy-Go authors for copyright purposes.
+# This file is distinct from the CONTRIBUTORS files.
+# See the latter for an explanation.
+
+# Names should be added to this file as
+# Name or Organization <email address>
+# The email address is not required for organizations.
+
+# Please keep the list sorted.
+
+Damian Gryski <dgryski@gmail.com>
+Google Inc.
+Jan Mercl <0xjnml@gmail.com>
+Rodolfo Carvalho <rhcarvalho@gmail.com>
+Sebastien Binet <seb.binet@gmail.com>
diff --git a/Godeps/_workspace/src/github.com/golang/snappy/CONTRIBUTORS b/Godeps/_workspace/src/github.com/golang/snappy/CONTRIBUTORS
new file mode 100644
index 000000000..931ae3160
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/golang/snappy/CONTRIBUTORS
@@ -0,0 +1,37 @@
+# This is the official list of people who can contribute
+# (and typically have contributed) code to the Snappy-Go repository.
+# The AUTHORS file lists the copyright holders; this file
+# lists people. For example, Google employees are listed here
+# but not in AUTHORS, because Google holds the copyright.
+#
+# The submission process automatically checks to make sure
+# that people submitting code are listed in this file (by email address).
+#
+# Names should be added to this file only after verifying that
+# the individual or the individual's organization has agreed to
+# the appropriate Contributor License Agreement, found here:
+#
+# http://code.google.com/legal/individual-cla-v1.0.html
+# http://code.google.com/legal/corporate-cla-v1.0.html
+#
+# The agreement for individuals can be filled out on the web.
+#
+# When adding J Random Contributor's name to this file,
+# either J's name or J's organization's name should be
+# added to the AUTHORS file, depending on whether the
+# individual or corporate CLA was used.
+
+# Names should be added to this file like so:
+# Name <email address>
+
+# Please keep the list sorted.
+
+Damian Gryski <dgryski@gmail.com>
+Jan Mercl <0xjnml@gmail.com>
+Kai Backman <kaib@golang.org>
+Marc-Antoine Ruel <maruel@chromium.org>
+Nigel Tao <nigeltao@golang.org>
+Rob Pike <r@golang.org>
+Rodolfo Carvalho <rhcarvalho@gmail.com>
+Russ Cox <rsc@golang.org>
+Sebastien Binet <seb.binet@gmail.com>
diff --git a/Godeps/_workspace/src/github.com/golang/snappy/LICENSE b/Godeps/_workspace/src/github.com/golang/snappy/LICENSE
new file mode 100644
index 000000000..6050c10f4
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/golang/snappy/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/github.com/golang/snappy/README b/Godeps/_workspace/src/github.com/golang/snappy/README
new file mode 100644
index 000000000..5074bbab8
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/golang/snappy/README
@@ -0,0 +1,7 @@
+The Snappy compression format in the Go programming language.
+
+To download and install from source:
+$ go get github.com/golang/snappy
+
+Unless otherwise noted, the Snappy-Go source files are distributed
+under the BSD-style license found in the LICENSE file.
diff --git a/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/decode.go b/Godeps/_workspace/src/github.com/golang/snappy/decode.go
index 552a17bfb..8bab5bdd0 100644
--- a/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/decode.go
+++ b/Godeps/_workspace/src/github.com/golang/snappy/decode.go
@@ -13,6 +13,8 @@ import (
var (
// ErrCorrupt reports that the input is invalid.
ErrCorrupt = errors.New("snappy: corrupt input")
+ // ErrTooLarge reports that the uncompressed length is too large.
+ ErrTooLarge = errors.New("snappy: decoded block is too large")
// ErrUnsupported reports that the input isn't supported.
ErrUnsupported = errors.New("snappy: unsupported input")
)
@@ -27,11 +29,13 @@ func DecodedLen(src []byte) (int, error) {
// that the length header occupied.
func decodedLen(src []byte) (blockLen, headerLen int, err error) {
v, n := binary.Uvarint(src)
- if n == 0 {
+ if n <= 0 || v > 0xffffffff {
return 0, 0, ErrCorrupt
}
- if uint64(int(v)) != v {
- return 0, 0, errors.New("snappy: decoded block is too large")
+
+ const wordSize = 32 << (^uint(0) >> 32 & 1)
+ if wordSize == 32 && v > 0x7fffffff {
+ return 0, 0, ErrTooLarge
}
return int(v), n, nil
}
@@ -56,7 +60,7 @@ func Decode(dst, src []byte) ([]byte, error) {
x := uint(src[s] >> 2)
switch {
case x < 60:
- s += 1
+ s++
case x == 60:
s += 2
if s > len(src) {
@@ -130,7 +134,7 @@ func Decode(dst, src []byte) ([]byte, error) {
// NewReader returns a new Reader that decompresses from r, using the framing
// format described at
-// https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
+// https://github.com/google/snappy/blob/master/framing_format.txt
func NewReader(r io.Reader) *Reader {
return &Reader{
r: r,
@@ -139,7 +143,7 @@ func NewReader(r io.Reader) *Reader {
}
}
-// Reader is an io.Reader than can read Snappy-compressed bytes.
+// Reader is an io.Reader that can read Snappy-compressed bytes.
type Reader struct {
r io.Reader
err error
@@ -200,7 +204,7 @@ func (r *Reader) Read(p []byte) (int, error) {
}
// The chunk types are specified at
- // https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
+ // https://github.com/google/snappy/blob/master/framing_format.txt
switch chunkType {
case chunkTypeCompressedData:
// Section 4.2. Compressed data (chunk type 0x00).
@@ -280,13 +284,11 @@ func (r *Reader) Read(p []byte) (int, error) {
// Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f).
r.err = ErrUnsupported
return 0, r.err
-
- } else {
- // Section 4.4 Padding (chunk type 0xfe).
- // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd).
- if !r.readFull(r.buf[:chunkLen]) {
- return 0, r.err
- }
+ }
+ // Section 4.4 Padding (chunk type 0xfe).
+ // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd).
+ if !r.readFull(r.buf[:chunkLen]) {
+ return 0, r.err
}
}
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/encode.go b/Godeps/_workspace/src/github.com/golang/snappy/encode.go
index dda372422..834e3b06a 100644
--- a/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/encode.go
+++ b/Godeps/_workspace/src/github.com/golang/snappy/encode.go
@@ -6,6 +6,7 @@ package snappy
import (
"encoding/binary"
+ "errors"
"io"
)
@@ -79,7 +80,7 @@ func emitCopy(dst []byte, offset, length int) int {
// slice of dst if dst was large enough to hold the entire encoded block.
// Otherwise, a newly allocated slice will be returned.
// It is valid to pass a nil dst.
-func Encode(dst, src []byte) ([]byte, error) {
+func Encode(dst, src []byte) []byte {
if n := MaxEncodedLen(len(src)); len(dst) < n {
dst = make([]byte, n)
}
@@ -92,7 +93,7 @@ func Encode(dst, src []byte) ([]byte, error) {
if len(src) != 0 {
d += emitLiteral(dst[d:], src)
}
- return dst[:d], nil
+ return dst[:d]
}
// Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive.
@@ -122,7 +123,8 @@ func Encode(dst, src []byte) ([]byte, error) {
t, *p = *p-1, s+1
// If t is invalid or src[s:s+4] differs from src[t:t+4], accumulate a literal byte.
if t < 0 || s-t >= maxOffset || b0 != src[t] || b1 != src[t+1] || b2 != src[t+2] || b3 != src[t+3] {
- s++
+ // Skip multiple bytes if the last match was >= 32 bytes prior.
+ s += 1 + (s-lit)>>5
continue
}
// Otherwise, we have a match. First, emit any pending literal bytes.
@@ -145,7 +147,7 @@ func Encode(dst, src []byte) ([]byte, error) {
if lit != len(src) {
d += emitLiteral(dst[d:], src[lit:])
}
- return dst[:d], nil
+ return dst[:d]
}
// MaxEncodedLen returns the maximum length of a snappy block, given its
@@ -174,23 +176,56 @@ func MaxEncodedLen(srcLen int) int {
return 32 + srcLen + srcLen/6
}
-// NewWriter returns a new Writer that compresses to w, using the framing
-// format described at
-// https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
+var errClosed = errors.New("snappy: Writer is closed")
+
+// NewWriter returns a new Writer that compresses to w.
+//
+// The Writer returned does not buffer writes. There is no need to Flush or
+// Close such a Writer.
+//
+// Deprecated: the Writer returned is not suitable for many small writes, only
+// for few large writes. Use NewBufferedWriter instead, which is efficient
+// regardless of the frequency and shape of the writes, and remember to Close
+// that Writer when done.
func NewWriter(w io.Writer) *Writer {
return &Writer{
- w: w,
- enc: make([]byte, MaxEncodedLen(maxUncompressedChunkLen)),
+ w: w,
+ obuf: make([]byte, obufLen),
+ }
+}
+
+// NewBufferedWriter returns a new Writer that compresses to w, using the
+// framing format described at
+// https://github.com/google/snappy/blob/master/framing_format.txt
+//
+// The Writer returned buffers writes. Users must call Close to guarantee all
+// data has been forwarded to the underlying io.Writer. They may also call
+// Flush zero or more times before calling Close.
+func NewBufferedWriter(w io.Writer) *Writer {
+ return &Writer{
+ w: w,
+ ibuf: make([]byte, 0, maxUncompressedChunkLen),
+ obuf: make([]byte, obufLen),
}
}
// Writer is an io.Writer than can write Snappy-compressed bytes.
type Writer struct {
- w io.Writer
- err error
- enc []byte
- buf [checksumSize + chunkHeaderSize]byte
- wroteHeader bool
+ w io.Writer
+ err error
+
+ // ibuf is a buffer for the incoming (uncompressed) bytes.
+ //
+ // Its use is optional. For backwards compatibility, Writers created by the
+ // NewWriter function have ibuf == nil, do not buffer incoming bytes, and
+ // therefore do not need to be Flush'ed or Close'd.
+ ibuf []byte
+
+ // obuf is a buffer for the outgoing (compressed) bytes.
+ obuf []byte
+
+ // wroteStreamHeader is whether we have written the stream header.
+ wroteStreamHeader bool
}
// Reset discards the writer's state and switches the Snappy writer to write to
@@ -198,23 +233,60 @@ type Writer struct {
func (w *Writer) Reset(writer io.Writer) {
w.w = writer
w.err = nil
- w.wroteHeader = false
+ if w.ibuf != nil {
+ w.ibuf = w.ibuf[:0]
+ }
+ w.wroteStreamHeader = false
}
// Write satisfies the io.Writer interface.
-func (w *Writer) Write(p []byte) (n int, errRet error) {
- if w.err != nil {
- return 0, w.err
+func (w *Writer) Write(p []byte) (nRet int, errRet error) {
+ if w.ibuf == nil {
+ // Do not buffer incoming bytes. This does not perform or compress well
+ // if the caller of Writer.Write writes many small slices. This
+ // behavior is therefore deprecated, but still supported for backwards
+ // compatibility with code that doesn't explicitly Flush or Close.
+ return w.write(p)
}
- if !w.wroteHeader {
- copy(w.enc, magicChunk)
- if _, err := w.w.Write(w.enc[:len(magicChunk)]); err != nil {
- w.err = err
- return n, err
+
+ // The remainder of this method is based on bufio.Writer.Write from the
+ // standard library.
+
+ for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil {
+ var n int
+ if len(w.ibuf) == 0 {
+ // Large write, empty buffer.
+ // Write directly from p to avoid copy.
+ n, _ = w.write(p)
+ } else {
+ n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p)
+ w.ibuf = w.ibuf[:len(w.ibuf)+n]
+ w.Flush()
}
- w.wroteHeader = true
+ nRet += n
+ p = p[n:]
+ }
+ if w.err != nil {
+ return nRet, w.err
+ }
+ n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p)
+ w.ibuf = w.ibuf[:len(w.ibuf)+n]
+ nRet += n
+ return nRet, nil
+}
+
+func (w *Writer) write(p []byte) (nRet int, errRet error) {
+ if w.err != nil {
+ return 0, w.err
}
for len(p) > 0 {
+ obufStart := len(magicChunk)
+ if !w.wroteStreamHeader {
+ w.wroteStreamHeader = true
+ copy(w.obuf, magicChunk)
+ obufStart = 0
+ }
+
var uncompressed []byte
if len(p) > maxUncompressedChunkLen {
uncompressed, p = p[:maxUncompressedChunkLen], p[maxUncompressedChunkLen:]
@@ -225,34 +297,60 @@ func (w *Writer) Write(p []byte) (n int, errRet error) {
// Compress the buffer, discarding the result if the improvement
// isn't at least 12.5%.
+ compressed := Encode(w.obuf[obufHeaderLen:], uncompressed)
chunkType := uint8(chunkTypeCompressedData)
- chunkBody, err := Encode(w.enc, uncompressed)
- if err != nil {
- w.err = err
- return n, err
- }
- if len(chunkBody) >= len(uncompressed)-len(uncompressed)/8 {
- chunkType, chunkBody = chunkTypeUncompressedData, uncompressed
+ chunkLen := 4 + len(compressed)
+ obufEnd := obufHeaderLen + len(compressed)
+ if len(compressed) >= len(uncompressed)-len(uncompressed)/8 {
+ chunkType = chunkTypeUncompressedData
+ chunkLen = 4 + len(uncompressed)
+ obufEnd = obufHeaderLen
}
- chunkLen := 4 + len(chunkBody)
- w.buf[0] = chunkType
- w.buf[1] = uint8(chunkLen >> 0)
- w.buf[2] = uint8(chunkLen >> 8)
- w.buf[3] = uint8(chunkLen >> 16)
- w.buf[4] = uint8(checksum >> 0)
- w.buf[5] = uint8(checksum >> 8)
- w.buf[6] = uint8(checksum >> 16)
- w.buf[7] = uint8(checksum >> 24)
- if _, err = w.w.Write(w.buf[:]); err != nil {
+ // Fill in the per-chunk header that comes before the body.
+ w.obuf[len(magicChunk)+0] = chunkType
+ w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0)
+ w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8)
+ w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16)
+ w.obuf[len(magicChunk)+4] = uint8(checksum >> 0)
+ w.obuf[len(magicChunk)+5] = uint8(checksum >> 8)
+ w.obuf[len(magicChunk)+6] = uint8(checksum >> 16)
+ w.obuf[len(magicChunk)+7] = uint8(checksum >> 24)
+
+ if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil {
w.err = err
- return n, err
+ return nRet, err
}
- if _, err = w.w.Write(chunkBody); err != nil {
- w.err = err
- return n, err
+ if chunkType == chunkTypeUncompressedData {
+ if _, err := w.w.Write(uncompressed); err != nil {
+ w.err = err
+ return nRet, err
+ }
}
- n += len(uncompressed)
+ nRet += len(uncompressed)
+ }
+ return nRet, nil
+}
+
+// Flush flushes the Writer to its underlying io.Writer.
+func (w *Writer) Flush() error {
+ if w.err != nil {
+ return w.err
+ }
+ if len(w.ibuf) == 0 {
+ return nil
+ }
+ w.write(w.ibuf)
+ w.ibuf = w.ibuf[:0]
+ return w.err
+}
+
+// Close calls Flush and then closes the Writer.
+func (w *Writer) Close() error {
+ w.Flush()
+ ret := w.err
+ if w.err == nil {
+ w.err = errClosed
}
- return n, nil
+ return ret
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/snappy.go b/Godeps/_workspace/src/github.com/golang/snappy/snappy.go
index 043bf3d81..ef1e33e00 100644
--- a/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/snappy.go
+++ b/Godeps/_workspace/src/github.com/golang/snappy/snappy.go
@@ -5,7 +5,7 @@
// Package snappy implements the snappy block-based compression format.
// It aims for very high speeds and reasonable compression.
//
-// The C++ snappy implementation is at http://code.google.com/p/snappy/
+// The C++ snappy implementation is at https://github.com/google/snappy
package snappy
import (
@@ -46,9 +46,18 @@ const (
chunkHeaderSize = 4
magicChunk = "\xff\x06\x00\x00" + magicBody
magicBody = "sNaPpY"
- // https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt says
+ // https://github.com/google/snappy/blob/master/framing_format.txt says
// that "the uncompressed data in a chunk must be no longer than 65536 bytes".
maxUncompressedChunkLen = 65536
+
+ // maxEncodedLenOfMaxUncompressedChunkLen equals
+ // MaxEncodedLen(maxUncompressedChunkLen), but is hard coded to be a const
+ // instead of a variable, so that obufLen can also be a const. Their
+ // equivalence is confirmed by TestMaxEncodedLenOfMaxUncompressedChunkLen.
+ maxEncodedLenOfMaxUncompressedChunkLen = 76490
+
+ obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize
+ obufLen = obufHeaderLen + maxEncodedLenOfMaxUncompressedChunkLen
)
const (
@@ -61,7 +70,7 @@ const (
var crcTable = crc32.MakeTable(crc32.Castagnoli)
// crc implements the checksum specified in section 3 of
-// https://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
+// https://github.com/google/snappy/blob/master/framing_format.txt
func crc(b []byte) uint32 {
c := crc32.Update(0, crcTable, b)
return uint32(c>>15|c<<17) + 0xa282ead8
diff --git a/Godeps/_workspace/src/github.com/hashicorp/golang-lru/2q.go b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/2q.go
new file mode 100644
index 000000000..337d96329
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/2q.go
@@ -0,0 +1,212 @@
+package lru
+
+import (
+ "fmt"
+ "sync"
+
+ "github.com/hashicorp/golang-lru/simplelru"
+)
+
+const (
+ // Default2QRecentRatio is the ratio of the 2Q cache dedicated
+ // to recently added entries that have only been accessed once.
+ Default2QRecentRatio = 0.25
+
+ // Default2QGhostEntries is the default ratio of ghost
+ // entries kept to track entries recently evicted
+ Default2QGhostEntries = 0.50
+)
+
+// TwoQueueCache is a thread-safe fixed size 2Q cache.
+// 2Q is an enhancement over the standard LRU cache
+// in that it tracks both frequently and recently used
+// entries separately. This avoids a burst in access to new
+// entries from evicting frequently used entries. It adds some
+// additional tracking overhead to the standard LRU cache, and is
+// computationally about 2x the cost, and adds some metadata over
+// head. The ARCCache is similar, but does not require setting any
+// parameters.
+type TwoQueueCache struct {
+ size int
+ recentSize int
+
+ recent *simplelru.LRU
+ frequent *simplelru.LRU
+ recentEvict *simplelru.LRU
+ lock sync.RWMutex
+}
+
+// New2Q creates a new TwoQueueCache using the default
+// values for the parameters.
+func New2Q(size int) (*TwoQueueCache, error) {
+ return New2QParams(size, Default2QRecentRatio, Default2QGhostEntries)
+}
+
+// New2QParams creates a new TwoQueueCache using the provided
+// parameter values.
+func New2QParams(size int, recentRatio float64, ghostRatio float64) (*TwoQueueCache, error) {
+ if size <= 0 {
+ return nil, fmt.Errorf("invalid size")
+ }
+ if recentRatio < 0.0 || recentRatio > 1.0 {
+ return nil, fmt.Errorf("invalid recent ratio")
+ }
+ if ghostRatio < 0.0 || ghostRatio > 1.0 {
+ return nil, fmt.Errorf("invalid ghost ratio")
+ }
+
+ // Determine the sub-sizes
+ recentSize := int(float64(size) * recentRatio)
+ evictSize := int(float64(size) * ghostRatio)
+
+ // Allocate the LRUs
+ recent, err := simplelru.NewLRU(size, nil)
+ if err != nil {
+ return nil, err
+ }
+ frequent, err := simplelru.NewLRU(size, nil)
+ if err != nil {
+ return nil, err
+ }
+ recentEvict, err := simplelru.NewLRU(evictSize, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ // Initialize the cache
+ c := &TwoQueueCache{
+ size: size,
+ recentSize: recentSize,
+ recent: recent,
+ frequent: frequent,
+ recentEvict: recentEvict,
+ }
+ return c, nil
+}
+
+func (c *TwoQueueCache) Get(key interface{}) (interface{}, bool) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ // Check if this is a frequent value
+ if val, ok := c.frequent.Get(key); ok {
+ return val, ok
+ }
+
+ // If the value is contained in recent, then we
+ // promote it to frequent
+ if val, ok := c.recent.Peek(key); ok {
+ c.recent.Remove(key)
+ c.frequent.Add(key, val)
+ return val, ok
+ }
+
+ // No hit
+ return nil, false
+}
+
+func (c *TwoQueueCache) Add(key, value interface{}) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ // Check if the value is frequently used already,
+ // and just update the value
+ if c.frequent.Contains(key) {
+ c.frequent.Add(key, value)
+ return
+ }
+
+ // Check if the value is recently used, and promote
+ // the value into the frequent list
+ if c.recent.Contains(key) {
+ c.recent.Remove(key)
+ c.frequent.Add(key, value)
+ return
+ }
+
+ // If the value was recently evicted, add it to the
+ // frequently used list
+ if c.recentEvict.Contains(key) {
+ c.ensureSpace(true)
+ c.recentEvict.Remove(key)
+ c.frequent.Add(key, value)
+ return
+ }
+
+ // Add to the recently seen list
+ c.ensureSpace(false)
+ c.recent.Add(key, value)
+ return
+}
+
+// ensureSpace is used to ensure we have space in the cache
+func (c *TwoQueueCache) ensureSpace(recentEvict bool) {
+ // If we have space, nothing to do
+ recentLen := c.recent.Len()
+ freqLen := c.frequent.Len()
+ if recentLen+freqLen < c.size {
+ return
+ }
+
+ // If the recent buffer is larger than
+ // the target, evict from there
+ if recentLen > 0 && (recentLen > c.recentSize || (recentLen == c.recentSize && !recentEvict)) {
+ k, _, _ := c.recent.RemoveOldest()
+ c.recentEvict.Add(k, nil)
+ return
+ }
+
+ // Remove from the frequent list otherwise
+ c.frequent.RemoveOldest()
+}
+
+func (c *TwoQueueCache) Len() int {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ return c.recent.Len() + c.frequent.Len()
+}
+
+func (c *TwoQueueCache) Keys() []interface{} {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ k1 := c.frequent.Keys()
+ k2 := c.recent.Keys()
+ return append(k1, k2...)
+}
+
+func (c *TwoQueueCache) Remove(key interface{}) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ if c.frequent.Remove(key) {
+ return
+ }
+ if c.recent.Remove(key) {
+ return
+ }
+ if c.recentEvict.Remove(key) {
+ return
+ }
+}
+
+func (c *TwoQueueCache) Purge() {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ c.recent.Purge()
+ c.frequent.Purge()
+ c.recentEvict.Purge()
+}
+
+func (c *TwoQueueCache) Contains(key interface{}) bool {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ return c.frequent.Contains(key) || c.recent.Contains(key)
+}
+
+func (c *TwoQueueCache) Peek(key interface{}) (interface{}, bool) {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ if val, ok := c.frequent.Peek(key); ok {
+ return val, ok
+ }
+ return c.recent.Peek(key)
+}
diff --git a/Godeps/_workspace/src/github.com/hashicorp/golang-lru/arc.go b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/arc.go
new file mode 100644
index 000000000..a2a252817
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/arc.go
@@ -0,0 +1,257 @@
+package lru
+
+import (
+ "sync"
+
+ "github.com/hashicorp/golang-lru/simplelru"
+)
+
+// ARCCache is a thread-safe fixed size Adaptive Replacement Cache (ARC).
+// ARC is an enhancement over the standard LRU cache in that tracks both
+// frequency and recency of use. This avoids a burst in access to new
+// entries from evicting the frequently used older entries. It adds some
+// additional tracking overhead to a standard LRU cache, computationally
+// it is roughly 2x the cost, and the extra memory overhead is linear
+// with the size of the cache. ARC has been patented by IBM, but is
+// similar to the TwoQueueCache (2Q) which requires setting parameters.
+type ARCCache struct {
+ size int // Size is the total capacity of the cache
+ p int // P is the dynamic preference towards T1 or T2
+
+ t1 *simplelru.LRU // T1 is the LRU for recently accessed items
+ b1 *simplelru.LRU // B1 is the LRU for evictions from t1
+
+ t2 *simplelru.LRU // T2 is the LRU for frequently accessed items
+ b2 *simplelru.LRU // B2 is the LRU for evictions from t2
+
+ lock sync.RWMutex
+}
+
+// NewARC creates an ARC of the given size
+func NewARC(size int) (*ARCCache, error) {
+ // Create the sub LRUs
+ b1, err := simplelru.NewLRU(size, nil)
+ if err != nil {
+ return nil, err
+ }
+ b2, err := simplelru.NewLRU(size, nil)
+ if err != nil {
+ return nil, err
+ }
+ t1, err := simplelru.NewLRU(size, nil)
+ if err != nil {
+ return nil, err
+ }
+ t2, err := simplelru.NewLRU(size, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ // Initialize the ARC
+ c := &ARCCache{
+ size: size,
+ p: 0,
+ t1: t1,
+ b1: b1,
+ t2: t2,
+ b2: b2,
+ }
+ return c, nil
+}
+
+// Get looks up a key's value from the cache.
+func (c *ARCCache) Get(key interface{}) (interface{}, bool) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ // Ff the value is contained in T1 (recent), then
+ // promote it to T2 (frequent)
+ if val, ok := c.t1.Peek(key); ok {
+ c.t1.Remove(key)
+ c.t2.Add(key, val)
+ return val, ok
+ }
+
+ // Check if the value is contained in T2 (frequent)
+ if val, ok := c.t2.Get(key); ok {
+ return val, ok
+ }
+
+ // No hit
+ return nil, false
+}
+
+// Add adds a value to the cache.
+func (c *ARCCache) Add(key, value interface{}) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ // Check if the value is contained in T1 (recent), and potentially
+ // promote it to frequent T2
+ if c.t1.Contains(key) {
+ c.t1.Remove(key)
+ c.t2.Add(key, value)
+ return
+ }
+
+ // Check if the value is already in T2 (frequent) and update it
+ if c.t2.Contains(key) {
+ c.t2.Add(key, value)
+ return
+ }
+
+ // Check if this value was recently evicted as part of the
+ // recently used list
+ if c.b1.Contains(key) {
+ // T1 set is too small, increase P appropriately
+ delta := 1
+ b1Len := c.b1.Len()
+ b2Len := c.b2.Len()
+ if b2Len > b1Len {
+ delta = b2Len / b1Len
+ }
+ if c.p+delta >= c.size {
+ c.p = c.size
+ } else {
+ c.p += delta
+ }
+
+ // Potentially need to make room in the cache
+ if c.t1.Len()+c.t2.Len() >= c.size {
+ c.replace(false)
+ }
+
+ // Remove from B1
+ c.b1.Remove(key)
+
+ // Add the key to the frequently used list
+ c.t2.Add(key, value)
+ return
+ }
+
+ // Check if this value was recently evicted as part of the
+ // frequently used list
+ if c.b2.Contains(key) {
+ // T2 set is too small, decrease P appropriately
+ delta := 1
+ b1Len := c.b1.Len()
+ b2Len := c.b2.Len()
+ if b1Len > b2Len {
+ delta = b1Len / b2Len
+ }
+ if delta >= c.p {
+ c.p = 0
+ } else {
+ c.p -= delta
+ }
+
+ // Potentially need to make room in the cache
+ if c.t1.Len()+c.t2.Len() >= c.size {
+ c.replace(true)
+ }
+
+ // Remove from B2
+ c.b2.Remove(key)
+
+ // Add the key to the frequntly used list
+ c.t2.Add(key, value)
+ return
+ }
+
+ // Potentially need to make room in the cache
+ if c.t1.Len()+c.t2.Len() >= c.size {
+ c.replace(false)
+ }
+
+ // Keep the size of the ghost buffers trim
+ if c.b1.Len() > c.size-c.p {
+ c.b1.RemoveOldest()
+ }
+ if c.b2.Len() > c.p {
+ c.b2.RemoveOldest()
+ }
+
+ // Add to the recently seen list
+ c.t1.Add(key, value)
+ return
+}
+
+// replace is used to adaptively evict from either T1 or T2
+// based on the current learned value of P
+func (c *ARCCache) replace(b2ContainsKey bool) {
+ t1Len := c.t1.Len()
+ if t1Len > 0 && (t1Len > c.p || (t1Len == c.p && b2ContainsKey)) {
+ k, _, ok := c.t1.RemoveOldest()
+ if ok {
+ c.b1.Add(k, nil)
+ }
+ } else {
+ k, _, ok := c.t2.RemoveOldest()
+ if ok {
+ c.b2.Add(k, nil)
+ }
+ }
+}
+
+// Len returns the number of cached entries
+func (c *ARCCache) Len() int {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ return c.t1.Len() + c.t2.Len()
+}
+
+// Keys returns all the cached keys
+func (c *ARCCache) Keys() []interface{} {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ k1 := c.t1.Keys()
+ k2 := c.t2.Keys()
+ return append(k1, k2...)
+}
+
+// Remove is used to purge a key from the cache
+func (c *ARCCache) Remove(key interface{}) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ if c.t1.Remove(key) {
+ return
+ }
+ if c.t2.Remove(key) {
+ return
+ }
+ if c.b1.Remove(key) {
+ return
+ }
+ if c.b2.Remove(key) {
+ return
+ }
+}
+
+// Purge is used to clear the cache
+func (c *ARCCache) Purge() {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+ c.t1.Purge()
+ c.t2.Purge()
+ c.b1.Purge()
+ c.b2.Purge()
+}
+
+// Contains is used to check if the cache contains a key
+// without updating recency or frequency.
+func (c *ARCCache) Contains(key interface{}) bool {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ return c.t1.Contains(key) || c.t2.Contains(key)
+}
+
+// Peek is used to inspect the cache value of a key
+// without updating recency or frequency.
+func (c *ARCCache) Peek(key interface{}) (interface{}, bool) {
+ c.lock.RLock()
+ defer c.lock.RUnlock()
+ if val, ok := c.t1.Peek(key); ok {
+ return val, ok
+ }
+ return c.t2.Peek(key)
+}
diff --git a/Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru.go b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru.go
index 5f1e8a1af..a6285f989 100644
--- a/Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru.go
+++ b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru.go
@@ -4,24 +4,15 @@
package lru
import (
- "container/list"
- "errors"
"sync"
+
+ "github.com/hashicorp/golang-lru/simplelru"
)
// Cache is a thread-safe fixed size LRU cache.
type Cache struct {
- size int
- evictList *list.List
- items map[interface{}]*list.Element
- lock sync.RWMutex
- onEvicted func(key interface{}, value interface{})
-}
-
-// entry is used to hold a value in the evictList
-type entry struct {
- key interface{}
- value interface{}
+ lru *simplelru.LRU
+ lock sync.RWMutex
}
// New creates an LRU of the given size
@@ -29,15 +20,15 @@ func New(size int) (*Cache, error) {
return NewWithEvict(size, nil)
}
+// NewWithEvict constructs a fixed size cache with the given eviction
+// callback.
func NewWithEvict(size int, onEvicted func(key interface{}, value interface{})) (*Cache, error) {
- if size <= 0 {
- return nil, errors.New("Must provide a positive size")
+ lru, err := simplelru.NewLRU(size, simplelru.EvictCallback(onEvicted))
+ if err != nil {
+ return nil, err
}
c := &Cache{
- size: size,
- evictList: list.New(),
- items: make(map[interface{}]*list.Element, size),
- onEvicted: onEvicted,
+ lru: lru,
}
return c, nil
}
@@ -45,131 +36,79 @@ func NewWithEvict(size int, onEvicted func(key interface{}, value interface{}))
// Purge is used to completely clear the cache
func (c *Cache) Purge() {
c.lock.Lock()
- defer c.lock.Unlock()
-
- if c.onEvicted != nil {
- for k, v := range c.items {
- c.onEvicted(k, v.Value.(*entry).value)
- }
- }
-
- c.evictList = list.New()
- c.items = make(map[interface{}]*list.Element, c.size)
+ c.lru.Purge()
+ c.lock.Unlock()
}
-// Add adds a value to the cache. Returns true if an eviction occured.
+// Add adds a value to the cache. Returns true if an eviction occurred.
func (c *Cache) Add(key, value interface{}) bool {
c.lock.Lock()
defer c.lock.Unlock()
-
- // Check for existing item
- if ent, ok := c.items[key]; ok {
- c.evictList.MoveToFront(ent)
- ent.Value.(*entry).value = value
- return false
- }
-
- // Add new item
- ent := &entry{key, value}
- entry := c.evictList.PushFront(ent)
- c.items[key] = entry
-
- evict := c.evictList.Len() > c.size
- // Verify size not exceeded
- if evict {
- c.removeOldest()
- }
- return evict
+ return c.lru.Add(key, value)
}
// Get looks up a key's value from the cache.
-func (c *Cache) Get(key interface{}) (value interface{}, ok bool) {
+func (c *Cache) Get(key interface{}) (interface{}, bool) {
c.lock.Lock()
defer c.lock.Unlock()
-
- if ent, ok := c.items[key]; ok {
- c.evictList.MoveToFront(ent)
- return ent.Value.(*entry).value, true
- }
- return
+ return c.lru.Get(key)
}
-// Check if a key is in the cache, without updating the recent-ness or deleting it for being stale.
-func (c *Cache) Contains(key interface{}) (ok bool) {
+// Check if a key is in the cache, without updating the recent-ness
+// or deleting it for being stale.
+func (c *Cache) Contains(key interface{}) bool {
c.lock.RLock()
defer c.lock.RUnlock()
-
- _, ok = c.items[key]
- return ok
+ return c.lru.Contains(key)
}
-// Returns the key value (or undefined if not found) without updating the "recently used"-ness of the key.
-// (If you find yourself using this a lot, you might be using the wrong sort of data structure, but there are some use cases where it's handy.)
-func (c *Cache) Peek(key interface{}) (value interface{}, ok bool) {
+// Returns the key value (or undefined if not found) without updating
+// the "recently used"-ness of the key.
+func (c *Cache) Peek(key interface{}) (interface{}, bool) {
c.lock.RLock()
defer c.lock.RUnlock()
+ return c.lru.Peek(key)
+}
- if ent, ok := c.items[key]; ok {
- return ent.Value.(*entry).value, true
+// ContainsOrAdd checks if a key is in the cache without updating the
+// recent-ness or deleting it for being stale, and if not, adds the value.
+// Returns whether found and whether an eviction occurred.
+func (c *Cache) ContainsOrAdd(key, value interface{}) (ok, evict bool) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ if c.lru.Contains(key) {
+ return true, false
+ } else {
+ evict := c.lru.Add(key, value)
+ return false, evict
}
- return nil, ok
}
// Remove removes the provided key from the cache.
func (c *Cache) Remove(key interface{}) {
c.lock.Lock()
- defer c.lock.Unlock()
-
- if ent, ok := c.items[key]; ok {
- c.removeElement(ent)
- }
+ c.lru.Remove(key)
+ c.lock.Unlock()
}
// RemoveOldest removes the oldest item from the cache.
func (c *Cache) RemoveOldest() {
c.lock.Lock()
- defer c.lock.Unlock()
- c.removeOldest()
+ c.lru.RemoveOldest()
+ c.lock.Unlock()
}
// Keys returns a slice of the keys in the cache, from oldest to newest.
func (c *Cache) Keys() []interface{} {
c.lock.RLock()
defer c.lock.RUnlock()
-
- keys := make([]interface{}, len(c.items))
- ent := c.evictList.Back()
- i := 0
- for ent != nil {
- keys[i] = ent.Value.(*entry).key
- ent = ent.Prev()
- i++
- }
-
- return keys
+ return c.lru.Keys()
}
// Len returns the number of items in the cache.
func (c *Cache) Len() int {
c.lock.RLock()
defer c.lock.RUnlock()
- return c.evictList.Len()
-}
-
-// removeOldest removes the oldest item from the cache.
-func (c *Cache) removeOldest() {
- ent := c.evictList.Back()
- if ent != nil {
- c.removeElement(ent)
- }
-}
-
-// removeElement is used to remove a given list element from the cache
-func (c *Cache) removeElement(e *list.Element) {
- c.evictList.Remove(e)
- kv := e.Value.(*entry)
- delete(c.items, kv.key)
- if c.onEvicted != nil {
- c.onEvicted(kv.key, kv.value)
- }
+ return c.lru.Len()
}
diff --git a/Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru_test.go b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru_test.go
deleted file mode 100644
index b676cfd9d..000000000
--- a/Godeps/_workspace/src/github.com/hashicorp/golang-lru/lru_test.go
+++ /dev/null
@@ -1,127 +0,0 @@
-package lru
-
-import "testing"
-
-func TestLRU(t *testing.T) {
- evictCounter := 0
- onEvicted := func(k interface{}, v interface{}) {
- if k != v {
- t.Fatalf("Evict values not equal (%v!=%v)", k, v)
- }
- evictCounter += 1
- }
- l, err := NewWithEvict(128, onEvicted)
- if err != nil {
- t.Fatalf("err: %v", err)
- }
-
- for i := 0; i < 256; i++ {
- l.Add(i, i)
- }
- if l.Len() != 128 {
- t.Fatalf("bad len: %v", l.Len())
- }
-
- if evictCounter != 128 {
- t.Fatalf("bad evict count: %v", evictCounter)
- }
-
- for i, k := range l.Keys() {
- if v, ok := l.Get(k); !ok || v != k || v != i+128 {
- t.Fatalf("bad key: %v", k)
- }
- }
- for i := 0; i < 128; i++ {
- _, ok := l.Get(i)
- if ok {
- t.Fatalf("should be evicted")
- }
- }
- for i := 128; i < 256; i++ {
- _, ok := l.Get(i)
- if !ok {
- t.Fatalf("should not be evicted")
- }
- }
- for i := 128; i < 192; i++ {
- l.Remove(i)
- _, ok := l.Get(i)
- if ok {
- t.Fatalf("should be deleted")
- }
- }
-
- l.Get(192) // expect 192 to be last key in l.Keys()
-
- for i, k := range l.Keys() {
- if (i < 63 && k != i+193) || (i == 63 && k != 192) {
- t.Fatalf("out of order key: %v", k)
- }
- }
-
- l.Purge()
- if l.Len() != 0 {
- t.Fatalf("bad len: %v", l.Len())
- }
- if _, ok := l.Get(200); ok {
- t.Fatalf("should contain nothing")
- }
-}
-
-// test that Add returns true/false if an eviction occured
-func TestLRUAdd(t *testing.T) {
- evictCounter := 0
- onEvicted := func(k interface{}, v interface{}) {
- evictCounter += 1
- }
-
- l, err := NewWithEvict(1, onEvicted)
- if err != nil {
- t.Fatalf("err: %v", err)
- }
-
- if l.Add(1, 1) == true || evictCounter != 0 {
- t.Errorf("should not have an eviction")
- }
- if l.Add(2, 2) == false || evictCounter != 1 {
- t.Errorf("should have an eviction")
- }
-}
-
-// test that Contains doesn't update recent-ness
-func TestLRUContains(t *testing.T) {
- l, err := New(2)
- if err != nil {
- t.Fatalf("err: %v", err)
- }
-
- l.Add(1, 1)
- l.Add(2, 2)
- if !l.Contains(1) {
- t.Errorf("1 should be contained")
- }
-
- l.Add(3, 3)
- if l.Contains(1) {
- t.Errorf("Contains should not have updated recent-ness of 1")
- }
-}
-
-// test that Peek doesn't update recent-ness
-func TestLRUPeek(t *testing.T) {
- l, err := New(2)
- if err != nil {
- t.Fatalf("err: %v", err)
- }
-
- l.Add(1, 1)
- l.Add(2, 2)
- if v, ok := l.Peek(1); !ok || v != 1 {
- t.Errorf("1 should be set to 1: %v, %v", v, ok)
- }
-
- l.Add(3, 3)
- if l.Contains(1) {
- t.Errorf("should not have updated recent-ness of 1")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/hashicorp/golang-lru/simplelru/lru.go b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/simplelru/lru.go
new file mode 100644
index 000000000..68d097a1c
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/hashicorp/golang-lru/simplelru/lru.go
@@ -0,0 +1,160 @@
+package simplelru
+
+import (
+ "container/list"
+ "errors"
+)
+
+// EvictCallback is used to get a callback when a cache entry is evicted
+type EvictCallback func(key interface{}, value interface{})
+
+// LRU implements a non-thread safe fixed size LRU cache
+type LRU struct {
+ size int
+ evictList *list.List
+ items map[interface{}]*list.Element
+ onEvict EvictCallback
+}
+
+// entry is used to hold a value in the evictList
+type entry struct {
+ key interface{}
+ value interface{}
+}
+
+// NewLRU constructs an LRU of the given size
+func NewLRU(size int, onEvict EvictCallback) (*LRU, error) {
+ if size <= 0 {
+ return nil, errors.New("Must provide a positive size")
+ }
+ c := &LRU{
+ size: size,
+ evictList: list.New(),
+ items: make(map[interface{}]*list.Element),
+ onEvict: onEvict,
+ }
+ return c, nil
+}
+
+// Purge is used to completely clear the cache
+func (c *LRU) Purge() {
+ for k, v := range c.items {
+ if c.onEvict != nil {
+ c.onEvict(k, v.Value.(*entry).value)
+ }
+ delete(c.items, k)
+ }
+ c.evictList.Init()
+}
+
+// Add adds a value to the cache. Returns true if an eviction occured.
+func (c *LRU) Add(key, value interface{}) bool {
+ // Check for existing item
+ if ent, ok := c.items[key]; ok {
+ c.evictList.MoveToFront(ent)
+ ent.Value.(*entry).value = value
+ return false
+ }
+
+ // Add new item
+ ent := &entry{key, value}
+ entry := c.evictList.PushFront(ent)
+ c.items[key] = entry
+
+ evict := c.evictList.Len() > c.size
+ // Verify size not exceeded
+ if evict {
+ c.removeOldest()
+ }
+ return evict
+}
+
+// Get looks up a key's value from the cache.
+func (c *LRU) Get(key interface{}) (value interface{}, ok bool) {
+ if ent, ok := c.items[key]; ok {
+ c.evictList.MoveToFront(ent)
+ return ent.Value.(*entry).value, true
+ }
+ return
+}
+
+// Check if a key is in the cache, without updating the recent-ness
+// or deleting it for being stale.
+func (c *LRU) Contains(key interface{}) (ok bool) {
+ _, ok = c.items[key]
+ return ok
+}
+
+// Returns the key value (or undefined if not found) without updating
+// the "recently used"-ness of the key.
+func (c *LRU) Peek(key interface{}) (value interface{}, ok bool) {
+ if ent, ok := c.items[key]; ok {
+ return ent.Value.(*entry).value, true
+ }
+ return nil, ok
+}
+
+// Remove removes the provided key from the cache, returning if the
+// key was contained.
+func (c *LRU) Remove(key interface{}) bool {
+ if ent, ok := c.items[key]; ok {
+ c.removeElement(ent)
+ return true
+ }
+ return false
+}
+
+// RemoveOldest removes the oldest item from the cache.
+func (c *LRU) RemoveOldest() (interface{}, interface{}, bool) {
+ ent := c.evictList.Back()
+ if ent != nil {
+ c.removeElement(ent)
+ kv := ent.Value.(*entry)
+ return kv.key, kv.value, true
+ }
+ return nil, nil, false
+}
+
+// GetOldest returns the oldest entry
+func (c *LRU) GetOldest() (interface{}, interface{}, bool) {
+ ent := c.evictList.Back()
+ if ent != nil {
+ kv := ent.Value.(*entry)
+ return kv.key, kv.value, true
+ }
+ return nil, nil, false
+}
+
+// Keys returns a slice of the keys in the cache, from oldest to newest.
+func (c *LRU) Keys() []interface{} {
+ keys := make([]interface{}, len(c.items))
+ i := 0
+ for ent := c.evictList.Back(); ent != nil; ent = ent.Prev() {
+ keys[i] = ent.Value.(*entry).key
+ i++
+ }
+ return keys
+}
+
+// Len returns the number of items in the cache.
+func (c *LRU) Len() int {
+ return c.evictList.Len()
+}
+
+// removeOldest removes the oldest item from the cache.
+func (c *LRU) removeOldest() {
+ ent := c.evictList.Back()
+ if ent != nil {
+ c.removeElement(ent)
+ }
+}
+
+// removeElement is used to remove a given list element from the cache
+func (c *LRU) removeElement(e *list.Element) {
+ c.evictList.Remove(e)
+ kv := e.Value.(*entry)
+ delete(c.items, kv.key)
+ if c.onEvict != nil {
+ c.onEvict(kv.key, kv.value)
+ }
+}
diff --git a/Godeps/_workspace/src/github.com/jackpal/gateway/LICENSE b/Godeps/_workspace/src/github.com/jackpal/gateway/LICENSE
new file mode 100644
index 000000000..c9efac32e
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/jackpal/gateway/LICENSE
@@ -0,0 +1,27 @@
+// Copyright (c) 2010 Jack Palevich. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/github.com/jackpal/gateway/README.md b/Godeps/_workspace/src/github.com/jackpal/gateway/README.md
new file mode 100644
index 000000000..49cc0b85c
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/jackpal/gateway/README.md
@@ -0,0 +1,7 @@
+# gateway
+
+A very simple library for discovering the IP address of the local LAN gateway.
+
+Provides implementations for Linux, OS X (Darwin) and Windows.
+
+Pull requests for other OSs happily considered!
diff --git a/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_darwin.go b/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_darwin.go
new file mode 100644
index 000000000..fc6ef68d9
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_darwin.go
@@ -0,0 +1,40 @@
+package gateway
+
+import (
+ "bytes"
+ "io/ioutil"
+ "net"
+ "os/exec"
+)
+
+func DiscoverGateway() (ip net.IP, err error) {
+ routeCmd := exec.Command("route", "-n", "get", "0.0.0.0")
+ stdOut, err := routeCmd.StdoutPipe()
+ if err != nil {
+ return
+ }
+ if err = routeCmd.Start(); err != nil {
+ return
+ }
+ output, err := ioutil.ReadAll(stdOut)
+ if err != nil {
+ return
+ }
+
+ // Darwin route out format is always like this:
+ // route to: default
+ // destination: default
+ // mask: default
+ // gateway: 192.168.1.1
+ outputLines := bytes.Split(output, []byte("\n"))
+ for _, line := range outputLines {
+ if bytes.Contains(line, []byte("gateway:")) {
+ gatewayFields := bytes.Fields(line)
+ ip = net.ParseIP(string(gatewayFields[1]))
+ break
+ }
+ }
+
+ err = routeCmd.Wait()
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_linux.go b/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_linux.go
new file mode 100644
index 000000000..333bde1dc
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_linux.go
@@ -0,0 +1,75 @@
+package gateway
+
+import (
+ "bytes"
+ "io/ioutil"
+ "net"
+ "os/exec"
+)
+
+func discoverGatewayUsingIp() (ip net.IP, err error) {
+ routeCmd := exec.Command("ip", "route", "show")
+ stdOut, err := routeCmd.StdoutPipe()
+ if err != nil {
+ return
+ }
+ if err = routeCmd.Start(); err != nil {
+ return
+ }
+ output, err := ioutil.ReadAll(stdOut)
+ if err != nil {
+ return
+ }
+
+ // Linux 'ip route show' format looks like this:
+ // default via 192.168.178.1 dev wlp3s0 metric 303
+ // 192.168.178.0/24 dev wlp3s0 proto kernel scope link src 192.168.178.76 metric 303
+ outputLines := bytes.Split(output, []byte("\n"))
+ for _, line := range outputLines {
+ if bytes.Contains(line, []byte("default")) {
+ ipFields := bytes.Fields(line)
+ ip = net.ParseIP(string(ipFields[2]))
+ break
+ }
+ }
+ err = routeCmd.Wait()
+ return
+}
+
+func discoverGatewayUsingRoute() (ip net.IP, err error) {
+ routeCmd := exec.Command("route", "-n")
+ stdOut, err := routeCmd.StdoutPipe()
+ if err != nil {
+ return
+ }
+ if err = routeCmd.Start(); err != nil {
+ return
+ }
+ output, err := ioutil.ReadAll(stdOut)
+ if err != nil {
+ return
+ }
+
+ // Linux route out format is always like this:
+ // Kernel IP routing table
+ // Destination Gateway Genmask Flags Metric Ref Use Iface
+ // 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
+ outputLines := bytes.Split(output, []byte("\n"))
+ for _, line := range outputLines {
+ if bytes.Contains(line, []byte("0.0.0.0")) {
+ ipFields := bytes.Fields(line)
+ ip = net.ParseIP(string(ipFields[1]))
+ break
+ }
+ }
+ err = routeCmd.Wait()
+ return
+}
+
+func DiscoverGateway() (ip net.IP, err error) {
+ ip, err = discoverGatewayUsingRoute()
+ if err != nil {
+ ip, err = discoverGatewayUsingIp()
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_unimplemented.go b/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_unimplemented.go
new file mode 100644
index 000000000..35042b910
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_unimplemented.go
@@ -0,0 +1,14 @@
+// +build !darwin,!linux,!windows
+
+package gateway
+
+import (
+ "fmt"
+ "net"
+ "runtime"
+)
+
+func DiscoverGateway() (ip net.IP, err error) {
+ err = fmt.Errorf("DiscoverGateway not implemented for OS %s", runtime.GOOS)
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_windows.go b/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_windows.go
new file mode 100644
index 000000000..282c8f685
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/jackpal/gateway/gateway_windows.go
@@ -0,0 +1,43 @@
+package gateway
+
+import (
+ "bytes"
+ "io/ioutil"
+ "net"
+ "os/exec"
+)
+
+func DiscoverGateway() (ip net.IP, err error) {
+ routeCmd := exec.Command("route", "print", "0.0.0.0")
+ stdOut, err := routeCmd.StdoutPipe()
+ if err != nil {
+ return
+ }
+ if err = routeCmd.Start(); err != nil {
+ return
+ }
+ output, err := ioutil.ReadAll(stdOut)
+ if err != nil {
+ return
+ }
+
+ // Windows route output format is always like this:
+ // ===========================================================================
+ // Active Routes:
+ // Network Destination Netmask Gateway Interface Metric
+ // 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 20
+ // ===========================================================================
+ // I'm trying to pick the active route,
+ // then jump 2 lines and pick the third IP
+ // Not using regex because output is quite standard from Windows XP to 8 (NEEDS TESTING)
+ outputLines := bytes.Split(output, []byte("\n"))
+ for idx, line := range outputLines {
+ if bytes.Contains(line, []byte("Active Routes:")) {
+ ipFields := bytes.Fields(outputLines[idx+2])
+ ip = net.ParseIP(string(ipFields[2]))
+ break
+ }
+ }
+ err = routeCmd.Wait()
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/jackpal/go-nat-pmp/natpmp.go b/Godeps/_workspace/src/github.com/jackpal/go-nat-pmp/natpmp.go
index 8ce4e8342..7d9fb604e 100644
--- a/Godeps/_workspace/src/github.com/jackpal/go-nat-pmp/natpmp.go
+++ b/Godeps/_workspace/src/github.com/jackpal/go-nat-pmp/natpmp.go
@@ -2,6 +2,7 @@ package natpmp
import (
"fmt"
+ "github.com/jackpal/gateway"
"log"
"net"
"time"
@@ -36,6 +37,17 @@ func NewClient(gateway net.IP) (nat *Client) {
return &Client{gateway}
}
+// Create a NAT-PMP client for the NAT-PMP server at the default gateway.
+func NewClientForDefaultGateway() (nat *Client, err error) {
+ var g net.IP
+ g, err = gateway.DiscoverGateway()
+ if err != nil {
+ return
+ }
+ nat = NewClient(g)
+ return
+}
+
// Results of the NAT-PMP GetExternalAddress operation
type GetExternalAddressResult struct {
SecondsSinceStartOfEpoc uint32
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/LICENSE b/Godeps/_workspace/src/github.com/mattn/go-colorable/LICENSE
index e58473ed9..91b5cef30 100644
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/LICENSE
+++ b/Godeps/_workspace/src/github.com/mattn/go-colorable/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) [2014] [shiena]
+Copyright (c) 2016 Yasuhiro Matsumoto
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/Godeps/_workspace/src/github.com/mattn/go-colorable/README.md b/Godeps/_workspace/src/github.com/mattn/go-colorable/README.md
new file mode 100644
index 000000000..e84226a73
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/mattn/go-colorable/README.md
@@ -0,0 +1,43 @@
+# go-colorable
+
+Colorable writer for windows.
+
+For example, most of logger packages doesn't show colors on windows. (I know we can do it with ansicon. But I don't want.)
+This package is possible to handle escape sequence for ansi color on windows.
+
+## Too Bad!
+
+![](https://raw.githubusercontent.com/mattn/go-colorable/gh-pages/bad.png)
+
+
+## So Good!
+
+![](https://raw.githubusercontent.com/mattn/go-colorable/gh-pages/good.png)
+
+## Usage
+
+```go
+logrus.SetFormatter(&logrus.TextFormatter{ForceColors: true})
+logrus.SetOutput(colorable.NewColorableStdout())
+
+logrus.Info("succeeded")
+logrus.Warn("not correct")
+logrus.Error("something error")
+logrus.Fatal("panic")
+```
+
+You can compile above code on non-windows OSs.
+
+## Installation
+
+```
+$ go get github.com/mattn/go-colorable
+```
+
+# License
+
+MIT
+
+# Author
+
+Yasuhiro Matsumoto (a.k.a mattn)
diff --git a/Godeps/_workspace/src/github.com/mattn/go-colorable/colorable_others.go b/Godeps/_workspace/src/github.com/mattn/go-colorable/colorable_others.go
new file mode 100644
index 000000000..219f02f62
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/mattn/go-colorable/colorable_others.go
@@ -0,0 +1,16 @@
+// +build !windows
+
+package colorable
+
+import (
+ "io"
+ "os"
+)
+
+func NewColorableStdout() io.Writer {
+ return os.Stdout
+}
+
+func NewColorableStderr() io.Writer {
+ return os.Stderr
+}
diff --git a/Godeps/_workspace/src/github.com/mattn/go-colorable/colorable_windows.go b/Godeps/_workspace/src/github.com/mattn/go-colorable/colorable_windows.go
new file mode 100644
index 000000000..c551f7725
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/mattn/go-colorable/colorable_windows.go
@@ -0,0 +1,782 @@
+package colorable
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "math"
+ "os"
+ "strconv"
+ "strings"
+ "syscall"
+ "unsafe"
+
+ "github.com/mattn/go-isatty"
+)
+
+const (
+ foregroundBlue = 0x1
+ foregroundGreen = 0x2
+ foregroundRed = 0x4
+ foregroundIntensity = 0x8
+ foregroundMask = (foregroundRed | foregroundBlue | foregroundGreen | foregroundIntensity)
+ backgroundBlue = 0x10
+ backgroundGreen = 0x20
+ backgroundRed = 0x40
+ backgroundIntensity = 0x80
+ backgroundMask = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity)
+)
+
+type wchar uint16
+type short int16
+type dword uint32
+type word uint16
+
+type coord struct {
+ x short
+ y short
+}
+
+type smallRect struct {
+ left short
+ top short
+ right short
+ bottom short
+}
+
+type consoleScreenBufferInfo struct {
+ size coord
+ cursorPosition coord
+ attributes word
+ window smallRect
+ maximumWindowSize coord
+}
+
+var (
+ kernel32 = syscall.NewLazyDLL("kernel32.dll")
+ procGetConsoleScreenBufferInfo = kernel32.NewProc("GetConsoleScreenBufferInfo")
+ procSetConsoleTextAttribute = kernel32.NewProc("SetConsoleTextAttribute")
+ procSetConsoleCursorPosition = kernel32.NewProc("SetConsoleCursorPosition")
+ procFillConsoleOutputCharacter = kernel32.NewProc("FillConsoleOutputCharacterW")
+ procFillConsoleOutputAttribute = kernel32.NewProc("FillConsoleOutputAttribute")
+)
+
+type Writer struct {
+ out io.Writer
+ handle syscall.Handle
+ lastbuf bytes.Buffer
+ oldattr word
+}
+
+func NewColorableStdout() io.Writer {
+ var csbi consoleScreenBufferInfo
+ out := os.Stdout
+ if !isatty.IsTerminal(out.Fd()) {
+ return out
+ }
+ handle := syscall.Handle(out.Fd())
+ procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))
+ return &Writer{out: out, handle: handle, oldattr: csbi.attributes}
+}
+
+func NewColorableStderr() io.Writer {
+ var csbi consoleScreenBufferInfo
+ out := os.Stderr
+ if !isatty.IsTerminal(out.Fd()) {
+ return out
+ }
+ handle := syscall.Handle(out.Fd())
+ procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))
+ return &Writer{out: out, handle: handle, oldattr: csbi.attributes}
+}
+
+var color256 = map[int]int{
+ 0: 0x000000,
+ 1: 0x800000,
+ 2: 0x008000,
+ 3: 0x808000,
+ 4: 0x000080,
+ 5: 0x800080,
+ 6: 0x008080,
+ 7: 0xc0c0c0,
+ 8: 0x808080,
+ 9: 0xff0000,
+ 10: 0x00ff00,
+ 11: 0xffff00,
+ 12: 0x0000ff,
+ 13: 0xff00ff,
+ 14: 0x00ffff,
+ 15: 0xffffff,
+ 16: 0x000000,
+ 17: 0x00005f,
+ 18: 0x000087,
+ 19: 0x0000af,
+ 20: 0x0000d7,
+ 21: 0x0000ff,
+ 22: 0x005f00,
+ 23: 0x005f5f,
+ 24: 0x005f87,
+ 25: 0x005faf,
+ 26: 0x005fd7,
+ 27: 0x005fff,
+ 28: 0x008700,
+ 29: 0x00875f,
+ 30: 0x008787,
+ 31: 0x0087af,
+ 32: 0x0087d7,
+ 33: 0x0087ff,
+ 34: 0x00af00,
+ 35: 0x00af5f,
+ 36: 0x00af87,
+ 37: 0x00afaf,
+ 38: 0x00afd7,
+ 39: 0x00afff,
+ 40: 0x00d700,
+ 41: 0x00d75f,
+ 42: 0x00d787,
+ 43: 0x00d7af,
+ 44: 0x00d7d7,
+ 45: 0x00d7ff,
+ 46: 0x00ff00,
+ 47: 0x00ff5f,
+ 48: 0x00ff87,
+ 49: 0x00ffaf,
+ 50: 0x00ffd7,
+ 51: 0x00ffff,
+ 52: 0x5f0000,
+ 53: 0x5f005f,
+ 54: 0x5f0087,
+ 55: 0x5f00af,
+ 56: 0x5f00d7,
+ 57: 0x5f00ff,
+ 58: 0x5f5f00,
+ 59: 0x5f5f5f,
+ 60: 0x5f5f87,
+ 61: 0x5f5faf,
+ 62: 0x5f5fd7,
+ 63: 0x5f5fff,
+ 64: 0x5f8700,
+ 65: 0x5f875f,
+ 66: 0x5f8787,
+ 67: 0x5f87af,
+ 68: 0x5f87d7,
+ 69: 0x5f87ff,
+ 70: 0x5faf00,
+ 71: 0x5faf5f,
+ 72: 0x5faf87,
+ 73: 0x5fafaf,
+ 74: 0x5fafd7,
+ 75: 0x5fafff,
+ 76: 0x5fd700,
+ 77: 0x5fd75f,
+ 78: 0x5fd787,
+ 79: 0x5fd7af,
+ 80: 0x5fd7d7,
+ 81: 0x5fd7ff,
+ 82: 0x5fff00,
+ 83: 0x5fff5f,
+ 84: 0x5fff87,
+ 85: 0x5fffaf,
+ 86: 0x5fffd7,
+ 87: 0x5fffff,
+ 88: 0x870000,
+ 89: 0x87005f,
+ 90: 0x870087,
+ 91: 0x8700af,
+ 92: 0x8700d7,
+ 93: 0x8700ff,
+ 94: 0x875f00,
+ 95: 0x875f5f,
+ 96: 0x875f87,
+ 97: 0x875faf,
+ 98: 0x875fd7,
+ 99: 0x875fff,
+ 100: 0x878700,
+ 101: 0x87875f,
+ 102: 0x878787,
+ 103: 0x8787af,
+ 104: 0x8787d7,
+ 105: 0x8787ff,
+ 106: 0x87af00,
+ 107: 0x87af5f,
+ 108: 0x87af87,
+ 109: 0x87afaf,
+ 110: 0x87afd7,
+ 111: 0x87afff,
+ 112: 0x87d700,
+ 113: 0x87d75f,
+ 114: 0x87d787,
+ 115: 0x87d7af,
+ 116: 0x87d7d7,
+ 117: 0x87d7ff,
+ 118: 0x87ff00,
+ 119: 0x87ff5f,
+ 120: 0x87ff87,
+ 121: 0x87ffaf,
+ 122: 0x87ffd7,
+ 123: 0x87ffff,
+ 124: 0xaf0000,
+ 125: 0xaf005f,
+ 126: 0xaf0087,
+ 127: 0xaf00af,
+ 128: 0xaf00d7,
+ 129: 0xaf00ff,
+ 130: 0xaf5f00,
+ 131: 0xaf5f5f,
+ 132: 0xaf5f87,
+ 133: 0xaf5faf,
+ 134: 0xaf5fd7,
+ 135: 0xaf5fff,
+ 136: 0xaf8700,
+ 137: 0xaf875f,
+ 138: 0xaf8787,
+ 139: 0xaf87af,
+ 140: 0xaf87d7,
+ 141: 0xaf87ff,
+ 142: 0xafaf00,
+ 143: 0xafaf5f,
+ 144: 0xafaf87,
+ 145: 0xafafaf,
+ 146: 0xafafd7,
+ 147: 0xafafff,
+ 148: 0xafd700,
+ 149: 0xafd75f,
+ 150: 0xafd787,
+ 151: 0xafd7af,
+ 152: 0xafd7d7,
+ 153: 0xafd7ff,
+ 154: 0xafff00,
+ 155: 0xafff5f,
+ 156: 0xafff87,
+ 157: 0xafffaf,
+ 158: 0xafffd7,
+ 159: 0xafffff,
+ 160: 0xd70000,
+ 161: 0xd7005f,
+ 162: 0xd70087,
+ 163: 0xd700af,
+ 164: 0xd700d7,
+ 165: 0xd700ff,
+ 166: 0xd75f00,
+ 167: 0xd75f5f,
+ 168: 0xd75f87,
+ 169: 0xd75faf,
+ 170: 0xd75fd7,
+ 171: 0xd75fff,
+ 172: 0xd78700,
+ 173: 0xd7875f,
+ 174: 0xd78787,
+ 175: 0xd787af,
+ 176: 0xd787d7,
+ 177: 0xd787ff,
+ 178: 0xd7af00,
+ 179: 0xd7af5f,
+ 180: 0xd7af87,
+ 181: 0xd7afaf,
+ 182: 0xd7afd7,
+ 183: 0xd7afff,
+ 184: 0xd7d700,
+ 185: 0xd7d75f,
+ 186: 0xd7d787,
+ 187: 0xd7d7af,
+ 188: 0xd7d7d7,
+ 189: 0xd7d7ff,
+ 190: 0xd7ff00,
+ 191: 0xd7ff5f,
+ 192: 0xd7ff87,
+ 193: 0xd7ffaf,
+ 194: 0xd7ffd7,
+ 195: 0xd7ffff,
+ 196: 0xff0000,
+ 197: 0xff005f,
+ 198: 0xff0087,
+ 199: 0xff00af,
+ 200: 0xff00d7,
+ 201: 0xff00ff,
+ 202: 0xff5f00,
+ 203: 0xff5f5f,
+ 204: 0xff5f87,
+ 205: 0xff5faf,
+ 206: 0xff5fd7,
+ 207: 0xff5fff,
+ 208: 0xff8700,
+ 209: 0xff875f,
+ 210: 0xff8787,
+ 211: 0xff87af,
+ 212: 0xff87d7,
+ 213: 0xff87ff,
+ 214: 0xffaf00,
+ 215: 0xffaf5f,
+ 216: 0xffaf87,
+ 217: 0xffafaf,
+ 218: 0xffafd7,
+ 219: 0xffafff,
+ 220: 0xffd700,
+ 221: 0xffd75f,
+ 222: 0xffd787,
+ 223: 0xffd7af,
+ 224: 0xffd7d7,
+ 225: 0xffd7ff,
+ 226: 0xffff00,
+ 227: 0xffff5f,
+ 228: 0xffff87,
+ 229: 0xffffaf,
+ 230: 0xffffd7,
+ 231: 0xffffff,
+ 232: 0x080808,
+ 233: 0x121212,
+ 234: 0x1c1c1c,
+ 235: 0x262626,
+ 236: 0x303030,
+ 237: 0x3a3a3a,
+ 238: 0x444444,
+ 239: 0x4e4e4e,
+ 240: 0x585858,
+ 241: 0x626262,
+ 242: 0x6c6c6c,
+ 243: 0x767676,
+ 244: 0x808080,
+ 245: 0x8a8a8a,
+ 246: 0x949494,
+ 247: 0x9e9e9e,
+ 248: 0xa8a8a8,
+ 249: 0xb2b2b2,
+ 250: 0xbcbcbc,
+ 251: 0xc6c6c6,
+ 252: 0xd0d0d0,
+ 253: 0xdadada,
+ 254: 0xe4e4e4,
+ 255: 0xeeeeee,
+}
+
+func (w *Writer) Write(data []byte) (n int, err error) {
+ var csbi consoleScreenBufferInfo
+ procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+
+ er := bytes.NewBuffer(data)
+loop:
+ for {
+ r1, _, err := procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+ if r1 == 0 {
+ break loop
+ }
+
+ c1, _, err := er.ReadRune()
+ if err != nil {
+ break loop
+ }
+ if c1 != 0x1b {
+ fmt.Fprint(w.out, string(c1))
+ continue
+ }
+ c2, _, err := er.ReadRune()
+ if err != nil {
+ w.lastbuf.WriteRune(c1)
+ break loop
+ }
+ if c2 != 0x5b {
+ w.lastbuf.WriteRune(c1)
+ w.lastbuf.WriteRune(c2)
+ continue
+ }
+
+ var buf bytes.Buffer
+ var m rune
+ for {
+ c, _, err := er.ReadRune()
+ if err != nil {
+ w.lastbuf.WriteRune(c1)
+ w.lastbuf.WriteRune(c2)
+ w.lastbuf.Write(buf.Bytes())
+ break loop
+ }
+ if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' {
+ m = c
+ break
+ }
+ buf.Write([]byte(string(c)))
+ }
+
+ var csbi consoleScreenBufferInfo
+ switch m {
+ case 'A':
+ n, err = strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+ csbi.cursorPosition.y -= short(n)
+ procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))
+ case 'B':
+ n, err = strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+ csbi.cursorPosition.y += short(n)
+ procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))
+ case 'C':
+ n, err = strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+ csbi.cursorPosition.x -= short(n)
+ procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))
+ case 'D':
+ n, err = strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ if n, err = strconv.Atoi(buf.String()); err == nil {
+ var csbi consoleScreenBufferInfo
+ procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+ csbi.cursorPosition.x += short(n)
+ procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))
+ }
+ case 'E':
+ n, err = strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+ csbi.cursorPosition.x = 0
+ csbi.cursorPosition.y += short(n)
+ procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))
+ case 'F':
+ n, err = strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+ csbi.cursorPosition.x = 0
+ csbi.cursorPosition.y -= short(n)
+ procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))
+ case 'G':
+ n, err = strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))
+ csbi.cursorPosition.x = short(n)
+ procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))
+ case 'H':
+ token := strings.Split(buf.String(), ";")
+ if len(token) != 2 {
+ continue
+ }
+ n1, err := strconv.Atoi(token[0])
+ if err != nil {
+ continue
+ }
+ n2, err := strconv.Atoi(token[1])
+ if err != nil {
+ continue
+ }
+ csbi.cursorPosition.x = short(n2)
+ csbi.cursorPosition.x = short(n1)
+ procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition)))
+ case 'J':
+ n, err := strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ var cursor coord
+ switch n {
+ case 0:
+ cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}
+ case 1:
+ cursor = coord{x: csbi.window.left, y: csbi.window.top}
+ case 2:
+ cursor = coord{x: csbi.window.left, y: csbi.window.top}
+ }
+ var count, written dword
+ count = dword(csbi.size.x - csbi.cursorPosition.x + (csbi.size.y-csbi.cursorPosition.y)*csbi.size.x)
+ procFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))
+ procFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))
+ case 'K':
+ n, err := strconv.Atoi(buf.String())
+ if err != nil {
+ continue
+ }
+ var cursor coord
+ switch n {
+ case 0:
+ cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y}
+ case 1:
+ cursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y}
+ case 2:
+ cursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y}
+ }
+ var count, written dword
+ count = dword(csbi.size.x - csbi.cursorPosition.x)
+ procFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))
+ procFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written)))
+ case 'm':
+ attr := csbi.attributes
+ cs := buf.String()
+ if cs == "" {
+ procSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(w.oldattr))
+ continue
+ }
+ token := strings.Split(cs, ";")
+ for i := 0; i < len(token); i += 1 {
+ ns := token[i]
+ if n, err = strconv.Atoi(ns); err == nil {
+ switch {
+ case n == 0 || n == 100:
+ attr = w.oldattr
+ case 1 <= n && n <= 5:
+ attr |= foregroundIntensity
+ case n == 7:
+ attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4)
+ case 22 == n || n == 25 || n == 25:
+ attr |= foregroundIntensity
+ case n == 27:
+ attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4)
+ case 30 <= n && n <= 37:
+ attr = (attr & backgroundMask)
+ if (n-30)&1 != 0 {
+ attr |= foregroundRed
+ }
+ if (n-30)&2 != 0 {
+ attr |= foregroundGreen
+ }
+ if (n-30)&4 != 0 {
+ attr |= foregroundBlue
+ }
+ case n == 38: // set foreground color.
+ if i < len(token)-2 && (token[i+1] == "5" || token[i+1] == "05") {
+ if n256, err := strconv.Atoi(token[i+2]); err == nil {
+ if n256foreAttr == nil {
+ n256setup()
+ }
+ attr &= backgroundMask
+ attr |= n256foreAttr[n256]
+ i += 2
+ }
+ } else {
+ attr = attr & (w.oldattr & backgroundMask)
+ }
+ case n == 39: // reset foreground color.
+ attr &= backgroundMask
+ attr |= w.oldattr & foregroundMask
+ case 40 <= n && n <= 47:
+ attr = (attr & foregroundMask)
+ if (n-40)&1 != 0 {
+ attr |= backgroundRed
+ }
+ if (n-40)&2 != 0 {
+ attr |= backgroundGreen
+ }
+ if (n-40)&4 != 0 {
+ attr |= backgroundBlue
+ }
+ case n == 48: // set background color.
+ if i < len(token)-2 && token[i+1] == "5" {
+ if n256, err := strconv.Atoi(token[i+2]); err == nil {
+ if n256backAttr == nil {
+ n256setup()
+ }
+ attr &= foregroundMask
+ attr |= n256backAttr[n256]
+ i += 2
+ }
+ } else {
+ attr = attr & (w.oldattr & foregroundMask)
+ }
+ case n == 49: // reset foreground color.
+ attr &= foregroundMask
+ attr |= w.oldattr & backgroundMask
+ case 90 <= n && n <= 97:
+ attr = (attr & backgroundMask)
+ attr |= foregroundIntensity
+ if (n-90)&1 != 0 {
+ attr |= foregroundRed
+ }
+ if (n-90)&2 != 0 {
+ attr |= foregroundGreen
+ }
+ if (n-90)&4 != 0 {
+ attr |= foregroundBlue
+ }
+ case 100 <= n && n <= 107:
+ attr = (attr & foregroundMask)
+ attr |= backgroundIntensity
+ if (n-100)&1 != 0 {
+ attr |= backgroundRed
+ }
+ if (n-100)&2 != 0 {
+ attr |= backgroundGreen
+ }
+ if (n-100)&4 != 0 {
+ attr |= backgroundBlue
+ }
+ }
+ procSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(attr))
+ }
+ }
+ }
+ }
+ return len(data) - w.lastbuf.Len(), nil
+}
+
+type consoleColor struct {
+ rgb int
+ red bool
+ green bool
+ blue bool
+ intensity bool
+}
+
+func (c consoleColor) foregroundAttr() (attr word) {
+ if c.red {
+ attr |= foregroundRed
+ }
+ if c.green {
+ attr |= foregroundGreen
+ }
+ if c.blue {
+ attr |= foregroundBlue
+ }
+ if c.intensity {
+ attr |= foregroundIntensity
+ }
+ return
+}
+
+func (c consoleColor) backgroundAttr() (attr word) {
+ if c.red {
+ attr |= backgroundRed
+ }
+ if c.green {
+ attr |= backgroundGreen
+ }
+ if c.blue {
+ attr |= backgroundBlue
+ }
+ if c.intensity {
+ attr |= backgroundIntensity
+ }
+ return
+}
+
+var color16 = []consoleColor{
+ consoleColor{0x000000, false, false, false, false},
+ consoleColor{0x000080, false, false, true, false},
+ consoleColor{0x008000, false, true, false, false},
+ consoleColor{0x008080, false, true, true, false},
+ consoleColor{0x800000, true, false, false, false},
+ consoleColor{0x800080, true, false, true, false},
+ consoleColor{0x808000, true, true, false, false},
+ consoleColor{0xc0c0c0, true, true, true, false},
+ consoleColor{0x808080, false, false, false, true},
+ consoleColor{0x0000ff, false, false, true, true},
+ consoleColor{0x00ff00, false, true, false, true},
+ consoleColor{0x00ffff, false, true, true, true},
+ consoleColor{0xff0000, true, false, false, true},
+ consoleColor{0xff00ff, true, false, true, true},
+ consoleColor{0xffff00, true, true, false, true},
+ consoleColor{0xffffff, true, true, true, true},
+}
+
+type hsv struct {
+ h, s, v float32
+}
+
+func (a hsv) dist(b hsv) float32 {
+ dh := a.h - b.h
+ switch {
+ case dh > 0.5:
+ dh = 1 - dh
+ case dh < -0.5:
+ dh = -1 - dh
+ }
+ ds := a.s - b.s
+ dv := a.v - b.v
+ return float32(math.Sqrt(float64(dh*dh + ds*ds + dv*dv)))
+}
+
+func toHSV(rgb int) hsv {
+ r, g, b := float32((rgb&0xFF0000)>>16)/256.0,
+ float32((rgb&0x00FF00)>>8)/256.0,
+ float32(rgb&0x0000FF)/256.0
+ min, max := minmax3f(r, g, b)
+ h := max - min
+ if h > 0 {
+ if max == r {
+ h = (g - b) / h
+ if h < 0 {
+ h += 6
+ }
+ } else if max == g {
+ h = 2 + (b-r)/h
+ } else {
+ h = 4 + (r-g)/h
+ }
+ }
+ h /= 6.0
+ s := max - min
+ if max != 0 {
+ s /= max
+ }
+ v := max
+ return hsv{h: h, s: s, v: v}
+}
+
+type hsvTable []hsv
+
+func toHSVTable(rgbTable []consoleColor) hsvTable {
+ t := make(hsvTable, len(rgbTable))
+ for i, c := range rgbTable {
+ t[i] = toHSV(c.rgb)
+ }
+ return t
+}
+
+func (t hsvTable) find(rgb int) consoleColor {
+ hsv := toHSV(rgb)
+ n := 7
+ l := float32(5.0)
+ for i, p := range t {
+ d := hsv.dist(p)
+ if d < l {
+ l, n = d, i
+ }
+ }
+ return color16[n]
+}
+
+func minmax3f(a, b, c float32) (min, max float32) {
+ if a < b {
+ if b < c {
+ return a, c
+ } else if a < c {
+ return a, b
+ } else {
+ return c, b
+ }
+ } else {
+ if a < c {
+ return b, c
+ } else if b < c {
+ return b, a
+ } else {
+ return c, a
+ }
+ }
+}
+
+var n256foreAttr []word
+var n256backAttr []word
+
+func n256setup() {
+ n256foreAttr = make([]word, 256)
+ n256backAttr = make([]word, 256)
+ t := toHSVTable(color16)
+ for i, rgb := range color256 {
+ c := t.find(rgb)
+ n256foreAttr[i] = c.foregroundAttr()
+ n256backAttr[i] = c.backgroundAttr()
+ }
+}
diff --git a/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_appengine.go b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_appengine.go
new file mode 100644
index 000000000..83c588773
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_appengine.go
@@ -0,0 +1,9 @@
+// +build appengine
+
+package isatty
+
+// IsTerminal returns true if the file descriptor is terminal which
+// is always false on on appengine classic which is a sandboxed PaaS.
+func IsTerminal(fd uintptr) bool {
+ return false
+}
diff --git a/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_bsd.go b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_bsd.go
index e6282b529..98ffe86a4 100644
--- a/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_bsd.go
+++ b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_bsd.go
@@ -1,4 +1,5 @@
// +build darwin freebsd openbsd netbsd
+// +build !appengine
package isatty
diff --git a/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_linux.go b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_linux.go
index 8b361d7fb..9d24bac1d 100644
--- a/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_linux.go
+++ b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_linux.go
@@ -1,4 +1,5 @@
// +build linux
+// +build !appengine
package isatty
diff --git a/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_solaris.go b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_solaris.go
new file mode 100644
index 000000000..1f0c6bf53
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_solaris.go
@@ -0,0 +1,16 @@
+// +build solaris
+// +build !appengine
+
+package isatty
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+// IsTerminal returns true if the given file descriptor is a terminal.
+// see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c
+func IsTerminal(fd uintptr) bool {
+ var termio unix.Termio
+ err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio)
+ return err == nil
+}
diff --git a/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_windows.go b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_windows.go
index 562ee39ca..83c398b16 100644
--- a/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_windows.go
+++ b/Godeps/_workspace/src/github.com/mattn/go-isatty/isatty_windows.go
@@ -1,4 +1,5 @@
// +build windows
+// +build !appengine
package isatty
diff --git a/Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth.go b/Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth.go
index 0b417db15..3fbf33d59 100644
--- a/Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth.go
+++ b/Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth.go
@@ -352,24 +352,72 @@ func (c *Condition) StringWidth(s string) (width int) {
}
func (c *Condition) Truncate(s string, w int, tail string) string {
+ if c.StringWidth(s) <= w {
+ return s
+ }
r := []rune(s)
- tw := StringWidth(tail)
+ tw := c.StringWidth(tail)
w -= tw
width := 0
i := 0
for ; i < len(r); i++ {
- cw := RuneWidth(r[i])
+ cw := c.RuneWidth(r[i])
if width+cw > w {
break
}
width += cw
}
- if i == len(r) {
- return string(r[0:i])
- }
return string(r[0:i]) + tail
}
+func (c *Condition) Wrap(s string, w int) string {
+ width := 0
+ out := ""
+ for _, r := range []rune(s) {
+ cw := RuneWidth(r)
+ if r == '\n' {
+ out += string(r)
+ width = 0
+ continue
+ } else if width+cw > w {
+ out += "\n"
+ width = 0
+ out += string(r)
+ width += cw
+ continue
+ }
+ out += string(r)
+ width += cw
+ }
+ return out
+}
+
+func (c *Condition) FillLeft(s string, w int) string {
+ width := c.StringWidth(s)
+ count := w - width
+ if count > 0 {
+ b := make([]byte, count)
+ for i := range b {
+ b[i] = ' '
+ }
+ return string(b) + s
+ }
+ return s
+}
+
+func (c *Condition) FillRight(s string, w int) string {
+ width := c.StringWidth(s)
+ count := w - width
+ if count > 0 {
+ b := make([]byte, count)
+ for i := range b {
+ b[i] = ' '
+ }
+ return s + string(b)
+ }
+ return s
+}
+
// RuneWidth returns the number of cells in r.
// See http://www.unicode.org/reports/tr11/
func RuneWidth(r rune) int {
@@ -402,3 +450,15 @@ func StringWidth(s string) (width int) {
func Truncate(s string, w int, tail string) string {
return DefaultCondition.Truncate(s, w, tail)
}
+
+func Wrap(s string, w int) string {
+ return DefaultCondition.Wrap(s, w)
+}
+
+func FillLeft(s string, w int) string {
+ return DefaultCondition.FillLeft(s, w)
+}
+
+func FillRight(s string, w int) string {
+ return DefaultCondition.FillRight(s, w)
+}
diff --git a/Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth_test.go b/Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth_test.go
deleted file mode 100644
index 5cef3d6a4..000000000
--- a/Godeps/_workspace/src/github.com/mattn/go-runewidth/runewidth_test.go
+++ /dev/null
@@ -1,134 +0,0 @@
-package runewidth
-
-import (
- "testing"
-)
-
-var runewidthtests = []struct {
- in rune
- out int
-}{
- {'世', 2},
- {'界', 2},
- {'セ', 1},
- {'カ', 1},
- {'イ', 1},
- {'☆', 2}, // double width in ambiguous
- {'\x00', 0},
- {'\x01', 1},
- {'\u0300', 0},
-}
-
-func TestRuneWidth(t *testing.T) {
- c := NewCondition()
- c.EastAsianWidth = true
- for _, tt := range runewidthtests {
- if out := c.RuneWidth(tt.in); out != tt.out {
- t.Errorf("Width(%q) = %v, want %v", tt.in, out, tt.out)
- }
- }
-}
-
-var isambiguouswidthtests = []struct {
- in rune
- out bool
-}{
- {'世', false},
- {'■', true},
- {'界', false},
- {'○', true},
- {'㈱', false},
- {'①', true},
- {'②', true},
- {'③', true},
- {'④', true},
- {'⑤', true},
- {'⑥', true},
- {'⑦', true},
- {'⑧', true},
- {'⑨', true},
- {'⑩', true},
- {'⑪', true},
- {'⑫', true},
- {'⑬', true},
- {'⑭', true},
- {'⑮', true},
- {'⑯', true},
- {'⑰', true},
- {'⑱', true},
- {'⑲', true},
- {'⑳', true},
- {'☆', true},
-}
-
-func TestIsAmbiguousWidth(t *testing.T) {
- for _, tt := range isambiguouswidthtests {
- if out := IsAmbiguousWidth(tt.in); out != tt.out {
- t.Errorf("IsAmbiguousWidth(%q) = %v, want %v", tt.in, out, tt.out)
- }
- }
-}
-
-var stringwidthtests = []struct {
- in string
- out int
-}{
- {"■㈱の世界①", 12},
- {"スター☆", 8},
-}
-
-func TestStringWidth(t *testing.T) {
- c := NewCondition()
- c.EastAsianWidth = true
- for _, tt := range stringwidthtests {
- if out := c.StringWidth(tt.in); out != tt.out {
- t.Errorf("StringWidth(%q) = %v, want %v", tt.in, out, tt.out)
- }
- }
-}
-
-func TestStringWidthInvalid(t *testing.T) {
- s := "こんにちわ\x00世界"
- if out := StringWidth(s); out != 14 {
- t.Errorf("StringWidth(%q) = %v, want %v", s, out, 14)
- }
-}
-
-func TestTruncate(t *testing.T) {
- s := "あいうえおあいうえおえおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお"
- expected := "あいうえおあいうえおえおおおおおおおおおおおおおおおおおおおおおおおおおおお..."
-
- if out := Truncate(s, 80, "..."); out != expected {
- t.Errorf("Truncate(%q) = %v, want %v", s, out, expected)
- }
-}
-
-func TestTruncateNoNeeded(t *testing.T) {
- s := "あいうえおあい"
- expected := "あいうえおあい"
-
- if out := Truncate(s, 80, "..."); out != expected {
- t.Errorf("Truncate(%q) = %v, want %v", s, out, expected)
- }
-}
-
-var isneutralwidthtests = []struct {
- in rune
- out bool
-}{
- {'→', false},
- {'┊', false},
- {'┈', false},
- {'~', false},
- {'└', false},
- {'⣀', true},
- {'⣀', true},
-}
-
-func TestIsNeutralWidth(t *testing.T) {
- for _, tt := range isneutralwidthtests {
- if out := IsNeutralWidth(tt.in); out != tt.out {
- t.Errorf("IsNeutralWidth(%q) = %v, want %v", tt.in, out, tt.out)
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/nsf/termbox-go/README.md b/Godeps/_workspace/src/github.com/nsf/termbox-go/README.md
index 5fc1874b1..6ff10c6b9 100644
--- a/Godeps/_workspace/src/github.com/nsf/termbox-go/README.md
+++ b/Godeps/_workspace/src/github.com/nsf/termbox-go/README.md
@@ -18,6 +18,8 @@ There are also some interesting projects using termbox-go:
- [termui](https://github.com/gizak/termui) is a terminal dashboard.
- [termloop](https://github.com/JoelOtter/termloop) is a terminal game engine.
- [xterm-color-chart](https://github.com/kutuluk/xterm-color-chart) is a XTerm 256 color chart.
+ - [gocui](https://github.com/jroimartin/gocui) is a minimalist Go library aimed at creating console user interfaces.
+ - [dry](https://github.com/moncho/dry) is an interactive cli to manage Docker containers.
### API reference
[godoc.org/github.com/nsf/termbox-go](http://godoc.org/github.com/nsf/termbox-go)
diff --git a/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go b/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go
index 1e284060e..b8497b02e 100644
--- a/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go
+++ b/Godeps/_workspace/src/github.com/nsf/termbox-go/api.go
@@ -372,7 +372,7 @@ func Clear(fg, bg Attribute) error {
// any known sequence. ESC enables ModAlt modifier for the next keyboard event.
//
// Both input modes can be OR'ed with Mouse mode. Setting Mouse mode bit up will
-// enable mouse button click events.
+// enable mouse button press/release and drag events.
//
// If 'mode' is InputCurrent, returns the current input mode. See also Input*
// constants.
diff --git a/Godeps/_workspace/src/github.com/nsf/termbox-go/api_common.go b/Godeps/_workspace/src/github.com/nsf/termbox-go/api_common.go
index c0069fb28..9f23661f5 100644
--- a/Godeps/_workspace/src/github.com/nsf/termbox-go/api_common.go
+++ b/Godeps/_workspace/src/github.com/nsf/termbox-go/api_common.go
@@ -70,6 +70,9 @@ const (
MouseLeft
MouseMiddle
MouseRight
+ MouseRelease
+ MouseWheelUp
+ MouseWheelDown
)
const (
@@ -123,7 +126,8 @@ const (
// Alt modifier constant, see Event.Mod field and SetInputMode function.
const (
- ModAlt Modifier = 0x01
+ ModAlt Modifier = 1 << iota
+ ModMotion
)
// Cell colors, you can combine a color with multiple attributes using bitwise
diff --git a/Godeps/_workspace/src/github.com/nsf/termbox-go/api_windows.go b/Godeps/_workspace/src/github.com/nsf/termbox-go/api_windows.go
index 203544bbf..7def30a67 100644
--- a/Godeps/_workspace/src/github.com/nsf/termbox-go/api_windows.go
+++ b/Godeps/_workspace/src/github.com/nsf/termbox-go/api_windows.go
@@ -81,8 +81,8 @@ func Close() {
cancel_comm <- true
set_event(interrupt)
select {
- case <-input_comm:
- default:
+ case <-input_comm:
+ default:
}
<-cancel_done_comm
@@ -198,7 +198,7 @@ func Clear(fg, bg Attribute) error {
// any known sequence. ESC enables ModAlt modifier for the next keyboard event.
//
// Both input modes can be OR'ed with Mouse mode. Setting Mouse mode bit up will
-// enable mouse button click events.
+// enable mouse button press/release and drag events.
//
// If 'mode' is InputCurrent, returns the current input mode. See also Input*
// constants.
diff --git a/Godeps/_workspace/src/github.com/nsf/termbox-go/termbox.go b/Godeps/_workspace/src/github.com/nsf/termbox-go/termbox.go
index f754880d2..6e5ba6c8f 100644
--- a/Godeps/_workspace/src/github.com/nsf/termbox-go/termbox.go
+++ b/Godeps/_workspace/src/github.com/nsf/termbox-go/termbox.go
@@ -287,31 +287,131 @@ func tcgetattr(fd uintptr, termios *syscall_Termios) error {
return nil
}
-func parse_escape_sequence(event *Event, buf []byte) (int, bool) {
- bufstr := string(buf)
- // mouse
- if len(bufstr) >= 6 && strings.HasPrefix(bufstr, "\033[M") {
- switch buf[3] & 3 {
+func parse_mouse_event(event *Event, buf string) (int, bool) {
+ if strings.HasPrefix(buf, "\033[M") && len(buf) >= 6 {
+ // X10 mouse encoding, the simplest one
+ // \033 [ M Cb Cx Cy
+ b := buf[3] - 32
+ switch b & 3 {
case 0:
- event.Key = MouseLeft
+ if b&64 != 0 {
+ event.Key = MouseWheelUp
+ } else {
+ event.Key = MouseLeft
+ }
case 1:
- event.Key = MouseMiddle
+ if b&64 != 0 {
+ event.Key = MouseWheelDown
+ } else {
+ event.Key = MouseMiddle
+ }
case 2:
event.Key = MouseRight
case 3:
+ event.Key = MouseRelease
+ default:
return 6, false
}
event.Type = EventMouse // KeyEvent by default
- // wheel up outputs MouseLeft
- if buf[3] == 0x60 || buf[3] == 0x70 {
- event.Key = MouseMiddle
+ if b&32 != 0 {
+ event.Mod |= ModMotion
}
+
// the coord is 1,1 for upper left
event.MouseX = int(buf[4]) - 1 - 32
event.MouseY = int(buf[5]) - 1 - 32
return 6, true
+ } else if strings.HasPrefix(buf, "\033[<") || strings.HasPrefix(buf, "\033[") {
+ // xterm 1006 extended mode or urxvt 1015 extended mode
+ // xterm: \033 [ < Cb ; Cx ; Cy (M or m)
+ // urxvt: \033 [ Cb ; Cx ; Cy M
+
+ // find the first M or m, that's where we stop
+ mi := strings.IndexAny(buf, "Mm")
+ if mi == -1 {
+ return 0, false
+ }
+
+ // whether it's a capital M or not
+ isM := buf[mi] == 'M'
+
+ // whether it's urxvt or not
+ isU := false
+
+ // buf[2] is safe here, because having M or m found means we have at
+ // least 3 bytes in a string
+ if buf[2] == '<' {
+ buf = buf[3:mi]
+ } else {
+ isU = true
+ buf = buf[2:mi]
+ }
+
+ s1 := strings.Index(buf, ";")
+ s2 := strings.LastIndex(buf, ";")
+ // not found or only one ';'
+ if s1 == -1 || s2 == -1 || s1 == s2 {
+ return 0, false
+ }
+
+ n1, err := strconv.ParseInt(buf[0:s1], 10, 64)
+ if err != nil {
+ return 0, false
+ }
+ n2, err := strconv.ParseInt(buf[s1+1:s2], 10, 64)
+ if err != nil {
+ return 0, false
+ }
+ n3, err := strconv.ParseInt(buf[s2+1:], 10, 64)
+ if err != nil {
+ return 0, false
+ }
+
+ // on urxvt, first number is encoded exactly as in X10, but we need to
+ // make it zero-based, on xterm it is zero-based already
+ if isU {
+ n1 -= 32
+ }
+ switch n1 & 3 {
+ case 0:
+ if n1&64 != 0 {
+ event.Key = MouseWheelUp
+ } else {
+ event.Key = MouseLeft
+ }
+ case 1:
+ if n1&64 != 0 {
+ event.Key = MouseWheelDown
+ } else {
+ event.Key = MouseMiddle
+ }
+ case 2:
+ event.Key = MouseRight
+ case 3:
+ event.Key = MouseRelease
+ default:
+ return mi + 1, false
+ }
+ if !isM {
+ // on xterm mouse release is signaled by lowercase m
+ event.Key = MouseRelease
+ }
+
+ event.Type = EventMouse // KeyEvent by default
+ if n1&32 != 0 {
+ event.Mod |= ModMotion
+ }
+
+ event.MouseX = int(n2) - 1
+ event.MouseY = int(n3) - 1
+ return mi + 1, true
}
+ return 0, false
+}
+
+func parse_escape_sequence(event *Event, buf []byte) (int, bool) {
+ bufstr := string(buf)
for i, key := range keys {
if strings.HasPrefix(bufstr, key) {
event.Ch = 0
@@ -319,7 +419,9 @@ func parse_escape_sequence(event *Event, buf []byte) (int, bool) {
return len(key), true
}
}
- return 0, true
+
+ // if none of the keys match, let's try mouse seqences
+ return parse_mouse_event(event, bufstr)
}
func extract_raw_event(data []byte, event *Event) bool {
@@ -349,8 +451,7 @@ func extract_event(inbuf []byte, event *Event) bool {
if inbuf[0] == '\033' {
// possible escape sequence
- n, ok := parse_escape_sequence(event, inbuf)
- if n != 0 {
+ if n, ok := parse_escape_sequence(event, inbuf); n != 0 {
event.N = n
return ok
}
diff --git a/Godeps/_workspace/src/github.com/nsf/termbox-go/termbox_windows.go b/Godeps/_workspace/src/github.com/nsf/termbox-go/termbox_windows.go
index f345d0eb0..f7dad7b8a 100644
--- a/Godeps/_workspace/src/github.com/nsf/termbox-go/termbox_windows.go
+++ b/Godeps/_workspace/src/github.com/nsf/termbox-go/termbox_windows.go
@@ -522,8 +522,16 @@ func prepare_diff_messages() {
}
}
+func get_ct(table []word, idx int) word {
+ idx = idx & 0x0F
+ if idx >= len(table) {
+ idx = len(table) - 1
+ }
+ return table[idx]
+}
+
func cell_to_char_info(c Cell) (attr word, wc [2]wchar) {
- attr = color_table_fg[c.Fg&0x0F] | color_table_bg[c.Bg&0x0F]
+ attr = get_ct(color_table_fg, int(c.Fg)) | get_ct(color_table_bg, int(c.Bg))
if c.Fg&AttrReverse|c.Bg&AttrReverse != 0 {
attr = (attr&0xF0)>>4 | (attr&0x0F)<<4
}
@@ -744,7 +752,9 @@ func input_event_producer() {
var r input_record
var err error
var last_button Key
+ var last_button_pressed Key
var last_state = dword(0)
+ var last_x, last_y = -1, -1
handles := []syscall.Handle{in, interrupt}
for {
err = wait_for_multiple_objects(handles)
@@ -782,31 +792,64 @@ func input_event_producer() {
}
case mouse_event:
mr := *(*mouse_event_record)(unsafe.Pointer(&r.event))
-
- // single or double click
+ ev := Event{Type: EventMouse}
switch mr.event_flags {
- case 0:
+ case 0, 2:
+ // single or double click
cur_state := mr.button_state
switch {
case last_state&mouse_lmb == 0 && cur_state&mouse_lmb != 0:
last_button = MouseLeft
+ last_button_pressed = last_button
case last_state&mouse_rmb == 0 && cur_state&mouse_rmb != 0:
last_button = MouseRight
+ last_button_pressed = last_button
case last_state&mouse_mmb == 0 && cur_state&mouse_mmb != 0:
last_button = MouseMiddle
+ last_button_pressed = last_button
+ case last_state&mouse_lmb != 0 && cur_state&mouse_lmb == 0:
+ last_button = MouseRelease
+ case last_state&mouse_rmb != 0 && cur_state&mouse_rmb == 0:
+ last_button = MouseRelease
+ case last_state&mouse_mmb != 0 && cur_state&mouse_mmb == 0:
+ last_button = MouseRelease
default:
last_state = cur_state
continue
}
last_state = cur_state
- fallthrough
- case 2:
- input_comm <- Event{
- Type: EventMouse,
- Key: last_button,
- MouseX: int(mr.mouse_pos.x),
- MouseY: int(mr.mouse_pos.y),
+ ev.Key = last_button
+ last_x, last_y = int(mr.mouse_pos.x), int(mr.mouse_pos.y)
+ ev.MouseX = last_x
+ ev.MouseY = last_y
+ case 1:
+ // mouse motion
+ x, y := int(mr.mouse_pos.x), int(mr.mouse_pos.y)
+ if last_state != 0 && (last_x != x || last_y != y) {
+ ev.Key = last_button_pressed
+ ev.Mod = ModMotion
+ ev.MouseX = x
+ ev.MouseY = y
+ last_x, last_y = x, y
+ } else {
+ ev.Type = EventNone
+ }
+ case 4:
+ // mouse wheel
+ n := int16(mr.button_state >> 16)
+ if n > 0 {
+ ev.Key = MouseWheelUp
+ } else {
+ ev.Key = MouseWheelDown
}
+ last_x, last_y = int(mr.mouse_pos.x), int(mr.mouse_pos.y)
+ ev.MouseX = last_x
+ ev.MouseY = last_y
+ default:
+ ev.Type = EventNone
+ }
+ if ev.Type != EventNone {
+ input_comm <- ev
}
}
}
diff --git a/Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo.go b/Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo.go
index 3569e3c0e..35dbd70b8 100644
--- a/Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo.go
+++ b/Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo.go
@@ -23,6 +23,8 @@ import (
const (
ti_magic = 0432
ti_header_length = 12
+ ti_mouse_enter = "\x1b[?1000h\x1b[?1002h\x1b[?1015h\x1b[?1006h"
+ ti_mouse_leave = "\x1b[?1006l\x1b[?1015l\x1b[?1002l\x1b[?1000l"
)
func load_terminfo() ([]byte, error) {
@@ -172,8 +174,8 @@ func setup_term() (err error) {
return
}
}
- funcs[t_max_funcs-2] = "\x1b[?1000h"
- funcs[t_max_funcs-1] = "\x1b[?1000l"
+ funcs[t_max_funcs-2] = ti_mouse_enter
+ funcs[t_max_funcs-1] = ti_mouse_leave
return nil
}
diff --git a/Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo_builtin.go b/Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo_builtin.go
index 6f927c852..a94866067 100644
--- a/Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo_builtin.go
+++ b/Godeps/_workspace/src/github.com/nsf/termbox-go/terminfo_builtin.go
@@ -15,7 +15,7 @@ var screen_keys = []string{
"\x1bOP", "\x1bOQ", "\x1bOR", "\x1bOS", "\x1b[15~", "\x1b[17~", "\x1b[18~", "\x1b[19~", "\x1b[20~", "\x1b[21~", "\x1b[23~", "\x1b[24~", "\x1b[2~", "\x1b[3~", "\x1b[1~", "\x1b[4~", "\x1b[5~", "\x1b[6~", "\x1bOA", "\x1bOB", "\x1bOD", "\x1bOC",
}
var screen_funcs = []string{
- "\x1b[?1049h", "\x1b[?1049l", "\x1b[34h\x1b[?25h", "\x1b[?25l", "\x1b[H\x1b[J", "\x1b[m\x0f", "\x1b[4m", "\x1b[1m", "\x1b[5m", "\x1b[7m", "\x1b[?1h\x1b=", "\x1b[?1l\x1b>", "\x1b[?1000h", "\x1b[?1000l",
+ "\x1b[?1049h", "\x1b[?1049l", "\x1b[34h\x1b[?25h", "\x1b[?25l", "\x1b[H\x1b[J", "\x1b[m\x0f", "\x1b[4m", "\x1b[1m", "\x1b[5m", "\x1b[7m", "\x1b[?1h\x1b=", "\x1b[?1l\x1b>", ti_mouse_enter, ti_mouse_leave,
}
// xterm
@@ -23,7 +23,7 @@ var xterm_keys = []string{
"\x1bOP", "\x1bOQ", "\x1bOR", "\x1bOS", "\x1b[15~", "\x1b[17~", "\x1b[18~", "\x1b[19~", "\x1b[20~", "\x1b[21~", "\x1b[23~", "\x1b[24~", "\x1b[2~", "\x1b[3~", "\x1bOH", "\x1bOF", "\x1b[5~", "\x1b[6~", "\x1bOA", "\x1bOB", "\x1bOD", "\x1bOC",
}
var xterm_funcs = []string{
- "\x1b[?1049h", "\x1b[?1049l", "\x1b[?12l\x1b[?25h", "\x1b[?25l", "\x1b[H\x1b[2J", "\x1b(B\x1b[m", "\x1b[4m", "\x1b[1m", "\x1b[5m", "\x1b[7m", "\x1b[?1h\x1b=", "\x1b[?1l\x1b>", "\x1b[?1000h", "\x1b[?1000l",
+ "\x1b[?1049h", "\x1b[?1049l", "\x1b[?12l\x1b[?25h", "\x1b[?25l", "\x1b[H\x1b[2J", "\x1b(B\x1b[m", "\x1b[4m", "\x1b[1m", "\x1b[5m", "\x1b[7m", "\x1b[?1h\x1b=", "\x1b[?1l\x1b>", ti_mouse_enter, ti_mouse_leave,
}
// rxvt-unicode
@@ -31,7 +31,7 @@ var rxvt_unicode_keys = []string{
"\x1b[11~", "\x1b[12~", "\x1b[13~", "\x1b[14~", "\x1b[15~", "\x1b[17~", "\x1b[18~", "\x1b[19~", "\x1b[20~", "\x1b[21~", "\x1b[23~", "\x1b[24~", "\x1b[2~", "\x1b[3~", "\x1b[7~", "\x1b[8~", "\x1b[5~", "\x1b[6~", "\x1b[A", "\x1b[B", "\x1b[D", "\x1b[C",
}
var rxvt_unicode_funcs = []string{
- "\x1b[?1049h", "\x1b[r\x1b[?1049l", "\x1b[?25h", "\x1b[?25l", "\x1b[H\x1b[2J", "\x1b[m\x1b(B", "\x1b[4m", "\x1b[1m", "\x1b[5m", "\x1b[7m", "\x1b=", "\x1b>", "\x1b[?1000h", "\x1b[?1000l",
+ "\x1b[?1049h", "\x1b[r\x1b[?1049l", "\x1b[?25h", "\x1b[?25l", "\x1b[H\x1b[2J", "\x1b[m\x1b(B", "\x1b[4m", "\x1b[1m", "\x1b[5m", "\x1b[7m", "\x1b=", "\x1b>", ti_mouse_enter, ti_mouse_leave,
}
// linux
@@ -47,7 +47,7 @@ var rxvt_256color_keys = []string{
"\x1b[11~", "\x1b[12~", "\x1b[13~", "\x1b[14~", "\x1b[15~", "\x1b[17~", "\x1b[18~", "\x1b[19~", "\x1b[20~", "\x1b[21~", "\x1b[23~", "\x1b[24~", "\x1b[2~", "\x1b[3~", "\x1b[7~", "\x1b[8~", "\x1b[5~", "\x1b[6~", "\x1b[A", "\x1b[B", "\x1b[D", "\x1b[C",
}
var rxvt_256color_funcs = []string{
- "\x1b7\x1b[?47h", "\x1b[2J\x1b[?47l\x1b8", "\x1b[?25h", "\x1b[?25l", "\x1b[H\x1b[2J", "\x1b[m\x0f", "\x1b[4m", "\x1b[1m", "\x1b[5m", "\x1b[7m", "\x1b=", "\x1b>", "\x1b[?1000h", "\x1b[?1000l",
+ "\x1b7\x1b[?47h", "\x1b[2J\x1b[?47l\x1b8", "\x1b[?25h", "\x1b[?25l", "\x1b[H\x1b[2J", "\x1b[m\x0f", "\x1b[4m", "\x1b[1m", "\x1b[5m", "\x1b[7m", "\x1b=", "\x1b>", ti_mouse_enter, ti_mouse_leave,
}
var terms = []struct {
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/.travis.yml b/Godeps/_workspace/src/github.com/pborman/uuid/.travis.yml
new file mode 100644
index 000000000..a6a98db8a
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/.travis.yml
@@ -0,0 +1,10 @@
+language: go
+
+go:
+ - 1.4.3
+ - 1.5.3
+ - release
+ - tip
+
+script:
+ - go test -v ./...
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/README.md b/Godeps/_workspace/src/github.com/pborman/uuid/README.md
new file mode 100644
index 000000000..f023d47ca
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/README.md
@@ -0,0 +1,13 @@
+This project was automatically exported from code.google.com/p/go-uuid
+
+# uuid ![build status](https://travis-ci.org/pborman/uuid.svg?branch=master)
+The uuid package generates and inspects UUIDs based on [RFC 412](http://tools.ietf.org/html/rfc4122) and DCE 1.1: Authentication and Security Services.
+
+###### Install
+`go get github.com/pborman/uuid`
+
+###### Documentation
+[![GoDoc](https://godoc.org/github.com/pborman/uuid?status.svg)](http://godoc.org/github.com/pborman/uuid)
+
+Full `go doc` style documentation for the package can be viewed online without installing this package by using the GoDoc site here:
+http://godoc.org/github.com/pborman/uuid
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/hash.go b/Godeps/_workspace/src/github.com/pborman/uuid/hash.go
index cdd4192fd..a0420c1ef 100644
--- a/Godeps/_workspace/src/github.com/pborman/uuid/hash.go
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/hash.go
@@ -19,7 +19,7 @@ var (
NIL = Parse("00000000-0000-0000-0000-000000000000")
)
-// NewHash returns a new UUID dervied from the hash of space concatenated with
+// NewHash returns a new UUID derived from the hash of space concatenated with
// data generated by h. The hash should be at least 16 byte in length. The
// first 16 bytes of the hash are used to form the UUID. The version of the
// UUID will be the lower 4 bits of version. NewHash is used to implement
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/json.go b/Godeps/_workspace/src/github.com/pborman/uuid/json.go
index 760580a50..9dda1dfba 100644
--- a/Godeps/_workspace/src/github.com/pborman/uuid/json.go
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/json.go
@@ -7,17 +7,21 @@ package uuid
import "errors"
func (u UUID) MarshalJSON() ([]byte, error) {
- if len(u) == 0 {
+ if len(u) != 16 {
return []byte(`""`), nil
}
- return []byte(`"` + u.String() + `"`), nil
+ var js [38]byte
+ js[0] = '"'
+ encodeHex(js[1:], u)
+ js[37] = '"'
+ return js[:], nil
}
func (u *UUID) UnmarshalJSON(data []byte) error {
- if len(data) == 0 || string(data) == `""` {
+ if string(data) == `""` {
return nil
}
- if len(data) < 2 || data[0] != '"' || data[len(data)-1] != '"' {
+ if data[0] != '"' {
return errors.New("invalid UUID format")
}
data = data[1 : len(data)-1]
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/json_test.go b/Godeps/_workspace/src/github.com/pborman/uuid/json_test.go
deleted file mode 100644
index b5eae0924..000000000
--- a/Godeps/_workspace/src/github.com/pborman/uuid/json_test.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2014 Google Inc. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package uuid
-
-import (
- "encoding/json"
- "reflect"
- "testing"
-)
-
-var testUUID = Parse("f47ac10b-58cc-0372-8567-0e02b2c3d479")
-
-func TestJSON(t *testing.T) {
- type S struct {
- ID1 UUID
- ID2 UUID
- }
- s1 := S{ID1: testUUID}
- data, err := json.Marshal(&s1)
- if err != nil {
- t.Fatal(err)
- }
- var s2 S
- if err := json.Unmarshal(data, &s2); err != nil {
- t.Fatal(err)
- }
- if !reflect.DeepEqual(&s1, &s2) {
- t.Errorf("got %#v, want %#v", s2, s1)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/node.go b/Godeps/_workspace/src/github.com/pborman/uuid/node.go
index dd0a8ac18..42d60da8f 100644
--- a/Godeps/_workspace/src/github.com/pborman/uuid/node.go
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/node.go
@@ -4,9 +4,13 @@
package uuid
-import "net"
+import (
+ "net"
+ "sync"
+)
var (
+ nodeMu sync.Mutex
interfaces []net.Interface // cached list of interfaces
ifname string // name of interface being used
nodeID []byte // hardware for version 1 UUIDs
@@ -16,6 +20,8 @@ var (
// derived. The interface "user" is returned if the NodeID was set by
// SetNodeID.
func NodeInterface() string {
+ defer nodeMu.Unlock()
+ nodeMu.Lock()
return ifname
}
@@ -26,6 +32,12 @@ func NodeInterface() string {
//
// SetNodeInterface never fails when name is "".
func SetNodeInterface(name string) bool {
+ defer nodeMu.Unlock()
+ nodeMu.Lock()
+ return setNodeInterface(name)
+}
+
+func setNodeInterface(name string) bool {
if interfaces == nil {
var err error
interfaces, err = net.Interfaces()
@@ -59,8 +71,10 @@ func SetNodeInterface(name string) bool {
// NodeID returns a slice of a copy of the current Node ID, setting the Node ID
// if not already set.
func NodeID() []byte {
+ defer nodeMu.Unlock()
+ nodeMu.Lock()
if nodeID == nil {
- SetNodeInterface("")
+ setNodeInterface("")
}
nid := make([]byte, 6)
copy(nid, nodeID)
@@ -71,6 +85,8 @@ func NodeID() []byte {
// of id are used. If id is less than 6 bytes then false is returned and the
// Node ID is not set.
func SetNodeID(id []byte) bool {
+ defer nodeMu.Unlock()
+ nodeMu.Lock()
if setNodeID(id) {
ifname = "user"
return true
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/seq_test.go b/Godeps/_workspace/src/github.com/pborman/uuid/seq_test.go
deleted file mode 100644
index 3b3d1430d..000000000
--- a/Godeps/_workspace/src/github.com/pborman/uuid/seq_test.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2014 Google Inc. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package uuid
-
-import (
- "flag"
- "runtime"
- "testing"
- "time"
-)
-
-// This test is only run when --regressions is passed on the go test line.
-var regressions = flag.Bool("regressions", false, "run uuid regression tests")
-
-// TestClockSeqRace tests for a particular race condition of returning two
-// identical Version1 UUIDs. The duration of 1 minute was chosen as the race
-// condition, before being fixed, nearly always occured in under 30 seconds.
-func TestClockSeqRace(t *testing.T) {
- if !*regressions {
- t.Skip("skipping regression tests")
- }
- duration := time.Minute
-
- done := make(chan struct{})
- defer close(done)
-
- ch := make(chan UUID, 10000)
- ncpu := runtime.NumCPU()
- switch ncpu {
- case 0, 1:
- // We can't run the test effectively.
- t.Skip("skipping race test, only one CPU detected")
- return
- default:
- runtime.GOMAXPROCS(ncpu)
- }
- for i := 0; i < ncpu; i++ {
- go func() {
- for {
- select {
- case <-done:
- return
- case ch <- NewUUID():
- }
- }
- }()
- }
-
- uuids := make(map[string]bool)
- cnt := 0
- start := time.Now()
- for u := range ch {
- s := u.String()
- if uuids[s] {
- t.Errorf("duplicate uuid after %d in %v: %s", cnt, time.Since(start), s)
- return
- }
- uuids[s] = true
- if time.Since(start) > duration {
- return
- }
- cnt++
- }
-}
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/sql.go b/Godeps/_workspace/src/github.com/pborman/uuid/sql.go
index 2d7679e2a..d015bfd13 100644
--- a/Godeps/_workspace/src/github.com/pborman/uuid/sql.go
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/sql.go
@@ -5,6 +5,7 @@
package uuid
import (
+ "database/sql/driver"
"errors"
"fmt"
)
@@ -15,6 +16,11 @@ import (
func (uuid *UUID) Scan(src interface{}) error {
switch src.(type) {
case string:
+ // if an empty UUID comes from a table, we return a null UUID
+ if src.(string) == "" {
+ return nil
+ }
+
// see uuid.Parse for required string format
parsed := Parse(src.(string))
@@ -24,17 +30,37 @@ func (uuid *UUID) Scan(src interface{}) error {
*uuid = parsed
case []byte:
- // assumes a simple slice of bytes, just check validity and store
- u := UUID(src.([]byte))
+ b := src.([]byte)
- if u.Variant() == Invalid {
- return errors.New("Scan: invalid UUID format")
+ // if an empty UUID comes from a table, we return a null UUID
+ if len(b) == 0 {
+ return nil
+ }
+
+ // assumes a simple slice of bytes if 16 bytes
+ // otherwise attempts to parse
+ if len(b) == 16 {
+ *uuid = UUID(b)
+ } else {
+ u := Parse(string(b))
+
+ if u == nil {
+ return errors.New("Scan: invalid UUID format")
+ }
+
+ *uuid = u
}
- *uuid = u
default:
return fmt.Errorf("Scan: unable to scan type %T into UUID", src)
}
return nil
}
+
+// Value implements sql.Valuer so that UUIDs can be written to databases
+// transparently. Currently, UUIDs map to strings. Please consult
+// database-specific driver documentation for matching types.
+func (uuid UUID) Value() (driver.Value, error) {
+ return uuid.String(), nil
+}
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/sql_test.go b/Godeps/_workspace/src/github.com/pborman/uuid/sql_test.go
deleted file mode 100644
index d643567ee..000000000
--- a/Godeps/_workspace/src/github.com/pborman/uuid/sql_test.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2015 Google Inc. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package uuid
-
-import (
- "strings"
- "testing"
-)
-
-func TestScan(t *testing.T) {
- var stringTest string = "f47ac10b-58cc-0372-8567-0e02b2c3d479"
- var byteTest []byte = Parse(stringTest)
- var badTypeTest int = 6
- var invalidTest string = "f47ac10b-58cc-0372-8567-0e02b2c3d4"
- var invalidByteTest []byte = Parse(invalidTest)
-
- var uuid UUID
- err := (&uuid).Scan(stringTest)
- if err != nil {
- t.Fatal(err)
- }
-
- err = (&uuid).Scan(byteTest)
- if err != nil {
- t.Fatal(err)
- }
-
- err = (&uuid).Scan(badTypeTest)
- if err == nil {
- t.Error("int correctly parsed and shouldn't have")
- }
- if !strings.Contains(err.Error(), "unable to scan type") {
- t.Error("attempting to parse an int returned an incorrect error message")
- }
-
- err = (&uuid).Scan(invalidTest)
- if err == nil {
- t.Error("invalid uuid was parsed without error")
- }
- if !strings.Contains(err.Error(), "invalid UUID") {
- t.Error("attempting to parse an invalid UUID returned an incorrect error message")
- }
-
- err = (&uuid).Scan(invalidByteTest)
- if err == nil {
- t.Error("invalid byte uuid was parsed without error")
- }
- if !strings.Contains(err.Error(), "invalid UUID") {
- t.Error("attempting to parse an invalid byte UUID returned an incorrect error message")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/time.go b/Godeps/_workspace/src/github.com/pborman/uuid/time.go
index 7ebc9bef1..eedf24219 100644
--- a/Godeps/_workspace/src/github.com/pborman/uuid/time.go
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/time.go
@@ -23,7 +23,7 @@ const (
)
var (
- mu sync.Mutex
+ timeMu sync.Mutex
lasttime uint64 // last time we returned
clock_seq uint16 // clock sequence for this run
@@ -43,8 +43,8 @@ func (t Time) UnixTime() (sec, nsec int64) {
// clock sequence as well as adjusting the clock sequence as needed. An error
// is returned if the current time cannot be determined.
func GetTime() (Time, uint16, error) {
- defer mu.Unlock()
- mu.Lock()
+ defer timeMu.Unlock()
+ timeMu.Lock()
return getTime()
}
@@ -75,8 +75,8 @@ func getTime() (Time, uint16, error) {
// ClockSequence, GetTime, or NewUUID. (section 4.2.1.1) sequence is generated
// for
func ClockSequence() int {
- defer mu.Unlock()
- mu.Lock()
+ defer timeMu.Unlock()
+ timeMu.Lock()
return clockSequence()
}
@@ -90,8 +90,8 @@ func clockSequence() int {
// SetClockSeq sets the clock sequence to the lower 14 bits of seq. Setting to
// -1 causes a new sequence to be generated.
func SetClockSequence(seq int) {
- defer mu.Unlock()
- mu.Lock()
+ defer timeMu.Unlock()
+ timeMu.Lock()
setClockSequence(seq)
}
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/util.go b/Godeps/_workspace/src/github.com/pborman/uuid/util.go
index de40b102c..fc8e052c7 100644
--- a/Godeps/_workspace/src/github.com/pborman/uuid/util.go
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/util.go
@@ -16,7 +16,7 @@ func randomBits(b []byte) {
}
// xvalues returns the value of a byte as a hexadecimal digit or 255.
-var xvalues = []byte{
+var xvalues = [256]byte{
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/uuid.go b/Godeps/_workspace/src/github.com/pborman/uuid/uuid.go
index 2920fae63..c4482cd87 100644
--- a/Godeps/_workspace/src/github.com/pborman/uuid/uuid.go
+++ b/Godeps/_workspace/src/github.com/pborman/uuid/uuid.go
@@ -7,6 +7,7 @@ package uuid
import (
"bytes"
"crypto/rand"
+ "encoding/hex"
"fmt"
"io"
"strings"
@@ -54,8 +55,8 @@ func Parse(s string) UUID {
if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
return nil
}
- uuid := make([]byte, 16)
- for i, x := range []int{
+ var uuid [16]byte
+ for i, x := range [16]int{
0, 2, 4, 6,
9, 11,
14, 16,
@@ -67,7 +68,7 @@ func Parse(s string) UUID {
uuid[i] = v
}
}
- return uuid
+ return uuid[:]
}
// Equal returns true if uuid1 and uuid2 are equal.
@@ -78,23 +79,36 @@ func Equal(uuid1, uuid2 UUID) bool {
// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
// , or "" if uuid is invalid.
func (uuid UUID) String() string {
- if uuid == nil || len(uuid) != 16 {
+ if len(uuid) != 16 {
return ""
}
- b := []byte(uuid)
- return fmt.Sprintf("%08x-%04x-%04x-%04x-%012x",
- b[:4], b[4:6], b[6:8], b[8:10], b[10:])
+ var buf [36]byte
+ encodeHex(buf[:], uuid)
+ return string(buf[:])
}
// URN returns the RFC 2141 URN form of uuid,
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, or "" if uuid is invalid.
func (uuid UUID) URN() string {
- if uuid == nil || len(uuid) != 16 {
+ if len(uuid) != 16 {
return ""
}
- b := []byte(uuid)
- return fmt.Sprintf("urn:uuid:%08x-%04x-%04x-%04x-%012x",
- b[:4], b[4:6], b[6:8], b[8:10], b[10:])
+ var buf [36 + 9]byte
+ copy(buf[:], "urn:uuid:")
+ encodeHex(buf[9:], uuid)
+ return string(buf[:])
+}
+
+func encodeHex(dst []byte, uuid UUID) {
+ hex.Encode(dst[:], uuid[:4])
+ dst[8] = '-'
+ hex.Encode(dst[9:13], uuid[4:6])
+ dst[13] = '-'
+ hex.Encode(dst[14:18], uuid[6:8])
+ dst[18] = '-'
+ hex.Encode(dst[19:23], uuid[8:10])
+ dst[23] = '-'
+ hex.Encode(dst[24:], uuid[10:])
}
// Variant returns the variant encoded in uuid. It returns Invalid if
@@ -113,10 +127,9 @@ func (uuid UUID) Variant() Variant {
default:
return Reserved
}
- panic("unreachable")
}
-// Version returns the verison of uuid. It returns false if uuid is not
+// Version returns the version of uuid. It returns false if uuid is not
// valid.
func (uuid UUID) Version() (Version, bool) {
if len(uuid) != 16 {
diff --git a/Godeps/_workspace/src/github.com/pborman/uuid/uuid_test.go b/Godeps/_workspace/src/github.com/pborman/uuid/uuid_test.go
deleted file mode 100644
index 417ebeb26..000000000
--- a/Godeps/_workspace/src/github.com/pborman/uuid/uuid_test.go
+++ /dev/null
@@ -1,390 +0,0 @@
-// Copyright 2011 Google Inc. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package uuid
-
-import (
- "bytes"
- "fmt"
- "os"
- "strings"
- "testing"
- "time"
-)
-
-type test struct {
- in string
- version Version
- variant Variant
- isuuid bool
-}
-
-var tests = []test{
- {"f47ac10b-58cc-0372-8567-0e02b2c3d479", 0, RFC4122, true},
- {"f47ac10b-58cc-1372-8567-0e02b2c3d479", 1, RFC4122, true},
- {"f47ac10b-58cc-2372-8567-0e02b2c3d479", 2, RFC4122, true},
- {"f47ac10b-58cc-3372-8567-0e02b2c3d479", 3, RFC4122, true},
- {"f47ac10b-58cc-4372-8567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-5372-8567-0e02b2c3d479", 5, RFC4122, true},
- {"f47ac10b-58cc-6372-8567-0e02b2c3d479", 6, RFC4122, true},
- {"f47ac10b-58cc-7372-8567-0e02b2c3d479", 7, RFC4122, true},
- {"f47ac10b-58cc-8372-8567-0e02b2c3d479", 8, RFC4122, true},
- {"f47ac10b-58cc-9372-8567-0e02b2c3d479", 9, RFC4122, true},
- {"f47ac10b-58cc-a372-8567-0e02b2c3d479", 10, RFC4122, true},
- {"f47ac10b-58cc-b372-8567-0e02b2c3d479", 11, RFC4122, true},
- {"f47ac10b-58cc-c372-8567-0e02b2c3d479", 12, RFC4122, true},
- {"f47ac10b-58cc-d372-8567-0e02b2c3d479", 13, RFC4122, true},
- {"f47ac10b-58cc-e372-8567-0e02b2c3d479", 14, RFC4122, true},
- {"f47ac10b-58cc-f372-8567-0e02b2c3d479", 15, RFC4122, true},
-
- {"urn:uuid:f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
- {"URN:UUID:f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-0567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-1567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-2567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-3567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-4567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-5567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-6567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-7567-0e02b2c3d479", 4, Reserved, true},
- {"f47ac10b-58cc-4372-8567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-4372-9567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-4372-a567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-4372-b567-0e02b2c3d479", 4, RFC4122, true},
- {"f47ac10b-58cc-4372-c567-0e02b2c3d479", 4, Microsoft, true},
- {"f47ac10b-58cc-4372-d567-0e02b2c3d479", 4, Microsoft, true},
- {"f47ac10b-58cc-4372-e567-0e02b2c3d479", 4, Future, true},
- {"f47ac10b-58cc-4372-f567-0e02b2c3d479", 4, Future, true},
-
- {"f47ac10b158cc-5372-a567-0e02b2c3d479", 0, Invalid, false},
- {"f47ac10b-58cc25372-a567-0e02b2c3d479", 0, Invalid, false},
- {"f47ac10b-58cc-53723a567-0e02b2c3d479", 0, Invalid, false},
- {"f47ac10b-58cc-5372-a56740e02b2c3d479", 0, Invalid, false},
- {"f47ac10b-58cc-5372-a567-0e02-2c3d479", 0, Invalid, false},
- {"g47ac10b-58cc-4372-a567-0e02b2c3d479", 0, Invalid, false},
-}
-
-var constants = []struct {
- c interface{}
- name string
-}{
- {Person, "Person"},
- {Group, "Group"},
- {Org, "Org"},
- {Invalid, "Invalid"},
- {RFC4122, "RFC4122"},
- {Reserved, "Reserved"},
- {Microsoft, "Microsoft"},
- {Future, "Future"},
- {Domain(17), "Domain17"},
- {Variant(42), "BadVariant42"},
-}
-
-func testTest(t *testing.T, in string, tt test) {
- uuid := Parse(in)
- if ok := (uuid != nil); ok != tt.isuuid {
- t.Errorf("Parse(%s) got %v expected %v\b", in, ok, tt.isuuid)
- }
- if uuid == nil {
- return
- }
-
- if v := uuid.Variant(); v != tt.variant {
- t.Errorf("Variant(%s) got %d expected %d\b", in, v, tt.variant)
- }
- if v, _ := uuid.Version(); v != tt.version {
- t.Errorf("Version(%s) got %d expected %d\b", in, v, tt.version)
- }
-}
-
-func TestUUID(t *testing.T) {
- for _, tt := range tests {
- testTest(t, tt.in, tt)
- testTest(t, strings.ToUpper(tt.in), tt)
- }
-}
-
-func TestConstants(t *testing.T) {
- for x, tt := range constants {
- v, ok := tt.c.(fmt.Stringer)
- if !ok {
- t.Errorf("%x: %v: not a stringer", x, v)
- } else if s := v.String(); s != tt.name {
- v, _ := tt.c.(int)
- t.Errorf("%x: Constant %T:%d gives %q, expected %q\n", x, tt.c, v, s, tt.name)
- }
- }
-}
-
-func TestRandomUUID(t *testing.T) {
- m := make(map[string]bool)
- for x := 1; x < 32; x++ {
- uuid := NewRandom()
- s := uuid.String()
- if m[s] {
- t.Errorf("NewRandom returned duplicated UUID %s\n", s)
- }
- m[s] = true
- if v, _ := uuid.Version(); v != 4 {
- t.Errorf("Random UUID of version %s\n", v)
- }
- if uuid.Variant() != RFC4122 {
- t.Errorf("Random UUID is variant %d\n", uuid.Variant())
- }
- }
-}
-
-func TestNew(t *testing.T) {
- m := make(map[string]bool)
- for x := 1; x < 32; x++ {
- s := New()
- if m[s] {
- t.Errorf("New returned duplicated UUID %s\n", s)
- }
- m[s] = true
- uuid := Parse(s)
- if uuid == nil {
- t.Errorf("New returned %q which does not decode\n", s)
- continue
- }
- if v, _ := uuid.Version(); v != 4 {
- t.Errorf("Random UUID of version %s\n", v)
- }
- if uuid.Variant() != RFC4122 {
- t.Errorf("Random UUID is variant %d\n", uuid.Variant())
- }
- }
-}
-
-func clockSeq(t *testing.T, uuid UUID) int {
- seq, ok := uuid.ClockSequence()
- if !ok {
- t.Fatalf("%s: invalid clock sequence\n", uuid)
- }
- return seq
-}
-
-func TestClockSeq(t *testing.T) {
- // Fake time.Now for this test to return a monotonically advancing time; restore it at end.
- defer func(orig func() time.Time) { timeNow = orig }(timeNow)
- monTime := time.Now()
- timeNow = func() time.Time {
- monTime = monTime.Add(1 * time.Second)
- return monTime
- }
-
- SetClockSequence(-1)
- uuid1 := NewUUID()
- uuid2 := NewUUID()
-
- if clockSeq(t, uuid1) != clockSeq(t, uuid2) {
- t.Errorf("clock sequence %d != %d\n", clockSeq(t, uuid1), clockSeq(t, uuid2))
- }
-
- SetClockSequence(-1)
- uuid2 = NewUUID()
-
- // Just on the very off chance we generated the same sequence
- // two times we try again.
- if clockSeq(t, uuid1) == clockSeq(t, uuid2) {
- SetClockSequence(-1)
- uuid2 = NewUUID()
- }
- if clockSeq(t, uuid1) == clockSeq(t, uuid2) {
- t.Errorf("Duplicate clock sequence %d\n", clockSeq(t, uuid1))
- }
-
- SetClockSequence(0x1234)
- uuid1 = NewUUID()
- if seq := clockSeq(t, uuid1); seq != 0x1234 {
- t.Errorf("%s: expected seq 0x1234 got 0x%04x\n", uuid1, seq)
- }
-}
-
-func TestCoding(t *testing.T) {
- text := "7d444840-9dc0-11d1-b245-5ffdce74fad2"
- urn := "urn:uuid:7d444840-9dc0-11d1-b245-5ffdce74fad2"
- data := UUID{
- 0x7d, 0x44, 0x48, 0x40,
- 0x9d, 0xc0,
- 0x11, 0xd1,
- 0xb2, 0x45,
- 0x5f, 0xfd, 0xce, 0x74, 0xfa, 0xd2,
- }
- if v := data.String(); v != text {
- t.Errorf("%x: encoded to %s, expected %s\n", data, v, text)
- }
- if v := data.URN(); v != urn {
- t.Errorf("%x: urn is %s, expected %s\n", data, v, urn)
- }
-
- uuid := Parse(text)
- if !Equal(uuid, data) {
- t.Errorf("%s: decoded to %s, expected %s\n", text, uuid, data)
- }
-}
-
-func TestVersion1(t *testing.T) {
- uuid1 := NewUUID()
- uuid2 := NewUUID()
-
- if Equal(uuid1, uuid2) {
- t.Errorf("%s:duplicate uuid\n", uuid1)
- }
- if v, _ := uuid1.Version(); v != 1 {
- t.Errorf("%s: version %s expected 1\n", uuid1, v)
- }
- if v, _ := uuid2.Version(); v != 1 {
- t.Errorf("%s: version %s expected 1\n", uuid2, v)
- }
- n1 := uuid1.NodeID()
- n2 := uuid2.NodeID()
- if !bytes.Equal(n1, n2) {
- t.Errorf("Different nodes %x != %x\n", n1, n2)
- }
- t1, ok := uuid1.Time()
- if !ok {
- t.Errorf("%s: invalid time\n", uuid1)
- }
- t2, ok := uuid2.Time()
- if !ok {
- t.Errorf("%s: invalid time\n", uuid2)
- }
- q1, ok := uuid1.ClockSequence()
- if !ok {
- t.Errorf("%s: invalid clock sequence\n", uuid1)
- }
- q2, ok := uuid2.ClockSequence()
- if !ok {
- t.Errorf("%s: invalid clock sequence", uuid2)
- }
-
- switch {
- case t1 == t2 && q1 == q2:
- t.Errorf("time stopped\n")
- case t1 > t2 && q1 == q2:
- t.Errorf("time reversed\n")
- case t1 < t2 && q1 != q2:
- t.Errorf("clock sequence chaned unexpectedly\n")
- }
-}
-
-func TestNodeAndTime(t *testing.T) {
- // Time is February 5, 1998 12:30:23.136364800 AM GMT
-
- uuid := Parse("7d444840-9dc0-11d1-b245-5ffdce74fad2")
- node := []byte{0x5f, 0xfd, 0xce, 0x74, 0xfa, 0xd2}
-
- ts, ok := uuid.Time()
- if ok {
- c := time.Unix(ts.UnixTime())
- want := time.Date(1998, 2, 5, 0, 30, 23, 136364800, time.UTC)
- if !c.Equal(want) {
- t.Errorf("Got time %v, want %v", c, want)
- }
- } else {
- t.Errorf("%s: bad time\n", uuid)
- }
- if !bytes.Equal(node, uuid.NodeID()) {
- t.Errorf("Expected node %v got %v\n", node, uuid.NodeID())
- }
-}
-
-func TestMD5(t *testing.T) {
- uuid := NewMD5(NameSpace_DNS, []byte("python.org")).String()
- want := "6fa459ea-ee8a-3ca4-894e-db77e160355e"
- if uuid != want {
- t.Errorf("MD5: got %q expected %q\n", uuid, want)
- }
-}
-
-func TestSHA1(t *testing.T) {
- uuid := NewSHA1(NameSpace_DNS, []byte("python.org")).String()
- want := "886313e1-3b8a-5372-9b90-0c9aee199e5d"
- if uuid != want {
- t.Errorf("SHA1: got %q expected %q\n", uuid, want)
- }
-}
-
-func TestNodeID(t *testing.T) {
- nid := []byte{1, 2, 3, 4, 5, 6}
- SetNodeInterface("")
- s := NodeInterface()
- if s == "" || s == "user" {
- t.Errorf("NodeInterface %q after SetInteface\n", s)
- }
- node1 := NodeID()
- if node1 == nil {
- t.Errorf("NodeID nil after SetNodeInterface\n", s)
- }
- SetNodeID(nid)
- s = NodeInterface()
- if s != "user" {
- t.Errorf("Expected NodeInterface %q got %q\n", "user", s)
- }
- node2 := NodeID()
- if node2 == nil {
- t.Errorf("NodeID nil after SetNodeID\n", s)
- }
- if bytes.Equal(node1, node2) {
- t.Errorf("NodeID not changed after SetNodeID\n", s)
- } else if !bytes.Equal(nid, node2) {
- t.Errorf("NodeID is %x, expected %x\n", node2, nid)
- }
-}
-
-func testDCE(t *testing.T, name string, uuid UUID, domain Domain, id uint32) {
- if uuid == nil {
- t.Errorf("%s failed\n", name)
- return
- }
- if v, _ := uuid.Version(); v != 2 {
- t.Errorf("%s: %s: expected version 2, got %s\n", name, uuid, v)
- return
- }
- if v, ok := uuid.Domain(); !ok || v != domain {
- if !ok {
- t.Errorf("%s: %d: Domain failed\n", name, uuid)
- } else {
- t.Errorf("%s: %s: expected domain %d, got %d\n", name, uuid, domain, v)
- }
- }
- if v, ok := uuid.Id(); !ok || v != id {
- if !ok {
- t.Errorf("%s: %d: Id failed\n", name, uuid)
- } else {
- t.Errorf("%s: %s: expected id %d, got %d\n", name, uuid, id, v)
- }
- }
-}
-
-func TestDCE(t *testing.T) {
- testDCE(t, "NewDCESecurity", NewDCESecurity(42, 12345678), 42, 12345678)
- testDCE(t, "NewDCEPerson", NewDCEPerson(), Person, uint32(os.Getuid()))
- testDCE(t, "NewDCEGroup", NewDCEGroup(), Group, uint32(os.Getgid()))
-}
-
-type badRand struct{}
-
-func (r badRand) Read(buf []byte) (int, error) {
- for i, _ := range buf {
- buf[i] = byte(i)
- }
- return len(buf), nil
-}
-
-func TestBadRand(t *testing.T) {
- SetRand(badRand{})
- uuid1 := New()
- uuid2 := New()
- if uuid1 != uuid2 {
- t.Errorf("execpted duplicates, got %q and %q\n", uuid1, uuid2)
- }
- SetRand(nil)
- uuid1 = New()
- uuid2 = New()
- if uuid1 == uuid2 {
- t.Errorf("unexecpted duplicates, got %q\n", uuid1)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/README.md b/Godeps/_workspace/src/github.com/peterh/liner/README.md
index 99027c6e2..9148b2492 100644
--- a/Godeps/_workspace/src/github.com/peterh/liner/README.md
+++ b/Godeps/_workspace/src/github.com/peterh/liner/README.md
@@ -21,8 +21,8 @@ Ctrl-A, Home | Move cursor to beginning of line
Ctrl-E, End | Move cursor to end of line
Ctrl-B, Left | Move cursor one character left
Ctrl-F, Right| Move cursor one character right
-Ctrl-Left | Move cursor to previous word
-Ctrl-Right | Move cursor to next word
+Ctrl-Left, Alt-B | Move cursor to previous word
+Ctrl-Right, Alt-F | Move cursor to next word
Ctrl-D, Del | (if line is *not* empty) Delete character under cursor
Ctrl-D | (if line *is* empty) End of File - usually quits application
Ctrl-C | Reset input (create new empty prompt)
@@ -48,13 +48,14 @@ package main
import (
"log"
"os"
+ "path/filepath"
"strings"
"github.com/peterh/liner"
)
var (
- history_fn = "/tmp/.liner_history"
+ history_fn = filepath.Join(os.TempDir(), ".liner_example_history")
names = []string{"john", "james", "mary", "nancy"}
)
@@ -62,6 +63,8 @@ func main() {
line := liner.NewLiner()
defer line.Close()
+ line.SetCtrlCAborts(true)
+
line.SetCompleter(func(line string) (c []string) {
for _, n := range names {
if strings.HasPrefix(n, strings.ToLower(line)) {
@@ -76,11 +79,13 @@ func main() {
f.Close()
}
- if name, err := line.Prompt("What is your name? "); err != nil {
- log.Print("Error reading line: ", err)
- } else {
+ if name, err := line.Prompt("What is your name? "); err == nil {
log.Print("Got: ", name)
line.AppendHistory(name)
+ } else if err == liner.ErrPromptAborted {
+ log.Print("Aborted")
+ } else {
+ log.Print("Error reading line: ", err)
}
if f, err := os.Create(history_fn); err != nil {
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/common.go b/Godeps/_workspace/src/github.com/peterh/liner/common.go
index f8753a195..b6162b624 100644
--- a/Godeps/_workspace/src/github.com/peterh/liner/common.go
+++ b/Godeps/_workspace/src/github.com/peterh/liner/common.go
@@ -7,7 +7,6 @@ package liner
import (
"bufio"
- "bytes"
"container/ring"
"errors"
"fmt"
@@ -29,6 +28,10 @@ type commonState struct {
ctrlCAborts bool
r *bufio.Reader
tabStyle TabStyle
+ multiLineMode bool
+ cursorRows int
+ maxRows int
+ shouldRestart ShouldRestart
}
// TabStyle is used to select how tab completions are displayed.
@@ -174,7 +177,7 @@ func (s *State) SetCompleter(f Completer) {
return
}
s.completer = func(line string, pos int) (string, []string, string) {
- return "", f(line[:pos]), line[pos:]
+ return "", f(string([]rune(line)[:pos])), string([]rune(line)[pos:])
}
}
@@ -207,13 +210,28 @@ func (s *State) SetCtrlCAborts(aborts bool) {
s.ctrlCAborts = aborts
}
+// SetMultiLineMode sets whether line is auto-wrapped. The default is false (single line).
+func (s *State) SetMultiLineMode(mlmode bool) {
+ s.multiLineMode = mlmode
+}
+
+// ShouldRestart is passed the error generated by readNext and returns true if
+// the the read should be restarted or false if the error should be returned.
+type ShouldRestart func(err error) bool
+
+// SetShouldRestart sets the restart function that Liner will call to determine
+// whether to retry the call to, or return the error returned by, readNext.
+func (s *State) SetShouldRestart(f ShouldRestart) {
+ s.shouldRestart = f
+}
+
func (s *State) promptUnsupported(p string) (string, error) {
- if !s.inputRedirected {
+ if !s.inputRedirected || !s.terminalSupported {
fmt.Print(p)
}
linebuf, _, err := s.r.ReadLine()
if err != nil {
return "", err
}
- return string(bytes.TrimSpace(linebuf)), nil
+ return string(linebuf), nil
}
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/input.go b/Godeps/_workspace/src/github.com/peterh/liner/input.go
index cf71d2bce..c80c85f69 100644
--- a/Godeps/_workspace/src/github.com/peterh/liner/input.go
+++ b/Godeps/_workspace/src/github.com/peterh/liner/input.go
@@ -44,14 +44,15 @@ func NewLiner() *State {
if m, err := TerminalMode(); err == nil {
s.origMode = *m.(*termios)
} else {
- s.terminalSupported = false
s.inputRedirected = true
}
if _, err := getMode(syscall.Stdout); err != 0 {
- s.terminalSupported = false
s.outputRedirected = true
}
- if s.terminalSupported {
+ if s.inputRedirected && s.outputRedirected {
+ s.terminalSupported = false
+ }
+ if s.terminalSupported && !s.inputRedirected && !s.outputRedirected {
mode := s.origMode
mode.Iflag &^= icrnl | inpck | istrip | ixon
mode.Cflag |= cs8
@@ -328,6 +329,12 @@ func (s *State) readNext() (interface{}, error) {
default:
return unknown, nil
}
+ case 'b':
+ s.pending = s.pending[:0] // escape code complete
+ return altB, nil
+ case 'f':
+ s.pending = s.pending[:0] // escape code complete
+ return altF, nil
case 'y':
s.pending = s.pending[:0] // escape code complete
return altY, nil
@@ -344,7 +351,7 @@ func (s *State) readNext() (interface{}, error) {
// Close returns the terminal to its previous mode
func (s *State) Close() error {
stopSignal(s.winch)
- if s.terminalSupported {
+ if !s.inputRedirected {
s.origMode.ApplyMode()
}
return nil
@@ -353,6 +360,8 @@ func (s *State) Close() error {
// TerminalSupported returns true if the current terminal supports
// line editing features, and false if liner will use the 'dumb'
// fallback for input.
+// Note that TerminalSupported does not check all factors that may
+// cause liner to not fully support the terminal (such as stdin redirection)
func TerminalSupported() bool {
bad := map[string]bool{"": true, "dumb": true, "cons25": true}
return !bad[strings.ToLower(os.Getenv("TERM"))]
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/input_test.go b/Godeps/_workspace/src/github.com/peterh/liner/input_test.go
deleted file mode 100644
index e515a4894..000000000
--- a/Godeps/_workspace/src/github.com/peterh/liner/input_test.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// +build !windows
-
-package liner
-
-import (
- "bufio"
- "bytes"
- "testing"
-)
-
-func (s *State) expectRune(t *testing.T, r rune) {
- item, err := s.readNext()
- if err != nil {
- t.Fatalf("Expected rune '%c', got error %s\n", r, err)
- }
- if v, ok := item.(rune); !ok {
- t.Fatalf("Expected rune '%c', got non-rune %v\n", r, v)
- } else {
- if v != r {
- t.Fatalf("Expected rune '%c', got rune '%c'\n", r, v)
- }
- }
-}
-
-func (s *State) expectAction(t *testing.T, a action) {
- item, err := s.readNext()
- if err != nil {
- t.Fatalf("Expected Action %d, got error %s\n", a, err)
- }
- if v, ok := item.(action); !ok {
- t.Fatalf("Expected Action %d, got non-Action %v\n", a, v)
- } else {
- if v != a {
- t.Fatalf("Expected Action %d, got Action %d\n", a, v)
- }
- }
-}
-
-func TestTypes(t *testing.T) {
- input := []byte{'A', 27, 'B', 27, 91, 68, 27, '[', '1', ';', '5', 'D', 'e'}
- var s State
- s.r = bufio.NewReader(bytes.NewBuffer(input))
-
- next := make(chan nexter)
- go func() {
- for {
- var n nexter
- n.r, _, n.err = s.r.ReadRune()
- next <- n
- }
- }()
- s.next = next
-
- s.expectRune(t, 'A')
- s.expectRune(t, 27)
- s.expectRune(t, 'B')
- s.expectAction(t, left)
- s.expectAction(t, wordLeft)
-
- s.expectRune(t, 'e')
-}
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/input_windows.go b/Godeps/_workspace/src/github.com/peterh/liner/input_windows.go
index cc98719c1..9dcc3115c 100644
--- a/Godeps/_workspace/src/github.com/peterh/liner/input_windows.go
+++ b/Godeps/_workspace/src/github.com/peterh/liner/input_windows.go
@@ -132,6 +132,8 @@ const (
vk_f10 = 0x79
vk_f11 = 0x7a
vk_f12 = 0x7b
+ bKey = 0x42
+ fKey = 0x46
yKey = 0x59
)
@@ -178,6 +180,12 @@ func (s *State) readNext() (interface{}, error) {
if ke.VirtualKeyCode == vk_tab && ke.ControlKeyState&modKeys == shiftPressed {
s.key = shiftTab
+ } else if ke.VirtualKeyCode == bKey && (ke.ControlKeyState&modKeys == leftAltPressed ||
+ ke.ControlKeyState&modKeys == rightAltPressed) {
+ s.key = altB
+ } else if ke.VirtualKeyCode == fKey && (ke.ControlKeyState&modKeys == leftAltPressed ||
+ ke.ControlKeyState&modKeys == rightAltPressed) {
+ s.key = altF
} else if ke.VirtualKeyCode == yKey && (ke.ControlKeyState&modKeys == leftAltPressed ||
ke.ControlKeyState&modKeys == rightAltPressed) {
s.key = altY
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/line.go b/Godeps/_workspace/src/github.com/peterh/liner/line.go
index a70fb59e5..95364ae56 100644
--- a/Godeps/_workspace/src/github.com/peterh/liner/line.go
+++ b/Godeps/_workspace/src/github.com/peterh/liner/line.go
@@ -37,6 +37,8 @@ const (
f10
f11
f12
+ altB
+ altF
altY
shiftTab
wordLeft
@@ -88,6 +90,14 @@ const (
)
func (s *State) refresh(prompt []rune, buf []rune, pos int) error {
+ if s.multiLineMode {
+ return s.refreshMultiLine(prompt, buf, pos)
+ } else {
+ return s.refreshSingleLine(prompt, buf, pos)
+ }
+}
+
+func (s *State) refreshSingleLine(prompt []rune, buf []rune, pos int) error {
s.cursorPos(0)
_, err := fmt.Print(string(prompt))
if err != nil {
@@ -143,6 +153,82 @@ func (s *State) refresh(prompt []rune, buf []rune, pos int) error {
return err
}
+func (s *State) refreshMultiLine(prompt []rune, buf []rune, pos int) error {
+ promptColumns := countMultiLineGlyphs(prompt, s.columns, 0)
+ totalColumns := countMultiLineGlyphs(buf, s.columns, promptColumns)
+ totalRows := (totalColumns + s.columns - 1) / s.columns
+ maxRows := s.maxRows
+ if totalRows > s.maxRows {
+ s.maxRows = totalRows
+ }
+ cursorRows := s.cursorRows
+ if cursorRows == 0 {
+ cursorRows = 1
+ }
+
+ /* First step: clear all the lines used before. To do so start by
+ * going to the last row. */
+ if maxRows-cursorRows > 0 {
+ s.moveDown(maxRows - cursorRows)
+ }
+
+ /* Now for every row clear it, go up. */
+ for i := 0; i < maxRows-1; i++ {
+ s.cursorPos(0)
+ s.eraseLine()
+ s.moveUp(1)
+ }
+
+ /* Clean the top line. */
+ s.cursorPos(0)
+ s.eraseLine()
+
+ /* Write the prompt and the current buffer content */
+ if _, err := fmt.Print(string(prompt)); err != nil {
+ return err
+ }
+ if _, err := fmt.Print(string(buf)); err != nil {
+ return err
+ }
+
+ /* If we are at the very end of the screen with our prompt, we need to
+ * emit a newline and move the prompt to the first column. */
+ cursorColumns := countMultiLineGlyphs(buf[:pos], s.columns, promptColumns)
+ if cursorColumns == totalColumns && totalColumns%s.columns == 0 {
+ s.emitNewLine()
+ s.cursorPos(0)
+ totalRows++
+ if totalRows > s.maxRows {
+ s.maxRows = totalRows
+ }
+ }
+
+ /* Move cursor to right position. */
+ cursorRows = (cursorColumns + s.columns) / s.columns
+ if s.cursorRows > 0 && totalRows-cursorRows > 0 {
+ s.moveUp(totalRows - cursorRows)
+ }
+ /* Set column. */
+ s.cursorPos(cursorColumns % s.columns)
+
+ s.cursorRows = cursorRows
+ return nil
+}
+
+func (s *State) resetMultiLine(prompt []rune, buf []rune, pos int) {
+ columns := countMultiLineGlyphs(prompt, s.columns, 0)
+ columns = countMultiLineGlyphs(buf[:pos], s.columns, columns)
+ columns += 2 // ^C
+ cursorRows := (columns + s.columns) / s.columns
+ if s.maxRows-cursorRows > 0 {
+ for i := 0; i < s.maxRows-cursorRows; i++ {
+ fmt.Println() // always moves the cursor down or scrolls the window up as needed
+ }
+ }
+ s.maxRows = 1
+ s.cursorRows = 0
+}
+
func longestCommonPrefix(strs []string) string {
if len(strs) == 0 {
return ""
@@ -179,6 +265,29 @@ func (s *State) circularTabs(items []string) func(tabDirection) (string, error)
}
}
+func calculateColumns(screenWidth int, items []string) (numColumns, numRows, maxWidth int) {
+ for _, item := range items {
+ if len(item) >= screenWidth {
+ return 1, len(items), screenWidth - 1
+ }
+ if len(item) >= maxWidth {
+ maxWidth = len(item) + 1
+ }
+ }
+
+ numColumns = screenWidth / maxWidth
+ numRows = len(items) / numColumns
+ if len(items)%numColumns > 0 {
+ numRows++
+ }
+
+ if len(items) <= numColumns {
+ maxWidth = 0
+ }
+
+ return
+}
+
func (s *State) printedTabs(items []string) func(tabDirection) (string, error) {
numTabs := 1
prefix := longestCommonPrefix(items)
@@ -190,6 +299,7 @@ func (s *State) printedTabs(items []string) func(tabDirection) (string, error) {
if numTabs == 2 {
if len(items) > 100 {
fmt.Printf("\nDisplay all %d possibilities? (y or n) ", len(items))
+ prompt:
for {
next, err := s.readNext()
if err != nil {
@@ -197,36 +307,26 @@ func (s *State) printedTabs(items []string) func(tabDirection) (string, error) {
}
if key, ok := next.(rune); ok {
- if unicode.ToLower(key) == 'n' {
+ switch key {
+ case 'n', 'N':
return prefix, nil
- } else if unicode.ToLower(key) == 'y' {
- break
+ case 'y', 'Y':
+ break prompt
+ case ctrlC, ctrlD, cr, lf:
+ s.restartPrompt()
}
}
}
}
fmt.Println("")
- maxWidth := 0
- for _, item := range items {
- if len(item) >= maxWidth {
- maxWidth = len(item) + 1
- }
- }
- numColumns := s.columns / maxWidth
- numRows := len(items) / numColumns
- if len(items)%numColumns > 0 {
- numRows++
- }
+ numColumns, numRows, maxWidth := calculateColumns(s.columns, items)
- if len(items) <= numColumns {
- maxWidth = 0
- }
for i := 0; i < numRows; i++ {
for j := 0; j < numColumns*numRows; j += numRows {
if i+j < len(items) {
if maxWidth > 0 {
- fmt.Printf("%-*s", maxWidth, items[i+j])
+ fmt.Printf("%-*.[1]*s", maxWidth, items[i+j])
} else {
fmt.Printf("%v ", items[i+j])
}
@@ -460,26 +560,20 @@ func (s *State) yank(p []rune, text []rune, pos int) ([]rune, int, interface{},
return line, pos, esc, nil
}
-// Prompt displays p, and then waits for user input. Prompt allows line editing
-// if the terminal supports it.
+// Prompt displays p and returns a line of user input, not including a trailing
+// newline character. An io.EOF error is returned if the user signals end-of-file
+// by pressing Ctrl-D. Prompt allows line editing if the terminal supports it.
func (s *State) Prompt(prompt string) (string, error) {
- if s.inputRedirected {
+ if s.inputRedirected || !s.terminalSupported {
return s.promptUnsupported(prompt)
}
if s.outputRedirected {
return "", ErrNotTerminalOutput
}
- if !s.terminalSupported {
- return s.promptUnsupported(prompt)
- }
s.historyMutex.RLock()
defer s.historyMutex.RUnlock()
- s.startPrompt()
- defer s.stopPrompt()
- s.getColumns()
-
fmt.Print(prompt)
p := []rune(prompt)
var line []rune
@@ -489,11 +583,21 @@ func (s *State) Prompt(prompt string) (string, error) {
historyPos := len(prefixHistory)
historyAction := false // used to mark history related actions
killAction := 0 // used to mark kill related actions
+
+ defer s.stopPrompt()
+
+restart:
+ s.startPrompt()
+ s.getColumns()
+
mainLoop:
for {
next, err := s.readNext()
haveNext:
if err != nil {
+ if s.shouldRestart != nil && s.shouldRestart(err) {
+ goto restart
+ }
return "", err
}
@@ -502,6 +606,9 @@ mainLoop:
case rune:
switch v {
case cr, lf:
+ if s.multiLineMode {
+ s.resetMultiLine(p, line, pos)
+ }
fmt.Println()
break mainLoop
case ctrlA: // Start of line
@@ -603,6 +710,9 @@ mainLoop:
s.refresh(p, line, pos)
case ctrlC: // reset
fmt.Println("^C")
+ if s.multiLineMode {
+ s.resetMultiLine(p, line, pos)
+ }
if s.ctrlCAborts {
return "", ErrPromptAborted
}
@@ -687,7 +797,7 @@ mainLoop:
case 0, 28, 29, 30, 31:
fmt.Print(beep)
default:
- if pos == len(line) && len(p)+len(line) < s.columns-1 {
+ if pos == len(line) && !s.multiLineMode && countGlyphs(p)+countGlyphs(line) < s.columns-1 {
line = append(line, v)
fmt.Printf("%c", v)
pos++
@@ -712,11 +822,21 @@ mainLoop:
} else {
fmt.Print(beep)
}
- case wordLeft:
+ case wordLeft, altB:
if pos > 0 {
+ var spaceHere, spaceLeft, leftKnown bool
for {
pos--
- if pos == 0 || unicode.IsSpace(line[pos-1]) {
+ if pos == 0 {
+ break
+ }
+ if leftKnown {
+ spaceHere = spaceLeft
+ } else {
+ spaceHere = unicode.IsSpace(line[pos])
+ }
+ spaceLeft, leftKnown = unicode.IsSpace(line[pos-1]), true
+ if !spaceHere && spaceLeft {
break
}
}
@@ -729,11 +849,21 @@ mainLoop:
} else {
fmt.Print(beep)
}
- case wordRight:
+ case wordRight, altF:
if pos < len(line) {
+ var spaceHere, spaceLeft, hereKnown bool
for {
pos++
- if pos == len(line) || unicode.IsSpace(line[pos]) {
+ if pos == len(line) {
+ break
+ }
+ if hereKnown {
+ spaceLeft = spaceHere
+ } else {
+ spaceLeft = unicode.IsSpace(line[pos-1])
+ }
+ spaceHere, hereKnown = unicode.IsSpace(line[pos]), true
+ if spaceHere && !spaceLeft {
break
}
}
@@ -769,6 +899,19 @@ mainLoop:
pos = 0
case end: // End of line
pos = len(line)
+ case winch: // Window change
+ if s.multiLineMode {
+ if s.maxRows-s.cursorRows > 0 {
+ s.moveDown(s.maxRows - s.cursorRows)
+ }
+ for i := 0; i < s.maxRows-1; i++ {
+ s.cursorPos(0)
+ s.eraseLine()
+ s.moveUp(1)
+ }
+ s.maxRows = 1
+ s.cursorRows = 1
+ }
}
s.refresh(p, line, pos)
}
@@ -786,18 +929,20 @@ mainLoop:
// PasswordPrompt displays p, and then waits for user input. The input typed by
// the user is not displayed in the terminal.
func (s *State) PasswordPrompt(prompt string) (string, error) {
+ if !s.terminalSupported {
+ return "", errors.New("liner: function not supported in this terminal")
+ }
if s.inputRedirected {
return s.promptUnsupported(prompt)
}
if s.outputRedirected {
return "", ErrNotTerminalOutput
}
- if !s.terminalSupported {
- return "", errors.New("liner: function not supported in this terminal")
- }
- s.startPrompt()
defer s.stopPrompt()
+
+restart:
+ s.startPrompt()
s.getColumns()
fmt.Print(prompt)
@@ -809,6 +954,9 @@ mainLoop:
for {
next, err := s.readNext()
if err != nil {
+ if s.shouldRestart != nil && s.shouldRestart(err) {
+ goto restart
+ }
return "", err
}
@@ -816,6 +964,9 @@ mainLoop:
case rune:
switch v {
case cr, lf:
+ if s.multiLineMode {
+ s.resetMultiLine(p, line, pos)
+ }
fmt.Println()
break mainLoop
case ctrlD: // del
@@ -840,6 +991,9 @@ mainLoop:
}
case ctrlC:
fmt.Println("^C")
+ if s.multiLineMode {
+ s.resetMultiLine(p, line, pos)
+ }
if s.ctrlCAborts {
return "", ErrPromptAborted
}
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/line_test.go b/Godeps/_workspace/src/github.com/peterh/liner/line_test.go
deleted file mode 100644
index 727da6ce7..000000000
--- a/Godeps/_workspace/src/github.com/peterh/liner/line_test.go
+++ /dev/null
@@ -1,90 +0,0 @@
-package liner
-
-import (
- "bytes"
- "strings"
- "testing"
-)
-
-func TestAppend(t *testing.T) {
- var s State
- s.AppendHistory("foo")
- s.AppendHistory("bar")
-
- var out bytes.Buffer
- num, err := s.WriteHistory(&out)
- if err != nil {
- t.Fatal("Unexpected error writing history", err)
- }
- if num != 2 {
- t.Fatalf("Expected 2 history entries, got %d", num)
- }
-
- s.AppendHistory("baz")
- num, err = s.WriteHistory(&out)
- if err != nil {
- t.Fatal("Unexpected error writing history", err)
- }
- if num != 3 {
- t.Fatalf("Expected 3 history entries, got %d", num)
- }
-
- s.AppendHistory("baz")
- num, err = s.WriteHistory(&out)
- if err != nil {
- t.Fatal("Unexpected error writing history", err)
- }
- if num != 3 {
- t.Fatalf("Expected 3 history entries after duplicate append, got %d", num)
- }
-
- s.AppendHistory("baz")
-
-}
-
-func TestHistory(t *testing.T) {
- input := `foo
-bar
-baz
-quux
-dingle`
-
- var s State
- num, err := s.ReadHistory(strings.NewReader(input))
- if err != nil {
- t.Fatal("Unexpected error reading history", err)
- }
- if num != 5 {
- t.Fatal("Wrong number of history entries read")
- }
-
- var out bytes.Buffer
- num, err = s.WriteHistory(&out)
- if err != nil {
- t.Fatal("Unexpected error writing history", err)
- }
- if num != 5 {
- t.Fatal("Wrong number of history entries written")
- }
- if strings.TrimSpace(out.String()) != input {
- t.Fatal("Round-trip failure")
- }
-
- // Test reading with a trailing newline present
- var s2 State
- num, err = s2.ReadHistory(&out)
- if err != nil {
- t.Fatal("Unexpected error reading history the 2nd time", err)
- }
- if num != 5 {
- t.Fatal("Wrong number of history entries read the 2nd time")
- }
-
- num, err = s.ReadHistory(strings.NewReader(input + "\n\xff"))
- if err == nil {
- t.Fatal("Unexpected success reading corrupted history", err)
- }
- if num != 5 {
- t.Fatal("Wrong number of history entries read the 3rd time")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/output.go b/Godeps/_workspace/src/github.com/peterh/liner/output.go
index e91f4ea81..049273b53 100644
--- a/Godeps/_workspace/src/github.com/peterh/liner/output.go
+++ b/Godeps/_workspace/src/github.com/peterh/liner/output.go
@@ -31,6 +31,18 @@ func (s *State) eraseScreen() {
fmt.Print("\x1b[H\x1b[2J")
}
+func (s *State) moveUp(lines int) {
+ fmt.Printf("\x1b[%dA", lines)
+}
+
+func (s *State) moveDown(lines int) {
+ fmt.Printf("\x1b[%dB", lines)
+}
+
+func (s *State) emitNewLine() {
+ fmt.Print("\n")
+}
+
type winSize struct {
row, col uint16
xpixel, ypixel uint16
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/output_windows.go b/Godeps/_workspace/src/github.com/peterh/liner/output_windows.go
index 27ae55a14..45cd978c9 100644
--- a/Godeps/_workspace/src/github.com/peterh/liner/output_windows.go
+++ b/Godeps/_workspace/src/github.com/peterh/liner/output_windows.go
@@ -47,6 +47,24 @@ func (s *State) eraseScreen() {
procSetConsoleCursorPosition.Call(uintptr(s.hOut), 0)
}
+func (s *State) moveUp(lines int) {
+ var sbi consoleScreenBufferInfo
+ procGetConsoleScreenBufferInfo.Call(uintptr(s.hOut), uintptr(unsafe.Pointer(&sbi)))
+ procSetConsoleCursorPosition.Call(uintptr(s.hOut),
+ uintptr(int(sbi.dwCursorPosition.x)&0xFFFF|(int(sbi.dwCursorPosition.y)-lines)<<16))
+}
+
+func (s *State) moveDown(lines int) {
+ var sbi consoleScreenBufferInfo
+ procGetConsoleScreenBufferInfo.Call(uintptr(s.hOut), uintptr(unsafe.Pointer(&sbi)))
+ procSetConsoleCursorPosition.Call(uintptr(s.hOut),
+ uintptr(int(sbi.dwCursorPosition.x)&0xFFFF|(int(sbi.dwCursorPosition.y)+lines)<<16))
+}
+
+func (s *State) emitNewLine() {
+ // windows doesn't need to omit a new line
+}
+
func (s *State) getColumns() {
var sbi consoleScreenBufferInfo
procGetConsoleScreenBufferInfo.Call(uintptr(s.hOut), uintptr(unsafe.Pointer(&sbi)))
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/prefix_test.go b/Godeps/_workspace/src/github.com/peterh/liner/prefix_test.go
deleted file mode 100644
index c826d6c3b..000000000
--- a/Godeps/_workspace/src/github.com/peterh/liner/prefix_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// +build windows linux darwin openbsd freebsd netbsd
-
-package liner
-
-import "testing"
-
-type testItem struct {
- list []string
- prefix string
-}
-
-func TestPrefix(t *testing.T) {
- list := []testItem{
- {[]string{"food", "foot"}, "foo"},
- {[]string{"foo", "foot"}, "foo"},
- {[]string{"food", "foo"}, "foo"},
- {[]string{"food", "foe", "foot"}, "fo"},
- {[]string{"food", "foot", "barbeque"}, ""},
- {[]string{"cafeteria", "café"}, "caf"},
- {[]string{"cafe", "café"}, "caf"},
- {[]string{"cafè", "café"}, "caf"},
- {[]string{"cafés", "café"}, "café"},
- {[]string{"áéíóú", "áéíóú"}, "áéíóú"},
- {[]string{"éclairs", "éclairs"}, "éclairs"},
- {[]string{"éclairs are the best", "éclairs are great", "éclairs"}, "éclairs"},
- {[]string{"éclair", "éclairs"}, "éclair"},
- {[]string{"éclairs", "éclair"}, "éclair"},
- {[]string{"éclair", "élan"}, "é"},
- }
-
- for _, test := range list {
- lcp := longestCommonPrefix(test.list)
- if lcp != test.prefix {
- t.Errorf("%s != %s for %+v", lcp, test.prefix, test.list)
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/race_test.go b/Godeps/_workspace/src/github.com/peterh/liner/race_test.go
deleted file mode 100644
index e320849c7..000000000
--- a/Godeps/_workspace/src/github.com/peterh/liner/race_test.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// +build race
-
-package liner
-
-import (
- "io/ioutil"
- "os"
- "sync"
- "testing"
-)
-
-func TestWriteHistory(t *testing.T) {
- oldout := os.Stdout
- defer func() { os.Stdout = oldout }()
- oldin := os.Stdout
- defer func() { os.Stdin = oldin }()
-
- newinr, newinw, err := os.Pipe()
- if err != nil {
- t.Fatal(err)
- }
- os.Stdin = newinr
- newoutr, newoutw, err := os.Pipe()
- if err != nil {
- t.Fatal(err)
- }
- defer newoutr.Close()
- os.Stdout = newoutw
-
- var wait sync.WaitGroup
- wait.Add(1)
- s := NewLiner()
- go func() {
- s.AppendHistory("foo")
- s.AppendHistory("bar")
- s.Prompt("")
- wait.Done()
- }()
-
- s.WriteHistory(ioutil.Discard)
-
- newinw.Close()
- wait.Wait()
-}
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/width.go b/Godeps/_workspace/src/github.com/peterh/liner/width.go
index 02cfb5e1b..d8984aae9 100644
--- a/Godeps/_workspace/src/github.com/peterh/liner/width.go
+++ b/Godeps/_workspace/src/github.com/peterh/liner/width.go
@@ -13,10 +13,42 @@ var zeroWidth = []*unicode.RangeTable{
unicode.Cf,
}
+var doubleWidth = []*unicode.RangeTable{
+ unicode.Han,
+ unicode.Hangul,
+ unicode.Hiragana,
+ unicode.Katakana,
+}
+
+// countGlyphs considers zero-width characters to be zero glyphs wide,
+// and members of Chinese, Japanese, and Korean scripts to be 2 glyphs wide.
func countGlyphs(s []rune) int {
n := 0
for _, r := range s {
- if !unicode.IsOneOf(zeroWidth, r) {
+ switch {
+ case unicode.IsOneOf(zeroWidth, r):
+ case unicode.IsOneOf(doubleWidth, r):
+ n += 2
+ default:
+ n++
+ }
+ }
+ return n
+}
+
+func countMultiLineGlyphs(s []rune, columns int, start int) int {
+ n := start
+ for _, r := range s {
+ switch {
+ case unicode.IsOneOf(zeroWidth, r):
+ case unicode.IsOneOf(doubleWidth, r):
+ n += 2
+ // no room for a 2-glyphs-wide char in the ending
+ // so skip a column and display it at the beginning
+ if n%columns == 1 {
+ n++
+ }
+ default:
n++
}
}
diff --git a/Godeps/_workspace/src/github.com/peterh/liner/width_test.go b/Godeps/_workspace/src/github.com/peterh/liner/width_test.go
deleted file mode 100644
index 134920a4b..000000000
--- a/Godeps/_workspace/src/github.com/peterh/liner/width_test.go
+++ /dev/null
@@ -1,87 +0,0 @@
-package liner
-
-import (
- "strconv"
- "testing"
-)
-
-func accent(in []rune) []rune {
- var out []rune
- for _, r := range in {
- out = append(out, r)
- out = append(out, '\u0301')
- }
- return out
-}
-
-var testString = []rune("query")
-
-func TestCountGlyphs(t *testing.T) {
- count := countGlyphs(testString)
- if count != len(testString) {
- t.Errorf("ASCII count incorrect. %d != %d", count, len(testString))
- }
- count = countGlyphs(accent(testString))
- if count != len(testString) {
- t.Errorf("Accent count incorrect. %d != %d", count, len(testString))
- }
-}
-
-func compare(a, b []rune, name string, t *testing.T) {
- if len(a) != len(b) {
- t.Errorf(`"%s" != "%s" in %s"`, string(a), string(b), name)
- return
- }
- for i := range a {
- if a[i] != b[i] {
- t.Errorf(`"%s" != "%s" in %s"`, string(a), string(b), name)
- return
- }
- }
-}
-
-func TestPrefixGlyphs(t *testing.T) {
- for i := 0; i <= len(testString); i++ {
- iter := strconv.Itoa(i)
- out := getPrefixGlyphs(testString, i)
- compare(out, testString[:i], "ascii prefix "+iter, t)
- out = getPrefixGlyphs(accent(testString), i)
- compare(out, accent(testString[:i]), "accent prefix "+iter, t)
- }
- out := getPrefixGlyphs(testString, 999)
- compare(out, testString, "ascii prefix overflow", t)
- out = getPrefixGlyphs(accent(testString), 999)
- compare(out, accent(testString), "accent prefix overflow", t)
-
- out = getPrefixGlyphs(testString, -3)
- if len(out) != 0 {
- t.Error("ascii prefix negative")
- }
- out = getPrefixGlyphs(accent(testString), -3)
- if len(out) != 0 {
- t.Error("accent prefix negative")
- }
-}
-
-func TestSuffixGlyphs(t *testing.T) {
- for i := 0; i <= len(testString); i++ {
- iter := strconv.Itoa(i)
- out := getSuffixGlyphs(testString, i)
- compare(out, testString[len(testString)-i:], "ascii suffix "+iter, t)
- out = getSuffixGlyphs(accent(testString), i)
- compare(out, accent(testString[len(testString)-i:]), "accent suffix "+iter, t)
- }
- out := getSuffixGlyphs(testString, 999)
- compare(out, testString, "ascii suffix overflow", t)
- out = getSuffixGlyphs(accent(testString), 999)
- compare(out, accent(testString), "accent suffix overflow", t)
-
- out = getSuffixGlyphs(testString, -3)
- if len(out) != 0 {
- t.Error("ascii suffix negative")
- }
- out = getSuffixGlyphs(accent(testString), -3)
- if len(out) != 0 {
- t.Error("accent suffix negative")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/.travis.yml b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/.travis.yml
new file mode 100644
index 000000000..20aa5d042
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/.travis.yml
@@ -0,0 +1,14 @@
+language: go
+
+go:
+ - 1.2
+ - 1.3
+ - 1.4
+ - 1.5
+
+script:
+ - ./validate.sh
+
+# this should give us faster builds according to
+# http://docs.travis-ci.com/user/migrating-from-legacy/
+sudo: false
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/README.md b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/README.md
index e0091a4bd..66ba9cab5 100644
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/README.md
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/README.md
@@ -1,7 +1,9 @@
go-metrics
==========
-Go port of Coda Hale's Metrics library: <https://github.com/codahale/metrics>.
+![travis build status](https://travis-ci.org/rcrowley/go-metrics.svg?branch=master)
+
+Go port of Coda Hale's Metrics library: <https://github.com/dropwizard/metrics>.
Documentation: <http://godoc.org/github.com/rcrowley/go-metrics>.
@@ -37,7 +39,7 @@ t.Update(47)
Periodically log every metric in human-readable form to standard error:
```go
-go metrics.Log(metrics.DefaultRegistry, 60e9, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))
+go metrics.Log(metrics.DefaultRegistry, 5 * time.Second, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))
```
Periodically log every metric in slightly-more-parseable form to syslog:
@@ -47,15 +49,23 @@ w, _ := syslog.Dial("unixgram", "/dev/log", syslog.LOG_INFO, "metrics")
go metrics.Syslog(metrics.DefaultRegistry, 60e9, w)
```
-Periodically emit every metric to Graphite:
+Periodically emit every metric to Graphite using the [Graphite client](https://github.com/cyberdelia/go-metrics-graphite):
```go
+
+import "github.com/cyberdelia/go-metrics-graphite"
+
addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:2003")
-go metrics.Graphite(metrics.DefaultRegistry, 10e9, "metrics", addr)
+go graphite.Graphite(metrics.DefaultRegistry, 10e9, "metrics", addr)
```
Periodically emit every metric into InfluxDB:
+**NOTE:** this has been pulled out of the library due to constant fluctuations
+in the InfluxDB API. In fact, all client libraries are on their way out. see
+issues [#121](https://github.com/rcrowley/go-metrics/issues/121) and
+[#124](https://github.com/rcrowley/go-metrics/issues/124) for progress and details.
+
```go
import "github.com/rcrowley/go-metrics/influxdb"
@@ -67,17 +77,20 @@ go influxdb.Influxdb(metrics.DefaultRegistry, 10e9, &influxdb.Config{
})
```
-Periodically upload every metric to Librato:
+Periodically upload every metric to Librato using the [Librato client](https://github.com/mihasya/go-metrics-librato):
+
+**Note**: the client included with this repository under the `librato` package
+has been deprecated and moved to the repository linked above.
```go
-import "github.com/rcrowley/go-metrics/librato"
+import "github.com/mihasya/go-metrics-librato"
go librato.Librato(metrics.DefaultRegistry,
10e9, // interval
"example@example.com", // account owner email address
"token", // Librato API token
"hostname", // source
- []float64{0.95}, // precentiles to send
+ []float64{0.95}, // percentiles to send
time.Millisecond, // time unit
)
```
@@ -90,6 +103,19 @@ import "github.com/rcrowley/go-metrics/stathat"
go stathat.Stathat(metrics.DefaultRegistry, 10e9, "example@example.com")
```
+Maintain all metrics along with expvars at `/debug/metrics`:
+
+This uses the same mechanism as [the official expvar](http://golang.org/pkg/expvar/)
+but exposed under `/debug/metrics`, which shows a json representation of all your usual expvars
+as well as all your go-metrics.
+
+
+```go
+import "github.com/rcrowley/go-metrics/exp"
+
+exp.Exp(metrics.DefaultRegistry)
+```
+
Installation
------------
@@ -102,3 +128,12 @@ StatHat support additionally requires their Go client:
```sh
go get github.com/stathat/go
```
+
+Publishing Metrics
+------------------
+
+Clients are available for the following destinations:
+
+* Librato - [https://github.com/mihasya/go-metrics-librato](https://github.com/mihasya/go-metrics-librato)
+* Graphite - [https://github.com/cyberdelia/go-metrics-graphite](https://github.com/cyberdelia/go-metrics-graphite)
+* InfluxDB - [https://github.com/vrischmann/go-metrics-influxdb](https://github.com/vrischmann/go-metrics-influxdb)
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/counter_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/counter_test.go
deleted file mode 100644
index dfb03b4e8..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/counter_test.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package metrics
-
-import "testing"
-
-func BenchmarkCounter(b *testing.B) {
- c := NewCounter()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- c.Inc(1)
- }
-}
-
-func TestCounterClear(t *testing.T) {
- c := NewCounter()
- c.Inc(1)
- c.Clear()
- if count := c.Count(); 0 != count {
- t.Errorf("c.Count(): 0 != %v\n", count)
- }
-}
-
-func TestCounterDec1(t *testing.T) {
- c := NewCounter()
- c.Dec(1)
- if count := c.Count(); -1 != count {
- t.Errorf("c.Count(): -1 != %v\n", count)
- }
-}
-
-func TestCounterDec2(t *testing.T) {
- c := NewCounter()
- c.Dec(2)
- if count := c.Count(); -2 != count {
- t.Errorf("c.Count(): -2 != %v\n", count)
- }
-}
-
-func TestCounterInc1(t *testing.T) {
- c := NewCounter()
- c.Inc(1)
- if count := c.Count(); 1 != count {
- t.Errorf("c.Count(): 1 != %v\n", count)
- }
-}
-
-func TestCounterInc2(t *testing.T) {
- c := NewCounter()
- c.Inc(2)
- if count := c.Count(); 2 != count {
- t.Errorf("c.Count(): 2 != %v\n", count)
- }
-}
-
-func TestCounterSnapshot(t *testing.T) {
- c := NewCounter()
- c.Inc(1)
- snapshot := c.Snapshot()
- c.Inc(1)
- if count := snapshot.Count(); 1 != count {
- t.Errorf("c.Count(): 1 != %v\n", count)
- }
-}
-
-func TestCounterZero(t *testing.T) {
- c := NewCounter()
- if count := c.Count(); 0 != count {
- t.Errorf("c.Count(): 0 != %v\n", count)
- }
-}
-
-func TestGetOrRegisterCounter(t *testing.T) {
- r := NewRegistry()
- NewRegisteredCounter("foo", r).Inc(47)
- if c := GetOrRegisterCounter("foo", r); 47 != c.Count() {
- t.Fatal(c)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/debug_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/debug_test.go
deleted file mode 100644
index 07eb86784..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/debug_test.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package metrics
-
-import (
- "runtime"
- "runtime/debug"
- "testing"
- "time"
-)
-
-func BenchmarkDebugGCStats(b *testing.B) {
- r := NewRegistry()
- RegisterDebugGCStats(r)
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- CaptureDebugGCStatsOnce(r)
- }
-}
-
-func TestDebugGCStatsBlocking(t *testing.T) {
- if g := runtime.GOMAXPROCS(0); g < 2 {
- t.Skipf("skipping TestDebugGCMemStatsBlocking with GOMAXPROCS=%d\n", g)
- return
- }
- ch := make(chan int)
- go testDebugGCStatsBlocking(ch)
- var gcStats debug.GCStats
- t0 := time.Now()
- debug.ReadGCStats(&gcStats)
- t1 := time.Now()
- t.Log("i++ during debug.ReadGCStats:", <-ch)
- go testDebugGCStatsBlocking(ch)
- d := t1.Sub(t0)
- t.Log(d)
- time.Sleep(d)
- t.Log("i++ during time.Sleep:", <-ch)
-}
-
-func testDebugGCStatsBlocking(ch chan int) {
- i := 0
- for {
- select {
- case ch <- i:
- return
- default:
- i++
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma.go
index 7c152a174..694a1d033 100644
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma.go
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma.go
@@ -77,7 +77,7 @@ func (NilEWMA) Update(n int64) {}
// of uncounted events and processes them on each tick. It uses the
// sync/atomic package to manage uncounted events.
type StandardEWMA struct {
- uncounted int64 // /!\ this should be the first member to ensure 64-bit alignment
+ uncounted int64 // /!\ this should be the first member to ensure 64-bit alignment
alpha float64
rate float64
init bool
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma_test.go
deleted file mode 100644
index 0430fbd24..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/ewma_test.go
+++ /dev/null
@@ -1,225 +0,0 @@
-package metrics
-
-import "testing"
-
-func BenchmarkEWMA(b *testing.B) {
- a := NewEWMA1()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- a.Update(1)
- a.Tick()
- }
-}
-
-func TestEWMA1(t *testing.T) {
- a := NewEWMA1()
- a.Update(3)
- a.Tick()
- if rate := a.Rate(); 0.6 != rate {
- t.Errorf("initial a.Rate(): 0.6 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.22072766470286553 != rate {
- t.Errorf("1 minute a.Rate(): 0.22072766470286553 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.08120116994196772 != rate {
- t.Errorf("2 minute a.Rate(): 0.08120116994196772 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.029872241020718428 != rate {
- t.Errorf("3 minute a.Rate(): 0.029872241020718428 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.01098938333324054 != rate {
- t.Errorf("4 minute a.Rate(): 0.01098938333324054 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.004042768199451294 != rate {
- t.Errorf("5 minute a.Rate(): 0.004042768199451294 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.0014872513059998212 != rate {
- t.Errorf("6 minute a.Rate(): 0.0014872513059998212 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.0005471291793327122 != rate {
- t.Errorf("7 minute a.Rate(): 0.0005471291793327122 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.00020127757674150815 != rate {
- t.Errorf("8 minute a.Rate(): 0.00020127757674150815 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 7.404588245200814e-05 != rate {
- t.Errorf("9 minute a.Rate(): 7.404588245200814e-05 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 2.7239957857491083e-05 != rate {
- t.Errorf("10 minute a.Rate(): 2.7239957857491083e-05 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 1.0021020474147462e-05 != rate {
- t.Errorf("11 minute a.Rate(): 1.0021020474147462e-05 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 3.6865274119969525e-06 != rate {
- t.Errorf("12 minute a.Rate(): 3.6865274119969525e-06 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 1.3561976441886433e-06 != rate {
- t.Errorf("13 minute a.Rate(): 1.3561976441886433e-06 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 4.989172314621449e-07 != rate {
- t.Errorf("14 minute a.Rate(): 4.989172314621449e-07 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 1.8354139230109722e-07 != rate {
- t.Errorf("15 minute a.Rate(): 1.8354139230109722e-07 != %v\n", rate)
- }
-}
-
-func TestEWMA5(t *testing.T) {
- a := NewEWMA5()
- a.Update(3)
- a.Tick()
- if rate := a.Rate(); 0.6 != rate {
- t.Errorf("initial a.Rate(): 0.6 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.49123845184678905 != rate {
- t.Errorf("1 minute a.Rate(): 0.49123845184678905 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.4021920276213837 != rate {
- t.Errorf("2 minute a.Rate(): 0.4021920276213837 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.32928698165641596 != rate {
- t.Errorf("3 minute a.Rate(): 0.32928698165641596 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.269597378470333 != rate {
- t.Errorf("4 minute a.Rate(): 0.269597378470333 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.2207276647028654 != rate {
- t.Errorf("5 minute a.Rate(): 0.2207276647028654 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.18071652714732128 != rate {
- t.Errorf("6 minute a.Rate(): 0.18071652714732128 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.14795817836496392 != rate {
- t.Errorf("7 minute a.Rate(): 0.14795817836496392 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.12113791079679326 != rate {
- t.Errorf("8 minute a.Rate(): 0.12113791079679326 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.09917933293295193 != rate {
- t.Errorf("9 minute a.Rate(): 0.09917933293295193 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.08120116994196763 != rate {
- t.Errorf("10 minute a.Rate(): 0.08120116994196763 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.06648189501740036 != rate {
- t.Errorf("11 minute a.Rate(): 0.06648189501740036 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.05443077197364752 != rate {
- t.Errorf("12 minute a.Rate(): 0.05443077197364752 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.04456414692860035 != rate {
- t.Errorf("13 minute a.Rate(): 0.04456414692860035 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.03648603757513079 != rate {
- t.Errorf("14 minute a.Rate(): 0.03648603757513079 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.0298722410207183831020718428 != rate {
- t.Errorf("15 minute a.Rate(): 0.0298722410207183831020718428 != %v\n", rate)
- }
-}
-
-func TestEWMA15(t *testing.T) {
- a := NewEWMA15()
- a.Update(3)
- a.Tick()
- if rate := a.Rate(); 0.6 != rate {
- t.Errorf("initial a.Rate(): 0.6 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.5613041910189706 != rate {
- t.Errorf("1 minute a.Rate(): 0.5613041910189706 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.5251039914257684 != rate {
- t.Errorf("2 minute a.Rate(): 0.5251039914257684 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.4912384518467888184678905 != rate {
- t.Errorf("3 minute a.Rate(): 0.4912384518467888184678905 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.459557003018789 != rate {
- t.Errorf("4 minute a.Rate(): 0.459557003018789 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.4299187863442732 != rate {
- t.Errorf("5 minute a.Rate(): 0.4299187863442732 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.4021920276213831 != rate {
- t.Errorf("6 minute a.Rate(): 0.4021920276213831 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.37625345116383313 != rate {
- t.Errorf("7 minute a.Rate(): 0.37625345116383313 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.3519877317060185 != rate {
- t.Errorf("8 minute a.Rate(): 0.3519877317060185 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.3292869816564153165641596 != rate {
- t.Errorf("9 minute a.Rate(): 0.3292869816564153165641596 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.3080502714195546 != rate {
- t.Errorf("10 minute a.Rate(): 0.3080502714195546 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.2881831806538789 != rate {
- t.Errorf("11 minute a.Rate(): 0.2881831806538789 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.26959737847033216 != rate {
- t.Errorf("12 minute a.Rate(): 0.26959737847033216 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.2522102307052083 != rate {
- t.Errorf("13 minute a.Rate(): 0.2522102307052083 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.23594443252115815 != rate {
- t.Errorf("14 minute a.Rate(): 0.23594443252115815 != %v\n", rate)
- }
- elapseMinute(a)
- if rate := a.Rate(); 0.2207276647028646247028654470286553 != rate {
- t.Errorf("15 minute a.Rate(): 0.2207276647028646247028654470286553 != %v\n", rate)
- }
-}
-
-func elapseMinute(a EWMA) {
- for i := 0; i < 12; i++ {
- a.Tick()
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/exp/exp.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/exp/exp.go
new file mode 100644
index 000000000..09a496f11
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/exp/exp.go
@@ -0,0 +1,148 @@
+// Hook go-metrics into expvar
+// on any /debug/metrics request, load all vars from the registry into expvar, and execute regular expvar handler
+package exp
+
+import (
+ "expvar"
+ "fmt"
+ "github.com/rcrowley/go-metrics"
+ "net/http"
+ "sync"
+)
+
+type exp struct {
+ expvarLock sync.Mutex // expvar panics if you try to register the same var twice, so we must probe it safely
+ registry metrics.Registry
+}
+
+func (exp *exp) expHandler(w http.ResponseWriter, r *http.Request) {
+ // load our variables into expvar
+ exp.syncToExpvar()
+
+ // now just run the official expvar handler code (which is not publicly callable, so pasted inline)
+ w.Header().Set("Content-Type", "application/json; charset=utf-8")
+ fmt.Fprintf(w, "{\n")
+ first := true
+ expvar.Do(func(kv expvar.KeyValue) {
+ if !first {
+ fmt.Fprintf(w, ",\n")
+ }
+ first = false
+ fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value)
+ })
+ fmt.Fprintf(w, "\n}\n")
+}
+
+func Exp(r metrics.Registry) {
+ e := exp{sync.Mutex{}, r}
+ // this would cause a panic:
+ // panic: http: multiple registrations for /debug/vars
+ // http.HandleFunc("/debug/vars", e.expHandler)
+ // haven't found an elegant way, so just use a different endpoint
+ http.HandleFunc("/debug/metrics", e.expHandler)
+}
+
+func (exp *exp) getInt(name string) *expvar.Int {
+ var v *expvar.Int
+ exp.expvarLock.Lock()
+ p := expvar.Get(name)
+ if p != nil {
+ v = p.(*expvar.Int)
+ } else {
+ v = new(expvar.Int)
+ expvar.Publish(name, v)
+ }
+ exp.expvarLock.Unlock()
+ return v
+}
+
+func (exp *exp) getFloat(name string) *expvar.Float {
+ var v *expvar.Float
+ exp.expvarLock.Lock()
+ p := expvar.Get(name)
+ if p != nil {
+ v = p.(*expvar.Float)
+ } else {
+ v = new(expvar.Float)
+ expvar.Publish(name, v)
+ }
+ exp.expvarLock.Unlock()
+ return v
+}
+
+func (exp *exp) publishCounter(name string, metric metrics.Counter) {
+ v := exp.getInt(name)
+ v.Set(metric.Count())
+}
+
+func (exp *exp) publishGauge(name string, metric metrics.Gauge) {
+ v := exp.getInt(name)
+ v.Set(metric.Value())
+}
+func (exp *exp) publishGaugeFloat64(name string, metric metrics.GaugeFloat64) {
+ exp.getFloat(name).Set(metric.Value())
+}
+
+func (exp *exp) publishHistogram(name string, metric metrics.Histogram) {
+ h := metric.Snapshot()
+ ps := h.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
+ exp.getInt(name + ".count").Set(h.Count())
+ exp.getFloat(name + ".min").Set(float64(h.Min()))
+ exp.getFloat(name + ".max").Set(float64(h.Max()))
+ exp.getFloat(name + ".mean").Set(float64(h.Mean()))
+ exp.getFloat(name + ".std-dev").Set(float64(h.StdDev()))
+ exp.getFloat(name + ".50-percentile").Set(float64(ps[0]))
+ exp.getFloat(name + ".75-percentile").Set(float64(ps[1]))
+ exp.getFloat(name + ".95-percentile").Set(float64(ps[2]))
+ exp.getFloat(name + ".99-percentile").Set(float64(ps[3]))
+ exp.getFloat(name + ".999-percentile").Set(float64(ps[4]))
+}
+
+func (exp *exp) publishMeter(name string, metric metrics.Meter) {
+ m := metric.Snapshot()
+ exp.getInt(name + ".count").Set(m.Count())
+ exp.getFloat(name + ".one-minute").Set(float64(m.Rate1()))
+ exp.getFloat(name + ".five-minute").Set(float64(m.Rate5()))
+ exp.getFloat(name + ".fifteen-minute").Set(float64((m.Rate15())))
+ exp.getFloat(name + ".mean").Set(float64(m.RateMean()))
+}
+
+func (exp *exp) publishTimer(name string, metric metrics.Timer) {
+ t := metric.Snapshot()
+ ps := t.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
+ exp.getInt(name + ".count").Set(t.Count())
+ exp.getFloat(name + ".min").Set(float64(t.Min()))
+ exp.getFloat(name + ".max").Set(float64(t.Max()))
+ exp.getFloat(name + ".mean").Set(float64(t.Mean()))
+ exp.getFloat(name + ".std-dev").Set(float64(t.StdDev()))
+ exp.getFloat(name + ".50-percentile").Set(float64(ps[0]))
+ exp.getFloat(name + ".75-percentile").Set(float64(ps[1]))
+ exp.getFloat(name + ".95-percentile").Set(float64(ps[2]))
+ exp.getFloat(name + ".99-percentile").Set(float64(ps[3]))
+ exp.getFloat(name + ".999-percentile").Set(float64(ps[4]))
+ exp.getFloat(name + ".one-minute").Set(float64(t.Rate1()))
+ exp.getFloat(name + ".five-minute").Set(float64(t.Rate5()))
+ exp.getFloat(name + ".fifteen-minute").Set(float64((t.Rate15())))
+ exp.getFloat(name + ".mean-rate").Set(float64(t.RateMean()))
+}
+
+func (exp *exp) syncToExpvar() {
+ exp.registry.Each(func(name string, i interface{}) {
+ switch i.(type) {
+ case metrics.Counter:
+ exp.publishCounter(name, i.(metrics.Counter))
+ case metrics.Gauge:
+ exp.publishGauge(name, i.(metrics.Gauge))
+ case metrics.GaugeFloat64:
+ exp.publishGaugeFloat64(name, i.(metrics.GaugeFloat64))
+ case metrics.Histogram:
+ exp.publishHistogram(name, i.(metrics.Histogram))
+ case metrics.Meter:
+ exp.publishMeter(name, i.(metrics.Meter))
+ case metrics.Timer:
+ exp.publishTimer(name, i.(metrics.Timer))
+ default:
+ panic(fmt.Sprintf("unsupported type for '%s': %T", name, i))
+ }
+ })
+}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/gauge_float64_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/gauge_float64_test.go
deleted file mode 100644
index 5d0aae271..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/gauge_float64_test.go
+++ /dev/null
@@ -1,38 +0,0 @@
-package metrics
-
-import "testing"
-
-func BenchmarkGuageFloat64(b *testing.B) {
- g := NewGaugeFloat64()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- g.Update(float64(i))
- }
-}
-
-func TestGaugeFloat64(t *testing.T) {
- g := NewGaugeFloat64()
- g.Update(float64(47.0))
- if v := g.Value(); float64(47.0) != v {
- t.Errorf("g.Value(): 47.0 != %v\n", v)
- }
-}
-
-func TestGaugeFloat64Snapshot(t *testing.T) {
- g := NewGaugeFloat64()
- g.Update(float64(47.0))
- snapshot := g.Snapshot()
- g.Update(float64(0))
- if v := snapshot.Value(); float64(47.0) != v {
- t.Errorf("g.Value(): 47.0 != %v\n", v)
- }
-}
-
-func TestGetOrRegisterGaugeFloat64(t *testing.T) {
- r := NewRegistry()
- NewRegisteredGaugeFloat64("foo", r).Update(float64(47.0))
- t.Logf("registry: %v", r)
- if g := GetOrRegisterGaugeFloat64("foo", r); float64(47.0) != g.Value() {
- t.Fatal(g)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/gauge_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/gauge_test.go
deleted file mode 100644
index 508496291..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/gauge_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package metrics
-
-import "testing"
-
-func BenchmarkGuage(b *testing.B) {
- g := NewGauge()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- g.Update(int64(i))
- }
-}
-
-func TestGauge(t *testing.T) {
- g := NewGauge()
- g.Update(int64(47))
- if v := g.Value(); 47 != v {
- t.Errorf("g.Value(): 47 != %v\n", v)
- }
-}
-
-func TestGaugeSnapshot(t *testing.T) {
- g := NewGauge()
- g.Update(int64(47))
- snapshot := g.Snapshot()
- g.Update(int64(0))
- if v := snapshot.Value(); 47 != v {
- t.Errorf("g.Value(): 47 != %v\n", v)
- }
-}
-
-func TestGetOrRegisterGauge(t *testing.T) {
- r := NewRegistry()
- NewRegisteredGauge("foo", r).Update(47)
- if g := GetOrRegisterGauge("foo", r); 47 != g.Value() {
- t.Fatal(g)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite.go
index 604b26da0..abd0a7d29 100644
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite.go
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite.go
@@ -38,6 +38,7 @@ func Graphite(r Registry, d time.Duration, prefix string, addr *net.TCPAddr) {
// GraphiteWithConfig is a blocking exporter function just like Graphite,
// but it takes a GraphiteConfig instead.
func GraphiteWithConfig(c GraphiteConfig) {
+ log.Printf("WARNING: This go-metrics client has been DEPRECATED! It has been moved to https://github.com/cyberdelia/go-metrics-graphite and will be removed from rcrowley/go-metrics on August 12th 2015")
for _ = range time.Tick(c.FlushInterval) {
if err := graphite(&c); nil != err {
log.Println(err)
@@ -49,6 +50,7 @@ func GraphiteWithConfig(c GraphiteConfig) {
// non-nil error on failed connections. This can be used in a loop
// similar to GraphiteWithConfig for custom error handling.
func GraphiteOnce(c GraphiteConfig) error {
+ log.Printf("WARNING: This go-metrics client has been DEPRECATED! It has been moved to https://github.com/cyberdelia/go-metrics-graphite and will be removed from rcrowley/go-metrics on August 12th 2015")
return graphite(&c)
}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite_test.go
deleted file mode 100644
index b49dc4bb5..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/graphite_test.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package metrics
-
-import (
- "net"
- "time"
-)
-
-func ExampleGraphite() {
- addr, _ := net.ResolveTCPAddr("net", ":2003")
- go Graphite(DefaultRegistry, 1*time.Second, "some.prefix", addr)
-}
-
-func ExampleGraphiteWithConfig() {
- addr, _ := net.ResolveTCPAddr("net", ":2003")
- go GraphiteWithConfig(GraphiteConfig{
- Addr: addr,
- Registry: DefaultRegistry,
- FlushInterval: 1 * time.Second,
- DurationUnit: time.Millisecond,
- Percentiles: []float64{ 0.5, 0.75, 0.99, 0.999 },
- })
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/histogram_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/histogram_test.go
deleted file mode 100644
index d7f4f0171..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/histogram_test.go
+++ /dev/null
@@ -1,95 +0,0 @@
-package metrics
-
-import "testing"
-
-func BenchmarkHistogram(b *testing.B) {
- h := NewHistogram(NewUniformSample(100))
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- h.Update(int64(i))
- }
-}
-
-func TestGetOrRegisterHistogram(t *testing.T) {
- r := NewRegistry()
- s := NewUniformSample(100)
- NewRegisteredHistogram("foo", r, s).Update(47)
- if h := GetOrRegisterHistogram("foo", r, s); 1 != h.Count() {
- t.Fatal(h)
- }
-}
-
-func TestHistogram10000(t *testing.T) {
- h := NewHistogram(NewUniformSample(100000))
- for i := 1; i <= 10000; i++ {
- h.Update(int64(i))
- }
- testHistogram10000(t, h)
-}
-
-func TestHistogramEmpty(t *testing.T) {
- h := NewHistogram(NewUniformSample(100))
- if count := h.Count(); 0 != count {
- t.Errorf("h.Count(): 0 != %v\n", count)
- }
- if min := h.Min(); 0 != min {
- t.Errorf("h.Min(): 0 != %v\n", min)
- }
- if max := h.Max(); 0 != max {
- t.Errorf("h.Max(): 0 != %v\n", max)
- }
- if mean := h.Mean(); 0.0 != mean {
- t.Errorf("h.Mean(): 0.0 != %v\n", mean)
- }
- if stdDev := h.StdDev(); 0.0 != stdDev {
- t.Errorf("h.StdDev(): 0.0 != %v\n", stdDev)
- }
- ps := h.Percentiles([]float64{0.5, 0.75, 0.99})
- if 0.0 != ps[0] {
- t.Errorf("median: 0.0 != %v\n", ps[0])
- }
- if 0.0 != ps[1] {
- t.Errorf("75th percentile: 0.0 != %v\n", ps[1])
- }
- if 0.0 != ps[2] {
- t.Errorf("99th percentile: 0.0 != %v\n", ps[2])
- }
-}
-
-func TestHistogramSnapshot(t *testing.T) {
- h := NewHistogram(NewUniformSample(100000))
- for i := 1; i <= 10000; i++ {
- h.Update(int64(i))
- }
- snapshot := h.Snapshot()
- h.Update(0)
- testHistogram10000(t, snapshot)
-}
-
-func testHistogram10000(t *testing.T, h Histogram) {
- if count := h.Count(); 10000 != count {
- t.Errorf("h.Count(): 10000 != %v\n", count)
- }
- if min := h.Min(); 1 != min {
- t.Errorf("h.Min(): 1 != %v\n", min)
- }
- if max := h.Max(); 10000 != max {
- t.Errorf("h.Max(): 10000 != %v\n", max)
- }
- if mean := h.Mean(); 5000.5 != mean {
- t.Errorf("h.Mean(): 5000.5 != %v\n", mean)
- }
- if stdDev := h.StdDev(); 2886.751331514372 != stdDev {
- t.Errorf("h.StdDev(): 2886.751331514372 != %v\n", stdDev)
- }
- ps := h.Percentiles([]float64{0.5, 0.75, 0.99})
- if 5000.5 != ps[0] {
- t.Errorf("median: 5000.5 != %v\n", ps[0])
- }
- if 7500.75 != ps[1] {
- t.Errorf("75th percentile: 7500.75 != %v\n", ps[1])
- }
- if 9900.99 != ps[2] {
- t.Errorf("99th percentile: 9900.99 != %v\n", ps[2])
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/influxdb/influxdb.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/influxdb/influxdb.go
deleted file mode 100644
index 0163c9b42..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/influxdb/influxdb.go
+++ /dev/null
@@ -1,114 +0,0 @@
-package influxdb
-
-import (
- "fmt"
- influxClient "github.com/influxdb/influxdb/client"
- "github.com/rcrowley/go-metrics"
- "log"
- "time"
-)
-
-type Config struct {
- Host string
- Database string
- Username string
- Password string
-}
-
-func Influxdb(r metrics.Registry, d time.Duration, config *Config) {
- client, err := influxClient.NewClient(&influxClient.ClientConfig{
- Host: config.Host,
- Database: config.Database,
- Username: config.Username,
- Password: config.Password,
- })
- if err != nil {
- log.Println(err)
- return
- }
-
- for _ = range time.Tick(d) {
- if err := send(r, client); err != nil {
- log.Println(err)
- }
- }
-}
-
-func send(r metrics.Registry, client *influxClient.Client) error {
- series := []*influxClient.Series{}
-
- r.Each(func(name string, i interface{}) {
- now := getCurrentTime()
- switch metric := i.(type) {
- case metrics.Counter:
- series = append(series, &influxClient.Series{
- Name: fmt.Sprintf("%s.count", name),
- Columns: []string{"time", "count"},
- Points: [][]interface{}{
- {now, metric.Count()},
- },
- })
- case metrics.Gauge:
- series = append(series, &influxClient.Series{
- Name: fmt.Sprintf("%s.value", name),
- Columns: []string{"time", "value"},
- Points: [][]interface{}{
- {now, metric.Value()},
- },
- })
- case metrics.GaugeFloat64:
- series = append(series, &influxClient.Series{
- Name: fmt.Sprintf("%s.value", name),
- Columns: []string{"time", "value"},
- Points: [][]interface{}{
- {now, metric.Value()},
- },
- })
- case metrics.Histogram:
- h := metric.Snapshot()
- ps := h.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
- series = append(series, &influxClient.Series{
- Name: fmt.Sprintf("%s.histogram", name),
- Columns: []string{"time", "count", "min", "max", "mean", "std-dev",
- "50-percentile", "75-percentile", "95-percentile",
- "99-percentile", "999-percentile"},
- Points: [][]interface{}{
- {now, h.Count(), h.Min(), h.Max(), h.Mean(), h.StdDev(),
- ps[0], ps[1], ps[2], ps[3], ps[4]},
- },
- })
- case metrics.Meter:
- m := metric.Snapshot()
- series = append(series, &influxClient.Series{
- Name: fmt.Sprintf("%s.meter", name),
- Columns: []string{"count", "one-minute",
- "five-minute", "fifteen-minute", "mean"},
- Points: [][]interface{}{
- {m.Count(), m.Rate1(), m.Rate5(), m.Rate15(), m.RateMean()},
- },
- })
- case metrics.Timer:
- h := metric.Snapshot()
- ps := h.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
- series = append(series, &influxClient.Series{
- Name: fmt.Sprintf("%s.timer", name),
- Columns: []string{"count", "min", "max", "mean", "std-dev",
- "50-percentile", "75-percentile", "95-percentile",
- "99-percentile", "999-percentile", "one-minute", "five-minute", "fifteen-minute", "mean-rate"},
- Points: [][]interface{}{
- {h.Count(), h.Min(), h.Max(), h.Mean(), h.StdDev(),
- ps[0], ps[1], ps[2], ps[3], ps[4],
- h.Rate1(), h.Rate5(), h.Rate15(), h.RateMean()},
- },
- })
- }
- })
- if err := client.WriteSeries(series); err != nil {
- log.Println(err)
- }
- return nil
-}
-
-func getCurrentTime() int64 {
- return time.Now().UnixNano() / 1000000
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/json.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/json.go
index 04a9c9198..2676aeea5 100644
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/json.go
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/json.go
@@ -8,7 +8,7 @@ import (
// MarshalJSON returns a byte slice containing a JSON representation of all
// the metrics in the Registry.
-func (r StandardRegistry) MarshalJSON() ([]byte, error) {
+func (r *StandardRegistry) MarshalJSON() ([]byte, error) {
data := make(map[string]map[string]interface{})
r.Each(func(name string, i interface{}) {
values := make(map[string]interface{})
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/json_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/json_test.go
deleted file mode 100644
index cf70051f7..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/json_test.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package metrics
-
-import (
- "bytes"
- "encoding/json"
- "testing"
-)
-
-func TestRegistryMarshallJSON(t *testing.T) {
- b := &bytes.Buffer{}
- enc := json.NewEncoder(b)
- r := NewRegistry()
- r.Register("counter", NewCounter())
- enc.Encode(r)
- if s := b.String(); "{\"counter\":{\"count\":0}}\n" != s {
- t.Fatalf(s)
- }
-}
-
-func TestRegistryWriteJSONOnce(t *testing.T) {
- r := NewRegistry()
- r.Register("counter", NewCounter())
- b := &bytes.Buffer{}
- WriteJSONOnce(r, b)
- if s := b.String(); s != "{\"counter\":{\"count\":0}}\n" {
- t.Fail()
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/librato/librato.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/librato/librato.go
index dfaae2f28..d7c057468 100644
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/librato/librato.go
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/librato/librato.go
@@ -23,6 +23,7 @@ func translateTimerAttributes(d time.Duration) (attrs map[string]interface{}) {
type Reporter struct {
Email, Token string
+ Namespace string
Source string
Interval time.Duration
Registry metrics.Registry
@@ -32,7 +33,7 @@ type Reporter struct {
}
func NewReporter(r metrics.Registry, d time.Duration, e string, t string, s string, p []float64, u time.Duration) *Reporter {
- return &Reporter{e, t, s, d, r, p, translateTimerAttributes(u), int64(d / time.Second)}
+ return &Reporter{e, t, "", s, d, r, p, translateTimerAttributes(u), int64(d / time.Second)}
}
func Librato(r metrics.Registry, d time.Duration, e string, t string, s string, p []float64, u time.Duration) {
@@ -40,6 +41,7 @@ func Librato(r metrics.Registry, d time.Duration, e string, t string, s string,
}
func (self *Reporter) Run() {
+ log.Printf("WARNING: This client has been DEPRECATED! It has been moved to https://github.com/mihasya/go-metrics-librato and will be removed from rcrowley/go-metrics on August 5th 2015")
ticker := time.Tick(self.Interval)
metricsApi := &LibratoClient{self.Email, self.Token}
for now := range ticker {
@@ -87,6 +89,9 @@ func (self *Reporter) BuildRequest(now time.Time, r metrics.Registry) (snapshot
snapshot.Counters = make([]Measurement, 0)
histogramGaugeCount := 1 + len(self.Percentiles)
r.Each(func(name string, metric interface{}) {
+ if self.Namespace != "" {
+ name = fmt.Sprintf("%s.%s", self.Namespace, name)
+ }
measurement := Measurement{}
measurement[Period] = self.Interval.Seconds()
switch m := metric.(type) {
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/log.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/log.go
index 278a8a441..f074eb03d 100644
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/log.go
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/log.go
@@ -5,10 +5,17 @@ import (
"time"
)
+func Log(r Registry, freq time.Duration, l *log.Logger) {
+ LogScaled(r, freq, time.Nanosecond, l)
+}
+
// Output each metric in the given registry periodically using the given
-// logger.
-func Log(r Registry, d time.Duration, l *log.Logger) {
- for _ = range time.Tick(d) {
+// logger. Print timings in `scale` units (eg time.Millisecond) rather than nanos.
+func LogScaled(r Registry, freq time.Duration, scale time.Duration, l *log.Logger) {
+ du := float64(scale)
+ duSuffix := scale.String()[1:]
+
+ for _ = range time.Tick(freq) {
r.Each(func(name string, i interface{}) {
switch metric := i.(type) {
case Counter:
@@ -51,15 +58,15 @@ func Log(r Registry, d time.Duration, l *log.Logger) {
ps := t.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
l.Printf("timer %s\n", name)
l.Printf(" count: %9d\n", t.Count())
- l.Printf(" min: %9d\n", t.Min())
- l.Printf(" max: %9d\n", t.Max())
- l.Printf(" mean: %12.2f\n", t.Mean())
- l.Printf(" stddev: %12.2f\n", t.StdDev())
- l.Printf(" median: %12.2f\n", ps[0])
- l.Printf(" 75%%: %12.2f\n", ps[1])
- l.Printf(" 95%%: %12.2f\n", ps[2])
- l.Printf(" 99%%: %12.2f\n", ps[3])
- l.Printf(" 99.9%%: %12.2f\n", ps[4])
+ l.Printf(" min: %12.2f%s\n", float64(t.Min())/du, duSuffix)
+ l.Printf(" max: %12.2f%s\n", float64(t.Max())/du, duSuffix)
+ l.Printf(" mean: %12.2f%s\n", t.Mean()/du, duSuffix)
+ l.Printf(" stddev: %12.2f%s\n", t.StdDev()/du, duSuffix)
+ l.Printf(" median: %12.2f%s\n", ps[0]/du, duSuffix)
+ l.Printf(" 75%%: %12.2f%s\n", ps[1]/du, duSuffix)
+ l.Printf(" 95%%: %12.2f%s\n", ps[2]/du, duSuffix)
+ l.Printf(" 99%%: %12.2f%s\n", ps[3]/du, duSuffix)
+ l.Printf(" 99.9%%: %12.2f%s\n", ps[4]/du, duSuffix)
l.Printf(" 1-min rate: %12.2f\n", t.Rate1())
l.Printf(" 5-min rate: %12.2f\n", t.Rate5())
l.Printf(" 15-min rate: %12.2f\n", t.Rate15())
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/meter_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/meter_test.go
deleted file mode 100644
index 26ce1398a..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/meter_test.go
+++ /dev/null
@@ -1,60 +0,0 @@
-package metrics
-
-import (
- "testing"
- "time"
-)
-
-func BenchmarkMeter(b *testing.B) {
- m := NewMeter()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- m.Mark(1)
- }
-}
-
-func TestGetOrRegisterMeter(t *testing.T) {
- r := NewRegistry()
- NewRegisteredMeter("foo", r).Mark(47)
- if m := GetOrRegisterMeter("foo", r); 47 != m.Count() {
- t.Fatal(m)
- }
-}
-
-func TestMeterDecay(t *testing.T) {
- ma := meterArbiter{
- ticker: time.NewTicker(1),
- }
- m := newStandardMeter()
- ma.meters = append(ma.meters, m)
- go ma.tick()
- m.Mark(1)
- rateMean := m.RateMean()
- time.Sleep(1)
- if m.RateMean() >= rateMean {
- t.Error("m.RateMean() didn't decrease")
- }
-}
-
-func TestMeterNonzero(t *testing.T) {
- m := NewMeter()
- m.Mark(3)
- if count := m.Count(); 3 != count {
- t.Errorf("m.Count(): 3 != %v\n", count)
- }
-}
-
-func TestMeterSnapshot(t *testing.T) {
- m := NewMeter()
- m.Mark(1)
- if snapshot := m.Snapshot(); m.RateMean() != snapshot.RateMean() {
- t.Fatal(snapshot)
- }
-}
-
-func TestMeterZero(t *testing.T) {
- m := NewMeter()
- if count := m.Count(); 0 != count {
- t.Errorf("m.Count(): 0 != %v\n", count)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/metrics_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/metrics_test.go
deleted file mode 100644
index 083f9676f..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/metrics_test.go
+++ /dev/null
@@ -1,107 +0,0 @@
-package metrics
-
-import (
- "io/ioutil"
- "log"
- "sync"
- "testing"
-)
-
-const FANOUT = 128
-
-// Stop the compiler from complaining during debugging.
-var (
- _ = ioutil.Discard
- _ = log.LstdFlags
-)
-
-func BenchmarkMetrics(b *testing.B) {
- r := NewRegistry()
- c := NewRegisteredCounter("counter", r)
- g := NewRegisteredGauge("gauge", r)
- gf := NewRegisteredGaugeFloat64("gaugefloat64", r)
- h := NewRegisteredHistogram("histogram", r, NewUniformSample(100))
- m := NewRegisteredMeter("meter", r)
- t := NewRegisteredTimer("timer", r)
- RegisterDebugGCStats(r)
- RegisterRuntimeMemStats(r)
- b.ResetTimer()
- ch := make(chan bool)
-
- wgD := &sync.WaitGroup{}
- /*
- wgD.Add(1)
- go func() {
- defer wgD.Done()
- //log.Println("go CaptureDebugGCStats")
- for {
- select {
- case <-ch:
- //log.Println("done CaptureDebugGCStats")
- return
- default:
- CaptureDebugGCStatsOnce(r)
- }
- }
- }()
- //*/
-
- wgR := &sync.WaitGroup{}
- //*
- wgR.Add(1)
- go func() {
- defer wgR.Done()
- //log.Println("go CaptureRuntimeMemStats")
- for {
- select {
- case <-ch:
- //log.Println("done CaptureRuntimeMemStats")
- return
- default:
- CaptureRuntimeMemStatsOnce(r)
- }
- }
- }()
- //*/
-
- wgW := &sync.WaitGroup{}
- /*
- wgW.Add(1)
- go func() {
- defer wgW.Done()
- //log.Println("go Write")
- for {
- select {
- case <-ch:
- //log.Println("done Write")
- return
- default:
- WriteOnce(r, ioutil.Discard)
- }
- }
- }()
- //*/
-
- wg := &sync.WaitGroup{}
- wg.Add(FANOUT)
- for i := 0; i < FANOUT; i++ {
- go func(i int) {
- defer wg.Done()
- //log.Println("go", i)
- for i := 0; i < b.N; i++ {
- c.Inc(1)
- g.Update(int64(i))
- gf.Update(float64(i))
- h.Update(int64(i))
- m.Mark(1)
- t.Update(1)
- }
- //log.Println("done", i)
- }(i)
- }
- wg.Wait()
- close(ch)
- wgD.Wait()
- wgR.Wait()
- wgW.Wait()
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/opentsdb_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/opentsdb_test.go
deleted file mode 100644
index 6173d61ab..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/opentsdb_test.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package metrics
-
-import (
- "net"
- "time"
-)
-
-func ExampleOpenTSDB() {
- addr, _ := net.ResolveTCPAddr("net", ":2003")
- go OpenTSDB(DefaultRegistry, 1*time.Second, "some.prefix", addr)
-}
-
-func ExampleOpenTSDBWithConfig() {
- addr, _ := net.ResolveTCPAddr("net", ":2003")
- go OpenTSDBWithConfig(OpenTSDBConfig{
- Addr: addr,
- Registry: DefaultRegistry,
- FlushInterval: 1 * time.Second,
- DurationUnit: time.Millisecond,
- })
-}
-
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry.go
index 1f9d82c2a..e1f68a5dc 100644
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry.go
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry.go
@@ -145,6 +145,65 @@ func (r *StandardRegistry) registered() map[string]interface{} {
return metrics
}
+type PrefixedRegistry struct {
+ underlying Registry
+ prefix string
+}
+
+func NewPrefixedRegistry(prefix string) Registry {
+ return &PrefixedRegistry{
+ underlying: NewRegistry(),
+ prefix: prefix,
+ }
+}
+
+func NewPrefixedChildRegistry(parent Registry, prefix string) Registry {
+ return &PrefixedRegistry{
+ underlying: parent,
+ prefix: prefix,
+ }
+}
+
+// Call the given function for each registered metric.
+func (r *PrefixedRegistry) Each(fn func(string, interface{})) {
+ r.underlying.Each(fn)
+}
+
+// Get the metric by the given name or nil if none is registered.
+func (r *PrefixedRegistry) Get(name string) interface{} {
+ return r.underlying.Get(name)
+}
+
+// Gets an existing metric or registers the given one.
+// The interface can be the metric to register if not found in registry,
+// or a function returning the metric for lazy instantiation.
+func (r *PrefixedRegistry) GetOrRegister(name string, metric interface{}) interface{} {
+ realName := r.prefix + name
+ return r.underlying.GetOrRegister(realName, metric)
+}
+
+// Register the given metric under the given name. The name will be prefixed.
+func (r *PrefixedRegistry) Register(name string, metric interface{}) error {
+ realName := r.prefix + name
+ return r.underlying.Register(realName, metric)
+}
+
+// Run all registered healthchecks.
+func (r *PrefixedRegistry) RunHealthchecks() {
+ r.underlying.RunHealthchecks()
+}
+
+// Unregister the metric with the given name. The name will be prefixed.
+func (r *PrefixedRegistry) Unregister(name string) {
+ realName := r.prefix + name
+ r.underlying.Unregister(realName)
+}
+
+// Unregister all metrics. (Mostly for testing.)
+func (r *PrefixedRegistry) UnregisterAll() {
+ r.underlying.UnregisterAll()
+}
+
var DefaultRegistry Registry = NewRegistry()
// Call the given function for each registered metric.
@@ -169,6 +228,14 @@ func Register(name string, i interface{}) error {
return DefaultRegistry.Register(name, i)
}
+// Register the given metric under the given name. Panics if a metric by the
+// given name is already registered.
+func MustRegister(name string, i interface{}) {
+ if err := Register(name, i); err != nil {
+ panic(err)
+ }
+}
+
// Run all registered healthchecks.
func RunHealthchecks() {
DefaultRegistry.RunHealthchecks()
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry_test.go
deleted file mode 100644
index 9ba0a0205..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/registry_test.go
+++ /dev/null
@@ -1,118 +0,0 @@
-package metrics
-
-import "testing"
-
-func BenchmarkRegistry(b *testing.B) {
- r := NewRegistry()
- r.Register("foo", NewCounter())
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- r.Each(func(string, interface{}) {})
- }
-}
-
-func TestRegistry(t *testing.T) {
- r := NewRegistry()
- r.Register("foo", NewCounter())
- i := 0
- r.Each(func(name string, iface interface{}) {
- i++
- if "foo" != name {
- t.Fatal(name)
- }
- if _, ok := iface.(Counter); !ok {
- t.Fatal(iface)
- }
- })
- if 1 != i {
- t.Fatal(i)
- }
- r.Unregister("foo")
- i = 0
- r.Each(func(string, interface{}) { i++ })
- if 0 != i {
- t.Fatal(i)
- }
-}
-
-func TestRegistryDuplicate(t *testing.T) {
- r := NewRegistry()
- if err := r.Register("foo", NewCounter()); nil != err {
- t.Fatal(err)
- }
- if err := r.Register("foo", NewGauge()); nil == err {
- t.Fatal(err)
- }
- i := 0
- r.Each(func(name string, iface interface{}) {
- i++
- if _, ok := iface.(Counter); !ok {
- t.Fatal(iface)
- }
- })
- if 1 != i {
- t.Fatal(i)
- }
-}
-
-func TestRegistryGet(t *testing.T) {
- r := NewRegistry()
- r.Register("foo", NewCounter())
- if count := r.Get("foo").(Counter).Count(); 0 != count {
- t.Fatal(count)
- }
- r.Get("foo").(Counter).Inc(1)
- if count := r.Get("foo").(Counter).Count(); 1 != count {
- t.Fatal(count)
- }
-}
-
-func TestRegistryGetOrRegister(t *testing.T) {
- r := NewRegistry()
-
- // First metric wins with GetOrRegister
- _ = r.GetOrRegister("foo", NewCounter())
- m := r.GetOrRegister("foo", NewGauge())
- if _, ok := m.(Counter); !ok {
- t.Fatal(m)
- }
-
- i := 0
- r.Each(func(name string, iface interface{}) {
- i++
- if name != "foo" {
- t.Fatal(name)
- }
- if _, ok := iface.(Counter); !ok {
- t.Fatal(iface)
- }
- })
- if i != 1 {
- t.Fatal(i)
- }
-}
-
-func TestRegistryGetOrRegisterWithLazyInstantiation(t *testing.T) {
- r := NewRegistry()
-
- // First metric wins with GetOrRegister
- _ = r.GetOrRegister("foo", NewCounter)
- m := r.GetOrRegister("foo", NewGauge)
- if _, ok := m.(Counter); !ok {
- t.Fatal(m)
- }
-
- i := 0
- r.Each(func(name string, iface interface{}) {
- i++
- if name != "foo" {
- t.Fatal(name)
- }
- if _, ok := iface.(Counter); !ok {
- t.Fatal(iface)
- }
- })
- if i != 1 {
- t.Fatal(i)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime.go
index 82574bf25..e8c8d1568 100644
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime.go
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime.go
@@ -9,32 +9,33 @@ var (
memStats runtime.MemStats
runtimeMetrics struct {
MemStats struct {
- Alloc Gauge
- BuckHashSys Gauge
- DebugGC Gauge
- EnableGC Gauge
- Frees Gauge
- HeapAlloc Gauge
- HeapIdle Gauge
- HeapInuse Gauge
- HeapObjects Gauge
- HeapReleased Gauge
- HeapSys Gauge
- LastGC Gauge
- Lookups Gauge
- Mallocs Gauge
- MCacheInuse Gauge
- MCacheSys Gauge
- MSpanInuse Gauge
- MSpanSys Gauge
- NextGC Gauge
- NumGC Gauge
- PauseNs Histogram
- PauseTotalNs Gauge
- StackInuse Gauge
- StackSys Gauge
- Sys Gauge
- TotalAlloc Gauge
+ Alloc Gauge
+ BuckHashSys Gauge
+ DebugGC Gauge
+ EnableGC Gauge
+ Frees Gauge
+ HeapAlloc Gauge
+ HeapIdle Gauge
+ HeapInuse Gauge
+ HeapObjects Gauge
+ HeapReleased Gauge
+ HeapSys Gauge
+ LastGC Gauge
+ Lookups Gauge
+ Mallocs Gauge
+ MCacheInuse Gauge
+ MCacheSys Gauge
+ MSpanInuse Gauge
+ MSpanSys Gauge
+ NextGC Gauge
+ NumGC Gauge
+ GCCPUFraction GaugeFloat64
+ PauseNs Histogram
+ PauseTotalNs Gauge
+ StackInuse Gauge
+ StackSys Gauge
+ Sys Gauge
+ TotalAlloc Gauge
}
NumCgoCall Gauge
NumGoroutine Gauge
@@ -97,6 +98,7 @@ func CaptureRuntimeMemStatsOnce(r Registry) {
runtimeMetrics.MemStats.MSpanSys.Update(int64(memStats.MSpanSys))
runtimeMetrics.MemStats.NextGC.Update(int64(memStats.NextGC))
runtimeMetrics.MemStats.NumGC.Update(int64(memStats.NumGC - numGC))
+ runtimeMetrics.MemStats.GCCPUFraction.Update(gcCPUFraction(&memStats))
// <https://code.google.com/p/go/source/browse/src/pkg/runtime/mgc0.c>
i := numGC % uint32(len(memStats.PauseNs))
@@ -158,6 +160,7 @@ func RegisterRuntimeMemStats(r Registry) {
runtimeMetrics.MemStats.MSpanSys = NewGauge()
runtimeMetrics.MemStats.NextGC = NewGauge()
runtimeMetrics.MemStats.NumGC = NewGauge()
+ runtimeMetrics.MemStats.GCCPUFraction = NewGaugeFloat64()
runtimeMetrics.MemStats.PauseNs = NewHistogram(NewExpDecaySample(1028, 0.015))
runtimeMetrics.MemStats.PauseTotalNs = NewGauge()
runtimeMetrics.MemStats.StackInuse = NewGauge()
@@ -188,6 +191,7 @@ func RegisterRuntimeMemStats(r Registry) {
r.Register("runtime.MemStats.MSpanSys", runtimeMetrics.MemStats.MSpanSys)
r.Register("runtime.MemStats.NextGC", runtimeMetrics.MemStats.NextGC)
r.Register("runtime.MemStats.NumGC", runtimeMetrics.MemStats.NumGC)
+ r.Register("runtime.MemStats.GCCPUFraction", runtimeMetrics.MemStats.GCCPUFraction)
r.Register("runtime.MemStats.PauseNs", runtimeMetrics.MemStats.PauseNs)
r.Register("runtime.MemStats.PauseTotalNs", runtimeMetrics.MemStats.PauseTotalNs)
r.Register("runtime.MemStats.StackInuse", runtimeMetrics.MemStats.StackInuse)
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_gccpufraction.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_gccpufraction.go
new file mode 100644
index 000000000..ca12c05ba
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_gccpufraction.go
@@ -0,0 +1,9 @@
+// +build go1.5
+
+package metrics
+
+import "runtime"
+
+func gcCPUFraction(memStats *runtime.MemStats) float64 {
+ return memStats.GCCPUFraction
+}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_no_gccpufraction.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_no_gccpufraction.go
new file mode 100644
index 000000000..be96aa6f1
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_no_gccpufraction.go
@@ -0,0 +1,9 @@
+// +build !go1.5
+
+package metrics
+
+import "runtime"
+
+func gcCPUFraction(memStats *runtime.MemStats) float64 {
+ return 0
+}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_test.go
deleted file mode 100644
index a0ca89479..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/runtime_test.go
+++ /dev/null
@@ -1,78 +0,0 @@
-package metrics
-
-import (
- "runtime"
- "testing"
- "time"
-)
-
-func BenchmarkRuntimeMemStats(b *testing.B) {
- r := NewRegistry()
- RegisterRuntimeMemStats(r)
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- CaptureRuntimeMemStatsOnce(r)
- }
-}
-
-func TestRuntimeMemStats(t *testing.T) {
- r := NewRegistry()
- RegisterRuntimeMemStats(r)
- CaptureRuntimeMemStatsOnce(r)
- zero := runtimeMetrics.MemStats.PauseNs.Count() // Get a "zero" since GC may have run before these tests.
- runtime.GC()
- CaptureRuntimeMemStatsOnce(r)
- if count := runtimeMetrics.MemStats.PauseNs.Count(); 1 != count-zero {
- t.Fatal(count - zero)
- }
- runtime.GC()
- runtime.GC()
- CaptureRuntimeMemStatsOnce(r)
- if count := runtimeMetrics.MemStats.PauseNs.Count(); 3 != count-zero {
- t.Fatal(count - zero)
- }
- for i := 0; i < 256; i++ {
- runtime.GC()
- }
- CaptureRuntimeMemStatsOnce(r)
- if count := runtimeMetrics.MemStats.PauseNs.Count(); 259 != count-zero {
- t.Fatal(count - zero)
- }
- for i := 0; i < 257; i++ {
- runtime.GC()
- }
- CaptureRuntimeMemStatsOnce(r)
- if count := runtimeMetrics.MemStats.PauseNs.Count(); 515 != count-zero { // We lost one because there were too many GCs between captures.
- t.Fatal(count - zero)
- }
-}
-
-func TestRuntimeMemStatsBlocking(t *testing.T) {
- if g := runtime.GOMAXPROCS(0); g < 2 {
- t.Skipf("skipping TestRuntimeMemStatsBlocking with GOMAXPROCS=%d\n", g)
- }
- ch := make(chan int)
- go testRuntimeMemStatsBlocking(ch)
- var memStats runtime.MemStats
- t0 := time.Now()
- runtime.ReadMemStats(&memStats)
- t1 := time.Now()
- t.Log("i++ during runtime.ReadMemStats:", <-ch)
- go testRuntimeMemStatsBlocking(ch)
- d := t1.Sub(t0)
- t.Log(d)
- time.Sleep(d)
- t.Log("i++ during time.Sleep:", <-ch)
-}
-
-func testRuntimeMemStatsBlocking(ch chan int) {
- i := 0
- for {
- select {
- case ch <- i:
- return
- default:
- i++
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/sample_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/sample_test.go
deleted file mode 100644
index d60e99c5b..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/sample_test.go
+++ /dev/null
@@ -1,363 +0,0 @@
-package metrics
-
-import (
- "math/rand"
- "runtime"
- "testing"
- "time"
-)
-
-// Benchmark{Compute,Copy}{1000,1000000} demonstrate that, even for relatively
-// expensive computations like Variance, the cost of copying the Sample, as
-// approximated by a make and copy, is much greater than the cost of the
-// computation for small samples and only slightly less for large samples.
-func BenchmarkCompute1000(b *testing.B) {
- s := make([]int64, 1000)
- for i := 0; i < len(s); i++ {
- s[i] = int64(i)
- }
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- SampleVariance(s)
- }
-}
-func BenchmarkCompute1000000(b *testing.B) {
- s := make([]int64, 1000000)
- for i := 0; i < len(s); i++ {
- s[i] = int64(i)
- }
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- SampleVariance(s)
- }
-}
-func BenchmarkCopy1000(b *testing.B) {
- s := make([]int64, 1000)
- for i := 0; i < len(s); i++ {
- s[i] = int64(i)
- }
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- sCopy := make([]int64, len(s))
- copy(sCopy, s)
- }
-}
-func BenchmarkCopy1000000(b *testing.B) {
- s := make([]int64, 1000000)
- for i := 0; i < len(s); i++ {
- s[i] = int64(i)
- }
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- sCopy := make([]int64, len(s))
- copy(sCopy, s)
- }
-}
-
-func BenchmarkExpDecaySample257(b *testing.B) {
- benchmarkSample(b, NewExpDecaySample(257, 0.015))
-}
-
-func BenchmarkExpDecaySample514(b *testing.B) {
- benchmarkSample(b, NewExpDecaySample(514, 0.015))
-}
-
-func BenchmarkExpDecaySample1028(b *testing.B) {
- benchmarkSample(b, NewExpDecaySample(1028, 0.015))
-}
-
-func BenchmarkUniformSample257(b *testing.B) {
- benchmarkSample(b, NewUniformSample(257))
-}
-
-func BenchmarkUniformSample514(b *testing.B) {
- benchmarkSample(b, NewUniformSample(514))
-}
-
-func BenchmarkUniformSample1028(b *testing.B) {
- benchmarkSample(b, NewUniformSample(1028))
-}
-
-func TestExpDecaySample10(t *testing.T) {
- rand.Seed(1)
- s := NewExpDecaySample(100, 0.99)
- for i := 0; i < 10; i++ {
- s.Update(int64(i))
- }
- if size := s.Count(); 10 != size {
- t.Errorf("s.Count(): 10 != %v\n", size)
- }
- if size := s.Size(); 10 != size {
- t.Errorf("s.Size(): 10 != %v\n", size)
- }
- if l := len(s.Values()); 10 != l {
- t.Errorf("len(s.Values()): 10 != %v\n", l)
- }
- for _, v := range s.Values() {
- if v > 10 || v < 0 {
- t.Errorf("out of range [0, 10): %v\n", v)
- }
- }
-}
-
-func TestExpDecaySample100(t *testing.T) {
- rand.Seed(1)
- s := NewExpDecaySample(1000, 0.01)
- for i := 0; i < 100; i++ {
- s.Update(int64(i))
- }
- if size := s.Count(); 100 != size {
- t.Errorf("s.Count(): 100 != %v\n", size)
- }
- if size := s.Size(); 100 != size {
- t.Errorf("s.Size(): 100 != %v\n", size)
- }
- if l := len(s.Values()); 100 != l {
- t.Errorf("len(s.Values()): 100 != %v\n", l)
- }
- for _, v := range s.Values() {
- if v > 100 || v < 0 {
- t.Errorf("out of range [0, 100): %v\n", v)
- }
- }
-}
-
-func TestExpDecaySample1000(t *testing.T) {
- rand.Seed(1)
- s := NewExpDecaySample(100, 0.99)
- for i := 0; i < 1000; i++ {
- s.Update(int64(i))
- }
- if size := s.Count(); 1000 != size {
- t.Errorf("s.Count(): 1000 != %v\n", size)
- }
- if size := s.Size(); 100 != size {
- t.Errorf("s.Size(): 100 != %v\n", size)
- }
- if l := len(s.Values()); 100 != l {
- t.Errorf("len(s.Values()): 100 != %v\n", l)
- }
- for _, v := range s.Values() {
- if v > 1000 || v < 0 {
- t.Errorf("out of range [0, 1000): %v\n", v)
- }
- }
-}
-
-// This test makes sure that the sample's priority is not amplified by using
-// nanosecond duration since start rather than second duration since start.
-// The priority becomes +Inf quickly after starting if this is done,
-// effectively freezing the set of samples until a rescale step happens.
-func TestExpDecaySampleNanosecondRegression(t *testing.T) {
- rand.Seed(1)
- s := NewExpDecaySample(100, 0.99)
- for i := 0; i < 100; i++ {
- s.Update(10)
- }
- time.Sleep(1 * time.Millisecond)
- for i := 0; i < 100; i++ {
- s.Update(20)
- }
- v := s.Values()
- avg := float64(0)
- for i := 0; i < len(v); i++ {
- avg += float64(v[i])
- }
- avg /= float64(len(v))
- if avg > 16 || avg < 14 {
- t.Errorf("out of range [14, 16]: %v\n", avg)
- }
-}
-
-func TestExpDecaySampleRescale(t *testing.T) {
- s := NewExpDecaySample(2, 0.001).(*ExpDecaySample)
- s.update(time.Now(), 1)
- s.update(time.Now().Add(time.Hour+time.Microsecond), 1)
- for _, v := range s.values.Values() {
- if v.k == 0.0 {
- t.Fatal("v.k == 0.0")
- }
- }
-}
-
-func TestExpDecaySampleSnapshot(t *testing.T) {
- now := time.Now()
- rand.Seed(1)
- s := NewExpDecaySample(100, 0.99)
- for i := 1; i <= 10000; i++ {
- s.(*ExpDecaySample).update(now.Add(time.Duration(i)), int64(i))
- }
- snapshot := s.Snapshot()
- s.Update(1)
- testExpDecaySampleStatistics(t, snapshot)
-}
-
-func TestExpDecaySampleStatistics(t *testing.T) {
- now := time.Now()
- rand.Seed(1)
- s := NewExpDecaySample(100, 0.99)
- for i := 1; i <= 10000; i++ {
- s.(*ExpDecaySample).update(now.Add(time.Duration(i)), int64(i))
- }
- testExpDecaySampleStatistics(t, s)
-}
-
-func TestUniformSample(t *testing.T) {
- rand.Seed(1)
- s := NewUniformSample(100)
- for i := 0; i < 1000; i++ {
- s.Update(int64(i))
- }
- if size := s.Count(); 1000 != size {
- t.Errorf("s.Count(): 1000 != %v\n", size)
- }
- if size := s.Size(); 100 != size {
- t.Errorf("s.Size(): 100 != %v\n", size)
- }
- if l := len(s.Values()); 100 != l {
- t.Errorf("len(s.Values()): 100 != %v\n", l)
- }
- for _, v := range s.Values() {
- if v > 1000 || v < 0 {
- t.Errorf("out of range [0, 100): %v\n", v)
- }
- }
-}
-
-func TestUniformSampleIncludesTail(t *testing.T) {
- rand.Seed(1)
- s := NewUniformSample(100)
- max := 100
- for i := 0; i < max; i++ {
- s.Update(int64(i))
- }
- v := s.Values()
- sum := 0
- exp := (max - 1) * max / 2
- for i := 0; i < len(v); i++ {
- sum += int(v[i])
- }
- if exp != sum {
- t.Errorf("sum: %v != %v\n", exp, sum)
- }
-}
-
-func TestUniformSampleSnapshot(t *testing.T) {
- s := NewUniformSample(100)
- for i := 1; i <= 10000; i++ {
- s.Update(int64(i))
- }
- snapshot := s.Snapshot()
- s.Update(1)
- testUniformSampleStatistics(t, snapshot)
-}
-
-func TestUniformSampleStatistics(t *testing.T) {
- rand.Seed(1)
- s := NewUniformSample(100)
- for i := 1; i <= 10000; i++ {
- s.Update(int64(i))
- }
- testUniformSampleStatistics(t, s)
-}
-
-func benchmarkSample(b *testing.B, s Sample) {
- var memStats runtime.MemStats
- runtime.ReadMemStats(&memStats)
- pauseTotalNs := memStats.PauseTotalNs
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- s.Update(1)
- }
- b.StopTimer()
- runtime.GC()
- runtime.ReadMemStats(&memStats)
- b.Logf("GC cost: %d ns/op", int(memStats.PauseTotalNs-pauseTotalNs)/b.N)
-}
-
-func testExpDecaySampleStatistics(t *testing.T, s Sample) {
- if count := s.Count(); 10000 != count {
- t.Errorf("s.Count(): 10000 != %v\n", count)
- }
- if min := s.Min(); 107 != min {
- t.Errorf("s.Min(): 107 != %v\n", min)
- }
- if max := s.Max(); 10000 != max {
- t.Errorf("s.Max(): 10000 != %v\n", max)
- }
- if mean := s.Mean(); 4965.98 != mean {
- t.Errorf("s.Mean(): 4965.98 != %v\n", mean)
- }
- if stdDev := s.StdDev(); 2959.825156930727 != stdDev {
- t.Errorf("s.StdDev(): 2959.825156930727 != %v\n", stdDev)
- }
- ps := s.Percentiles([]float64{0.5, 0.75, 0.99})
- if 4615 != ps[0] {
- t.Errorf("median: 4615 != %v\n", ps[0])
- }
- if 7672 != ps[1] {
- t.Errorf("75th percentile: 7672 != %v\n", ps[1])
- }
- if 9998.99 != ps[2] {
- t.Errorf("99th percentile: 9998.99 != %v\n", ps[2])
- }
-}
-
-func testUniformSampleStatistics(t *testing.T, s Sample) {
- if count := s.Count(); 10000 != count {
- t.Errorf("s.Count(): 10000 != %v\n", count)
- }
- if min := s.Min(); 37 != min {
- t.Errorf("s.Min(): 37 != %v\n", min)
- }
- if max := s.Max(); 9989 != max {
- t.Errorf("s.Max(): 9989 != %v\n", max)
- }
- if mean := s.Mean(); 4748.14 != mean {
- t.Errorf("s.Mean(): 4748.14 != %v\n", mean)
- }
- if stdDev := s.StdDev(); 2826.684117548333 != stdDev {
- t.Errorf("s.StdDev(): 2826.684117548333 != %v\n", stdDev)
- }
- ps := s.Percentiles([]float64{0.5, 0.75, 0.99})
- if 4599 != ps[0] {
- t.Errorf("median: 4599 != %v\n", ps[0])
- }
- if 7380.5 != ps[1] {
- t.Errorf("75th percentile: 7380.5 != %v\n", ps[1])
- }
- if 9986.429999999998 != ps[2] {
- t.Errorf("99th percentile: 9986.429999999998 != %v\n", ps[2])
- }
-}
-
-// TestUniformSampleConcurrentUpdateCount would expose data race problems with
-// concurrent Update and Count calls on Sample when test is called with -race
-// argument
-func TestUniformSampleConcurrentUpdateCount(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping in short mode")
- }
- s := NewUniformSample(100)
- for i := 0; i < 100; i++ {
- s.Update(int64(i))
- }
- quit := make(chan struct{})
- go func() {
- t := time.NewTicker(10 * time.Millisecond)
- for {
- select {
- case <-t.C:
- s.Update(rand.Int63())
- case <-quit:
- t.Stop()
- return
- }
- }
- }()
- for i := 0; i < 1000; i++ {
- s.Count()
- time.Sleep(5 * time.Millisecond)
- }
- quit <- struct{}{}
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/timer_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/timer_test.go
deleted file mode 100644
index 2fa415d40..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/timer_test.go
+++ /dev/null
@@ -1,81 +0,0 @@
-package metrics
-
-import (
- "math"
- "testing"
- "time"
-)
-
-func BenchmarkTimer(b *testing.B) {
- tm := NewTimer()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- tm.Update(1)
- }
-}
-
-func TestGetOrRegisterTimer(t *testing.T) {
- r := NewRegistry()
- NewRegisteredTimer("foo", r).Update(47)
- if tm := GetOrRegisterTimer("foo", r); 1 != tm.Count() {
- t.Fatal(tm)
- }
-}
-
-func TestTimerExtremes(t *testing.T) {
- tm := NewTimer()
- tm.Update(math.MaxInt64)
- tm.Update(0)
- if stdDev := tm.StdDev(); 4.611686018427388e+18 != stdDev {
- t.Errorf("tm.StdDev(): 4.611686018427388e+18 != %v\n", stdDev)
- }
-}
-
-func TestTimerFunc(t *testing.T) {
- tm := NewTimer()
- tm.Time(func() { time.Sleep(50e6) })
- if max := tm.Max(); 45e6 > max || max > 55e6 {
- t.Errorf("tm.Max(): 45e6 > %v || %v > 55e6\n", max, max)
- }
-}
-
-func TestTimerZero(t *testing.T) {
- tm := NewTimer()
- if count := tm.Count(); 0 != count {
- t.Errorf("tm.Count(): 0 != %v\n", count)
- }
- if min := tm.Min(); 0 != min {
- t.Errorf("tm.Min(): 0 != %v\n", min)
- }
- if max := tm.Max(); 0 != max {
- t.Errorf("tm.Max(): 0 != %v\n", max)
- }
- if mean := tm.Mean(); 0.0 != mean {
- t.Errorf("tm.Mean(): 0.0 != %v\n", mean)
- }
- if stdDev := tm.StdDev(); 0.0 != stdDev {
- t.Errorf("tm.StdDev(): 0.0 != %v\n", stdDev)
- }
- ps := tm.Percentiles([]float64{0.5, 0.75, 0.99})
- if 0.0 != ps[0] {
- t.Errorf("median: 0.0 != %v\n", ps[0])
- }
- if 0.0 != ps[1] {
- t.Errorf("75th percentile: 0.0 != %v\n", ps[1])
- }
- if 0.0 != ps[2] {
- t.Errorf("99th percentile: 0.0 != %v\n", ps[2])
- }
- if rate1 := tm.Rate1(); 0.0 != rate1 {
- t.Errorf("tm.Rate1(): 0.0 != %v\n", rate1)
- }
- if rate5 := tm.Rate5(); 0.0 != rate5 {
- t.Errorf("tm.Rate5(): 0.0 != %v\n", rate5)
- }
- if rate15 := tm.Rate15(); 0.0 != rate15 {
- t.Errorf("tm.Rate15(): 0.0 != %v\n", rate15)
- }
- if rateMean := tm.RateMean(); 0.0 != rateMean {
- t.Errorf("tm.RateMean(): 0.0 != %v\n", rateMean)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/validate.sh b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/validate.sh
new file mode 100644
index 000000000..f6499982e
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/validate.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+set -e
+
+# check there are no formatting issues
+GOFMT_LINES=`gofmt -l . | wc -l | xargs`
+test $GOFMT_LINES -eq 0 || echo "gofmt needs to be run, ${GOFMT_LINES} files have issues"
+
+# run the tests for the root package
+go test .
diff --git a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/writer_test.go b/Godeps/_workspace/src/github.com/rcrowley/go-metrics/writer_test.go
deleted file mode 100644
index 1aacc2871..000000000
--- a/Godeps/_workspace/src/github.com/rcrowley/go-metrics/writer_test.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package metrics
-
-import (
- "sort"
- "testing"
-)
-
-func TestMetricsSorting(t *testing.T) {
- var namedMetrics = namedMetricSlice{
- {name: "zzz"},
- {name: "bbb"},
- {name: "fff"},
- {name: "ggg"},
- }
-
- sort.Sort(namedMetrics)
- for i, name := range []string{"bbb", "fff", "ggg", "zzz"} {
- if namedMetrics[i].name != name {
- t.Fail()
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/README.markdown b/Godeps/_workspace/src/github.com/robertkrimen/otto/README.markdown
index 571743bf1..fe8e1bd4a 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/README.markdown
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/README.markdown
@@ -20,8 +20,10 @@ Run something in the VM
Get a value out of the VM
- value, err := vm.Get("abc")
- value, _ := value.ToInteger()
+ if value, err := vm.Get("abc"); err == nil {
+ if value_int, err := value.ToInteger(); err == nil {
+ fmt.Printf("", value_int, err)
+ }
}
Set a number
@@ -221,7 +223,7 @@ the interrupt channel to do this:
Where is setTimeout/setInterval?
These timing functions are not actually part of the ECMA-262 specification.
-Typically, they belong to the `windows` object (in the browser). It would not be
+Typically, they belong to the `window` object (in the browser). It would not be
difficult to provide something like these via Go, but you probably want to wrap
otto in an event loop in that case.
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/array_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/array_test.go
deleted file mode 100644
index 06f481bd4..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/array_test.go
+++ /dev/null
@@ -1,716 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestArray(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = [ undefined, "Nothing happens." ];
- abc.length;
- `, 2)
-
- test(`
- abc = ""+[0, 1, 2, 3];
- def = [].toString();
- ghi = [null, 4, "null"].toString();
- [ abc, def, ghi ];
- `, "0,1,2,3,,,4,null")
-
- test(`new Array(0).length`, 0)
-
- test(`new Array(11).length`, 11)
-
- test(`new Array(11, 1).length`, 2)
-
- test(`
- abc = [0, 1, 2, 3];
- abc.xyzzy = "Nothing happens.";
- delete abc[1];
- var xyzzy = delete abc.xyzzy;
- [ abc, xyzzy, abc.xyzzy ];
- `, "0,,2,3,true,")
-
- test(`
- var abc = [0, 1, 2, 3, 4];
- abc.length = 2;
- abc;
- `, "0,1")
-
- test(`raise:
- [].length = 3.14159;
- `, "RangeError")
-
- test(`raise:
- new Array(3.14159);
- `, "RangeError")
-
- test(`
- Object.defineProperty(Array.prototype, "0", {
- value: 100,
- writable: false,
- configurable: true
- });
- abc = [101];
- abc.hasOwnProperty("0") && abc[0] === 101;
- `, true)
-
- test(`
- abc = [,,undefined];
- [ abc.hasOwnProperty(0), abc.hasOwnProperty(1), abc.hasOwnProperty(2) ];
- `, "false,false,true")
-
- test(`
- abc = Object.getOwnPropertyDescriptor(Array, "prototype");
- [ [ typeof Array.prototype ],
- [ abc.writable, abc.enumerable, abc.configurable ] ];
- `, "object,false,false,false")
- })
-}
-
-func TestArray_toString(t *testing.T) {
- tt(t, func() {
- {
- test(`
- Array.prototype.toString = function() {
- return "Nothing happens.";
- }
- abc = Array.prototype.toString();
- def = [].toString();
- ghi = [null, 4, "null"].toString();
-
- [ abc, def, ghi ].join(",");
- `, "Nothing happens.,Nothing happens.,Nothing happens.")
- }
-
- {
- test(`
- Array.prototype.join = undefined
- abc = Array.prototype.toString()
- def = [].toString()
- ghi = [null, 4, "null"].toString()
-
- abc + "," + def + "," + ghi;
- `, "[object Array],[object Array],[object Array]")
- }
- })
-}
-
-func TestArray_toLocaleString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- [ 3.14159, "abc", undefined, new Date(0) ].toLocaleString();
- `, "3.14159,abc,,1970-01-01 00:00:00")
-
- test(`raise:
- [ { toLocaleString: undefined } ].toLocaleString();
- `, "TypeError")
- })
-}
-
-func TestArray_concat(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [0, 1, 2];
- def = [-1, -2, -3];
- ghi = abc.concat(def);
- jkl = abc.concat(def, 3, 4, 5);
- mno = def.concat(-4, -5, abc);
-
- [ ghi, jkl, mno ].join(";");
- `, "0,1,2,-1,-2,-3;0,1,2,-1,-2,-3,3,4,5;-1,-2,-3,-4,-5,0,1,2")
-
- test(`
- var abc = [,1];
- var def = abc.concat([], [,]);
-
- def.getClass = Object.prototype.toString;
-
- [ def.getClass(), typeof def[0], def[1], typeof def[2], def.length ];
- `, "[object Array],undefined,1,undefined,3")
-
- test(`
- Object.defineProperty(Array.prototype, "0", {
- value: 100,
- writable: false,
- configurable: true
- });
-
- var abc = Array.prototype.concat.call(101);
-
- var hasProperty = abc.hasOwnProperty("0");
- var instanceOfVerify = typeof abc[0] === "object";
- var verifyValue = false;
- verifyValue = abc[0] == 101;
-
- var verifyEnumerable = false;
- for (var property in abc) {
- if (property === "0" && abc.hasOwnProperty("0")) {
- verifyEnumerable = true;
- }
- }
-
- var verifyWritable = false;
- abc[0] = 12;
- verifyWritable = abc[0] === 12;
-
- var verifyConfigurable = false;
- delete abc[0];
- verifyConfigurable = abc.hasOwnProperty("0");
-
- [ hasProperty, instanceOfVerify, verifyValue, !verifyConfigurable, verifyEnumerable, verifyWritable ];
- `, "true,true,true,true,true,true")
- })
-}
-
-func TestArray_splice(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [0, 1, 2];
- def = abc.splice(1, 2, 3, 4, 5);
- ghi = [].concat(abc);
- jkl = ghi.splice(17, 21, 7, 8, 9);
- [ abc, def, ghi, jkl ].join(";");
- `, "0,3,4,5;1,2;0,3,4,5,7,8,9;")
- })
-}
-
-func TestArray_shift(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [0, 1, 2];
- def = abc.shift();
- ghi = [].concat(abc);
- jkl = abc.shift();
- mno = [].concat(abc);
- pqr = abc.shift();
- stu = [].concat(abc);
- vwx = abc.shift();
-
- [ abc, def, ghi, jkl, mno, pqr, stu, vwx ].join(";");
- `, ";0;1,2;1;2;2;;")
- })
-}
-
-func TestArray_push(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [0];
- def = abc.push(1);
- ghi = [].concat(abc);
- jkl = abc.push(2,3,4);
-
- [ abc, def, ghi, jkl ].join(";");
- `, "0,1,2,3,4;2;0,1;5")
- })
-}
-
-func TestArray_pop(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [0,1];
- def = abc.pop();
- ghi = [].concat(abc);
- jkl = abc.pop();
- mno = [].concat(abc);
- pqr = abc.pop();
-
- [ abc, def, ghi, jkl, mno, pqr ].join(";");
- `, ";1;0;0;;")
- })
-}
-
-func TestArray_slice(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [0,1,2,3];
- def = abc.slice();
- ghi = abc.slice(1);
- jkl = abc.slice(3,-1);
- mno = abc.slice(2,-1);
- pqr = abc.slice(-1, -10);
-
- [ abc, def, ghi, jkl, mno, pqr ].join(";");
- `, "0,1,2,3;0,1,2,3;1,2,3;;2;")
-
- // Array.protoype.slice is generic
- test(`
- abc = { 0: 0, 1: 1, 2: 2, 3: 3 };
- abc.length = 4;
- def = Array.prototype.slice.call(abc);
- ghi = Array.prototype.slice.call(abc,1);
- jkl = Array.prototype.slice.call(abc,3,-1);
- mno = Array.prototype.slice.call(abc,2,-1);
- pqr = Array.prototype.slice.call(abc,-1,-10);
-
- [ abc, def, ghi, jkl, pqr ].join(";");
- `, "[object Object];0,1,2,3;1,2,3;;")
- })
-}
-
-func TestArray_sliceArguments(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- (function(){
- return Array.prototype.slice.call(arguments, 1)
- })({}, 1, 2, 3);
- `, "1,2,3")
- })
-}
-
-func TestArray_unshift(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [];
- def = abc.unshift(0);
- ghi = [].concat(abc);
- jkl = abc.unshift(1,2,3,4);
-
- [ abc, def, ghi, jkl ].join(";");
- `, "1,2,3,4,0;1;0;5")
- })
-}
-
-func TestArray_reverse(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [0,1,2,3].reverse();
- def = [0,1,2].reverse();
-
- [ abc, def ];
- `, "3,2,1,0,2,1,0")
- })
-}
-
-func TestArray_sort(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [0,1,2,3].sort();
- def = [3,2,1,0].sort();
- ghi = [].sort();
- jkl = [0].sort();
- mno = [1,0].sort();
- pqr = [1,5,-10, 100, 8, 72, 401, 0.05].sort();
- stu = [1,5,-10, 100, 8, 72, 401, 0.05].sort(function(x, y){
- return x == y ? 0 : x < y ? -1 : 1
- });
-
- [ abc, def, ghi, jkl, mno, pqr, stu ].join(";");
- `, "0,1,2,3;0,1,2,3;;0;0,1;-10,0.05,1,100,401,5,72,8;-10,0.05,1,5,8,72,100,401")
-
- test(`Array.prototype.sort.length`, 1)
- })
-}
-
-func TestArray_isArray(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ Array.isArray.length, Array.isArray(), Array.isArray([]), Array.isArray({}) ];
- `, "1,false,true,false")
-
- test(`Array.isArray(Math)`, false)
- })
-}
-
-func TestArray_indexOf(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`['a', 'b', 'c', 'b'].indexOf('b')`, 1)
-
- test(`['a', 'b', 'c', 'b'].indexOf('b', 2)`, 3)
-
- test(`['a', 'b', 'c', 'b'].indexOf('b', -2)`, 3)
-
- test(`
- Object.prototype.indexOf = Array.prototype.indexOf;
- var abc = {0: 'a', 1: 'b', 2: 'c', length: 3};
- abc.indexOf('c');
- `, 2)
-
- test(`[true].indexOf(true, "-Infinity")`, 0)
-
- test(`
- var target = {};
- Math[3] = target;
- Math.length = 5;
- Array.prototype.indexOf.call(Math, target) === 3;
- `, true)
-
- test(`
- var _NaN = NaN;
- var abc = new Array("NaN", undefined, 0, false, null, {toString:function(){return NaN}}, "false", _NaN, NaN);
- abc.indexOf(NaN);
- `, -1)
-
- test(`
- var abc = {toString:function (){return 0}};
- var def = 1;
- var ghi = -(4/3);
- var jkl = new Array(false, undefined, null, "0", abc, -1.3333333333333, "string", -0, true, +0, def, 1, 0, false, ghi, -(4/3));
- [ jkl.indexOf(-(4/3)), jkl.indexOf(0), jkl.indexOf(-0), jkl.indexOf(1) ];
- `, "14,7,7,10")
- })
-}
-
-func TestArray_lastIndexOf(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`['a', 'b', 'c', 'b'].lastIndexOf('b')`, 3)
-
- test(`['a', 'b', 'c', 'b'].lastIndexOf('b', 2)`, 1)
-
- test(`['a', 'b', 'c', 'b'].lastIndexOf('b', -2)`, 1)
-
- test(`
- Object.prototype.lastIndexOf = Array.prototype.lastIndexOf;
- var abc = {0: 'a', 1: 'b', 2: 'c', 3: 'b', length: 4};
- abc.lastIndexOf('b');
- `, 3)
-
- test(`
- var target = {};
- Math[3] = target;
- Math.length = 5;
- [ Array.prototype.lastIndexOf.call(Math, target) === 3 ];
- `, "true")
-
- test(`
- var _NaN = NaN;
- var abc = new Array("NaN", undefined, 0, false, null, {toString:function(){return NaN}}, "false", _NaN, NaN);
- abc.lastIndexOf(NaN);
- `, -1)
-
- test(`
- var abc = {toString:function (){return 0}};
- var def = 1;
- var ghi = -(4/3);
- var jkl = new Array(false, undefined, null, "0", abc, -1.3333333333333, "string", -0, true, +0, def, 1, 0, false, ghi, -(4/3));
- [ jkl.lastIndexOf(-(4/3)), jkl.indexOf(0), jkl.indexOf(-0), jkl.indexOf(1) ];
- `, "15,7,7,10")
- })
-}
-
-func TestArray_every(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: [].every()`, "TypeError")
-
- test(`raise: [].every("abc")`, "TypeError")
-
- test(`[].every(function() { return false })`, true)
-
- test(`[1,2,3].every(function() { return false })`, false)
-
- test(`[1,2,3].every(function() { return true })`, true)
-
- test(`[1,2,3].every(function(_, index) { if (index === 1) return true })`, false)
-
- test(`
- var abc = function(value, index, object) {
- return ('[object Math]' !== Object.prototype.toString.call(object));
- };
-
- Math.length = 1;
- Math[0] = 1;
- !Array.prototype.every.call(Math, abc);
- `, true)
-
- test(`
- var def = false;
-
- var abc = function(value, index, object) {
- def = true;
- return this === Math;
- };
-
- [11].every(abc, Math) && def;
- `, true)
-
- test(`
- var def = false;
-
- var abc = function(value, index, object) {
- def = true;
- return Math;
- };
-
- [11].every(abc) && def;
- `, true)
- })
-}
-
-func TestArray_some(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: [].some("abc")`, "TypeError")
-
- test(`[].some(function() { return true })`, false)
-
- test(`[1,2,3].some(function() { return false })`, false)
-
- test(`[1,2,3].some(function() { return true })`, true)
-
- test(`[1,2,3].some(function(_, index) { if (index === 1) return true })`, true)
-
- test(`
- var abc = function(value, index, object) {
- return ('[object Math]' !== Object.prototype.toString.call(object));
- };
-
- Math.length = 1;
- Math[0] = 1;
- !Array.prototype.some.call(Math, abc);
- `, true)
-
- test(`
- var abc = function(value, index, object) {
- return this === Math;
- };
-
- [11].some(abc, Math);
- `, true)
-
- test(`
- var abc = function(value, index, object) {
- return Math;
- };
-
- [11].some(abc);
- `, true)
- })
-}
-
-func TestArray_forEach(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: [].forEach("abc")`, "TypeError")
-
- test(`
- var abc = 0;
- [].forEach(function(value) {
- abc += value;
- });
- abc;
- `, 0)
-
- test(`
- abc = 0;
- var def = [];
- [1,2,3].forEach(function(value, index) {
- abc += value;
- def.push(index);
- });
- [ abc, def ];
- `, "6,0,1,2")
-
- test(`
- var def = false;
- var abc = function(value, index, object) {
- def = ('[object Math]' === Object.prototype.toString.call(object));
- };
-
- Math.length = 1;
- Math[0] = 1;
- Array.prototype.forEach.call(Math, abc);
- def;
- `, true)
-
- test(`
- var def = false;
- var abc = function(value, index, object) {
- def = this === Math;
- };
-
- [11].forEach(abc, Math);
- def;
- `, true)
- })
-}
-
-func TestArray_indexing(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = new Array(0, 1);
- var def = abc.length;
- abc[4294967296] = 10; // 2^32 => 0
- abc[4294967297] = 11; // 2^32+1 => 1
- [ def, abc.length, abc[0], abc[1], abc[4294967296] ];
- `, "2,2,0,1,10")
-
- test(`
- abc = new Array(0, 1);
- def = abc.length;
- abc[4294967295] = 10;
- var ghi = abc.length;
- abc[4294967299] = 12;
- var jkl = abc.length;
- abc[4294967294] = 11;
- [ def, ghi, jkl, abc.length, abc[4294967295], abc[4294967299] ];
- `, "2,2,2,4294967295,10,12")
- })
-}
-
-func TestArray_map(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: [].map("abc")`, "TypeError")
-
- test(`[].map(function() { return 1 }).length`, 0)
-
- test(`[1,2,3].map(function(value) { return value * value })`, "1,4,9")
-
- test(`[1,2,3].map(function(value) { return 1 })`, "1,1,1")
-
- test(`
- var abc = function(value, index, object) {
- return ('[object Math]' === Object.prototype.toString.call(object));
- };
-
- Math.length = 1;
- Math[0] = 1;
- Array.prototype.map.call(Math, abc)[0];
- `, true)
-
- test(`
- var abc = function(value, index, object) {
- return this === Math;
- };
-
- [11].map(abc, Math)[0];
- `, true)
- })
-}
-
-func TestArray_filter(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: [].filter("abc")`, "TypeError")
-
- test(`[].filter(function() { return 1 }).length`, 0)
-
- test(`[1,2,3].filter(function() { return false }).length`, 0)
-
- test(`[1,2,3].filter(function() { return true })`, "1,2,3")
- })
-}
-
-func TestArray_reduce(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: [].reduce("abc")`, "TypeError")
-
- test(`raise: [].reduce(function() {})`, "TypeError")
-
- test(`[].reduce(function() {}, 0)`, 0)
-
- test(`[].reduce(function() {}, undefined)`, "undefined")
-
- test(`['a','b','c'].reduce(function(result, value) { return result+', '+value })`, "a, b, c")
-
- test(`[1,2,3].reduce(function(result, value) { return result + value }, 4)`, 10)
-
- test(`[1,2,3].reduce(function(result, value) { return result + value })`, 6)
- })
-}
-
-func TestArray_reduceRight(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: [].reduceRight("abc")`, "TypeError")
-
- test(`raise: [].reduceRight(function() {})`, "TypeError")
-
- test(`[].reduceRight(function() {}, 0)`, 0)
-
- test(`[].reduceRight(function() {}, undefined)`, "undefined")
-
- test(`['a','b','c'].reduceRight(function(result, value) { return result+', '+value })`, "c, b, a")
-
- test(`[1,2,3].reduceRight(function(result, value) { return result + value }, 4)`, 10)
-
- test(`[1,2,3].reduceRight(function(result, value) { return result + value })`, 6)
- })
-}
-
-func TestArray_defineOwnProperty(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = [];
- Object.defineProperty(abc, "length", {
- writable: false
- });
- abc.length;
- `, 0)
-
- test(`raise:
- var abc = [];
- var exception;
- Object.defineProperty(abc, "length", {
- writable: false
- });
- Object.defineProperty(abc, "length", {
- writable: true
- });
- `, "TypeError")
- })
-}
-
-func TestArray_new(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = new Array(null);
- var def = new Array(undefined);
- [ abc.length, abc[0] === null, def.length, def[0] === undefined ]
- `, "1,true,1,true")
-
- test(`
- var abc = new Array(new Number(0));
- var def = new Array(new Number(4294967295));
- [ abc.length, typeof abc[0], abc[0] == 0, def.length, typeof def[0], def[0] == 4294967295 ]
- `, "1,object,true,1,object,true")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/bug_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/bug_test.go
deleted file mode 100644
index 5e4d90bae..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/bug_test.go
+++ /dev/null
@@ -1,617 +0,0 @@
-package otto
-
-import (
- "testing"
- "time"
-)
-
-func Test_262(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // 11.13.1-1-1
- test(`raise:
- eval("42 = 42;");
- `, "ReferenceError: Invalid left-hand side in assignment")
- })
-}
-
-func Test_issue5(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`'abc' === 'def'`, false)
- test(`'\t' === '\r'`, false)
- })
-}
-
-func Test_issue13(t *testing.T) {
- tt(t, func() {
- test, tester := test()
- vm := tester.vm
-
- value, err := vm.ToValue(map[string]interface{}{
- "string": "Xyzzy",
- "number": 42,
- "array": []string{"def", "ghi"},
- })
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
-
- fn, err := vm.Object(`
- (function(value){
- return ""+[value.string, value.number, value.array]
- })
- `)
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
-
- result, err := fn.Value().Call(fn.Value(), value)
- if err != nil {
- t.Error(err)
- t.FailNow()
- }
- is(result.string(), "Xyzzy,42,def,ghi")
-
- anything := struct {
- Abc interface{}
- }{
- Abc: map[string]interface{}{
- "def": []interface{}{
- []interface{}{
- "a", "b", "c", "", "d", "e",
- },
- map[string]interface{}{
- "jkl": "Nothing happens.",
- },
- },
- "ghi": -1,
- },
- }
-
- vm.Set("anything", anything)
- test(`
- [
- anything,
- "~",
- anything.Abc,
- "~",
- anything.Abc.def,
- "~",
- anything.Abc.def[1].jkl,
- "~",
- anything.Abc.ghi,
- ];
- `, "[object Object],~,[object Object],~,a,b,c,,d,e,[object Object],~,Nothing happens.,~,-1")
- })
-}
-
-func Test_issue16(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- test(`
- var def = {
- "abc": ["abc"],
- "xyz": ["xyz"]
- };
- def.abc.concat(def.xyz);
- `, "abc,xyz")
-
- vm.Set("ghi", []string{"jkl", "mno"})
-
- test(`
- def.abc.concat(def.xyz).concat(ghi);
- `, "abc,xyz,jkl,mno")
-
- test(`
- ghi.concat(def.abc.concat(def.xyz));
- `, "jkl,mno,abc,xyz")
-
- vm.Set("pqr", []interface{}{"jkl", 42, 3.14159, true})
-
- test(`
- pqr.concat(ghi, def.abc, def, def.xyz);
- `, "jkl,42,3.14159,true,jkl,mno,abc,[object Object],xyz")
-
- test(`
- pqr.concat(ghi, def.abc, def, def.xyz).length;
- `, 9)
- })
-}
-
-func Test_issue21(t *testing.T) {
- tt(t, func() {
- vm1 := New()
- vm1.Run(`
- abc = {}
- abc.ghi = "Nothing happens.";
- var jkl = 0;
- abc.def = function() {
- jkl += 1;
- return 1;
- }
- `)
- abc, err := vm1.Get("abc")
- is(err, nil)
-
- vm2 := New()
- vm2.Set("cba", abc)
- _, err = vm2.Run(`
- var pqr = 0;
- cba.mno = function() {
- pqr -= 1;
- return 1;
- }
- cba.def();
- cba.def();
- cba.def();
- `)
- is(err, nil)
-
- jkl, err := vm1.Get("jkl")
- is(err, nil)
- is(jkl, 3)
-
- _, err = vm1.Run(`
- abc.mno();
- abc.mno();
- abc.mno();
- `)
- is(err, nil)
-
- pqr, err := vm2.Get("pqr")
- is(err, nil)
- is(pqr, -3)
- })
-}
-
-func Test_issue24(t *testing.T) {
- tt(t, func() {
- _, vm := test()
-
- {
- vm.Set("abc", []string{"abc", "def", "ghi"})
- value, err := vm.Get("abc")
- is(err, nil)
- export, _ := value.Export()
- {
- value, valid := export.([]string)
- is(valid, true)
-
- is(value[0], "abc")
- is(value[2], "ghi")
- }
- }
-
- {
- vm.Set("abc", [...]string{"abc", "def", "ghi"})
- value, err := vm.Get("abc")
- is(err, nil)
- export, _ := value.Export()
- {
- value, valid := export.([3]string)
- is(valid, true)
-
- is(value[0], "abc")
- is(value[2], "ghi")
- }
- }
-
- {
- vm.Set("abc", &[...]string{"abc", "def", "ghi"})
- value, err := vm.Get("abc")
- is(err, nil)
- export, _ := value.Export()
- {
- value, valid := export.(*[3]string)
- is(valid, true)
-
- is(value[0], "abc")
- is(value[2], "ghi")
- }
- }
-
- {
- vm.Set("abc", map[int]string{0: "abc", 1: "def", 2: "ghi"})
- value, err := vm.Get("abc")
- is(err, nil)
- export, _ := value.Export()
- {
- value, valid := export.(map[int]string)
- is(valid, true)
-
- is(value[0], "abc")
- is(value[2], "ghi")
- }
- }
-
- {
- vm.Set("abc", _abcStruct{Abc: true, Ghi: "Nothing happens."})
- value, err := vm.Get("abc")
- is(err, nil)
- export, _ := value.Export()
- {
- value, valid := export.(_abcStruct)
- is(valid, true)
-
- is(value.Abc, true)
- is(value.Ghi, "Nothing happens.")
- }
- }
-
- {
- vm.Set("abc", &_abcStruct{Abc: true, Ghi: "Nothing happens."})
- value, err := vm.Get("abc")
- is(err, nil)
- export, _ := value.Export()
- {
- value, valid := export.(*_abcStruct)
- is(valid, true)
-
- is(value.Abc, true)
- is(value.Ghi, "Nothing happens.")
- }
- }
- })
-}
-
-func Test_issue39(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = 0, def = [], ghi = function() {
- if (abc < 10) return ++abc;
- return undefined;
- }
- for (var jkl; (jkl = ghi());) def.push(jkl);
- def;
- `, "1,2,3,4,5,6,7,8,9,10")
-
- test(`
- var abc = ["1", "2", "3", "4"];
- var def = [];
- for (var ghi; (ghi = abc.shift());) {
- def.push(ghi);
- }
- def;
- `, "1,2,3,4")
- })
-}
-
-func Test_issue64(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- defer mockTimeLocal(time.UTC)()
-
- abc := map[string]interface{}{
- "time": time.Unix(0, 0),
- }
- vm.Set("abc", abc)
-
- def := struct {
- Public string
- private string
- }{
- "Public", "private",
- }
- vm.Set("def", def)
-
- test(`"sec" in abc.time`, false)
-
- test(`
- [ "Public" in def, "private" in def, def.Public, def.private ];
- `, "true,false,Public,")
-
- test(`JSON.stringify(abc)`, `{"time":"1970-01-01T00:00:00Z"}`)
- })
-}
-
-func Test_issue73(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- vm.Set("abc", [4]int{3, 2, 1, 0})
-
- test(`
- var def = [ 0, 1, 2, 3 ];
- JSON.stringify(def) + JSON.stringify(abc);
- `, "[0,1,2,3][3,2,1,0]")
- })
-}
-
-func Test_7_3_1(t *testing.T) {
- tt(t, func() {
- test(`
- eval("var test7_3_1\u2028abc = 66;");
- [ abc, typeof test7_3_1 ];
- `, "66,undefined")
- })
-}
-
-func Test_7_3_3(t *testing.T) {
- tt(t, func() {
- test(`raise:
- eval("//\u2028 =;");
- `, "SyntaxError: Unexpected token =")
- })
-}
-
-func Test_S7_3_A2_1_T1(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- eval("'\u000Astr\u000Aing\u000A'")
- `, "SyntaxError: Unexpected token ILLEGAL")
- })
-}
-
-func Test_S7_8_3_A2_1_T1(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ .0 === 0.0, .0, .1 === 0.1, .1 ]
- `, "true,0,true,0.1")
- })
-}
-
-func Test_S7_8_4_A4_2_T3(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- "\a"
- `, "a")
- })
-}
-
-func Test_S7_9_A1(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var def;
- abc: for (var i = 0; i <= 0; i++) {
- for (var j = 0; j <= 1; j++) {
- if (j === 0) {
- continue abc;
- } else {
- def = true;
- }
- }
- }
- [ def, i, j ];
- `, ",1,0")
- })
-}
-
-func Test_S7_9_A3(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- (function(){
- return
- 1;
- })()
- `, "undefined")
- })
-}
-
-func Test_7_3_10(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- eval("var \u0061\u0062\u0063 = 3.14159;");
- abc;
- `, 3.14159)
-
- test(`
- abc = undefined;
- eval("var \\u0061\\u0062\\u0063 = 3.14159;");
- abc;
- `, 3.14159)
- })
-}
-
-func Test_bug(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // 10.4.2-1-5
- test(`
- "abc\
-def"
- `, "abcdef")
-
- test(`
- eval("'abc';\
- 'def'")
- `, "def")
-
- // S12.6.1_A10
- test(`
- var abc = 0;
- do {
- if(typeof(def) === "function"){
- abc = -1;
- break;
- } else {
- abc = 1;
- break;
- }
- } while(function def(){});
- abc;
- `, 1)
-
- // S12.7_A7
- test(`raise:
- abc:
- while (true) {
- eval("continue abc");
- }
- `, "SyntaxError: Undefined label 'abc'")
-
- // S15.1.2.1_A3.3_T3
- test(`raise:
- eval("return");
- `, "SyntaxError: Illegal return statement")
-
- // 15.2.3.3-2-33
- test(`
- var abc = { "AB\n\\cd": 1 };
- Object.getOwnPropertyDescriptor(abc, "AB\n\\cd").value;
- `, 1)
-
- // S15.3_A2_T1
- test(`raise:
- Function.call(this, "var x / = 1;");
- `, "SyntaxError: Unexpected token /")
-
- // ?
- test(`
- (function(){
- var abc = [];
- (function(){
- abc.push(0);
- abc.push(1);
- })(undefined);
- if ((function(){ return true; })()) {
- (function(){
- abc.push(2);
- })();
- }
- return abc;
- })();
- `, "0,1,2")
-
- if false {
- // 15.9.5.43-0-10
- // Should be an invalid date
- test(`
- date = new Date(1970, 0, -99999999, 0, 0, 0, 1);
- `, "")
- }
-
- // S7.8.3_A1.2_T1
- test(`
- [ 0e1, 1e1, 2e1, 3e1, 4e1, 5e1, 6e1, 7e1, 8e1, 9e1 ];
- `, "0,10,20,30,40,50,60,70,80,90")
-
- // S15.10.2.7_A3_T2
- test(`
- var abc = /\s+abc\s+/.exec("\t abc def");
- [ abc.length, abc.index, abc.input, abc ];
- `, "1,0,\t abc def,\t abc ")
- })
-}
-
-func Test_issue79(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- vm.Set("abc", []_abcStruct{
- {
- Ghi: "一",
- Def: 1,
- },
- {
- Def: 3,
- Ghi: "三",
- },
- {
- Def: 2,
- Ghi: "二",
- },
- {
- Def: 4,
- Ghi: "四",
- },
- })
-
- test(`
- abc.sort(function(a,b){ return b.Def-a.Def });
- def = [];
- for (i = 0; i < abc.length; i++) {
- def.push(abc[i].String())
- }
- def;
- `, "四,三,二,一")
- })
-}
-
-func Test_issue80(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- JSON.stringify([
- 1401868959,
- 14018689591,
- 140186895901,
- 1401868959001,
- 14018689590001,
- 140186895900001,
- 1401868959000001,
- 1401868959000001.5,
- 14018689590000001,
- 140186895900000001,
- 1401868959000000001,
- 14018689590000000001,
- 140186895900000000001,
- 140186895900000000001.5
- ]);
- `, "[1401868959,14018689591,140186895901,1401868959001,14018689590001,140186895900001,1401868959000001,1.4018689590000015e+15,14018689590000001,140186895900000001,1401868959000000001,1.401868959e+19,1.401868959e+20,1.401868959e+20]")
- })
-}
-
-func Test_issue87(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- test(`
- var def = 0;
- abc: {
- for (;;) {
- def = !1;
- break abc;
- }
- def = !0;
- }
- def;
- `, false)
-
- _, err := vm.Run(`
-/*
-CryptoJS v3.1.2
-code.google.com/p/crypto-js
-(c) 2009-2013 by Jeff Mott. All rights reserved.
-code.google.com/p/crypto-js/wiki/License
-*/
-var CryptoJS=CryptoJS||function(h,s){var f={},g=f.lib={},q=function(){},m=g.Base={extend:function(a){q.prototype=this;var c=new q;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},
-r=g.WordArray=m.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=s?c:4*a.length},toString:function(a){return(a||k).stringify(this)},concat:function(a){var c=this.words,d=a.words,b=this.sigBytes;a=a.sigBytes;this.clamp();if(b%4)for(var e=0;e<a;e++)c[b+e>>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((b+e)%4);else if(65535<d.length)for(e=0;e<a;e+=4)c[b+e>>>2]=d[e>>>2];else c.push.apply(c,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<
-32-8*(c%4);a.length=h.ceil(c/4)},clone:function(){var a=m.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],d=0;d<a;d+=4)c.push(4294967296*h.random()|0);return new r.init(c,a)}}),l=f.enc={},k=l.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var d=[],b=0;b<a;b++){var e=c[b>>>2]>>>24-8*(b%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var c=a.length,d=[],b=0;b<c;b+=2)d[b>>>3]|=parseInt(a.substr(b,
-2),16)<<24-4*(b%8);return new r.init(d,c/2)}},n=l.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var d=[],b=0;b<a;b++)d.push(String.fromCharCode(c[b>>>2]>>>24-8*(b%4)&255));return d.join("")},parse:function(a){for(var c=a.length,d=[],b=0;b<c;b++)d[b>>>2]|=(a.charCodeAt(b)&255)<<24-8*(b%4);return new r.init(d,c)}},j=l.Utf8={stringify:function(a){try{return decodeURIComponent(escape(n.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return n.parse(unescape(encodeURIComponent(a)))}},
-u=g.BufferedBlockAlgorithm=m.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=j.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,d=c.words,b=c.sigBytes,e=this.blockSize,f=b/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;b=h.min(4*a,b);if(a){for(var g=0;g<a;g+=e)this._doProcessBlock(d,g);g=d.splice(0,a);c.sigBytes-=b}return new r.init(g,b)},clone:function(){var a=m.clone.call(this);
-a._data=this._data.clone();return a},_minBufferSize:0});g.Hasher=u.extend({cfg:m.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){u.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(c,d){return(new a.init(d)).finalize(c)}},_createHmacHelper:function(a){return function(c,d){return(new t.HMAC.init(a,
-d)).finalize(c)}}});var t=f.algo={};return f}(Math);
-(function(h){for(var s=CryptoJS,f=s.lib,g=f.WordArray,q=f.Hasher,f=s.algo,m=[],r=[],l=function(a){return 4294967296*(a-(a|0))|0},k=2,n=0;64>n;){var j;a:{j=k;for(var u=h.sqrt(j),t=2;t<=u;t++)if(!(j%t)){j=!1;break a}j=!0}j&&(8>n&&(m[n]=l(h.pow(k,0.5))),r[n]=l(h.pow(k,1/3)),n++);k++}var a=[],f=f.SHA256=q.extend({_doReset:function(){this._hash=new g.init(m.slice(0))},_doProcessBlock:function(c,d){for(var b=this._hash.words,e=b[0],f=b[1],g=b[2],j=b[3],h=b[4],m=b[5],n=b[6],q=b[7],p=0;64>p;p++){if(16>p)a[p]=
-c[d+p]|0;else{var k=a[p-15],l=a[p-2];a[p]=((k<<25|k>>>7)^(k<<14|k>>>18)^k>>>3)+a[p-7]+((l<<15|l>>>17)^(l<<13|l>>>19)^l>>>10)+a[p-16]}k=q+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&m^~h&n)+r[p]+a[p];l=((e<<30|e>>>2)^(e<<19|e>>>13)^(e<<10|e>>>22))+(e&f^e&g^f&g);q=n;n=m;m=h;h=j+k|0;j=g;g=f;f=e;e=k+l|0}b[0]=b[0]+e|0;b[1]=b[1]+f|0;b[2]=b[2]+g|0;b[3]=b[3]+j|0;b[4]=b[4]+h|0;b[5]=b[5]+m|0;b[6]=b[6]+n|0;b[7]=b[7]+q|0},_doFinalize:function(){var a=this._data,d=a.words,b=8*this._nDataBytes,e=8*a.sigBytes;
-d[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=h.floor(b/4294967296);d[(e+64>>>9<<4)+15]=b;a.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var a=q.clone.call(this);a._hash=this._hash.clone();return a}});s.SHA256=q._createHelper(f);s.HmacSHA256=q._createHmacHelper(f)})(Math);
-(function(){var h=CryptoJS,s=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(f,g){f=this._hasher=new f.init;"string"==typeof g&&(g=s.parse(g));var h=f.blockSize,m=4*h;g.sigBytes>m&&(g=f.finalize(g));g.clamp();for(var r=this._oKey=g.clone(),l=this._iKey=g.clone(),k=r.words,n=l.words,j=0;j<h;j++)k[j]^=1549556828,n[j]^=909522486;r.sigBytes=l.sigBytes=m;this.reset()},reset:function(){var f=this._hasher;f.reset();f.update(this._iKey)},update:function(f){this._hasher.update(f);return this},finalize:function(f){var g=
-this._hasher;f=g.finalize(f);g.reset();return g.finalize(this._oKey.clone().concat(f))}})})();
- `)
- is(err, nil)
-
- test(`CryptoJS.HmacSHA256("Message", "secret");`, "aa747c502a898200f9e4fa21bac68136f886a0e27aec70ba06daf2e2a5cb5597")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_array.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_array.go
index 44bf88569..160a251c6 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_array.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_array.go
@@ -420,7 +420,7 @@ func arraySortQuickPartition(thisObject *_object, left, right, pivot uint, compa
arraySortSwap(thisObject, pivot, right) // Right is now the pivot value
cursor := left
for index := left; index < right; index++ {
- if sortCompare(thisObject, index, right, compare) == -1 { // Compare to the pivot value
+ if sortCompare(thisObject, index, right, compare) < 0 { // Compare to the pivot value
arraySortSwap(thisObject, index, cursor)
cursor += 1
}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_test.go
deleted file mode 100644
index f5be00ab6..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/builtin_test.go
+++ /dev/null
@@ -1,136 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestString_substr(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [
- "abc".substr(0,1), // "a"
- "abc".substr(0,2), // "ab"
- "abc".substr(0,3), // "abc"
- "abc".substr(0,4), // "abc"
- "abc".substr(0,9), // "abc"
- ];
- `, "a,ab,abc,abc,abc")
-
- test(`
- [
- "abc".substr(1,1), // "b"
- "abc".substr(1,2), // "bc"
- "abc".substr(1,3), // "bc"
- "abc".substr(1,4), // "bc"
- "abc".substr(1,9), // "bc"
- ];
- `, "b,bc,bc,bc,bc")
-
- test(`
- [
- "abc".substr(2,1), // "c"
- "abc".substr(2,2), // "c"
- "abc".substr(2,3), // "c"
- "abc".substr(2,4), // "c"
- "abc".substr(2,9), // "c"
- ];
- `, "c,c,c,c,c")
-
- test(`
- [
- "abc".substr(3,1), // ""
- "abc".substr(3,2), // ""
- "abc".substr(3,3), // ""
- "abc".substr(3,4), // ""
- "abc".substr(3,9), // ""
- ];
- `, ",,,,")
-
- test(`
- [
- "abc".substr(0), // "abc"
- "abc".substr(1), // "bc"
- "abc".substr(2), // "c"
- "abc".substr(3), // ""
- "abc".substr(9), // ""
- ];
- `, "abc,bc,c,,")
-
- test(`
- [
- "abc".substr(-9), // "abc"
- "abc".substr(-3), // "abc"
- "abc".substr(-2), // "bc"
- "abc".substr(-1), // "c"
- ];
- `, "abc,abc,bc,c")
-
- test(`
- [
- "abc".substr(-9, 1), // "a"
- "abc".substr(-3, 1), // "a"
- "abc".substr(-2, 1), // "b"
- "abc".substr(-1, 1), // "c"
- "abc".substr(-1, 2), // "c"
- ];
- `, "a,a,b,c,c")
-
- test(`"abcd".substr(3, 5)`, "d")
- })
-}
-
-func Test_builtin_escape(t *testing.T) {
- tt(t, func() {
- is(builtin_escape("abc"), "abc")
-
- is(builtin_escape("="), "%3D")
-
- is(builtin_escape("abc=%+32"), "abc%3D%25+32")
-
- is(builtin_escape("世界"), "%u4E16%u754C")
- })
-}
-
-func Test_builtin_unescape(t *testing.T) {
- tt(t, func() {
- is(builtin_unescape("abc"), "abc")
-
- is(builtin_unescape("=%3D"), "==")
-
- is(builtin_unescape("abc%3D%25+32"), "abc=%+32")
-
- is(builtin_unescape("%u4E16%u754C"), "世界")
- })
-}
-
-func TestGlobal_escape(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [
- escape("abc"), // "abc"
- escape("="), // "%3D"
- escape("abc=%+32"), // "abc%3D%25+32"
- escape("\u4e16\u754c"), // "%u4E16%u754C"
- ];
- `, "abc,%3D,abc%3D%25+32,%u4E16%u754C")
- })
-}
-
-func TestGlobal_unescape(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [
- unescape("abc"), // "abc"
- unescape("=%3D"), // "=="
- unescape("abc%3D%25+32"), // "abc=%+32"
- unescape("%u4E16%u754C"), // "世界"
- ];
- `, "abc,==,abc=%+32,世界")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/clone.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/clone.go
index f79901b35..82cb0f0af 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/clone.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/clone.go
@@ -140,11 +140,23 @@ func (clone *_clone) stash(in _stash) _stash {
func (clone *_clone) property(in _property) _property {
out := in
- if value, valid := in.value.(Value); valid {
+
+ switch value := in.value.(type) {
+ case Value:
out.value = clone.value(value)
- } else {
- panic(fmt.Errorf("in.value.(Value) != true"))
+ case _propertyGetSet:
+ p := _propertyGetSet{}
+ if value[0] != nil {
+ p[0] = clone.object(value[0])
+ }
+ if value[1] != nil {
+ p[1] = clone.object(value[1])
+ }
+ out.value = p
+ default:
+ panic(fmt.Errorf("in.value.(Value) != true; in.value is %T", in.value))
}
+
return out
}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_expression.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_expression.go
index 34449970e..8586a484f 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_expression.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_expression.go
@@ -173,7 +173,11 @@ func (self *_runtime) cmpl_evaluate_nodeBracketExpression(node *_nodeBracketExpr
memberValue := member.resolve()
// TODO Pass in base value as-is, and defer toObject till later?
- return toValue(newPropertyReference(self, self.toObject(targetValue), memberValue.string(), false, _at(node.idx)))
+ object, err := self.objectCoerce(targetValue)
+ if err != nil {
+ panic(self.panicTypeError("Cannot access member '%s' of %s", memberValue.string(), err.Error(), _at(node.idx)))
+ }
+ return toValue(newPropertyReference(self, object, memberValue.string(), false, _at(node.idx)))
}
func (self *_runtime) cmpl_evaluate_nodeCallExpression(node *_nodeCallExpression, withArgumentList []interface{}) Value {
@@ -255,7 +259,7 @@ func (self *_runtime) cmpl_evaluate_nodeDotExpression(node *_nodeDotExpression)
// TODO Pass in base value as-is, and defer toObject till later?
object, err := self.objectCoerce(targetValue)
if err != nil {
- panic(self.panicTypeError("Cannot access member '%s' of %s", node.identifier, err.Error()))
+ panic(self.panicTypeError("Cannot access member '%s' of %s", node.identifier, err.Error(), _at(node.idx)))
}
return toValue(newPropertyReference(self, object, node.identifier, false, _at(node.idx)))
}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_statement.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_statement.go
index 7be158487..e16c6ac6c 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_statement.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_evaluate_statement.go
@@ -47,6 +47,9 @@ func (self *_runtime) cmpl_evaluate_nodeStatement(node _nodeStatement) Value {
}
case *_nodeDebuggerStatement:
+ if self.debugger != nil {
+ self.debugger(self.otto)
+ }
return emptyValue // Nothing happens.
case *_nodeDoWhileStatement:
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_test.go
deleted file mode 100644
index 34b050f00..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/cmpl_test.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package otto
-
-import (
- "testing"
-
- "github.com/robertkrimen/otto/parser"
-)
-
-func Test_cmpl(t *testing.T) {
- tt(t, func() {
- vm := New()
-
- test := func(src string, expect ...interface{}) {
- program, err := parser.ParseFile(nil, "", src, 0)
- is(err, nil)
- {
- program := cmpl_parse(program)
- value := vm.runtime.cmpl_evaluate_nodeProgram(program, false)
- if len(expect) > 0 {
- is(value, expect[0])
- }
- }
- }
-
- test(``, Value{})
-
- test(`var abc = 1; abc;`, 1)
-
- test(`var abc = 1 + 1; abc;`, 2)
-
- test(`1 + 2;`, 3)
- })
-}
-
-func TestParse_cmpl(t *testing.T) {
- tt(t, func() {
-
- test := func(src string) {
- program, err := parser.ParseFile(nil, "", src, 0)
- is(err, nil)
- is(cmpl_parse(program), "!=", nil)
- }
-
- test(``)
-
- test(`var abc = 1; abc;`)
-
- test(`
- function abc() {
- return;
- }
- `)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/date_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/date_test.go
deleted file mode 100644
index a9c71edde..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/date_test.go
+++ /dev/null
@@ -1,481 +0,0 @@
-package otto
-
-import (
- "math"
- "testing"
- "time"
-)
-
-func mockTimeLocal(location *time.Location) func() {
- local := time.Local
- time.Local = location
- return func() {
- time.Local = local
- }
-}
-
-// Passing or failing should not be dependent on what time zone we're in
-func mockUTC() func() {
- return mockTimeLocal(time.UTC)
-}
-
-func TestDate(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- time0 := time.Unix(1348616313, 47*1000*1000).Local()
-
- test(`Date`, "function Date() { [native code] }")
- test(`new Date(0).toUTCString()`, "Thu, 01 Jan 1970 00:00:00 UTC")
- test(`new Date(0).toGMTString()`, "Thu, 01 Jan 1970 00:00:00 GMT")
- if false {
- // TODO toLocale{Date,Time}String
- test(`new Date(0).toLocaleString()`, "")
- test(`new Date(0).toLocaleDateString()`, "")
- test(`new Date(0).toLocaleTimeString()`, "")
- }
- test(`new Date(1348616313).getTime()`, 1348616313)
- test(`new Date(1348616313).toUTCString()`, "Fri, 16 Jan 1970 14:36:56 UTC")
- test(`abc = new Date(1348616313047); abc.toUTCString()`, "Tue, 25 Sep 2012 23:38:33 UTC")
- test(`abc.getYear()`, time0.Year()-1900)
- test(`abc.getFullYear()`, time0.Year())
- test(`abc.getUTCFullYear()`, 2012)
- test(`abc.getMonth()`, int(time0.Month())-1) // Remember, the JavaScript month is 0-based
- test(`abc.getUTCMonth()`, 8)
- test(`abc.getDate()`, time0.Day())
- test(`abc.getUTCDate()`, 25)
- test(`abc.getDay()`, int(time0.Weekday()))
- test(`abc.getUTCDay()`, 2)
- test(`abc.getHours()`, time0.Hour())
- test(`abc.getUTCHours()`, 23)
- test(`abc.getMinutes()`, time0.Minute())
- test(`abc.getUTCMinutes()`, 38)
- test(`abc.getSeconds()`, time0.Second())
- test(`abc.getUTCSeconds()`, 33)
- test(`abc.getMilliseconds()`, time0.Nanosecond()/(1000*1000)) // In honor of the 47%
- test(`abc.getUTCMilliseconds()`, 47)
- _, offset := time0.Zone()
- test(`abc.getTimezoneOffset()`, offset/-60)
-
- test(`new Date("Xyzzy").getTime()`, math.NaN())
-
- test(`abc.setFullYear(2011); abc.toUTCString()`, "Sun, 25 Sep 2011 23:38:33 UTC")
- test(`new Date(12564504e5).toUTCString()`, "Sun, 25 Oct 2009 06:00:00 UTC")
- test(`new Date(2009, 9, 25).toUTCString()`, "Sun, 25 Oct 2009 00:00:00 UTC")
- test(`+(new Date(2009, 9, 25))`, 1256428800000)
-
- format := "Mon, 2 Jan 2006 15:04:05 MST"
-
- time1 := time.Unix(1256450400, 0)
- time0 = time.Date(time1.Year(), time1.Month(), time1.Day(), time1.Hour(), time1.Minute(), time1.Second(), time1.Nanosecond(), time1.Location()).UTC()
-
- time0 = time.Date(time1.Year(), time1.Month(), time1.Day(), time1.Hour(), time1.Minute(), time1.Second(), 2001*1000*1000, time1.Location()).UTC()
- test(`abc = new Date(12564504e5); abc.setMilliseconds(2001); abc.toUTCString()`, time0.Format(format))
-
- time0 = time.Date(time1.Year(), time1.Month(), time1.Day(), time1.Hour(), time1.Minute(), 61, time1.Nanosecond(), time1.Location()).UTC()
- test(`abc = new Date(12564504e5); abc.setSeconds("61"); abc.toUTCString()`, time0.Format(format))
-
- time0 = time.Date(time1.Year(), time1.Month(), time1.Day(), time1.Hour(), 61, time1.Second(), time1.Nanosecond(), time1.Location()).UTC()
- test(`abc = new Date(12564504e5); abc.setMinutes("61"); abc.toUTCString()`, time0.Format(format))
-
- time0 = time.Date(time1.Year(), time1.Month(), time1.Day(), 5, time1.Minute(), time1.Second(), time1.Nanosecond(), time1.Location()).UTC()
- test(`abc = new Date(12564504e5); abc.setHours("5"); abc.toUTCString()`, time0.Format(format))
-
- time0 = time.Date(time1.Year(), time1.Month(), 26, time1.Hour(), time1.Minute(), time1.Second(), time1.Nanosecond(), time1.Location()).UTC()
- test(`abc = new Date(12564504e5); abc.setDate("26"); abc.toUTCString()`, time0.Format(format))
-
- time0 = time.Date(time1.Year(), 10, time1.Day(), time1.Hour(), time1.Minute(), time1.Second(), time1.Nanosecond(), time1.Location()).UTC()
- test(`abc = new Date(12564504e5); abc.setMonth(9); abc.toUTCString()`, time0.Format(format))
- test(`abc = new Date(12564504e5); abc.setMonth("09"); abc.toUTCString()`, time0.Format(format))
-
- time0 = time.Date(time1.Year(), 11, time1.Day(), time1.Hour(), time1.Minute(), time1.Second(), time1.Nanosecond(), time1.Location()).UTC()
- test(`abc = new Date(12564504e5); abc.setMonth("10"); abc.toUTCString()`, time0.Format(format))
-
- time0 = time.Date(2010, time1.Month(), time1.Day(), time1.Hour(), time1.Minute(), time1.Second(), time1.Nanosecond(), time1.Location()).UTC()
- test(`abc = new Date(12564504e5); abc.setFullYear(2010); abc.toUTCString()`, time0.Format(format))
-
- test(`new Date("2001-01-01T10:01:02.000").getTime()`, 978343262000)
-
- // Date()
- test(`typeof Date()`, "string")
- test(`typeof Date(2006, 1, 2)`, "string")
-
- test(`
- abc = Object.getOwnPropertyDescriptor(Date, "parse");
- [ abc.value === Date.parse, abc.writable, abc.enumerable, abc.configurable ];
- `, "true,true,false,true")
-
- test(`
- abc = Object.getOwnPropertyDescriptor(Date.prototype, "toTimeString");
- [ abc.value === Date.prototype.toTimeString, abc.writable, abc.enumerable, abc.configurable ];
- `, "true,true,false,true")
-
- test(`
- var abc = Object.getOwnPropertyDescriptor(Date, "prototype");
- [ [ typeof Date.prototype ],
- [ abc.writable, abc.enumerable, abc.configurable ] ];
- `, "object,false,false,false")
- })
-}
-
-func TestDate_parse(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`Date.parse("2001-01-01T10:01:02.000")`, 978343262000)
-
- test(`Date.parse("2006-01-02T15:04:05.000")`, 1136214245000)
-
- test(`Date.parse("2006")`, 1136073600000)
-
- test(`Date.parse("1970-01-16T14:36:56+00:00")`, 1348616000)
-
- test(`Date.parse("1970-01-16T14:36:56.313+00:00")`, 1348616313)
-
- test(`Date.parse("1970-01-16T14:36:56.000")`, 1348616000)
-
- test(`Date.parse.length`, 1)
- })
-}
-
-func TestDate_UTC(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`Date.UTC(2009, 9, 25)`, 1256428800000)
-
- test(`Date.UTC.length`, 7)
- })
-}
-
-func TestDate_now(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- // FIXME I think this too risky
- test(`+(""+Date.now()).substr(0, 10)`, float64(epochToInteger(timeToEpoch(time.Now()))/1000))
-
- test(`Date.now() - Date.now(1,2,3) < 24 * 60 * 60`, true)
- })
-}
-
-func TestDate_toISOString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`new Date(0).toISOString()`, "1970-01-01T00:00:00.000Z")
- })
-}
-
-func TestDate_toJSON(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`new Date(0).toJSON()`, "1970-01-01T00:00:00.000Z")
- })
-}
-
-func TestDate_setYear(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`new Date(12564504e5).setYear(96)`, 846223200000)
-
- test(`new Date(12564504e5).setYear(1996)`, 846223200000)
-
- test(`new Date(12564504e5).setYear(2000)`, 972453600000)
- })
-}
-
-func TestDateDefaultValue(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- var date = new Date();
- date + 0 === date.toString() + "0";
- `, true)
- })
-}
-
-func TestDate_April1978(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- var abc = new Date(1978,3);
- [ abc.getYear(), abc.getMonth(), abc.valueOf() ];
- `, "78,3,260236800000")
- })
-}
-
-func TestDate_setMilliseconds(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- abc = new Date();
- def = abc.setMilliseconds();
- [ abc, def ];
- `, "Invalid Date,NaN")
- })
-}
-
-func TestDate_new(t *testing.T) {
- // FIXME?
- // This is probably incorrect, due to differences in Go date/time handling
- // versus ECMA date/time handling, but we'll leave this here for
- // future reference
-
- if true {
- return
- }
-
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- [
- new Date(1899, 11).valueOf(),
- new Date(1899, 12).valueOf(),
- new Date(1900, 0).valueOf()
- ]
- `, "-2211638400000,-2208960000000,-2208960000000")
- })
-}
-
-func TestDateComparison(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- var now0 = Date.now();
- var now1 = (new Date()).toString();
- [ now0 === now1, Math.abs(now0 - Date.parse(now1)) <= 1000 ];
- `, "false,true")
- })
-}
-
-func TestDate_setSeconds(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setSeconds(10, 12);
-
- def.setSeconds(10);
- def.setMilliseconds(12);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setUTCSeconds(10, 12);
-
- def.setUTCSeconds(10);
- def.setUTCMilliseconds(12);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`Date.prototype.setSeconds.length`, 2)
- test(`Date.prototype.setUTCSeconds.length`, 2)
- })
-}
-
-func TestDate_setMinutes(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setMinutes(8, 10, 12);
-
- def.setMinutes(8);
- def.setSeconds(10);
- def.setMilliseconds(12);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setUTCMinutes(8, 10, 12);
-
- def.setUTCMinutes(8);
- def.setUTCSeconds(10);
- def.setUTCMilliseconds(12);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`Date.prototype.setMinutes.length`, 3)
- test(`Date.prototype.setUTCMinutes.length`, 3)
- })
-}
-
-func TestDate_setHours(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setHours(6, 8, 10, 12);
-
- def.setHours(6);
- def.setMinutes(8);
- def.setSeconds(10);
- def.setMilliseconds(12);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setUTCHours(6, 8, 10, 12);
-
- def.setUTCHours(6);
- def.setUTCMinutes(8);
- def.setUTCSeconds(10);
- def.setUTCMilliseconds(12);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`Date.prototype.setHours.length`, 4)
- test(`Date.prototype.setUTCHours.length`, 4)
- })
-}
-
-func TestDate_setMonth(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setMonth(6, 8);
-
- def.setMonth(6);
- def.setDate(8);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setUTCMonth(6, 8);
-
- def.setUTCMonth(6);
- def.setUTCDate(8);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`Date.prototype.setMonth.length`, 2)
- test(`Date.prototype.setUTCMonth.length`, 2)
- })
-}
-
-func TestDate_setFullYear(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setFullYear(1981, 6, 8);
-
- def.setFullYear(1981);
- def.setMonth(6);
- def.setDate(8);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`
- abc = new Date(1980, 10);
- def = new Date(abc);
-
- abc.setUTCFullYear(1981, 6, 8);
-
- def.setUTCFullYear(1981);
- def.setUTCMonth(6);
- def.setUTCDate(8);
-
- abc.valueOf() === def.valueOf();
- `, true)
-
- test(`Date.prototype.setFullYear.length`, 3)
- test(`Date.prototype.setUTCFullYear.length`, 3)
- })
-}
-
-func TestDate_setTime(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- var abc = new Date(1999, 6, 1);
- var def = new Date();
- def.setTime(abc.getTime());
- [ def, abc.valueOf() == def.valueOf() ];
- `, "Thu, 01 Jul 1999 00:00:00 UTC,true")
-
- test(`Date.prototype.setTime.length`, 1)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/dbg/dbg.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/dbg/dbg.go
index 83bf6c573..8c27fa293 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/dbg/dbg.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/dbg/dbg.go
@@ -282,7 +282,7 @@ func (self *Dbgr) getEmit() _emit {
// SetOutput will accept the following as a destination for output:
//
// *log.Logger Print*/Panic*/Fatal* of the logger
-// io.Writer -
+// io.Writer -
// nil Reset to the default output (os.Stderr)
// "log" Print*/Panic*/Fatal* via the "log" package
//
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/documentation_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/documentation_test.go
deleted file mode 100644
index 04646117f..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/documentation_test.go
+++ /dev/null
@@ -1,95 +0,0 @@
-package otto
-
-import (
- "fmt"
-)
-
-func ExampleSynopsis() {
-
- vm := New()
- vm.Run(`
- abc = 2 + 2;
- console.log("The value of abc is " + abc); // 4
- `)
-
- value, _ := vm.Get("abc")
- {
- value, _ := value.ToInteger()
- fmt.Println(value)
- }
-
- vm.Set("def", 11)
- vm.Run(`
- console.log("The value of def is " + def);
- `)
-
- vm.Set("xyzzy", "Nothing happens.")
- vm.Run(`
- console.log(xyzzy.length);
- `)
-
- value, _ = vm.Run("xyzzy.length")
- {
- value, _ := value.ToInteger()
- fmt.Println(value)
- }
-
- value, err := vm.Run("abcdefghijlmnopqrstuvwxyz.length")
- fmt.Println(value)
- fmt.Println(err)
-
- vm.Set("sayHello", func(call FunctionCall) Value {
- fmt.Printf("Hello, %s.\n", call.Argument(0).String())
- return UndefinedValue()
- })
-
- vm.Set("twoPlus", func(call FunctionCall) Value {
- right, _ := call.Argument(0).ToInteger()
- result, _ := vm.ToValue(2 + right)
- return result
- })
-
- value, _ = vm.Run(`
- sayHello("Xyzzy");
- sayHello();
-
- result = twoPlus(2.0);
- `)
- fmt.Println(value)
-
- // Output:
- // The value of abc is 4
- // 4
- // The value of def is 11
- // 16
- // 16
- // undefined
- // ReferenceError: 'abcdefghijlmnopqrstuvwxyz' is not defined
- // Hello, Xyzzy.
- // Hello, undefined.
- // 4
-}
-
-func ExampleConsole() {
-
- vm := New()
- console := map[string]interface{}{
- "log": func(call FunctionCall) Value {
- fmt.Println("console.log:", formatForConsole(call.ArgumentList))
- return UndefinedValue()
- },
- }
-
- err := vm.Set("console", console)
-
- value, err := vm.Run(`
- console.log("Hello, World.");
- `)
- fmt.Println(value)
- fmt.Println(err)
-
- // Output:
- // console.log: Hello, World.
- // undefined
- // <nil>
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go
deleted file mode 100644
index 7f1b16af7..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go
+++ /dev/null
@@ -1,192 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestError(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ Error.prototype.name, Error.prototype.message, Error.prototype.hasOwnProperty("message") ];
- `, "Error,,true")
- })
-}
-
-func TestError_instanceof(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`(new TypeError()) instanceof Error`, true)
- })
-}
-
-func TestPanicValue(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- vm.Set("abc", func(call FunctionCall) Value {
- value, err := call.Otto.Run(`({ def: 3.14159 })`)
- is(err, nil)
- panic(value)
- })
-
- test(`
- try {
- abc();
- }
- catch (err) {
- error = err;
- }
- [ error instanceof Error, error.message, error.def ];
- `, "false,,3.14159")
- })
-}
-
-func Test_catchPanic(t *testing.T) {
- tt(t, func() {
- vm := New()
-
- _, err := vm.Run(`
- A syntax error that
- does not define
- var;
- abc;
- `)
- is(err, "!=", nil)
-
- _, err = vm.Call(`abc.def`, nil)
- is(err, "!=", nil)
- })
-}
-
-func TestErrorContext(t *testing.T) {
- tt(t, func() {
- vm := New()
-
- _, err := vm.Run(`
- undefined();
- `)
- {
- err := err.(*Error)
- is(err.message, "'undefined' is not a function")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:2:13")
- }
-
- _, err = vm.Run(`
- ({}).abc();
- `)
- {
- err := err.(*Error)
- is(err.message, "'abc' is not a function")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:2:14")
- }
-
- _, err = vm.Run(`
- ("abc").abc();
- `)
- {
- err := err.(*Error)
- is(err.message, "'abc' is not a function")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:2:14")
- }
-
- _, err = vm.Run(`
- var ghi = "ghi";
- ghi();
- `)
- {
- err := err.(*Error)
- is(err.message, "'ghi' is not a function")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:3:13")
- }
-
- _, err = vm.Run(`
- function def() {
- undefined();
- }
- function abc() {
- def();
- }
- abc();
- `)
- {
- err := err.(*Error)
- is(err.message, "'undefined' is not a function")
- is(len(err.trace), 3)
- is(err.trace[0].location(), "def (<anonymous>:3:17)")
- is(err.trace[1].location(), "abc (<anonymous>:6:17)")
- is(err.trace[2].location(), "<anonymous>:8:13")
- }
-
- _, err = vm.Run(`
- function abc() {
- xyz();
- }
- abc();
- `)
- {
- err := err.(*Error)
- is(err.message, "'xyz' is not defined")
- is(len(err.trace), 2)
- is(err.trace[0].location(), "abc (<anonymous>:3:17)")
- is(err.trace[1].location(), "<anonymous>:5:13")
- }
-
- _, err = vm.Run(`
- mno + 1;
- `)
- {
- err := err.(*Error)
- is(err.message, "'mno' is not defined")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:2:13")
- }
-
- _, err = vm.Run(`
- eval("xyz();");
- `)
- {
- err := err.(*Error)
- is(err.message, "'xyz' is not defined")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:1:1")
- }
-
- _, err = vm.Run(`
- xyzzy = "Nothing happens."
- eval("xyzzy();");
- `)
- {
- err := err.(*Error)
- is(err.message, "'xyzzy' is not a function")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:1:1")
- }
-
- _, err = vm.Run(`
- throw Error("xyzzy");
- `)
- {
- err := err.(*Error)
- is(err.message, "xyzzy")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:2:19")
- }
-
- _, err = vm.Run(`
- throw new Error("xyzzy");
- `)
- {
- err := err.(*Error)
- is(err.message, "xyzzy")
- is(len(err.trace), 1)
- is(err.trace[0].location(), "<anonymous>:2:23")
- }
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/function_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/function_test.go
deleted file mode 100644
index c10bf8592..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/function_test.go
+++ /dev/null
@@ -1,280 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestFunction(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = Object.getOwnPropertyDescriptor(Function, "prototype");
- [ [ typeof Function.prototype, typeof Function.prototype.length, Function.prototype.length ],
- [ abc.writable, abc.enumerable, abc.configurable ] ];
- `, "function,number,0,false,false,false")
- })
-}
-
-func Test_argumentList2parameterList(t *testing.T) {
- tt(t, func() {
- is(argumentList2parameterList([]Value{toValue("abc, def"), toValue("ghi")}), []string{"abc", "def", "ghi"})
- })
-}
-
-func TestFunction_new(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- new Function({});
- `, "SyntaxError: Unexpected identifier")
-
- test(`
- var abc = Function("def, ghi", "jkl", "return def+ghi+jkl");
- [ typeof abc, abc instanceof Function, abc("ab", "ba", 1) ];
- `, "function,true,abba1")
-
- test(`raise:
- var abc = {
- toString: function() { throw 1; }
- };
- var def = {
- toString: function() { throw 2; }
- };
- var ghi = new Function(abc, def);
- ghi;
- `, "1")
-
- // S15.3.2.1_A3_T10
- test(`raise:
- var abc = {
- toString: function() { return "z;x"; }
- };
- var def = "return this";
- var ghi = new Function(abc, def);
- ghi;
- `, "SyntaxError: Unexpected token ;")
-
- test(`raise:
- var abc;
- var def = "return true";
- var ghi = new Function(null, def);
- ghi;
- `, "SyntaxError: Unexpected token null")
- })
-}
-
-func TestFunction_apply(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Function.prototype.apply.length`, 2)
- test(`String.prototype.substring.apply("abc", [1, 11])`, "bc")
- })
-}
-
-func TestFunction_call(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Function.prototype.call.length`, 1)
- test(`String.prototype.substring.call("abc", 1, 11)`, "bc")
- })
-}
-
-func TestFunctionArguments(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // Should not be able to delete arguments
- test(`
- function abc(def, arguments){
- delete def;
- return def;
- }
- abc(1);
- `, 1)
-
- // Again, should not be able to delete arguments
- test(`
- function abc(def){
- delete def;
- return def;
- }
- abc(1);
- `, 1)
-
- // Test typeof of a function argument
- test(`
- function abc(def, ghi, jkl){
- return typeof jkl
- }
- abc("1st", "2nd", "3rd", "4th", "5th");
- `, "string")
-
- test(`
- function abc(def, ghi, jkl){
- arguments[0] = 3.14;
- arguments[1] = 'Nothing happens';
- arguments[2] = 42;
- if (3.14 === def && 'Nothing happens' === ghi && 42 === jkl)
- return true;
- }
- abc(-1, 4.2, 314);
- `, true)
- })
-}
-
-func TestFunctionDeclarationInFunction(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // Function declarations happen AFTER parameter/argument declarations
- // That is, a function declared within a function will shadow/overwrite
- // declared parameters
-
- test(`
- function abc(def){
- return def;
- function def(){
- return 1;
- }
- }
- typeof abc();
- `, "function")
- })
-}
-
-func TestArguments_defineOwnProperty(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc;
- var def = true;
- var ghi = {};
- (function (a, b, c) {
- Object.defineProperty(arguments, "0", {
- value: 42,
- writable: false,
- enumerable: false,
- configurable: false
- });
- Object.defineProperty(arguments, "1", {
- value: 3.14,
- configurable: true,
- enumerable: true
- });
- abc = Object.getOwnPropertyDescriptor(arguments, "0");
- for (var name in arguments) {
- ghi[name] = (ghi[name] || 0) + 1;
- if (name === "0") {
- def = false;
- }
- }
- }(0, 1, 2));
- [ abc.value, abc.writable, abc.enumerable, abc.configurable, def, ghi["1"] ];
- `, "42,false,false,false,true,1")
- })
-}
-
-func TestFunction_bind(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- abc = function(){
- return "abc";
- };
- def = abc.bind();
- [ typeof def.prototype, typeof def.hasOwnProperty, def.hasOwnProperty("caller"), def.hasOwnProperty("arguments"), def() ];
- `, "object,function,true,true,abc")
-
- test(`
- abc = function(){
- return arguments[1];
- };
- def = abc.bind(undefined, "abc");
- ghi = abc.bind(undefined, "abc", "ghi");
- [ def(), def("def"), ghi("def") ];
- `, ",def,ghi")
-
- test(`
- var abc = function () {};
- var ghi;
- try {
- Object.defineProperty(Function.prototype, "xyzzy", {
- value: 1001,
- writable: true,
- enumerable: true,
- configurable: true
- });
- var def = abc.bind({});
- ghi = !def.hasOwnProperty("xyzzy") && ghi.xyzzy === 1001;
- } finally {
- delete Function.prototype.xyzzy;
- }
- [ ghi ];
- `, "true")
-
- test(`
- var abc = function (def, ghi) {};
- var jkl = abc.bind({});
- var mno = abc.bind({}, 1, 2);
- [ jkl.length, mno.length ];
- `, "2,0")
-
- test(`raise:
- Math.bind();
- `, "TypeError: 'bind' is not a function")
-
- test(`
- function construct(fn, arguments) {
- var bound = Function.prototype.bind.apply(fn, [null].concat(arguments));
- return new bound();
- }
- var abc = construct(Date, [1957, 4, 27]);
- Object.prototype.toString.call(abc);
- `, "[object Date]")
-
- test(`
- var fn = function (x, y, z) {
- var result = {};
- result.abc = x + y + z;
- result.def = arguments[0] === "a" && arguments.length === 3;
- return result;
- };
- var newFn = Function.prototype.bind.call(fn, {}, "a", "b", "c");
- var result = new newFn();
- [ result.hasOwnProperty("abc"), result.hasOwnProperty("def"), result.abc, result.def ];
- `, "true,true,abc,true")
-
- test(`
- abc = function(){
- return "abc";
- };
- def = abc.bind();
- def.toString();
- `, "function () { [native code] }")
- })
-}
-
-func TestFunction_toString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- Function.prototype.toString.call(undefined);
- `, "TypeError")
-
- test(`
- abc = function() { return -1 ;
-}
- 1;
- abc.toString();
- `, "function() { return -1 ;\n}")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/global_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/global_test.go
deleted file mode 100644
index 9257b58c3..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/global_test.go
+++ /dev/null
@@ -1,355 +0,0 @@
-package otto
-
-import (
- "fmt"
- "math"
- "strings"
- "testing"
-)
-
-func TestGlobal(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- runtime := vm.vm.runtime
-
- {
- call := func(object interface{}, src string, argumentList ...interface{}) Value {
- var tgt *Object
- switch object := object.(type) {
- case Value:
- tgt = object.Object()
- case *Object:
- tgt = object
- case *_object:
- tgt = toValue_object(object).Object()
- default:
- panic("Here be dragons.")
- }
- value, err := tgt.Call(src, argumentList...)
- is(err, nil)
- return value
- }
-
- // FIXME enterGlobalScope
- if false {
- value := runtime.scope.lexical.getBinding("Object", false)._object().call(UndefinedValue(), []Value{toValue(runtime.newObject())}, false, nativeFrame)
- is(value.IsObject(), true)
- is(value, "[object Object]")
- is(value._object().prototype == runtime.global.ObjectPrototype, true)
- is(value._object().prototype == runtime.global.Object.get("prototype")._object(), true)
- is(value._object().get("toString"), "function toString() { [native code] }")
- is(call(value.Object(), "hasOwnProperty", "hasOwnProperty"), false)
-
- is(call(value._object().get("toString")._object().prototype, "toString"), "function () { [native code] }") // TODO Is this right?
- is(value._object().get("toString")._object().get("toString"), "function toString() { [native code] }")
- is(value._object().get("toString")._object().get("toString")._object(), "function toString() { [native code] }")
-
- is(call(value._object(), "propertyIsEnumerable", "isPrototypeOf"), false)
- value._object().put("xyzzy", toValue_string("Nothing happens."), false)
- is(call(value, "propertyIsEnumerable", "isPrototypeOf"), false)
- is(call(value, "propertyIsEnumerable", "xyzzy"), true)
- is(value._object().get("xyzzy"), "Nothing happens.")
-
- is(call(runtime.scope.lexical.getBinding("Object", false), "isPrototypeOf", value), false)
- is(call(runtime.scope.lexical.getBinding("Object", false)._object().get("prototype"), "isPrototypeOf", value), true)
- is(call(runtime.scope.lexical.getBinding("Function", false), "isPrototypeOf", value), false)
-
- is(runtime.newObject().prototype == runtime.global.Object.get("prototype")._object(), true)
-
- abc := runtime.newBoolean(toValue_bool(true))
- is(toValue_object(abc), "true") // TODO Call primitive?
-
- //def := runtime.localGet("Boolean")._object().Construct(UndefinedValue(), []Value{})
- //is(def, "false") // TODO Call primitive?
- }
- }
-
- test(`new Number().constructor == Number`, true)
-
- test(`this.hasOwnProperty`, "function hasOwnProperty() { [native code] }")
-
- test(`eval.length === 1`, true)
- test(`eval.prototype === undefined`, true)
- test(`raise: new eval()`, "TypeError: function eval() { [native code] } is not a constructor")
-
- test(`
- [
- [ delete undefined, undefined ],
- [ delete NaN, NaN ],
- [ delete Infinity, Infinity ],
- ];
- `, "false,,false,NaN,false,Infinity")
-
- test(`
- Object.getOwnPropertyNames(Function('return this')()).sort();
- `, "Array,Boolean,Date,Error,EvalError,Function,Infinity,JSON,Math,NaN,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError,console,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,escape,eval,isFinite,isNaN,parseFloat,parseInt,undefined,unescape")
-
- // __defineGetter__,__defineSetter__,__lookupGetter__,__lookupSetter__,constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf
- test(`
- Object.getOwnPropertyNames(Object.prototype).sort();
- `, "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf")
-
- // arguments,caller,length,name,prototype
- test(`
- Object.getOwnPropertyNames(EvalError).sort();
- `, "length,prototype")
-
- test(`
- var abc = [];
- var def = [EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError];
- for (constructor in def) {
- abc.push(def[constructor] === def[constructor].prototype.constructor);
- }
- def = [Array, Boolean, Date, Function, Number, Object, RegExp, String, SyntaxError];
- for (constructor in def) {
- abc.push(def[constructor] === def[constructor].prototype.constructor);
- }
- abc;
- `, "true,true,true,true,true,true,true,true,true,true,true,true,true,true,true")
-
- test(`
- [ Array.prototype.constructor === Array, Array.constructor === Function ];
- `, "true,true")
-
- test(`
- [ Number.prototype.constructor === Number, Number.constructor === Function ];
- `, "true,true")
-
- test(`
- [ Function.prototype.constructor === Function, Function.constructor === Function ];
- `, "true,true")
- })
-}
-
-func TestGlobalLength(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ Object.length, Function.length, RegExp.length, Math.length ];
- `, "1,1,2,")
- })
-}
-
-func TestGlobalError(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ TypeError.length, TypeError(), TypeError("Nothing happens.") ];
- `, "1,TypeError,TypeError: Nothing happens.")
-
- test(`
- [ URIError.length, URIError(), URIError("Nothing happens.") ];
- `, "1,URIError,URIError: Nothing happens.")
- })
-}
-
-func TestGlobalReadOnly(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Number.POSITIVE_INFINITY`, math.Inf(1))
-
- test(`
- Number.POSITIVE_INFINITY = 1;
- `, 1)
-
- test(`Number.POSITIVE_INFINITY`, math.Inf(1))
-
- test(`
- Number.POSITIVE_INFINITY = 1;
- Number.POSITIVE_INFINITY;
- `, math.Inf(1))
- })
-}
-
-func Test_isNaN(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`isNaN(0)`, false)
- test(`isNaN("Xyzzy")`, true)
- test(`isNaN()`, true)
- test(`isNaN(NaN)`, true)
- test(`isNaN(Infinity)`, false)
-
- test(`isNaN.length === 1`, true)
- test(`isNaN.prototype === undefined`, true)
- })
-}
-
-func Test_isFinite(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`isFinite(0)`, true)
- test(`isFinite("Xyzzy")`, false)
- test(`isFinite()`, false)
- test(`isFinite(NaN)`, false)
- test(`isFinite(Infinity)`, false)
- test(`isFinite(new Number(451));`, true)
-
- test(`isFinite.length === 1`, true)
- test(`isFinite.prototype === undefined`, true)
- })
-}
-
-func Test_parseInt(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`parseInt("0")`, 0)
- test(`parseInt("11")`, 11)
- test(`parseInt(" 11")`, 11)
- test(`parseInt("11 ")`, 11)
- test(`parseInt(" 11 ")`, 11)
- test(`parseInt(" 11\n")`, 11)
- test(`parseInt(" 11\n", 16)`, 17)
-
- test(`parseInt("Xyzzy")`, _NaN)
-
- test(`parseInt(" 0x11\n", 16)`, 17)
- test(`parseInt("0x0aXyzzy", 16)`, 10)
- test(`parseInt("0x1", 0)`, 1)
- test(`parseInt("0x10000000000000000000", 16)`, float64(75557863725914323419136))
-
- test(`parseInt.length === 2`, true)
- test(`parseInt.prototype === undefined`, true)
- })
-}
-
-func Test_parseFloat(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`parseFloat("0")`, 0)
- test(`parseFloat("11")`, 11)
- test(`parseFloat(" 11")`, 11)
- test(`parseFloat("11 ")`, 11)
- test(`parseFloat(" 11 ")`, 11)
- test(`parseFloat(" 11\n")`, 11)
- test(`parseFloat(" 11\n", 16)`, 11)
- test(`parseFloat("11.1")`, 11.1)
-
- test(`parseFloat("Xyzzy")`, _NaN)
-
- test(`parseFloat(" 0x11\n", 16)`, 0)
- test(`parseFloat("0x0a")`, 0)
- test(`parseFloat("0x0aXyzzy")`, 0)
- test(`parseFloat("Infinity")`, _Infinity)
- test(`parseFloat("infinity")`, _NaN)
- test(`parseFloat("0x")`, 0)
- test(`parseFloat("11x")`, 11)
- test(`parseFloat("Infinity1")`, _Infinity)
-
- test(`parseFloat.length === 1`, true)
- test(`parseFloat.prototype === undefined`, true)
- })
-}
-
-func Test_encodeURI(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`encodeURI("http://example.com/ Nothing happens.")`, "http://example.com/%20Nothing%20happens.")
- test(`encodeURI("http://example.com/ _^#")`, "http://example.com/%20_%5E#")
- test(`encodeURI(String.fromCharCode("0xE000"))`, "%EE%80%80")
- test(`encodeURI(String.fromCharCode("0xFFFD"))`, "%EF%BF%BD")
- test(`raise: encodeURI(String.fromCharCode("0xDC00"))`, "URIError: URI malformed")
-
- test(`encodeURI.length === 1`, true)
- test(`encodeURI.prototype === undefined`, true)
- })
-}
-
-func Test_encodeURIComponent(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`encodeURIComponent("http://example.com/ Nothing happens.")`, "http%3A%2F%2Fexample.com%2F%20Nothing%20happens.")
- test(`encodeURIComponent("http://example.com/ _^#")`, "http%3A%2F%2Fexample.com%2F%20_%5E%23")
- })
-}
-
-func Test_decodeURI(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`decodeURI(encodeURI("http://example.com/ Nothing happens."))`, "http://example.com/ Nothing happens.")
- test(`decodeURI(encodeURI("http://example.com/ _^#"))`, "http://example.com/ _^#")
- test(`raise: decodeURI("http://example.com/ _^#%")`, "URIError: URI malformed")
- test(`raise: decodeURI("%DF%7F")`, "URIError: URI malformed")
- for _, check := range strings.Fields("+ %3B %2F %3F %3A %40 %26 %3D %2B %24 %2C %23") {
- test(fmt.Sprintf(`decodeURI("%s")`, check), check)
- }
-
- test(`decodeURI.length === 1`, true)
- test(`decodeURI.prototype === undefined`, true)
- })
-}
-
-func Test_decodeURIComponent(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`decodeURIComponent(encodeURI("http://example.com/ Nothing happens."))`, "http://example.com/ Nothing happens.")
- test(`decodeURIComponent(encodeURI("http://example.com/ _^#"))`, "http://example.com/ _^#")
-
- test(`decodeURIComponent.length === 1`, true)
- test(`decodeURIComponent.prototype === undefined`, true)
-
- test(`
- var global = Function('return this')();
- var abc = Object.getOwnPropertyDescriptor(global, "decodeURIComponent");
- [ abc.value === global.decodeURIComponent, abc.writable, abc.enumerable, abc.configurable ];
- `, "true,true,false,true")
- })
-}
-
-func TestGlobal_skipEnumeration(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var found = [];
- for (var test in this) {
- if (false ||
- test === 'NaN' ||
- test === 'undefined' ||
- test === 'Infinity' ||
- false) {
- found.push(test)
- }
- }
- found.length;
- `, 0)
-
- test(`
- var found = [];
- for (var test in this) {
- if (false ||
- test === 'Object' ||
- test === 'Function' ||
- test === 'String' ||
- test === 'Number' ||
- test === 'Array' ||
- test === 'Boolean' ||
- test === 'Date' ||
- test === 'RegExp' ||
- test === 'Error' ||
- test === 'EvalError' ||
- test === 'RangeError' ||
- test === 'ReferenceError' ||
- test === 'SyntaxError' ||
- test === 'TypeError' ||
- test === 'URIError' ||
- false) {
- found.push(test)
- }
- }
- found.length;
- `, 0)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/json_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/json_test.go
deleted file mode 100644
index 4dd2ed7bf..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/json_test.go
+++ /dev/null
@@ -1,183 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func BenchmarkJSON_parse(b *testing.B) {
- vm := New()
- for i := 0; i < b.N; i++ {
- vm.Run(`JSON.parse("1")`)
- vm.Run(`JSON.parse("[1,2,3]")`)
- vm.Run(`JSON.parse('{"a":{"x":100,"y":110},"b":[10,20,30],"c":"zazazaza"}')`)
- vm.Run(`JSON.parse("[1,2,3]", function(k, v) { return undefined })`)
- }
-}
-
-func TestJSON_parse(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- JSON.parse("1");
- `, 1)
-
- test(`
- JSON.parse("null");
- `, "null") // TODO Can we make this nil?
-
- test(`
- var abc = JSON.parse('"a\uFFFFbc"');
- [ abc[0], abc[2], abc[3], abc.length ];
- `, "a,b,c,4")
-
- test(`
- JSON.parse("[1, 2, 3]");
- `, "1,2,3")
-
- test(`
- JSON.parse('{ "abc": 1, "def":2 }').abc;
- `, 1)
-
- test(`
- JSON.parse('{ "abc": { "x": 100, "y": 110 }, "def": [ 10, 20 ,30 ], "ghi": "zazazaza" }').def;
- `, "10,20,30")
-
- test(`raise:
- JSON.parse("12\t\r\n 34");
- `, "SyntaxError: invalid character '3' after top-level value")
-
- test(`
- JSON.parse("[1, 2, 3]", function() { return undefined });
- `, "undefined")
-
- test(`raise:
- JSON.parse("");
- `, "SyntaxError: unexpected end of JSON input")
-
- test(`raise:
- JSON.parse("[1, 2, 3");
- `, "SyntaxError: unexpected end of JSON input")
-
- test(`raise:
- JSON.parse("[1, 2, ; abc=10");
- `, "SyntaxError: invalid character ';' looking for beginning of value")
-
- test(`raise:
- JSON.parse("[1, 2, function(){}]");
- `, "SyntaxError: invalid character 'u' in literal false (expecting 'a')")
- })
-}
-
-func TestJSON_stringify(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- JSON.stringify(function(){});
- `, "undefined")
-
- test(`
- JSON.stringify(new Boolean(false));
- `, "false")
-
- test(`
- JSON.stringify({a1: {b1: [1,2,3,4], b2: {c1: 1, c2: 2}}, a2: 'a2'}, null, -5);
- `, `{"a1":{"b1":[1,2,3,4],"b2":{"c1":1,"c2":2}},"a2":"a2"}`)
-
- test(`
- JSON.stringify(undefined);
- `, "undefined")
-
- test(`
- JSON.stringify(1);
- `, "1")
-
- test(`
- JSON.stringify("abc def");
- `, "\"abc def\"")
-
- test(`
- JSON.stringify(3.14159);
- `, "3.14159")
-
- test(`
- JSON.stringify([]);
- `, "[]")
-
- test(`
- JSON.stringify([1, 2, 3]);
- `, "[1,2,3]")
-
- test(`
- JSON.stringify([true, false, null]);
- `, "[true,false,null]")
-
- test(`
- JSON.stringify({
- abc: { x: 100, y: 110 },
- def: [ 10, 20, 30 ],
- ghi: "zazazaza"
- });
- `, `{"abc":{"x":100,"y":110},"def":[10,20,30],"ghi":"zazazaza"}`)
-
- test(`
- JSON.stringify([
- 'e',
- {pluribus: 'unum'}
- ], null, '\t');
- `, "[\n\t\"e\",\n\t{\n\t\t\"pluribus\": \"unum\"\n\t}\n]")
-
- test(`
- JSON.stringify(new Date(0));
- `, `"1970-01-01T00:00:00.000Z"`)
-
- test(`
- JSON.stringify([ new Date(0) ], function(key, value){
- return this[key] instanceof Date ? 'Date(' + this[key] + ')' : value
- });
- `, `["Date(Thu, 01 Jan 1970 00:00:00 UTC)"]`)
-
- test(`
- JSON.stringify({
- abc: 1,
- def: 2,
- ghi: 3
- }, ['abc','def']);
- `, `{"abc":1,"def":2}`)
-
- test(`raise:
- var abc = {
- def: null
- };
- abc.def = abc;
- JSON.stringify(abc)
- `, "TypeError: Converting circular structure to JSON")
-
- test(`raise:
- var abc= [ null ];
- abc[0] = abc;
- JSON.stringify(abc);
- `, "TypeError: Converting circular structure to JSON")
-
- test(`raise:
- var abc = {
- def: {}
- };
- abc.def.ghi = abc;
- JSON.stringify(abc)
- `, "TypeError: Converting circular structure to JSON")
-
- test(`
- var ghi = { "pi": 3.14159 };
- var abc = {
- def: {}
- };
- abc.ghi = ghi;
- abc.def.ghi = ghi;
- JSON.stringify(abc);
- `, `{"def":{"ghi":{"pi":3.14159}},"ghi":{"pi":3.14159}}`)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/math_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/math_test.go
deleted file mode 100644
index 499998b14..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/math_test.go
+++ /dev/null
@@ -1,303 +0,0 @@
-package otto
-
-import (
- "math"
- "testing"
-)
-
-var _NaN = math.NaN()
-var _Infinity = math.Inf(1)
-
-func TestMath_toString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.toString()`, "[object Math]")
- })
-}
-
-func TestMath_abs(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.abs(NaN)`, _NaN)
- test(`Math.abs(2)`, 2)
- test(`Math.abs(-2)`, 2)
- test(`Math.abs(-Infinity)`, _Infinity)
-
- test(`Math.acos(0.5)`, 1.0471975511965976)
-
- test(`Math.abs('-1')`, 1)
- test(`Math.abs(-2)`, 2)
- test(`Math.abs(null)`, 0)
- test(`Math.abs("string")`, _NaN)
- test(`Math.abs()`, _NaN)
- })
-}
-
-func TestMath_acos(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.acos(NaN)`, _NaN)
- test(`Math.acos(2)`, _NaN)
- test(`Math.acos(-2)`, _NaN)
- test(`1/Math.acos(1)`, _Infinity)
-
- test(`Math.acos(0.5)`, 1.0471975511965976)
- })
-}
-
-func TestMath_asin(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.asin(NaN)`, _NaN)
- test(`Math.asin(2)`, _NaN)
- test(`Math.asin(-2)`, _NaN)
- test(`1/Math.asin(0)`, _Infinity)
- test(`1/Math.asin(-0)`, -_Infinity)
-
- test(`Math.asin(0.5)`, 0.5235987755982989)
- })
-}
-
-func TestMath_atan(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.atan(NaN)`, _NaN)
- test(`1/Math.atan(0)`, _Infinity)
- test(`1/Math.atan(-0)`, -_Infinity)
- test(`Math.atan(Infinity)`, 1.5707963267948966)
- test(`Math.atan(-Infinity)`, -1.5707963267948966)
-
- // freebsd/386 1.03 => 0.4636476090008061
- // darwin 1.03 => 0.46364760900080604
- test(`Math.atan(0.5).toPrecision(10)`, "0.463647609")
- })
-}
-
-func TestMath_atan2(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.atan2()`, _NaN)
- test(`Math.atan2(NaN)`, _NaN)
- test(`Math.atan2(0, NaN)`, _NaN)
-
- test(`Math.atan2(1, 0)`, 1.5707963267948966)
- test(`Math.atan2(1, -0)`, 1.5707963267948966)
-
- test(`1/Math.atan2(0, 1)`, _Infinity)
- test(`1/Math.atan2(0, 0)`, _Infinity)
- test(`Math.atan2(0, -0)`, 3.141592653589793)
- test(`Math.atan2(0, -1)`, 3.141592653589793)
-
- test(`1/Math.atan2(-0, 1)`, -_Infinity)
- test(`1/Math.atan2(-0, 0)`, -_Infinity)
- test(`Math.atan2(-0, -0)`, -3.141592653589793)
- test(`Math.atan2(-0, -1)`, -3.141592653589793)
-
- test(`Math.atan2(-1, 0)`, -1.5707963267948966)
- test(`Math.atan2(-1, -0)`, -1.5707963267948966)
-
- test(`1/Math.atan2(1, Infinity)`, _Infinity)
- test(`Math.atan2(1, -Infinity)`, 3.141592653589793)
- test(`1/Math.atan2(-1, Infinity)`, -_Infinity)
- test(`Math.atan2(-1, -Infinity)`, -3.141592653589793)
-
- test(`Math.atan2(Infinity, 1)`, 1.5707963267948966)
- test(`Math.atan2(-Infinity, 1)`, -1.5707963267948966)
-
- test(`Math.atan2(Infinity, Infinity)`, 0.7853981633974483)
- test(`Math.atan2(Infinity, -Infinity)`, 2.356194490192345)
- test(`Math.atan2(-Infinity, Infinity)`, -0.7853981633974483)
- test(`Math.atan2(-Infinity, -Infinity)`, -2.356194490192345)
- })
-}
-
-func TestMath_ceil(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.ceil(NaN)`, _NaN)
- test(`Math.ceil(+0)`, 0)
- test(`1/Math.ceil(-0)`, -_Infinity)
- test(`Math.ceil(Infinity)`, _Infinity)
- test(`Math.ceil(-Infinity)`, -_Infinity)
- test(`1/Math.ceil(-0.5)`, -_Infinity)
-
- test(`Math.ceil(-11)`, -11)
- test(`Math.ceil(-0.5)`, 0)
- test(`Math.ceil(1.5)`, 2)
- })
-}
-
-func TestMath_cos(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.cos(NaN)`, _NaN)
- test(`Math.cos(+0)`, 1)
- test(`Math.cos(-0)`, 1)
- test(`Math.cos(Infinity)`, _NaN)
- test(`Math.cos(-Infinity)`, _NaN)
-
- test(`Math.cos(0.5)`, 0.8775825618903728)
- })
-}
-
-func TestMath_exp(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.exp(NaN)`, _NaN)
- test(`Math.exp(+0)`, 1)
- test(`Math.exp(-0)`, 1)
- test(`Math.exp(Infinity)`, _Infinity)
- test(`Math.exp(-Infinity)`, 0)
- })
-}
-
-func TestMath_floor(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.floor(NaN)`, _NaN)
- test(`Math.floor(+0)`, 0)
- test(`1/Math.floor(-0)`, -_Infinity)
- test(`Math.floor(Infinity)`, _Infinity)
- test(`Math.floor(-Infinity)`, -_Infinity)
-
- test(`Math.floor(-11)`, -11)
- test(`Math.floor(-0.5)`, -1)
- test(`Math.floor(1.5)`, 1)
- })
-}
-
-func TestMath_log(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.log(NaN)`, _NaN)
- test(`Math.log(-1)`, _NaN)
- test(`Math.log(+0)`, -_Infinity)
- test(`Math.log(-0)`, -_Infinity)
- test(`1/Math.log(1)`, _Infinity)
- test(`Math.log(Infinity)`, _Infinity)
-
- test(`Math.log(0.5)`, -0.6931471805599453)
- })
-}
-
-func TestMath_max(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.max(-11, -1, 0, 1, 2, 3, 11)`, 11)
- })
-}
-
-func TestMath_min(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.min(-11, -1, 0, 1, 2, 3, 11)`, -11)
- })
-}
-
-func TestMath_pow(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.pow(0, NaN)`, _NaN)
- test(`Math.pow(0, 0)`, 1)
- test(`Math.pow(NaN, 0)`, 1)
- test(`Math.pow(0, -0)`, 1)
- test(`Math.pow(NaN, -0)`, 1)
- test(`Math.pow(NaN, 1)`, _NaN)
- test(`Math.pow(2, Infinity)`, _Infinity)
- test(`1/Math.pow(2, -Infinity)`, _Infinity)
- test(`Math.pow(1, Infinity)`, _NaN)
- test(`Math.pow(1, -Infinity)`, _NaN)
- test(`1/Math.pow(0.1, Infinity)`, _Infinity)
- test(`Math.pow(0.1, -Infinity)`, _Infinity)
- test(`Math.pow(Infinity, 1)`, _Infinity)
- test(`1/Math.pow(Infinity, -1)`, _Infinity)
- test(`Math.pow(-Infinity, 1)`, -_Infinity)
- test(`Math.pow(-Infinity, 2)`, _Infinity)
- test(`1/Math.pow(-Infinity, -1)`, -_Infinity)
- test(`1/Math.pow(-Infinity, -2)`, _Infinity)
- test(`1/Math.pow(0, 1)`, _Infinity)
- test(`Math.pow(0, -1)`, _Infinity)
- test(`1/Math.pow(-0, 1)`, -_Infinity)
- test(`1/Math.pow(-0, 2)`, _Infinity)
- test(`Math.pow(-0, -1)`, -_Infinity)
- test(`Math.pow(-0, -2)`, _Infinity)
- test(`Math.pow(-1, 0.1)`, _NaN)
-
- test(`
- [ Math.pow(-1, +Infinity), Math.pow(1, Infinity) ];
- `, "NaN,NaN")
- })
-}
-
-func TestMath_round(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.round(NaN)`, _NaN)
- test(`1/Math.round(0)`, _Infinity)
- test(`1/Math.round(-0)`, -_Infinity)
- test(`Math.round(Infinity)`, _Infinity)
- test(`Math.round(-Infinity)`, -_Infinity)
- test(`1/Math.round(0.1)`, _Infinity)
- test(`1/Math.round(-0.1)`, -_Infinity)
-
- test(`Math.round(3.5)`, 4)
- test(`Math.round(-3.5)`, -3)
- })
-}
-
-func TestMath_sin(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.sin(NaN)`, _NaN)
- test(`1/Math.sin(+0)`, _Infinity)
- test(`1/Math.sin(-0)`, -_Infinity)
- test(`Math.sin(Infinity)`, _NaN)
- test(`Math.sin(-Infinity)`, _NaN)
-
- test(`Math.sin(0.5)`, 0.479425538604203)
- })
-}
-
-func TestMath_sqrt(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.sqrt(NaN)`, _NaN)
- test(`Math.sqrt(-1)`, _NaN)
- test(`1/Math.sqrt(+0)`, _Infinity)
- test(`1/Math.sqrt(-0)`, -_Infinity)
- test(`Math.sqrt(Infinity)`, _Infinity)
-
- test(`Math.sqrt(2)`, 1.4142135623730951)
- })
-}
-
-func TestMath_tan(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Math.tan(NaN)`, _NaN)
- test(`1/Math.tan(+0)`, _Infinity)
- test(`1/Math.tan(-0)`, -_Infinity)
- test(`Math.tan(Infinity)`, _NaN)
- test(`Math.tan(-Infinity)`, _NaN)
-
- test(`Math.tan(0.5)`, 0.5463024898437905)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/number_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/number_test.go
deleted file mode 100644
index 8db01cfc7..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/number_test.go
+++ /dev/null
@@ -1,165 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestNumber(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = Object.getOwnPropertyDescriptor(Number, "prototype");
- [ [ typeof Number.prototype ],
- [ abc.writable, abc.enumerable, abc.configurable ] ];
- `, "object,false,false,false")
- })
-}
-
-func TestNumber_toString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- new Number(451).toString();
- `, "451")
-
- test(`
- new Number(451).toString(10);
- `, "451")
-
- test(`
- new Number(451).toString(8);
- `, "703")
-
- test(`raise:
- new Number(451).toString(1);
- `, "RangeError: RangeError: toString() radix must be between 2 and 36")
-
- test(`raise:
- new Number(451).toString(Infinity);
- `, "RangeError: RangeError: toString() radix must be between 2 and 36")
-
- test(`
- new Number(NaN).toString()
- `, "NaN")
-
- test(`
- new Number(Infinity).toString()
- `, "Infinity")
-
- test(`
- new Number(Infinity).toString(16)
- `, "Infinity")
-
- test(`
- [
- Number.prototype.toString(undefined),
- new Number().toString(undefined),
- new Number(0).toString(undefined),
- new Number(-1).toString(undefined),
- new Number(1).toString(undefined),
- new Number(Number.NaN).toString(undefined),
- new Number(Number.POSITIVE_INFINITY).toString(undefined),
- new Number(Number.NEGATIVE_INFINITY).toString(undefined)
- ]
- `, "0,0,0,-1,1,NaN,Infinity,-Infinity")
- })
-}
-
-func TestNumber_toFixed(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`new Number(451).toFixed(2)`, "451.00")
- test(`12345.6789.toFixed()`, "12346")
- test(`12345.6789.toFixed(1)`, "12345.7")
- test(`12345.6789.toFixed(6)`, "12345.678900")
- test(`(1.23e-20).toFixed(2)`, "0.00")
- test(`2.34.toFixed(1)`, "2.3") // FIXME Wtf? "2.3"
- test(`-2.34.toFixed(1)`, -2.3) // FIXME Wtf? -2.3
- test(`(-2.34).toFixed(1)`, "-2.3")
-
- test(`raise:
- new Number("a").toFixed(Number.POSITIVE_INFINITY);
- `, "RangeError: toFixed() precision must be between 0 and 20")
-
- test(`
- [
- new Number(1e21).toFixed(),
- new Number(1e21).toFixed(0),
- new Number(1e21).toFixed(1),
- new Number(1e21).toFixed(1.1),
- new Number(1e21).toFixed(0.9),
- new Number(1e21).toFixed("1"),
- new Number(1e21).toFixed("1.1"),
- new Number(1e21).toFixed("0.9"),
- new Number(1e21).toFixed(Number.NaN),
- new Number(1e21).toFixed("some string")
- ];
- `, "1e+21,1e+21,1e+21,1e+21,1e+21,1e+21,1e+21,1e+21,1e+21,1e+21")
-
- test(`raise:
- new Number(1e21).toFixed(Number.POSITIVE_INFINITY);
- `, "RangeError: toFixed() precision must be between 0 and 20")
- })
-}
-
-func TestNumber_toExponential(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`new Number(451).toExponential(2)`, "4.51e+02")
- test(`77.1234.toExponential()`, "7.71234e+01")
- test(`77.1234.toExponential(4)`, "7.7123e+01")
- test(`77.1234.toExponential(2)`, "7.71e+01")
- test(`77 .toExponential()`, "7.7e+01")
- })
-}
-
-func TestNumber_toPrecision(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`new Number(451).toPrecision()`, "451")
- test(`new Number(451).toPrecision(1)`, "5e+02")
- test(`5.123456.toPrecision()`, "5.123456")
- test(`5.123456.toPrecision(5)`, "5.1235")
- test(`5.123456.toPrecision(2)`, "5.1")
- test(`5.123456.toPrecision(1)`, "5")
- })
-}
-
-func TestNumber_toLocaleString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [
- new Number(451).toLocaleString(),
- new Number(451).toLocaleString(10),
- new Number(451).toLocaleString(8)
- ];
- `, "451,451,703")
- })
-}
-
-func TestValue_number(t *testing.T) {
- tt(t, func() {
- nm := toValue(0.0).number()
- is(nm.kind, numberInteger)
-
- nm = toValue(3.14159).number()
- is(nm.kind, numberFloat)
- })
-}
-
-func Test_NaN(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ NaN === NaN, NaN == NaN ];
- `, "false,false")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go
deleted file mode 100644
index d1e90680b..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go
+++ /dev/null
@@ -1,639 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestObject_(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- object := newObject(nil, "")
- is(object != nil, true)
-
- object.put("xyzzy", toValue("Nothing happens."), true)
- is(object.get("xyzzy"), "Nothing happens.")
-
- test(`
- var abc = Object.getOwnPropertyDescriptor(Object, "prototype");
- [ [ typeof Object.prototype, abc.writable, abc.enumerable, abc.configurable ],
- ];
- `, "object,false,false,false")
- })
-}
-
-func TestStringObject(t *testing.T) {
- tt(t, func() {
- object := New().runtime.newStringObject(toValue("xyzzy"))
- is(object.get("1"), "y")
- is(object.get("10"), "undefined")
- is(object.get("2"), "z")
- })
-}
-
-func TestObject_getPrototypeOf(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = {};
- def = Object.getPrototypeOf(abc);
- ghi = Object.getPrototypeOf(def);
- [abc,def,ghi,ghi+""];
- `, "[object Object],[object Object],,null")
-
- test(`
- abc = Object.getOwnPropertyDescriptor(Object, "getPrototypeOf");
- [ abc.value === Object.getPrototypeOf, abc.writable, abc.enumerable, abc.configurable ];
- `, "true,true,false,true")
- })
-}
-
-func TestObject_new(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ new Object("abc"), new Object(2+2) ];
- `, "abc,4")
- })
-}
-
-func TestObject_create(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: Object.create()`, "TypeError")
-
- test(`
- var abc = Object.create(null)
- var def = Object.create({x: 10, y: 20})
- var ghi = Object.create(Object.prototype)
-
- var jkl = Object.create({x: 10, y: 20}, {
- z: {
- value: 30,
- writable: true
- },
- // sum: {
- // get: function() {
- // return this.x + this.y + this.z
- // }
- // }
- });
- [ abc.prototype, def.x, def.y, ghi, jkl.x, jkl.y, jkl.z ]
- `, ",10,20,[object Object],10,20,30")
-
- test(`
- var properties = {};
- Object.defineProperty(properties, "abc", {
- value: {},
- enumerable: false
- });
- var mno = Object.create({}, properties);
- mno.hasOwnProperty("abc");
- `, false)
- })
-}
-
-func TestObject_toLocaleString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- ({}).toLocaleString();
- `, "[object Object]")
-
- test(`
- object = {
- toString: function() {
- return "Nothing happens.";
- }
- };
- object.toLocaleString();
- `, "Nothing happens.")
- })
-}
-
-func TestObject_isExtensible(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- Object.isExtensible();
- `, "TypeError")
-
- // FIXME terst, Why raise?
- test(`raise:
- Object.isExtensible({});
- `, true)
-
- test(`Object.isExtensible.length`, 1)
- test(`Object.isExtensible.prototype`, "undefined")
- })
-}
-
-func TestObject_preventExtensions(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- Object.preventExtensions()
- `, "TypeError")
-
- test(`raise:
- var abc = { def: true };
- var ghi = Object.preventExtensions(abc);
- [ ghi.def === true, Object.isExtensible(abc), Object.isExtensible(ghi) ];
- `, "true,false,false")
-
- test(`
- var abc = new String();
- var def = Object.isExtensible(abc);
- Object.preventExtensions(abc);
- var ghi = false;
- try {
- Object.defineProperty(abc, "0", { value: "~" });
- } catch (err) {
- ghi = err instanceof TypeError;
- }
- [ def, ghi, abc.hasOwnProperty("0"), typeof abc[0] ];
- `, "true,true,false,undefined")
-
- test(`Object.preventExtensions.length`, 1)
- test(`Object.preventExtensions.prototype`, "undefined")
- })
-}
-
-func TestObject_isSealed(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Object.isSealed.length`, 1)
- test(`Object.isSealed.prototype`, "undefined")
- })
-}
-
-func TestObject_seal(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: Object.seal()`, "TypeError")
-
- test(`
- var abc = {a:1,b:1,c:3};
- var sealed = Object.isSealed(abc);
- Object.seal(abc);
- [sealed, Object.isSealed(abc)];
- `, "false,true")
-
- test(`
- var abc = {a:1,b:1,c:3};
- var sealed = Object.isSealed(abc);
- var caught = false;
- Object.seal(abc);
- abc.b = 5;
- Object.defineProperty(abc, "a", {value:4});
- try {
- Object.defineProperty(abc, "a", {value:42,enumerable:false});
- } catch (e) {
- caught = e instanceof TypeError;
- }
- [sealed, Object.isSealed(abc), caught, abc.a, abc.b];
- `, "false,true,true,4,5")
-
- test(`Object.seal.length`, 1)
- test(`Object.seal.prototype`, "undefined")
- })
-}
-
-func TestObject_isFrozen(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: Object.isFrozen()`, "TypeError")
- test(`Object.isFrozen(Object.preventExtensions({a:1}))`, false)
- test(`Object.isFrozen({})`, false)
-
- test(`
- var abc = {};
- Object.defineProperty(abc, "def", {
- value: "def",
- writable: true,
- configurable: false
- });
- Object.preventExtensions(abc);
- !Object.isFrozen(abc);
- `, true)
-
- test(`Object.isFrozen.length`, 1)
- test(`Object.isFrozen.prototype`, "undefined")
- })
-}
-
-func TestObject_freeze(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: Object.freeze()`, "TypeError")
-
- test(`
- var abc = {a:1,b:2,c:3};
- var frozen = Object.isFrozen(abc);
- Object.freeze(abc);
- abc.b = 5;
- [frozen, Object.isFrozen(abc), abc.b];
- `, "false,true,2")
-
- test(`
- var abc = {a:1,b:2,c:3};
- var frozen = Object.isFrozen(abc);
- var caught = false;
- Object.freeze(abc);
- abc.b = 5;
- try {
- Object.defineProperty(abc, "a", {value:4});
- } catch (e) {
- caught = e instanceof TypeError;
- }
- [frozen, Object.isFrozen(abc), caught, abc.a, abc.b];
- `, "false,true,true,1,2")
-
- test(`Object.freeze.length`, 1)
- test(`Object.freeze.prototype`, "undefined")
- })
-}
-
-func TestObject_defineProperty(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- (function(abc, def, ghi){
- Object.defineProperty(arguments, "0", {
- enumerable: false
- });
- return true;
- })(0, 1, 2);
- `, true)
-
- test(`
- var abc = {};
- abc.def = 3.14; // Default: writable: true, enumerable: true, configurable: true
-
- Object.defineProperty(abc, "def", {
- value: 42
- });
-
- var ghi = Object.getOwnPropertyDescriptor(abc, "def");
- [ ghi.value, ghi.writable, ghi.enumerable, ghi.configurable ];
- `, "42,true,true,true")
-
- // Test that we handle the case of DefineOwnProperty
- // where [[Writable]] is something but [[Value]] is not
- test(`
- var abc = [];
- Object.defineProperty(abc, "0", { writable: false });
- 0 in abc;
- `, true)
-
- // Test that we handle the case of DefineOwnProperty
- // where [[Writable]] is something but [[Value]] is not
- // (and the property originally had something for [[Value]]
- test(`
- abc = {
- def: 42
- };
- Object.defineProperty(abc, "def", { writable: false });
- abc.def;
- `, 42)
- })
-}
-
-func TestObject_keys(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Object.keys({ abc:undefined, def:undefined })`, "abc,def")
-
- test(`
- function abc() {
- this.abc = undefined;
- this.def = undefined;
- }
- Object.keys(new abc())
- `, "abc,def")
-
- test(`
- function def() {
- this.ghi = undefined;
- }
- def.prototype = new abc();
- Object.keys(new def());
- `, "ghi")
-
- test(`
- var ghi = Object.create(
- {
- abc: undefined,
- def: undefined
- },
- {
- ghi: { value: undefined, enumerable: true },
- jkl: { value: undefined, enumerable: false }
- }
- );
- Object.keys(ghi);
- `, "ghi")
-
- test(`
- (function(abc, def, ghi){
- return Object.keys(arguments)
- })(undefined, undefined);
- `, "0,1")
-
- test(`
- (function(abc, def, ghi){
- return Object.keys(arguments)
- })(undefined, undefined, undefined, undefined);
- `, "0,1,2,3")
- })
-}
-
-func TestObject_getOwnPropertyNames(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Object.getOwnPropertyNames({ abc:undefined, def:undefined })`, "abc,def")
-
- test(`
- var ghi = Object.create(
- {
- abc: undefined,
- def: undefined
- },
- {
- ghi: { value: undefined, enumerable: true },
- jkl: { value: undefined, enumerable: false }
- }
- );
- Object.getOwnPropertyNames(ghi)
- `, "ghi,jkl")
- })
-}
-
-func TestObjectGetterSetter(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- Object.create({}, {
- abc: {
- get: function(){
- return "true";
- },
- writable: true
- }
- }).abc;
- `, "TypeError")
-
- test(`raise:
- Object.create({}, {
- abc: {
- get: function(){
- return "true";
- },
- writable: false
- }
- }).abc;
- `, "TypeError")
-
- test(`
- Object.create({}, {
- abc: {
- get: function(){
- return "true";
- }
- }
- }).abc;
- `, "true")
-
- test(`
- Object.create({xyz:true},{abc:{get:function(){return this.xyx}}}).abc;
- Object.create({
- xyz: true
- }, {
- abc: {
- get: function(){
- return this.xyz;
- }
- }
- }).abc;
- `, true)
-
- test(`
- var abc = false;
- var def = Object.create({}, {
- xyz: {
- set: function(value) {
- abc = value;
- }
- }
- });
- def.xyz = true;
- [ abc ];
- `, "true")
-
- test(`
- var abc = {};
- Object.defineProperty(abc, "def", {
- value: "xyzzy",
- configurable: true
- });
- Object.preventExtensions(abc);
- Object.defineProperty(abc, "def", {
- get: function() {
- return 5;
- }
- });
- var def = Object.getOwnPropertyDescriptor(abc, "def");
- [ abc.def, typeof def.get, typeof def.set, typeof def.value, def.configurable, def.enumerable, typeof def.writable ];
- `, "5,function,undefined,undefined,true,false,undefined")
-
- test(`
- var abc = {};
- Object.defineProperty(abc, "def", {
- get: function() {
- return 5;
- }
- configurable: true
- });
- Object.preventExtensions(abc);
- Object.defineProperty(abc, "def", {
- value: "xyzzy",
- });
- var def = Object.getOwnPropertyDescriptor(abc, "def");
- [ abc.def, typeof def.get, typeof def.set, def.value, def.configurable, def.enumerable, def.writable ];
- `, "xyzzy,undefined,undefined,xyzzy,true,false,false")
-
- test(`
- var abc = {};
-
- function _get0() {
- return 10;
- }
-
- function _set(value) {
- abc.def = value;
- }
-
- Object.defineProperty(abc, "ghi", {
- get: _get0,
- set: _set,
- configurable: true
- });
-
- function _get1() {
- return 20;
- }
-
- Object.defineProperty(abc, "ghi", {
- get: _get0
- });
-
- var descriptor = Object.getOwnPropertyDescriptor(abc, "ghi");
- [ typeof descriptor.set ];
- `, "function")
-
- test(`raise:
- var abc = [];
- Object.defineProperty(abc, "length", {
- get: function () {
- return 2;
- }
- });
- `, "TypeError")
-
- test(`
- var abc = {};
-
- var getter = function() {
- return 1;
- }
-
- Object.defineProperty(abc, "def", {
- get: getter,
- configurable: false
- });
-
- var jkl = undefined;
- try {
- Object.defineProperty(abc, "def", {
- get: undefined
- });
- }
- catch (err) {
- jkl = err;
- }
- var ghi = Object.getOwnPropertyDescriptor(abc, "def");
- [ jkl instanceof TypeError, ghi.get === getter, ghi.configurable, ghi.enumerable ];
- `, "true,true,false,false")
-
- test(`
- var abc = {};
-
- var getter = function() {
- return 1;
- };
-
- Object.defineProperty(abc, "def", {
- get: getter
- });
-
- Object.defineProperty(abc, "def", {
- set: undefined
- });
-
- var ghi = Object.getOwnPropertyDescriptor(abc, "def");
- [ ghi.get === getter, ghi.set === undefined, ghi.configurable, ghi.enumerable ];
- `, "true,true,false,false")
-
- test(`
- var abc = {};
-
- var getter = function() {
- return 1;
- };
-
- Object.defineProperty(abc, "def", {
- get: getter
- });
-
- var jkl = undefined;
- try {
- Object.defineProperty(abc, "def", {
- set: function() {}
- });
- }
- catch (err) {
- jkl = err;
- }
-
- var ghi = Object.getOwnPropertyDescriptor(abc, "def");
- [ jkl instanceof TypeError, ghi.get === getter, ghi.set, ghi.configurable, ghi.enumerable ];
- `, "true,true,,false,false")
-
- test(`
- var abc = {};
- var def = "xyzzy";
-
- Object.defineProperty(abc, "ghi", {
- get: undefined,
- set: function(value) {
- def = value;
- },
- enumerable: true,
- configurable: true
- });
-
- var hasOwn = abc.hasOwnProperty("ghi");
- var descriptor = Object.getOwnPropertyDescriptor(abc, "ghi");
-
- [ hasOwn, typeof descriptor.get ];
- `, "true,undefined")
-
- test(`
- var abc = "xyzzy";
- Object.defineProperty(Array.prototype, "abc", {
- get: function () {
- return abc;
- },
- set: function (value) {
- abc = value;
- },
- enumerable: true,
- configurable: true
- });
- var def = [];
- def.abc = 3.14159;
- [ def.hasOwnProperty("abc"), def.abc, abc ];
- `, "false,3.14159,3.14159")
- })
-}
-
-func TestProperty(t *testing.T) {
- tt(t, func() {
- property := _property{}
- property.writeOn()
- is(property.writeSet(), true)
-
- property.writeClear()
- is(property.writeSet(), false)
-
- property.writeOff()
- is(property.writeSet(), true)
-
- property.writeClear()
- is(property.writeSet(), false)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/otto.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/otto.go
index 9de3e08c5..2ec033cbc 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/otto.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/otto.go
@@ -296,6 +296,24 @@ func (self Otto) Run(src interface{}) (Value, error) {
return value, err
}
+// Eval will do the same thing as Run, except without leaving the current scope.
+//
+// By staying in the same scope, the code evaluated has access to everything
+// already defined in the current stack frame. This is most useful in, for
+// example, a debugger call.
+func (self Otto) Eval(src interface{}) (Value, error) {
+ if self.runtime.scope == nil {
+ self.runtime.enterGlobalScope()
+ defer self.runtime.leaveScope()
+ }
+
+ value, err := self.runtime.cmpl_eval(src)
+ if !value.safe() {
+ value = Value{}
+ }
+ return value, err
+}
+
// Get the value of the top-level binding of the given name.
//
// If there is an error (like the binding does not exist), then the value
@@ -341,6 +359,79 @@ func (self Otto) setValue(name string, value Value) {
self.runtime.globalStash.setValue(name, value, false)
}
+func (self Otto) SetDebuggerHandler(fn func(vm *Otto)) {
+ self.runtime.debugger = fn
+}
+
+// Context is a structure that contains information about the current execution
+// context.
+type Context struct {
+ Filename string
+ Line int
+ Column int
+ Callee string
+ Symbols map[string]Value
+ This Value
+ Stacktrace []string
+}
+
+// Context returns the current execution context of the vm
+func (self Otto) Context() (ctx Context) {
+ // Ensure we are operating in a scope
+ if self.runtime.scope == nil {
+ self.runtime.enterGlobalScope()
+ defer self.runtime.leaveScope()
+ }
+
+ scope := self.runtime.scope
+ frame := scope.frame
+
+ // Get location information
+ ctx.Filename = "<unknown>"
+ ctx.Callee = frame.callee
+ if frame.file != nil {
+ ctx.Filename = frame.file.Name()
+ if ctx.Filename == "" {
+ ctx.Filename = "<anonymous>"
+ }
+ ctx.Line, ctx.Column = _position(frame.file, frame.offset)
+ }
+
+ // Get the current scope this Value
+ ctx.This = toValue_object(scope.this)
+
+ // Build stacktrace (up to 10 levels deep)
+ limit := 10
+ ctx.Symbols = make(map[string]Value)
+ ctx.Stacktrace = append(ctx.Stacktrace, frame.location())
+ for limit > 0 {
+ // Get variables
+ stash := scope.lexical
+ for {
+ for _, name := range getStashProperties(stash) {
+ if _, ok := ctx.Symbols[name]; !ok {
+ ctx.Symbols[name] = stash.getBinding(name, true)
+ }
+ }
+ stash = stash.outer()
+ if stash == nil || stash.outer() == nil {
+ break
+ }
+ }
+
+ scope = scope.outer
+ if scope == nil {
+ break
+ }
+ if scope.frame.offset >= 0 {
+ ctx.Stacktrace = append(ctx.Stacktrace, scope.frame.location())
+ }
+ limit--
+ }
+
+ return
+}
+
// Call the given JavaScript with a given this and arguments.
//
// If this is nil, then some special handling takes place to determine the proper
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_.go
index e053b54e2..304a83150 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_.go
@@ -20,12 +20,12 @@ func (self *_runtime) toValueArray(arguments ...interface{}) []Value {
if valueArray, ok := arguments[0].([]Value); ok {
return valueArray
}
- return []Value{toValue(arguments[0])}
+ return []Value{self.toValue(arguments[0])}
}
valueArray := make([]Value, length)
for index, value := range arguments {
- valueArray[index] = toValue(value)
+ valueArray[index] = self.toValue(value)
}
return valueArray
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_error_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_error_test.go
deleted file mode 100644
index 5ce358819..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_error_test.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestOttoError(t *testing.T) {
- tt(t, func() {
- vm := New()
-
- _, err := vm.Run(`throw "Xyzzy"`)
- is(err, "Xyzzy")
-
- _, err = vm.Run(`throw new TypeError()`)
- is(err, "TypeError")
-
- _, err = vm.Run(`throw new TypeError("Nothing happens.")`)
- is(err, "TypeError: Nothing happens.")
-
- _, err = ToValue([]byte{})
- is(err, "TypeError: invalid value (slice): missing runtime: [] ([]uint8)")
-
- _, err = vm.Run(`
- (function(){
- return abcdef.length
- })()
- `)
- is(err, "ReferenceError: 'abcdef' is not defined")
-
- _, err = vm.Run(`
- function start() {
- }
-
- start()
-
- xyzzy()
- `)
- is(err, "ReferenceError: 'xyzzy' is not defined")
-
- _, err = vm.Run(`
- // Just a comment
-
- xyzzy
- `)
- is(err, "ReferenceError: 'xyzzy' is not defined")
-
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_test.go
deleted file mode 100644
index 2f1e1c35f..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/otto_test.go
+++ /dev/null
@@ -1,1379 +0,0 @@
-package otto
-
-import (
- "bytes"
- "io"
- "testing"
-
- "github.com/robertkrimen/otto/parser"
-)
-
-func TestOtto(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test("xyzzy = 2", 2)
-
- test("xyzzy + 2", 4)
-
- test("xyzzy += 16", 18)
-
- test("xyzzy", 18)
-
- test(`
- (function(){
- return 1
- })()
- `, 1)
-
- test(`
- (function(){
- return 1
- }).call(this)
- `, 1)
-
- test(`
- (function(){
- var result
- (function(){
- result = -1
- })()
- return result
- })()
- `, -1)
-
- test(`
- var abc = 1
- abc || (abc = -1)
- abc
- `, 1)
-
- test(`
- var abc = (function(){ 1 === 1 })();
- abc;
- `, "undefined")
- })
-}
-
-func TestFunction__(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- function abc() {
- return 1;
- };
- abc();
- `, 1)
- })
-}
-
-func TestIf(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = undefined;
- def = undefined;
- if (true) abc = 1
- else abc = 2;
- if (false) {
- def = 3;
- }
- else def = 4;
-
- [ abc, def ];
- `, "1,4")
-
- test(`
- if (1) {
- abc = 1;
- }
- else {
- abc = 0;
- }
- abc;
- `, 1)
-
- test(`
- if (0) {
- abc = 1;
- }
- else {
- abc = 0;
- }
- abc;
- `, 0)
-
- test(`
- abc = 0;
- if (0) {
- abc = 1;
- }
- abc;
- `, 0)
-
- test(`
- abc = 0;
- if (abc) {
- abc = 1;
- }
- abc;
- `, 0)
- })
-}
-
-func TestSequence(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- 1, 2, 3;
- `, 3)
- })
-}
-
-func TestCall(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- Math.pow(3, 2);
- `, 9)
- })
-}
-
-func TestMember(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = [ 0, 1, 2 ];
- def = {
- "abc": 0,
- "def": 1,
- "ghi": 2,
- };
- [ abc[2], def.abc, abc[1], def.def ];
- `, "2,0,1,1")
- })
-}
-
-func Test_this(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- typeof this;
- `, "object")
- })
-}
-
-func TestWhile(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- limit = 4
- abc = 0
- while (limit) {
- abc = abc + 1
- limit = limit - 1
- }
- abc;
- `, 4)
- })
-}
-
-func TestSwitch_break(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = true;
- var ghi = "Xyzzy";
- while (abc) {
- switch ('def') {
- case 'def':
- break;
- }
- ghi = "Nothing happens.";
- abc = false;
- }
- ghi;
- `, "Nothing happens.")
-
- test(`
- var abc = true;
- var ghi = "Xyzzy";
- WHILE:
- while (abc) {
- switch ('def') {
- case 'def':
- break WHILE;
- }
- ghi = "Nothing happens."
- abc = false
- }
- ghi;
- `, "Xyzzy")
-
- test(`
- var ghi = "Xyzzy";
- FOR:
- for (;;) {
- switch ('def') {
- case 'def':
- break FOR;
- ghi = "";
- }
- ghi = "Nothing happens.";
- }
- ghi;
- `, "Xyzzy")
-
- test(`
- var ghi = "Xyzzy";
- FOR:
- for (var jkl in {}) {
- switch ('def') {
- case 'def':
- break FOR;
- ghi = "Something happens.";
- }
- ghi = "Nothing happens.";
- }
- ghi;
- `, "Xyzzy")
-
- test(`
- var ghi = "Xyzzy";
- function jkl() {
- switch ('def') {
- case 'def':
- break;
- ghi = "";
- }
- ghi = "Nothing happens.";
- }
- while (abc) {
- jkl();
- abc = false;
- ghi = "Something happens.";
- }
- ghi;
- `, "Something happens.")
- })
-}
-
-func TestTryFinally(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc;
- try {
- abc = 1;
- }
- finally {
- abc = 2;
- }
- abc;
- `, 2)
-
- test(`
- var abc = false, def = 0;
- do {
- def += 1;
- if (def > 100) {
- break;
- }
- try {
- continue;
- }
- finally {
- abc = true;
- }
- }
- while(!abc && def < 10)
- def;
- `, 1)
-
- test(`
- var abc = false, def = 0, ghi = 0;
- do {
- def += 1;
- if (def > 100) {
- break;
- }
- try {
- throw 0;
- }
- catch (jkl) {
- continue;
- }
- finally {
- abc = true;
- ghi = 11;
- }
- ghi -= 1;
- }
- while(!abc && def < 10)
- ghi;
- `, 11)
-
- test(`
- var abc = 0, def = 0;
- do {
- try {
- abc += 1;
- throw "ghi";
- }
- finally {
- def = 1;
- continue;
- }
- def -= 1;
- }
- while (abc < 2)
- [ abc, def ];
- `, "2,1")
- })
-}
-
-func TestTryCatch(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = 1;
- try {
- throw 4;
- abc = -1;
- }
- catch (xyzzy) {
- abc += xyzzy + 1;
- }
- abc;
- `, 6)
-
- test(`
- abc = 1;
- var def;
- try {
- try {
- throw 4;
- abc = -1;
- }
- catch (xyzzy) {
- abc += xyzzy + 1;
- throw 64;
- }
- }
- catch (xyzzy) {
- def = xyzzy;
- abc = -2;
- }
- [ def, abc ];
- `, "64,-2")
- })
-}
-
-func TestWith(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var def;
- with({ abc: 9 }) {
- def = abc;
- }
- def;
- `, 9)
-
- test(`
- var def;
- with({ abc: function(){
- return 11;
- } }) {
- def = abc();
- }
- def;
- `, 11)
- })
-}
-
-func TestSwitch(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = 0;
- switch (0) {
- default:
- abc += 1;
- case 1:
- abc += 2;
- case 2:
- abc += 4;
- case 3:
- abc += 8;
- }
- abc;
- `, 15)
-
- test(`
- abc = 0;
- switch (3) {
- default:
- abc += 1;
- case 1:
- abc += 2;
- case 2:
- abc += 4;
- case 3:
- abc += 8;
- }
- abc;
- `, 8)
-
- test(`
- abc = 0;
- switch (60) {
- case 1:
- abc += 2;
- case 2:
- abc += 4;
- case 3:
- abc += 8;
- }
- abc;
- `, 0)
- })
-}
-
-func TestForIn(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc;
- for (property in { a: 1 }) {
- abc = property;
- }
- abc;
- `, "a")
-
- test(`
- var ghi;
- for (property in new String("xyzzy")) {
- ghi = property;
- }
- ghi;
- `, "4")
- })
-}
-
-func TestFor(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = 7;
- for (i = 0; i < 3; i += 1) {
- abc += 1;
- }
- abc;
- `, 10)
-
- test(`
- abc = 7;
- for (i = 0; i < 3; i += 1) {
- abc += 1;
- if (i == 1) {
- break;
- }
- }
- abc;
- `, 9)
-
- test(`
- abc = 7;
- for (i = 0; i < 3; i += 1) {
- if (i == 2) {
- continue;
- }
- abc += 1;
- }
- abc;
- `, 9)
-
- test(`
- abc = 0;
- for (;;) {
- abc += 1;
- if (abc == 3)
- break;
- }
- abc;
- `, 3)
-
- test(`
- for (abc = 0; ;) {
- abc += 1;
- if (abc == 3)
- break;
- }
- abc;
- `, 3)
-
- test(`
- for (abc = 0; ; abc += 1) {
- abc += 1;
- if (abc == 3)
- break;
- }
- abc;
- `, 3)
- })
-}
-
-func TestLabelled(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // TODO Add emergency break
-
- test(`
- xyzzy: for (var abc = 0; abc <= 0; abc++) {
- for (var def = 0; def <= 1; def++) {
- if (def === 0) {
- continue xyzzy;
- } else {
- }
- }
- }
- `)
-
- test(`
- abc = 0
- def:
- while (true) {
- while (true) {
- abc = abc + 1
- if (abc > 11) {
- break def;
- }
- }
- }
- abc;
- `, 12)
-
- test(`
- abc = 0
- def:
- do {
- do {
- abc = abc + 1
- if (abc > 11) {
- break def;
- }
- } while (true)
- } while (true)
- abc;
- `, 12)
- })
-}
-
-func TestConditional(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ true ? false : true, true ? 1 : 0, false ? 3.14159 : "abc" ];
- `, "false,1,abc")
- })
-}
-
-func TestArrayLiteral(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ 1, , 3.14159 ];
- `, "1,,3.14159")
- })
-}
-
-func TestAssignment(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = 1;
- abc;
- `, 1)
-
- test(`
- abc += 2;
- abc;
- `, 3)
- })
-}
-
-func TestBinaryOperation(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`0 == 1`, false)
- test(`1 == "1"`, true)
- test(`0 === 1`, false)
- test(`1 === "1"`, false)
- test(`"1" === "1"`, true)
- })
-}
-
-func Test_typeof(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`typeof abc`, "undefined")
- test(`typeof abc === 'undefined'`, true)
- test(`typeof {}`, "object")
- test(`typeof null`, "object")
- })
-}
-
-func Test_PrimitiveValueObjectValue(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- Number11 := test(`new Number(11)`)
- is(Number11.float64(), 11)
- })
-}
-
-func Test_eval(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // FIXME terst, Is this correct?
- test(`
- var abc = 1;
- `, "undefined")
-
- test(`
- eval("abc += 1");
- `, 2)
-
- test(`
- (function(){
- var abc = 11;
- eval("abc += 1");
- return abc;
- })();
- `, 12)
- test(`abc`, 2)
-
- test(`
- (function(){
- try {
- eval("var prop = \\u2029;");
- return false;
- } catch (abc) {
- return [ abc instanceof SyntaxError, abc.toString() ];
- }
- })();
- `, "true,SyntaxError: Unexpected token ILLEGAL")
-
- test(`
- function abc(){
- this.THIS = eval("this");
- }
- var def = new abc();
- def === def.THIS;
- `, true)
- })
-}
-
-func Test_evalDirectIndirect(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // (function () {return this;}()).abc = "global";
- test(`
- var abc = "global";
- (function(){
- try {
- var _eval = eval;
- var abc = "function";
- return [
- _eval("\'global\' === abc"), // eval (Indirect)
- eval("\'function\' === abc"), // eval (Direct)
- ];
- } finally {
- delete this.abc;
- }
- })();
- `, "true,true")
- })
-}
-
-func TestError_URIError(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`new URIError() instanceof URIError`, true)
-
- test(`
- var abc
- try {
- decodeURI("http://example.com/ _^#%")
- }
- catch (def) {
- abc = def instanceof URIError
- }
- abc
- `, true)
- })
-}
-
-func TestTo(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- {
- value, _ := test(`"11"`).ToFloat()
- is(value, float64(11))
- }
-
- {
- value, _ := test(`"11"`).ToInteger()
- is(value, int64(11))
-
- value, _ = test(`1.1`).ToInteger()
- is(value, int64(1))
- }
- })
-}
-
-func TestShouldError(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- xyzzy
- throw new TypeError("Nothing happens.")
- `, "ReferenceError: 'xyzzy' is not defined")
- })
-}
-
-func TestAPI(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- test(`
- String.prototype.xyzzy = function(){
- return this.length + 11 + (arguments[0] || 0)
- }
- abc = new String("xyzzy")
- def = "Nothing happens."
- abc.xyzzy()
- `, 16)
- abc, _ := vm.Get("abc")
- def, _ := vm.Get("def")
- object := abc.Object()
- result, _ := object.Call("xyzzy")
- is(result, 16)
- result, _ = object.Call("xyzzy", 1)
- is(result, 17)
- value, _ := object.Get("xyzzy")
- result, _ = value.Call(def)
- is(result, 27)
- result, _ = value.Call(def, 3)
- is(result, 30)
- object = value.Object() // Object xyzzy
- result, _ = object.Value().Call(def, 3)
- is(result, 30)
-
- test(`
- abc = {
- 'abc': 1,
- 'def': false,
- 3.14159: NaN,
- };
- abc['abc'];
- `, 1)
- abc, err := vm.Get("abc")
- is(err, nil)
- object = abc.Object() // Object abc
- value, err = object.Get("abc")
- is(err, nil)
- is(value, 1)
- is(object.Keys(), []string{"abc", "def", "3.14159"})
-
- test(`
- abc = [ 0, 1, 2, 3.14159, "abc", , ];
- abc.def = true;
- `)
- abc, err = vm.Get("abc")
- is(err, nil)
- object = abc.Object() // Object abc
- is(object.Keys(), []string{"0", "1", "2", "3", "4", "def"})
- })
-}
-
-func TestUnicode(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`var abc = eval("\"a\uFFFFa\"");`, "undefined")
-
- test(`abc.length`, 3)
-
- test(`abc != "aa"`, true)
-
- test("abc[1] === \"\uFFFF\"", true)
- })
-}
-
-func TestDotMember(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = {
- ghi: 11,
- }
- abc.def = "Xyzzy"
- abc.null = "Nothing happens."
- `)
- test(`abc.def`, "Xyzzy")
- test(`abc.null`, "Nothing happens.")
- test(`abc.ghi`, 11)
-
- test(`
- abc = {
- null: 11,
- }
- `)
- test(`abc.def`, "undefined")
- test(`abc.null`, 11)
- test(`abc.ghi`, "undefined")
- })
-}
-
-func Test_stringToFloat(t *testing.T) {
- tt(t, func() {
-
- is(parseNumber("10e10000"), _Infinity)
- is(parseNumber("10e10_."), _NaN)
- })
-}
-
-func Test_delete(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- delete 42;
- `, true)
-
- test(`
- var abc = delete $_undefined_$;
- abc = abc && delete ($_undefined_$);
- abc;
- `, true)
-
- // delete should not trigger get()
- test(`
- var abc = {
- get def() {
- throw "Test_delete: delete should not trigger get()"
- }
- };
- delete abc.def
- `, true)
- })
-}
-
-func TestObject_defineOwnProperty(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var object = {};
-
- var descriptor = new Boolean(false);
- descriptor.configurable = true;
-
- Object.defineProperties(object, {
- property: descriptor
- });
-
- var abc = object.hasOwnProperty("property");
- delete object.property;
- var def = object.hasOwnProperty("property");
-
- [ abc, def ];
- `, "true,false")
-
- test(`
- var object = [0, 1, 2];
- Object.defineProperty(object, "0", {
- value: 42,
- writable: false,
- enumerable: false,
- configurable: false
- });
- var abc = Object.getOwnPropertyDescriptor(object, "0");
- [ abc.value, abc.writable, abc.enumerable, abc.configurable ];
- `, "42,false,false,false")
-
- test(`
- var abc = { "xyzzy": 42 };
- var def = Object.defineProperties(abc, "");
- abc === def;
- `, true)
- })
-}
-
-func Test_assignmentEvaluationOrder(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = 0;
- ((abc = 1) & abc);
- `, 1)
-
- test(`
- var abc = 0;
- (abc & (abc = 1));
- `, 0)
- })
-}
-
-func TestOttoCall(t *testing.T) {
- tt(t, func() {
- vm := New()
-
- _, err := vm.Run(`
- var abc = {
- ghi: 1,
- def: function(def){
- var ghi = 0;
- if (this.ghi) {
- ghi = this.ghi;
- }
- return "def: " + (def + 3.14159 + ghi);
- }
- };
- `)
- is(err, nil)
-
- value, err := vm.Call(`abc.def`, nil, 2)
- is(err, nil)
- is(value, "def: 6.14159")
-
- value, err = vm.Call(`abc.def`, "", 2)
- is(err, nil)
- is(value, "def: 5.14159")
-
- // Do not attempt to do a ToValue on a this of nil
- value, err = vm.Call(`jkl.def`, nil, 1, 2, 3)
- is(err, "!=", nil)
- is(value, "undefined")
-
- value, err = vm.Call(`[ 1, 2, 3, undefined, 4 ].concat`, nil, 5, 6, 7, "abc")
- is(err, nil)
- is(value, "1,2,3,,4,5,6,7,abc")
- })
-}
-
-func TestOttoCall_new(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- vm.Set("abc", func(call FunctionCall) Value {
- value, err := call.Otto.Call(`new Object`, nil, "Nothing happens.")
- is(err, nil)
- return value
- })
- test(`
- def = abc();
- [ def, def instanceof String ];
- `, "Nothing happens.,true")
- })
-}
-
-func TestOttoCall_throw(t *testing.T) {
- // FIXME? (Been broken for a while)
- // Looks like this has been broken for a while... what
- // behavior do we want here?
-
- if true {
- return
- }
-
- tt(t, func() {
- test, vm := test()
-
- vm.Set("abc", func(call FunctionCall) Value {
- if false {
- call.Otto.Call(`throw eval`, nil, "({ def: 3.14159 })")
- }
- call.Otto.Call(`throw Error`, nil, "abcdef")
- return Value{}
- })
- // TODO try { abc(); } catch (err) { error = err }
- // Possible unrelated error case:
- // If error is not declared beforehand, is later referencing it a ReferenceError?
- // Should the catch { } declare error in the outer scope?
- test(`
- var error;
- try {
- abc();
- }
- catch (err) {
- error = err;
- }
- [ error instanceof Error, error.message, error.def ];
- `, "true,abcdef,")
-
- vm.Set("def", func(call FunctionCall) Value {
- call.Otto.Call(`throw new Object`, nil, 3.14159)
- return UndefinedValue()
- })
- test(`
- try {
- def();
- }
- catch (err) {
- error = err;
- }
- [ error instanceof Error, error.message, error.def, typeof error, error, error instanceof Number ];
- `, "false,,,object,3.14159,true")
- })
-}
-
-func TestOttoCopy(t *testing.T) {
- tt(t, func() {
- vm0 := New()
- vm0.Run(`
- var abc = function() {
- return "Xyzzy";
- };
-
- function def() {
- return abc() + (0 + {});
- }
- `)
-
- value, err := vm0.Run(`
- def();
- `)
- is(err, nil)
- is(value, "Xyzzy0[object Object]")
-
- vm1 := vm0.Copy()
- value, err = vm1.Run(`
- def();
- `)
- is(err, nil)
- is(value, "Xyzzy0[object Object]")
-
- vm1.Run(`
- abc = function() {
- return 3.14159;
- };
- `)
- value, err = vm1.Run(`
- def();
- `)
- is(err, nil)
- is(value, "3.141590[object Object]")
-
- value, err = vm0.Run(`
- def();
- `)
- is(err, nil)
- is(value, "Xyzzy0[object Object]")
-
- {
- vm0 := New()
- vm0.Run(`
- var global = (function () {return this;}())
- var abc = 0;
- var vm = "vm0";
-
- var def = (function(){
- var jkl = 0;
- var abc = function() {
- global.abc += 1;
- jkl += 1;
- return 1;
- };
-
- return function() {
- return [ vm, global.abc, jkl, abc() ];
- };
- })();
- `)
-
- value, err := vm0.Run(`
- def();
- `)
- is(err, nil)
- is(value, "vm0,0,0,1")
-
- vm1 := vm0.Copy()
- vm1.Set("vm", "vm1")
- value, err = vm1.Run(`
- def();
- `)
- is(err, nil)
- is(value, "vm1,1,1,1")
-
- value, err = vm0.Run(`
- def();
- `)
- is(err, nil)
- is(value, "vm0,1,1,1")
-
- value, err = vm1.Run(`
- def();
- `)
- is(err, nil)
- is(value, "vm1,2,2,1")
- }
- })
-}
-
-func TestOttoCall_clone(t *testing.T) {
- tt(t, func() {
- vm := New().clone()
- rt := vm.runtime
-
- {
- // FIXME terst, Check how this comparison is done
- is(rt.global.Array.prototype, rt.global.FunctionPrototype)
- is(rt.global.ArrayPrototype, "!=", nil)
- is(rt.global.Array.runtime, rt)
- is(rt.global.Array.prototype.runtime, rt)
- is(rt.global.Array.get("prototype")._object().runtime, rt)
- }
-
- {
- value, err := vm.Run(`[ 1, 2, 3 ].toString()`)
- is(err, nil)
- is(value, "1,2,3")
- }
-
- {
- value, err := vm.Run(`[ 1, 2, 3 ]`)
- is(err, nil)
- is(value, "1,2,3")
- object := value._object()
- is(object, "!=", nil)
- is(object.prototype, rt.global.ArrayPrototype)
-
- value, err = vm.Run(`Array.prototype`)
- is(err, nil)
- object = value._object()
- is(object.runtime, rt)
- is(object, "!=", nil)
- is(object, rt.global.ArrayPrototype)
- }
-
- {
- otto1 := New()
- _, err := otto1.Run(`
- var abc = 1;
- var def = 2;
- `)
- is(err, nil)
-
- otto2 := otto1.clone()
- value, err := otto2.Run(`abc += 1; abc;`)
- is(err, nil)
- is(value, 2)
-
- value, err = otto1.Run(`abc += 4; abc;`)
- is(err, nil)
- is(value, 5)
- }
-
- {
- vm1 := New()
- _, err := vm1.Run(`
- var abc = 1;
- var def = function(value) {
- abc += value;
- return abc;
- }
- `)
- is(err, nil)
-
- vm2 := vm1.clone()
- value, err := vm2.Run(`def(1)`)
- is(err, nil)
- is(value, 2)
-
- value, err = vm1.Run(`def(4)`)
- is(err, nil)
- is(value, 5)
- }
-
- {
- vm1 := New()
- _, err := vm1.Run(`
- var abc = {
- ghi: 1,
- jkl: function(value) {
- this.ghi += value;
- return this.ghi;
- }
- };
- var def = {
- abc: abc
- };
- `)
- is(err, nil)
-
- otto2 := vm1.clone()
- value, err := otto2.Run(`def.abc.jkl(1)`)
- is(err, nil)
- is(value, 2)
-
- value, err = vm1.Run(`def.abc.jkl(4)`)
- is(err, nil)
- is(value, 5)
- }
-
- {
- vm1 := New()
- _, err := vm1.Run(`
- var abc = function() { return "abc"; };
- var def = function() { return "def"; };
- `)
- is(err, nil)
-
- vm2 := vm1.clone()
- value, err := vm2.Run(`
- [ abc.toString(), def.toString() ];
- `)
- is(value, `function() { return "abc"; },function() { return "def"; }`)
-
- _, err = vm2.Run(`
- var def = function() { return "ghi"; };
- `)
- is(err, nil)
-
- value, err = vm1.Run(`
- [ abc.toString(), def.toString() ];
- `)
- is(value, `function() { return "abc"; },function() { return "def"; }`)
-
- value, err = vm2.Run(`
- [ abc.toString(), def.toString() ];
- `)
- is(value, `function() { return "abc"; },function() { return "ghi"; }`)
- }
-
- })
-}
-
-func TestOttoRun(t *testing.T) {
- tt(t, func() {
- vm := New()
-
- program, err := parser.ParseFile(nil, "", "", 0)
- is(err, nil)
- value, err := vm.Run(program)
- is(err, nil)
- is(value, UndefinedValue())
-
- program, err = parser.ParseFile(nil, "", "2 + 2", 0)
- is(err, nil)
- value, err = vm.Run(program)
- is(err, nil)
- is(value, 4)
- value, err = vm.Run(program)
- is(err, nil)
- is(value, 4)
-
- program, err = parser.ParseFile(nil, "", "var abc; if (!abc) abc = 0; abc += 2; abc;", 0)
- value, err = vm.Run(program)
- is(err, nil)
- is(value, 2)
- value, err = vm.Run(program)
- is(err, nil)
- is(value, 4)
- value, err = vm.Run(program)
- is(err, nil)
- is(value, 6)
-
- {
- src := []byte("var abc; if (!abc) abc = 0; abc += 2; abc;")
- value, err = vm.Run(src)
- is(err, nil)
- is(value, 8)
-
- value, err = vm.Run(bytes.NewBuffer(src))
- is(err, nil)
- is(value, 10)
-
- value, err = vm.Run(io.Reader(bytes.NewBuffer(src)))
- is(err, nil)
- is(value, 12)
- }
-
- {
- script, err := vm.Compile("", `var abc; if (!abc) abc = 0; abc += 2; abc;`)
- is(err, nil)
-
- value, err = vm.Run(script)
- is(err, nil)
- is(value, 14)
-
- value, err = vm.Run(script)
- is(err, nil)
- is(value, 16)
-
- is(script.String(), "// \nvar abc; if (!abc) abc = 0; abc += 2; abc;")
- }
- })
-}
-
-func Test_objectLength(t *testing.T) {
- tt(t, func() {
- _, vm := test()
-
- value := vm.Set("abc", []string{"jkl", "mno"})
- is(objectLength(value._object()), 2)
-
- value, _ = vm.Run(`[1, 2, 3]`)
- is(objectLength(value._object()), 3)
-
- value, _ = vm.Run(`new String("abcdefghi")`)
- is(objectLength(value._object()), 9)
-
- value, _ = vm.Run(`"abcdefghi"`)
- is(objectLength(value._object()), 0)
- })
-}
-
-func BenchmarkNew(b *testing.B) {
- for i := 0; i < b.N; i++ {
- New()
- }
-}
-
-func BenchmarkClone(b *testing.B) {
- vm := New()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- vm.clone()
- }
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/panic_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/panic_test.go
deleted file mode 100644
index 06f0a64fc..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/panic_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func Test_panic(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // Test that property.value is set to something if writable is set
- // to something
- test(`
- var abc = [];
- Object.defineProperty(abc, "0", { writable: false });
- Object.defineProperty(abc, "0", { writable: false });
- "0" in abc;
- `, true)
-
- test(`raise:
- var abc = [];
- Object.defineProperty(abc, "0", { writable: false });
- Object.defineProperty(abc, "0", { value: false, writable: false });
- `, "TypeError")
-
- // Test that a regular expression can contain \c0410 (CYRILLIC CAPITAL LETTER A)
- // without panicking
- test(`
- var abc = 0x0410;
- var def = String.fromCharCode(abc);
- new RegExp("\\c" + def).exec(def);
- `, "null")
-
- // Test transforming a transformable regular expression without a panic
- test(`
- new RegExp("\\u0000");
- new RegExp("\\undefined").test("undefined");
- `, true)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/expression.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/expression.go
index dc397b5cb..8baf22f7c 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/expression.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/expression.go
@@ -417,7 +417,7 @@ func (self *_parser) parseLeftHandSideExpression() ast.Expression {
for {
if self.token == token.PERIOD {
left = self.parseDotMember(left)
- } else if self.token == token.LEFT_BRACE {
+ } else if self.token == token.LEFT_BRACKET {
left = self.parseBracketMember(left)
} else {
break
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/lexer_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/lexer_test.go
deleted file mode 100644
index 37eb7a464..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/lexer_test.go
+++ /dev/null
@@ -1,380 +0,0 @@
-package parser
-
-import (
- "../terst"
- "testing"
-
- "github.com/robertkrimen/otto/file"
- "github.com/robertkrimen/otto/token"
-)
-
-var tt = terst.Terst
-var is = terst.Is
-
-func TestLexer(t *testing.T) {
- tt(t, func() {
- setup := func(src string) *_parser {
- parser := newParser("", src)
- return parser
- }
-
- test := func(src string, test ...interface{}) {
- parser := setup(src)
- for len(test) > 0 {
- tkn, literal, idx := parser.scan()
- if len(test) > 0 {
- is(tkn, test[0].(token.Token))
- test = test[1:]
- }
- if len(test) > 0 {
- is(literal, test[0].(string))
- test = test[1:]
- }
- if len(test) > 0 {
- // FIXME terst, Fix this so that cast to file.Idx is not necessary?
- is(idx, file.Idx(test[0].(int)))
- test = test[1:]
- }
- }
- }
-
- test("",
- token.EOF, "", 1,
- )
-
- test("1",
- token.NUMBER, "1", 1,
- token.EOF, "", 2,
- )
-
- test(".0",
- token.NUMBER, ".0", 1,
- token.EOF, "", 3,
- )
-
- test("abc",
- token.IDENTIFIER, "abc", 1,
- token.EOF, "", 4,
- )
-
- test("abc(1)",
- token.IDENTIFIER, "abc", 1,
- token.LEFT_PARENTHESIS, "", 4,
- token.NUMBER, "1", 5,
- token.RIGHT_PARENTHESIS, "", 6,
- token.EOF, "", 7,
- )
-
- test(".",
- token.PERIOD, "", 1,
- token.EOF, "", 2,
- )
-
- test("===.",
- token.STRICT_EQUAL, "", 1,
- token.PERIOD, "", 4,
- token.EOF, "", 5,
- )
-
- test(">>>=.0",
- token.UNSIGNED_SHIFT_RIGHT_ASSIGN, "", 1,
- token.NUMBER, ".0", 5,
- token.EOF, "", 7,
- )
-
- test(">>>=0.0.",
- token.UNSIGNED_SHIFT_RIGHT_ASSIGN, "", 1,
- token.NUMBER, "0.0", 5,
- token.PERIOD, "", 8,
- token.EOF, "", 9,
- )
-
- test("\"abc\"",
- token.STRING, "\"abc\"", 1,
- token.EOF, "", 6,
- )
-
- test("abc = //",
- token.IDENTIFIER, "abc", 1,
- token.ASSIGN, "", 5,
- token.EOF, "", 9,
- )
-
- test("abc = 1 / 2",
- token.IDENTIFIER, "abc", 1,
- token.ASSIGN, "", 5,
- token.NUMBER, "1", 7,
- token.SLASH, "", 9,
- token.NUMBER, "2", 11,
- token.EOF, "", 12,
- )
-
- test("xyzzy = 'Nothing happens.'",
- token.IDENTIFIER, "xyzzy", 1,
- token.ASSIGN, "", 7,
- token.STRING, "'Nothing happens.'", 9,
- token.EOF, "", 27,
- )
-
- test("abc = !false",
- token.IDENTIFIER, "abc", 1,
- token.ASSIGN, "", 5,
- token.NOT, "", 7,
- token.BOOLEAN, "false", 8,
- token.EOF, "", 13,
- )
-
- test("abc = !!true",
- token.IDENTIFIER, "abc", 1,
- token.ASSIGN, "", 5,
- token.NOT, "", 7,
- token.NOT, "", 8,
- token.BOOLEAN, "true", 9,
- token.EOF, "", 13,
- )
-
- test("abc *= 1",
- token.IDENTIFIER, "abc", 1,
- token.MULTIPLY_ASSIGN, "", 5,
- token.NUMBER, "1", 8,
- token.EOF, "", 9,
- )
-
- test("if 1 else",
- token.IF, "if", 1,
- token.NUMBER, "1", 4,
- token.ELSE, "else", 6,
- token.EOF, "", 10,
- )
-
- test("null",
- token.NULL, "null", 1,
- token.EOF, "", 5,
- )
-
- test(`"\u007a\x79\u000a\x78"`,
- token.STRING, "\"\\u007a\\x79\\u000a\\x78\"", 1,
- token.EOF, "", 23,
- )
-
- test(`"[First line \
-Second line \
- Third line\
-. ]"
- `,
- token.STRING, "\"[First line \\\nSecond line \\\n Third line\\\n. ]\"", 1,
- token.EOF, "", 53,
- )
-
- test("/",
- token.SLASH, "", 1,
- token.EOF, "", 2,
- )
-
- test("var abc = \"abc\uFFFFabc\"",
- token.VAR, "var", 1,
- token.IDENTIFIER, "abc", 5,
- token.ASSIGN, "", 9,
- token.STRING, "\"abc\uFFFFabc\"", 11,
- token.EOF, "", 22,
- )
-
- test(`'\t' === '\r'`,
- token.STRING, "'\\t'", 1,
- token.STRICT_EQUAL, "", 6,
- token.STRING, "'\\r'", 10,
- token.EOF, "", 14,
- )
-
- test(`var \u0024 = 1`,
- token.VAR, "var", 1,
- token.IDENTIFIER, "$", 5,
- token.ASSIGN, "", 12,
- token.NUMBER, "1", 14,
- token.EOF, "", 15,
- )
-
- test("10e10000",
- token.NUMBER, "10e10000", 1,
- token.EOF, "", 9,
- )
-
- test(`var if var class`,
- token.VAR, "var", 1,
- token.IF, "if", 5,
- token.VAR, "var", 8,
- token.KEYWORD, "class", 12,
- token.EOF, "", 17,
- )
-
- test(`-0`,
- token.MINUS, "", 1,
- token.NUMBER, "0", 2,
- token.EOF, "", 3,
- )
-
- test(`.01`,
- token.NUMBER, ".01", 1,
- token.EOF, "", 4,
- )
-
- test(`.01e+2`,
- token.NUMBER, ".01e+2", 1,
- token.EOF, "", 7,
- )
-
- test(";",
- token.SEMICOLON, "", 1,
- token.EOF, "", 2,
- )
-
- test(";;",
- token.SEMICOLON, "", 1,
- token.SEMICOLON, "", 2,
- token.EOF, "", 3,
- )
-
- test("//",
- token.EOF, "", 3,
- )
-
- test(";;//",
- token.SEMICOLON, "", 1,
- token.SEMICOLON, "", 2,
- token.EOF, "", 5,
- )
-
- test("1",
- token.NUMBER, "1", 1,
- )
-
- test("12 123",
- token.NUMBER, "12", 1,
- token.NUMBER, "123", 4,
- )
-
- test("1.2 12.3",
- token.NUMBER, "1.2", 1,
- token.NUMBER, "12.3", 5,
- )
-
- test("/ /=",
- token.SLASH, "", 1,
- token.QUOTIENT_ASSIGN, "", 3,
- )
-
- test(`"abc"`,
- token.STRING, `"abc"`, 1,
- )
-
- test(`'abc'`,
- token.STRING, `'abc'`, 1,
- )
-
- test("++",
- token.INCREMENT, "", 1,
- )
-
- test(">",
- token.GREATER, "", 1,
- )
-
- test(">=",
- token.GREATER_OR_EQUAL, "", 1,
- )
-
- test(">>",
- token.SHIFT_RIGHT, "", 1,
- )
-
- test(">>=",
- token.SHIFT_RIGHT_ASSIGN, "", 1,
- )
-
- test(">>>",
- token.UNSIGNED_SHIFT_RIGHT, "", 1,
- )
-
- test(">>>=",
- token.UNSIGNED_SHIFT_RIGHT_ASSIGN, "", 1,
- )
-
- test("1 \"abc\"",
- token.NUMBER, "1", 1,
- token.STRING, "\"abc\"", 3,
- )
-
- test(",",
- token.COMMA, "", 1,
- )
-
- test("1, \"abc\"",
- token.NUMBER, "1", 1,
- token.COMMA, "", 2,
- token.STRING, "\"abc\"", 4,
- )
-
- test("new abc(1, 3.14159);",
- token.NEW, "new", 1,
- token.IDENTIFIER, "abc", 5,
- token.LEFT_PARENTHESIS, "", 8,
- token.NUMBER, "1", 9,
- token.COMMA, "", 10,
- token.NUMBER, "3.14159", 12,
- token.RIGHT_PARENTHESIS, "", 19,
- token.SEMICOLON, "", 20,
- )
-
- test("1 == \"1\"",
- token.NUMBER, "1", 1,
- token.EQUAL, "", 3,
- token.STRING, "\"1\"", 6,
- )
-
- test("1\n[]\n",
- token.NUMBER, "1", 1,
- token.LEFT_BRACKET, "", 3,
- token.RIGHT_BRACKET, "", 4,
- )
-
- test("1\ufeff[]\ufeff",
- token.NUMBER, "1", 1,
- token.LEFT_BRACKET, "", 5,
- token.RIGHT_BRACKET, "", 6,
- )
-
- // ILLEGAL
-
- test(`3ea`,
- token.ILLEGAL, "3e", 1,
- token.IDENTIFIER, "a", 3,
- token.EOF, "", 4,
- )
-
- test(`3in`,
- token.ILLEGAL, "3", 1,
- token.IN, "in", 2,
- token.EOF, "", 4,
- )
-
- test("\"Hello\nWorld\"",
- token.ILLEGAL, "", 1,
- token.IDENTIFIER, "World", 8,
- token.ILLEGAL, "", 13,
- token.EOF, "", 14,
- )
-
- test("\u203f = 10",
- token.ILLEGAL, "", 1,
- token.ASSIGN, "", 5,
- token.NUMBER, "10", 7,
- token.EOF, "", 9,
- )
-
- test(`"\x0G"`,
- token.STRING, "\"\\x0G\"", 1,
- token.EOF, "", 7,
- )
-
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/marshal_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/marshal_test.go
deleted file mode 100644
index f54cd2d4f..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/marshal_test.go
+++ /dev/null
@@ -1,930 +0,0 @@
-package parser
-
-import (
- "bytes"
- "encoding/json"
- "fmt"
- "os"
- "reflect"
- "strings"
- "testing"
-
- "github.com/robertkrimen/otto/ast"
-)
-
-func marshal(name string, children ...interface{}) interface{} {
- if len(children) == 1 {
- if name == "" {
- return testMarshalNode(children[0])
- }
- return map[string]interface{}{
- name: children[0],
- }
- }
- map_ := map[string]interface{}{}
- length := len(children) / 2
- for i := 0; i < length; i++ {
- name := children[i*2].(string)
- value := children[i*2+1]
- map_[name] = value
- }
- if name == "" {
- return map_
- }
- return map[string]interface{}{
- name: map_,
- }
-}
-
-func testMarshalNode(node interface{}) interface{} {
- switch node := node.(type) {
-
- // Expression
-
- case *ast.ArrayLiteral:
- return marshal("Array", testMarshalNode(node.Value))
-
- case *ast.AssignExpression:
- return marshal("Assign",
- "Left", testMarshalNode(node.Left),
- "Right", testMarshalNode(node.Right),
- )
-
- case *ast.BinaryExpression:
- return marshal("BinaryExpression",
- "Operator", node.Operator.String(),
- "Left", testMarshalNode(node.Left),
- "Right", testMarshalNode(node.Right),
- )
-
- case *ast.BooleanLiteral:
- return marshal("Literal", node.Value)
-
- case *ast.CallExpression:
- return marshal("Call",
- "Callee", testMarshalNode(node.Callee),
- "ArgumentList", testMarshalNode(node.ArgumentList),
- )
-
- case *ast.ConditionalExpression:
- return marshal("Conditional",
- "Test", testMarshalNode(node.Test),
- "Consequent", testMarshalNode(node.Consequent),
- "Alternate", testMarshalNode(node.Alternate),
- )
-
- case *ast.DotExpression:
- return marshal("Dot",
- "Left", testMarshalNode(node.Left),
- "Member", node.Identifier.Name,
- )
-
- case *ast.NewExpression:
- return marshal("New",
- "Callee", testMarshalNode(node.Callee),
- "ArgumentList", testMarshalNode(node.ArgumentList),
- )
-
- case *ast.NullLiteral:
- return marshal("Literal", nil)
-
- case *ast.NumberLiteral:
- return marshal("Literal", node.Value)
-
- case *ast.ObjectLiteral:
- return marshal("Object", testMarshalNode(node.Value))
-
- case *ast.RegExpLiteral:
- return marshal("Literal", node.Literal)
-
- case *ast.StringLiteral:
- return marshal("Literal", node.Literal)
-
- case *ast.VariableExpression:
- return []interface{}{node.Name, testMarshalNode(node.Initializer)}
-
- // Statement
-
- case *ast.Program:
- return testMarshalNode(node.Body)
-
- case *ast.BlockStatement:
- return marshal("BlockStatement", testMarshalNode(node.List))
-
- case *ast.EmptyStatement:
- return "EmptyStatement"
-
- case *ast.ExpressionStatement:
- return testMarshalNode(node.Expression)
-
- case *ast.ForInStatement:
- return marshal("ForIn",
- "Into", marshal("", node.Into),
- "Source", marshal("", node.Source),
- "Body", marshal("", node.Body),
- )
-
- case *ast.FunctionLiteral:
- return marshal("Function", testMarshalNode(node.Body))
-
- case *ast.Identifier:
- return marshal("Identifier", node.Name)
-
- case *ast.IfStatement:
- if_ := marshal("",
- "Test", testMarshalNode(node.Test),
- "Consequent", testMarshalNode(node.Consequent),
- ).(map[string]interface{})
- if node.Alternate != nil {
- if_["Alternate"] = testMarshalNode(node.Alternate)
- }
- return marshal("If", if_)
-
- case *ast.LabelledStatement:
- return marshal("Label",
- "Name", node.Label.Name,
- "Statement", testMarshalNode(node.Statement),
- )
- case ast.Property:
- return marshal("",
- "Key", node.Key,
- "Value", testMarshalNode(node.Value),
- )
-
- case *ast.ReturnStatement:
- return marshal("Return", testMarshalNode(node.Argument))
-
- case *ast.SequenceExpression:
- return marshal("Sequence", testMarshalNode(node.Sequence))
-
- case *ast.ThrowStatement:
- return marshal("Throw", testMarshalNode(node.Argument))
-
- case *ast.VariableStatement:
- return marshal("Var", testMarshalNode(node.List))
-
- }
-
- {
- value := reflect.ValueOf(node)
- if value.Kind() == reflect.Slice {
- tmp0 := []interface{}{}
- for index := 0; index < value.Len(); index++ {
- tmp0 = append(tmp0, testMarshalNode(value.Index(index).Interface()))
- }
- return tmp0
- }
- }
-
- if node != nil {
- fmt.Fprintf(os.Stderr, "testMarshalNode(%T)\n", node)
- }
-
- return nil
-}
-
-func testMarshal(node interface{}) string {
- value, err := json.Marshal(testMarshalNode(node))
- if err != nil {
- panic(err)
- }
- return string(value)
-}
-
-func TestParserAST(t *testing.T) {
- tt(t, func() {
-
- test := func(inputOutput string) {
- match := matchBeforeAfterSeparator.FindStringIndex(inputOutput)
- input := strings.TrimSpace(inputOutput[0:match[0]])
- wantOutput := strings.TrimSpace(inputOutput[match[1]:])
- _, program, err := testParse(input)
- is(err, nil)
- haveOutput := testMarshal(program)
- tmp0, tmp1 := bytes.Buffer{}, bytes.Buffer{}
- json.Indent(&tmp0, []byte(haveOutput), "\t\t", " ")
- json.Indent(&tmp1, []byte(wantOutput), "\t\t", " ")
- is("\n\t\t"+tmp0.String(), "\n\t\t"+tmp1.String())
- }
-
- test(`
- ---
-[]
- `)
-
- test(`
- ;
- ---
-[
- "EmptyStatement"
-]
- `)
-
- test(`
- ;;;
- ---
-[
- "EmptyStatement",
- "EmptyStatement",
- "EmptyStatement"
-]
- `)
-
- test(`
- 1; true; abc; "abc"; null;
- ---
-[
- {
- "Literal": 1
- },
- {
- "Literal": true
- },
- {
- "Identifier": "abc"
- },
- {
- "Literal": "\"abc\""
- },
- {
- "Literal": null
- }
-]
- `)
-
- test(`
- { 1; null; 3.14159; ; }
- ---
-[
- {
- "BlockStatement": [
- {
- "Literal": 1
- },
- {
- "Literal": null
- },
- {
- "Literal": 3.14159
- },
- "EmptyStatement"
- ]
- }
-]
- `)
-
- test(`
- new abc();
- ---
-[
- {
- "New": {
- "ArgumentList": [],
- "Callee": {
- "Identifier": "abc"
- }
- }
- }
-]
- `)
-
- test(`
- new abc(1, 3.14159)
- ---
-[
- {
- "New": {
- "ArgumentList": [
- {
- "Literal": 1
- },
- {
- "Literal": 3.14159
- }
- ],
- "Callee": {
- "Identifier": "abc"
- }
- }
- }
-]
- `)
-
- test(`
- true ? false : true
- ---
-[
- {
- "Conditional": {
- "Alternate": {
- "Literal": true
- },
- "Consequent": {
- "Literal": false
- },
- "Test": {
- "Literal": true
- }
- }
- }
-]
- `)
-
- test(`
- true || false
- ---
-[
- {
- "BinaryExpression": {
- "Left": {
- "Literal": true
- },
- "Operator": "||",
- "Right": {
- "Literal": false
- }
- }
- }
-]
- `)
-
- test(`
- 0 + { abc: true }
- ---
-[
- {
- "BinaryExpression": {
- "Left": {
- "Literal": 0
- },
- "Operator": "+",
- "Right": {
- "Object": [
- {
- "Key": "abc",
- "Value": {
- "Literal": true
- }
- }
- ]
- }
- }
- }
-]
- `)
-
- test(`
- 1 == "1"
- ---
-[
- {
- "BinaryExpression": {
- "Left": {
- "Literal": 1
- },
- "Operator": "==",
- "Right": {
- "Literal": "\"1\""
- }
- }
- }
-]
- `)
-
- test(`
- abc(1)
- ---
-[
- {
- "Call": {
- "ArgumentList": [
- {
- "Literal": 1
- }
- ],
- "Callee": {
- "Identifier": "abc"
- }
- }
- }
-]
- `)
-
- test(`
- Math.pow(3, 2)
- ---
-[
- {
- "Call": {
- "ArgumentList": [
- {
- "Literal": 3
- },
- {
- "Literal": 2
- }
- ],
- "Callee": {
- "Dot": {
- "Left": {
- "Identifier": "Math"
- },
- "Member": "pow"
- }
- }
- }
- }
-]
- `)
-
- test(`
- 1, 2, 3
- ---
-[
- {
- "Sequence": [
- {
- "Literal": 1
- },
- {
- "Literal": 2
- },
- {
- "Literal": 3
- }
- ]
- }
-]
- `)
-
- test(`
- / abc / gim;
- ---
-[
- {
- "Literal": "/ abc / gim"
- }
-]
- `)
-
- test(`
- if (0)
- 1;
- ---
-[
- {
- "If": {
- "Consequent": {
- "Literal": 1
- },
- "Test": {
- "Literal": 0
- }
- }
- }
-]
- `)
-
- test(`
- 0+function(){
- return;
- }
- ---
-[
- {
- "BinaryExpression": {
- "Left": {
- "Literal": 0
- },
- "Operator": "+",
- "Right": {
- "Function": {
- "BlockStatement": [
- {
- "Return": null
- }
- ]
- }
- }
- }
- }
-]
- `)
-
- test(`
- xyzzy // Ignore it
- // Ignore this
- // And this
- /* And all..
-
-
-
- ... of this!
- */
- "Nothing happens."
- // And finally this
- ---
-[
- {
- "Identifier": "xyzzy"
- },
- {
- "Literal": "\"Nothing happens.\""
- }
-]
- `)
-
- test(`
- ((x & (x = 1)) !== 0)
- ---
-[
- {
- "BinaryExpression": {
- "Left": {
- "BinaryExpression": {
- "Left": {
- "Identifier": "x"
- },
- "Operator": "\u0026",
- "Right": {
- "Assign": {
- "Left": {
- "Identifier": "x"
- },
- "Right": {
- "Literal": 1
- }
- }
- }
- }
- },
- "Operator": "!==",
- "Right": {
- "Literal": 0
- }
- }
- }
-]
- `)
-
- test(`
- { abc: 'def' }
- ---
-[
- {
- "BlockStatement": [
- {
- "Label": {
- "Name": "abc",
- "Statement": {
- "Literal": "'def'"
- }
- }
- }
- ]
- }
-]
- `)
-
- test(`
- // This is not an object, this is a string literal with a label!
- ({ abc: 'def' })
- ---
-[
- {
- "Object": [
- {
- "Key": "abc",
- "Value": {
- "Literal": "'def'"
- }
- }
- ]
- }
-]
- `)
-
- test(`
- [,]
- ---
-[
- {
- "Array": [
- null
- ]
- }
-]
- `)
-
- test(`
- [,,]
- ---
-[
- {
- "Array": [
- null,
- null
- ]
- }
-]
- `)
-
- test(`
- ({ get abc() {} })
- ---
-[
- {
- "Object": [
- {
- "Key": "abc",
- "Value": {
- "Function": {
- "BlockStatement": []
- }
- }
- }
- ]
- }
-]
- `)
-
- test(`
- /abc/.source
- ---
-[
- {
- "Dot": {
- "Left": {
- "Literal": "/abc/"
- },
- "Member": "source"
- }
- }
-]
- `)
-
- test(`
- xyzzy
-
- throw new TypeError("Nothing happens.")
- ---
-[
- {
- "Identifier": "xyzzy"
- },
- {
- "Throw": {
- "New": {
- "ArgumentList": [
- {
- "Literal": "\"Nothing happens.\""
- }
- ],
- "Callee": {
- "Identifier": "TypeError"
- }
- }
- }
- }
-]
- `)
-
- // When run, this will call a type error to be thrown
- // This is essentially the same as:
- //
- // var abc = 1(function(){})()
- //
- test(`
- var abc = 1
- (function(){
- })()
- ---
-[
- {
- "Var": [
- [
- "abc",
- {
- "Call": {
- "ArgumentList": [],
- "Callee": {
- "Call": {
- "ArgumentList": [
- {
- "Function": {
- "BlockStatement": []
- }
- }
- ],
- "Callee": {
- "Literal": 1
- }
- }
- }
- }
- }
- ]
- ]
- }
-]
- `)
-
- test(`
- "use strict"
- ---
-[
- {
- "Literal": "\"use strict\""
- }
-]
- `)
-
- test(`
- "use strict"
- abc = 1 + 2 + 11
- ---
-[
- {
- "Literal": "\"use strict\""
- },
- {
- "Assign": {
- "Left": {
- "Identifier": "abc"
- },
- "Right": {
- "BinaryExpression": {
- "Left": {
- "BinaryExpression": {
- "Left": {
- "Literal": 1
- },
- "Operator": "+",
- "Right": {
- "Literal": 2
- }
- }
- },
- "Operator": "+",
- "Right": {
- "Literal": 11
- }
- }
- }
- }
- }
-]
- `)
-
- test(`
- abc = function() { 'use strict' }
- ---
-[
- {
- "Assign": {
- "Left": {
- "Identifier": "abc"
- },
- "Right": {
- "Function": {
- "BlockStatement": [
- {
- "Literal": "'use strict'"
- }
- ]
- }
- }
- }
- }
-]
- `)
-
- test(`
- for (var abc in def) {
- }
- ---
-[
- {
- "ForIn": {
- "Body": {
- "BlockStatement": []
- },
- "Into": [
- "abc",
- null
- ],
- "Source": {
- "Identifier": "def"
- }
- }
- }
-]
- `)
-
- test(`
- abc = {
- '"': "'",
- "'": '"',
- }
- ---
-[
- {
- "Assign": {
- "Left": {
- "Identifier": "abc"
- },
- "Right": {
- "Object": [
- {
- "Key": "\"",
- "Value": {
- "Literal": "\"'\""
- }
- },
- {
- "Key": "'",
- "Value": {
- "Literal": "'\"'"
- }
- }
- ]
- }
- }
- }
-]
- `)
-
- return
-
- test(`
- if (!abc && abc.jkl(def) && abc[0] === +abc[0] && abc.length < ghi) {
- }
- ---
-[
- {
- "If": {
- "Consequent": {
- "BlockStatement": []
- },
- "Test": {
- "BinaryExpression": {
- "Left": {
- "BinaryExpression": {
- "Left": {
- "BinaryExpression": {
- "Left": null,
- "Operator": "\u0026\u0026",
- "Right": {
- "Call": {
- "ArgumentList": [
- {
- "Identifier": "def"
- }
- ],
- "Callee": {
- "Dot": {
- "Left": {
- "Identifier": "abc"
- },
- "Member": "jkl"
- }
- }
- }
- }
- }
- },
- "Operator": "\u0026\u0026",
- "Right": {
- "BinaryExpression": {
- "Left": null,
- "Operator": "===",
- "Right": null
- }
- }
- }
- },
- "Operator": "\u0026\u0026",
- "Right": {
- "BinaryExpression": {
- "Left": {
- "Dot": {
- "Left": {
- "Identifier": "abc"
- },
- "Member": "length"
- }
- },
- "Operator": "\u003c",
- "Right": {
- "Identifier": "ghi"
- }
- }
- }
- }
- }
- }
- }
-]
- `)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser.go
index 1536344d7..92ac5b0c7 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser.go
@@ -52,7 +52,6 @@ const (
)
type _parser struct {
- filename string
str string
length int
base int
@@ -260,7 +259,7 @@ func (self *_parser) position(idx file.Idx) file.Position {
position := file.Position{}
offset := int(idx) - self.base
str := self.str[:offset]
- position.Filename = self.filename
+ position.Filename = self.file.Name()
line, last := lineCount(str)
position.Line = 1 + line
if last >= 0 {
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser_test.go
deleted file mode 100644
index 8f9457745..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/parser_test.go
+++ /dev/null
@@ -1,1004 +0,0 @@
-package parser
-
-import (
- "errors"
- "regexp"
- "strings"
- "testing"
-
- "github.com/robertkrimen/otto/ast"
- "github.com/robertkrimen/otto/file"
-)
-
-func firstErr(err error) error {
- switch err := err.(type) {
- case ErrorList:
- return err[0]
- }
- return err
-}
-
-var matchBeforeAfterSeparator = regexp.MustCompile(`(?m)^[ \t]*---$`)
-
-func testParse(src string) (parser *_parser, program *ast.Program, err error) {
- defer func() {
- if tmp := recover(); tmp != nil {
- switch tmp := tmp.(type) {
- case string:
- if strings.HasPrefix(tmp, "SyntaxError:") {
- parser = nil
- program = nil
- err = errors.New(tmp)
- return
- }
- }
- panic(tmp)
- }
- }()
- parser = newParser("", src)
- program, err = parser.parse()
- return
-}
-
-func TestParseFile(t *testing.T) {
- tt(t, func() {
- _, err := ParseFile(nil, "", `/abc/`, 0)
- is(err, nil)
-
- _, err = ParseFile(nil, "", `/(?!def)abc/`, IgnoreRegExpErrors)
- is(err, nil)
-
- _, err = ParseFile(nil, "", `/(?!def)abc/`, 0)
- is(err, "(anonymous): Line 1:1 Invalid regular expression: re2: Invalid (?!) <lookahead>")
-
- _, err = ParseFile(nil, "", `/(?!def)abc/; return`, IgnoreRegExpErrors)
- is(err, "(anonymous): Line 1:15 Illegal return statement")
- })
-}
-
-func TestParseFunction(t *testing.T) {
- tt(t, func() {
- test := func(prm, bdy string, expect interface{}) *ast.FunctionLiteral {
- function, err := ParseFunction(prm, bdy)
- is(firstErr(err), expect)
- return function
- }
-
- test("a, b,c,d", "", nil)
-
- test("a, b;,c,d", "", "(anonymous): Line 1:15 Unexpected token ;")
-
- test("this", "", "(anonymous): Line 1:11 Unexpected token this")
-
- test("a, b, c, null", "", "(anonymous): Line 1:20 Unexpected token null")
-
- test("a, b,c,d", "return;", nil)
-
- test("a, b,c,d", "break;", "(anonymous): Line 2:1 Illegal break statement")
-
- test("a, b,c,d", "{}", nil)
- })
-}
-
-func TestParserErr(t *testing.T) {
- tt(t, func() {
- test := func(input string, expect interface{}) (*ast.Program, *_parser) {
- parser := newParser("", input)
- program, err := parser.parse()
- is(firstErr(err), expect)
- return program, parser
- }
-
- program, parser := test("", nil)
-
- program, parser = test(`
- var abc;
- break; do {
- } while(true);
- `, "(anonymous): Line 3:9 Illegal break statement")
- {
- stmt := program.Body[1].(*ast.BadStatement)
- is(parser.position(stmt.From).Column, 9)
- is(parser.position(stmt.To).Column, 16)
- is(parser.slice(stmt.From, stmt.To), "break; ")
- }
-
- test("{", "(anonymous): Line 1:2 Unexpected end of input")
-
- test("}", "(anonymous): Line 1:1 Unexpected token }")
-
- test("3ea", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("3in", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("3in []", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("3e", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("3e+", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("3e-", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("3x", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("3x0", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("0x", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("09", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("018", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("01.0", "(anonymous): Line 1:3 Unexpected number")
-
- test("01a", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("0x3in[]", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("\"Hello\nWorld\"", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("\u203f = 10", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("x\\", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("x\\\\", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("x\\u005c", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("x\\u002a", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("x\\\\u002a", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("/\n", "(anonymous): Line 1:1 Invalid regular expression: missing /")
-
- test("var x = /(s/g", "(anonymous): Line 1:9 Invalid regular expression: Unterminated group")
-
- test("0 = 1", "(anonymous): Line 1:1 Invalid left-hand side in assignment")
-
- test("func() = 1", "(anonymous): Line 1:1 Invalid left-hand side in assignment")
-
- test("(1 + 1) = 2", "(anonymous): Line 1:2 Invalid left-hand side in assignment")
-
- test("1++", "(anonymous): Line 1:2 Invalid left-hand side in assignment")
-
- test("1--", "(anonymous): Line 1:2 Invalid left-hand side in assignment")
-
- test("--1", "(anonymous): Line 1:1 Invalid left-hand side in assignment")
-
- test("for((1 + 1) in abc) def();", "(anonymous): Line 1:1 Invalid left-hand side in for-in")
-
- test("[", "(anonymous): Line 1:2 Unexpected end of input")
-
- test("[,", "(anonymous): Line 1:3 Unexpected end of input")
-
- test("1 + {", "(anonymous): Line 1:6 Unexpected end of input")
-
- test("1 + { abc:abc", "(anonymous): Line 1:14 Unexpected end of input")
-
- test("1 + { abc:abc,", "(anonymous): Line 1:15 Unexpected end of input")
-
- test("var abc = /\n/", "(anonymous): Line 1:11 Invalid regular expression: missing /")
-
- test("var abc = \"\n", "(anonymous): Line 1:11 Unexpected token ILLEGAL")
-
- test("var if = 0", "(anonymous): Line 1:5 Unexpected token if")
-
- test("abc + 0 = 1", "(anonymous): Line 1:1 Invalid left-hand side in assignment")
-
- test("+abc = 1", "(anonymous): Line 1:1 Invalid left-hand side in assignment")
-
- test("1 + (", "(anonymous): Line 1:6 Unexpected end of input")
-
- test("\n\n\n{", "(anonymous): Line 4:2 Unexpected end of input")
-
- test("\n/* Some multiline\ncomment */\n)", "(anonymous): Line 4:1 Unexpected token )")
-
- // TODO
- //{ set 1 }
- //{ get 2 }
- //({ set: s(if) { } })
- //({ set s(.) { } })
- //({ set: s() { } })
- //({ set: s(a, b) { } })
- //({ get: g(d) { } })
- //({ get i() { }, i: 42 })
- //({ i: 42, get i() { } })
- //({ set i(x) { }, i: 42 })
- //({ i: 42, set i(x) { } })
- //({ get i() { }, get i() { } })
- //({ set i(x) { }, set i(x) { } })
-
- test("function abc(if) {}", "(anonymous): Line 1:14 Unexpected token if")
-
- test("function abc(true) {}", "(anonymous): Line 1:14 Unexpected token true")
-
- test("function abc(false) {}", "(anonymous): Line 1:14 Unexpected token false")
-
- test("function abc(null) {}", "(anonymous): Line 1:14 Unexpected token null")
-
- test("function null() {}", "(anonymous): Line 1:10 Unexpected token null")
-
- test("function true() {}", "(anonymous): Line 1:10 Unexpected token true")
-
- test("function false() {}", "(anonymous): Line 1:10 Unexpected token false")
-
- test("function if() {}", "(anonymous): Line 1:10 Unexpected token if")
-
- test("a b;", "(anonymous): Line 1:3 Unexpected identifier")
-
- test("if.a", "(anonymous): Line 1:3 Unexpected token .")
-
- test("a if", "(anonymous): Line 1:3 Unexpected token if")
-
- test("a class", "(anonymous): Line 1:3 Unexpected reserved word")
-
- test("break\n", "(anonymous): Line 1:1 Illegal break statement")
-
- test("break 1;", "(anonymous): Line 1:7 Unexpected number")
-
- test("for (;;) { break 1; }", "(anonymous): Line 1:18 Unexpected number")
-
- test("continue\n", "(anonymous): Line 1:1 Illegal continue statement")
-
- test("continue 1;", "(anonymous): Line 1:10 Unexpected number")
-
- test("for (;;) { continue 1; }", "(anonymous): Line 1:21 Unexpected number")
-
- test("throw", "(anonymous): Line 1:1 Unexpected end of input")
-
- test("throw;", "(anonymous): Line 1:6 Unexpected token ;")
-
- test("throw \n", "(anonymous): Line 1:1 Unexpected end of input")
-
- test("for (var abc, def in {});", "(anonymous): Line 1:19 Unexpected token in")
-
- test("for ((abc in {});;);", nil)
-
- test("for ((abc in {}));", "(anonymous): Line 1:17 Unexpected token )")
-
- test("for (+abc in {});", "(anonymous): Line 1:1 Invalid left-hand side in for-in")
-
- test("if (false)", "(anonymous): Line 1:11 Unexpected end of input")
-
- test("if (false) abc(); else", "(anonymous): Line 1:23 Unexpected end of input")
-
- test("do", "(anonymous): Line 1:3 Unexpected end of input")
-
- test("while (false)", "(anonymous): Line 1:14 Unexpected end of input")
-
- test("for (;;)", "(anonymous): Line 1:9 Unexpected end of input")
-
- test("with (abc)", "(anonymous): Line 1:11 Unexpected end of input")
-
- test("try {}", "(anonymous): Line 1:1 Missing catch or finally after try")
-
- test("try {} catch {}", "(anonymous): Line 1:14 Unexpected token {")
-
- test("try {} catch () {}", "(anonymous): Line 1:15 Unexpected token )")
-
- test("\u203f = 1", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- // TODO
- // const x = 12, y;
- // const x, y = 12;
- // const x;
- // if(true) let a = 1;
- // if(true) const a = 1;
-
- test(`new abc()."def"`, "(anonymous): Line 1:11 Unexpected string")
-
- test("/*", "(anonymous): Line 1:3 Unexpected end of input")
-
- test("/**", "(anonymous): Line 1:4 Unexpected end of input")
-
- test("/*\n\n\n", "(anonymous): Line 4:1 Unexpected end of input")
-
- test("/*\n\n\n*", "(anonymous): Line 4:2 Unexpected end of input")
-
- test("/*abc", "(anonymous): Line 1:6 Unexpected end of input")
-
- test("/*abc *", "(anonymous): Line 1:9 Unexpected end of input")
-
- test("\n]", "(anonymous): Line 2:1 Unexpected token ]")
-
- test("\r\n]", "(anonymous): Line 2:1 Unexpected token ]")
-
- test("\n\r]", "(anonymous): Line 3:1 Unexpected token ]")
-
- test("//\r\n]", "(anonymous): Line 2:1 Unexpected token ]")
-
- test("//\n\r]", "(anonymous): Line 3:1 Unexpected token ]")
-
- test("/abc\\\n/", "(anonymous): Line 1:1 Invalid regular expression: missing /")
-
- test("//\r \n]", "(anonymous): Line 3:1 Unexpected token ]")
-
- test("/*\r\n*/]", "(anonymous): Line 2:3 Unexpected token ]")
-
- test("/*\r \n*/]", "(anonymous): Line 3:3 Unexpected token ]")
-
- test("\\\\", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("\\u005c", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("\\abc", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("\\u0000", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("\\u200c = []", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("\\u200D = []", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test(`"\`, "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test(`"\u`, "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("return", "(anonymous): Line 1:1 Illegal return statement")
-
- test("continue", "(anonymous): Line 1:1 Illegal continue statement")
-
- test("break", "(anonymous): Line 1:1 Illegal break statement")
-
- test("switch (abc) { default: continue; }", "(anonymous): Line 1:25 Illegal continue statement")
-
- test("do { abc } *", "(anonymous): Line 1:12 Unexpected token *")
-
- test("while (true) { break abc; }", "(anonymous): Line 1:16 Undefined label 'abc'")
-
- test("while (true) { continue abc; }", "(anonymous): Line 1:16 Undefined label 'abc'")
-
- test("abc: while (true) { (function(){ break abc; }); }", "(anonymous): Line 1:34 Undefined label 'abc'")
-
- test("abc: while (true) { (function(){ abc: break abc; }); }", nil)
-
- test("abc: while (true) { (function(){ continue abc; }); }", "(anonymous): Line 1:34 Undefined label 'abc'")
-
- test(`abc: if (0) break abc; else {}`, nil)
-
- test(`abc: if (0) { break abc; } else {}`, nil)
-
- test(`abc: if (0) { break abc } else {}`, nil)
-
- test("abc: while (true) { abc: while (true) {} }", "(anonymous): Line 1:21 Label 'abc' already exists")
-
- if false {
- // TODO When strict mode is implemented
- test("(function () { 'use strict'; delete abc; }())", "")
- }
-
- test("_: _: while (true) {]", "(anonymous): Line 1:4 Label '_' already exists")
-
- test("_:\n_:\nwhile (true) {]", "(anonymous): Line 2:1 Label '_' already exists")
-
- test("_:\n _:\nwhile (true) {]", "(anonymous): Line 2:4 Label '_' already exists")
-
- test("/Xyzzy(?!Nothing happens)/",
- "(anonymous): Line 1:1 Invalid regular expression: re2: Invalid (?!) <lookahead>")
-
- test("function(){}", "(anonymous): Line 1:9 Unexpected token (")
-
- test("\n/*/", "(anonymous): Line 2:4 Unexpected end of input")
-
- test("/*/.source", "(anonymous): Line 1:11 Unexpected end of input")
-
- test("/\\1/.source", "(anonymous): Line 1:1 Invalid regular expression: re2: Invalid \\1 <backreference>")
-
- test("var class", "(anonymous): Line 1:5 Unexpected reserved word")
-
- test("var if", "(anonymous): Line 1:5 Unexpected token if")
-
- test("object Object", "(anonymous): Line 1:8 Unexpected identifier")
-
- test("[object Object]", "(anonymous): Line 1:9 Unexpected identifier")
-
- test("\\u0xyz", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test(`for (var abc, def in {}) {}`, "(anonymous): Line 1:19 Unexpected token in")
-
- test(`for (abc, def in {}) {}`, "(anonymous): Line 1:1 Invalid left-hand side in for-in")
-
- test(`for (var abc=def, ghi=("abc" in {}); true;) {}`, nil)
-
- {
- // Semicolon insertion
-
- test("this\nif (1);", nil)
-
- test("while (1) { break\nif (1); }", nil)
-
- test("throw\nif (1);", "(anonymous): Line 1:1 Illegal newline after throw")
-
- test("(function(){ return\nif (1); })", nil)
-
- test("while (1) { continue\nif (1); }", nil)
-
- test("debugger\nif (1);", nil)
- }
-
- { // Reserved words
-
- test("class", "(anonymous): Line 1:1 Unexpected reserved word")
- test("abc.class = 1", nil)
- test("var class;", "(anonymous): Line 1:5 Unexpected reserved word")
-
- test("const", "(anonymous): Line 1:1 Unexpected reserved word")
- test("abc.const = 1", nil)
- test("var const;", "(anonymous): Line 1:5 Unexpected reserved word")
-
- test("enum", "(anonymous): Line 1:1 Unexpected reserved word")
- test("abc.enum = 1", nil)
- test("var enum;", "(anonymous): Line 1:5 Unexpected reserved word")
-
- test("export", "(anonymous): Line 1:1 Unexpected reserved word")
- test("abc.export = 1", nil)
- test("var export;", "(anonymous): Line 1:5 Unexpected reserved word")
-
- test("extends", "(anonymous): Line 1:1 Unexpected reserved word")
- test("abc.extends = 1", nil)
- test("var extends;", "(anonymous): Line 1:5 Unexpected reserved word")
-
- test("import", "(anonymous): Line 1:1 Unexpected reserved word")
- test("abc.import = 1", nil)
- test("var import;", "(anonymous): Line 1:5 Unexpected reserved word")
-
- test("super", "(anonymous): Line 1:1 Unexpected reserved word")
- test("abc.super = 1", nil)
- test("var super;", "(anonymous): Line 1:5 Unexpected reserved word")
- }
-
- { // Reserved words (strict)
-
- test(`implements`, nil)
- test(`abc.implements = 1`, nil)
- test(`var implements;`, nil)
-
- test(`interface`, nil)
- test(`abc.interface = 1`, nil)
- test(`var interface;`, nil)
-
- test(`let`, nil)
- test(`abc.let = 1`, nil)
- test(`var let;`, nil)
-
- test(`package`, nil)
- test(`abc.package = 1`, nil)
- test(`var package;`, nil)
-
- test(`private`, nil)
- test(`abc.private = 1`, nil)
- test(`var private;`, nil)
-
- test(`protected`, nil)
- test(`abc.protected = 1`, nil)
- test(`var protected;`, nil)
-
- test(`public`, nil)
- test(`abc.public = 1`, nil)
- test(`var public;`, nil)
-
- test(`static`, nil)
- test(`abc.static = 1`, nil)
- test(`var static;`, nil)
-
- test(`yield`, nil)
- test(`abc.yield = 1`, nil)
- test(`var yield;`, nil)
- }
- })
-}
-
-func TestParser(t *testing.T) {
- tt(t, func() {
- test := func(source string, chk interface{}) *ast.Program {
- _, program, err := testParse(source)
- is(firstErr(err), chk)
- return program
- }
-
- test(`
- abc
- --
- []
- `, "(anonymous): Line 3:13 Invalid left-hand side in assignment")
-
- test(`
- abc--
- []
- `, nil)
-
- test("1\n[]\n", "(anonymous): Line 2:2 Unexpected token ]")
-
- test(`
- function abc() {
- }
- abc()
- `, nil)
-
- program := test("", nil)
-
- test("//", nil)
-
- test("/* */", nil)
-
- test("/** **/", nil)
-
- test("/*****/", nil)
-
- test("/*", "(anonymous): Line 1:3 Unexpected end of input")
-
- test("#", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("/**/#", "(anonymous): Line 1:5 Unexpected token ILLEGAL")
-
- test("new +", "(anonymous): Line 1:5 Unexpected token +")
-
- program = test(";", nil)
- is(len(program.Body), 1)
- is(program.Body[0].(*ast.EmptyStatement).Semicolon, file.Idx(1))
-
- program = test(";;", nil)
- is(len(program.Body), 2)
- is(program.Body[0].(*ast.EmptyStatement).Semicolon, file.Idx(1))
- is(program.Body[1].(*ast.EmptyStatement).Semicolon, file.Idx(2))
-
- program = test("1.2", nil)
- is(len(program.Body), 1)
- is(program.Body[0].(*ast.ExpressionStatement).Expression.(*ast.NumberLiteral).Literal, "1.2")
-
- program = test("/* */1.2", nil)
- is(len(program.Body), 1)
- is(program.Body[0].(*ast.ExpressionStatement).Expression.(*ast.NumberLiteral).Literal, "1.2")
-
- program = test("\n", nil)
- is(len(program.Body), 0)
-
- test(`
- if (0) {
- abc = 0
- }
- else abc = 0
- `, nil)
-
- test("if (0) abc = 0 else abc = 0", "(anonymous): Line 1:16 Unexpected token else")
-
- test(`
- if (0) {
- abc = 0
- } else abc = 0
- `, nil)
-
- test(`
- if (0) {
- abc = 1
- } else {
- }
- `, nil)
-
- test(`
- do {
- } while (true)
- `, nil)
-
- test(`
- try {
- } finally {
- }
- `, nil)
-
- test(`
- try {
- } catch (abc) {
- } finally {
- }
- `, nil)
-
- test(`
- try {
- }
- catch (abc) {
- }
- finally {
- }
- `, nil)
-
- test(`try {} catch (abc) {} finally {}`, nil)
-
- test(`
- do {
- do {
- } while (0)
- } while (0)
- `, nil)
-
- test(`
- (function(){
- try {
- if (
- 1
- ) {
- return 1
- }
- return 0
- } finally {
- }
- })()
- `, nil)
-
- test("abc = ''\ndef", nil)
-
- test("abc = 1\ndef", nil)
-
- test("abc = Math\ndef", nil)
-
- test(`"\'"`, nil)
-
- test(`
- abc = function(){
- }
- abc = 0
- `, nil)
-
- test("abc.null = 0", nil)
-
- test("0x41", nil)
-
- test(`"\d"`, nil)
-
- test(`(function(){return this})`, nil)
-
- test(`
- Object.defineProperty(Array.prototype, "0", {
- value: 100,
- writable: false,
- configurable: true
- });
- abc = [101];
- abc.hasOwnProperty("0") && abc[0] === 101;
- `, nil)
-
- test(`new abc()`, nil)
- test(`new {}`, nil)
-
- test(`
- limit = 4
- result = 0
- while (limit) {
- limit = limit - 1
- if (limit) {
- }
- else {
- break
- }
- result = result + 1
- }
- `, nil)
-
- test(`
- while (0) {
- if (0) {
- continue
- }
- }
- `, nil)
-
- test("var \u0061\u0062\u0063 = 0", nil)
-
- // 7_3_1
- test("var test7_3_1\nabc = 66;", nil)
- test("var test7_3_1\u2028abc = 66;", nil)
-
- // 7_3_3
- test("//\u2028 =;", "(anonymous): Line 2:2 Unexpected token =")
-
- // 7_3_10
- test("var abc = \u2029;", "(anonymous): Line 2:1 Unexpected token ;")
- test("var abc = \\u2029;", "(anonymous): Line 1:11 Unexpected token ILLEGAL")
- test("var \\u0061\\u0062\\u0063 = 0;", nil)
-
- test("'", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- test("'\nstr\ning\n'", "(anonymous): Line 1:1 Unexpected token ILLEGAL")
-
- // S7.6_A4.3_T1
- test(`var $\u0030 = 0;`, nil)
-
- // S7.6.1.1_A1.1
- test(`switch = 1`, "(anonymous): Line 1:8 Unexpected token =")
-
- // S7.8.3_A2.1_T1
- test(`.0 === 0.0`, nil)
-
- // 7.8.5-1
- test("var regExp = /\\\rn/;", "(anonymous): Line 1:14 Invalid regular expression: missing /")
-
- // S7.8.5_A1.1_T2
- test("var regExp = /=/;", nil)
-
- // S7.8.5_A1.2_T1
- test("/*/", "(anonymous): Line 1:4 Unexpected end of input")
-
- // Sbp_7.9_A9_T3
- test(`
- do {
- ;
- } while (false) true
- `, nil)
-
- // S7.9_A10_T10
- test(`
- {a:1
- } 3
- `, nil)
-
- test(`
- abc
- ++def
- `, nil)
-
- // S7.9_A5.2_T1
- test(`
- for(false;false
- ) {
- break;
- }
- `, "(anonymous): Line 3:13 Unexpected token )")
-
- // S7.9_A9_T8
- test(`
- do {};
- while (false)
- `, "(anonymous): Line 2:18 Unexpected token ;")
-
- // S8.4_A5
- test(`
- "x\0y"
- `, nil)
-
- // S9.3.1_A6_T1
- test(`
- 10e10000
- `, nil)
-
- // 10.4.2-1-5
- test(`
- "abc\
- def"
- `, nil)
-
- test("'\\\n'", nil)
-
- test("'\\\r\n'", nil)
-
- //// 11.13.1-1-1
- test("42 = 42;", "(anonymous): Line 1:1 Invalid left-hand side in assignment")
-
- // S11.13.2_A4.2_T1.3
- test(`
- abc /= "1"
- `, nil)
-
- // 12.1-1
- test(`
- try{};catch(){}
- `, "(anonymous): Line 2:13 Missing catch or finally after try")
-
- // 12.1-3
- test(`
- try{};finally{}
- `, "(anonymous): Line 2:13 Missing catch or finally after try")
-
- // S12.6.3_A11.1_T3
- test(`
- while (true) {
- break abc;
- }
- `, "(anonymous): Line 3:17 Undefined label 'abc'")
-
- // S15.3_A2_T1
- test(`var x / = 1;`, "(anonymous): Line 1:7 Unexpected token /")
-
- test(`
- function abc() {
- if (0)
- return;
- else {
- }
- }
- `, nil)
-
- test("//\u2028 var =;", "(anonymous): Line 2:6 Unexpected token =")
-
- test(`
- throw
- {}
- `, "(anonymous): Line 2:13 Illegal newline after throw")
-
- // S7.6.1.1_A1.11
- test(`
- function = 1
- `, "(anonymous): Line 2:22 Unexpected token =")
-
- // S7.8.3_A1.2_T1
- test(`0e1`, nil)
-
- test("abc = 1; abc\n++", "(anonymous): Line 2:3 Unexpected end of input")
-
- // ---
-
- test("({ get abc() {} })", nil)
-
- test(`for (abc.def in {}) {}`, nil)
-
- test(`while (true) { break }`, nil)
-
- test(`while (true) { continue }`, nil)
-
- test(`abc=/^(?:(\w+:)\/{2}(\w+(?:\.\w+)*\/?)|(.{0,2}\/{1}))?([/.]*?(?:[^?]+)?\/)?((?:[^/?]+)\.(\w+))(?:\?(\S+)?)?$/,def=/^(?:(\w+:)\/{2})|(.{0,2}\/{1})?([/.]*?(?:[^?]+)?\/?)?$/`, nil)
-
- test(`(function() { try {} catch (err) {} finally {} return })`, nil)
-
- test(`0xde0b6b3a7640080.toFixed(0)`, nil)
-
- test(`/[^-._0-9A-Za-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u37f-\u1fff\u200c-\u200d\u203f\u2040\u2070-\u218f]/`, nil)
-
- test(`/[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/`, nil)
-
- test("var abc = 1;\ufeff", nil)
-
- test("\ufeff/* var abc = 1; */", nil)
-
- test(`if (-0x8000000000000000<=abc&&abc<=0x8000000000000000) {}`, nil)
-
- test(`(function(){debugger;return this;})`, nil)
-
- test(`
-
- `, nil)
-
- test(`
- var abc = ""
- debugger
- `, nil)
-
- test(`
- var abc = /\[\]$/
- debugger
- `, nil)
-
- test(`
- var abc = 1 /
- 2
- debugger
- `, nil)
- })
-}
-
-func Test_parseStringLiteral(t *testing.T) {
- tt(t, func() {
- test := func(have, want string) {
- have, err := parseStringLiteral(have)
- is(err, nil)
- is(have, want)
- }
-
- test("", "")
-
- test("1(\\\\d+)", "1(\\d+)")
-
- test("\\u2029", "\u2029")
-
- test("abc\\uFFFFabc", "abc\uFFFFabc")
-
- test("[First line \\\nSecond line \\\n Third line\\\n. ]",
- "[First line Second line Third line. ]")
-
- test("\\u007a\\x79\\u000a\\x78", "zy\nx")
-
- // S7.8.4_A4.2_T3
- test("\\a", "a")
- test("\u0410", "\u0410")
-
- // S7.8.4_A5.1_T1
- test("\\0", "\u0000")
-
- // S8.4_A5
- test("\u0000", "\u0000")
-
- // 15.5.4.20
- test("'abc'\\\n'def'", "'abc''def'")
-
- // 15.5.4.20-4-1
- test("'abc'\\\r\n'def'", "'abc''def'")
-
- // Octal
- test("\\0", "\000")
- test("\\00", "\000")
- test("\\000", "\000")
- test("\\09", "\0009")
- test("\\009", "\0009")
- test("\\0009", "\0009")
- test("\\1", "\001")
- test("\\01", "\001")
- test("\\001", "\001")
- test("\\0011", "\0011")
- test("\\1abc", "\001abc")
-
- test("\\\u4e16", "\u4e16")
-
- // err
- test = func(have, want string) {
- have, err := parseStringLiteral(have)
- is(err.Error(), want)
- is(have, "")
- }
-
- test(`\u`, `invalid escape: \u: len("") != 4`)
- test(`\u0`, `invalid escape: \u: len("0") != 4`)
- test(`\u00`, `invalid escape: \u: len("00") != 4`)
- test(`\u000`, `invalid escape: \u: len("000") != 4`)
-
- test(`\x`, `invalid escape: \x: len("") != 2`)
- test(`\x0`, `invalid escape: \x: len("0") != 2`)
- test(`\x0`, `invalid escape: \x: len("0") != 2`)
- })
-}
-
-func Test_parseNumberLiteral(t *testing.T) {
- tt(t, func() {
- test := func(input string, expect interface{}) {
- result, err := parseNumberLiteral(input)
- is(err, nil)
- is(result, expect)
- }
-
- test("0", 0)
-
- test("0x8000000000000000", float64(9.223372036854776e+18))
- })
-}
-
-func TestPosition(t *testing.T) {
- tt(t, func() {
- parser := newParser("", "// Lorem ipsum")
-
- // Out of range, idx0 (error condition)
- is(parser.slice(0, 1), "")
- is(parser.slice(0, 10), "")
-
- // Out of range, idx1 (error condition)
- is(parser.slice(1, 128), "")
-
- is(parser.str[0:0], "")
- is(parser.slice(1, 1), "")
-
- is(parser.str[0:1], "/")
- is(parser.slice(1, 2), "/")
-
- is(parser.str[0:14], "// Lorem ipsum")
- is(parser.slice(1, 15), "// Lorem ipsum")
-
- parser = newParser("", "(function(){ return 0; })")
- program, err := parser.parse()
- is(err, nil)
-
- var node ast.Node
- node = program.Body[0].(*ast.ExpressionStatement).Expression.(*ast.FunctionLiteral)
- is(node.Idx0(), file.Idx(2))
- is(node.Idx1(), file.Idx(25))
- is(parser.slice(node.Idx0(), node.Idx1()), "function(){ return 0; }")
- is(parser.slice(node.Idx0(), node.Idx1()+1), "function(){ return 0; })")
- is(parser.slice(node.Idx0(), node.Idx1()+2), "")
- is(node.(*ast.FunctionLiteral).Source, "function(){ return 0; }")
-
- node = program
- is(node.Idx0(), file.Idx(2))
- is(node.Idx1(), file.Idx(25))
- is(parser.slice(node.Idx0(), node.Idx1()), "function(){ return 0; }")
-
- parser = newParser("", "(function(){ return abc; })")
- program, err = parser.parse()
- is(err, nil)
- node = program.Body[0].(*ast.ExpressionStatement).Expression.(*ast.FunctionLiteral)
- is(node.(*ast.FunctionLiteral).Source, "function(){ return abc; }")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/regexp_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/regexp_test.go
deleted file mode 100644
index 3222db1a7..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser/regexp_test.go
+++ /dev/null
@@ -1,149 +0,0 @@
-package parser
-
-import (
- "regexp"
- "testing"
-)
-
-func TestRegExp(t *testing.T) {
- tt(t, func() {
- {
- // err
- test := func(input string, expect interface{}) {
- _, err := TransformRegExp(input)
- is(err, expect)
- }
-
- test("[", "Unterminated character class")
-
- test("(", "Unterminated group")
-
- test("(?=)", "re2: Invalid (?=) <lookahead>")
-
- test("(?=)", "re2: Invalid (?=) <lookahead>")
-
- test("(?!)", "re2: Invalid (?!) <lookahead>")
-
- // An error anyway
- test("(?=", "re2: Invalid (?=) <lookahead>")
-
- test("\\1", "re2: Invalid \\1 <backreference>")
-
- test("\\90", "re2: Invalid \\90 <backreference>")
-
- test("\\9123456789", "re2: Invalid \\9123456789 <backreference>")
-
- test("\\(?=)", "Unmatched ')'")
-
- test(")", "Unmatched ')'")
- }
-
- {
- // err
- test := func(input, expect string, expectErr interface{}) {
- output, err := TransformRegExp(input)
- is(output, expect)
- is(err, expectErr)
- }
-
- test("(?!)", "(?!)", "re2: Invalid (?!) <lookahead>")
-
- test(")", "", "Unmatched ')'")
-
- test("(?!))", "", "re2: Invalid (?!) <lookahead>")
-
- test("\\0", "\\0", nil)
-
- test("\\1", "\\1", "re2: Invalid \\1 <backreference>")
-
- test("\\9123456789", "\\9123456789", "re2: Invalid \\9123456789 <backreference>")
- }
-
- {
- // err
- test := func(input string, expect string) {
- result, err := TransformRegExp(input)
- is(err, nil)
- if is(result, expect) {
- _, err := regexp.Compile(result)
- if !is(err, nil) {
- t.Log(result)
- }
- }
- }
-
- test("", "")
-
- test("abc", "abc")
-
- test(`\abc`, `abc`)
-
- test(`\a\b\c`, `a\bc`)
-
- test(`\x`, `x`)
-
- test(`\c`, `c`)
-
- test(`\cA`, `\x01`)
-
- test(`\cz`, `\x1a`)
-
- test(`\ca`, `\x01`)
-
- test(`\cj`, `\x0a`)
-
- test(`\ck`, `\x0b`)
-
- test(`\+`, `\+`)
-
- test(`[\b]`, `[\x08]`)
-
- test(`\u0z01\x\undefined`, `u0z01xundefined`)
-
- test(`\\|'|\r|\n|\t|\u2028|\u2029`, `\\|'|\r|\n|\t|\x{2028}|\x{2029}`)
-
- test("]", "]")
-
- test("}", "}")
-
- test("%", "%")
-
- test("(%)", "(%)")
-
- test("(?:[%\\s])", "(?:[%\\s])")
-
- test("[[]", "[[]")
-
- test("\\101", "\\x41")
-
- test("\\51", "\\x29")
-
- test("\\051", "\\x29")
-
- test("\\175", "\\x7d")
-
- test("\\04", "\\x04")
-
- test(`<%([\s\S]+?)%>`, `<%([\s\S]+?)%>`)
-
- test(`(.)^`, "(.)^")
-
- test(`<%-([\s\S]+?)%>|<%=([\s\S]+?)%>|<%([\s\S]+?)%>|$`, `<%-([\s\S]+?)%>|<%=([\s\S]+?)%>|<%([\s\S]+?)%>|$`)
-
- test(`\$`, `\$`)
-
- test(`[G-b]`, `[G-b]`)
-
- test(`[G-b\0]`, `[G-b\0]`)
- }
- })
-}
-
-func TestTransformRegExp(t *testing.T) {
- tt(t, func() {
- pattern, err := TransformRegExp(`\s+abc\s+`)
- is(err, nil)
- is(pattern, `\s+abc\s+`)
- is(regexp.MustCompile(pattern).MatchString("\t abc def"), true)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/parser_test.go
deleted file mode 100644
index 7db43d239..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/parser_test.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestPersistence(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- function abc() { return 1; }
- abc.toString();
- `, "function abc() { return 1; }")
-
- test(`
- function def() { return 3.14159; }
- [ abc.toString(), def.toString() ];
- `, "function abc() { return 1; },function def() { return 3.14159; }")
-
- test(`
- eval("function ghi() { return 'ghi' }");
- [ abc.toString(), def.toString(), ghi.toString() ];
- `, "function abc() { return 1; },function def() { return 3.14159; },function ghi() { return 'ghi' }")
-
- test(`
- [ abc.toString(), def.toString(), ghi.toString() ];
- `, "function abc() { return 1; },function def() { return 3.14159; },function ghi() { return 'ghi' }")
-
- test(`/*
-
-
-
-
-
-
-
-
-
- */`, UndefinedValue())
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/reflect_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/reflect_test.go
deleted file mode 100644
index e4e83adeb..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/reflect_test.go
+++ /dev/null
@@ -1,483 +0,0 @@
-package otto
-
-import (
- "math"
- "reflect"
- "testing"
-)
-
-type _abcStruct struct {
- Abc bool
- Def int
- Ghi string
- Jkl interface{}
- Mno _mnoStruct
- Pqr map[string]int8
-}
-
-func (abc _abcStruct) String() string {
- return abc.Ghi
-}
-
-func (abc *_abcStruct) FuncPointer() string {
- return "abc"
-}
-
-func (abc _abcStruct) Func() {
- return
-}
-
-func (abc _abcStruct) FuncReturn1() string {
- return "abc"
-}
-
-func (abc _abcStruct) FuncReturn2() (string, error) {
- return "def", nil
-}
-
-func (abc _abcStruct) Func1Return1(a string) string {
- return a
-}
-
-func (abc _abcStruct) Func2Return1(x, y string) string {
- return x + y
-}
-
-func (abc _abcStruct) FuncEllipsis(xyz ...string) int {
- return len(xyz)
-}
-
-func (abc _abcStruct) FuncReturnStruct() _mnoStruct {
- return _mnoStruct{}
-}
-
-type _mnoStruct struct {
- Ghi string
-}
-
-func (mno _mnoStruct) Func() string {
- return "mno"
-}
-
-func TestReflect(t *testing.T) {
- if true {
- return
- }
- tt(t, func() {
- // Testing dbgf
- // These should panic
- toValue("Xyzzy").toReflectValue(reflect.Ptr)
- stringToReflectValue("Xyzzy", reflect.Ptr)
- })
-}
-
-func Test_reflectStruct(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- // _abcStruct
- {
- abc := &_abcStruct{}
- vm.Set("abc", abc)
-
- test(`
- [ abc.Abc, abc.Ghi ];
- `, "false,")
-
- abc.Abc = true
- abc.Ghi = "Nothing happens."
-
- test(`
- [ abc.Abc, abc.Ghi ];
- `, "true,Nothing happens.")
-
- *abc = _abcStruct{}
-
- test(`
- [ abc.Abc, abc.Ghi ];
- `, "false,")
-
- abc.Abc = true
- abc.Ghi = "Xyzzy"
- vm.Set("abc", abc)
-
- test(`
- [ abc.Abc, abc.Ghi ];
- `, "true,Xyzzy")
-
- is(abc.Abc, true)
- test(`
- abc.Abc = false;
- abc.Def = 451;
- abc.Ghi = "Nothing happens.";
- abc.abc = "Something happens.";
- [ abc.Def, abc.abc ];
- `, "451,Something happens.")
- is(abc.Abc, false)
- is(abc.Def, 451)
- is(abc.Ghi, "Nothing happens.")
-
- test(`
- delete abc.Def;
- delete abc.abc;
- [ abc.Def, abc.abc ];
- `, "451,")
- is(abc.Def, 451)
-
- test(`
- abc.FuncPointer();
- `, "abc")
-
- test(`
- abc.Func();
- `, "undefined")
-
- test(`
- abc.FuncReturn1();
- `, "abc")
-
- test(`
- abc.Func1Return1("abc");
- `, "abc")
-
- test(`
- abc.Func2Return1("abc", "def");
- `, "abcdef")
-
- test(`
- abc.FuncEllipsis("abc", "def", "ghi");
- `, 3)
-
- test(`raise:
- abc.FuncReturn2();
- `, "TypeError")
-
- test(`
- abc.FuncReturnStruct();
- `, "[object Object]")
-
- test(`
- abc.FuncReturnStruct().Func();
- `, "mno")
- }
- })
-}
-
-func Test_reflectMap(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- // map[string]string
- {
- abc := map[string]string{
- "Xyzzy": "Nothing happens.",
- "def": "1",
- }
- vm.Set("abc", abc)
-
- test(`
- abc.xyz = "pqr";
- [ abc.Xyzzy, abc.def, abc.ghi ];
- `, "Nothing happens.,1,")
-
- is(abc["xyz"], "pqr")
- }
-
- // map[string]float64
- {
- abc := map[string]float64{
- "Xyzzy": math.Pi,
- "def": 1,
- }
- vm.Set("abc", abc)
-
- test(`
- abc.xyz = "pqr";
- abc.jkl = 10;
- [ abc.Xyzzy, abc.def, abc.ghi ];
- `, "3.141592653589793,1,")
-
- is(abc["xyz"], math.NaN())
- is(abc["jkl"], float64(10))
- }
-
- // map[string]int32
- {
- abc := map[string]int32{
- "Xyzzy": 3,
- "def": 1,
- }
- vm.Set("abc", abc)
-
- test(`
- abc.xyz = "pqr";
- abc.jkl = 10;
- [ abc.Xyzzy, abc.def, abc.ghi ];
- `, "3,1,")
-
- is(abc["xyz"], 0)
- is(abc["jkl"], int32(10))
-
- test(`
- delete abc["Xyzzy"];
- `)
-
- _, exists := abc["Xyzzy"]
- is(exists, false)
- is(abc["Xyzzy"], 0)
- }
-
- // map[int32]string
- {
- abc := map[int32]string{
- 0: "abc",
- 1: "def",
- }
- vm.Set("abc", abc)
-
- test(`
- abc[2] = "pqr";
- //abc.jkl = 10;
- abc[3] = 10;
- [ abc[0], abc[1], abc[2], abc[3] ]
- `, "abc,def,pqr,10")
-
- is(abc[2], "pqr")
- is(abc[3], "10")
-
- test(`
- delete abc[2];
- `)
-
- _, exists := abc[2]
- is(exists, false)
- }
-
- })
-}
-
-func Test_reflectSlice(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- // []bool
- {
- abc := []bool{
- false,
- true,
- true,
- false,
- }
- vm.Set("abc", abc)
-
- test(`
- abc;
- `, "false,true,true,false")
-
- test(`
- abc[0] = true;
- abc[abc.length-1] = true;
- delete abc[2];
- abc;
- `, "true,true,false,true")
-
- is(abc, []bool{true, true, false, true})
- is(abc[len(abc)-1], true)
- }
-
- // []int32
- {
- abc := make([]int32, 4)
- vm.Set("abc", abc)
-
- test(`
- abc;
- `, "0,0,0,0")
-
- test(`
- abc[0] = 4.2;
- abc[1] = "42";
- abc[2] = 3.14;
- abc;
- `, "4,42,3,0")
-
- is(abc, []int32{4, 42, 3, 0})
-
- test(`
- delete abc[1];
- delete abc[2];
- `)
- is(abc[1], 0)
- is(abc[2], 0)
- }
- })
-}
-
-func Test_reflectArray(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- // []bool
- {
- abc := [4]bool{
- false,
- true,
- true,
- false,
- }
- vm.Set("abc", abc)
-
- test(`
- abc;
- `, "false,true,true,false")
- // Unaddressable array
-
- test(`
- abc[0] = true;
- abc[abc.length-1] = true;
- abc;
- `, "false,true,true,false")
- // Again, unaddressable array
-
- is(abc, [4]bool{false, true, true, false})
- is(abc[len(abc)-1], false)
- // ...
- }
-
- // []int32
- {
- abc := make([]int32, 4)
- vm.Set("abc", abc)
-
- test(`
- abc;
- `, "0,0,0,0")
-
- test(`
- abc[0] = 4.2;
- abc[1] = "42";
- abc[2] = 3.14;
- abc;
- `, "4,42,3,0")
-
- is(abc, []int32{4, 42, 3, 0})
- }
-
- // []bool
- {
- abc := [4]bool{
- false,
- true,
- true,
- false,
- }
- vm.Set("abc", &abc)
-
- test(`
- abc;
- `, "false,true,true,false")
-
- test(`
- abc[0] = true;
- abc[abc.length-1] = true;
- delete abc[2];
- abc;
- `, "true,true,false,true")
-
- is(abc, [4]bool{true, true, false, true})
- is(abc[len(abc)-1], true)
- }
-
- })
-}
-
-func Test_reflectArray_concat(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- vm.Set("ghi", []string{"jkl", "mno"})
- vm.Set("pqr", []interface{}{"jkl", 42, 3.14159, true})
- test(`
- var def = {
- "abc": ["abc"],
- "xyz": ["xyz"]
- };
- xyz = pqr.concat(ghi, def.abc, def, def.xyz);
- [ xyz, xyz.length ];
- `, "jkl,42,3.14159,true,jkl,mno,abc,[object Object],xyz,9")
- })
-}
-
-func Test_reflectMapInterface(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- {
- abc := map[string]interface{}{
- "Xyzzy": "Nothing happens.",
- "def": "1",
- "jkl": "jkl",
- }
- vm.Set("abc", abc)
- vm.Set("mno", &_abcStruct{})
-
- test(`
- abc.xyz = "pqr";
- abc.ghi = {};
- abc.jkl = 3.14159;
- abc.mno = mno;
- mno.Abc = true;
- mno.Ghi = "Something happens.";
- [ abc.Xyzzy, abc.def, abc.ghi, abc.mno ];
- `, "Nothing happens.,1,[object Object],[object Object]")
-
- is(abc["xyz"], "pqr")
- is(abc["ghi"], "[object Object]")
- is(abc["jkl"], float64(3.14159))
- mno, valid := abc["mno"].(*_abcStruct)
- is(valid, true)
- is(mno.Abc, true)
- is(mno.Ghi, "Something happens.")
- }
- })
-}
-
-func TestPassthrough(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- {
- abc := &_abcStruct{
- Mno: _mnoStruct{
- Ghi: "<Mno.Ghi>",
- },
- }
- vm.Set("abc", abc)
-
- test(`
- abc.Mno.Ghi;
- `, "<Mno.Ghi>")
-
- vm.Set("pqr", map[string]int8{
- "xyzzy": 0,
- "Nothing happens.": 1,
- })
-
- test(`
- abc.Ghi = "abc";
- abc.Pqr = pqr;
- abc.Pqr["Nothing happens."];
- `, 1)
-
- mno := _mnoStruct{
- Ghi: "<mno.Ghi>",
- }
- vm.Set("mno", mno)
-
- test(`
- abc.Mno = mno;
- abc.Mno.Ghi;
- `, "<mno.Ghi>")
- }
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/regexp_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/regexp_test.go
deleted file mode 100644
index 8e65ee46a..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/regexp_test.go
+++ /dev/null
@@ -1,290 +0,0 @@
-package otto
-
-import (
- "fmt"
- "testing"
-)
-
-func TestRegExp(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [
- /abc/.toString(),
- /abc/gim.toString(),
- ""+/abc/gi.toString(),
- new RegExp("1(\\d+)").toString(),
- ];
- `, "/abc/,/abc/gim,/abc/gi,/1(\\d+)/")
-
- test(`
- [
- new RegExp("abc").exec("123abc456"),
- null === new RegExp("xyzzy").exec("123abc456"),
- new RegExp("1(\\d+)").exec("123abc456"),
- new RegExp("xyzzy").test("123abc456"),
- new RegExp("1(\\d+)").test("123abc456"),
- new RegExp("abc").exec("123abc456"),
- ];
- `, "abc,true,123,23,false,true,abc")
-
- test(`new RegExp("abc").toString()`, "/abc/")
- test(`new RegExp("abc", "g").toString()`, "/abc/g")
- test(`new RegExp("abc", "mig").toString()`, "/abc/gim")
-
- result := test(`/(a)?/.exec('b')`, ",")
- is(result._object().get("0"), "")
- is(result._object().get("1"), "undefined")
- is(result._object().get("length"), 2)
-
- result = test(`/(a)?(b)?/.exec('b')`, "b,,b")
- is(result._object().get("0"), "b")
- is(result._object().get("1"), "undefined")
- is(result._object().get("2"), "b")
- is(result._object().get("length"), 3)
-
- test(`/\u0041/.source`, "\\u0041")
- test(`/\a/.source`, "\\a")
- test(`/\;/.source`, "\\;")
-
- test(`/a\a/.source`, "a\\a")
- test(`/,\;/.source`, ",\\;")
- test(`/ \ /.source`, " \\ ")
-
- // Start sanity check...
- test("eval(\"/abc/\").source", "abc")
- test("eval(\"/\u0023/\").source", "#")
- test("eval(\"/\u0058/\").source", "X")
- test("eval(\"/\\\u0023/\").source == \"\\\u0023\"", true)
- test("'0x' + '0058'", "0x0058")
- test("'\\\\' + '0x' + '0058'", "\\0x0058")
- // ...stop sanity check
-
- test(`abc = '\\' + String.fromCharCode('0x' + '0058'); eval('/' + abc + '/').source`, "\\X")
- test(`abc = '\\' + String.fromCharCode('0x0058'); eval('/' + abc + '/').source == "\\\u0058"`, true)
- test(`abc = '\\' + String.fromCharCode('0x0023'); eval('/' + abc + '/').source == "\\\u0023"`, true)
- test(`abc = '\\' + String.fromCharCode('0x0078'); eval('/' + abc + '/').source == "\\\u0078"`, true)
-
- test(`
- var abc = Object.getOwnPropertyDescriptor(RegExp, "prototype");
- [ [ typeof RegExp.prototype ],
- [ abc.writable, abc.enumerable, abc.configurable ] ];
- `, "object,false,false,false")
- })
-}
-
-func TestRegExp_global(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = /(?:ab|cd)\d?/g;
- var found = [];
- do {
- match = abc.exec("ab cd2 ab34 cd");
- if (match !== null) {
- found.push(match[0]);
- } else {
- break;
- }
- } while (true);
- found;
- `, "ab,cd2,ab3,cd")
- })
-}
-
-func TestRegExp_exec(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = /./g;
- def = '123456';
- ghi = 0;
- while (ghi < 100 && abc.exec(def) !== null) {
- ghi += 1;
- }
- [ ghi, def.length, ghi == def.length ];
- `, "6,6,true")
-
- test(`
- abc = /[abc](\d)?/g;
- def = 'a0 b c1 d3';
- ghi = 0;
- lastIndex = 0;
- while (ghi < 100 && abc.exec(def) !== null) {
- lastIndex = abc.lastIndex;
- ghi += 1;
-
- }
- [ ghi, lastIndex ];
- `, "3,7")
-
- test(`
- var abc = /[abc](\d)?/.exec("a0 b c1 d3");
- [ abc.length, abc.input, abc.index, abc ];
- `, "2,a0 b c1 d3,0,a0,0")
-
- test(`raise:
- var exec = RegExp.prototype.exec;
- exec("Xyzzy");
- `, "TypeError: Calling RegExp.exec on a non-RegExp object")
-
- test(`
- var abc = /\w{3}\d?/.exec("CE\uFFFFL\uFFDDbox127");
- [ abc.input.length, abc.length, abc.input, abc.index, abc ];
- `, "11,1,CE\uFFFFL\uFFDDbox127,5,box1")
-
- test(`RegExp.prototype.exec.length`, 1)
- test(`RegExp.prototype.exec.prototype`, "undefined")
- })
-}
-
-func TestRegExp_test(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`RegExp.prototype.test.length`, 1)
- test(`RegExp.prototype.test.prototype`, "undefined")
- })
-}
-
-func TestRegExp_toString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`RegExp.prototype.toString.length`, 0)
- test(`RegExp.prototype.toString.prototype`, "undefined")
- })
-}
-
-func TestRegExp_zaacbbbcac(t *testing.T) {
- if true {
- return
- }
-
- tt(t, func() {
- test, _ := test()
-
- // FIXME? TODO /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac")
- test(`
- var abc = /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac");
- [ abc.length, abc.index, abc ];
- `, "6,0,zaacbbbcac,z,ac,a,,c")
- })
-}
-
-func TestRegExpCopying(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = /xyzzy/i;
- def = RegExp(abc);
- abc.indicator = 1;
- [ abc.indicator, def.indicator ];
- `, "1,1")
-
- test(`raise:
- RegExp(new RegExp("\\d"), "1");
- `, "TypeError: Cannot supply flags when constructing one RegExp from another")
- })
-}
-
-func TestRegExp_multiline(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = /s$/m.exec("pairs\nmakes\tdouble");
- [ abc.length, abc.index, abc ];
- `, "1,4,s")
- })
-}
-
-func TestRegExp_source(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ /xyzzy/i.source, /./i.source ];
- `, "xyzzy,.")
-
- test(`
- var abc = /./i;
- var def = new RegExp(abc);
- [ abc.source, def.source, abc.source === def.source ];
- `, ".,.,true")
-
- test(`
- var abc = /./i;
- var def = abc.hasOwnProperty("source");
- var ghi = abc.source;
- abc.source = "xyzzy";
- [ def, abc.source ];
- `, "true,.")
- })
-}
-
-func TestRegExp_newRegExp(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- Math.toString();
- var abc = new RegExp(Math,eval("\"g\""));
- [ abc, abc.global ];
- `, "/[object Math]/g,true")
- })
-}
-
-func TestRegExp_flags(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = /./i;
- var def = new RegExp(abc);
- [ abc.multiline == def.multiline, abc.global == def.global, abc.ignoreCase == def.ignoreCase ];
- `, "true,true,true")
- })
-}
-
-func TestRegExp_controlCharacter(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- for code := 0x41; code < 0x5a; code++ {
- string_ := string(code - 64)
- test(fmt.Sprintf(`
- var code = 0x%x;
- var string = String.fromCharCode(code %% 32);
- var result = (new RegExp("\\c" + String.fromCharCode(code))).exec(string);
- [ code, string, result ];
- `, code), fmt.Sprintf("%d,%s,%s", code, string_, string_))
- }
- })
-}
-
-func TestRegExp_notNotEmptyCharacterClass(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = /[\s\S]a/m.exec("a\naba");
- [ abc.length, abc.input, abc ];
- `, "1,a\naba,\na")
- })
-}
-
-func TestRegExp_compile(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = /[\s\S]a/;
- abc.compile('^\w+');
- `, "undefined")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/repl/repl.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/repl/repl.go
new file mode 100644
index 000000000..0d70cc051
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/repl/repl.go
@@ -0,0 +1,115 @@
+// Package repl implements a REPL (read-eval-print loop) for otto.
+package repl
+
+import (
+ "fmt"
+ "io"
+ "strings"
+ "sync/atomic"
+
+ "github.com/robertkrimen/otto"
+ "gopkg.in/readline.v1"
+)
+
+var counter uint32
+
+// DebuggerHandler implements otto's debugger handler signature, providing a
+// simple drop-in debugger implementation.
+func DebuggerHandler(vm *otto.Otto) {
+ i := atomic.AddUint32(&counter, 1)
+
+ // purposefully ignoring the error here - we can't do anything useful with
+ // it except panicking, and that'd be pretty rude. it'd be easy enough for a
+ // consumer to define an equivalent function that _does_ panic if desired.
+ _ = RunWithPrompt(vm, fmt.Sprintf("DEBUGGER[%d]>", i))
+}
+
+// Run creates a REPL with the default prompt and no prelude.
+func Run(vm *otto.Otto) error {
+ return RunWithPromptAndPrelude(vm, "", "")
+}
+
+// RunWithPrompt runs a REPL with the given prompt and no prelude.
+func RunWithPrompt(vm *otto.Otto, prompt string) error {
+ return RunWithPromptAndPrelude(vm, prompt, "")
+}
+
+// RunWithPrelude runs a REPL with the default prompt and the given prelude.
+func RunWithPrelude(vm *otto.Otto, prelude string) error {
+ return RunWithPromptAndPrelude(vm, "", prelude)
+}
+
+// RunWithPromptAndPrelude runs a REPL with the given prompt and prelude.
+func RunWithPromptAndPrelude(vm *otto.Otto, prompt, prelude string) error {
+ if prompt == "" {
+ prompt = ">"
+ }
+
+ prompt = strings.Trim(prompt, " ")
+ prompt += " "
+
+ rl, err := readline.New(prompt)
+ if err != nil {
+ return err
+ }
+
+ if prelude != "" {
+ if _, err := io.Copy(rl.Stderr(), strings.NewReader(prelude+"\n")); err != nil {
+ return err
+ }
+
+ rl.Refresh()
+ }
+
+ var d []string
+
+ for {
+ l, err := rl.Readline()
+ if err != nil {
+ if err == readline.ErrInterrupt {
+ if d != nil {
+ d = nil
+
+ rl.SetPrompt(prompt)
+ rl.Refresh()
+
+ continue
+ }
+
+ break
+ }
+
+ return err
+ }
+
+ if l == "" {
+ continue
+ }
+
+ d = append(d, l)
+
+ s, err := vm.Compile("repl", strings.Join(d, "\n"))
+ if err != nil {
+ rl.SetPrompt(strings.Repeat(" ", len(prompt)))
+ } else {
+ rl.SetPrompt(prompt)
+
+ d = nil
+
+ v, err := vm.Eval(s)
+ if err != nil {
+ if oerr, ok := err.(*otto.Error); ok {
+ io.Copy(rl.Stdout(), strings.NewReader(oerr.String()))
+ } else {
+ io.Copy(rl.Stdout(), strings.NewReader(err.Error()))
+ }
+ } else {
+ rl.Stdout().Write([]byte(v.String() + "\n"))
+ }
+ }
+
+ rl.Refresh()
+ }
+
+ return rl.Close()
+}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/runtime.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/runtime.go
index 1ac1b435e..168cb1cde 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/runtime.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/runtime.go
@@ -2,6 +2,8 @@ package otto
import (
"errors"
+ "fmt"
+ "math"
"reflect"
"sync"
@@ -52,6 +54,7 @@ type _runtime struct {
scope *_scope
otto *Otto
eval *_object // The builtin eval, for determine indirect versus direct invocation
+ debugger func(*Otto)
labels []string // FIXME
lck sync.Mutex
@@ -191,6 +194,148 @@ func (self *_runtime) safeToValue(value interface{}) (Value, error) {
return result, err
}
+// convertNumeric converts numeric parameter val from js to that of type t if it is safe to do so, otherwise it panics.
+// This allows literals (int64), bitwise values (int32) and the general form (float64) of javascript numerics to be passed as parameters to go functions easily.
+func convertNumeric(val reflect.Value, t reflect.Type) reflect.Value {
+ if val.Kind() == t.Kind() {
+ return val
+ }
+
+ if val.Kind() == reflect.Interface {
+ val = reflect.ValueOf(val.Interface())
+ }
+
+ switch val.Kind() {
+ case reflect.Float32, reflect.Float64:
+ f64 := val.Float()
+ switch t.Kind() {
+ case reflect.Float64:
+ return reflect.ValueOf(f64)
+ case reflect.Float32:
+ if reflect.Zero(t).OverflowFloat(f64) {
+ panic("converting float64 to float32 would overflow")
+ }
+
+ return val.Convert(t)
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+ i64 := int64(f64)
+ if float64(i64) != f64 {
+ panic(fmt.Sprintf("converting %v to %v would cause loss of precision", val.Type(), t))
+ }
+
+ // The float represents an integer
+ val = reflect.ValueOf(i64)
+ default:
+ panic(fmt.Sprintf("cannot convert %v to %v", val.Type(), t))
+ }
+ }
+
+ switch val.Kind() {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ i64 := val.Int()
+ switch t.Kind() {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ if reflect.Zero(t).OverflowInt(i64) {
+ panic(fmt.Sprintf("converting %v to %v would overflow", val.Type(), t))
+ }
+ return val.Convert(t)
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+ if i64 < 0 {
+ panic(fmt.Sprintf("converting %v to %v would underflow", val.Type(), t))
+ }
+ if reflect.Zero(t).OverflowUint(uint64(i64)) {
+ panic(fmt.Sprintf("converting %v to %v would overflow", val.Type(), t))
+ }
+ return val.Convert(t)
+ }
+
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+ u64 := val.Uint()
+ switch t.Kind() {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ if u64 > math.MaxInt64 || reflect.Zero(t).OverflowInt(int64(u64)) {
+ panic(fmt.Sprintf("converting %v to %v would overflow", val.Type(), t))
+ }
+ return val.Convert(t)
+ case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+ if reflect.Zero(t).OverflowUint(u64) {
+ panic(fmt.Sprintf("converting %v to %v would overflow", val.Type(), t))
+ }
+ return val.Convert(t)
+ }
+ }
+
+ panic(fmt.Sprintf("unsupported type %v for numeric conversion", val.Type()))
+}
+
+// callParamConvert converts request val to type t if possible.
+// If the conversion fails due to overflow or type miss-match then it panics.
+// If no conversion is known then the original value is returned.
+func callParamConvert(val reflect.Value, t reflect.Type) reflect.Value {
+ if val.Kind() == reflect.Interface {
+ val = reflect.ValueOf(val.Interface())
+ }
+
+ switch t.Kind() {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64:
+ if val.Kind() == t.Kind() {
+ // Types already match
+ return val
+ }
+ return convertNumeric(val, t)
+ case reflect.Slice:
+ if val.Kind() != reflect.Slice {
+ // Conversion from none slice type to slice not possible
+ panic(fmt.Sprintf("cannot use %v as type %v", val, t))
+ }
+ default:
+ // No supported conversion
+ return val
+ }
+
+ elemType := t.Elem()
+ switch elemType.Kind() {
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.Slice:
+ // Attempt to convert to slice of the type t
+ s := reflect.MakeSlice(reflect.SliceOf(elemType), val.Len(), val.Len())
+ for i := 0; i < val.Len(); i++ {
+ s.Index(i).Set(callParamConvert(val.Index(i), elemType))
+ }
+
+ return s
+ }
+
+ // Not a slice type we can convert
+ return val
+}
+
+// callSliceRequired returns true if CallSlice is required instead of Call.
+func callSliceRequired(param reflect.Type, val reflect.Value) bool {
+ vt := val.Type()
+ for param.Kind() == reflect.Slice {
+ if val.Kind() == reflect.Interface {
+ val = reflect.ValueOf(val.Interface())
+ vt = val.Type()
+ }
+
+ if vt.Kind() != reflect.Slice {
+ return false
+ }
+
+ vt = vt.Elem()
+ if val.Kind() != reflect.Invalid {
+ if val.Len() > 0 {
+ val = val.Index(0)
+ } else {
+ val = reflect.Value{}
+ }
+ }
+ param = param.Elem()
+ }
+
+ return true
+}
+
func (self *_runtime) toValue(value interface{}) Value {
switch value := value.(type) {
case Value:
@@ -217,19 +362,61 @@ func (self *_runtime) toValue(value interface{}) Value {
case reflect.Func:
// TODO Maybe cache this?
return toValue_object(self.newNativeFunction("", func(call FunctionCall) Value {
- in := make([]reflect.Value, len(call.ArgumentList))
+ argsCount := len(call.ArgumentList)
+ in := make([]reflect.Value, argsCount)
+ t := value.Type()
+ callSlice := false
+ paramsCount := t.NumIn()
+ lastParam := paramsCount - 1
+ lastArg := argsCount - 1
+ isVariadic := t.IsVariadic()
for i, value := range call.ArgumentList {
- in[i] = reflect.ValueOf(value.export())
+ var paramType reflect.Type
+ if isVariadic && i == lastArg && argsCount == paramsCount {
+ // Variadic functions last parameter and parameter numbers match incoming args
+ paramType = t.In(lastArg)
+ val := reflect.ValueOf(value.export())
+ callSlice = callSliceRequired(paramType, val)
+ if callSlice {
+ in[i] = callParamConvert(reflect.ValueOf(value.export()), paramType)
+ continue
+ }
+ }
+
+ if i >= lastParam {
+ if isVariadic {
+ paramType = t.In(lastParam).Elem()
+ } else {
+ paramType = t.In(lastParam)
+ }
+ } else {
+ paramType = t.In(i)
+ }
+ in[i] = callParamConvert(reflect.ValueOf(value.export()), paramType)
}
- out := value.Call(in)
- if len(out) == 1 {
- return self.toValue(out[0].Interface())
- } else if len(out) == 0 {
+ var out []reflect.Value
+ if callSlice {
+ out = value.CallSlice(in)
+ } else {
+ out = value.Call(in)
+ }
+
+ l := len(out)
+ switch l {
+ case 0:
return Value{}
+ case 1:
+ return self.toValue(out[0].Interface())
}
- panic(call.runtime.panicTypeError())
+ // Return an array of the values to emulate multi value return.
+ // In the future this can be used along side destructuring assignment.
+ s := make([]interface{}, l)
+ for i, v := range out {
+ s[i] = self.toValue(v.Interface())
+ }
+ return self.toValue(s)
}))
case reflect.Struct:
return toValue_object(self.newGoStructObject(value))
@@ -280,7 +467,7 @@ func (self *_runtime) parseSource(src interface{}) (*_nodeProgram, *ast.Program,
return nil, program, err
}
-func (self *_runtime) cmpl_run(src interface{}) (Value, error) {
+func (self *_runtime) cmpl_runOrEval(src interface{}, eval bool) (Value, error) {
result := Value{}
cmpl_program, program, err := self.parseSource(src)
if err != nil {
@@ -290,7 +477,7 @@ func (self *_runtime) cmpl_run(src interface{}) (Value, error) {
cmpl_program = cmpl_parse(program)
}
err = catchPanic(func() {
- result = self.cmpl_evaluate_nodeProgram(cmpl_program, false)
+ result = self.cmpl_evaluate_nodeProgram(cmpl_program, eval)
})
switch result.kind {
case valueEmpty:
@@ -301,6 +488,14 @@ func (self *_runtime) cmpl_run(src interface{}) (Value, error) {
return result, err
}
+func (self *_runtime) cmpl_run(src interface{}) (Value, error) {
+ return self.cmpl_runOrEval(src, false)
+}
+
+func (self *_runtime) cmpl_eval(src interface{}) (Value, error) {
+ return self.cmpl_runOrEval(src, true)
+}
+
func (self *_runtime) parseThrow(err error) {
if err == nil {
return
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/runtime_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/runtime_test.go
deleted file mode 100644
index 2510a0b3f..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/runtime_test.go
+++ /dev/null
@@ -1,778 +0,0 @@
-package otto
-
-import (
- "math"
- "testing"
-)
-
-// FIXME terst, Review tests
-
-func TestOperator(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- test("xyzzy = 1")
- test("xyzzy", 1)
-
- if true {
- vm.Set("twoPlusTwo", func(FunctionCall) Value {
- return toValue(5)
- })
- test("twoPlusTwo( 1 )", 5)
-
- test("1 + twoPlusTwo( 1 )", 6)
-
- test("-1 + twoPlusTwo( 1 )", 4)
- }
-
- test("result = 4")
- test("result", 4)
-
- test("result += 1")
- test("result", 5)
-
- test("result *= 2")
- test("result", 10)
-
- test("result /= 2")
- test("result", 5)
-
- test("result = 112.51 % 3.1")
- test("result", 0.9100000000000019)
-
- test("result = 'Xyzzy'")
- test("result", "Xyzzy")
-
- test("result = 'Xyz' + 'zy'")
- test("result", "Xyzzy")
-
- test("result = \"Xyzzy\"")
- test("result", "Xyzzy")
-
- test("result = 1; result = result")
- test("result", 1)
-
- test(`
- var result64
- =
- 64
- , result10 =
- 10
- `)
- test("result64", 64)
- test("result10", 10)
-
- test(`
- result = 1;
- result += 1;
- `)
- test("result", 2)
- })
-}
-
-func TestFunction_(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- result = 2
- xyzzy = function() {
- result += 1
- }
- xyzzy()
- result;
- `, 3)
-
- test(`
- xyzzy = function() {
- return 1
- }
- result = xyzzy()
- `, 1)
-
- test(`
- xyzzy = function() {}
- result = xyzzy()
- `, "undefined")
-
- test(`
- xyzzy = function() {
- return 64
- return 1
- }
- result = xyzzy()
- `, 64)
-
- test(`
- result = 4
- xyzzy = function() {
- result = 2
- }
- xyzzy();
- result;
- `, 2)
-
- test(`
- result = 4
- xyzzy = function() {
- var result
- result = 2
- }
- xyzzy();
- result;
- `, 4)
-
- test(`
- xyzzy = function() {
- var result = 4
- return result
- }
- result = xyzzy()
- `, 4)
-
- test(`
- xyzzy = function() {
- function test() {
- var result = 1
- return result
- }
- return test() + 1
- }
- result = xyzzy() + 1
- `, 3)
-
- test(`
- xyzzy = function() {
- function test() {
- var result = 1
- return result
- }
- _xyzzy = 2
- var result = _xyzzy + test() + 1
- return result
- }
- result = xyzzy() + 1;
- [ result, _xyzzy ];
- `, "5,2")
-
- test(`
- xyzzy = function(apple) {
- return 1
- }
- result = xyzzy(1)
- `, 1)
-
- test(`
- xyzzy = function(apple) {
- return apple + 1
- }
- result = xyzzy(2)
- `, 3)
-
- test(`
- {
- result = 1
- result += 1;
- }
- `, 2)
-
- test(`
- var global = 1
- outer = function() {
- var global = 2
- var inner = function(){
- return global
- }
- return inner()
- }
- result = outer()
- `, 2)
-
- test(`
- var apple = 1
- var banana = function() {
- return apple
- }
- var cherry = function() {
- var apple = 2
- return banana()
- }
- result = cherry()
- `, 1)
-
- test(`
- function xyz() {
- };
- delete xyz;
- `, false)
-
- test(`
- var abc = function __factorial(def){
- if (def === 1) {
- return def;
- } else {
- return __factorial(def-1)*def;
- }
- };
- abc(3);
- `, 6)
- })
-}
-
-func TestDoWhile(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- limit = 4;
- result = 0;
- do {
- result = result + 1;
- limit = limit - 1;
- } while (limit);
- result;
- `, 4)
-
- test(`
- result = eval("do {abc=1; break; abc=2;} while (0);");
- [ result, abc ];
- `, "1,1")
- })
-}
-
-func TestContinueBreak(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- limit = 4
- result = 0
- while (limit) {
- limit = limit - 1
- if (limit) {
- }
- else {
- break
- }
- result = result + 1
- }
- [ result, limit ];
- `, "3,0")
-
- test(`
- limit = 4
- result = 0
- while (limit) {
- limit = limit - 1
- if (limit) {
- continue
- }
- else {
- break
- }
- result = result + 1
- }
- result;
- `, 0)
-
- test(`
- limit = 4
- result = 0
- do {
- limit = limit - 1
- if (limit) {
- continue
- }
- else {
- break
- }
- result = result + 1
- } while (limit)
- result;
- `, 0)
- })
-}
-
-func TestTryCatchError(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc
- try {
- 1()
- }
- catch (def) {
- abc = def
- }
- abc;
- `, "TypeError: 1 is not a function")
-
- })
-}
-
-func TestPositiveNegativeZero(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`1/0`, _Infinity)
- test(`1/-0`, -_Infinity)
- test(`
- abc = -0
- 1/abc
- `, -_Infinity)
- })
-}
-
-func TestComparison(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- undefined = 1; undefined;
- `, "undefined")
-
- test("undefined == undefined", true)
-
- test("undefined != undefined", false)
-
- test("null == null", true)
-
- test("null != null", false)
-
- test("0 == 1", false)
-
- is(negativeZero(), -0)
- is(positiveZero(), 0)
- is(math.Signbit(negativeZero()), true)
- is(positiveZero() == negativeZero(), true)
-
- test("1 == 1", true)
-
- test("'Hello, World.' == 'Goodbye, World.'", false)
-
- test("'Hello, World.' == true", false)
-
- test("'Hello, World.' == false", false)
-
- test("'Hello, World.' == 1", false)
-
- test("1 == 'Hello, World.'", false)
-
- is(parseNumber("-1"), -1)
-
- test("0+Object", "0function Object() { [native code] }")
- })
-}
-
-func TestComparisonRelational(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test("0 < 0", false)
-
- test("0 > 0", false)
-
- test("0 <= 0", true)
-
- test("0 >= 0", true)
-
- test("' 0' >= 0", true)
-
- test("'_ 0' >= 0", false)
- })
-}
-
-func TestArguments(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- xyzzy = function() {
- return arguments[0]
- }
- result = xyzzy("xyzzy");
- `, "xyzzy")
-
- test(`
- xyzzy = function() {
- arguments[0] = "abcdef"
- return arguments[0]
- }
- result = xyzzy("xyzzy");
- `, "abcdef")
-
- test(`
- xyzzy = function(apple) {
- apple = "abcdef"
- return arguments[0]
- }
- result = xyzzy("xyzzy");
- `, "abcdef")
-
- test(`
- (function(){
- return arguments
- })()
- `, "[object Arguments]")
-
- test(`
- (function(){
- return arguments.length
- })()
- `, 0)
-
- test(`
- (function(){
- return arguments.length
- })(1, 2, 4, 8, 10)
- `, 5)
- })
-}
-
-func TestObjectLiteral(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- ({});
- `, "[object Object]")
-
- test(`
- var abc = {
- xyzzy: "Nothing happens.",
- get 1e2() {
- return 3.14159;
- },
- get null() {
- return true;
- },
- get "[\n]"() {
- return "<>";
- }
- };
- [ abc["1e2"], abc.null, abc["[\n]"] ];
- `, "3.14159,true,<>")
-
- test(`
- var abc = {
- xyzzy: "Nothing happens.",
- set 1e2() {
- this[3.14159] = 100;
- return Math.random();
- },
- set null(def) {
- this.def = def;
- return Math.random();
- },
- };
- [ abc["1e2"] = Infinity, abc[3.14159], abc.null = "xyz", abc.def ];
- `, "Infinity,100,xyz,xyz")
- })
-}
-
-func TestUnaryPrefix(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var result = 0;
- [++result, result];
- `, "1,1")
-
- test(`
- result = 0;
- [--result, result];
- `, "-1,-1")
-
- test(`
- var object = { valueOf: function() { return 1; } };
- result = ++object;
- [ result, typeof result ];
- `, "2,number")
-
- test(`
- var object = { valueOf: function() { return 1; } };
- result = --object;
- [ result, typeof result ];
- `, "0,number")
- })
-}
-
-func TestUnaryPostfix(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var result = 0;
- result++;
- [ result++, result ];
- `, "1,2")
-
- test(`
- result = 0;
- result--;
- [ result--, result ];
- `, "-1,-2")
-
- test(`
- var object = { valueOf: function() { return 1; } };
- result = object++;
- [ result, typeof result ];
- `, "1,number")
-
- test(`
- var object = { valueOf: function() { return 1; } };
- result = object--
- [ result, typeof result ];
- `, "1,number")
- })
-}
-
-func TestBinaryLogicalOperation(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = true
- def = false
- ghi = false
- jkl = false
- result = abc && def || ghi && jkl
- `, false)
-
- test(`
- abc = true
- def = true
- ghi = false
- jkl = false
- result = abc && def || ghi && jkl
- `, true)
-
- })
-}
-
-func TestBinaryBitwiseOperation(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = 1 & 2;
- def = 1 & 3;
- ghi = 1 | 3;
- jkl = 1 ^ 2;
- mno = 1 ^ 3;
- [ abc, def, ghi, jkl, mno ];
- `, "0,1,3,3,2")
- })
-}
-
-func TestBinaryShiftOperation(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- high = (1 << 30) - 1 + (1 << 30)
- low = -high - 1
- abc = 23 << 1
- def = -105 >> 1
- ghi = 23 << 2
- jkl = 1 >>> 31
- mno = 1 << 64
- pqr = 1 >> 2
- stu = -2 >> 4
- vwx = low >> 1
- yz = low >>> 1
- `)
- test("abc", 46)
- test("def", -53)
- test("ghi", 92)
- test("jkl", 0)
- test("mno", 1)
- test("pqr", 0)
- test("stu", -1)
- test("vwx", -1073741824)
- test("yz", 1073741824)
- })
-}
-
-func TestParenthesizing(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = 1 + 2 * 3
- def = (1 + 2) * 3
- ghi = !(false || true)
- jkl = !false || true
- `)
- test("abc", 7)
- test("def", 9)
- test("ghi", false)
- test("jkl", true)
- })
-}
-
-func Test_instanceof(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = {} instanceof Object;
- `, true)
-
- test(`
- abc = "abc" instanceof Object;
- `, false)
-
- test(`raise:
- abc = {} instanceof "abc";
- `, "TypeError: Expecting a function in instanceof check, but got: abc")
-
- test(`raise:
- "xyzzy" instanceof Math;
- `, "TypeError")
- })
-}
-
-func TestIn(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = "prototype" in Object;
- def = "xyzzy" in Object;
- [ abc, def ];
- `, "true,false")
- })
-}
-
-func Test_new(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = new Boolean;
- def = new Boolean(1);
- [ abc, def ];
- `, "false,true")
- })
-}
-
-func TestNewFunction(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- new Function("return 11")()
- `, 11)
-
- test(`
- abc = 10
- new Function("abc += 1")()
- abc
- `, 11)
-
- test(`
- new Function("a", "b", "c", "return b + 2")(10, 11, 12)
- `, 13)
-
- test(`raise:
- new 1
- `, "TypeError: 1 is not a function")
-
- // TODO Better error reporting: new this
- test(`raise:
- new this
- `, "TypeError: [object environment] is not a function")
-
- test(`raise:
- new {}
- `, "TypeError: [object Object] is not a function")
- })
-}
-
-func TestNewPrototype(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = { 'xyzzy': 'Nothing happens.' }
- function Xyzzy(){}
- Xyzzy.prototype = abc;
- (new Xyzzy()).xyzzy
- `, "Nothing happens.")
- })
-}
-
-func TestBlock(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc=0;
- var ghi;
- def: {
- do {
- abc++;
- if (!(abc < 10)) {
- break def;
- ghi = "ghi";
- }
- } while (true);
- }
- [ abc,ghi ];
- `, "10,")
- })
-}
-
-func Test_toString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [undefined+""]
- `, "undefined")
- })
-}
-
-func TestEvaluationOrder(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = 0;
- abc < (abc = 1) === true;
- `, true)
- })
-}
-
-func TestClone(t *testing.T) {
- tt(t, func() {
- vm1 := New()
- vm1.Run(`
- var abc = 1;
- `)
-
- vm2 := vm1.clone()
- vm1.Run(`
- abc += 2;
- `)
- vm2.Run(`
- abc += 4;
- `)
-
- is(vm1.getValue("abc"), 3)
- is(vm2.getValue("abc"), 5)
- })
-}
-
-func Test_debugger(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- debugger;
- `, "undefined")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/script_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/script_test.go
deleted file mode 100644
index 4c35c646e..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/script_test.go
+++ /dev/null
@@ -1,78 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestScript(t *testing.T) {
- tt(t, func() {
- vm := New()
-
- script, err := vm.Compile("xyzzy", `var abc; if (!abc) abc = 0; abc += 2; abc;`)
- is(err, nil)
-
- str := script.String()
- is(str, "// xyzzy\nvar abc; if (!abc) abc = 0; abc += 2; abc;")
-
- value, err := vm.Run(script)
- is(err, nil)
- is(value, 2)
-
- if true {
- return
- }
-
- tmp, err := script.marshalBinary()
- is(err, nil)
- is(len(tmp), 1228)
-
- {
- script := &Script{}
- err = script.unmarshalBinary(tmp)
- is(err, nil)
-
- is(script.String(), str)
-
- value, err = vm.Run(script)
- is(err, nil)
- is(value, 4)
-
- tmp, err = script.marshalBinary()
- is(err, nil)
- is(len(tmp), 1228)
- }
-
- {
- script := &Script{}
- err = script.unmarshalBinary(tmp)
- is(err, nil)
-
- is(script.String(), str)
-
- value, err := vm.Run(script)
- is(err, nil)
- is(value, 6)
-
- tmp, err = script.marshalBinary()
- is(err, nil)
- is(len(tmp), 1228)
- }
-
- {
- version := scriptVersion
- scriptVersion = "bogus"
-
- script := &Script{}
- err = script.unmarshalBinary(tmp)
- is(err, "version mismatch")
-
- is(script.String(), "// \n")
- is(script.version, "")
- is(script.program == nil, true)
- is(script.filename, "")
- is(script.src, "")
-
- scriptVersion = version
- }
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/stash.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/stash.go
index 578708d3f..0d3ffa511 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/stash.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/stash.go
@@ -273,3 +273,24 @@ func (in *_fnStash) clone(clone *_clone) _stash {
}
return out
}
+
+func getStashProperties(stash _stash) (keys []string) {
+ switch vars := stash.(type) {
+ case *_dclStash:
+ for k := range vars.property {
+ keys = append(keys, k)
+ }
+ case *_fnStash:
+ for k := range vars.property {
+ keys = append(keys, k)
+ }
+ case *_objectStash:
+ for k := range vars.object.property {
+ keys = append(keys, k)
+ }
+ default:
+ panic("unknown stash type")
+ }
+
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/string_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/string_test.go
deleted file mode 100644
index b7b06324b..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/string_test.go
+++ /dev/null
@@ -1,365 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = (new String("xyzzy")).length;
- def = new String().length;
- ghi = new String("Nothing happens.").length;
- `)
- test("abc", 5)
- test("def", 0)
- test("ghi", 16)
- test(`"".length`, 0)
- test(`"a\uFFFFbc".length`, 4)
- test(`String(+0)`, "0")
- test(`String(-0)`, "0")
- test(`""+-0`, "0")
- test(`
- var abc = Object.getOwnPropertyDescriptor(String, "prototype");
- [ [ typeof String.prototype ],
- [ abc.writable, abc.enumerable, abc.configurable ] ];
- `, "object,false,false,false")
- })
-}
-
-func TestString_charAt(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = "xyzzy".charAt(0)
- def = "xyzzy".charAt(11)
- `)
- test("abc", "x")
- test("def", "")
- })
-}
-
-func TestString_charCodeAt(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = "xyzzy".charCodeAt(0)
- def = "xyzzy".charCodeAt(11)
- `)
- test("abc", 120)
- test("def", _NaN)
- })
-}
-
-func TestString_fromCharCode(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`String.fromCharCode()`, []uint16{})
- test(`String.fromCharCode(88, 121, 122, 122, 121)`, []uint16{88, 121, 122, 122, 121}) // FIXME terst, Double-check these...
- test(`String.fromCharCode("88", 121, 122, 122.05, 121)`, []uint16{88, 121, 122, 122, 121})
- test(`String.fromCharCode("88", 121, 122, NaN, 121)`, []uint16{88, 121, 122, 0, 121})
- test(`String.fromCharCode("0x21")`, []uint16{33})
- test(`String.fromCharCode(-1).charCodeAt(0)`, 65535)
- test(`String.fromCharCode(65535).charCodeAt(0)`, 65535)
- test(`String.fromCharCode(65534).charCodeAt(0)`, 65534)
- test(`String.fromCharCode(4294967295).charCodeAt(0)`, 65535)
- test(`String.fromCharCode(4294967294).charCodeAt(0)`, 65534)
- test(`String.fromCharCode(0x0024) === "$"`, true)
- })
-}
-
-func TestString_concat(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"".concat()`, "")
- test(`"".concat("abc", "def")`, "abcdef")
- test(`"".concat("abc", undefined, "def")`, "abcundefineddef")
- })
-}
-
-func TestString_indexOf(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"".indexOf("")`, 0)
- test(`"".indexOf("", 11)`, 0)
- test(`"abc".indexOf("")`, 0)
- test(`"abc".indexOf("", 11)`, 3)
- test(`"abc".indexOf("a")`, 0)
- test(`"abc".indexOf("bc")`, 1)
- test(`"abc".indexOf("bc", 11)`, -1)
- test(`"$$abcdabcd".indexOf("ab", function(){return -Infinity;}())`, 2)
- test(`"$$abcdabcd".indexOf("ab", function(){return NaN;}())`, 2)
-
- test(`
- var abc = {toString:function(){return "\u0041B";}}
- var def = {valueOf:function(){return true;}}
- var ghi = "ABB\u0041BABAB";
- var jkl;
- with(ghi) {
- jkl = indexOf(abc, def);
- }
- jkl;
- `, 3)
- })
-}
-
-func TestString_lastIndexOf(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"".lastIndexOf("")`, 0)
- test(`"".lastIndexOf("", 11)`, 0)
- test(`"abc".lastIndexOf("")`, 3)
- test(`"abc".lastIndexOf("", 11)`, 3)
- test(`"abc".lastIndexOf("a")`, 0)
- test(`"abc".lastIndexOf("bc")`, 1)
- test(`"abc".lastIndexOf("bc", 11)`, 1)
- test(`"abc".lastIndexOf("bc", 0)`, -1)
- test(`"abc".lastIndexOf("abcabcabc", 2)`, -1)
- test(`"abc".lastIndexOf("abc", 0)`, 0)
- test(`"abc".lastIndexOf("abc", 1)`, 0)
- test(`"abc".lastIndexOf("abc", 2)`, 0)
- test(`"abc".lastIndexOf("abc", 3)`, 0)
-
- test(`
- abc = new Object(true);
- abc.lastIndexOf = String.prototype.lastIndexOf;
- abc.lastIndexOf(true, false);
- `, 0)
- })
-}
-
-func TestString_match(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"abc____abc_abc___".match(/__abc/)`, "__abc")
- test(`"abc___abc_abc__abc__abc".match(/abc/g)`, "abc,abc,abc,abc,abc")
- test(`"abc____abc_abc___".match(/__abc/g)`, "__abc")
- test(`
- abc = /abc/g
- "abc___abc_abc__abc__abc".match(abc)
- `, "abc,abc,abc,abc,abc")
- test(`abc.lastIndex`, 23)
- })
-}
-
-func TestString_replace(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"abc_abc".replace(/abc/, "$&123")`, "abc123_abc")
- test(`"abc_abc".replace(/abc/g, "$&123")`, "abc123_abc123")
- test(`"abc_abc_".replace(/abc/g, "$&123")`, "abc123_abc123_")
- test(`"_abc_abc_".replace(/abc/g, "$&123")`, "_abc123_abc123_")
- test(`"abc".replace(/abc/, "$&123")`, "abc123")
- test(`"abc_".replace(/abc/, "$&123")`, "abc123_")
- test("\"^abc$\".replace(/abc/, \"$`def\")", "^^def$")
- test("\"^abc$\".replace(/abc/, \"def$`\")", "^def^$")
- test(`"_abc_abd_".replace(/ab(c|d)/g, "$1")`, "_c_d_")
- test(`
- "_abc_abd_".replace(/ab(c|d)/g, function(){
- })
- `, "_undefined_undefined_")
-
- test(`"b".replace(/(a)?(b)?/, "_$1_")`, "__")
- test(`
- "b".replace(/(a)?(b)?/, function(a, b, c, d, e, f){
- return [a, b, c, d, e, f]
- })
- `, "b,,b,0,b,")
-
- test(`
- var abc = 'She sells seashells by the seashore.';
- var def = /sh/;
- [ abc.replace(def, "$'" + 'sch') ];
- `, "She sells seaells by the seashore.schells by the seashore.")
- })
-}
-
-func TestString_search(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"abc".search(/abc/)`, 0)
- test(`"abc".search(/def/)`, -1)
- test(`"abc".search(/c$/)`, 2)
- test(`"abc".search(/$/)`, 3)
- })
-}
-
-func TestString_split(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"abc".split("", 1)`, "a")
- test(`"abc".split("", 2)`, "a,b")
- test(`"abc".split("", 3)`, "a,b,c")
- test(`"abc".split("", 4)`, "a,b,c")
- test(`"abc".split("", 11)`, "a,b,c")
- test(`"abc".split("", 0)`, "")
- test(`"abc".split("")`, "a,b,c")
-
- test(`"abc".split(undefined)`, "abc")
-
- test(`"__1__3_1__2__".split("_")`, ",,1,,3,1,,2,,")
-
- test(`"__1__3_1__2__".split(/_/)`, ",,1,,3,1,,2,,")
-
- test(`"ab".split(/a*/)`, ",b")
-
- test(`_ = "A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/)`, "A,,B,bold,/,B,and,,CODE,coded,/,CODE,")
- test(`_.length`, 13)
- test(`_[1] === undefined`, true)
- test(`_[12] === ""`, true)
-
- test(`
- var abc = new String("one-1 two-2 three-3");
- var def = abc.split(new RegExp);
-
- [ def.constructor === Array, abc.length, def.length, def.join('') ];
- `, "true,19,19,one-1 two-2 three-3")
- })
-}
-
-func TestString_slice(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"abc".slice()`, "abc")
- test(`"abc".slice(0)`, "abc")
- test(`"abc".slice(0,11)`, "abc")
- test(`"abc".slice(0,-1)`, "ab")
- test(`"abc".slice(-1,11)`, "c")
- test(`abc = "abc"; abc.slice(abc.length+1, 0)`, "")
- })
-}
-
-func TestString_substring(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"abc".substring()`, "abc")
- test(`"abc".substring(0)`, "abc")
- test(`"abc".substring(0,11)`, "abc")
- test(`"abc".substring(11,0)`, "abc")
- test(`"abc".substring(0,-1)`, "")
- test(`"abc".substring(-1,11)`, "abc")
- test(`"abc".substring(11,1)`, "bc")
- test(`"abc".substring(1)`, "bc")
- test(`"abc".substring(Infinity, Infinity)`, "")
- })
-}
-
-func TestString_toCase(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`"abc".toLowerCase()`, "abc")
- test(`"ABC".toLowerCase()`, "abc")
- test(`"abc".toLocaleLowerCase()`, "abc")
- test(`"ABC".toLocaleLowerCase()`, "abc")
- test(`"abc".toUpperCase()`, "ABC")
- test(`"ABC".toUpperCase()`, "ABC")
- test(`"abc".toLocaleUpperCase()`, "ABC")
- test(`"ABC".toLocaleUpperCase()`, "ABC")
- })
-}
-
-func Test_floatToString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`String(-1234567890)`, "-1234567890")
- test(`-+String(-(-1234567890))`, -1234567890)
- test(`String(-1e128)`, "-1e+128")
- test(`String(0.12345)`, "0.12345")
- test(`String(-0.00000012345)`, "-1.2345e-7")
- test(`String(0.0000012345)`, "0.0000012345")
- test(`String(1000000000000000000000)`, "1e+21")
- test(`String(1e21)`, "1e+21")
- test(`String(1E21)`, "1e+21")
- test(`String(-1000000000000000000000)`, "-1e+21")
- test(`String(-1e21)`, "-1e+21")
- test(`String(-1E21)`, "-1e+21")
- test(`String(0.0000001)`, "1e-7")
- test(`String(1e-7)`, "1e-7")
- test(`String(1E-7)`, "1e-7")
- test(`String(-0.0000001)`, "-1e-7")
- test(`String(-1e-7)`, "-1e-7")
- test(`String(-1E-7)`, "-1e-7")
- })
-}
-
-func TestString_indexing(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // Actually a test of stringToArrayIndex, under the hood.
- test(`
- abc = new String("abc");
- index = Math.pow(2, 32);
- [ abc.length, abc[index], abc[index+1], abc[index+2], abc[index+3] ];
- `, "3,,,,")
- })
-}
-
-func TestString_trim(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`' \n abc \t \n'.trim();`, "abc")
- test(`" abc\u000B".trim()`, "abc")
- test(`"abc ".trim()`, "abc")
- test(`
- var a = "\u180Eabc \u000B "
- var b = a.trim()
- a.length + b.length
- `, 10)
- })
-}
-
-func TestString_trimLeft(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`" abc\u000B".trimLeft()`, "abc\u000B")
- test(`"abc ".trimLeft()`, "abc ")
- test(`
- var a = "\u180Eabc \u000B "
- var b = a.trimLeft()
- a.length + b.length
- `, 13)
- })
-}
-
-func TestString_trimRight(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`" abc\u000B".trimRight()`, " abc")
- test(`" abc ".trimRight()`, " abc")
- test(`
- var a = "\u180Eabc \u000B "
- var b = a.trimRight()
- a.length + b.length
- `, 11)
- })
-}
-
-func TestString_localeCompare(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`'a'.localeCompare('c');`, -1)
- test(`'c'.localeCompare('a');`, 1)
- test(`'a'.localeCompare('a');`, 0)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/testing_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/testing_test.go
deleted file mode 100644
index bf820bc0c..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/testing_test.go
+++ /dev/null
@@ -1,135 +0,0 @@
-package otto
-
-import (
- "./terst"
- "errors"
- "strings"
- "testing"
- "time"
-)
-
-func tt(t *testing.T, arguments ...func()) {
- halt := errors.New("A test was taking too long")
- timer := time.AfterFunc(2*time.Second, func() {
- panic(halt)
- })
- defer func() {
- timer.Stop()
- }()
- terst.Terst(t, arguments...)
-}
-
-func is(arguments ...interface{}) bool {
- var got, expect interface{}
-
- switch len(arguments) {
- case 0, 1:
- return terst.Is(arguments...)
- case 2:
- got, expect = arguments[0], arguments[1]
- default:
- got, expect = arguments[0], arguments[2]
- }
-
- switch value := got.(type) {
- case Value:
- if value.value != nil {
- got = value.value
- }
- case *Error:
- if value != nil {
- got = value.Error()
- }
- if expect == nil {
- // FIXME This is weird
- expect = ""
- }
- }
-
- if len(arguments) == 2 {
- arguments[0] = got
- arguments[1] = expect
- } else {
- arguments[0] = got
- arguments[2] = expect
- }
-
- return terst.Is(arguments...)
-}
-
-func test(arguments ...interface{}) (func(string, ...interface{}) Value, *_tester) {
- tester := newTester()
- if len(arguments) > 0 {
- tester.test(arguments[0].(string))
- }
- return tester.test, tester
-}
-
-type _tester struct {
- vm *Otto
-}
-
-func newTester() *_tester {
- return &_tester{
- vm: New(),
- }
-}
-
-func (self *_tester) Get(name string) (Value, error) {
- return self.vm.Get(name)
-}
-
-func (self *_tester) Set(name string, value interface{}) Value {
- err := self.vm.Set(name, value)
- is(err, nil)
- if err != nil {
- terst.Caller().T().FailNow()
- }
- return self.vm.getValue(name)
-}
-
-func (self *_tester) Run(src interface{}) (Value, error) {
- return self.vm.Run(src)
-}
-
-func (self *_tester) test(name string, expect ...interface{}) Value {
- vm := self.vm
- raise := false
- defer func() {
- if caught := recover(); caught != nil {
- if exception, ok := caught.(*_exception); ok {
- caught = exception.eject()
- }
- if raise {
- if len(expect) > 0 {
- is(caught, expect[0])
- }
- } else {
- dbg("Panic, caught:", caught)
- panic(caught)
- }
- }
- }()
- var value Value
- var err error
- if isIdentifier(name) {
- value = vm.getValue(name)
- } else {
- source := name
- index := strings.Index(source, "raise:")
- if index == 0 {
- raise = true
- source = source[6:]
- source = strings.TrimLeft(source, " ")
- }
- value, err = vm.runtime.cmpl_run(source)
- if err != nil {
- panic(err)
- }
- }
- value = value.resolve()
- if len(expect) > 0 {
- is(value, expect[0])
- }
- return value
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/type_function.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/type_function.go
index a5eb7554a..8581afd39 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/type_function.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/type_function.go
@@ -147,10 +147,13 @@ func (self *_object) call(this Value, argumentList []Value, eval bool, frame _fr
case _nodeFunctionObject:
rt := self.runtime
stash := rt.enterFunctionScope(fn.stash, this)
+ rt.scope.frame = _frame{
+ callee: fn.node.name,
+ file: fn.node.file,
+ }
defer func() {
rt.leaveScope()
}()
- rt.scope.frame = frame
callValue := rt.cmpl_call_nodeFunction(self, stash, fn.node, this, argumentList)
if value, valid := callValue.value.(_result); valid {
return value.value
@@ -260,3 +263,9 @@ func (self *FunctionCall) thisClassObject(class string) *_object {
func (self FunctionCall) toObject(value Value) *_object {
return self.runtime.toObject(value)
}
+
+// CallerLocation will return file location information (file:line:pos) where this function is being called.
+func (self FunctionCall) CallerLocation() string {
+ // see error.go for location()
+ return self.runtime.scope.frame.location()
+}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/type_go_map.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/type_go_map.go
index 542a2c29d..3e204a028 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/type_go_map.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/type_go_map.go
@@ -60,7 +60,7 @@ func goMapEnumerate(self *_object, all bool, each func(string) bool) {
object := self.value.(*_goMapObject)
keys := object.value.MapKeys()
for _, key := range keys {
- if !each(key.String()) {
+ if !each(toValue(key).String()) {
return
}
}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore/source.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore/source.go
index 65754ab71..7c5df9714 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore/source.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore/source.go
@@ -3456,6 +3456,7 @@ func underscore() []byte {
0x69, 0x73, 0x29, 0x3b, 0x0a,
}
}
+
// Underscore.js 1.4.4
// http://underscorejs.org
// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_arrays_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_arrays_test.go
deleted file mode 100644
index 9d6297820..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_arrays_test.go
+++ /dev/null
@@ -1,344 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-// first
-func Test_underscore_arrays_0(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("first", function() {
- equal(_.first([1,2,3]), 1, 'can pull out the first element of an array');
- equal(_([1, 2, 3]).first(), 1, 'can perform OO-style "first()"');
- equal(_.first([1,2,3], 0).join(', '), "", 'can pass an index to first');
- equal(_.first([1,2,3], 2).join(', '), '1, 2', 'can pass an index to first');
- equal(_.first([1,2,3], 5).join(', '), '1, 2, 3', 'can pass an index to first');
- var result = (function(){ return _.first(arguments); })(4, 3, 2, 1);
- equal(result, 4, 'works on an arguments object.');
- result = _.map([[1,2,3],[1,2,3]], _.first);
- equal(result.join(','), '1,1', 'works well with _.map');
- result = (function() { return _.take([1,2,3], 2); })();
- equal(result.join(','), '1,2', 'aliased as take');
-
- equal(_.first(null), undefined, 'handles nulls');
- });
- `)
- })
-}
-
-// rest
-func Test_underscore_arrays_1(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("rest", function() {
- var numbers = [1, 2, 3, 4];
- equal(_.rest(numbers).join(", "), "2, 3, 4", 'working rest()');
- equal(_.rest(numbers, 0).join(", "), "1, 2, 3, 4", 'working rest(0)');
- equal(_.rest(numbers, 2).join(', '), '3, 4', 'rest can take an index');
- var result = (function(){ return _(arguments).tail(); })(1, 2, 3, 4);
- equal(result.join(', '), '2, 3, 4', 'aliased as tail and works on arguments object');
- result = _.map([[1,2,3],[1,2,3]], _.rest);
- equal(_.flatten(result).join(','), '2,3,2,3', 'works well with _.map');
- result = (function(){ return _(arguments).drop(); })(1, 2, 3, 4);
- equal(result.join(', '), '2, 3, 4', 'aliased as drop and works on arguments object');
- });
- `)
- })
-}
-
-// initial
-func Test_underscore_arrays_2(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("initial", function() {
- equal(_.initial([1,2,3,4,5]).join(", "), "1, 2, 3, 4", 'working initial()');
- equal(_.initial([1,2,3,4],2).join(", "), "1, 2", 'initial can take an index');
- var result = (function(){ return _(arguments).initial(); })(1, 2, 3, 4);
- equal(result.join(", "), "1, 2, 3", 'initial works on arguments object');
- result = _.map([[1,2,3],[1,2,3]], _.initial);
- equal(_.flatten(result).join(','), '1,2,1,2', 'initial works with _.map');
- });
- `)
- })
-}
-
-// last
-func Test_underscore_arrays_3(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("last", function() {
- equal(_.last([1,2,3]), 3, 'can pull out the last element of an array');
- equal(_.last([1,2,3], 0).join(', '), "", 'can pass an index to last');
- equal(_.last([1,2,3], 2).join(', '), '2, 3', 'can pass an index to last');
- equal(_.last([1,2,3], 5).join(', '), '1, 2, 3', 'can pass an index to last');
- var result = (function(){ return _(arguments).last(); })(1, 2, 3, 4);
- equal(result, 4, 'works on an arguments object');
- result = _.map([[1,2,3],[1,2,3]], _.last);
- equal(result.join(','), '3,3', 'works well with _.map');
-
- equal(_.last(null), undefined, 'handles nulls');
- });
- `)
- })
-}
-
-// compact
-func Test_underscore_arrays_4(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("compact", function() {
- equal(_.compact([0, 1, false, 2, false, 3]).length, 3, 'can trim out all falsy values');
- var result = (function(){ return _.compact(arguments).length; })(0, 1, false, 2, false, 3);
- equal(result, 3, 'works on an arguments object');
- });
- `)
- })
-}
-
-// flatten
-func Test_underscore_arrays_5(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("flatten", function() {
- var list = [1, [2], [3, [[[4]]]]];
- deepEqual(_.flatten(list), [1,2,3,4], 'can flatten nested arrays');
- deepEqual(_.flatten(list, true), [1,2,3,[[[4]]]], 'can shallowly flatten nested arrays');
- var result = (function(){ return _.flatten(arguments); })(1, [2], [3, [[[4]]]]);
- deepEqual(result, [1,2,3,4], 'works on an arguments object');
- });
- `)
- })
-}
-
-// without
-func Test_underscore_arrays_6(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("without", function() {
- var list = [1, 2, 1, 0, 3, 1, 4];
- equal(_.without(list, 0, 1).join(', '), '2, 3, 4', 'can remove all instances of an object');
- var result = (function(){ return _.without(arguments, 0, 1); })(1, 2, 1, 0, 3, 1, 4);
- equal(result.join(', '), '2, 3, 4', 'works on an arguments object');
-
- var list = [{one : 1}, {two : 2}];
- ok(_.without(list, {one : 1}).length == 2, 'uses real object identity for comparisons.');
- ok(_.without(list, list[0]).length == 1, 'ditto.');
- });
- `)
- })
-}
-
-// uniq
-func Test_underscore_arrays_7(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("uniq", function() {
- var list = [1, 2, 1, 3, 1, 4];
- equal(_.uniq(list).join(', '), '1, 2, 3, 4', 'can find the unique values of an unsorted array');
-
- var list = [1, 1, 1, 2, 2, 3];
- equal(_.uniq(list, true).join(', '), '1, 2, 3', 'can find the unique values of a sorted array faster');
-
- var list = [{name:'moe'}, {name:'curly'}, {name:'larry'}, {name:'curly'}];
- var iterator = function(value) { return value.name; };
- equal(_.map(_.uniq(list, false, iterator), iterator).join(', '), 'moe, curly, larry', 'can find the unique values of an array using a custom iterator');
-
- equal(_.map(_.uniq(list, iterator), iterator).join(', '), 'moe, curly, larry', 'can find the unique values of an array using a custom iterator without specifying whether array is sorted');
-
- var iterator = function(value) { return value +1; };
- var list = [1, 2, 2, 3, 4, 4];
- equal(_.uniq(list, true, iterator).join(', '), '1, 2, 3, 4', 'iterator works with sorted array');
-
- var result = (function(){ return _.uniq(arguments); })(1, 2, 1, 3, 1, 4);
- equal(result.join(', '), '1, 2, 3, 4', 'works on an arguments object');
- });
- `)
- })
-}
-
-// intersection
-func Test_underscore_arrays_8(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("intersection", function() {
- var stooges = ['moe', 'curly', 'larry'], leaders = ['moe', 'groucho'];
- equal(_.intersection(stooges, leaders).join(''), 'moe', 'can take the set intersection of two arrays');
- equal(_(stooges).intersection(leaders).join(''), 'moe', 'can perform an OO-style intersection');
- var result = (function(){ return _.intersection(arguments, leaders); })('moe', 'curly', 'larry');
- equal(result.join(''), 'moe', 'works on an arguments object');
- });
- `)
- })
-}
-
-// union
-func Test_underscore_arrays_9(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("union", function() {
- var result = _.union([1, 2, 3], [2, 30, 1], [1, 40]);
- equal(result.join(' '), '1 2 3 30 40', 'takes the union of a list of arrays');
-
- var result = _.union([1, 2, 3], [2, 30, 1], [1, 40, [1]]);
- equal(result.join(' '), '1 2 3 30 40 1', 'takes the union of a list of nested arrays');
- });
- `)
- })
-}
-
-// difference
-func Test_underscore_arrays_10(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("difference", function() {
- var result = _.difference([1, 2, 3], [2, 30, 40]);
- equal(result.join(' '), '1 3', 'takes the difference of two arrays');
-
- var result = _.difference([1, 2, 3, 4], [2, 30, 40], [1, 11, 111]);
- equal(result.join(' '), '3 4', 'takes the difference of three arrays');
- });
- `)
- })
-}
-
-// zip
-func Test_underscore_arrays_11(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('zip', function() {
- var names = ['moe', 'larry', 'curly'], ages = [30, 40, 50], leaders = [true];
- var stooges = _.zip(names, ages, leaders);
- equal(String(stooges), 'moe,30,true,larry,40,,curly,50,', 'zipped together arrays of different lengths');
- });
- `)
- })
-}
-
-// object
-func Test_underscore_arrays_12(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('object', function() {
- var result = _.object(['moe', 'larry', 'curly'], [30, 40, 50]);
- var shouldBe = {moe: 30, larry: 40, curly: 50};
- ok(_.isEqual(result, shouldBe), 'two arrays zipped together into an object');
-
- result = _.object([['one', 1], ['two', 2], ['three', 3]]);
- shouldBe = {one: 1, two: 2, three: 3};
- ok(_.isEqual(result, shouldBe), 'an array of pairs zipped together into an object');
-
- var stooges = {moe: 30, larry: 40, curly: 50};
- ok(_.isEqual(_.object(_.pairs(stooges)), stooges), 'an object converted to pairs and back to an object');
-
- ok(_.isEqual(_.object(null), {}), 'handles nulls');
- });
- `)
- })
-}
-
-// indexOf
-func Test_underscore_arrays_13(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("indexOf", function() {
- var numbers = [1, 2, 3];
- numbers.indexOf = null;
- equal(_.indexOf(numbers, 2), 1, 'can compute indexOf, even without the native function');
- var result = (function(){ return _.indexOf(arguments, 2); })(1, 2, 3);
- equal(result, 1, 'works on an arguments object');
- equal(_.indexOf(null, 2), -1, 'handles nulls properly');
-
- var numbers = [10, 20, 30, 40, 50], num = 35;
- var index = _.indexOf(numbers, num, true);
- equal(index, -1, '35 is not in the list');
-
- numbers = [10, 20, 30, 40, 50]; num = 40;
- index = _.indexOf(numbers, num, true);
- equal(index, 3, '40 is in the list');
-
- numbers = [1, 40, 40, 40, 40, 40, 40, 40, 50, 60, 70]; num = 40;
- index = _.indexOf(numbers, num, true);
- equal(index, 1, '40 is in the list');
-
- numbers = [1, 2, 3, 1, 2, 3, 1, 2, 3];
- index = _.indexOf(numbers, 2, 5);
- equal(index, 7, 'supports the fromIndex argument');
- });
- `)
- })
-}
-
-// lastIndexOf
-func Test_underscore_arrays_14(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("lastIndexOf", function() {
- var numbers = [1, 0, 1];
- equal(_.lastIndexOf(numbers, 1), 2);
-
- numbers = [1, 0, 1, 0, 0, 1, 0, 0, 0];
- numbers.lastIndexOf = null;
- equal(_.lastIndexOf(numbers, 1), 5, 'can compute lastIndexOf, even without the native function');
- equal(_.lastIndexOf(numbers, 0), 8, 'lastIndexOf the other element');
- var result = (function(){ return _.lastIndexOf(arguments, 1); })(1, 0, 1, 0, 0, 1, 0, 0, 0);
- equal(result, 5, 'works on an arguments object');
- equal(_.indexOf(null, 2), -1, 'handles nulls properly');
-
- numbers = [1, 2, 3, 1, 2, 3, 1, 2, 3];
- var index = _.lastIndexOf(numbers, 2, 2);
- equal(index, 1, 'supports the fromIndex argument');
- });
- `)
- })
-}
-
-// range
-func Test_underscore_arrays_15(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("range", function() {
- equal(_.range(0).join(''), '', 'range with 0 as a first argument generates an empty array');
- equal(_.range(4).join(' '), '0 1 2 3', 'range with a single positive argument generates an array of elements 0,1,2,...,n-1');
- equal(_.range(5, 8).join(' '), '5 6 7', 'range with two arguments a &amp; b, a&lt;b generates an array of elements a,a+1,a+2,...,b-2,b-1');
- equal(_.range(8, 5).join(''), '', 'range with two arguments a &amp; b, b&lt;a generates an empty array');
- equal(_.range(3, 10, 3).join(' '), '3 6 9', 'range with three arguments a &amp; b &amp; c, c &lt; b-a, a &lt; b generates an array of elements a,a+c,a+2c,...,b - (multiplier of a) &lt; c');
- equal(_.range(3, 10, 15).join(''), '3', 'range with three arguments a &amp; b &amp; c, c &gt; b-a, a &lt; b generates an array with a single element, equal to a');
- equal(_.range(12, 7, -2).join(' '), '12 10 8', 'range with three arguments a &amp; b &amp; c, a &gt; b, c &lt; 0 generates an array of elements a,a-c,a-2c and ends with the number not less than b');
- equal(_.range(0, -10, -1).join(' '), '0 -1 -2 -3 -4 -5 -6 -7 -8 -9', 'final example in the Python docs');
- });
- `)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_chaining_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_chaining_test.go
deleted file mode 100644
index accf04fdc..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_chaining_test.go
+++ /dev/null
@@ -1,95 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-// map/flatten/reduce
-func Test_underscore_chaining_0(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("map/flatten/reduce", function() {
- var lyrics = [
- "I'm a lumberjack and I'm okay",
- "I sleep all night and I work all day",
- "He's a lumberjack and he's okay",
- "He sleeps all night and he works all day"
- ];
- var counts = _(lyrics).chain()
- .map(function(line) { return line.split(''); })
- .flatten()
- .reduce(function(hash, l) {
- hash[l] = hash[l] || 0;
- hash[l]++;
- return hash;
- }, {}).value();
- ok(counts['a'] == 16 && counts['e'] == 10, 'counted all the letters in the song');
- });
- `)
- })
-}
-
-// select/reject/sortBy
-func Test_underscore_chaining_1(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("select/reject/sortBy", function() {
- var numbers = [1,2,3,4,5,6,7,8,9,10];
- numbers = _(numbers).chain().select(function(n) {
- return n % 2 == 0;
- }).reject(function(n) {
- return n % 4 == 0;
- }).sortBy(function(n) {
- return -n;
- }).value();
- equal(numbers.join(', '), "10, 6, 2", "filtered and reversed the numbers");
- });
- `)
- })
-}
-
-// select/reject/sortBy in functional style
-func Test_underscore_chaining_2(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("select/reject/sortBy in functional style", function() {
- var numbers = [1,2,3,4,5,6,7,8,9,10];
- numbers = _.chain(numbers).select(function(n) {
- return n % 2 == 0;
- }).reject(function(n) {
- return n % 4 == 0;
- }).sortBy(function(n) {
- return -n;
- }).value();
- equal(numbers.join(', '), "10, 6, 2", "filtered and reversed the numbers");
- });
- `)
- })
-}
-
-// reverse/concat/unshift/pop/map
-func Test_underscore_chaining_3(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("reverse/concat/unshift/pop/map", function() {
- var numbers = [1,2,3,4,5];
- numbers = _(numbers).chain()
- .reverse()
- .concat([5, 5, 5])
- .unshift(17)
- .pop()
- .map(function(n){ return n * 2; })
- .value();
- equal(numbers.join(', '), "34, 10, 8, 6, 4, 2, 10, 10", 'can chain together array functions.');
- });
- `)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_collections_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_collections_test.go
deleted file mode 100644
index 9afc2a2b2..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_collections_test.go
+++ /dev/null
@@ -1,698 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-// each
-func Test_underscore_collections_0(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("each", function() {
- _.each([1, 2, 3], function(num, i) {
- equal(num, i + 1, 'each iterators provide value and iteration count');
- });
-
- var answers = [];
- _.each([1, 2, 3], function(num){ answers.push(num * this.multiplier);}, {multiplier : 5});
- equal(answers.join(', '), '5, 10, 15', 'context object property accessed');
-
- answers = [];
- _.forEach([1, 2, 3], function(num){ answers.push(num); });
- equal(answers.join(', '), '1, 2, 3', 'aliased as "forEach"');
-
- answers = [];
- var obj = {one : 1, two : 2, three : 3};
- obj.constructor.prototype.four = 4;
- _.each(obj, function(value, key){ answers.push(key); });
- equal(answers.join(", "), 'one, two, three', 'iterating over objects works, and ignores the object prototype.');
- delete obj.constructor.prototype.four;
-
- var answer = null;
- _.each([1, 2, 3], function(num, index, arr){ if (_.include(arr, num)) answer = true; });
- ok(answer, 'can reference the original collection from inside the iterator');
-
- answers = 0;
- _.each(null, function(){ ++answers; });
- equal(answers, 0, 'handles a null properly');
- });
- `)
- })
-}
-
-// map
-func Test_underscore_collections_1(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('map', function() {
- var doubled = _.map([1, 2, 3], function(num){ return num * 2; });
- equal(doubled.join(', '), '2, 4, 6', 'doubled numbers');
-
- doubled = _.collect([1, 2, 3], function(num){ return num * 2; });
- equal(doubled.join(', '), '2, 4, 6', 'aliased as "collect"');
-
- var tripled = _.map([1, 2, 3], function(num){ return num * this.multiplier; }, {multiplier : 3});
- equal(tripled.join(', '), '3, 6, 9', 'tripled numbers with context');
-
- var doubled = _([1, 2, 3]).map(function(num){ return num * 2; });
- equal(doubled.join(', '), '2, 4, 6', 'OO-style doubled numbers');
-
- // TEST: ReferenceError: document is not defined
- return;
-
- if (document.querySelectorAll) {
- var ids = _.map(document.querySelectorAll('#map-test *'), function(n){ return n.id; });
- deepEqual(ids, ['id1', 'id2'], 'Can use collection methods on NodeLists.');
- }
-
- var ids = _.map($('#map-test').children(), function(n){ return n.id; });
- deepEqual(ids, ['id1', 'id2'], 'Can use collection methods on jQuery Array-likes.');
-
- var ids = _.map(document.images, function(n){ return n.id; });
- ok(ids[0] == 'chart_image', 'can use collection methods on HTMLCollections');
-
- var ifnull = _.map(null, function(){});
- ok(_.isArray(ifnull) && ifnull.length === 0, 'handles a null properly');
- });
- `)
- })
-}
-
-// reduce
-func Test_underscore_collections_2(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('reduce', function() {
- var sum = _.reduce([1, 2, 3], function(sum, num){ return sum + num; }, 0);
- equal(sum, 6, 'can sum up an array');
-
- var context = {multiplier : 3};
- sum = _.reduce([1, 2, 3], function(sum, num){ return sum + num * this.multiplier; }, 0, context);
- equal(sum, 18, 'can reduce with a context object');
-
- sum = _.inject([1, 2, 3], function(sum, num){ return sum + num; }, 0);
- equal(sum, 6, 'aliased as "inject"');
-
- sum = _([1, 2, 3]).reduce(function(sum, num){ return sum + num; }, 0);
- equal(sum, 6, 'OO-style reduce');
-
- var sum = _.reduce([1, 2, 3], function(sum, num){ return sum + num; });
- equal(sum, 6, 'default initial value');
-
- var ifnull;
- try {
- _.reduce(null, function(){});
- } catch (ex) {
- ifnull = ex;
- }
- ok(ifnull instanceof TypeError, 'handles a null (without inital value) properly');
-
- ok(_.reduce(null, function(){}, 138) === 138, 'handles a null (with initial value) properly');
- equal(_.reduce([], function(){}, undefined), undefined, 'undefined can be passed as a special case');
- raises(function() { _.reduce([], function(){}); }, TypeError, 'throws an error for empty arrays with no initial value');
- });
- `)
- })
-}
-
-// reduceRight
-func Test_underscore_collections_3(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('reduceRight', function() {
- var list = _.reduceRight(["foo", "bar", "baz"], function(memo, str){ return memo + str; }, '');
- equal(list, 'bazbarfoo', 'can perform right folds');
-
- var list = _.foldr(["foo", "bar", "baz"], function(memo, str){ return memo + str; }, '');
- equal(list, 'bazbarfoo', 'aliased as "foldr"');
-
- var list = _.foldr(["foo", "bar", "baz"], function(memo, str){ return memo + str; });
- equal(list, 'bazbarfoo', 'default initial value');
-
- var ifnull;
- try {
- _.reduceRight(null, function(){});
- } catch (ex) {
- ifnull = ex;
- }
- ok(ifnull instanceof TypeError, 'handles a null (without inital value) properly');
-
- var sum = _.reduceRight({a: 1, b: 2, c: 3}, function(sum, num){ return sum + num; });
- equal(sum, 6, 'default initial value on object');
-
- ok(_.reduceRight(null, function(){}, 138) === 138, 'handles a null (with initial value) properly');
-
- equal(_.reduceRight([], function(){}, undefined), undefined, 'undefined can be passed as a special case');
- raises(function() { _.reduceRight([], function(){}); }, TypeError, 'throws an error for empty arrays with no initial value');
-
- // Assert that the correct arguments are being passed.
-
- var args,
- memo = {},
- object = {a: 1, b: 2},
- lastKey = _.keys(object).pop();
-
- var expected = lastKey == 'a'
- ? [memo, 1, 'a', object]
- : [memo, 2, 'b', object];
-
- _.reduceRight(object, function() {
- args || (args = _.toArray(arguments));
- }, memo);
-
- deepEqual(args, expected);
-
- // And again, with numeric keys.
-
- object = {'2': 'a', '1': 'b'};
- lastKey = _.keys(object).pop();
- args = null;
-
- expected = lastKey == '2'
- ? [memo, 'a', '2', object]
- : [memo, 'b', '1', object];
-
- _.reduceRight(object, function() {
- args || (args = _.toArray(arguments));
- }, memo);
-
- deepEqual(args, expected);
- });
- `)
- })
-}
-
-// find
-func Test_underscore_collections_4(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('find', function() {
- var array = [1, 2, 3, 4];
- strictEqual(_.find(array, function(n) { return n > 2; }), 3, 'should return first found <value>');
- strictEqual(_.find(array, function() { return false; }), void 0, 'should return <undefined> if <value> is not found');
- });
- `)
- })
-}
-
-// detect
-func Test_underscore_collections_5(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('detect', function() {
- var result = _.detect([1, 2, 3], function(num){ return num * 2 == 4; });
- equal(result, 2, 'found the first "2" and broke the loop');
- });
- `)
- })
-}
-
-// select
-func Test_underscore_collections_6(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('select', function() {
- var evens = _.select([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
- equal(evens.join(', '), '2, 4, 6', 'selected each even number');
-
- evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
- equal(evens.join(', '), '2, 4, 6', 'aliased as "filter"');
- });
- `)
- })
-}
-
-// reject
-func Test_underscore_collections_7(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('reject', function() {
- var odds = _.reject([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
- equal(odds.join(', '), '1, 3, 5', 'rejected each even number');
-
- var context = "obj";
-
- var evens = _.reject([1, 2, 3, 4, 5, 6], function(num){
- equal(context, "obj");
- return num % 2 != 0;
- }, context);
- equal(evens.join(', '), '2, 4, 6', 'rejected each odd number');
- });
- `)
- })
-}
-
-// all
-func Test_underscore_collections_8(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('all', function() {
- ok(_.all([], _.identity), 'the empty set');
- ok(_.all([true, true, true], _.identity), 'all true values');
- ok(!_.all([true, false, true], _.identity), 'one false value');
- ok(_.all([0, 10, 28], function(num){ return num % 2 == 0; }), 'even numbers');
- ok(!_.all([0, 11, 28], function(num){ return num % 2 == 0; }), 'an odd number');
- ok(_.all([1], _.identity) === true, 'cast to boolean - true');
- ok(_.all([0], _.identity) === false, 'cast to boolean - false');
- ok(_.every([true, true, true], _.identity), 'aliased as "every"');
- ok(!_.all([undefined, undefined, undefined], _.identity), 'works with arrays of undefined');
- });
- `)
- })
-}
-
-// any
-func Test_underscore_collections_9(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('any', function() {
- var nativeSome = Array.prototype.some;
- Array.prototype.some = null;
- ok(!_.any([]), 'the empty set');
- ok(!_.any([false, false, false]), 'all false values');
- ok(_.any([false, false, true]), 'one true value');
- ok(_.any([null, 0, 'yes', false]), 'a string');
- ok(!_.any([null, 0, '', false]), 'falsy values');
- ok(!_.any([1, 11, 29], function(num){ return num % 2 == 0; }), 'all odd numbers');
- ok(_.any([1, 10, 29], function(num){ return num % 2 == 0; }), 'an even number');
- ok(_.any([1], _.identity) === true, 'cast to boolean - true');
- ok(_.any([0], _.identity) === false, 'cast to boolean - false');
- ok(_.some([false, false, true]), 'aliased as "some"');
- Array.prototype.some = nativeSome;
- });
- `)
- })
-}
-
-// include
-func Test_underscore_collections_10(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('include', function() {
- ok(_.include([1,2,3], 2), 'two is in the array');
- ok(!_.include([1,3,9], 2), 'two is not in the array');
- ok(_.contains({moe:1, larry:3, curly:9}, 3) === true, '_.include on objects checks their values');
- ok(_([1,2,3]).include(2), 'OO-style include');
- });
- `)
- })
-}
-
-// invoke
-func Test_underscore_collections_11(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('invoke', function() {
- var list = [[5, 1, 7], [3, 2, 1]];
- var result = _.invoke(list, 'sort');
- equal(result[0].join(', '), '1, 5, 7', 'first array sorted');
- equal(result[1].join(', '), '1, 2, 3', 'second array sorted');
- });
- `)
- })
-}
-
-// invoke w/ function reference
-func Test_underscore_collections_12(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('invoke w/ function reference', function() {
- var list = [[5, 1, 7], [3, 2, 1]];
- var result = _.invoke(list, Array.prototype.sort);
- equal(result[0].join(', '), '1, 5, 7', 'first array sorted');
- equal(result[1].join(', '), '1, 2, 3', 'second array sorted');
- });
- `)
- })
-}
-
-// invoke when strings have a call method
-func Test_underscore_collections_13(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('invoke when strings have a call method', function() {
- String.prototype.call = function() {
- return 42;
- };
- var list = [[5, 1, 7], [3, 2, 1]];
- var s = "foo";
- equal(s.call(), 42, "call function exists");
- var result = _.invoke(list, 'sort');
- equal(result[0].join(', '), '1, 5, 7', 'first array sorted');
- equal(result[1].join(', '), '1, 2, 3', 'second array sorted');
- delete String.prototype.call;
- equal(s.call, undefined, "call function removed");
- });
- `)
- })
-}
-
-// pluck
-func Test_underscore_collections_14(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('pluck', function() {
- var people = [{name : 'moe', age : 30}, {name : 'curly', age : 50}];
- equal(_.pluck(people, 'name').join(', '), 'moe, curly', 'pulls names out of objects');
- });
- `)
- })
-}
-
-// where
-func Test_underscore_collections_15(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('where', function() {
- var list = [{a: 1, b: 2}, {a: 2, b: 2}, {a: 1, b: 3}, {a: 1, b: 4}];
- var result = _.where(list, {a: 1});
- equal(result.length, 3);
- equal(result[result.length - 1].b, 4);
- result = _.where(list, {b: 2});
- equal(result.length, 2);
- equal(result[0].a, 1);
- });
- `)
- })
-}
-
-// findWhere
-func Test_underscore_collections_16(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('findWhere', function() {
- var list = [{a: 1, b: 2}, {a: 2, b: 2}, {a: 1, b: 3}, {a: 1, b: 4}, {a: 2, b: 4}];
- var result = _.findWhere(list, {a: 1});
- deepEqual(result, {a: 1, b: 2});
- result = _.findWhere(list, {b: 4});
- deepEqual(result, {a: 1, b: 4});
- });
- `)
- })
-}
-
-// max
-func Test_underscore_collections_17(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('max', function() {
- equal(3, _.max([1, 2, 3]), 'can perform a regular Math.max');
-
- var neg = _.max([1, 2, 3], function(num){ return -num; });
- equal(neg, 1, 'can perform a computation-based max');
-
- equal(-Infinity, _.max({}), 'Maximum value of an empty object');
- equal(-Infinity, _.max([]), 'Maximum value of an empty array');
- equal(_.max({'a': 'a'}), -Infinity, 'Maximum value of a non-numeric collection');
-
- // TEST: Takes too long
- return;
-
- equal(299999, _.max(_.range(1,300000)), "Maximum value of a too-big array");
- });
- `)
- })
-}
-
-// min
-func Test_underscore_collections_18(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('min', function() {
- equal(1, _.min([1, 2, 3]), 'can perform a regular Math.min');
-
- var neg = _.min([1, 2, 3], function(num){ return -num; });
- equal(neg, 3, 'can perform a computation-based min');
-
- equal(Infinity, _.min({}), 'Minimum value of an empty object');
- equal(Infinity, _.min([]), 'Minimum value of an empty array');
- equal(_.min({'a': 'a'}), Infinity, 'Minimum value of a non-numeric collection');
-
- var now = new Date(9999999999);
- var then = new Date(0);
- equal(_.min([now, then]), then);
-
- // TEST: Takes too long
- return;
-
- equal(1, _.min(_.range(1,300000)), "Minimum value of a too-big array");
- });
- `)
- })
-}
-
-// sortBy
-func Test_underscore_collections_19(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('sortBy', function() {
- var people = [{name : 'curly', age : 50}, {name : 'moe', age : 30}];
- people = _.sortBy(people, function(person){ return person.age; });
- equal(_.pluck(people, 'name').join(', '), 'moe, curly', 'stooges sorted by age');
-
- var list = [undefined, 4, 1, undefined, 3, 2];
- equal(_.sortBy(list, _.identity).join(','), '1,2,3,4,,', 'sortBy with undefined values');
-
- var list = ["one", "two", "three", "four", "five"];
- var sorted = _.sortBy(list, 'length');
- equal(sorted.join(' '), 'one two four five three', 'sorted by length');
-
- function Pair(x, y) {
- this.x = x;
- this.y = y;
- }
-
- var collection = [
- new Pair(1, 1), new Pair(1, 2),
- new Pair(1, 3), new Pair(1, 4),
- new Pair(1, 5), new Pair(1, 6),
- new Pair(2, 1), new Pair(2, 2),
- new Pair(2, 3), new Pair(2, 4),
- new Pair(2, 5), new Pair(2, 6),
- new Pair(undefined, 1), new Pair(undefined, 2),
- new Pair(undefined, 3), new Pair(undefined, 4),
- new Pair(undefined, 5), new Pair(undefined, 6)
- ];
-
- var actual = _.sortBy(collection, function(pair) {
- return pair.x;
- });
-
- deepEqual(actual, collection, 'sortBy should be stable');
- });
- `)
- })
-}
-
-// groupBy
-func Test_underscore_collections_20(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('groupBy', function() {
- var parity = _.groupBy([1, 2, 3, 4, 5, 6], function(num){ return num % 2; });
- ok('0' in parity && '1' in parity, 'created a group for each value');
- equal(parity[0].join(', '), '2, 4, 6', 'put each even number in the right group');
-
- var list = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"];
- var grouped = _.groupBy(list, 'length');
- equal(grouped['3'].join(' '), 'one two six ten');
- equal(grouped['4'].join(' '), 'four five nine');
- equal(grouped['5'].join(' '), 'three seven eight');
-
- var context = {};
- _.groupBy([{}], function(){ ok(this === context); }, context);
-
- grouped = _.groupBy([4.2, 6.1, 6.4], function(num) {
- return Math.floor(num) > 4 ? 'hasOwnProperty' : 'constructor';
- });
- equal(grouped.constructor.length, 1);
- equal(grouped.hasOwnProperty.length, 2);
-
- var array = [{}];
- _.groupBy(array, function(value, index, obj){ ok(obj === array); });
-
- var array = [1, 2, 1, 2, 3];
- var grouped = _.groupBy(array);
- equal(grouped['1'].length, 2);
- equal(grouped['3'].length, 1);
- });
- `)
- })
-}
-
-// countBy
-func Test_underscore_collections_21(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('countBy', function() {
- var parity = _.countBy([1, 2, 3, 4, 5], function(num){ return num % 2 == 0; });
- equal(parity['true'], 2);
- equal(parity['false'], 3);
-
- var list = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"];
- var grouped = _.countBy(list, 'length');
- equal(grouped['3'], 4);
- equal(grouped['4'], 3);
- equal(grouped['5'], 3);
-
- var context = {};
- _.countBy([{}], function(){ ok(this === context); }, context);
-
- grouped = _.countBy([4.2, 6.1, 6.4], function(num) {
- return Math.floor(num) > 4 ? 'hasOwnProperty' : 'constructor';
- });
- equal(grouped.constructor, 1);
- equal(grouped.hasOwnProperty, 2);
-
- var array = [{}];
- _.countBy(array, function(value, index, obj){ ok(obj === array); });
-
- var array = [1, 2, 1, 2, 3];
- var grouped = _.countBy(array);
- equal(grouped['1'], 2);
- equal(grouped['3'], 1);
- });
- `)
- })
-}
-
-// sortedIndex
-func Test_underscore_collections_22(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('sortedIndex', function() {
- var numbers = [10, 20, 30, 40, 50], num = 35;
- var indexForNum = _.sortedIndex(numbers, num);
- equal(indexForNum, 3, '35 should be inserted at index 3');
-
- var indexFor30 = _.sortedIndex(numbers, 30);
- equal(indexFor30, 2, '30 should be inserted at index 2');
-
- var objects = [{x: 10}, {x: 20}, {x: 30}, {x: 40}];
- var iterator = function(obj){ return obj.x; };
- strictEqual(_.sortedIndex(objects, {x: 25}, iterator), 2);
- strictEqual(_.sortedIndex(objects, {x: 35}, 'x'), 3);
-
- var context = {1: 2, 2: 3, 3: 4};
- iterator = function(obj){ return this[obj]; };
- strictEqual(_.sortedIndex([1, 3], 2, iterator, context), 1);
- });
- `)
- })
-}
-
-// shuffle
-func Test_underscore_collections_23(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('shuffle', function() {
- var numbers = _.range(10);
- var shuffled = _.shuffle(numbers).sort();
- notStrictEqual(numbers, shuffled, 'original object is unmodified');
- equal(shuffled.join(','), numbers.join(','), 'contains the same members before and after shuffle');
- });
- `)
- })
-}
-
-// toArray
-func Test_underscore_collections_24(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('toArray', function() {
- ok(!_.isArray(arguments), 'arguments object is not an array');
- ok(_.isArray(_.toArray(arguments)), 'arguments object converted into array');
- var a = [1,2,3];
- ok(_.toArray(a) !== a, 'array is cloned');
- equal(_.toArray(a).join(', '), '1, 2, 3', 'cloned array contains same elements');
-
- var numbers = _.toArray({one : 1, two : 2, three : 3});
- equal(numbers.join(', '), '1, 2, 3', 'object flattened into array');
-
- // TEST: ReferenceError: document is not defined
- return;
-
- // test in IE < 9
- try {
- var actual = _.toArray(document.childNodes);
- } catch(ex) { }
-
- ok(_.isArray(actual), 'should not throw converting a node list');
- });
- `)
- })
-}
-
-// size
-func Test_underscore_collections_25(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('size', function() {
- equal(_.size({one : 1, two : 2, three : 3}), 3, 'can compute the size of an object');
- equal(_.size([1, 2, 3]), 3, 'can compute the size of an array');
-
- var func = function() {
- return _.size(arguments);
- };
-
- equal(func(1, 2, 3, 4), 4, 'can test the size of the arguments object');
-
- equal(_.size('hello'), 5, 'can compute the size of a string');
-
- equal(_.size(null), 0, 'handles nulls');
- });
- `)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_functions_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_functions_test.go
deleted file mode 100644
index be59e16b3..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_functions_test.go
+++ /dev/null
@@ -1,208 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-// bind
-func Test_underscore_functions_0(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("bind", function() {
- var context = {name : 'moe'};
- var func = function(arg) { return "name: " + (this.name || arg); };
- var bound = _.bind(func, context);
- equal(bound(), 'name: moe', 'can bind a function to a context');
-
- bound = _(func).bind(context);
- equal(bound(), 'name: moe', 'can do OO-style binding');
-
- bound = _.bind(func, null, 'curly');
- equal(bound(), 'name: curly', 'can bind without specifying a context');
-
- func = function(salutation, name) { return salutation + ': ' + name; };
- func = _.bind(func, this, 'hello');
- equal(func('moe'), 'hello: moe', 'the function was partially applied in advance');
-
- func = _.bind(func, this, 'curly');
- equal(func(), 'hello: curly', 'the function was completely applied in advance');
-
- func = function(salutation, firstname, lastname) { return salutation + ': ' + firstname + ' ' + lastname; };
- func = _.bind(func, this, 'hello', 'moe', 'curly');
- equal(func(), 'hello: moe curly', 'the function was partially applied in advance and can accept multiple arguments');
-
- func = function(context, message) { equal(this, context, message); };
- _.bind(func, 0, 0, 'can bind a function to <0>')();
- _.bind(func, '', '', 'can bind a function to an empty string')();
- _.bind(func, false, false, 'can bind a function to <false>')();
-
- // These tests are only meaningful when using a browser without a native bind function
- // To test this with a modern browser, set underscore's nativeBind to undefined
- var F = function () { return this; };
- var Boundf = _.bind(F, {hello: "moe curly"});
- equal(Boundf().hello, "moe curly", "When called without the new operator, it's OK to be bound to the context");
- });
- `)
- })
-}
-
-// partial
-func Test_underscore_functions_1(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("partial", function() {
- var obj = {name: 'moe'};
- var func = function() { return this.name + ' ' + _.toArray(arguments).join(' '); };
-
- obj.func = _.partial(func, 'a', 'b');
- equal(obj.func('c', 'd'), 'moe a b c d', 'can partially apply');
- });
- `)
- })
-}
-
-// bindAll
-func Test_underscore_functions_2(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("bindAll", function() {
- var curly = {name : 'curly'}, moe = {
- name : 'moe',
- getName : function() { return 'name: ' + this.name; },
- sayHi : function() { return 'hi: ' + this.name; }
- };
- curly.getName = moe.getName;
- _.bindAll(moe, 'getName', 'sayHi');
- curly.sayHi = moe.sayHi;
- equal(curly.getName(), 'name: curly', 'unbound function is bound to current object');
- equal(curly.sayHi(), 'hi: moe', 'bound function is still bound to original object');
-
- curly = {name : 'curly'};
- moe = {
- name : 'moe',
- getName : function() { return 'name: ' + this.name; },
- sayHi : function() { return 'hi: ' + this.name; }
- };
- _.bindAll(moe);
- curly.sayHi = moe.sayHi;
- equal(curly.sayHi(), 'hi: moe', 'calling bindAll with no arguments binds all functions to the object');
- });
- `)
- })
-}
-
-// memoize
-func Test_underscore_functions_3(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("memoize", function() {
- var fib = function(n) {
- return n < 2 ? n : fib(n - 1) + fib(n - 2);
- };
- var fastFib = _.memoize(fib);
- equal(fib(10), 55, 'a memoized version of fibonacci produces identical results');
- equal(fastFib(10), 55, 'a memoized version of fibonacci produces identical results');
-
- var o = function(str) {
- return str;
- };
- var fastO = _.memoize(o);
- equal(o('toString'), 'toString', 'checks hasOwnProperty');
- equal(fastO('toString'), 'toString', 'checks hasOwnProperty');
- });
- `)
- })
-}
-
-// once
-func Test_underscore_functions_4(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("once", function() {
- var num = 0;
- var increment = _.once(function(){ num++; });
- increment();
- increment();
- equal(num, 1);
- });
- `)
- })
-}
-
-// wrap
-func Test_underscore_functions_5(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("wrap", function() {
- var greet = function(name){ return "hi: " + name; };
- var backwards = _.wrap(greet, function(func, name){ return func(name) + ' ' + name.split('').reverse().join(''); });
- equal(backwards('moe'), 'hi: moe eom', 'wrapped the saluation function');
-
- var inner = function(){ return "Hello "; };
- var obj = {name : "Moe"};
- obj.hi = _.wrap(inner, function(fn){ return fn() + this.name; });
- equal(obj.hi(), "Hello Moe");
-
- var noop = function(){};
- var wrapped = _.wrap(noop, function(fn){ return Array.prototype.slice.call(arguments, 0); });
- var ret = wrapped(['whats', 'your'], 'vector', 'victor');
- deepEqual(ret, [noop, ['whats', 'your'], 'vector', 'victor']);
- });
- `)
- })
-}
-
-// compose
-func Test_underscore_functions_6(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("compose", function() {
- var greet = function(name){ return "hi: " + name; };
- var exclaim = function(sentence){ return sentence + '!'; };
- var composed = _.compose(exclaim, greet);
- equal(composed('moe'), 'hi: moe!', 'can compose a function that takes another');
-
- composed = _.compose(greet, exclaim);
- equal(composed('moe'), 'hi: moe!', 'in this case, the functions are also commutative');
- });
- `)
- })
-}
-
-// after
-func Test_underscore_functions_7(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("after", function() {
- var testAfter = function(afterAmount, timesCalled) {
- var afterCalled = 0;
- var after = _.after(afterAmount, function() {
- afterCalled++;
- });
- while (timesCalled--) after();
- return afterCalled;
- };
-
- equal(testAfter(5, 5), 1, "after(N) should fire after being called N times");
- equal(testAfter(5, 4), 0, "after(N) should not fire unless called N times");
- equal(testAfter(0, 0), 1, "after(0) should fire immediately");
- });
- `)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_objects_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_objects_test.go
deleted file mode 100644
index 1973af8dd..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_objects_test.go
+++ /dev/null
@@ -1,826 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-// keys
-func Test_underscore_objects_0(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("keys", function() {
- equal(_.keys({one : 1, two : 2}).join(', '), 'one, two', 'can extract the keys from an object');
- // the test above is not safe because it relies on for-in enumeration order
- var a = []; a[1] = 0;
- equal(_.keys(a).join(', '), '1', 'is not fooled by sparse arrays; see issue #95');
- raises(function() { _.keys(null); }, TypeError, 'throws an error for <null> values');
- raises(function() { _.keys(void 0); }, TypeError, 'throws an error for <undefined> values');
- raises(function() { _.keys(1); }, TypeError, 'throws an error for number primitives');
- raises(function() { _.keys('a'); }, TypeError, 'throws an error for string primitives');
- raises(function() { _.keys(true); }, TypeError, 'throws an error for boolean primitives');
- });
- `)
- })
-}
-
-// values
-func Test_underscore_objects_1(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("values", function() {
- equal(_.values({one: 1, two: 2}).join(', '), '1, 2', 'can extract the values from an object');
- equal(_.values({one: 1, two: 2, length: 3}).join(', '), '1, 2, 3', '... even when one of them is "length"');
- });
- `)
- })
-}
-
-// pairs
-func Test_underscore_objects_2(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("pairs", function() {
- deepEqual(_.pairs({one: 1, two: 2}), [['one', 1], ['two', 2]], 'can convert an object into pairs');
- deepEqual(_.pairs({one: 1, two: 2, length: 3}), [['one', 1], ['two', 2], ['length', 3]], '... even when one of them is "length"');
- });
- `)
- })
-}
-
-// invert
-func Test_underscore_objects_3(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("invert", function() {
- var obj = {first: 'Moe', second: 'Larry', third: 'Curly'};
- equal(_.keys(_.invert(obj)).join(' '), 'Moe Larry Curly', 'can invert an object');
- ok(_.isEqual(_.invert(_.invert(obj)), obj), 'two inverts gets you back where you started');
-
- var obj = {length: 3};
- ok(_.invert(obj)['3'] == 'length', 'can invert an object with "length"')
- });
- `)
- })
-}
-
-// functions
-func Test_underscore_objects_4(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("functions", function() {
- var obj = {a : 'dash', b : _.map, c : (/yo/), d : _.reduce};
- ok(_.isEqual(['b', 'd'], _.functions(obj)), 'can grab the function names of any passed-in object');
-
- var Animal = function(){};
- Animal.prototype.run = function(){};
- equal(_.functions(new Animal).join(''), 'run', 'also looks up functions on the prototype');
- });
- `)
- })
-}
-
-// extend
-func Test_underscore_objects_5(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("extend", function() {
- var result;
- equal(_.extend({}, {a:'b'}).a, 'b', 'can extend an object with the attributes of another');
- equal(_.extend({a:'x'}, {a:'b'}).a, 'b', 'properties in source override destination');
- equal(_.extend({x:'x'}, {a:'b'}).x, 'x', 'properties not in source dont get overriden');
- result = _.extend({x:'x'}, {a:'a'}, {b:'b'});
- ok(_.isEqual(result, {x:'x', a:'a', b:'b'}), 'can extend from multiple source objects');
- result = _.extend({x:'x'}, {a:'a', x:2}, {a:'b'});
- ok(_.isEqual(result, {x:2, a:'b'}), 'extending from multiple source objects last property trumps');
- result = _.extend({}, {a: void 0, b: null});
- equal(_.keys(result).join(''), 'ab', 'extend does not copy undefined values');
-
- try {
- result = {};
- _.extend(result, null, undefined, {a:1});
- } catch(ex) {}
-
- equal(result.a, 1, 'should not error on <null> or <undefined> sources');
- });
- `)
- })
-}
-
-// pick
-func Test_underscore_objects_6(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("pick", function() {
- var result;
- result = _.pick({a:1, b:2, c:3}, 'a', 'c');
- ok(_.isEqual(result, {a:1, c:3}), 'can restrict properties to those named');
- result = _.pick({a:1, b:2, c:3}, ['b', 'c']);
- ok(_.isEqual(result, {b:2, c:3}), 'can restrict properties to those named in an array');
- result = _.pick({a:1, b:2, c:3}, ['a'], 'b');
- ok(_.isEqual(result, {a:1, b:2}), 'can restrict properties to those named in mixed args');
-
- var Obj = function(){};
- Obj.prototype = {a: 1, b: 2, c: 3};
- ok(_.isEqual(_.pick(new Obj, 'a', 'c'), {a:1, c: 3}), 'include prototype props');
- });
- `)
- })
-}
-
-// omit
-func Test_underscore_objects_7(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("omit", function() {
- var result;
- result = _.omit({a:1, b:2, c:3}, 'b');
- ok(_.isEqual(result, {a:1, c:3}), 'can omit a single named property');
- result = _.omit({a:1, b:2, c:3}, 'a', 'c');
- ok(_.isEqual(result, {b:2}), 'can omit several named properties');
- result = _.omit({a:1, b:2, c:3}, ['b', 'c']);
- ok(_.isEqual(result, {a:1}), 'can omit properties named in an array');
-
- var Obj = function(){};
- Obj.prototype = {a: 1, b: 2, c: 3};
- ok(_.isEqual(_.omit(new Obj, 'b'), {a:1, c: 3}), 'include prototype props');
- });
- `)
- })
-}
-
-// defaults
-func Test_underscore_objects_8(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("defaults", function() {
- var result;
- var options = {zero: 0, one: 1, empty: "", nan: NaN, string: "string"};
-
- _.defaults(options, {zero: 1, one: 10, twenty: 20});
- equal(options.zero, 0, 'value exists');
- equal(options.one, 1, 'value exists');
- equal(options.twenty, 20, 'default applied');
-
- _.defaults(options, {empty: "full"}, {nan: "nan"}, {word: "word"}, {word: "dog"});
- equal(options.empty, "", 'value exists');
- ok(_.isNaN(options.nan), "NaN isn't overridden");
- equal(options.word, "word", 'new value is added, first one wins');
-
- try {
- options = {};
- _.defaults(options, null, undefined, {a:1});
- } catch(ex) {}
-
- equal(options.a, 1, 'should not error on <null> or <undefined> sources');
- });
- `)
- })
-}
-
-// clone
-func Test_underscore_objects_9(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("clone", function() {
- var moe = {name : 'moe', lucky : [13, 27, 34]};
- var clone = _.clone(moe);
- equal(clone.name, 'moe', 'the clone as the attributes of the original');
-
- clone.name = 'curly';
- ok(clone.name == 'curly' && moe.name == 'moe', 'clones can change shallow attributes without affecting the original');
-
- clone.lucky.push(101);
- equal(_.last(moe.lucky), 101, 'changes to deep attributes are shared with the original');
-
- equal(_.clone(undefined), void 0, 'non objects should not be changed by clone');
- equal(_.clone(1), 1, 'non objects should not be changed by clone');
- equal(_.clone(null), null, 'non objects should not be changed by clone');
- });
- `)
- })
-}
-
-// isEqual
-func Test_underscore_objects_10(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isEqual", function() {
- function First() {
- this.value = 1;
- }
- First.prototype.value = 1;
- function Second() {
- this.value = 1;
- }
- Second.prototype.value = 2;
-
- // Basic equality and identity comparisons.
- ok(_.isEqual(null, null), "<null> is equal to <null>");
- ok(_.isEqual(), "<undefined> is equal to <undefined>");
-
- ok(!_.isEqual(0, -0), "<0> is not equal to <-0>");
- ok(!_.isEqual(-0, 0), "Commutative equality is implemented for <0> and <-0>");
- ok(!_.isEqual(null, undefined), "<null> is not equal to <undefined>");
- ok(!_.isEqual(undefined, null), "Commutative equality is implemented for <null> and <undefined>");
-
- // String object and primitive comparisons.
- ok(_.isEqual("Curly", "Curly"), "Identical string primitives are equal");
- ok(_.isEqual(new String("Curly"), new String("Curly")), "String objects with identical primitive values are equal");
- ok(_.isEqual(new String("Curly"), "Curly"), "String primitives and their corresponding object wrappers are equal");
- ok(_.isEqual("Curly", new String("Curly")), "Commutative equality is implemented for string objects and primitives");
-
- ok(!_.isEqual("Curly", "Larry"), "String primitives with different values are not equal");
- ok(!_.isEqual(new String("Curly"), new String("Larry")), "String objects with different primitive values are not equal");
- ok(!_.isEqual(new String("Curly"), {toString: function(){ return "Curly"; }}), "String objects and objects with a custom <toString> method are not equal");
-
- // Number object and primitive comparisons.
- ok(_.isEqual(75, 75), "Identical number primitives are equal");
- ok(_.isEqual(new Number(75), new Number(75)), "Number objects with identical primitive values are equal");
- ok(_.isEqual(75, new Number(75)), "Number primitives and their corresponding object wrappers are equal");
- ok(_.isEqual(new Number(75), 75), "Commutative equality is implemented for number objects and primitives");
- ok(!_.isEqual(new Number(0), -0), "<new Number(0)> and <-0> are not equal");
- ok(!_.isEqual(0, new Number(-0)), "Commutative equality is implemented for <new Number(0)> and <-0>");
-
- ok(!_.isEqual(new Number(75), new Number(63)), "Number objects with different primitive values are not equal");
- ok(!_.isEqual(new Number(63), {valueOf: function(){ return 63; }}), "Number objects and objects with a <valueOf> method are not equal");
-
- // Comparisons involving <NaN>.
- ok(_.isEqual(NaN, NaN), "<NaN> is equal to <NaN>");
- ok(!_.isEqual(61, NaN), "A number primitive is not equal to <NaN>");
- ok(!_.isEqual(new Number(79), NaN), "A number object is not equal to <NaN>");
- ok(!_.isEqual(Infinity, NaN), "<Infinity> is not equal to <NaN>");
-
- // Boolean object and primitive comparisons.
- ok(_.isEqual(true, true), "Identical boolean primitives are equal");
- ok(_.isEqual(new Boolean, new Boolean), "Boolean objects with identical primitive values are equal");
- ok(_.isEqual(true, new Boolean(true)), "Boolean primitives and their corresponding object wrappers are equal");
- ok(_.isEqual(new Boolean(true), true), "Commutative equality is implemented for booleans");
- ok(!_.isEqual(new Boolean(true), new Boolean), "Boolean objects with different primitive values are not equal");
-
- // Common type coercions.
- ok(!_.isEqual(true, new Boolean(false)), "Boolean objects are not equal to the boolean primitive <true>");
- ok(!_.isEqual("75", 75), "String and number primitives with like values are not equal");
- ok(!_.isEqual(new Number(63), new String(63)), "String and number objects with like values are not equal");
- ok(!_.isEqual(75, "75"), "Commutative equality is implemented for like string and number values");
- ok(!_.isEqual(0, ""), "Number and string primitives with like values are not equal");
- ok(!_.isEqual(1, true), "Number and boolean primitives with like values are not equal");
- ok(!_.isEqual(new Boolean(false), new Number(0)), "Boolean and number objects with like values are not equal");
- ok(!_.isEqual(false, new String("")), "Boolean primitives and string objects with like values are not equal");
- ok(!_.isEqual(12564504e5, new Date(2009, 9, 25)), "Dates and their corresponding numeric primitive values are not equal");
-
- // Dates.
- ok(_.isEqual(new Date(2009, 9, 25), new Date(2009, 9, 25)), "Date objects referencing identical times are equal");
- ok(!_.isEqual(new Date(2009, 9, 25), new Date(2009, 11, 13)), "Date objects referencing different times are not equal");
- ok(!_.isEqual(new Date(2009, 11, 13), {
- getTime: function(){
- return 12606876e5;
- }
- }), "Date objects and objects with a <getTime> method are not equal");
- ok(!_.isEqual(new Date("Curly"), new Date("Curly")), "Invalid dates are not equal");
-
- // Functions.
- ok(!_.isEqual(First, Second), "Different functions with identical bodies and source code representations are not equal");
-
- // RegExps.
- ok(_.isEqual(/(?:)/gim, /(?:)/gim), "RegExps with equivalent patterns and flags are equal");
- ok(!_.isEqual(/(?:)/g, /(?:)/gi), "RegExps with equivalent patterns and different flags are not equal");
- ok(!_.isEqual(/Moe/gim, /Curly/gim), "RegExps with different patterns and equivalent flags are not equal");
- ok(!_.isEqual(/(?:)/gi, /(?:)/g), "Commutative equality is implemented for RegExps");
- ok(!_.isEqual(/Curly/g, {source: "Larry", global: true, ignoreCase: false, multiline: false}), "RegExps and RegExp-like objects are not equal");
-
- // Empty arrays, array-like objects, and object literals.
- ok(_.isEqual({}, {}), "Empty object literals are equal");
- ok(_.isEqual([], []), "Empty array literals are equal");
- ok(_.isEqual([{}], [{}]), "Empty nested arrays and objects are equal");
- ok(!_.isEqual({length: 0}, []), "Array-like objects and arrays are not equal.");
- ok(!_.isEqual([], {length: 0}), "Commutative equality is implemented for array-like objects");
-
- ok(!_.isEqual({}, []), "Object literals and array literals are not equal");
- ok(!_.isEqual([], {}), "Commutative equality is implemented for objects and arrays");
-
- // Arrays with primitive and object values.
- ok(_.isEqual([1, "Larry", true], [1, "Larry", true]), "Arrays containing identical primitives are equal");
- ok(_.isEqual([(/Moe/g), new Date(2009, 9, 25)], [(/Moe/g), new Date(2009, 9, 25)]), "Arrays containing equivalent elements are equal");
-
- // Multi-dimensional arrays.
- var a = [new Number(47), false, "Larry", /Moe/, new Date(2009, 11, 13), ['running', 'biking', new String('programming')], {a: 47}];
- var b = [new Number(47), false, "Larry", /Moe/, new Date(2009, 11, 13), ['running', 'biking', new String('programming')], {a: 47}];
- ok(_.isEqual(a, b), "Arrays containing nested arrays and objects are recursively compared");
-
- // Overwrite the methods defined in ES 5.1 section 15.4.4.
- a.forEach = a.map = a.filter = a.every = a.indexOf = a.lastIndexOf = a.some = a.reduce = a.reduceRight = null;
- b.join = b.pop = b.reverse = b.shift = b.slice = b.splice = b.concat = b.sort = b.unshift = null;
-
- // Array elements and properties.
- ok(_.isEqual(a, b), "Arrays containing equivalent elements and different non-numeric properties are equal");
- a.push("White Rocks");
- ok(!_.isEqual(a, b), "Arrays of different lengths are not equal");
- a.push("East Boulder");
- b.push("Gunbarrel Ranch", "Teller Farm");
- ok(!_.isEqual(a, b), "Arrays of identical lengths containing different elements are not equal");
-
- // Sparse arrays.
- ok(_.isEqual(Array(3), Array(3)), "Sparse arrays of identical lengths are equal");
- ok(!_.isEqual(Array(3), Array(6)), "Sparse arrays of different lengths are not equal when both are empty");
-
- // Simple objects.
- ok(_.isEqual({a: "Curly", b: 1, c: true}, {a: "Curly", b: 1, c: true}), "Objects containing identical primitives are equal");
- ok(_.isEqual({a: /Curly/g, b: new Date(2009, 11, 13)}, {a: /Curly/g, b: new Date(2009, 11, 13)}), "Objects containing equivalent members are equal");
- ok(!_.isEqual({a: 63, b: 75}, {a: 61, b: 55}), "Objects of identical sizes with different values are not equal");
- ok(!_.isEqual({a: 63, b: 75}, {a: 61, c: 55}), "Objects of identical sizes with different property names are not equal");
- ok(!_.isEqual({a: 1, b: 2}, {a: 1}), "Objects of different sizes are not equal");
- ok(!_.isEqual({a: 1}, {a: 1, b: 2}), "Commutative equality is implemented for objects");
- ok(!_.isEqual({x: 1, y: undefined}, {x: 1, z: 2}), "Objects with identical keys and different values are not equivalent");
-
- // <A> contains nested objects and arrays.
- a = {
- name: new String("Moe Howard"),
- age: new Number(77),
- stooge: true,
- hobbies: ["acting"],
- film: {
- name: "Sing a Song of Six Pants",
- release: new Date(1947, 9, 30),
- stars: [new String("Larry Fine"), "Shemp Howard"],
- minutes: new Number(16),
- seconds: 54
- }
- };
-
- // <B> contains equivalent nested objects and arrays.
- b = {
- name: new String("Moe Howard"),
- age: new Number(77),
- stooge: true,
- hobbies: ["acting"],
- film: {
- name: "Sing a Song of Six Pants",
- release: new Date(1947, 9, 30),
- stars: [new String("Larry Fine"), "Shemp Howard"],
- minutes: new Number(16),
- seconds: 54
- }
- };
- ok(_.isEqual(a, b), "Objects with nested equivalent members are recursively compared");
-
- // Instances.
- ok(_.isEqual(new First, new First), "Object instances are equal");
- ok(!_.isEqual(new First, new Second), "Objects with different constructors and identical own properties are not equal");
- ok(!_.isEqual({value: 1}, new First), "Object instances and objects sharing equivalent properties are not equal");
- ok(!_.isEqual({value: 2}, new Second), "The prototype chain of objects should not be examined");
-
- // Circular Arrays.
- (a = []).push(a);
- (b = []).push(b);
- ok(_.isEqual(a, b), "Arrays containing circular references are equal");
- a.push(new String("Larry"));
- b.push(new String("Larry"));
- ok(_.isEqual(a, b), "Arrays containing circular references and equivalent properties are equal");
- a.push("Shemp");
- b.push("Curly");
- ok(!_.isEqual(a, b), "Arrays containing circular references and different properties are not equal");
-
- // More circular arrays #767.
- a = ["everything is checked but", "this", "is not"];
- a[1] = a;
- b = ["everything is checked but", ["this", "array"], "is not"];
- ok(!_.isEqual(a, b), "Comparison of circular references with non-circular references are not equal");
-
- // Circular Objects.
- a = {abc: null};
- b = {abc: null};
- a.abc = a;
- b.abc = b;
- ok(_.isEqual(a, b), "Objects containing circular references are equal");
- a.def = 75;
- b.def = 75;
- ok(_.isEqual(a, b), "Objects containing circular references and equivalent properties are equal");
- a.def = new Number(75);
- b.def = new Number(63);
- ok(!_.isEqual(a, b), "Objects containing circular references and different properties are not equal");
-
- // More circular objects #767.
- a = {everything: "is checked", but: "this", is: "not"};
- a.but = a;
- b = {everything: "is checked", but: {that:"object"}, is: "not"};
- ok(!_.isEqual(a, b), "Comparison of circular references with non-circular object references are not equal");
-
- // Cyclic Structures.
- a = [{abc: null}];
- b = [{abc: null}];
- (a[0].abc = a).push(a);
- (b[0].abc = b).push(b);
- ok(_.isEqual(a, b), "Cyclic structures are equal");
- a[0].def = "Larry";
- b[0].def = "Larry";
- ok(_.isEqual(a, b), "Cyclic structures containing equivalent properties are equal");
- a[0].def = new String("Larry");
- b[0].def = new String("Curly");
- ok(!_.isEqual(a, b), "Cyclic structures containing different properties are not equal");
-
- // Complex Circular References.
- a = {foo: {b: {foo: {c: {foo: null}}}}};
- b = {foo: {b: {foo: {c: {foo: null}}}}};
- a.foo.b.foo.c.foo = a;
- b.foo.b.foo.c.foo = b;
- ok(_.isEqual(a, b), "Cyclic structures with nested and identically-named properties are equal");
-
- // Chaining.
- ok(!_.isEqual(_({x: 1, y: undefined}).chain(), _({x: 1, z: 2}).chain()), 'Chained objects containing different values are not equal');
-
- a = _({x: 1, y: 2}).chain();
- b = _({x: 1, y: 2}).chain();
- equal(_.isEqual(a.isEqual(b), _(true)), true, '<isEqual> can be chained');
-
- // TEST: ???
- return;
-
- // Objects from another frame.
- ok(_.isEqual({}, iObject));
- });
- `)
- })
-}
-
-// isEmpty
-func Test_underscore_objects_11(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isEmpty", function() {
- ok(!_([1]).isEmpty(), '[1] is not empty');
- ok(_.isEmpty([]), '[] is empty');
- ok(!_.isEmpty({one : 1}), '{one : 1} is not empty');
- ok(_.isEmpty({}), '{} is empty');
- ok(_.isEmpty(new RegExp('')), 'objects with prototype properties are empty');
- ok(_.isEmpty(null), 'null is empty');
- ok(_.isEmpty(), 'undefined is empty');
- ok(_.isEmpty(''), 'the empty string is empty');
- ok(!_.isEmpty('moe'), 'but other strings are not');
-
- var obj = {one : 1};
- delete obj.one;
- ok(_.isEmpty(obj), 'deleting all the keys from an object empties it');
- });
- `)
- })
-}
-
-// isElement
-func Test_underscore_objects_12(t *testing.T) {
- // TEST: ReferenceError: $ is not defined
- if true {
- return
- }
-
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isElement", function() {
- ok(!_.isElement('div'), 'strings are not dom elements');
- ok(_.isElement($('html')[0]), 'the html tag is a DOM element');
- ok(_.isElement(iElement), 'even from another frame');
- });
- `)
- })
-}
-
-// isArguments
-func Test_underscore_objects_13(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isArguments", function() {
- var args = (function(){ return arguments; })(1, 2, 3);
- ok(!_.isArguments('string'), 'a string is not an arguments object');
- ok(!_.isArguments(_.isArguments), 'a function is not an arguments object');
- ok(_.isArguments(args), 'but the arguments object is an arguments object');
- ok(!_.isArguments(_.toArray(args)), 'but not when it\'s converted into an array');
- ok(!_.isArguments([1,2,3]), 'and not vanilla arrays.');
-
- // TEST: ReferenceError: iArguments is not defined
- return;
- ok(_.isArguments(iArguments), 'even from another frame');
- });
- `)
- })
-}
-
-// isObject
-func Test_underscore_objects_14(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isObject", function() {
- ok(_.isObject(arguments), 'the arguments object is object');
- ok(_.isObject([1, 2, 3]), 'and arrays');
- // TEST: ReferenceError: $ is not defined
- return;
- ok(_.isObject($('html')[0]), 'and DOM element');
- ok(_.isObject(iElement), 'even from another frame');
- ok(_.isObject(function () {}), 'and functions');
- ok(_.isObject(iFunction), 'even from another frame');
- ok(!_.isObject(null), 'but not null');
- ok(!_.isObject(undefined), 'and not undefined');
- ok(!_.isObject('string'), 'and not string');
- ok(!_.isObject(12), 'and not number');
- ok(!_.isObject(true), 'and not boolean');
- ok(_.isObject(new String('string')), 'but new String()');
- });
- `)
- })
-}
-
-// isArray
-func Test_underscore_objects_15(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isArray", function() {
- ok(!_.isArray(arguments), 'the arguments object is not an array');
- ok(_.isArray([1, 2, 3]), 'but arrays are');
- // TEST: ???
- return;
- ok(_.isArray(iArray), 'even from another frame');
- });
- `)
- })
-}
-
-// isString
-func Test_underscore_objects_16(t *testing.T) {
- // TEST: ReferenceError: document is not defined
- if true {
- return
- }
-
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isString", function() {
- ok(!_.isString(document.body), 'the document body is not a string');
- ok(_.isString([1, 2, 3].join(', ')), 'but strings are');
- // TEST: ???
- return;
- ok(_.isString(iString), 'even from another frame');
- });
- `)
- })
-}
-
-// isNumber
-func Test_underscore_objects_17(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isNumber", function() {
- ok(!_.isNumber('string'), 'a string is not a number');
- ok(!_.isNumber(arguments), 'the arguments object is not a number');
- ok(!_.isNumber(undefined), 'undefined is not a number');
- ok(_.isNumber(3 * 4 - 7 / 10), 'but numbers are');
- ok(_.isNumber(NaN), 'NaN *is* a number');
- ok(_.isNumber(Infinity), 'Infinity is a number');
- // TEST: ???
- return;
- ok(_.isNumber(iNumber), 'even from another frame');
- ok(!_.isNumber('1'), 'numeric strings are not numbers');
- });
- `)
- })
-}
-
-// isBoolean
-func Test_underscore_objects_18(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isBoolean", function() {
- ok(!_.isBoolean(2), 'a number is not a boolean');
- ok(!_.isBoolean("string"), 'a string is not a boolean');
- ok(!_.isBoolean("false"), 'the string "false" is not a boolean');
- ok(!_.isBoolean("true"), 'the string "true" is not a boolean');
- ok(!_.isBoolean(arguments), 'the arguments object is not a boolean');
- ok(!_.isBoolean(undefined), 'undefined is not a boolean');
- ok(!_.isBoolean(NaN), 'NaN is not a boolean');
- ok(!_.isBoolean(null), 'null is not a boolean');
- ok(_.isBoolean(true), 'but true is');
- ok(_.isBoolean(false), 'and so is false');
- // TEST: ???
- return;
- ok(_.isBoolean(iBoolean), 'even from another frame');
- });
- `)
- })
-}
-
-// isFunction
-func Test_underscore_objects_19(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isFunction", function() {
- ok(!_.isFunction([1, 2, 3]), 'arrays are not functions');
- ok(!_.isFunction('moe'), 'strings are not functions');
- ok(_.isFunction(_.isFunction), 'but functions are');
- // TEST: ???
- return;
- ok(_.isFunction(iFunction), 'even from another frame');
- });
- `)
- })
-}
-
-// isDate
-func Test_underscore_objects_20(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isDate", function() {
- ok(!_.isDate(100), 'numbers are not dates');
- ok(!_.isDate({}), 'objects are not dates');
- ok(_.isDate(new Date()), 'but dates are');
- // TEST: ???
- return;
- ok(_.isDate(iDate), 'even from another frame');
- });
- `)
- })
-}
-
-// isRegExp
-func Test_underscore_objects_21(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isRegExp", function() {
- ok(!_.isRegExp(_.identity), 'functions are not RegExps');
- ok(_.isRegExp(/identity/), 'but RegExps are');
- // TEST: ???
- return;
- ok(_.isRegExp(iRegExp), 'even from another frame');
- });
- `)
- })
-}
-
-// isFinite
-func Test_underscore_objects_22(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isFinite", function() {
- ok(!_.isFinite(undefined), 'undefined is not Finite');
- ok(!_.isFinite(null), 'null is not Finite');
- ok(!_.isFinite(NaN), 'NaN is not Finite');
- ok(!_.isFinite(Infinity), 'Infinity is not Finite');
- ok(!_.isFinite(-Infinity), '-Infinity is not Finite');
- ok(_.isFinite('12'), 'Numeric strings are numbers');
- ok(!_.isFinite('1a'), 'Non numeric strings are not numbers');
- ok(!_.isFinite(''), 'Empty strings are not numbers');
- var obj = new Number(5);
- ok(_.isFinite(obj), 'Number instances can be finite');
- ok(_.isFinite(0), '0 is Finite');
- ok(_.isFinite(123), 'Ints are Finite');
- ok(_.isFinite(-12.44), 'Floats are Finite');
- });
- `)
- })
-}
-
-// isNaN
-func Test_underscore_objects_23(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isNaN", function() {
- ok(!_.isNaN(undefined), 'undefined is not NaN');
- ok(!_.isNaN(null), 'null is not NaN');
- ok(!_.isNaN(0), '0 is not NaN');
- ok(_.isNaN(NaN), 'but NaN is');
- // TEST: ???
- return;
- ok(_.isNaN(iNaN), 'even from another frame');
- ok(_.isNaN(new Number(NaN)), 'wrapped NaN is still NaN');
- });
- `)
- })
-}
-
-// isNull
-func Test_underscore_objects_24(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isNull", function() {
- ok(!_.isNull(undefined), 'undefined is not null');
- ok(!_.isNull(NaN), 'NaN is not null');
- ok(_.isNull(null), 'but null is');
- // TEST: ???
- return;
- ok(_.isNull(iNull), 'even from another frame');
- });
- `)
- })
-}
-
-// isUndefined
-func Test_underscore_objects_25(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("isUndefined", function() {
- ok(!_.isUndefined(1), 'numbers are defined');
- ok(!_.isUndefined(null), 'null is defined');
- ok(!_.isUndefined(false), 'false is defined');
- ok(!_.isUndefined(NaN), 'NaN is defined');
- ok(_.isUndefined(), 'nothing is undefined');
- ok(_.isUndefined(undefined), 'undefined is undefined');
- // TEST: ???
- return;
- ok(_.isUndefined(iUndefined), 'even from another frame');
- });
- `)
- })
-}
-
-// tap
-func Test_underscore_objects_26(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("tap", function() {
- var intercepted = null;
- var interceptor = function(obj) { intercepted = obj; };
- var returned = _.tap(1, interceptor);
- equal(intercepted, 1, "passes tapped object to interceptor");
- equal(returned, 1, "returns tapped object");
-
- returned = _([1,2,3]).chain().
- map(function(n){ return n * 2; }).
- max().
- tap(interceptor).
- value();
- ok(returned == 6 && intercepted == 6, 'can use tapped objects in a chain');
- });
- `)
- })
-}
-
-// has
-func Test_underscore_objects_27(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("has", function () {
- var obj = {foo: "bar", func: function () {} };
- ok (_.has(obj, "foo"), "has() checks that the object has a property.");
- ok (_.has(obj, "baz") == false, "has() returns false if the object doesn't have the property.");
- ok (_.has(obj, "func"), "has() works for functions too.");
- obj.hasOwnProperty = null;
- ok (_.has(obj, "foo"), "has() works even when the hasOwnProperty method is deleted.");
- var child = {};
- child.prototype = obj;
- ok (_.has(child, "foo") == false, "has() does not check the prototype chain for a property.")
- });
- `)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_test.go
deleted file mode 100644
index d8bf2da18..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_test.go
+++ /dev/null
@@ -1,165 +0,0 @@
-package otto
-
-import (
- "./terst"
- "testing"
-
- "github.com/robertkrimen/otto/underscore"
-)
-
-func init() {
- underscore.Disable()
-}
-
-// A persistent handle for the underscore tester
-// We do not run underscore tests in parallel, so it is okay to stash globally
-// (Maybe use sync.Pool in the future...)
-var tester_ *_tester
-
-// A tester for underscore: test_ => test(underscore) :)
-func test_(arguments ...interface{}) (func(string, ...interface{}) Value, *_tester) {
- tester := tester_
- if tester == nil {
- tester = newTester()
- tester.underscore() // Load underscore and testing shim, etc.
- tester_ = tester
- }
-
- return tester.test, tester
-}
-
-func (self *_tester) underscore() {
- vm := self.vm
- _, err := vm.Run(underscore.Source())
- if err != nil {
- panic(err)
- }
-
- vm.Set("assert", func(call FunctionCall) Value {
- if !call.Argument(0).bool() {
- message := "Assertion failed"
- if len(call.ArgumentList) > 1 {
- message = call.ArgumentList[1].string()
- }
- t := terst.Caller().T()
- is(message, nil)
- t.Fail()
- return falseValue
- }
- return trueValue
- })
-
- vm.Run(`
- var templateSettings;
-
- function _setup() {
- templateSettings = _.clone(_.templateSettings);
- }
-
- function _teardown() {
- _.templateSettings = templateSettings;
- }
-
- function module() {
- /* Nothing happens. */
- }
-
- function equals(a, b, emit) {
- assert(a == b, emit + ", <" + a + "> != <" + b + ">");
- }
- var equal = equals;
-
- function notStrictEqual(a, b, emit) {
- assert(a !== b, emit);
- }
-
- function strictEqual(a, b, emit) {
- assert(a === b, emit);
- }
-
- function ok(a, emit) {
- assert(a, emit);
- }
-
- function raises(fn, want, emit) {
- var have, _ok = false;
- if (typeof want === "string") {
- emit = want;
- want = null;
- }
-
- try {
- fn();
- } catch(tmp) {
- have = tmp;
- }
-
- if (have) {
- if (!want) {
- _ok = true;
- }
- else if (want instanceof RegExp) {
- _ok = want.test(have);
- }
- else if (have instanceof want) {
- _ok = true
- }
- else if (want.call({}, have) === true) {
- _ok = true;
- }
- }
-
- ok(_ok, emit);
- }
-
- function test(name){
- _setup()
- try {
- templateSettings = _.clone(_.templateSettings);
- if (arguments.length == 3) {
- count = 0
- for (count = 0; count < arguments[1]; count++) {
- arguments[2]()
- }
- } else {
- // For now.
- arguments[1]()
- }
- }
- finally {
- _teardown()
- }
- }
-
- function deepEqual(a, b, emit) {
- // Also, for now.
- assert(_.isEqual(a, b), emit)
- }
- `)
-}
-
-func Test_underscore(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- _.map([1, 2, 3], function(value){
- return value + 1
- })
- `, "2,3,4")
-
- test(`
- abc = _.find([1, 2, 3, -1], function(value) { return value == -1 })
- `, -1)
-
- test(`_.isEqual(1, 1)`, true)
- test(`_.isEqual([], [])`, true)
- test(`_.isEqual(['b', 'd'], ['b', 'd'])`, true)
- test(`_.isEqual(['b', 'd', 'c'], ['b', 'd', 'e'])`, false)
- test(`_.isFunction(function(){})`, true)
- test(`_.template('<p>\u2028<%= "\\u2028\\u2029" %>\u2029</p>')()`, "<p>\u2028\u2028\u2029\u2029</p>")
- })
-}
-
-// TODO Test: typeof An argument reference
-// TODO Test: abc = {}; abc == Object(abc)
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_utility_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_utility_test.go
deleted file mode 100644
index ebabb083b..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/underscore_utility_test.go
+++ /dev/null
@@ -1,419 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-// #750 - Return _ instance.
-func Test_underscore_utility_0(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("#750 - Return _ instance.", 2, function() {
- var instance = _([]);
- ok(_(instance) === instance);
- ok(new _(instance) === instance);
- });
- `)
- })
-}
-
-// identity
-func Test_underscore_utility_1(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("identity", function() {
- var moe = {name : 'moe'};
- equal(_.identity(moe), moe, 'moe is the same as his identity');
- });
- `)
- })
-}
-
-// random
-func Test_underscore_utility_2(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("random", function() {
- var array = _.range(1000);
- var min = Math.pow(2, 31);
- var max = Math.pow(2, 62);
-
- ok(_.every(array, function() {
- return _.random(min, max) >= min;
- }), "should produce a random number greater than or equal to the minimum number");
-
- ok(_.some(array, function() {
- return _.random(Number.MAX_VALUE) > 0;
- }), "should produce a random number when passed <Number.MAX_VALUE>");
- });
- `)
- })
-}
-
-// uniqueId
-func Test_underscore_utility_3(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("uniqueId", function() {
- var ids = [], i = 0;
- while(i++ < 100) ids.push(_.uniqueId());
- equal(_.uniq(ids).length, ids.length, 'can generate a globally-unique stream of ids');
- });
- `)
- })
-}
-
-// times
-func Test_underscore_utility_4(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("times", function() {
- var vals = [];
- _.times(3, function (i) { vals.push(i); });
- ok(_.isEqual(vals, [0,1,2]), "is 0 indexed");
- //
- vals = [];
- _(3).times(function(i) { vals.push(i); });
- ok(_.isEqual(vals, [0,1,2]), "works as a wrapper");
- // collects return values
- ok(_.isEqual([0, 1, 2], _.times(3, function(i) { return i; })), "collects return values");
- });
- `)
- })
-}
-
-// mixin
-func Test_underscore_utility_5(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("mixin", function() {
- _.mixin({
- myReverse: function(string) {
- return string.split('').reverse().join('');
- }
- });
- equal(_.myReverse('panacea'), 'aecanap', 'mixed in a function to _');
- equal(_('champ').myReverse(), 'pmahc', 'mixed in a function to the OOP wrapper');
- });
- `)
- })
-}
-
-// _.escape
-func Test_underscore_utility_6(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("_.escape", function() {
- equal(_.escape("Curly & Moe"), "Curly &amp; Moe");
- equal(_.escape("Curly &amp; Moe"), "Curly &amp;amp; Moe");
- equal(_.escape(null), '');
- });
- `)
- })
-}
-
-// _.unescape
-func Test_underscore_utility_7(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("_.unescape", function() {
- var string = "Curly & Moe";
- equal(_.unescape("Curly &amp; Moe"), string);
- equal(_.unescape("Curly &amp;amp; Moe"), "Curly &amp; Moe");
- equal(_.unescape(null), '');
- equal(_.unescape(_.escape(string)), string);
- });
- `)
- })
-}
-
-// template
-func Test_underscore_utility_8(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test("template", function() {
- var basicTemplate = _.template("<%= thing %> is gettin' on my noives!");
- var result = basicTemplate({thing : 'This'});
- equal(result, "This is gettin' on my noives!", 'can do basic attribute interpolation');
-
- var sansSemicolonTemplate = _.template("A <% this %> B");
- equal(sansSemicolonTemplate(), "A B");
-
- var backslashTemplate = _.template("<%= thing %> is \\ridanculous");
- equal(backslashTemplate({thing: 'This'}), "This is \\ridanculous");
-
- var escapeTemplate = _.template('<%= a ? "checked=\\"checked\\"" : "" %>');
- equal(escapeTemplate({a: true}), 'checked="checked"', 'can handle slash escapes in interpolations.');
-
- var fancyTemplate = _.template("<ul><% \
- for (var key in people) { \
- %><li><%= people[key] %></li><% } %></ul>");
- result = fancyTemplate({people : {moe : "Moe", larry : "Larry", curly : "Curly"}});
- equal(result, "<ul><li>Moe</li><li>Larry</li><li>Curly</li></ul>", 'can run arbitrary javascript in templates');
-
- var escapedCharsInJavascriptTemplate = _.template("<ul><% _.each(numbers.split('\\n'), function(item) { %><li><%= item %></li><% }) %></ul>");
- result = escapedCharsInJavascriptTemplate({numbers: "one\ntwo\nthree\nfour"});
- equal(result, "<ul><li>one</li><li>two</li><li>three</li><li>four</li></ul>", 'Can use escaped characters (e.g. \\n) in Javascript');
-
- var namespaceCollisionTemplate = _.template("<%= pageCount %> <%= thumbnails[pageCount] %> <% _.each(thumbnails, function(p) { %><div class=\"thumbnail\" rel=\"<%= p %>\"></div><% }); %>");
- result = namespaceCollisionTemplate({
- pageCount: 3,
- thumbnails: {
- 1: "p1-thumbnail.gif",
- 2: "p2-thumbnail.gif",
- 3: "p3-thumbnail.gif"
- }
- });
- equal(result, "3 p3-thumbnail.gif <div class=\"thumbnail\" rel=\"p1-thumbnail.gif\"></div><div class=\"thumbnail\" rel=\"p2-thumbnail.gif\"></div><div class=\"thumbnail\" rel=\"p3-thumbnail.gif\"></div>");
-
- var noInterpolateTemplate = _.template("<div><p>Just some text. Hey, I know this is silly but it aids consistency.</p></div>");
- result = noInterpolateTemplate();
- equal(result, "<div><p>Just some text. Hey, I know this is silly but it aids consistency.</p></div>");
-
- var quoteTemplate = _.template("It's its, not it's");
- equal(quoteTemplate({}), "It's its, not it's");
-
- var quoteInStatementAndBody = _.template("<%\
- if(foo == 'bar'){ \
- %>Statement quotes and 'quotes'.<% } %>");
- equal(quoteInStatementAndBody({foo: "bar"}), "Statement quotes and 'quotes'.");
-
- var withNewlinesAndTabs = _.template('This\n\t\tis: <%= x %>.\n\tok.\nend.');
- equal(withNewlinesAndTabs({x: 'that'}), 'This\n\t\tis: that.\n\tok.\nend.');
-
- var template = _.template("<i><%- value %></i>");
- var result = template({value: "<script>"});
- equal(result, '<i>&lt;script&gt;</i>');
-
- var stooge = {
- name: "Moe",
- template: _.template("I'm <%= this.name %>")
- };
- equal(stooge.template(), "I'm Moe");
-
- // TEST: ReferenceError: $ is not defined
- if (false) {
- if (!$.browser.msie) {
- var fromHTML = _.template($('#template').html());
- equal(fromHTML({data : 12345}).replace(/\s/g, ''), '<li>24690</li>');
- }
- }
-
- _.templateSettings = {
- evaluate : /\{\{([\s\S]+?)\}\}/g,
- interpolate : /\{\{=([\s\S]+?)\}\}/g
- };
-
- var custom = _.template("<ul>{{ for (var key in people) { }}<li>{{= people[key] }}</li>{{ } }}</ul>");
- result = custom({people : {moe : "Moe", larry : "Larry", curly : "Curly"}});
- equal(result, "<ul><li>Moe</li><li>Larry</li><li>Curly</li></ul>", 'can run arbitrary javascript in templates');
-
- var customQuote = _.template("It's its, not it's");
- equal(customQuote({}), "It's its, not it's");
-
- var quoteInStatementAndBody = _.template("{{ if(foo == 'bar'){ }}Statement quotes and 'quotes'.{{ } }}");
- equal(quoteInStatementAndBody({foo: "bar"}), "Statement quotes and 'quotes'.");
-
- _.templateSettings = {
- evaluate : /<\?([\s\S]+?)\?>/g,
- interpolate : /<\?=([\s\S]+?)\?>/g
- };
-
- var customWithSpecialChars = _.template("<ul><? for (var key in people) { ?><li><?= people[key] ?></li><? } ?></ul>");
- result = customWithSpecialChars({people : {moe : "Moe", larry : "Larry", curly : "Curly"}});
- equal(result, "<ul><li>Moe</li><li>Larry</li><li>Curly</li></ul>", 'can run arbitrary javascript in templates');
-
- var customWithSpecialCharsQuote = _.template("It's its, not it's");
- equal(customWithSpecialCharsQuote({}), "It's its, not it's");
-
- var quoteInStatementAndBody = _.template("<? if(foo == 'bar'){ ?>Statement quotes and 'quotes'.<? } ?>");
- equal(quoteInStatementAndBody({foo: "bar"}), "Statement quotes and 'quotes'.");
-
- _.templateSettings = {
- interpolate : /\{\{(.+?)\}\}/g
- };
-
- var mustache = _.template("Hello {{planet}}!");
- equal(mustache({planet : "World"}), "Hello World!", "can mimic mustache.js");
-
- var templateWithNull = _.template("a null undefined {{planet}}");
- equal(templateWithNull({planet : "world"}), "a null undefined world", "can handle missing escape and evaluate settings");
- });
- `)
- })
-}
-
-// _.template provides the generated function source, when a SyntaxError occurs
-func Test_underscore_utility_9(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('_.template provides the generated function source, when a SyntaxError occurs', function() {
- try {
- _.template('<b><%= if x %></b>');
- } catch (ex) {
- var source = ex.source;
- }
- ok(/__p/.test(source));
- });
- `)
- })
-}
-
-// _.template handles \\u2028 & \\u2029
-func Test_underscore_utility_10(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('_.template handles \\u2028 & \\u2029', function() {
- var tmpl = _.template('<p>\u2028<%= "\\u2028\\u2029" %>\u2029</p>');
- strictEqual(tmpl(), '<p>\u2028\u2028\u2029\u2029</p>');
- });
- `)
- })
-}
-
-// result calls functions and returns primitives
-func Test_underscore_utility_11(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('result calls functions and returns primitives', function() {
- var obj = {w: '', x: 'x', y: function(){ return this.x; }};
- strictEqual(_.result(obj, 'w'), '');
- strictEqual(_.result(obj, 'x'), 'x');
- strictEqual(_.result(obj, 'y'), 'x');
- strictEqual(_.result(obj, 'z'), undefined);
- strictEqual(_.result(null, 'x'), null);
- });
- `)
- })
-}
-
-// _.templateSettings.variable
-func Test_underscore_utility_12(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('_.templateSettings.variable', function() {
- var s = '<%=data.x%>';
- var data = {x: 'x'};
- strictEqual(_.template(s, data, {variable: 'data'}), 'x');
- _.templateSettings.variable = 'data';
- strictEqual(_.template(s)(data), 'x');
- });
- `)
- })
-}
-
-// #547 - _.templateSettings is unchanged by custom settings.
-func Test_underscore_utility_13(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('#547 - _.templateSettings is unchanged by custom settings.', function() {
- ok(!_.templateSettings.variable);
- _.template('', {}, {variable: 'x'});
- ok(!_.templateSettings.variable);
- });
- `)
- })
-}
-
-// #556 - undefined template variables.
-func Test_underscore_utility_14(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('#556 - undefined template variables.', function() {
- var template = _.template('<%=x%>');
- strictEqual(template({x: null}), '');
- strictEqual(template({x: undefined}), '');
-
- var templateEscaped = _.template('<%-x%>');
- strictEqual(templateEscaped({x: null}), '');
- strictEqual(templateEscaped({x: undefined}), '');
-
- var templateWithProperty = _.template('<%=x.foo%>');
- strictEqual(templateWithProperty({x: {} }), '');
- strictEqual(templateWithProperty({x: {} }), '');
-
- var templateWithPropertyEscaped = _.template('<%-x.foo%>');
- strictEqual(templateWithPropertyEscaped({x: {} }), '');
- strictEqual(templateWithPropertyEscaped({x: {} }), '');
- });
- `)
- })
-}
-
-// interpolate evaluates code only once.
-func Test_underscore_utility_15(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('interpolate evaluates code only once.', 2, function() {
- var count = 0;
- var template = _.template('<%= f() %>');
- template({f: function(){ ok(!(count++)); }});
-
- var countEscaped = 0;
- var templateEscaped = _.template('<%- f() %>');
- templateEscaped({f: function(){ ok(!(countEscaped++)); }});
- });
- `)
- })
-}
-
-// #746 - _.template settings are not modified.
-func Test_underscore_utility_16(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('#746 - _.template settings are not modified.', 1, function() {
- var settings = {};
- _.template('', null, settings);
- deepEqual(settings, {});
- });
- `)
- })
-}
-
-// #779 - delimeters are applied to unescaped text.
-func Test_underscore_utility_17(t *testing.T) {
- tt(t, func() {
- test, _ := test_()
-
- test(`
- test('#779 - delimeters are applied to unescaped text.', 1, function() {
- var template = _.template('<<\nx\n>>', null, {evaluate: /<<(.*?)>>/g});
- strictEqual(template(), '<<\nx\n>>');
- });
- `)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/value.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/value.go
index 05d61dd62..a1c341f4d 100644
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/value.go
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/value.go
@@ -680,15 +680,36 @@ func (self Value) export() interface{} {
result := make([]interface{}, 0)
lengthValue := object.get("length")
length := lengthValue.value.(uint32)
+ kind := reflect.Invalid
+ state := 0
+ var t reflect.Type
for index := uint32(0); index < length; index += 1 {
name := strconv.FormatInt(int64(index), 10)
if !object.hasProperty(name) {
continue
}
- value := object.get(name)
- result = append(result, value.export())
+ value := object.get(name).export()
+ t = reflect.TypeOf(value)
+ if state == 0 {
+ kind = t.Kind()
+ state = 1
+ } else if state == 1 && kind != t.Kind() {
+ state = 2
+ }
+ result = append(result, value)
}
- return result
+
+ if state != 1 || kind == reflect.Interface {
+ // No common type
+ return result
+ }
+
+ // Convert to the common type
+ val := reflect.MakeSlice(reflect.SliceOf(t), len(result), len(result))
+ for i, v := range result {
+ val.Index(i).Set(reflect.ValueOf(v))
+ }
+ return val.Interface()
} else {
result := make(map[string]interface{})
// TODO Should we export everything? Or just what is enumerable?
@@ -770,6 +791,21 @@ func (self Value) exportNative() interface{} {
// Make a best effort to return a reflect.Value corresponding to reflect.Kind, but
// fallback to just returning the Go value we have handy.
func (value Value) toReflectValue(kind reflect.Kind) (reflect.Value, error) {
+ if kind != reflect.Float32 && kind != reflect.Float64 && kind != reflect.Interface {
+ switch value := value.value.(type) {
+ case float32:
+ _, frac := math.Modf(float64(value))
+ if frac > 0 {
+ return reflect.Value{}, fmt.Errorf("RangeError: %v to reflect.Kind: %v", value, kind)
+ }
+ case float64:
+ _, frac := math.Modf(value)
+ if frac > 0 {
+ return reflect.Value{}, fmt.Errorf("RangeError: %v to reflect.Kind: %v", value, kind)
+ }
+ }
+ }
+
switch kind {
case reflect.Bool: // Bool
return reflect.ValueOf(value.bool()), nil
@@ -857,7 +893,7 @@ func (value Value) toReflectValue(kind reflect.Kind) (reflect.Value, error) {
if 0 > tmp1 {
tmp1 = -tmp1
}
- if tmp1 < math.SmallestNonzeroFloat32 || tmp1 > math.MaxFloat32 {
+ if tmp1 > 0 && (tmp1 < math.SmallestNonzeroFloat32 || tmp1 > math.MaxFloat32) {
return reflect.Value{}, fmt.Errorf("RangeError: %f (%v) to float32", tmp, value)
} else {
return reflect.ValueOf(float32(tmp)), nil
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/value_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/value_test.go
deleted file mode 100644
index 4a9bd546f..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/value_test.go
+++ /dev/null
@@ -1,281 +0,0 @@
-package otto
-
-import (
- "encoding/json"
- "math"
- "testing"
-)
-
-func TestValue(t *testing.T) {
- tt(t, func() {
- value := UndefinedValue()
- is(value.IsUndefined(), true)
- is(value, UndefinedValue())
- is(value, "undefined")
-
- is(toValue(false), false)
- is(toValue(1), 1)
- is(toValue(1).float64(), float64(1))
- })
-}
-
-func TestObject(t *testing.T) {
- tt(t, func() {
- is(emptyValue.isEmpty(), true)
- //is(newObject().Value(), "[object]")
- //is(newBooleanObject(false).Value(), "false")
- //is(newFunctionObject(nil).Value(), "[function]")
- //is(newNumberObject(1).Value(), "1")
- //is(newStringObject("Hello, World.").Value(), "Hello, World.")
- })
-}
-
-type intAlias int
-
-func TestToValue(t *testing.T) {
- tt(t, func() {
- _, tester := test()
- vm := tester.vm
-
- value, _ := vm.ToValue(nil)
- is(value, "undefined")
-
- value, _ = vm.ToValue((*byte)(nil))
- is(value, "undefined")
-
- value, _ = vm.ToValue(intAlias(5))
- is(value, 5)
-
- {
- tmp := new(int)
-
- value, _ = vm.ToValue(&tmp)
- is(value, 0)
-
- *tmp = 1
-
- value, _ = vm.ToValue(&tmp)
- is(value, 1)
-
- tmp = nil
-
- value, _ = vm.ToValue(&tmp)
- is(value, "undefined")
- }
-
- {
- tmp0 := new(int)
- tmp1 := &tmp0
- tmp2 := &tmp1
-
- value, _ = vm.ToValue(&tmp2)
- is(value, 0)
-
- *tmp0 = 1
-
- value, _ = vm.ToValue(&tmp2)
- is(value, 1)
-
- tmp0 = nil
-
- value, _ = vm.ToValue(&tmp2)
- is(value, "undefined")
- }
- })
-}
-
-func TestToBoolean(t *testing.T) {
- tt(t, func() {
- is := func(left interface{}, right bool) {
- is(toValue(left).bool(), right)
- }
-
- is("", false)
- is("xyzzy", true)
- is(1, true)
- is(0, false)
- //is(toValue(newObject()), true)
- is(UndefinedValue(), false)
- is(NullValue(), false)
- })
-}
-
-func TestToFloat(t *testing.T) {
- tt(t, func() {
- {
- is := func(left interface{}, right float64) {
- is(toValue(left).float64(), right)
- }
- is("", 0)
- is("xyzzy", math.NaN())
- is("2", 2)
- is(1, 1)
- is(0, 0)
- is(NullValue(), 0)
- //is(newObjectValue(), math.NaN())
- }
- is(math.IsNaN(UndefinedValue().float64()), true)
- })
-}
-
-func TestToString(t *testing.T) {
- tt(t, func() {
- is("undefined", UndefinedValue().string())
- is("null", NullValue().string())
- is("true", toValue(true).string())
- is("false", toValue(false).string())
-
- is(UndefinedValue(), "undefined")
- is(NullValue(), "null")
- is(toValue(true), true)
- is(toValue(false), false)
- })
-}
-
-func Test_toInt32(t *testing.T) {
- tt(t, func() {
- test := []interface{}{
- 0, int32(0),
- 1, int32(1),
- -2147483649.0, int32(2147483647),
- -4294967297.0, int32(-1),
- -4294967296.0, int32(0),
- -4294967295.0, int32(1),
- math.Inf(+1), int32(0),
- math.Inf(-1), int32(0),
- }
- for index := 0; index < len(test)/2; index++ {
- // FIXME terst, Make strict again?
- is(
- toInt32(toValue(test[index*2])),
- test[index*2+1].(int32),
- )
- }
- })
-}
-
-func Test_toUint32(t *testing.T) {
- tt(t, func() {
- test := []interface{}{
- 0, uint32(0),
- 1, uint32(1),
- -2147483649.0, uint32(2147483647),
- -4294967297.0, uint32(4294967295),
- -4294967296.0, uint32(0),
- -4294967295.0, uint32(1),
- math.Inf(+1), uint32(0),
- math.Inf(-1), uint32(0),
- }
- for index := 0; index < len(test)/2; index++ {
- // FIXME terst, Make strict again?
- is(
- toUint32(toValue(test[index*2])),
- test[index*2+1].(uint32),
- )
- }
- })
-}
-
-func Test_toUint16(t *testing.T) {
- tt(t, func() {
- test := []interface{}{
- 0, uint16(0),
- 1, uint16(1),
- -2147483649.0, uint16(65535),
- -4294967297.0, uint16(65535),
- -4294967296.0, uint16(0),
- -4294967295.0, uint16(1),
- math.Inf(+1), uint16(0),
- math.Inf(-1), uint16(0),
- }
- for index := 0; index < len(test)/2; index++ {
- // FIXME terst, Make strict again?
- is(
- toUint16(toValue(test[index*2])),
- test[index*2+1].(uint16),
- )
- }
- })
-}
-
-func Test_sameValue(t *testing.T) {
- tt(t, func() {
- is(sameValue(positiveZeroValue(), negativeZeroValue()), false)
- is(sameValue(positiveZeroValue(), toValue(0)), true)
- is(sameValue(NaNValue(), NaNValue()), true)
- is(sameValue(NaNValue(), toValue("Nothing happens.")), false)
- })
-}
-
-func TestExport(t *testing.T) {
- tt(t, func() {
- test, vm := test()
-
- is(test(`null;`).export(), nil)
- is(test(`undefined;`).export(), nil)
- is(test(`true;`).export(), true)
- is(test(`false;`).export(), false)
- is(test(`0;`).export(), 0)
- is(test(`3.1459`).export(), 3.1459)
- is(test(`"Nothing happens";`).export(), "Nothing happens")
- is(test(`String.fromCharCode(97,98,99,100,101,102)`).export(), "abcdef")
- {
- value := test(`({ abc: 1, def: true, ghi: undefined });`).export().(map[string]interface{})
- is(value["abc"], 1)
- is(value["def"], true)
- _, exists := value["ghi"]
- is(exists, false)
- }
- {
- value := test(`[ "abc", 1, "def", true, undefined, null ];`).export().([]interface{})
- is(value[0], "abc")
- is(value[1], 1)
- is(value[2], "def")
- is(value[3], true)
- is(value[4], nil)
- is(value[5], nil)
- is(value[5], interface{}(nil))
- }
-
- roundtrip := []interface{}{
- true,
- false,
- 0,
- 3.1459,
- []interface{}{true, false, 0, 3.1459, "abc"},
- map[string]interface{}{
- "Boolean": true,
- "Number": 3.1459,
- "String": "abc",
- "Array": []interface{}{false, 0, "", nil},
- "Object": map[string]interface{}{
- "Boolean": false,
- "Number": 0,
- "String": "def",
- },
- },
- }
-
- for _, value := range roundtrip {
- input, err := json.Marshal(value)
- is(err, nil)
-
- output, err := json.Marshal(test("(" + string(input) + ");").export())
- is(err, nil)
-
- is(string(input), string(output))
- }
-
- {
- abc := struct {
- def int
- ghi interface{}
- xyz float32
- }{}
- abc.def = 3
- abc.xyz = 3.1459
- vm.Set("abc", abc)
- is(test(`abc;`).export(), abc)
- }
- })
-}
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/.gitignore b/Godeps/_workspace/src/github.com/shiena/ansicolor/.gitignore
deleted file mode 100644
index 69cec52c4..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/.gitignore
+++ /dev/null
@@ -1,27 +0,0 @@
-# Created by http://www.gitignore.io
-
-### Go ###
-# Compiled Object files, Static and Dynamic libs (Shared Objects)
-*.o
-*.a
-*.so
-
-# Folders
-_obj
-_test
-
-# Architecture specific extensions/prefixes
-*.[568vq]
-[568vq].out
-
-*.cgo1.go
-*.cgo2.c
-_cgo_defun.c
-_cgo_gotypes.go
-_cgo_export.*
-
-_testmain.go
-
-*.exe
-*.test
-
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/README.md b/Godeps/_workspace/src/github.com/shiena/ansicolor/README.md
deleted file mode 100644
index 7797a4f18..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-[![GoDoc](https://godoc.org/github.com/shiena/ansicolor?status.svg)](https://godoc.org/github.com/shiena/ansicolor)
-
-# ansicolor
-
-Ansicolor library provides color console in Windows as ANSICON for Golang.
-
-## Features
-
-|Escape sequence|Text attributes|
-|---------------|----|
-|\x1b[0m|All attributes off(color at startup)|
-|\x1b[1m|Bold on(enable foreground intensity)|
-|\x1b[4m|Underline on|
-|\x1b[5m|Blink on(enable background intensity)|
-|\x1b[21m|Bold off(disable foreground intensity)|
-|\x1b[24m|Underline off|
-|\x1b[25m|Blink off(disable background intensity)|
-
-|Escape sequence|Foreground colors|
-|---------------|----|
-|\x1b[30m|Black|
-|\x1b[31m|Red|
-|\x1b[32m|Green|
-|\x1b[33m|Yellow|
-|\x1b[34m|Blue|
-|\x1b[35m|Magenta|
-|\x1b[36m|Cyan|
-|\x1b[37m|White|
-|\x1b[39m|Default(foreground color at startup)|
-|\x1b[90m|Light Gray|
-|\x1b[91m|Light Red|
-|\x1b[92m|Light Green|
-|\x1b[93m|Light Yellow|
-|\x1b[94m|Light Blue|
-|\x1b[95m|Light Magenta|
-|\x1b[96m|Light Cyan|
-|\x1b[97m|Light White|
-
-|Escape sequence|Background colors|
-|---------------|----|
-|\x1b[40m|Black|
-|\x1b[41m|Red|
-|\x1b[42m|Green|
-|\x1b[43m|Yellow|
-|\x1b[44m|Blue|
-|\x1b[45m|Magenta|
-|\x1b[46m|Cyan|
-|\x1b[47m|White|
-|\x1b[49m|Default(background color at startup)|
-|\x1b[100m|Light Gray|
-|\x1b[101m|Light Red|
-|\x1b[102m|Light Green|
-|\x1b[103m|Light Yellow|
-|\x1b[104m|Light Blue|
-|\x1b[105m|Light Magenta|
-|\x1b[106m|Light Cyan|
-|\x1b[107m|Light White|
-
-## Example
-
-```go
-package main
-
-import (
- "fmt"
- "os"
-
- "github.com/shiena/ansicolor"
-)
-
-func main() {
- w := ansicolor.NewAnsiColorWriter(os.Stdout)
- text := "%sforeground %sbold%s %sbackground%s\n"
- fmt.Fprintf(w, text, "\x1b[31m", "\x1b[1m", "\x1b[21m", "\x1b[41;32m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[32m", "\x1b[1m", "\x1b[21m", "\x1b[42;31m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[33m", "\x1b[1m", "\x1b[21m", "\x1b[43;34m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[34m", "\x1b[1m", "\x1b[21m", "\x1b[44;33m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[35m", "\x1b[1m", "\x1b[21m", "\x1b[45;36m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[36m", "\x1b[1m", "\x1b[21m", "\x1b[46;35m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[37m", "\x1b[1m", "\x1b[21m", "\x1b[47;30m", "\x1b[0m")
-}
-```
-
-![screenshot](https://gist.githubusercontent.com/shiena/a1bada24b525314a7d5e/raw/c763aa7cda6e4fefaccf831e2617adc40b6151c7/main.png)
-
-## See also:
-
-- https://github.com/daviddengcn/go-colortext
-- https://github.com/adoxa/ansicon
-- https://github.com/aslakhellesoy/wac
-- https://github.com/wsxiaoys/terminal
-
-## Contributing
-
-1. Fork it
-2. Create your feature branch (`git checkout -b my-new-feature`)
-3. Commit your changes (`git commit -am 'Add some feature'`)
-4. Push to the branch (`git push origin my-new-feature`)
-5. Create new Pull Request
-
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor.go b/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor.go
deleted file mode 100644
index d3ece8fc0..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2014 shiena Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-// Package ansicolor provides color console in Windows as ANSICON.
-package ansicolor
-
-import "io"
-
-// NewAnsiColorWriter creates and initializes a new ansiColorWriter
-// using io.Writer w as its initial contents.
-// In the console of Windows, which change the foreground and background
-// colors of the text by the escape sequence.
-// In the console of other systems, which writes to w all text.
-func NewAnsiColorWriter(w io.Writer) io.Writer {
- if _, ok := w.(*ansiColorWriter); !ok {
- return &ansiColorWriter{w: w}
- }
- return w
-}
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor/main.go b/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor/main.go
deleted file mode 100644
index d86cfc0f3..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor/main.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2014 shiena Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-/*
-
-The ansicolor command colors a console text by ANSI escape sequence like wac.
-
- $ go get github.com/shiena/ansicolor/ansicolor
-
-See also:
- https://github.com/aslakhellesoy/wac
-
-*/
-package main
-
-import (
- "io"
- "os"
-
- "github.com/shiena/ansicolor"
-)
-
-func main() {
- w := ansicolor.NewAnsiColorWriter(os.Stdout)
- io.Copy(w, os.Stdin)
-}
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_ansi.go b/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_ansi.go
deleted file mode 100644
index 57b4633a7..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_ansi.go
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2014 shiena Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-// +build !windows
-
-package ansicolor
-
-import "io"
-
-type ansiColorWriter struct {
- w io.Writer
-}
-
-func (cw *ansiColorWriter) Write(p []byte) (int, error) {
- return cw.w.Write(p)
-}
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_test.go b/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_test.go
deleted file mode 100644
index 4feeb1de6..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_test.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package ansicolor_test
-
-import (
- "bytes"
- "testing"
-
- "github.com/shiena/ansicolor"
-)
-
-func TestNewAnsiColor1(t *testing.T) {
- inner := bytes.NewBufferString("")
- w := ansicolor.NewAnsiColorWriter(inner)
- if w == inner {
- t.Errorf("Get %#v, want %#v", w, inner)
- }
-}
-
-func TestNewAnsiColor2(t *testing.T) {
- inner := bytes.NewBufferString("")
- w1 := ansicolor.NewAnsiColorWriter(inner)
- w2 := ansicolor.NewAnsiColorWriter(w1)
- if w1 != w2 {
- t.Errorf("Get %#v, want %#v", w1, w2)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_windows.go b/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_windows.go
deleted file mode 100644
index d918ffe91..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_windows.go
+++ /dev/null
@@ -1,351 +0,0 @@
-// Copyright 2014 shiena Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package ansicolor
-
-import (
- "bytes"
- "io"
- "strings"
- "syscall"
- "unsafe"
-)
-
-type csiState int
-
-const (
- outsideCsiCode csiState = iota
- firstCsiCode
- secondCsiCode
-)
-
-type ansiColorWriter struct {
- w io.Writer
- state csiState
- paramBuf bytes.Buffer
-}
-
-const (
- firstCsiChar byte = '\x1b'
- secondeCsiChar byte = '['
- separatorChar byte = ';'
- sgrCode byte = 'm'
-)
-
-const (
- foregroundBlue = uint16(0x0001)
- foregroundGreen = uint16(0x0002)
- foregroundRed = uint16(0x0004)
- foregroundIntensity = uint16(0x0008)
- backgroundBlue = uint16(0x0010)
- backgroundGreen = uint16(0x0020)
- backgroundRed = uint16(0x0040)
- backgroundIntensity = uint16(0x0080)
- underscore = uint16(0x8000)
-
- foregroundMask = foregroundBlue | foregroundGreen | foregroundRed | foregroundIntensity
- backgroundMask = backgroundBlue | backgroundGreen | backgroundRed | backgroundIntensity
-)
-
-const (
- ansiReset = "0"
- ansiIntensityOn = "1"
- ansiIntensityOff = "21"
- ansiUnderlineOn = "4"
- ansiUnderlineOff = "24"
- ansiBlinkOn = "5"
- ansiBlinkOff = "25"
-
- ansiForegroundBlack = "30"
- ansiForegroundRed = "31"
- ansiForegroundGreen = "32"
- ansiForegroundYellow = "33"
- ansiForegroundBlue = "34"
- ansiForegroundMagenta = "35"
- ansiForegroundCyan = "36"
- ansiForegroundWhite = "37"
- ansiForegroundDefault = "39"
-
- ansiBackgroundBlack = "40"
- ansiBackgroundRed = "41"
- ansiBackgroundGreen = "42"
- ansiBackgroundYellow = "43"
- ansiBackgroundBlue = "44"
- ansiBackgroundMagenta = "45"
- ansiBackgroundCyan = "46"
- ansiBackgroundWhite = "47"
- ansiBackgroundDefault = "49"
-
- ansiLightForegroundGray = "90"
- ansiLightForegroundRed = "91"
- ansiLightForegroundGreen = "92"
- ansiLightForegroundYellow = "93"
- ansiLightForegroundBlue = "94"
- ansiLightForegroundMagenta = "95"
- ansiLightForegroundCyan = "96"
- ansiLightForegroundWhite = "97"
-
- ansiLightBackgroundGray = "100"
- ansiLightBackgroundRed = "101"
- ansiLightBackgroundGreen = "102"
- ansiLightBackgroundYellow = "103"
- ansiLightBackgroundBlue = "104"
- ansiLightBackgroundMagenta = "105"
- ansiLightBackgroundCyan = "106"
- ansiLightBackgroundWhite = "107"
-)
-
-type drawType int
-
-const (
- foreground drawType = iota
- background
-)
-
-type winColor struct {
- code uint16
- drawType drawType
-}
-
-var colorMap = map[string]winColor{
- ansiForegroundBlack: {0, foreground},
- ansiForegroundRed: {foregroundRed, foreground},
- ansiForegroundGreen: {foregroundGreen, foreground},
- ansiForegroundYellow: {foregroundRed | foregroundGreen, foreground},
- ansiForegroundBlue: {foregroundBlue, foreground},
- ansiForegroundMagenta: {foregroundRed | foregroundBlue, foreground},
- ansiForegroundCyan: {foregroundGreen | foregroundBlue, foreground},
- ansiForegroundWhite: {foregroundRed | foregroundGreen | foregroundBlue, foreground},
- ansiForegroundDefault: {foregroundRed | foregroundGreen | foregroundBlue, foreground},
-
- ansiBackgroundBlack: {0, background},
- ansiBackgroundRed: {backgroundRed, background},
- ansiBackgroundGreen: {backgroundGreen, background},
- ansiBackgroundYellow: {backgroundRed | backgroundGreen, background},
- ansiBackgroundBlue: {backgroundBlue, background},
- ansiBackgroundMagenta: {backgroundRed | backgroundBlue, background},
- ansiBackgroundCyan: {backgroundGreen | backgroundBlue, background},
- ansiBackgroundWhite: {backgroundRed | backgroundGreen | backgroundBlue, background},
- ansiBackgroundDefault: {0, background},
-
- ansiLightForegroundGray: {foregroundIntensity, foreground},
- ansiLightForegroundRed: {foregroundIntensity | foregroundRed, foreground},
- ansiLightForegroundGreen: {foregroundIntensity | foregroundGreen, foreground},
- ansiLightForegroundYellow: {foregroundIntensity | foregroundRed | foregroundGreen, foreground},
- ansiLightForegroundBlue: {foregroundIntensity | foregroundBlue, foreground},
- ansiLightForegroundMagenta: {foregroundIntensity | foregroundRed | foregroundBlue, foreground},
- ansiLightForegroundCyan: {foregroundIntensity | foregroundGreen | foregroundBlue, foreground},
- ansiLightForegroundWhite: {foregroundIntensity | foregroundRed | foregroundGreen | foregroundBlue, foreground},
-
- ansiLightBackgroundGray: {backgroundIntensity, background},
- ansiLightBackgroundRed: {backgroundIntensity | backgroundRed, background},
- ansiLightBackgroundGreen: {backgroundIntensity | backgroundGreen, background},
- ansiLightBackgroundYellow: {backgroundIntensity | backgroundRed | backgroundGreen, background},
- ansiLightBackgroundBlue: {backgroundIntensity | backgroundBlue, background},
- ansiLightBackgroundMagenta: {backgroundIntensity | backgroundRed | backgroundBlue, background},
- ansiLightBackgroundCyan: {backgroundIntensity | backgroundGreen | backgroundBlue, background},
- ansiLightBackgroundWhite: {backgroundIntensity | backgroundRed | backgroundGreen | backgroundBlue, background},
-}
-
-var (
- kernel32 = syscall.NewLazyDLL("kernel32.dll")
- procSetConsoleTextAttribute = kernel32.NewProc("SetConsoleTextAttribute")
- procGetConsoleScreenBufferInfo = kernel32.NewProc("GetConsoleScreenBufferInfo")
- defaultAttr *textAttributes
-)
-
-func init() {
- screenInfo := getConsoleScreenBufferInfo(uintptr(syscall.Stdout))
- if screenInfo != nil {
- colorMap[ansiForegroundDefault] = winColor{
- screenInfo.WAttributes & (foregroundRed | foregroundGreen | foregroundBlue),
- foreground,
- }
- colorMap[ansiBackgroundDefault] = winColor{
- screenInfo.WAttributes & (backgroundRed | backgroundGreen | backgroundBlue),
- background,
- }
- defaultAttr = convertTextAttr(screenInfo.WAttributes)
- }
-}
-
-type coord struct {
- X, Y int16
-}
-
-type smallRect struct {
- Left, Top, Right, Bottom int16
-}
-
-type consoleScreenBufferInfo struct {
- DwSize coord
- DwCursorPosition coord
- WAttributes uint16
- SrWindow smallRect
- DwMaximumWindowSize coord
-}
-
-func getConsoleScreenBufferInfo(hConsoleOutput uintptr) *consoleScreenBufferInfo {
- var csbi consoleScreenBufferInfo
- ret, _, _ := procGetConsoleScreenBufferInfo.Call(
- hConsoleOutput,
- uintptr(unsafe.Pointer(&csbi)))
- if ret == 0 {
- return nil
- }
- return &csbi
-}
-
-func setConsoleTextAttribute(hConsoleOutput uintptr, wAttributes uint16) bool {
- ret, _, _ := procSetConsoleTextAttribute.Call(
- hConsoleOutput,
- uintptr(wAttributes))
- return ret != 0
-}
-
-type textAttributes struct {
- foregroundColor uint16
- backgroundColor uint16
- foregroundIntensity uint16
- backgroundIntensity uint16
- underscore uint16
- otherAttributes uint16
-}
-
-func convertTextAttr(winAttr uint16) *textAttributes {
- fgColor := winAttr & (foregroundRed | foregroundGreen | foregroundBlue)
- bgColor := winAttr & (backgroundRed | backgroundGreen | backgroundBlue)
- fgIntensity := winAttr & foregroundIntensity
- bgIntensity := winAttr & backgroundIntensity
- underline := winAttr & underscore
- otherAttributes := winAttr &^ (foregroundMask | backgroundMask | underscore)
- return &textAttributes{fgColor, bgColor, fgIntensity, bgIntensity, underline, otherAttributes}
-}
-
-func convertWinAttr(textAttr *textAttributes) uint16 {
- var winAttr uint16 = 0
- winAttr |= textAttr.foregroundColor
- winAttr |= textAttr.backgroundColor
- winAttr |= textAttr.foregroundIntensity
- winAttr |= textAttr.backgroundIntensity
- winAttr |= textAttr.underscore
- winAttr |= textAttr.otherAttributes
- return winAttr
-}
-
-func changeColor(param []byte) {
- if defaultAttr == nil {
- return
- }
-
- screenInfo := getConsoleScreenBufferInfo(uintptr(syscall.Stdout))
- if screenInfo == nil {
- return
- }
-
- winAttr := convertTextAttr(screenInfo.WAttributes)
- strParam := string(param)
- if len(strParam) <= 0 {
- strParam = "0"
- }
- csiParam := strings.Split(strParam, string(separatorChar))
- for _, p := range csiParam {
- c, ok := colorMap[p]
- switch {
- case !ok:
- switch p {
- case ansiReset:
- winAttr.foregroundColor = defaultAttr.foregroundColor
- winAttr.backgroundColor = defaultAttr.backgroundColor
- winAttr.foregroundIntensity = defaultAttr.foregroundIntensity
- winAttr.backgroundIntensity = defaultAttr.backgroundIntensity
- winAttr.underscore = 0
- winAttr.otherAttributes = 0
- case ansiIntensityOn:
- winAttr.foregroundIntensity = foregroundIntensity
- case ansiIntensityOff:
- winAttr.foregroundIntensity = 0
- case ansiUnderlineOn:
- winAttr.underscore = underscore
- case ansiUnderlineOff:
- winAttr.underscore = 0
- case ansiBlinkOn:
- winAttr.backgroundIntensity = backgroundIntensity
- case ansiBlinkOff:
- winAttr.backgroundIntensity = 0
- default:
- // unknown code
- }
- case c.drawType == foreground:
- winAttr.foregroundColor = c.code
- case c.drawType == background:
- winAttr.backgroundColor = c.code
- }
- }
- winTextAttribute := convertWinAttr(winAttr)
- setConsoleTextAttribute(uintptr(syscall.Stdout), winTextAttribute)
-}
-
-func parseEscapeSequence(command byte, param []byte) {
- switch command {
- case sgrCode:
- changeColor(param)
- }
-}
-
-func isParameterChar(b byte) bool {
- return ('0' <= b && b <= '9') || b == separatorChar
-}
-
-func (cw *ansiColorWriter) Write(p []byte) (int, error) {
- r, nw, nc, first, last := 0, 0, 0, 0, 0
- var err error
- for i, ch := range p {
- switch cw.state {
- case outsideCsiCode:
- if ch == firstCsiChar {
- nc++
- cw.state = firstCsiCode
- }
- case firstCsiCode:
- switch ch {
- case firstCsiChar:
- nc++
- break
- case secondeCsiChar:
- nc++
- cw.state = secondCsiCode
- last = i - 1
- default:
- cw.state = outsideCsiCode
- }
- case secondCsiCode:
- nc++
- if isParameterChar(ch) {
- cw.paramBuf.WriteByte(ch)
- } else {
- nw, err = cw.w.Write(p[first:last])
- r += nw
- if err != nil {
- return r, err
- }
- first = i + 1
- param := cw.paramBuf.Bytes()
- cw.paramBuf.Reset()
- parseEscapeSequence(ch, param)
- cw.state = outsideCsiCode
- }
- default:
- cw.state = outsideCsiCode
- }
- }
-
- if cw.state == outsideCsiCode {
- nw, err = cw.w.Write(p[first:len(p)])
- }
-
- return r + nw + nc, err
-}
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_windows_test.go b/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_windows_test.go
deleted file mode 100644
index 6c126d517..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/ansicolor_windows_test.go
+++ /dev/null
@@ -1,236 +0,0 @@
-// Copyright 2014 shiena Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package ansicolor_test
-
-import (
- "bytes"
- "fmt"
- "syscall"
- "testing"
-
- "github.com/shiena/ansicolor"
- . "github.com/shiena/ansicolor"
-)
-
-func TestWritePlanText(t *testing.T) {
- inner := bytes.NewBufferString("")
- w := ansicolor.NewAnsiColorWriter(inner)
- expected := "plain text"
- fmt.Fprintf(w, expected)
- actual := inner.String()
- if actual != expected {
- t.Errorf("Get %s, want %s", actual, expected)
- }
-}
-
-func TestWriteParseText(t *testing.T) {
- inner := bytes.NewBufferString("")
- w := ansicolor.NewAnsiColorWriter(inner)
-
- inputTail := "\x1b[0mtail text"
- expectedTail := "tail text"
- fmt.Fprintf(w, inputTail)
- actualTail := inner.String()
- inner.Reset()
- if actualTail != expectedTail {
- t.Errorf("Get %s, want %s", actualTail, expectedTail)
- }
-
- inputHead := "head text\x1b[0m"
- expectedHead := "head text"
- fmt.Fprintf(w, inputHead)
- actualHead := inner.String()
- inner.Reset()
- if actualHead != expectedHead {
- t.Errorf("Get %s, want %s", actualHead, expectedHead)
- }
-
- inputBothEnds := "both ends \x1b[0m text"
- expectedBothEnds := "both ends text"
- fmt.Fprintf(w, inputBothEnds)
- actualBothEnds := inner.String()
- inner.Reset()
- if actualBothEnds != expectedBothEnds {
- t.Errorf("Get %s, want %s", actualBothEnds, expectedBothEnds)
- }
-
- inputManyEsc := "\x1b\x1b\x1b\x1b[0m many esc"
- expectedManyEsc := "\x1b\x1b\x1b many esc"
- fmt.Fprintf(w, inputManyEsc)
- actualManyEsc := inner.String()
- inner.Reset()
- if actualManyEsc != expectedManyEsc {
- t.Errorf("Get %s, want %s", actualManyEsc, expectedManyEsc)
- }
-
- expectedSplit := "split text"
- for _, ch := range "split \x1b[0m text" {
- fmt.Fprintf(w, string(ch))
- }
- actualSplit := inner.String()
- inner.Reset()
- if actualSplit != expectedSplit {
- t.Errorf("Get %s, want %s", actualSplit, expectedSplit)
- }
-}
-
-type screenNotFoundError struct {
- error
-}
-
-func writeAnsiColor(expectedText, colorCode string) (actualText string, actualAttributes uint16, err error) {
- inner := bytes.NewBufferString("")
- w := ansicolor.NewAnsiColorWriter(inner)
- fmt.Fprintf(w, "\x1b[%sm%s", colorCode, expectedText)
-
- actualText = inner.String()
- screenInfo := GetConsoleScreenBufferInfo(uintptr(syscall.Stdout))
- if screenInfo != nil {
- actualAttributes = screenInfo.WAttributes
- } else {
- err = &screenNotFoundError{}
- }
- return
-}
-
-type testParam struct {
- text string
- attributes uint16
- ansiColor string
-}
-
-func TestWriteAnsiColorText(t *testing.T) {
- screenInfo := GetConsoleScreenBufferInfo(uintptr(syscall.Stdout))
- if screenInfo == nil {
- t.Fatal("Could not get ConsoleScreenBufferInfo")
- }
- defer ChangeColor(screenInfo.WAttributes)
- defaultFgColor := screenInfo.WAttributes & uint16(0x0007)
- defaultBgColor := screenInfo.WAttributes & uint16(0x0070)
- defaultFgIntensity := screenInfo.WAttributes & uint16(0x0008)
- defaultBgIntensity := screenInfo.WAttributes & uint16(0x0080)
-
- fgParam := []testParam{
- {"foreground black ", uint16(0x0000 | 0x0000), "30"},
- {"foreground red ", uint16(0x0004 | 0x0000), "31"},
- {"foreground green ", uint16(0x0002 | 0x0000), "32"},
- {"foreground yellow ", uint16(0x0006 | 0x0000), "33"},
- {"foreground blue ", uint16(0x0001 | 0x0000), "34"},
- {"foreground magenta", uint16(0x0005 | 0x0000), "35"},
- {"foreground cyan ", uint16(0x0003 | 0x0000), "36"},
- {"foreground white ", uint16(0x0007 | 0x0000), "37"},
- {"foreground default", defaultFgColor | 0x0000, "39"},
- {"foreground light gray ", uint16(0x0000 | 0x0008 | 0x0000), "90"},
- {"foreground light red ", uint16(0x0004 | 0x0008 | 0x0000), "91"},
- {"foreground light green ", uint16(0x0002 | 0x0008 | 0x0000), "92"},
- {"foreground light yellow ", uint16(0x0006 | 0x0008 | 0x0000), "93"},
- {"foreground light blue ", uint16(0x0001 | 0x0008 | 0x0000), "94"},
- {"foreground light magenta", uint16(0x0005 | 0x0008 | 0x0000), "95"},
- {"foreground light cyan ", uint16(0x0003 | 0x0008 | 0x0000), "96"},
- {"foreground light white ", uint16(0x0007 | 0x0008 | 0x0000), "97"},
- }
-
- bgParam := []testParam{
- {"background black ", uint16(0x0007 | 0x0000), "40"},
- {"background red ", uint16(0x0007 | 0x0040), "41"},
- {"background green ", uint16(0x0007 | 0x0020), "42"},
- {"background yellow ", uint16(0x0007 | 0x0060), "43"},
- {"background blue ", uint16(0x0007 | 0x0010), "44"},
- {"background magenta", uint16(0x0007 | 0x0050), "45"},
- {"background cyan ", uint16(0x0007 | 0x0030), "46"},
- {"background white ", uint16(0x0007 | 0x0070), "47"},
- {"background default", uint16(0x0007) | defaultBgColor, "49"},
- {"background light gray ", uint16(0x0007 | 0x0000 | 0x0080), "100"},
- {"background light red ", uint16(0x0007 | 0x0040 | 0x0080), "101"},
- {"background light green ", uint16(0x0007 | 0x0020 | 0x0080), "102"},
- {"background light yellow ", uint16(0x0007 | 0x0060 | 0x0080), "103"},
- {"background light blue ", uint16(0x0007 | 0x0010 | 0x0080), "104"},
- {"background light magenta", uint16(0x0007 | 0x0050 | 0x0080), "105"},
- {"background light cyan ", uint16(0x0007 | 0x0030 | 0x0080), "106"},
- {"background light white ", uint16(0x0007 | 0x0070 | 0x0080), "107"},
- }
-
- resetParam := []testParam{
- {"all reset", defaultFgColor | defaultBgColor | defaultFgIntensity | defaultBgIntensity, "0"},
- {"all reset", defaultFgColor | defaultBgColor | defaultFgIntensity | defaultBgIntensity, ""},
- }
-
- boldParam := []testParam{
- {"bold on", uint16(0x0007 | 0x0008), "1"},
- {"bold off", uint16(0x0007), "21"},
- }
-
- underscoreParam := []testParam{
- {"underscore on", uint16(0x0007 | 0x8000), "4"},
- {"underscore off", uint16(0x0007), "24"},
- }
-
- blinkParam := []testParam{
- {"blink on", uint16(0x0007 | 0x0080), "5"},
- {"blink off", uint16(0x0007), "25"},
- }
-
- mixedParam := []testParam{
- {"both black, bold, underline, blink", uint16(0x0000 | 0x0000 | 0x0008 | 0x8000 | 0x0080), "30;40;1;4;5"},
- {"both red, bold, underline, blink", uint16(0x0004 | 0x0040 | 0x0008 | 0x8000 | 0x0080), "31;41;1;4;5"},
- {"both green, bold, underline, blink", uint16(0x0002 | 0x0020 | 0x0008 | 0x8000 | 0x0080), "32;42;1;4;5"},
- {"both yellow, bold, underline, blink", uint16(0x0006 | 0x0060 | 0x0008 | 0x8000 | 0x0080), "33;43;1;4;5"},
- {"both blue, bold, underline, blink", uint16(0x0001 | 0x0010 | 0x0008 | 0x8000 | 0x0080), "34;44;1;4;5"},
- {"both magenta, bold, underline, blink", uint16(0x0005 | 0x0050 | 0x0008 | 0x8000 | 0x0080), "35;45;1;4;5"},
- {"both cyan, bold, underline, blink", uint16(0x0003 | 0x0030 | 0x0008 | 0x8000 | 0x0080), "36;46;1;4;5"},
- {"both white, bold, underline, blink", uint16(0x0007 | 0x0070 | 0x0008 | 0x8000 | 0x0080), "37;47;1;4;5"},
- {"both default, bold, underline, blink", uint16(defaultFgColor | defaultBgColor | 0x0008 | 0x8000 | 0x0080), "39;49;1;4;5"},
- }
-
- assertTextAttribute := func(expectedText string, expectedAttributes uint16, ansiColor string) {
- actualText, actualAttributes, err := writeAnsiColor(expectedText, ansiColor)
- if actualText != expectedText {
- t.Errorf("Get %s, want %s", actualText, expectedText)
- }
- if err != nil {
- t.Fatal("Could not get ConsoleScreenBufferInfo")
- }
- if actualAttributes != expectedAttributes {
- t.Errorf("Text: %s, Get 0x%04x, want 0x%04x", expectedText, actualAttributes, expectedAttributes)
- }
- }
-
- for _, v := range fgParam {
- ResetColor()
- assertTextAttribute(v.text, v.attributes, v.ansiColor)
- }
-
- for _, v := range bgParam {
- ChangeColor(uint16(0x0070 | 0x0007))
- assertTextAttribute(v.text, v.attributes, v.ansiColor)
- }
-
- for _, v := range resetParam {
- ChangeColor(uint16(0x0000 | 0x0070 | 0x0008))
- assertTextAttribute(v.text, v.attributes, v.ansiColor)
- }
-
- ResetColor()
- for _, v := range boldParam {
- assertTextAttribute(v.text, v.attributes, v.ansiColor)
- }
-
- ResetColor()
- for _, v := range underscoreParam {
- assertTextAttribute(v.text, v.attributes, v.ansiColor)
- }
-
- ResetColor()
- for _, v := range blinkParam {
- assertTextAttribute(v.text, v.attributes, v.ansiColor)
- }
-
- for _, v := range mixedParam {
- ResetColor()
- assertTextAttribute(v.text, v.attributes, v.ansiColor)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/example_test.go b/Godeps/_workspace/src/github.com/shiena/ansicolor/example_test.go
deleted file mode 100644
index f2ac67c17..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/example_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2014 shiena Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package ansicolor_test
-
-import (
- "fmt"
- "os"
-
- "github.com/shiena/ansicolor"
-)
-
-func ExampleNewAnsiColorWriter() {
- w := ansicolor.NewAnsiColorWriter(os.Stdout)
- text := "%sforeground %sbold%s %sbackground%s\n"
- fmt.Fprintf(w, text, "\x1b[31m", "\x1b[1m", "\x1b[21m", "\x1b[41;32m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[32m", "\x1b[1m", "\x1b[21m", "\x1b[42;31m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[33m", "\x1b[1m", "\x1b[21m", "\x1b[43;34m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[34m", "\x1b[1m", "\x1b[21m", "\x1b[44;33m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[35m", "\x1b[1m", "\x1b[21m", "\x1b[45;36m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[36m", "\x1b[1m", "\x1b[21m", "\x1b[46;35m", "\x1b[0m")
- fmt.Fprintf(w, text, "\x1b[37m", "\x1b[1m", "\x1b[21m", "\x1b[47;30m", "\x1b[0m")
-}
diff --git a/Godeps/_workspace/src/github.com/shiena/ansicolor/export_test.go b/Godeps/_workspace/src/github.com/shiena/ansicolor/export_test.go
deleted file mode 100644
index 6d2f7c074..000000000
--- a/Godeps/_workspace/src/github.com/shiena/ansicolor/export_test.go
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2014 shiena Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package ansicolor
-
-import "syscall"
-
-var GetConsoleScreenBufferInfo = getConsoleScreenBufferInfo
-
-func ChangeColor(color uint16) {
- setConsoleTextAttribute(uintptr(syscall.Stdout), color)
-}
-
-func ResetColor() {
- ChangeColor(uint16(0x0007))
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/LICENSE b/Godeps/_workspace/src/github.com/syndtr/goleveldb/LICENSE
new file mode 100644
index 000000000..4a772d1ab
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/LICENSE
@@ -0,0 +1,24 @@
+Copyright 2012 Suryandaru Triandana <syndtr@gmail.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go
index ccf390c9c..89fcf34bb 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch.go
@@ -12,6 +12,7 @@ import (
"github.com/syndtr/goleveldb/leveldb/errors"
"github.com/syndtr/goleveldb/leveldb/memdb"
+ "github.com/syndtr/goleveldb/leveldb/storage"
)
type ErrBatchCorrupted struct {
@@ -23,7 +24,7 @@ func (e *ErrBatchCorrupted) Error() string {
}
func newErrBatchCorrupted(reason string) error {
- return errors.NewErrCorrupted(nil, &ErrBatchCorrupted{reason})
+ return errors.NewErrCorrupted(storage.FileDesc{}, &ErrBatchCorrupted{reason})
}
const (
@@ -121,13 +122,14 @@ func (b *Batch) Load(data []byte) error {
// Replay replays batch contents.
func (b *Batch) Replay(r BatchReplay) error {
- return b.decodeRec(func(i int, kt kType, key, value []byte) {
+ return b.decodeRec(func(i int, kt kType, key, value []byte) error {
switch kt {
case ktVal:
r.Put(key, value)
case ktDel:
r.Delete(key)
}
+ return nil
})
}
@@ -193,7 +195,7 @@ func (b *Batch) decode(prevSeq uint64, data []byte) error {
return nil
}
-func (b *Batch) decodeRec(f func(i int, kt kType, key, value []byte)) (err error) {
+func (b *Batch) decodeRec(f func(i int, kt kType, key, value []byte) error) error {
off := batchHdrLen
for i := 0; i < b.rLen; i++ {
if off >= len(b.data) {
@@ -224,16 +226,19 @@ func (b *Batch) decodeRec(f func(i int, kt kType, key, value []byte)) (err error
off += int(x)
}
- f(i, kt, key, value)
+ if err := f(i, kt, key, value); err != nil {
+ return err
+ }
}
return nil
}
func (b *Batch) memReplay(to *memdb.DB) error {
- return b.decodeRec(func(i int, kt kType, key, value []byte) {
- ikey := newIkey(key, b.seq+uint64(i), kt)
- to.Put(ikey, value)
+ var ikScratch []byte
+ return b.decodeRec(func(i int, kt kType, key, value []byte) error {
+ ikScratch = makeIkey(ikScratch, key, b.seq+uint64(i), kt)
+ return to.Put(ikScratch, value)
})
}
@@ -245,8 +250,9 @@ func (b *Batch) memDecodeAndReplay(prevSeq uint64, data []byte, to *memdb.DB) er
}
func (b *Batch) revertMemReplay(to *memdb.DB) error {
- return b.decodeRec(func(i int, kt kType, key, value []byte) {
- ikey := newIkey(key, b.seq+uint64(i), kt)
- to.Delete(ikey)
+ var ikScratch []byte
+ return b.decodeRec(func(i int, kt kType, key, value []byte) error {
+ ikScratch := makeIkey(ikScratch, key, b.seq+uint64(i), kt)
+ return to.Delete(ikScratch)
})
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch_test.go
deleted file mode 100644
index 7fc842f4f..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/batch_test.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
- "bytes"
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
- "github.com/syndtr/goleveldb/leveldb/memdb"
-)
-
-type tbRec struct {
- kt kType
- key, value []byte
-}
-
-type testBatch struct {
- rec []*tbRec
-}
-
-func (p *testBatch) Put(key, value []byte) {
- p.rec = append(p.rec, &tbRec{ktVal, key, value})
-}
-
-func (p *testBatch) Delete(key []byte) {
- p.rec = append(p.rec, &tbRec{ktDel, key, nil})
-}
-
-func compareBatch(t *testing.T, b1, b2 *Batch) {
- if b1.seq != b2.seq {
- t.Errorf("invalid seq number want %d, got %d", b1.seq, b2.seq)
- }
- if b1.Len() != b2.Len() {
- t.Fatalf("invalid record length want %d, got %d", b1.Len(), b2.Len())
- }
- p1, p2 := new(testBatch), new(testBatch)
- err := b1.Replay(p1)
- if err != nil {
- t.Fatal("error when replaying batch 1: ", err)
- }
- err = b2.Replay(p2)
- if err != nil {
- t.Fatal("error when replaying batch 2: ", err)
- }
- for i := range p1.rec {
- r1, r2 := p1.rec[i], p2.rec[i]
- if r1.kt != r2.kt {
- t.Errorf("invalid type on record '%d' want %d, got %d", i, r1.kt, r2.kt)
- }
- if !bytes.Equal(r1.key, r2.key) {
- t.Errorf("invalid key on record '%d' want %s, got %s", i, string(r1.key), string(r2.key))
- }
- if r1.kt == ktVal {
- if !bytes.Equal(r1.value, r2.value) {
- t.Errorf("invalid value on record '%d' want %s, got %s", i, string(r1.value), string(r2.value))
- }
- }
- }
-}
-
-func TestBatch_EncodeDecode(t *testing.T) {
- b1 := new(Batch)
- b1.seq = 10009
- b1.Put([]byte("key1"), []byte("value1"))
- b1.Put([]byte("key2"), []byte("value2"))
- b1.Delete([]byte("key1"))
- b1.Put([]byte("k"), []byte(""))
- b1.Put([]byte("zzzzzzzzzzz"), []byte("zzzzzzzzzzzzzzzzzzzzzzzz"))
- b1.Delete([]byte("key10000"))
- b1.Delete([]byte("k"))
- buf := b1.encode()
- b2 := new(Batch)
- err := b2.decode(0, buf)
- if err != nil {
- t.Error("error when decoding batch: ", err)
- }
- compareBatch(t, b1, b2)
-}
-
-func TestBatch_Append(t *testing.T) {
- b1 := new(Batch)
- b1.seq = 10009
- b1.Put([]byte("key1"), []byte("value1"))
- b1.Put([]byte("key2"), []byte("value2"))
- b1.Delete([]byte("key1"))
- b1.Put([]byte("foo"), []byte("foovalue"))
- b1.Put([]byte("bar"), []byte("barvalue"))
- b2a := new(Batch)
- b2a.seq = 10009
- b2a.Put([]byte("key1"), []byte("value1"))
- b2a.Put([]byte("key2"), []byte("value2"))
- b2a.Delete([]byte("key1"))
- b2b := new(Batch)
- b2b.Put([]byte("foo"), []byte("foovalue"))
- b2b.Put([]byte("bar"), []byte("barvalue"))
- b2a.append(b2b)
- compareBatch(t, b1, b2a)
-}
-
-func TestBatch_Size(t *testing.T) {
- b := new(Batch)
- for i := 0; i < 2; i++ {
- b.Put([]byte("key1"), []byte("value1"))
- b.Put([]byte("key2"), []byte("value2"))
- b.Delete([]byte("key1"))
- b.Put([]byte("foo"), []byte("foovalue"))
- b.Put([]byte("bar"), []byte("barvalue"))
- mem := memdb.New(&iComparer{comparer.DefaultComparer}, 0)
- b.memReplay(mem)
- if b.size() != mem.Size() {
- t.Errorf("invalid batch size calculation, want=%d got=%d", mem.Size(), b.size())
- }
- b.Reset()
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/bench2_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/bench2_test.go
deleted file mode 100644
index 0dd60fd82..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/bench2_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// +build !go1.2
-
-package leveldb
-
-import (
- "sync/atomic"
- "testing"
-)
-
-func BenchmarkDBReadConcurrent(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.gc()
- defer p.close()
-
- b.ResetTimer()
- b.SetBytes(116)
-
- b.RunParallel(func(pb *testing.PB) {
- iter := p.newIter()
- defer iter.Release()
- for pb.Next() && iter.Next() {
- }
- })
-}
-
-func BenchmarkDBReadConcurrent2(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.gc()
- defer p.close()
-
- b.ResetTimer()
- b.SetBytes(116)
-
- var dir uint32
- b.RunParallel(func(pb *testing.PB) {
- iter := p.newIter()
- defer iter.Release()
- if atomic.AddUint32(&dir, 1)%2 == 0 {
- for pb.Next() && iter.Next() {
- }
- } else {
- if pb.Next() && iter.Last() {
- for pb.Next() && iter.Prev() {
- }
- }
- }
- })
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/bench_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/bench_test.go
deleted file mode 100644
index 91b426709..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/bench_test.go
+++ /dev/null
@@ -1,464 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
- "bytes"
- "fmt"
- "math/rand"
- "os"
- "path/filepath"
- "runtime"
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/opt"
- "github.com/syndtr/goleveldb/leveldb/storage"
-)
-
-func randomString(r *rand.Rand, n int) []byte {
- b := new(bytes.Buffer)
- for i := 0; i < n; i++ {
- b.WriteByte(' ' + byte(r.Intn(95)))
- }
- return b.Bytes()
-}
-
-func compressibleStr(r *rand.Rand, frac float32, n int) []byte {
- nn := int(float32(n) * frac)
- rb := randomString(r, nn)
- b := make([]byte, 0, n+nn)
- for len(b) < n {
- b = append(b, rb...)
- }
- return b[:n]
-}
-
-type valueGen struct {
- src []byte
- pos int
-}
-
-func newValueGen(frac float32) *valueGen {
- v := new(valueGen)
- r := rand.New(rand.NewSource(301))
- v.src = make([]byte, 0, 1048576+100)
- for len(v.src) < 1048576 {
- v.src = append(v.src, compressibleStr(r, frac, 100)...)
- }
- return v
-}
-
-func (v *valueGen) get(n int) []byte {
- if v.pos+n > len(v.src) {
- v.pos = 0
- }
- v.pos += n
- return v.src[v.pos-n : v.pos]
-}
-
-var benchDB = filepath.Join(os.TempDir(), fmt.Sprintf("goleveldbbench-%d", os.Getuid()))
-
-type dbBench struct {
- b *testing.B
- stor storage.Storage
- db *DB
-
- o *opt.Options
- ro *opt.ReadOptions
- wo *opt.WriteOptions
-
- keys, values [][]byte
-}
-
-func openDBBench(b *testing.B, noCompress bool) *dbBench {
- _, err := os.Stat(benchDB)
- if err == nil {
- err = os.RemoveAll(benchDB)
- if err != nil {
- b.Fatal("cannot remove old db: ", err)
- }
- }
-
- p := &dbBench{
- b: b,
- o: &opt.Options{},
- ro: &opt.ReadOptions{},
- wo: &opt.WriteOptions{},
- }
- p.stor, err = storage.OpenFile(benchDB)
- if err != nil {
- b.Fatal("cannot open stor: ", err)
- }
- if noCompress {
- p.o.Compression = opt.NoCompression
- }
-
- p.db, err = Open(p.stor, p.o)
- if err != nil {
- b.Fatal("cannot open db: ", err)
- }
-
- runtime.GOMAXPROCS(runtime.NumCPU())
- return p
-}
-
-func (p *dbBench) reopen() {
- p.db.Close()
- var err error
- p.db, err = Open(p.stor, p.o)
- if err != nil {
- p.b.Fatal("Reopen: got error: ", err)
- }
-}
-
-func (p *dbBench) populate(n int) {
- p.keys, p.values = make([][]byte, n), make([][]byte, n)
- v := newValueGen(0.5)
- for i := range p.keys {
- p.keys[i], p.values[i] = []byte(fmt.Sprintf("%016d", i)), v.get(100)
- }
-}
-
-func (p *dbBench) randomize() {
- m := len(p.keys)
- times := m * 2
- r1, r2 := rand.New(rand.NewSource(0xdeadbeef)), rand.New(rand.NewSource(0xbeefface))
- for n := 0; n < times; n++ {
- i, j := r1.Int()%m, r2.Int()%m
- if i == j {
- continue
- }
- p.keys[i], p.keys[j] = p.keys[j], p.keys[i]
- p.values[i], p.values[j] = p.values[j], p.values[i]
- }
-}
-
-func (p *dbBench) writes(perBatch int) {
- b := p.b
- db := p.db
-
- n := len(p.keys)
- m := n / perBatch
- if n%perBatch > 0 {
- m++
- }
- batches := make([]Batch, m)
- j := 0
- for i := range batches {
- first := true
- for ; j < n && ((j+1)%perBatch != 0 || first); j++ {
- first = false
- batches[i].Put(p.keys[j], p.values[j])
- }
- }
- runtime.GC()
-
- b.ResetTimer()
- b.StartTimer()
- for i := range batches {
- err := db.Write(&(batches[i]), p.wo)
- if err != nil {
- b.Fatal("write failed: ", err)
- }
- }
- b.StopTimer()
- b.SetBytes(116)
-}
-
-func (p *dbBench) gc() {
- p.keys, p.values = nil, nil
- runtime.GC()
-}
-
-func (p *dbBench) puts() {
- b := p.b
- db := p.db
-
- b.ResetTimer()
- b.StartTimer()
- for i := range p.keys {
- err := db.Put(p.keys[i], p.values[i], p.wo)
- if err != nil {
- b.Fatal("put failed: ", err)
- }
- }
- b.StopTimer()
- b.SetBytes(116)
-}
-
-func (p *dbBench) fill() {
- b := p.b
- db := p.db
-
- perBatch := 10000
- batch := new(Batch)
- for i, n := 0, len(p.keys); i < n; {
- first := true
- for ; i < n && ((i+1)%perBatch != 0 || first); i++ {
- first = false
- batch.Put(p.keys[i], p.values[i])
- }
- err := db.Write(batch, p.wo)
- if err != nil {
- b.Fatal("write failed: ", err)
- }
- batch.Reset()
- }
-}
-
-func (p *dbBench) gets() {
- b := p.b
- db := p.db
-
- b.ResetTimer()
- for i := range p.keys {
- _, err := db.Get(p.keys[i], p.ro)
- if err != nil {
- b.Error("got error: ", err)
- }
- }
- b.StopTimer()
-}
-
-func (p *dbBench) seeks() {
- b := p.b
-
- iter := p.newIter()
- defer iter.Release()
- b.ResetTimer()
- for i := range p.keys {
- if !iter.Seek(p.keys[i]) {
- b.Error("value not found for: ", string(p.keys[i]))
- }
- }
- b.StopTimer()
-}
-
-func (p *dbBench) newIter() iterator.Iterator {
- iter := p.db.NewIterator(nil, p.ro)
- err := iter.Error()
- if err != nil {
- p.b.Fatal("cannot create iterator: ", err)
- }
- return iter
-}
-
-func (p *dbBench) close() {
- if bp, err := p.db.GetProperty("leveldb.blockpool"); err == nil {
- p.b.Log("Block pool stats: ", bp)
- }
- p.db.Close()
- p.stor.Close()
- os.RemoveAll(benchDB)
- p.db = nil
- p.keys = nil
- p.values = nil
- runtime.GC()
- runtime.GOMAXPROCS(1)
-}
-
-func BenchmarkDBWrite(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.writes(1)
- p.close()
-}
-
-func BenchmarkDBWriteBatch(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.writes(1000)
- p.close()
-}
-
-func BenchmarkDBWriteUncompressed(b *testing.B) {
- p := openDBBench(b, true)
- p.populate(b.N)
- p.writes(1)
- p.close()
-}
-
-func BenchmarkDBWriteBatchUncompressed(b *testing.B) {
- p := openDBBench(b, true)
- p.populate(b.N)
- p.writes(1000)
- p.close()
-}
-
-func BenchmarkDBWriteRandom(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.randomize()
- p.writes(1)
- p.close()
-}
-
-func BenchmarkDBWriteRandomSync(b *testing.B) {
- p := openDBBench(b, false)
- p.wo.Sync = true
- p.populate(b.N)
- p.writes(1)
- p.close()
-}
-
-func BenchmarkDBOverwrite(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.writes(1)
- p.writes(1)
- p.close()
-}
-
-func BenchmarkDBOverwriteRandom(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.writes(1)
- p.randomize()
- p.writes(1)
- p.close()
-}
-
-func BenchmarkDBPut(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.puts()
- p.close()
-}
-
-func BenchmarkDBRead(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.gc()
-
- iter := p.newIter()
- b.ResetTimer()
- for iter.Next() {
- }
- iter.Release()
- b.StopTimer()
- b.SetBytes(116)
- p.close()
-}
-
-func BenchmarkDBReadGC(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
-
- iter := p.newIter()
- b.ResetTimer()
- for iter.Next() {
- }
- iter.Release()
- b.StopTimer()
- b.SetBytes(116)
- p.close()
-}
-
-func BenchmarkDBReadUncompressed(b *testing.B) {
- p := openDBBench(b, true)
- p.populate(b.N)
- p.fill()
- p.gc()
-
- iter := p.newIter()
- b.ResetTimer()
- for iter.Next() {
- }
- iter.Release()
- b.StopTimer()
- b.SetBytes(116)
- p.close()
-}
-
-func BenchmarkDBReadTable(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.reopen()
- p.gc()
-
- iter := p.newIter()
- b.ResetTimer()
- for iter.Next() {
- }
- iter.Release()
- b.StopTimer()
- b.SetBytes(116)
- p.close()
-}
-
-func BenchmarkDBReadReverse(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.gc()
-
- iter := p.newIter()
- b.ResetTimer()
- iter.Last()
- for iter.Prev() {
- }
- iter.Release()
- b.StopTimer()
- b.SetBytes(116)
- p.close()
-}
-
-func BenchmarkDBReadReverseTable(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.reopen()
- p.gc()
-
- iter := p.newIter()
- b.ResetTimer()
- iter.Last()
- for iter.Prev() {
- }
- iter.Release()
- b.StopTimer()
- b.SetBytes(116)
- p.close()
-}
-
-func BenchmarkDBSeek(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.seeks()
- p.close()
-}
-
-func BenchmarkDBSeekRandom(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.randomize()
- p.seeks()
- p.close()
-}
-
-func BenchmarkDBGet(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.gets()
- p.close()
-}
-
-func BenchmarkDBGetRandom(b *testing.B) {
- p := openDBBench(b, false)
- p.populate(b.N)
- p.fill()
- p.randomize()
- p.gets()
- p.close()
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/cache/bench2_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/cache/bench2_test.go
deleted file mode 100644
index 175e22203..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/cache/bench2_test.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// +build !go1.2
-
-package cache
-
-import (
- "math/rand"
- "testing"
-)
-
-func BenchmarkLRUCache(b *testing.B) {
- c := NewCache(NewLRU(10000))
-
- b.SetParallelism(10)
- b.RunParallel(func(pb *testing.PB) {
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
-
- for pb.Next() {
- key := uint64(r.Intn(1000000))
- c.Get(0, key, func() (int, Value) {
- return 1, key
- }).Release()
- }
- })
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/cache/cache_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/cache/cache_test.go
deleted file mode 100644
index c2a50156f..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/cache/cache_test.go
+++ /dev/null
@@ -1,554 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package cache
-
-import (
- "math/rand"
- "runtime"
- "sync"
- "sync/atomic"
- "testing"
- "time"
- "unsafe"
-)
-
-type int32o int32
-
-func (o *int32o) acquire() {
- if atomic.AddInt32((*int32)(o), 1) != 1 {
- panic("BUG: invalid ref")
- }
-}
-
-func (o *int32o) Release() {
- if atomic.AddInt32((*int32)(o), -1) != 0 {
- panic("BUG: invalid ref")
- }
-}
-
-type releaserFunc struct {
- fn func()
- value Value
-}
-
-func (r releaserFunc) Release() {
- if r.fn != nil {
- r.fn()
- }
-}
-
-func set(c *Cache, ns, key uint64, value Value, charge int, relf func()) *Handle {
- return c.Get(ns, key, func() (int, Value) {
- if relf != nil {
- return charge, releaserFunc{relf, value}
- } else {
- return charge, value
- }
- })
-}
-
-func TestCacheMap(t *testing.T) {
- runtime.GOMAXPROCS(runtime.NumCPU())
-
- nsx := []struct {
- nobjects, nhandles, concurrent, repeat int
- }{
- {10000, 400, 50, 3},
- {100000, 1000, 100, 10},
- }
-
- var (
- objects [][]int32o
- handles [][]unsafe.Pointer
- )
-
- for _, x := range nsx {
- objects = append(objects, make([]int32o, x.nobjects))
- handles = append(handles, make([]unsafe.Pointer, x.nhandles))
- }
-
- c := NewCache(nil)
-
- wg := new(sync.WaitGroup)
- var done int32
-
- for ns, x := range nsx {
- for i := 0; i < x.concurrent; i++ {
- wg.Add(1)
- go func(ns, i, repeat int, objects []int32o, handles []unsafe.Pointer) {
- defer wg.Done()
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
-
- for j := len(objects) * repeat; j >= 0; j-- {
- key := uint64(r.Intn(len(objects)))
- h := c.Get(uint64(ns), key, func() (int, Value) {
- o := &objects[key]
- o.acquire()
- return 1, o
- })
- if v := h.Value().(*int32o); v != &objects[key] {
- t.Fatalf("#%d invalid value: want=%p got=%p", ns, &objects[key], v)
- }
- if objects[key] != 1 {
- t.Fatalf("#%d invalid object %d: %d", ns, key, objects[key])
- }
- if !atomic.CompareAndSwapPointer(&handles[r.Intn(len(handles))], nil, unsafe.Pointer(h)) {
- h.Release()
- }
- }
- }(ns, i, x.repeat, objects[ns], handles[ns])
- }
-
- go func(handles []unsafe.Pointer) {
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
-
- for atomic.LoadInt32(&done) == 0 {
- i := r.Intn(len(handles))
- h := (*Handle)(atomic.LoadPointer(&handles[i]))
- if h != nil && atomic.CompareAndSwapPointer(&handles[i], unsafe.Pointer(h), nil) {
- h.Release()
- }
- time.Sleep(time.Millisecond)
- }
- }(handles[ns])
- }
-
- go func() {
- handles := make([]*Handle, 100000)
- for atomic.LoadInt32(&done) == 0 {
- for i := range handles {
- handles[i] = c.Get(999999999, uint64(i), func() (int, Value) {
- return 1, 1
- })
- }
- for _, h := range handles {
- h.Release()
- }
- }
- }()
-
- wg.Wait()
-
- atomic.StoreInt32(&done, 1)
-
- for _, handles0 := range handles {
- for i := range handles0 {
- h := (*Handle)(atomic.LoadPointer(&handles0[i]))
- if h != nil && atomic.CompareAndSwapPointer(&handles0[i], unsafe.Pointer(h), nil) {
- h.Release()
- }
- }
- }
-
- for ns, objects0 := range objects {
- for i, o := range objects0 {
- if o != 0 {
- t.Fatalf("invalid object #%d.%d: ref=%d", ns, i, o)
- }
- }
- }
-}
-
-func TestCacheMap_NodesAndSize(t *testing.T) {
- c := NewCache(nil)
- if c.Nodes() != 0 {
- t.Errorf("invalid nodes counter: want=%d got=%d", 0, c.Nodes())
- }
- if c.Size() != 0 {
- t.Errorf("invalid size counter: want=%d got=%d", 0, c.Size())
- }
- set(c, 0, 1, 1, 1, nil)
- set(c, 0, 2, 2, 2, nil)
- set(c, 1, 1, 3, 3, nil)
- set(c, 2, 1, 4, 1, nil)
- if c.Nodes() != 4 {
- t.Errorf("invalid nodes counter: want=%d got=%d", 4, c.Nodes())
- }
- if c.Size() != 7 {
- t.Errorf("invalid size counter: want=%d got=%d", 4, c.Size())
- }
-}
-
-func TestLRUCache_Capacity(t *testing.T) {
- c := NewCache(NewLRU(10))
- if c.Capacity() != 10 {
- t.Errorf("invalid capacity: want=%d got=%d", 10, c.Capacity())
- }
- set(c, 0, 1, 1, 1, nil).Release()
- set(c, 0, 2, 2, 2, nil).Release()
- set(c, 1, 1, 3, 3, nil).Release()
- set(c, 2, 1, 4, 1, nil).Release()
- set(c, 2, 2, 5, 1, nil).Release()
- set(c, 2, 3, 6, 1, nil).Release()
- set(c, 2, 4, 7, 1, nil).Release()
- set(c, 2, 5, 8, 1, nil).Release()
- if c.Nodes() != 7 {
- t.Errorf("invalid nodes counter: want=%d got=%d", 7, c.Nodes())
- }
- if c.Size() != 10 {
- t.Errorf("invalid size counter: want=%d got=%d", 10, c.Size())
- }
- c.SetCapacity(9)
- if c.Capacity() != 9 {
- t.Errorf("invalid capacity: want=%d got=%d", 9, c.Capacity())
- }
- if c.Nodes() != 6 {
- t.Errorf("invalid nodes counter: want=%d got=%d", 6, c.Nodes())
- }
- if c.Size() != 8 {
- t.Errorf("invalid size counter: want=%d got=%d", 8, c.Size())
- }
-}
-
-func TestCacheMap_NilValue(t *testing.T) {
- c := NewCache(NewLRU(10))
- h := c.Get(0, 0, func() (size int, value Value) {
- return 1, nil
- })
- if h != nil {
- t.Error("cache handle is non-nil")
- }
- if c.Nodes() != 0 {
- t.Errorf("invalid nodes counter: want=%d got=%d", 0, c.Nodes())
- }
- if c.Size() != 0 {
- t.Errorf("invalid size counter: want=%d got=%d", 0, c.Size())
- }
-}
-
-func TestLRUCache_GetLatency(t *testing.T) {
- runtime.GOMAXPROCS(runtime.NumCPU())
-
- const (
- concurrentSet = 30
- concurrentGet = 3
- duration = 3 * time.Second
- delay = 3 * time.Millisecond
- maxkey = 100000
- )
-
- var (
- set, getHit, getAll int32
- getMaxLatency, getDuration int64
- )
-
- c := NewCache(NewLRU(5000))
- wg := &sync.WaitGroup{}
- until := time.Now().Add(duration)
- for i := 0; i < concurrentSet; i++ {
- wg.Add(1)
- go func(i int) {
- defer wg.Done()
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
- for time.Now().Before(until) {
- c.Get(0, uint64(r.Intn(maxkey)), func() (int, Value) {
- time.Sleep(delay)
- atomic.AddInt32(&set, 1)
- return 1, 1
- }).Release()
- }
- }(i)
- }
- for i := 0; i < concurrentGet; i++ {
- wg.Add(1)
- go func(i int) {
- defer wg.Done()
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
- for {
- mark := time.Now()
- if mark.Before(until) {
- h := c.Get(0, uint64(r.Intn(maxkey)), nil)
- latency := int64(time.Now().Sub(mark))
- m := atomic.LoadInt64(&getMaxLatency)
- if latency > m {
- atomic.CompareAndSwapInt64(&getMaxLatency, m, latency)
- }
- atomic.AddInt64(&getDuration, latency)
- if h != nil {
- atomic.AddInt32(&getHit, 1)
- h.Release()
- }
- atomic.AddInt32(&getAll, 1)
- } else {
- break
- }
- }
- }(i)
- }
-
- wg.Wait()
- getAvglatency := time.Duration(getDuration) / time.Duration(getAll)
- t.Logf("set=%d getHit=%d getAll=%d getMaxLatency=%v getAvgLatency=%v",
- set, getHit, getAll, time.Duration(getMaxLatency), getAvglatency)
-
- if getAvglatency > delay/3 {
- t.Errorf("get avg latency > %v: got=%v", delay/3, getAvglatency)
- }
-}
-
-func TestLRUCache_HitMiss(t *testing.T) {
- cases := []struct {
- key uint64
- value string
- }{
- {1, "vvvvvvvvv"},
- {100, "v1"},
- {0, "v2"},
- {12346, "v3"},
- {777, "v4"},
- {999, "v5"},
- {7654, "v6"},
- {2, "v7"},
- {3, "v8"},
- {9, "v9"},
- }
-
- setfin := 0
- c := NewCache(NewLRU(1000))
- for i, x := range cases {
- set(c, 0, x.key, x.value, len(x.value), func() {
- setfin++
- }).Release()
- for j, y := range cases {
- h := c.Get(0, y.key, nil)
- if j <= i {
- // should hit
- if h == nil {
- t.Errorf("case '%d' iteration '%d' is miss", i, j)
- } else {
- if x := h.Value().(releaserFunc).value.(string); x != y.value {
- t.Errorf("case '%d' iteration '%d' has invalid value got '%s', want '%s'", i, j, x, y.value)
- }
- }
- } else {
- // should miss
- if h != nil {
- t.Errorf("case '%d' iteration '%d' is hit , value '%s'", i, j, h.Value().(releaserFunc).value.(string))
- }
- }
- if h != nil {
- h.Release()
- }
- }
- }
-
- for i, x := range cases {
- finalizerOk := false
- c.Delete(0, x.key, func() {
- finalizerOk = true
- })
-
- if !finalizerOk {
- t.Errorf("case %d delete finalizer not executed", i)
- }
-
- for j, y := range cases {
- h := c.Get(0, y.key, nil)
- if j > i {
- // should hit
- if h == nil {
- t.Errorf("case '%d' iteration '%d' is miss", i, j)
- } else {
- if x := h.Value().(releaserFunc).value.(string); x != y.value {
- t.Errorf("case '%d' iteration '%d' has invalid value got '%s', want '%s'", i, j, x, y.value)
- }
- }
- } else {
- // should miss
- if h != nil {
- t.Errorf("case '%d' iteration '%d' is hit, value '%s'", i, j, h.Value().(releaserFunc).value.(string))
- }
- }
- if h != nil {
- h.Release()
- }
- }
- }
-
- if setfin != len(cases) {
- t.Errorf("some set finalizer may not be executed, want=%d got=%d", len(cases), setfin)
- }
-}
-
-func TestLRUCache_Eviction(t *testing.T) {
- c := NewCache(NewLRU(12))
- o1 := set(c, 0, 1, 1, 1, nil)
- set(c, 0, 2, 2, 1, nil).Release()
- set(c, 0, 3, 3, 1, nil).Release()
- set(c, 0, 4, 4, 1, nil).Release()
- set(c, 0, 5, 5, 1, nil).Release()
- if h := c.Get(0, 2, nil); h != nil { // 1,3,4,5,2
- h.Release()
- }
- set(c, 0, 9, 9, 10, nil).Release() // 5,2,9
-
- for _, key := range []uint64{9, 2, 5, 1} {
- h := c.Get(0, key, nil)
- if h == nil {
- t.Errorf("miss for key '%d'", key)
- } else {
- if x := h.Value().(int); x != int(key) {
- t.Errorf("invalid value for key '%d' want '%d', got '%d'", key, key, x)
- }
- h.Release()
- }
- }
- o1.Release()
- for _, key := range []uint64{1, 2, 5} {
- h := c.Get(0, key, nil)
- if h == nil {
- t.Errorf("miss for key '%d'", key)
- } else {
- if x := h.Value().(int); x != int(key) {
- t.Errorf("invalid value for key '%d' want '%d', got '%d'", key, key, x)
- }
- h.Release()
- }
- }
- for _, key := range []uint64{3, 4, 9} {
- h := c.Get(0, key, nil)
- if h != nil {
- t.Errorf("hit for key '%d'", key)
- if x := h.Value().(int); x != int(key) {
- t.Errorf("invalid value for key '%d' want '%d', got '%d'", key, key, x)
- }
- h.Release()
- }
- }
-}
-
-func TestLRUCache_Evict(t *testing.T) {
- c := NewCache(NewLRU(6))
- set(c, 0, 1, 1, 1, nil).Release()
- set(c, 0, 2, 2, 1, nil).Release()
- set(c, 1, 1, 4, 1, nil).Release()
- set(c, 1, 2, 5, 1, nil).Release()
- set(c, 2, 1, 6, 1, nil).Release()
- set(c, 2, 2, 7, 1, nil).Release()
-
- for ns := 0; ns < 3; ns++ {
- for key := 1; key < 3; key++ {
- if h := c.Get(uint64(ns), uint64(key), nil); h != nil {
- h.Release()
- } else {
- t.Errorf("Cache.Get on #%d.%d return nil", ns, key)
- }
- }
- }
-
- if ok := c.Evict(0, 1); !ok {
- t.Error("first Cache.Evict on #0.1 return false")
- }
- if ok := c.Evict(0, 1); ok {
- t.Error("second Cache.Evict on #0.1 return true")
- }
- if h := c.Get(0, 1, nil); h != nil {
- t.Errorf("Cache.Get on #0.1 return non-nil: %v", h.Value())
- }
-
- c.EvictNS(1)
- if h := c.Get(1, 1, nil); h != nil {
- t.Errorf("Cache.Get on #1.1 return non-nil: %v", h.Value())
- }
- if h := c.Get(1, 2, nil); h != nil {
- t.Errorf("Cache.Get on #1.2 return non-nil: %v", h.Value())
- }
-
- c.EvictAll()
- for ns := 0; ns < 3; ns++ {
- for key := 1; key < 3; key++ {
- if h := c.Get(uint64(ns), uint64(key), nil); h != nil {
- t.Errorf("Cache.Get on #%d.%d return non-nil: %v", ns, key, h.Value())
- }
- }
- }
-}
-
-func TestLRUCache_Delete(t *testing.T) {
- delFuncCalled := 0
- delFunc := func() {
- delFuncCalled++
- }
-
- c := NewCache(NewLRU(2))
- set(c, 0, 1, 1, 1, nil).Release()
- set(c, 0, 2, 2, 1, nil).Release()
-
- if ok := c.Delete(0, 1, delFunc); !ok {
- t.Error("Cache.Delete on #1 return false")
- }
- if h := c.Get(0, 1, nil); h != nil {
- t.Errorf("Cache.Get on #1 return non-nil: %v", h.Value())
- }
- if ok := c.Delete(0, 1, delFunc); ok {
- t.Error("Cache.Delete on #1 return true")
- }
-
- h2 := c.Get(0, 2, nil)
- if h2 == nil {
- t.Error("Cache.Get on #2 return nil")
- }
- if ok := c.Delete(0, 2, delFunc); !ok {
- t.Error("(1) Cache.Delete on #2 return false")
- }
- if ok := c.Delete(0, 2, delFunc); !ok {
- t.Error("(2) Cache.Delete on #2 return false")
- }
-
- set(c, 0, 3, 3, 1, nil).Release()
- set(c, 0, 4, 4, 1, nil).Release()
- c.Get(0, 2, nil).Release()
-
- for key := 2; key <= 4; key++ {
- if h := c.Get(0, uint64(key), nil); h != nil {
- h.Release()
- } else {
- t.Errorf("Cache.Get on #%d return nil", key)
- }
- }
-
- h2.Release()
- if h := c.Get(0, 2, nil); h != nil {
- t.Errorf("Cache.Get on #2 return non-nil: %v", h.Value())
- }
-
- if delFuncCalled != 4 {
- t.Errorf("delFunc isn't called 4 times: got=%d", delFuncCalled)
- }
-}
-
-func TestLRUCache_Close(t *testing.T) {
- relFuncCalled := 0
- relFunc := func() {
- relFuncCalled++
- }
- delFuncCalled := 0
- delFunc := func() {
- delFuncCalled++
- }
-
- c := NewCache(NewLRU(2))
- set(c, 0, 1, 1, 1, relFunc).Release()
- set(c, 0, 2, 2, 1, relFunc).Release()
-
- h3 := set(c, 0, 3, 3, 1, relFunc)
- if h3 == nil {
- t.Error("Cache.Get on #3 return nil")
- }
- if ok := c.Delete(0, 3, delFunc); !ok {
- t.Error("Cache.Delete on #3 return false")
- }
-
- c.Close()
-
- if relFuncCalled != 3 {
- t.Errorf("relFunc isn't called 3 times: got=%d", relFuncCalled)
- }
- if delFuncCalled != 1 {
- t.Errorf("delFunc isn't called 1 times: got=%d", delFuncCalled)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/corrupt_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/corrupt_test.go
deleted file mode 100644
index a351874ed..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/corrupt_test.go
+++ /dev/null
@@ -1,500 +0,0 @@
-// Copyright (c) 2013, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
- "bytes"
- "fmt"
- "github.com/syndtr/goleveldb/leveldb/filter"
- "github.com/syndtr/goleveldb/leveldb/opt"
- "github.com/syndtr/goleveldb/leveldb/storage"
- "io"
- "math/rand"
- "testing"
-)
-
-const ctValSize = 1000
-
-type dbCorruptHarness struct {
- dbHarness
-}
-
-func newDbCorruptHarnessWopt(t *testing.T, o *opt.Options) *dbCorruptHarness {
- h := new(dbCorruptHarness)
- h.init(t, o)
- return h
-}
-
-func newDbCorruptHarness(t *testing.T) *dbCorruptHarness {
- return newDbCorruptHarnessWopt(t, &opt.Options{
- BlockCacheCapacity: 100,
- Strict: opt.StrictJournalChecksum,
- })
-}
-
-func (h *dbCorruptHarness) recover() {
- p := &h.dbHarness
- t := p.t
-
- var err error
- p.db, err = Recover(h.stor, h.o)
- if err != nil {
- t.Fatal("Repair: got error: ", err)
- }
-}
-
-func (h *dbCorruptHarness) build(n int) {
- p := &h.dbHarness
- t := p.t
- db := p.db
-
- batch := new(Batch)
- for i := 0; i < n; i++ {
- batch.Reset()
- batch.Put(tkey(i), tval(i, ctValSize))
- err := db.Write(batch, p.wo)
- if err != nil {
- t.Fatal("write error: ", err)
- }
- }
-}
-
-func (h *dbCorruptHarness) buildShuffled(n int, rnd *rand.Rand) {
- p := &h.dbHarness
- t := p.t
- db := p.db
-
- batch := new(Batch)
- for i := range rnd.Perm(n) {
- batch.Reset()
- batch.Put(tkey(i), tval(i, ctValSize))
- err := db.Write(batch, p.wo)
- if err != nil {
- t.Fatal("write error: ", err)
- }
- }
-}
-
-func (h *dbCorruptHarness) deleteRand(n, max int, rnd *rand.Rand) {
- p := &h.dbHarness
- t := p.t
- db := p.db
-
- batch := new(Batch)
- for i := 0; i < n; i++ {
- batch.Reset()
- batch.Delete(tkey(rnd.Intn(max)))
- err := db.Write(batch, p.wo)
- if err != nil {
- t.Fatal("write error: ", err)
- }
- }
-}
-
-func (h *dbCorruptHarness) corrupt(ft storage.FileType, fi, offset, n int) {
- p := &h.dbHarness
- t := p.t
-
- ff, _ := p.stor.GetFiles(ft)
- sff := files(ff)
- sff.sort()
- if fi < 0 {
- fi = len(sff) - 1
- }
- if fi >= len(sff) {
- t.Fatalf("no such file with type %q with index %d", ft, fi)
- }
-
- file := sff[fi]
-
- r, err := file.Open()
- if err != nil {
- t.Fatal("cannot open file: ", err)
- }
- x, err := r.Seek(0, 2)
- if err != nil {
- t.Fatal("cannot query file size: ", err)
- }
- m := int(x)
- if _, err := r.Seek(0, 0); err != nil {
- t.Fatal(err)
- }
-
- if offset < 0 {
- if -offset > m {
- offset = 0
- } else {
- offset = m + offset
- }
- }
- if offset > m {
- offset = m
- }
- if offset+n > m {
- n = m - offset
- }
-
- buf := make([]byte, m)
- _, err = io.ReadFull(r, buf)
- if err != nil {
- t.Fatal("cannot read file: ", err)
- }
- r.Close()
-
- for i := 0; i < n; i++ {
- buf[offset+i] ^= 0x80
- }
-
- err = file.Remove()
- if err != nil {
- t.Fatal("cannot remove old file: ", err)
- }
- w, err := file.Create()
- if err != nil {
- t.Fatal("cannot create new file: ", err)
- }
- _, err = w.Write(buf)
- if err != nil {
- t.Fatal("cannot write new file: ", err)
- }
- w.Close()
-}
-
-func (h *dbCorruptHarness) removeAll(ft storage.FileType) {
- ff, err := h.stor.GetFiles(ft)
- if err != nil {
- h.t.Fatal("get files: ", err)
- }
- for _, f := range ff {
- if err := f.Remove(); err != nil {
- h.t.Error("remove file: ", err)
- }
- }
-}
-
-func (h *dbCorruptHarness) removeOne(ft storage.FileType) {
- ff, err := h.stor.GetFiles(ft)
- if err != nil {
- h.t.Fatal("get files: ", err)
- }
- f := ff[rand.Intn(len(ff))]
- h.t.Logf("removing file @%d", f.Num())
- if err := f.Remove(); err != nil {
- h.t.Error("remove file: ", err)
- }
-}
-
-func (h *dbCorruptHarness) check(min, max int) {
- p := &h.dbHarness
- t := p.t
- db := p.db
-
- var n, badk, badv, missed, good int
- iter := db.NewIterator(nil, p.ro)
- for iter.Next() {
- k := 0
- fmt.Sscanf(string(iter.Key()), "%d", &k)
- if k < n {
- badk++
- continue
- }
- missed += k - n
- n = k + 1
- if !bytes.Equal(iter.Value(), tval(k, ctValSize)) {
- badv++
- } else {
- good++
- }
- }
- err := iter.Error()
- iter.Release()
- t.Logf("want=%d..%d got=%d badkeys=%d badvalues=%d missed=%d, err=%v",
- min, max, good, badk, badv, missed, err)
- if good < min || good > max {
- t.Errorf("good entries number not in range")
- }
-}
-
-func TestCorruptDB_Journal(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.build(100)
- h.check(100, 100)
- h.closeDB()
- h.corrupt(storage.TypeJournal, -1, 19, 1)
- h.corrupt(storage.TypeJournal, -1, 32*1024+1000, 1)
-
- h.openDB()
- h.check(36, 36)
-
- h.close()
-}
-
-func TestCorruptDB_Table(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.build(100)
- h.compactMem()
- h.compactRangeAt(0, "", "")
- h.compactRangeAt(1, "", "")
- h.closeDB()
- h.corrupt(storage.TypeTable, -1, 100, 1)
-
- h.openDB()
- h.check(99, 99)
-
- h.close()
-}
-
-func TestCorruptDB_TableIndex(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.build(10000)
- h.compactMem()
- h.closeDB()
- h.corrupt(storage.TypeTable, -1, -2000, 500)
-
- h.openDB()
- h.check(5000, 9999)
-
- h.close()
-}
-
-func TestCorruptDB_MissingManifest(t *testing.T) {
- rnd := rand.New(rand.NewSource(0x0badda7a))
- h := newDbCorruptHarnessWopt(t, &opt.Options{
- BlockCacheCapacity: 100,
- Strict: opt.StrictJournalChecksum,
- WriteBuffer: 1000 * 60,
- })
-
- h.build(1000)
- h.compactMem()
- h.buildShuffled(1000, rnd)
- h.compactMem()
- h.deleteRand(500, 1000, rnd)
- h.compactMem()
- h.buildShuffled(1000, rnd)
- h.compactMem()
- h.deleteRand(500, 1000, rnd)
- h.compactMem()
- h.buildShuffled(1000, rnd)
- h.compactMem()
- h.closeDB()
-
- h.stor.SetIgnoreOpenErr(storage.TypeManifest)
- h.removeAll(storage.TypeManifest)
- h.openAssert(false)
- h.stor.SetIgnoreOpenErr(0)
-
- h.recover()
- h.check(1000, 1000)
- h.build(1000)
- h.compactMem()
- h.compactRange("", "")
- h.closeDB()
-
- h.recover()
- h.check(1000, 1000)
-
- h.close()
-}
-
-func TestCorruptDB_SequenceNumberRecovery(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.put("foo", "v1")
- h.put("foo", "v2")
- h.put("foo", "v3")
- h.put("foo", "v4")
- h.put("foo", "v5")
- h.closeDB()
-
- h.recover()
- h.getVal("foo", "v5")
- h.put("foo", "v6")
- h.getVal("foo", "v6")
-
- h.reopenDB()
- h.getVal("foo", "v6")
-
- h.close()
-}
-
-func TestCorruptDB_SequenceNumberRecoveryTable(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.put("foo", "v1")
- h.put("foo", "v2")
- h.put("foo", "v3")
- h.compactMem()
- h.put("foo", "v4")
- h.put("foo", "v5")
- h.compactMem()
- h.closeDB()
-
- h.recover()
- h.getVal("foo", "v5")
- h.put("foo", "v6")
- h.getVal("foo", "v6")
-
- h.reopenDB()
- h.getVal("foo", "v6")
-
- h.close()
-}
-
-func TestCorruptDB_CorruptedManifest(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.put("foo", "hello")
- h.compactMem()
- h.compactRange("", "")
- h.closeDB()
- h.corrupt(storage.TypeManifest, -1, 0, 1000)
- h.openAssert(false)
-
- h.recover()
- h.getVal("foo", "hello")
-
- h.close()
-}
-
-func TestCorruptDB_CompactionInputError(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.build(10)
- h.compactMem()
- h.closeDB()
- h.corrupt(storage.TypeTable, -1, 100, 1)
-
- h.openDB()
- h.check(9, 9)
-
- h.build(10000)
- h.check(10000, 10000)
-
- h.close()
-}
-
-func TestCorruptDB_UnrelatedKeys(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.build(10)
- h.compactMem()
- h.closeDB()
- h.corrupt(storage.TypeTable, -1, 100, 1)
-
- h.openDB()
- h.put(string(tkey(1000)), string(tval(1000, ctValSize)))
- h.getVal(string(tkey(1000)), string(tval(1000, ctValSize)))
- h.compactMem()
- h.getVal(string(tkey(1000)), string(tval(1000, ctValSize)))
-
- h.close()
-}
-
-func TestCorruptDB_Level0NewerFileHasOlderSeqnum(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.put("a", "v1")
- h.put("b", "v1")
- h.compactMem()
- h.put("a", "v2")
- h.put("b", "v2")
- h.compactMem()
- h.put("a", "v3")
- h.put("b", "v3")
- h.compactMem()
- h.put("c", "v0")
- h.put("d", "v0")
- h.compactMem()
- h.compactRangeAt(1, "", "")
- h.closeDB()
-
- h.recover()
- h.getVal("a", "v3")
- h.getVal("b", "v3")
- h.getVal("c", "v0")
- h.getVal("d", "v0")
-
- h.close()
-}
-
-func TestCorruptDB_RecoverInvalidSeq_Issue53(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.put("a", "v1")
- h.put("b", "v1")
- h.compactMem()
- h.put("a", "v2")
- h.put("b", "v2")
- h.compactMem()
- h.put("a", "v3")
- h.put("b", "v3")
- h.compactMem()
- h.put("c", "v0")
- h.put("d", "v0")
- h.compactMem()
- h.compactRangeAt(0, "", "")
- h.closeDB()
-
- h.recover()
- h.getVal("a", "v3")
- h.getVal("b", "v3")
- h.getVal("c", "v0")
- h.getVal("d", "v0")
-
- h.close()
-}
-
-func TestCorruptDB_MissingTableFiles(t *testing.T) {
- h := newDbCorruptHarness(t)
-
- h.put("a", "v1")
- h.put("b", "v1")
- h.compactMem()
- h.put("c", "v2")
- h.put("d", "v2")
- h.compactMem()
- h.put("e", "v3")
- h.put("f", "v3")
- h.closeDB()
-
- h.removeOne(storage.TypeTable)
- h.openAssert(false)
-
- h.close()
-}
-
-func TestCorruptDB_RecoverTable(t *testing.T) {
- h := newDbCorruptHarnessWopt(t, &opt.Options{
- WriteBuffer: 112 * opt.KiB,
- CompactionTableSize: 90 * opt.KiB,
- Filter: filter.NewBloomFilter(10),
- })
-
- h.build(1000)
- h.compactMem()
- h.compactRangeAt(0, "", "")
- h.compactRangeAt(1, "", "")
- seq := h.db.seq
- h.closeDB()
- h.corrupt(storage.TypeTable, 0, 1000, 1)
- h.corrupt(storage.TypeTable, 3, 10000, 1)
- // Corrupted filter shouldn't affect recovery.
- h.corrupt(storage.TypeTable, 3, 113888, 10)
- h.corrupt(storage.TypeTable, -1, 20000, 1)
-
- h.recover()
- if h.db.seq != seq {
- t.Errorf("invalid seq, want=%d got=%d", seq, h.db.seq)
- }
- h.check(985, 985)
-
- h.close()
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db.go
index 323353b2a..537addb62 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db.go
@@ -36,14 +36,14 @@ type DB struct {
s *session
// MemDB.
- memMu sync.RWMutex
- memPool chan *memdb.DB
- mem, frozenMem *memDB
- journal *journal.Writer
- journalWriter storage.Writer
- journalFile storage.File
- frozenJournalFile storage.File
- frozenSeq uint64
+ memMu sync.RWMutex
+ memPool chan *memdb.DB
+ mem, frozenMem *memDB
+ journal *journal.Writer
+ journalWriter storage.Writer
+ journalFd storage.FileDesc
+ frozenJournalFd storage.FileDesc
+ frozenSeq uint64
// Snapshot.
snapsMu sync.Mutex
@@ -61,15 +61,19 @@ type DB struct {
writeDelayN int
journalC chan *Batch
journalAckC chan error
+ tr *Transaction
// Compaction.
- tcompCmdC chan cCmd
- tcompPauseC chan chan<- struct{}
- mcompCmdC chan cCmd
- compErrC chan error
- compPerErrC chan error
- compErrSetC chan error
- compStats []cStats
+ compCommitLk sync.Mutex
+ tcompCmdC chan cCmd
+ tcompPauseC chan chan<- struct{}
+ mcompCmdC chan cCmd
+ compErrC chan error
+ compPerErrC chan error
+ compErrSetC chan error
+ compWriteLocking bool
+ compStats cStats
+ memdbMaxLevel int // For testing.
// Close.
closeW sync.WaitGroup
@@ -103,33 +107,48 @@ func openDB(s *session) (*DB, error) {
compErrC: make(chan error),
compPerErrC: make(chan error),
compErrSetC: make(chan error),
- compStats: make([]cStats, s.o.GetNumLevel()),
// Close
closeC: make(chan struct{}),
}
- if err := db.recoverJournal(); err != nil {
- return nil, err
- }
+ // Read-only mode.
+ readOnly := s.o.GetReadOnly()
- // Remove any obsolete files.
- if err := db.checkAndCleanFiles(); err != nil {
- // Close journal.
- if db.journal != nil {
- db.journal.Close()
- db.journalWriter.Close()
+ if readOnly {
+ // Recover journals (read-only mode).
+ if err := db.recoverJournalRO(); err != nil {
+ return nil, err
}
- return nil, err
+ } else {
+ // Recover journals.
+ if err := db.recoverJournal(); err != nil {
+ return nil, err
+ }
+
+ // Remove any obsolete files.
+ if err := db.checkAndCleanFiles(); err != nil {
+ // Close journal.
+ if db.journal != nil {
+ db.journal.Close()
+ db.journalWriter.Close()
+ }
+ return nil, err
+ }
+
}
// Doesn't need to be included in the wait group.
go db.compactionError()
go db.mpoolDrain()
- db.closeW.Add(3)
- go db.tCompaction()
- go db.mCompaction()
- go db.jWriter()
+ if readOnly {
+ db.SetReadOnly()
+ } else {
+ db.closeW.Add(3)
+ go db.tCompaction()
+ go db.mCompaction()
+ go db.jWriter()
+ }
s.logf("db@open done T·%v", time.Since(start))
@@ -192,7 +211,7 @@ func Open(stor storage.Storage, o *opt.Options) (db *DB, err error) {
// The returned DB instance is goroutine-safe.
// The DB must be closed after use, by calling Close method.
func OpenFile(path string, o *opt.Options) (db *DB, err error) {
- stor, err := storage.OpenFile(path)
+ stor, err := storage.OpenFile(path, o.GetReadOnly())
if err != nil {
return
}
@@ -242,7 +261,7 @@ func Recover(stor storage.Storage, o *opt.Options) (db *DB, err error) {
// The returned DB instance is goroutine-safe.
// The DB must be closed after use, by calling Close method.
func RecoverFile(path string, o *opt.Options) (db *DB, err error) {
- stor, err := storage.OpenFile(path)
+ stor, err := storage.OpenFile(path, false)
if err != nil {
return
}
@@ -261,12 +280,11 @@ func recoverTable(s *session, o *opt.Options) error {
o.Strict &= ^opt.StrictReader
// Get all tables and sort it by file number.
- tableFiles_, err := s.getFiles(storage.TypeTable)
+ fds, err := s.stor.List(storage.TypeTable)
if err != nil {
return err
}
- tableFiles := files(tableFiles_)
- tableFiles.sort()
+ sortFds(fds)
var (
maxSeq uint64
@@ -274,21 +292,22 @@ func recoverTable(s *session, o *opt.Options) error {
// We will drop corrupted table.
strict = o.GetStrict(opt.StrictRecovery)
+ noSync = o.GetNoSync()
- rec = &sessionRecord{numLevel: o.GetNumLevel()}
+ rec = &sessionRecord{}
bpool = util.NewBufferPool(o.GetBlockSize() + 5)
)
- buildTable := func(iter iterator.Iterator) (tmp storage.File, size int64, err error) {
- tmp = s.newTemp()
- writer, err := tmp.Create()
+ buildTable := func(iter iterator.Iterator) (tmpFd storage.FileDesc, size int64, err error) {
+ tmpFd = s.newTemp()
+ writer, err := s.stor.Create(tmpFd)
if err != nil {
return
}
defer func() {
writer.Close()
if err != nil {
- tmp.Remove()
- tmp = nil
+ s.stor.Remove(tmpFd)
+ tmpFd = storage.FileDesc{}
}
}()
@@ -311,16 +330,18 @@ func recoverTable(s *session, o *opt.Options) error {
if err != nil {
return
}
- err = writer.Sync()
- if err != nil {
- return
+ if !noSync {
+ err = writer.Sync()
+ if err != nil {
+ return
+ }
}
size = int64(tw.BytesLen())
return
}
- recoverTable := func(file storage.File) error {
- s.logf("table@recovery recovering @%d", file.Num())
- reader, err := file.Open()
+ recoverTable := func(fd storage.FileDesc) error {
+ s.logf("table@recovery recovering @%d", fd.Num)
+ reader, err := s.stor.Open(fd)
if err != nil {
return err
}
@@ -342,7 +363,7 @@ func recoverTable(s *session, o *opt.Options) error {
tgoodKey, tcorruptedKey, tcorruptedBlock int
imin, imax []byte
)
- tr, err := table.NewReader(reader, size, storage.NewFileInfo(file), nil, bpool, o)
+ tr, err := table.NewReader(reader, size, fd, nil, bpool, o)
if err != nil {
return err
}
@@ -350,7 +371,7 @@ func recoverTable(s *session, o *opt.Options) error {
if itererr, ok := iter.(iterator.ErrorCallbackSetter); ok {
itererr.SetErrorCallback(func(err error) {
if errors.IsCorrupted(err) {
- s.logf("table@recovery block corruption @%d %q", file.Num(), err)
+ s.logf("table@recovery block corruption @%d %q", fd.Num, err)
tcorruptedBlock++
}
})
@@ -385,23 +406,23 @@ func recoverTable(s *session, o *opt.Options) error {
if strict && (tcorruptedKey > 0 || tcorruptedBlock > 0) {
droppedTable++
- s.logf("table@recovery dropped @%d Gk·%d Ck·%d Cb·%d S·%d Q·%d", file.Num(), tgoodKey, tcorruptedKey, tcorruptedBlock, size, tSeq)
+ s.logf("table@recovery dropped @%d Gk·%d Ck·%d Cb·%d S·%d Q·%d", fd.Num, tgoodKey, tcorruptedKey, tcorruptedBlock, size, tSeq)
return nil
}
if tgoodKey > 0 {
if tcorruptedKey > 0 || tcorruptedBlock > 0 {
// Rebuild the table.
- s.logf("table@recovery rebuilding @%d", file.Num())
+ s.logf("table@recovery rebuilding @%d", fd.Num)
iter := tr.NewIterator(nil, nil)
- tmp, newSize, err := buildTable(iter)
+ tmpFd, newSize, err := buildTable(iter)
iter.Release()
if err != nil {
return err
}
closed = true
reader.Close()
- if err := file.Replace(tmp); err != nil {
+ if err := s.stor.Rename(tmpFd, fd); err != nil {
return err
}
size = newSize
@@ -411,30 +432,30 @@ func recoverTable(s *session, o *opt.Options) error {
}
recoveredKey += tgoodKey
// Add table to level 0.
- rec.addTable(0, file.Num(), uint64(size), imin, imax)
- s.logf("table@recovery recovered @%d Gk·%d Ck·%d Cb·%d S·%d Q·%d", file.Num(), tgoodKey, tcorruptedKey, tcorruptedBlock, size, tSeq)
+ rec.addTable(0, fd.Num, size, imin, imax)
+ s.logf("table@recovery recovered @%d Gk·%d Ck·%d Cb·%d S·%d Q·%d", fd.Num, tgoodKey, tcorruptedKey, tcorruptedBlock, size, tSeq)
} else {
droppedTable++
- s.logf("table@recovery unrecoverable @%d Ck·%d Cb·%d S·%d", file.Num(), tcorruptedKey, tcorruptedBlock, size)
+ s.logf("table@recovery unrecoverable @%d Ck·%d Cb·%d S·%d", fd.Num, tcorruptedKey, tcorruptedBlock, size)
}
return nil
}
// Recover all tables.
- if len(tableFiles) > 0 {
- s.logf("table@recovery F·%d", len(tableFiles))
+ if len(fds) > 0 {
+ s.logf("table@recovery F·%d", len(fds))
// Mark file number as used.
- s.markFileNum(tableFiles[len(tableFiles)-1].Num())
+ s.markFileNum(fds[len(fds)-1].Num)
- for _, file := range tableFiles {
- if err := recoverTable(file); err != nil {
+ for _, fd := range fds {
+ if err := recoverTable(fd); err != nil {
return err
}
}
- s.logf("table@recovery recovered F·%d N·%d Gk·%d Ck·%d Q·%d", len(tableFiles), recoveredKey, goodKey, corruptedKey, maxSeq)
+ s.logf("table@recovery recovered F·%d N·%d Gk·%d Ck·%d Q·%d", len(fds), recoveredKey, goodKey, corruptedKey, maxSeq)
}
// Set sequence number.
@@ -450,132 +471,136 @@ func recoverTable(s *session, o *opt.Options) error {
}
func (db *DB) recoverJournal() error {
- // Get all tables and sort it by file number.
- journalFiles_, err := db.s.getFiles(storage.TypeJournal)
+ // Get all journals and sort it by file number.
+ fds_, err := db.s.stor.List(storage.TypeJournal)
if err != nil {
return err
}
- journalFiles := files(journalFiles_)
- journalFiles.sort()
+ sortFds(fds_)
- // Discard older journal.
- prev := -1
- for i, file := range journalFiles {
- if file.Num() >= db.s.stJournalNum {
- if prev >= 0 {
- i--
- journalFiles[i] = journalFiles[prev]
- }
- journalFiles = journalFiles[i:]
- break
- } else if file.Num() == db.s.stPrevJournalNum {
- prev = i
- }
- }
-
- var jr *journal.Reader
- var of storage.File
- var mem *memdb.DB
- batch := new(Batch)
- cm := newCMem(db.s)
- buf := new(util.Buffer)
- // Options.
- strict := db.s.o.GetStrict(opt.StrictJournal)
- checksum := db.s.o.GetStrict(opt.StrictJournalChecksum)
- writeBuffer := db.s.o.GetWriteBuffer()
- recoverJournal := func(file storage.File) error {
- db.logf("journal@recovery recovering @%d", file.Num())
- reader, err := file.Open()
- if err != nil {
- return err
+ // Journals that will be recovered.
+ var fds []storage.FileDesc
+ for _, fd := range fds_ {
+ if fd.Num >= db.s.stJournalNum || fd.Num == db.s.stPrevJournalNum {
+ fds = append(fds, fd)
}
- defer reader.Close()
+ }
- // Create/reset journal reader instance.
- if jr == nil {
- jr = journal.NewReader(reader, dropper{db.s, file}, strict, checksum)
- } else {
- jr.Reset(reader, dropper{db.s, file}, strict, checksum)
- }
+ var (
+ ofd storage.FileDesc // Obsolete file.
+ rec = &sessionRecord{}
+ )
- // Flush memdb and remove obsolete journal file.
- if of != nil {
- if mem.Len() > 0 {
- if err := cm.flush(mem, 0); err != nil {
- return err
- }
- }
- if err := cm.commit(file.Num(), db.seq); err != nil {
+ // Recover journals.
+ if len(fds) > 0 {
+ db.logf("journal@recovery F·%d", len(fds))
+
+ // Mark file number as used.
+ db.s.markFileNum(fds[len(fds)-1].Num)
+
+ var (
+ // Options.
+ strict = db.s.o.GetStrict(opt.StrictJournal)
+ checksum = db.s.o.GetStrict(opt.StrictJournalChecksum)
+ writeBuffer = db.s.o.GetWriteBuffer()
+
+ jr *journal.Reader
+ mdb = memdb.New(db.s.icmp, writeBuffer)
+ buf = &util.Buffer{}
+ batch = &Batch{}
+ )
+
+ for _, fd := range fds {
+ db.logf("journal@recovery recovering @%d", fd.Num)
+
+ fr, err := db.s.stor.Open(fd)
+ if err != nil {
return err
}
- cm.reset()
- of.Remove()
- of = nil
- }
- // Replay journal to memdb.
- mem.Reset()
- for {
- r, err := jr.Next()
- if err != nil {
- if err == io.EOF {
- break
- }
- return errors.SetFile(err, file)
+ // Create or reset journal reader instance.
+ if jr == nil {
+ jr = journal.NewReader(fr, dropper{db.s, fd}, strict, checksum)
+ } else {
+ jr.Reset(fr, dropper{db.s, fd}, strict, checksum)
}
- buf.Reset()
- if _, err := buf.ReadFrom(r); err != nil {
- if err == io.ErrUnexpectedEOF {
- // This is error returned due to corruption, with strict == false.
- continue
- } else {
- return errors.SetFile(err, file)
+ // Flush memdb and remove obsolete journal file.
+ if !ofd.Nil() {
+ if mdb.Len() > 0 {
+ if _, err := db.s.flushMemdb(rec, mdb, 0); err != nil {
+ fr.Close()
+ return err
+ }
}
- }
- if err := batch.memDecodeAndReplay(db.seq, buf.Bytes(), mem); err != nil {
- if strict || !errors.IsCorrupted(err) {
- return errors.SetFile(err, file)
- } else {
- db.s.logf("journal error: %v (skipped)", err)
- // We won't apply sequence number as it might be corrupted.
- continue
+
+ rec.setJournalNum(fd.Num)
+ rec.setSeqNum(db.seq)
+ if err := db.s.commit(rec); err != nil {
+ fr.Close()
+ return err
}
+ rec.resetAddedTables()
+
+ db.s.stor.Remove(ofd)
+ ofd = storage.FileDesc{}
}
- // Save sequence number.
- db.seq = batch.seq + uint64(batch.Len())
+ // Replay journal to memdb.
+ mdb.Reset()
+ for {
+ r, err := jr.Next()
+ if err != nil {
+ if err == io.EOF {
+ break
+ }
- // Flush it if large enough.
- if mem.Size() >= writeBuffer {
- if err := cm.flush(mem, 0); err != nil {
- return err
+ fr.Close()
+ return errors.SetFd(err, fd)
}
- mem.Reset()
- }
- }
- of = file
- return nil
- }
+ buf.Reset()
+ if _, err := buf.ReadFrom(r); err != nil {
+ if err == io.ErrUnexpectedEOF {
+ // This is error returned due to corruption, with strict == false.
+ continue
+ }
+
+ fr.Close()
+ return errors.SetFd(err, fd)
+ }
+ if err := batch.memDecodeAndReplay(db.seq, buf.Bytes(), mdb); err != nil {
+ if !strict && errors.IsCorrupted(err) {
+ db.s.logf("journal error: %v (skipped)", err)
+ // We won't apply sequence number as it might be corrupted.
+ continue
+ }
+
+ fr.Close()
+ return errors.SetFd(err, fd)
+ }
- // Recover all journals.
- if len(journalFiles) > 0 {
- db.logf("journal@recovery F·%d", len(journalFiles))
+ // Save sequence number.
+ db.seq = batch.seq + uint64(batch.Len())
- // Mark file number as used.
- db.s.markFileNum(journalFiles[len(journalFiles)-1].Num())
+ // Flush it if large enough.
+ if mdb.Size() >= writeBuffer {
+ if _, err := db.s.flushMemdb(rec, mdb, 0); err != nil {
+ fr.Close()
+ return err
+ }
- mem = memdb.New(db.s.icmp, writeBuffer)
- for _, file := range journalFiles {
- if err := recoverJournal(file); err != nil {
- return err
+ mdb.Reset()
+ }
}
+
+ fr.Close()
+ ofd = fd
}
- // Flush the last journal.
- if mem.Len() > 0 {
- if err := cm.flush(mem, 0); err != nil {
+ // Flush the last memdb.
+ if mdb.Len() > 0 {
+ if _, err := db.s.flushMemdb(rec, mdb, 0); err != nil {
return err
}
}
@@ -587,8 +612,10 @@ func (db *DB) recoverJournal() error {
}
// Commit.
- if err := cm.commit(db.journalFile.Num(), db.seq); err != nil {
- // Close journal.
+ rec.setJournalNum(db.journalFd.Num)
+ rec.setSeqNum(db.seq)
+ if err := db.s.commit(rec); err != nil {
+ // Close journal on error.
if db.journal != nil {
db.journal.Close()
db.journalWriter.Close()
@@ -597,15 +624,139 @@ func (db *DB) recoverJournal() error {
}
// Remove the last obsolete journal file.
- if of != nil {
- of.Remove()
+ if !ofd.Nil() {
+ db.s.stor.Remove(ofd)
+ }
+
+ return nil
+}
+
+func (db *DB) recoverJournalRO() error {
+ // Get all journals and sort it by file number.
+ fds_, err := db.s.stor.List(storage.TypeJournal)
+ if err != nil {
+ return err
+ }
+ sortFds(fds_)
+
+ // Journals that will be recovered.
+ var fds []storage.FileDesc
+ for _, fd := range fds_ {
+ if fd.Num >= db.s.stJournalNum || fd.Num == db.s.stPrevJournalNum {
+ fds = append(fds, fd)
+ }
+ }
+
+ var (
+ // Options.
+ strict = db.s.o.GetStrict(opt.StrictJournal)
+ checksum = db.s.o.GetStrict(opt.StrictJournalChecksum)
+ writeBuffer = db.s.o.GetWriteBuffer()
+
+ mdb = memdb.New(db.s.icmp, writeBuffer)
+ )
+
+ // Recover journals.
+ if len(fds) > 0 {
+ db.logf("journal@recovery RO·Mode F·%d", len(fds))
+
+ var (
+ jr *journal.Reader
+ buf = &util.Buffer{}
+ batch = &Batch{}
+ )
+
+ for _, fd := range fds {
+ db.logf("journal@recovery recovering @%d", fd.Num)
+
+ fr, err := db.s.stor.Open(fd)
+ if err != nil {
+ return err
+ }
+
+ // Create or reset journal reader instance.
+ if jr == nil {
+ jr = journal.NewReader(fr, dropper{db.s, fd}, strict, checksum)
+ } else {
+ jr.Reset(fr, dropper{db.s, fd}, strict, checksum)
+ }
+
+ // Replay journal to memdb.
+ for {
+ r, err := jr.Next()
+ if err != nil {
+ if err == io.EOF {
+ break
+ }
+
+ fr.Close()
+ return errors.SetFd(err, fd)
+ }
+
+ buf.Reset()
+ if _, err := buf.ReadFrom(r); err != nil {
+ if err == io.ErrUnexpectedEOF {
+ // This is error returned due to corruption, with strict == false.
+ continue
+ }
+
+ fr.Close()
+ return errors.SetFd(err, fd)
+ }
+ if err := batch.memDecodeAndReplay(db.seq, buf.Bytes(), mdb); err != nil {
+ if !strict && errors.IsCorrupted(err) {
+ db.s.logf("journal error: %v (skipped)", err)
+ // We won't apply sequence number as it might be corrupted.
+ continue
+ }
+
+ fr.Close()
+ return errors.SetFd(err, fd)
+ }
+
+ // Save sequence number.
+ db.seq = batch.seq + uint64(batch.Len())
+ }
+
+ fr.Close()
+ }
}
+ // Set memDB.
+ db.mem = &memDB{db: db, DB: mdb, ref: 1}
+
return nil
}
-func (db *DB) get(key []byte, seq uint64, ro *opt.ReadOptions) (value []byte, err error) {
- ikey := newIkey(key, seq, ktSeek)
+func memGet(mdb *memdb.DB, ikey iKey, icmp *iComparer) (ok bool, mv []byte, err error) {
+ mk, mv, err := mdb.Find(ikey)
+ if err == nil {
+ ukey, _, kt, kerr := parseIkey(mk)
+ if kerr != nil {
+ // Shouldn't have had happen.
+ panic(kerr)
+ }
+ if icmp.uCompare(ukey, ikey.ukey()) == 0 {
+ if kt == ktDel {
+ return true, nil, ErrNotFound
+ }
+ return true, mv, nil
+
+ }
+ } else if err != ErrNotFound {
+ return true, nil, err
+ }
+ return
+}
+
+func (db *DB) get(auxm *memdb.DB, auxt tFiles, key []byte, seq uint64, ro *opt.ReadOptions) (value []byte, err error) {
+ ikey := makeIkey(nil, key, seq, ktSeek)
+
+ if auxm != nil {
+ if ok, mv, me := memGet(auxm, ikey, db.s.icmp); ok {
+ return append([]byte{}, mv...), me
+ }
+ }
em, fm := db.getMems()
for _, m := range [...]*memDB{em, fm} {
@@ -614,36 +765,36 @@ func (db *DB) get(key []byte, seq uint64, ro *opt.ReadOptions) (value []byte, er
}
defer m.decref()
- mk, mv, me := m.mdb.Find(ikey)
- if me == nil {
- ukey, _, kt, kerr := parseIkey(mk)
- if kerr != nil {
- // Shouldn't have had happen.
- panic(kerr)
- }
- if db.s.icmp.uCompare(ukey, key) == 0 {
- if kt == ktDel {
- return nil, ErrNotFound
- }
- return append([]byte{}, mv...), nil
- }
- } else if me != ErrNotFound {
- return nil, me
+ if ok, mv, me := memGet(m.DB, ikey, db.s.icmp); ok {
+ return append([]byte{}, mv...), me
}
}
v := db.s.version()
- value, cSched, err := v.get(ikey, ro, false)
+ value, cSched, err := v.get(auxt, ikey, ro, false)
v.release()
if cSched {
// Trigger table compaction.
- db.compSendTrigger(db.tcompCmdC)
+ db.compTrigger(db.tcompCmdC)
}
return
}
-func (db *DB) has(key []byte, seq uint64, ro *opt.ReadOptions) (ret bool, err error) {
- ikey := newIkey(key, seq, ktSeek)
+func nilIfNotFound(err error) error {
+ if err == ErrNotFound {
+ return nil
+ }
+ return err
+}
+
+func (db *DB) has(auxm *memdb.DB, auxt tFiles, key []byte, seq uint64, ro *opt.ReadOptions) (ret bool, err error) {
+ ikey := makeIkey(nil, key, seq, ktSeek)
+
+ if auxm != nil {
+ if ok, _, me := memGet(auxm, ikey, db.s.icmp); ok {
+ return me == nil, nilIfNotFound(me)
+ }
+ }
em, fm := db.getMems()
for _, m := range [...]*memDB{em, fm} {
@@ -652,30 +803,17 @@ func (db *DB) has(key []byte, seq uint64, ro *opt.ReadOptions) (ret bool, err er
}
defer m.decref()
- mk, _, me := m.mdb.Find(ikey)
- if me == nil {
- ukey, _, kt, kerr := parseIkey(mk)
- if kerr != nil {
- // Shouldn't have had happen.
- panic(kerr)
- }
- if db.s.icmp.uCompare(ukey, key) == 0 {
- if kt == ktDel {
- return false, nil
- }
- return true, nil
- }
- } else if me != ErrNotFound {
- return false, me
+ if ok, _, me := memGet(m.DB, ikey, db.s.icmp); ok {
+ return me == nil, nilIfNotFound(me)
}
}
v := db.s.version()
- _, cSched, err := v.get(ikey, ro, true)
+ _, cSched, err := v.get(auxt, ikey, ro, true)
v.release()
if cSched {
// Trigger table compaction.
- db.compSendTrigger(db.tcompCmdC)
+ db.compTrigger(db.tcompCmdC)
}
if err == nil {
ret = true
@@ -699,7 +837,7 @@ func (db *DB) Get(key []byte, ro *opt.ReadOptions) (value []byte, err error) {
se := db.acquireSnapshot()
defer db.releaseSnapshot(se)
- return db.get(key, se.seq, ro)
+ return db.get(nil, nil, key, se.seq, ro)
}
// Has returns true if the DB does contains the given key.
@@ -713,11 +851,11 @@ func (db *DB) Has(key []byte, ro *opt.ReadOptions) (ret bool, err error) {
se := db.acquireSnapshot()
defer db.releaseSnapshot(se)
- return db.has(key, se.seq, ro)
+ return db.has(nil, nil, key, se.seq, ro)
}
// NewIterator returns an iterator for the latest snapshot of the
-// uderlying DB.
+// underlying DB.
// The returned iterator is not goroutine-safe, but it is safe to use
// multiple iterators concurrently, with each in a dedicated goroutine.
// It is also safe to use an iterator concurrently with modifying its
@@ -741,7 +879,7 @@ func (db *DB) NewIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Itera
defer db.releaseSnapshot(se)
// Iterator holds 'version' lock, 'version' is immutable so snapshot
// can be released after iterator created.
- return db.newIterator(se.seq, slice, ro)
+ return db.newIterator(nil, nil, se.seq, slice, ro)
}
// GetSnapshot returns a latest snapshot of the underlying DB. A snapshot
@@ -784,7 +922,7 @@ func (db *DB) GetProperty(name string) (value string, err error) {
const prefix = "leveldb."
if !strings.HasPrefix(name, prefix) {
- return "", errors.New("leveldb: GetProperty: unknown property: " + name)
+ return "", ErrNotFound
}
p := name[len(prefix):]
@@ -797,8 +935,8 @@ func (db *DB) GetProperty(name string) (value string, err error) {
var level uint
var rest string
n, _ := fmt.Sscanf(p[len(numFilesPrefix):], "%d%s", &level, &rest)
- if n != 1 || int(level) >= db.s.o.GetNumLevel() {
- err = errors.New("leveldb: GetProperty: invalid property: " + name)
+ if n != 1 {
+ err = ErrNotFound
} else {
value = fmt.Sprint(v.tLen(int(level)))
}
@@ -806,8 +944,8 @@ func (db *DB) GetProperty(name string) (value string, err error) {
value = "Compactions\n" +
" Level | Tables | Size(MB) | Time(sec) | Read(MB) | Write(MB)\n" +
"-------+------------+---------------+---------------+---------------+---------------\n"
- for level, tables := range v.tables {
- duration, read, write := db.compStats[level].get()
+ for level, tables := range v.levels {
+ duration, read, write := db.compStats.getStat(level)
if len(tables) == 0 && duration == 0 {
continue
}
@@ -816,10 +954,10 @@ func (db *DB) GetProperty(name string) (value string, err error) {
float64(read)/1048576.0, float64(write)/1048576.0)
}
case p == "sstables":
- for level, tables := range v.tables {
+ for level, tables := range v.levels {
value += fmt.Sprintf("--- level %d ---\n", level)
for _, t := range tables {
- value += fmt.Sprintf("%d:%d[%q .. %q]\n", t.file.Num(), t.size, t.imin, t.imax)
+ value += fmt.Sprintf("%d:%d[%q .. %q]\n", t.fd.Num, t.size, t.imin, t.imax)
}
}
case p == "blockpool":
@@ -837,7 +975,7 @@ func (db *DB) GetProperty(name string) (value string, err error) {
case p == "aliveiters":
value = fmt.Sprintf("%d", atomic.LoadInt32(&db.aliveIters))
default:
- err = errors.New("leveldb: GetProperty: unknown property: " + name)
+ err = ErrNotFound
}
return
@@ -859,8 +997,8 @@ func (db *DB) SizeOf(ranges []util.Range) (Sizes, error) {
sizes := make(Sizes, 0, len(ranges))
for _, r := range ranges {
- imin := newIkey(r.Start, kMaxSeq, ktSeek)
- imax := newIkey(r.Limit, kMaxSeq, ktSeek)
+ imin := makeIkey(nil, r.Start, kMaxSeq, ktSeek)
+ imax := makeIkey(nil, r.Limit, kMaxSeq, ktSeek)
start, err := v.offsetOf(imin)
if err != nil {
return nil, err
@@ -879,8 +1017,8 @@ func (db *DB) SizeOf(ranges []util.Range) (Sizes, error) {
return sizes, nil
}
-// Close closes the DB. This will also releases any outstanding snapshot and
-// abort any in-flight compaction.
+// Close closes the DB. This will also releases any outstanding snapshot,
+// abort any in-flight compaction and discard open transaction.
//
// It is not safe to close a DB until all outstanding iterators are released.
// It is valid to call Close multiple times. Other methods should not be
@@ -900,17 +1038,27 @@ func (db *DB) Close() error {
var err error
select {
case err = <-db.compErrC:
+ if err == ErrReadOnly {
+ err = nil
+ }
default:
}
// Signal all goroutines.
close(db.closeC)
+ // Discard open transaction.
+ if db.tr != nil {
+ db.tr.Discard()
+ }
+
+ // Acquire writer lock.
+ db.writeLockC <- struct{}{}
+
// Wait for all gorotines to exit.
db.closeW.Wait()
- // Lock writer and closes journal.
- db.writeLockC <- struct{}{}
+ // Closes journal.
if db.journal != nil {
db.journal.Close()
db.journalWriter.Close()
@@ -937,8 +1085,6 @@ func (db *DB) Close() error {
db.frozenMem = nil
db.journal = nil
db.journalWriter = nil
- db.journalFile = nil
- db.frozenJournalFile = nil
db.closer = nil
return err
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go
index 447407aba..a94cf4c84 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go
@@ -11,109 +11,79 @@ import (
"time"
"github.com/syndtr/goleveldb/leveldb/errors"
- "github.com/syndtr/goleveldb/leveldb/memdb"
"github.com/syndtr/goleveldb/leveldb/opt"
+ "github.com/syndtr/goleveldb/leveldb/storage"
)
var (
errCompactionTransactExiting = errors.New("leveldb: compaction transact exiting")
)
-type cStats struct {
- sync.Mutex
+type cStat struct {
duration time.Duration
- read uint64
- write uint64
+ read int64
+ write int64
}
-func (p *cStats) add(n *cStatsStaging) {
- p.Lock()
+func (p *cStat) add(n *cStatStaging) {
p.duration += n.duration
p.read += n.read
p.write += n.write
- p.Unlock()
}
-func (p *cStats) get() (duration time.Duration, read, write uint64) {
- p.Lock()
- defer p.Unlock()
+func (p *cStat) get() (duration time.Duration, read, write int64) {
return p.duration, p.read, p.write
}
-type cStatsStaging struct {
+type cStatStaging struct {
start time.Time
duration time.Duration
on bool
- read uint64
- write uint64
+ read int64
+ write int64
}
-func (p *cStatsStaging) startTimer() {
+func (p *cStatStaging) startTimer() {
if !p.on {
p.start = time.Now()
p.on = true
}
}
-func (p *cStatsStaging) stopTimer() {
+func (p *cStatStaging) stopTimer() {
if p.on {
p.duration += time.Since(p.start)
p.on = false
}
}
-type cMem struct {
- s *session
- level int
- rec *sessionRecord
-}
-
-func newCMem(s *session) *cMem {
- return &cMem{s: s, rec: &sessionRecord{numLevel: s.o.GetNumLevel()}}
+type cStats struct {
+ lk sync.Mutex
+ stats []cStat
}
-func (c *cMem) flush(mem *memdb.DB, level int) error {
- s := c.s
-
- // Write memdb to table.
- iter := mem.NewIterator(nil)
- defer iter.Release()
- t, n, err := s.tops.createFrom(iter)
- if err != nil {
- return err
- }
-
- // Pick level.
- if level < 0 {
- v := s.version()
- level = v.pickLevel(t.imin.ukey(), t.imax.ukey())
- v.release()
+func (p *cStats) addStat(level int, n *cStatStaging) {
+ p.lk.Lock()
+ if level >= len(p.stats) {
+ newStats := make([]cStat, level+1)
+ copy(newStats, p.stats)
+ p.stats = newStats
}
- c.rec.addTableFile(level, t)
-
- s.logf("mem@flush created L%d@%d N·%d S·%s %q:%q", level, t.file.Num(), n, shortenb(int(t.size)), t.imin, t.imax)
-
- c.level = level
- return nil
+ p.stats[level].add(n)
+ p.lk.Unlock()
}
-func (c *cMem) reset() {
- c.rec = &sessionRecord{numLevel: c.s.o.GetNumLevel()}
-}
-
-func (c *cMem) commit(journal, seq uint64) error {
- c.rec.setJournalNum(journal)
- c.rec.setSeqNum(seq)
-
- // Commit changes.
- return c.s.commit(c.rec)
+func (p *cStats) getStat(level int) (duration time.Duration, read, write int64) {
+ p.lk.Lock()
+ defer p.lk.Unlock()
+ if level < len(p.stats) {
+ return p.stats[level].get()
+ }
+ return
}
func (db *DB) compactionError() {
- var (
- err error
- wlocked bool
- )
+ var err error
noerr:
// No error.
for {
@@ -121,7 +91,7 @@ noerr:
case err = <-db.compErrSetC:
switch {
case err == nil:
- case errors.IsCorrupted(err):
+ case err == ErrReadOnly, errors.IsCorrupted(err):
goto hasperr
default:
goto haserr
@@ -139,7 +109,7 @@ haserr:
switch {
case err == nil:
goto noerr
- case errors.IsCorrupted(err):
+ case err == ErrReadOnly, errors.IsCorrupted(err):
goto hasperr
default:
}
@@ -155,9 +125,9 @@ hasperr:
case db.compPerErrC <- err:
case db.writeLockC <- struct{}{}:
// Hold write lock, so that write won't pass-through.
- wlocked = true
+ db.compWriteLocking = true
case _, _ = <-db.closeC:
- if wlocked {
+ if db.compWriteLocking {
// We should release the lock or Close will hang.
<-db.writeLockC
}
@@ -286,22 +256,27 @@ func (db *DB) compactionExitTransact() {
panic(errCompactionTransactExiting)
}
+func (db *DB) compactionCommit(name string, rec *sessionRecord) {
+ db.compCommitLk.Lock()
+ defer db.compCommitLk.Unlock() // Defer is necessary.
+ db.compactionTransactFunc(name+"@commit", func(cnt *compactionTransactCounter) error {
+ return db.s.commit(rec)
+ }, nil)
+}
+
func (db *DB) memCompaction() {
- mem := db.getFrozenMem()
- if mem == nil {
+ mdb := db.getFrozenMem()
+ if mdb == nil {
return
}
- defer mem.decref()
-
- c := newCMem(db.s)
- stats := new(cStatsStaging)
+ defer mdb.decref()
- db.logf("mem@flush N·%d S·%s", mem.mdb.Len(), shortenb(mem.mdb.Size()))
+ db.logf("memdb@flush N·%d S·%s", mdb.Len(), shortenb(mdb.Size()))
// Don't compact empty memdb.
- if mem.mdb.Len() == 0 {
- db.logf("mem@flush skipping")
- // drop frozen mem
+ if mdb.Len() == 0 {
+ db.logf("memdb@flush skipping")
+ // drop frozen memdb
db.dropFrozenMem()
return
}
@@ -317,35 +292,44 @@ func (db *DB) memCompaction() {
return
}
- db.compactionTransactFunc("mem@flush", func(cnt *compactionTransactCounter) (err error) {
+ var (
+ rec = &sessionRecord{}
+ stats = &cStatStaging{}
+ flushLevel int
+ )
+
+ // Generate tables.
+ db.compactionTransactFunc("memdb@flush", func(cnt *compactionTransactCounter) (err error) {
stats.startTimer()
- defer stats.stopTimer()
- return c.flush(mem.mdb, -1)
+ flushLevel, err = db.s.flushMemdb(rec, mdb.DB, db.memdbMaxLevel)
+ stats.stopTimer()
+ return
}, func() error {
- for _, r := range c.rec.addedTables {
- db.logf("mem@flush revert @%d", r.num)
- f := db.s.getTableFile(r.num)
- if err := f.Remove(); err != nil {
+ for _, r := range rec.addedTables {
+ db.logf("memdb@flush revert @%d", r.num)
+ if err := db.s.stor.Remove(storage.FileDesc{Type: storage.TypeTable, Num: r.num}); err != nil {
return err
}
}
return nil
})
- db.compactionTransactFunc("mem@commit", func(cnt *compactionTransactCounter) (err error) {
- stats.startTimer()
- defer stats.stopTimer()
- return c.commit(db.journalFile.Num(), db.frozenSeq)
- }, nil)
+ rec.setJournalNum(db.journalFd.Num)
+ rec.setSeqNum(db.frozenSeq)
+
+ // Commit.
+ stats.startTimer()
+ db.compactionCommit("memdb", rec)
+ stats.stopTimer()
- db.logf("mem@flush committed F·%d T·%v", len(c.rec.addedTables), stats.duration)
+ db.logf("memdb@flush committed F·%d T·%v", len(rec.addedTables), stats.duration)
- for _, r := range c.rec.addedTables {
+ for _, r := range rec.addedTables {
stats.write += r.size
}
- db.compStats[c.level].add(stats)
+ db.compStats.addStat(flushLevel, stats)
- // Drop frozen mem.
+ // Drop frozen memdb.
db.dropFrozenMem()
// Resume table compaction.
@@ -359,7 +343,7 @@ func (db *DB) memCompaction() {
}
// Trigger table compaction.
- db.compSendTrigger(db.tcompCmdC)
+ db.compTrigger(db.tcompCmdC)
}
type tableCompactionBuilder struct {
@@ -367,7 +351,7 @@ type tableCompactionBuilder struct {
s *session
c *compaction
rec *sessionRecord
- stat0, stat1 *cStatsStaging
+ stat0, stat1 *cStatStaging
snapHasLastUkey bool
snapLastUkey []byte
@@ -421,9 +405,9 @@ func (b *tableCompactionBuilder) flush() error {
if err != nil {
return err
}
- b.rec.addTableFile(b.c.level+1, t)
+ b.rec.addTableFile(b.c.sourceLevel+1, t)
b.stat1.write += t.size
- b.s.logf("table@build created L%d@%d N·%d S·%s %q:%q", b.c.level+1, t.file.Num(), b.tw.tw.EntriesLen(), shortenb(int(t.size)), t.imin, t.imax)
+ b.s.logf("table@build created L%d@%d N·%d S·%s %q:%q", b.c.sourceLevel+1, t.fd.Num, b.tw.tw.EntriesLen(), shortenb(int(t.size)), t.imin, t.imax)
b.tw = nil
return nil
}
@@ -546,8 +530,7 @@ func (b *tableCompactionBuilder) run(cnt *compactionTransactCounter) error {
func (b *tableCompactionBuilder) revert() error {
for _, at := range b.rec.addedTables {
b.s.logf("table@build revert @%d", at.num)
- f := b.s.getTableFile(at.num)
- if err := f.Remove(); err != nil {
+ if err := b.s.stor.Remove(storage.FileDesc{Type: storage.TypeTable, Num: at.num}); err != nil {
return err
}
}
@@ -557,31 +540,31 @@ func (b *tableCompactionBuilder) revert() error {
func (db *DB) tableCompaction(c *compaction, noTrivial bool) {
defer c.release()
- rec := &sessionRecord{numLevel: db.s.o.GetNumLevel()}
- rec.addCompPtr(c.level, c.imax)
+ rec := &sessionRecord{}
+ rec.addCompPtr(c.sourceLevel, c.imax)
if !noTrivial && c.trivial() {
- t := c.tables[0][0]
- db.logf("table@move L%d@%d -> L%d", c.level, t.file.Num(), c.level+1)
- rec.delTable(c.level, t.file.Num())
- rec.addTableFile(c.level+1, t)
+ t := c.levels[0][0]
+ db.logf("table@move L%d@%d -> L%d", c.sourceLevel, t.fd.Num, c.sourceLevel+1)
+ rec.delTable(c.sourceLevel, t.fd.Num)
+ rec.addTableFile(c.sourceLevel+1, t)
db.compactionTransactFunc("table@move", func(cnt *compactionTransactCounter) (err error) {
return db.s.commit(rec)
}, nil)
return
}
- var stats [2]cStatsStaging
- for i, tables := range c.tables {
+ var stats [2]cStatStaging
+ for i, tables := range c.levels {
for _, t := range tables {
stats[i].read += t.size
// Insert deleted tables into record
- rec.delTable(c.level+i, t.file.Num())
+ rec.delTable(c.sourceLevel+i, t.fd.Num)
}
}
sourceSize := int(stats[0].read + stats[1].read)
minSeq := db.minSeq()
- db.logf("table@compaction L%d·%d -> L%d·%d S·%s Q·%d", c.level, len(c.tables[0]), c.level+1, len(c.tables[1]), shortenb(sourceSize), minSeq)
+ db.logf("table@compaction L%d·%d -> L%d·%d S·%s Q·%d", c.sourceLevel, len(c.levels[0]), c.sourceLevel+1, len(c.levels[1]), shortenb(sourceSize), minSeq)
b := &tableCompactionBuilder{
db: db,
@@ -591,49 +574,60 @@ func (db *DB) tableCompaction(c *compaction, noTrivial bool) {
stat1: &stats[1],
minSeq: minSeq,
strict: db.s.o.GetStrict(opt.StrictCompaction),
- tableSize: db.s.o.GetCompactionTableSize(c.level + 1),
+ tableSize: db.s.o.GetCompactionTableSize(c.sourceLevel + 1),
}
db.compactionTransact("table@build", b)
- // Commit changes
- db.compactionTransactFunc("table@commit", func(cnt *compactionTransactCounter) (err error) {
- stats[1].startTimer()
- defer stats[1].stopTimer()
- return db.s.commit(rec)
- }, nil)
+ // Commit.
+ stats[1].startTimer()
+ db.compactionCommit("table", rec)
+ stats[1].stopTimer()
resultSize := int(stats[1].write)
db.logf("table@compaction committed F%s S%s Ke·%d D·%d T·%v", sint(len(rec.addedTables)-len(rec.deletedTables)), sshortenb(resultSize-sourceSize), b.kerrCnt, b.dropCnt, stats[1].duration)
// Save compaction stats
for i := range stats {
- db.compStats[c.level+1].add(&stats[i])
+ db.compStats.addStat(c.sourceLevel+1, &stats[i])
}
}
-func (db *DB) tableRangeCompaction(level int, umin, umax []byte) {
+func (db *DB) tableRangeCompaction(level int, umin, umax []byte) error {
db.logf("table@compaction range L%d %q:%q", level, umin, umax)
-
if level >= 0 {
- if c := db.s.getCompactionRange(level, umin, umax); c != nil {
+ if c := db.s.getCompactionRange(level, umin, umax, true); c != nil {
db.tableCompaction(c, true)
}
} else {
- v := db.s.version()
- m := 1
- for i, t := range v.tables[1:] {
- if t.overlaps(db.s.icmp, umin, umax, false) {
- m = i + 1
+ // Retry until nothing to compact.
+ for {
+ compacted := false
+
+ // Scan for maximum level with overlapped tables.
+ v := db.s.version()
+ m := 1
+ for i := m; i < len(v.levels); i++ {
+ tables := v.levels[i]
+ if tables.overlaps(db.s.icmp, umin, umax, false) {
+ m = i
+ }
}
- }
- v.release()
+ v.release()
- for level := 0; level < m; level++ {
- if c := db.s.getCompactionRange(level, umin, umax); c != nil {
- db.tableCompaction(c, true)
+ for level := 0; level < m; level++ {
+ if c := db.s.getCompactionRange(level, umin, umax, false); c != nil {
+ db.tableCompaction(c, true)
+ compacted = true
+ }
+ }
+
+ if !compacted {
+ break
}
}
}
+
+ return nil
}
func (db *DB) tableAutoCompaction() {
@@ -660,11 +654,11 @@ type cCmd interface {
ack(err error)
}
-type cIdle struct {
+type cAuto struct {
ackC chan<- error
}
-func (r cIdle) ack(err error) {
+func (r cAuto) ack(err error) {
if r.ackC != nil {
defer func() {
recover()
@@ -688,13 +682,21 @@ func (r cRange) ack(err error) {
}
}
+// This will trigger auto compaction but will not wait for it.
+func (db *DB) compTrigger(compC chan<- cCmd) {
+ select {
+ case compC <- cAuto{}:
+ default:
+ }
+}
+
// This will trigger auto compation and/or wait for all compaction to be done.
-func (db *DB) compSendIdle(compC chan<- cCmd) (err error) {
+func (db *DB) compTriggerWait(compC chan<- cCmd) (err error) {
ch := make(chan error)
defer close(ch)
// Send cmd.
select {
- case compC <- cIdle{ch}:
+ case compC <- cAuto{ch}:
case err = <-db.compErrC:
return
case _, _ = <-db.closeC:
@@ -710,16 +712,8 @@ func (db *DB) compSendIdle(compC chan<- cCmd) (err error) {
return err
}
-// This will trigger auto compaction but will not wait for it.
-func (db *DB) compSendTrigger(compC chan<- cCmd) {
- select {
- case compC <- cIdle{}:
- default:
- }
-}
-
// Send range compaction request.
-func (db *DB) compSendRange(compC chan<- cCmd, level int, min, max []byte) (err error) {
+func (db *DB) compTriggerRange(compC chan<- cCmd, level int, min, max []byte) (err error) {
ch := make(chan error)
defer close(ch)
// Send cmd.
@@ -759,7 +753,7 @@ func (db *DB) mCompaction() {
select {
case x = <-db.mcompCmdC:
switch x.(type) {
- case cIdle:
+ case cAuto:
db.memCompaction()
x.ack(nil)
x = nil
@@ -820,11 +814,10 @@ func (db *DB) tCompaction() {
}
if x != nil {
switch cmd := x.(type) {
- case cIdle:
+ case cAuto:
ackQ = append(ackQ, x)
case cRange:
- db.tableRangeCompaction(cmd.level, cmd.min, cmd.max)
- x.ack(nil)
+ x.ack(db.tableRangeCompaction(cmd.level, cmd.min, cmd.max))
default:
panic("leveldb: unknown command")
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_iter.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_iter.go
index 011a94a35..86bcb99d9 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_iter.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_iter.go
@@ -33,40 +33,50 @@ func (mr *memdbReleaser) Release() {
})
}
-func (db *DB) newRawIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
+func (db *DB) newRawIterator(auxm *memDB, auxt tFiles, slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
+ strict := opt.GetStrict(db.s.o.Options, ro, opt.StrictReader)
em, fm := db.getMems()
v := db.s.version()
- ti := v.getIterators(slice, ro)
- n := len(ti) + 2
- i := make([]iterator.Iterator, 0, n)
- emi := em.mdb.NewIterator(slice)
+ tableIts := v.getIterators(slice, ro)
+ n := len(tableIts) + len(auxt) + 3
+ its := make([]iterator.Iterator, 0, n)
+
+ if auxm != nil {
+ ami := auxm.NewIterator(slice)
+ ami.SetReleaser(&memdbReleaser{m: auxm})
+ its = append(its, ami)
+ }
+ for _, t := range auxt {
+ its = append(its, v.s.tops.newIterator(t, slice, ro))
+ }
+
+ emi := em.NewIterator(slice)
emi.SetReleaser(&memdbReleaser{m: em})
- i = append(i, emi)
+ its = append(its, emi)
if fm != nil {
- fmi := fm.mdb.NewIterator(slice)
+ fmi := fm.NewIterator(slice)
fmi.SetReleaser(&memdbReleaser{m: fm})
- i = append(i, fmi)
+ its = append(its, fmi)
}
- i = append(i, ti...)
- strict := opt.GetStrict(db.s.o.Options, ro, opt.StrictReader)
- mi := iterator.NewMergedIterator(i, db.s.icmp, strict)
+ its = append(its, tableIts...)
+ mi := iterator.NewMergedIterator(its, db.s.icmp, strict)
mi.SetReleaser(&versionReleaser{v: v})
return mi
}
-func (db *DB) newIterator(seq uint64, slice *util.Range, ro *opt.ReadOptions) *dbIter {
+func (db *DB) newIterator(auxm *memDB, auxt tFiles, seq uint64, slice *util.Range, ro *opt.ReadOptions) *dbIter {
var islice *util.Range
if slice != nil {
islice = &util.Range{}
if slice.Start != nil {
- islice.Start = newIkey(slice.Start, kMaxSeq, ktSeek)
+ islice.Start = makeIkey(nil, slice.Start, kMaxSeq, ktSeek)
}
if slice.Limit != nil {
- islice.Limit = newIkey(slice.Limit, kMaxSeq, ktSeek)
+ islice.Limit = makeIkey(nil, slice.Limit, kMaxSeq, ktSeek)
}
}
- rawIter := db.newRawIterator(islice, ro)
+ rawIter := db.newRawIterator(auxm, auxt, islice, ro)
iter := &dbIter{
db: db,
icmp: db.s.icmp,
@@ -177,7 +187,7 @@ func (i *dbIter) Seek(key []byte) bool {
return false
}
- ikey := newIkey(key, i.seq, ktSeek)
+ ikey := makeIkey(nil, key, i.seq, ktSeek)
if i.iter.Seek(ikey) {
i.dir = dirSOI
return i.next()
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_snapshot.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_snapshot.go
index 0372848ff..977f65ba5 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_snapshot.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_snapshot.go
@@ -110,7 +110,7 @@ func (snap *Snapshot) Get(key []byte, ro *opt.ReadOptions) (value []byte, err er
err = ErrSnapshotReleased
return
}
- return snap.db.get(key, snap.elem.seq, ro)
+ return snap.db.get(nil, nil, key, snap.elem.seq, ro)
}
// Has returns true if the DB does contains the given key.
@@ -127,10 +127,10 @@ func (snap *Snapshot) Has(key []byte, ro *opt.ReadOptions) (ret bool, err error)
err = ErrSnapshotReleased
return
}
- return snap.db.has(key, snap.elem.seq, ro)
+ return snap.db.has(nil, nil, key, snap.elem.seq, ro)
}
-// NewIterator returns an iterator for the snapshot of the uderlying DB.
+// NewIterator returns an iterator for the snapshot of the underlying DB.
// The returned iterator is not goroutine-safe, but it is safe to use
// multiple iterators concurrently, with each in a dedicated goroutine.
// It is also safe to use an iterator concurrently with modifying its
@@ -158,7 +158,7 @@ func (snap *Snapshot) NewIterator(slice *util.Range, ro *opt.ReadOptions) iterat
}
// Since iterator already hold version ref, it doesn't need to
// hold snapshot ref.
- return snap.db.newIterator(snap.elem.seq, slice, ro)
+ return snap.db.newIterator(nil, nil, snap.elem.seq, slice, ro)
}
// Release releases the snapshot. This will not release any returned
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_state.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_state.go
index d4db9d6dd..0207e221e 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_state.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_state.go
@@ -12,14 +12,19 @@ import (
"github.com/syndtr/goleveldb/leveldb/journal"
"github.com/syndtr/goleveldb/leveldb/memdb"
+ "github.com/syndtr/goleveldb/leveldb/storage"
)
type memDB struct {
- db *DB
- mdb *memdb.DB
+ db *DB
+ *memdb.DB
ref int32
}
+func (m *memDB) getref() int32 {
+ return atomic.LoadInt32(&m.ref)
+}
+
func (m *memDB) incref() {
atomic.AddInt32(&m.ref, 1)
}
@@ -27,12 +32,12 @@ func (m *memDB) incref() {
func (m *memDB) decref() {
if ref := atomic.AddInt32(&m.ref, -1); ref == 0 {
// Only put back memdb with std capacity.
- if m.mdb.Capacity() == m.db.s.o.GetWriteBuffer() {
- m.mdb.Reset()
- m.db.mpoolPut(m.mdb)
+ if m.Capacity() == m.db.s.o.GetWriteBuffer() {
+ m.Reset()
+ m.db.mpoolPut(m.DB)
}
m.db = nil
- m.mdb = nil
+ m.DB = nil
} else if ref < 0 {
panic("negative memdb ref")
}
@@ -48,11 +53,15 @@ func (db *DB) addSeq(delta uint64) {
atomic.AddUint64(&db.seq, delta)
}
+func (db *DB) setSeq(seq uint64) {
+ atomic.StoreUint64(&db.seq, seq)
+}
+
func (db *DB) sampleSeek(ikey iKey) {
v := db.s.version()
if v.sampleSeek(ikey) {
// Trigger table compaction.
- db.compSendTrigger(db.tcompCmdC)
+ db.compTrigger(db.tcompCmdC)
}
v.release()
}
@@ -67,12 +76,18 @@ func (db *DB) mpoolPut(mem *memdb.DB) {
}
}
-func (db *DB) mpoolGet() *memdb.DB {
+func (db *DB) mpoolGet(n int) *memDB {
+ var mdb *memdb.DB
select {
- case mem := <-db.memPool:
- return mem
+ case mdb = <-db.memPool:
default:
- return nil
+ }
+ if mdb == nil || mdb.Capacity() < n {
+ mdb = memdb.New(db.s.icmp, maxInt(db.s.o.GetWriteBuffer(), n))
+ }
+ return &memDB{
+ db: db,
+ DB: mdb,
}
}
@@ -95,11 +110,10 @@ func (db *DB) mpoolDrain() {
// Create new memdb and froze the old one; need external synchronization.
// newMem only called synchronously by the writer.
func (db *DB) newMem(n int) (mem *memDB, err error) {
- num := db.s.allocFileNum()
- file := db.s.getJournalFile(num)
- w, err := file.Create()
+ fd := storage.FileDesc{Type: storage.TypeJournal, Num: db.s.allocFileNum()}
+ w, err := db.s.stor.Create(fd)
if err != nil {
- db.s.reuseFileNum(num)
+ db.s.reuseFileNum(fd.Num)
return
}
@@ -115,20 +129,14 @@ func (db *DB) newMem(n int) (mem *memDB, err error) {
} else {
db.journal.Reset(w)
db.journalWriter.Close()
- db.frozenJournalFile = db.journalFile
+ db.frozenJournalFd = db.journalFd
}
db.journalWriter = w
- db.journalFile = file
+ db.journalFd = fd
db.frozenMem = db.mem
- mdb := db.mpoolGet()
- if mdb == nil || mdb.Capacity() < n {
- mdb = memdb.New(db.s.icmp, maxInt(db.s.o.GetWriteBuffer(), n))
- }
- mem = &memDB{
- db: db,
- mdb: mdb,
- ref: 2,
- }
+ mem = db.mpoolGet(n)
+ mem.incref() // for self
+ mem.incref() // for caller
db.mem = mem
// The seq only incremented by the writer. And whoever called newMem
// should hold write lock, so no need additional synchronization here.
@@ -181,12 +189,12 @@ func (db *DB) getFrozenMem() *memDB {
// Drop frozen memdb; assume that frozen memdb isn't nil.
func (db *DB) dropFrozenMem() {
db.memMu.Lock()
- if err := db.frozenJournalFile.Remove(); err != nil {
- db.logf("journal@remove removing @%d %q", db.frozenJournalFile.Num(), err)
+ if err := db.s.stor.Remove(db.frozenJournalFd); err != nil {
+ db.logf("journal@remove removing @%d %q", db.frozenJournalFd.Num, err)
} else {
- db.logf("journal@remove removed @%d", db.frozenJournalFile.Num())
+ db.logf("journal@remove removed @%d", db.frozenJournalFd.Num)
}
- db.frozenJournalFile = nil
+ db.frozenJournalFd = storage.FileDesc{}
db.frozenMem.decref()
db.frozenMem = nil
db.memMu.Unlock()
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_test.go
deleted file mode 100644
index 38bfbf1ea..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_test.go
+++ /dev/null
@@ -1,2665 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
- "bytes"
- "container/list"
- crand "crypto/rand"
- "encoding/binary"
- "fmt"
- "math/rand"
- "os"
- "path/filepath"
- "runtime"
- "strings"
- "sync"
- "sync/atomic"
- "testing"
- "time"
- "unsafe"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
- "github.com/syndtr/goleveldb/leveldb/errors"
- "github.com/syndtr/goleveldb/leveldb/filter"
- "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/opt"
- "github.com/syndtr/goleveldb/leveldb/storage"
- "github.com/syndtr/goleveldb/leveldb/util"
-)
-
-func tkey(i int) []byte {
- return []byte(fmt.Sprintf("%016d", i))
-}
-
-func tval(seed, n int) []byte {
- r := rand.New(rand.NewSource(int64(seed)))
- return randomString(r, n)
-}
-
-type dbHarness struct {
- t *testing.T
-
- stor *testStorage
- db *DB
- o *opt.Options
- ro *opt.ReadOptions
- wo *opt.WriteOptions
-}
-
-func newDbHarnessWopt(t *testing.T, o *opt.Options) *dbHarness {
- h := new(dbHarness)
- h.init(t, o)
- return h
-}
-
-func newDbHarness(t *testing.T) *dbHarness {
- return newDbHarnessWopt(t, &opt.Options{})
-}
-
-func (h *dbHarness) init(t *testing.T, o *opt.Options) {
- h.t = t
- h.stor = newTestStorage(t)
- h.o = o
- h.ro = nil
- h.wo = nil
-
- if err := h.openDB0(); err != nil {
- // So that it will come after fatal message.
- defer h.stor.Close()
- h.t.Fatal("Open (init): got error: ", err)
- }
-}
-
-func (h *dbHarness) openDB0() (err error) {
- h.t.Log("opening DB")
- h.db, err = Open(h.stor, h.o)
- return
-}
-
-func (h *dbHarness) openDB() {
- if err := h.openDB0(); err != nil {
- h.t.Fatal("Open: got error: ", err)
- }
-}
-
-func (h *dbHarness) closeDB0() error {
- h.t.Log("closing DB")
- return h.db.Close()
-}
-
-func (h *dbHarness) closeDB() {
- if err := h.closeDB0(); err != nil {
- h.t.Error("Close: got error: ", err)
- }
- h.stor.CloseCheck()
- runtime.GC()
-}
-
-func (h *dbHarness) reopenDB() {
- h.closeDB()
- h.openDB()
-}
-
-func (h *dbHarness) close() {
- h.closeDB0()
- h.db = nil
- h.stor.Close()
- h.stor = nil
- runtime.GC()
-}
-
-func (h *dbHarness) openAssert(want bool) {
- db, err := Open(h.stor, h.o)
- if err != nil {
- if want {
- h.t.Error("Open: assert: got error: ", err)
- } else {
- h.t.Log("Open: assert: got error (expected): ", err)
- }
- } else {
- if !want {
- h.t.Error("Open: assert: expect error")
- }
- db.Close()
- }
-}
-
-func (h *dbHarness) write(batch *Batch) {
- if err := h.db.Write(batch, h.wo); err != nil {
- h.t.Error("Write: got error: ", err)
- }
-}
-
-func (h *dbHarness) put(key, value string) {
- if err := h.db.Put([]byte(key), []byte(value), h.wo); err != nil {
- h.t.Error("Put: got error: ", err)
- }
-}
-
-func (h *dbHarness) putMulti(n int, low, hi string) {
- for i := 0; i < n; i++ {
- h.put(low, "begin")
- h.put(hi, "end")
- h.compactMem()
- }
-}
-
-func (h *dbHarness) maxNextLevelOverlappingBytes(want uint64) {
- t := h.t
- db := h.db
-
- var (
- maxOverlaps uint64
- maxLevel int
- )
- v := db.s.version()
- for i, tt := range v.tables[1 : len(v.tables)-1] {
- level := i + 1
- next := v.tables[level+1]
- for _, t := range tt {
- r := next.getOverlaps(nil, db.s.icmp, t.imin.ukey(), t.imax.ukey(), false)
- sum := r.size()
- if sum > maxOverlaps {
- maxOverlaps = sum
- maxLevel = level
- }
- }
- }
- v.release()
-
- if maxOverlaps > want {
- t.Errorf("next level most overlapping bytes is more than %d, got=%d level=%d", want, maxOverlaps, maxLevel)
- } else {
- t.Logf("next level most overlapping bytes is %d, level=%d want=%d", maxOverlaps, maxLevel, want)
- }
-}
-
-func (h *dbHarness) delete(key string) {
- t := h.t
- db := h.db
-
- err := db.Delete([]byte(key), h.wo)
- if err != nil {
- t.Error("Delete: got error: ", err)
- }
-}
-
-func (h *dbHarness) assertNumKeys(want int) {
- iter := h.db.NewIterator(nil, h.ro)
- defer iter.Release()
- got := 0
- for iter.Next() {
- got++
- }
- if err := iter.Error(); err != nil {
- h.t.Error("assertNumKeys: ", err)
- }
- if want != got {
- h.t.Errorf("assertNumKeys: want=%d got=%d", want, got)
- }
-}
-
-func (h *dbHarness) getr(db Reader, key string, expectFound bool) (found bool, v []byte) {
- t := h.t
- v, err := db.Get([]byte(key), h.ro)
- switch err {
- case ErrNotFound:
- if expectFound {
- t.Errorf("Get: key '%s' not found, want found", key)
- }
- case nil:
- found = true
- if !expectFound {
- t.Errorf("Get: key '%s' found, want not found", key)
- }
- default:
- t.Error("Get: got error: ", err)
- }
- return
-}
-
-func (h *dbHarness) get(key string, expectFound bool) (found bool, v []byte) {
- return h.getr(h.db, key, expectFound)
-}
-
-func (h *dbHarness) getValr(db Reader, key, value string) {
- t := h.t
- found, r := h.getr(db, key, true)
- if !found {
- return
- }
- rval := string(r)
- if rval != value {
- t.Errorf("Get: invalid value, got '%s', want '%s'", rval, value)
- }
-}
-
-func (h *dbHarness) getVal(key, value string) {
- h.getValr(h.db, key, value)
-}
-
-func (h *dbHarness) allEntriesFor(key, want string) {
- t := h.t
- db := h.db
- s := db.s
-
- ikey := newIkey([]byte(key), kMaxSeq, ktVal)
- iter := db.newRawIterator(nil, nil)
- if !iter.Seek(ikey) && iter.Error() != nil {
- t.Error("AllEntries: error during seek, err: ", iter.Error())
- return
- }
- res := "[ "
- first := true
- for iter.Valid() {
- if ukey, _, kt, kerr := parseIkey(iter.Key()); kerr == nil {
- if s.icmp.uCompare(ikey.ukey(), ukey) != 0 {
- break
- }
- if !first {
- res += ", "
- }
- first = false
- switch kt {
- case ktVal:
- res += string(iter.Value())
- case ktDel:
- res += "DEL"
- }
- } else {
- if !first {
- res += ", "
- }
- first = false
- res += "CORRUPTED"
- }
- iter.Next()
- }
- if !first {
- res += " "
- }
- res += "]"
- if res != want {
- t.Errorf("AllEntries: assert failed for key %q, got=%q want=%q", key, res, want)
- }
-}
-
-// Return a string that contains all key,value pairs in order,
-// formatted like "(k1->v1)(k2->v2)".
-func (h *dbHarness) getKeyVal(want string) {
- t := h.t
- db := h.db
-
- s, err := db.GetSnapshot()
- if err != nil {
- t.Fatal("GetSnapshot: got error: ", err)
- }
- res := ""
- iter := s.NewIterator(nil, nil)
- for iter.Next() {
- res += fmt.Sprintf("(%s->%s)", string(iter.Key()), string(iter.Value()))
- }
- iter.Release()
-
- if res != want {
- t.Errorf("GetKeyVal: invalid key/value pair, got=%q want=%q", res, want)
- }
- s.Release()
-}
-
-func (h *dbHarness) waitCompaction() {
- t := h.t
- db := h.db
- if err := db.compSendIdle(db.tcompCmdC); err != nil {
- t.Error("compaction error: ", err)
- }
-}
-
-func (h *dbHarness) waitMemCompaction() {
- t := h.t
- db := h.db
-
- if err := db.compSendIdle(db.mcompCmdC); err != nil {
- t.Error("compaction error: ", err)
- }
-}
-
-func (h *dbHarness) compactMem() {
- t := h.t
- db := h.db
-
- t.Log("starting memdb compaction")
-
- db.writeLockC <- struct{}{}
- defer func() {
- <-db.writeLockC
- }()
-
- if _, err := db.rotateMem(0); err != nil {
- t.Error("compaction error: ", err)
- }
- if err := db.compSendIdle(db.mcompCmdC); err != nil {
- t.Error("compaction error: ", err)
- }
-
- if h.totalTables() == 0 {
- t.Error("zero tables after mem compaction")
- }
-
- t.Log("memdb compaction done")
-}
-
-func (h *dbHarness) compactRangeAtErr(level int, min, max string, wanterr bool) {
- t := h.t
- db := h.db
-
- var _min, _max []byte
- if min != "" {
- _min = []byte(min)
- }
- if max != "" {
- _max = []byte(max)
- }
-
- t.Logf("starting table range compaction: level=%d, min=%q, max=%q", level, min, max)
-
- if err := db.compSendRange(db.tcompCmdC, level, _min, _max); err != nil {
- if wanterr {
- t.Log("CompactRangeAt: got error (expected): ", err)
- } else {
- t.Error("CompactRangeAt: got error: ", err)
- }
- } else if wanterr {
- t.Error("CompactRangeAt: expect error")
- }
-
- t.Log("table range compaction done")
-}
-
-func (h *dbHarness) compactRangeAt(level int, min, max string) {
- h.compactRangeAtErr(level, min, max, false)
-}
-
-func (h *dbHarness) compactRange(min, max string) {
- t := h.t
- db := h.db
-
- t.Logf("starting DB range compaction: min=%q, max=%q", min, max)
-
- var r util.Range
- if min != "" {
- r.Start = []byte(min)
- }
- if max != "" {
- r.Limit = []byte(max)
- }
- if err := db.CompactRange(r); err != nil {
- t.Error("CompactRange: got error: ", err)
- }
-
- t.Log("DB range compaction done")
-}
-
-func (h *dbHarness) sizeOf(start, limit string) uint64 {
- sz, err := h.db.SizeOf([]util.Range{
- {[]byte(start), []byte(limit)},
- })
- if err != nil {
- h.t.Error("SizeOf: got error: ", err)
- }
- return sz.Sum()
-}
-
-func (h *dbHarness) sizeAssert(start, limit string, low, hi uint64) {
- sz := h.sizeOf(start, limit)
- if sz < low || sz > hi {
- h.t.Errorf("sizeOf %q to %q not in range, want %d - %d, got %d",
- shorten(start), shorten(limit), low, hi, sz)
- }
-}
-
-func (h *dbHarness) getSnapshot() (s *Snapshot) {
- s, err := h.db.GetSnapshot()
- if err != nil {
- h.t.Fatal("GetSnapshot: got error: ", err)
- }
- return
-}
-func (h *dbHarness) tablesPerLevel(want string) {
- res := ""
- nz := 0
- v := h.db.s.version()
- for level, tt := range v.tables {
- if level > 0 {
- res += ","
- }
- res += fmt.Sprint(len(tt))
- if len(tt) > 0 {
- nz = len(res)
- }
- }
- v.release()
- res = res[:nz]
- if res != want {
- h.t.Errorf("invalid tables len, want=%s, got=%s", want, res)
- }
-}
-
-func (h *dbHarness) totalTables() (n int) {
- v := h.db.s.version()
- for _, tt := range v.tables {
- n += len(tt)
- }
- v.release()
- return
-}
-
-type keyValue interface {
- Key() []byte
- Value() []byte
-}
-
-func testKeyVal(t *testing.T, kv keyValue, want string) {
- res := string(kv.Key()) + "->" + string(kv.Value())
- if res != want {
- t.Errorf("invalid key/value, want=%q, got=%q", want, res)
- }
-}
-
-func numKey(num int) string {
- return fmt.Sprintf("key%06d", num)
-}
-
-var _bloom_filter = filter.NewBloomFilter(10)
-
-func truno(t *testing.T, o *opt.Options, f func(h *dbHarness)) {
- for i := 0; i < 4; i++ {
- func() {
- switch i {
- case 0:
- case 1:
- if o == nil {
- o = &opt.Options{Filter: _bloom_filter}
- } else {
- old := o
- o = &opt.Options{}
- *o = *old
- o.Filter = _bloom_filter
- }
- case 2:
- if o == nil {
- o = &opt.Options{Compression: opt.NoCompression}
- } else {
- old := o
- o = &opt.Options{}
- *o = *old
- o.Compression = opt.NoCompression
- }
- }
- h := newDbHarnessWopt(t, o)
- defer h.close()
- switch i {
- case 3:
- h.reopenDB()
- }
- f(h)
- }()
- }
-}
-
-func trun(t *testing.T, f func(h *dbHarness)) {
- truno(t, nil, f)
-}
-
-func testAligned(t *testing.T, name string, offset uintptr) {
- if offset%8 != 0 {
- t.Errorf("field %s offset is not 64-bit aligned", name)
- }
-}
-
-func Test_FieldsAligned(t *testing.T) {
- p1 := new(DB)
- testAligned(t, "DB.seq", unsafe.Offsetof(p1.seq))
- p2 := new(session)
- testAligned(t, "session.stNextFileNum", unsafe.Offsetof(p2.stNextFileNum))
- testAligned(t, "session.stJournalNum", unsafe.Offsetof(p2.stJournalNum))
- testAligned(t, "session.stPrevJournalNum", unsafe.Offsetof(p2.stPrevJournalNum))
- testAligned(t, "session.stSeqNum", unsafe.Offsetof(p2.stSeqNum))
-}
-
-func TestDB_Locking(t *testing.T) {
- h := newDbHarness(t)
- defer h.stor.Close()
- h.openAssert(false)
- h.closeDB()
- h.openAssert(true)
-}
-
-func TestDB_Empty(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.get("foo", false)
-
- h.reopenDB()
- h.get("foo", false)
- })
-}
-
-func TestDB_ReadWrite(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.put("foo", "v1")
- h.getVal("foo", "v1")
- h.put("bar", "v2")
- h.put("foo", "v3")
- h.getVal("foo", "v3")
- h.getVal("bar", "v2")
-
- h.reopenDB()
- h.getVal("foo", "v3")
- h.getVal("bar", "v2")
- })
-}
-
-func TestDB_PutDeleteGet(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.put("foo", "v1")
- h.getVal("foo", "v1")
- h.put("foo", "v2")
- h.getVal("foo", "v2")
- h.delete("foo")
- h.get("foo", false)
-
- h.reopenDB()
- h.get("foo", false)
- })
-}
-
-func TestDB_EmptyBatch(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- h.get("foo", false)
- err := h.db.Write(new(Batch), h.wo)
- if err != nil {
- t.Error("writing empty batch yield error: ", err)
- }
- h.get("foo", false)
-}
-
-func TestDB_GetFromFrozen(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{WriteBuffer: 100100})
- defer h.close()
-
- h.put("foo", "v1")
- h.getVal("foo", "v1")
-
- h.stor.DelaySync(storage.TypeTable) // Block sync calls
- h.put("k1", strings.Repeat("x", 100000)) // Fill memtable
- h.put("k2", strings.Repeat("y", 100000)) // Trigger compaction
- for i := 0; h.db.getFrozenMem() == nil && i < 100; i++ {
- time.Sleep(10 * time.Microsecond)
- }
- if h.db.getFrozenMem() == nil {
- h.stor.ReleaseSync(storage.TypeTable)
- t.Fatal("No frozen mem")
- }
- h.getVal("foo", "v1")
- h.stor.ReleaseSync(storage.TypeTable) // Release sync calls
-
- h.reopenDB()
- h.getVal("foo", "v1")
- h.get("k1", true)
- h.get("k2", true)
-}
-
-func TestDB_GetFromTable(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.put("foo", "v1")
- h.compactMem()
- h.getVal("foo", "v1")
- })
-}
-
-func TestDB_GetSnapshot(t *testing.T) {
- trun(t, func(h *dbHarness) {
- bar := strings.Repeat("b", 200)
- h.put("foo", "v1")
- h.put(bar, "v1")
-
- snap, err := h.db.GetSnapshot()
- if err != nil {
- t.Fatal("GetSnapshot: got error: ", err)
- }
-
- h.put("foo", "v2")
- h.put(bar, "v2")
-
- h.getVal("foo", "v2")
- h.getVal(bar, "v2")
- h.getValr(snap, "foo", "v1")
- h.getValr(snap, bar, "v1")
-
- h.compactMem()
-
- h.getVal("foo", "v2")
- h.getVal(bar, "v2")
- h.getValr(snap, "foo", "v1")
- h.getValr(snap, bar, "v1")
-
- snap.Release()
-
- h.reopenDB()
- h.getVal("foo", "v2")
- h.getVal(bar, "v2")
- })
-}
-
-func TestDB_GetLevel0Ordering(t *testing.T) {
- trun(t, func(h *dbHarness) {
- for i := 0; i < 4; i++ {
- h.put("bar", fmt.Sprintf("b%d", i))
- h.put("foo", fmt.Sprintf("v%d", i))
- h.compactMem()
- }
- h.getVal("foo", "v3")
- h.getVal("bar", "b3")
-
- v := h.db.s.version()
- t0len := v.tLen(0)
- v.release()
- if t0len < 2 {
- t.Errorf("level-0 tables is less than 2, got %d", t0len)
- }
-
- h.reopenDB()
- h.getVal("foo", "v3")
- h.getVal("bar", "b3")
- })
-}
-
-func TestDB_GetOrderedByLevels(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.put("foo", "v1")
- h.compactMem()
- h.compactRange("a", "z")
- h.getVal("foo", "v1")
- h.put("foo", "v2")
- h.compactMem()
- h.getVal("foo", "v2")
- })
-}
-
-func TestDB_GetPicksCorrectFile(t *testing.T) {
- trun(t, func(h *dbHarness) {
- // Arrange to have multiple files in a non-level-0 level.
- h.put("a", "va")
- h.compactMem()
- h.compactRange("a", "b")
- h.put("x", "vx")
- h.compactMem()
- h.compactRange("x", "y")
- h.put("f", "vf")
- h.compactMem()
- h.compactRange("f", "g")
-
- h.getVal("a", "va")
- h.getVal("f", "vf")
- h.getVal("x", "vx")
-
- h.compactRange("", "")
- h.getVal("a", "va")
- h.getVal("f", "vf")
- h.getVal("x", "vx")
- })
-}
-
-func TestDB_GetEncountersEmptyLevel(t *testing.T) {
- trun(t, func(h *dbHarness) {
- // Arrange for the following to happen:
- // * sstable A in level 0
- // * nothing in level 1
- // * sstable B in level 2
- // Then do enough Get() calls to arrange for an automatic compaction
- // of sstable A. A bug would cause the compaction to be marked as
- // occuring at level 1 (instead of the correct level 0).
-
- // Step 1: First place sstables in levels 0 and 2
- for i := 0; ; i++ {
- if i >= 100 {
- t.Fatal("could not fill levels-0 and level-2")
- }
- v := h.db.s.version()
- if v.tLen(0) > 0 && v.tLen(2) > 0 {
- v.release()
- break
- }
- v.release()
- h.put("a", "begin")
- h.put("z", "end")
- h.compactMem()
-
- h.getVal("a", "begin")
- h.getVal("z", "end")
- }
-
- // Step 2: clear level 1 if necessary.
- h.compactRangeAt(1, "", "")
- h.tablesPerLevel("1,0,1")
-
- h.getVal("a", "begin")
- h.getVal("z", "end")
-
- // Step 3: read a bunch of times
- for i := 0; i < 200; i++ {
- h.get("missing", false)
- }
-
- // Step 4: Wait for compaction to finish
- h.waitCompaction()
-
- v := h.db.s.version()
- if v.tLen(0) > 0 {
- t.Errorf("level-0 tables more than 0, got %d", v.tLen(0))
- }
- v.release()
-
- h.getVal("a", "begin")
- h.getVal("z", "end")
- })
-}
-
-func TestDB_IterMultiWithDelete(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.put("a", "va")
- h.put("b", "vb")
- h.put("c", "vc")
- h.delete("b")
- h.get("b", false)
-
- iter := h.db.NewIterator(nil, nil)
- iter.Seek([]byte("c"))
- testKeyVal(t, iter, "c->vc")
- iter.Prev()
- testKeyVal(t, iter, "a->va")
- iter.Release()
-
- h.compactMem()
-
- iter = h.db.NewIterator(nil, nil)
- iter.Seek([]byte("c"))
- testKeyVal(t, iter, "c->vc")
- iter.Prev()
- testKeyVal(t, iter, "a->va")
- iter.Release()
- })
-}
-
-func TestDB_IteratorPinsRef(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- h.put("foo", "hello")
-
- // Get iterator that will yield the current contents of the DB.
- iter := h.db.NewIterator(nil, nil)
-
- // Write to force compactions
- h.put("foo", "newvalue1")
- for i := 0; i < 100; i++ {
- h.put(numKey(i), strings.Repeat(fmt.Sprintf("v%09d", i), 100000/10))
- }
- h.put("foo", "newvalue2")
-
- iter.First()
- testKeyVal(t, iter, "foo->hello")
- if iter.Next() {
- t.Errorf("expect eof")
- }
- iter.Release()
-}
-
-func TestDB_Recover(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.put("foo", "v1")
- h.put("baz", "v5")
-
- h.reopenDB()
- h.getVal("foo", "v1")
-
- h.getVal("foo", "v1")
- h.getVal("baz", "v5")
- h.put("bar", "v2")
- h.put("foo", "v3")
-
- h.reopenDB()
- h.getVal("foo", "v3")
- h.put("foo", "v4")
- h.getVal("foo", "v4")
- h.getVal("bar", "v2")
- h.getVal("baz", "v5")
- })
-}
-
-func TestDB_RecoverWithEmptyJournal(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.put("foo", "v1")
- h.put("foo", "v2")
-
- h.reopenDB()
- h.reopenDB()
- h.put("foo", "v3")
-
- h.reopenDB()
- h.getVal("foo", "v3")
- })
-}
-
-func TestDB_RecoverDuringMemtableCompaction(t *testing.T) {
- truno(t, &opt.Options{WriteBuffer: 1000000}, func(h *dbHarness) {
-
- h.stor.DelaySync(storage.TypeTable)
- h.put("big1", strings.Repeat("x", 10000000))
- h.put("big2", strings.Repeat("y", 1000))
- h.put("bar", "v2")
- h.stor.ReleaseSync(storage.TypeTable)
-
- h.reopenDB()
- h.getVal("bar", "v2")
- h.getVal("big1", strings.Repeat("x", 10000000))
- h.getVal("big2", strings.Repeat("y", 1000))
- })
-}
-
-func TestDB_MinorCompactionsHappen(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{WriteBuffer: 10000})
- defer h.close()
-
- n := 500
-
- key := func(i int) string {
- return fmt.Sprintf("key%06d", i)
- }
-
- for i := 0; i < n; i++ {
- h.put(key(i), key(i)+strings.Repeat("v", 1000))
- }
-
- for i := 0; i < n; i++ {
- h.getVal(key(i), key(i)+strings.Repeat("v", 1000))
- }
-
- h.reopenDB()
- for i := 0; i < n; i++ {
- h.getVal(key(i), key(i)+strings.Repeat("v", 1000))
- }
-}
-
-func TestDB_RecoverWithLargeJournal(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- h.put("big1", strings.Repeat("1", 200000))
- h.put("big2", strings.Repeat("2", 200000))
- h.put("small3", strings.Repeat("3", 10))
- h.put("small4", strings.Repeat("4", 10))
- h.tablesPerLevel("")
-
- // Make sure that if we re-open with a small write buffer size that
- // we flush table files in the middle of a large journal file.
- h.o.WriteBuffer = 100000
- h.reopenDB()
- h.getVal("big1", strings.Repeat("1", 200000))
- h.getVal("big2", strings.Repeat("2", 200000))
- h.getVal("small3", strings.Repeat("3", 10))
- h.getVal("small4", strings.Repeat("4", 10))
- v := h.db.s.version()
- if v.tLen(0) <= 1 {
- t.Errorf("tables-0 less than one")
- }
- v.release()
-}
-
-func TestDB_CompactionsGenerateMultipleFiles(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{
- WriteBuffer: 10000000,
- Compression: opt.NoCompression,
- })
- defer h.close()
-
- v := h.db.s.version()
- if v.tLen(0) > 0 {
- t.Errorf("level-0 tables more than 0, got %d", v.tLen(0))
- }
- v.release()
-
- n := 80
-
- // Write 8MB (80 values, each 100K)
- for i := 0; i < n; i++ {
- h.put(numKey(i), strings.Repeat(fmt.Sprintf("v%09d", i), 100000/10))
- }
-
- // Reopening moves updates to level-0
- h.reopenDB()
- h.compactRangeAt(0, "", "")
-
- v = h.db.s.version()
- if v.tLen(0) > 0 {
- t.Errorf("level-0 tables more than 0, got %d", v.tLen(0))
- }
- if v.tLen(1) <= 1 {
- t.Errorf("level-1 tables less than 1, got %d", v.tLen(1))
- }
- v.release()
-
- for i := 0; i < n; i++ {
- h.getVal(numKey(i), strings.Repeat(fmt.Sprintf("v%09d", i), 100000/10))
- }
-}
-
-func TestDB_RepeatedWritesToSameKey(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{WriteBuffer: 100000})
- defer h.close()
-
- maxTables := h.o.GetNumLevel() + h.o.GetWriteL0PauseTrigger()
-
- value := strings.Repeat("v", 2*h.o.GetWriteBuffer())
- for i := 0; i < 5*maxTables; i++ {
- h.put("key", value)
- n := h.totalTables()
- if n > maxTables {
- t.Errorf("total tables exceed %d, got=%d, iter=%d", maxTables, n, i)
- }
- }
-}
-
-func TestDB_RepeatedWritesToSameKeyAfterReopen(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{WriteBuffer: 100000})
- defer h.close()
-
- h.reopenDB()
-
- maxTables := h.o.GetNumLevel() + h.o.GetWriteL0PauseTrigger()
-
- value := strings.Repeat("v", 2*h.o.GetWriteBuffer())
- for i := 0; i < 5*maxTables; i++ {
- h.put("key", value)
- n := h.totalTables()
- if n > maxTables {
- t.Errorf("total tables exceed %d, got=%d, iter=%d", maxTables, n, i)
- }
- }
-}
-
-func TestDB_SparseMerge(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{Compression: opt.NoCompression})
- defer h.close()
-
- h.putMulti(h.o.GetNumLevel(), "A", "Z")
-
- // Suppose there is:
- // small amount of data with prefix A
- // large amount of data with prefix B
- // small amount of data with prefix C
- // and that recent updates have made small changes to all three prefixes.
- // Check that we do not do a compaction that merges all of B in one shot.
- h.put("A", "va")
- value := strings.Repeat("x", 1000)
- for i := 0; i < 100000; i++ {
- h.put(fmt.Sprintf("B%010d", i), value)
- }
- h.put("C", "vc")
- h.compactMem()
- h.compactRangeAt(0, "", "")
- h.waitCompaction()
-
- // Make sparse update
- h.put("A", "va2")
- h.put("B100", "bvalue2")
- h.put("C", "vc2")
- h.compactMem()
-
- h.waitCompaction()
- h.maxNextLevelOverlappingBytes(20 * 1048576)
- h.compactRangeAt(0, "", "")
- h.waitCompaction()
- h.maxNextLevelOverlappingBytes(20 * 1048576)
- h.compactRangeAt(1, "", "")
- h.waitCompaction()
- h.maxNextLevelOverlappingBytes(20 * 1048576)
-}
-
-func TestDB_SizeOf(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{
- Compression: opt.NoCompression,
- WriteBuffer: 10000000,
- })
- defer h.close()
-
- h.sizeAssert("", "xyz", 0, 0)
- h.reopenDB()
- h.sizeAssert("", "xyz", 0, 0)
-
- // Write 8MB (80 values, each 100K)
- n := 80
- s1 := 100000
- s2 := 105000
-
- for i := 0; i < n; i++ {
- h.put(numKey(i), strings.Repeat(fmt.Sprintf("v%09d", i), s1/10))
- }
-
- // 0 because SizeOf() does not account for memtable space
- h.sizeAssert("", numKey(50), 0, 0)
-
- for r := 0; r < 3; r++ {
- h.reopenDB()
-
- for cs := 0; cs < n; cs += 10 {
- for i := 0; i < n; i += 10 {
- h.sizeAssert("", numKey(i), uint64(s1*i), uint64(s2*i))
- h.sizeAssert("", numKey(i)+".suffix", uint64(s1*(i+1)), uint64(s2*(i+1)))
- h.sizeAssert(numKey(i), numKey(i+10), uint64(s1*10), uint64(s2*10))
- }
-
- h.sizeAssert("", numKey(50), uint64(s1*50), uint64(s2*50))
- h.sizeAssert("", numKey(50)+".suffix", uint64(s1*50), uint64(s2*50))
-
- h.compactRangeAt(0, numKey(cs), numKey(cs+9))
- }
-
- v := h.db.s.version()
- if v.tLen(0) != 0 {
- t.Errorf("level-0 tables was not zero, got %d", v.tLen(0))
- }
- if v.tLen(1) == 0 {
- t.Error("level-1 tables was zero")
- }
- v.release()
- }
-}
-
-func TestDB_SizeOf_MixOfSmallAndLarge(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{Compression: opt.NoCompression})
- defer h.close()
-
- sizes := []uint64{
- 10000,
- 10000,
- 100000,
- 10000,
- 100000,
- 10000,
- 300000,
- 10000,
- }
-
- for i, n := range sizes {
- h.put(numKey(i), strings.Repeat(fmt.Sprintf("v%09d", i), int(n)/10))
- }
-
- for r := 0; r < 3; r++ {
- h.reopenDB()
-
- var x uint64
- for i, n := range sizes {
- y := x
- if i > 0 {
- y += 1000
- }
- h.sizeAssert("", numKey(i), x, y)
- x += n
- }
-
- h.sizeAssert(numKey(3), numKey(5), 110000, 111000)
-
- h.compactRangeAt(0, "", "")
- }
-}
-
-func TestDB_Snapshot(t *testing.T) {
- trun(t, func(h *dbHarness) {
- h.put("foo", "v1")
- s1 := h.getSnapshot()
- h.put("foo", "v2")
- s2 := h.getSnapshot()
- h.put("foo", "v3")
- s3 := h.getSnapshot()
- h.put("foo", "v4")
-
- h.getValr(s1, "foo", "v1")
- h.getValr(s2, "foo", "v2")
- h.getValr(s3, "foo", "v3")
- h.getVal("foo", "v4")
-
- s3.Release()
- h.getValr(s1, "foo", "v1")
- h.getValr(s2, "foo", "v2")
- h.getVal("foo", "v4")
-
- s1.Release()
- h.getValr(s2, "foo", "v2")
- h.getVal("foo", "v4")
-
- s2.Release()
- h.getVal("foo", "v4")
- })
-}
-
-func TestDB_SnapshotList(t *testing.T) {
- db := &DB{snapsList: list.New()}
- e0a := db.acquireSnapshot()
- e0b := db.acquireSnapshot()
- db.seq = 1
- e1 := db.acquireSnapshot()
- db.seq = 2
- e2 := db.acquireSnapshot()
-
- if db.minSeq() != 0 {
- t.Fatalf("invalid sequence number, got=%d", db.minSeq())
- }
- db.releaseSnapshot(e0a)
- if db.minSeq() != 0 {
- t.Fatalf("invalid sequence number, got=%d", db.minSeq())
- }
- db.releaseSnapshot(e2)
- if db.minSeq() != 0 {
- t.Fatalf("invalid sequence number, got=%d", db.minSeq())
- }
- db.releaseSnapshot(e0b)
- if db.minSeq() != 1 {
- t.Fatalf("invalid sequence number, got=%d", db.minSeq())
- }
- e2 = db.acquireSnapshot()
- if db.minSeq() != 1 {
- t.Fatalf("invalid sequence number, got=%d", db.minSeq())
- }
- db.releaseSnapshot(e1)
- if db.minSeq() != 2 {
- t.Fatalf("invalid sequence number, got=%d", db.minSeq())
- }
- db.releaseSnapshot(e2)
- if db.minSeq() != 2 {
- t.Fatalf("invalid sequence number, got=%d", db.minSeq())
- }
-}
-
-func TestDB_HiddenValuesAreRemoved(t *testing.T) {
- trun(t, func(h *dbHarness) {
- s := h.db.s
-
- h.put("foo", "v1")
- h.compactMem()
- m := h.o.GetMaxMemCompationLevel()
- v := s.version()
- num := v.tLen(m)
- v.release()
- if num != 1 {
- t.Errorf("invalid level-%d len, want=1 got=%d", m, num)
- }
-
- // Place a table at level last-1 to prevent merging with preceding mutation
- h.put("a", "begin")
- h.put("z", "end")
- h.compactMem()
- v = s.version()
- if v.tLen(m) != 1 {
- t.Errorf("invalid level-%d len, want=1 got=%d", m, v.tLen(m))
- }
- if v.tLen(m-1) != 1 {
- t.Errorf("invalid level-%d len, want=1 got=%d", m-1, v.tLen(m-1))
- }
- v.release()
-
- h.delete("foo")
- h.put("foo", "v2")
- h.allEntriesFor("foo", "[ v2, DEL, v1 ]")
- h.compactMem()
- h.allEntriesFor("foo", "[ v2, DEL, v1 ]")
- h.compactRangeAt(m-2, "", "z")
- // DEL eliminated, but v1 remains because we aren't compacting that level
- // (DEL can be eliminated because v2 hides v1).
- h.allEntriesFor("foo", "[ v2, v1 ]")
- h.compactRangeAt(m-1, "", "")
- // Merging last-1 w/ last, so we are the base level for "foo", so
- // DEL is removed. (as is v1).
- h.allEntriesFor("foo", "[ v2 ]")
- })
-}
-
-func TestDB_DeletionMarkers2(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
- s := h.db.s
-
- h.put("foo", "v1")
- h.compactMem()
- m := h.o.GetMaxMemCompationLevel()
- v := s.version()
- num := v.tLen(m)
- v.release()
- if num != 1 {
- t.Errorf("invalid level-%d len, want=1 got=%d", m, num)
- }
-
- // Place a table at level last-1 to prevent merging with preceding mutation
- h.put("a", "begin")
- h.put("z", "end")
- h.compactMem()
- v = s.version()
- if v.tLen(m) != 1 {
- t.Errorf("invalid level-%d len, want=1 got=%d", m, v.tLen(m))
- }
- if v.tLen(m-1) != 1 {
- t.Errorf("invalid level-%d len, want=1 got=%d", m-1, v.tLen(m-1))
- }
- v.release()
-
- h.delete("foo")
- h.allEntriesFor("foo", "[ DEL, v1 ]")
- h.compactMem() // Moves to level last-2
- h.allEntriesFor("foo", "[ DEL, v1 ]")
- h.compactRangeAt(m-2, "", "")
- // DEL kept: "last" file overlaps
- h.allEntriesFor("foo", "[ DEL, v1 ]")
- h.compactRangeAt(m-1, "", "")
- // Merging last-1 w/ last, so we are the base level for "foo", so
- // DEL is removed. (as is v1).
- h.allEntriesFor("foo", "[ ]")
-}
-
-func TestDB_CompactionTableOpenError(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{OpenFilesCacheCapacity: -1})
- defer h.close()
-
- im := 10
- jm := 10
- for r := 0; r < 2; r++ {
- for i := 0; i < im; i++ {
- for j := 0; j < jm; j++ {
- h.put(fmt.Sprintf("k%d,%d", i, j), fmt.Sprintf("v%d,%d", i, j))
- }
- h.compactMem()
- }
- }
-
- if n := h.totalTables(); n != im*2 {
- t.Errorf("total tables is %d, want %d", n, im)
- }
-
- h.stor.SetEmuErr(storage.TypeTable, tsOpOpen)
- go h.db.CompactRange(util.Range{})
- if err := h.db.compSendIdle(h.db.tcompCmdC); err != nil {
- t.Log("compaction error: ", err)
- }
- h.closeDB0()
- h.openDB()
- h.stor.SetEmuErr(0, tsOpOpen)
-
- for i := 0; i < im; i++ {
- for j := 0; j < jm; j++ {
- h.getVal(fmt.Sprintf("k%d,%d", i, j), fmt.Sprintf("v%d,%d", i, j))
- }
- }
-}
-
-func TestDB_OverlapInLevel0(t *testing.T) {
- trun(t, func(h *dbHarness) {
- if h.o.GetMaxMemCompationLevel() != 2 {
- t.Fatal("fix test to reflect the config")
- }
-
- // Fill levels 1 and 2 to disable the pushing of new memtables to levels > 0.
- h.put("100", "v100")
- h.put("999", "v999")
- h.compactMem()
- h.delete("100")
- h.delete("999")
- h.compactMem()
- h.tablesPerLevel("0,1,1")
-
- // Make files spanning the following ranges in level-0:
- // files[0] 200 .. 900
- // files[1] 300 .. 500
- // Note that files are sorted by min key.
- h.put("300", "v300")
- h.put("500", "v500")
- h.compactMem()
- h.put("200", "v200")
- h.put("600", "v600")
- h.put("900", "v900")
- h.compactMem()
- h.tablesPerLevel("2,1,1")
-
- // Compact away the placeholder files we created initially
- h.compactRangeAt(1, "", "")
- h.compactRangeAt(2, "", "")
- h.tablesPerLevel("2")
-
- // Do a memtable compaction. Before bug-fix, the compaction would
- // not detect the overlap with level-0 files and would incorrectly place
- // the deletion in a deeper level.
- h.delete("600")
- h.compactMem()
- h.tablesPerLevel("3")
- h.get("600", false)
- })
-}
-
-func TestDB_L0_CompactionBug_Issue44_a(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- h.reopenDB()
- h.put("b", "v")
- h.reopenDB()
- h.delete("b")
- h.delete("a")
- h.reopenDB()
- h.delete("a")
- h.reopenDB()
- h.put("a", "v")
- h.reopenDB()
- h.reopenDB()
- h.getKeyVal("(a->v)")
- h.waitCompaction()
- h.getKeyVal("(a->v)")
-}
-
-func TestDB_L0_CompactionBug_Issue44_b(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- h.reopenDB()
- h.put("", "")
- h.reopenDB()
- h.delete("e")
- h.put("", "")
- h.reopenDB()
- h.put("c", "cv")
- h.reopenDB()
- h.put("", "")
- h.reopenDB()
- h.put("", "")
- h.waitCompaction()
- h.reopenDB()
- h.put("d", "dv")
- h.reopenDB()
- h.put("", "")
- h.reopenDB()
- h.delete("d")
- h.delete("b")
- h.reopenDB()
- h.getKeyVal("(->)(c->cv)")
- h.waitCompaction()
- h.getKeyVal("(->)(c->cv)")
-}
-
-func TestDB_SingleEntryMemCompaction(t *testing.T) {
- trun(t, func(h *dbHarness) {
- for i := 0; i < 10; i++ {
- h.put("big", strings.Repeat("v", opt.DefaultWriteBuffer))
- h.compactMem()
- h.put("key", strings.Repeat("v", opt.DefaultBlockSize))
- h.compactMem()
- h.put("k", "v")
- h.compactMem()
- h.put("", "")
- h.compactMem()
- h.put("verybig", strings.Repeat("v", opt.DefaultWriteBuffer*2))
- h.compactMem()
- }
- })
-}
-
-func TestDB_ManifestWriteError(t *testing.T) {
- for i := 0; i < 2; i++ {
- func() {
- h := newDbHarness(t)
- defer h.close()
-
- h.put("foo", "bar")
- h.getVal("foo", "bar")
-
- // Mem compaction (will succeed)
- h.compactMem()
- h.getVal("foo", "bar")
- v := h.db.s.version()
- if n := v.tLen(h.o.GetMaxMemCompationLevel()); n != 1 {
- t.Errorf("invalid total tables, want=1 got=%d", n)
- }
- v.release()
-
- if i == 0 {
- h.stor.SetEmuErr(storage.TypeManifest, tsOpWrite)
- } else {
- h.stor.SetEmuErr(storage.TypeManifest, tsOpSync)
- }
-
- // Merging compaction (will fail)
- h.compactRangeAtErr(h.o.GetMaxMemCompationLevel(), "", "", true)
-
- h.db.Close()
- h.stor.SetEmuErr(0, tsOpWrite)
- h.stor.SetEmuErr(0, tsOpSync)
-
- // Should not lose data
- h.openDB()
- h.getVal("foo", "bar")
- }()
- }
-}
-
-func assertErr(t *testing.T, err error, wanterr bool) {
- if err != nil {
- if wanterr {
- t.Log("AssertErr: got error (expected): ", err)
- } else {
- t.Error("AssertErr: got error: ", err)
- }
- } else if wanterr {
- t.Error("AssertErr: expect error")
- }
-}
-
-func TestDB_ClosedIsClosed(t *testing.T) {
- h := newDbHarness(t)
- db := h.db
-
- var iter, iter2 iterator.Iterator
- var snap *Snapshot
- func() {
- defer h.close()
-
- h.put("k", "v")
- h.getVal("k", "v")
-
- iter = db.NewIterator(nil, h.ro)
- iter.Seek([]byte("k"))
- testKeyVal(t, iter, "k->v")
-
- var err error
- snap, err = db.GetSnapshot()
- if err != nil {
- t.Fatal("GetSnapshot: got error: ", err)
- }
-
- h.getValr(snap, "k", "v")
-
- iter2 = snap.NewIterator(nil, h.ro)
- iter2.Seek([]byte("k"))
- testKeyVal(t, iter2, "k->v")
-
- h.put("foo", "v2")
- h.delete("foo")
-
- // closing DB
- iter.Release()
- iter2.Release()
- }()
-
- assertErr(t, db.Put([]byte("x"), []byte("y"), h.wo), true)
- _, err := db.Get([]byte("k"), h.ro)
- assertErr(t, err, true)
-
- if iter.Valid() {
- t.Errorf("iter.Valid should false")
- }
- assertErr(t, iter.Error(), false)
- testKeyVal(t, iter, "->")
- if iter.Seek([]byte("k")) {
- t.Errorf("iter.Seek should false")
- }
- assertErr(t, iter.Error(), true)
-
- assertErr(t, iter2.Error(), false)
-
- _, err = snap.Get([]byte("k"), h.ro)
- assertErr(t, err, true)
-
- _, err = db.GetSnapshot()
- assertErr(t, err, true)
-
- iter3 := db.NewIterator(nil, h.ro)
- assertErr(t, iter3.Error(), true)
-
- iter3 = snap.NewIterator(nil, h.ro)
- assertErr(t, iter3.Error(), true)
-
- assertErr(t, db.Delete([]byte("k"), h.wo), true)
-
- _, err = db.GetProperty("leveldb.stats")
- assertErr(t, err, true)
-
- _, err = db.SizeOf([]util.Range{{[]byte("a"), []byte("z")}})
- assertErr(t, err, true)
-
- assertErr(t, db.CompactRange(util.Range{}), true)
-
- assertErr(t, db.Close(), true)
-}
-
-type numberComparer struct{}
-
-func (numberComparer) num(x []byte) (n int) {
- fmt.Sscan(string(x[1:len(x)-1]), &n)
- return
-}
-
-func (numberComparer) Name() string {
- return "test.NumberComparer"
-}
-
-func (p numberComparer) Compare(a, b []byte) int {
- return p.num(a) - p.num(b)
-}
-
-func (numberComparer) Separator(dst, a, b []byte) []byte { return nil }
-func (numberComparer) Successor(dst, b []byte) []byte { return nil }
-
-func TestDB_CustomComparer(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{
- Comparer: numberComparer{},
- WriteBuffer: 1000,
- })
- defer h.close()
-
- h.put("[10]", "ten")
- h.put("[0x14]", "twenty")
- for i := 0; i < 2; i++ {
- h.getVal("[10]", "ten")
- h.getVal("[0xa]", "ten")
- h.getVal("[20]", "twenty")
- h.getVal("[0x14]", "twenty")
- h.get("[15]", false)
- h.get("[0xf]", false)
- h.compactMem()
- h.compactRange("[0]", "[9999]")
- }
-
- for n := 0; n < 2; n++ {
- for i := 0; i < 100; i++ {
- v := fmt.Sprintf("[%d]", i*10)
- h.put(v, v)
- }
- h.compactMem()
- h.compactRange("[0]", "[1000000]")
- }
-}
-
-func TestDB_ManualCompaction(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- if h.o.GetMaxMemCompationLevel() != 2 {
- t.Fatal("fix test to reflect the config")
- }
-
- h.putMulti(3, "p", "q")
- h.tablesPerLevel("1,1,1")
-
- // Compaction range falls before files
- h.compactRange("", "c")
- h.tablesPerLevel("1,1,1")
-
- // Compaction range falls after files
- h.compactRange("r", "z")
- h.tablesPerLevel("1,1,1")
-
- // Compaction range overlaps files
- h.compactRange("p1", "p9")
- h.tablesPerLevel("0,0,1")
-
- // Populate a different range
- h.putMulti(3, "c", "e")
- h.tablesPerLevel("1,1,2")
-
- // Compact just the new range
- h.compactRange("b", "f")
- h.tablesPerLevel("0,0,2")
-
- // Compact all
- h.putMulti(1, "a", "z")
- h.tablesPerLevel("0,1,2")
- h.compactRange("", "")
- h.tablesPerLevel("0,0,1")
-}
-
-func TestDB_BloomFilter(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{
- DisableBlockCache: true,
- Filter: filter.NewBloomFilter(10),
- })
- defer h.close()
-
- key := func(i int) string {
- return fmt.Sprintf("key%06d", i)
- }
-
- const n = 10000
-
- // Populate multiple layers
- for i := 0; i < n; i++ {
- h.put(key(i), key(i))
- }
- h.compactMem()
- h.compactRange("a", "z")
- for i := 0; i < n; i += 100 {
- h.put(key(i), key(i))
- }
- h.compactMem()
-
- // Prevent auto compactions triggered by seeks
- h.stor.DelaySync(storage.TypeTable)
-
- // Lookup present keys. Should rarely read from small sstable.
- h.stor.SetReadCounter(storage.TypeTable)
- for i := 0; i < n; i++ {
- h.getVal(key(i), key(i))
- }
- cnt := int(h.stor.ReadCounter())
- t.Logf("lookup of %d present keys yield %d sstable I/O reads", n, cnt)
-
- if min, max := n, n+2*n/100; cnt < min || cnt > max {
- t.Errorf("num of sstable I/O reads of present keys not in range of %d - %d, got %d", min, max, cnt)
- }
-
- // Lookup missing keys. Should rarely read from either sstable.
- h.stor.ResetReadCounter()
- for i := 0; i < n; i++ {
- h.get(key(i)+".missing", false)
- }
- cnt = int(h.stor.ReadCounter())
- t.Logf("lookup of %d missing keys yield %d sstable I/O reads", n, cnt)
- if max := 3 * n / 100; cnt > max {
- t.Errorf("num of sstable I/O reads of missing keys was more than %d, got %d", max, cnt)
- }
-
- h.stor.ReleaseSync(storage.TypeTable)
-}
-
-func TestDB_Concurrent(t *testing.T) {
- const n, secs, maxkey = 4, 2, 1000
-
- runtime.GOMAXPROCS(n)
- trun(t, func(h *dbHarness) {
- var closeWg sync.WaitGroup
- var stop uint32
- var cnt [n]uint32
-
- for i := 0; i < n; i++ {
- closeWg.Add(1)
- go func(i int) {
- var put, get, found uint
- defer func() {
- t.Logf("goroutine %d stopped after %d ops, put=%d get=%d found=%d missing=%d",
- i, cnt[i], put, get, found, get-found)
- closeWg.Done()
- }()
-
- rnd := rand.New(rand.NewSource(int64(1000 + i)))
- for atomic.LoadUint32(&stop) == 0 {
- x := cnt[i]
-
- k := rnd.Intn(maxkey)
- kstr := fmt.Sprintf("%016d", k)
-
- if (rnd.Int() % 2) > 0 {
- put++
- h.put(kstr, fmt.Sprintf("%d.%d.%-1000d", k, i, x))
- } else {
- get++
- v, err := h.db.Get([]byte(kstr), h.ro)
- if err == nil {
- found++
- rk, ri, rx := 0, -1, uint32(0)
- fmt.Sscanf(string(v), "%d.%d.%d", &rk, &ri, &rx)
- if rk != k {
- t.Errorf("invalid key want=%d got=%d", k, rk)
- }
- if ri < 0 || ri >= n {
- t.Error("invalid goroutine number: ", ri)
- } else {
- tx := atomic.LoadUint32(&(cnt[ri]))
- if rx > tx {
- t.Errorf("invalid seq number, %d > %d ", rx, tx)
- }
- }
- } else if err != ErrNotFound {
- t.Error("Get: got error: ", err)
- return
- }
- }
- atomic.AddUint32(&cnt[i], 1)
- }
- }(i)
- }
-
- time.Sleep(secs * time.Second)
- atomic.StoreUint32(&stop, 1)
- closeWg.Wait()
- })
-
- runtime.GOMAXPROCS(1)
-}
-
-func TestDB_Concurrent2(t *testing.T) {
- const n, n2 = 4, 4000
-
- runtime.GOMAXPROCS(n*2 + 2)
- truno(t, &opt.Options{WriteBuffer: 30}, func(h *dbHarness) {
- var closeWg sync.WaitGroup
- var stop uint32
-
- for i := 0; i < n; i++ {
- closeWg.Add(1)
- go func(i int) {
- for k := 0; atomic.LoadUint32(&stop) == 0; k++ {
- h.put(fmt.Sprintf("k%d", k), fmt.Sprintf("%d.%d.", k, i)+strings.Repeat("x", 10))
- }
- closeWg.Done()
- }(i)
- }
-
- for i := 0; i < n; i++ {
- closeWg.Add(1)
- go func(i int) {
- for k := 1000000; k < 0 || atomic.LoadUint32(&stop) == 0; k-- {
- h.put(fmt.Sprintf("k%d", k), fmt.Sprintf("%d.%d.", k, i)+strings.Repeat("x", 10))
- }
- closeWg.Done()
- }(i)
- }
-
- cmp := comparer.DefaultComparer
- for i := 0; i < n2; i++ {
- closeWg.Add(1)
- go func(i int) {
- it := h.db.NewIterator(nil, nil)
- var pk []byte
- for it.Next() {
- kk := it.Key()
- if cmp.Compare(kk, pk) <= 0 {
- t.Errorf("iter %d: %q is successor of %q", i, pk, kk)
- }
- pk = append(pk[:0], kk...)
- var k, vk, vi int
- if n, err := fmt.Sscanf(string(it.Key()), "k%d", &k); err != nil {
- t.Errorf("iter %d: Scanf error on key %q: %v", i, it.Key(), err)
- } else if n < 1 {
- t.Errorf("iter %d: Cannot parse key %q", i, it.Key())
- }
- if n, err := fmt.Sscanf(string(it.Value()), "%d.%d", &vk, &vi); err != nil {
- t.Errorf("iter %d: Scanf error on value %q: %v", i, it.Value(), err)
- } else if n < 2 {
- t.Errorf("iter %d: Cannot parse value %q", i, it.Value())
- }
-
- if vk != k {
- t.Errorf("iter %d: invalid value i=%d, want=%d got=%d", i, vi, k, vk)
- }
- }
- if err := it.Error(); err != nil {
- t.Errorf("iter %d: Got error: %v", i, err)
- }
- it.Release()
- closeWg.Done()
- }(i)
- }
-
- atomic.StoreUint32(&stop, 1)
- closeWg.Wait()
- })
-
- runtime.GOMAXPROCS(1)
-}
-
-func TestDB_CreateReopenDbOnFile(t *testing.T) {
- dbpath := filepath.Join(os.TempDir(), fmt.Sprintf("goleveldbtestCreateReopenDbOnFile-%d", os.Getuid()))
- if err := os.RemoveAll(dbpath); err != nil {
- t.Fatal("cannot remove old db: ", err)
- }
- defer os.RemoveAll(dbpath)
-
- for i := 0; i < 3; i++ {
- stor, err := storage.OpenFile(dbpath)
- if err != nil {
- t.Fatalf("(%d) cannot open storage: %s", i, err)
- }
- db, err := Open(stor, nil)
- if err != nil {
- t.Fatalf("(%d) cannot open db: %s", i, err)
- }
- if err := db.Put([]byte("foo"), []byte("bar"), nil); err != nil {
- t.Fatalf("(%d) cannot write to db: %s", i, err)
- }
- if err := db.Close(); err != nil {
- t.Fatalf("(%d) cannot close db: %s", i, err)
- }
- if err := stor.Close(); err != nil {
- t.Fatalf("(%d) cannot close storage: %s", i, err)
- }
- }
-}
-
-func TestDB_CreateReopenDbOnFile2(t *testing.T) {
- dbpath := filepath.Join(os.TempDir(), fmt.Sprintf("goleveldbtestCreateReopenDbOnFile2-%d", os.Getuid()))
- if err := os.RemoveAll(dbpath); err != nil {
- t.Fatal("cannot remove old db: ", err)
- }
- defer os.RemoveAll(dbpath)
-
- for i := 0; i < 3; i++ {
- db, err := OpenFile(dbpath, nil)
- if err != nil {
- t.Fatalf("(%d) cannot open db: %s", i, err)
- }
- if err := db.Put([]byte("foo"), []byte("bar"), nil); err != nil {
- t.Fatalf("(%d) cannot write to db: %s", i, err)
- }
- if err := db.Close(); err != nil {
- t.Fatalf("(%d) cannot close db: %s", i, err)
- }
- }
-}
-
-func TestDB_DeletionMarkersOnMemdb(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- h.put("foo", "v1")
- h.compactMem()
- h.delete("foo")
- h.get("foo", false)
- h.getKeyVal("")
-}
-
-func TestDB_LeveldbIssue178(t *testing.T) {
- nKeys := (opt.DefaultCompactionTableSize / 30) * 5
- key1 := func(i int) string {
- return fmt.Sprintf("my_key_%d", i)
- }
- key2 := func(i int) string {
- return fmt.Sprintf("my_key_%d_xxx", i)
- }
-
- // Disable compression since it affects the creation of layers and the
- // code below is trying to test against a very specific scenario.
- h := newDbHarnessWopt(t, &opt.Options{Compression: opt.NoCompression})
- defer h.close()
-
- // Create first key range.
- batch := new(Batch)
- for i := 0; i < nKeys; i++ {
- batch.Put([]byte(key1(i)), []byte("value for range 1 key"))
- }
- h.write(batch)
-
- // Create second key range.
- batch.Reset()
- for i := 0; i < nKeys; i++ {
- batch.Put([]byte(key2(i)), []byte("value for range 2 key"))
- }
- h.write(batch)
-
- // Delete second key range.
- batch.Reset()
- for i := 0; i < nKeys; i++ {
- batch.Delete([]byte(key2(i)))
- }
- h.write(batch)
- h.waitMemCompaction()
-
- // Run manual compaction.
- h.compactRange(key1(0), key1(nKeys-1))
-
- // Checking the keys.
- h.assertNumKeys(nKeys)
-}
-
-func TestDB_LeveldbIssue200(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- h.put("1", "b")
- h.put("2", "c")
- h.put("3", "d")
- h.put("4", "e")
- h.put("5", "f")
-
- iter := h.db.NewIterator(nil, h.ro)
-
- // Add an element that should not be reflected in the iterator.
- h.put("25", "cd")
-
- iter.Seek([]byte("5"))
- assertBytes(t, []byte("5"), iter.Key())
- iter.Prev()
- assertBytes(t, []byte("4"), iter.Key())
- iter.Prev()
- assertBytes(t, []byte("3"), iter.Key())
- iter.Next()
- assertBytes(t, []byte("4"), iter.Key())
- iter.Next()
- assertBytes(t, []byte("5"), iter.Key())
-}
-
-func TestDB_GoleveldbIssue74(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{
- WriteBuffer: 1 * opt.MiB,
- })
- defer h.close()
-
- const n, dur = 10000, 5 * time.Second
-
- runtime.GOMAXPROCS(runtime.NumCPU())
-
- until := time.Now().Add(dur)
- wg := new(sync.WaitGroup)
- wg.Add(2)
- var done uint32
- go func() {
- var i int
- defer func() {
- t.Logf("WRITER DONE #%d", i)
- atomic.StoreUint32(&done, 1)
- wg.Done()
- }()
-
- b := new(Batch)
- for ; time.Now().Before(until) && atomic.LoadUint32(&done) == 0; i++ {
- iv := fmt.Sprintf("VAL%010d", i)
- for k := 0; k < n; k++ {
- key := fmt.Sprintf("KEY%06d", k)
- b.Put([]byte(key), []byte(key+iv))
- b.Put([]byte(fmt.Sprintf("PTR%06d", k)), []byte(key))
- }
- h.write(b)
-
- b.Reset()
- snap := h.getSnapshot()
- iter := snap.NewIterator(util.BytesPrefix([]byte("PTR")), nil)
- var k int
- for ; iter.Next(); k++ {
- ptrKey := iter.Key()
- key := iter.Value()
-
- if _, err := snap.Get(ptrKey, nil); err != nil {
- t.Fatalf("WRITER #%d snapshot.Get %q: %v", i, ptrKey, err)
- }
- if value, err := snap.Get(key, nil); err != nil {
- t.Fatalf("WRITER #%d snapshot.Get %q: %v", i, key, err)
- } else if string(value) != string(key)+iv {
- t.Fatalf("WRITER #%d snapshot.Get %q got invalid value, want %q got %q", i, key, string(key)+iv, value)
- }
-
- b.Delete(key)
- b.Delete(ptrKey)
- }
- h.write(b)
- iter.Release()
- snap.Release()
- if k != n {
- t.Fatalf("#%d %d != %d", i, k, n)
- }
- }
- }()
- go func() {
- var i int
- defer func() {
- t.Logf("READER DONE #%d", i)
- atomic.StoreUint32(&done, 1)
- wg.Done()
- }()
- for ; time.Now().Before(until) && atomic.LoadUint32(&done) == 0; i++ {
- snap := h.getSnapshot()
- iter := snap.NewIterator(util.BytesPrefix([]byte("PTR")), nil)
- var prevValue string
- var k int
- for ; iter.Next(); k++ {
- ptrKey := iter.Key()
- key := iter.Value()
-
- if _, err := snap.Get(ptrKey, nil); err != nil {
- t.Fatalf("READER #%d snapshot.Get %q: %v", i, ptrKey, err)
- }
-
- if value, err := snap.Get(key, nil); err != nil {
- t.Fatalf("READER #%d snapshot.Get %q: %v", i, key, err)
- } else if prevValue != "" && string(value) != string(key)+prevValue {
- t.Fatalf("READER #%d snapshot.Get %q got invalid value, want %q got %q", i, key, string(key)+prevValue, value)
- } else {
- prevValue = string(value[len(key):])
- }
- }
- iter.Release()
- snap.Release()
- if k > 0 && k != n {
- t.Fatalf("#%d %d != %d", i, k, n)
- }
- }
- }()
- wg.Wait()
-}
-
-func TestDB_GetProperties(t *testing.T) {
- h := newDbHarness(t)
- defer h.close()
-
- _, err := h.db.GetProperty("leveldb.num-files-at-level")
- if err == nil {
- t.Error("GetProperty() failed to detect missing level")
- }
-
- _, err = h.db.GetProperty("leveldb.num-files-at-level0")
- if err != nil {
- t.Error("got unexpected error", err)
- }
-
- _, err = h.db.GetProperty("leveldb.num-files-at-level0x")
- if err == nil {
- t.Error("GetProperty() failed to detect invalid level")
- }
-}
-
-func TestDB_GoleveldbIssue72and83(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{
- WriteBuffer: 1 * opt.MiB,
- OpenFilesCacheCapacity: 3,
- })
- defer h.close()
-
- const n, wn, dur = 10000, 100, 30 * time.Second
-
- runtime.GOMAXPROCS(runtime.NumCPU())
-
- randomData := func(prefix byte, i int) []byte {
- data := make([]byte, 1+4+32+64+32)
- _, err := crand.Reader.Read(data[1 : len(data)-8])
- if err != nil {
- panic(err)
- }
- data[0] = prefix
- binary.LittleEndian.PutUint32(data[len(data)-8:], uint32(i))
- binary.LittleEndian.PutUint32(data[len(data)-4:], util.NewCRC(data[:len(data)-4]).Value())
- return data
- }
-
- keys := make([][]byte, n)
- for i := range keys {
- keys[i] = randomData(1, 0)
- }
-
- until := time.Now().Add(dur)
- wg := new(sync.WaitGroup)
- wg.Add(3)
- var done uint32
- go func() {
- i := 0
- defer func() {
- t.Logf("WRITER DONE #%d", i)
- wg.Done()
- }()
-
- b := new(Batch)
- for ; i < wn && atomic.LoadUint32(&done) == 0; i++ {
- b.Reset()
- for _, k1 := range keys {
- k2 := randomData(2, i)
- b.Put(k2, randomData(42, i))
- b.Put(k1, k2)
- }
- if err := h.db.Write(b, h.wo); err != nil {
- atomic.StoreUint32(&done, 1)
- t.Fatalf("WRITER #%d db.Write: %v", i, err)
- }
- }
- }()
- go func() {
- var i int
- defer func() {
- t.Logf("READER0 DONE #%d", i)
- atomic.StoreUint32(&done, 1)
- wg.Done()
- }()
- for ; time.Now().Before(until) && atomic.LoadUint32(&done) == 0; i++ {
- snap := h.getSnapshot()
- seq := snap.elem.seq
- if seq == 0 {
- snap.Release()
- continue
- }
- iter := snap.NewIterator(util.BytesPrefix([]byte{1}), nil)
- writei := int(seq/(n*2) - 1)
- var k int
- for ; iter.Next(); k++ {
- k1 := iter.Key()
- k2 := iter.Value()
- k1checksum0 := binary.LittleEndian.Uint32(k1[len(k1)-4:])
- k1checksum1 := util.NewCRC(k1[:len(k1)-4]).Value()
- if k1checksum0 != k1checksum1 {
- t.Fatalf("READER0 #%d.%d W#%d invalid K1 checksum: %#x != %#x", i, k, k1checksum0, k1checksum0)
- }
- k2checksum0 := binary.LittleEndian.Uint32(k2[len(k2)-4:])
- k2checksum1 := util.NewCRC(k2[:len(k2)-4]).Value()
- if k2checksum0 != k2checksum1 {
- t.Fatalf("READER0 #%d.%d W#%d invalid K2 checksum: %#x != %#x", i, k, k2checksum0, k2checksum1)
- }
- kwritei := int(binary.LittleEndian.Uint32(k2[len(k2)-8:]))
- if writei != kwritei {
- t.Fatalf("READER0 #%d.%d W#%d invalid write iteration num: %d", i, k, writei, kwritei)
- }
- if _, err := snap.Get(k2, nil); err != nil {
- t.Fatalf("READER0 #%d.%d W#%d snap.Get: %v\nk1: %x\n -> k2: %x", i, k, writei, err, k1, k2)
- }
- }
- if err := iter.Error(); err != nil {
- t.Fatalf("READER0 #%d.%d W#%d snap.Iterator: %v", i, k, writei, err)
- }
- iter.Release()
- snap.Release()
- if k > 0 && k != n {
- t.Fatalf("READER0 #%d W#%d short read, got=%d want=%d", i, writei, k, n)
- }
- }
- }()
- go func() {
- var i int
- defer func() {
- t.Logf("READER1 DONE #%d", i)
- atomic.StoreUint32(&done, 1)
- wg.Done()
- }()
- for ; time.Now().Before(until) && atomic.LoadUint32(&done) == 0; i++ {
- iter := h.db.NewIterator(nil, nil)
- seq := iter.(*dbIter).seq
- if seq == 0 {
- iter.Release()
- continue
- }
- writei := int(seq/(n*2) - 1)
- var k int
- for ok := iter.Last(); ok; ok = iter.Prev() {
- k++
- }
- if err := iter.Error(); err != nil {
- t.Fatalf("READER1 #%d.%d W#%d db.Iterator: %v", i, k, writei, err)
- }
- iter.Release()
- if m := (writei+1)*n + n; k != m {
- t.Fatalf("READER1 #%d W#%d short read, got=%d want=%d", i, writei, k, m)
- }
- }
- }()
-
- wg.Wait()
-}
-
-func TestDB_TransientError(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{
- WriteBuffer: 128 * opt.KiB,
- OpenFilesCacheCapacity: 3,
- DisableCompactionBackoff: true,
- })
- defer h.close()
-
- const (
- nSnap = 20
- nKey = 10000
- )
-
- var (
- snaps [nSnap]*Snapshot
- b = &Batch{}
- )
- for i := range snaps {
- vtail := fmt.Sprintf("VAL%030d", i)
- b.Reset()
- for k := 0; k < nKey; k++ {
- key := fmt.Sprintf("KEY%8d", k)
- b.Put([]byte(key), []byte(key+vtail))
- }
- h.stor.SetEmuRandErr(storage.TypeTable, tsOpOpen, tsOpRead, tsOpReadAt)
- if err := h.db.Write(b, nil); err != nil {
- t.Logf("WRITE #%d error: %v", i, err)
- h.stor.SetEmuRandErr(0, tsOpOpen, tsOpRead, tsOpReadAt, tsOpWrite)
- for {
- if err := h.db.Write(b, nil); err == nil {
- break
- } else if errors.IsCorrupted(err) {
- t.Fatalf("WRITE #%d corrupted: %v", i, err)
- }
- }
- }
-
- snaps[i] = h.db.newSnapshot()
- b.Reset()
- for k := 0; k < nKey; k++ {
- key := fmt.Sprintf("KEY%8d", k)
- b.Delete([]byte(key))
- }
- h.stor.SetEmuRandErr(storage.TypeTable, tsOpOpen, tsOpRead, tsOpReadAt)
- if err := h.db.Write(b, nil); err != nil {
- t.Logf("WRITE #%d error: %v", i, err)
- h.stor.SetEmuRandErr(0, tsOpOpen, tsOpRead, tsOpReadAt)
- for {
- if err := h.db.Write(b, nil); err == nil {
- break
- } else if errors.IsCorrupted(err) {
- t.Fatalf("WRITE #%d corrupted: %v", i, err)
- }
- }
- }
- }
- h.stor.SetEmuRandErr(0, tsOpOpen, tsOpRead, tsOpReadAt)
-
- runtime.GOMAXPROCS(runtime.NumCPU())
-
- rnd := rand.New(rand.NewSource(0xecafdaed))
- wg := &sync.WaitGroup{}
- for i, snap := range snaps {
- wg.Add(2)
-
- go func(i int, snap *Snapshot, sk []int) {
- defer wg.Done()
-
- vtail := fmt.Sprintf("VAL%030d", i)
- for _, k := range sk {
- key := fmt.Sprintf("KEY%8d", k)
- xvalue, err := snap.Get([]byte(key), nil)
- if err != nil {
- t.Fatalf("READER_GET #%d SEQ=%d K%d error: %v", i, snap.elem.seq, k, err)
- }
- value := key + vtail
- if !bytes.Equal([]byte(value), xvalue) {
- t.Fatalf("READER_GET #%d SEQ=%d K%d invalid value: want %q, got %q", i, snap.elem.seq, k, value, xvalue)
- }
- }
- }(i, snap, rnd.Perm(nKey))
-
- go func(i int, snap *Snapshot) {
- defer wg.Done()
-
- vtail := fmt.Sprintf("VAL%030d", i)
- iter := snap.NewIterator(nil, nil)
- defer iter.Release()
- for k := 0; k < nKey; k++ {
- if !iter.Next() {
- if err := iter.Error(); err != nil {
- t.Fatalf("READER_ITER #%d K%d error: %v", i, k, err)
- } else {
- t.Fatalf("READER_ITER #%d K%d eoi", i, k)
- }
- }
- key := fmt.Sprintf("KEY%8d", k)
- xkey := iter.Key()
- if !bytes.Equal([]byte(key), xkey) {
- t.Fatalf("READER_ITER #%d K%d invalid key: want %q, got %q", i, k, key, xkey)
- }
- value := key + vtail
- xvalue := iter.Value()
- if !bytes.Equal([]byte(value), xvalue) {
- t.Fatalf("READER_ITER #%d K%d invalid value: want %q, got %q", i, k, value, xvalue)
- }
- }
- }(i, snap)
- }
-
- wg.Wait()
-}
-
-func TestDB_UkeyShouldntHopAcrossTable(t *testing.T) {
- h := newDbHarnessWopt(t, &opt.Options{
- WriteBuffer: 112 * opt.KiB,
- CompactionTableSize: 90 * opt.KiB,
- CompactionExpandLimitFactor: 1,
- })
- defer h.close()
-
- const (
- nSnap = 190
- nKey = 140
- )
-
- var (
- snaps [nSnap]*Snapshot
- b = &Batch{}
- )
- for i := range snaps {
- vtail := fmt.Sprintf("VAL%030d", i)
- b.Reset()
- for k := 0; k < nKey; k++ {
- key := fmt.Sprintf("KEY%08d", k)
- b.Put([]byte(key), []byte(key+vtail))
- }
- if err := h.db.Write(b, nil); err != nil {
- t.Fatalf("WRITE #%d error: %v", i, err)
- }
-
- snaps[i] = h.db.newSnapshot()
- b.Reset()
- for k := 0; k < nKey; k++ {
- key := fmt.Sprintf("KEY%08d", k)
- b.Delete([]byte(key))
- }
- if err := h.db.Write(b, nil); err != nil {
- t.Fatalf("WRITE #%d error: %v", i, err)
- }
- }
-
- h.compactMem()
-
- h.waitCompaction()
- for level, tables := range h.db.s.stVersion.tables {
- for _, table := range tables {
- t.Logf("L%d@%d %q:%q", level, table.file.Num(), table.imin, table.imax)
- }
- }
-
- h.compactRangeAt(0, "", "")
- h.waitCompaction()
- for level, tables := range h.db.s.stVersion.tables {
- for _, table := range tables {
- t.Logf("L%d@%d %q:%q", level, table.file.Num(), table.imin, table.imax)
- }
- }
- h.compactRangeAt(1, "", "")
- h.waitCompaction()
- for level, tables := range h.db.s.stVersion.tables {
- for _, table := range tables {
- t.Logf("L%d@%d %q:%q", level, table.file.Num(), table.imin, table.imax)
- }
- }
- runtime.GOMAXPROCS(runtime.NumCPU())
-
- wg := &sync.WaitGroup{}
- for i, snap := range snaps {
- wg.Add(1)
-
- go func(i int, snap *Snapshot) {
- defer wg.Done()
-
- vtail := fmt.Sprintf("VAL%030d", i)
- for k := 0; k < nKey; k++ {
- key := fmt.Sprintf("KEY%08d", k)
- xvalue, err := snap.Get([]byte(key), nil)
- if err != nil {
- t.Fatalf("READER_GET #%d SEQ=%d K%d error: %v", i, snap.elem.seq, k, err)
- }
- value := key + vtail
- if !bytes.Equal([]byte(value), xvalue) {
- t.Fatalf("READER_GET #%d SEQ=%d K%d invalid value: want %q, got %q", i, snap.elem.seq, k, value, xvalue)
- }
- }
- }(i, snap)
- }
-
- wg.Wait()
-}
-
-func TestDB_TableCompactionBuilder(t *testing.T) {
- stor := newTestStorage(t)
- defer stor.Close()
-
- const nSeq = 99
-
- o := &opt.Options{
- WriteBuffer: 112 * opt.KiB,
- CompactionTableSize: 43 * opt.KiB,
- CompactionExpandLimitFactor: 1,
- CompactionGPOverlapsFactor: 1,
- DisableBlockCache: true,
- }
- s, err := newSession(stor, o)
- if err != nil {
- t.Fatal(err)
- }
- if err := s.create(); err != nil {
- t.Fatal(err)
- }
- defer s.close()
- var (
- seq uint64
- targetSize = 5 * o.CompactionTableSize
- value = bytes.Repeat([]byte{'0'}, 100)
- )
- for i := 0; i < 2; i++ {
- tw, err := s.tops.create()
- if err != nil {
- t.Fatal(err)
- }
- for k := 0; tw.tw.BytesLen() < targetSize; k++ {
- key := []byte(fmt.Sprintf("%09d", k))
- seq += nSeq - 1
- for x := uint64(0); x < nSeq; x++ {
- if err := tw.append(newIkey(key, seq-x, ktVal), value); err != nil {
- t.Fatal(err)
- }
- }
- }
- tf, err := tw.finish()
- if err != nil {
- t.Fatal(err)
- }
- rec := &sessionRecord{numLevel: s.o.GetNumLevel()}
- rec.addTableFile(i, tf)
- if err := s.commit(rec); err != nil {
- t.Fatal(err)
- }
- }
-
- // Build grandparent.
- v := s.version()
- c := newCompaction(s, v, 1, append(tFiles{}, v.tables[1]...))
- rec := &sessionRecord{numLevel: s.o.GetNumLevel()}
- b := &tableCompactionBuilder{
- s: s,
- c: c,
- rec: rec,
- stat1: new(cStatsStaging),
- minSeq: 0,
- strict: true,
- tableSize: o.CompactionTableSize/3 + 961,
- }
- if err := b.run(new(compactionTransactCounter)); err != nil {
- t.Fatal(err)
- }
- for _, t := range c.tables[0] {
- rec.delTable(c.level, t.file.Num())
- }
- if err := s.commit(rec); err != nil {
- t.Fatal(err)
- }
- c.release()
-
- // Build level-1.
- v = s.version()
- c = newCompaction(s, v, 0, append(tFiles{}, v.tables[0]...))
- rec = &sessionRecord{numLevel: s.o.GetNumLevel()}
- b = &tableCompactionBuilder{
- s: s,
- c: c,
- rec: rec,
- stat1: new(cStatsStaging),
- minSeq: 0,
- strict: true,
- tableSize: o.CompactionTableSize,
- }
- if err := b.run(new(compactionTransactCounter)); err != nil {
- t.Fatal(err)
- }
- for _, t := range c.tables[0] {
- rec.delTable(c.level, t.file.Num())
- }
- // Move grandparent to level-3
- for _, t := range v.tables[2] {
- rec.delTable(2, t.file.Num())
- rec.addTableFile(3, t)
- }
- if err := s.commit(rec); err != nil {
- t.Fatal(err)
- }
- c.release()
-
- v = s.version()
- for level, want := range []bool{false, true, false, true, false} {
- got := len(v.tables[level]) > 0
- if want != got {
- t.Fatalf("invalid level-%d tables len: want %v, got %v", level, want, got)
- }
- }
- for i, f := range v.tables[1][:len(v.tables[1])-1] {
- nf := v.tables[1][i+1]
- if bytes.Equal(f.imax.ukey(), nf.imin.ukey()) {
- t.Fatalf("KEY %q hop across table %d .. %d", f.imax.ukey(), f.file.Num(), nf.file.Num())
- }
- }
- v.release()
-
- // Compaction with transient error.
- v = s.version()
- c = newCompaction(s, v, 1, append(tFiles{}, v.tables[1]...))
- rec = &sessionRecord{numLevel: s.o.GetNumLevel()}
- b = &tableCompactionBuilder{
- s: s,
- c: c,
- rec: rec,
- stat1: new(cStatsStaging),
- minSeq: 0,
- strict: true,
- tableSize: o.CompactionTableSize,
- }
- stor.SetEmuErrOnce(storage.TypeTable, tsOpSync)
- stor.SetEmuRandErr(storage.TypeTable, tsOpRead, tsOpReadAt, tsOpWrite)
- stor.SetEmuRandErrProb(0xf0)
- for {
- if err := b.run(new(compactionTransactCounter)); err != nil {
- t.Logf("(expected) b.run: %v", err)
- } else {
- break
- }
- }
- if err := s.commit(rec); err != nil {
- t.Fatal(err)
- }
- c.release()
-
- stor.SetEmuErrOnce(0, tsOpSync)
- stor.SetEmuRandErr(0, tsOpRead, tsOpReadAt, tsOpWrite)
-
- v = s.version()
- if len(v.tables[1]) != len(v.tables[2]) {
- t.Fatalf("invalid tables length, want %d, got %d", len(v.tables[1]), len(v.tables[2]))
- }
- for i, f0 := range v.tables[1] {
- f1 := v.tables[2][i]
- iter0 := s.tops.newIterator(f0, nil, nil)
- iter1 := s.tops.newIterator(f1, nil, nil)
- for j := 0; true; j++ {
- next0 := iter0.Next()
- next1 := iter1.Next()
- if next0 != next1 {
- t.Fatalf("#%d.%d invalid eoi: want %v, got %v", i, j, next0, next1)
- }
- key0 := iter0.Key()
- key1 := iter1.Key()
- if !bytes.Equal(key0, key1) {
- t.Fatalf("#%d.%d invalid key: want %q, got %q", i, j, key0, key1)
- }
- if next0 == false {
- break
- }
- }
- iter0.Release()
- iter1.Release()
- }
- v.release()
-}
-
-func testDB_IterTriggeredCompaction(t *testing.T, limitDiv int) {
- const (
- vSize = 200 * opt.KiB
- tSize = 100 * opt.MiB
- mIter = 100
- n = tSize / vSize
- )
-
- h := newDbHarnessWopt(t, &opt.Options{
- Compression: opt.NoCompression,
- DisableBlockCache: true,
- })
- defer h.close()
-
- key := func(x int) string {
- return fmt.Sprintf("v%06d", x)
- }
-
- // Fill.
- value := strings.Repeat("x", vSize)
- for i := 0; i < n; i++ {
- h.put(key(i), value)
- }
- h.compactMem()
-
- // Delete all.
- for i := 0; i < n; i++ {
- h.delete(key(i))
- }
- h.compactMem()
-
- var (
- limit = n / limitDiv
-
- startKey = key(0)
- limitKey = key(limit)
- maxKey = key(n)
- slice = &util.Range{Limit: []byte(limitKey)}
-
- initialSize0 = h.sizeOf(startKey, limitKey)
- initialSize1 = h.sizeOf(limitKey, maxKey)
- )
-
- t.Logf("inital size %s [rest %s]", shortenb(int(initialSize0)), shortenb(int(initialSize1)))
-
- for r := 0; true; r++ {
- if r >= mIter {
- t.Fatal("taking too long to compact")
- }
-
- // Iterates.
- iter := h.db.NewIterator(slice, h.ro)
- for iter.Next() {
- }
- if err := iter.Error(); err != nil {
- t.Fatalf("Iter err: %v", err)
- }
- iter.Release()
-
- // Wait compaction.
- h.waitCompaction()
-
- // Check size.
- size0 := h.sizeOf(startKey, limitKey)
- size1 := h.sizeOf(limitKey, maxKey)
- t.Logf("#%03d size %s [rest %s]", r, shortenb(int(size0)), shortenb(int(size1)))
- if size0 < initialSize0/10 {
- break
- }
- }
-
- if initialSize1 > 0 {
- h.sizeAssert(limitKey, maxKey, initialSize1/4-opt.MiB, initialSize1+opt.MiB)
- }
-}
-
-func TestDB_IterTriggeredCompaction(t *testing.T) {
- testDB_IterTriggeredCompaction(t, 1)
-}
-
-func TestDB_IterTriggeredCompactionHalf(t *testing.T) {
- testDB_IterTriggeredCompaction(t, 2)
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_transaction.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_transaction.go
new file mode 100644
index 000000000..527028756
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_transaction.go
@@ -0,0 +1,289 @@
+// Copyright (c) 2016, Suryandaru Triandana <syndtr@gmail.com>
+// All rights reserved.
+//
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package leveldb
+
+import (
+ "errors"
+ "sync"
+ "time"
+
+ "github.com/syndtr/goleveldb/leveldb/iterator"
+ "github.com/syndtr/goleveldb/leveldb/opt"
+ "github.com/syndtr/goleveldb/leveldb/util"
+)
+
+var errTransactionDone = errors.New("leveldb: transaction already closed")
+
+// Transaction is the transaction handle.
+type Transaction struct {
+ db *DB
+ lk sync.RWMutex
+ seq uint64
+ mem *memDB
+ tables tFiles
+ ikScratch []byte
+ rec sessionRecord
+ stats cStatStaging
+ closed bool
+}
+
+// Get gets the value for the given key. It returns ErrNotFound if the
+// DB does not contains the key.
+//
+// The returned slice is its own copy, it is safe to modify the contents
+// of the returned slice.
+// It is safe to modify the contents of the argument after Get returns.
+func (tr *Transaction) Get(key []byte, ro *opt.ReadOptions) ([]byte, error) {
+ tr.lk.RLock()
+ defer tr.lk.RUnlock()
+ if tr.closed {
+ return nil, errTransactionDone
+ }
+ return tr.db.get(tr.mem.DB, tr.tables, key, tr.seq, ro)
+}
+
+// Has returns true if the DB does contains the given key.
+//
+// It is safe to modify the contents of the argument after Has returns.
+func (tr *Transaction) Has(key []byte, ro *opt.ReadOptions) (bool, error) {
+ tr.lk.RLock()
+ defer tr.lk.RUnlock()
+ if tr.closed {
+ return false, errTransactionDone
+ }
+ return tr.db.has(tr.mem.DB, tr.tables, key, tr.seq, ro)
+}
+
+// NewIterator returns an iterator for the latest snapshot of the transaction.
+// The returned iterator is not goroutine-safe, but it is safe to use multiple
+// iterators concurrently, with each in a dedicated goroutine.
+// It is also safe to use an iterator concurrently while writes to the
+// transaction. The resultant key/value pairs are guaranteed to be consistent.
+//
+// Slice allows slicing the iterator to only contains keys in the given
+// range. A nil Range.Start is treated as a key before all keys in the
+// DB. And a nil Range.Limit is treated as a key after all keys in
+// the DB.
+//
+// The iterator must be released after use, by calling Release method.
+//
+// Also read Iterator documentation of the leveldb/iterator package.
+func (tr *Transaction) NewIterator(slice *util.Range, ro *opt.ReadOptions) iterator.Iterator {
+ tr.lk.RLock()
+ defer tr.lk.RUnlock()
+ if tr.closed {
+ return iterator.NewEmptyIterator(errTransactionDone)
+ }
+ tr.mem.incref()
+ return tr.db.newIterator(tr.mem, tr.tables, tr.seq, slice, ro)
+}
+
+func (tr *Transaction) flush() error {
+ // Flush memdb.
+ if tr.mem.Len() != 0 {
+ tr.stats.startTimer()
+ iter := tr.mem.NewIterator(nil)
+ t, n, err := tr.db.s.tops.createFrom(iter)
+ iter.Release()
+ tr.stats.stopTimer()
+ if err != nil {
+ return err
+ }
+ if tr.mem.getref() == 1 {
+ tr.mem.Reset()
+ } else {
+ tr.mem.decref()
+ tr.mem = tr.db.mpoolGet(0)
+ tr.mem.incref()
+ }
+ tr.tables = append(tr.tables, t)
+ tr.rec.addTableFile(0, t)
+ tr.stats.write += t.size
+ tr.db.logf("transaction@flush created L0@%d N·%d S·%s %q:%q", t.fd.Num, n, shortenb(int(t.size)), t.imin, t.imax)
+ }
+ return nil
+}
+
+func (tr *Transaction) put(kt kType, key, value []byte) error {
+ tr.ikScratch = makeIkey(tr.ikScratch, key, tr.seq+1, kt)
+ if tr.mem.Free() < len(tr.ikScratch)+len(value) {
+ if err := tr.flush(); err != nil {
+ return err
+ }
+ }
+ if err := tr.mem.Put(tr.ikScratch, value); err != nil {
+ return err
+ }
+ tr.seq++
+ return nil
+}
+
+// Put sets the value for the given key. It overwrites any previous value
+// for that key; a DB is not a multi-map.
+// Please note that the transaction is not compacted until committed, so if you
+// writes 10 same keys, then those 10 same keys are in the transaction.
+//
+// It is safe to modify the contents of the arguments after Put returns.
+func (tr *Transaction) Put(key, value []byte, wo *opt.WriteOptions) error {
+ tr.lk.Lock()
+ defer tr.lk.Unlock()
+ if tr.closed {
+ return errTransactionDone
+ }
+ return tr.put(ktVal, key, value)
+}
+
+// Delete deletes the value for the given key.
+// Please note that the transaction is not compacted until committed, so if you
+// writes 10 same keys, then those 10 same keys are in the transaction.
+//
+// It is safe to modify the contents of the arguments after Delete returns.
+func (tr *Transaction) Delete(key []byte, wo *opt.WriteOptions) error {
+ tr.lk.Lock()
+ defer tr.lk.Unlock()
+ if tr.closed {
+ return errTransactionDone
+ }
+ return tr.put(ktDel, key, nil)
+}
+
+// Write apply the given batch to the transaction. The batch will be applied
+// sequentially.
+// Please note that the transaction is not compacted until committed, so if you
+// writes 10 same keys, then those 10 same keys are in the transaction.
+//
+// It is safe to modify the contents of the arguments after Write returns.
+func (tr *Transaction) Write(b *Batch, wo *opt.WriteOptions) error {
+ if b == nil || b.Len() == 0 {
+ return nil
+ }
+
+ tr.lk.Lock()
+ defer tr.lk.Unlock()
+ if tr.closed {
+ return errTransactionDone
+ }
+ return b.decodeRec(func(i int, kt kType, key, value []byte) error {
+ return tr.put(kt, key, value)
+ })
+}
+
+func (tr *Transaction) setDone() {
+ tr.closed = true
+ tr.db.tr = nil
+ tr.mem.decref()
+ <-tr.db.writeLockC
+}
+
+// Commit commits the transaction.
+//
+// Other methods should not be called after transaction has been committed.
+func (tr *Transaction) Commit() error {
+ if err := tr.db.ok(); err != nil {
+ return err
+ }
+
+ tr.lk.Lock()
+ defer tr.lk.Unlock()
+ if tr.closed {
+ return errTransactionDone
+ }
+ defer tr.setDone()
+ if err := tr.flush(); err != nil {
+ tr.discard()
+ return err
+ }
+ if len(tr.tables) != 0 {
+ // Committing transaction.
+ tr.rec.setSeqNum(tr.seq)
+ tr.db.compCommitLk.Lock()
+ defer tr.db.compCommitLk.Unlock()
+ for retry := 0; retry < 3; retry++ {
+ if err := tr.db.s.commit(&tr.rec); err != nil {
+ tr.db.logf("transaction@commit error R·%d %q", retry, err)
+ select {
+ case <-time.After(time.Second):
+ case _, _ = <-tr.db.closeC:
+ tr.db.logf("transaction@commit exiting")
+ return err
+ }
+ } else {
+ // Success. Set db.seq.
+ tr.db.setSeq(tr.seq)
+ break
+ }
+ }
+ // Trigger table auto-compaction.
+ tr.db.compTrigger(tr.db.tcompCmdC)
+ }
+ return nil
+}
+
+func (tr *Transaction) discard() {
+ // Discard transaction.
+ for _, t := range tr.tables {
+ tr.db.logf("transaction@discard @%d", t.fd.Num)
+ if err1 := tr.db.s.stor.Remove(t.fd); err1 == nil {
+ tr.db.s.reuseFileNum(t.fd.Num)
+ }
+ }
+}
+
+// Discard discards the transaction.
+//
+// Other methods should not be called after transaction has been discarded.
+func (tr *Transaction) Discard() {
+ tr.lk.Lock()
+ if !tr.closed {
+ tr.discard()
+ tr.setDone()
+ }
+ tr.lk.Unlock()
+}
+
+// OpenTransaction opens an atomic DB transaction. Only one transaction can be
+// opened at a time. Write will be blocked until the transaction is committed or
+// discarded.
+// The returned transaction handle is goroutine-safe.
+//
+// The transaction must be closed once done, either by committing or discarding
+// the transaction.
+// Closing the DB will discard open transaction.
+func (db *DB) OpenTransaction() (*Transaction, error) {
+ if err := db.ok(); err != nil {
+ return nil, err
+ }
+
+ // The write happen synchronously.
+ select {
+ case db.writeLockC <- struct{}{}:
+ case err := <-db.compPerErrC:
+ return nil, err
+ case _, _ = <-db.closeC:
+ return nil, ErrClosed
+ }
+
+ if db.tr != nil {
+ panic("leveldb: has open transaction")
+ }
+
+ // Flush current memdb.
+ if db.mem != nil && db.mem.Len() != 0 {
+ if _, err := db.rotateMem(0, true); err != nil {
+ return nil, err
+ }
+ }
+
+ tr := &Transaction{
+ db: db,
+ seq: db.seq,
+ mem: db.mpoolGet(0),
+ }
+ tr.mem.incref()
+ db.tr = tr
+ return tr, nil
+}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_util.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_util.go
index a8a2bdf72..8ec86b2ac 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_util.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_util.go
@@ -40,59 +40,59 @@ func (db *DB) checkAndCleanFiles() error {
v := db.s.version()
defer v.release()
- tablesMap := make(map[uint64]bool)
- for _, tables := range v.tables {
+ tmap := make(map[int64]bool)
+ for _, tables := range v.levels {
for _, t := range tables {
- tablesMap[t.file.Num()] = false
+ tmap[t.fd.Num] = false
}
}
- files, err := db.s.getFiles(storage.TypeAll)
+ fds, err := db.s.stor.List(storage.TypeAll)
if err != nil {
return err
}
- var nTables int
- var rem []storage.File
- for _, f := range files {
+ var nt int
+ var rem []storage.FileDesc
+ for _, fd := range fds {
keep := true
- switch f.Type() {
+ switch fd.Type {
case storage.TypeManifest:
- keep = f.Num() >= db.s.manifestFile.Num()
+ keep = fd.Num >= db.s.manifestFd.Num
case storage.TypeJournal:
- if db.frozenJournalFile != nil {
- keep = f.Num() >= db.frozenJournalFile.Num()
+ if !db.frozenJournalFd.Nil() {
+ keep = fd.Num >= db.frozenJournalFd.Num
} else {
- keep = f.Num() >= db.journalFile.Num()
+ keep = fd.Num >= db.journalFd.Num
}
case storage.TypeTable:
- _, keep = tablesMap[f.Num()]
+ _, keep = tmap[fd.Num]
if keep {
- tablesMap[f.Num()] = true
- nTables++
+ tmap[fd.Num] = true
+ nt++
}
}
if !keep {
- rem = append(rem, f)
+ rem = append(rem, fd)
}
}
- if nTables != len(tablesMap) {
- var missing []*storage.FileInfo
- for num, present := range tablesMap {
+ if nt != len(tmap) {
+ var mfds []storage.FileDesc
+ for num, present := range tmap {
if !present {
- missing = append(missing, &storage.FileInfo{Type: storage.TypeTable, Num: num})
+ mfds = append(mfds, storage.FileDesc{storage.TypeTable, num})
db.logf("db@janitor table missing @%d", num)
}
}
- return errors.NewErrCorrupted(nil, &errors.ErrMissingFiles{Files: missing})
+ return errors.NewErrCorrupted(storage.FileDesc{}, &errors.ErrMissingFiles{Fds: mfds})
}
- db.logf("db@janitor F·%d G·%d", len(files), len(rem))
- for _, f := range rem {
- db.logf("db@janitor removing %s-%d", f.Type(), f.Num())
- if err := f.Remove(); err != nil {
+ db.logf("db@janitor F·%d G·%d", len(fds), len(rem))
+ for _, fd := range rem {
+ db.logf("db@janitor removing %s-%d", fd.Type, fd.Num)
+ if err := db.s.stor.Remove(fd); err != nil {
return err
}
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_write.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_write.go
index e1cf30c53..5200be6fc 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_write.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_write.go
@@ -45,9 +45,9 @@ func (db *DB) jWriter() {
}
}
-func (db *DB) rotateMem(n int) (mem *memDB, err error) {
+func (db *DB) rotateMem(n int, wait bool) (mem *memDB, err error) {
// Wait for pending memdb compaction.
- err = db.compSendIdle(db.mcompCmdC)
+ err = db.compTriggerWait(db.mcompCmdC)
if err != nil {
return
}
@@ -59,46 +59,50 @@ func (db *DB) rotateMem(n int) (mem *memDB, err error) {
}
// Schedule memdb compaction.
- db.compSendTrigger(db.mcompCmdC)
+ if wait {
+ err = db.compTriggerWait(db.mcompCmdC)
+ } else {
+ db.compTrigger(db.mcompCmdC)
+ }
return
}
-func (db *DB) flush(n int) (mem *memDB, nn int, err error) {
+func (db *DB) flush(n int) (mdb *memDB, mdbFree int, err error) {
delayed := false
flush := func() (retry bool) {
v := db.s.version()
defer v.release()
- mem = db.getEffectiveMem()
+ mdb = db.getEffectiveMem()
defer func() {
if retry {
- mem.decref()
- mem = nil
+ mdb.decref()
+ mdb = nil
}
}()
- nn = mem.mdb.Free()
+ mdbFree = mdb.Free()
switch {
case v.tLen(0) >= db.s.o.GetWriteL0SlowdownTrigger() && !delayed:
delayed = true
time.Sleep(time.Millisecond)
- case nn >= n:
+ case mdbFree >= n:
return false
case v.tLen(0) >= db.s.o.GetWriteL0PauseTrigger():
delayed = true
- err = db.compSendIdle(db.tcompCmdC)
+ err = db.compTriggerWait(db.tcompCmdC)
if err != nil {
return false
}
default:
// Allow memdb to grow if it has no entry.
- if mem.mdb.Len() == 0 {
- nn = n
+ if mdb.Len() == 0 {
+ mdbFree = n
} else {
- mem.decref()
- mem, err = db.rotateMem(n)
+ mdb.decref()
+ mdb, err = db.rotateMem(n, false)
if err == nil {
- nn = mem.mdb.Free()
+ mdbFree = mdb.Free()
} else {
- nn = 0
+ mdbFree = 0
}
}
return false
@@ -129,7 +133,20 @@ func (db *DB) Write(b *Batch, wo *opt.WriteOptions) (err error) {
return
}
- b.init(wo.GetSync())
+ b.init(wo.GetSync() && !db.s.o.GetNoSync())
+
+ if b.size() > db.s.o.GetWriteBuffer() && !db.s.o.GetDisableLargeBatchTransaction() {
+ // Writes using transaction.
+ tr, err1 := db.OpenTransaction()
+ if err1 != nil {
+ return err1
+ }
+ if err1 := tr.Write(b, wo); err1 != nil {
+ tr.Discard()
+ return err1
+ }
+ return tr.Commit()
+ }
// The write happen synchronously.
select {
@@ -137,6 +154,8 @@ func (db *DB) Write(b *Batch, wo *opt.WriteOptions) (err error) {
if <-db.writeMergedC {
return <-db.writeAckC
}
+ // Continue, the write lock already acquired by previous writer
+ // and handed out to us.
case db.writeLockC <- struct{}{}:
case err = <-db.compPerErrC:
return
@@ -148,6 +167,7 @@ func (db *DB) Write(b *Batch, wo *opt.WriteOptions) (err error) {
danglingMerge := false
defer func() {
if danglingMerge {
+ // Only one dangling merge at most, so this is safe.
db.writeMergedC <- false
} else {
<-db.writeLockC
@@ -157,18 +177,18 @@ func (db *DB) Write(b *Batch, wo *opt.WriteOptions) (err error) {
}
}()
- mem, memFree, err := db.flush(b.size())
+ mdb, mdbFree, err := db.flush(b.size())
if err != nil {
return
}
- defer mem.decref()
+ defer mdb.decref()
// Calculate maximum size of the batch.
m := 1 << 20
if x := b.size(); x <= 128<<10 {
m = x + (128 << 10)
}
- m = minInt(m, memFree)
+ m = minInt(m, mdbFree)
// Merge with other batch.
drain:
@@ -197,7 +217,7 @@ drain:
select {
case db.journalC <- b:
// Write into memdb
- if berr := b.memReplay(mem.mdb); berr != nil {
+ if berr := b.memReplay(mdb.DB); berr != nil {
panic(berr)
}
case err = <-db.compPerErrC:
@@ -211,7 +231,7 @@ drain:
case err = <-db.journalAckC:
if err != nil {
// Revert memdb if error detected
- if berr := b.revertMemReplay(mem.mdb); berr != nil {
+ if berr := b.revertMemReplay(mdb.DB); berr != nil {
panic(berr)
}
return
@@ -225,7 +245,7 @@ drain:
if err != nil {
return
}
- if berr := b.memReplay(mem.mdb); berr != nil {
+ if berr := b.memReplay(mdb.DB); berr != nil {
panic(berr)
}
}
@@ -233,8 +253,8 @@ drain:
// Set last seq number.
db.addSeq(uint64(b.Len()))
- if b.size() >= memFree {
- db.rotateMem(0)
+ if b.size() >= mdbFree {
+ db.rotateMem(0, false)
}
return
}
@@ -249,8 +269,7 @@ func (db *DB) Put(key, value []byte, wo *opt.WriteOptions) error {
return db.Write(b, wo)
}
-// Delete deletes the value for the given key. It returns ErrNotFound if
-// the DB does not contain the key.
+// Delete deletes the value for the given key.
//
// It is safe to modify the contents of the arguments after Delete returns.
func (db *DB) Delete(key []byte, wo *opt.WriteOptions) error {
@@ -290,16 +309,16 @@ func (db *DB) CompactRange(r util.Range) error {
}
// Check for overlaps in memdb.
- mem := db.getEffectiveMem()
- defer mem.decref()
- if isMemOverlaps(db.s.icmp, mem.mdb, r.Start, r.Limit) {
+ mdb := db.getEffectiveMem()
+ defer mdb.decref()
+ if isMemOverlaps(db.s.icmp, mdb.DB, r.Start, r.Limit) {
// Memdb compaction.
- if _, err := db.rotateMem(0); err != nil {
+ if _, err := db.rotateMem(0, false); err != nil {
<-db.writeLockC
return err
}
<-db.writeLockC
- if err := db.compSendIdle(db.mcompCmdC); err != nil {
+ if err := db.compTriggerWait(db.mcompCmdC); err != nil {
return err
}
} else {
@@ -307,5 +326,33 @@ func (db *DB) CompactRange(r util.Range) error {
}
// Table compaction.
- return db.compSendRange(db.tcompCmdC, -1, r.Start, r.Limit)
+ return db.compTriggerRange(db.tcompCmdC, -1, r.Start, r.Limit)
+}
+
+// SetReadOnly makes DB read-only. It will stay read-only until reopened.
+func (db *DB) SetReadOnly() error {
+ if err := db.ok(); err != nil {
+ return err
+ }
+
+ // Lock writer.
+ select {
+ case db.writeLockC <- struct{}{}:
+ db.compWriteLocking = true
+ case err := <-db.compPerErrC:
+ return err
+ case _, _ = <-db.closeC:
+ return ErrClosed
+ }
+
+ // Set compaction read-only.
+ select {
+ case db.compErrSetC <- ErrReadOnly:
+ case perr := <-db.compPerErrC:
+ return perr
+ case _, _ = <-db.closeC:
+ return ErrClosed
+ }
+
+ return nil
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors.go
index 29d0d2f27..c8bd66a5a 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors.go
@@ -12,6 +12,7 @@ import (
var (
ErrNotFound = errors.ErrNotFound
+ ErrReadOnly = errors.New("leveldb: read-only mode")
ErrSnapshotReleased = errors.New("leveldb: snapshot released")
ErrIterReleased = errors.New("leveldb: iterator released")
ErrClosed = errors.New("leveldb: closed")
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors/errors.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors/errors.go
index 84b5d6b7b..9a0f6e2c1 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors/errors.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/errors/errors.go
@@ -29,21 +29,21 @@ func New(text string) error {
// ErrCorrupted is the type that wraps errors that indicate corruption in
// the database.
type ErrCorrupted struct {
- File *storage.FileInfo
- Err error
+ Fd storage.FileDesc
+ Err error
}
func (e *ErrCorrupted) Error() string {
- if e.File != nil {
- return fmt.Sprintf("%v [file=%v]", e.Err, e.File)
+ if !e.Fd.Nil() {
+ return fmt.Sprintf("%v [file=%v]", e.Err, e.Fd)
} else {
return e.Err.Error()
}
}
// NewErrCorrupted creates new ErrCorrupted error.
-func NewErrCorrupted(f storage.File, err error) error {
- return &ErrCorrupted{storage.NewFileInfo(f), err}
+func NewErrCorrupted(fd storage.FileDesc, err error) error {
+ return &ErrCorrupted{fd, err}
}
// IsCorrupted returns a boolean indicating whether the error is indicating
@@ -52,24 +52,26 @@ func IsCorrupted(err error) bool {
switch err.(type) {
case *ErrCorrupted:
return true
+ case *storage.ErrCorrupted:
+ return true
}
return false
}
// ErrMissingFiles is the type that indicating a corruption due to missing
-// files.
+// files. ErrMissingFiles always wrapped with ErrCorrupted.
type ErrMissingFiles struct {
- Files []*storage.FileInfo
+ Fds []storage.FileDesc
}
func (e *ErrMissingFiles) Error() string { return "file missing" }
-// SetFile sets 'file info' of the given error with the given file.
+// SetFd sets 'file info' of the given error with the given file.
// Currently only ErrCorrupted is supported, otherwise will do nothing.
-func SetFile(err error, f storage.File) error {
+func SetFd(err error, fd storage.FileDesc) error {
switch x := err.(type) {
case *ErrCorrupted:
- x.File = storage.NewFileInfo(f)
+ x.Fd = fd
return x
}
return err
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/external_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/external_test.go
deleted file mode 100644
index b328ece4e..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/external_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-
- "github.com/syndtr/goleveldb/leveldb/opt"
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-var _ = testutil.Defer(func() {
- Describe("Leveldb external", func() {
- o := &opt.Options{
- DisableBlockCache: true,
- BlockRestartInterval: 5,
- BlockSize: 80,
- Compression: opt.NoCompression,
- OpenFilesCacheCapacity: -1,
- Strict: opt.StrictAll,
- WriteBuffer: 1000,
- CompactionTableSize: 2000,
- }
-
- Describe("write test", func() {
- It("should do write correctly", func(done Done) {
- db := newTestingDB(o, nil, nil)
- t := testutil.DBTesting{
- DB: db,
- Deleted: testutil.KeyValue_Generate(nil, 500, 1, 50, 5, 5).Clone(),
- }
- testutil.DoDBTesting(&t)
- db.TestClose()
- done <- true
- }, 20.0)
- })
-
- Describe("read test", func() {
- testutil.AllKeyValueTesting(nil, nil, func(kv testutil.KeyValue) testutil.DB {
- // Building the DB.
- db := newTestingDB(o, nil, nil)
- kv.IterateShuffled(nil, func(i int, key, value []byte) {
- err := db.TestPut(key, value)
- Expect(err).NotTo(HaveOccurred())
- })
-
- return db
- }, func(db testutil.DB) {
- db.(*testingDB).TestClose()
- })
- })
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/filter/bloom_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/filter/bloom_test.go
deleted file mode 100644
index 1fb56f071..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/filter/bloom_test.go
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package filter
-
-import (
- "encoding/binary"
- "github.com/syndtr/goleveldb/leveldb/util"
- "testing"
-)
-
-type harness struct {
- t *testing.T
-
- bloom Filter
- generator FilterGenerator
- filter []byte
-}
-
-func newHarness(t *testing.T) *harness {
- bloom := NewBloomFilter(10)
- return &harness{
- t: t,
- bloom: bloom,
- generator: bloom.NewGenerator(),
- }
-}
-
-func (h *harness) add(key []byte) {
- h.generator.Add(key)
-}
-
-func (h *harness) addNum(key uint32) {
- var b [4]byte
- binary.LittleEndian.PutUint32(b[:], key)
- h.add(b[:])
-}
-
-func (h *harness) build() {
- b := &util.Buffer{}
- h.generator.Generate(b)
- h.filter = b.Bytes()
-}
-
-func (h *harness) reset() {
- h.filter = nil
-}
-
-func (h *harness) filterLen() int {
- return len(h.filter)
-}
-
-func (h *harness) assert(key []byte, want, silent bool) bool {
- got := h.bloom.Contains(h.filter, key)
- if !silent && got != want {
- h.t.Errorf("assert on '%v' failed got '%v', want '%v'", key, got, want)
- }
- return got
-}
-
-func (h *harness) assertNum(key uint32, want, silent bool) bool {
- var b [4]byte
- binary.LittleEndian.PutUint32(b[:], key)
- return h.assert(b[:], want, silent)
-}
-
-func TestBloomFilter_Empty(t *testing.T) {
- h := newHarness(t)
- h.build()
- h.assert([]byte("hello"), false, false)
- h.assert([]byte("world"), false, false)
-}
-
-func TestBloomFilter_Small(t *testing.T) {
- h := newHarness(t)
- h.add([]byte("hello"))
- h.add([]byte("world"))
- h.build()
- h.assert([]byte("hello"), true, false)
- h.assert([]byte("world"), true, false)
- h.assert([]byte("x"), false, false)
- h.assert([]byte("foo"), false, false)
-}
-
-func nextN(n int) int {
- switch {
- case n < 10:
- n += 1
- case n < 100:
- n += 10
- case n < 1000:
- n += 100
- default:
- n += 1000
- }
- return n
-}
-
-func TestBloomFilter_VaryingLengths(t *testing.T) {
- h := newHarness(t)
- var mediocre, good int
- for n := 1; n < 10000; n = nextN(n) {
- h.reset()
- for i := 0; i < n; i++ {
- h.addNum(uint32(i))
- }
- h.build()
-
- got := h.filterLen()
- want := (n * 10 / 8) + 40
- if got > want {
- t.Errorf("filter len test failed, '%d' > '%d'", got, want)
- }
-
- for i := 0; i < n; i++ {
- h.assertNum(uint32(i), true, false)
- }
-
- var rate float32
- for i := 0; i < 10000; i++ {
- if h.assertNum(uint32(i+1000000000), true, true) {
- rate++
- }
- }
- rate /= 10000
- if rate > 0.02 {
- t.Errorf("false positive rate is more than 2%%, got %v, at len %d", rate, n)
- }
- if rate > 0.0125 {
- mediocre++
- } else {
- good++
- }
- }
- t.Logf("false positive rate: %d good, %d mediocre", good, mediocre)
- if mediocre > good/5 {
- t.Error("mediocre false positive rate is more than expected")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/array_iter_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/array_iter_test.go
deleted file mode 100644
index 1ed6d07cb..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/array_iter_test.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package iterator_test
-
-import (
- . "github.com/onsi/ginkgo"
-
- . "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-var _ = testutil.Defer(func() {
- Describe("Array iterator", func() {
- It("Should iterates and seeks correctly", func() {
- // Build key/value.
- kv := testutil.KeyValue_Generate(nil, 70, 1, 5, 3, 3)
-
- // Test the iterator.
- t := testutil.IteratorTesting{
- KeyValue: kv.Clone(),
- Iter: NewArrayIterator(kv),
- }
- testutil.DoIteratorTesting(&t)
- })
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/indexed_iter_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/indexed_iter_test.go
deleted file mode 100644
index 72a797892..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/indexed_iter_test.go
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package iterator_test
-
-import (
- "sort"
-
- . "github.com/onsi/ginkgo"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
- . "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-type keyValue struct {
- key []byte
- testutil.KeyValue
-}
-
-type keyValueIndex []keyValue
-
-func (x keyValueIndex) Search(key []byte) int {
- return sort.Search(x.Len(), func(i int) bool {
- return comparer.DefaultComparer.Compare(x[i].key, key) >= 0
- })
-}
-
-func (x keyValueIndex) Len() int { return len(x) }
-func (x keyValueIndex) Index(i int) (key, value []byte) { return x[i].key, nil }
-func (x keyValueIndex) Get(i int) Iterator { return NewArrayIterator(x[i]) }
-
-var _ = testutil.Defer(func() {
- Describe("Indexed iterator", func() {
- Test := func(n ...int) func() {
- if len(n) == 0 {
- rnd := testutil.NewRand()
- n = make([]int, rnd.Intn(17)+3)
- for i := range n {
- n[i] = rnd.Intn(19) + 1
- }
- }
-
- return func() {
- It("Should iterates and seeks correctly", func(done Done) {
- // Build key/value.
- index := make(keyValueIndex, len(n))
- sum := 0
- for _, x := range n {
- sum += x
- }
- kv := testutil.KeyValue_Generate(nil, sum, 1, 10, 4, 4)
- for i, j := 0, 0; i < len(n); i++ {
- for x := n[i]; x > 0; x-- {
- key, value := kv.Index(j)
- index[i].key = key
- index[i].Put(key, value)
- j++
- }
- }
-
- // Test the iterator.
- t := testutil.IteratorTesting{
- KeyValue: kv.Clone(),
- Iter: NewIndexedIterator(NewArrayIndexer(index), true),
- }
- testutil.DoIteratorTesting(&t)
- done <- true
- }, 1.5)
- }
- }
-
- Describe("with 100 keys", Test(100))
- Describe("with 50-50 keys", Test(50, 50))
- Describe("with 50-1 keys", Test(50, 1))
- Describe("with 50-1-50 keys", Test(50, 1, 50))
- Describe("with 1-50 keys", Test(1, 50))
- Describe("with random N-keys", Test())
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/iter_suite_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/iter_suite_test.go
deleted file mode 100644
index 5ef8d5baf..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/iter_suite_test.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package iterator_test
-
-import (
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-func TestIterator(t *testing.T) {
- testutil.RunSuite(t, "Iterator Suite")
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/merged_iter_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/merged_iter_test.go
deleted file mode 100644
index e523b63e4..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/iterator/merged_iter_test.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package iterator_test
-
-import (
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
- . "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-var _ = testutil.Defer(func() {
- Describe("Merged iterator", func() {
- Test := func(filled int, empty int) func() {
- return func() {
- It("Should iterates and seeks correctly", func(done Done) {
- rnd := testutil.NewRand()
-
- // Build key/value.
- filledKV := make([]testutil.KeyValue, filled)
- kv := testutil.KeyValue_Generate(nil, 100, 1, 10, 4, 4)
- kv.Iterate(func(i int, key, value []byte) {
- filledKV[rnd.Intn(filled)].Put(key, value)
- })
-
- // Create itearators.
- iters := make([]Iterator, filled+empty)
- for i := range iters {
- if empty == 0 || (rnd.Int()%2 == 0 && filled > 0) {
- filled--
- Expect(filledKV[filled].Len()).ShouldNot(BeZero())
- iters[i] = NewArrayIterator(filledKV[filled])
- } else {
- empty--
- iters[i] = NewEmptyIterator(nil)
- }
- }
-
- // Test the iterator.
- t := testutil.IteratorTesting{
- KeyValue: kv.Clone(),
- Iter: NewMergedIterator(iters, comparer.DefaultComparer, true),
- }
- testutil.DoIteratorTesting(&t)
- done <- true
- }, 1.5)
- }
- }
-
- Describe("with three, all filled iterators", Test(3, 0))
- Describe("with one filled, one empty iterators", Test(1, 1))
- Describe("with one filled, two empty iterators", Test(1, 2))
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal.go
index 6519ec660..891098bb7 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal.go
@@ -83,6 +83,7 @@ import (
"io"
"github.com/syndtr/goleveldb/leveldb/errors"
+ "github.com/syndtr/goleveldb/leveldb/storage"
"github.com/syndtr/goleveldb/leveldb/util"
)
@@ -165,7 +166,7 @@ func (r *Reader) corrupt(n int, reason string, skip bool) error {
r.dropper.Drop(&ErrCorrupted{n, reason})
}
if r.strict && !skip {
- r.err = errors.NewErrCorrupted(nil, &ErrCorrupted{n, reason})
+ r.err = errors.NewErrCorrupted(storage.FileDesc{}, &ErrCorrupted{n, reason})
return r.err
}
return errSkip
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal_test.go
deleted file mode 100644
index 0fcf22599..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/journal/journal_test.go
+++ /dev/null
@@ -1,818 +0,0 @@
-// Copyright 2011 The LevelDB-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Taken from: https://code.google.com/p/leveldb-go/source/browse/leveldb/record/record_test.go?r=df1fa28f7f3be6c3935548169002309c12967135
-// License, authors and contributors informations can be found at bellow URLs respectively:
-// https://code.google.com/p/leveldb-go/source/browse/LICENSE
-// https://code.google.com/p/leveldb-go/source/browse/AUTHORS
-// https://code.google.com/p/leveldb-go/source/browse/CONTRIBUTORS
-
-package journal
-
-import (
- "bytes"
- "encoding/binary"
- "fmt"
- "io"
- "io/ioutil"
- "math/rand"
- "strings"
- "testing"
-)
-
-type dropper struct {
- t *testing.T
-}
-
-func (d dropper) Drop(err error) {
- d.t.Log(err)
-}
-
-func short(s string) string {
- if len(s) < 64 {
- return s
- }
- return fmt.Sprintf("%s...(skipping %d bytes)...%s", s[:20], len(s)-40, s[len(s)-20:])
-}
-
-// big returns a string of length n, composed of repetitions of partial.
-func big(partial string, n int) string {
- return strings.Repeat(partial, n/len(partial)+1)[:n]
-}
-
-func TestEmpty(t *testing.T) {
- buf := new(bytes.Buffer)
- r := NewReader(buf, dropper{t}, true, true)
- if _, err := r.Next(); err != io.EOF {
- t.Fatalf("got %v, want %v", err, io.EOF)
- }
-}
-
-func testGenerator(t *testing.T, reset func(), gen func() (string, bool)) {
- buf := new(bytes.Buffer)
-
- reset()
- w := NewWriter(buf)
- for {
- s, ok := gen()
- if !ok {
- break
- }
- ww, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write([]byte(s)); err != nil {
- t.Fatal(err)
- }
- }
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- reset()
- r := NewReader(buf, dropper{t}, true, true)
- for {
- s, ok := gen()
- if !ok {
- break
- }
- rr, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- x, err := ioutil.ReadAll(rr)
- if err != nil {
- t.Fatal(err)
- }
- if string(x) != s {
- t.Fatalf("got %q, want %q", short(string(x)), short(s))
- }
- }
- if _, err := r.Next(); err != io.EOF {
- t.Fatalf("got %v, want %v", err, io.EOF)
- }
-}
-
-func testLiterals(t *testing.T, s []string) {
- var i int
- reset := func() {
- i = 0
- }
- gen := func() (string, bool) {
- if i == len(s) {
- return "", false
- }
- i++
- return s[i-1], true
- }
- testGenerator(t, reset, gen)
-}
-
-func TestMany(t *testing.T) {
- const n = 1e5
- var i int
- reset := func() {
- i = 0
- }
- gen := func() (string, bool) {
- if i == n {
- return "", false
- }
- i++
- return fmt.Sprintf("%d.", i-1), true
- }
- testGenerator(t, reset, gen)
-}
-
-func TestRandom(t *testing.T) {
- const n = 1e2
- var (
- i int
- r *rand.Rand
- )
- reset := func() {
- i, r = 0, rand.New(rand.NewSource(0))
- }
- gen := func() (string, bool) {
- if i == n {
- return "", false
- }
- i++
- return strings.Repeat(string(uint8(i)), r.Intn(2*blockSize+16)), true
- }
- testGenerator(t, reset, gen)
-}
-
-func TestBasic(t *testing.T) {
- testLiterals(t, []string{
- strings.Repeat("a", 1000),
- strings.Repeat("b", 97270),
- strings.Repeat("c", 8000),
- })
-}
-
-func TestBoundary(t *testing.T) {
- for i := blockSize - 16; i < blockSize+16; i++ {
- s0 := big("abcd", i)
- for j := blockSize - 16; j < blockSize+16; j++ {
- s1 := big("ABCDE", j)
- testLiterals(t, []string{s0, s1})
- testLiterals(t, []string{s0, "", s1})
- testLiterals(t, []string{s0, "x", s1})
- }
- }
-}
-
-func TestFlush(t *testing.T) {
- buf := new(bytes.Buffer)
- w := NewWriter(buf)
- // Write a couple of records. Everything should still be held
- // in the record.Writer buffer, so that buf.Len should be 0.
- w0, _ := w.Next()
- w0.Write([]byte("0"))
- w1, _ := w.Next()
- w1.Write([]byte("11"))
- if got, want := buf.Len(), 0; got != want {
- t.Fatalf("buffer length #0: got %d want %d", got, want)
- }
- // Flush the record.Writer buffer, which should yield 17 bytes.
- // 17 = 2*7 + 1 + 2, which is two headers and 1 + 2 payload bytes.
- if err := w.Flush(); err != nil {
- t.Fatal(err)
- }
- if got, want := buf.Len(), 17; got != want {
- t.Fatalf("buffer length #1: got %d want %d", got, want)
- }
- // Do another write, one that isn't large enough to complete the block.
- // The write should not have flowed through to buf.
- w2, _ := w.Next()
- w2.Write(bytes.Repeat([]byte("2"), 10000))
- if got, want := buf.Len(), 17; got != want {
- t.Fatalf("buffer length #2: got %d want %d", got, want)
- }
- // Flushing should get us up to 10024 bytes written.
- // 10024 = 17 + 7 + 10000.
- if err := w.Flush(); err != nil {
- t.Fatal(err)
- }
- if got, want := buf.Len(), 10024; got != want {
- t.Fatalf("buffer length #3: got %d want %d", got, want)
- }
- // Do a bigger write, one that completes the current block.
- // We should now have 32768 bytes (a complete block), without
- // an explicit flush.
- w3, _ := w.Next()
- w3.Write(bytes.Repeat([]byte("3"), 40000))
- if got, want := buf.Len(), 32768; got != want {
- t.Fatalf("buffer length #4: got %d want %d", got, want)
- }
- // Flushing should get us up to 50038 bytes written.
- // 50038 = 10024 + 2*7 + 40000. There are two headers because
- // the one record was split into two chunks.
- if err := w.Flush(); err != nil {
- t.Fatal(err)
- }
- if got, want := buf.Len(), 50038; got != want {
- t.Fatalf("buffer length #5: got %d want %d", got, want)
- }
- // Check that reading those records give the right lengths.
- r := NewReader(buf, dropper{t}, true, true)
- wants := []int64{1, 2, 10000, 40000}
- for i, want := range wants {
- rr, _ := r.Next()
- n, err := io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #%d: %v", i, err)
- }
- if n != want {
- t.Fatalf("read #%d: got %d bytes want %d", i, n, want)
- }
- }
-}
-
-func TestNonExhaustiveRead(t *testing.T) {
- const n = 100
- buf := new(bytes.Buffer)
- p := make([]byte, 10)
- rnd := rand.New(rand.NewSource(1))
-
- w := NewWriter(buf)
- for i := 0; i < n; i++ {
- length := len(p) + rnd.Intn(3*blockSize)
- s := string(uint8(i)) + "123456789abcdefgh"
- ww, _ := w.Next()
- ww.Write([]byte(big(s, length)))
- }
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- r := NewReader(buf, dropper{t}, true, true)
- for i := 0; i < n; i++ {
- rr, _ := r.Next()
- _, err := io.ReadFull(rr, p)
- if err != nil {
- t.Fatal(err)
- }
- want := string(uint8(i)) + "123456789"
- if got := string(p); got != want {
- t.Fatalf("read #%d: got %q want %q", i, got, want)
- }
- }
-}
-
-func TestStaleReader(t *testing.T) {
- buf := new(bytes.Buffer)
-
- w := NewWriter(buf)
- w0, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- w0.Write([]byte("0"))
- w1, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- w1.Write([]byte("11"))
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- r := NewReader(buf, dropper{t}, true, true)
- r0, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- r1, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- p := make([]byte, 1)
- if _, err := r0.Read(p); err == nil || !strings.Contains(err.Error(), "stale") {
- t.Fatalf("stale read #0: unexpected error: %v", err)
- }
- if _, err := r1.Read(p); err != nil {
- t.Fatalf("fresh read #1: got %v want nil error", err)
- }
- if p[0] != '1' {
- t.Fatalf("fresh read #1: byte contents: got '%c' want '1'", p[0])
- }
-}
-
-func TestStaleWriter(t *testing.T) {
- buf := new(bytes.Buffer)
-
- w := NewWriter(buf)
- w0, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- w1, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := w0.Write([]byte("0")); err == nil || !strings.Contains(err.Error(), "stale") {
- t.Fatalf("stale write #0: unexpected error: %v", err)
- }
- if _, err := w1.Write([]byte("11")); err != nil {
- t.Fatalf("fresh write #1: got %v want nil error", err)
- }
- if err := w.Flush(); err != nil {
- t.Fatalf("flush: %v", err)
- }
- if _, err := w1.Write([]byte("0")); err == nil || !strings.Contains(err.Error(), "stale") {
- t.Fatalf("stale write #1: unexpected error: %v", err)
- }
-}
-
-func TestCorrupt_MissingLastBlock(t *testing.T) {
- buf := new(bytes.Buffer)
-
- w := NewWriter(buf)
-
- // First record.
- ww, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize-1024)); err != nil {
- t.Fatalf("write #0: unexpected error: %v", err)
- }
-
- // Second record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize-headerSize)); err != nil {
- t.Fatalf("write #1: unexpected error: %v", err)
- }
-
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- // Cut the last block.
- b := buf.Bytes()[:blockSize]
- r := NewReader(bytes.NewReader(b), dropper{t}, false, true)
-
- // First read.
- rr, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err := io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #0: %v", err)
- }
- if n != blockSize-1024 {
- t.Fatalf("read #0: got %d bytes want %d", n, blockSize-1024)
- }
-
- // Second read.
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != io.ErrUnexpectedEOF {
- t.Fatalf("read #1: unexpected error: %v", err)
- }
-
- if _, err := r.Next(); err != io.EOF {
- t.Fatalf("last next: unexpected error: %v", err)
- }
-}
-
-func TestCorrupt_CorruptedFirstBlock(t *testing.T) {
- buf := new(bytes.Buffer)
-
- w := NewWriter(buf)
-
- // First record.
- ww, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize/2)); err != nil {
- t.Fatalf("write #0: unexpected error: %v", err)
- }
-
- // Second record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize-headerSize)); err != nil {
- t.Fatalf("write #1: unexpected error: %v", err)
- }
-
- // Third record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), (blockSize-headerSize)+1)); err != nil {
- t.Fatalf("write #2: unexpected error: %v", err)
- }
-
- // Fourth record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), (blockSize-headerSize)+2)); err != nil {
- t.Fatalf("write #3: unexpected error: %v", err)
- }
-
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- b := buf.Bytes()
- // Corrupting block #0.
- for i := 0; i < 1024; i++ {
- b[i] = '1'
- }
-
- r := NewReader(bytes.NewReader(b), dropper{t}, false, true)
-
- // First read (third record).
- rr, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err := io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #0: %v", err)
- }
- if want := int64(blockSize-headerSize) + 1; n != want {
- t.Fatalf("read #0: got %d bytes want %d", n, want)
- }
-
- // Second read (fourth record).
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #1: %v", err)
- }
- if want := int64(blockSize-headerSize) + 2; n != want {
- t.Fatalf("read #1: got %d bytes want %d", n, want)
- }
-
- if _, err := r.Next(); err != io.EOF {
- t.Fatalf("last next: unexpected error: %v", err)
- }
-}
-
-func TestCorrupt_CorruptedMiddleBlock(t *testing.T) {
- buf := new(bytes.Buffer)
-
- w := NewWriter(buf)
-
- // First record.
- ww, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize/2)); err != nil {
- t.Fatalf("write #0: unexpected error: %v", err)
- }
-
- // Second record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize-headerSize)); err != nil {
- t.Fatalf("write #1: unexpected error: %v", err)
- }
-
- // Third record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), (blockSize-headerSize)+1)); err != nil {
- t.Fatalf("write #2: unexpected error: %v", err)
- }
-
- // Fourth record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), (blockSize-headerSize)+2)); err != nil {
- t.Fatalf("write #3: unexpected error: %v", err)
- }
-
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- b := buf.Bytes()
- // Corrupting block #1.
- for i := 0; i < 1024; i++ {
- b[blockSize+i] = '1'
- }
-
- r := NewReader(bytes.NewReader(b), dropper{t}, false, true)
-
- // First read (first record).
- rr, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err := io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #0: %v", err)
- }
- if want := int64(blockSize / 2); n != want {
- t.Fatalf("read #0: got %d bytes want %d", n, want)
- }
-
- // Second read (second record).
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != io.ErrUnexpectedEOF {
- t.Fatalf("read #1: unexpected error: %v", err)
- }
-
- // Third read (fourth record).
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #2: %v", err)
- }
- if want := int64(blockSize-headerSize) + 2; n != want {
- t.Fatalf("read #2: got %d bytes want %d", n, want)
- }
-
- if _, err := r.Next(); err != io.EOF {
- t.Fatalf("last next: unexpected error: %v", err)
- }
-}
-
-func TestCorrupt_CorruptedLastBlock(t *testing.T) {
- buf := new(bytes.Buffer)
-
- w := NewWriter(buf)
-
- // First record.
- ww, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize/2)); err != nil {
- t.Fatalf("write #0: unexpected error: %v", err)
- }
-
- // Second record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize-headerSize)); err != nil {
- t.Fatalf("write #1: unexpected error: %v", err)
- }
-
- // Third record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), (blockSize-headerSize)+1)); err != nil {
- t.Fatalf("write #2: unexpected error: %v", err)
- }
-
- // Fourth record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), (blockSize-headerSize)+2)); err != nil {
- t.Fatalf("write #3: unexpected error: %v", err)
- }
-
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- b := buf.Bytes()
- // Corrupting block #3.
- for i := len(b) - 1; i > len(b)-1024; i-- {
- b[i] = '1'
- }
-
- r := NewReader(bytes.NewReader(b), dropper{t}, false, true)
-
- // First read (first record).
- rr, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err := io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #0: %v", err)
- }
- if want := int64(blockSize / 2); n != want {
- t.Fatalf("read #0: got %d bytes want %d", n, want)
- }
-
- // Second read (second record).
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #1: %v", err)
- }
- if want := int64(blockSize - headerSize); n != want {
- t.Fatalf("read #1: got %d bytes want %d", n, want)
- }
-
- // Third read (third record).
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #2: %v", err)
- }
- if want := int64(blockSize-headerSize) + 1; n != want {
- t.Fatalf("read #2: got %d bytes want %d", n, want)
- }
-
- // Fourth read (fourth record).
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != io.ErrUnexpectedEOF {
- t.Fatalf("read #3: unexpected error: %v", err)
- }
-
- if _, err := r.Next(); err != io.EOF {
- t.Fatalf("last next: unexpected error: %v", err)
- }
-}
-
-func TestCorrupt_FirstChuckLengthOverflow(t *testing.T) {
- buf := new(bytes.Buffer)
-
- w := NewWriter(buf)
-
- // First record.
- ww, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize/2)); err != nil {
- t.Fatalf("write #0: unexpected error: %v", err)
- }
-
- // Second record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize-headerSize)); err != nil {
- t.Fatalf("write #1: unexpected error: %v", err)
- }
-
- // Third record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), (blockSize-headerSize)+1)); err != nil {
- t.Fatalf("write #2: unexpected error: %v", err)
- }
-
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- b := buf.Bytes()
- // Corrupting record #1.
- x := blockSize
- binary.LittleEndian.PutUint16(b[x+4:], 0xffff)
-
- r := NewReader(bytes.NewReader(b), dropper{t}, false, true)
-
- // First read (first record).
- rr, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err := io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #0: %v", err)
- }
- if want := int64(blockSize / 2); n != want {
- t.Fatalf("read #0: got %d bytes want %d", n, want)
- }
-
- // Second read (second record).
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != io.ErrUnexpectedEOF {
- t.Fatalf("read #1: unexpected error: %v", err)
- }
-
- if _, err := r.Next(); err != io.EOF {
- t.Fatalf("last next: unexpected error: %v", err)
- }
-}
-
-func TestCorrupt_MiddleChuckLengthOverflow(t *testing.T) {
- buf := new(bytes.Buffer)
-
- w := NewWriter(buf)
-
- // First record.
- ww, err := w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize/2)); err != nil {
- t.Fatalf("write #0: unexpected error: %v", err)
- }
-
- // Second record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), blockSize-headerSize)); err != nil {
- t.Fatalf("write #1: unexpected error: %v", err)
- }
-
- // Third record.
- ww, err = w.Next()
- if err != nil {
- t.Fatal(err)
- }
- if _, err := ww.Write(bytes.Repeat([]byte("0"), (blockSize-headerSize)+1)); err != nil {
- t.Fatalf("write #2: unexpected error: %v", err)
- }
-
- if err := w.Close(); err != nil {
- t.Fatal(err)
- }
-
- b := buf.Bytes()
- // Corrupting record #1.
- x := blockSize/2 + headerSize
- binary.LittleEndian.PutUint16(b[x+4:], 0xffff)
-
- r := NewReader(bytes.NewReader(b), dropper{t}, false, true)
-
- // First read (first record).
- rr, err := r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err := io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #0: %v", err)
- }
- if want := int64(blockSize / 2); n != want {
- t.Fatalf("read #0: got %d bytes want %d", n, want)
- }
-
- // Second read (third record).
- rr, err = r.Next()
- if err != nil {
- t.Fatal(err)
- }
- n, err = io.Copy(ioutil.Discard, rr)
- if err != nil {
- t.Fatalf("read #1: %v", err)
- }
- if want := int64(blockSize-headerSize) + 1; n != want {
- t.Fatalf("read #1: got %d bytes want %d", n, want)
- }
-
- if _, err := r.Next(); err != io.EOF {
- t.Fatalf("last next: unexpected error: %v", err)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key.go
index 572ae8150..1443c7526 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key.go
@@ -11,6 +11,7 @@ import (
"fmt"
"github.com/syndtr/goleveldb/leveldb/errors"
+ "github.com/syndtr/goleveldb/leveldb/storage"
)
type ErrIkeyCorrupted struct {
@@ -23,7 +24,7 @@ func (e *ErrIkeyCorrupted) Error() string {
}
func newErrIkeyCorrupted(ikey []byte, reason string) error {
- return errors.NewErrCorrupted(nil, &ErrIkeyCorrupted{append([]byte{}, ikey...), reason})
+ return errors.NewErrCorrupted(storage.FileDesc{}, &ErrIkeyCorrupted{append([]byte{}, ikey...), reason})
}
type kType int
@@ -70,17 +71,21 @@ func init() {
type iKey []byte
-func newIkey(ukey []byte, seq uint64, kt kType) iKey {
+func makeIkey(dst, ukey []byte, seq uint64, kt kType) iKey {
if seq > kMaxSeq {
panic("leveldb: invalid sequence number")
} else if kt > ktVal {
panic("leveldb: invalid type")
}
- ik := make(iKey, len(ukey)+8)
- copy(ik, ukey)
- binary.LittleEndian.PutUint64(ik[len(ukey):], (seq<<8)|uint64(kt))
- return ik
+ if n := len(ukey) + 8; cap(dst) < n {
+ dst = make([]byte, n)
+ } else {
+ dst = dst[:n]
+ }
+ copy(dst, ukey)
+ binary.LittleEndian.PutUint64(dst[len(ukey):], (seq<<8)|uint64(kt))
+ return iKey(dst)
}
func parseIkey(ik []byte) (ukey []byte, seq uint64, kt kType, err error) {
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key_test.go
deleted file mode 100644
index 30eadf784..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/key_test.go
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
- "bytes"
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
-)
-
-var defaultIComparer = &iComparer{comparer.DefaultComparer}
-
-func ikey(key string, seq uint64, kt kType) iKey {
- return newIkey([]byte(key), uint64(seq), kt)
-}
-
-func shortSep(a, b []byte) []byte {
- dst := make([]byte, len(a))
- dst = defaultIComparer.Separator(dst[:0], a, b)
- if dst == nil {
- return a
- }
- return dst
-}
-
-func shortSuccessor(b []byte) []byte {
- dst := make([]byte, len(b))
- dst = defaultIComparer.Successor(dst[:0], b)
- if dst == nil {
- return b
- }
- return dst
-}
-
-func testSingleKey(t *testing.T, key string, seq uint64, kt kType) {
- ik := ikey(key, seq, kt)
-
- if !bytes.Equal(ik.ukey(), []byte(key)) {
- t.Errorf("user key does not equal, got %v, want %v", string(ik.ukey()), key)
- }
-
- rseq, rt := ik.parseNum()
- if rseq != seq {
- t.Errorf("seq number does not equal, got %v, want %v", rseq, seq)
- }
- if rt != kt {
- t.Errorf("type does not equal, got %v, want %v", rt, kt)
- }
-
- if rukey, rseq, rt, kerr := parseIkey(ik); kerr == nil {
- if !bytes.Equal(rukey, []byte(key)) {
- t.Errorf("user key does not equal, got %v, want %v", string(ik.ukey()), key)
- }
- if rseq != seq {
- t.Errorf("seq number does not equal, got %v, want %v", rseq, seq)
- }
- if rt != kt {
- t.Errorf("type does not equal, got %v, want %v", rt, kt)
- }
- } else {
- t.Errorf("key error: %v", kerr)
- }
-}
-
-func TestIkey_EncodeDecode(t *testing.T) {
- keys := []string{"", "k", "hello", "longggggggggggggggggggggg"}
- seqs := []uint64{
- 1, 2, 3,
- (1 << 8) - 1, 1 << 8, (1 << 8) + 1,
- (1 << 16) - 1, 1 << 16, (1 << 16) + 1,
- (1 << 32) - 1, 1 << 32, (1 << 32) + 1,
- }
- for _, key := range keys {
- for _, seq := range seqs {
- testSingleKey(t, key, seq, ktVal)
- testSingleKey(t, "hello", 1, ktDel)
- }
- }
-}
-
-func assertBytes(t *testing.T, want, got []byte) {
- if !bytes.Equal(got, want) {
- t.Errorf("assert failed, got %v, want %v", got, want)
- }
-}
-
-func TestIkeyShortSeparator(t *testing.T) {
- // When user keys are same
- assertBytes(t, ikey("foo", 100, ktVal),
- shortSep(ikey("foo", 100, ktVal),
- ikey("foo", 99, ktVal)))
- assertBytes(t, ikey("foo", 100, ktVal),
- shortSep(ikey("foo", 100, ktVal),
- ikey("foo", 101, ktVal)))
- assertBytes(t, ikey("foo", 100, ktVal),
- shortSep(ikey("foo", 100, ktVal),
- ikey("foo", 100, ktVal)))
- assertBytes(t, ikey("foo", 100, ktVal),
- shortSep(ikey("foo", 100, ktVal),
- ikey("foo", 100, ktDel)))
-
- // When user keys are misordered
- assertBytes(t, ikey("foo", 100, ktVal),
- shortSep(ikey("foo", 100, ktVal),
- ikey("bar", 99, ktVal)))
-
- // When user keys are different, but correctly ordered
- assertBytes(t, ikey("g", uint64(kMaxSeq), ktSeek),
- shortSep(ikey("foo", 100, ktVal),
- ikey("hello", 200, ktVal)))
-
- // When start user key is prefix of limit user key
- assertBytes(t, ikey("foo", 100, ktVal),
- shortSep(ikey("foo", 100, ktVal),
- ikey("foobar", 200, ktVal)))
-
- // When limit user key is prefix of start user key
- assertBytes(t, ikey("foobar", 100, ktVal),
- shortSep(ikey("foobar", 100, ktVal),
- ikey("foo", 200, ktVal)))
-}
-
-func TestIkeyShortestSuccessor(t *testing.T) {
- assertBytes(t, ikey("g", uint64(kMaxSeq), ktSeek),
- shortSuccessor(ikey("foo", 100, ktVal)))
- assertBytes(t, ikey("\xff\xff", 100, ktVal),
- shortSuccessor(ikey("\xff\xff", 100, ktVal)))
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/leveldb_suite_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/leveldb_suite_test.go
deleted file mode 100644
index fefa007a7..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/leveldb_suite_test.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package leveldb
-
-import (
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-func TestLevelDB(t *testing.T) {
- testutil.RunSuite(t, "LevelDB Suite")
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/bench_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/bench_test.go
deleted file mode 100644
index b05084caa..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/bench_test.go
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package memdb
-
-import (
- "encoding/binary"
- "math/rand"
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
-)
-
-func BenchmarkPut(b *testing.B) {
- buf := make([][4]byte, b.N)
- for i := range buf {
- binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
- }
-
- b.ResetTimer()
- p := New(comparer.DefaultComparer, 0)
- for i := range buf {
- p.Put(buf[i][:], nil)
- }
-}
-
-func BenchmarkPutRandom(b *testing.B) {
- buf := make([][4]byte, b.N)
- for i := range buf {
- binary.LittleEndian.PutUint32(buf[i][:], uint32(rand.Int()))
- }
-
- b.ResetTimer()
- p := New(comparer.DefaultComparer, 0)
- for i := range buf {
- p.Put(buf[i][:], nil)
- }
-}
-
-func BenchmarkGet(b *testing.B) {
- buf := make([][4]byte, b.N)
- for i := range buf {
- binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
- }
-
- p := New(comparer.DefaultComparer, 0)
- for i := range buf {
- p.Put(buf[i][:], nil)
- }
-
- b.ResetTimer()
- for i := range buf {
- p.Get(buf[i][:])
- }
-}
-
-func BenchmarkGetRandom(b *testing.B) {
- buf := make([][4]byte, b.N)
- for i := range buf {
- binary.LittleEndian.PutUint32(buf[i][:], uint32(i))
- }
-
- p := New(comparer.DefaultComparer, 0)
- for i := range buf {
- p.Put(buf[i][:], nil)
- }
-
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- p.Get(buf[rand.Int()%b.N][:])
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb.go
index e5398873b..1395bd928 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb.go
@@ -206,6 +206,7 @@ func (p *DB) randHeight() (h int) {
return
}
+// Must hold RW-lock if prev == true, as it use shared prevNode slice.
func (p *DB) findGE(key []byte, prev bool) (int, bool) {
node := 0
h := p.maxHeight - 1
@@ -302,7 +303,7 @@ func (p *DB) Put(key []byte, value []byte) error {
node := len(p.nodeData)
p.nodeData = append(p.nodeData, kvOffset, len(key), len(value), h)
for i, n := range p.prevNode[:h] {
- m := n + 4 + i
+ m := n + nNext + i
p.nodeData = append(p.nodeData, p.nodeData[m])
p.nodeData[m] = node
}
@@ -434,20 +435,22 @@ func (p *DB) Len() int {
// Reset resets the DB to initial empty state. Allows reuse the buffer.
func (p *DB) Reset() {
+ p.mu.Lock()
p.rnd = rand.New(rand.NewSource(0xdeadbeef))
p.maxHeight = 1
p.n = 0
p.kvSize = 0
p.kvData = p.kvData[:0]
- p.nodeData = p.nodeData[:4+tMaxHeight]
+ p.nodeData = p.nodeData[:nNext+tMaxHeight]
p.nodeData[nKV] = 0
p.nodeData[nKey] = 0
p.nodeData[nVal] = 0
p.nodeData[nHeight] = tMaxHeight
for n := 0; n < tMaxHeight; n++ {
- p.nodeData[4+n] = 0
+ p.nodeData[nNext+n] = 0
p.prevNode[n] = 0
}
+ p.mu.Unlock()
}
// New creates a new initalized in-memory key/value DB. The capacity
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb_suite_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb_suite_test.go
deleted file mode 100644
index 18c304b7f..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb_suite_test.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package memdb
-
-import (
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-func TestMemDB(t *testing.T) {
- testutil.RunSuite(t, "MemDB Suite")
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb_test.go
deleted file mode 100644
index 5dd6dbc7b..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/memdb/memdb_test.go
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package memdb
-
-import (
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
- "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/testutil"
- "github.com/syndtr/goleveldb/leveldb/util"
-)
-
-func (p *DB) TestFindLT(key []byte) (rkey, value []byte, err error) {
- p.mu.RLock()
- if node := p.findLT(key); node != 0 {
- n := p.nodeData[node]
- m := n + p.nodeData[node+nKey]
- rkey = p.kvData[n:m]
- value = p.kvData[m : m+p.nodeData[node+nVal]]
- } else {
- err = ErrNotFound
- }
- p.mu.RUnlock()
- return
-}
-
-func (p *DB) TestFindLast() (rkey, value []byte, err error) {
- p.mu.RLock()
- if node := p.findLast(); node != 0 {
- n := p.nodeData[node]
- m := n + p.nodeData[node+nKey]
- rkey = p.kvData[n:m]
- value = p.kvData[m : m+p.nodeData[node+nVal]]
- } else {
- err = ErrNotFound
- }
- p.mu.RUnlock()
- return
-}
-
-func (p *DB) TestPut(key []byte, value []byte) error {
- p.Put(key, value)
- return nil
-}
-
-func (p *DB) TestDelete(key []byte) error {
- p.Delete(key)
- return nil
-}
-
-func (p *DB) TestFind(key []byte) (rkey, rvalue []byte, err error) {
- return p.Find(key)
-}
-
-func (p *DB) TestGet(key []byte) (value []byte, err error) {
- return p.Get(key)
-}
-
-func (p *DB) TestNewIterator(slice *util.Range) iterator.Iterator {
- return p.NewIterator(slice)
-}
-
-var _ = testutil.Defer(func() {
- Describe("Memdb", func() {
- Describe("write test", func() {
- It("should do write correctly", func() {
- db := New(comparer.DefaultComparer, 0)
- t := testutil.DBTesting{
- DB: db,
- Deleted: testutil.KeyValue_Generate(nil, 1000, 1, 30, 5, 5).Clone(),
- PostFn: func(t *testutil.DBTesting) {
- Expect(db.Len()).Should(Equal(t.Present.Len()))
- Expect(db.Size()).Should(Equal(t.Present.Size()))
- switch t.Act {
- case testutil.DBPut, testutil.DBOverwrite:
- Expect(db.Contains(t.ActKey)).Should(BeTrue())
- default:
- Expect(db.Contains(t.ActKey)).Should(BeFalse())
- }
- },
- }
- testutil.DoDBTesting(&t)
- })
- })
-
- Describe("read test", func() {
- testutil.AllKeyValueTesting(nil, func(kv testutil.KeyValue) testutil.DB {
- // Building the DB.
- db := New(comparer.DefaultComparer, 0)
- kv.IterateShuffled(nil, func(i int, key, value []byte) {
- db.Put(key, value)
- })
-
- if kv.Len() > 1 {
- It("Should find correct keys with findLT", func() {
- testutil.ShuffledIndex(nil, kv.Len()-1, 1, func(i int) {
- key_, key, _ := kv.IndexInexact(i + 1)
- expectedKey, expectedValue := kv.Index(i)
-
- // Using key that exist.
- rkey, rvalue, err := db.TestFindLT(key)
- Expect(err).ShouldNot(HaveOccurred(), "Error for key %q -> %q", key, expectedKey)
- Expect(rkey).Should(Equal(expectedKey), "Key")
- Expect(rvalue).Should(Equal(expectedValue), "Value for key %q -> %q", key, expectedKey)
-
- // Using key that doesn't exist.
- rkey, rvalue, err = db.TestFindLT(key_)
- Expect(err).ShouldNot(HaveOccurred(), "Error for key %q (%q) -> %q", key_, key, expectedKey)
- Expect(rkey).Should(Equal(expectedKey))
- Expect(rvalue).Should(Equal(expectedValue), "Value for key %q (%q) -> %q", key_, key, expectedKey)
- })
- })
- }
-
- if kv.Len() > 0 {
- It("Should find last key with findLast", func() {
- key, value := kv.Index(kv.Len() - 1)
- rkey, rvalue, err := db.TestFindLast()
- Expect(err).ShouldNot(HaveOccurred())
- Expect(rkey).Should(Equal(key))
- Expect(rvalue).Should(Equal(value))
- })
- }
-
- return db
- }, nil, nil)
- })
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/opt/options.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/opt/options.go
index 61f0eadf9..3d2bf1c02 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/opt/options.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/opt/options.go
@@ -8,10 +8,11 @@
package opt
import (
+ "math"
+
"github.com/syndtr/goleveldb/leveldb/cache"
"github.com/syndtr/goleveldb/leveldb/comparer"
"github.com/syndtr/goleveldb/leveldb/filter"
- "math"
)
const (
@@ -35,8 +36,6 @@ var (
DefaultCompactionTotalSizeMultiplier = 10.0
DefaultCompressionType = SnappyCompression
DefaultIteratorSamplingRate = 1 * MiB
- DefaultMaxMemCompationLevel = 2
- DefaultNumLevel = 7
DefaultOpenFilesCacher = LRUCacher
DefaultOpenFilesCacheCapacity = 500
DefaultWriteBuffer = 4 * MiB
@@ -250,6 +249,11 @@ type Options struct {
// The default value (DefaultCompression) uses snappy compression.
Compression Compression
+ // DisableBufferPool allows disable use of util.BufferPool functionality.
+ //
+ // The default value is false.
+ DisableBufferPool bool
+
// DisableBlockCache allows disable use of cache.Cache functionality on
// 'sorted table' block.
//
@@ -261,6 +265,13 @@ type Options struct {
// The default value is false.
DisableCompactionBackoff bool
+ // DisableLargeBatchTransaction allows disabling switch-to-transaction mode
+ // on large batch write. If enable batch writes large than WriteBuffer will
+ // use transaction.
+ //
+ // The default is false.
+ DisableLargeBatchTransaction bool
+
// ErrorIfExist defines whether an error should returned if the DB already
// exist.
//
@@ -296,18 +307,10 @@ type Options struct {
// The default is 1MiB.
IteratorSamplingRate int
- // MaxMemCompationLevel defines maximum level a newly compacted 'memdb'
- // will be pushed into if doesn't creates overlap. This should less than
- // NumLevel. Use -1 for level-0.
+ // NoSync allows completely disable fsync.
//
- // The default is 2.
- MaxMemCompationLevel int
-
- // NumLevel defines number of database level. The level shouldn't changed
- // between opens, or the database will panic.
- //
- // The default is 7.
- NumLevel int
+ // The default is false.
+ NoSync bool
// OpenFilesCacher provides cache algorithm for open files caching.
// Specify NoCacher to disable caching algorithm.
@@ -321,6 +324,11 @@ type Options struct {
// The default value is 500.
OpenFilesCacheCapacity int
+ // If true then opens DB in read-only mode.
+ //
+ // The default value is false.
+ ReadOnly bool
+
// Strict defines the DB strict level.
Strict Strict
@@ -425,7 +433,7 @@ func (o *Options) GetCompactionTableSize(level int) int {
if o.CompactionTableSize > 0 {
base = o.CompactionTableSize
}
- if len(o.CompactionTableSizeMultiplierPerLevel) > level && o.CompactionTableSizeMultiplierPerLevel[level] > 0 {
+ if level < len(o.CompactionTableSizeMultiplierPerLevel) && o.CompactionTableSizeMultiplierPerLevel[level] > 0 {
mult = o.CompactionTableSizeMultiplierPerLevel[level]
} else if o.CompactionTableSizeMultiplier > 0 {
mult = math.Pow(o.CompactionTableSizeMultiplier, float64(level))
@@ -446,7 +454,7 @@ func (o *Options) GetCompactionTotalSize(level int) int64 {
if o.CompactionTotalSize > 0 {
base = o.CompactionTotalSize
}
- if len(o.CompactionTotalSizeMultiplierPerLevel) > level && o.CompactionTotalSizeMultiplierPerLevel[level] > 0 {
+ if level < len(o.CompactionTotalSizeMultiplierPerLevel) && o.CompactionTotalSizeMultiplierPerLevel[level] > 0 {
mult = o.CompactionTotalSizeMultiplierPerLevel[level]
} else if o.CompactionTotalSizeMultiplier > 0 {
mult = math.Pow(o.CompactionTotalSizeMultiplier, float64(level))
@@ -472,6 +480,20 @@ func (o *Options) GetCompression() Compression {
return o.Compression
}
+func (o *Options) GetDisableBufferPool() bool {
+ if o == nil {
+ return false
+ }
+ return o.DisableBufferPool
+}
+
+func (o *Options) GetDisableBlockCache() bool {
+ if o == nil {
+ return false
+ }
+ return o.DisableBlockCache
+}
+
func (o *Options) GetDisableCompactionBackoff() bool {
if o == nil {
return false
@@ -479,6 +501,13 @@ func (o *Options) GetDisableCompactionBackoff() bool {
return o.DisableCompactionBackoff
}
+func (o *Options) GetDisableLargeBatchTransaction() bool {
+ if o == nil {
+ return false
+ }
+ return o.DisableLargeBatchTransaction
+}
+
func (o *Options) GetErrorIfExist() bool {
if o == nil {
return false
@@ -507,26 +536,11 @@ func (o *Options) GetIteratorSamplingRate() int {
return o.IteratorSamplingRate
}
-func (o *Options) GetMaxMemCompationLevel() int {
- level := DefaultMaxMemCompationLevel
- if o != nil {
- if o.MaxMemCompationLevel > 0 {
- level = o.MaxMemCompationLevel
- } else if o.MaxMemCompationLevel < 0 {
- level = 0
- }
- }
- if level >= o.GetNumLevel() {
- return o.GetNumLevel() - 1
- }
- return level
-}
-
-func (o *Options) GetNumLevel() int {
- if o == nil || o.NumLevel <= 0 {
- return DefaultNumLevel
+func (o *Options) GetNoSync() bool {
+ if o == nil {
+ return false
}
- return o.NumLevel
+ return o.NoSync
}
func (o *Options) GetOpenFilesCacher() Cacher {
@@ -548,6 +562,13 @@ func (o *Options) GetOpenFilesCacheCapacity() int {
return o.OpenFilesCacheCapacity
}
+func (o *Options) GetReadOnly() bool {
+ if o == nil {
+ return false
+ }
+ return o.ReadOnly
+}
+
func (o *Options) GetStrict(strict Strict) bool {
if o == nil || o.Strict == 0 {
return DefaultStrict&strict != 0
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/options.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/options.go
index a3d84ef60..b072b1ac4 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/options.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/options.go
@@ -43,6 +43,8 @@ func (s *session) setOptions(o *opt.Options) {
s.o.cache()
}
+const optCachedLevel = 7
+
type cachedOptions struct {
*opt.Options
@@ -54,15 +56,13 @@ type cachedOptions struct {
}
func (co *cachedOptions) cache() {
- numLevel := co.Options.GetNumLevel()
-
- co.compactionExpandLimit = make([]int, numLevel)
- co.compactionGPOverlaps = make([]int, numLevel)
- co.compactionSourceLimit = make([]int, numLevel)
- co.compactionTableSize = make([]int, numLevel)
- co.compactionTotalSize = make([]int64, numLevel)
+ co.compactionExpandLimit = make([]int, optCachedLevel)
+ co.compactionGPOverlaps = make([]int, optCachedLevel)
+ co.compactionSourceLimit = make([]int, optCachedLevel)
+ co.compactionTableSize = make([]int, optCachedLevel)
+ co.compactionTotalSize = make([]int64, optCachedLevel)
- for level := 0; level < numLevel; level++ {
+ for level := 0; level < optCachedLevel; level++ {
co.compactionExpandLimit[level] = co.Options.GetCompactionExpandLimit(level)
co.compactionGPOverlaps[level] = co.Options.GetCompactionGPOverlaps(level)
co.compactionSourceLimit[level] = co.Options.GetCompactionSourceLimit(level)
@@ -72,21 +72,36 @@ func (co *cachedOptions) cache() {
}
func (co *cachedOptions) GetCompactionExpandLimit(level int) int {
- return co.compactionExpandLimit[level]
+ if level < optCachedLevel {
+ return co.compactionExpandLimit[level]
+ }
+ return co.Options.GetCompactionExpandLimit(level)
}
func (co *cachedOptions) GetCompactionGPOverlaps(level int) int {
- return co.compactionGPOverlaps[level]
+ if level < optCachedLevel {
+ return co.compactionGPOverlaps[level]
+ }
+ return co.Options.GetCompactionGPOverlaps(level)
}
func (co *cachedOptions) GetCompactionSourceLimit(level int) int {
- return co.compactionSourceLimit[level]
+ if level < optCachedLevel {
+ return co.compactionSourceLimit[level]
+ }
+ return co.Options.GetCompactionSourceLimit(level)
}
func (co *cachedOptions) GetCompactionTableSize(level int) int {
- return co.compactionTableSize[level]
+ if level < optCachedLevel {
+ return co.compactionTableSize[level]
+ }
+ return co.Options.GetCompactionTableSize(level)
}
func (co *cachedOptions) GetCompactionTotalSize(level int) int64 {
- return co.compactionTotalSize[level]
+ if level < optCachedLevel {
+ return co.compactionTotalSize[level]
+ }
+ return co.Options.GetCompactionTotalSize(level)
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session.go
index b3906f7fc..a8d7b54dc 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session.go
@@ -11,14 +11,11 @@ import (
"io"
"os"
"sync"
- "sync/atomic"
"github.com/syndtr/goleveldb/leveldb/errors"
- "github.com/syndtr/goleveldb/leveldb/iterator"
"github.com/syndtr/goleveldb/leveldb/journal"
"github.com/syndtr/goleveldb/leveldb/opt"
"github.com/syndtr/goleveldb/leveldb/storage"
- "github.com/syndtr/goleveldb/leveldb/util"
)
type ErrManifestCorrupted struct {
@@ -30,28 +27,28 @@ func (e *ErrManifestCorrupted) Error() string {
return fmt.Sprintf("leveldb: manifest corrupted (field '%s'): %s", e.Field, e.Reason)
}
-func newErrManifestCorrupted(f storage.File, field, reason string) error {
- return errors.NewErrCorrupted(f, &ErrManifestCorrupted{field, reason})
+func newErrManifestCorrupted(fd storage.FileDesc, field, reason string) error {
+ return errors.NewErrCorrupted(fd, &ErrManifestCorrupted{field, reason})
}
// session represent a persistent database session.
type session struct {
// Need 64-bit alignment.
- stNextFileNum uint64 // current unused file number
- stJournalNum uint64 // current journal file number; need external synchronization
- stPrevJournalNum uint64 // prev journal file number; no longer used; for compatibility with older version of leveldb
+ stNextFileNum int64 // current unused file number
+ stJournalNum int64 // current journal file number; need external synchronization
+ stPrevJournalNum int64 // prev journal file number; no longer used; for compatibility with older version of leveldb
+ stTempFileNum int64
stSeqNum uint64 // last mem compacted seq; need external synchronization
- stTempFileNum uint64
stor storage.Storage
- storLock util.Releaser
+ storLock storage.Lock
o *cachedOptions
icmp *iComparer
tops *tOps
manifest *journal.Writer
manifestWriter storage.Writer
- manifestFile storage.File
+ manifestFd storage.FileDesc
stCompPtrs []iKey // compaction pointers; need external synchronization
stVersion *version // current version
@@ -68,9 +65,8 @@ func newSession(stor storage.Storage, o *opt.Options) (s *session, err error) {
return
}
s = &session{
- stor: stor,
- storLock: storLock,
- stCompPtrs: make([]iKey, o.GetNumLevel()),
+ stor: stor,
+ storLock: storLock,
}
s.setOptions(o)
s.tops = newTableOps(s)
@@ -90,7 +86,6 @@ func (s *session) close() {
}
s.manifest = nil
s.manifestWriter = nil
- s.manifestFile = nil
s.stVersion = nil
}
@@ -111,27 +106,31 @@ func (s *session) recover() (err error) {
if os.IsNotExist(err) {
// Don't return os.ErrNotExist if the underlying storage contains
// other files that belong to LevelDB. So the DB won't get trashed.
- if files, _ := s.stor.GetFiles(storage.TypeAll); len(files) > 0 {
- err = &errors.ErrCorrupted{File: &storage.FileInfo{Type: storage.TypeManifest}, Err: &errors.ErrMissingFiles{}}
+ if fds, _ := s.stor.List(storage.TypeAll); len(fds) > 0 {
+ err = &errors.ErrCorrupted{Fd: storage.FileDesc{Type: storage.TypeManifest}, Err: &errors.ErrMissingFiles{}}
}
}
}()
- m, err := s.stor.GetManifest()
+ fd, err := s.stor.GetMeta()
if err != nil {
return
}
- reader, err := m.Open()
+ reader, err := s.stor.Open(fd)
if err != nil {
return
}
defer reader.Close()
- strict := s.o.GetStrict(opt.StrictManifest)
- jr := journal.NewReader(reader, dropper{s, m}, strict, true)
- staging := s.stVersion.newStaging()
- rec := &sessionRecord{numLevel: s.o.GetNumLevel()}
+ var (
+ // Options.
+ strict = s.o.GetStrict(opt.StrictManifest)
+
+ jr = journal.NewReader(reader, dropper{s, fd}, strict, true)
+ rec = &sessionRecord{}
+ staging = s.stVersion.newStaging()
+ )
for {
var r io.Reader
r, err = jr.Next()
@@ -140,23 +139,23 @@ func (s *session) recover() (err error) {
err = nil
break
}
- return errors.SetFile(err, m)
+ return errors.SetFd(err, fd)
}
err = rec.decode(r)
if err == nil {
// save compact pointers
for _, r := range rec.compPtrs {
- s.stCompPtrs[r.level] = iKey(r.ikey)
+ s.setCompPtr(r.level, iKey(r.ikey))
}
// commit record to version staging
staging.commit(rec)
} else {
- err = errors.SetFile(err, m)
+ err = errors.SetFd(err, fd)
if strict || !errors.IsCorrupted(err) {
return
} else {
- s.logf("manifest error: %v (skipped)", errors.SetFile(err, m))
+ s.logf("manifest error: %v (skipped)", errors.SetFd(err, fd))
}
}
rec.resetCompPtrs()
@@ -166,18 +165,18 @@ func (s *session) recover() (err error) {
switch {
case !rec.has(recComparer):
- return newErrManifestCorrupted(m, "comparer", "missing")
+ return newErrManifestCorrupted(fd, "comparer", "missing")
case rec.comparer != s.icmp.uName():
- return newErrManifestCorrupted(m, "comparer", fmt.Sprintf("mismatch: want '%s', got '%s'", s.icmp.uName(), rec.comparer))
+ return newErrManifestCorrupted(fd, "comparer", fmt.Sprintf("mismatch: want '%s', got '%s'", s.icmp.uName(), rec.comparer))
case !rec.has(recNextFileNum):
- return newErrManifestCorrupted(m, "next-file-num", "missing")
+ return newErrManifestCorrupted(fd, "next-file-num", "missing")
case !rec.has(recJournalNum):
- return newErrManifestCorrupted(m, "journal-file-num", "missing")
+ return newErrManifestCorrupted(fd, "journal-file-num", "missing")
case !rec.has(recSeqNum):
- return newErrManifestCorrupted(m, "seq-num", "missing")
+ return newErrManifestCorrupted(fd, "seq-num", "missing")
}
- s.manifestFile = m
+ s.manifestFd = fd
s.setVersion(staging.finish())
s.setNextFileNum(rec.nextFileNum)
s.recordCommited(rec)
@@ -206,250 +205,3 @@ func (s *session) commit(r *sessionRecord) (err error) {
return
}
-
-// Pick a compaction based on current state; need external synchronization.
-func (s *session) pickCompaction() *compaction {
- v := s.version()
-
- var level int
- var t0 tFiles
- if v.cScore >= 1 {
- level = v.cLevel
- cptr := s.stCompPtrs[level]
- tables := v.tables[level]
- for _, t := range tables {
- if cptr == nil || s.icmp.Compare(t.imax, cptr) > 0 {
- t0 = append(t0, t)
- break
- }
- }
- if len(t0) == 0 {
- t0 = append(t0, tables[0])
- }
- } else {
- if p := atomic.LoadPointer(&v.cSeek); p != nil {
- ts := (*tSet)(p)
- level = ts.level
- t0 = append(t0, ts.table)
- } else {
- v.release()
- return nil
- }
- }
-
- return newCompaction(s, v, level, t0)
-}
-
-// Create compaction from given level and range; need external synchronization.
-func (s *session) getCompactionRange(level int, umin, umax []byte) *compaction {
- v := s.version()
-
- t0 := v.tables[level].getOverlaps(nil, s.icmp, umin, umax, level == 0)
- if len(t0) == 0 {
- v.release()
- return nil
- }
-
- // Avoid compacting too much in one shot in case the range is large.
- // But we cannot do this for level-0 since level-0 files can overlap
- // and we must not pick one file and drop another older file if the
- // two files overlap.
- if level > 0 {
- limit := uint64(v.s.o.GetCompactionSourceLimit(level))
- total := uint64(0)
- for i, t := range t0 {
- total += t.size
- if total >= limit {
- s.logf("table@compaction limiting F·%d -> F·%d", len(t0), i+1)
- t0 = t0[:i+1]
- break
- }
- }
- }
-
- return newCompaction(s, v, level, t0)
-}
-
-func newCompaction(s *session, v *version, level int, t0 tFiles) *compaction {
- c := &compaction{
- s: s,
- v: v,
- level: level,
- tables: [2]tFiles{t0, nil},
- maxGPOverlaps: uint64(s.o.GetCompactionGPOverlaps(level)),
- tPtrs: make([]int, s.o.GetNumLevel()),
- }
- c.expand()
- c.save()
- return c
-}
-
-// compaction represent a compaction state.
-type compaction struct {
- s *session
- v *version
-
- level int
- tables [2]tFiles
- maxGPOverlaps uint64
-
- gp tFiles
- gpi int
- seenKey bool
- gpOverlappedBytes uint64
- imin, imax iKey
- tPtrs []int
- released bool
-
- snapGPI int
- snapSeenKey bool
- snapGPOverlappedBytes uint64
- snapTPtrs []int
-}
-
-func (c *compaction) save() {
- c.snapGPI = c.gpi
- c.snapSeenKey = c.seenKey
- c.snapGPOverlappedBytes = c.gpOverlappedBytes
- c.snapTPtrs = append(c.snapTPtrs[:0], c.tPtrs...)
-}
-
-func (c *compaction) restore() {
- c.gpi = c.snapGPI
- c.seenKey = c.snapSeenKey
- c.gpOverlappedBytes = c.snapGPOverlappedBytes
- c.tPtrs = append(c.tPtrs[:0], c.snapTPtrs...)
-}
-
-func (c *compaction) release() {
- if !c.released {
- c.released = true
- c.v.release()
- }
-}
-
-// Expand compacted tables; need external synchronization.
-func (c *compaction) expand() {
- limit := uint64(c.s.o.GetCompactionExpandLimit(c.level))
- vt0, vt1 := c.v.tables[c.level], c.v.tables[c.level+1]
-
- t0, t1 := c.tables[0], c.tables[1]
- imin, imax := t0.getRange(c.s.icmp)
- // We expand t0 here just incase ukey hop across tables.
- t0 = vt0.getOverlaps(t0, c.s.icmp, imin.ukey(), imax.ukey(), c.level == 0)
- if len(t0) != len(c.tables[0]) {
- imin, imax = t0.getRange(c.s.icmp)
- }
- t1 = vt1.getOverlaps(t1, c.s.icmp, imin.ukey(), imax.ukey(), false)
- // Get entire range covered by compaction.
- amin, amax := append(t0, t1...).getRange(c.s.icmp)
-
- // See if we can grow the number of inputs in "level" without
- // changing the number of "level+1" files we pick up.
- if len(t1) > 0 {
- exp0 := vt0.getOverlaps(nil, c.s.icmp, amin.ukey(), amax.ukey(), c.level == 0)
- if len(exp0) > len(t0) && t1.size()+exp0.size() < limit {
- xmin, xmax := exp0.getRange(c.s.icmp)
- exp1 := vt1.getOverlaps(nil, c.s.icmp, xmin.ukey(), xmax.ukey(), false)
- if len(exp1) == len(t1) {
- c.s.logf("table@compaction expanding L%d+L%d (F·%d S·%s)+(F·%d S·%s) -> (F·%d S·%s)+(F·%d S·%s)",
- c.level, c.level+1, len(t0), shortenb(int(t0.size())), len(t1), shortenb(int(t1.size())),
- len(exp0), shortenb(int(exp0.size())), len(exp1), shortenb(int(exp1.size())))
- imin, imax = xmin, xmax
- t0, t1 = exp0, exp1
- amin, amax = append(t0, t1...).getRange(c.s.icmp)
- }
- }
- }
-
- // Compute the set of grandparent files that overlap this compaction
- // (parent == level+1; grandparent == level+2)
- if c.level+2 < c.s.o.GetNumLevel() {
- c.gp = c.v.tables[c.level+2].getOverlaps(c.gp, c.s.icmp, amin.ukey(), amax.ukey(), false)
- }
-
- c.tables[0], c.tables[1] = t0, t1
- c.imin, c.imax = imin, imax
-}
-
-// Check whether compaction is trivial.
-func (c *compaction) trivial() bool {
- return len(c.tables[0]) == 1 && len(c.tables[1]) == 0 && c.gp.size() <= c.maxGPOverlaps
-}
-
-func (c *compaction) baseLevelForKey(ukey []byte) bool {
- for level, tables := range c.v.tables[c.level+2:] {
- for c.tPtrs[level] < len(tables) {
- t := tables[c.tPtrs[level]]
- if c.s.icmp.uCompare(ukey, t.imax.ukey()) <= 0 {
- // We've advanced far enough.
- if c.s.icmp.uCompare(ukey, t.imin.ukey()) >= 0 {
- // Key falls in this file's range, so definitely not base level.
- return false
- }
- break
- }
- c.tPtrs[level]++
- }
- }
- return true
-}
-
-func (c *compaction) shouldStopBefore(ikey iKey) bool {
- for ; c.gpi < len(c.gp); c.gpi++ {
- gp := c.gp[c.gpi]
- if c.s.icmp.Compare(ikey, gp.imax) <= 0 {
- break
- }
- if c.seenKey {
- c.gpOverlappedBytes += gp.size
- }
- }
- c.seenKey = true
-
- if c.gpOverlappedBytes > c.maxGPOverlaps {
- // Too much overlap for current output; start new output.
- c.gpOverlappedBytes = 0
- return true
- }
- return false
-}
-
-// Creates an iterator.
-func (c *compaction) newIterator() iterator.Iterator {
- // Creates iterator slice.
- icap := len(c.tables)
- if c.level == 0 {
- // Special case for level-0
- icap = len(c.tables[0]) + 1
- }
- its := make([]iterator.Iterator, 0, icap)
-
- // Options.
- ro := &opt.ReadOptions{
- DontFillCache: true,
- Strict: opt.StrictOverride,
- }
- strict := c.s.o.GetStrict(opt.StrictCompaction)
- if strict {
- ro.Strict |= opt.StrictReader
- }
-
- for i, tables := range c.tables {
- if len(tables) == 0 {
- continue
- }
-
- // Level-0 is not sorted and may overlaps each other.
- if c.level+i == 0 {
- for _, t := range tables {
- its = append(its, c.s.tops.newIterator(t, nil, ro))
- }
- } else {
- it := iterator.NewIndexedIterator(tables.newIndexIterator(c.s.tops, c.s.icmp, nil, ro), strict)
- its = append(its, it)
- }
- }
-
- return iterator.NewMergedIterator(its, c.s.icmp, strict)
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_compaction.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_compaction.go
new file mode 100644
index 000000000..471d68d56
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_compaction.go
@@ -0,0 +1,302 @@
+// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
+// All rights reserved.
+//
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package leveldb
+
+import (
+ "sync/atomic"
+
+ "github.com/syndtr/goleveldb/leveldb/iterator"
+ "github.com/syndtr/goleveldb/leveldb/memdb"
+ "github.com/syndtr/goleveldb/leveldb/opt"
+)
+
+func (s *session) pickMemdbLevel(umin, umax []byte, maxLevel int) int {
+ v := s.version()
+ defer v.release()
+ return v.pickMemdbLevel(umin, umax, maxLevel)
+}
+
+func (s *session) flushMemdb(rec *sessionRecord, mdb *memdb.DB, maxLevel int) (int, error) {
+ // Create sorted table.
+ iter := mdb.NewIterator(nil)
+ defer iter.Release()
+ t, n, err := s.tops.createFrom(iter)
+ if err != nil {
+ return 0, err
+ }
+
+ // Pick level other than zero can cause compaction issue with large
+ // bulk insert and delete on strictly incrementing key-space. The
+ // problem is that the small deletion markers trapped at lower level,
+ // while key/value entries keep growing at higher level. Since the
+ // key-space is strictly incrementing it will not overlaps with
+ // higher level, thus maximum possible level is always picked, while
+ // overlapping deletion marker pushed into lower level.
+ // See: https://github.com/syndtr/goleveldb/issues/127.
+ flushLevel := s.pickMemdbLevel(t.imin.ukey(), t.imax.ukey(), maxLevel)
+ rec.addTableFile(flushLevel, t)
+
+ s.logf("memdb@flush created L%d@%d N·%d S·%s %q:%q", flushLevel, t.fd.Num, n, shortenb(int(t.size)), t.imin, t.imax)
+ return flushLevel, nil
+}
+
+// Pick a compaction based on current state; need external synchronization.
+func (s *session) pickCompaction() *compaction {
+ v := s.version()
+
+ var sourceLevel int
+ var t0 tFiles
+ if v.cScore >= 1 {
+ sourceLevel = v.cLevel
+ cptr := s.getCompPtr(sourceLevel)
+ tables := v.levels[sourceLevel]
+ for _, t := range tables {
+ if cptr == nil || s.icmp.Compare(t.imax, cptr) > 0 {
+ t0 = append(t0, t)
+ break
+ }
+ }
+ if len(t0) == 0 {
+ t0 = append(t0, tables[0])
+ }
+ } else {
+ if p := atomic.LoadPointer(&v.cSeek); p != nil {
+ ts := (*tSet)(p)
+ sourceLevel = ts.level
+ t0 = append(t0, ts.table)
+ } else {
+ v.release()
+ return nil
+ }
+ }
+
+ return newCompaction(s, v, sourceLevel, t0)
+}
+
+// Create compaction from given level and range; need external synchronization.
+func (s *session) getCompactionRange(sourceLevel int, umin, umax []byte, noLimit bool) *compaction {
+ v := s.version()
+
+ if sourceLevel >= len(v.levels) {
+ v.release()
+ return nil
+ }
+
+ t0 := v.levels[sourceLevel].getOverlaps(nil, s.icmp, umin, umax, sourceLevel == 0)
+ if len(t0) == 0 {
+ v.release()
+ return nil
+ }
+
+ // Avoid compacting too much in one shot in case the range is large.
+ // But we cannot do this for level-0 since level-0 files can overlap
+ // and we must not pick one file and drop another older file if the
+ // two files overlap.
+ if !noLimit && sourceLevel > 0 {
+ limit := int64(v.s.o.GetCompactionSourceLimit(sourceLevel))
+ total := int64(0)
+ for i, t := range t0 {
+ total += t.size
+ if total >= limit {
+ s.logf("table@compaction limiting F·%d -> F·%d", len(t0), i+1)
+ t0 = t0[:i+1]
+ break
+ }
+ }
+ }
+
+ return newCompaction(s, v, sourceLevel, t0)
+}
+
+func newCompaction(s *session, v *version, sourceLevel int, t0 tFiles) *compaction {
+ c := &compaction{
+ s: s,
+ v: v,
+ sourceLevel: sourceLevel,
+ levels: [2]tFiles{t0, nil},
+ maxGPOverlaps: int64(s.o.GetCompactionGPOverlaps(sourceLevel)),
+ tPtrs: make([]int, len(v.levels)),
+ }
+ c.expand()
+ c.save()
+ return c
+}
+
+// compaction represent a compaction state.
+type compaction struct {
+ s *session
+ v *version
+
+ sourceLevel int
+ levels [2]tFiles
+ maxGPOverlaps int64
+
+ gp tFiles
+ gpi int
+ seenKey bool
+ gpOverlappedBytes int64
+ imin, imax iKey
+ tPtrs []int
+ released bool
+
+ snapGPI int
+ snapSeenKey bool
+ snapGPOverlappedBytes int64
+ snapTPtrs []int
+}
+
+func (c *compaction) save() {
+ c.snapGPI = c.gpi
+ c.snapSeenKey = c.seenKey
+ c.snapGPOverlappedBytes = c.gpOverlappedBytes
+ c.snapTPtrs = append(c.snapTPtrs[:0], c.tPtrs...)
+}
+
+func (c *compaction) restore() {
+ c.gpi = c.snapGPI
+ c.seenKey = c.snapSeenKey
+ c.gpOverlappedBytes = c.snapGPOverlappedBytes
+ c.tPtrs = append(c.tPtrs[:0], c.snapTPtrs...)
+}
+
+func (c *compaction) release() {
+ if !c.released {
+ c.released = true
+ c.v.release()
+ }
+}
+
+// Expand compacted tables; need external synchronization.
+func (c *compaction) expand() {
+ limit := int64(c.s.o.GetCompactionExpandLimit(c.sourceLevel))
+ vt0 := c.v.levels[c.sourceLevel]
+ vt1 := tFiles{}
+ if level := c.sourceLevel + 1; level < len(c.v.levels) {
+ vt1 = c.v.levels[level]
+ }
+
+ t0, t1 := c.levels[0], c.levels[1]
+ imin, imax := t0.getRange(c.s.icmp)
+ // We expand t0 here just incase ukey hop across tables.
+ t0 = vt0.getOverlaps(t0, c.s.icmp, imin.ukey(), imax.ukey(), c.sourceLevel == 0)
+ if len(t0) != len(c.levels[0]) {
+ imin, imax = t0.getRange(c.s.icmp)
+ }
+ t1 = vt1.getOverlaps(t1, c.s.icmp, imin.ukey(), imax.ukey(), false)
+ // Get entire range covered by compaction.
+ amin, amax := append(t0, t1...).getRange(c.s.icmp)
+
+ // See if we can grow the number of inputs in "sourceLevel" without
+ // changing the number of "sourceLevel+1" files we pick up.
+ if len(t1) > 0 {
+ exp0 := vt0.getOverlaps(nil, c.s.icmp, amin.ukey(), amax.ukey(), c.sourceLevel == 0)
+ if len(exp0) > len(t0) && t1.size()+exp0.size() < limit {
+ xmin, xmax := exp0.getRange(c.s.icmp)
+ exp1 := vt1.getOverlaps(nil, c.s.icmp, xmin.ukey(), xmax.ukey(), false)
+ if len(exp1) == len(t1) {
+ c.s.logf("table@compaction expanding L%d+L%d (F·%d S·%s)+(F·%d S·%s) -> (F·%d S·%s)+(F·%d S·%s)",
+ c.sourceLevel, c.sourceLevel+1, len(t0), shortenb(int(t0.size())), len(t1), shortenb(int(t1.size())),
+ len(exp0), shortenb(int(exp0.size())), len(exp1), shortenb(int(exp1.size())))
+ imin, imax = xmin, xmax
+ t0, t1 = exp0, exp1
+ amin, amax = append(t0, t1...).getRange(c.s.icmp)
+ }
+ }
+ }
+
+ // Compute the set of grandparent files that overlap this compaction
+ // (parent == sourceLevel+1; grandparent == sourceLevel+2)
+ if level := c.sourceLevel + 2; level < len(c.v.levels) {
+ c.gp = c.v.levels[level].getOverlaps(c.gp, c.s.icmp, amin.ukey(), amax.ukey(), false)
+ }
+
+ c.levels[0], c.levels[1] = t0, t1
+ c.imin, c.imax = imin, imax
+}
+
+// Check whether compaction is trivial.
+func (c *compaction) trivial() bool {
+ return len(c.levels[0]) == 1 && len(c.levels[1]) == 0 && c.gp.size() <= c.maxGPOverlaps
+}
+
+func (c *compaction) baseLevelForKey(ukey []byte) bool {
+ for level := c.sourceLevel + 2; level < len(c.v.levels); level++ {
+ tables := c.v.levels[level]
+ for c.tPtrs[level] < len(tables) {
+ t := tables[c.tPtrs[level]]
+ if c.s.icmp.uCompare(ukey, t.imax.ukey()) <= 0 {
+ // We've advanced far enough.
+ if c.s.icmp.uCompare(ukey, t.imin.ukey()) >= 0 {
+ // Key falls in this file's range, so definitely not base level.
+ return false
+ }
+ break
+ }
+ c.tPtrs[level]++
+ }
+ }
+ return true
+}
+
+func (c *compaction) shouldStopBefore(ikey iKey) bool {
+ for ; c.gpi < len(c.gp); c.gpi++ {
+ gp := c.gp[c.gpi]
+ if c.s.icmp.Compare(ikey, gp.imax) <= 0 {
+ break
+ }
+ if c.seenKey {
+ c.gpOverlappedBytes += gp.size
+ }
+ }
+ c.seenKey = true
+
+ if c.gpOverlappedBytes > c.maxGPOverlaps {
+ // Too much overlap for current output; start new output.
+ c.gpOverlappedBytes = 0
+ return true
+ }
+ return false
+}
+
+// Creates an iterator.
+func (c *compaction) newIterator() iterator.Iterator {
+ // Creates iterator slice.
+ icap := len(c.levels)
+ if c.sourceLevel == 0 {
+ // Special case for level-0.
+ icap = len(c.levels[0]) + 1
+ }
+ its := make([]iterator.Iterator, 0, icap)
+
+ // Options.
+ ro := &opt.ReadOptions{
+ DontFillCache: true,
+ Strict: opt.StrictOverride,
+ }
+ strict := c.s.o.GetStrict(opt.StrictCompaction)
+ if strict {
+ ro.Strict |= opt.StrictReader
+ }
+
+ for i, tables := range c.levels {
+ if len(tables) == 0 {
+ continue
+ }
+
+ // Level-0 is not sorted and may overlaps each other.
+ if c.sourceLevel+i == 0 {
+ for _, t := range tables {
+ its = append(its, c.s.tops.newIterator(t, nil, ro))
+ }
+ } else {
+ it := iterator.NewIndexedIterator(tables.newIndexIterator(c.s.tops, c.s.icmp, nil, ro), strict)
+ its = append(its, it)
+ }
+ }
+
+ return iterator.NewMergedIterator(its, c.s.icmp, strict)
+}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record.go
index 1bdcc68f5..9802e1a55 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record.go
@@ -13,6 +13,7 @@ import (
"strings"
"github.com/syndtr/goleveldb/leveldb/errors"
+ "github.com/syndtr/goleveldb/leveldb/storage"
)
type byteReader interface {
@@ -40,25 +41,23 @@ type cpRecord struct {
type atRecord struct {
level int
- num uint64
- size uint64
+ num int64
+ size int64
imin iKey
imax iKey
}
type dtRecord struct {
level int
- num uint64
+ num int64
}
type sessionRecord struct {
- numLevel int
-
hasRec int
comparer string
- journalNum uint64
- prevJournalNum uint64
- nextFileNum uint64
+ journalNum int64
+ prevJournalNum int64
+ nextFileNum int64
seqNum uint64
compPtrs []cpRecord
addedTables []atRecord
@@ -77,17 +76,17 @@ func (p *sessionRecord) setComparer(name string) {
p.comparer = name
}
-func (p *sessionRecord) setJournalNum(num uint64) {
+func (p *sessionRecord) setJournalNum(num int64) {
p.hasRec |= 1 << recJournalNum
p.journalNum = num
}
-func (p *sessionRecord) setPrevJournalNum(num uint64) {
+func (p *sessionRecord) setPrevJournalNum(num int64) {
p.hasRec |= 1 << recPrevJournalNum
p.prevJournalNum = num
}
-func (p *sessionRecord) setNextFileNum(num uint64) {
+func (p *sessionRecord) setNextFileNum(num int64) {
p.hasRec |= 1 << recNextFileNum
p.nextFileNum = num
}
@@ -107,13 +106,13 @@ func (p *sessionRecord) resetCompPtrs() {
p.compPtrs = p.compPtrs[:0]
}
-func (p *sessionRecord) addTable(level int, num, size uint64, imin, imax iKey) {
+func (p *sessionRecord) addTable(level int, num, size int64, imin, imax iKey) {
p.hasRec |= 1 << recAddTable
p.addedTables = append(p.addedTables, atRecord{level, num, size, imin, imax})
}
func (p *sessionRecord) addTableFile(level int, t *tFile) {
- p.addTable(level, t.file.Num(), t.size, t.imin, t.imax)
+ p.addTable(level, t.fd.Num, t.size, t.imin, t.imax)
}
func (p *sessionRecord) resetAddedTables() {
@@ -121,7 +120,7 @@ func (p *sessionRecord) resetAddedTables() {
p.addedTables = p.addedTables[:0]
}
-func (p *sessionRecord) delTable(level int, num uint64) {
+func (p *sessionRecord) delTable(level int, num int64) {
p.hasRec |= 1 << recDelTable
p.deletedTables = append(p.deletedTables, dtRecord{level, num})
}
@@ -139,6 +138,13 @@ func (p *sessionRecord) putUvarint(w io.Writer, x uint64) {
_, p.err = w.Write(p.scratch[:n])
}
+func (p *sessionRecord) putVarint(w io.Writer, x int64) {
+ if x < 0 {
+ panic("invalid negative value")
+ }
+ p.putUvarint(w, uint64(x))
+}
+
func (p *sessionRecord) putBytes(w io.Writer, x []byte) {
if p.err != nil {
return
@@ -158,11 +164,11 @@ func (p *sessionRecord) encode(w io.Writer) error {
}
if p.has(recJournalNum) {
p.putUvarint(w, recJournalNum)
- p.putUvarint(w, p.journalNum)
+ p.putVarint(w, p.journalNum)
}
if p.has(recNextFileNum) {
p.putUvarint(w, recNextFileNum)
- p.putUvarint(w, p.nextFileNum)
+ p.putVarint(w, p.nextFileNum)
}
if p.has(recSeqNum) {
p.putUvarint(w, recSeqNum)
@@ -176,13 +182,13 @@ func (p *sessionRecord) encode(w io.Writer) error {
for _, r := range p.deletedTables {
p.putUvarint(w, recDelTable)
p.putUvarint(w, uint64(r.level))
- p.putUvarint(w, r.num)
+ p.putVarint(w, r.num)
}
for _, r := range p.addedTables {
p.putUvarint(w, recAddTable)
p.putUvarint(w, uint64(r.level))
- p.putUvarint(w, r.num)
- p.putUvarint(w, r.size)
+ p.putVarint(w, r.num)
+ p.putVarint(w, r.size)
p.putBytes(w, r.imin)
p.putBytes(w, r.imax)
}
@@ -196,9 +202,9 @@ func (p *sessionRecord) readUvarintMayEOF(field string, r io.ByteReader, mayEOF
x, err := binary.ReadUvarint(r)
if err != nil {
if err == io.ErrUnexpectedEOF || (mayEOF == false && err == io.EOF) {
- p.err = errors.NewErrCorrupted(nil, &ErrManifestCorrupted{field, "short read"})
+ p.err = errors.NewErrCorrupted(storage.FileDesc{}, &ErrManifestCorrupted{field, "short read"})
} else if strings.HasPrefix(err.Error(), "binary:") {
- p.err = errors.NewErrCorrupted(nil, &ErrManifestCorrupted{field, err.Error()})
+ p.err = errors.NewErrCorrupted(storage.FileDesc{}, &ErrManifestCorrupted{field, err.Error()})
} else {
p.err = err
}
@@ -211,6 +217,14 @@ func (p *sessionRecord) readUvarint(field string, r io.ByteReader) uint64 {
return p.readUvarintMayEOF(field, r, false)
}
+func (p *sessionRecord) readVarint(field string, r io.ByteReader) int64 {
+ x := int64(p.readUvarintMayEOF(field, r, false))
+ if x < 0 {
+ p.err = errors.NewErrCorrupted(storage.FileDesc{}, &ErrManifestCorrupted{field, "invalid negative value"})
+ }
+ return x
+}
+
func (p *sessionRecord) readBytes(field string, r byteReader) []byte {
if p.err != nil {
return nil
@@ -223,7 +237,7 @@ func (p *sessionRecord) readBytes(field string, r byteReader) []byte {
_, p.err = io.ReadFull(r, x)
if p.err != nil {
if p.err == io.ErrUnexpectedEOF {
- p.err = errors.NewErrCorrupted(nil, &ErrManifestCorrupted{field, "short read"})
+ p.err = errors.NewErrCorrupted(storage.FileDesc{}, &ErrManifestCorrupted{field, "short read"})
}
return nil
}
@@ -238,10 +252,6 @@ func (p *sessionRecord) readLevel(field string, r io.ByteReader) int {
if p.err != nil {
return 0
}
- if x >= uint64(p.numLevel) {
- p.err = errors.NewErrCorrupted(nil, &ErrManifestCorrupted{field, "invalid level number"})
- return 0
- }
return int(x)
}
@@ -266,17 +276,17 @@ func (p *sessionRecord) decode(r io.Reader) error {
p.setComparer(string(x))
}
case recJournalNum:
- x := p.readUvarint("journal-num", br)
+ x := p.readVarint("journal-num", br)
if p.err == nil {
p.setJournalNum(x)
}
case recPrevJournalNum:
- x := p.readUvarint("prev-journal-num", br)
+ x := p.readVarint("prev-journal-num", br)
if p.err == nil {
p.setPrevJournalNum(x)
}
case recNextFileNum:
- x := p.readUvarint("next-file-num", br)
+ x := p.readVarint("next-file-num", br)
if p.err == nil {
p.setNextFileNum(x)
}
@@ -293,8 +303,8 @@ func (p *sessionRecord) decode(r io.Reader) error {
}
case recAddTable:
level := p.readLevel("add-table.level", br)
- num := p.readUvarint("add-table.num", br)
- size := p.readUvarint("add-table.size", br)
+ num := p.readVarint("add-table.num", br)
+ size := p.readVarint("add-table.size", br)
imin := p.readBytes("add-table.imin", br)
imax := p.readBytes("add-table.imax", br)
if p.err == nil {
@@ -302,7 +312,7 @@ func (p *sessionRecord) decode(r io.Reader) error {
}
case recDelTable:
level := p.readLevel("del-table.level", br)
- num := p.readUvarint("del-table.num", br)
+ num := p.readVarint("del-table.num", br)
if p.err == nil {
p.delTable(level, num)
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record_test.go
deleted file mode 100644
index c0c035ae3..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_record_test.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
- "bytes"
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/opt"
-)
-
-func decodeEncode(v *sessionRecord) (res bool, err error) {
- b := new(bytes.Buffer)
- err = v.encode(b)
- if err != nil {
- return
- }
- v2 := &sessionRecord{numLevel: opt.DefaultNumLevel}
- err = v.decode(b)
- if err != nil {
- return
- }
- b2 := new(bytes.Buffer)
- err = v2.encode(b2)
- if err != nil {
- return
- }
- return bytes.Equal(b.Bytes(), b2.Bytes()), nil
-}
-
-func TestSessionRecord_EncodeDecode(t *testing.T) {
- big := uint64(1) << 50
- v := &sessionRecord{numLevel: opt.DefaultNumLevel}
- i := uint64(0)
- test := func() {
- res, err := decodeEncode(v)
- if err != nil {
- t.Fatalf("error when testing encode/decode sessionRecord: %v", err)
- }
- if !res {
- t.Error("encode/decode test failed at iteration:", i)
- }
- }
-
- for ; i < 4; i++ {
- test()
- v.addTable(3, big+300+i, big+400+i,
- newIkey([]byte("foo"), big+500+1, ktVal),
- newIkey([]byte("zoo"), big+600+1, ktDel))
- v.delTable(4, big+700+i)
- v.addCompPtr(int(i), newIkey([]byte("x"), big+900+1, ktVal))
- }
-
- v.setComparer("foo")
- v.setJournalNum(big + 100)
- v.setPrevJournalNum(big + 99)
- v.setNextFileNum(big + 200)
- v.setSeqNum(big + 1000)
- test()
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_util.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_util.go
index 007c02cde..e4fa98d92 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_util.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/session_util.go
@@ -17,15 +17,15 @@ import (
// Logging.
type dropper struct {
- s *session
- file storage.File
+ s *session
+ fd storage.FileDesc
}
func (d dropper) Drop(err error) {
if e, ok := err.(*journal.ErrCorrupted); ok {
- d.s.logf("journal@drop %s-%d S·%s %q", d.file.Type(), d.file.Num(), shortenb(e.Size), e.Reason)
+ d.s.logf("journal@drop %s-%d S·%s %q", d.fd.Type, d.fd.Num, shortenb(e.Size), e.Reason)
} else {
- d.s.logf("journal@drop %s-%d %q", d.file.Type(), d.file.Num(), err)
+ d.s.logf("journal@drop %s-%d %q", d.fd.Type, d.fd.Num, err)
}
}
@@ -34,25 +34,9 @@ func (s *session) logf(format string, v ...interface{}) { s.stor.Log(fmt.Sprintf
// File utils.
-func (s *session) getJournalFile(num uint64) storage.File {
- return s.stor.GetFile(num, storage.TypeJournal)
-}
-
-func (s *session) getTableFile(num uint64) storage.File {
- return s.stor.GetFile(num, storage.TypeTable)
-}
-
-func (s *session) getFiles(t storage.FileType) ([]storage.File, error) {
- return s.stor.GetFiles(t)
-}
-
-func (s *session) newTemp() storage.File {
- num := atomic.AddUint64(&s.stTempFileNum, 1) - 1
- return s.stor.GetFile(num, storage.TypeTemp)
-}
-
-func (s *session) tableFileFromRecord(r atRecord) *tFile {
- return newTableFile(s.getTableFile(r.num), r.size, r.imin, r.imax)
+func (s *session) newTemp() storage.FileDesc {
+ num := atomic.AddInt64(&s.stTempFileNum, 1) - 1
+ return storage.FileDesc{storage.TypeTemp, num}
}
// Session state.
@@ -80,47 +64,65 @@ func (s *session) setVersion(v *version) {
}
// Get current unused file number.
-func (s *session) nextFileNum() uint64 {
- return atomic.LoadUint64(&s.stNextFileNum)
+func (s *session) nextFileNum() int64 {
+ return atomic.LoadInt64(&s.stNextFileNum)
}
// Set current unused file number to num.
-func (s *session) setNextFileNum(num uint64) {
- atomic.StoreUint64(&s.stNextFileNum, num)
+func (s *session) setNextFileNum(num int64) {
+ atomic.StoreInt64(&s.stNextFileNum, num)
}
// Mark file number as used.
-func (s *session) markFileNum(num uint64) {
+func (s *session) markFileNum(num int64) {
nextFileNum := num + 1
for {
old, x := s.stNextFileNum, nextFileNum
if old > x {
x = old
}
- if atomic.CompareAndSwapUint64(&s.stNextFileNum, old, x) {
+ if atomic.CompareAndSwapInt64(&s.stNextFileNum, old, x) {
break
}
}
}
// Allocate a file number.
-func (s *session) allocFileNum() uint64 {
- return atomic.AddUint64(&s.stNextFileNum, 1) - 1
+func (s *session) allocFileNum() int64 {
+ return atomic.AddInt64(&s.stNextFileNum, 1) - 1
}
// Reuse given file number.
-func (s *session) reuseFileNum(num uint64) {
+func (s *session) reuseFileNum(num int64) {
for {
old, x := s.stNextFileNum, num
if old != x+1 {
x = old
}
- if atomic.CompareAndSwapUint64(&s.stNextFileNum, old, x) {
+ if atomic.CompareAndSwapInt64(&s.stNextFileNum, old, x) {
break
}
}
}
+// Set compaction ptr at given level; need external synchronization.
+func (s *session) setCompPtr(level int, ik iKey) {
+ if level >= len(s.stCompPtrs) {
+ newCompPtrs := make([]iKey, level+1)
+ copy(newCompPtrs, s.stCompPtrs)
+ s.stCompPtrs = newCompPtrs
+ }
+ s.stCompPtrs[level] = append(iKey{}, ik...)
+}
+
+// Get compaction ptr at given level; need external synchronization.
+func (s *session) getCompPtr(level int) iKey {
+ if level >= len(s.stCompPtrs) {
+ return nil
+ }
+ return s.stCompPtrs[level]
+}
+
// Manifest related utils.
// Fill given session record obj with current states; need external
@@ -149,29 +151,28 @@ func (s *session) fillRecord(r *sessionRecord, snapshot bool) {
// Mark if record has been committed, this will update session state;
// need external synchronization.
-func (s *session) recordCommited(r *sessionRecord) {
- if r.has(recJournalNum) {
- s.stJournalNum = r.journalNum
+func (s *session) recordCommited(rec *sessionRecord) {
+ if rec.has(recJournalNum) {
+ s.stJournalNum = rec.journalNum
}
- if r.has(recPrevJournalNum) {
- s.stPrevJournalNum = r.prevJournalNum
+ if rec.has(recPrevJournalNum) {
+ s.stPrevJournalNum = rec.prevJournalNum
}
- if r.has(recSeqNum) {
- s.stSeqNum = r.seqNum
+ if rec.has(recSeqNum) {
+ s.stSeqNum = rec.seqNum
}
- for _, p := range r.compPtrs {
- s.stCompPtrs[p.level] = iKey(p.ikey)
+ for _, r := range rec.compPtrs {
+ s.setCompPtr(r.level, iKey(r.ikey))
}
}
// Create a new manifest file; need external synchronization.
func (s *session) newManifest(rec *sessionRecord, v *version) (err error) {
- num := s.allocFileNum()
- file := s.stor.GetFile(num, storage.TypeManifest)
- writer, err := file.Create()
+ fd := storage.FileDesc{storage.TypeManifest, s.allocFileNum()}
+ writer, err := s.stor.Create(fd)
if err != nil {
return
}
@@ -182,7 +183,7 @@ func (s *session) newManifest(rec *sessionRecord, v *version) (err error) {
defer v.release()
}
if rec == nil {
- rec = &sessionRecord{numLevel: s.o.GetNumLevel()}
+ rec = &sessionRecord{}
}
s.fillRecord(rec, true)
v.fillRecord(rec)
@@ -196,16 +197,16 @@ func (s *session) newManifest(rec *sessionRecord, v *version) (err error) {
if s.manifestWriter != nil {
s.manifestWriter.Close()
}
- if s.manifestFile != nil {
- s.manifestFile.Remove()
+ if !s.manifestFd.Nil() {
+ s.stor.Remove(s.manifestFd)
}
- s.manifestFile = file
+ s.manifestFd = fd
s.manifestWriter = writer
s.manifest = jw
} else {
writer.Close()
- file.Remove()
- s.reuseFileNum(num)
+ s.stor.Remove(fd)
+ s.reuseFileNum(fd.Num)
}
}()
@@ -221,7 +222,7 @@ func (s *session) newManifest(rec *sessionRecord, v *version) (err error) {
if err != nil {
return
}
- err = s.stor.SetManifest(file)
+ err = s.stor.SetMeta(fd)
return
}
@@ -240,9 +241,11 @@ func (s *session) flushManifest(rec *sessionRecord) (err error) {
if err != nil {
return
}
- err = s.manifestWriter.Sync()
- if err != nil {
- return
+ if !s.o.GetNoSync() {
+ err = s.manifestWriter.Sync()
+ if err != nil {
+ return
+ }
}
s.recordCommited(rec)
return
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go
index 46cc9d070..cbe1dc103 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage.go
@@ -17,11 +17,12 @@ import (
"strings"
"sync"
"time"
-
- "github.com/syndtr/goleveldb/leveldb/util"
)
-var errFileOpen = errors.New("leveldb/storage: file still open")
+var (
+ errFileOpen = errors.New("leveldb/storage: file still open")
+ errReadOnly = errors.New("leveldb/storage: storage is read-only")
+)
type fileLock interface {
release() error
@@ -32,40 +33,52 @@ type fileStorageLock struct {
}
func (lock *fileStorageLock) Release() {
- fs := lock.fs
- fs.mu.Lock()
- defer fs.mu.Unlock()
- if fs.slock == lock {
- fs.slock = nil
+ if lock.fs != nil {
+ lock.fs.mu.Lock()
+ defer lock.fs.mu.Unlock()
+ if lock.fs.slock == lock {
+ lock.fs.slock = nil
+ }
}
- return
}
+const logSizeThreshold = 1024 * 1024 // 1 MiB
+
// fileStorage is a file-system backed storage.
type fileStorage struct {
- path string
-
- mu sync.Mutex
- flock fileLock
- slock *fileStorageLock
- logw *os.File
- buf []byte
+ path string
+ readOnly bool
+
+ mu sync.Mutex
+ flock fileLock
+ slock *fileStorageLock
+ logw *os.File
+ logSize int64
+ buf []byte
// Opened file counter; if open < 0 means closed.
open int
day int
}
// OpenFile returns a new filesytem-backed storage implementation with the given
-// path. This also hold a file lock, so any subsequent attempt to open the same
-// path will fail.
+// path. This also acquire a file lock, so any subsequent attempt to open the
+// same path will fail.
//
// The storage must be closed after use, by calling Close method.
-func OpenFile(path string) (Storage, error) {
- if err := os.MkdirAll(path, 0755); err != nil {
+func OpenFile(path string, readOnly bool) (Storage, error) {
+ if fi, err := os.Stat(path); err == nil {
+ if !fi.IsDir() {
+ return nil, fmt.Errorf("leveldb/storage: open %s: not a directory", path)
+ }
+ } else if os.IsNotExist(err) && !readOnly {
+ if err := os.MkdirAll(path, 0755); err != nil {
+ return nil, err
+ }
+ } else {
return nil, err
}
- flock, err := newFileLock(filepath.Join(path, "LOCK"))
+ flock, err := newFileLock(filepath.Join(path, "LOCK"), readOnly)
if err != nil {
return nil, err
}
@@ -76,23 +89,42 @@ func OpenFile(path string) (Storage, error) {
}
}()
- rename(filepath.Join(path, "LOG"), filepath.Join(path, "LOG.old"))
- logw, err := os.OpenFile(filepath.Join(path, "LOG"), os.O_WRONLY|os.O_CREATE, 0644)
- if err != nil {
- return nil, err
+ var (
+ logw *os.File
+ logSize int64
+ )
+ if !readOnly {
+ logw, err = os.OpenFile(filepath.Join(path, "LOG"), os.O_WRONLY|os.O_CREATE, 0644)
+ if err != nil {
+ return nil, err
+ }
+ logSize, err = logw.Seek(0, os.SEEK_END)
+ if err != nil {
+ logw.Close()
+ return nil, err
+ }
}
- fs := &fileStorage{path: path, flock: flock, logw: logw}
+ fs := &fileStorage{
+ path: path,
+ readOnly: readOnly,
+ flock: flock,
+ logw: logw,
+ logSize: logSize,
+ }
runtime.SetFinalizer(fs, (*fileStorage).Close)
return fs, nil
}
-func (fs *fileStorage) Lock() (util.Releaser, error) {
+func (fs *fileStorage) Lock() (Lock, error) {
fs.mu.Lock()
defer fs.mu.Unlock()
if fs.open < 0 {
return nil, ErrClosed
}
+ if fs.readOnly {
+ return &fileStorageLock{}, nil
+ }
if fs.slock != nil {
return nil, ErrLocked
}
@@ -101,7 +133,7 @@ func (fs *fileStorage) Lock() (util.Releaser, error) {
}
func itoa(buf []byte, i int, wid int) []byte {
- var u uint = uint(i)
+ u := uint(i)
if u == 0 && wid <= 1 {
return append(buf, '0')
}
@@ -126,6 +158,22 @@ func (fs *fileStorage) printDay(t time.Time) {
}
func (fs *fileStorage) doLog(t time.Time, str string) {
+ if fs.logSize > logSizeThreshold {
+ // Rotate log file.
+ fs.logw.Close()
+ fs.logw = nil
+ fs.logSize = 0
+ rename(filepath.Join(fs.path, "LOG"), filepath.Join(fs.path, "LOG.old"))
+ }
+ if fs.logw == nil {
+ var err error
+ fs.logw, err = os.OpenFile(filepath.Join(fs.path, "LOG"), os.O_WRONLY|os.O_CREATE, 0644)
+ if err != nil {
+ return
+ }
+ // Force printDay on new log file.
+ fs.day = 0
+ }
fs.printDay(t)
hour, min, sec := t.Clock()
msec := t.Nanosecond() / 1e3
@@ -145,65 +193,71 @@ func (fs *fileStorage) doLog(t time.Time, str string) {
}
func (fs *fileStorage) Log(str string) {
- t := time.Now()
- fs.mu.Lock()
- defer fs.mu.Unlock()
- if fs.open < 0 {
- return
+ if !fs.readOnly {
+ t := time.Now()
+ fs.mu.Lock()
+ defer fs.mu.Unlock()
+ if fs.open < 0 {
+ return
+ }
+ fs.doLog(t, str)
}
- fs.doLog(t, str)
}
func (fs *fileStorage) log(str string) {
- fs.doLog(time.Now(), str)
+ if !fs.readOnly {
+ fs.doLog(time.Now(), str)
+ }
}
-func (fs *fileStorage) GetFile(num uint64, t FileType) File {
- return &file{fs: fs, num: num, t: t}
-}
+func (fs *fileStorage) SetMeta(fd FileDesc) (err error) {
+ if !FileDescOk(fd) {
+ return ErrInvalidFile
+ }
+ if fs.readOnly {
+ return errReadOnly
+ }
-func (fs *fileStorage) GetFiles(t FileType) (ff []File, err error) {
fs.mu.Lock()
defer fs.mu.Unlock()
if fs.open < 0 {
- return nil, ErrClosed
+ return ErrClosed
}
- dir, err := os.Open(fs.path)
+ defer func() {
+ if err != nil {
+ fs.log(fmt.Sprintf("CURRENT: %v", err))
+ }
+ }()
+ path := fmt.Sprintf("%s.%d", filepath.Join(fs.path, "CURRENT"), fd.Num)
+ w, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
return
}
- fnn, err := dir.Readdirnames(0)
- // Close the dir first before checking for Readdirnames error.
- if err := dir.Close(); err != nil {
- fs.log(fmt.Sprintf("close dir: %v", err))
+ _, err = fmt.Fprintln(w, fsGenName(fd))
+ // Close the file first.
+ if cerr := w.Close(); cerr != nil {
+ fs.log(fmt.Sprintf("close CURRENT.%d: %v", fd.Num, cerr))
}
if err != nil {
return
}
- f := &file{fs: fs}
- for _, fn := range fnn {
- if f.parse(fn) && (f.t&t) != 0 {
- ff = append(ff, f)
- f = &file{fs: fs}
- }
- }
- return
+ return rename(path, filepath.Join(fs.path, "CURRENT"))
}
-func (fs *fileStorage) GetManifest() (f File, err error) {
+func (fs *fileStorage) GetMeta() (fd FileDesc, err error) {
fs.mu.Lock()
defer fs.mu.Unlock()
if fs.open < 0 {
- return nil, ErrClosed
+ return FileDesc{}, ErrClosed
}
dir, err := os.Open(fs.path)
if err != nil {
return
}
- fnn, err := dir.Readdirnames(0)
+ names, err := dir.Readdirnames(0)
// Close the dir first before checking for Readdirnames error.
- if err := dir.Close(); err != nil {
- fs.log(fmt.Sprintf("close dir: %v", err))
+ if ce := dir.Close(); ce != nil {
+ fs.log(fmt.Sprintf("close dir: %v", ce))
}
if err != nil {
return
@@ -212,55 +266,64 @@ func (fs *fileStorage) GetManifest() (f File, err error) {
var rem []string
var pend bool
var cerr error
- for _, fn := range fnn {
- if strings.HasPrefix(fn, "CURRENT") {
- pend1 := len(fn) > 7
+ for _, name := range names {
+ if strings.HasPrefix(name, "CURRENT") {
+ pend1 := len(name) > 7
+ var pendNum int64
// Make sure it is valid name for a CURRENT file, otherwise skip it.
if pend1 {
- if fn[7] != '.' || len(fn) < 9 {
- fs.log(fmt.Sprintf("skipping %s: invalid file name", fn))
+ if name[7] != '.' || len(name) < 9 {
+ fs.log(fmt.Sprintf("skipping %s: invalid file name", name))
continue
}
- if _, e1 := strconv.ParseUint(fn[8:], 10, 0); e1 != nil {
- fs.log(fmt.Sprintf("skipping %s: invalid file num: %v", fn, e1))
+ var e1 error
+ if pendNum, e1 = strconv.ParseInt(name[8:], 10, 0); e1 != nil {
+ fs.log(fmt.Sprintf("skipping %s: invalid file num: %v", name, e1))
continue
}
}
- path := filepath.Join(fs.path, fn)
+ path := filepath.Join(fs.path, name)
r, e1 := os.OpenFile(path, os.O_RDONLY, 0)
if e1 != nil {
- return nil, e1
+ return FileDesc{}, e1
}
b, e1 := ioutil.ReadAll(r)
if e1 != nil {
r.Close()
- return nil, e1
+ return FileDesc{}, e1
}
- f1 := &file{fs: fs}
- if len(b) < 1 || b[len(b)-1] != '\n' || !f1.parse(string(b[:len(b)-1])) {
- fs.log(fmt.Sprintf("skipping %s: corrupted or incomplete", fn))
+ var fd1 FileDesc
+ if len(b) < 1 || b[len(b)-1] != '\n' || !fsParseNamePtr(string(b[:len(b)-1]), &fd1) {
+ fs.log(fmt.Sprintf("skipping %s: corrupted or incomplete", name))
if pend1 {
- rem = append(rem, fn)
+ rem = append(rem, name)
}
if !pend1 || cerr == nil {
- cerr = fmt.Errorf("leveldb/storage: corrupted or incomplete %s file", fn)
+ metaFd, _ := fsParseName(name)
+ cerr = &ErrCorrupted{
+ Fd: metaFd,
+ Err: errors.New("leveldb/storage: corrupted or incomplete meta file"),
+ }
}
- } else if f != nil && f1.Num() < f.Num() {
- fs.log(fmt.Sprintf("skipping %s: obsolete", fn))
+ } else if pend1 && pendNum != fd1.Num {
+ fs.log(fmt.Sprintf("skipping %s: inconsistent pending-file num: %d vs %d", name, pendNum, fd1.Num))
+ rem = append(rem, name)
+ } else if fd1.Num < fd.Num {
+ fs.log(fmt.Sprintf("skipping %s: obsolete", name))
if pend1 {
- rem = append(rem, fn)
+ rem = append(rem, name)
}
} else {
- f = f1
+ fd = fd1
pend = pend1
}
if err := r.Close(); err != nil {
- fs.log(fmt.Sprintf("close %s: %v", fn, err))
+ fs.log(fmt.Sprintf("close %s: %v", name, err))
}
}
}
// Don't remove any files if there is no valid CURRENT file.
- if f == nil {
+ if fd.Nil() {
if cerr != nil {
err = cerr
} else {
@@ -268,267 +331,253 @@ func (fs *fileStorage) GetManifest() (f File, err error) {
}
return
}
- // Rename pending CURRENT file to an effective CURRENT.
- if pend {
- path := fmt.Sprintf("%s.%d", filepath.Join(fs.path, "CURRENT"), f.Num())
- if err := rename(path, filepath.Join(fs.path, "CURRENT")); err != nil {
- fs.log(fmt.Sprintf("CURRENT.%d -> CURRENT: %v", f.Num(), err))
+ if !fs.readOnly {
+ // Rename pending CURRENT file to an effective CURRENT.
+ if pend {
+ path := fmt.Sprintf("%s.%d", filepath.Join(fs.path, "CURRENT"), fd.Num)
+ if err := rename(path, filepath.Join(fs.path, "CURRENT")); err != nil {
+ fs.log(fmt.Sprintf("CURRENT.%d -> CURRENT: %v", fd.Num, err))
+ }
}
- }
- // Remove obsolete or incomplete pending CURRENT files.
- for _, fn := range rem {
- path := filepath.Join(fs.path, fn)
- if err := os.Remove(path); err != nil {
- fs.log(fmt.Sprintf("remove %s: %v", fn, err))
+ // Remove obsolete or incomplete pending CURRENT files.
+ for _, name := range rem {
+ path := filepath.Join(fs.path, name)
+ if err := os.Remove(path); err != nil {
+ fs.log(fmt.Sprintf("remove %s: %v", name, err))
+ }
}
}
return
}
-func (fs *fileStorage) SetManifest(f File) (err error) {
+func (fs *fileStorage) List(ft FileType) (fds []FileDesc, err error) {
fs.mu.Lock()
defer fs.mu.Unlock()
if fs.open < 0 {
- return ErrClosed
- }
- f2, ok := f.(*file)
- if !ok || f2.t != TypeManifest {
- return ErrInvalidFile
+ return nil, ErrClosed
}
- defer func() {
- if err != nil {
- fs.log(fmt.Sprintf("CURRENT: %v", err))
- }
- }()
- path := fmt.Sprintf("%s.%d", filepath.Join(fs.path, "CURRENT"), f2.Num())
- w, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
+ dir, err := os.Open(fs.path)
if err != nil {
- return err
+ return
}
- _, err = fmt.Fprintln(w, f2.name())
- // Close the file first.
- if err := w.Close(); err != nil {
- fs.log(fmt.Sprintf("close CURRENT.%d: %v", f2.num, err))
+ names, err := dir.Readdirnames(0)
+ // Close the dir first before checking for Readdirnames error.
+ if cerr := dir.Close(); cerr != nil {
+ fs.log(fmt.Sprintf("close dir: %v", cerr))
}
- if err != nil {
- return err
+ if err == nil {
+ for _, name := range names {
+ if fd, ok := fsParseName(name); ok && fd.Type&ft != 0 {
+ fds = append(fds, fd)
+ }
+ }
}
- return rename(path, filepath.Join(fs.path, "CURRENT"))
+ return
}
-func (fs *fileStorage) Close() error {
+func (fs *fileStorage) Open(fd FileDesc) (Reader, error) {
+ if !FileDescOk(fd) {
+ return nil, ErrInvalidFile
+ }
+
fs.mu.Lock()
defer fs.mu.Unlock()
if fs.open < 0 {
- return ErrClosed
- }
- // Clear the finalizer.
- runtime.SetFinalizer(fs, nil)
-
- if fs.open > 0 {
- fs.log(fmt.Sprintf("refuse to close, %d files still open", fs.open))
- return fmt.Errorf("leveldb/storage: cannot close, %d files still open", fs.open)
+ return nil, ErrClosed
}
- fs.open = -1
- e1 := fs.logw.Close()
- err := fs.flock.release()
- if err == nil {
- err = e1
+ of, err := os.OpenFile(filepath.Join(fs.path, fsGenName(fd)), os.O_RDONLY, 0)
+ if err != nil {
+ if fsHasOldName(fd) && os.IsNotExist(err) {
+ of, err = os.OpenFile(filepath.Join(fs.path, fsGenOldName(fd)), os.O_RDONLY, 0)
+ if err == nil {
+ goto ok
+ }
+ }
+ return nil, err
}
- return err
-}
-
-type fileWrap struct {
- *os.File
- f *file
+ok:
+ fs.open++
+ return &fileWrap{File: of, fs: fs, fd: fd}, nil
}
-func (fw fileWrap) Sync() error {
- if err := fw.File.Sync(); err != nil {
- return err
+func (fs *fileStorage) Create(fd FileDesc) (Writer, error) {
+ if !FileDescOk(fd) {
+ return nil, ErrInvalidFile
}
- if fw.f.Type() == TypeManifest {
- // Also sync parent directory if file type is manifest.
- // See: https://code.google.com/p/leveldb/issues/detail?id=190.
- if err := syncDir(fw.f.fs.path); err != nil {
- return err
- }
+ if fs.readOnly {
+ return nil, errReadOnly
}
- return nil
-}
-func (fw fileWrap) Close() error {
- f := fw.f
- f.fs.mu.Lock()
- defer f.fs.mu.Unlock()
- if !f.open {
- return ErrClosed
+ fs.mu.Lock()
+ defer fs.mu.Unlock()
+ if fs.open < 0 {
+ return nil, ErrClosed
}
- f.open = false
- f.fs.open--
- err := fw.File.Close()
+ of, err := os.OpenFile(filepath.Join(fs.path, fsGenName(fd)), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
- f.fs.log(fmt.Sprintf("close %s.%d: %v", f.Type(), f.Num(), err))
+ return nil, err
}
- return err
+ fs.open++
+ return &fileWrap{File: of, fs: fs, fd: fd}, nil
}
-type file struct {
- fs *fileStorage
- num uint64
- t FileType
- open bool
-}
-
-func (f *file) Open() (Reader, error) {
- f.fs.mu.Lock()
- defer f.fs.mu.Unlock()
- if f.fs.open < 0 {
- return nil, ErrClosed
+func (fs *fileStorage) Remove(fd FileDesc) error {
+ if !FileDescOk(fd) {
+ return ErrInvalidFile
}
- if f.open {
- return nil, errFileOpen
+ if fs.readOnly {
+ return errReadOnly
}
- of, err := os.OpenFile(f.path(), os.O_RDONLY, 0)
+
+ fs.mu.Lock()
+ defer fs.mu.Unlock()
+ if fs.open < 0 {
+ return ErrClosed
+ }
+ err := os.Remove(filepath.Join(fs.path, fsGenName(fd)))
if err != nil {
- if f.hasOldName() && os.IsNotExist(err) {
- of, err = os.OpenFile(f.oldPath(), os.O_RDONLY, 0)
- if err == nil {
- goto ok
+ if fsHasOldName(fd) && os.IsNotExist(err) {
+ if e1 := os.Remove(filepath.Join(fs.path, fsGenOldName(fd))); !os.IsNotExist(e1) {
+ fs.log(fmt.Sprintf("remove %s: %v (old name)", fd, err))
+ err = e1
}
+ } else {
+ fs.log(fmt.Sprintf("remove %s: %v", fd, err))
}
- return nil, err
}
-ok:
- f.open = true
- f.fs.open++
- return fileWrap{of, f}, nil
+ return err
}
-func (f *file) Create() (Writer, error) {
- f.fs.mu.Lock()
- defer f.fs.mu.Unlock()
- if f.fs.open < 0 {
- return nil, ErrClosed
+func (fs *fileStorage) Rename(oldfd, newfd FileDesc) error {
+ if !FileDescOk(oldfd) || !FileDescOk(newfd) {
+ return ErrInvalidFile
}
- if f.open {
- return nil, errFileOpen
+ if oldfd == newfd {
+ return nil
}
- of, err := os.OpenFile(f.path(), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
- if err != nil {
- return nil, err
+ if fs.readOnly {
+ return errReadOnly
}
- f.open = true
- f.fs.open++
- return fileWrap{of, f}, nil
+
+ fs.mu.Lock()
+ defer fs.mu.Unlock()
+ if fs.open < 0 {
+ return ErrClosed
+ }
+ return rename(filepath.Join(fs.path, fsGenName(oldfd)), filepath.Join(fs.path, fsGenName(newfd)))
}
-func (f *file) Replace(newfile File) error {
- f.fs.mu.Lock()
- defer f.fs.mu.Unlock()
- if f.fs.open < 0 {
+func (fs *fileStorage) Close() error {
+ fs.mu.Lock()
+ defer fs.mu.Unlock()
+ if fs.open < 0 {
return ErrClosed
}
- newfile2, ok := newfile.(*file)
- if !ok {
- return ErrInvalidFile
+ // Clear the finalizer.
+ runtime.SetFinalizer(fs, nil)
+
+ if fs.open > 0 {
+ fs.log(fmt.Sprintf("close: warning, %d files still open", fs.open))
}
- if f.open || newfile2.open {
- return errFileOpen
+ fs.open = -1
+ if fs.logw != nil {
+ fs.logw.Close()
}
- return rename(newfile2.path(), f.path())
+ return fs.flock.release()
}
-func (f *file) Type() FileType {
- return f.t
+type fileWrap struct {
+ *os.File
+ fs *fileStorage
+ fd FileDesc
+ closed bool
}
-func (f *file) Num() uint64 {
- return f.num
+func (fw *fileWrap) Sync() error {
+ if err := fw.File.Sync(); err != nil {
+ return err
+ }
+ if fw.fd.Type == TypeManifest {
+ // Also sync parent directory if file type is manifest.
+ // See: https://code.google.com/p/leveldb/issues/detail?id=190.
+ if err := syncDir(fw.fs.path); err != nil {
+ fw.fs.log(fmt.Sprintf("syncDir: %v", err))
+ return err
+ }
+ }
+ return nil
}
-func (f *file) Remove() error {
- f.fs.mu.Lock()
- defer f.fs.mu.Unlock()
- if f.fs.open < 0 {
+func (fw *fileWrap) Close() error {
+ fw.fs.mu.Lock()
+ defer fw.fs.mu.Unlock()
+ if fw.closed {
return ErrClosed
}
- if f.open {
- return errFileOpen
- }
- err := os.Remove(f.path())
+ fw.closed = true
+ fw.fs.open--
+ err := fw.File.Close()
if err != nil {
- f.fs.log(fmt.Sprintf("remove %s.%d: %v", f.Type(), f.Num(), err))
- }
- // Also try remove file with old name, just in case.
- if f.hasOldName() {
- if e1 := os.Remove(f.oldPath()); !os.IsNotExist(e1) {
- f.fs.log(fmt.Sprintf("remove %s.%d: %v (old name)", f.Type(), f.Num(), err))
- err = e1
- }
+ fw.fs.log(fmt.Sprintf("close %s: %v", fw.fd, err))
}
return err
}
-func (f *file) hasOldName() bool {
- return f.t == TypeTable
-}
-
-func (f *file) oldName() string {
- switch f.t {
- case TypeTable:
- return fmt.Sprintf("%06d.sst", f.num)
- }
- return f.name()
-}
-
-func (f *file) oldPath() string {
- return filepath.Join(f.fs.path, f.oldName())
-}
-
-func (f *file) name() string {
- switch f.t {
+func fsGenName(fd FileDesc) string {
+ switch fd.Type {
case TypeManifest:
- return fmt.Sprintf("MANIFEST-%06d", f.num)
+ return fmt.Sprintf("MANIFEST-%06d", fd.Num)
case TypeJournal:
- return fmt.Sprintf("%06d.log", f.num)
+ return fmt.Sprintf("%06d.log", fd.Num)
case TypeTable:
- return fmt.Sprintf("%06d.ldb", f.num)
+ return fmt.Sprintf("%06d.ldb", fd.Num)
case TypeTemp:
- return fmt.Sprintf("%06d.tmp", f.num)
+ return fmt.Sprintf("%06d.tmp", fd.Num)
default:
panic("invalid file type")
}
}
-func (f *file) path() string {
- return filepath.Join(f.fs.path, f.name())
+func fsHasOldName(fd FileDesc) bool {
+ return fd.Type == TypeTable
}
-func (f *file) parse(name string) bool {
- var num uint64
+func fsGenOldName(fd FileDesc) string {
+ switch fd.Type {
+ case TypeTable:
+ return fmt.Sprintf("%06d.sst", fd.Num)
+ }
+ return fsGenName(fd)
+}
+
+func fsParseName(name string) (fd FileDesc, ok bool) {
var tail string
- _, err := fmt.Sscanf(name, "%d.%s", &num, &tail)
+ _, err := fmt.Sscanf(name, "%d.%s", &fd.Num, &tail)
if err == nil {
switch tail {
case "log":
- f.t = TypeJournal
+ fd.Type = TypeJournal
case "ldb", "sst":
- f.t = TypeTable
+ fd.Type = TypeTable
case "tmp":
- f.t = TypeTemp
+ fd.Type = TypeTemp
default:
- return false
+ return
}
- f.num = num
- return true
+ return fd, true
}
- n, _ := fmt.Sscanf(name, "MANIFEST-%d%s", &num, &tail)
+ n, _ := fmt.Sscanf(name, "MANIFEST-%d%s", &fd.Num, &tail)
if n == 1 {
- f.t = TypeManifest
- f.num = num
- return true
+ fd.Type = TypeManifest
+ return fd, true
}
+ return
+}
- return false
+func fsParseNamePtr(name string, fd *FileDesc) bool {
+ _fd, ok := fsParseName(name)
+ if fd != nil {
+ *fd = _fd
+ }
+ return ok
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_plan9.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_plan9.go
index 42940d769..bab62bfce 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_plan9.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_plan9.go
@@ -19,8 +19,21 @@ func (fl *plan9FileLock) release() error {
return fl.f.Close()
}
-func newFileLock(path string) (fl fileLock, err error) {
- f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, os.ModeExclusive|0644)
+func newFileLock(path string, readOnly bool) (fl fileLock, err error) {
+ var (
+ flag int
+ perm os.FileMode
+ )
+ if readOnly {
+ flag = os.O_RDONLY
+ } else {
+ flag = os.O_RDWR
+ perm = os.ModeExclusive
+ }
+ f, err := os.OpenFile(path, flag, perm)
+ if os.IsNotExist(err) {
+ f, err = os.OpenFile(path, flag|os.O_CREATE, perm|0644)
+ }
if err != nil {
return
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_solaris.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_solaris.go
index 102031bfd..79901ee4a 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_solaris.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_solaris.go
@@ -18,18 +18,27 @@ type unixFileLock struct {
}
func (fl *unixFileLock) release() error {
- if err := setFileLock(fl.f, false); err != nil {
+ if err := setFileLock(fl.f, false, false); err != nil {
return err
}
return fl.f.Close()
}
-func newFileLock(path string) (fl fileLock, err error) {
- f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0644)
+func newFileLock(path string, readOnly bool) (fl fileLock, err error) {
+ var flag int
+ if readOnly {
+ flag = os.O_RDONLY
+ } else {
+ flag = os.O_RDWR
+ }
+ f, err := os.OpenFile(path, flag, 0)
+ if os.IsNotExist(err) {
+ f, err = os.OpenFile(path, flag|os.O_CREATE, 0644)
+ }
if err != nil {
return
}
- err = setFileLock(f, true)
+ err = setFileLock(f, readOnly, true)
if err != nil {
f.Close()
return
@@ -38,7 +47,7 @@ func newFileLock(path string) (fl fileLock, err error) {
return
}
-func setFileLock(f *os.File, lock bool) error {
+func setFileLock(f *os.File, readOnly, lock bool) error {
flock := syscall.Flock_t{
Type: syscall.F_UNLCK,
Start: 0,
@@ -46,7 +55,11 @@ func setFileLock(f *os.File, lock bool) error {
Whence: 1,
}
if lock {
- flock.Type = syscall.F_WRLCK
+ if readOnly {
+ flock.Type = syscall.F_RDLCK
+ } else {
+ flock.Type = syscall.F_WRLCK
+ }
}
return syscall.FcntlFlock(f.Fd(), syscall.F_SETLK, &flock)
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_test.go
deleted file mode 100644
index 92abcbb7d..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_test.go
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package storage
-
-import (
- "fmt"
- "os"
- "path/filepath"
- "testing"
-)
-
-var cases = []struct {
- oldName []string
- name string
- ftype FileType
- num uint64
-}{
- {nil, "000100.log", TypeJournal, 100},
- {nil, "000000.log", TypeJournal, 0},
- {[]string{"000000.sst"}, "000000.ldb", TypeTable, 0},
- {nil, "MANIFEST-000002", TypeManifest, 2},
- {nil, "MANIFEST-000007", TypeManifest, 7},
- {nil, "18446744073709551615.log", TypeJournal, 18446744073709551615},
- {nil, "000100.tmp", TypeTemp, 100},
-}
-
-var invalidCases = []string{
- "",
- "foo",
- "foo-dx-100.log",
- ".log",
- "",
- "manifest",
- "CURREN",
- "CURRENTX",
- "MANIFES",
- "MANIFEST",
- "MANIFEST-",
- "XMANIFEST-3",
- "MANIFEST-3x",
- "LOC",
- "LOCKx",
- "LO",
- "LOGx",
- "18446744073709551616.log",
- "184467440737095516150.log",
- "100",
- "100.",
- "100.lop",
-}
-
-func TestFileStorage_CreateFileName(t *testing.T) {
- for _, c := range cases {
- f := &file{num: c.num, t: c.ftype}
- if f.name() != c.name {
- t.Errorf("invalid filename got '%s', want '%s'", f.name(), c.name)
- }
- }
-}
-
-func TestFileStorage_ParseFileName(t *testing.T) {
- for _, c := range cases {
- for _, name := range append([]string{c.name}, c.oldName...) {
- f := new(file)
- if !f.parse(name) {
- t.Errorf("cannot parse filename '%s'", name)
- continue
- }
- if f.Type() != c.ftype {
- t.Errorf("filename '%s' invalid type got '%d', want '%d'", name, f.Type(), c.ftype)
- }
- if f.Num() != c.num {
- t.Errorf("filename '%s' invalid number got '%d', want '%d'", name, f.Num(), c.num)
- }
- }
- }
-}
-
-func TestFileStorage_InvalidFileName(t *testing.T) {
- for _, name := range invalidCases {
- f := new(file)
- if f.parse(name) {
- t.Errorf("filename '%s' should be invalid", name)
- }
- }
-}
-
-func TestFileStorage_Locking(t *testing.T) {
- path := filepath.Join(os.TempDir(), fmt.Sprintf("goleveldbtestfd-%d", os.Getuid()))
-
- _, err := os.Stat(path)
- if err == nil {
- err = os.RemoveAll(path)
- if err != nil {
- t.Fatal("RemoveAll: got error: ", err)
- }
- }
-
- p1, err := OpenFile(path)
- if err != nil {
- t.Fatal("OpenFile(1): got error: ", err)
- }
-
- defer os.RemoveAll(path)
-
- p2, err := OpenFile(path)
- if err != nil {
- t.Logf("OpenFile(2): got error: %s (expected)", err)
- } else {
- p2.Close()
- p1.Close()
- t.Fatal("OpenFile(2): expect error")
- }
-
- p1.Close()
-
- p3, err := OpenFile(path)
- if err != nil {
- t.Fatal("OpenFile(3): got error: ", err)
- }
- defer p3.Close()
-
- l, err := p3.Lock()
- if err != nil {
- t.Fatal("storage lock failed(1): ", err)
- }
- _, err = p3.Lock()
- if err == nil {
- t.Fatal("expect error for second storage lock attempt")
- } else {
- t.Logf("storage lock got error: %s (expected)", err)
- }
- l.Release()
- _, err = p3.Lock()
- if err != nil {
- t.Fatal("storage lock failed(2): ", err)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_unix.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_unix.go
index d0a604b7a..7e2991537 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_unix.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_unix.go
@@ -18,18 +18,27 @@ type unixFileLock struct {
}
func (fl *unixFileLock) release() error {
- if err := setFileLock(fl.f, false); err != nil {
+ if err := setFileLock(fl.f, false, false); err != nil {
return err
}
return fl.f.Close()
}
-func newFileLock(path string) (fl fileLock, err error) {
- f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0644)
+func newFileLock(path string, readOnly bool) (fl fileLock, err error) {
+ var flag int
+ if readOnly {
+ flag = os.O_RDONLY
+ } else {
+ flag = os.O_RDWR
+ }
+ f, err := os.OpenFile(path, flag, 0)
+ if os.IsNotExist(err) {
+ f, err = os.OpenFile(path, flag|os.O_CREATE, 0644)
+ }
if err != nil {
return
}
- err = setFileLock(f, true)
+ err = setFileLock(f, readOnly, true)
if err != nil {
f.Close()
return
@@ -38,10 +47,14 @@ func newFileLock(path string) (fl fileLock, err error) {
return
}
-func setFileLock(f *os.File, lock bool) error {
+func setFileLock(f *os.File, readOnly, lock bool) error {
how := syscall.LOCK_UN
if lock {
- how = syscall.LOCK_EX
+ if readOnly {
+ how = syscall.LOCK_SH
+ } else {
+ how = syscall.LOCK_EX
+ }
}
return syscall.Flock(int(f.Fd()), how|syscall.LOCK_NB)
}
@@ -50,13 +63,23 @@ func rename(oldpath, newpath string) error {
return os.Rename(oldpath, newpath)
}
+func isErrInvalid(err error) bool {
+ if err == os.ErrInvalid {
+ return true
+ }
+ if syserr, ok := err.(*os.SyscallError); ok && syserr.Err == syscall.EINVAL {
+ return true
+ }
+ return false
+}
+
func syncDir(name string) error {
f, err := os.Open(name)
if err != nil {
return err
}
defer f.Close()
- if err := f.Sync(); err != nil {
+ if err := f.Sync(); err != nil && !isErrInvalid(err) {
return err
}
return nil
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_windows.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_windows.go
index 50c3c454e..899335fd7 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_windows.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/file_storage_windows.go
@@ -29,12 +29,22 @@ func (fl *windowsFileLock) release() error {
return syscall.Close(fl.fd)
}
-func newFileLock(path string) (fl fileLock, err error) {
+func newFileLock(path string, readOnly bool) (fl fileLock, err error) {
pathp, err := syscall.UTF16PtrFromString(path)
if err != nil {
return
}
- fd, err := syscall.CreateFile(pathp, syscall.GENERIC_READ|syscall.GENERIC_WRITE, 0, nil, syscall.CREATE_ALWAYS, syscall.FILE_ATTRIBUTE_NORMAL, 0)
+ var access, shareMode uint32
+ if readOnly {
+ access = syscall.GENERIC_READ
+ shareMode = syscall.FILE_SHARE_READ
+ } else {
+ access = syscall.GENERIC_READ | syscall.GENERIC_WRITE
+ }
+ fd, err := syscall.CreateFile(pathp, access, shareMode, nil, syscall.OPEN_EXISTING, syscall.FILE_ATTRIBUTE_NORMAL, 0)
+ if err == syscall.ERROR_FILE_NOT_FOUND {
+ fd, err = syscall.CreateFile(pathp, access, shareMode, nil, syscall.OPEN_ALWAYS, syscall.FILE_ATTRIBUTE_NORMAL, 0)
+ }
if err != nil {
return
}
@@ -47,9 +57,8 @@ func moveFileEx(from *uint16, to *uint16, flags uint32) error {
if r1 == 0 {
if e1 != 0 {
return error(e1)
- } else {
- return syscall.EINVAL
}
+ return syscall.EINVAL
}
return nil
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage.go
index fc1c8165d..9b70e1513 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage.go
@@ -10,8 +10,6 @@ import (
"bytes"
"os"
"sync"
-
- "github.com/syndtr/goleveldb/leveldb/util"
)
const typeShift = 3
@@ -32,10 +30,10 @@ func (lock *memStorageLock) Release() {
// memStorage is a memory-backed storage.
type memStorage struct {
- mu sync.Mutex
- slock *memStorageLock
- files map[uint64]*memFile
- manifest *memFilePtr
+ mu sync.Mutex
+ slock *memStorageLock
+ files map[uint64]*memFile
+ meta FileDesc
}
// NewMemStorage returns a new memory-backed storage implementation.
@@ -45,7 +43,7 @@ func NewMemStorage() Storage {
}
}
-func (ms *memStorage) Lock() (util.Releaser, error) {
+func (ms *memStorage) Lock() (Lock, error) {
ms.mu.Lock()
defer ms.mu.Unlock()
if ms.slock != nil {
@@ -57,147 +55,164 @@ func (ms *memStorage) Lock() (util.Releaser, error) {
func (*memStorage) Log(str string) {}
-func (ms *memStorage) GetFile(num uint64, t FileType) File {
- return &memFilePtr{ms: ms, num: num, t: t}
-}
+func (ms *memStorage) SetMeta(fd FileDesc) error {
+ if !FileDescOk(fd) {
+ return ErrInvalidFile
+ }
-func (ms *memStorage) GetFiles(t FileType) ([]File, error) {
ms.mu.Lock()
- var ff []File
- for x, _ := range ms.files {
- num, mt := x>>typeShift, FileType(x)&TypeAll
- if mt&t == 0 {
- continue
- }
- ff = append(ff, &memFilePtr{ms: ms, num: num, t: mt})
- }
+ ms.meta = fd
ms.mu.Unlock()
- return ff, nil
+ return nil
}
-func (ms *memStorage) GetManifest() (File, error) {
+func (ms *memStorage) GetMeta() (FileDesc, error) {
ms.mu.Lock()
defer ms.mu.Unlock()
- if ms.manifest == nil {
- return nil, os.ErrNotExist
+ if ms.meta.Nil() {
+ return FileDesc{}, os.ErrNotExist
}
- return ms.manifest, nil
+ return ms.meta, nil
}
-func (ms *memStorage) SetManifest(f File) error {
- fm, ok := f.(*memFilePtr)
- if !ok || fm.t != TypeManifest {
- return ErrInvalidFile
- }
+func (ms *memStorage) List(ft FileType) ([]FileDesc, error) {
ms.mu.Lock()
- ms.manifest = fm
+ var fds []FileDesc
+ for x, _ := range ms.files {
+ fd := unpackFile(x)
+ if fd.Type&ft != 0 {
+ fds = append(fds, fd)
+ }
+ }
ms.mu.Unlock()
- return nil
+ return fds, nil
}
-func (*memStorage) Close() error { return nil }
-
-type memReader struct {
- *bytes.Reader
- m *memFile
-}
-
-func (mr *memReader) Close() error {
- return mr.m.Close()
-}
-
-type memFile struct {
- bytes.Buffer
- ms *memStorage
- open bool
-}
-
-func (*memFile) Sync() error { return nil }
-func (m *memFile) Close() error {
- m.ms.mu.Lock()
- m.open = false
- m.ms.mu.Unlock()
- return nil
-}
-
-type memFilePtr struct {
- ms *memStorage
- num uint64
- t FileType
-}
-
-func (p *memFilePtr) x() uint64 {
- return p.Num()<<typeShift | uint64(p.Type())
-}
+func (ms *memStorage) Open(fd FileDesc) (Reader, error) {
+ if !FileDescOk(fd) {
+ return nil, ErrInvalidFile
+ }
-func (p *memFilePtr) Open() (Reader, error) {
- ms := p.ms
ms.mu.Lock()
defer ms.mu.Unlock()
- if m, exist := ms.files[p.x()]; exist {
+ if m, exist := ms.files[packFile(fd)]; exist {
if m.open {
return nil, errFileOpen
}
m.open = true
- return &memReader{Reader: bytes.NewReader(m.Bytes()), m: m}, nil
+ return &memReader{Reader: bytes.NewReader(m.Bytes()), ms: ms, m: m}, nil
}
return nil, os.ErrNotExist
}
-func (p *memFilePtr) Create() (Writer, error) {
- ms := p.ms
+func (ms *memStorage) Create(fd FileDesc) (Writer, error) {
+ if !FileDescOk(fd) {
+ return nil, ErrInvalidFile
+ }
+
+ x := packFile(fd)
ms.mu.Lock()
defer ms.mu.Unlock()
- m, exist := ms.files[p.x()]
+ m, exist := ms.files[x]
if exist {
if m.open {
return nil, errFileOpen
}
m.Reset()
} else {
- m = &memFile{ms: ms}
- ms.files[p.x()] = m
+ m = &memFile{}
+ ms.files[x] = m
}
m.open = true
- return m, nil
+ return &memWriter{memFile: m, ms: ms}, nil
}
-func (p *memFilePtr) Replace(newfile File) error {
- p1, ok := newfile.(*memFilePtr)
- if !ok {
+func (ms *memStorage) Remove(fd FileDesc) error {
+ if !FileDescOk(fd) {
return ErrInvalidFile
}
- ms := p.ms
+
+ x := packFile(fd)
ms.mu.Lock()
defer ms.mu.Unlock()
- m1, exist := ms.files[p1.x()]
+ if _, exist := ms.files[x]; exist {
+ delete(ms.files, x)
+ return nil
+ }
+ return os.ErrNotExist
+}
+
+func (ms *memStorage) Rename(oldfd, newfd FileDesc) error {
+ if FileDescOk(oldfd) || FileDescOk(newfd) {
+ return ErrInvalidFile
+ }
+ if oldfd == newfd {
+ return nil
+ }
+
+ oldx := packFile(oldfd)
+ newx := packFile(newfd)
+ ms.mu.Lock()
+ defer ms.mu.Unlock()
+ oldm, exist := ms.files[oldx]
if !exist {
return os.ErrNotExist
}
- m0, exist := ms.files[p.x()]
- if (exist && m0.open) || m1.open {
+ newm, exist := ms.files[newx]
+ if (exist && newm.open) || oldm.open {
return errFileOpen
}
- delete(ms.files, p1.x())
- ms.files[p.x()] = m1
+ delete(ms.files, oldx)
+ ms.files[newx] = oldm
return nil
}
-func (p *memFilePtr) Type() FileType {
- return p.t
+func (*memStorage) Close() error { return nil }
+
+type memFile struct {
+ bytes.Buffer
+ open bool
}
-func (p *memFilePtr) Num() uint64 {
- return p.num
+type memReader struct {
+ *bytes.Reader
+ ms *memStorage
+ m *memFile
+ closed bool
}
-func (p *memFilePtr) Remove() error {
- ms := p.ms
- ms.mu.Lock()
- defer ms.mu.Unlock()
- if _, exist := ms.files[p.x()]; exist {
- delete(ms.files, p.x())
- return nil
+func (mr *memReader) Close() error {
+ mr.ms.mu.Lock()
+ defer mr.ms.mu.Unlock()
+ if mr.closed {
+ return ErrClosed
}
- return os.ErrNotExist
+ mr.m.open = false
+ return nil
+}
+
+type memWriter struct {
+ *memFile
+ ms *memStorage
+ closed bool
+}
+
+func (*memWriter) Sync() error { return nil }
+
+func (mw *memWriter) Close() error {
+ mw.ms.mu.Lock()
+ defer mw.ms.mu.Unlock()
+ if mw.closed {
+ return ErrClosed
+ }
+ mw.memFile.open = false
+ return nil
+}
+
+func packFile(fd FileDesc) uint64 {
+ return uint64(fd.Num)<<typeShift | uint64(fd.Type)
+}
+
+func unpackFile(x uint64) FileDesc {
+ return FileDesc{FileType(x) & TypeAll, int64(x >> typeShift)}
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage_test.go
deleted file mode 100644
index 23bb074b4..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/mem_storage_test.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2013, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package storage
-
-import (
- "bytes"
- "testing"
-)
-
-func TestMemStorage(t *testing.T) {
- m := NewMemStorage()
-
- l, err := m.Lock()
- if err != nil {
- t.Fatal("storage lock failed(1): ", err)
- }
- _, err = m.Lock()
- if err == nil {
- t.Fatal("expect error for second storage lock attempt")
- } else {
- t.Logf("storage lock got error: %s (expected)", err)
- }
- l.Release()
- _, err = m.Lock()
- if err != nil {
- t.Fatal("storage lock failed(2): ", err)
- }
-
- f := m.GetFile(1, TypeTable)
- if f.Num() != 1 && f.Type() != TypeTable {
- t.Fatal("invalid file number and type")
- }
- w, _ := f.Create()
- w.Write([]byte("abc"))
- w.Close()
- if ff, _ := m.GetFiles(TypeAll); len(ff) != 1 {
- t.Fatal("invalid GetFiles len")
- }
- buf := new(bytes.Buffer)
- r, err := f.Open()
- if err != nil {
- t.Fatal("Open: got error: ", err)
- }
- buf.ReadFrom(r)
- r.Close()
- if got := buf.String(); got != "abc" {
- t.Fatalf("Read: invalid value, want=abc got=%s", got)
- }
- if _, err := f.Open(); err != nil {
- t.Fatal("Open: got error: ", err)
- }
- if _, err := m.GetFile(1, TypeTable).Open(); err == nil {
- t.Fatal("expecting error")
- }
- f.Remove()
- if ff, _ := m.GetFiles(TypeAll); len(ff) != 0 {
- t.Fatal("invalid GetFiles len", len(ff))
- }
- if _, err := f.Open(); err == nil {
- t.Fatal("expecting error")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/storage.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/storage.go
index 85dd70b06..9b30b6727 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/storage.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage/storage.go
@@ -15,7 +15,7 @@ import (
"github.com/syndtr/goleveldb/leveldb/util"
)
-type FileType uint32
+type FileType int
const (
TypeManifest FileType = 1 << iota
@@ -46,6 +46,22 @@ var (
ErrClosed = errors.New("leveldb/storage: closed")
)
+// ErrCorrupted is the type that wraps errors that indicate corruption of
+// a file. Package storage has its own type instead of using
+// errors.ErrCorrupted to prevent circular import.
+type ErrCorrupted struct {
+ Fd FileDesc
+ Err error
+}
+
+func (e *ErrCorrupted) Error() string {
+ if !e.Fd.Nil() {
+ return fmt.Sprintf("%v [file=%v]", e.Err, e.Fd)
+ } else {
+ return e.Err.Error()
+ }
+}
+
// Syncer is the interface that wraps basic Sync method.
type Syncer interface {
// Sync commits the current contents of the file to stable storage.
@@ -67,31 +83,47 @@ type Writer interface {
Syncer
}
-// File is the file. A file instance must be goroutine-safe.
-type File interface {
- // Open opens the file for read. Returns os.ErrNotExist error
- // if the file does not exist.
- // Returns ErrClosed if the underlying storage is closed.
- Open() (r Reader, err error)
-
- // Create creates the file for writting. Truncate the file if
- // already exist.
- // Returns ErrClosed if the underlying storage is closed.
- Create() (w Writer, err error)
+type Lock interface {
+ util.Releaser
+}
- // Replace replaces file with newfile.
- // Returns ErrClosed if the underlying storage is closed.
- Replace(newfile File) error
+// FileDesc is a file descriptor.
+type FileDesc struct {
+ Type FileType
+ Num int64
+}
- // Type returns the file type
- Type() FileType
+func (fd FileDesc) String() string {
+ switch fd.Type {
+ case TypeManifest:
+ return fmt.Sprintf("MANIFEST-%06d", fd.Num)
+ case TypeJournal:
+ return fmt.Sprintf("%06d.log", fd.Num)
+ case TypeTable:
+ return fmt.Sprintf("%06d.ldb", fd.Num)
+ case TypeTemp:
+ return fmt.Sprintf("%06d.tmp", fd.Num)
+ default:
+ return fmt.Sprintf("%#x-%d", fd.Type, fd.Num)
+ }
+}
- // Num returns the file number.
- Num() uint64
+// Nil returns true if fd == (FileDesc{}).
+func (fd FileDesc) Nil() bool {
+ return fd == (FileDesc{})
+}
- // Remove removes the file.
- // Returns ErrClosed if the underlying storage is closed.
- Remove() error
+// FileDescOk returns true if fd is a valid file descriptor.
+func FileDescOk(fd FileDesc) bool {
+ switch fd.Type {
+ case TypeManifest:
+ case TypeJournal:
+ case TypeTable:
+ case TypeTemp:
+ default:
+ return false
+ }
+ return fd.Num >= 0
}
// Storage is the storage. A storage instance must be goroutine-safe.
@@ -99,59 +131,47 @@ type Storage interface {
// Lock locks the storage. Any subsequent attempt to call Lock will fail
// until the last lock released.
// After use the caller should call the Release method.
- Lock() (l util.Releaser, err error)
+ Lock() (Lock, error)
- // Log logs a string. This is used for logging. An implementation
- // may write to a file, stdout or simply do nothing.
+ // Log logs a string. This is used for logging.
+ // An implementation may write to a file, stdout or simply do nothing.
Log(str string)
- // GetFile returns a file for the given number and type. GetFile will never
- // returns nil, even if the underlying storage is closed.
- GetFile(num uint64, t FileType) File
+ // SetMeta sets to point to the given fd, which then can be acquired using
+ // GetMeta method.
+ // SetMeta should be implemented in such way that changes should happened
+ // atomically.
+ SetMeta(fd FileDesc) error
- // GetFiles returns a slice of files that match the given file types.
- // The file types may be OR'ed together.
- GetFiles(t FileType) ([]File, error)
+ // GetManifest returns a manifest file.
+ // Returns os.ErrNotExist if meta doesn't point to any fd, or point to fd
+ // that doesn't exist.
+ GetMeta() (FileDesc, error)
- // GetManifest returns a manifest file. Returns os.ErrNotExist if manifest
- // file does not exist.
- GetManifest() (File, error)
+ // List returns fds that match the given file types.
+ // The file types may be OR'ed together.
+ List(ft FileType) ([]FileDesc, error)
- // SetManifest sets the given file as manifest file. The given file should
- // be a manifest file type or error will be returned.
- SetManifest(f File) error
+ // Open opens file with the given fd read-only.
+ // Returns os.ErrNotExist error if the file does not exist.
+ // Returns ErrClosed if the underlying storage is closed.
+ Open(fd FileDesc) (Reader, error)
- // Close closes the storage. It is valid to call Close multiple times.
- // Other methods should not be called after the storage has been closed.
- Close() error
-}
+ // Create creates file with the given fd, truncate if already exist and
+ // opens write-only.
+ // Returns ErrClosed if the underlying storage is closed.
+ Create(fd FileDesc) (Writer, error)
-// FileInfo wraps basic file info.
-type FileInfo struct {
- Type FileType
- Num uint64
-}
+ // Remove removes file with the given fd.
+ // Returns ErrClosed if the underlying storage is closed.
+ Remove(fd FileDesc) error
-func (fi FileInfo) String() string {
- switch fi.Type {
- case TypeManifest:
- return fmt.Sprintf("MANIFEST-%06d", fi.Num)
- case TypeJournal:
- return fmt.Sprintf("%06d.log", fi.Num)
- case TypeTable:
- return fmt.Sprintf("%06d.ldb", fi.Num)
- case TypeTemp:
- return fmt.Sprintf("%06d.tmp", fi.Num)
- default:
- return fmt.Sprintf("%#x-%d", fi.Type, fi.Num)
- }
-}
+ // Rename renames file from oldfd to newfd.
+ // Returns ErrClosed if the underlying storage is closed.
+ Rename(oldfd, newfd FileDesc) error
-// NewFileInfo creates new FileInfo from the given File. It will returns nil
-// if File is nil.
-func NewFileInfo(f File) *FileInfo {
- if f == nil {
- return nil
- }
- return &FileInfo{f.Type(), f.Num()}
+ // Close closes the storage.
+ // It is valid to call Close multiple times. Other methods should not be
+ // called after the storage has been closed.
+ Close() error
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage_test.go
deleted file mode 100644
index dc1f1fb54..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/storage_test.go
+++ /dev/null
@@ -1,539 +0,0 @@
-// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENE file.
-
-package leveldb
-
-import (
- "errors"
- "fmt"
- "io"
- "io/ioutil"
- "math/rand"
- "os"
- "path/filepath"
- "sync"
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/storage"
- "github.com/syndtr/goleveldb/leveldb/util"
-)
-
-const typeShift = 4
-
-var (
- tsErrInvalidFile = errors.New("leveldb.testStorage: invalid file for argument")
- tsErrFileOpen = errors.New("leveldb.testStorage: file still open")
-)
-
-var (
- tsFSEnv = os.Getenv("GOLEVELDB_USEFS")
- tsTempdir = os.Getenv("GOLEVELDB_TEMPDIR")
- tsKeepFS = tsFSEnv == "2"
- tsFS = tsKeepFS || tsFSEnv == "" || tsFSEnv == "1"
- tsMU = &sync.Mutex{}
- tsNum = 0
-)
-
-type tsOp uint
-
-const (
- tsOpOpen tsOp = iota
- tsOpCreate
- tsOpRead
- tsOpReadAt
- tsOpWrite
- tsOpSync
-
- tsOpNum
-)
-
-type tsLock struct {
- ts *testStorage
- r util.Releaser
-}
-
-func (l tsLock) Release() {
- l.r.Release()
- l.ts.t.Log("I: storage lock released")
-}
-
-type tsReader struct {
- tf tsFile
- storage.Reader
-}
-
-func (tr tsReader) Read(b []byte) (n int, err error) {
- ts := tr.tf.ts
- ts.countRead(tr.tf.Type())
- if tr.tf.shouldErrLocked(tsOpRead) {
- return 0, errors.New("leveldb.testStorage: emulated read error")
- }
- n, err = tr.Reader.Read(b)
- if err != nil && err != io.EOF {
- ts.t.Errorf("E: read error, num=%d type=%v n=%d: %v", tr.tf.Num(), tr.tf.Type(), n, err)
- }
- return
-}
-
-func (tr tsReader) ReadAt(b []byte, off int64) (n int, err error) {
- ts := tr.tf.ts
- ts.countRead(tr.tf.Type())
- if tr.tf.shouldErrLocked(tsOpReadAt) {
- return 0, errors.New("leveldb.testStorage: emulated readAt error")
- }
- n, err = tr.Reader.ReadAt(b, off)
- if err != nil && err != io.EOF {
- ts.t.Errorf("E: readAt error, num=%d type=%v off=%d n=%d: %v", tr.tf.Num(), tr.tf.Type(), off, n, err)
- }
- return
-}
-
-func (tr tsReader) Close() (err error) {
- err = tr.Reader.Close()
- tr.tf.close("reader", err)
- return
-}
-
-type tsWriter struct {
- tf tsFile
- storage.Writer
-}
-
-func (tw tsWriter) Write(b []byte) (n int, err error) {
- if tw.tf.shouldErrLocked(tsOpWrite) {
- return 0, errors.New("leveldb.testStorage: emulated write error")
- }
- n, err = tw.Writer.Write(b)
- if err != nil {
- tw.tf.ts.t.Errorf("E: write error, num=%d type=%v n=%d: %v", tw.tf.Num(), tw.tf.Type(), n, err)
- }
- return
-}
-
-func (tw tsWriter) Sync() (err error) {
- ts := tw.tf.ts
- ts.mu.Lock()
- for ts.emuDelaySync&tw.tf.Type() != 0 {
- ts.cond.Wait()
- }
- ts.mu.Unlock()
- if tw.tf.shouldErrLocked(tsOpSync) {
- return errors.New("leveldb.testStorage: emulated sync error")
- }
- err = tw.Writer.Sync()
- if err != nil {
- tw.tf.ts.t.Errorf("E: sync error, num=%d type=%v: %v", tw.tf.Num(), tw.tf.Type(), err)
- }
- return
-}
-
-func (tw tsWriter) Close() (err error) {
- err = tw.Writer.Close()
- tw.tf.close("writer", err)
- return
-}
-
-type tsFile struct {
- ts *testStorage
- storage.File
-}
-
-func (tf tsFile) x() uint64 {
- return tf.Num()<<typeShift | uint64(tf.Type())
-}
-
-func (tf tsFile) shouldErr(op tsOp) bool {
- return tf.ts.shouldErr(tf, op)
-}
-
-func (tf tsFile) shouldErrLocked(op tsOp) bool {
- tf.ts.mu.Lock()
- defer tf.ts.mu.Unlock()
- return tf.shouldErr(op)
-}
-
-func (tf tsFile) checkOpen(m string) error {
- ts := tf.ts
- if writer, ok := ts.opens[tf.x()]; ok {
- if writer {
- ts.t.Errorf("E: cannot %s file, num=%d type=%v: a writer still open", m, tf.Num(), tf.Type())
- } else {
- ts.t.Errorf("E: cannot %s file, num=%d type=%v: a reader still open", m, tf.Num(), tf.Type())
- }
- return tsErrFileOpen
- }
- return nil
-}
-
-func (tf tsFile) close(m string, err error) {
- ts := tf.ts
- ts.mu.Lock()
- defer ts.mu.Unlock()
- if _, ok := ts.opens[tf.x()]; !ok {
- ts.t.Errorf("E: %s: redudant file closing, num=%d type=%v", m, tf.Num(), tf.Type())
- } else if err == nil {
- ts.t.Logf("I: %s: file closed, num=%d type=%v", m, tf.Num(), tf.Type())
- }
- delete(ts.opens, tf.x())
- if err != nil {
- ts.t.Errorf("E: %s: cannot close file, num=%d type=%v: %v", m, tf.Num(), tf.Type(), err)
- }
-}
-
-func (tf tsFile) Open() (r storage.Reader, err error) {
- ts := tf.ts
- ts.mu.Lock()
- defer ts.mu.Unlock()
- err = tf.checkOpen("open")
- if err != nil {
- return
- }
- if tf.shouldErr(tsOpOpen) {
- err = errors.New("leveldb.testStorage: emulated open error")
- return
- }
- r, err = tf.File.Open()
- if err != nil {
- if ts.ignoreOpenErr&tf.Type() != 0 {
- ts.t.Logf("I: cannot open file, num=%d type=%v: %v (ignored)", tf.Num(), tf.Type(), err)
- } else {
- ts.t.Errorf("E: cannot open file, num=%d type=%v: %v", tf.Num(), tf.Type(), err)
- }
- } else {
- ts.t.Logf("I: file opened, num=%d type=%v", tf.Num(), tf.Type())
- ts.opens[tf.x()] = false
- r = tsReader{tf, r}
- }
- return
-}
-
-func (tf tsFile) Create() (w storage.Writer, err error) {
- ts := tf.ts
- ts.mu.Lock()
- defer ts.mu.Unlock()
- err = tf.checkOpen("create")
- if err != nil {
- return
- }
- if tf.shouldErr(tsOpCreate) {
- err = errors.New("leveldb.testStorage: emulated create error")
- return
- }
- w, err = tf.File.Create()
- if err != nil {
- ts.t.Errorf("E: cannot create file, num=%d type=%v: %v", tf.Num(), tf.Type(), err)
- } else {
- ts.t.Logf("I: file created, num=%d type=%v", tf.Num(), tf.Type())
- ts.opens[tf.x()] = true
- w = tsWriter{tf, w}
- }
- return
-}
-
-func (tf tsFile) Replace(newfile storage.File) (err error) {
- ts := tf.ts
- ts.mu.Lock()
- defer ts.mu.Unlock()
- err = tf.checkOpen("replace")
- if err != nil {
- return
- }
- err = tf.File.Replace(newfile.(tsFile).File)
- if err != nil {
- ts.t.Errorf("E: cannot replace file, num=%d type=%v: %v", tf.Num(), tf.Type(), err)
- } else {
- ts.t.Logf("I: file replace, num=%d type=%v", tf.Num(), tf.Type())
- }
- return
-}
-
-func (tf tsFile) Remove() (err error) {
- ts := tf.ts
- ts.mu.Lock()
- defer ts.mu.Unlock()
- err = tf.checkOpen("remove")
- if err != nil {
- return
- }
- err = tf.File.Remove()
- if err != nil {
- ts.t.Errorf("E: cannot remove file, num=%d type=%v: %v", tf.Num(), tf.Type(), err)
- } else {
- ts.t.Logf("I: file removed, num=%d type=%v", tf.Num(), tf.Type())
- }
- return
-}
-
-type testStorage struct {
- t *testing.T
- storage.Storage
- closeFn func() error
-
- mu sync.Mutex
- cond sync.Cond
- // Open files, true=writer, false=reader
- opens map[uint64]bool
- emuDelaySync storage.FileType
- ignoreOpenErr storage.FileType
- readCnt uint64
- readCntEn storage.FileType
-
- emuErr [tsOpNum]storage.FileType
- emuErrOnce [tsOpNum]storage.FileType
- emuRandErr [tsOpNum]storage.FileType
- emuRandErrProb int
- emuErrOnceMap map[uint64]uint
- emuRandRand *rand.Rand
-}
-
-func (ts *testStorage) shouldErr(tf tsFile, op tsOp) bool {
- if ts.emuErr[op]&tf.Type() != 0 {
- return true
- } else if ts.emuRandErr[op]&tf.Type() != 0 || ts.emuErrOnce[op]&tf.Type() != 0 {
- sop := uint(1) << op
- eop := ts.emuErrOnceMap[tf.x()]
- if eop&sop == 0 && (ts.emuRandRand.Int()%ts.emuRandErrProb == 0 || ts.emuErrOnce[op]&tf.Type() != 0) {
- ts.emuErrOnceMap[tf.x()] = eop | sop
- ts.t.Logf("I: emulated error: file=%d type=%v op=%v", tf.Num(), tf.Type(), op)
- return true
- }
- }
- return false
-}
-
-func (ts *testStorage) SetEmuErr(t storage.FileType, ops ...tsOp) {
- ts.mu.Lock()
- for _, op := range ops {
- ts.emuErr[op] = t
- }
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) SetEmuErrOnce(t storage.FileType, ops ...tsOp) {
- ts.mu.Lock()
- for _, op := range ops {
- ts.emuErrOnce[op] = t
- }
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) SetEmuRandErr(t storage.FileType, ops ...tsOp) {
- ts.mu.Lock()
- for _, op := range ops {
- ts.emuRandErr[op] = t
- }
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) SetEmuRandErrProb(prob int) {
- ts.mu.Lock()
- ts.emuRandErrProb = prob
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) DelaySync(t storage.FileType) {
- ts.mu.Lock()
- ts.emuDelaySync |= t
- ts.cond.Broadcast()
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) ReleaseSync(t storage.FileType) {
- ts.mu.Lock()
- ts.emuDelaySync &= ^t
- ts.cond.Broadcast()
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) ReadCounter() uint64 {
- ts.mu.Lock()
- defer ts.mu.Unlock()
- return ts.readCnt
-}
-
-func (ts *testStorage) ResetReadCounter() {
- ts.mu.Lock()
- ts.readCnt = 0
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) SetReadCounter(t storage.FileType) {
- ts.mu.Lock()
- ts.readCntEn = t
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) countRead(t storage.FileType) {
- ts.mu.Lock()
- if ts.readCntEn&t != 0 {
- ts.readCnt++
- }
- ts.mu.Unlock()
-}
-
-func (ts *testStorage) SetIgnoreOpenErr(t storage.FileType) {
- ts.ignoreOpenErr = t
-}
-
-func (ts *testStorage) Lock() (r util.Releaser, err error) {
- r, err = ts.Storage.Lock()
- if err != nil {
- ts.t.Logf("W: storage locking failed: %v", err)
- } else {
- ts.t.Log("I: storage locked")
- r = tsLock{ts, r}
- }
- return
-}
-
-func (ts *testStorage) Log(str string) {
- ts.t.Log("L: " + str)
- ts.Storage.Log(str)
-}
-
-func (ts *testStorage) GetFile(num uint64, t storage.FileType) storage.File {
- return tsFile{ts, ts.Storage.GetFile(num, t)}
-}
-
-func (ts *testStorage) GetFiles(t storage.FileType) (ff []storage.File, err error) {
- ff0, err := ts.Storage.GetFiles(t)
- if err != nil {
- ts.t.Errorf("E: get files failed: %v", err)
- return
- }
- ff = make([]storage.File, len(ff0))
- for i, f := range ff0 {
- ff[i] = tsFile{ts, f}
- }
- ts.t.Logf("I: get files, type=0x%x count=%d", int(t), len(ff))
- return
-}
-
-func (ts *testStorage) GetManifest() (f storage.File, err error) {
- f0, err := ts.Storage.GetManifest()
- if err != nil {
- if !os.IsNotExist(err) {
- ts.t.Errorf("E: get manifest failed: %v", err)
- }
- return
- }
- f = tsFile{ts, f0}
- ts.t.Logf("I: get manifest, num=%d", f.Num())
- return
-}
-
-func (ts *testStorage) SetManifest(f storage.File) error {
- tf, ok := f.(tsFile)
- if !ok {
- ts.t.Error("E: set manifest failed: type assertion failed")
- return tsErrInvalidFile
- } else if tf.Type() != storage.TypeManifest {
- ts.t.Errorf("E: set manifest failed: invalid file type: %s", tf.Type())
- return tsErrInvalidFile
- }
- err := ts.Storage.SetManifest(tf.File)
- if err != nil {
- ts.t.Errorf("E: set manifest failed: %v", err)
- } else {
- ts.t.Logf("I: set manifest, num=%d", tf.Num())
- }
- return err
-}
-
-func (ts *testStorage) Close() error {
- ts.CloseCheck()
- err := ts.Storage.Close()
- if err != nil {
- ts.t.Errorf("E: closing storage failed: %v", err)
- } else {
- ts.t.Log("I: storage closed")
- }
- if ts.closeFn != nil {
- if err := ts.closeFn(); err != nil {
- ts.t.Errorf("E: close function: %v", err)
- }
- }
- return err
-}
-
-func (ts *testStorage) CloseCheck() {
- ts.mu.Lock()
- if len(ts.opens) == 0 {
- ts.t.Log("I: all files are closed")
- } else {
- ts.t.Errorf("E: %d files still open", len(ts.opens))
- for x, writer := range ts.opens {
- num, tt := x>>typeShift, storage.FileType(x)&storage.TypeAll
- ts.t.Errorf("E: * num=%d type=%v writer=%v", num, tt, writer)
- }
- }
- ts.mu.Unlock()
-}
-
-func newTestStorage(t *testing.T) *testStorage {
- var stor storage.Storage
- var closeFn func() error
- if tsFS {
- for {
- tsMU.Lock()
- num := tsNum
- tsNum++
- tsMU.Unlock()
- tempdir := tsTempdir
- if tempdir == "" {
- tempdir = os.TempDir()
- }
- path := filepath.Join(tempdir, fmt.Sprintf("goleveldb-test%d0%d0%d", os.Getuid(), os.Getpid(), num))
- if _, err := os.Stat(path); err != nil {
- stor, err = storage.OpenFile(path)
- if err != nil {
- t.Fatalf("F: cannot create storage: %v", err)
- }
- t.Logf("I: storage created: %s", path)
- closeFn = func() error {
- for _, name := range []string{"LOG.old", "LOG"} {
- f, err := os.Open(filepath.Join(path, name))
- if err != nil {
- continue
- }
- if log, err := ioutil.ReadAll(f); err != nil {
- t.Logf("---------------------- %s ----------------------", name)
- t.Logf("cannot read log: %v", err)
- t.Logf("---------------------- %s ----------------------", name)
- } else if len(log) > 0 {
- t.Logf("---------------------- %s ----------------------\n%s", name, string(log))
- t.Logf("---------------------- %s ----------------------", name)
- }
- f.Close()
- }
- if t.Failed() {
- t.Logf("testing failed, test DB preserved at %s", path)
- return nil
- }
- if tsKeepFS {
- return nil
- }
- return os.RemoveAll(path)
- }
-
- break
- }
- }
- } else {
- stor = storage.NewMemStorage()
- }
- ts := &testStorage{
- t: t,
- Storage: stor,
- closeFn: closeFn,
- opens: make(map[uint64]bool),
- emuErrOnceMap: make(map[uint64]uint),
- emuRandErrProb: 0x999,
- emuRandRand: rand.New(rand.NewSource(0xfacedead)),
- }
- ts.cond.L = &ts.mu
- return ts
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table.go
index 3e8df6af5..7030b22ef 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table.go
@@ -21,9 +21,9 @@ import (
// tFile holds basic information about a table.
type tFile struct {
- file storage.File
+ fd storage.FileDesc
seekLeft int32
- size uint64
+ size int64
imin, imax iKey
}
@@ -48,9 +48,9 @@ func (t *tFile) consumeSeek() int32 {
}
// Creates new tFile.
-func newTableFile(file storage.File, size uint64, imin, imax iKey) *tFile {
+func newTableFile(fd storage.FileDesc, size int64, imin, imax iKey) *tFile {
f := &tFile{
- file: file,
+ fd: fd,
size: size,
imin: imin,
imax: imax,
@@ -77,6 +77,10 @@ func newTableFile(file storage.File, size uint64, imin, imax iKey) *tFile {
return f
}
+func tableFileFromRecord(r atRecord) *tFile {
+ return newTableFile(storage.FileDesc{storage.TypeTable, r.num}, r.size, r.imin, r.imax)
+}
+
// tFiles hold multiple tFile.
type tFiles []*tFile
@@ -89,7 +93,7 @@ func (tf tFiles) nums() string {
if i != 0 {
x += ", "
}
- x += fmt.Sprint(f.file.Num())
+ x += fmt.Sprint(f.fd.Num)
}
x += " ]"
return x
@@ -101,7 +105,7 @@ func (tf tFiles) lessByKey(icmp *iComparer, i, j int) bool {
a, b := tf[i], tf[j]
n := icmp.Compare(a.imin, b.imin)
if n == 0 {
- return a.file.Num() < b.file.Num()
+ return a.fd.Num < b.fd.Num
}
return n < 0
}
@@ -109,7 +113,7 @@ func (tf tFiles) lessByKey(icmp *iComparer, i, j int) bool {
// Returns true if i file number is greater than j.
// This used for sort by file number in descending order.
func (tf tFiles) lessByNum(i, j int) bool {
- return tf[i].file.Num() > tf[j].file.Num()
+ return tf[i].fd.Num > tf[j].fd.Num
}
// Sorts tables by key in ascending order.
@@ -123,7 +127,7 @@ func (tf tFiles) sortByNum() {
}
// Returns sum of all tables size.
-func (tf tFiles) size() (sum uint64) {
+func (tf tFiles) size() (sum int64) {
for _, t := range tf {
sum += t.size
}
@@ -162,7 +166,7 @@ func (tf tFiles) overlaps(icmp *iComparer, umin, umax []byte, unsorted bool) boo
i := 0
if len(umin) > 0 {
// Find the earliest possible internal key for min.
- i = tf.searchMax(icmp, newIkey(umin, kMaxSeq, ktSeek))
+ i = tf.searchMax(icmp, makeIkey(nil, umin, kMaxSeq, ktSeek))
}
if i >= len(tf) {
// Beginning of range is after all files, so no overlap.
@@ -287,6 +291,7 @@ func (x *tFilesSortByNum) Less(i, j int) bool {
// Table operations.
type tOps struct {
s *session
+ noSync bool
cache *cache.Cache
bcache *cache.Cache
bpool *util.BufferPool
@@ -294,16 +299,16 @@ type tOps struct {
// Creates an empty table and returns table writer.
func (t *tOps) create() (*tWriter, error) {
- file := t.s.getTableFile(t.s.allocFileNum())
- fw, err := file.Create()
+ fd := storage.FileDesc{storage.TypeTable, t.s.allocFileNum()}
+ fw, err := t.s.stor.Create(fd)
if err != nil {
return nil, err
}
return &tWriter{
- t: t,
- file: file,
- w: fw,
- tw: table.NewWriter(fw, t.s.o.Options),
+ t: t,
+ fd: fd,
+ w: fw,
+ tw: table.NewWriter(fw, t.s.o.Options),
}, nil
}
@@ -339,21 +344,20 @@ func (t *tOps) createFrom(src iterator.Iterator) (f *tFile, n int, err error) {
// Opens table. It returns a cache handle, which should
// be released after use.
func (t *tOps) open(f *tFile) (ch *cache.Handle, err error) {
- num := f.file.Num()
- ch = t.cache.Get(0, num, func() (size int, value cache.Value) {
+ ch = t.cache.Get(0, uint64(f.fd.Num), func() (size int, value cache.Value) {
var r storage.Reader
- r, err = f.file.Open()
+ r, err = t.s.stor.Open(f.fd)
if err != nil {
return 0, nil
}
var bcache *cache.CacheGetter
if t.bcache != nil {
- bcache = &cache.CacheGetter{Cache: t.bcache, NS: num}
+ bcache = &cache.CacheGetter{Cache: t.bcache, NS: uint64(f.fd.Num)}
}
var tr *table.Reader
- tr, err = table.NewReader(r, int64(f.size), storage.NewFileInfo(f.file), bcache, t.bpool, t.s.o.Options)
+ tr, err = table.NewReader(r, f.size, f.fd, bcache, t.bpool, t.s.o.Options)
if err != nil {
r.Close()
return 0, nil
@@ -413,15 +417,14 @@ func (t *tOps) newIterator(f *tFile, slice *util.Range, ro *opt.ReadOptions) ite
// Removes table from persistent storage. It waits until
// no one use the the table.
func (t *tOps) remove(f *tFile) {
- num := f.file.Num()
- t.cache.Delete(0, num, func() {
- if err := f.file.Remove(); err != nil {
- t.s.logf("table@remove removing @%d %q", num, err)
+ t.cache.Delete(0, uint64(f.fd.Num), func() {
+ if err := t.s.stor.Remove(f.fd); err != nil {
+ t.s.logf("table@remove removing @%d %q", f.fd.Num, err)
} else {
- t.s.logf("table@remove removed @%d", num)
+ t.s.logf("table@remove removed @%d", f.fd.Num)
}
if t.bcache != nil {
- t.bcache.EvictNS(num)
+ t.bcache.EvictNS(uint64(f.fd.Num))
}
})
}
@@ -441,22 +444,27 @@ func newTableOps(s *session) *tOps {
var (
cacher cache.Cacher
bcache *cache.Cache
+ bpool *util.BufferPool
)
if s.o.GetOpenFilesCacheCapacity() > 0 {
cacher = cache.NewLRU(s.o.GetOpenFilesCacheCapacity())
}
- if !s.o.DisableBlockCache {
+ if !s.o.GetDisableBlockCache() {
var bcacher cache.Cacher
if s.o.GetBlockCacheCapacity() > 0 {
bcacher = cache.NewLRU(s.o.GetBlockCacheCapacity())
}
bcache = cache.NewCache(bcacher)
}
+ if !s.o.GetDisableBufferPool() {
+ bpool = util.NewBufferPool(s.o.GetBlockSize() + 5)
+ }
return &tOps{
s: s,
+ noSync: s.o.GetNoSync(),
cache: cache.NewCache(cacher),
bcache: bcache,
- bpool: util.NewBufferPool(s.o.GetBlockSize() + 5),
+ bpool: bpool,
}
}
@@ -465,9 +473,9 @@ func newTableOps(s *session) *tOps {
type tWriter struct {
t *tOps
- file storage.File
- w storage.Writer
- tw *table.Writer
+ fd storage.FileDesc
+ w storage.Writer
+ tw *table.Writer
first, last []byte
}
@@ -501,20 +509,21 @@ func (w *tWriter) finish() (f *tFile, err error) {
if err != nil {
return
}
- err = w.w.Sync()
- if err != nil {
- return
+ if !w.t.noSync {
+ err = w.w.Sync()
+ if err != nil {
+ return
+ }
}
- f = newTableFile(w.file, uint64(w.tw.BytesLen()), iKey(w.first), iKey(w.last))
+ f = newTableFile(w.fd, int64(w.tw.BytesLen()), iKey(w.first), iKey(w.last))
return
}
// Drops the table.
func (w *tWriter) drop() {
w.close()
- w.file.Remove()
- w.t.s.reuseFileNum(w.file.Num())
- w.file = nil
+ w.t.s.stor.Remove(w.fd)
+ w.t.s.reuseFileNum(w.fd.Num)
w.tw = nil
w.first = nil
w.last = nil
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/block_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/block_test.go
deleted file mode 100644
index 00e6f9eea..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/block_test.go
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package table
-
-import (
- "encoding/binary"
- "fmt"
-
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-
- "github.com/syndtr/goleveldb/leveldb/comparer"
- "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/testutil"
- "github.com/syndtr/goleveldb/leveldb/util"
-)
-
-type blockTesting struct {
- tr *Reader
- b *block
-}
-
-func (t *blockTesting) TestNewIterator(slice *util.Range) iterator.Iterator {
- return t.tr.newBlockIter(t.b, nil, slice, false)
-}
-
-var _ = testutil.Defer(func() {
- Describe("Block", func() {
- Build := func(kv *testutil.KeyValue, restartInterval int) *blockTesting {
- // Building the block.
- bw := &blockWriter{
- restartInterval: restartInterval,
- scratch: make([]byte, 30),
- }
- kv.Iterate(func(i int, key, value []byte) {
- bw.append(key, value)
- })
- bw.finish()
-
- // Opening the block.
- data := bw.buf.Bytes()
- restartsLen := int(binary.LittleEndian.Uint32(data[len(data)-4:]))
- return &blockTesting{
- tr: &Reader{cmp: comparer.DefaultComparer},
- b: &block{
- data: data,
- restartsLen: restartsLen,
- restartsOffset: len(data) - (restartsLen+1)*4,
- },
- }
- }
-
- Describe("read test", func() {
- for restartInterval := 1; restartInterval <= 5; restartInterval++ {
- Describe(fmt.Sprintf("with restart interval of %d", restartInterval), func() {
- kv := &testutil.KeyValue{}
- Text := func() string {
- return fmt.Sprintf("and %d keys", kv.Len())
- }
-
- Test := func() {
- // Make block.
- br := Build(kv, restartInterval)
- // Do testing.
- testutil.KeyValueTesting(nil, kv.Clone(), br, nil, nil)
- }
-
- Describe(Text(), Test)
-
- kv.PutString("", "empty")
- Describe(Text(), Test)
-
- kv.PutString("a1", "foo")
- Describe(Text(), Test)
-
- kv.PutString("a2", "v")
- Describe(Text(), Test)
-
- kv.PutString("a3qqwrkks", "hello")
- Describe(Text(), Test)
-
- kv.PutString("a4", "bar")
- Describe(Text(), Test)
-
- kv.PutString("a5111111", "v5")
- kv.PutString("a6", "")
- kv.PutString("a7", "v7")
- kv.PutString("a8", "vvvvvvvvvvvvvvvvvvvvvv8")
- kv.PutString("b", "v9")
- kv.PutString("c9", "v9")
- kv.PutString("c91", "v9")
- kv.PutString("d0", "v9")
- Describe(Text(), Test)
- })
- }
- })
-
- Describe("out-of-bound slice test", func() {
- kv := &testutil.KeyValue{}
- kv.PutString("k1", "v1")
- kv.PutString("k2", "v2")
- kv.PutString("k3abcdefgg", "v3")
- kv.PutString("k4", "v4")
- kv.PutString("k5", "v5")
- for restartInterval := 1; restartInterval <= 5; restartInterval++ {
- Describe(fmt.Sprintf("with restart interval of %d", restartInterval), func() {
- // Make block.
- bt := Build(kv, restartInterval)
-
- Test := func(r *util.Range) func(done Done) {
- return func(done Done) {
- iter := bt.TestNewIterator(r)
- Expect(iter.Error()).ShouldNot(HaveOccurred())
-
- t := testutil.IteratorTesting{
- KeyValue: kv.Clone(),
- Iter: iter,
- }
-
- testutil.DoIteratorTesting(&t)
- iter.Release()
- done <- true
- }
- }
-
- It("Should do iterations and seeks correctly #0",
- Test(&util.Range{Start: []byte("k0"), Limit: []byte("k6")}), 2.0)
-
- It("Should do iterations and seeks correctly #1",
- Test(&util.Range{Start: []byte(""), Limit: []byte("zzzzzzz")}), 2.0)
- })
- }
- })
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go
index 6f38e84b3..caeac96b5 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/reader.go
@@ -14,7 +14,7 @@ import (
"strings"
"sync"
- "github.com/syndtr/gosnappy/snappy"
+ "github.com/golang/snappy"
"github.com/syndtr/goleveldb/leveldb/cache"
"github.com/syndtr/goleveldb/leveldb/comparer"
@@ -507,7 +507,7 @@ func (i *indexIter) Get() iterator.Iterator {
// Reader is a table reader.
type Reader struct {
mu sync.RWMutex
- fi *storage.FileInfo
+ fd storage.FileDesc
reader io.ReaderAt
cache *cache.CacheGetter
err error
@@ -539,7 +539,7 @@ func (r *Reader) blockKind(bh blockHandle) string {
}
func (r *Reader) newErrCorrupted(pos, size int64, kind, reason string) error {
- return &errors.ErrCorrupted{File: r.fi, Err: &ErrCorrupted{Pos: pos, Size: size, Kind: kind, Reason: reason}}
+ return &errors.ErrCorrupted{Fd: r.fd, Err: &ErrCorrupted{Pos: pos, Size: size, Kind: kind, Reason: reason}}
}
func (r *Reader) newErrCorruptedBH(bh blockHandle, reason string) error {
@@ -551,7 +551,7 @@ func (r *Reader) fixErrCorruptedBH(bh blockHandle, err error) error {
cerr.Pos = int64(bh.offset)
cerr.Size = int64(bh.length)
cerr.Kind = r.blockKind(bh)
- return &errors.ErrCorrupted{File: r.fi, Err: cerr}
+ return &errors.ErrCorrupted{Fd: r.fd, Err: cerr}
}
return err
}
@@ -988,13 +988,13 @@ func (r *Reader) Release() {
// The fi, cache and bpool is optional and can be nil.
//
// The returned table reader instance is goroutine-safe.
-func NewReader(f io.ReaderAt, size int64, fi *storage.FileInfo, cache *cache.CacheGetter, bpool *util.BufferPool, o *opt.Options) (*Reader, error) {
+func NewReader(f io.ReaderAt, size int64, fd storage.FileDesc, cache *cache.CacheGetter, bpool *util.BufferPool, o *opt.Options) (*Reader, error) {
if f == nil {
return nil, errors.New("leveldb/table: nil file")
}
r := &Reader{
- fi: fi,
+ fd: fd,
reader: f,
cache: cache,
bpool: bpool,
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_suite_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_suite_test.go
deleted file mode 100644
index 6465da6e3..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_suite_test.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package table
-
-import (
- "testing"
-
- "github.com/syndtr/goleveldb/leveldb/testutil"
-)
-
-func TestTable(t *testing.T) {
- testutil.RunSuite(t, "Table Suite")
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_test.go
deleted file mode 100644
index 4b59b31f5..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/table_test.go
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package table
-
-import (
- "bytes"
-
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
-
- "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/opt"
- "github.com/syndtr/goleveldb/leveldb/testutil"
- "github.com/syndtr/goleveldb/leveldb/util"
-)
-
-type tableWrapper struct {
- *Reader
-}
-
-func (t tableWrapper) TestFind(key []byte) (rkey, rvalue []byte, err error) {
- return t.Reader.Find(key, false, nil)
-}
-
-func (t tableWrapper) TestGet(key []byte) (value []byte, err error) {
- return t.Reader.Get(key, nil)
-}
-
-func (t tableWrapper) TestNewIterator(slice *util.Range) iterator.Iterator {
- return t.Reader.NewIterator(slice, nil)
-}
-
-var _ = testutil.Defer(func() {
- Describe("Table", func() {
- Describe("approximate offset test", func() {
- var (
- buf = &bytes.Buffer{}
- o = &opt.Options{
- BlockSize: 1024,
- Compression: opt.NoCompression,
- }
- )
-
- // Building the table.
- tw := NewWriter(buf, o)
- tw.Append([]byte("k01"), []byte("hello"))
- tw.Append([]byte("k02"), []byte("hello2"))
- tw.Append([]byte("k03"), bytes.Repeat([]byte{'x'}, 10000))
- tw.Append([]byte("k04"), bytes.Repeat([]byte{'x'}, 200000))
- tw.Append([]byte("k05"), bytes.Repeat([]byte{'x'}, 300000))
- tw.Append([]byte("k06"), []byte("hello3"))
- tw.Append([]byte("k07"), bytes.Repeat([]byte{'x'}, 100000))
- err := tw.Close()
-
- It("Should be able to approximate offset of a key correctly", func() {
- Expect(err).ShouldNot(HaveOccurred())
-
- tr, err := NewReader(bytes.NewReader(buf.Bytes()), int64(buf.Len()), nil, nil, nil, o)
- Expect(err).ShouldNot(HaveOccurred())
- CheckOffset := func(key string, expect, threshold int) {
- offset, err := tr.OffsetOf([]byte(key))
- Expect(err).ShouldNot(HaveOccurred())
- Expect(offset).Should(BeNumerically("~", expect, threshold), "Offset of key %q", key)
- }
-
- CheckOffset("k0", 0, 0)
- CheckOffset("k01a", 0, 0)
- CheckOffset("k02", 0, 0)
- CheckOffset("k03", 0, 0)
- CheckOffset("k04", 10000, 1000)
- CheckOffset("k04a", 210000, 1000)
- CheckOffset("k05", 210000, 1000)
- CheckOffset("k06", 510000, 1000)
- CheckOffset("k07", 510000, 1000)
- CheckOffset("xyz", 610000, 2000)
- })
- })
-
- Describe("read test", func() {
- Build := func(kv testutil.KeyValue) testutil.DB {
- o := &opt.Options{
- BlockSize: 512,
- BlockRestartInterval: 3,
- }
- buf := &bytes.Buffer{}
-
- // Building the table.
- tw := NewWriter(buf, o)
- kv.Iterate(func(i int, key, value []byte) {
- tw.Append(key, value)
- })
- tw.Close()
-
- // Opening the table.
- tr, _ := NewReader(bytes.NewReader(buf.Bytes()), int64(buf.Len()), nil, nil, nil, o)
- return tableWrapper{tr}
- }
- Test := func(kv *testutil.KeyValue, body func(r *Reader)) func() {
- return func() {
- db := Build(*kv)
- if body != nil {
- body(db.(tableWrapper).Reader)
- }
- testutil.KeyValueTesting(nil, *kv, db, nil, nil)
- }
- }
-
- testutil.AllKeyValueTesting(nil, Build, nil, nil)
- Describe("with one key per block", Test(testutil.KeyValue_Generate(nil, 9, 1, 10, 512, 512), func(r *Reader) {
- It("should have correct blocks number", func() {
- indexBlock, err := r.readBlock(r.indexBH, true)
- Expect(err).To(BeNil())
- Expect(indexBlock.restartsLen).Should(Equal(9))
- })
- }))
- })
- })
-})
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go
index 274c95fad..274dee6da 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/table/writer.go
@@ -12,7 +12,7 @@ import (
"fmt"
"io"
- "github.com/syndtr/gosnappy/snappy"
+ "github.com/golang/snappy"
"github.com/syndtr/goleveldb/leveldb/comparer"
"github.com/syndtr/goleveldb/leveldb/filter"
@@ -167,11 +167,7 @@ func (w *Writer) writeBlock(buf *util.Buffer, compression opt.Compression) (bh b
if n := snappy.MaxEncodedLen(buf.Len()) + blockTrailerLen; len(w.compressionScratch) < n {
w.compressionScratch = make([]byte, n)
}
- var compressed []byte
- compressed, err = snappy.Encode(w.compressionScratch, buf.Bytes())
- if err != nil {
- return
- }
+ compressed := snappy.Encode(w.compressionScratch, buf.Bytes())
n := len(compressed)
b = compressed[:n+blockTrailerLen]
b[n] = blockTypeSnappyCompression
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/kvtest.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/kvtest.go
index a0b58f0e7..19d29dfc4 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/kvtest.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/kvtest.go
@@ -17,6 +17,84 @@ import (
"github.com/syndtr/goleveldb/leveldb/util"
)
+func TestFind(db Find, kv KeyValue) {
+ ShuffledIndex(nil, kv.Len(), 1, func(i int) {
+ key_, key, value := kv.IndexInexact(i)
+
+ // Using exact key.
+ rkey, rvalue, err := db.TestFind(key)
+ Expect(err).ShouldNot(HaveOccurred(), "Error for key %q", key)
+ Expect(rkey).Should(Equal(key), "Key")
+ Expect(rvalue).Should(Equal(value), "Value for key %q", key)
+
+ // Using inexact key.
+ rkey, rvalue, err = db.TestFind(key_)
+ Expect(err).ShouldNot(HaveOccurred(), "Error for key %q (%q)", key_, key)
+ Expect(rkey).Should(Equal(key))
+ Expect(rvalue).Should(Equal(value), "Value for key %q (%q)", key_, key)
+ })
+}
+
+func TestFindAfterLast(db Find, kv KeyValue) {
+ var key []byte
+ if kv.Len() > 0 {
+ key_, _ := kv.Index(kv.Len() - 1)
+ key = BytesAfter(key_)
+ }
+ rkey, _, err := db.TestFind(key)
+ Expect(err).Should(HaveOccurred(), "Find for key %q yield key %q", key, rkey)
+ Expect(err).Should(Equal(errors.ErrNotFound))
+}
+
+func TestGet(db Get, kv KeyValue) {
+ ShuffledIndex(nil, kv.Len(), 1, func(i int) {
+ key_, key, value := kv.IndexInexact(i)
+
+ // Using exact key.
+ rvalue, err := db.TestGet(key)
+ Expect(err).ShouldNot(HaveOccurred(), "Error for key %q", key)
+ Expect(rvalue).Should(Equal(value), "Value for key %q", key)
+
+ // Using inexact key.
+ if len(key_) > 0 {
+ _, err = db.TestGet(key_)
+ Expect(err).Should(HaveOccurred(), "Error for key %q", key_)
+ Expect(err).Should(Equal(errors.ErrNotFound))
+ }
+ })
+}
+
+func TestHas(db Has, kv KeyValue) {
+ ShuffledIndex(nil, kv.Len(), 1, func(i int) {
+ key_, key, _ := kv.IndexInexact(i)
+
+ // Using exact key.
+ ret, err := db.TestHas(key)
+ Expect(err).ShouldNot(HaveOccurred(), "Error for key %q", key)
+ Expect(ret).Should(BeTrue(), "False for key %q", key)
+
+ // Using inexact key.
+ if len(key_) > 0 {
+ ret, err = db.TestHas(key_)
+ Expect(err).ShouldNot(HaveOccurred(), "Error for key %q", key_)
+ Expect(ret).ShouldNot(BeTrue(), "True for key %q", key)
+ }
+ })
+}
+
+func TestIter(db NewIterator, r *util.Range, kv KeyValue) {
+ iter := db.TestNewIterator(r)
+ Expect(iter.Error()).ShouldNot(HaveOccurred())
+
+ t := IteratorTesting{
+ KeyValue: kv,
+ Iter: iter,
+ }
+
+ DoIteratorTesting(&t)
+ iter.Release()
+}
+
func KeyValueTesting(rnd *rand.Rand, kv KeyValue, p DB, setup func(KeyValue) DB, teardown func(DB)) {
if rnd == nil {
rnd = NewRand()
@@ -35,122 +113,68 @@ func KeyValueTesting(rnd *rand.Rand, kv KeyValue, p DB, setup func(KeyValue) DB,
It("Should find all keys with Find", func() {
if db, ok := p.(Find); ok {
- ShuffledIndex(nil, kv.Len(), 1, func(i int) {
- key_, key, value := kv.IndexInexact(i)
-
- // Using exact key.
- rkey, rvalue, err := db.TestFind(key)
- Expect(err).ShouldNot(HaveOccurred(), "Error for key %q", key)
- Expect(rkey).Should(Equal(key), "Key")
- Expect(rvalue).Should(Equal(value), "Value for key %q", key)
-
- // Using inexact key.
- rkey, rvalue, err = db.TestFind(key_)
- Expect(err).ShouldNot(HaveOccurred(), "Error for key %q (%q)", key_, key)
- Expect(rkey).Should(Equal(key))
- Expect(rvalue).Should(Equal(value), "Value for key %q (%q)", key_, key)
- })
+ TestFind(db, kv)
}
})
- It("Should return error if the key is not present", func() {
+ It("Should return error if Find on key after the last", func() {
if db, ok := p.(Find); ok {
- var key []byte
- if kv.Len() > 0 {
- key_, _ := kv.Index(kv.Len() - 1)
- key = BytesAfter(key_)
- }
- rkey, _, err := db.TestFind(key)
- Expect(err).Should(HaveOccurred(), "Find for key %q yield key %q", key, rkey)
- Expect(err).Should(Equal(errors.ErrNotFound))
+ TestFindAfterLast(db, kv)
}
})
It("Should only find exact key with Get", func() {
if db, ok := p.(Get); ok {
- ShuffledIndex(nil, kv.Len(), 1, func(i int) {
- key_, key, value := kv.IndexInexact(i)
-
- // Using exact key.
- rvalue, err := db.TestGet(key)
- Expect(err).ShouldNot(HaveOccurred(), "Error for key %q", key)
- Expect(rvalue).Should(Equal(value), "Value for key %q", key)
-
- // Using inexact key.
- if len(key_) > 0 {
- _, err = db.TestGet(key_)
- Expect(err).Should(HaveOccurred(), "Error for key %q", key_)
- Expect(err).Should(Equal(errors.ErrNotFound))
- }
- })
+ TestGet(db, kv)
}
})
It("Should only find present key with Has", func() {
if db, ok := p.(Has); ok {
- ShuffledIndex(nil, kv.Len(), 1, func(i int) {
- key_, key, _ := kv.IndexInexact(i)
-
- // Using exact key.
- ret, err := db.TestHas(key)
- Expect(err).ShouldNot(HaveOccurred(), "Error for key %q", key)
- Expect(ret).Should(BeTrue(), "False for key %q", key)
-
- // Using inexact key.
- if len(key_) > 0 {
- ret, err = db.TestHas(key_)
- Expect(err).ShouldNot(HaveOccurred(), "Error for key %q", key_)
- Expect(ret).ShouldNot(BeTrue(), "True for key %q", key)
- }
- })
+ TestHas(db, kv)
}
})
- TestIter := func(r *util.Range, _kv KeyValue) {
+ It("Should iterates and seeks correctly", func(done Done) {
if db, ok := p.(NewIterator); ok {
- iter := db.TestNewIterator(r)
- Expect(iter.Error()).ShouldNot(HaveOccurred())
-
- t := IteratorTesting{
- KeyValue: _kv,
- Iter: iter,
- }
-
- DoIteratorTesting(&t)
- iter.Release()
+ TestIter(db, nil, kv.Clone())
}
- }
-
- It("Should iterates and seeks correctly", func(done Done) {
- TestIter(nil, kv.Clone())
done <- true
}, 3.0)
- RandomIndex(rnd, kv.Len(), Min(kv.Len(), 50), func(i int) {
- type slice struct {
- r *util.Range
- start, limit int
- }
+ It("Should iterates and seeks slice correctly", func(done Done) {
+ if db, ok := p.(NewIterator); ok {
+ RandomIndex(rnd, kv.Len(), Min(kv.Len(), 50), func(i int) {
+ type slice struct {
+ r *util.Range
+ start, limit int
+ }
- key_, _, _ := kv.IndexInexact(i)
- for _, x := range []slice{
- {&util.Range{Start: key_, Limit: nil}, i, kv.Len()},
- {&util.Range{Start: nil, Limit: key_}, 0, i},
- } {
- It(fmt.Sprintf("Should iterates and seeks correctly of a slice %d .. %d", x.start, x.limit), func(done Done) {
- TestIter(x.r, kv.Slice(x.start, x.limit))
- done <- true
- }, 3.0)
+ key_, _, _ := kv.IndexInexact(i)
+ for _, x := range []slice{
+ {&util.Range{Start: key_, Limit: nil}, i, kv.Len()},
+ {&util.Range{Start: nil, Limit: key_}, 0, i},
+ } {
+ By(fmt.Sprintf("Random index of %d .. %d", x.start, x.limit), func() {
+ TestIter(db, x.r, kv.Slice(x.start, x.limit))
+ })
+ }
+ })
}
- })
+ done <- true
+ }, 50.0)
- RandomRange(rnd, kv.Len(), Min(kv.Len(), 50), func(start, limit int) {
- It(fmt.Sprintf("Should iterates and seeks correctly of a slice %d .. %d", start, limit), func(done Done) {
- r := kv.Range(start, limit)
- TestIter(&r, kv.Slice(start, limit))
- done <- true
- }, 3.0)
- })
+ It("Should iterates and seeks slice correctly", func(done Done) {
+ if db, ok := p.(NewIterator); ok {
+ RandomRange(rnd, kv.Len(), Min(kv.Len(), 50), func(start, limit int) {
+ By(fmt.Sprintf("Random range of %d .. %d", start, limit), func() {
+ r := kv.Range(start, limit)
+ TestIter(db, &r, kv.Slice(start, limit))
+ })
+ })
+ }
+ done <- true
+ }, 50.0)
}
func AllKeyValueTesting(rnd *rand.Rand, body, setup func(KeyValue) DB, teardown func(DB)) {
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/storage.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/storage.go
index 59c496d54..1d9163ea4 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/storage.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil/storage.go
@@ -10,6 +10,7 @@ import (
"bytes"
"fmt"
"io"
+ "math/rand"
"os"
"path/filepath"
"runtime"
@@ -24,8 +25,8 @@ import (
var (
storageMu sync.Mutex
- storageUseFS bool = true
- storageKeepFS bool = false
+ storageUseFS = true
+ storageKeepFS = false
storageNum int
)
@@ -35,6 +36,7 @@ const (
ModeOpen StorageMode = 1 << iota
ModeCreate
ModeRemove
+ ModeRename
ModeRead
ModeWrite
ModeSync
@@ -45,6 +47,7 @@ const (
modeOpen = iota
modeCreate
modeRemove
+ modeRename
modeRead
modeWrite
modeSync
@@ -73,6 +76,8 @@ func flattenType(m StorageMode, t storage.FileType) int {
x = modeCreate
case ModeRemove:
x = modeRemove
+ case ModeRename:
+ x = modeRename
case ModeRead:
x = modeRead
case ModeWrite:
@@ -121,6 +126,8 @@ func listFlattenType(m StorageMode, t storage.FileType) []int {
add(modeCreate)
case m&ModeRemove != 0:
add(modeRemove)
+ case m&ModeRename != 0:
+ add(modeRename)
case m&ModeRead != 0:
add(modeRead)
case m&ModeWrite != 0:
@@ -133,15 +140,15 @@ func listFlattenType(m StorageMode, t storage.FileType) []int {
return ret
}
-func packFile(num uint64, t storage.FileType) uint64 {
- if num>>(64-typeCount) != 0 {
+func packFile(fd storage.FileDesc) uint64 {
+ if fd.Num>>(63-typeCount) != 0 {
panic("overflow")
}
- return num<<typeCount | uint64(t)
+ return uint64(fd.Num<<typeCount) | uint64(fd.Type)
}
-func unpackFile(x uint64) (uint64, storage.FileType) {
- return x >> typeCount, storage.FileType(x) & storage.TypeAll
+func unpackFile(x uint64) storage.FileDesc {
+ return storage.FileDesc{storage.FileType(x) & storage.TypeAll, int64(x >> typeCount)}
}
type emulatedError struct {
@@ -163,189 +170,98 @@ func (l storageLock) Release() {
}
type reader struct {
- f *file
+ s *Storage
+ fd storage.FileDesc
storage.Reader
}
func (r *reader) Read(p []byte) (n int, err error) {
- err = r.f.s.emulateError(ModeRead, r.f.Type())
+ err = r.s.emulateError(ModeRead, r.fd.Type)
if err == nil {
- r.f.s.stall(ModeRead, r.f.Type())
+ r.s.stall(ModeRead, r.fd.Type)
n, err = r.Reader.Read(p)
}
- r.f.s.count(ModeRead, r.f.Type(), n)
+ r.s.count(ModeRead, r.fd.Type, n)
if err != nil && err != io.EOF {
- r.f.s.logI("read error, num=%d type=%v n=%d err=%v", r.f.Num(), r.f.Type(), n, err)
+ r.s.logI("read error, fd=%s n=%d err=%v", r.fd, n, err)
}
return
}
func (r *reader) ReadAt(p []byte, off int64) (n int, err error) {
- err = r.f.s.emulateError(ModeRead, r.f.Type())
+ err = r.s.emulateError(ModeRead, r.fd.Type)
if err == nil {
- r.f.s.stall(ModeRead, r.f.Type())
+ r.s.stall(ModeRead, r.fd.Type)
n, err = r.Reader.ReadAt(p, off)
}
- r.f.s.count(ModeRead, r.f.Type(), n)
+ r.s.count(ModeRead, r.fd.Type, n)
if err != nil && err != io.EOF {
- r.f.s.logI("readAt error, num=%d type=%v offset=%d n=%d err=%v", r.f.Num(), r.f.Type(), off, n, err)
+ r.s.logI("readAt error, fd=%s offset=%d n=%d err=%v", r.fd, off, n, err)
}
return
}
func (r *reader) Close() (err error) {
- return r.f.doClose(r.Reader)
+ return r.s.fileClose(r.fd, r.Reader)
}
type writer struct {
- f *file
+ s *Storage
+ fd storage.FileDesc
storage.Writer
}
func (w *writer) Write(p []byte) (n int, err error) {
- err = w.f.s.emulateError(ModeWrite, w.f.Type())
+ err = w.s.emulateError(ModeWrite, w.fd.Type)
if err == nil {
- w.f.s.stall(ModeWrite, w.f.Type())
+ w.s.stall(ModeWrite, w.fd.Type)
n, err = w.Writer.Write(p)
}
- w.f.s.count(ModeWrite, w.f.Type(), n)
+ w.s.count(ModeWrite, w.fd.Type, n)
if err != nil && err != io.EOF {
- w.f.s.logI("write error, num=%d type=%v n=%d err=%v", w.f.Num(), w.f.Type(), n, err)
+ w.s.logI("write error, fd=%s n=%d err=%v", w.fd, n, err)
}
return
}
func (w *writer) Sync() (err error) {
- err = w.f.s.emulateError(ModeSync, w.f.Type())
+ err = w.s.emulateError(ModeSync, w.fd.Type)
if err == nil {
- w.f.s.stall(ModeSync, w.f.Type())
+ w.s.stall(ModeSync, w.fd.Type)
err = w.Writer.Sync()
}
- w.f.s.count(ModeSync, w.f.Type(), 0)
+ w.s.count(ModeSync, w.fd.Type, 0)
if err != nil {
- w.f.s.logI("sync error, num=%d type=%v err=%v", w.f.Num(), w.f.Type(), err)
+ w.s.logI("sync error, fd=%s err=%v", w.fd, err)
}
return
}
func (w *writer) Close() (err error) {
- return w.f.doClose(w.Writer)
-}
-
-type file struct {
- s *Storage
- storage.File
-}
-
-func (f *file) pack() uint64 {
- return packFile(f.Num(), f.Type())
-}
-
-func (f *file) assertOpen() {
- ExpectWithOffset(2, f.s.opens).NotTo(HaveKey(f.pack()), "File open, num=%d type=%v writer=%v", f.Num(), f.Type(), f.s.opens[f.pack()])
-}
-
-func (f *file) doClose(closer io.Closer) (err error) {
- err = f.s.emulateError(ModeClose, f.Type())
- if err == nil {
- f.s.stall(ModeClose, f.Type())
- }
- f.s.mu.Lock()
- defer f.s.mu.Unlock()
- if err == nil {
- ExpectWithOffset(2, f.s.opens).To(HaveKey(f.pack()), "File closed, num=%d type=%v", f.Num(), f.Type())
- err = closer.Close()
- }
- f.s.countNB(ModeClose, f.Type(), 0)
- writer := f.s.opens[f.pack()]
- if err != nil {
- f.s.logISkip(1, "file close failed, num=%d type=%v writer=%v err=%v", f.Num(), f.Type(), writer, err)
- } else {
- f.s.logISkip(1, "file closed, num=%d type=%v writer=%v", f.Num(), f.Type(), writer)
- delete(f.s.opens, f.pack())
- }
- return
-}
-
-func (f *file) Open() (r storage.Reader, err error) {
- err = f.s.emulateError(ModeOpen, f.Type())
- if err == nil {
- f.s.stall(ModeOpen, f.Type())
- }
- f.s.mu.Lock()
- defer f.s.mu.Unlock()
- if err == nil {
- f.assertOpen()
- f.s.countNB(ModeOpen, f.Type(), 0)
- r, err = f.File.Open()
- }
- if err != nil {
- f.s.logI("file open failed, num=%d type=%v err=%v", f.Num(), f.Type(), err)
- } else {
- f.s.logI("file opened, num=%d type=%v", f.Num(), f.Type())
- f.s.opens[f.pack()] = false
- r = &reader{f, r}
- }
- return
-}
-
-func (f *file) Create() (w storage.Writer, err error) {
- err = f.s.emulateError(ModeCreate, f.Type())
- if err == nil {
- f.s.stall(ModeCreate, f.Type())
- }
- f.s.mu.Lock()
- defer f.s.mu.Unlock()
- if err == nil {
- f.assertOpen()
- f.s.countNB(ModeCreate, f.Type(), 0)
- w, err = f.File.Create()
- }
- if err != nil {
- f.s.logI("file create failed, num=%d type=%v err=%v", f.Num(), f.Type(), err)
- } else {
- f.s.logI("file created, num=%d type=%v", f.Num(), f.Type())
- f.s.opens[f.pack()] = true
- w = &writer{f, w}
- }
- return
-}
-
-func (f *file) Remove() (err error) {
- err = f.s.emulateError(ModeRemove, f.Type())
- if err == nil {
- f.s.stall(ModeRemove, f.Type())
- }
- f.s.mu.Lock()
- defer f.s.mu.Unlock()
- if err == nil {
- f.assertOpen()
- f.s.countNB(ModeRemove, f.Type(), 0)
- err = f.File.Remove()
- }
- if err != nil {
- f.s.logI("file remove failed, num=%d type=%v err=%v", f.Num(), f.Type(), err)
- } else {
- f.s.logI("file removed, num=%d type=%v", f.Num(), f.Type())
- }
- return
+ return w.s.fileClose(w.fd, w.Writer)
}
type Storage struct {
storage.Storage
- closeFn func() error
+ path string
+ onClose func() (preserve bool, err error)
+ onLog func(str string)
lmu sync.Mutex
lb bytes.Buffer
- mu sync.Mutex
+ mu sync.Mutex
+ rand *rand.Rand
// Open files, true=writer, false=reader
- opens map[uint64]bool
- counters [flattenCount]int
- bytesCounter [flattenCount]int64
- emulatedError [flattenCount]error
- stallCond sync.Cond
- stalled [flattenCount]bool
+ opens map[uint64]bool
+ counters [flattenCount]int
+ bytesCounter [flattenCount]int64
+ emulatedError [flattenCount]error
+ emulatedErrorOnce [flattenCount]bool
+ emulatedRandomError [flattenCount]error
+ emulatedRandomErrorProb [flattenCount]float64
+ stallCond sync.Cond
+ stalled [flattenCount]bool
}
func (s *Storage) log(skip int, str string) {
@@ -374,7 +290,12 @@ func (s *Storage) log(skip int, str string) {
}
s.lb.WriteString(line)
}
- s.lb.WriteByte('\n')
+ if s.onLog != nil {
+ s.onLog(s.lb.String())
+ s.lb.Reset()
+ } else {
+ s.lb.WriteByte('\n')
+ }
}
func (s *Storage) logISkip(skip int, format string, args ...interface{}) {
@@ -395,74 +316,220 @@ func (s *Storage) logI(format string, args ...interface{}) {
s.logISkip(1, format, args...)
}
+func (s *Storage) OnLog(onLog func(log string)) {
+ s.lmu.Lock()
+ s.onLog = onLog
+ if s.lb.Len() != 0 {
+ log := s.lb.String()
+ s.onLog(log[:len(log)-1])
+ s.lb.Reset()
+ }
+ s.lmu.Unlock()
+}
+
func (s *Storage) Log(str string) {
s.log(1, "Log: "+str)
s.Storage.Log(str)
}
-func (s *Storage) Lock() (r util.Releaser, err error) {
- r, err = s.Storage.Lock()
+func (s *Storage) Lock() (l storage.Lock, err error) {
+ l, err = s.Storage.Lock()
if err != nil {
s.logI("storage locking failed, err=%v", err)
} else {
s.logI("storage locked")
- r = storageLock{s, r}
+ l = storageLock{s, l}
}
return
}
-func (s *Storage) GetFile(num uint64, t storage.FileType) storage.File {
- return &file{s, s.Storage.GetFile(num, t)}
-}
-
-func (s *Storage) GetFiles(t storage.FileType) (files []storage.File, err error) {
- rfiles, err := s.Storage.GetFiles(t)
+func (s *Storage) List(t storage.FileType) (fds []storage.FileDesc, err error) {
+ fds, err = s.Storage.List(t)
if err != nil {
- s.logI("get files failed, err=%v", err)
+ s.logI("list failed, err=%v", err)
return
}
- files = make([]storage.File, len(rfiles))
- for i, f := range rfiles {
- files[i] = &file{s, f}
- }
- s.logI("get files, type=0x%x count=%d", int(t), len(files))
+ s.logI("list, type=0x%x count=%d", int(t), len(fds))
return
}
-func (s *Storage) GetManifest() (f storage.File, err error) {
- manifest, err := s.Storage.GetManifest()
+func (s *Storage) GetMeta() (fd storage.FileDesc, err error) {
+ fd, err = s.Storage.GetMeta()
if err != nil {
if !os.IsNotExist(err) {
- s.logI("get manifest failed, err=%v", err)
+ s.logI("get meta failed, err=%v", err)
}
return
}
- s.logI("get manifest, num=%d", manifest.Num())
- return &file{s, manifest}, nil
+ s.logI("get meta, fd=%s", fd)
+ return
}
-func (s *Storage) SetManifest(f storage.File) error {
- f_, ok := f.(*file)
- ExpectWithOffset(1, ok).To(BeTrue())
- ExpectWithOffset(1, f_.Type()).To(Equal(storage.TypeManifest))
- err := s.Storage.SetManifest(f_.File)
+func (s *Storage) SetMeta(fd storage.FileDesc) error {
+ ExpectWithOffset(1, fd.Type).To(Equal(storage.TypeManifest))
+ err := s.Storage.SetMeta(fd)
if err != nil {
- s.logI("set manifest failed, err=%v", err)
+ s.logI("set meta failed, fd=%s err=%v", fd, err)
} else {
- s.logI("set manifest, num=%d", f_.Num())
+ s.logI("set meta, fd=%s", fd)
}
return err
}
+func (s *Storage) fileClose(fd storage.FileDesc, closer io.Closer) (err error) {
+ err = s.emulateError(ModeClose, fd.Type)
+ if err == nil {
+ s.stall(ModeClose, fd.Type)
+ }
+ x := packFile(fd)
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ if err == nil {
+ ExpectWithOffset(2, s.opens).To(HaveKey(x), "File closed, fd=%s", fd)
+ err = closer.Close()
+ }
+ s.countNB(ModeClose, fd.Type, 0)
+ writer := s.opens[x]
+ if err != nil {
+ s.logISkip(1, "file close failed, fd=%s writer=%v err=%v", fd, writer, err)
+ } else {
+ s.logISkip(1, "file closed, fd=%s writer=%v", fd, writer)
+ delete(s.opens, x)
+ }
+ return
+}
+
+func (s *Storage) assertOpen(fd storage.FileDesc) {
+ x := packFile(fd)
+ ExpectWithOffset(2, s.opens).NotTo(HaveKey(x), "File open, fd=%s writer=%v", fd, s.opens[x])
+}
+
+func (s *Storage) Open(fd storage.FileDesc) (r storage.Reader, err error) {
+ err = s.emulateError(ModeOpen, fd.Type)
+ if err == nil {
+ s.stall(ModeOpen, fd.Type)
+ }
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ if err == nil {
+ s.assertOpen(fd)
+ s.countNB(ModeOpen, fd.Type, 0)
+ r, err = s.Storage.Open(fd)
+ }
+ if err != nil {
+ s.logI("file open failed, fd=%s err=%v", fd, err)
+ } else {
+ s.logI("file opened, fd=%s", fd)
+ s.opens[packFile(fd)] = false
+ r = &reader{s, fd, r}
+ }
+ return
+}
+
+func (s *Storage) Create(fd storage.FileDesc) (w storage.Writer, err error) {
+ err = s.emulateError(ModeCreate, fd.Type)
+ if err == nil {
+ s.stall(ModeCreate, fd.Type)
+ }
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ if err == nil {
+ s.assertOpen(fd)
+ s.countNB(ModeCreate, fd.Type, 0)
+ w, err = s.Storage.Create(fd)
+ }
+ if err != nil {
+ s.logI("file create failed, fd=%s err=%v", fd, err)
+ } else {
+ s.logI("file created, fd=%s", fd)
+ s.opens[packFile(fd)] = true
+ w = &writer{s, fd, w}
+ }
+ return
+}
+
+func (s *Storage) Remove(fd storage.FileDesc) (err error) {
+ err = s.emulateError(ModeRemove, fd.Type)
+ if err == nil {
+ s.stall(ModeRemove, fd.Type)
+ }
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ if err == nil {
+ s.assertOpen(fd)
+ s.countNB(ModeRemove, fd.Type, 0)
+ err = s.Storage.Remove(fd)
+ }
+ if err != nil {
+ s.logI("file remove failed, fd=%s err=%v", fd, err)
+ } else {
+ s.logI("file removed, fd=%s", fd)
+ }
+ return
+}
+
+func (s *Storage) ForceRemove(fd storage.FileDesc) (err error) {
+ s.countNB(ModeRemove, fd.Type, 0)
+ if err = s.Storage.Remove(fd); err != nil {
+ s.logI("file remove failed (forced), fd=%s err=%v", fd, err)
+ } else {
+ s.logI("file removed (forced), fd=%s", fd)
+ }
+ return
+}
+
+func (s *Storage) Rename(oldfd, newfd storage.FileDesc) (err error) {
+ err = s.emulateError(ModeRename, oldfd.Type)
+ if err == nil {
+ s.stall(ModeRename, oldfd.Type)
+ }
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ if err == nil {
+ s.assertOpen(oldfd)
+ s.assertOpen(newfd)
+ s.countNB(ModeRename, oldfd.Type, 0)
+ err = s.Storage.Rename(oldfd, newfd)
+ }
+ if err != nil {
+ s.logI("file rename failed, oldfd=%s newfd=%s err=%v", oldfd, newfd, err)
+ } else {
+ s.logI("file renamed, oldfd=%s newfd=%s", oldfd, newfd)
+ }
+ return
+}
+
+func (s *Storage) ForceRename(oldfd, newfd storage.FileDesc) (err error) {
+ s.countNB(ModeRename, oldfd.Type, 0)
+ if err = s.Storage.Rename(oldfd, newfd); err != nil {
+ s.logI("file rename failed (forced), oldfd=%s newfd=%s err=%v", oldfd, newfd, err)
+ } else {
+ s.logI("file renamed (forced), oldfd=%s newfd=%s", oldfd, newfd)
+ }
+ return
+}
+
func (s *Storage) openFiles() string {
out := "Open files:"
for x, writer := range s.opens {
- num, t := unpackFile(x)
- out += fmt.Sprintf("\n · num=%d type=%v writer=%v", num, t, writer)
+ fd := unpackFile(x)
+ out += fmt.Sprintf("\n · fd=%s writer=%v", fd, writer)
}
return out
}
+func (s *Storage) CloseCheck() {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ ExpectWithOffset(1, s.opens).To(BeEmpty(), s.openFiles())
+}
+
+func (s *Storage) OnClose(onClose func() (preserve bool, err error)) {
+ s.mu.Lock()
+ s.onClose = onClose
+ s.mu.Unlock()
+}
+
func (s *Storage) Close() error {
s.mu.Lock()
defer s.mu.Unlock()
@@ -473,9 +540,22 @@ func (s *Storage) Close() error {
} else {
s.logI("storage closed")
}
- if s.closeFn != nil {
- if err1 := s.closeFn(); err1 != nil {
- s.logI("close func error, err=%v", err1)
+ var preserve bool
+ if s.onClose != nil {
+ var err0 error
+ if preserve, err0 = s.onClose(); err0 != nil {
+ s.logI("onClose error, err=%v", err0)
+ }
+ }
+ if s.path != "" {
+ if storageKeepFS || preserve {
+ s.logI("storage is preserved, path=%v", s.path)
+ } else {
+ if err1 := os.RemoveAll(s.path); err1 != nil {
+ s.logI("cannot remove storage, err=%v", err1)
+ } else {
+ s.logI("storage has been removed")
+ }
}
}
return err
@@ -510,8 +590,14 @@ func (s *Storage) Counter(m StorageMode, t storage.FileType) (count int, bytes i
func (s *Storage) emulateError(m StorageMode, t storage.FileType) error {
s.mu.Lock()
defer s.mu.Unlock()
- err := s.emulatedError[flattenType(m, t)]
- if err != nil {
+ x := flattenType(m, t)
+ if err := s.emulatedError[x]; err != nil {
+ if s.emulatedErrorOnce[x] {
+ s.emulatedError[x] = nil
+ }
+ return emulatedError{err}
+ }
+ if err := s.emulatedRandomError[x]; err != nil && s.rand.Float64() < s.emulatedRandomErrorProb[x] {
return emulatedError{err}
}
return nil
@@ -522,6 +608,25 @@ func (s *Storage) EmulateError(m StorageMode, t storage.FileType, err error) {
defer s.mu.Unlock()
for _, x := range listFlattenType(m, t) {
s.emulatedError[x] = err
+ s.emulatedErrorOnce[x] = false
+ }
+}
+
+func (s *Storage) EmulateErrorOnce(m StorageMode, t storage.FileType, err error) {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ for _, x := range listFlattenType(m, t) {
+ s.emulatedError[x] = err
+ s.emulatedErrorOnce[x] = true
+ }
+}
+
+func (s *Storage) EmulateRandomError(m StorageMode, t storage.FileType, prob float64, err error) {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ for _, x := range listFlattenType(m, t) {
+ s.emulatedRandomError[x] = err
+ s.emulatedRandomErrorProb[x] = prob
}
}
@@ -552,24 +657,20 @@ func (s *Storage) Release(m StorageMode, t storage.FileType) {
}
func NewStorage() *Storage {
- var stor storage.Storage
- var closeFn func() error
+ var (
+ stor storage.Storage
+ path string
+ )
if storageUseFS {
for {
storageMu.Lock()
num := storageNum
storageNum++
storageMu.Unlock()
- path := filepath.Join(os.TempDir(), fmt.Sprintf("goleveldb-test%d0%d0%d", os.Getuid(), os.Getpid(), num))
+ path = filepath.Join(os.TempDir(), fmt.Sprintf("goleveldb-test%d0%d0%d", os.Getuid(), os.Getpid(), num))
if _, err := os.Stat(path); os.IsNotExist(err) {
- stor, err = storage.OpenFile(path)
+ stor, err = storage.OpenFile(path, false)
ExpectWithOffset(1, err).NotTo(HaveOccurred(), "creating storage at %s", path)
- closeFn = func() error {
- if storageKeepFS {
- return nil
- }
- return os.RemoveAll(path)
- }
break
}
}
@@ -578,9 +679,16 @@ func NewStorage() *Storage {
}
s := &Storage{
Storage: stor,
- closeFn: closeFn,
+ path: path,
+ rand: NewRand(),
opens: make(map[uint64]bool),
}
s.stallCond.L = &s.mu
+ if s.path != "" {
+ s.logI("using FS storage")
+ s.logI("storage path: %s", s.path)
+ } else {
+ s.logI("using MEM storage")
+ }
return s
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil_test.go
deleted file mode 100644
index 25bf2b29f..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/testutil_test.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package leveldb
-
-import (
- . "github.com/onsi/gomega"
-
- "github.com/syndtr/goleveldb/leveldb/iterator"
- "github.com/syndtr/goleveldb/leveldb/opt"
- "github.com/syndtr/goleveldb/leveldb/testutil"
- "github.com/syndtr/goleveldb/leveldb/util"
-)
-
-type testingDB struct {
- *DB
- ro *opt.ReadOptions
- wo *opt.WriteOptions
- stor *testutil.Storage
-}
-
-func (t *testingDB) TestPut(key []byte, value []byte) error {
- return t.Put(key, value, t.wo)
-}
-
-func (t *testingDB) TestDelete(key []byte) error {
- return t.Delete(key, t.wo)
-}
-
-func (t *testingDB) TestGet(key []byte) (value []byte, err error) {
- return t.Get(key, t.ro)
-}
-
-func (t *testingDB) TestHas(key []byte) (ret bool, err error) {
- return t.Has(key, t.ro)
-}
-
-func (t *testingDB) TestNewIterator(slice *util.Range) iterator.Iterator {
- return t.NewIterator(slice, t.ro)
-}
-
-func (t *testingDB) TestClose() {
- err := t.Close()
- ExpectWithOffset(1, err).NotTo(HaveOccurred())
- err = t.stor.Close()
- ExpectWithOffset(1, err).NotTo(HaveOccurred())
-}
-
-func newTestingDB(o *opt.Options, ro *opt.ReadOptions, wo *opt.WriteOptions) *testingDB {
- stor := testutil.NewStorage()
- db, err := Open(stor, o)
- // FIXME: This may be called from outside It, which may cause panic.
- Expect(err).NotTo(HaveOccurred())
- return &testingDB{
- DB: db,
- ro: ro,
- wo: wo,
- stor: stor,
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util.go
index 1a5bf71a3..3b663d1cc 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util.go
@@ -72,20 +72,20 @@ func maxInt(a, b int) int {
return b
}
-type files []storage.File
+type fdSorter []storage.FileDesc
-func (p files) Len() int {
+func (p fdSorter) Len() int {
return len(p)
}
-func (p files) Less(i, j int) bool {
- return p[i].Num() < p[j].Num()
+func (p fdSorter) Less(i, j int) bool {
+ return p[i].Num < p[j].Num
}
-func (p files) Swap(i, j int) {
+func (p fdSorter) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
-func (p files) sort() {
- sort.Sort(p)
+func sortFds(fds []storage.FileDesc) {
+ sort.Sort(fdSorter(fds))
}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go
index 2b8453d75..2f3db974a 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go
@@ -201,6 +201,7 @@ func (p *BufferPool) String() string {
func (p *BufferPool) drain() {
ticker := time.NewTicker(2 * time.Second)
+ defer ticker.Stop()
for {
select {
case <-ticker.C:
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_test.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_test.go
deleted file mode 100644
index 87d96739c..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/buffer_test.go
+++ /dev/null
@@ -1,369 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package util
-
-import (
- "bytes"
- "io"
- "math/rand"
- "runtime"
- "testing"
-)
-
-const N = 10000 // make this bigger for a larger (and slower) test
-var data string // test data for write tests
-var testBytes []byte // test data; same as data but as a slice.
-
-func init() {
- testBytes = make([]byte, N)
- for i := 0; i < N; i++ {
- testBytes[i] = 'a' + byte(i%26)
- }
- data = string(testBytes)
-}
-
-// Verify that contents of buf match the string s.
-func check(t *testing.T, testname string, buf *Buffer, s string) {
- bytes := buf.Bytes()
- str := buf.String()
- if buf.Len() != len(bytes) {
- t.Errorf("%s: buf.Len() == %d, len(buf.Bytes()) == %d", testname, buf.Len(), len(bytes))
- }
-
- if buf.Len() != len(str) {
- t.Errorf("%s: buf.Len() == %d, len(buf.String()) == %d", testname, buf.Len(), len(str))
- }
-
- if buf.Len() != len(s) {
- t.Errorf("%s: buf.Len() == %d, len(s) == %d", testname, buf.Len(), len(s))
- }
-
- if string(bytes) != s {
- t.Errorf("%s: string(buf.Bytes()) == %q, s == %q", testname, string(bytes), s)
- }
-}
-
-// Fill buf through n writes of byte slice fub.
-// The initial contents of buf corresponds to the string s;
-// the result is the final contents of buf returned as a string.
-func fillBytes(t *testing.T, testname string, buf *Buffer, s string, n int, fub []byte) string {
- check(t, testname+" (fill 1)", buf, s)
- for ; n > 0; n-- {
- m, err := buf.Write(fub)
- if m != len(fub) {
- t.Errorf(testname+" (fill 2): m == %d, expected %d", m, len(fub))
- }
- if err != nil {
- t.Errorf(testname+" (fill 3): err should always be nil, found err == %s", err)
- }
- s += string(fub)
- check(t, testname+" (fill 4)", buf, s)
- }
- return s
-}
-
-func TestNewBuffer(t *testing.T) {
- buf := NewBuffer(testBytes)
- check(t, "NewBuffer", buf, data)
-}
-
-// Empty buf through repeated reads into fub.
-// The initial contents of buf corresponds to the string s.
-func empty(t *testing.T, testname string, buf *Buffer, s string, fub []byte) {
- check(t, testname+" (empty 1)", buf, s)
-
- for {
- n, err := buf.Read(fub)
- if n == 0 {
- break
- }
- if err != nil {
- t.Errorf(testname+" (empty 2): err should always be nil, found err == %s", err)
- }
- s = s[n:]
- check(t, testname+" (empty 3)", buf, s)
- }
-
- check(t, testname+" (empty 4)", buf, "")
-}
-
-func TestBasicOperations(t *testing.T) {
- var buf Buffer
-
- for i := 0; i < 5; i++ {
- check(t, "TestBasicOperations (1)", &buf, "")
-
- buf.Reset()
- check(t, "TestBasicOperations (2)", &buf, "")
-
- buf.Truncate(0)
- check(t, "TestBasicOperations (3)", &buf, "")
-
- n, err := buf.Write([]byte(data[0:1]))
- if n != 1 {
- t.Errorf("wrote 1 byte, but n == %d", n)
- }
- if err != nil {
- t.Errorf("err should always be nil, but err == %s", err)
- }
- check(t, "TestBasicOperations (4)", &buf, "a")
-
- buf.WriteByte(data[1])
- check(t, "TestBasicOperations (5)", &buf, "ab")
-
- n, err = buf.Write([]byte(data[2:26]))
- if n != 24 {
- t.Errorf("wrote 25 bytes, but n == %d", n)
- }
- check(t, "TestBasicOperations (6)", &buf, string(data[0:26]))
-
- buf.Truncate(26)
- check(t, "TestBasicOperations (7)", &buf, string(data[0:26]))
-
- buf.Truncate(20)
- check(t, "TestBasicOperations (8)", &buf, string(data[0:20]))
-
- empty(t, "TestBasicOperations (9)", &buf, string(data[0:20]), make([]byte, 5))
- empty(t, "TestBasicOperations (10)", &buf, "", make([]byte, 100))
-
- buf.WriteByte(data[1])
- c, err := buf.ReadByte()
- if err != nil {
- t.Error("ReadByte unexpected eof")
- }
- if c != data[1] {
- t.Errorf("ReadByte wrong value c=%v", c)
- }
- c, err = buf.ReadByte()
- if err == nil {
- t.Error("ReadByte unexpected not eof")
- }
- }
-}
-
-func TestLargeByteWrites(t *testing.T) {
- var buf Buffer
- limit := 30
- if testing.Short() {
- limit = 9
- }
- for i := 3; i < limit; i += 3 {
- s := fillBytes(t, "TestLargeWrites (1)", &buf, "", 5, testBytes)
- empty(t, "TestLargeByteWrites (2)", &buf, s, make([]byte, len(data)/i))
- }
- check(t, "TestLargeByteWrites (3)", &buf, "")
-}
-
-func TestLargeByteReads(t *testing.T) {
- var buf Buffer
- for i := 3; i < 30; i += 3 {
- s := fillBytes(t, "TestLargeReads (1)", &buf, "", 5, testBytes[0:len(testBytes)/i])
- empty(t, "TestLargeReads (2)", &buf, s, make([]byte, len(data)))
- }
- check(t, "TestLargeByteReads (3)", &buf, "")
-}
-
-func TestMixedReadsAndWrites(t *testing.T) {
- var buf Buffer
- s := ""
- for i := 0; i < 50; i++ {
- wlen := rand.Intn(len(data))
- s = fillBytes(t, "TestMixedReadsAndWrites (1)", &buf, s, 1, testBytes[0:wlen])
- rlen := rand.Intn(len(data))
- fub := make([]byte, rlen)
- n, _ := buf.Read(fub)
- s = s[n:]
- }
- empty(t, "TestMixedReadsAndWrites (2)", &buf, s, make([]byte, buf.Len()))
-}
-
-func TestNil(t *testing.T) {
- var b *Buffer
- if b.String() != "<nil>" {
- t.Errorf("expected <nil>; got %q", b.String())
- }
-}
-
-func TestReadFrom(t *testing.T) {
- var buf Buffer
- for i := 3; i < 30; i += 3 {
- s := fillBytes(t, "TestReadFrom (1)", &buf, "", 5, testBytes[0:len(testBytes)/i])
- var b Buffer
- b.ReadFrom(&buf)
- empty(t, "TestReadFrom (2)", &b, s, make([]byte, len(data)))
- }
-}
-
-func TestWriteTo(t *testing.T) {
- var buf Buffer
- for i := 3; i < 30; i += 3 {
- s := fillBytes(t, "TestWriteTo (1)", &buf, "", 5, testBytes[0:len(testBytes)/i])
- var b Buffer
- buf.WriteTo(&b)
- empty(t, "TestWriteTo (2)", &b, s, make([]byte, len(data)))
- }
-}
-
-func TestNext(t *testing.T) {
- b := []byte{0, 1, 2, 3, 4}
- tmp := make([]byte, 5)
- for i := 0; i <= 5; i++ {
- for j := i; j <= 5; j++ {
- for k := 0; k <= 6; k++ {
- // 0 <= i <= j <= 5; 0 <= k <= 6
- // Check that if we start with a buffer
- // of length j at offset i and ask for
- // Next(k), we get the right bytes.
- buf := NewBuffer(b[0:j])
- n, _ := buf.Read(tmp[0:i])
- if n != i {
- t.Fatalf("Read %d returned %d", i, n)
- }
- bb := buf.Next(k)
- want := k
- if want > j-i {
- want = j - i
- }
- if len(bb) != want {
- t.Fatalf("in %d,%d: len(Next(%d)) == %d", i, j, k, len(bb))
- }
- for l, v := range bb {
- if v != byte(l+i) {
- t.Fatalf("in %d,%d: Next(%d)[%d] = %d, want %d", i, j, k, l, v, l+i)
- }
- }
- }
- }
- }
-}
-
-var readBytesTests = []struct {
- buffer string
- delim byte
- expected []string
- err error
-}{
- {"", 0, []string{""}, io.EOF},
- {"a\x00", 0, []string{"a\x00"}, nil},
- {"abbbaaaba", 'b', []string{"ab", "b", "b", "aaab"}, nil},
- {"hello\x01world", 1, []string{"hello\x01"}, nil},
- {"foo\nbar", 0, []string{"foo\nbar"}, io.EOF},
- {"alpha\nbeta\ngamma\n", '\n', []string{"alpha\n", "beta\n", "gamma\n"}, nil},
- {"alpha\nbeta\ngamma", '\n', []string{"alpha\n", "beta\n", "gamma"}, io.EOF},
-}
-
-func TestReadBytes(t *testing.T) {
- for _, test := range readBytesTests {
- buf := NewBuffer([]byte(test.buffer))
- var err error
- for _, expected := range test.expected {
- var bytes []byte
- bytes, err = buf.ReadBytes(test.delim)
- if string(bytes) != expected {
- t.Errorf("expected %q, got %q", expected, bytes)
- }
- if err != nil {
- break
- }
- }
- if err != test.err {
- t.Errorf("expected error %v, got %v", test.err, err)
- }
- }
-}
-
-func TestGrow(t *testing.T) {
- x := []byte{'x'}
- y := []byte{'y'}
- tmp := make([]byte, 72)
- for _, startLen := range []int{0, 100, 1000, 10000, 100000} {
- xBytes := bytes.Repeat(x, startLen)
- for _, growLen := range []int{0, 100, 1000, 10000, 100000} {
- buf := NewBuffer(xBytes)
- // If we read, this affects buf.off, which is good to test.
- readBytes, _ := buf.Read(tmp)
- buf.Grow(growLen)
- yBytes := bytes.Repeat(y, growLen)
- // Check no allocation occurs in write, as long as we're single-threaded.
- var m1, m2 runtime.MemStats
- runtime.ReadMemStats(&m1)
- buf.Write(yBytes)
- runtime.ReadMemStats(&m2)
- if runtime.GOMAXPROCS(-1) == 1 && m1.Mallocs != m2.Mallocs {
- t.Errorf("allocation occurred during write")
- }
- // Check that buffer has correct data.
- if !bytes.Equal(buf.Bytes()[0:startLen-readBytes], xBytes[readBytes:]) {
- t.Errorf("bad initial data at %d %d", startLen, growLen)
- }
- if !bytes.Equal(buf.Bytes()[startLen-readBytes:startLen-readBytes+growLen], yBytes) {
- t.Errorf("bad written data at %d %d", startLen, growLen)
- }
- }
- }
-}
-
-// Was a bug: used to give EOF reading empty slice at EOF.
-func TestReadEmptyAtEOF(t *testing.T) {
- b := new(Buffer)
- slice := make([]byte, 0)
- n, err := b.Read(slice)
- if err != nil {
- t.Errorf("read error: %v", err)
- }
- if n != 0 {
- t.Errorf("wrong count; got %d want 0", n)
- }
-}
-
-// Tests that we occasionally compact. Issue 5154.
-func TestBufferGrowth(t *testing.T) {
- var b Buffer
- buf := make([]byte, 1024)
- b.Write(buf[0:1])
- var cap0 int
- for i := 0; i < 5<<10; i++ {
- b.Write(buf)
- b.Read(buf)
- if i == 0 {
- cap0 = cap(b.buf)
- }
- }
- cap1 := cap(b.buf)
- // (*Buffer).grow allows for 2x capacity slop before sliding,
- // so set our error threshold at 3x.
- if cap1 > cap0*3 {
- t.Errorf("buffer cap = %d; too big (grew from %d)", cap1, cap0)
- }
-}
-
-// From Issue 5154.
-func BenchmarkBufferNotEmptyWriteRead(b *testing.B) {
- buf := make([]byte, 1024)
- for i := 0; i < b.N; i++ {
- var b Buffer
- b.Write(buf[0:1])
- for i := 0; i < 5<<10; i++ {
- b.Write(buf)
- b.Read(buf)
- }
- }
-}
-
-// Check that we don't compact too often. From Issue 5154.
-func BenchmarkBufferFullSmallReads(b *testing.B) {
- buf := make([]byte, 1024)
- for i := 0; i < b.N; i++ {
- var b Buffer
- b.Write(buf)
- for b.Len()+20 < cap(b.buf) {
- b.Write(buf[:10])
- }
- for i := 0; i < 5<<10; i++ {
- b.Read(buf[:1])
- b.Write(buf[:1])
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/version.go b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/version.go
index 88a52f53e..50870ed83 100644
--- a/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/version.go
+++ b/Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/version.go
@@ -7,6 +7,7 @@
package leveldb
import (
+ "fmt"
"sync/atomic"
"unsafe"
@@ -23,7 +24,7 @@ type tSet struct {
type version struct {
s *session
- tables []tFiles
+ levels []tFiles
// Level that should be compacted next and its compaction score.
// Score < 1 means compaction is not strictly needed. These fields
@@ -39,7 +40,7 @@ type version struct {
}
func newVersion(s *session) *version {
- return &version{s: s, tables: make([]tFiles, s.o.GetNumLevel())}
+ return &version{s: s}
}
func (v *version) releaseNB() {
@@ -51,18 +52,18 @@ func (v *version) releaseNB() {
panic("negative version ref")
}
- tables := make(map[uint64]bool)
- for _, tt := range v.next.tables {
+ nextTables := make(map[int64]bool)
+ for _, tt := range v.next.levels {
for _, t := range tt {
- num := t.file.Num()
- tables[num] = true
+ num := t.fd.Num
+ nextTables[num] = true
}
}
- for _, tt := range v.tables {
+ for _, tt := range v.levels {
for _, t := range tt {
- num := t.file.Num()
- if _, ok := tables[num]; !ok {
+ num := t.fd.Num
+ if _, ok := nextTables[num]; !ok {
v.s.tops.remove(t)
}
}
@@ -78,11 +79,26 @@ func (v *version) release() {
v.s.vmu.Unlock()
}
-func (v *version) walkOverlapping(ikey iKey, f func(level int, t *tFile) bool, lf func(level int) bool) {
+func (v *version) walkOverlapping(aux tFiles, ikey iKey, f func(level int, t *tFile) bool, lf func(level int) bool) {
ukey := ikey.ukey()
+ // Aux level.
+ if aux != nil {
+ for _, t := range aux {
+ if t.overlaps(v.s.icmp, ukey, ukey) {
+ if !f(-1, t) {
+ return
+ }
+ }
+ }
+
+ if lf != nil && !lf(-1) {
+ return
+ }
+ }
+
// Walk tables level-by-level.
- for level, tables := range v.tables {
+ for level, tables := range v.levels {
if len(tables) == 0 {
continue
}
@@ -114,7 +130,7 @@ func (v *version) walkOverlapping(ikey iKey, f func(level int, t *tFile) bool, l
}
}
-func (v *version) get(ikey iKey, ro *opt.ReadOptions, noValue bool) (value []byte, tcomp bool, err error) {
+func (v *version) get(aux tFiles, ikey iKey, ro *opt.ReadOptions, noValue bool) (value []byte, tcomp bool, err error) {
ukey := ikey.ukey()
var (
@@ -130,10 +146,10 @@ func (v *version) get(ikey iKey, ro *opt.ReadOptions, noValue bool) (value []byt
err = ErrNotFound
- // Since entries never hope across level, finding key/value
+ // Since entries never hop across level, finding key/value
// in smaller level make later levels irrelevant.
- v.walkOverlapping(ikey, func(level int, t *tFile) bool {
- if !tseek {
+ v.walkOverlapping(aux, ikey, func(level int, t *tFile) bool {
+ if level >= 0 && !tseek {
if tset == nil {
tset = &tSet{level, t}
} else {
@@ -150,6 +166,7 @@ func (v *version) get(ikey iKey, ro *opt.ReadOptions, noValue bool) (value []byt
} else {
fikey, fval, ferr = v.s.tops.find(t, ikey, ro)
}
+
switch ferr {
case nil:
case ErrNotFound:
@@ -161,7 +178,8 @@ func (v *version) get(ikey iKey, ro *opt.ReadOptions, noValue bool) (value []byt
if fukey, fseq, fkt, fkerr := parseIkey(fikey); fkerr == nil {
if v.s.icmp.uCompare(ukey, fukey) == 0 {
- if level == 0 {
+ // Level <= 0 may overlaps each-other.
+ if level <= 0 {
if fseq >= zseq {
zfound = true
zseq = fseq
@@ -212,7 +230,7 @@ func (v *version) get(ikey iKey, ro *opt.ReadOptions, noValue bool) (value []byt
func (v *version) sampleSeek(ikey iKey) (tcomp bool) {
var tset *tSet
- v.walkOverlapping(ikey, func(level int, t *tFile) bool {
+ v.walkOverlapping(nil, ikey, func(level int, t *tFile) bool {
if tset == nil {
tset = &tSet{level, t}
return true
@@ -228,27 +246,22 @@ func (v *version) sampleSeek(ikey iKey) (tcomp bool) {
}
func (v *version) getIterators(slice *util.Range, ro *opt.ReadOptions) (its []iterator.Iterator) {
- // Merge all level zero files together since they may overlap
- for _, t := range v.tables[0] {
- it := v.s.tops.newIterator(t, slice, ro)
- its = append(its, it)
- }
-
strict := opt.GetStrict(v.s.o.Options, ro, opt.StrictReader)
- for _, tables := range v.tables[1:] {
- if len(tables) == 0 {
- continue
+ for level, tables := range v.levels {
+ if level == 0 {
+ // Merge all level zero files together since they may overlap.
+ for _, t := range tables {
+ its = append(its, v.s.tops.newIterator(t, slice, ro))
+ }
+ } else if len(tables) != 0 {
+ its = append(its, iterator.NewIndexedIterator(tables.newIndexIterator(v.s.tops, v.s.icmp, slice, ro), strict))
}
-
- it := iterator.NewIndexedIterator(tables.newIndexIterator(v.s.tops, v.s.icmp, slice, ro), strict)
- its = append(its, it)
}
-
return
}
func (v *version) newStaging() *versionStaging {
- return &versionStaging{base: v, tables: make([]tablesScratch, v.s.o.GetNumLevel())}
+ return &versionStaging{base: v}
}
// Spawn a new version based on this version.
@@ -259,23 +272,26 @@ func (v *version) spawn(r *sessionRecord) *version {
}
func (v *version) fillRecord(r *sessionRecord) {
- for level, ts := range v.tables {
- for _, t := range ts {
+ for level, tables := range v.levels {
+ for _, t := range tables {
r.addTableFile(level, t)
}
}
}
func (v *version) tLen(level int) int {
- return len(v.tables[level])
+ if level < len(v.levels) {
+ return len(v.levels[level])
+ }
+ return 0
}
func (v *version) offsetOf(ikey iKey) (n uint64, err error) {
- for level, tables := range v.tables {
+ for level, tables := range v.levels {
for _, t := range tables {
if v.s.icmp.Compare(t.imax, ikey) <= 0 {
// Entire file is before "ikey", so just add the file size
- n += t.size
+ n += uint64(t.size)
} else if v.s.icmp.Compare(t.imin, ikey) > 0 {
// Entire file is after "ikey", so ignore
if level > 0 {
@@ -300,37 +316,50 @@ func (v *version) offsetOf(ikey iKey) (n uint64, err error) {
return
}
-func (v *version) pickLevel(umin, umax []byte) (level int) {
- if !v.tables[0].overlaps(v.s.icmp, umin, umax, true) {
- var overlaps tFiles
- maxLevel := v.s.o.GetMaxMemCompationLevel()
- for ; level < maxLevel; level++ {
- if v.tables[level+1].overlaps(v.s.icmp, umin, umax, false) {
- break
- }
- overlaps = v.tables[level+2].getOverlaps(overlaps, v.s.icmp, umin, umax, false)
- if overlaps.size() > uint64(v.s.o.GetCompactionGPOverlaps(level)) {
- break
+func (v *version) pickMemdbLevel(umin, umax []byte, maxLevel int) (level int) {
+ if maxLevel > 0 {
+ if len(v.levels) == 0 {
+ return maxLevel
+ }
+ if !v.levels[0].overlaps(v.s.icmp, umin, umax, true) {
+ var overlaps tFiles
+ for ; level < maxLevel; level++ {
+ if pLevel := level + 1; pLevel >= len(v.levels) {
+ return maxLevel
+ } else if v.levels[pLevel].overlaps(v.s.icmp, umin, umax, false) {
+ break
+ }
+ if gpLevel := level + 2; gpLevel < len(v.levels) {
+ overlaps = v.levels[gpLevel].getOverlaps(overlaps, v.s.icmp, umin, umax, false)
+ if overlaps.size() > int64(v.s.o.GetCompactionGPOverlaps(level)) {
+ break
+ }
+ }
}
}
}
-
return
}
func (v *version) computeCompaction() {
// Precomputed best level for next compaction
- var bestLevel int = -1
- var bestScore float64 = -1
+ bestLevel := int(-1)
+ bestScore := float64(-1)
- for level, tables := range v.tables {
+ statFiles := make([]int, len(v.levels))
+ statSizes := make([]string, len(v.levels))
+ statScore := make([]string, len(v.levels))
+ statTotSize := int64(0)
+
+ for level, tables := range v.levels {
var score float64
+ size := tables.size()
if level == 0 {
// We treat level-0 specially by bounding the number of files
// instead of number of bytes for two reasons:
//
// (1) With larger write-buffer sizes, it is nice not to do too
- // many level-0 compactions.
+ // many level-0 compaction.
//
// (2) The files in level-0 are merged on every read and
// therefore we wish to avoid too many files when the individual
@@ -339,17 +368,24 @@ func (v *version) computeCompaction() {
// overwrites/deletions).
score = float64(len(tables)) / float64(v.s.o.GetCompactionL0Trigger())
} else {
- score = float64(tables.size()) / float64(v.s.o.GetCompactionTotalSize(level))
+ score = float64(size) / float64(v.s.o.GetCompactionTotalSize(level))
}
if score > bestScore {
bestLevel = level
bestScore = score
}
+
+ statFiles[level] = len(tables)
+ statSizes[level] = shortenb(int(size))
+ statScore[level] = fmt.Sprintf("%.2f", score)
+ statTotSize += size
}
v.cLevel = bestLevel
v.cScore = bestScore
+
+ v.s.logf("version@stat F·%v S·%s%v Sc·%v", statFiles, shortenb(int(statTotSize)), statSizes, statScore)
}
func (v *version) needCompaction() bool {
@@ -357,43 +393,48 @@ func (v *version) needCompaction() bool {
}
type tablesScratch struct {
- added map[uint64]atRecord
- deleted map[uint64]struct{}
+ added map[int64]atRecord
+ deleted map[int64]struct{}
}
type versionStaging struct {
base *version
- tables []tablesScratch
+ levels []tablesScratch
+}
+
+func (p *versionStaging) getScratch(level int) *tablesScratch {
+ if level >= len(p.levels) {
+ newLevels := make([]tablesScratch, level+1)
+ copy(newLevels, p.levels)
+ p.levels = newLevels
+ }
+ return &(p.levels[level])
}
func (p *versionStaging) commit(r *sessionRecord) {
// Deleted tables.
for _, r := range r.deletedTables {
- tm := &(p.tables[r.level])
-
- if len(p.base.tables[r.level]) > 0 {
- if tm.deleted == nil {
- tm.deleted = make(map[uint64]struct{})
+ scratch := p.getScratch(r.level)
+ if r.level < len(p.base.levels) && len(p.base.levels[r.level]) > 0 {
+ if scratch.deleted == nil {
+ scratch.deleted = make(map[int64]struct{})
}
- tm.deleted[r.num] = struct{}{}
+ scratch.deleted[r.num] = struct{}{}
}
-
- if tm.added != nil {
- delete(tm.added, r.num)
+ if scratch.added != nil {
+ delete(scratch.added, r.num)
}
}
// New tables.
for _, r := range r.addedTables {
- tm := &(p.tables[r.level])
-
- if tm.added == nil {
- tm.added = make(map[uint64]atRecord)
+ scratch := p.getScratch(r.level)
+ if scratch.added == nil {
+ scratch.added = make(map[int64]atRecord)
}
- tm.added[r.num] = r
-
- if tm.deleted != nil {
- delete(tm.deleted, r.num)
+ scratch.added[r.num] = r
+ if scratch.deleted != nil {
+ delete(scratch.deleted, r.num)
}
}
}
@@ -401,40 +442,63 @@ func (p *versionStaging) commit(r *sessionRecord) {
func (p *versionStaging) finish() *version {
// Build new version.
nv := newVersion(p.base.s)
- for level, tm := range p.tables {
- btables := p.base.tables[level]
-
- n := len(btables) + len(tm.added) - len(tm.deleted)
- if n < 0 {
- n = 0
+ numLevel := len(p.levels)
+ if len(p.base.levels) > numLevel {
+ numLevel = len(p.base.levels)
+ }
+ nv.levels = make([]tFiles, numLevel)
+ for level := 0; level < numLevel; level++ {
+ var baseTabels tFiles
+ if level < len(p.base.levels) {
+ baseTabels = p.base.levels[level]
}
- nt := make(tFiles, 0, n)
- // Base tables.
- for _, t := range btables {
- if _, ok := tm.deleted[t.file.Num()]; ok {
- continue
+ if level < len(p.levels) {
+ scratch := p.levels[level]
+
+ var nt tFiles
+ // Prealloc list if possible.
+ if n := len(baseTabels) + len(scratch.added) - len(scratch.deleted); n > 0 {
+ nt = make(tFiles, 0, n)
}
- if _, ok := tm.added[t.file.Num()]; ok {
- continue
+
+ // Base tables.
+ for _, t := range baseTabels {
+ if _, ok := scratch.deleted[t.fd.Num]; ok {
+ continue
+ }
+ if _, ok := scratch.added[t.fd.Num]; ok {
+ continue
+ }
+ nt = append(nt, t)
}
- nt = append(nt, t)
- }
- // New tables.
- for _, r := range tm.added {
- nt = append(nt, p.base.s.tableFileFromRecord(r))
- }
+ // New tables.
+ for _, r := range scratch.added {
+ nt = append(nt, tableFileFromRecord(r))
+ }
- // Sort tables.
- if level == 0 {
- nt.sortByNum()
+ if len(nt) != 0 {
+ // Sort tables.
+ if level == 0 {
+ nt.sortByNum()
+ } else {
+ nt.sortByKey(p.base.s.icmp)
+ }
+
+ nv.levels[level] = nt
+ }
} else {
- nt.sortByKey(p.base.s.icmp)
+ nv.levels[level] = baseTabels
}
- nv.tables[level] = nt
}
+ // Trim levels.
+ n := len(nv.levels)
+ for ; n > 0 && nv.levels[n-1] == nil; n-- {
+ }
+ nv.levels = nv.levels[:n]
+
// Compute compaction score for new version.
nv.computeCompaction()
diff --git a/Godeps/_workspace/src/github.com/syndtr/gosnappy/LICENSE b/Godeps/_workspace/src/github.com/syndtr/gosnappy/LICENSE
new file mode 100644
index 000000000..6050c10f4
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/syndtr/gosnappy/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/snappy_test.go b/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/snappy_test.go
deleted file mode 100644
index 0623385b7..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/gosnappy/snappy/snappy_test.go
+++ /dev/null
@@ -1,364 +0,0 @@
-// Copyright 2011 The Snappy-Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package snappy
-
-import (
- "bytes"
- "flag"
- "fmt"
- "io"
- "io/ioutil"
- "math/rand"
- "net/http"
- "os"
- "path/filepath"
- "strings"
- "testing"
-)
-
-var (
- download = flag.Bool("download", false, "If true, download any missing files before running benchmarks")
- testdata = flag.String("testdata", "testdata", "Directory containing the test data")
-)
-
-func roundtrip(b, ebuf, dbuf []byte) error {
- e, err := Encode(ebuf, b)
- if err != nil {
- return fmt.Errorf("encoding error: %v", err)
- }
- d, err := Decode(dbuf, e)
- if err != nil {
- return fmt.Errorf("decoding error: %v", err)
- }
- if !bytes.Equal(b, d) {
- return fmt.Errorf("roundtrip mismatch:\n\twant %v\n\tgot %v", b, d)
- }
- return nil
-}
-
-func TestEmpty(t *testing.T) {
- if err := roundtrip(nil, nil, nil); err != nil {
- t.Fatal(err)
- }
-}
-
-func TestSmallCopy(t *testing.T) {
- for _, ebuf := range [][]byte{nil, make([]byte, 20), make([]byte, 64)} {
- for _, dbuf := range [][]byte{nil, make([]byte, 20), make([]byte, 64)} {
- for i := 0; i < 32; i++ {
- s := "aaaa" + strings.Repeat("b", i) + "aaaabbbb"
- if err := roundtrip([]byte(s), ebuf, dbuf); err != nil {
- t.Errorf("len(ebuf)=%d, len(dbuf)=%d, i=%d: %v", len(ebuf), len(dbuf), i, err)
- }
- }
- }
- }
-}
-
-func TestSmallRand(t *testing.T) {
- rng := rand.New(rand.NewSource(27354294))
- for n := 1; n < 20000; n += 23 {
- b := make([]byte, n)
- for i := range b {
- b[i] = uint8(rng.Uint32())
- }
- if err := roundtrip(b, nil, nil); err != nil {
- t.Fatal(err)
- }
- }
-}
-
-func TestSmallRegular(t *testing.T) {
- for n := 1; n < 20000; n += 23 {
- b := make([]byte, n)
- for i := range b {
- b[i] = uint8(i%10 + 'a')
- }
- if err := roundtrip(b, nil, nil); err != nil {
- t.Fatal(err)
- }
- }
-}
-
-func cmp(a, b []byte) error {
- if len(a) != len(b) {
- return fmt.Errorf("got %d bytes, want %d", len(a), len(b))
- }
- for i := range a {
- if a[i] != b[i] {
- return fmt.Errorf("byte #%d: got 0x%02x, want 0x%02x", i, a[i], b[i])
- }
- }
- return nil
-}
-
-func TestFramingFormat(t *testing.T) {
- // src is comprised of alternating 1e5-sized sequences of random
- // (incompressible) bytes and repeated (compressible) bytes. 1e5 was chosen
- // because it is larger than maxUncompressedChunkLen (64k).
- src := make([]byte, 1e6)
- rng := rand.New(rand.NewSource(1))
- for i := 0; i < 10; i++ {
- if i%2 == 0 {
- for j := 0; j < 1e5; j++ {
- src[1e5*i+j] = uint8(rng.Intn(256))
- }
- } else {
- for j := 0; j < 1e5; j++ {
- src[1e5*i+j] = uint8(i)
- }
- }
- }
-
- buf := new(bytes.Buffer)
- if _, err := NewWriter(buf).Write(src); err != nil {
- t.Fatalf("Write: encoding: %v", err)
- }
- dst, err := ioutil.ReadAll(NewReader(buf))
- if err != nil {
- t.Fatalf("ReadAll: decoding: %v", err)
- }
- if err := cmp(dst, src); err != nil {
- t.Fatal(err)
- }
-}
-
-func TestReaderReset(t *testing.T) {
- gold := bytes.Repeat([]byte("All that is gold does not glitter,\n"), 10000)
- buf := new(bytes.Buffer)
- if _, err := NewWriter(buf).Write(gold); err != nil {
- t.Fatalf("Write: %v", err)
- }
- encoded, invalid, partial := buf.String(), "invalid", "partial"
- r := NewReader(nil)
- for i, s := range []string{encoded, invalid, partial, encoded, partial, invalid, encoded, encoded} {
- if s == partial {
- r.Reset(strings.NewReader(encoded))
- if _, err := r.Read(make([]byte, 101)); err != nil {
- t.Errorf("#%d: %v", i, err)
- continue
- }
- continue
- }
- r.Reset(strings.NewReader(s))
- got, err := ioutil.ReadAll(r)
- switch s {
- case encoded:
- if err != nil {
- t.Errorf("#%d: %v", i, err)
- continue
- }
- if err := cmp(got, gold); err != nil {
- t.Errorf("#%d: %v", i, err)
- continue
- }
- case invalid:
- if err == nil {
- t.Errorf("#%d: got nil error, want non-nil", i)
- continue
- }
- }
- }
-}
-
-func TestWriterReset(t *testing.T) {
- gold := bytes.Repeat([]byte("Not all those who wander are lost;\n"), 10000)
- var gots, wants [][]byte
- const n = 20
- w, failed := NewWriter(nil), false
- for i := 0; i <= n; i++ {
- buf := new(bytes.Buffer)
- w.Reset(buf)
- want := gold[:len(gold)*i/n]
- if _, err := w.Write(want); err != nil {
- t.Errorf("#%d: Write: %v", i, err)
- failed = true
- continue
- }
- got, err := ioutil.ReadAll(NewReader(buf))
- if err != nil {
- t.Errorf("#%d: ReadAll: %v", i, err)
- failed = true
- continue
- }
- gots = append(gots, got)
- wants = append(wants, want)
- }
- if failed {
- return
- }
- for i := range gots {
- if err := cmp(gots[i], wants[i]); err != nil {
- t.Errorf("#%d: %v", i, err)
- }
- }
-}
-
-func benchDecode(b *testing.B, src []byte) {
- encoded, err := Encode(nil, src)
- if err != nil {
- b.Fatal(err)
- }
- // Bandwidth is in amount of uncompressed data.
- b.SetBytes(int64(len(src)))
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- Decode(src, encoded)
- }
-}
-
-func benchEncode(b *testing.B, src []byte) {
- // Bandwidth is in amount of uncompressed data.
- b.SetBytes(int64(len(src)))
- dst := make([]byte, MaxEncodedLen(len(src)))
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- Encode(dst, src)
- }
-}
-
-func readFile(b testing.TB, filename string) []byte {
- src, err := ioutil.ReadFile(filename)
- if err != nil {
- b.Fatalf("failed reading %s: %s", filename, err)
- }
- if len(src) == 0 {
- b.Fatalf("%s has zero length", filename)
- }
- return src
-}
-
-// expand returns a slice of length n containing repeated copies of src.
-func expand(src []byte, n int) []byte {
- dst := make([]byte, n)
- for x := dst; len(x) > 0; {
- i := copy(x, src)
- x = x[i:]
- }
- return dst
-}
-
-func benchWords(b *testing.B, n int, decode bool) {
- // Note: the file is OS-language dependent so the resulting values are not
- // directly comparable for non-US-English OS installations.
- data := expand(readFile(b, "/usr/share/dict/words"), n)
- if decode {
- benchDecode(b, data)
- } else {
- benchEncode(b, data)
- }
-}
-
-func BenchmarkWordsDecode1e3(b *testing.B) { benchWords(b, 1e3, true) }
-func BenchmarkWordsDecode1e4(b *testing.B) { benchWords(b, 1e4, true) }
-func BenchmarkWordsDecode1e5(b *testing.B) { benchWords(b, 1e5, true) }
-func BenchmarkWordsDecode1e6(b *testing.B) { benchWords(b, 1e6, true) }
-func BenchmarkWordsEncode1e3(b *testing.B) { benchWords(b, 1e3, false) }
-func BenchmarkWordsEncode1e4(b *testing.B) { benchWords(b, 1e4, false) }
-func BenchmarkWordsEncode1e5(b *testing.B) { benchWords(b, 1e5, false) }
-func BenchmarkWordsEncode1e6(b *testing.B) { benchWords(b, 1e6, false) }
-
-// testFiles' values are copied directly from
-// https://raw.githubusercontent.com/google/snappy/master/snappy_unittest.cc
-// The label field is unused in snappy-go.
-var testFiles = []struct {
- label string
- filename string
-}{
- {"html", "html"},
- {"urls", "urls.10K"},
- {"jpg", "fireworks.jpeg"},
- {"jpg_200", "fireworks.jpeg"},
- {"pdf", "paper-100k.pdf"},
- {"html4", "html_x_4"},
- {"txt1", "alice29.txt"},
- {"txt2", "asyoulik.txt"},
- {"txt3", "lcet10.txt"},
- {"txt4", "plrabn12.txt"},
- {"pb", "geo.protodata"},
- {"gaviota", "kppkn.gtb"},
-}
-
-// The test data files are present at this canonical URL.
-const baseURL = "https://raw.githubusercontent.com/google/snappy/master/testdata/"
-
-func downloadTestdata(basename string) (errRet error) {
- filename := filepath.Join(*testdata, basename)
- if stat, err := os.Stat(filename); err == nil && stat.Size() != 0 {
- return nil
- }
-
- if !*download {
- return fmt.Errorf("test data not found; skipping benchmark without the -download flag")
- }
- // Download the official snappy C++ implementation reference test data
- // files for benchmarking.
- if err := os.Mkdir(*testdata, 0777); err != nil && !os.IsExist(err) {
- return fmt.Errorf("failed to create testdata: %s", err)
- }
-
- f, err := os.Create(filename)
- if err != nil {
- return fmt.Errorf("failed to create %s: %s", filename, err)
- }
- defer f.Close()
- defer func() {
- if errRet != nil {
- os.Remove(filename)
- }
- }()
- url := baseURL + basename
- resp, err := http.Get(url)
- if err != nil {
- return fmt.Errorf("failed to download %s: %s", url, err)
- }
- defer resp.Body.Close()
- if s := resp.StatusCode; s != http.StatusOK {
- return fmt.Errorf("downloading %s: HTTP status code %d (%s)", url, s, http.StatusText(s))
- }
- _, err = io.Copy(f, resp.Body)
- if err != nil {
- return fmt.Errorf("failed to download %s to %s: %s", url, filename, err)
- }
- return nil
-}
-
-func benchFile(b *testing.B, n int, decode bool) {
- if err := downloadTestdata(testFiles[n].filename); err != nil {
- b.Fatalf("failed to download testdata: %s", err)
- }
- data := readFile(b, filepath.Join(*testdata, testFiles[n].filename))
- if decode {
- benchDecode(b, data)
- } else {
- benchEncode(b, data)
- }
-}
-
-// Naming convention is kept similar to what snappy's C++ implementation uses.
-func Benchmark_UFlat0(b *testing.B) { benchFile(b, 0, true) }
-func Benchmark_UFlat1(b *testing.B) { benchFile(b, 1, true) }
-func Benchmark_UFlat2(b *testing.B) { benchFile(b, 2, true) }
-func Benchmark_UFlat3(b *testing.B) { benchFile(b, 3, true) }
-func Benchmark_UFlat4(b *testing.B) { benchFile(b, 4, true) }
-func Benchmark_UFlat5(b *testing.B) { benchFile(b, 5, true) }
-func Benchmark_UFlat6(b *testing.B) { benchFile(b, 6, true) }
-func Benchmark_UFlat7(b *testing.B) { benchFile(b, 7, true) }
-func Benchmark_UFlat8(b *testing.B) { benchFile(b, 8, true) }
-func Benchmark_UFlat9(b *testing.B) { benchFile(b, 9, true) }
-func Benchmark_UFlat10(b *testing.B) { benchFile(b, 10, true) }
-func Benchmark_UFlat11(b *testing.B) { benchFile(b, 11, true) }
-func Benchmark_ZFlat0(b *testing.B) { benchFile(b, 0, false) }
-func Benchmark_ZFlat1(b *testing.B) { benchFile(b, 1, false) }
-func Benchmark_ZFlat2(b *testing.B) { benchFile(b, 2, false) }
-func Benchmark_ZFlat3(b *testing.B) { benchFile(b, 3, false) }
-func Benchmark_ZFlat4(b *testing.B) { benchFile(b, 4, false) }
-func Benchmark_ZFlat5(b *testing.B) { benchFile(b, 5, false) }
-func Benchmark_ZFlat6(b *testing.B) { benchFile(b, 6, false) }
-func Benchmark_ZFlat7(b *testing.B) { benchFile(b, 7, false) }
-func Benchmark_ZFlat8(b *testing.B) { benchFile(b, 8, false) }
-func Benchmark_ZFlat9(b *testing.B) { benchFile(b, 9, false) }
-func Benchmark_ZFlat10(b *testing.B) { benchFile(b, 10, false) }
-func Benchmark_ZFlat11(b *testing.B) { benchFile(b, 11, false) }
diff --git a/Godeps/_workspace/src/golang.org/x/crypto/LICENSE b/Godeps/_workspace/src/golang.org/x/crypto/LICENSE
new file mode 100644
index 000000000..6a66aea5e
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/crypto/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/golang.org/x/crypto/PATENTS b/Godeps/_workspace/src/golang.org/x/crypto/PATENTS
new file mode 100644
index 000000000..733099041
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/crypto/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/Godeps/_workspace/src/golang.org/x/crypto/pbkdf2/pbkdf2_test.go b/Godeps/_workspace/src/golang.org/x/crypto/pbkdf2/pbkdf2_test.go
deleted file mode 100644
index 137924061..000000000
--- a/Godeps/_workspace/src/golang.org/x/crypto/pbkdf2/pbkdf2_test.go
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package pbkdf2
-
-import (
- "bytes"
- "crypto/sha1"
- "crypto/sha256"
- "hash"
- "testing"
-)
-
-type testVector struct {
- password string
- salt string
- iter int
- output []byte
-}
-
-// Test vectors from RFC 6070, http://tools.ietf.org/html/rfc6070
-var sha1TestVectors = []testVector{
- {
- "password",
- "salt",
- 1,
- []byte{
- 0x0c, 0x60, 0xc8, 0x0f, 0x96, 0x1f, 0x0e, 0x71,
- 0xf3, 0xa9, 0xb5, 0x24, 0xaf, 0x60, 0x12, 0x06,
- 0x2f, 0xe0, 0x37, 0xa6,
- },
- },
- {
- "password",
- "salt",
- 2,
- []byte{
- 0xea, 0x6c, 0x01, 0x4d, 0xc7, 0x2d, 0x6f, 0x8c,
- 0xcd, 0x1e, 0xd9, 0x2a, 0xce, 0x1d, 0x41, 0xf0,
- 0xd8, 0xde, 0x89, 0x57,
- },
- },
- {
- "password",
- "salt",
- 4096,
- []byte{
- 0x4b, 0x00, 0x79, 0x01, 0xb7, 0x65, 0x48, 0x9a,
- 0xbe, 0xad, 0x49, 0xd9, 0x26, 0xf7, 0x21, 0xd0,
- 0x65, 0xa4, 0x29, 0xc1,
- },
- },
- // // This one takes too long
- // {
- // "password",
- // "salt",
- // 16777216,
- // []byte{
- // 0xee, 0xfe, 0x3d, 0x61, 0xcd, 0x4d, 0xa4, 0xe4,
- // 0xe9, 0x94, 0x5b, 0x3d, 0x6b, 0xa2, 0x15, 0x8c,
- // 0x26, 0x34, 0xe9, 0x84,
- // },
- // },
- {
- "passwordPASSWORDpassword",
- "saltSALTsaltSALTsaltSALTsaltSALTsalt",
- 4096,
- []byte{
- 0x3d, 0x2e, 0xec, 0x4f, 0xe4, 0x1c, 0x84, 0x9b,
- 0x80, 0xc8, 0xd8, 0x36, 0x62, 0xc0, 0xe4, 0x4a,
- 0x8b, 0x29, 0x1a, 0x96, 0x4c, 0xf2, 0xf0, 0x70,
- 0x38,
- },
- },
- {
- "pass\000word",
- "sa\000lt",
- 4096,
- []byte{
- 0x56, 0xfa, 0x6a, 0xa7, 0x55, 0x48, 0x09, 0x9d,
- 0xcc, 0x37, 0xd7, 0xf0, 0x34, 0x25, 0xe0, 0xc3,
- },
- },
-}
-
-// Test vectors from
-// http://stackoverflow.com/questions/5130513/pbkdf2-hmac-sha2-test-vectors
-var sha256TestVectors = []testVector{
- {
- "password",
- "salt",
- 1,
- []byte{
- 0x12, 0x0f, 0xb6, 0xcf, 0xfc, 0xf8, 0xb3, 0x2c,
- 0x43, 0xe7, 0x22, 0x52, 0x56, 0xc4, 0xf8, 0x37,
- 0xa8, 0x65, 0x48, 0xc9,
- },
- },
- {
- "password",
- "salt",
- 2,
- []byte{
- 0xae, 0x4d, 0x0c, 0x95, 0xaf, 0x6b, 0x46, 0xd3,
- 0x2d, 0x0a, 0xdf, 0xf9, 0x28, 0xf0, 0x6d, 0xd0,
- 0x2a, 0x30, 0x3f, 0x8e,
- },
- },
- {
- "password",
- "salt",
- 4096,
- []byte{
- 0xc5, 0xe4, 0x78, 0xd5, 0x92, 0x88, 0xc8, 0x41,
- 0xaa, 0x53, 0x0d, 0xb6, 0x84, 0x5c, 0x4c, 0x8d,
- 0x96, 0x28, 0x93, 0xa0,
- },
- },
- {
- "passwordPASSWORDpassword",
- "saltSALTsaltSALTsaltSALTsaltSALTsalt",
- 4096,
- []byte{
- 0x34, 0x8c, 0x89, 0xdb, 0xcb, 0xd3, 0x2b, 0x2f,
- 0x32, 0xd8, 0x14, 0xb8, 0x11, 0x6e, 0x84, 0xcf,
- 0x2b, 0x17, 0x34, 0x7e, 0xbc, 0x18, 0x00, 0x18,
- 0x1c,
- },
- },
- {
- "pass\000word",
- "sa\000lt",
- 4096,
- []byte{
- 0x89, 0xb6, 0x9d, 0x05, 0x16, 0xf8, 0x29, 0x89,
- 0x3c, 0x69, 0x62, 0x26, 0x65, 0x0a, 0x86, 0x87,
- },
- },
-}
-
-func testHash(t *testing.T, h func() hash.Hash, hashName string, vectors []testVector) {
- for i, v := range vectors {
- o := Key([]byte(v.password), []byte(v.salt), v.iter, len(v.output), h)
- if !bytes.Equal(o, v.output) {
- t.Errorf("%s %d: expected %x, got %x", hashName, i, v.output, o)
- }
- }
-}
-
-func TestWithHMACSHA1(t *testing.T) {
- testHash(t, sha1.New, "SHA1", sha1TestVectors)
-}
-
-func TestWithHMACSHA256(t *testing.T) {
- testHash(t, sha256.New, "SHA256", sha256TestVectors)
-}
diff --git a/Godeps/_workspace/src/golang.org/x/crypto/ripemd160/ripemd160_test.go b/Godeps/_workspace/src/golang.org/x/crypto/ripemd160/ripemd160_test.go
deleted file mode 100644
index 5df1b2593..000000000
--- a/Godeps/_workspace/src/golang.org/x/crypto/ripemd160/ripemd160_test.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ripemd160
-
-// Test vectors are from:
-// http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
-
-import (
- "fmt"
- "io"
- "testing"
-)
-
-type mdTest struct {
- out string
- in string
-}
-
-var vectors = [...]mdTest{
- {"9c1185a5c5e9fc54612808977ee8f548b2258d31", ""},
- {"0bdc9d2d256b3ee9daae347be6f4dc835a467ffe", "a"},
- {"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc", "abc"},
- {"5d0689ef49d2fae572b881b123a85ffa21595f36", "message digest"},
- {"f71c27109c692c1b56bbdceb5b9d2865b3708dbc", "abcdefghijklmnopqrstuvwxyz"},
- {"12a053384a9c0c88e405a06c27dcf49ada62eb2b", "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"},
- {"b0e20b6e3116640286ed3a87a5713079b21f5189", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"},
- {"9b752e45573d4b39f4dbd3323cab82bf63326bfb", "12345678901234567890123456789012345678901234567890123456789012345678901234567890"},
-}
-
-func TestVectors(t *testing.T) {
- for i := 0; i < len(vectors); i++ {
- tv := vectors[i]
- md := New()
- for j := 0; j < 3; j++ {
- if j < 2 {
- io.WriteString(md, tv.in)
- } else {
- io.WriteString(md, tv.in[0:len(tv.in)/2])
- md.Sum(nil)
- io.WriteString(md, tv.in[len(tv.in)/2:])
- }
- s := fmt.Sprintf("%x", md.Sum(nil))
- if s != tv.out {
- t.Fatalf("RIPEMD-160[%d](%s) = %s, expected %s", j, tv.in, s, tv.out)
- }
- md.Reset()
- }
- }
-}
-
-func TestMillionA(t *testing.T) {
- md := New()
- for i := 0; i < 100000; i++ {
- io.WriteString(md, "aaaaaaaaaa")
- }
- out := "52783243c1697bdbe16d37f97f68f08325dc1528"
- s := fmt.Sprintf("%x", md.Sum(nil))
- if s != out {
- t.Fatalf("RIPEMD-160 (1 million 'a') = %s, expected %s", s, out)
- }
- md.Reset()
-}
diff --git a/Godeps/_workspace/src/golang.org/x/crypto/scrypt/scrypt_test.go b/Godeps/_workspace/src/golang.org/x/crypto/scrypt/scrypt_test.go
deleted file mode 100644
index e096c3a31..000000000
--- a/Godeps/_workspace/src/golang.org/x/crypto/scrypt/scrypt_test.go
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package scrypt
-
-import (
- "bytes"
- "testing"
-)
-
-type testVector struct {
- password string
- salt string
- N, r, p int
- output []byte
-}
-
-var good = []testVector{
- {
- "password",
- "salt",
- 2, 10, 10,
- []byte{
- 0x48, 0x2c, 0x85, 0x8e, 0x22, 0x90, 0x55, 0xe6, 0x2f,
- 0x41, 0xe0, 0xec, 0x81, 0x9a, 0x5e, 0xe1, 0x8b, 0xdb,
- 0x87, 0x25, 0x1a, 0x53, 0x4f, 0x75, 0xac, 0xd9, 0x5a,
- 0xc5, 0xe5, 0xa, 0xa1, 0x5f,
- },
- },
- {
- "password",
- "salt",
- 16, 100, 100,
- []byte{
- 0x88, 0xbd, 0x5e, 0xdb, 0x52, 0xd1, 0xdd, 0x0, 0x18,
- 0x87, 0x72, 0xad, 0x36, 0x17, 0x12, 0x90, 0x22, 0x4e,
- 0x74, 0x82, 0x95, 0x25, 0xb1, 0x8d, 0x73, 0x23, 0xa5,
- 0x7f, 0x91, 0x96, 0x3c, 0x37,
- },
- },
- {
- "this is a long \000 password",
- "and this is a long \000 salt",
- 16384, 8, 1,
- []byte{
- 0xc3, 0xf1, 0x82, 0xee, 0x2d, 0xec, 0x84, 0x6e, 0x70,
- 0xa6, 0x94, 0x2f, 0xb5, 0x29, 0x98, 0x5a, 0x3a, 0x09,
- 0x76, 0x5e, 0xf0, 0x4c, 0x61, 0x29, 0x23, 0xb1, 0x7f,
- 0x18, 0x55, 0x5a, 0x37, 0x07, 0x6d, 0xeb, 0x2b, 0x98,
- 0x30, 0xd6, 0x9d, 0xe5, 0x49, 0x26, 0x51, 0xe4, 0x50,
- 0x6a, 0xe5, 0x77, 0x6d, 0x96, 0xd4, 0x0f, 0x67, 0xaa,
- 0xee, 0x37, 0xe1, 0x77, 0x7b, 0x8a, 0xd5, 0xc3, 0x11,
- 0x14, 0x32, 0xbb, 0x3b, 0x6f, 0x7e, 0x12, 0x64, 0x40,
- 0x18, 0x79, 0xe6, 0x41, 0xae,
- },
- },
- {
- "p",
- "s",
- 2, 1, 1,
- []byte{
- 0x48, 0xb0, 0xd2, 0xa8, 0xa3, 0x27, 0x26, 0x11, 0x98,
- 0x4c, 0x50, 0xeb, 0xd6, 0x30, 0xaf, 0x52,
- },
- },
-
- {
- "",
- "",
- 16, 1, 1,
- []byte{
- 0x77, 0xd6, 0x57, 0x62, 0x38, 0x65, 0x7b, 0x20, 0x3b,
- 0x19, 0xca, 0x42, 0xc1, 0x8a, 0x04, 0x97, 0xf1, 0x6b,
- 0x48, 0x44, 0xe3, 0x07, 0x4a, 0xe8, 0xdf, 0xdf, 0xfa,
- 0x3f, 0xed, 0xe2, 0x14, 0x42, 0xfc, 0xd0, 0x06, 0x9d,
- 0xed, 0x09, 0x48, 0xf8, 0x32, 0x6a, 0x75, 0x3a, 0x0f,
- 0xc8, 0x1f, 0x17, 0xe8, 0xd3, 0xe0, 0xfb, 0x2e, 0x0d,
- 0x36, 0x28, 0xcf, 0x35, 0xe2, 0x0c, 0x38, 0xd1, 0x89,
- 0x06,
- },
- },
- {
- "password",
- "NaCl",
- 1024, 8, 16,
- []byte{
- 0xfd, 0xba, 0xbe, 0x1c, 0x9d, 0x34, 0x72, 0x00, 0x78,
- 0x56, 0xe7, 0x19, 0x0d, 0x01, 0xe9, 0xfe, 0x7c, 0x6a,
- 0xd7, 0xcb, 0xc8, 0x23, 0x78, 0x30, 0xe7, 0x73, 0x76,
- 0x63, 0x4b, 0x37, 0x31, 0x62, 0x2e, 0xaf, 0x30, 0xd9,
- 0x2e, 0x22, 0xa3, 0x88, 0x6f, 0xf1, 0x09, 0x27, 0x9d,
- 0x98, 0x30, 0xda, 0xc7, 0x27, 0xaf, 0xb9, 0x4a, 0x83,
- 0xee, 0x6d, 0x83, 0x60, 0xcb, 0xdf, 0xa2, 0xcc, 0x06,
- 0x40,
- },
- },
- {
- "pleaseletmein", "SodiumChloride",
- 16384, 8, 1,
- []byte{
- 0x70, 0x23, 0xbd, 0xcb, 0x3a, 0xfd, 0x73, 0x48, 0x46,
- 0x1c, 0x06, 0xcd, 0x81, 0xfd, 0x38, 0xeb, 0xfd, 0xa8,
- 0xfb, 0xba, 0x90, 0x4f, 0x8e, 0x3e, 0xa9, 0xb5, 0x43,
- 0xf6, 0x54, 0x5d, 0xa1, 0xf2, 0xd5, 0x43, 0x29, 0x55,
- 0x61, 0x3f, 0x0f, 0xcf, 0x62, 0xd4, 0x97, 0x05, 0x24,
- 0x2a, 0x9a, 0xf9, 0xe6, 0x1e, 0x85, 0xdc, 0x0d, 0x65,
- 0x1e, 0x40, 0xdf, 0xcf, 0x01, 0x7b, 0x45, 0x57, 0x58,
- 0x87,
- },
- },
- /*
- // Disabled: needs 1 GiB RAM and takes too long for a simple test.
- {
- "pleaseletmein", "SodiumChloride",
- 1048576, 8, 1,
- []byte{
- 0x21, 0x01, 0xcb, 0x9b, 0x6a, 0x51, 0x1a, 0xae, 0xad,
- 0xdb, 0xbe, 0x09, 0xcf, 0x70, 0xf8, 0x81, 0xec, 0x56,
- 0x8d, 0x57, 0x4a, 0x2f, 0xfd, 0x4d, 0xab, 0xe5, 0xee,
- 0x98, 0x20, 0xad, 0xaa, 0x47, 0x8e, 0x56, 0xfd, 0x8f,
- 0x4b, 0xa5, 0xd0, 0x9f, 0xfa, 0x1c, 0x6d, 0x92, 0x7c,
- 0x40, 0xf4, 0xc3, 0x37, 0x30, 0x40, 0x49, 0xe8, 0xa9,
- 0x52, 0xfb, 0xcb, 0xf4, 0x5c, 0x6f, 0xa7, 0x7a, 0x41,
- 0xa4,
- },
- },
- */
-}
-
-var bad = []testVector{
- {"p", "s", 0, 1, 1, nil}, // N == 0
- {"p", "s", 1, 1, 1, nil}, // N == 1
- {"p", "s", 7, 8, 1, nil}, // N is not power of 2
- {"p", "s", 16, maxInt / 2, maxInt / 2, nil}, // p * r too large
-}
-
-func TestKey(t *testing.T) {
- for i, v := range good {
- k, err := Key([]byte(v.password), []byte(v.salt), v.N, v.r, v.p, len(v.output))
- if err != nil {
- t.Errorf("%d: got unexpected error: %s", i, err)
- }
- if !bytes.Equal(k, v.output) {
- t.Errorf("%d: expected %x, got %x", i, v.output, k)
- }
- }
- for i, v := range bad {
- _, err := Key([]byte(v.password), []byte(v.salt), v.N, v.r, v.p, 32)
- if err == nil {
- t.Errorf("%d: expected error, got nil", i)
- }
- }
-}
-
-func BenchmarkKey(b *testing.B) {
- for i := 0; i < b.N; i++ {
- Key([]byte("password"), []byte("salt"), 16384, 8, 1, 64)
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/LICENSE b/Godeps/_workspace/src/golang.org/x/net/LICENSE
new file mode 100644
index 000000000..6a66aea5e
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/net/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/golang.org/x/net/PATENTS b/Godeps/_workspace/src/golang.org/x/net/PATENTS
new file mode 100644
index 000000000..733099041
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/net/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/context.go b/Godeps/_workspace/src/golang.org/x/net/context/context.go
index e7ee376c4..11bd8d34e 100644
--- a/Godeps/_workspace/src/golang.org/x/net/context/context.go
+++ b/Godeps/_workspace/src/golang.org/x/net/context/context.go
@@ -34,7 +34,7 @@
//
// See http://blog.golang.org/context for example code for a server that uses
// Contexts.
-package context // import "golang.org/x/net/context"
+package context
import (
"errors"
@@ -189,7 +189,7 @@ func Background() Context {
}
// TODO returns a non-nil, empty Context. Code should use context.TODO when
-// it's unclear which Context to use or it's is not yet available (because the
+// it's unclear which Context to use or it is not yet available (because the
// surrounding function has not yet been extended to accept a Context
// parameter). TODO is recognized by static analysis tools that determine
// whether Contexts are propagated correctly in a program.
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/context_test.go b/Godeps/_workspace/src/golang.org/x/net/context/context_test.go
deleted file mode 100644
index faf67722a..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/context/context_test.go
+++ /dev/null
@@ -1,575 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package context
-
-import (
- "fmt"
- "math/rand"
- "runtime"
- "strings"
- "sync"
- "testing"
- "time"
-)
-
-// otherContext is a Context that's not one of the types defined in context.go.
-// This lets us test code paths that differ based on the underlying type of the
-// Context.
-type otherContext struct {
- Context
-}
-
-func TestBackground(t *testing.T) {
- c := Background()
- if c == nil {
- t.Fatalf("Background returned nil")
- }
- select {
- case x := <-c.Done():
- t.Errorf("<-c.Done() == %v want nothing (it should block)", x)
- default:
- }
- if got, want := fmt.Sprint(c), "context.Background"; got != want {
- t.Errorf("Background().String() = %q want %q", got, want)
- }
-}
-
-func TestTODO(t *testing.T) {
- c := TODO()
- if c == nil {
- t.Fatalf("TODO returned nil")
- }
- select {
- case x := <-c.Done():
- t.Errorf("<-c.Done() == %v want nothing (it should block)", x)
- default:
- }
- if got, want := fmt.Sprint(c), "context.TODO"; got != want {
- t.Errorf("TODO().String() = %q want %q", got, want)
- }
-}
-
-func TestWithCancel(t *testing.T) {
- c1, cancel := WithCancel(Background())
-
- if got, want := fmt.Sprint(c1), "context.Background.WithCancel"; got != want {
- t.Errorf("c1.String() = %q want %q", got, want)
- }
-
- o := otherContext{c1}
- c2, _ := WithCancel(o)
- contexts := []Context{c1, o, c2}
-
- for i, c := range contexts {
- if d := c.Done(); d == nil {
- t.Errorf("c[%d].Done() == %v want non-nil", i, d)
- }
- if e := c.Err(); e != nil {
- t.Errorf("c[%d].Err() == %v want nil", i, e)
- }
-
- select {
- case x := <-c.Done():
- t.Errorf("<-c.Done() == %v want nothing (it should block)", x)
- default:
- }
- }
-
- cancel()
- time.Sleep(100 * time.Millisecond) // let cancelation propagate
-
- for i, c := range contexts {
- select {
- case <-c.Done():
- default:
- t.Errorf("<-c[%d].Done() blocked, but shouldn't have", i)
- }
- if e := c.Err(); e != Canceled {
- t.Errorf("c[%d].Err() == %v want %v", i, e, Canceled)
- }
- }
-}
-
-func TestParentFinishesChild(t *testing.T) {
- // Context tree:
- // parent -> cancelChild
- // parent -> valueChild -> timerChild
- parent, cancel := WithCancel(Background())
- cancelChild, stop := WithCancel(parent)
- defer stop()
- valueChild := WithValue(parent, "key", "value")
- timerChild, stop := WithTimeout(valueChild, 10000*time.Hour)
- defer stop()
-
- select {
- case x := <-parent.Done():
- t.Errorf("<-parent.Done() == %v want nothing (it should block)", x)
- case x := <-cancelChild.Done():
- t.Errorf("<-cancelChild.Done() == %v want nothing (it should block)", x)
- case x := <-timerChild.Done():
- t.Errorf("<-timerChild.Done() == %v want nothing (it should block)", x)
- case x := <-valueChild.Done():
- t.Errorf("<-valueChild.Done() == %v want nothing (it should block)", x)
- default:
- }
-
- // The parent's children should contain the two cancelable children.
- pc := parent.(*cancelCtx)
- cc := cancelChild.(*cancelCtx)
- tc := timerChild.(*timerCtx)
- pc.mu.Lock()
- if len(pc.children) != 2 || !pc.children[cc] || !pc.children[tc] {
- t.Errorf("bad linkage: pc.children = %v, want %v and %v",
- pc.children, cc, tc)
- }
- pc.mu.Unlock()
-
- if p, ok := parentCancelCtx(cc.Context); !ok || p != pc {
- t.Errorf("bad linkage: parentCancelCtx(cancelChild.Context) = %v, %v want %v, true", p, ok, pc)
- }
- if p, ok := parentCancelCtx(tc.Context); !ok || p != pc {
- t.Errorf("bad linkage: parentCancelCtx(timerChild.Context) = %v, %v want %v, true", p, ok, pc)
- }
-
- cancel()
-
- pc.mu.Lock()
- if len(pc.children) != 0 {
- t.Errorf("pc.cancel didn't clear pc.children = %v", pc.children)
- }
- pc.mu.Unlock()
-
- // parent and children should all be finished.
- check := func(ctx Context, name string) {
- select {
- case <-ctx.Done():
- default:
- t.Errorf("<-%s.Done() blocked, but shouldn't have", name)
- }
- if e := ctx.Err(); e != Canceled {
- t.Errorf("%s.Err() == %v want %v", name, e, Canceled)
- }
- }
- check(parent, "parent")
- check(cancelChild, "cancelChild")
- check(valueChild, "valueChild")
- check(timerChild, "timerChild")
-
- // WithCancel should return a canceled context on a canceled parent.
- precanceledChild := WithValue(parent, "key", "value")
- select {
- case <-precanceledChild.Done():
- default:
- t.Errorf("<-precanceledChild.Done() blocked, but shouldn't have")
- }
- if e := precanceledChild.Err(); e != Canceled {
- t.Errorf("precanceledChild.Err() == %v want %v", e, Canceled)
- }
-}
-
-func TestChildFinishesFirst(t *testing.T) {
- cancelable, stop := WithCancel(Background())
- defer stop()
- for _, parent := range []Context{Background(), cancelable} {
- child, cancel := WithCancel(parent)
-
- select {
- case x := <-parent.Done():
- t.Errorf("<-parent.Done() == %v want nothing (it should block)", x)
- case x := <-child.Done():
- t.Errorf("<-child.Done() == %v want nothing (it should block)", x)
- default:
- }
-
- cc := child.(*cancelCtx)
- pc, pcok := parent.(*cancelCtx) // pcok == false when parent == Background()
- if p, ok := parentCancelCtx(cc.Context); ok != pcok || (ok && pc != p) {
- t.Errorf("bad linkage: parentCancelCtx(cc.Context) = %v, %v want %v, %v", p, ok, pc, pcok)
- }
-
- if pcok {
- pc.mu.Lock()
- if len(pc.children) != 1 || !pc.children[cc] {
- t.Errorf("bad linkage: pc.children = %v, cc = %v", pc.children, cc)
- }
- pc.mu.Unlock()
- }
-
- cancel()
-
- if pcok {
- pc.mu.Lock()
- if len(pc.children) != 0 {
- t.Errorf("child's cancel didn't remove self from pc.children = %v", pc.children)
- }
- pc.mu.Unlock()
- }
-
- // child should be finished.
- select {
- case <-child.Done():
- default:
- t.Errorf("<-child.Done() blocked, but shouldn't have")
- }
- if e := child.Err(); e != Canceled {
- t.Errorf("child.Err() == %v want %v", e, Canceled)
- }
-
- // parent should not be finished.
- select {
- case x := <-parent.Done():
- t.Errorf("<-parent.Done() == %v want nothing (it should block)", x)
- default:
- }
- if e := parent.Err(); e != nil {
- t.Errorf("parent.Err() == %v want nil", e)
- }
- }
-}
-
-func testDeadline(c Context, wait time.Duration, t *testing.T) {
- select {
- case <-time.After(wait):
- t.Fatalf("context should have timed out")
- case <-c.Done():
- }
- if e := c.Err(); e != DeadlineExceeded {
- t.Errorf("c.Err() == %v want %v", e, DeadlineExceeded)
- }
-}
-
-func TestDeadline(t *testing.T) {
- c, _ := WithDeadline(Background(), time.Now().Add(100*time.Millisecond))
- if got, prefix := fmt.Sprint(c), "context.Background.WithDeadline("; !strings.HasPrefix(got, prefix) {
- t.Errorf("c.String() = %q want prefix %q", got, prefix)
- }
- testDeadline(c, 200*time.Millisecond, t)
-
- c, _ = WithDeadline(Background(), time.Now().Add(100*time.Millisecond))
- o := otherContext{c}
- testDeadline(o, 200*time.Millisecond, t)
-
- c, _ = WithDeadline(Background(), time.Now().Add(100*time.Millisecond))
- o = otherContext{c}
- c, _ = WithDeadline(o, time.Now().Add(300*time.Millisecond))
- testDeadline(c, 200*time.Millisecond, t)
-}
-
-func TestTimeout(t *testing.T) {
- c, _ := WithTimeout(Background(), 100*time.Millisecond)
- if got, prefix := fmt.Sprint(c), "context.Background.WithDeadline("; !strings.HasPrefix(got, prefix) {
- t.Errorf("c.String() = %q want prefix %q", got, prefix)
- }
- testDeadline(c, 200*time.Millisecond, t)
-
- c, _ = WithTimeout(Background(), 100*time.Millisecond)
- o := otherContext{c}
- testDeadline(o, 200*time.Millisecond, t)
-
- c, _ = WithTimeout(Background(), 100*time.Millisecond)
- o = otherContext{c}
- c, _ = WithTimeout(o, 300*time.Millisecond)
- testDeadline(c, 200*time.Millisecond, t)
-}
-
-func TestCanceledTimeout(t *testing.T) {
- c, _ := WithTimeout(Background(), 200*time.Millisecond)
- o := otherContext{c}
- c, cancel := WithTimeout(o, 400*time.Millisecond)
- cancel()
- time.Sleep(100 * time.Millisecond) // let cancelation propagate
- select {
- case <-c.Done():
- default:
- t.Errorf("<-c.Done() blocked, but shouldn't have")
- }
- if e := c.Err(); e != Canceled {
- t.Errorf("c.Err() == %v want %v", e, Canceled)
- }
-}
-
-type key1 int
-type key2 int
-
-var k1 = key1(1)
-var k2 = key2(1) // same int as k1, different type
-var k3 = key2(3) // same type as k2, different int
-
-func TestValues(t *testing.T) {
- check := func(c Context, nm, v1, v2, v3 string) {
- if v, ok := c.Value(k1).(string); ok == (len(v1) == 0) || v != v1 {
- t.Errorf(`%s.Value(k1).(string) = %q, %t want %q, %t`, nm, v, ok, v1, len(v1) != 0)
- }
- if v, ok := c.Value(k2).(string); ok == (len(v2) == 0) || v != v2 {
- t.Errorf(`%s.Value(k2).(string) = %q, %t want %q, %t`, nm, v, ok, v2, len(v2) != 0)
- }
- if v, ok := c.Value(k3).(string); ok == (len(v3) == 0) || v != v3 {
- t.Errorf(`%s.Value(k3).(string) = %q, %t want %q, %t`, nm, v, ok, v3, len(v3) != 0)
- }
- }
-
- c0 := Background()
- check(c0, "c0", "", "", "")
-
- c1 := WithValue(Background(), k1, "c1k1")
- check(c1, "c1", "c1k1", "", "")
-
- if got, want := fmt.Sprint(c1), `context.Background.WithValue(1, "c1k1")`; got != want {
- t.Errorf("c.String() = %q want %q", got, want)
- }
-
- c2 := WithValue(c1, k2, "c2k2")
- check(c2, "c2", "c1k1", "c2k2", "")
-
- c3 := WithValue(c2, k3, "c3k3")
- check(c3, "c2", "c1k1", "c2k2", "c3k3")
-
- c4 := WithValue(c3, k1, nil)
- check(c4, "c4", "", "c2k2", "c3k3")
-
- o0 := otherContext{Background()}
- check(o0, "o0", "", "", "")
-
- o1 := otherContext{WithValue(Background(), k1, "c1k1")}
- check(o1, "o1", "c1k1", "", "")
-
- o2 := WithValue(o1, k2, "o2k2")
- check(o2, "o2", "c1k1", "o2k2", "")
-
- o3 := otherContext{c4}
- check(o3, "o3", "", "c2k2", "c3k3")
-
- o4 := WithValue(o3, k3, nil)
- check(o4, "o4", "", "c2k2", "")
-}
-
-func TestAllocs(t *testing.T) {
- bg := Background()
- for _, test := range []struct {
- desc string
- f func()
- limit float64
- gccgoLimit float64
- }{
- {
- desc: "Background()",
- f: func() { Background() },
- limit: 0,
- gccgoLimit: 0,
- },
- {
- desc: fmt.Sprintf("WithValue(bg, %v, nil)", k1),
- f: func() {
- c := WithValue(bg, k1, nil)
- c.Value(k1)
- },
- limit: 3,
- gccgoLimit: 3,
- },
- {
- desc: "WithTimeout(bg, 15*time.Millisecond)",
- f: func() {
- c, _ := WithTimeout(bg, 15*time.Millisecond)
- <-c.Done()
- },
- limit: 8,
- gccgoLimit: 13,
- },
- {
- desc: "WithCancel(bg)",
- f: func() {
- c, cancel := WithCancel(bg)
- cancel()
- <-c.Done()
- },
- limit: 5,
- gccgoLimit: 8,
- },
- {
- desc: "WithTimeout(bg, 100*time.Millisecond)",
- f: func() {
- c, cancel := WithTimeout(bg, 100*time.Millisecond)
- cancel()
- <-c.Done()
- },
- limit: 8,
- gccgoLimit: 25,
- },
- } {
- limit := test.limit
- if runtime.Compiler == "gccgo" {
- // gccgo does not yet do escape analysis.
- // TOOD(iant): Remove this when gccgo does do escape analysis.
- limit = test.gccgoLimit
- }
- if n := testing.AllocsPerRun(100, test.f); n > limit {
- t.Errorf("%s allocs = %f want %d", test.desc, n, int(limit))
- }
- }
-}
-
-func TestSimultaneousCancels(t *testing.T) {
- root, cancel := WithCancel(Background())
- m := map[Context]CancelFunc{root: cancel}
- q := []Context{root}
- // Create a tree of contexts.
- for len(q) != 0 && len(m) < 100 {
- parent := q[0]
- q = q[1:]
- for i := 0; i < 4; i++ {
- ctx, cancel := WithCancel(parent)
- m[ctx] = cancel
- q = append(q, ctx)
- }
- }
- // Start all the cancels in a random order.
- var wg sync.WaitGroup
- wg.Add(len(m))
- for _, cancel := range m {
- go func(cancel CancelFunc) {
- cancel()
- wg.Done()
- }(cancel)
- }
- // Wait on all the contexts in a random order.
- for ctx := range m {
- select {
- case <-ctx.Done():
- case <-time.After(1 * time.Second):
- buf := make([]byte, 10<<10)
- n := runtime.Stack(buf, true)
- t.Fatalf("timed out waiting for <-ctx.Done(); stacks:\n%s", buf[:n])
- }
- }
- // Wait for all the cancel functions to return.
- done := make(chan struct{})
- go func() {
- wg.Wait()
- close(done)
- }()
- select {
- case <-done:
- case <-time.After(1 * time.Second):
- buf := make([]byte, 10<<10)
- n := runtime.Stack(buf, true)
- t.Fatalf("timed out waiting for cancel functions; stacks:\n%s", buf[:n])
- }
-}
-
-func TestInterlockedCancels(t *testing.T) {
- parent, cancelParent := WithCancel(Background())
- child, cancelChild := WithCancel(parent)
- go func() {
- parent.Done()
- cancelChild()
- }()
- cancelParent()
- select {
- case <-child.Done():
- case <-time.After(1 * time.Second):
- buf := make([]byte, 10<<10)
- n := runtime.Stack(buf, true)
- t.Fatalf("timed out waiting for child.Done(); stacks:\n%s", buf[:n])
- }
-}
-
-func TestLayersCancel(t *testing.T) {
- testLayers(t, time.Now().UnixNano(), false)
-}
-
-func TestLayersTimeout(t *testing.T) {
- testLayers(t, time.Now().UnixNano(), true)
-}
-
-func testLayers(t *testing.T, seed int64, testTimeout bool) {
- rand.Seed(seed)
- errorf := func(format string, a ...interface{}) {
- t.Errorf(fmt.Sprintf("seed=%d: %s", seed, format), a...)
- }
- const (
- timeout = 200 * time.Millisecond
- minLayers = 30
- )
- type value int
- var (
- vals []*value
- cancels []CancelFunc
- numTimers int
- ctx = Background()
- )
- for i := 0; i < minLayers || numTimers == 0 || len(cancels) == 0 || len(vals) == 0; i++ {
- switch rand.Intn(3) {
- case 0:
- v := new(value)
- ctx = WithValue(ctx, v, v)
- vals = append(vals, v)
- case 1:
- var cancel CancelFunc
- ctx, cancel = WithCancel(ctx)
- cancels = append(cancels, cancel)
- case 2:
- var cancel CancelFunc
- ctx, cancel = WithTimeout(ctx, timeout)
- cancels = append(cancels, cancel)
- numTimers++
- }
- }
- checkValues := func(when string) {
- for _, key := range vals {
- if val := ctx.Value(key).(*value); key != val {
- errorf("%s: ctx.Value(%p) = %p want %p", when, key, val, key)
- }
- }
- }
- select {
- case <-ctx.Done():
- errorf("ctx should not be canceled yet")
- default:
- }
- if s, prefix := fmt.Sprint(ctx), "context.Background."; !strings.HasPrefix(s, prefix) {
- t.Errorf("ctx.String() = %q want prefix %q", s, prefix)
- }
- t.Log(ctx)
- checkValues("before cancel")
- if testTimeout {
- select {
- case <-ctx.Done():
- case <-time.After(timeout + timeout/10):
- errorf("ctx should have timed out")
- }
- checkValues("after timeout")
- } else {
- cancel := cancels[rand.Intn(len(cancels))]
- cancel()
- select {
- case <-ctx.Done():
- default:
- errorf("ctx should be canceled")
- }
- checkValues("after cancel")
- }
-}
-
-func TestCancelRemoves(t *testing.T) {
- checkChildren := func(when string, ctx Context, want int) {
- if got := len(ctx.(*cancelCtx).children); got != want {
- t.Errorf("%s: context has %d children, want %d", when, got, want)
- }
- }
-
- ctx, _ := WithCancel(Background())
- checkChildren("after creation", ctx, 0)
- _, cancel := WithCancel(ctx)
- checkChildren("with WithCancel child ", ctx, 1)
- cancel()
- checkChildren("after cancelling WithCancel child", ctx, 0)
-
- ctx, _ = WithCancel(Background())
- checkChildren("after creation", ctx, 0)
- _, cancel = WithTimeout(ctx, 60*time.Minute)
- checkChildren("with WithTimeout child ", ctx, 1)
- cancel()
- checkChildren("after cancelling WithTimeout child", ctx, 0)
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq.go b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq.go
new file mode 100644
index 000000000..e3170e333
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq.go
@@ -0,0 +1,19 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.5
+
+package ctxhttp
+
+import "net/http"
+
+func canceler(client *http.Client, req *http.Request) func() {
+ // TODO(djd): Respect any existing value of req.Cancel.
+ ch := make(chan struct{})
+ req.Cancel = ch
+
+ return func() {
+ close(ch)
+ }
+}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq_go14.go b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq_go14.go
new file mode 100644
index 000000000..56bcbadb8
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/cancelreq_go14.go
@@ -0,0 +1,23 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.5
+
+package ctxhttp
+
+import "net/http"
+
+type requestCanceler interface {
+ CancelRequest(*http.Request)
+}
+
+func canceler(client *http.Client, req *http.Request) func() {
+ rc, ok := client.Transport.(requestCanceler)
+ if !ok {
+ return func() {}
+ }
+ return func() {
+ rc.CancelRequest(req)
+ }
+}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/ctxhttp.go b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/ctxhttp.go
new file mode 100644
index 000000000..26a5e19ac
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/net/context/ctxhttp/ctxhttp.go
@@ -0,0 +1,140 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package ctxhttp provides helper functions for performing context-aware HTTP requests.
+package ctxhttp
+
+import (
+ "io"
+ "net/http"
+ "net/url"
+ "strings"
+
+ "golang.org/x/net/context"
+)
+
+func nop() {}
+
+var (
+ testHookContextDoneBeforeHeaders = nop
+ testHookDoReturned = nop
+ testHookDidBodyClose = nop
+)
+
+// Do sends an HTTP request with the provided http.Client and returns an HTTP response.
+// If the client is nil, http.DefaultClient is used.
+// If the context is canceled or times out, ctx.Err() will be returned.
+func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) {
+ if client == nil {
+ client = http.DefaultClient
+ }
+
+ // Request cancelation changed in Go 1.5, see cancelreq.go and cancelreq_go14.go.
+ cancel := canceler(client, req)
+
+ type responseAndError struct {
+ resp *http.Response
+ err error
+ }
+ result := make(chan responseAndError, 1)
+
+ go func() {
+ resp, err := client.Do(req)
+ testHookDoReturned()
+ result <- responseAndError{resp, err}
+ }()
+
+ var resp *http.Response
+
+ select {
+ case <-ctx.Done():
+ testHookContextDoneBeforeHeaders()
+ cancel()
+ // Clean up after the goroutine calling client.Do:
+ go func() {
+ if r := <-result; r.resp != nil {
+ testHookDidBodyClose()
+ r.resp.Body.Close()
+ }
+ }()
+ return nil, ctx.Err()
+ case r := <-result:
+ var err error
+ resp, err = r.resp, r.err
+ if err != nil {
+ return resp, err
+ }
+ }
+
+ c := make(chan struct{})
+ go func() {
+ select {
+ case <-ctx.Done():
+ cancel()
+ case <-c:
+ // The response's Body is closed.
+ }
+ }()
+ resp.Body = &notifyingReader{resp.Body, c}
+
+ return resp, nil
+}
+
+// Get issues a GET request via the Do function.
+func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) {
+ req, err := http.NewRequest("GET", url, nil)
+ if err != nil {
+ return nil, err
+ }
+ return Do(ctx, client, req)
+}
+
+// Head issues a HEAD request via the Do function.
+func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) {
+ req, err := http.NewRequest("HEAD", url, nil)
+ if err != nil {
+ return nil, err
+ }
+ return Do(ctx, client, req)
+}
+
+// Post issues a POST request via the Do function.
+func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) {
+ req, err := http.NewRequest("POST", url, body)
+ if err != nil {
+ return nil, err
+ }
+ req.Header.Set("Content-Type", bodyType)
+ return Do(ctx, client, req)
+}
+
+// PostForm issues a POST request via the Do function.
+func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) {
+ return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode()))
+}
+
+// notifyingReader is an io.ReadCloser that closes the notify channel after
+// Close is called or a Read fails on the underlying ReadCloser.
+type notifyingReader struct {
+ io.ReadCloser
+ notify chan<- struct{}
+}
+
+func (r *notifyingReader) Read(p []byte) (int, error) {
+ n, err := r.ReadCloser.Read(p)
+ if err != nil && r.notify != nil {
+ close(r.notify)
+ r.notify = nil
+ }
+ return n, err
+}
+
+func (r *notifyingReader) Close() error {
+ err := r.ReadCloser.Close()
+ if r.notify != nil {
+ close(r.notify)
+ r.notify = nil
+ }
+ return err
+}
diff --git a/Godeps/_workspace/src/golang.org/x/net/context/withtimeout_test.go b/Godeps/_workspace/src/golang.org/x/net/context/withtimeout_test.go
deleted file mode 100644
index a6754dc36..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/context/withtimeout_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package context_test
-
-import (
- "fmt"
- "time"
-
- "golang.org/x/net/context"
-)
-
-func ExampleWithTimeout() {
- // Pass a context with a timeout to tell a blocking function that it
- // should abandon its work after the timeout elapses.
- ctx, _ := context.WithTimeout(context.Background(), 100*time.Millisecond)
- select {
- case <-time.After(200 * time.Millisecond):
- fmt.Println("overslept")
- case <-ctx.Done():
- fmt.Println(ctx.Err()) // prints "context deadline exceeded"
- }
- // Output:
- // context deadline exceeded
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/atom/atom_test.go b/Godeps/_workspace/src/golang.org/x/net/html/atom/atom_test.go
deleted file mode 100644
index 6e33704dd..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/atom/atom_test.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package atom
-
-import (
- "sort"
- "testing"
-)
-
-func TestKnown(t *testing.T) {
- for _, s := range testAtomList {
- if atom := Lookup([]byte(s)); atom.String() != s {
- t.Errorf("Lookup(%q) = %#x (%q)", s, uint32(atom), atom.String())
- }
- }
-}
-
-func TestHits(t *testing.T) {
- for _, a := range table {
- if a == 0 {
- continue
- }
- got := Lookup([]byte(a.String()))
- if got != a {
- t.Errorf("Lookup(%q) = %#x, want %#x", a.String(), uint32(got), uint32(a))
- }
- }
-}
-
-func TestMisses(t *testing.T) {
- testCases := []string{
- "",
- "\x00",
- "\xff",
- "A",
- "DIV",
- "Div",
- "dIV",
- "aa",
- "a\x00",
- "ab",
- "abb",
- "abbr0",
- "abbr ",
- " abbr",
- " a",
- "acceptcharset",
- "acceptCharset",
- "accept_charset",
- "h0",
- "h1h2",
- "h7",
- "onClick",
- "λ",
- // The following string has the same hash (0xa1d7fab7) as "onmouseover".
- "\x00\x00\x00\x00\x00\x50\x18\xae\x38\xd0\xb7",
- }
- for _, tc := range testCases {
- got := Lookup([]byte(tc))
- if got != 0 {
- t.Errorf("Lookup(%q): got %d, want 0", tc, got)
- }
- }
-}
-
-func TestForeignObject(t *testing.T) {
- const (
- afo = Foreignobject
- afO = ForeignObject
- sfo = "foreignobject"
- sfO = "foreignObject"
- )
- if got := Lookup([]byte(sfo)); got != afo {
- t.Errorf("Lookup(%q): got %#v, want %#v", sfo, got, afo)
- }
- if got := Lookup([]byte(sfO)); got != afO {
- t.Errorf("Lookup(%q): got %#v, want %#v", sfO, got, afO)
- }
- if got := afo.String(); got != sfo {
- t.Errorf("Atom(%#v).String(): got %q, want %q", afo, got, sfo)
- }
- if got := afO.String(); got != sfO {
- t.Errorf("Atom(%#v).String(): got %q, want %q", afO, got, sfO)
- }
-}
-
-func BenchmarkLookup(b *testing.B) {
- sortedTable := make([]string, 0, len(table))
- for _, a := range table {
- if a != 0 {
- sortedTable = append(sortedTable, a.String())
- }
- }
- sort.Strings(sortedTable)
-
- x := make([][]byte, 1000)
- for i := range x {
- x[i] = []byte(sortedTable[i%len(sortedTable)])
- }
-
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- for _, s := range x {
- Lookup(s)
- }
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/atom/table_test.go b/Godeps/_workspace/src/golang.org/x/net/html/atom/table_test.go
deleted file mode 100644
index 0f2ecce4f..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/atom/table_test.go
+++ /dev/null
@@ -1,351 +0,0 @@
-// generated by go run gen.go -test; DO NOT EDIT
-
-package atom
-
-var testAtomList = []string{
- "a",
- "abbr",
- "abbr",
- "accept",
- "accept-charset",
- "accesskey",
- "action",
- "address",
- "align",
- "alt",
- "annotation",
- "annotation-xml",
- "applet",
- "area",
- "article",
- "aside",
- "async",
- "audio",
- "autocomplete",
- "autofocus",
- "autoplay",
- "b",
- "base",
- "basefont",
- "bdi",
- "bdo",
- "bgsound",
- "big",
- "blink",
- "blockquote",
- "body",
- "br",
- "button",
- "canvas",
- "caption",
- "center",
- "challenge",
- "charset",
- "checked",
- "cite",
- "cite",
- "class",
- "code",
- "col",
- "colgroup",
- "color",
- "cols",
- "colspan",
- "command",
- "command",
- "content",
- "contenteditable",
- "contextmenu",
- "controls",
- "coords",
- "crossorigin",
- "data",
- "data",
- "datalist",
- "datetime",
- "dd",
- "default",
- "defer",
- "del",
- "desc",
- "details",
- "dfn",
- "dialog",
- "dir",
- "dirname",
- "disabled",
- "div",
- "dl",
- "download",
- "draggable",
- "dropzone",
- "dt",
- "em",
- "embed",
- "enctype",
- "face",
- "fieldset",
- "figcaption",
- "figure",
- "font",
- "footer",
- "for",
- "foreignObject",
- "foreignobject",
- "form",
- "form",
- "formaction",
- "formenctype",
- "formmethod",
- "formnovalidate",
- "formtarget",
- "frame",
- "frameset",
- "h1",
- "h2",
- "h3",
- "h4",
- "h5",
- "h6",
- "head",
- "header",
- "headers",
- "height",
- "hgroup",
- "hidden",
- "high",
- "hr",
- "href",
- "hreflang",
- "html",
- "http-equiv",
- "i",
- "icon",
- "id",
- "iframe",
- "image",
- "img",
- "input",
- "inputmode",
- "ins",
- "isindex",
- "ismap",
- "itemid",
- "itemprop",
- "itemref",
- "itemscope",
- "itemtype",
- "kbd",
- "keygen",
- "keytype",
- "kind",
- "label",
- "label",
- "lang",
- "legend",
- "li",
- "link",
- "list",
- "listing",
- "loop",
- "low",
- "malignmark",
- "manifest",
- "map",
- "mark",
- "marquee",
- "math",
- "max",
- "maxlength",
- "media",
- "mediagroup",
- "menu",
- "menuitem",
- "meta",
- "meter",
- "method",
- "mglyph",
- "mi",
- "min",
- "minlength",
- "mn",
- "mo",
- "ms",
- "mtext",
- "multiple",
- "muted",
- "name",
- "nav",
- "nobr",
- "noembed",
- "noframes",
- "noscript",
- "novalidate",
- "object",
- "ol",
- "onabort",
- "onafterprint",
- "onautocomplete",
- "onautocompleteerror",
- "onbeforeprint",
- "onbeforeunload",
- "onblur",
- "oncancel",
- "oncanplay",
- "oncanplaythrough",
- "onchange",
- "onclick",
- "onclose",
- "oncontextmenu",
- "oncuechange",
- "ondblclick",
- "ondrag",
- "ondragend",
- "ondragenter",
- "ondragleave",
- "ondragover",
- "ondragstart",
- "ondrop",
- "ondurationchange",
- "onemptied",
- "onended",
- "onerror",
- "onfocus",
- "onhashchange",
- "oninput",
- "oninvalid",
- "onkeydown",
- "onkeypress",
- "onkeyup",
- "onlanguagechange",
- "onload",
- "onloadeddata",
- "onloadedmetadata",
- "onloadstart",
- "onmessage",
- "onmousedown",
- "onmousemove",
- "onmouseout",
- "onmouseover",
- "onmouseup",
- "onmousewheel",
- "onoffline",
- "ononline",
- "onpagehide",
- "onpageshow",
- "onpause",
- "onplay",
- "onplaying",
- "onpopstate",
- "onprogress",
- "onratechange",
- "onreset",
- "onresize",
- "onscroll",
- "onseeked",
- "onseeking",
- "onselect",
- "onshow",
- "onsort",
- "onstalled",
- "onstorage",
- "onsubmit",
- "onsuspend",
- "ontimeupdate",
- "ontoggle",
- "onunload",
- "onvolumechange",
- "onwaiting",
- "open",
- "optgroup",
- "optimum",
- "option",
- "output",
- "p",
- "param",
- "pattern",
- "ping",
- "placeholder",
- "plaintext",
- "poster",
- "pre",
- "preload",
- "progress",
- "prompt",
- "public",
- "q",
- "radiogroup",
- "readonly",
- "rel",
- "required",
- "reversed",
- "rows",
- "rowspan",
- "rp",
- "rt",
- "ruby",
- "s",
- "samp",
- "sandbox",
- "scope",
- "scoped",
- "script",
- "seamless",
- "section",
- "select",
- "selected",
- "shape",
- "size",
- "sizes",
- "small",
- "sortable",
- "sorted",
- "source",
- "spacer",
- "span",
- "span",
- "spellcheck",
- "src",
- "srcdoc",
- "srclang",
- "start",
- "step",
- "strike",
- "strong",
- "style",
- "style",
- "sub",
- "summary",
- "sup",
- "svg",
- "system",
- "tabindex",
- "table",
- "target",
- "tbody",
- "td",
- "template",
- "textarea",
- "tfoot",
- "th",
- "thead",
- "time",
- "title",
- "title",
- "tr",
- "track",
- "translate",
- "tt",
- "type",
- "typemustmatch",
- "u",
- "ul",
- "usemap",
- "value",
- "var",
- "video",
- "wbr",
- "width",
- "wrap",
- "xmp",
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/charset.go b/Godeps/_workspace/src/golang.org/x/net/html/charset/charset.go
index fd7eb585d..449607253 100644
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/charset.go
+++ b/Godeps/_workspace/src/golang.org/x/net/html/charset/charset.go
@@ -19,17 +19,30 @@ import (
"golang.org/x/net/html"
"golang.org/x/text/encoding"
"golang.org/x/text/encoding/charmap"
+ "golang.org/x/text/encoding/htmlindex"
"golang.org/x/text/transform"
)
// Lookup returns the encoding with the specified label, and its canonical
// name. It returns nil and the empty string if label is not one of the
// standard encodings for HTML. Matching is case-insensitive and ignores
-// leading and trailing whitespace.
+// leading and trailing whitespace. Encoders will use HTML escape sequences for
+// runes that are not supported by the character set.
func Lookup(label string) (e encoding.Encoding, name string) {
- label = strings.ToLower(strings.Trim(label, "\t\n\r\f "))
- enc := encodings[label]
- return enc.e, enc.name
+ e, err := htmlindex.Get(label)
+ if err != nil {
+ return nil, ""
+ }
+ name, _ = htmlindex.Name(e)
+ return &htmlEncoding{e}, name
+}
+
+type htmlEncoding struct{ encoding.Encoding }
+
+func (h *htmlEncoding) NewEncoder() *encoding.Encoder {
+ // HTML requires a non-terminating legacy encoder. We use HTML escapes to
+ // substitute unsupported code points.
+ return encoding.HTMLEscapeUnsupported(h.Encoding.NewEncoder())
}
// DetermineEncoding determines the encoding of an HTML document by examining
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/charset_test.go b/Godeps/_workspace/src/golang.org/x/net/html/charset/charset_test.go
deleted file mode 100644
index 8b10399d3..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/charset_test.go
+++ /dev/null
@@ -1,236 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package charset
-
-import (
- "bytes"
- "encoding/xml"
- "io/ioutil"
- "runtime"
- "strings"
- "testing"
-
- "golang.org/x/text/transform"
-)
-
-func transformString(t transform.Transformer, s string) (string, error) {
- r := transform.NewReader(strings.NewReader(s), t)
- b, err := ioutil.ReadAll(r)
- return string(b), err
-}
-
-var testCases = []struct {
- utf8, other, otherEncoding string
-}{
- {"Résumé", "Résumé", "utf8"},
- {"Résumé", "R\xe9sum\xe9", "latin1"},
- {"これは漢字です。", "S0\x8c0o0\"oW[g0Y0\x020", "UTF-16LE"},
- {"これは漢字です。", "0S0\x8c0oo\"[W0g0Y0\x02", "UTF-16BE"},
- {"Hello, world", "Hello, world", "ASCII"},
- {"Gdańsk", "Gda\xf1sk", "ISO-8859-2"},
- {"Ââ Čč Đđ Ŋŋ Õõ Šš Žž Åå Ää", "\xc2\xe2 \xc8\xe8 \xa9\xb9 \xaf\xbf \xd5\xf5 \xaa\xba \xac\xbc \xc5\xe5 \xc4\xe4", "ISO-8859-10"},
- {"สำหรับ", "\xca\xd3\xcb\xc3\u047a", "ISO-8859-11"},
- {"latviešu", "latvie\xf0u", "ISO-8859-13"},
- {"Seònaid", "Se\xf2naid", "ISO-8859-14"},
- {"€1 is cheap", "\xa41 is cheap", "ISO-8859-15"},
- {"românește", "rom\xe2ne\xbate", "ISO-8859-16"},
- {"nutraĵo", "nutra\xbco", "ISO-8859-3"},
- {"Kalâdlit", "Kal\xe2dlit", "ISO-8859-4"},
- {"русский", "\xe0\xe3\xe1\xe1\xda\xd8\xd9", "ISO-8859-5"},
- {"ελληνικά", "\xe5\xeb\xeb\xe7\xed\xe9\xea\xdc", "ISO-8859-7"},
- {"Kağan", "Ka\xf0an", "ISO-8859-9"},
- {"Résumé", "R\x8esum\x8e", "macintosh"},
- {"Gdańsk", "Gda\xf1sk", "windows-1250"},
- {"русский", "\xf0\xf3\xf1\xf1\xea\xe8\xe9", "windows-1251"},
- {"Résumé", "R\xe9sum\xe9", "windows-1252"},
- {"ελληνικά", "\xe5\xeb\xeb\xe7\xed\xe9\xea\xdc", "windows-1253"},
- {"Kağan", "Ka\xf0an", "windows-1254"},
- {"עִבְרִית", "\xf2\xc4\xe1\xc0\xf8\xc4\xe9\xfa", "windows-1255"},
- {"العربية", "\xc7\xe1\xda\xd1\xc8\xed\xc9", "windows-1256"},
- {"latviešu", "latvie\xf0u", "windows-1257"},
- {"Việt", "Vi\xea\xf2t", "windows-1258"},
- {"สำหรับ", "\xca\xd3\xcb\xc3\u047a", "windows-874"},
- {"русский", "\xd2\xd5\xd3\xd3\xcb\xc9\xca", "KOI8-R"},
- {"українська", "\xd5\xcb\xd2\xc1\xa7\xce\xd3\xd8\xcb\xc1", "KOI8-U"},
- {"Hello 常用國字標準字體表", "Hello \xb1`\xa5\u03b0\xea\xa6r\xbc\u0437\u01e6r\xc5\xe9\xaa\xed", "big5"},
- {"Hello 常用國字標準字體表", "Hello \xb3\xa3\xd3\xc3\x87\xf8\xd7\xd6\x98\xcb\x9c\xca\xd7\xd6\xf3\x77\xb1\xed", "gbk"},
- {"Hello 常用國字標準字體表", "Hello \xb3\xa3\xd3\xc3\x87\xf8\xd7\xd6\x98\xcb\x9c\xca\xd7\xd6\xf3\x77\xb1\xed", "gb18030"},
- {"עִבְרִית", "\x81\x30\xfb\x30\x81\x30\xf6\x34\x81\x30\xf9\x33\x81\x30\xf6\x30\x81\x30\xfb\x36\x81\x30\xf6\x34\x81\x30\xfa\x31\x81\x30\xfb\x38", "gb18030"},
- {"㧯", "\x82\x31\x89\x38", "gb18030"},
- {"これは漢字です。", "\x82\xb1\x82\xea\x82\xcd\x8a\xbf\x8e\x9a\x82\xc5\x82\xb7\x81B", "SJIS"},
- {"Hello, 世界!", "Hello, \x90\xa2\x8aE!", "SJIS"},
- {"イウエオカ", "\xb2\xb3\xb4\xb5\xb6", "SJIS"},
- {"これは漢字です。", "\xa4\xb3\xa4\xec\xa4\u03f4\xc1\xbb\xfa\xa4\u01e4\xb9\xa1\xa3", "EUC-JP"},
- {"Hello, 世界!", "Hello, \x1b$B@$3&\x1b(B!", "ISO-2022-JP"},
- {"네이트 | 즐거움의 시작, 슈파스(Spaβ) NATE", "\xb3\xd7\xc0\xcc\xc6\xae | \xc1\xf1\xb0\xc5\xbf\xf2\xc0\xc7 \xbd\xc3\xc0\xdb, \xbd\xb4\xc6\xc4\xbd\xba(Spa\xa5\xe2) NATE", "EUC-KR"},
-}
-
-func TestDecode(t *testing.T) {
- for _, tc := range testCases {
- e, _ := Lookup(tc.otherEncoding)
- if e == nil {
- t.Errorf("%s: not found", tc.otherEncoding)
- continue
- }
- s, err := transformString(e.NewDecoder(), tc.other)
- if err != nil {
- t.Errorf("%s: decode %q: %v", tc.otherEncoding, tc.other, err)
- continue
- }
- if s != tc.utf8 {
- t.Errorf("%s: got %q, want %q", tc.otherEncoding, s, tc.utf8)
- }
- }
-}
-
-func TestEncode(t *testing.T) {
- for _, tc := range testCases {
- e, _ := Lookup(tc.otherEncoding)
- if e == nil {
- t.Errorf("%s: not found", tc.otherEncoding)
- continue
- }
- s, err := transformString(e.NewEncoder(), tc.utf8)
- if err != nil {
- t.Errorf("%s: encode %q: %s", tc.otherEncoding, tc.utf8, err)
- continue
- }
- if s != tc.other {
- t.Errorf("%s: got %q, want %q", tc.otherEncoding, s, tc.other)
- }
- }
-}
-
-// TestNames verifies that you can pass an encoding's name to Lookup and get
-// the same encoding back (except for "replacement").
-func TestNames(t *testing.T) {
- for _, e := range encodings {
- if e.name == "replacement" {
- continue
- }
- _, got := Lookup(e.name)
- if got != e.name {
- t.Errorf("got %q, want %q", got, e.name)
- continue
- }
- }
-}
-
-var sniffTestCases = []struct {
- filename, declared, want string
-}{
- {"HTTP-charset.html", "text/html; charset=iso-8859-15", "iso-8859-15"},
- {"UTF-16LE-BOM.html", "", "utf-16le"},
- {"UTF-16BE-BOM.html", "", "utf-16be"},
- {"meta-content-attribute.html", "text/html", "iso-8859-15"},
- {"meta-charset-attribute.html", "text/html", "iso-8859-15"},
- {"No-encoding-declaration.html", "text/html", "utf-8"},
- {"HTTP-vs-UTF-8-BOM.html", "text/html; charset=iso-8859-15", "utf-8"},
- {"HTTP-vs-meta-content.html", "text/html; charset=iso-8859-15", "iso-8859-15"},
- {"HTTP-vs-meta-charset.html", "text/html; charset=iso-8859-15", "iso-8859-15"},
- {"UTF-8-BOM-vs-meta-content.html", "text/html", "utf-8"},
- {"UTF-8-BOM-vs-meta-charset.html", "text/html", "utf-8"},
-}
-
-func TestSniff(t *testing.T) {
- switch runtime.GOOS {
- case "nacl": // platforms that don't permit direct file system access
- t.Skipf("not supported on %q", runtime.GOOS)
- }
-
- for _, tc := range sniffTestCases {
- content, err := ioutil.ReadFile("testdata/" + tc.filename)
- if err != nil {
- t.Errorf("%s: error reading file: %v", tc.filename, err)
- continue
- }
-
- _, name, _ := DetermineEncoding(content, tc.declared)
- if name != tc.want {
- t.Errorf("%s: got %q, want %q", tc.filename, name, tc.want)
- continue
- }
- }
-}
-
-func TestReader(t *testing.T) {
- switch runtime.GOOS {
- case "nacl": // platforms that don't permit direct file system access
- t.Skipf("not supported on %q", runtime.GOOS)
- }
-
- for _, tc := range sniffTestCases {
- content, err := ioutil.ReadFile("testdata/" + tc.filename)
- if err != nil {
- t.Errorf("%s: error reading file: %v", tc.filename, err)
- continue
- }
-
- r, err := NewReader(bytes.NewReader(content), tc.declared)
- if err != nil {
- t.Errorf("%s: error creating reader: %v", tc.filename, err)
- continue
- }
-
- got, err := ioutil.ReadAll(r)
- if err != nil {
- t.Errorf("%s: error reading from charset.NewReader: %v", tc.filename, err)
- continue
- }
-
- e, _ := Lookup(tc.want)
- want, err := ioutil.ReadAll(transform.NewReader(bytes.NewReader(content), e.NewDecoder()))
- if err != nil {
- t.Errorf("%s: error decoding with hard-coded charset name: %v", tc.filename, err)
- continue
- }
-
- if !bytes.Equal(got, want) {
- t.Errorf("%s: got %q, want %q", tc.filename, got, want)
- continue
- }
- }
-}
-
-var metaTestCases = []struct {
- meta, want string
-}{
- {"", ""},
- {"text/html", ""},
- {"text/html; charset utf-8", ""},
- {"text/html; charset=latin-2", "latin-2"},
- {"text/html; charset; charset = utf-8", "utf-8"},
- {`charset="big5"`, "big5"},
- {"charset='shift_jis'", "shift_jis"},
-}
-
-func TestFromMeta(t *testing.T) {
- for _, tc := range metaTestCases {
- got := fromMetaElement(tc.meta)
- if got != tc.want {
- t.Errorf("%q: got %q, want %q", tc.meta, got, tc.want)
- }
- }
-}
-
-func TestXML(t *testing.T) {
- const s = "<?xml version=\"1.0\" encoding=\"windows-1252\"?><a><Word>r\xe9sum\xe9</Word></a>"
-
- d := xml.NewDecoder(strings.NewReader(s))
- d.CharsetReader = NewReaderLabel
-
- var a struct {
- Word string
- }
- err := d.Decode(&a)
- if err != nil {
- t.Fatalf("Decode: %v", err)
- }
-
- want := "résumé"
- if a.Word != want {
- t.Errorf("got %q, want %q", a.Word, want)
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/gen.go b/Godeps/_workspace/src/golang.org/x/net/html/charset/gen.go
deleted file mode 100644
index 828347f4a..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/gen.go
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-// Download https://encoding.spec.whatwg.org/encodings.json and use it to
-// generate table.go.
-
-import (
- "encoding/json"
- "fmt"
- "log"
- "net/http"
- "strings"
-)
-
-type enc struct {
- Name string
- Labels []string
-}
-
-type group struct {
- Encodings []enc
- Heading string
-}
-
-const specURL = "https://encoding.spec.whatwg.org/encodings.json"
-
-func main() {
- resp, err := http.Get(specURL)
- if err != nil {
- log.Fatalf("error fetching %s: %s", specURL, err)
- }
- if resp.StatusCode != 200 {
- log.Fatalf("error fetching %s: HTTP status %s", specURL, resp.Status)
- }
- defer resp.Body.Close()
-
- var groups []group
- d := json.NewDecoder(resp.Body)
- err = d.Decode(&groups)
- if err != nil {
- log.Fatalf("error reading encodings.json: %s", err)
- }
-
- fmt.Println("// generated by go run gen.go; DO NOT EDIT")
- fmt.Println()
- fmt.Println("package charset")
- fmt.Println()
-
- fmt.Println("import (")
- fmt.Println(`"golang.org/x/text/encoding"`)
- for _, pkg := range []string{"charmap", "japanese", "korean", "simplifiedchinese", "traditionalchinese", "unicode"} {
- fmt.Printf("\"golang.org/x/text/encoding/%s\"\n", pkg)
- }
- fmt.Println(")")
- fmt.Println()
-
- fmt.Println("var encodings = map[string]struct{e encoding.Encoding; name string} {")
- for _, g := range groups {
- for _, e := range g.Encodings {
- goName, ok := miscNames[e.Name]
- if !ok {
- for k, v := range prefixes {
- if strings.HasPrefix(e.Name, k) {
- goName = v + e.Name[len(k):]
- break
- }
- }
- if goName == "" {
- log.Fatalf("unrecognized encoding name: %s", e.Name)
- }
- }
-
- for _, label := range e.Labels {
- fmt.Printf("%q: {%s, %q},\n", label, goName, e.Name)
- }
- }
- }
- fmt.Println("}")
-}
-
-var prefixes = map[string]string{
- "iso-8859-": "charmap.ISO8859_",
- "windows-": "charmap.Windows",
-}
-
-var miscNames = map[string]string{
- "utf-8": "encoding.Nop",
- "ibm866": "charmap.CodePage866",
- "iso-8859-8-i": "charmap.ISO8859_8",
- "koi8-r": "charmap.KOI8R",
- "koi8-u": "charmap.KOI8U",
- "macintosh": "charmap.Macintosh",
- "x-mac-cyrillic": "charmap.MacintoshCyrillic",
- "gbk": "simplifiedchinese.GBK",
- "gb18030": "simplifiedchinese.GB18030",
- "hz-gb-2312": "simplifiedchinese.HZGB2312",
- "big5": "traditionalchinese.Big5",
- "euc-jp": "japanese.EUCJP",
- "iso-2022-jp": "japanese.ISO2022JP",
- "shift_jis": "japanese.ShiftJIS",
- "euc-kr": "korean.EUCKR",
- "replacement": "encoding.Replacement",
- "utf-16be": "unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM)",
- "utf-16le": "unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM)",
- "x-user-defined": "charmap.XUserDefined",
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/table.go b/Godeps/_workspace/src/golang.org/x/net/html/charset/table.go
deleted file mode 100644
index aa0d94840..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/table.go
+++ /dev/null
@@ -1,235 +0,0 @@
-// generated by go run gen.go; DO NOT EDIT
-
-package charset
-
-import (
- "golang.org/x/text/encoding"
- "golang.org/x/text/encoding/charmap"
- "golang.org/x/text/encoding/japanese"
- "golang.org/x/text/encoding/korean"
- "golang.org/x/text/encoding/simplifiedchinese"
- "golang.org/x/text/encoding/traditionalchinese"
- "golang.org/x/text/encoding/unicode"
-)
-
-var encodings = map[string]struct {
- e encoding.Encoding
- name string
-}{
- "unicode-1-1-utf-8": {encoding.Nop, "utf-8"},
- "utf-8": {encoding.Nop, "utf-8"},
- "utf8": {encoding.Nop, "utf-8"},
- "866": {charmap.CodePage866, "ibm866"},
- "cp866": {charmap.CodePage866, "ibm866"},
- "csibm866": {charmap.CodePage866, "ibm866"},
- "ibm866": {charmap.CodePage866, "ibm866"},
- "csisolatin2": {charmap.ISO8859_2, "iso-8859-2"},
- "iso-8859-2": {charmap.ISO8859_2, "iso-8859-2"},
- "iso-ir-101": {charmap.ISO8859_2, "iso-8859-2"},
- "iso8859-2": {charmap.ISO8859_2, "iso-8859-2"},
- "iso88592": {charmap.ISO8859_2, "iso-8859-2"},
- "iso_8859-2": {charmap.ISO8859_2, "iso-8859-2"},
- "iso_8859-2:1987": {charmap.ISO8859_2, "iso-8859-2"},
- "l2": {charmap.ISO8859_2, "iso-8859-2"},
- "latin2": {charmap.ISO8859_2, "iso-8859-2"},
- "csisolatin3": {charmap.ISO8859_3, "iso-8859-3"},
- "iso-8859-3": {charmap.ISO8859_3, "iso-8859-3"},
- "iso-ir-109": {charmap.ISO8859_3, "iso-8859-3"},
- "iso8859-3": {charmap.ISO8859_3, "iso-8859-3"},
- "iso88593": {charmap.ISO8859_3, "iso-8859-3"},
- "iso_8859-3": {charmap.ISO8859_3, "iso-8859-3"},
- "iso_8859-3:1988": {charmap.ISO8859_3, "iso-8859-3"},
- "l3": {charmap.ISO8859_3, "iso-8859-3"},
- "latin3": {charmap.ISO8859_3, "iso-8859-3"},
- "csisolatin4": {charmap.ISO8859_4, "iso-8859-4"},
- "iso-8859-4": {charmap.ISO8859_4, "iso-8859-4"},
- "iso-ir-110": {charmap.ISO8859_4, "iso-8859-4"},
- "iso8859-4": {charmap.ISO8859_4, "iso-8859-4"},
- "iso88594": {charmap.ISO8859_4, "iso-8859-4"},
- "iso_8859-4": {charmap.ISO8859_4, "iso-8859-4"},
- "iso_8859-4:1988": {charmap.ISO8859_4, "iso-8859-4"},
- "l4": {charmap.ISO8859_4, "iso-8859-4"},
- "latin4": {charmap.ISO8859_4, "iso-8859-4"},
- "csisolatincyrillic": {charmap.ISO8859_5, "iso-8859-5"},
- "cyrillic": {charmap.ISO8859_5, "iso-8859-5"},
- "iso-8859-5": {charmap.ISO8859_5, "iso-8859-5"},
- "iso-ir-144": {charmap.ISO8859_5, "iso-8859-5"},
- "iso8859-5": {charmap.ISO8859_5, "iso-8859-5"},
- "iso88595": {charmap.ISO8859_5, "iso-8859-5"},
- "iso_8859-5": {charmap.ISO8859_5, "iso-8859-5"},
- "iso_8859-5:1988": {charmap.ISO8859_5, "iso-8859-5"},
- "arabic": {charmap.ISO8859_6, "iso-8859-6"},
- "asmo-708": {charmap.ISO8859_6, "iso-8859-6"},
- "csiso88596e": {charmap.ISO8859_6, "iso-8859-6"},
- "csiso88596i": {charmap.ISO8859_6, "iso-8859-6"},
- "csisolatinarabic": {charmap.ISO8859_6, "iso-8859-6"},
- "ecma-114": {charmap.ISO8859_6, "iso-8859-6"},
- "iso-8859-6": {charmap.ISO8859_6, "iso-8859-6"},
- "iso-8859-6-e": {charmap.ISO8859_6, "iso-8859-6"},
- "iso-8859-6-i": {charmap.ISO8859_6, "iso-8859-6"},
- "iso-ir-127": {charmap.ISO8859_6, "iso-8859-6"},
- "iso8859-6": {charmap.ISO8859_6, "iso-8859-6"},
- "iso88596": {charmap.ISO8859_6, "iso-8859-6"},
- "iso_8859-6": {charmap.ISO8859_6, "iso-8859-6"},
- "iso_8859-6:1987": {charmap.ISO8859_6, "iso-8859-6"},
- "csisolatingreek": {charmap.ISO8859_7, "iso-8859-7"},
- "ecma-118": {charmap.ISO8859_7, "iso-8859-7"},
- "elot_928": {charmap.ISO8859_7, "iso-8859-7"},
- "greek": {charmap.ISO8859_7, "iso-8859-7"},
- "greek8": {charmap.ISO8859_7, "iso-8859-7"},
- "iso-8859-7": {charmap.ISO8859_7, "iso-8859-7"},
- "iso-ir-126": {charmap.ISO8859_7, "iso-8859-7"},
- "iso8859-7": {charmap.ISO8859_7, "iso-8859-7"},
- "iso88597": {charmap.ISO8859_7, "iso-8859-7"},
- "iso_8859-7": {charmap.ISO8859_7, "iso-8859-7"},
- "iso_8859-7:1987": {charmap.ISO8859_7, "iso-8859-7"},
- "sun_eu_greek": {charmap.ISO8859_7, "iso-8859-7"},
- "csiso88598e": {charmap.ISO8859_8, "iso-8859-8"},
- "csisolatinhebrew": {charmap.ISO8859_8, "iso-8859-8"},
- "hebrew": {charmap.ISO8859_8, "iso-8859-8"},
- "iso-8859-8": {charmap.ISO8859_8, "iso-8859-8"},
- "iso-8859-8-e": {charmap.ISO8859_8, "iso-8859-8"},
- "iso-ir-138": {charmap.ISO8859_8, "iso-8859-8"},
- "iso8859-8": {charmap.ISO8859_8, "iso-8859-8"},
- "iso88598": {charmap.ISO8859_8, "iso-8859-8"},
- "iso_8859-8": {charmap.ISO8859_8, "iso-8859-8"},
- "iso_8859-8:1988": {charmap.ISO8859_8, "iso-8859-8"},
- "visual": {charmap.ISO8859_8, "iso-8859-8"},
- "csiso88598i": {charmap.ISO8859_8, "iso-8859-8-i"},
- "iso-8859-8-i": {charmap.ISO8859_8, "iso-8859-8-i"},
- "logical": {charmap.ISO8859_8, "iso-8859-8-i"},
- "csisolatin6": {charmap.ISO8859_10, "iso-8859-10"},
- "iso-8859-10": {charmap.ISO8859_10, "iso-8859-10"},
- "iso-ir-157": {charmap.ISO8859_10, "iso-8859-10"},
- "iso8859-10": {charmap.ISO8859_10, "iso-8859-10"},
- "iso885910": {charmap.ISO8859_10, "iso-8859-10"},
- "l6": {charmap.ISO8859_10, "iso-8859-10"},
- "latin6": {charmap.ISO8859_10, "iso-8859-10"},
- "iso-8859-13": {charmap.ISO8859_13, "iso-8859-13"},
- "iso8859-13": {charmap.ISO8859_13, "iso-8859-13"},
- "iso885913": {charmap.ISO8859_13, "iso-8859-13"},
- "iso-8859-14": {charmap.ISO8859_14, "iso-8859-14"},
- "iso8859-14": {charmap.ISO8859_14, "iso-8859-14"},
- "iso885914": {charmap.ISO8859_14, "iso-8859-14"},
- "csisolatin9": {charmap.ISO8859_15, "iso-8859-15"},
- "iso-8859-15": {charmap.ISO8859_15, "iso-8859-15"},
- "iso8859-15": {charmap.ISO8859_15, "iso-8859-15"},
- "iso885915": {charmap.ISO8859_15, "iso-8859-15"},
- "iso_8859-15": {charmap.ISO8859_15, "iso-8859-15"},
- "l9": {charmap.ISO8859_15, "iso-8859-15"},
- "iso-8859-16": {charmap.ISO8859_16, "iso-8859-16"},
- "cskoi8r": {charmap.KOI8R, "koi8-r"},
- "koi": {charmap.KOI8R, "koi8-r"},
- "koi8": {charmap.KOI8R, "koi8-r"},
- "koi8-r": {charmap.KOI8R, "koi8-r"},
- "koi8_r": {charmap.KOI8R, "koi8-r"},
- "koi8-u": {charmap.KOI8U, "koi8-u"},
- "csmacintosh": {charmap.Macintosh, "macintosh"},
- "mac": {charmap.Macintosh, "macintosh"},
- "macintosh": {charmap.Macintosh, "macintosh"},
- "x-mac-roman": {charmap.Macintosh, "macintosh"},
- "dos-874": {charmap.Windows874, "windows-874"},
- "iso-8859-11": {charmap.Windows874, "windows-874"},
- "iso8859-11": {charmap.Windows874, "windows-874"},
- "iso885911": {charmap.Windows874, "windows-874"},
- "tis-620": {charmap.Windows874, "windows-874"},
- "windows-874": {charmap.Windows874, "windows-874"},
- "cp1250": {charmap.Windows1250, "windows-1250"},
- "windows-1250": {charmap.Windows1250, "windows-1250"},
- "x-cp1250": {charmap.Windows1250, "windows-1250"},
- "cp1251": {charmap.Windows1251, "windows-1251"},
- "windows-1251": {charmap.Windows1251, "windows-1251"},
- "x-cp1251": {charmap.Windows1251, "windows-1251"},
- "ansi_x3.4-1968": {charmap.Windows1252, "windows-1252"},
- "ascii": {charmap.Windows1252, "windows-1252"},
- "cp1252": {charmap.Windows1252, "windows-1252"},
- "cp819": {charmap.Windows1252, "windows-1252"},
- "csisolatin1": {charmap.Windows1252, "windows-1252"},
- "ibm819": {charmap.Windows1252, "windows-1252"},
- "iso-8859-1": {charmap.Windows1252, "windows-1252"},
- "iso-ir-100": {charmap.Windows1252, "windows-1252"},
- "iso8859-1": {charmap.Windows1252, "windows-1252"},
- "iso88591": {charmap.Windows1252, "windows-1252"},
- "iso_8859-1": {charmap.Windows1252, "windows-1252"},
- "iso_8859-1:1987": {charmap.Windows1252, "windows-1252"},
- "l1": {charmap.Windows1252, "windows-1252"},
- "latin1": {charmap.Windows1252, "windows-1252"},
- "us-ascii": {charmap.Windows1252, "windows-1252"},
- "windows-1252": {charmap.Windows1252, "windows-1252"},
- "x-cp1252": {charmap.Windows1252, "windows-1252"},
- "cp1253": {charmap.Windows1253, "windows-1253"},
- "windows-1253": {charmap.Windows1253, "windows-1253"},
- "x-cp1253": {charmap.Windows1253, "windows-1253"},
- "cp1254": {charmap.Windows1254, "windows-1254"},
- "csisolatin5": {charmap.Windows1254, "windows-1254"},
- "iso-8859-9": {charmap.Windows1254, "windows-1254"},
- "iso-ir-148": {charmap.Windows1254, "windows-1254"},
- "iso8859-9": {charmap.Windows1254, "windows-1254"},
- "iso88599": {charmap.Windows1254, "windows-1254"},
- "iso_8859-9": {charmap.Windows1254, "windows-1254"},
- "iso_8859-9:1989": {charmap.Windows1254, "windows-1254"},
- "l5": {charmap.Windows1254, "windows-1254"},
- "latin5": {charmap.Windows1254, "windows-1254"},
- "windows-1254": {charmap.Windows1254, "windows-1254"},
- "x-cp1254": {charmap.Windows1254, "windows-1254"},
- "cp1255": {charmap.Windows1255, "windows-1255"},
- "windows-1255": {charmap.Windows1255, "windows-1255"},
- "x-cp1255": {charmap.Windows1255, "windows-1255"},
- "cp1256": {charmap.Windows1256, "windows-1256"},
- "windows-1256": {charmap.Windows1256, "windows-1256"},
- "x-cp1256": {charmap.Windows1256, "windows-1256"},
- "cp1257": {charmap.Windows1257, "windows-1257"},
- "windows-1257": {charmap.Windows1257, "windows-1257"},
- "x-cp1257": {charmap.Windows1257, "windows-1257"},
- "cp1258": {charmap.Windows1258, "windows-1258"},
- "windows-1258": {charmap.Windows1258, "windows-1258"},
- "x-cp1258": {charmap.Windows1258, "windows-1258"},
- "x-mac-cyrillic": {charmap.MacintoshCyrillic, "x-mac-cyrillic"},
- "x-mac-ukrainian": {charmap.MacintoshCyrillic, "x-mac-cyrillic"},
- "chinese": {simplifiedchinese.GBK, "gbk"},
- "csgb2312": {simplifiedchinese.GBK, "gbk"},
- "csiso58gb231280": {simplifiedchinese.GBK, "gbk"},
- "gb2312": {simplifiedchinese.GBK, "gbk"},
- "gb_2312": {simplifiedchinese.GBK, "gbk"},
- "gb_2312-80": {simplifiedchinese.GBK, "gbk"},
- "gbk": {simplifiedchinese.GBK, "gbk"},
- "iso-ir-58": {simplifiedchinese.GBK, "gbk"},
- "x-gbk": {simplifiedchinese.GBK, "gbk"},
- "gb18030": {simplifiedchinese.GB18030, "gb18030"},
- "hz-gb-2312": {simplifiedchinese.HZGB2312, "hz-gb-2312"},
- "big5": {traditionalchinese.Big5, "big5"},
- "big5-hkscs": {traditionalchinese.Big5, "big5"},
- "cn-big5": {traditionalchinese.Big5, "big5"},
- "csbig5": {traditionalchinese.Big5, "big5"},
- "x-x-big5": {traditionalchinese.Big5, "big5"},
- "cseucpkdfmtjapanese": {japanese.EUCJP, "euc-jp"},
- "euc-jp": {japanese.EUCJP, "euc-jp"},
- "x-euc-jp": {japanese.EUCJP, "euc-jp"},
- "csiso2022jp": {japanese.ISO2022JP, "iso-2022-jp"},
- "iso-2022-jp": {japanese.ISO2022JP, "iso-2022-jp"},
- "csshiftjis": {japanese.ShiftJIS, "shift_jis"},
- "ms_kanji": {japanese.ShiftJIS, "shift_jis"},
- "shift-jis": {japanese.ShiftJIS, "shift_jis"},
- "shift_jis": {japanese.ShiftJIS, "shift_jis"},
- "sjis": {japanese.ShiftJIS, "shift_jis"},
- "windows-31j": {japanese.ShiftJIS, "shift_jis"},
- "x-sjis": {japanese.ShiftJIS, "shift_jis"},
- "cseuckr": {korean.EUCKR, "euc-kr"},
- "csksc56011987": {korean.EUCKR, "euc-kr"},
- "euc-kr": {korean.EUCKR, "euc-kr"},
- "iso-ir-149": {korean.EUCKR, "euc-kr"},
- "korean": {korean.EUCKR, "euc-kr"},
- "ks_c_5601-1987": {korean.EUCKR, "euc-kr"},
- "ks_c_5601-1989": {korean.EUCKR, "euc-kr"},
- "ksc5601": {korean.EUCKR, "euc-kr"},
- "ksc_5601": {korean.EUCKR, "euc-kr"},
- "windows-949": {korean.EUCKR, "euc-kr"},
- "csiso2022kr": {encoding.Replacement, "replacement"},
- "iso-2022-kr": {encoding.Replacement, "replacement"},
- "iso-2022-cn": {encoding.Replacement, "replacement"},
- "iso-2022-cn-ext": {encoding.Replacement, "replacement"},
- "utf-16be": {unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), "utf-16be"},
- "utf-16": {unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), "utf-16le"},
- "utf-16le": {unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), "utf-16le"},
- "x-user-defined": {charmap.XUserDefined, "x-user-defined"},
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-charset.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-charset.html
deleted file mode 100644
index 9915fa0ee..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-charset.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <title>HTTP charset</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="The character encoding of a page can be set using the HTTP header charset declaration.">
-<style type='text/css'>
-.test div { width: 50px; }</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-15.css">
-</head>
-<body>
-<p class='title'>HTTP charset</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">The character encoding of a page can be set using the HTTP header charset declaration.</p>
-<div class="notes"><p><p>The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00C3;&#x0153;&#x00C3;&#x20AC;&#x00C3;&#x0161;</code>. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.</p><p>The only character encoding declaration for this HTML file is in the HTTP header, which sets the encoding to ISO 8859-15.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-003">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-001<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#basics" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-001" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The default encoding for the browser you are testing is not set to ISO 8859-15.</li>
- <li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html
deleted file mode 100644
index 26e5d8b4e..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <title>HTTP vs UTF-8 BOM</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="A character encoding set in the HTTP header has lower precedence than the UTF-8 signature.">
-<style type='text/css'>
-.test div { width: 50px; }</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-utf8.css">
-</head>
-<body>
-<p class='title'>HTTP vs UTF-8 BOM</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">A character encoding set in the HTTP header has lower precedence than the UTF-8 signature.</p>
-<div class="notes"><p><p>The HTTP header attempts to set the character encoding to ISO 8859-15. The page starts with a UTF-8 signature.</p><p>The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00FD;&#x00E4;&#x00E8;</code>. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.</p><p>If the test is unsuccessful, the characters &#x00EF;&#x00BB;&#x00BF; should appear at the top of the page. These represent the bytes that make up the UTF-8 signature when encountered in the ISO 8859-15 encoding.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-022">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-034<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#precedence" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-034" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The default encoding for the browser you are testing is not set to ISO 8859-15.</li>
- <li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html
deleted file mode 100644
index 2f07e9515..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <meta charset="iso-8859-1" > <title>HTTP vs meta charset</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="The HTTP header has a higher precedence than an encoding declaration in a meta charset attribute.">
-<style type='text/css'>
-.test div { width: 50px; }.test div { width: 90px; }
-</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-15.css">
-</head>
-<body>
-<p class='title'>HTTP vs meta charset</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">The HTTP header has a higher precedence than an encoding declaration in a meta charset attribute.</p>
-<div class="notes"><p><p>The HTTP header attempts to set the character encoding to ISO 8859-15. The page contains an encoding declaration in a meta charset attribute that attempts to set the character encoding to ISO 8859-1.</p><p>The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00C3;&#x0153;&#x00C3;&#x20AC;&#x00C3;&#x0161;</code>. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-037">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-018<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#precedence" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-018" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The default encoding for the browser you are testing is not set to ISO 8859-15.</li>
- <li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html
deleted file mode 100644
index 6853cddec..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" > <title>HTTP vs meta content</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="The HTTP header has a higher precedence than an encoding declaration in a meta content attribute.">
-<style type='text/css'>
-.test div { width: 50px; }.test div { width: 90px; }
-</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-15.css">
-</head>
-<body>
-<p class='title'>HTTP vs meta content</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">The HTTP header has a higher precedence than an encoding declaration in a meta content attribute.</p>
-<div class="notes"><p><p>The HTTP header attempts to set the character encoding to ISO 8859-15. The page contains an encoding declaration in a meta content attribute that attempts to set the character encoding to ISO 8859-1.</p><p>The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00C3;&#x0153;&#x00C3;&#x20AC;&#x00C3;&#x0161;</code>. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-018">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-016<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#precedence" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-016" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The default encoding for the browser you are testing is not set to ISO 8859-15.</li>
- <li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html
deleted file mode 100644
index 612e26c6c..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <title>No encoding declaration</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="A page with no encoding information in HTTP, BOM, XML declaration or meta element will be treated as UTF-8.">
-<style type='text/css'>
-.test div { width: 50px; }</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-utf8.css">
-</head>
-<body>
-<p class='title'>No encoding declaration</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">A page with no encoding information in HTTP, BOM, XML declaration or meta element will be treated as UTF-8.</p>
-<div class="notes"><p><p>The test on this page contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00FD;&#x00E4;&#x00E8;</code>. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-034">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-015<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#basics" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-015" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/README b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/README
deleted file mode 100644
index 38ef0f9f1..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/README
+++ /dev/null
@@ -1,9 +0,0 @@
-These test cases come from
-http://www.w3.org/International/tests/repository/html5/the-input-byte-stream/results-basics
-
-Distributed under both the W3C Test Suite License
-(http://www.w3.org/Consortium/Legal/2008/04-testsuite-license)
-and the W3C 3-clause BSD License
-(http://www.w3.org/Consortium/Legal/2008/03-bsd-license).
-To contribute to a W3C Test Suite, see the policies and contribution
-forms (http://www.w3.org/2004/10/27-testcases).
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html
deleted file mode 100644
index 3abf7a934..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html
deleted file mode 100644
index 76254c980..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html
deleted file mode 100644
index 83de43338..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <meta charset="iso-8859-15"> <title>UTF-8 BOM vs meta charset</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="A page with a UTF-8 BOM will be recognized as UTF-8 even if the meta charset attribute declares a different encoding.">
-<style type='text/css'>
-.test div { width: 50px; }.test div { width: 90px; }
-</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-utf8.css">
-</head>
-<body>
-<p class='title'>UTF-8 BOM vs meta charset</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">A page with a UTF-8 BOM will be recognized as UTF-8 even if the meta charset attribute declares a different encoding.</p>
-<div class="notes"><p><p>The page contains an encoding declaration in a meta charset attribute that attempts to set the character encoding to ISO 8859-15, but the file starts with a UTF-8 signature.</p><p>The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00FD;&#x00E4;&#x00E8;</code>. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-024">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-038<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#precedence" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-038" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The default encoding for the browser you are testing is not set to ISO 8859-15.</li>
- <li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html
deleted file mode 100644
index 501aac2d6..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <meta http-equiv="content-type" content="text/html; charset=iso-8859-15"> <title>UTF-8 BOM vs meta content</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="A page with a UTF-8 BOM will be recognized as UTF-8 even if the meta content attribute declares a different encoding.">
-<style type='text/css'>
-.test div { width: 50px; }</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-utf8.css">
-</head>
-<body>
-<p class='title'>UTF-8 BOM vs meta content</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">A page with a UTF-8 BOM will be recognized as UTF-8 even if the meta content attribute declares a different encoding.</p>
-<div class="notes"><p><p>The page contains an encoding declaration in a meta content attribute that attempts to set the character encoding to ISO 8859-15, but the file starts with a UTF-8 signature.</p><p>The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00FD;&#x00E4;&#x00E8;</code>. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-038">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-037<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#precedence" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-037" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The default encoding for the browser you are testing is not set to ISO 8859-15.</li>
- <li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html
deleted file mode 100644
index 2d7d25aba..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <meta charset="iso-8859-15"> <title>meta charset attribute</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="The character encoding of the page can be set by a meta element with charset attribute.">
-<style type='text/css'>
-.test div { width: 50px; }</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-15.css">
-</head>
-<body>
-<p class='title'>meta charset attribute</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">The character encoding of the page can be set by a meta element with charset attribute.</p>
-<div class="notes"><p><p>The only character encoding declaration for this HTML file is in the charset attribute of the meta element, which declares the encoding to be ISO 8859-15.</p><p>The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00C3;&#x0153;&#x00C3;&#x20AC;&#x00C3;&#x0161;</code>. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-015">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-009<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#basics" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-009" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The default encoding for the browser you are testing is not set to ISO 8859-15.</li>
- <li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/meta-content-attribute.html b/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/meta-content-attribute.html
deleted file mode 100644
index 1c3f228e7..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/charset/testdata/meta-content-attribute.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" >
-<head>
- <meta http-equiv="content-type" content="text/html; charset=iso-8859-15"> <title>meta content attribute</title>
-<link rel='author' title='Richard Ishida' href='mailto:ishida@w3.org'>
-<link rel='help' href='http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream'>
-<link rel="stylesheet" type="text/css" href="./generatedtests.css">
-<script src="http://w3c-test.org/resources/testharness.js"></script>
-<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
-<meta name='flags' content='http'>
-<meta name="assert" content="The character encoding of the page can be set by a meta element with http-equiv and content attributes.">
-<style type='text/css'>
-.test div { width: 50px; }</style>
-<link rel="stylesheet" type="text/css" href="the-input-byte-stream/support/encodingtests-15.css">
-</head>
-<body>
-<p class='title'>meta content attribute</p>
-
-
-<div id='log'></div>
-
-
-<div class='test'><div id='box' class='ýäè'>&#xA0;</div></div>
-
-
-
-
-
-<div class='description'>
-<p class="assertion" title="Assertion">The character encoding of the page can be set by a meta element with http-equiv and content attributes.</p>
-<div class="notes"><p><p>The only character encoding declaration for this HTML file is in the content attribute of the meta element, which declares the encoding to be ISO 8859-15.</p><p>The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector <code>.test div.&#x00C3;&#x0153;&#x00C3;&#x20AC;&#x00C3;&#x0161;</code>. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.</p></p>
-</div>
-</div>
-<div class="nexttest"><div><a href="generate?test=the-input-byte-stream-009">Next test</a></div><div class="doctype">HTML5</div>
-<p class="jump">the-input-byte-stream-007<br /><a href="/International/tests/html5/the-input-byte-stream/results-basics#basics" target="_blank">Result summary &amp; related tests</a><br /><a href="http://w3c-test.org/framework/details/i18n-html5/the-input-byte-stream-007" target="_blank">Detailed results for this test</a><br/> <a href="http://www.w3.org/TR/html5/syntax.html#the-input-byte-stream" target="_blank">Link to spec</a></p>
-<div class='prereq'>Assumptions: <ul><li>The default encoding for the browser you are testing is not set to ISO 8859-15.</li>
- <li>The test is read from a server that supports HTTP.</li></ul></div>
-</div>
-<script>
-test(function() {
-assert_equals(document.getElementById('box').offsetWidth, 100);
-}, " ");
-</script>
-
-</body>
-</html>
-
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/entity_test.go b/Godeps/_workspace/src/golang.org/x/net/html/entity_test.go
deleted file mode 100644
index b53f866fa..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/entity_test.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
- "testing"
- "unicode/utf8"
-)
-
-func TestEntityLength(t *testing.T) {
- // We verify that the length of UTF-8 encoding of each value is <= 1 + len(key).
- // The +1 comes from the leading "&". This property implies that the length of
- // unescaped text is <= the length of escaped text.
- for k, v := range entity {
- if 1+len(k) < utf8.RuneLen(v) {
- t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v))
- }
- if len(k) > longestEntityWithoutSemicolon && k[len(k)-1] != ';' {
- t.Errorf("entity name %s is %d characters, but longestEntityWithoutSemicolon=%d", k, len(k), longestEntityWithoutSemicolon)
- }
- }
- for k, v := range entity2 {
- if 1+len(k) < utf8.RuneLen(v[0])+utf8.RuneLen(v[1]) {
- t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v[0]) + string(v[1]))
- }
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/escape_test.go b/Godeps/_workspace/src/golang.org/x/net/html/escape_test.go
deleted file mode 100644
index b405d4b4a..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/escape_test.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import "testing"
-
-type unescapeTest struct {
- // A short description of the test case.
- desc string
- // The HTML text.
- html string
- // The unescaped text.
- unescaped string
-}
-
-var unescapeTests = []unescapeTest{
- // Handle no entities.
- {
- "copy",
- "A\ttext\nstring",
- "A\ttext\nstring",
- },
- // Handle simple named entities.
- {
- "simple",
- "&amp; &gt; &lt;",
- "& > <",
- },
- // Handle hitting the end of the string.
- {
- "stringEnd",
- "&amp &amp",
- "& &",
- },
- // Handle entities with two codepoints.
- {
- "multiCodepoint",
- "text &gesl; blah",
- "text \u22db\ufe00 blah",
- },
- // Handle decimal numeric entities.
- {
- "decimalEntity",
- "Delta = &#916; ",
- "Delta = Δ ",
- },
- // Handle hexadecimal numeric entities.
- {
- "hexadecimalEntity",
- "Lambda = &#x3bb; = &#X3Bb ",
- "Lambda = λ = λ ",
- },
- // Handle numeric early termination.
- {
- "numericEnds",
- "&# &#x &#128;43 &copy = &#169f = &#xa9",
- "&# &#x €43 © = ©f = ©",
- },
- // Handle numeric ISO-8859-1 entity replacements.
- {
- "numericReplacements",
- "Footnote&#x87;",
- "Footnote‡",
- },
-}
-
-func TestUnescape(t *testing.T) {
- for _, tt := range unescapeTests {
- unescaped := UnescapeString(tt.html)
- if unescaped != tt.unescaped {
- t.Errorf("TestUnescape %s: want %q, got %q", tt.desc, tt.unescaped, unescaped)
- }
- }
-}
-
-func TestUnescapeEscape(t *testing.T) {
- ss := []string{
- ``,
- `abc def`,
- `a & b`,
- `a&amp;b`,
- `a &amp b`,
- `&quot;`,
- `"`,
- `"<&>"`,
- `&quot;&lt;&amp;&gt;&quot;`,
- `3&5==1 && 0<1, "0&lt;1", a+acute=&aacute;`,
- `The special characters are: <, >, &, ' and "`,
- }
- for _, s := range ss {
- if got := UnescapeString(EscapeString(s)); got != s {
- t.Errorf("got %q want %q", got, s)
- }
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/example_test.go b/Godeps/_workspace/src/golang.org/x/net/html/example_test.go
deleted file mode 100644
index 0b06ed773..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/example_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This example demonstrates parsing HTML data and walking the resulting tree.
-package html_test
-
-import (
- "fmt"
- "log"
- "strings"
-
- "golang.org/x/net/html"
-)
-
-func ExampleParse() {
- s := `<p>Links:</p><ul><li><a href="foo">Foo</a><li><a href="/bar/baz">BarBaz</a></ul>`
- doc, err := html.Parse(strings.NewReader(s))
- if err != nil {
- log.Fatal(err)
- }
- var f func(*html.Node)
- f = func(n *html.Node) {
- if n.Type == html.ElementNode && n.Data == "a" {
- for _, a := range n.Attr {
- if a.Key == "href" {
- fmt.Println(a.Val)
- break
- }
- }
- }
- for c := n.FirstChild; c != nil; c = c.NextSibling {
- f(c)
- }
- }
- f(doc)
- // Output:
- // foo
- // /bar/baz
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/node_test.go b/Godeps/_workspace/src/golang.org/x/net/html/node_test.go
deleted file mode 100644
index 471102f3a..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/node_test.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
- "fmt"
-)
-
-// checkTreeConsistency checks that a node and its descendants are all
-// consistent in their parent/child/sibling relationships.
-func checkTreeConsistency(n *Node) error {
- return checkTreeConsistency1(n, 0)
-}
-
-func checkTreeConsistency1(n *Node, depth int) error {
- if depth == 1e4 {
- return fmt.Errorf("html: tree looks like it contains a cycle")
- }
- if err := checkNodeConsistency(n); err != nil {
- return err
- }
- for c := n.FirstChild; c != nil; c = c.NextSibling {
- if err := checkTreeConsistency1(c, depth+1); err != nil {
- return err
- }
- }
- return nil
-}
-
-// checkNodeConsistency checks that a node's parent/child/sibling relationships
-// are consistent.
-func checkNodeConsistency(n *Node) error {
- if n == nil {
- return nil
- }
-
- nParent := 0
- for p := n.Parent; p != nil; p = p.Parent {
- nParent++
- if nParent == 1e4 {
- return fmt.Errorf("html: parent list looks like an infinite loop")
- }
- }
-
- nForward := 0
- for c := n.FirstChild; c != nil; c = c.NextSibling {
- nForward++
- if nForward == 1e6 {
- return fmt.Errorf("html: forward list of children looks like an infinite loop")
- }
- if c.Parent != n {
- return fmt.Errorf("html: inconsistent child/parent relationship")
- }
- }
-
- nBackward := 0
- for c := n.LastChild; c != nil; c = c.PrevSibling {
- nBackward++
- if nBackward == 1e6 {
- return fmt.Errorf("html: backward list of children looks like an infinite loop")
- }
- if c.Parent != n {
- return fmt.Errorf("html: inconsistent child/parent relationship")
- }
- }
-
- if n.Parent != nil {
- if n.Parent == n {
- return fmt.Errorf("html: inconsistent parent relationship")
- }
- if n.Parent == n.FirstChild {
- return fmt.Errorf("html: inconsistent parent/first relationship")
- }
- if n.Parent == n.LastChild {
- return fmt.Errorf("html: inconsistent parent/last relationship")
- }
- if n.Parent == n.PrevSibling {
- return fmt.Errorf("html: inconsistent parent/prev relationship")
- }
- if n.Parent == n.NextSibling {
- return fmt.Errorf("html: inconsistent parent/next relationship")
- }
-
- parentHasNAsAChild := false
- for c := n.Parent.FirstChild; c != nil; c = c.NextSibling {
- if c == n {
- parentHasNAsAChild = true
- break
- }
- }
- if !parentHasNAsAChild {
- return fmt.Errorf("html: inconsistent parent/child relationship")
- }
- }
-
- if n.PrevSibling != nil && n.PrevSibling.NextSibling != n {
- return fmt.Errorf("html: inconsistent prev/next relationship")
- }
- if n.NextSibling != nil && n.NextSibling.PrevSibling != n {
- return fmt.Errorf("html: inconsistent next/prev relationship")
- }
-
- if (n.FirstChild == nil) != (n.LastChild == nil) {
- return fmt.Errorf("html: inconsistent first/last relationship")
- }
- if n.FirstChild != nil && n.FirstChild == n.LastChild {
- // We have a sole child.
- if n.FirstChild.PrevSibling != nil || n.FirstChild.NextSibling != nil {
- return fmt.Errorf("html: inconsistent sole child's sibling relationship")
- }
- }
-
- seen := map[*Node]bool{}
-
- var last *Node
- for c := n.FirstChild; c != nil; c = c.NextSibling {
- if seen[c] {
- return fmt.Errorf("html: inconsistent repeated child")
- }
- seen[c] = true
- last = c
- }
- if last != n.LastChild {
- return fmt.Errorf("html: inconsistent last relationship")
- }
-
- var first *Node
- for c := n.LastChild; c != nil; c = c.PrevSibling {
- if !seen[c] {
- return fmt.Errorf("html: inconsistent missing child")
- }
- delete(seen, c)
- first = c
- }
- if first != n.FirstChild {
- return fmt.Errorf("html: inconsistent first relationship")
- }
-
- if len(seen) != 0 {
- return fmt.Errorf("html: inconsistent forwards/backwards child list")
- }
-
- return nil
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/parse_test.go b/Godeps/_workspace/src/golang.org/x/net/html/parse_test.go
deleted file mode 100644
index 7e47d11be..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/parse_test.go
+++ /dev/null
@@ -1,388 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
- "bufio"
- "bytes"
- "errors"
- "fmt"
- "io"
- "io/ioutil"
- "os"
- "path/filepath"
- "runtime"
- "sort"
- "strings"
- "testing"
-
- "golang.org/x/net/html/atom"
-)
-
-// readParseTest reads a single test case from r.
-func readParseTest(r *bufio.Reader) (text, want, context string, err error) {
- line, err := r.ReadSlice('\n')
- if err != nil {
- return "", "", "", err
- }
- var b []byte
-
- // Read the HTML.
- if string(line) != "#data\n" {
- return "", "", "", fmt.Errorf(`got %q want "#data\n"`, line)
- }
- for {
- line, err = r.ReadSlice('\n')
- if err != nil {
- return "", "", "", err
- }
- if line[0] == '#' {
- break
- }
- b = append(b, line...)
- }
- text = strings.TrimSuffix(string(b), "\n")
- b = b[:0]
-
- // Skip the error list.
- if string(line) != "#errors\n" {
- return "", "", "", fmt.Errorf(`got %q want "#errors\n"`, line)
- }
- for {
- line, err = r.ReadSlice('\n')
- if err != nil {
- return "", "", "", err
- }
- if line[0] == '#' {
- break
- }
- }
-
- if string(line) == "#document-fragment\n" {
- line, err = r.ReadSlice('\n')
- if err != nil {
- return "", "", "", err
- }
- context = strings.TrimSpace(string(line))
- line, err = r.ReadSlice('\n')
- if err != nil {
- return "", "", "", err
- }
- }
-
- // Read the dump of what the parse tree should be.
- if string(line) != "#document\n" {
- return "", "", "", fmt.Errorf(`got %q want "#document\n"`, line)
- }
- inQuote := false
- for {
- line, err = r.ReadSlice('\n')
- if err != nil && err != io.EOF {
- return "", "", "", err
- }
- trimmed := bytes.Trim(line, "| \n")
- if len(trimmed) > 0 {
- if line[0] == '|' && trimmed[0] == '"' {
- inQuote = true
- }
- if trimmed[len(trimmed)-1] == '"' && !(line[0] == '|' && len(trimmed) == 1) {
- inQuote = false
- }
- }
- if len(line) == 0 || len(line) == 1 && line[0] == '\n' && !inQuote {
- break
- }
- b = append(b, line...)
- }
- return text, string(b), context, nil
-}
-
-func dumpIndent(w io.Writer, level int) {
- io.WriteString(w, "| ")
- for i := 0; i < level; i++ {
- io.WriteString(w, " ")
- }
-}
-
-type sortedAttributes []Attribute
-
-func (a sortedAttributes) Len() int {
- return len(a)
-}
-
-func (a sortedAttributes) Less(i, j int) bool {
- if a[i].Namespace != a[j].Namespace {
- return a[i].Namespace < a[j].Namespace
- }
- return a[i].Key < a[j].Key
-}
-
-func (a sortedAttributes) Swap(i, j int) {
- a[i], a[j] = a[j], a[i]
-}
-
-func dumpLevel(w io.Writer, n *Node, level int) error {
- dumpIndent(w, level)
- switch n.Type {
- case ErrorNode:
- return errors.New("unexpected ErrorNode")
- case DocumentNode:
- return errors.New("unexpected DocumentNode")
- case ElementNode:
- if n.Namespace != "" {
- fmt.Fprintf(w, "<%s %s>", n.Namespace, n.Data)
- } else {
- fmt.Fprintf(w, "<%s>", n.Data)
- }
- attr := sortedAttributes(n.Attr)
- sort.Sort(attr)
- for _, a := range attr {
- io.WriteString(w, "\n")
- dumpIndent(w, level+1)
- if a.Namespace != "" {
- fmt.Fprintf(w, `%s %s="%s"`, a.Namespace, a.Key, a.Val)
- } else {
- fmt.Fprintf(w, `%s="%s"`, a.Key, a.Val)
- }
- }
- case TextNode:
- fmt.Fprintf(w, `"%s"`, n.Data)
- case CommentNode:
- fmt.Fprintf(w, "<!-- %s -->", n.Data)
- case DoctypeNode:
- fmt.Fprintf(w, "<!DOCTYPE %s", n.Data)
- if n.Attr != nil {
- var p, s string
- for _, a := range n.Attr {
- switch a.Key {
- case "public":
- p = a.Val
- case "system":
- s = a.Val
- }
- }
- if p != "" || s != "" {
- fmt.Fprintf(w, ` "%s"`, p)
- fmt.Fprintf(w, ` "%s"`, s)
- }
- }
- io.WriteString(w, ">")
- case scopeMarkerNode:
- return errors.New("unexpected scopeMarkerNode")
- default:
- return errors.New("unknown node type")
- }
- io.WriteString(w, "\n")
- for c := n.FirstChild; c != nil; c = c.NextSibling {
- if err := dumpLevel(w, c, level+1); err != nil {
- return err
- }
- }
- return nil
-}
-
-func dump(n *Node) (string, error) {
- if n == nil || n.FirstChild == nil {
- return "", nil
- }
- var b bytes.Buffer
- for c := n.FirstChild; c != nil; c = c.NextSibling {
- if err := dumpLevel(&b, c, 0); err != nil {
- return "", err
- }
- }
- return b.String(), nil
-}
-
-const testDataDir = "testdata/webkit/"
-
-func TestParser(t *testing.T) {
- testFiles, err := filepath.Glob(testDataDir + "*.dat")
- if err != nil {
- t.Fatal(err)
- }
- for _, tf := range testFiles {
- f, err := os.Open(tf)
- if err != nil {
- t.Fatal(err)
- }
- defer f.Close()
- r := bufio.NewReader(f)
-
- for i := 0; ; i++ {
- text, want, context, err := readParseTest(r)
- if err == io.EOF {
- break
- }
- if err != nil {
- t.Fatal(err)
- }
-
- err = testParseCase(text, want, context)
-
- if err != nil {
- t.Errorf("%s test #%d %q, %s", tf, i, text, err)
- }
- }
- }
-}
-
-// testParseCase tests one test case from the test files. If the test does not
-// pass, it returns an error that explains the failure.
-// text is the HTML to be parsed, want is a dump of the correct parse tree,
-// and context is the name of the context node, if any.
-func testParseCase(text, want, context string) (err error) {
- defer func() {
- if x := recover(); x != nil {
- switch e := x.(type) {
- case error:
- err = e
- default:
- err = fmt.Errorf("%v", e)
- }
- }
- }()
-
- var doc *Node
- if context == "" {
- doc, err = Parse(strings.NewReader(text))
- if err != nil {
- return err
- }
- } else {
- contextNode := &Node{
- Type: ElementNode,
- DataAtom: atom.Lookup([]byte(context)),
- Data: context,
- }
- nodes, err := ParseFragment(strings.NewReader(text), contextNode)
- if err != nil {
- return err
- }
- doc = &Node{
- Type: DocumentNode,
- }
- for _, n := range nodes {
- doc.AppendChild(n)
- }
- }
-
- if err := checkTreeConsistency(doc); err != nil {
- return err
- }
-
- got, err := dump(doc)
- if err != nil {
- return err
- }
- // Compare the parsed tree to the #document section.
- if got != want {
- return fmt.Errorf("got vs want:\n----\n%s----\n%s----", got, want)
- }
-
- if renderTestBlacklist[text] || context != "" {
- return nil
- }
-
- // Check that rendering and re-parsing results in an identical tree.
- pr, pw := io.Pipe()
- go func() {
- pw.CloseWithError(Render(pw, doc))
- }()
- doc1, err := Parse(pr)
- if err != nil {
- return err
- }
- got1, err := dump(doc1)
- if err != nil {
- return err
- }
- if got != got1 {
- return fmt.Errorf("got vs got1:\n----\n%s----\n%s----", got, got1)
- }
-
- return nil
-}
-
-// Some test input result in parse trees are not 'well-formed' despite
-// following the HTML5 recovery algorithms. Rendering and re-parsing such a
-// tree will not result in an exact clone of that tree. We blacklist such
-// inputs from the render test.
-var renderTestBlacklist = map[string]bool{
- // The second <a> will be reparented to the first <table>'s parent. This
- // results in an <a> whose parent is an <a>, which is not 'well-formed'.
- `<a><table><td><a><table></table><a></tr><a></table><b>X</b>C<a>Y`: true,
- // The same thing with a <p>:
- `<p><table></p>`: true,
- // More cases of <a> being reparented:
- `<a href="blah">aba<table><a href="foo">br<tr><td></td></tr>x</table>aoe`: true,
- `<a><table><a></table><p><a><div><a>`: true,
- `<a><table><td><a><table></table><a></tr><a></table><a>`: true,
- // A similar reparenting situation involving <nobr>:
- `<!DOCTYPE html><body><b><nobr>1<table><nobr></b><i><nobr>2<nobr></i>3`: true,
- // A <plaintext> element is reparented, putting it before a table.
- // A <plaintext> element can't have anything after it in HTML.
- `<table><plaintext><td>`: true,
- `<!doctype html><table><plaintext></plaintext>`: true,
- `<!doctype html><table><tbody><plaintext></plaintext>`: true,
- `<!doctype html><table><tbody><tr><plaintext></plaintext>`: true,
- // A form inside a table inside a form doesn't work either.
- `<!doctype html><form><table></form><form></table></form>`: true,
- // A script that ends at EOF may escape its own closing tag when rendered.
- `<!doctype html><script><!--<script `: true,
- `<!doctype html><script><!--<script <`: true,
- `<!doctype html><script><!--<script <a`: true,
- `<!doctype html><script><!--<script </`: true,
- `<!doctype html><script><!--<script </s`: true,
- `<!doctype html><script><!--<script </script`: true,
- `<!doctype html><script><!--<script </scripta`: true,
- `<!doctype html><script><!--<script -`: true,
- `<!doctype html><script><!--<script -a`: true,
- `<!doctype html><script><!--<script -<`: true,
- `<!doctype html><script><!--<script --`: true,
- `<!doctype html><script><!--<script --a`: true,
- `<!doctype html><script><!--<script --<`: true,
- `<script><!--<script `: true,
- `<script><!--<script <a`: true,
- `<script><!--<script </script`: true,
- `<script><!--<script </scripta`: true,
- `<script><!--<script -`: true,
- `<script><!--<script -a`: true,
- `<script><!--<script --`: true,
- `<script><!--<script --a`: true,
- `<script><!--<script <`: true,
- `<script><!--<script </`: true,
- `<script><!--<script </s`: true,
- // Reconstructing the active formatting elements results in a <plaintext>
- // element that contains an <a> element.
- `<!doctype html><p><a><plaintext>b`: true,
-}
-
-func TestNodeConsistency(t *testing.T) {
- // inconsistentNode is a Node whose DataAtom and Data do not agree.
- inconsistentNode := &Node{
- Type: ElementNode,
- DataAtom: atom.Frameset,
- Data: "table",
- }
- _, err := ParseFragment(strings.NewReader("<p>hello</p>"), inconsistentNode)
- if err == nil {
- t.Errorf("got nil error, want non-nil")
- }
-}
-
-func BenchmarkParser(b *testing.B) {
- buf, err := ioutil.ReadFile("testdata/go1.html")
- if err != nil {
- b.Fatalf("could not read testdata/go1.html: %v", err)
- }
- b.SetBytes(int64(len(buf)))
- runtime.GC()
- b.ReportAllocs()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- Parse(bytes.NewBuffer(buf))
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/render.go b/Godeps/_workspace/src/golang.org/x/net/html/render.go
index 4a833b440..d34564f49 100644
--- a/Godeps/_workspace/src/golang.org/x/net/html/render.go
+++ b/Godeps/_workspace/src/golang.org/x/net/html/render.go
@@ -14,7 +14,7 @@ import (
type writer interface {
io.Writer
- WriteByte(c byte) error // in Go 1.1, use io.ByteWriter
+ io.ByteWriter
WriteString(string) (int, error)
}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/render_test.go b/Godeps/_workspace/src/golang.org/x/net/html/render_test.go
deleted file mode 100644
index 11da54b31..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/render_test.go
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
- "bytes"
- "testing"
-)
-
-func TestRenderer(t *testing.T) {
- nodes := [...]*Node{
- 0: {
- Type: ElementNode,
- Data: "html",
- },
- 1: {
- Type: ElementNode,
- Data: "head",
- },
- 2: {
- Type: ElementNode,
- Data: "body",
- },
- 3: {
- Type: TextNode,
- Data: "0<1",
- },
- 4: {
- Type: ElementNode,
- Data: "p",
- Attr: []Attribute{
- {
- Key: "id",
- Val: "A",
- },
- {
- Key: "foo",
- Val: `abc"def`,
- },
- },
- },
- 5: {
- Type: TextNode,
- Data: "2",
- },
- 6: {
- Type: ElementNode,
- Data: "b",
- Attr: []Attribute{
- {
- Key: "empty",
- Val: "",
- },
- },
- },
- 7: {
- Type: TextNode,
- Data: "3",
- },
- 8: {
- Type: ElementNode,
- Data: "i",
- Attr: []Attribute{
- {
- Key: "backslash",
- Val: `\`,
- },
- },
- },
- 9: {
- Type: TextNode,
- Data: "&4",
- },
- 10: {
- Type: TextNode,
- Data: "5",
- },
- 11: {
- Type: ElementNode,
- Data: "blockquote",
- },
- 12: {
- Type: ElementNode,
- Data: "br",
- },
- 13: {
- Type: TextNode,
- Data: "6",
- },
- }
-
- // Build a tree out of those nodes, based on a textual representation.
- // Only the ".\t"s are significant. The trailing HTML-like text is
- // just commentary. The "0:" prefixes are for easy cross-reference with
- // the nodes array.
- treeAsText := [...]string{
- 0: `<html>`,
- 1: `. <head>`,
- 2: `. <body>`,
- 3: `. . "0&lt;1"`,
- 4: `. . <p id="A" foo="abc&#34;def">`,
- 5: `. . . "2"`,
- 6: `. . . <b empty="">`,
- 7: `. . . . "3"`,
- 8: `. . . <i backslash="\">`,
- 9: `. . . . "&amp;4"`,
- 10: `. . "5"`,
- 11: `. . <blockquote>`,
- 12: `. . <br>`,
- 13: `. . "6"`,
- }
- if len(nodes) != len(treeAsText) {
- t.Fatal("len(nodes) != len(treeAsText)")
- }
- var stack [8]*Node
- for i, line := range treeAsText {
- level := 0
- for line[0] == '.' {
- // Strip a leading ".\t".
- line = line[2:]
- level++
- }
- n := nodes[i]
- if level == 0 {
- if stack[0] != nil {
- t.Fatal("multiple root nodes")
- }
- stack[0] = n
- } else {
- stack[level-1].AppendChild(n)
- stack[level] = n
- for i := level + 1; i < len(stack); i++ {
- stack[i] = nil
- }
- }
- // At each stage of tree construction, we check all nodes for consistency.
- for j, m := range nodes {
- if err := checkNodeConsistency(m); err != nil {
- t.Fatalf("i=%d, j=%d: %v", i, j, err)
- }
- }
- }
-
- want := `<html><head></head><body>0&lt;1<p id="A" foo="abc&#34;def">` +
- `2<b empty="">3</b><i backslash="\">&amp;4</i></p>` +
- `5<blockquote></blockquote><br/>6</body></html>`
- b := new(bytes.Buffer)
- if err := Render(b, nodes[0]); err != nil {
- t.Fatal(err)
- }
- if got := b.String(); got != want {
- t.Errorf("got vs want:\n%s\n%s\n", got, want)
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/go1.html b/Godeps/_workspace/src/golang.org/x/net/html/testdata/go1.html
deleted file mode 100644
index a782cc71d..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/go1.html
+++ /dev/null
@@ -1,2237 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
- <title>Go 1 Release Notes - The Go Programming Language</title>
-
-<link type="text/css" rel="stylesheet" href="/doc/style.css">
-<script type="text/javascript" src="/doc/godocs.js"></script>
-
-<link rel="search" type="application/opensearchdescription+xml" title="godoc" href="/opensearch.xml" />
-
-<script type="text/javascript">
-var _gaq = _gaq || [];
-_gaq.push(["_setAccount", "UA-11222381-2"]);
-_gaq.push(["_trackPageview"]);
-</script>
-</head>
-<body>
-
-<div id="topbar"><div class="container wide">
-
-<form method="GET" action="/search">
-<div id="menu">
-<a href="/doc/">Documents</a>
-<a href="/ref/">References</a>
-<a href="/pkg/">Packages</a>
-<a href="/project/">The Project</a>
-<a href="/help/">Help</a>
-<input type="text" id="search" name="q" class="inactive" value="Search">
-</div>
-<div id="heading"><a href="/">The Go Programming Language</a></div>
-</form>
-
-</div></div>
-
-<div id="page" class="wide">
-
-
- <div id="plusone"><g:plusone size="small" annotation="none"></g:plusone></div>
- <h1>Go 1 Release Notes</h1>
-
-
-
-
-<div id="nav"></div>
-
-
-
-
-<h2 id="introduction">Introduction to Go 1</h2>
-
-<p>
-Go version 1, Go 1 for short, defines a language and a set of core libraries
-that provide a stable foundation for creating reliable products, projects, and
-publications.
-</p>
-
-<p>
-The driving motivation for Go 1 is stability for its users. People should be able to
-write Go programs and expect that they will continue to compile and run without
-change, on a time scale of years, including in production environments such as
-Google App Engine. Similarly, people should be able to write books about Go, be
-able to say which version of Go the book is describing, and have that version
-number still be meaningful much later.
-</p>
-
-<p>
-Code that compiles in Go 1 should, with few exceptions, continue to compile and
-run throughout the lifetime of that version, even as we issue updates and bug
-fixes such as Go version 1.1, 1.2, and so on. Other than critical fixes, changes
-made to the language and library for subsequent releases of Go 1 may
-add functionality but will not break existing Go 1 programs.
-<a href="go1compat.html">The Go 1 compatibility document</a>
-explains the compatibility guidelines in more detail.
-</p>
-
-<p>
-Go 1 is a representation of Go as it used today, not a wholesale rethinking of
-the language. We avoided designing new features and instead focused on cleaning
-up problems and inconsistencies and improving portability. There are a number
-changes to the Go language and packages that we had considered for some time and
-prototyped but not released primarily because they are significant and
-backwards-incompatible. Go 1 was an opportunity to get them out, which is
-helpful for the long term, but also means that Go 1 introduces incompatibilities
-for old programs. Fortunately, the <code>go</code> <code>fix</code> tool can
-automate much of the work needed to bring programs up to the Go 1 standard.
-</p>
-
-<p>
-This document outlines the major changes in Go 1 that will affect programmers
-updating existing code; its reference point is the prior release, r60 (tagged as
-r60.3). It also explains how to update code from r60 to run under Go 1.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<h3 id="append">Append</h3>
-
-<p>
-The <code>append</code> predeclared variadic function makes it easy to grow a slice
-by adding elements to the end.
-A common use is to add bytes to the end of a byte slice when generating output.
-However, <code>append</code> did not provide a way to append a string to a <code>[]byte</code>,
-which is another common case.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/greeting := ..byte/` `/append.*hello/`}}
---> greeting := []byte{}
- greeting = append(greeting, []byte(&#34;hello &#34;)...)</pre>
-
-<p>
-By analogy with the similar property of <code>copy</code>, Go 1
-permits a string to be appended (byte-wise) directly to a byte
-slice, reducing the friction between strings and byte slices.
-The conversion is no longer necessary:
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/append.*world/`}}
---> greeting = append(greeting, &#34;world&#34;...)</pre>
-
-<p>
-<em>Updating</em>:
-This is a new feature, so existing code needs no changes.
-</p>
-
-<h3 id="close">Close</h3>
-
-<p>
-The <code>close</code> predeclared function provides a mechanism
-for a sender to signal that no more values will be sent.
-It is important to the implementation of <code>for</code> <code>range</code>
-loops over channels and is helpful in other situations.
-Partly by design and partly because of race conditions that can occur otherwise,
-it is intended for use only by the goroutine sending on the channel,
-not by the goroutine receiving data.
-However, before Go 1 there was no compile-time checking that <code>close</code>
-was being used correctly.
-</p>
-
-<p>
-To close this gap, at least in part, Go 1 disallows <code>close</code> on receive-only channels.
-Attempting to close such a channel is a compile-time error.
-</p>
-
-<pre>
- var c chan int
- var csend chan&lt;- int = c
- var crecv &lt;-chan int = c
- close(c) // legal
- close(csend) // legal
- close(crecv) // illegal
-</pre>
-
-<p>
-<em>Updating</em>:
-Existing code that attempts to close a receive-only channel was
-erroneous even before Go 1 and should be fixed. The compiler will
-now reject such code.
-</p>
-
-<h3 id="literals">Composite literals</h3>
-
-<p>
-In Go 1, a composite literal of array, slice, or map type can elide the
-type specification for the elements' initializers if they are of pointer type.
-All four of the initializations in this example are legal; the last one was illegal before Go 1.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/type Date struct/` `/STOP/`}}
---> type Date struct {
- month string
- day int
- }
- <span class="comment">// Struct values, fully qualified; always legal.</span>
- holiday1 := []Date{
- Date{&#34;Feb&#34;, 14},
- Date{&#34;Nov&#34;, 11},
- Date{&#34;Dec&#34;, 25},
- }
- <span class="comment">// Struct values, type name elided; always legal.</span>
- holiday2 := []Date{
- {&#34;Feb&#34;, 14},
- {&#34;Nov&#34;, 11},
- {&#34;Dec&#34;, 25},
- }
- <span class="comment">// Pointers, fully qualified, always legal.</span>
- holiday3 := []*Date{
- &amp;Date{&#34;Feb&#34;, 14},
- &amp;Date{&#34;Nov&#34;, 11},
- &amp;Date{&#34;Dec&#34;, 25},
- }
- <span class="comment">// Pointers, type name elided; legal in Go 1.</span>
- holiday4 := []*Date{
- {&#34;Feb&#34;, 14},
- {&#34;Nov&#34;, 11},
- {&#34;Dec&#34;, 25},
- }</pre>
-
-<p>
-<em>Updating</em>:
-This change has no effect on existing code, but the command
-<code>gofmt</code> <code>-s</code> applied to existing source
-will, among other things, elide explicit element types wherever permitted.
-</p>
-
-
-<h3 id="init">Goroutines during init</h3>
-
-<p>
-The old language defined that <code>go</code> statements executed during initialization created goroutines but that they did not begin to run until initialization of the entire program was complete.
-This introduced clumsiness in many places and, in effect, limited the utility
-of the <code>init</code> construct:
-if it was possible for another package to use the library during initialization, the library
-was forced to avoid goroutines.
-This design was done for reasons of simplicity and safety but,
-as our confidence in the language grew, it seemed unnecessary.
-Running goroutines during initialization is no more complex or unsafe than running them during normal execution.
-</p>
-
-<p>
-In Go 1, code that uses goroutines can be called from
-<code>init</code> routines and global initialization expressions
-without introducing a deadlock.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/PackageGlobal/` `/^}/`}}
--->var PackageGlobal int
-
-func init() {
- c := make(chan int)
- go initializationFunction(c)
- PackageGlobal = &lt;-c
-}</pre>
-
-<p>
-<em>Updating</em>:
-This is a new feature, so existing code needs no changes,
-although it's possible that code that depends on goroutines not starting before <code>main</code> will break.
-There was no such code in the standard repository.
-</p>
-
-<h3 id="rune">The rune type</h3>
-
-<p>
-The language spec allows the <code>int</code> type to be 32 or 64 bits wide, but current implementations set <code>int</code> to 32 bits even on 64-bit platforms.
-It would be preferable to have <code>int</code> be 64 bits on 64-bit platforms.
-(There are important consequences for indexing large slices.)
-However, this change would waste space when processing Unicode characters with
-the old language because the <code>int</code> type was also used to hold Unicode code points: each code point would waste an extra 32 bits of storage if <code>int</code> grew from 32 bits to 64.
-</p>
-
-<p>
-To make changing to 64-bit <code>int</code> feasible,
-Go 1 introduces a new basic type, <code>rune</code>, to represent
-individual Unicode code points.
-It is an alias for <code>int32</code>, analogous to <code>byte</code>
-as an alias for <code>uint8</code>.
-</p>
-
-<p>
-Character literals such as <code>'a'</code>, <code>'語'</code>, and <code>'\u0345'</code>
-now have default type <code>rune</code>,
-analogous to <code>1.0</code> having default type <code>float64</code>.
-A variable initialized to a character constant will therefore
-have type <code>rune</code> unless otherwise specified.
-</p>
-
-<p>
-Libraries have been updated to use <code>rune</code> rather than <code>int</code>
-when appropriate. For instance, the functions <code>unicode.ToLower</code> and
-relatives now take and return a <code>rune</code>.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/STARTRUNE/` `/ENDRUNE/`}}
---> delta := &#39;δ&#39; <span class="comment">// delta has type rune.</span>
- var DELTA rune
- DELTA = unicode.ToUpper(delta)
- epsilon := unicode.ToLower(DELTA + 1)
- if epsilon != &#39;δ&#39;+1 {
- log.Fatal(&#34;inconsistent casing for Greek&#34;)
- }</pre>
-
-<p>
-<em>Updating</em>:
-Most source code will be unaffected by this because the type inference from
-<code>:=</code> initializers introduces the new type silently, and it propagates
-from there.
-Some code may get type errors that a trivial conversion will resolve.
-</p>
-
-<h3 id="error">The error type</h3>
-
-<p>
-Go 1 introduces a new built-in type, <code>error</code>, which has the following definition:
-</p>
-
-<pre>
- type error interface {
- Error() string
- }
-</pre>
-
-<p>
-Since the consequences of this type are all in the package library,
-it is discussed <a href="#errors">below</a>.
-</p>
-
-<h3 id="delete">Deleting from maps</h3>
-
-<p>
-In the old language, to delete the entry with key <code>k</code> from map <code>m</code>, one wrote the statement,
-</p>
-
-<pre>
- m[k] = value, false
-</pre>
-
-<p>
-This syntax was a peculiar special case, the only two-to-one assignment.
-It required passing a value (usually ignored) that is evaluated but discarded,
-plus a boolean that was nearly always the constant <code>false</code>.
-It did the job but was odd and a point of contention.
-</p>
-
-<p>
-In Go 1, that syntax has gone; instead there is a new built-in
-function, <code>delete</code>. The call
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/delete\(m, k\)/`}}
---> delete(m, k)</pre>
-
-<p>
-will delete the map entry retrieved by the expression <code>m[k]</code>.
-There is no return value. Deleting a non-existent entry is a no-op.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will convert expressions of the form <code>m[k] = value,
-false</code> into <code>delete(m, k)</code> when it is clear that
-the ignored value can be safely discarded from the program and
-<code>false</code> refers to the predefined boolean constant.
-The fix tool
-will flag other uses of the syntax for inspection by the programmer.
-</p>
-
-<h3 id="iteration">Iterating in maps</h3>
-
-<p>
-The old language specification did not define the order of iteration for maps,
-and in practice it differed across hardware platforms.
-This caused tests that iterated over maps to be fragile and non-portable, with the
-unpleasant property that a test might always pass on one machine but break on another.
-</p>
-
-<p>
-In Go 1, the order in which elements are visited when iterating
-over a map using a <code>for</code> <code>range</code> statement
-is defined to be unpredictable, even if the same loop is run multiple
-times with the same map.
-Code should not assume that the elements are visited in any particular order.
-</p>
-
-<p>
-This change means that code that depends on iteration order is very likely to break early and be fixed long before it becomes a problem.
-Just as important, it allows the map implementation to ensure better map balancing even when programs are using range loops to select an element from a map.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/Sunday/` `/^ }/`}}
---> m := map[string]int{&#34;Sunday&#34;: 0, &#34;Monday&#34;: 1}
- for name, value := range m {
- <span class="comment">// This loop should not assume Sunday will be visited first.</span>
- f(name, value)
- }</pre>
-
-<p>
-<em>Updating</em>:
-This is one change where tools cannot help. Most existing code
-will be unaffected, but some programs may break or misbehave; we
-recommend manual checking of all range statements over maps to
-verify they do not depend on iteration order. There were a few such
-examples in the standard repository; they have been fixed.
-Note that it was already incorrect to depend on the iteration order, which
-was unspecified. This change codifies the unpredictability.
-</p>
-
-<h3 id="multiple_assignment">Multiple assignment</h3>
-
-<p>
-The language specification has long guaranteed that in assignments
-the right-hand-side expressions are all evaluated before any left-hand-side expressions are assigned.
-To guarantee predictable behavior,
-Go 1 refines the specification further.
-</p>
-
-<p>
-If the left-hand side of the assignment
-statement contains expressions that require evaluation, such as
-function calls or array indexing operations, these will all be done
-using the usual left-to-right rule before any variables are assigned
-their value. Once everything is evaluated, the actual assignments
-proceed in left-to-right order.
-</p>
-
-<p>
-These examples illustrate the behavior.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/sa :=/` `/then sc.0. = 2/`}}
---> sa := []int{1, 2, 3}
- i := 0
- i, sa[i] = 1, 2 <span class="comment">// sets i = 1, sa[0] = 2</span>
-
- sb := []int{1, 2, 3}
- j := 0
- sb[j], j = 2, 1 <span class="comment">// sets sb[0] = 2, j = 1</span>
-
- sc := []int{1, 2, 3}
- sc[0], sc[0] = 1, 2 <span class="comment">// sets sc[0] = 1, then sc[0] = 2 (so sc[0] = 2 at end)</span></pre>
-
-<p>
-<em>Updating</em>:
-This is one change where tools cannot help, but breakage is unlikely.
-No code in the standard repository was broken by this change, and code
-that depended on the previous unspecified behavior was already incorrect.
-</p>
-
-<h3 id="shadowing">Returns and shadowed variables</h3>
-
-<p>
-A common mistake is to use <code>return</code> (without arguments) after an assignment to a variable that has the same name as a result variable but is not the same variable.
-This situation is called <em>shadowing</em>: the result variable has been shadowed by another variable with the same name declared in an inner scope.
-</p>
-
-<p>
-In functions with named return values,
-the Go 1 compilers disallow return statements without arguments if any of the named return values is shadowed at the point of the return statement.
-(It isn't part of the specification, because this is one area we are still exploring;
-the situation is analogous to the compilers rejecting functions that do not end with an explicit return statement.)
-</p>
-
-<p>
-This function implicitly returns a shadowed return value and will be rejected by the compiler:
-</p>
-
-<pre>
- func Bug() (i, j, k int) {
- for i = 0; i &lt; 5; i++ {
- for j := 0; j &lt; 5; j++ { // Redeclares j.
- k += i*j
- if k > 100 {
- return // Rejected: j is shadowed here.
- }
- }
- }
- return // OK: j is not shadowed here.
- }
-</pre>
-
-<p>
-<em>Updating</em>:
-Code that shadows return values in this way will be rejected by the compiler and will need to be fixed by hand.
-The few cases that arose in the standard repository were mostly bugs.
-</p>
-
-<h3 id="unexported">Copying structs with unexported fields</h3>
-
-<p>
-The old language did not allow a package to make a copy of a struct value containing unexported fields belonging to a different package.
-There was, however, a required exception for a method receiver;
-also, the implementations of <code>copy</code> and <code>append</code> have never honored the restriction.
-</p>
-
-<p>
-Go 1 will allow packages to copy struct values containing unexported fields from other packages.
-Besides resolving the inconsistency,
-this change admits a new kind of API: a package can return an opaque value without resorting to a pointer or interface.
-The new implementations of <code>time.Time</code> and
-<code>reflect.Value</code> are examples of types taking advantage of this new property.
-</p>
-
-<p>
-As an example, if package <code>p</code> includes the definitions,
-</p>
-
-<pre>
- type Struct struct {
- Public int
- secret int
- }
- func NewStruct(a int) Struct { // Note: not a pointer.
- return Struct{a, f(a)}
- }
- func (s Struct) String() string {
- return fmt.Sprintf("{%d (secret %d)}", s.Public, s.secret)
- }
-</pre>
-
-<p>
-a package that imports <code>p</code> can assign and copy values of type
-<code>p.Struct</code> at will.
-Behind the scenes the unexported fields will be assigned and copied just
-as if they were exported,
-but the client code will never be aware of them. The code
-</p>
-
-<pre>
- import "p"
-
- myStruct := p.NewStruct(23)
- copyOfMyStruct := myStruct
- fmt.Println(myStruct, copyOfMyStruct)
-</pre>
-
-<p>
-will show that the secret field of the struct has been copied to the new value.
-</p>
-
-<p>
-<em>Updating</em>:
-This is a new feature, so existing code needs no changes.
-</p>
-
-<h3 id="equality">Equality</h3>
-
-<p>
-Before Go 1, the language did not define equality on struct and array values.
-This meant,
-among other things, that structs and arrays could not be used as map keys.
-On the other hand, Go did define equality on function and map values.
-Function equality was problematic in the presence of closures
-(when are two closures equal?)
-while map equality compared pointers, not the maps' content, which was usually
-not what the user would want.
-</p>
-
-<p>
-Go 1 addressed these issues.
-First, structs and arrays can be compared for equality and inequality
-(<code>==</code> and <code>!=</code>),
-and therefore be used as map keys,
-provided they are composed from elements for which equality is also defined,
-using element-wise comparison.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/type Day struct/` `/Printf/`}}
---> type Day struct {
- long string
- short string
- }
- Christmas := Day{&#34;Christmas&#34;, &#34;XMas&#34;}
- Thanksgiving := Day{&#34;Thanksgiving&#34;, &#34;Turkey&#34;}
- holiday := map[Day]bool{
- Christmas: true,
- Thanksgiving: true,
- }
- fmt.Printf(&#34;Christmas is a holiday: %t\n&#34;, holiday[Christmas])</pre>
-
-<p>
-Second, Go 1 removes the definition of equality for function values,
-except for comparison with <code>nil</code>.
-Finally, map equality is gone too, also except for comparison with <code>nil</code>.
-</p>
-
-<p>
-Note that equality is still undefined for slices, for which the
-calculation is in general infeasible. Also note that the ordered
-comparison operators (<code>&lt;</code> <code>&lt;=</code>
-<code>&gt;</code> <code>&gt;=</code>) are still undefined for
-structs and arrays.
-
-<p>
-<em>Updating</em>:
-Struct and array equality is a new feature, so existing code needs no changes.
-Existing code that depends on function or map equality will be
-rejected by the compiler and will need to be fixed by hand.
-Few programs will be affected, but the fix may require some
-redesign.
-</p>
-
-<h2 id="packages">The package hierarchy</h2>
-
-<p>
-Go 1 addresses many deficiencies in the old standard library and
-cleans up a number of packages, making them more internally consistent
-and portable.
-</p>
-
-<p>
-This section describes how the packages have been rearranged in Go 1.
-Some have moved, some have been renamed, some have been deleted.
-New packages are described in later sections.
-</p>
-
-<h3 id="hierarchy">The package hierarchy</h3>
-
-<p>
-Go 1 has a rearranged package hierarchy that groups related items
-into subdirectories. For instance, <code>utf8</code> and
-<code>utf16</code> now occupy subdirectories of <code>unicode</code>.
-Also, <a href="#subrepo">some packages</a> have moved into
-subrepositories of
-<a href="http://code.google.com/p/go"><code>code.google.com/p/go</code></a>
-while <a href="#deleted">others</a> have been deleted outright.
-</p>
-
-<table class="codetable" frame="border" summary="Moved packages">
-<colgroup align="left" width="60%"></colgroup>
-<colgroup align="left" width="40%"></colgroup>
-<tr>
-<th align="left">Old path</th>
-<th align="left">New path</th>
-</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>asn1</td> <td>encoding/asn1</td></tr>
-<tr><td>csv</td> <td>encoding/csv</td></tr>
-<tr><td>gob</td> <td>encoding/gob</td></tr>
-<tr><td>json</td> <td>encoding/json</td></tr>
-<tr><td>xml</td> <td>encoding/xml</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>exp/template/html</td> <td>html/template</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>big</td> <td>math/big</td></tr>
-<tr><td>cmath</td> <td>math/cmplx</td></tr>
-<tr><td>rand</td> <td>math/rand</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>http</td> <td>net/http</td></tr>
-<tr><td>http/cgi</td> <td>net/http/cgi</td></tr>
-<tr><td>http/fcgi</td> <td>net/http/fcgi</td></tr>
-<tr><td>http/httptest</td> <td>net/http/httptest</td></tr>
-<tr><td>http/pprof</td> <td>net/http/pprof</td></tr>
-<tr><td>mail</td> <td>net/mail</td></tr>
-<tr><td>rpc</td> <td>net/rpc</td></tr>
-<tr><td>rpc/jsonrpc</td> <td>net/rpc/jsonrpc</td></tr>
-<tr><td>smtp</td> <td>net/smtp</td></tr>
-<tr><td>url</td> <td>net/url</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>exec</td> <td>os/exec</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>scanner</td> <td>text/scanner</td></tr>
-<tr><td>tabwriter</td> <td>text/tabwriter</td></tr>
-<tr><td>template</td> <td>text/template</td></tr>
-<tr><td>template/parse</td> <td>text/template/parse</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>utf8</td> <td>unicode/utf8</td></tr>
-<tr><td>utf16</td> <td>unicode/utf16</td></tr>
-</table>
-
-<p>
-Note that the package names for the old <code>cmath</code> and
-<code>exp/template/html</code> packages have changed to <code>cmplx</code>
-and <code>template</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update all imports and package renames for packages that
-remain inside the standard repository. Programs that import packages
-that are no longer in the standard repository will need to be edited
-by hand.
-</p>
-
-<h3 id="exp">The package tree exp</h3>
-
-<p>
-Because they are not standardized, the packages under the <code>exp</code> directory will not be available in the
-standard Go 1 release distributions, although they will be available in source code form
-in <a href="http://code.google.com/p/go/">the repository</a> for
-developers who wish to use them.
-</p>
-
-<p>
-Several packages have moved under <code>exp</code> at the time of Go 1's release:
-</p>
-
-<ul>
-<li><code>ebnf</code></li>
-<li><code>html</code><sup>&#8224;</sup></li>
-<li><code>go/types</code></li>
-</ul>
-
-<p>
-(<sup>&#8224;</sup>The <code>EscapeString</code> and <code>UnescapeString</code> types remain
-in package <code>html</code>.)
-</p>
-
-<p>
-All these packages are available under the same names, with the prefix <code>exp/</code>: <code>exp/ebnf</code> etc.
-</p>
-
-<p>
-Also, the <code>utf8.String</code> type has been moved to its own package, <code>exp/utf8string</code>.
-</p>
-
-<p>
-Finally, the <code>gotype</code> command now resides in <code>exp/gotype</code>, while
-<code>ebnflint</code> is now in <code>exp/ebnflint</code>.
-If they are installed, they now reside in <code>$GOROOT/bin/tool</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses packages in <code>exp</code> will need to be updated by hand,
-or else compiled from an installation that has <code>exp</code> available.
-The <code>go</code> <code>fix</code> tool or the compiler will complain about such uses.
-</p>
-
-<h3 id="old">The package tree old</h3>
-
-<p>
-Because they are deprecated, the packages under the <code>old</code> directory will not be available in the
-standard Go 1 release distributions, although they will be available in source code form for
-developers who wish to use them.
-</p>
-
-<p>
-The packages in their new locations are:
-</p>
-
-<ul>
-<li><code>old/netchan</code></li>
-<li><code>old/regexp</code></li>
-<li><code>old/template</code></li>
-</ul>
-
-<p>
-<em>Updating</em>:
-Code that uses packages now in <code>old</code> will need to be updated by hand,
-or else compiled from an installation that has <code>old</code> available.
-The <code>go</code> <code>fix</code> tool will warn about such uses.
-</p>
-
-<h3 id="deleted">Deleted packages</h3>
-
-<p>
-Go 1 deletes several packages outright:
-</p>
-
-<ul>
-<li><code>container/vector</code></li>
-<li><code>exp/datafmt</code></li>
-<li><code>go/typechecker</code></li>
-<li><code>try</code></li>
-</ul>
-
-<p>
-and also the command <code>gotry</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses <code>container/vector</code> should be updated to use
-slices directly. See
-<a href="http://code.google.com/p/go-wiki/wiki/SliceTricks">the Go
-Language Community Wiki</a> for some suggestions.
-Code that uses the other packages (there should be almost zero) will need to be rethought.
-</p>
-
-<h3 id="subrepo">Packages moving to subrepositories</h3>
-
-<p>
-Go 1 has moved a number of packages into other repositories, usually sub-repositories of
-<a href="http://code.google.com/p/go/">the main Go repository</a>.
-This table lists the old and new import paths:
-
-<table class="codetable" frame="border" summary="Sub-repositories">
-<colgroup align="left" width="40%"></colgroup>
-<colgroup align="left" width="60%"></colgroup>
-<tr>
-<th align="left">Old</th>
-<th align="left">New</th>
-</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>crypto/bcrypt</td> <td>code.google.com/p/go.crypto/bcrypt</tr>
-<tr><td>crypto/blowfish</td> <td>code.google.com/p/go.crypto/blowfish</tr>
-<tr><td>crypto/cast5</td> <td>code.google.com/p/go.crypto/cast5</tr>
-<tr><td>crypto/md4</td> <td>code.google.com/p/go.crypto/md4</tr>
-<tr><td>crypto/ocsp</td> <td>code.google.com/p/go.crypto/ocsp</tr>
-<tr><td>crypto/openpgp</td> <td>code.google.com/p/go.crypto/openpgp</tr>
-<tr><td>crypto/openpgp/armor</td> <td>code.google.com/p/go.crypto/openpgp/armor</tr>
-<tr><td>crypto/openpgp/elgamal</td> <td>code.google.com/p/go.crypto/openpgp/elgamal</tr>
-<tr><td>crypto/openpgp/errors</td> <td>code.google.com/p/go.crypto/openpgp/errors</tr>
-<tr><td>crypto/openpgp/packet</td> <td>code.google.com/p/go.crypto/openpgp/packet</tr>
-<tr><td>crypto/openpgp/s2k</td> <td>code.google.com/p/go.crypto/openpgp/s2k</tr>
-<tr><td>crypto/ripemd160</td> <td>code.google.com/p/go.crypto/ripemd160</tr>
-<tr><td>crypto/twofish</td> <td>code.google.com/p/go.crypto/twofish</tr>
-<tr><td>crypto/xtea</td> <td>code.google.com/p/go.crypto/xtea</tr>
-<tr><td>exp/ssh</td> <td>code.google.com/p/go.crypto/ssh</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr>
-<tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>net/dict</td> <td>code.google.com/p/go.net/dict</tr>
-<tr><td>net/websocket</td> <td>code.google.com/p/go.net/websocket</tr>
-<tr><td>exp/spdy</td> <td>code.google.com/p/go.net/spdy</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>encoding/git85</td> <td>code.google.com/p/go.codereview/git85</tr>
-<tr><td>patch</td> <td>code.google.com/p/go.codereview/patch</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>exp/wingui</td> <td>code.google.com/p/gowingui</tr>
-</table>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update imports of these packages to use the new import paths.
-Installations that depend on these packages will need to install them using
-a <code>go get</code> command.
-</p>
-
-<h2 id="major">Major changes to the library</h2>
-
-<p>
-This section describes significant changes to the core libraries, the ones that
-affect the most programs.
-</p>
-
-<h3 id="errors">The error type and errors package</h3>
-
-<p>
-The placement of <code>os.Error</code> in package <code>os</code> is mostly historical: errors first came up when implementing package <code>os</code>, and they seemed system-related at the time.
-Since then it has become clear that errors are more fundamental than the operating system. For example, it would be nice to use <code>Errors</code> in packages that <code>os</code> depends on, like <code>syscall</code>.
-Also, having <code>Error</code> in <code>os</code> introduces many dependencies on <code>os</code> that would otherwise not exist.
-</p>
-
-<p>
-Go 1 solves these problems by introducing a built-in <code>error</code> interface type and a separate <code>errors</code> package (analogous to <code>bytes</code> and <code>strings</code>) that contains utility functions.
-It replaces <code>os.NewError</code> with
-<a href="/pkg/errors/#New"><code>errors.New</code></a>,
-giving errors a more central place in the environment.
-</p>
-
-<p>
-So the widely-used <code>String</code> method does not cause accidental satisfaction
-of the <code>error</code> interface, the <code>error</code> interface uses instead
-the name <code>Error</code> for that method:
-</p>
-
-<pre>
- type error interface {
- Error() string
- }
-</pre>
-
-<p>
-The <code>fmt</code> library automatically invokes <code>Error</code>, as it already
-does for <code>String</code>, for easy printing of error values.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/START ERROR EXAMPLE/` `/END ERROR EXAMPLE/`}}
--->type SyntaxError struct {
- File string
- Line int
- Message string
-}
-
-func (se *SyntaxError) Error() string {
- return fmt.Sprintf(&#34;%s:%d: %s&#34;, se.File, se.Line, se.Message)
-}</pre>
-
-<p>
-All standard packages have been updated to use the new interface; the old <code>os.Error</code> is gone.
-</p>
-
-<p>
-A new package, <a href="/pkg/errors/"><code>errors</code></a>, contains the function
-</p>
-
-<pre>
-func New(text string) error
-</pre>
-
-<p>
-to turn a string into an error. It replaces the old <code>os.NewError</code>.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/ErrSyntax/`}}
---> var ErrSyntax = errors.New(&#34;syntax error&#34;)</pre>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
-Code that defines error types with a <code>String</code> method will need to be updated
-by hand to rename the methods to <code>Error</code>.
-</p>
-
-<h3 id="errno">System call errors</h3>
-
-<p>
-The old <code>syscall</code> package, which predated <code>os.Error</code>
-(and just about everything else),
-returned errors as <code>int</code> values.
-In turn, the <code>os</code> package forwarded many of these errors, such
-as <code>EINVAL</code>, but using a different set of errors on each platform.
-This behavior was unpleasant and unportable.
-</p>
-
-<p>
-In Go 1, the
-<a href="/pkg/syscall/"><code>syscall</code></a>
-package instead returns an <code>error</code> for system call errors.
-On Unix, the implementation is done by a
-<a href="/pkg/syscall/#Errno"><code>syscall.Errno</code></a> type
-that satisfies <code>error</code> and replaces the old <code>os.Errno</code>.
-</p>
-
-<p>
-The changes affecting <code>os.EINVAL</code> and relatives are
-described <a href="#os">elsewhere</a>.
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
-Regardless, most code should use the <code>os</code> package
-rather than <code>syscall</code> and so will be unaffected.
-</p>
-
-<h3 id="time">Time</h3>
-
-<p>
-Time is always a challenge to support well in a programming language.
-The old Go <code>time</code> package had <code>int64</code> units, no
-real type safety,
-and no distinction between absolute times and durations.
-</p>
-
-<p>
-One of the most sweeping changes in the Go 1 library is therefore a
-complete redesign of the
-<a href="/pkg/time/"><code>time</code></a> package.
-Instead of an integer number of nanoseconds as an <code>int64</code>,
-and a separate <code>*time.Time</code> type to deal with human
-units such as hours and years,
-there are now two fundamental types:
-<a href="/pkg/time/#Time"><code>time.Time</code></a>
-(a value, so the <code>*</code> is gone), which represents a moment in time;
-and <a href="/pkg/time/#Duration"><code>time.Duration</code></a>,
-which represents an interval.
-Both have nanosecond resolution.
-A <code>Time</code> can represent any time into the ancient
-past and remote future, while a <code>Duration</code> can
-span plus or minus only about 290 years.
-There are methods on these types, plus a number of helpful
-predefined constant durations such as <code>time.Second</code>.
-</p>
-
-<p>
-Among the new methods are things like
-<a href="/pkg/time/#Time.Add"><code>Time.Add</code></a>,
-which adds a <code>Duration</code> to a <code>Time</code>, and
-<a href="/pkg/time/#Time.Sub"><code>Time.Sub</code></a>,
-which subtracts two <code>Times</code> to yield a <code>Duration</code>.
-</p>
-
-<p>
-The most important semantic change is that the Unix epoch (Jan 1, 1970) is now
-relevant only for those functions and methods that mention Unix:
-<a href="/pkg/time/#Unix"><code>time.Unix</code></a>
-and the <a href="/pkg/time/#Time.Unix"><code>Unix</code></a>
-and <a href="/pkg/time/#Time.UnixNano"><code>UnixNano</code></a> methods
-of the <code>Time</code> type.
-In particular,
-<a href="/pkg/time/#Now"><code>time.Now</code></a>
-returns a <code>time.Time</code> value rather than, in the old
-API, an integer nanosecond count since the Unix epoch.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/sleepUntil/` `/^}/`}}
---><span class="comment">// sleepUntil sleeps until the specified time. It returns immediately if it&#39;s too late.</span>
-func sleepUntil(wakeup time.Time) {
- now := time.Now() <span class="comment">// A Time.</span>
- if !wakeup.After(now) {
- return
- }
- delta := wakeup.Sub(now) <span class="comment">// A Duration.</span>
- fmt.Printf(&#34;Sleeping for %.3fs\n&#34;, delta.Seconds())
- time.Sleep(delta)
-}</pre>
-
-<p>
-The new types, methods, and constants have been propagated through
-all the standard packages that use time, such as <code>os</code> and
-its representation of file time stamps.
-</p>
-
-<p>
-<em>Updating</em>:
-The <code>go</code> <code>fix</code> tool will update many uses of the old <code>time</code> package to use the new
-types and methods, although it does not replace values such as <code>1e9</code>
-representing nanoseconds per second.
-Also, because of type changes in some of the values that arise,
-some of the expressions rewritten by the fix tool may require
-further hand editing; in such cases the rewrite will include
-the correct function or method for the old functionality, but
-may have the wrong type or require further analysis.
-</p>
-
-<h2 id="minor">Minor changes to the library</h2>
-
-<p>
-This section describes smaller changes, such as those to less commonly
-used packages or that affect
-few programs beyond the need to run <code>go</code> <code>fix</code>.
-This category includes packages that are new in Go 1.
-Collectively they improve portability, regularize behavior, and
-make the interfaces more modern and Go-like.
-</p>
-
-<h3 id="archive_zip">The archive/zip package</h3>
-
-<p>
-In Go 1, <a href="/pkg/archive/zip/#Writer"><code>*zip.Writer</code></a> no
-longer has a <code>Write</code> method. Its presence was a mistake.
-</p>
-
-<p>
-<em>Updating</em>:
-What little code is affected will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="bufio">The bufio package</h3>
-
-<p>
-In Go 1, <a href="/pkg/bufio/#NewReaderSize"><code>bufio.NewReaderSize</code></a>
-and
-<a href="/pkg/bufio/#NewWriterSize"><code>bufio.NewWriterSize</code></a>
-functions no longer return an error for invalid sizes.
-If the argument size is too small or invalid, it is adjusted.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update calls that assign the error to _.
-Calls that aren't fixed will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="compress">The compress/flate, compress/gzip and compress/zlib packages</h3>
-
-<p>
-In Go 1, the <code>NewWriterXxx</code> functions in
-<a href="/pkg/compress/flate"><code>compress/flate</code></a>,
-<a href="/pkg/compress/gzip"><code>compress/gzip</code></a> and
-<a href="/pkg/compress/zlib"><code>compress/zlib</code></a>
-all return <code>(*Writer, error)</code> if they take a compression level,
-and <code>*Writer</code> otherwise. Package <code>gzip</code>'s
-<code>Compressor</code> and <code>Decompressor</code> types have been renamed
-to <code>Writer</code> and <code>Reader</code>. Package <code>flate</code>'s
-<code>WrongValueError</code> type has been removed.
-</p>
-
-<p>
-<em>Updating</em>
-Running <code>go</code> <code>fix</code> will update old names and calls that assign the error to _.
-Calls that aren't fixed will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="crypto_aes_des">The crypto/aes and crypto/des packages</h3>
-
-<p>
-In Go 1, the <code>Reset</code> method has been removed. Go does not guarantee
-that memory is not copied and therefore this method was misleading.
-</p>
-
-<p>
-The cipher-specific types <code>*aes.Cipher</code>, <code>*des.Cipher</code>,
-and <code>*des.TripleDESCipher</code> have been removed in favor of
-<code>cipher.Block</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Remove the calls to Reset. Replace uses of the specific cipher types with
-cipher.Block.
-</p>
-
-<h3 id="crypto_elliptic">The crypto/elliptic package</h3>
-
-<p>
-In Go 1, <a href="/pkg/crypto/elliptic/#Curve"><code>elliptic.Curve</code></a>
-has been made an interface to permit alternative implementations. The curve
-parameters have been moved to the
-<a href="/pkg/crypto/elliptic/#CurveParams"><code>elliptic.CurveParams</code></a>
-structure.
-</p>
-
-<p>
-<em>Updating</em>:
-Existing users of <code>*elliptic.Curve</code> will need to change to
-simply <code>elliptic.Curve</code>. Calls to <code>Marshal</code>,
-<code>Unmarshal</code> and <code>GenerateKey</code> are now functions
-in <code>crypto/elliptic</code> that take an <code>elliptic.Curve</code>
-as their first argument.
-</p>
-
-<h3 id="crypto_hmac">The crypto/hmac package</h3>
-
-<p>
-In Go 1, the hash-specific functions, such as <code>hmac.NewMD5</code>, have
-been removed from <code>crypto/hmac</code>. Instead, <code>hmac.New</code> takes
-a function that returns a <code>hash.Hash</code>, such as <code>md5.New</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will perform the needed changes.
-</p>
-
-<h3 id="crypto_x509">The crypto/x509 package</h3>
-
-<p>
-In Go 1, the
-<a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-and
-<a href="/pkg/crypto/x509/#CreateCRL"><code>CreateCRL</code></a>
-functions in <code>crypto/x509</code> have been altered to take an
-<code>interface{}</code> where they previously took a <code>*rsa.PublicKey</code>
-or <code>*rsa.PrivateKey</code>. This will allow other public key algorithms
-to be implemented in the future.
-</p>
-
-<p>
-<em>Updating</em>:
-No changes will be needed.
-</p>
-
-<h3 id="encoding_binary">The encoding/binary package</h3>
-
-<p>
-In Go 1, the <code>binary.TotalSize</code> function has been replaced by
-<a href="/pkg/encoding/binary/#Size"><code>Size</code></a>,
-which takes an <code>interface{}</code> argument rather than
-a <code>reflect.Value</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-What little code is affected will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="encoding_xml">The encoding/xml package</h3>
-
-<p>
-In Go 1, the <a href="/pkg/encoding/xml/"><code>xml</code></a> package
-has been brought closer in design to the other marshaling packages such
-as <a href="/pkg/encoding/gob/"><code>encoding/gob</code></a>.
-</p>
-
-<p>
-The old <code>Parser</code> type is renamed
-<a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> and has a new
-<a href="/pkg/encoding/xml/#Decoder.Decode"><code>Decode</code></a> method. An
-<a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a> type was also introduced.
-</p>
-
-<p>
-The functions <a href="/pkg/encoding/xml/#Marshal"><code>Marshal</code></a>
-and <a href="/pkg/encoding/xml/#Unmarshal"><code>Unmarshal</code></a>
-work with <code>[]byte</code> values now. To work with streams,
-use the new <a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a>
-and <a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> types.
-</p>
-
-<p>
-When marshaling or unmarshaling values, the format of supported flags in
-field tags has changed to be closer to the
-<a href="/pkg/encoding/json"><code>json</code></a> package
-(<code>`xml:"name,flag"`</code>). The matching done between field tags, field
-names, and the XML attribute and element names is now case-sensitive.
-The <code>XMLName</code> field tag, if present, must also match the name
-of the XML element being marshaled.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update most uses of the package except for some calls to
-<code>Unmarshal</code>. Special care must be taken with field tags,
-since the fix tool will not update them and if not fixed by hand they will
-misbehave silently in some cases. For example, the old
-<code>"attr"</code> is now written <code>",attr"</code> while plain
-<code>"attr"</code> remains valid but with a different meaning.
-</p>
-
-<h3 id="expvar">The expvar package</h3>
-
-<p>
-In Go 1, the <code>RemoveAll</code> function has been removed.
-The <code>Iter</code> function and Iter method on <code>*Map</code> have
-been replaced by
-<a href="/pkg/expvar/#Do"><code>Do</code></a>
-and
-<a href="/pkg/expvar/#Map.Do"><code>(*Map).Do</code></a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Most code using <code>expvar</code> will not need changing. The rare code that used
-<code>Iter</code> can be updated to pass a closure to <code>Do</code> to achieve the same effect.
-</p>
-
-<h3 id="flag">The flag package</h3>
-
-<p>
-In Go 1, the interface <a href="/pkg/flag/#Value"><code>flag.Value</code></a> has changed slightly.
-The <code>Set</code> method now returns an <code>error</code> instead of
-a <code>bool</code> to indicate success or failure.
-</p>
-
-<p>
-There is also a new kind of flag, <code>Duration</code>, to support argument
-values specifying time intervals.
-Values for such flags must be given units, just as <code>time.Duration</code>
-formats them: <code>10s</code>, <code>1h30m</code>, etc.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/timeout/`}}
--->var timeout = flag.Duration(&#34;timeout&#34;, 30*time.Second, &#34;how long to wait for completion&#34;)</pre>
-
-<p>
-<em>Updating</em>:
-Programs that implement their own flags will need minor manual fixes to update their
-<code>Set</code> methods.
-The <code>Duration</code> flag is new and affects no existing code.
-</p>
-
-
-<h3 id="go">The go/* packages</h3>
-
-<p>
-Several packages under <code>go</code> have slightly revised APIs.
-</p>
-
-<p>
-A concrete <code>Mode</code> type was introduced for configuration mode flags
-in the packages
-<a href="/pkg/go/scanner/"><code>go/scanner</code></a>,
-<a href="/pkg/go/parser/"><code>go/parser</code></a>,
-<a href="/pkg/go/printer/"><code>go/printer</code></a>, and
-<a href="/pkg/go/doc/"><code>go/doc</code></a>.
-</p>
-
-<p>
-The modes <code>AllowIllegalChars</code> and <code>InsertSemis</code> have been removed
-from the <a href="/pkg/go/scanner/"><code>go/scanner</code></a> package. They were mostly
-useful for scanning text other then Go source files. Instead, the
-<a href="/pkg/text/scanner/"><code>text/scanner</code></a> package should be used
-for that purpose.
-</p>
-
-<p>
-The <a href="/pkg/go/scanner/#ErrorHandler"><code>ErrorHandler</code></a> provided
-to the scanner's <a href="/pkg/go/scanner/#Scanner.Init"><code>Init</code></a> method is
-now simply a function rather than an interface. The <code>ErrorVector</code> type has
-been removed in favor of the (existing) <a href="/pkg/go/scanner/#ErrorList"><code>ErrorList</code></a>
-type, and the <code>ErrorVector</code> methods have been migrated. Instead of embedding
-an <code>ErrorVector</code> in a client of the scanner, now a client should maintain
-an <code>ErrorList</code>.
-</p>
-
-<p>
-The set of parse functions provided by the <a href="/pkg/go/parser/"><code>go/parser</code></a>
-package has been reduced to the primary parse function
-<a href="/pkg/go/parser/#ParseFile"><code>ParseFile</code></a>, and a couple of
-convenience functions <a href="/pkg/go/parser/#ParseDir"><code>ParseDir</code></a>
-and <a href="/pkg/go/parser/#ParseExpr"><code>ParseExpr</code></a>.
-</p>
-
-<p>
-The <a href="/pkg/go/printer/"><code>go/printer</code></a> package supports an additional
-configuration mode <a href="/pkg/go/printer/#Mode"><code>SourcePos</code></a>;
-if set, the printer will emit <code>//line</code> comments such that the generated
-output contains the original source code position information. The new type
-<a href="/pkg/go/printer/#CommentedNode"><code>CommentedNode</code></a> can be
-used to provide comments associated with an arbitrary
-<a href="/pkg/go/ast/#Node"><code>ast.Node</code></a> (until now only
-<a href="/pkg/go/ast/#File"><code>ast.File</code></a> carried comment information).
-</p>
-
-<p>
-The type names of the <a href="/pkg/go/doc/"><code>go/doc</code></a> package have been
-streamlined by removing the <code>Doc</code> suffix: <code>PackageDoc</code>
-is now <code>Package</code>, <code>ValueDoc</code> is <code>Value</code>, etc.
-Also, all types now consistently have a <code>Name</code> field (or <code>Names</code>,
-in the case of type <code>Value</code>) and <code>Type.Factories</code> has become
-<code>Type.Funcs</code>.
-Instead of calling <code>doc.NewPackageDoc(pkg, importpath)</code>,
-documentation for a package is created with:
-</p>
-
-<pre>
- doc.New(pkg, importpath, mode)
-</pre>
-
-<p>
-where the new <code>mode</code> parameter specifies the operation mode:
-if set to <a href="/pkg/go/doc/#AllDecls"><code>AllDecls</code></a>, all declarations
-(not just exported ones) are considered.
-The function <code>NewFileDoc</code> was removed, and the function
-<code>CommentText</code> has become the method
-<a href="/pkg/go/ast/#Text"><code>Text</code></a> of
-<a href="/pkg/go/ast/#CommentGroup"><code>ast.CommentGroup</code></a>.
-</p>
-
-<p>
-In package <a href="/pkg/go/token/"><code>go/token</code></a>, the
-<a href="/pkg/go/token/#FileSet"><code>token.FileSet</code></a> method <code>Files</code>
-(which originally returned a channel of <code>*token.File</code>s) has been replaced
-with the iterator <a href="/pkg/go/token/#FileSet.Iterate"><code>Iterate</code></a> that
-accepts a function argument instead.
-</p>
-
-<p>
-In package <a href="/pkg/go/build/"><code>go/build</code></a>, the API
-has been nearly completely replaced.
-The package still computes Go package information
-but it does not run the build: the <code>Cmd</code> and <code>Script</code>
-types are gone.
-(To build code, use the new
-<a href="/cmd/go/"><code>go</code></a> command instead.)
-The <code>DirInfo</code> type is now named
-<a href="/pkg/go/build/#Package"><code>Package</code></a>.
-<code>FindTree</code> and <code>ScanDir</code> are replaced by
-<a href="/pkg/go/build/#Import"><code>Import</code></a>
-and
-<a href="/pkg/go/build/#ImportDir"><code>ImportDir</code></a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses packages in <code>go</code> will have to be updated by hand; the
-compiler will reject incorrect uses. Templates used in conjunction with any of the
-<code>go/doc</code> types may need manual fixes; the renamed fields will lead
-to run-time errors.
-</p>
-
-<h3 id="hash">The hash package</h3>
-
-<p>
-In Go 1, the definition of <a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> includes
-a new method, <code>BlockSize</code>. This new method is used primarily in the
-cryptographic libraries.
-</p>
-
-<p>
-The <code>Sum</code> method of the
-<a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> interface now takes a
-<code>[]byte</code> argument, to which the hash value will be appended.
-The previous behavior can be recreated by adding a <code>nil</code> argument to the call.
-</p>
-
-<p>
-<em>Updating</em>:
-Existing implementations of <code>hash.Hash</code> will need to add a
-<code>BlockSize</code> method. Hashes that process the input one byte at
-a time can implement <code>BlockSize</code> to return 1.
-Running <code>go</code> <code>fix</code> will update calls to the <code>Sum</code> methods of the various
-implementations of <code>hash.Hash</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Since the package's functionality is new, no updating is necessary.
-</p>
-
-<h3 id="http">The http package</h3>
-
-<p>
-In Go 1 the <a href="/pkg/net/http/"><code>http</code></a> package is refactored,
-putting some of the utilities into a
-<a href="/pkg/net/http/httputil/"><code>httputil</code></a> subdirectory.
-These pieces are only rarely needed by HTTP clients.
-The affected items are:
-</p>
-
-<ul>
-<li>ClientConn</li>
-<li>DumpRequest</li>
-<li>DumpRequestOut</li>
-<li>DumpResponse</li>
-<li>NewChunkedReader</li>
-<li>NewChunkedWriter</li>
-<li>NewClientConn</li>
-<li>NewProxyClientConn</li>
-<li>NewServerConn</li>
-<li>NewSingleHostReverseProxy</li>
-<li>ReverseProxy</li>
-<li>ServerConn</li>
-</ul>
-
-<p>
-The <code>Request.RawURL</code> field has been removed; it was a
-historical artifact.
-</p>
-
-<p>
-The <code>Handle</code> and <code>HandleFunc</code>
-functions, and the similarly-named methods of <code>ServeMux</code>,
-now panic if an attempt is made to register the same pattern twice.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update the few programs that are affected except for
-uses of <code>RawURL</code>, which must be fixed by hand.
-</p>
-
-<h3 id="image">The image package</h3>
-
-<p>
-The <a href="/pkg/image/"><code>image</code></a> package has had a number of
-minor changes, rearrangements and renamings.
-</p>
-
-<p>
-Most of the color handling code has been moved into its own package,
-<a href="/pkg/image/color/"><code>image/color</code></a>.
-For the elements that moved, a symmetry arises; for instance,
-each pixel of an
-<a href="/pkg/image/#RGBA"><code>image.RGBA</code></a>
-is a
-<a href="/pkg/image/color/#RGBA"><code>color.RGBA</code></a>.
-</p>
-
-<p>
-The old <code>image/ycbcr</code> package has been folded, with some
-renamings, into the
-<a href="/pkg/image/"><code>image</code></a>
-and
-<a href="/pkg/image/color/"><code>image/color</code></a>
-packages.
-</p>
-
-<p>
-The old <code>image.ColorImage</code> type is still in the <code>image</code>
-package but has been renamed
-<a href="/pkg/image/#Uniform"><code>image.Uniform</code></a>,
-while <code>image.Tiled</code> has been removed.
-</p>
-
-<p>
-This table lists the renamings.
-</p>
-
-<table class="codetable" frame="border" summary="image renames">
-<colgroup align="left" width="50%"></colgroup>
-<colgroup align="left" width="50%"></colgroup>
-<tr>
-<th align="left">Old</th>
-<th align="left">New</th>
-</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image.Color</td> <td>color.Color</td></tr>
-<tr><td>image.ColorModel</td> <td>color.Model</td></tr>
-<tr><td>image.ColorModelFunc</td> <td>color.ModelFunc</td></tr>
-<tr><td>image.PalettedColorModel</td> <td>color.Palette</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image.RGBAColor</td> <td>color.RGBA</td></tr>
-<tr><td>image.RGBA64Color</td> <td>color.RGBA64</td></tr>
-<tr><td>image.NRGBAColor</td> <td>color.NRGBA</td></tr>
-<tr><td>image.NRGBA64Color</td> <td>color.NRGBA64</td></tr>
-<tr><td>image.AlphaColor</td> <td>color.Alpha</td></tr>
-<tr><td>image.Alpha16Color</td> <td>color.Alpha16</td></tr>
-<tr><td>image.GrayColor</td> <td>color.Gray</td></tr>
-<tr><td>image.Gray16Color</td> <td>color.Gray16</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image.RGBAColorModel</td> <td>color.RGBAModel</td></tr>
-<tr><td>image.RGBA64ColorModel</td> <td>color.RGBA64Model</td></tr>
-<tr><td>image.NRGBAColorModel</td> <td>color.NRGBAModel</td></tr>
-<tr><td>image.NRGBA64ColorModel</td> <td>color.NRGBA64Model</td></tr>
-<tr><td>image.AlphaColorModel</td> <td>color.AlphaModel</td></tr>
-<tr><td>image.Alpha16ColorModel</td> <td>color.Alpha16Model</td></tr>
-<tr><td>image.GrayColorModel</td> <td>color.GrayModel</td></tr>
-<tr><td>image.Gray16ColorModel</td> <td>color.Gray16Model</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>ycbcr.RGBToYCbCr</td> <td>color.RGBToYCbCr</td></tr>
-<tr><td>ycbcr.YCbCrToRGB</td> <td>color.YCbCrToRGB</td></tr>
-<tr><td>ycbcr.YCbCrColorModel</td> <td>color.YCbCrModel</td></tr>
-<tr><td>ycbcr.YCbCrColor</td> <td>color.YCbCr</td></tr>
-<tr><td>ycbcr.YCbCr</td> <td>image.YCbCr</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>ycbcr.SubsampleRatio444</td> <td>image.YCbCrSubsampleRatio444</td></tr>
-<tr><td>ycbcr.SubsampleRatio422</td> <td>image.YCbCrSubsampleRatio422</td></tr>
-<tr><td>ycbcr.SubsampleRatio420</td> <td>image.YCbCrSubsampleRatio420</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image.ColorImage</td> <td>image.Uniform</td></tr>
-</table>
-
-<p>
-The image package's <code>New</code> functions
-(<a href="/pkg/image/#NewRGBA"><code>NewRGBA</code></a>,
-<a href="/pkg/image/#NewRGBA64"><code>NewRGBA64</code></a>, etc.)
-take an <a href="/pkg/image/#Rectangle"><code>image.Rectangle</code></a> as an argument
-instead of four integers.
-</p>
-
-<p>
-Finally, there are new predefined <code>color.Color</code> variables
-<a href="/pkg/image/color/#Black"><code>color.Black</code></a>,
-<a href="/pkg/image/color/#White"><code>color.White</code></a>,
-<a href="/pkg/image/color/#Opaque"><code>color.Opaque</code></a>
-and
-<a href="/pkg/image/color/#Transparent"><code>color.Transparent</code></a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
-</p>
-
-<h3 id="log_syslog">The log/syslog package</h3>
-
-<p>
-In Go 1, the <a href="/pkg/log/syslog/#NewLogger"><code>syslog.NewLogger</code></a>
-function returns an error as well as a <code>log.Logger</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-What little code is affected will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="mime">The mime package</h3>
-
-<p>
-In Go 1, the <a href="/pkg/mime/#FormatMediaType"><code>FormatMediaType</code></a> function
-of the <code>mime</code> package has been simplified to make it
-consistent with
-<a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>.
-It now takes <code>"text/html"</code> rather than <code>"text"</code> and <code>"html"</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-What little code is affected will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="net">The net package</h3>
-
-<p>
-In Go 1, the various <code>SetTimeout</code>,
-<code>SetReadTimeout</code>, and <code>SetWriteTimeout</code> methods
-have been replaced with
-<a href="/pkg/net/#IPConn.SetDeadline"><code>SetDeadline</code></a>,
-<a href="/pkg/net/#IPConn.SetReadDeadline"><code>SetReadDeadline</code></a>, and
-<a href="/pkg/net/#IPConn.SetWriteDeadline"><code>SetWriteDeadline</code></a>,
-respectively. Rather than taking a timeout value in nanoseconds that
-apply to any activity on the connection, the new methods set an
-absolute deadline (as a <code>time.Time</code> value) after which
-reads and writes will time out and no longer block.
-</p>
-
-<p>
-There are also new functions
-<a href="/pkg/net/#DialTimeout"><code>net.DialTimeout</code></a>
-to simplify timing out dialing a network address and
-<a href="/pkg/net/#ListenMulticastUDP"><code>net.ListenMulticastUDP</code></a>
-to allow multicast UDP to listen concurrently across multiple listeners.
-The <code>net.ListenMulticastUDP</code> function replaces the old
-<code>JoinGroup</code> and <code>LeaveGroup</code> methods.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses the old methods will fail to compile and must be updated by hand.
-The semantic change makes it difficult for the fix tool to update automatically.
-</p>
-
-<h3 id="os">The os package</h3>
-
-<p>
-The <code>Time</code> function has been removed; callers should use
-the <a href="/pkg/time/#Time"><code>Time</code></a> type from the
-<code>time</code> package.
-</p>
-
-<p>
-The <code>Exec</code> function has been removed; callers should use
-<code>Exec</code> from the <code>syscall</code> package, where available.
-</p>
-
-<p>
-The <code>ShellExpand</code> function has been renamed to <a
-href="/pkg/os/#ExpandEnv"><code>ExpandEnv</code></a>.
-</p>
-
-<p>
-The <a href="/pkg/os/#NewFile"><code>NewFile</code></a> function
-now takes a <code>uintptr</code> fd, instead of an <code>int</code>.
-The <a href="/pkg/os/#File.Fd"><code>Fd</code></a> method on files now
-also returns a <code>uintptr</code>.
-</p>
-
-<p>
-There are no longer error constants such as <code>EINVAL</code>
-in the <code>os</code> package, since the set of values varied with
-the underlying operating system. There are new portable functions like
-<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>
-to test common error properties, plus a few new error values
-with more Go-like names, such as
-<a href="/pkg/os/#ErrPermission"><code>ErrPermission</code></a>
-and
-<a href="/pkg/os/#ErrNoEnv"><code>ErrNoEnv</code></a>.
-</p>
-
-<p>
-The <code>Getenverror</code> function has been removed. To distinguish
-between a non-existent environment variable and an empty string,
-use <a href="/pkg/os/#Environ"><code>os.Environ</code></a> or
-<a href="/pkg/syscall/#Getenv"><code>syscall.Getenv</code></a>.
-</p>
-
-
-<p>
-The <a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a> method has
-dropped its option argument and the associated constants are gone
-from the package.
-Also, the function <code>Wait</code> is gone; only the method of
-the <code>Process</code> type persists.
-</p>
-
-<p>
-The <code>Waitmsg</code> type returned by
-<a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a>
-has been replaced with a more portable
-<a href="/pkg/os/#ProcessState"><code>ProcessState</code></a>
-type with accessor methods to recover information about the
-process.
-Because of changes to <code>Wait</code>, the <code>ProcessState</code>
-value always describes an exited process.
-Portability concerns simplified the interface in other ways, but the values returned by the
-<a href="/pkg/os/#ProcessState.Sys"><code>ProcessState.Sys</code></a> and
-<a href="/pkg/os/#ProcessState.SysUsage"><code>ProcessState.SysUsage</code></a>
-methods can be type-asserted to underlying system-specific data structures such as
-<a href="/pkg/syscall/#WaitStatus"><code>syscall.WaitStatus</code></a> and
-<a href="/pkg/syscall/#Rusage"><code>syscall.Rusage</code></a> on Unix.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will drop a zero argument to <code>Process.Wait</code>.
-All other changes will be caught by the compiler and must be updated by hand.
-</p>
-
-<h4 id="os_fileinfo">The os.FileInfo type</h4>
-
-<p>
-Go 1 redefines the <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a> type,
-changing it from a struct to an interface:
-</p>
-
-<pre>
- type FileInfo interface {
- Name() string // base name of the file
- Size() int64 // length in bytes
- Mode() FileMode // file mode bits
- ModTime() time.Time // modification time
- IsDir() bool // abbreviation for Mode().IsDir()
- Sys() interface{} // underlying data source (can return nil)
- }
-</pre>
-
-<p>
-The file mode information has been moved into a subtype called
-<a href="/pkg/os/#FileMode"><code>os.FileMode</code></a>,
-a simple integer type with <code>IsDir</code>, <code>Perm</code>, and <code>String</code>
-methods.
-</p>
-
-<p>
-The system-specific details of file modes and properties such as (on Unix)
-i-number have been removed from <code>FileInfo</code> altogether.
-Instead, each operating system's <code>os</code> package provides an
-implementation of the <code>FileInfo</code> interface, which
-has a <code>Sys</code> method that returns the
-system-specific representation of file metadata.
-For instance, to discover the i-number of a file on a Unix system, unpack
-the <code>FileInfo</code> like this:
-</p>
-
-<pre>
- fi, err := os.Stat("hello.go")
- if err != nil {
- log.Fatal(err)
- }
- // Check that it's a Unix file.
- unixStat, ok := fi.Sys().(*syscall.Stat_t)
- if !ok {
- log.Fatal("hello.go: not a Unix file")
- }
- fmt.Printf("file i-number: %d\n", unixStat.Ino)
-</pre>
-
-<p>
-Assuming (which is unwise) that <code>"hello.go"</code> is a Unix file,
-the i-number expression could be contracted to
-</p>
-
-<pre>
- fi.Sys().(*syscall.Stat_t).Ino
-</pre>
-
-<p>
-The vast majority of uses of <code>FileInfo</code> need only the methods
-of the standard interface.
-</p>
-
-<p>
-The <code>os</code> package no longer contains wrappers for the POSIX errors
-such as <code>ENOENT</code>.
-For the few programs that need to verify particular error conditions, there are
-now the boolean functions
-<a href="/pkg/os/#IsExist"><code>IsExist</code></a>,
-<a href="/pkg/os/#IsNotExist"><code>IsNotExist</code></a>
-and
-<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/os\.Open/` `/}/`}}
---> f, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600)
- if os.IsExist(err) {
- log.Printf(&#34;%s already exists&#34;, name)
- }</pre>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update code that uses the old equivalent of the current <code>os.FileInfo</code>
-and <code>os.FileMode</code> API.
-Code that needs system-specific file details will need to be updated by hand.
-Code that uses the old POSIX error values from the <code>os</code> package
-will fail to compile and will also need to be updated by hand.
-</p>
-
-<h3 id="os_signal">The os/signal package</h3>
-
-<p>
-The <code>os/signal</code> package in Go 1 replaces the
-<code>Incoming</code> function, which returned a channel
-that received all incoming signals,
-with the selective <code>Notify</code> function, which asks
-for delivery of specific signals on an existing channel.
-</p>
-
-<p>
-<em>Updating</em>:
-Code must be updated by hand.
-A literal translation of
-</p>
-<pre>
-c := signal.Incoming()
-</pre>
-<p>
-is
-</p>
-<pre>
-c := make(chan os.Signal)
-signal.Notify(c) // ask for all signals
-</pre>
-<p>
-but most code should list the specific signals it wants to handle instead:
-</p>
-<pre>
-c := make(chan os.Signal)
-signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT)
-</pre>
-
-<h3 id="path_filepath">The path/filepath package</h3>
-
-<p>
-In Go 1, the <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a> function of the
-<code>path/filepath</code> package
-has been changed to take a function value of type
-<a href="/pkg/path/filepath/#WalkFunc"><code>WalkFunc</code></a>
-instead of a <code>Visitor</code> interface value.
-<code>WalkFunc</code> unifies the handling of both files and directories.
-</p>
-
-<pre>
- type WalkFunc func(path string, info os.FileInfo, err error) error
-</pre>
-
-<p>
-The <code>WalkFunc</code> function will be called even for files or directories that could not be opened;
-in such cases the error argument will describe the failure.
-If a directory's contents are to be skipped,
-the function should return the value <a href="/pkg/path/filepath/#variables"><code>filepath.SkipDir</code></a>
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/STARTWALK/` `/ENDWALK/`}}
---> markFn := func(path string, info os.FileInfo, err error) error {
- if path == &#34;pictures&#34; { <span class="comment">// Will skip walking of directory pictures and its contents.</span>
- return filepath.SkipDir
- }
- if err != nil {
- return err
- }
- log.Println(path)
- return nil
- }
- err := filepath.Walk(&#34;.&#34;, markFn)
- if err != nil {
- log.Fatal(err)
- }</pre>
-
-<p>
-<em>Updating</em>:
-The change simplifies most code but has subtle consequences, so affected programs
-will need to be updated by hand.
-The compiler will catch code using the old interface.
-</p>
-
-<h3 id="regexp">The regexp package</h3>
-
-<p>
-The <a href="/pkg/regexp/"><code>regexp</code></a> package has been rewritten.
-It has the same interface but the specification of the regular expressions
-it supports has changed from the old "egrep" form to that of
-<a href="http://code.google.com/p/re2/">RE2</a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses the package should have its regular expressions checked by hand.
-</p>
-
-<h3 id="runtime">The runtime package</h3>
-
-<p>
-In Go 1, much of the API exported by package
-<code>runtime</code> has been removed in favor of
-functionality provided by other packages.
-Code using the <code>runtime.Type</code> interface
-or its specific concrete type implementations should
-now use package <a href="/pkg/reflect/"><code>reflect</code></a>.
-Code using <code>runtime.Semacquire</code> or <code>runtime.Semrelease</code>
-should use channels or the abstractions in package <a href="/pkg/sync/"><code>sync</code></a>.
-The <code>runtime.Alloc</code>, <code>runtime.Free</code>,
-and <code>runtime.Lookup</code> functions, an unsafe API created for
-debugging the memory allocator, have no replacement.
-</p>
-
-<p>
-Before, <code>runtime.MemStats</code> was a global variable holding
-statistics about memory allocation, and calls to <code>runtime.UpdateMemStats</code>
-ensured that it was up to date.
-In Go 1, <code>runtime.MemStats</code> is a struct type, and code should use
-<a href="/pkg/runtime/#ReadMemStats"><code>runtime.ReadMemStats</code></a>
-to obtain the current statistics.
-</p>
-
-<p>
-The package adds a new function,
-<a href="/pkg/runtime/#NumCPU"><code>runtime.NumCPU</code></a>, that returns the number of CPUs available
-for parallel execution, as reported by the operating system kernel.
-Its value can inform the setting of <code>GOMAXPROCS</code>.
-The <code>runtime.Cgocalls</code> and <code>runtime.Goroutines</code> functions
-have been renamed to <code>runtime.NumCgoCall</code> and <code>runtime.NumGoroutine</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update code for the function renamings.
-Other code will need to be updated by hand.
-</p>
-
-<h3 id="strconv">The strconv package</h3>
-
-<p>
-In Go 1, the
-<a href="/pkg/strconv/"><code>strconv</code></a>
-package has been significantly reworked to make it more Go-like and less C-like,
-although <code>Atoi</code> lives on (it's similar to
-<code>int(ParseInt(x, 10, 0))</code>, as does
-<code>Itoa(x)</code> (<code>FormatInt(int64(x), 10)</code>).
-There are also new variants of some of the functions that append to byte slices rather than
-return strings, to allow control over allocation.
-</p>
-
-<p>
-This table summarizes the renamings; see the
-<a href="/pkg/strconv/">package documentation</a>
-for full details.
-</p>
-
-<table class="codetable" frame="border" summary="strconv renames">
-<colgroup align="left" width="50%"></colgroup>
-<colgroup align="left" width="50%"></colgroup>
-<tr>
-<th align="left">Old call</th>
-<th align="left">New call</th>
-</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Atob(x)</td> <td>ParseBool(x)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Atof32(x)</td> <td>ParseFloat(x, 32)§</td></tr>
-<tr><td>Atof64(x)</td> <td>ParseFloat(x, 64)</td></tr>
-<tr><td>AtofN(x, n)</td> <td>ParseFloat(x, n)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Atoi(x)</td> <td>Atoi(x)</td></tr>
-<tr><td>Atoi(x)</td> <td>ParseInt(x, 10, 0)§</td></tr>
-<tr><td>Atoi64(x)</td> <td>ParseInt(x, 10, 64)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Atoui(x)</td> <td>ParseUint(x, 10, 0)§</td></tr>
-<tr><td>Atoui64(x)</td> <td>ParseUint(x, 10, 64)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Btoi64(x, b)</td> <td>ParseInt(x, b, 64)</td></tr>
-<tr><td>Btoui64(x, b)</td> <td>ParseUint(x, b, 64)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Btoa(x)</td> <td>FormatBool(x)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Ftoa32(x, f, p)</td> <td>FormatFloat(float64(x), f, p, 32)</td></tr>
-<tr><td>Ftoa64(x, f, p)</td> <td>FormatFloat(x, f, p, 64)</td></tr>
-<tr><td>FtoaN(x, f, p, n)</td> <td>FormatFloat(x, f, p, n)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Itoa(x)</td> <td>Itoa(x)</td></tr>
-<tr><td>Itoa(x)</td> <td>FormatInt(int64(x), 10)</td></tr>
-<tr><td>Itoa64(x)</td> <td>FormatInt(x, 10)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Itob(x, b)</td> <td>FormatInt(int64(x), b)</td></tr>
-<tr><td>Itob64(x, b)</td> <td>FormatInt(x, b)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Uitoa(x)</td> <td>FormatUint(uint64(x), 10)</td></tr>
-<tr><td>Uitoa64(x)</td> <td>FormatUint(x, 10)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Uitob(x, b)</td> <td>FormatUint(uint64(x), b)</td></tr>
-<tr><td>Uitob64(x, b)</td> <td>FormatUint(x, b)</td></tr>
-</table>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
-<br>
-§ <code>Atoi</code> persists but <code>Atoui</code> and <code>Atof32</code> do not, so
-they may require
-a cast that must be added by hand; the <code>go</code> <code>fix</code> tool will warn about it.
-</p>
-
-
-<h3 id="templates">The template packages</h3>
-
-<p>
-The <code>template</code> and <code>exp/template/html</code> packages have moved to
-<a href="/pkg/text/template/"><code>text/template</code></a> and
-<a href="/pkg/html/template/"><code>html/template</code></a>.
-More significant, the interface to these packages has been simplified.
-The template language is the same, but the concept of "template set" is gone
-and the functions and methods of the packages have changed accordingly,
-often by elimination.
-</p>
-
-<p>
-Instead of sets, a <code>Template</code> object
-may contain multiple named template definitions,
-in effect constructing
-name spaces for template invocation.
-A template can invoke any other template associated with it, but only those
-templates associated with it.
-The simplest way to associate templates is to parse them together, something
-made easier with the new structure of the packages.
-</p>
-
-<p>
-<em>Updating</em>:
-The imports will be updated by fix tool.
-Single-template uses will be otherwise be largely unaffected.
-Code that uses multiple templates in concert will need to be updated by hand.
-The <a href="/pkg/text/template/#examples">examples</a> in
-the documentation for <code>text/template</code> can provide guidance.
-</p>
-
-<h3 id="testing">The testing package</h3>
-
-<p>
-The testing package has a type, <code>B</code>, passed as an argument to benchmark functions.
-In Go 1, <code>B</code> has new methods, analogous to those of <code>T</code>, enabling
-logging and failure reporting.
-</p>
-
-<pre><!--{{code "/doc/progs/go1.go" `/func.*Benchmark/` `/^}/`}}
--->func BenchmarkSprintf(b *testing.B) {
- <span class="comment">// Verify correctness before running benchmark.</span>
- b.StopTimer()
- got := fmt.Sprintf(&#34;%x&#34;, 23)
- const expect = &#34;17&#34;
- if expect != got {
- b.Fatalf(&#34;expected %q; got %q&#34;, expect, got)
- }
- b.StartTimer()
- for i := 0; i &lt; b.N; i++ {
- fmt.Sprintf(&#34;%x&#34;, 23)
- }
-}</pre>
-
-<p>
-<em>Updating</em>:
-Existing code is unaffected, although benchmarks that use <code>println</code>
-or <code>panic</code> should be updated to use the new methods.
-</p>
-
-<h3 id="testing_script">The testing/script package</h3>
-
-<p>
-The testing/script package has been deleted. It was a dreg.
-</p>
-
-<p>
-<em>Updating</em>:
-No code is likely to be affected.
-</p>
-
-<h3 id="unsafe">The unsafe package</h3>
-
-<p>
-In Go 1, the functions
-<code>unsafe.Typeof</code>, <code>unsafe.Reflect</code>,
-<code>unsafe.Unreflect</code>, <code>unsafe.New</code>, and
-<code>unsafe.NewArray</code> have been removed;
-they duplicated safer functionality provided by
-package <a href="/pkg/reflect/"><code>reflect</code></a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code using these functions must be rewritten to use
-package <a href="/pkg/reflect/"><code>reflect</code></a>.
-The changes to <a href="http://code.google.com/p/go/source/detail?r=2646dc956207">encoding/gob</a> and the <a href="http://code.google.com/p/goprotobuf/source/detail?r=5340ad310031">protocol buffer library</a>
-may be helpful as examples.
-</p>
-
-<h3 id="url">The url package</h3>
-
-<p>
-In Go 1 several fields from the <a href="/pkg/net/url/#URL"><code>url.URL</code></a> type
-were removed or replaced.
-</p>
-
-<p>
-The <a href="/pkg/net/url/#URL.String"><code>String</code></a> method now
-predictably rebuilds an encoded URL string using all of <code>URL</code>'s
-fields as necessary. The resulting string will also no longer have
-passwords escaped.
-</p>
-
-<p>
-The <code>Raw</code> field has been removed. In most cases the <code>String</code>
-method may be used in its place.
-</p>
-
-<p>
-The old <code>RawUserinfo</code> field is replaced by the <code>User</code>
-field, of type <a href="/pkg/net/url/#Userinfo"><code>*net.Userinfo</code></a>.
-Values of this type may be created using the new <a href="/pkg/net/url/#User"><code>net.User</code></a>
-and <a href="/pkg/net/url/#UserPassword"><code>net.UserPassword</code></a>
-functions. The <code>EscapeUserinfo</code> and <code>UnescapeUserinfo</code>
-functions are also gone.
-</p>
-
-<p>
-The <code>RawAuthority</code> field has been removed. The same information is
-available in the <code>Host</code> and <code>User</code> fields.
-</p>
-
-<p>
-The <code>RawPath</code> field and the <code>EncodedPath</code> method have
-been removed. The path information in rooted URLs (with a slash following the
-schema) is now available only in decoded form in the <code>Path</code> field.
-Occasionally, the encoded data may be required to obtain information that
-was lost in the decoding process. These cases must be handled by accessing
-the data the URL was built from.
-</p>
-
-<p>
-URLs with non-rooted paths, such as <code>"mailto:dev@golang.org?subject=Hi"</code>,
-are also handled differently. The <code>OpaquePath</code> boolean field has been
-removed and a new <code>Opaque</code> string field introduced to hold the encoded
-path for such URLs. In Go 1, the cited URL parses as:
-</p>
-
-<pre>
- URL{
- Scheme: "mailto",
- Opaque: "dev@golang.org",
- RawQuery: "subject=Hi",
- }
-</pre>
-
-<p>
-A new <a href="/pkg/net/url/#URL.RequestURI"><code>RequestURI</code></a> method was
-added to <code>URL</code>.
-</p>
-
-<p>
-The <code>ParseWithReference</code> function has been renamed to <code>ParseWithFragment</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses the old fields will fail to compile and must be updated by hand.
-The semantic changes make it difficult for the fix tool to update automatically.
-</p>
-
-<h2 id="cmd_go">The go command</h2>
-
-<p>
-Go 1 introduces the <a href="/cmd/go/">go command</a>, a tool for fetching,
-building, and installing Go packages and commands. The <code>go</code> command
-does away with makefiles, instead using Go source code to find dependencies and
-determine build conditions. Most existing Go programs will no longer require
-makefiles to be built.
-</p>
-
-<p>
-See <a href="/doc/code.html">How to Write Go Code</a> for a primer on the
-<code>go</code> command and the <a href="/cmd/go/">go command documentation</a>
-for the full details.
-</p>
-
-<p>
-<em>Updating</em>:
-Projects that depend on the Go project's old makefile-based build
-infrastructure (<code>Make.pkg</code>, <code>Make.cmd</code>, and so on) should
-switch to using the <code>go</code> command for building Go code and, if
-necessary, rewrite their makefiles to perform any auxiliary build tasks.
-</p>
-
-<h2 id="cmd_cgo">The cgo command</h2>
-
-<p>
-In Go 1, the <a href="/cmd/cgo">cgo command</a>
-uses a different <code>_cgo_export.h</code>
-file, which is generated for packages containing <code>//export</code> lines.
-The <code>_cgo_export.h</code> file now begins with the C preamble comment,
-so that exported function definitions can use types defined there.
-This has the effect of compiling the preamble multiple times, so a
-package using <code>//export</code> must not put function definitions
-or variable initializations in the C preamble.
-</p>
-
-<h2 id="releases">Packaged releases</h2>
-
-<p>
-One of the most significant changes associated with Go 1 is the availability
-of prepackaged, downloadable distributions.
-They are available for many combinations of architecture and operating system
-(including Windows) and the list will grow.
-Installation details are described on the
-<a href="/doc/install">Getting Started</a> page, while
-the distributions themselves are listed on the
-<a href="http://code.google.com/p/go/downloads/list">downloads page</a>.
-
-
-</div>
-
-<div id="footer">
-Build version go1.0.1.<br>
-Except as <a href="http://code.google.com/policies.html#restrictions">noted</a>,
-the content of this page is licensed under the
-Creative Commons Attribution 3.0 License,
-and code is licensed under a <a href="/LICENSE">BSD license</a>.<br>
-<a href="/doc/tos.html">Terms of Service</a> |
-<a href="http://www.google.com/intl/en/privacy/privacy-policy.html">Privacy Policy</a>
-</div>
-
-<script type="text/javascript">
-(function() {
- var ga = document.createElement("script"); ga.type = "text/javascript"; ga.async = true;
- ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";
- var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ga, s);
-})();
-</script>
-</body>
-<script type="text/javascript">
- (function() {
- var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
- po.src = 'https://apis.google.com/js/plusone.js';
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
- })();
-</script>
-</html>
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/README b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/README
deleted file mode 100644
index 9b4c2d8be..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/README
+++ /dev/null
@@ -1,28 +0,0 @@
-The *.dat files in this directory are copied from The WebKit Open Source
-Project, specifically $WEBKITROOT/LayoutTests/html5lib/resources.
-WebKit is licensed under a BSD style license.
-http://webkit.org/coding/bsd-license.html says:
-
-Copyright (C) 2009 Apple Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation
-and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS "AS IS" AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/adoption01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/adoption01.dat
deleted file mode 100644
index 787e1b01e..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/adoption01.dat
+++ /dev/null
@@ -1,194 +0,0 @@
-#data
-<a><p></a></p>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <p>
-| <a>
-
-#data
-<a>1<p>2</a>3</p>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| "1"
-| <p>
-| <a>
-| "2"
-| "3"
-
-#data
-<a>1<button>2</a>3</button>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| "1"
-| <button>
-| <a>
-| "2"
-| "3"
-
-#data
-<a>1<b>2</a>3</b>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| "1"
-| <b>
-| "2"
-| <b>
-| "3"
-
-#data
-<a>1<div>2<div>3</a>4</div>5</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| "1"
-| <div>
-| <a>
-| "2"
-| <div>
-| <a>
-| "3"
-| "4"
-| "5"
-
-#data
-<table><a>1<p>2</a>3</p>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| "1"
-| <p>
-| <a>
-| "2"
-| "3"
-| <table>
-
-#data
-<b><b><a><p></a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <b>
-| <a>
-| <p>
-| <a>
-
-#data
-<b><a><b><p></a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <a>
-| <b>
-| <b>
-| <p>
-| <a>
-
-#data
-<a><b><b><p></a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <b>
-| <b>
-| <b>
-| <b>
-| <p>
-| <a>
-
-#data
-<p>1<s id="A">2<b id="B">3</p>4</s>5</b>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| "1"
-| <s>
-| id="A"
-| "2"
-| <b>
-| id="B"
-| "3"
-| <s>
-| id="A"
-| <b>
-| id="B"
-| "4"
-| <b>
-| id="B"
-| "5"
-
-#data
-<table><a>1<td>2</td>3</table>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| "1"
-| <a>
-| "3"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "2"
-
-#data
-<table>A<td>B</td>C</table>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "AC"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "B"
-
-#data
-<a><svg><tr><input></a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <svg svg>
-| <svg tr>
-| <svg input>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/adoption02.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/adoption02.dat
deleted file mode 100644
index d18151b44..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/adoption02.dat
+++ /dev/null
@@ -1,31 +0,0 @@
-#data
-<b>1<i>2<p>3</b>4
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| "1"
-| <i>
-| "2"
-| <i>
-| <p>
-| <b>
-| "3"
-| "4"
-
-#data
-<a><div><style></style><address><a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <div>
-| <a>
-| <style>
-| <address>
-| <a>
-| <a>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/comments01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/comments01.dat
deleted file mode 100644
index 44f187683..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/comments01.dat
+++ /dev/null
@@ -1,135 +0,0 @@
-#data
-FOO<!-- BAR -->BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- BAR -->
-| "BAZ"
-
-#data
-FOO<!-- BAR --!>BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- BAR -->
-| "BAZ"
-
-#data
-FOO<!-- BAR -- >BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- BAR -- >BAZ -->
-
-#data
-FOO<!-- BAR -- <QUX> -- MUX -->BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- BAR -- <QUX> -- MUX -->
-| "BAZ"
-
-#data
-FOO<!-- BAR -- <QUX> -- MUX --!>BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- BAR -- <QUX> -- MUX -->
-| "BAZ"
-
-#data
-FOO<!-- BAR -- <QUX> -- MUX -- >BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- BAR -- <QUX> -- MUX -- >BAZ -->
-
-#data
-FOO<!---->BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- -->
-| "BAZ"
-
-#data
-FOO<!--->BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- -->
-| "BAZ"
-
-#data
-FOO<!-->BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- -->
-| "BAZ"
-
-#data
-<?xml version="1.0">Hi
-#errors
-#document
-| <!-- ?xml version="1.0" -->
-| <html>
-| <head>
-| <body>
-| "Hi"
-
-#data
-<?xml version="1.0">
-#errors
-#document
-| <!-- ?xml version="1.0" -->
-| <html>
-| <head>
-| <body>
-
-#data
-<?xml version
-#errors
-#document
-| <!-- ?xml version -->
-| <html>
-| <head>
-| <body>
-
-#data
-FOO<!----->BAZ
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <!-- - -->
-| "BAZ"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/doctype01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/doctype01.dat
deleted file mode 100644
index ae457328a..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/doctype01.dat
+++ /dev/null
@@ -1,370 +0,0 @@
-#data
-<!DOCTYPE html>Hello
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!dOctYpE HtMl>Hello
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPEhtml>Hello
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE>Hello
-#errors
-#document
-| <!DOCTYPE >
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE >Hello
-#errors
-#document
-| <!DOCTYPE >
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato >Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato taco>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato taco "ddd>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato sYstEM>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato sYstEM >Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato sYstEM ggg>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato SYSTEM taco >Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato SYSTEM 'taco"'>Hello
-#errors
-#document
-| <!DOCTYPE potato "" "taco"">
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato SYSTEM "taco">Hello
-#errors
-#document
-| <!DOCTYPE potato "" "taco">
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato SYSTEM "tai'co">Hello
-#errors
-#document
-| <!DOCTYPE potato "" "tai'co">
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato SYSTEMtaco "ddd">Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato grass SYSTEM taco>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato pUbLIc>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato pUbLIc >Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato pUbLIcgoof>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC goof>Hello
-#errors
-#document
-| <!DOCTYPE potato>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC "go'of">Hello
-#errors
-#document
-| <!DOCTYPE potato "go'of" "">
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC 'go'of'>Hello
-#errors
-#document
-| <!DOCTYPE potato "go" "">
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC 'go:hh of' >Hello
-#errors
-#document
-| <!DOCTYPE potato "go:hh of" "">
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE potato PUBLIC "W3C-//dfdf" SYSTEM ggg>Hello
-#errors
-#document
-| <!DOCTYPE potato "W3C-//dfdf" "">
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
- "http://www.w3.org/TR/html4/strict.dtd">Hello
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE ...>Hello
-#errors
-#document
-| <!DOCTYPE ...>
-| <html>
-| <head>
-| <body>
-| "Hello"
-
-#data
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE root-element [SYSTEM OR PUBLIC FPI] "uri" [
-<!-- internal declarations -->
-]>
-#errors
-#document
-| <!DOCTYPE root-element>
-| <html>
-| <head>
-| <body>
-| "]>"
-
-#data
-<!DOCTYPE html PUBLIC
- "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
- "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
-#errors
-#document
-| <!DOCTYPE html "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE HTML SYSTEM "http://www.w3.org/DTD/HTML4-strict.dtd"><body><b>Mine!</b></body>
-#errors
-#document
-| <!DOCTYPE html "" "http://www.w3.org/DTD/HTML4-strict.dtd">
-| <html>
-| <head>
-| <body>
-| <b>
-| "Mine!"
-
-#data
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'http://www.w3.org/TR/html4/strict.dtd'>
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN"'http://www.w3.org/TR/html4/strict.dtd'>
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE HTML PUBLIC'-//W3C//DTD HTML 4.01//EN''http://www.w3.org/TR/html4/strict.dtd'>
-#errors
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-| <html>
-| <head>
-| <body>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/entities01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/entities01.dat
deleted file mode 100644
index c8073b781..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/entities01.dat
+++ /dev/null
@@ -1,603 +0,0 @@
-#data
-FOO&gt;BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO>BAR"
-
-#data
-FOO&gtBAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO>BAR"
-
-#data
-FOO&gt BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO> BAR"
-
-#data
-FOO&gt;;;BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO>;;BAR"
-
-#data
-I'm &notit; I tell you
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "I'm ¬it; I tell you"
-
-#data
-I'm &notin; I tell you
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "I'm ∉ I tell you"
-
-#data
-FOO& BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO& BAR"
-
-#data
-FOO&<BAR>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO&"
-| <bar>
-
-#data
-FOO&&&&gt;BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO&&&>BAR"
-
-#data
-FOO&#41;BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO)BAR"
-
-#data
-FOO&#x41;BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOABAR"
-
-#data
-FOO&#X41;BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOABAR"
-
-#data
-FOO&#BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO&#BAR"
-
-#data
-FOO&#ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO&#ZOO"
-
-#data
-FOO&#xBAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOºR"
-
-#data
-FOO&#xZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO&#xZOO"
-
-#data
-FOO&#XZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO&#XZOO"
-
-#data
-FOO&#41BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO)BAR"
-
-#data
-FOO&#x41BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO䆺R"
-
-#data
-FOO&#x41ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOAZOO"
-
-#data
-FOO&#x0000;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO�ZOO"
-
-#data
-FOO&#x0078;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOxZOO"
-
-#data
-FOO&#x0079;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOyZOO"
-
-#data
-FOO&#x0080;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO€ZOO"
-
-#data
-FOO&#x0081;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOZOO"
-
-#data
-FOO&#x0082;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO‚ZOO"
-
-#data
-FOO&#x0083;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOƒZOO"
-
-#data
-FOO&#x0084;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO„ZOO"
-
-#data
-FOO&#x0085;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO…ZOO"
-
-#data
-FOO&#x0086;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO†ZOO"
-
-#data
-FOO&#x0087;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO‡ZOO"
-
-#data
-FOO&#x0088;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOˆZOO"
-
-#data
-FOO&#x0089;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO‰ZOO"
-
-#data
-FOO&#x008A;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOŠZOO"
-
-#data
-FOO&#x008B;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO‹ZOO"
-
-#data
-FOO&#x008C;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOŒZOO"
-
-#data
-FOO&#x008D;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOZOO"
-
-#data
-FOO&#x008E;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOŽZOO"
-
-#data
-FOO&#x008F;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOZOO"
-
-#data
-FOO&#x0090;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOZOO"
-
-#data
-FOO&#x0091;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO‘ZOO"
-
-#data
-FOO&#x0092;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO’ZOO"
-
-#data
-FOO&#x0093;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO“ZOO"
-
-#data
-FOO&#x0094;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO”ZOO"
-
-#data
-FOO&#x0095;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO•ZOO"
-
-#data
-FOO&#x0096;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO–ZOO"
-
-#data
-FOO&#x0097;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO—ZOO"
-
-#data
-FOO&#x0098;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO˜ZOO"
-
-#data
-FOO&#x0099;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO™ZOO"
-
-#data
-FOO&#x009A;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOšZOO"
-
-#data
-FOO&#x009B;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO›ZOO"
-
-#data
-FOO&#x009C;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOœZOO"
-
-#data
-FOO&#x009D;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOZOO"
-
-#data
-FOO&#x009E;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOžZOO"
-
-#data
-FOO&#x009F;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOŸZOO"
-
-#data
-FOO&#x00A0;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO ZOO"
-
-#data
-FOO&#xD7FF;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO퟿ZOO"
-
-#data
-FOO&#xD800;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO�ZOO"
-
-#data
-FOO&#xD801;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO�ZOO"
-
-#data
-FOO&#xDFFE;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO�ZOO"
-
-#data
-FOO&#xDFFF;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO�ZOO"
-
-#data
-FOO&#xE000;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOOZOO"
-
-#data
-FOO&#x10FFFE;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO􏿾ZOO"
-
-#data
-FOO&#x1087D4;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO􈟔ZOO"
-
-#data
-FOO&#x10FFFF;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO􏿿ZOO"
-
-#data
-FOO&#x110000;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO�ZOO"
-
-#data
-FOO&#xFFFFFF;ZOO
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO�ZOO"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/entities02.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/entities02.dat
deleted file mode 100644
index e2fb42a07..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/entities02.dat
+++ /dev/null
@@ -1,249 +0,0 @@
-#data
-<div bar="ZZ&gt;YY"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ>YY"
-
-#data
-<div bar="ZZ&"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&"
-
-#data
-<div bar='ZZ&'></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&"
-
-#data
-<div bar=ZZ&></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&"
-
-#data
-<div bar="ZZ&gt=YY"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&gt=YY"
-
-#data
-<div bar="ZZ&gt0YY"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&gt0YY"
-
-#data
-<div bar="ZZ&gt9YY"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&gt9YY"
-
-#data
-<div bar="ZZ&gtaYY"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&gtaYY"
-
-#data
-<div bar="ZZ&gtZYY"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&gtZYY"
-
-#data
-<div bar="ZZ&gt YY"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ> YY"
-
-#data
-<div bar="ZZ&gt"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ>"
-
-#data
-<div bar='ZZ&gt'></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ>"
-
-#data
-<div bar=ZZ&gt></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ>"
-
-#data
-<div bar="ZZ&pound_id=23"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ£_id=23"
-
-#data
-<div bar="ZZ&prod_id=23"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&prod_id=23"
-
-#data
-<div bar="ZZ&pound;_id=23"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ£_id=23"
-
-#data
-<div bar="ZZ&prod;_id=23"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ∏_id=23"
-
-#data
-<div bar="ZZ&pound=23"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&pound=23"
-
-#data
-<div bar="ZZ&prod=23"></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| bar="ZZ&prod=23"
-
-#data
-<div>ZZ&pound_id=23</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "ZZ£_id=23"
-
-#data
-<div>ZZ&prod_id=23</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "ZZ&prod_id=23"
-
-#data
-<div>ZZ&pound;_id=23</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "ZZ£_id=23"
-
-#data
-<div>ZZ&prod;_id=23</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "ZZ∏_id=23"
-
-#data
-<div>ZZ&pound=23</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "ZZ£=23"
-
-#data
-<div>ZZ&prod=23</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "ZZ&prod=23"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/html5test-com.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/html5test-com.dat
deleted file mode 100644
index d7cb71db0..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/html5test-com.dat
+++ /dev/null
@@ -1,246 +0,0 @@
-#data
-<div<div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div<div>
-
-#data
-<div foo<bar=''>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| foo<bar=""
-
-#data
-<div foo=`bar`>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| foo="`bar`"
-
-#data
-<div \"foo=''>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| \"foo=""
-
-#data
-<a href='\nbar'></a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| href="\nbar"
-
-#data
-<!DOCTYPE html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-
-#data
-&lang;&rang;
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "⟨⟩"
-
-#data
-&apos;
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "'"
-
-#data
-&ImaginaryI;
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "ⅈ"
-
-#data
-&Kopf;
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "𝕂"
-
-#data
-&notinva;
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "∉"
-
-#data
-<?import namespace="foo" implementation="#bar">
-#errors
-#document
-| <!-- ?import namespace="foo" implementation="#bar" -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!--foo--bar-->
-#errors
-#document
-| <!-- foo--bar -->
-| <html>
-| <head>
-| <body>
-
-#data
-<![CDATA[x]]>
-#errors
-#document
-| <!-- [CDATA[x]] -->
-| <html>
-| <head>
-| <body>
-
-#data
-<textarea><!--</textarea>--></textarea>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "<!--"
-| "-->"
-
-#data
-<textarea><!--</textarea>-->
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "<!--"
-| "-->"
-
-#data
-<style><!--</style>--></style>
-#errors
-#document
-| <html>
-| <head>
-| <style>
-| "<!--"
-| <body>
-| "-->"
-
-#data
-<style><!--</style>-->
-#errors
-#document
-| <html>
-| <head>
-| <style>
-| "<!--"
-| <body>
-| "-->"
-
-#data
-<ul><li>A </li> <li>B</li></ul>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <ul>
-| <li>
-| "A "
-| " "
-| <li>
-| "B"
-
-#data
-<table><form><input type=hidden><input></form><div></div></table>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <input>
-| <div>
-| <table>
-| <form>
-| <input>
-| type="hidden"
-
-#data
-<i>A<b>B<p></i>C</b>D
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <i>
-| "A"
-| <b>
-| "B"
-| <b>
-| <p>
-| <b>
-| <i>
-| "C"
-| "D"
-
-#data
-<div></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-
-#data
-<svg></svg>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-
-#data
-<math></math>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/inbody01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/inbody01.dat
deleted file mode 100644
index 3f2bd374c..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/inbody01.dat
+++ /dev/null
@@ -1,43 +0,0 @@
-#data
-<button>1</foo>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <button>
-| "1"
-
-#data
-<foo>1<p>2</foo>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <foo>
-| "1"
-| <p>
-| "2"
-
-#data
-<dd>1</foo>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <dd>
-| "1"
-
-#data
-<foo>1<dd>2</foo>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <foo>
-| "1"
-| <dd>
-| "2"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/isindex.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/isindex.dat
deleted file mode 100644
index 88325ffe6..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/isindex.dat
+++ /dev/null
@@ -1,40 +0,0 @@
-#data
-<isindex>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <form>
-| <hr>
-| <label>
-| "This is a searchable index. Enter search keywords: "
-| <input>
-| name="isindex"
-| <hr>
-
-#data
-<isindex name="A" action="B" prompt="C" foo="D">
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <form>
-| action="B"
-| <hr>
-| <label>
-| "C"
-| <input>
-| foo="D"
-| name="isindex"
-| <hr>
-
-#data
-<form><isindex>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <form>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat
deleted file mode 100644
index a5ebb1eb2..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat
deleted file mode 100644
index 5a9208465..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat
+++ /dev/null
@@ -1,52 +0,0 @@
-#data
-<input type="hidden"><frameset>
-#errors
-21: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-31: “frameset” start tag seen.
-31: End of file seen and there were open elements.
-#document
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!DOCTYPE html><table><caption><svg>foo</table>bar
-#errors
-47: End tag “table” did not match the name of the current open element (“svg”).
-47: “table” closed but “caption” was still open.
-47: End tag “table” seen, but there were open elements.
-36: Unclosed element “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <svg svg>
-| "foo"
-| "bar"
-
-#data
-<table><tr><td><svg><desc><td></desc><circle>
-#errors
-7: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-30: A table cell was implicitly closed, but there were open elements.
-26: Unclosed element “desc”.
-20: Unclosed element “svg”.
-37: Stray end tag “desc”.
-45: End of file seen and there were open elements.
-45: Unclosed element “circle”.
-7: Unclosed element “table”.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <svg svg>
-| <svg desc>
-| <td>
-| <circle>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat
deleted file mode 100644
index 04cc11fb9..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scriptdata01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scriptdata01.dat
deleted file mode 100644
index 76b67f4ba..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scriptdata01.dat
+++ /dev/null
@@ -1,308 +0,0 @@
-#data
-FOO<script>'Hello'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'Hello'"
-| "BAR"
-
-#data
-FOO<script></script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "BAR"
-
-#data
-FOO<script></script >BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "BAR"
-
-#data
-FOO<script></script/>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "BAR"
-
-#data
-FOO<script></script/ >BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "BAR"
-
-#data
-FOO<script type="text/plain"></scriptx>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "</scriptx>BAR"
-
-#data
-FOO<script></script foo=">" dd>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "BAR"
-
-#data
-FOO<script>'<'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<'"
-| "BAR"
-
-#data
-FOO<script>'<!'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!'"
-| "BAR"
-
-#data
-FOO<script>'<!-'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!-'"
-| "BAR"
-
-#data
-FOO<script>'<!--'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!--'"
-| "BAR"
-
-#data
-FOO<script>'<!---'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!---'"
-| "BAR"
-
-#data
-FOO<script>'<!-->'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!-->'"
-| "BAR"
-
-#data
-FOO<script>'<!-->'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!-->'"
-| "BAR"
-
-#data
-FOO<script>'<!-- potato'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!-- potato'"
-| "BAR"
-
-#data
-FOO<script>'<!-- <sCrIpt'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!-- <sCrIpt'"
-| "BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt>'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt>'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt> -'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt> -'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt> --'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt> --'</script>BAR"
-
-#data
-FOO<script>'<!-- <sCrIpt> -->'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| "'<!-- <sCrIpt> -->'"
-| "BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt> --!>'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt> --!>'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt> -- >'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt> -- >'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt '</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt '</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt/'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt/'</script>BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt\'</script>BAR
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt\'"
-| "BAR"
-
-#data
-FOO<script type="text/plain">'<!-- <sCrIpt/'</script>BAR</script>QUX
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "FOO"
-| <script>
-| type="text/plain"
-| "'<!-- <sCrIpt/'</script>BAR"
-| "QUX"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat
deleted file mode 100644
index 4e08d0e84..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat
+++ /dev/null
@@ -1,15 +0,0 @@
-#data
-<p><b id="A"><script>document.getElementById("A").id = "B"</script></p>TEXT</b>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <b>
-| id="B"
-| <script>
-| "document.getElementById("A").id = "B""
-| <b>
-| id="A"
-| "TEXT"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat
deleted file mode 100644
index ef4a41ca0..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat
+++ /dev/null
@@ -1,28 +0,0 @@
-#data
-1<script>document.write("2")</script>3
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "1"
-| <script>
-| "document.write("2")"
-| "23"
-
-#data
-1<script>document.write("<script>document.write('2')</scr"+ "ipt><script>document.write('3')</scr" + "ipt>")</script>4
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "1"
-| <script>
-| "document.write("<script>document.write('2')</scr"+ "ipt><script>document.write('3')</scr" + "ipt>")"
-| <script>
-| "document.write('2')"
-| "2"
-| <script>
-| "document.write('3')"
-| "34"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tables01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tables01.dat
deleted file mode 100644
index c4b47e48a..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tables01.dat
+++ /dev/null
@@ -1,212 +0,0 @@
-#data
-<table><th>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <th>
-
-#data
-<table><td>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<table><col foo='bar'>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <colgroup>
-| <col>
-| foo="bar"
-
-#data
-<table><colgroup></html>foo
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "foo"
-| <table>
-| <colgroup>
-
-#data
-<table></table><p>foo
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <p>
-| "foo"
-
-#data
-<table></body></caption></col></colgroup></html></tbody></td></tfoot></th></thead></tr><td>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<table><select><option>3</select></table>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-| "3"
-| <table>
-
-#data
-<table><select><table></table></select></table>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <select>
-| <table>
-| <table>
-
-#data
-<table><select></table>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <select>
-| <table>
-
-#data
-<table><select><option>A<tr><td>B</td></tr></table>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-| "A"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "B"
-
-#data
-<table><td></body></caption></col></colgroup></html>foo
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "foo"
-
-#data
-<table><td>A</table>B
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "A"
-| "B"
-
-#data
-<table><tr><caption>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <caption>
-
-#data
-<table><tr></body></caption></col></colgroup></html></td></th><td>foo
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "foo"
-
-#data
-<table><td><tr>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <tr>
-
-#data
-<table><td><button><td>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <button>
-| <td>
-
-#data
-<table><tr><td><svg><desc><td>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <svg svg>
-| <svg desc>
-| <td>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests1.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests1.dat
deleted file mode 100644
index cbf8bdda6..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests1.dat
+++ /dev/null
@@ -1,1952 +0,0 @@
-#data
-Test
-#errors
-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "Test"
-
-#data
-<p>One<p>Two
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| "One"
-| <p>
-| "Two"
-
-#data
-Line1<br>Line2<br>Line3<br>Line4
-#errors
-Line: 1 Col: 5 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "Line1"
-| <br>
-| "Line2"
-| <br>
-| "Line3"
-| <br>
-| "Line4"
-
-#data
-<html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<head>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<body>
-#errors
-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<html><head>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<html><head></head>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<html><head></head><body>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<html><head></head><body></body>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<html><head><body></body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<html><head></body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-Line: 1 Col: 19 Unexpected end tag (body).
-Line: 1 Col: 26 Unexpected end tag (html).
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<html><head><body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<html><body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<head></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end tag (html). Ignored.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-</head>
-#errors
-Line: 1 Col: 7 Unexpected end tag (head). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-</body>
-#errors
-Line: 1 Col: 7 Unexpected end tag (body). Expected DOCTYPE.
-Line: 1 Col: 7 Unexpected end tag (body) after the (implied) root element.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-</html>
-#errors
-Line: 1 Col: 7 Unexpected end tag (html). Expected DOCTYPE.
-Line: 1 Col: 7 Unexpected end tag (html) after the (implied) root element.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<b><table><td><i></table>
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 25 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <i>
-
-#data
-<b><table><td></b><i></table>X
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 18 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 29 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 30 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <i>
-| "X"
-
-#data
-<h1>Hello<h2>World
-#errors
-4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-13: Heading cannot be a child of another heading.
-18: End of file seen and there were open elements.
-#document
-| <html>
-| <head>
-| <body>
-| <h1>
-| "Hello"
-| <h2>
-| "World"
-
-#data
-<a><p>X<a>Y</a>Z</p></a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 10 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 10 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 24 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <p>
-| <a>
-| "X"
-| <a>
-| "Y"
-| "Z"
-
-#data
-<b><button>foo</b>bar
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 15 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <button>
-| <b>
-| "foo"
-| "bar"
-
-#data
-<!DOCTYPE html><span><button>foo</span>bar
-#errors
-39: End tag “span” seen but there were unclosed elements.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <span>
-| <button>
-| "foobar"
-
-#data
-<p><b><div><marquee></p></b></div>X
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
-Line: 1 Col: 24 Unexpected end tag (p). Ignored.
-Line: 1 Col: 28 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 34 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 35 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <b>
-| <div>
-| <b>
-| <marquee>
-| <p>
-| "X"
-
-#data
-<script><div></script></div><title><p></title><p><p>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 28 Unexpected end tag (div). Ignored.
-#document
-| <html>
-| <head>
-| <script>
-| "<div>"
-| <title>
-| "<p>"
-| <body>
-| <p>
-| <p>
-
-#data
-<!--><div>--<!-->
-#errors
-Line: 1 Col: 5 Incorrect comment.
-Line: 1 Col: 10 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 17 Incorrect comment.
-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
-#document
-| <!-- -->
-| <html>
-| <head>
-| <body>
-| <div>
-| "--"
-| <!-- -->
-
-#data
-<p><hr></p>
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <hr>
-| <p>
-
-#data
-<select><b><option><select><option></b></select>X
-#errors
-Line: 1 Col: 8 Unexpected start tag (select). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected start tag token (b) in the select phase. Ignored.
-Line: 1 Col: 27 Unexpected select start tag in the select phase treated as select end tag.
-Line: 1 Col: 39 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 48 Unexpected end tag (select). Ignored.
-Line: 1 Col: 49 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-| <option>
-| "X"
-
-#data
-<a><table><td><a><table></table><a></tr><a></table><b>X</b>C<a>Y
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 40 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 43 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 43 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 43 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 51 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 63 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 64 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <a>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <a>
-| <table>
-| <a>
-| <a>
-| <b>
-| "X"
-| "C"
-| <a>
-| "Y"
-
-#data
-<a X>0<b>1<a Y>2
-#errors
-Line: 1 Col: 5 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 15 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 16 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| x=""
-| "0"
-| <b>
-| "1"
-| <b>
-| <a>
-| y=""
-| "2"
-
-#data
-<!-----><font><div>hello<table>excite!<b>me!<th><i>please!</tr><!--X-->
-#errors
-Line: 1 Col: 7 Unexpected '-' after '--' found in comment.
-Line: 1 Col: 14 Unexpected start tag (font). Expected DOCTYPE.
-Line: 1 Col: 38 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 41 Unexpected start tag (b) in table context caused voodoo mode.
-Line: 1 Col: 48 Unexpected implied end tag (b) in the table phase.
-Line: 1 Col: 48 Unexpected table cell start tag (th) in the table body phase.
-Line: 1 Col: 63 Got table cell end tag (th) while required end tags are missing.
-Line: 1 Col: 71 Unexpected end of file. Expected table content.
-#document
-| <!-- - -->
-| <html>
-| <head>
-| <body>
-| <font>
-| <div>
-| "helloexcite!"
-| <b>
-| "me!"
-| <table>
-| <tbody>
-| <tr>
-| <th>
-| <i>
-| "please!"
-| <!-- X -->
-
-#data
-<!DOCTYPE html><li>hello<li>world<ul>how<li>do</ul>you</body><!--do-->
-#errors
-Line: 1 Col: 61 Unexpected end tag (li). Missing end tag (body).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <li>
-| "hello"
-| <li>
-| "world"
-| <ul>
-| "how"
-| <li>
-| "do"
-| "you"
-| <!-- do -->
-
-#data
-<!DOCTYPE html>A<option>B<optgroup>C<select>D</option>E
-#errors
-Line: 1 Col: 54 Unexpected end tag (option) in the select phase. Ignored.
-Line: 1 Col: 55 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "A"
-| <option>
-| "B"
-| <optgroup>
-| "C"
-| <select>
-| "DE"
-
-#data
-<
-#errors
-Line: 1 Col: 1 Expected tag name. Got something else instead
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "<"
-
-#data
-<#
-#errors
-Line: 1 Col: 1 Expected tag name. Got something else instead
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "<#"
-
-#data
-</
-#errors
-Line: 1 Col: 2 Expected closing tag. Unexpected end of file.
-Line: 1 Col: 2 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "</"
-
-#data
-</#
-#errors
-Line: 1 Col: 2 Expected closing tag. Unexpected character '#' found.
-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- # -->
-| <html>
-| <head>
-| <body>
-
-#data
-<?
-#errors
-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
-Line: 1 Col: 2 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- ? -->
-| <html>
-| <head>
-| <body>
-
-#data
-<?#
-#errors
-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- ?# -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!
-#errors
-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
-Line: 1 Col: 2 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!#
-#errors
-Line: 1 Col: 3 Expected '--' or 'DOCTYPE'. Not found.
-Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- # -->
-| <html>
-| <head>
-| <body>
-
-#data
-<?COMMENT?>
-#errors
-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
-Line: 1 Col: 11 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- ?COMMENT? -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!COMMENT>
-#errors
-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
-Line: 1 Col: 10 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- COMMENT -->
-| <html>
-| <head>
-| <body>
-
-#data
-</ COMMENT >
-#errors
-Line: 1 Col: 2 Expected closing tag. Unexpected character ' ' found.
-Line: 1 Col: 12 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- COMMENT -->
-| <html>
-| <head>
-| <body>
-
-#data
-<?COM--MENT?>
-#errors
-Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)
-Line: 1 Col: 13 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- ?COM--MENT? -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!COM--MENT>
-#errors
-Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found.
-Line: 1 Col: 12 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- COM--MENT -->
-| <html>
-| <head>
-| <body>
-
-#data
-</ COM--MENT >
-#errors
-Line: 1 Col: 2 Expected closing tag. Unexpected character ' ' found.
-Line: 1 Col: 14 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- COM--MENT -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><style> EOF
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| " EOF"
-| <body>
-
-#data
-<!DOCTYPE html><script> <!-- </script> --> </script> EOF
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| " <!-- "
-| " "
-| <body>
-| "--> EOF"
-
-#data
-<b><p></b>TEST
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 10 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <p>
-| <b>
-| "TEST"
-
-#data
-<p id=a><b><p id=b></b>TEST
-#errors
-Line: 1 Col: 8 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 19 Unexpected end tag (p). Ignored.
-Line: 1 Col: 23 End tag (b) violates step 1, paragraph 2 of the adoption agency algorithm.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| id="a"
-| <b>
-| <p>
-| id="b"
-| "TEST"
-
-#data
-<b id=a><p><b id=b></p></b>TEST
-#errors
-Line: 1 Col: 8 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected end tag (p). Ignored.
-Line: 1 Col: 27 End tag (b) violates step 1, paragraph 2 of the adoption agency algorithm.
-Line: 1 Col: 31 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| id="a"
-| <p>
-| <b>
-| id="b"
-| "TEST"
-
-#data
-<!DOCTYPE html><title>U-test</title><body><div><p>Test<u></p></div></body>
-#errors
-Line: 1 Col: 61 Unexpected end tag (p). Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <title>
-| "U-test"
-| <body>
-| <div>
-| <p>
-| "Test"
-| <u>
-
-#data
-<!DOCTYPE html><font><table></font></table></font>
-#errors
-Line: 1 Col: 35 Unexpected end tag (font) in table context caused voodoo mode.
-Line: 1 Col: 35 End tag (font) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <font>
-| <table>
-
-#data
-<font><p>hello<b>cruel</font>world
-#errors
-Line: 1 Col: 6 Unexpected start tag (font). Expected DOCTYPE.
-Line: 1 Col: 29 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 29 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 34 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <font>
-| <p>
-| <font>
-| "hello"
-| <b>
-| "cruel"
-| <b>
-| "world"
-
-#data
-<b>Test</i>Test
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 11 End tag (i) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| "TestTest"
-
-#data
-<b>A<cite>B<div>C
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| "A"
-| <cite>
-| "B"
-| <div>
-| "C"
-
-#data
-<b>A<cite>B<div>C</cite>D
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 24 Unexpected end tag (cite). Ignored.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| "A"
-| <cite>
-| "B"
-| <div>
-| "CD"
-
-#data
-<b>A<cite>B<div>C</b>D
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 21 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 22 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| "A"
-| <cite>
-| "B"
-| <div>
-| <b>
-| "C"
-| "D"
-
-#data
-
-#errors
-Line: 1 Col: 0 Unexpected End of file. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<DIV>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 5 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-
-#data
-<DIV> abc
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 9 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc"
-
-#data
-<DIV> abc <B>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 13 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-
-#data
-<DIV> abc <B> def
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 17 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def"
-
-#data
-<DIV> abc <B> def <I>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 21 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-
-#data
-<DIV> abc <B> def <I> ghi
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi"
-
-#data
-<DIV> abc <B> def <I> ghi <P>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 29 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi "
-| <p>
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 33 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi "
-| <p>
-| " jkl"
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 38 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi "
-| <i>
-| <p>
-| <b>
-| " jkl "
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 42 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi "
-| <i>
-| <p>
-| <b>
-| " jkl "
-| " mno"
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi "
-| <i>
-| <p>
-| <i>
-| <b>
-| " jkl "
-| " mno "
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 51 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi "
-| <i>
-| <p>
-| <i>
-| <b>
-| " jkl "
-| " mno "
-| " pqr"
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr </P>
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 56 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi "
-| <i>
-| <p>
-| <i>
-| <b>
-| " jkl "
-| " mno "
-| " pqr "
-
-#data
-<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr </P> stu
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 60 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| " abc "
-| <b>
-| " def "
-| <i>
-| " ghi "
-| <i>
-| <p>
-| <i>
-| <b>
-| " jkl "
-| " mno "
-| " pqr "
-| " stu"
-
-#data
-<test attribute---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
-#errors
-Line: 1 Col: 1040 Unexpected start tag (test). Expected DOCTYPE.
-Line: 1 Col: 1040 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <test>
-| attribute----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=""
-
-#data
-<a href="blah">aba<table><a href="foo">br<tr><td></td></tr>x</table>aoe
-#errors
-Line: 1 Col: 15 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 39 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 39 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 39 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 45 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 68 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
-
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| href="blah"
-| "aba"
-| <a>
-| href="foo"
-| "br"
-| <a>
-| href="foo"
-| "x"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <a>
-| href="foo"
-| "aoe"
-
-#data
-<a href="blah">aba<table><tr><td><a href="foo">br</td></tr>x</table>aoe
-#errors
-Line: 1 Col: 15 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 54 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 60 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| href="blah"
-| "abax"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <a>
-| href="foo"
-| "br"
-| "aoe"
-
-#data
-<table><a href="blah">aba<tr><td><a href="foo">br</td></tr>x</table>aoe
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 29 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 54 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 68 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 71 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| href="blah"
-| "aba"
-| <a>
-| href="blah"
-| "x"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <a>
-| href="foo"
-| "br"
-| <a>
-| href="blah"
-| "aoe"
-
-#data
-<a href=a>aa<marquee>aa<a href=b>bb</marquee>aa
-#errors
-Line: 1 Col: 10 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 45 End tag (marquee) seen too early. Expected other end tag.
-Line: 1 Col: 47 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| href="a"
-| "aa"
-| <marquee>
-| "aa"
-| <a>
-| href="b"
-| "bb"
-| "aa"
-
-#data
-<wbr><strike><code></strike><code><strike></code>
-#errors
-Line: 1 Col: 5 Unexpected start tag (wbr). Expected DOCTYPE.
-Line: 1 Col: 28 End tag (strike) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 49 Unexpected end tag (code). Ignored.
-#document
-| <html>
-| <head>
-| <body>
-| <wbr>
-| <strike>
-| <code>
-| <code>
-| <code>
-| <strike>
-
-#data
-<!DOCTYPE html><spacer>foo
-#errors
-26: End of file seen and there were open elements.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <spacer>
-| "foo"
-
-#data
-<title><meta></title><link><title><meta></title>
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <title>
-| "<meta>"
-| <link>
-| <title>
-| "<meta>"
-| <body>
-
-#data
-<style><!--</style><meta><script>--><link></script>
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-Line: 1 Col: 51 Unexpected end of file. Expected end tag (style).
-#document
-| <html>
-| <head>
-| <style>
-| "<!--"
-| <meta>
-| <script>
-| "--><link>"
-| <body>
-
-#data
-<head><meta></head><link>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 25 Unexpected start tag (link) that can be in head. Moved.
-#document
-| <html>
-| <head>
-| <meta>
-| <link>
-| <body>
-
-#data
-<table><tr><tr><td><td><span><th><span>X</table>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 33 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 48 Got table cell end tag (th) while required end tags are missing.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <tr>
-| <td>
-| <td>
-| <span>
-| <th>
-| <span>
-| "X"
-
-#data
-<body><body><base><link><meta><title><p></title><body><p></body>
-#errors
-Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE.
-Line: 1 Col: 12 Unexpected start tag (body).
-Line: 1 Col: 54 Unexpected start tag (body).
-Line: 1 Col: 64 Unexpected end tag (p). Missing end tag (body).
-#document
-| <html>
-| <head>
-| <body>
-| <base>
-| <link>
-| <meta>
-| <title>
-| "<p>"
-| <p>
-
-#data
-<textarea><p></textarea>
-#errors
-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "<p>"
-
-#data
-<p><image></p>
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 10 Unexpected start tag (image). Treated as img.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <img>
-
-#data
-<a><table><a></table><p><a><div><a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 13 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 13 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 21 Unexpected end tag (table). Expected end tag (a).
-Line: 1 Col: 27 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 27 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
-Line: 1 Col: 32 Unexpected end tag (p). Ignored.
-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 35 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
-Line: 1 Col: 35 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <a>
-| <table>
-| <p>
-| <a>
-| <div>
-| <a>
-
-#data
-<head></p><meta><p>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 10 Unexpected end tag (p). Ignored.
-#document
-| <html>
-| <head>
-| <meta>
-| <body>
-| <p>
-
-#data
-<head></html><meta><p>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 19 Unexpected start tag (meta).
-#document
-| <html>
-| <head>
-| <body>
-| <meta>
-| <p>
-
-#data
-<b><table><td><i></table>
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 25 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <i>
-
-#data
-<b><table><td></b><i></table>
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 18 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 29 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 29 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <i>
-
-#data
-<h1><h2>
-#errors
-4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-8: Heading cannot be a child of another heading.
-8: End of file seen and there were open elements.
-#document
-| <html>
-| <head>
-| <body>
-| <h1>
-| <h2>
-
-#data
-<a><p><a></a></p></a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 9 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 9 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 21 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <p>
-| <a>
-| <a>
-
-#data
-<b><button></b></button></b>
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 15 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <button>
-| <b>
-
-#data
-<p><b><div><marquee></p></b></div>
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
-Line: 1 Col: 24 Unexpected end tag (p). Ignored.
-Line: 1 Col: 28 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 34 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 34 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <b>
-| <div>
-| <b>
-| <marquee>
-| <p>
-
-#data
-<script></script></div><title></title><p><p>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected end tag (div). Ignored.
-#document
-| <html>
-| <head>
-| <script>
-| <title>
-| <body>
-| <p>
-| <p>
-
-#data
-<p><hr></p>
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end tag (p). Ignored.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <hr>
-| <p>
-
-#data
-<select><b><option><select><option></b></select>
-#errors
-Line: 1 Col: 8 Unexpected start tag (select). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected start tag token (b) in the select phase. Ignored.
-Line: 1 Col: 27 Unexpected select start tag in the select phase treated as select end tag.
-Line: 1 Col: 39 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 48 Unexpected end tag (select). Ignored.
-Line: 1 Col: 48 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-| <option>
-
-#data
-<html><head><title></title><body></body></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <title>
-| <body>
-
-#data
-<a><table><td><a><table></table><a></tr><a></table><a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 40 Got table cell end tag (td) while required end tags are missing.
-Line: 1 Col: 43 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 43 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 43 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 51 Unexpected implied end tag (a) in the table phase.
-Line: 1 Col: 54 Unexpected start tag (a) implies end tag (a).
-Line: 1 Col: 54 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm.
-Line: 1 Col: 54 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <a>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <a>
-| <table>
-| <a>
-| <a>
-
-#data
-<ul><li></li><div><li></div><li><li><div><li><address><li><b><em></b><li></ul>
-#errors
-Line: 1 Col: 4 Unexpected start tag (ul). Expected DOCTYPE.
-Line: 1 Col: 45 Missing end tag (div, li).
-Line: 1 Col: 58 Missing end tag (address, li).
-Line: 1 Col: 69 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-#document
-| <html>
-| <head>
-| <body>
-| <ul>
-| <li>
-| <div>
-| <li>
-| <li>
-| <li>
-| <div>
-| <li>
-| <address>
-| <li>
-| <b>
-| <em>
-| <li>
-
-#data
-<ul><li><ul></li><li>a</li></ul></li></ul>
-#errors
-XXX: fix me
-#document
-| <html>
-| <head>
-| <body>
-| <ul>
-| <li>
-| <ul>
-| <li>
-| "a"
-
-#data
-<frameset><frame><frameset><frame></frameset><noframes></noframes></frameset>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <frameset>
-| <frame>
-| <frameset>
-| <frame>
-| <noframes>
-
-#data
-<h1><table><td><h3></table><h3></h1>
-#errors
-4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-15: “td” start tag in table body.
-27: Unclosed elements.
-31: Heading cannot be a child of another heading.
-36: End tag “h1” seen but there were unclosed elements.
-#document
-| <html>
-| <head>
-| <body>
-| <h1>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <h3>
-| <h3>
-
-#data
-<table><colgroup><col><colgroup><col><col><col><colgroup><col><col><thead><tr><td></table>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <colgroup>
-| <col>
-| <colgroup>
-| <col>
-| <col>
-| <col>
-| <colgroup>
-| <col>
-| <col>
-| <thead>
-| <tr>
-| <td>
-
-#data
-<table><col><tbody><col><tr><col><td><col></table><col>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 37 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 55 Unexpected start tag col. Ignored.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <colgroup>
-| <col>
-| <tbody>
-| <colgroup>
-| <col>
-| <tbody>
-| <tr>
-| <colgroup>
-| <col>
-| <tbody>
-| <tr>
-| <td>
-| <colgroup>
-| <col>
-
-#data
-<table><colgroup><tbody><colgroup><tr><colgroup><td><colgroup></table><colgroup>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 52 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 80 Unexpected start tag colgroup. Ignored.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <colgroup>
-| <tbody>
-| <colgroup>
-| <tbody>
-| <tr>
-| <colgroup>
-| <tbody>
-| <tr>
-| <td>
-| <colgroup>
-
-#data
-</strong></b></em></i></u></strike></s></blink></tt></pre></big></small></font></select></h1></h2></h3></h4></h5></h6></body></br></a></img></title></span></style></script></table></th></td></tr></frame></area></link></param></hr></input></col></base></meta></basefont></bgsound></embed></spacer></p></dd></dt></caption></colgroup></tbody></tfoot></thead></address></blockquote></center></dir></div></dl></fieldset></listing></menu></ol></ul></li></nobr></wbr></form></button></marquee></object></html></frameset></head></iframe></image></isindex></noembed></noframes></noscript></optgroup></option></plaintext></textarea>
-#errors
-Line: 1 Col: 9 Unexpected end tag (strong). Expected DOCTYPE.
-Line: 1 Col: 9 Unexpected end tag (strong) after the (implied) root element.
-Line: 1 Col: 13 Unexpected end tag (b) after the (implied) root element.
-Line: 1 Col: 18 Unexpected end tag (em) after the (implied) root element.
-Line: 1 Col: 22 Unexpected end tag (i) after the (implied) root element.
-Line: 1 Col: 26 Unexpected end tag (u) after the (implied) root element.
-Line: 1 Col: 35 Unexpected end tag (strike) after the (implied) root element.
-Line: 1 Col: 39 Unexpected end tag (s) after the (implied) root element.
-Line: 1 Col: 47 Unexpected end tag (blink) after the (implied) root element.
-Line: 1 Col: 52 Unexpected end tag (tt) after the (implied) root element.
-Line: 1 Col: 58 Unexpected end tag (pre) after the (implied) root element.
-Line: 1 Col: 64 Unexpected end tag (big) after the (implied) root element.
-Line: 1 Col: 72 Unexpected end tag (small) after the (implied) root element.
-Line: 1 Col: 79 Unexpected end tag (font) after the (implied) root element.
-Line: 1 Col: 88 Unexpected end tag (select) after the (implied) root element.
-Line: 1 Col: 93 Unexpected end tag (h1) after the (implied) root element.
-Line: 1 Col: 98 Unexpected end tag (h2) after the (implied) root element.
-Line: 1 Col: 103 Unexpected end tag (h3) after the (implied) root element.
-Line: 1 Col: 108 Unexpected end tag (h4) after the (implied) root element.
-Line: 1 Col: 113 Unexpected end tag (h5) after the (implied) root element.
-Line: 1 Col: 118 Unexpected end tag (h6) after the (implied) root element.
-Line: 1 Col: 125 Unexpected end tag (body) after the (implied) root element.
-Line: 1 Col: 130 Unexpected end tag (br). Treated as br element.
-Line: 1 Col: 134 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 140 This element (img) has no end tag.
-Line: 1 Col: 148 Unexpected end tag (title). Ignored.
-Line: 1 Col: 155 Unexpected end tag (span). Ignored.
-Line: 1 Col: 163 Unexpected end tag (style). Ignored.
-Line: 1 Col: 172 Unexpected end tag (script). Ignored.
-Line: 1 Col: 180 Unexpected end tag (table). Ignored.
-Line: 1 Col: 185 Unexpected end tag (th). Ignored.
-Line: 1 Col: 190 Unexpected end tag (td). Ignored.
-Line: 1 Col: 195 Unexpected end tag (tr). Ignored.
-Line: 1 Col: 203 This element (frame) has no end tag.
-Line: 1 Col: 210 This element (area) has no end tag.
-Line: 1 Col: 217 Unexpected end tag (link). Ignored.
-Line: 1 Col: 225 This element (param) has no end tag.
-Line: 1 Col: 230 This element (hr) has no end tag.
-Line: 1 Col: 238 This element (input) has no end tag.
-Line: 1 Col: 244 Unexpected end tag (col). Ignored.
-Line: 1 Col: 251 Unexpected end tag (base). Ignored.
-Line: 1 Col: 258 Unexpected end tag (meta). Ignored.
-Line: 1 Col: 269 This element (basefont) has no end tag.
-Line: 1 Col: 279 This element (bgsound) has no end tag.
-Line: 1 Col: 287 This element (embed) has no end tag.
-Line: 1 Col: 296 This element (spacer) has no end tag.
-Line: 1 Col: 300 Unexpected end tag (p). Ignored.
-Line: 1 Col: 305 End tag (dd) seen too early. Expected other end tag.
-Line: 1 Col: 310 End tag (dt) seen too early. Expected other end tag.
-Line: 1 Col: 320 Unexpected end tag (caption). Ignored.
-Line: 1 Col: 331 Unexpected end tag (colgroup). Ignored.
-Line: 1 Col: 339 Unexpected end tag (tbody). Ignored.
-Line: 1 Col: 347 Unexpected end tag (tfoot). Ignored.
-Line: 1 Col: 355 Unexpected end tag (thead). Ignored.
-Line: 1 Col: 365 End tag (address) seen too early. Expected other end tag.
-Line: 1 Col: 378 End tag (blockquote) seen too early. Expected other end tag.
-Line: 1 Col: 387 End tag (center) seen too early. Expected other end tag.
-Line: 1 Col: 393 Unexpected end tag (dir). Ignored.
-Line: 1 Col: 399 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 404 End tag (dl) seen too early. Expected other end tag.
-Line: 1 Col: 415 End tag (fieldset) seen too early. Expected other end tag.
-Line: 1 Col: 425 End tag (listing) seen too early. Expected other end tag.
-Line: 1 Col: 432 End tag (menu) seen too early. Expected other end tag.
-Line: 1 Col: 437 End tag (ol) seen too early. Expected other end tag.
-Line: 1 Col: 442 End tag (ul) seen too early. Expected other end tag.
-Line: 1 Col: 447 End tag (li) seen too early. Expected other end tag.
-Line: 1 Col: 454 End tag (nobr) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 460 This element (wbr) has no end tag.
-Line: 1 Col: 476 End tag (button) seen too early. Expected other end tag.
-Line: 1 Col: 486 End tag (marquee) seen too early. Expected other end tag.
-Line: 1 Col: 495 End tag (object) seen too early. Expected other end tag.
-Line: 1 Col: 513 Unexpected end tag (html). Ignored.
-Line: 1 Col: 513 Unexpected end tag (frameset). Ignored.
-Line: 1 Col: 520 Unexpected end tag (head). Ignored.
-Line: 1 Col: 529 Unexpected end tag (iframe). Ignored.
-Line: 1 Col: 537 This element (image) has no end tag.
-Line: 1 Col: 547 This element (isindex) has no end tag.
-Line: 1 Col: 557 Unexpected end tag (noembed). Ignored.
-Line: 1 Col: 568 Unexpected end tag (noframes). Ignored.
-Line: 1 Col: 579 Unexpected end tag (noscript). Ignored.
-Line: 1 Col: 590 Unexpected end tag (optgroup). Ignored.
-Line: 1 Col: 599 Unexpected end tag (option). Ignored.
-Line: 1 Col: 611 Unexpected end tag (plaintext). Ignored.
-Line: 1 Col: 622 Unexpected end tag (textarea). Ignored.
-#document
-| <html>
-| <head>
-| <body>
-| <br>
-| <p>
-
-#data
-<table><tr></strong></b></em></i></u></strike></s></blink></tt></pre></big></small></font></select></h1></h2></h3></h4></h5></h6></body></br></a></img></title></span></style></script></table></th></td></tr></frame></area></link></param></hr></input></col></base></meta></basefont></bgsound></embed></spacer></p></dd></dt></caption></colgroup></tbody></tfoot></thead></address></blockquote></center></dir></div></dl></fieldset></listing></menu></ol></ul></li></nobr></wbr></form></button></marquee></object></html></frameset></head></iframe></image></isindex></noembed></noframes></noscript></optgroup></option></plaintext></textarea>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected end tag (strong) in table context caused voodoo mode.
-Line: 1 Col: 20 End tag (strong) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 24 Unexpected end tag (b) in table context caused voodoo mode.
-Line: 1 Col: 24 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 29 Unexpected end tag (em) in table context caused voodoo mode.
-Line: 1 Col: 29 End tag (em) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 33 Unexpected end tag (i) in table context caused voodoo mode.
-Line: 1 Col: 33 End tag (i) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 37 Unexpected end tag (u) in table context caused voodoo mode.
-Line: 1 Col: 37 End tag (u) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 46 Unexpected end tag (strike) in table context caused voodoo mode.
-Line: 1 Col: 46 End tag (strike) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 50 Unexpected end tag (s) in table context caused voodoo mode.
-Line: 1 Col: 50 End tag (s) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 58 Unexpected end tag (blink) in table context caused voodoo mode.
-Line: 1 Col: 58 Unexpected end tag (blink). Ignored.
-Line: 1 Col: 63 Unexpected end tag (tt) in table context caused voodoo mode.
-Line: 1 Col: 63 End tag (tt) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 69 Unexpected end tag (pre) in table context caused voodoo mode.
-Line: 1 Col: 69 End tag (pre) seen too early. Expected other end tag.
-Line: 1 Col: 75 Unexpected end tag (big) in table context caused voodoo mode.
-Line: 1 Col: 75 End tag (big) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 83 Unexpected end tag (small) in table context caused voodoo mode.
-Line: 1 Col: 83 End tag (small) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 90 Unexpected end tag (font) in table context caused voodoo mode.
-Line: 1 Col: 90 End tag (font) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 99 Unexpected end tag (select) in table context caused voodoo mode.
-Line: 1 Col: 99 Unexpected end tag (select). Ignored.
-Line: 1 Col: 104 Unexpected end tag (h1) in table context caused voodoo mode.
-Line: 1 Col: 104 End tag (h1) seen too early. Expected other end tag.
-Line: 1 Col: 109 Unexpected end tag (h2) in table context caused voodoo mode.
-Line: 1 Col: 109 End tag (h2) seen too early. Expected other end tag.
-Line: 1 Col: 114 Unexpected end tag (h3) in table context caused voodoo mode.
-Line: 1 Col: 114 End tag (h3) seen too early. Expected other end tag.
-Line: 1 Col: 119 Unexpected end tag (h4) in table context caused voodoo mode.
-Line: 1 Col: 119 End tag (h4) seen too early. Expected other end tag.
-Line: 1 Col: 124 Unexpected end tag (h5) in table context caused voodoo mode.
-Line: 1 Col: 124 End tag (h5) seen too early. Expected other end tag.
-Line: 1 Col: 129 Unexpected end tag (h6) in table context caused voodoo mode.
-Line: 1 Col: 129 End tag (h6) seen too early. Expected other end tag.
-Line: 1 Col: 136 Unexpected end tag (body) in the table row phase. Ignored.
-Line: 1 Col: 141 Unexpected end tag (br) in table context caused voodoo mode.
-Line: 1 Col: 141 Unexpected end tag (br). Treated as br element.
-Line: 1 Col: 145 Unexpected end tag (a) in table context caused voodoo mode.
-Line: 1 Col: 145 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 151 Unexpected end tag (img) in table context caused voodoo mode.
-Line: 1 Col: 151 This element (img) has no end tag.
-Line: 1 Col: 159 Unexpected end tag (title) in table context caused voodoo mode.
-Line: 1 Col: 159 Unexpected end tag (title). Ignored.
-Line: 1 Col: 166 Unexpected end tag (span) in table context caused voodoo mode.
-Line: 1 Col: 166 Unexpected end tag (span). Ignored.
-Line: 1 Col: 174 Unexpected end tag (style) in table context caused voodoo mode.
-Line: 1 Col: 174 Unexpected end tag (style). Ignored.
-Line: 1 Col: 183 Unexpected end tag (script) in table context caused voodoo mode.
-Line: 1 Col: 183 Unexpected end tag (script). Ignored.
-Line: 1 Col: 196 Unexpected end tag (th). Ignored.
-Line: 1 Col: 201 Unexpected end tag (td). Ignored.
-Line: 1 Col: 206 Unexpected end tag (tr). Ignored.
-Line: 1 Col: 214 This element (frame) has no end tag.
-Line: 1 Col: 221 This element (area) has no end tag.
-Line: 1 Col: 228 Unexpected end tag (link). Ignored.
-Line: 1 Col: 236 This element (param) has no end tag.
-Line: 1 Col: 241 This element (hr) has no end tag.
-Line: 1 Col: 249 This element (input) has no end tag.
-Line: 1 Col: 255 Unexpected end tag (col). Ignored.
-Line: 1 Col: 262 Unexpected end tag (base). Ignored.
-Line: 1 Col: 269 Unexpected end tag (meta). Ignored.
-Line: 1 Col: 280 This element (basefont) has no end tag.
-Line: 1 Col: 290 This element (bgsound) has no end tag.
-Line: 1 Col: 298 This element (embed) has no end tag.
-Line: 1 Col: 307 This element (spacer) has no end tag.
-Line: 1 Col: 311 Unexpected end tag (p). Ignored.
-Line: 1 Col: 316 End tag (dd) seen too early. Expected other end tag.
-Line: 1 Col: 321 End tag (dt) seen too early. Expected other end tag.
-Line: 1 Col: 331 Unexpected end tag (caption). Ignored.
-Line: 1 Col: 342 Unexpected end tag (colgroup). Ignored.
-Line: 1 Col: 350 Unexpected end tag (tbody). Ignored.
-Line: 1 Col: 358 Unexpected end tag (tfoot). Ignored.
-Line: 1 Col: 366 Unexpected end tag (thead). Ignored.
-Line: 1 Col: 376 End tag (address) seen too early. Expected other end tag.
-Line: 1 Col: 389 End tag (blockquote) seen too early. Expected other end tag.
-Line: 1 Col: 398 End tag (center) seen too early. Expected other end tag.
-Line: 1 Col: 404 Unexpected end tag (dir). Ignored.
-Line: 1 Col: 410 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 415 End tag (dl) seen too early. Expected other end tag.
-Line: 1 Col: 426 End tag (fieldset) seen too early. Expected other end tag.
-Line: 1 Col: 436 End tag (listing) seen too early. Expected other end tag.
-Line: 1 Col: 443 End tag (menu) seen too early. Expected other end tag.
-Line: 1 Col: 448 End tag (ol) seen too early. Expected other end tag.
-Line: 1 Col: 453 End tag (ul) seen too early. Expected other end tag.
-Line: 1 Col: 458 End tag (li) seen too early. Expected other end tag.
-Line: 1 Col: 465 End tag (nobr) violates step 1, paragraph 1 of the adoption agency algorithm.
-Line: 1 Col: 471 This element (wbr) has no end tag.
-Line: 1 Col: 487 End tag (button) seen too early. Expected other end tag.
-Line: 1 Col: 497 End tag (marquee) seen too early. Expected other end tag.
-Line: 1 Col: 506 End tag (object) seen too early. Expected other end tag.
-Line: 1 Col: 524 Unexpected end tag (html). Ignored.
-Line: 1 Col: 524 Unexpected end tag (frameset). Ignored.
-Line: 1 Col: 531 Unexpected end tag (head). Ignored.
-Line: 1 Col: 540 Unexpected end tag (iframe). Ignored.
-Line: 1 Col: 548 This element (image) has no end tag.
-Line: 1 Col: 558 This element (isindex) has no end tag.
-Line: 1 Col: 568 Unexpected end tag (noembed). Ignored.
-Line: 1 Col: 579 Unexpected end tag (noframes). Ignored.
-Line: 1 Col: 590 Unexpected end tag (noscript). Ignored.
-Line: 1 Col: 601 Unexpected end tag (optgroup). Ignored.
-Line: 1 Col: 610 Unexpected end tag (option). Ignored.
-Line: 1 Col: 622 Unexpected end tag (plaintext). Ignored.
-Line: 1 Col: 633 Unexpected end tag (textarea). Ignored.
-#document
-| <html>
-| <head>
-| <body>
-| <br>
-| <table>
-| <tbody>
-| <tr>
-| <p>
-
-#data
-<frameset>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-Line: 1 Col: 10 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <frameset>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests10.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests10.dat
deleted file mode 100644
index 4f8df86f2..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests10.dat
+++ /dev/null
@@ -1,799 +0,0 @@
-#data
-<!DOCTYPE html><svg></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-
-#data
-<!DOCTYPE html><svg></svg><![CDATA[a]]>
-#errors
-29: Bogus comment
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <!-- [CDATA[a]] -->
-
-#data
-<!DOCTYPE html><body><svg></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-
-#data
-<!DOCTYPE html><body><select><svg></svg></select>
-#errors
-35: Stray “svg” start tag.
-42: Stray end tag “svg”
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!DOCTYPE html><body><select><option><svg></svg></option></select>
-#errors
-43: Stray “svg” start tag.
-50: Stray end tag “svg”
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-
-#data
-<!DOCTYPE html><body><table><svg></svg></table>
-#errors
-34: Start tag “svg” seen in “table”.
-41: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <table>
-
-#data
-<!DOCTYPE html><body><table><svg><g>foo</g></svg></table>
-#errors
-34: Start tag “svg” seen in “table”.
-46: Stray end tag “g”.
-53: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg g>
-| "foo"
-| <table>
-
-#data
-<!DOCTYPE html><body><table><svg><g>foo</g><g>bar</g></svg></table>
-#errors
-34: Start tag “svg” seen in “table”.
-46: Stray end tag “g”.
-58: Stray end tag “g”.
-65: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <table>
-
-#data
-<!DOCTYPE html><body><table><tbody><svg><g>foo</g><g>bar</g></svg></tbody></table>
-#errors
-41: Start tag “svg” seen in “table”.
-53: Stray end tag “g”.
-65: Stray end tag “g”.
-72: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <table>
-| <tbody>
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><svg><g>foo</g><g>bar</g></svg></tr></tbody></table>
-#errors
-45: Start tag “svg” seen in “table”.
-57: Stray end tag “g”.
-69: Stray end tag “g”.
-76: Stray end tag “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><td><svg><g>foo</g><g>bar</g></svg></td></tr></tbody></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><td><svg><g>foo</g><g>bar</g></svg><p>baz</td></tr></tbody></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <p>
-| "baz"
-
-#data
-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g></svg><p>baz</caption></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <p>
-| "baz"
-
-#data
-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
-#errors
-70: HTML start tag “p” in a foreign namespace context.
-81: “table” closed but “caption” was still open.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <p>
-| "baz"
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g>baz</table><p>quux
-#errors
-78: “table” closed but “caption” was still open.
-78: Unclosed elements on stack.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| "baz"
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body><table><colgroup><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
-#errors
-44: Start tag “svg” seen in “table”.
-56: Stray end tag “g”.
-68: Stray end tag “g”.
-71: HTML start tag “p” in a foreign namespace context.
-71: Start tag “p” seen in “table”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <p>
-| "baz"
-| <table>
-| <colgroup>
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body><table><tr><td><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
-#errors
-50: Stray “svg” start tag.
-54: Stray “g” start tag.
-62: Stray end tag “g”
-66: Stray “g” start tag.
-74: Stray end tag “g”
-77: Stray “p” start tag.
-88: “table” end tag with “select” open.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <select>
-| "foobarbaz"
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body><table><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux
-#errors
-36: Start tag “select” seen in “table”.
-42: Stray “svg” start tag.
-46: Stray “g” start tag.
-54: Stray end tag “g”
-58: Stray “g” start tag.
-66: Stray end tag “g”
-69: Stray “p” start tag.
-80: “table” end tag with “select” open.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| "foobarbaz"
-| <table>
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body></body></html><svg><g>foo</g><g>bar</g><p>baz
-#errors
-41: Stray “svg” start tag.
-68: HTML start tag “p” in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <p>
-| "baz"
-
-#data
-<!DOCTYPE html><body></body><svg><g>foo</g><g>bar</g><p>baz
-#errors
-34: Stray “svg” start tag.
-61: HTML start tag “p” in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg g>
-| "foo"
-| <svg g>
-| "bar"
-| <p>
-| "baz"
-
-#data
-<!DOCTYPE html><frameset><svg><g></g><g></g><p><span>
-#errors
-31: Stray “svg” start tag.
-35: Stray “g” start tag.
-40: Stray end tag “g”
-44: Stray “g” start tag.
-49: Stray end tag “g”
-52: Stray “p” start tag.
-58: Stray “span” start tag.
-58: End of file seen and there were open elements.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!DOCTYPE html><frameset></frameset><svg><g></g><g></g><p><span>
-#errors
-42: Stray “svg” start tag.
-46: Stray “g” start tag.
-51: Stray end tag “g”
-55: Stray “g” start tag.
-60: Stray end tag “g”
-63: Stray “p” start tag.
-69: Stray “span” start tag.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!DOCTYPE html><body xlink:href=foo><svg xlink:href=foo></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| xlink:href="foo"
-| <svg svg>
-| xlink href="foo"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo></g></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| xlink:href="foo"
-| xml:lang="en"
-| <svg svg>
-| <svg g>
-| xlink href="foo"
-| xml lang="en"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo /></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| xlink:href="foo"
-| xml:lang="en"
-| <svg svg>
-| <svg g>
-| xlink href="foo"
-| xml lang="en"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo />bar</svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| xlink:href="foo"
-| xml:lang="en"
-| <svg svg>
-| <svg g>
-| xlink href="foo"
-| xml lang="en"
-| "bar"
-
-#data
-<svg></path>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-
-#data
-<div><svg></div>a
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <svg svg>
-| "a"
-
-#data
-<div><svg><path></div>a
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <svg svg>
-| <svg path>
-| "a"
-
-#data
-<div><svg><path></svg><path>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <svg svg>
-| <svg path>
-| <path>
-
-#data
-<div><svg><path><foreignObject><math></div>a
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <svg svg>
-| <svg path>
-| <svg foreignObject>
-| <math math>
-| "a"
-
-#data
-<div><svg><path><foreignObject><p></div>a
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <svg svg>
-| <svg path>
-| <svg foreignObject>
-| <p>
-| "a"
-
-#data
-<!DOCTYPE html><svg><desc><div><svg><ul>a
-#errors
-40: HTML start tag “ul” in a foreign namespace context.
-41: End of file in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg desc>
-| <div>
-| <svg svg>
-| <ul>
-| "a"
-
-#data
-<!DOCTYPE html><svg><desc><svg><ul>a
-#errors
-35: HTML start tag “ul” in a foreign namespace context.
-36: End of file in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg desc>
-| <svg svg>
-| <ul>
-| "a"
-
-#data
-<!DOCTYPE html><p><svg><desc><p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <svg svg>
-| <svg desc>
-| <p>
-
-#data
-<!DOCTYPE html><p><svg><title><p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <svg svg>
-| <svg title>
-| <p>
-
-#data
-<div><svg><path><foreignObject><p></foreignObject><p>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <svg svg>
-| <svg path>
-| <svg foreignObject>
-| <p>
-| <p>
-
-#data
-<math><mi><div><object><div><span></span></div></object></div></mi><mi>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| <div>
-| <object>
-| <div>
-| <span>
-| <math mi>
-
-#data
-<math><mi><svg><foreignObject><div><div></div></div></foreignObject></svg></mi><mi>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| <svg svg>
-| <svg foreignObject>
-| <div>
-| <div>
-| <math mi>
-
-#data
-<svg><script></script><path>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg script>
-| <svg path>
-
-#data
-<table><svg></svg><tr>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<math><mi><mglyph>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| <math mglyph>
-
-#data
-<math><mi><malignmark>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| <math malignmark>
-
-#data
-<math><mo><mglyph>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mo>
-| <math mglyph>
-
-#data
-<math><mo><malignmark>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mo>
-| <math malignmark>
-
-#data
-<math><mn><mglyph>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mn>
-| <math mglyph>
-
-#data
-<math><mn><malignmark>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mn>
-| <math malignmark>
-
-#data
-<math><ms><mglyph>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math ms>
-| <math mglyph>
-
-#data
-<math><ms><malignmark>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math ms>
-| <math malignmark>
-
-#data
-<math><mtext><mglyph>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mtext>
-| <math mglyph>
-
-#data
-<math><mtext><malignmark>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mtext>
-| <math malignmark>
-
-#data
-<math><annotation-xml><svg></svg></annotation-xml><mi>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| <svg svg>
-| <math mi>
-
-#data
-<math><annotation-xml><svg><foreignObject><div><math><mi></mi></math><span></span></div></foreignObject><path></path></svg></annotation-xml><mi>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| <svg svg>
-| <svg foreignObject>
-| <div>
-| <math math>
-| <math mi>
-| <span>
-| <svg path>
-| <math mi>
-
-#data
-<math><annotation-xml><svg><foreignObject><math><mi><svg></svg></mi><mo></mo></math><span></span></foreignObject><path></path></svg></annotation-xml><mi>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| <svg svg>
-| <svg foreignObject>
-| <math math>
-| <math mi>
-| <svg svg>
-| <math mo>
-| <span>
-| <svg path>
-| <math mi>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests11.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests11.dat
deleted file mode 100644
index 638cde479..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests11.dat
+++ /dev/null
@@ -1,482 +0,0 @@
-#data
-<!DOCTYPE html><body><svg attributeName='' attributeType='' baseFrequency='' baseProfile='' calcMode='' clipPathUnits='' contentScriptType='' contentStyleType='' diffuseConstant='' edgeMode='' externalResourcesRequired='' filterRes='' filterUnits='' glyphRef='' gradientTransform='' gradientUnits='' kernelMatrix='' kernelUnitLength='' keyPoints='' keySplines='' keyTimes='' lengthAdjust='' limitingConeAngle='' markerHeight='' markerUnits='' markerWidth='' maskContentUnits='' maskUnits='' numOctaves='' pathLength='' patternContentUnits='' patternTransform='' patternUnits='' pointsAtX='' pointsAtY='' pointsAtZ='' preserveAlpha='' preserveAspectRatio='' primitiveUnits='' refX='' refY='' repeatCount='' repeatDur='' requiredExtensions='' requiredFeatures='' specularConstant='' specularExponent='' spreadMethod='' startOffset='' stdDeviation='' stitchTiles='' surfaceScale='' systemLanguage='' tableValues='' targetX='' targetY='' textLength='' viewBox='' viewTarget='' xChannelSelector='' yChannelSelector='' zoomAndPan=''></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| attributeName=""
-| attributeType=""
-| baseFrequency=""
-| baseProfile=""
-| calcMode=""
-| clipPathUnits=""
-| contentScriptType=""
-| contentStyleType=""
-| diffuseConstant=""
-| edgeMode=""
-| externalResourcesRequired=""
-| filterRes=""
-| filterUnits=""
-| glyphRef=""
-| gradientTransform=""
-| gradientUnits=""
-| kernelMatrix=""
-| kernelUnitLength=""
-| keyPoints=""
-| keySplines=""
-| keyTimes=""
-| lengthAdjust=""
-| limitingConeAngle=""
-| markerHeight=""
-| markerUnits=""
-| markerWidth=""
-| maskContentUnits=""
-| maskUnits=""
-| numOctaves=""
-| pathLength=""
-| patternContentUnits=""
-| patternTransform=""
-| patternUnits=""
-| pointsAtX=""
-| pointsAtY=""
-| pointsAtZ=""
-| preserveAlpha=""
-| preserveAspectRatio=""
-| primitiveUnits=""
-| refX=""
-| refY=""
-| repeatCount=""
-| repeatDur=""
-| requiredExtensions=""
-| requiredFeatures=""
-| specularConstant=""
-| specularExponent=""
-| spreadMethod=""
-| startOffset=""
-| stdDeviation=""
-| stitchTiles=""
-| surfaceScale=""
-| systemLanguage=""
-| tableValues=""
-| targetX=""
-| targetY=""
-| textLength=""
-| viewBox=""
-| viewTarget=""
-| xChannelSelector=""
-| yChannelSelector=""
-| zoomAndPan=""
-
-#data
-<!DOCTYPE html><BODY><SVG ATTRIBUTENAME='' ATTRIBUTETYPE='' BASEFREQUENCY='' BASEPROFILE='' CALCMODE='' CLIPPATHUNITS='' CONTENTSCRIPTTYPE='' CONTENTSTYLETYPE='' DIFFUSECONSTANT='' EDGEMODE='' EXTERNALRESOURCESREQUIRED='' FILTERRES='' FILTERUNITS='' GLYPHREF='' GRADIENTTRANSFORM='' GRADIENTUNITS='' KERNELMATRIX='' KERNELUNITLENGTH='' KEYPOINTS='' KEYSPLINES='' KEYTIMES='' LENGTHADJUST='' LIMITINGCONEANGLE='' MARKERHEIGHT='' MARKERUNITS='' MARKERWIDTH='' MASKCONTENTUNITS='' MASKUNITS='' NUMOCTAVES='' PATHLENGTH='' PATTERNCONTENTUNITS='' PATTERNTRANSFORM='' PATTERNUNITS='' POINTSATX='' POINTSATY='' POINTSATZ='' PRESERVEALPHA='' PRESERVEASPECTRATIO='' PRIMITIVEUNITS='' REFX='' REFY='' REPEATCOUNT='' REPEATDUR='' REQUIREDEXTENSIONS='' REQUIREDFEATURES='' SPECULARCONSTANT='' SPECULAREXPONENT='' SPREADMETHOD='' STARTOFFSET='' STDDEVIATION='' STITCHTILES='' SURFACESCALE='' SYSTEMLANGUAGE='' TABLEVALUES='' TARGETX='' TARGETY='' TEXTLENGTH='' VIEWBOX='' VIEWTARGET='' XCHANNELSELECTOR='' YCHANNELSELECTOR='' ZOOMANDPAN=''></SVG>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| attributeName=""
-| attributeType=""
-| baseFrequency=""
-| baseProfile=""
-| calcMode=""
-| clipPathUnits=""
-| contentScriptType=""
-| contentStyleType=""
-| diffuseConstant=""
-| edgeMode=""
-| externalResourcesRequired=""
-| filterRes=""
-| filterUnits=""
-| glyphRef=""
-| gradientTransform=""
-| gradientUnits=""
-| kernelMatrix=""
-| kernelUnitLength=""
-| keyPoints=""
-| keySplines=""
-| keyTimes=""
-| lengthAdjust=""
-| limitingConeAngle=""
-| markerHeight=""
-| markerUnits=""
-| markerWidth=""
-| maskContentUnits=""
-| maskUnits=""
-| numOctaves=""
-| pathLength=""
-| patternContentUnits=""
-| patternTransform=""
-| patternUnits=""
-| pointsAtX=""
-| pointsAtY=""
-| pointsAtZ=""
-| preserveAlpha=""
-| preserveAspectRatio=""
-| primitiveUnits=""
-| refX=""
-| refY=""
-| repeatCount=""
-| repeatDur=""
-| requiredExtensions=""
-| requiredFeatures=""
-| specularConstant=""
-| specularExponent=""
-| spreadMethod=""
-| startOffset=""
-| stdDeviation=""
-| stitchTiles=""
-| surfaceScale=""
-| systemLanguage=""
-| tableValues=""
-| targetX=""
-| targetY=""
-| textLength=""
-| viewBox=""
-| viewTarget=""
-| xChannelSelector=""
-| yChannelSelector=""
-| zoomAndPan=""
-
-#data
-<!DOCTYPE html><body><svg attributename='' attributetype='' basefrequency='' baseprofile='' calcmode='' clippathunits='' contentscripttype='' contentstyletype='' diffuseconstant='' edgemode='' externalresourcesrequired='' filterres='' filterunits='' glyphref='' gradienttransform='' gradientunits='' kernelmatrix='' kernelunitlength='' keypoints='' keysplines='' keytimes='' lengthadjust='' limitingconeangle='' markerheight='' markerunits='' markerwidth='' maskcontentunits='' maskunits='' numoctaves='' pathlength='' patterncontentunits='' patterntransform='' patternunits='' pointsatx='' pointsaty='' pointsatz='' preservealpha='' preserveaspectratio='' primitiveunits='' refx='' refy='' repeatcount='' repeatdur='' requiredextensions='' requiredfeatures='' specularconstant='' specularexponent='' spreadmethod='' startoffset='' stddeviation='' stitchtiles='' surfacescale='' systemlanguage='' tablevalues='' targetx='' targety='' textlength='' viewbox='' viewtarget='' xchannelselector='' ychannelselector='' zoomandpan=''></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| attributeName=""
-| attributeType=""
-| baseFrequency=""
-| baseProfile=""
-| calcMode=""
-| clipPathUnits=""
-| contentScriptType=""
-| contentStyleType=""
-| diffuseConstant=""
-| edgeMode=""
-| externalResourcesRequired=""
-| filterRes=""
-| filterUnits=""
-| glyphRef=""
-| gradientTransform=""
-| gradientUnits=""
-| kernelMatrix=""
-| kernelUnitLength=""
-| keyPoints=""
-| keySplines=""
-| keyTimes=""
-| lengthAdjust=""
-| limitingConeAngle=""
-| markerHeight=""
-| markerUnits=""
-| markerWidth=""
-| maskContentUnits=""
-| maskUnits=""
-| numOctaves=""
-| pathLength=""
-| patternContentUnits=""
-| patternTransform=""
-| patternUnits=""
-| pointsAtX=""
-| pointsAtY=""
-| pointsAtZ=""
-| preserveAlpha=""
-| preserveAspectRatio=""
-| primitiveUnits=""
-| refX=""
-| refY=""
-| repeatCount=""
-| repeatDur=""
-| requiredExtensions=""
-| requiredFeatures=""
-| specularConstant=""
-| specularExponent=""
-| spreadMethod=""
-| startOffset=""
-| stdDeviation=""
-| stitchTiles=""
-| surfaceScale=""
-| systemLanguage=""
-| tableValues=""
-| targetX=""
-| targetY=""
-| textLength=""
-| viewBox=""
-| viewTarget=""
-| xChannelSelector=""
-| yChannelSelector=""
-| zoomAndPan=""
-
-#data
-<!DOCTYPE html><body><math attributeName='' attributeType='' baseFrequency='' baseProfile='' calcMode='' clipPathUnits='' contentScriptType='' contentStyleType='' diffuseConstant='' edgeMode='' externalResourcesRequired='' filterRes='' filterUnits='' glyphRef='' gradientTransform='' gradientUnits='' kernelMatrix='' kernelUnitLength='' keyPoints='' keySplines='' keyTimes='' lengthAdjust='' limitingConeAngle='' markerHeight='' markerUnits='' markerWidth='' maskContentUnits='' maskUnits='' numOctaves='' pathLength='' patternContentUnits='' patternTransform='' patternUnits='' pointsAtX='' pointsAtY='' pointsAtZ='' preserveAlpha='' preserveAspectRatio='' primitiveUnits='' refX='' refY='' repeatCount='' repeatDur='' requiredExtensions='' requiredFeatures='' specularConstant='' specularExponent='' spreadMethod='' startOffset='' stdDeviation='' stitchTiles='' surfaceScale='' systemLanguage='' tableValues='' targetX='' targetY='' textLength='' viewBox='' viewTarget='' xChannelSelector='' yChannelSelector='' zoomAndPan=''></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| attributename=""
-| attributetype=""
-| basefrequency=""
-| baseprofile=""
-| calcmode=""
-| clippathunits=""
-| contentscripttype=""
-| contentstyletype=""
-| diffuseconstant=""
-| edgemode=""
-| externalresourcesrequired=""
-| filterres=""
-| filterunits=""
-| glyphref=""
-| gradienttransform=""
-| gradientunits=""
-| kernelmatrix=""
-| kernelunitlength=""
-| keypoints=""
-| keysplines=""
-| keytimes=""
-| lengthadjust=""
-| limitingconeangle=""
-| markerheight=""
-| markerunits=""
-| markerwidth=""
-| maskcontentunits=""
-| maskunits=""
-| numoctaves=""
-| pathlength=""
-| patterncontentunits=""
-| patterntransform=""
-| patternunits=""
-| pointsatx=""
-| pointsaty=""
-| pointsatz=""
-| preservealpha=""
-| preserveaspectratio=""
-| primitiveunits=""
-| refx=""
-| refy=""
-| repeatcount=""
-| repeatdur=""
-| requiredextensions=""
-| requiredfeatures=""
-| specularconstant=""
-| specularexponent=""
-| spreadmethod=""
-| startoffset=""
-| stddeviation=""
-| stitchtiles=""
-| surfacescale=""
-| systemlanguage=""
-| tablevalues=""
-| targetx=""
-| targety=""
-| textlength=""
-| viewbox=""
-| viewtarget=""
-| xchannelselector=""
-| ychannelselector=""
-| zoomandpan=""
-
-#data
-<!DOCTYPE html><body><svg><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg altGlyph>
-| <svg altGlyphDef>
-| <svg altGlyphItem>
-| <svg animateColor>
-| <svg animateMotion>
-| <svg animateTransform>
-| <svg clipPath>
-| <svg feBlend>
-| <svg feColorMatrix>
-| <svg feComponentTransfer>
-| <svg feComposite>
-| <svg feConvolveMatrix>
-| <svg feDiffuseLighting>
-| <svg feDisplacementMap>
-| <svg feDistantLight>
-| <svg feFlood>
-| <svg feFuncA>
-| <svg feFuncB>
-| <svg feFuncG>
-| <svg feFuncR>
-| <svg feGaussianBlur>
-| <svg feImage>
-| <svg feMerge>
-| <svg feMergeNode>
-| <svg feMorphology>
-| <svg feOffset>
-| <svg fePointLight>
-| <svg feSpecularLighting>
-| <svg feSpotLight>
-| <svg feTile>
-| <svg feTurbulence>
-| <svg foreignObject>
-| <svg glyphRef>
-| <svg linearGradient>
-| <svg radialGradient>
-| <svg textPath>
-
-#data
-<!DOCTYPE html><body><svg><altglyph /><altglyphdef /><altglyphitem /><animatecolor /><animatemotion /><animatetransform /><clippath /><feblend /><fecolormatrix /><fecomponenttransfer /><fecomposite /><feconvolvematrix /><fediffuselighting /><fedisplacementmap /><fedistantlight /><feflood /><fefunca /><fefuncb /><fefuncg /><fefuncr /><fegaussianblur /><feimage /><femerge /><femergenode /><femorphology /><feoffset /><fepointlight /><fespecularlighting /><fespotlight /><fetile /><feturbulence /><foreignobject /><glyphref /><lineargradient /><radialgradient /><textpath /></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg altGlyph>
-| <svg altGlyphDef>
-| <svg altGlyphItem>
-| <svg animateColor>
-| <svg animateMotion>
-| <svg animateTransform>
-| <svg clipPath>
-| <svg feBlend>
-| <svg feColorMatrix>
-| <svg feComponentTransfer>
-| <svg feComposite>
-| <svg feConvolveMatrix>
-| <svg feDiffuseLighting>
-| <svg feDisplacementMap>
-| <svg feDistantLight>
-| <svg feFlood>
-| <svg feFuncA>
-| <svg feFuncB>
-| <svg feFuncG>
-| <svg feFuncR>
-| <svg feGaussianBlur>
-| <svg feImage>
-| <svg feMerge>
-| <svg feMergeNode>
-| <svg feMorphology>
-| <svg feOffset>
-| <svg fePointLight>
-| <svg feSpecularLighting>
-| <svg feSpotLight>
-| <svg feTile>
-| <svg feTurbulence>
-| <svg foreignObject>
-| <svg glyphRef>
-| <svg linearGradient>
-| <svg radialGradient>
-| <svg textPath>
-
-#data
-<!DOCTYPE html><BODY><SVG><ALTGLYPH /><ALTGLYPHDEF /><ALTGLYPHITEM /><ANIMATECOLOR /><ANIMATEMOTION /><ANIMATETRANSFORM /><CLIPPATH /><FEBLEND /><FECOLORMATRIX /><FECOMPONENTTRANSFER /><FECOMPOSITE /><FECONVOLVEMATRIX /><FEDIFFUSELIGHTING /><FEDISPLACEMENTMAP /><FEDISTANTLIGHT /><FEFLOOD /><FEFUNCA /><FEFUNCB /><FEFUNCG /><FEFUNCR /><FEGAUSSIANBLUR /><FEIMAGE /><FEMERGE /><FEMERGENODE /><FEMORPHOLOGY /><FEOFFSET /><FEPOINTLIGHT /><FESPECULARLIGHTING /><FESPOTLIGHT /><FETILE /><FETURBULENCE /><FOREIGNOBJECT /><GLYPHREF /><LINEARGRADIENT /><RADIALGRADIENT /><TEXTPATH /></SVG>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg altGlyph>
-| <svg altGlyphDef>
-| <svg altGlyphItem>
-| <svg animateColor>
-| <svg animateMotion>
-| <svg animateTransform>
-| <svg clipPath>
-| <svg feBlend>
-| <svg feColorMatrix>
-| <svg feComponentTransfer>
-| <svg feComposite>
-| <svg feConvolveMatrix>
-| <svg feDiffuseLighting>
-| <svg feDisplacementMap>
-| <svg feDistantLight>
-| <svg feFlood>
-| <svg feFuncA>
-| <svg feFuncB>
-| <svg feFuncG>
-| <svg feFuncR>
-| <svg feGaussianBlur>
-| <svg feImage>
-| <svg feMerge>
-| <svg feMergeNode>
-| <svg feMorphology>
-| <svg feOffset>
-| <svg fePointLight>
-| <svg feSpecularLighting>
-| <svg feSpotLight>
-| <svg feTile>
-| <svg feTurbulence>
-| <svg foreignObject>
-| <svg glyphRef>
-| <svg linearGradient>
-| <svg radialGradient>
-| <svg textPath>
-
-#data
-<!DOCTYPE html><body><math><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math altglyph>
-| <math altglyphdef>
-| <math altglyphitem>
-| <math animatecolor>
-| <math animatemotion>
-| <math animatetransform>
-| <math clippath>
-| <math feblend>
-| <math fecolormatrix>
-| <math fecomponenttransfer>
-| <math fecomposite>
-| <math feconvolvematrix>
-| <math fediffuselighting>
-| <math fedisplacementmap>
-| <math fedistantlight>
-| <math feflood>
-| <math fefunca>
-| <math fefuncb>
-| <math fefuncg>
-| <math fefuncr>
-| <math fegaussianblur>
-| <math feimage>
-| <math femerge>
-| <math femergenode>
-| <math femorphology>
-| <math feoffset>
-| <math fepointlight>
-| <math fespecularlighting>
-| <math fespotlight>
-| <math fetile>
-| <math feturbulence>
-| <math foreignobject>
-| <math glyphref>
-| <math lineargradient>
-| <math radialgradient>
-| <math textpath>
-
-#data
-<!DOCTYPE html><body><svg><solidColor /></svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg solidcolor>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests12.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests12.dat
deleted file mode 100644
index 63107d277..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests12.dat
+++ /dev/null
@@ -1,62 +0,0 @@
-#data
-<!DOCTYPE html><body><p>foo<math><mtext><i>baz</i></mtext><annotation-xml><svg><desc><b>eggs</b></desc><g><foreignObject><P>spam<TABLE><tr><td><img></td></table></foreignObject></g><g>quux</g></svg></annotation-xml></math>bar
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| "foo"
-| <math math>
-| <math mtext>
-| <i>
-| "baz"
-| <math annotation-xml>
-| <svg svg>
-| <svg desc>
-| <b>
-| "eggs"
-| <svg g>
-| <svg foreignObject>
-| <p>
-| "spam"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <img>
-| <svg g>
-| "quux"
-| "bar"
-
-#data
-<!DOCTYPE html><body>foo<math><mtext><i>baz</i></mtext><annotation-xml><svg><desc><b>eggs</b></desc><g><foreignObject><P>spam<TABLE><tr><td><img></td></table></foreignObject></g><g>quux</g></svg></annotation-xml></math>bar
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "foo"
-| <math math>
-| <math mtext>
-| <i>
-| "baz"
-| <math annotation-xml>
-| <svg svg>
-| <svg desc>
-| <b>
-| "eggs"
-| <svg g>
-| <svg foreignObject>
-| <p>
-| "spam"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <img>
-| <svg g>
-| "quux"
-| "bar"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests14.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests14.dat
deleted file mode 100644
index b8713f885..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests14.dat
+++ /dev/null
@@ -1,74 +0,0 @@
-#data
-<!DOCTYPE html><html><body><xyz:abc></xyz:abc>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <xyz:abc>
-
-#data
-<!DOCTYPE html><html><body><xyz:abc></xyz:abc><span></span>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <xyz:abc>
-| <span>
-
-#data
-<!DOCTYPE html><html><html abc:def=gh><xyz:abc></xyz:abc>
-#errors
-15: Unexpected start tag html
-#document
-| <!DOCTYPE html>
-| <html>
-| abc:def="gh"
-| <head>
-| <body>
-| <xyz:abc>
-
-#data
-<!DOCTYPE html><html xml:lang=bar><html xml:lang=foo>
-#errors
-15: Unexpected start tag html
-#document
-| <!DOCTYPE html>
-| <html>
-| xml:lang="bar"
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><html 123=456>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| 123="456"
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><html 123=456><html 789=012>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| 123="456"
-| 789="012"
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><html><body 789=012>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| 789="012"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests15.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests15.dat
deleted file mode 100644
index 6ce1c0d16..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests15.dat
+++ /dev/null
@@ -1,208 +0,0 @@
-#data
-<!DOCTYPE html><p><b><i><u></p> <p>X
-#errors
-Line: 1 Col: 31 Unexpected end tag (p). Ignored.
-Line: 1 Col: 36 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <b>
-| <i>
-| <u>
-| <b>
-| <i>
-| <u>
-| " "
-| <p>
-| "X"
-
-#data
-<p><b><i><u></p>
-<p>X
-#errors
-Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE.
-Line: 1 Col: 16 Unexpected end tag (p). Ignored.
-Line: 2 Col: 4 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <b>
-| <i>
-| <u>
-| <b>
-| <i>
-| <u>
-| "
-"
-| <p>
-| "X"
-
-#data
-<!doctype html></html> <head>
-#errors
-Line: 1 Col: 22 Unexpected end tag (html) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| " "
-
-#data
-<!doctype html></body><meta>
-#errors
-Line: 1 Col: 22 Unexpected end tag (body) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <meta>
-
-#data
-<html></html><!-- foo -->
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end tag (html) after the (implied) root element.
-#document
-| <html>
-| <head>
-| <body>
-| <!-- foo -->
-
-#data
-<!doctype html></body><title>X</title>
-#errors
-Line: 1 Col: 22 Unexpected end tag (body) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <title>
-| "X"
-
-#data
-<!doctype html><table> X<meta></table>
-#errors
-Line: 1 Col: 24 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 30 Unexpected start tag (meta) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| " X"
-| <meta>
-| <table>
-
-#data
-<!doctype html><table> x</table>
-#errors
-Line: 1 Col: 24 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| " x"
-| <table>
-
-#data
-<!doctype html><table> x </table>
-#errors
-Line: 1 Col: 25 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| " x "
-| <table>
-
-#data
-<!doctype html><table><tr> x</table>
-#errors
-Line: 1 Col: 28 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| " x"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!doctype html><table>X<style> <tr>x </style> </table>
-#errors
-Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "X"
-| <table>
-| <style>
-| " <tr>x "
-| " "
-
-#data
-<!doctype html><div><table><a>foo</a> <tr><td>bar</td> </tr></table></div>
-#errors
-Line: 1 Col: 30 Unexpected start tag (a) in table context caused voodoo mode.
-Line: 1 Col: 37 Unexpected end tag (a) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <div>
-| <a>
-| "foo"
-| <table>
-| " "
-| <tbody>
-| <tr>
-| <td>
-| "bar"
-| " "
-
-#data
-<frame></frame></frame><frameset><frame><frameset><frame></frameset><noframes></frameset><noframes>
-#errors
-6: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-13: Stray start tag “frame”.
-21: Stray end tag “frame”.
-29: Stray end tag “frame”.
-39: “frameset” start tag after “body” already open.
-105: End of file seen inside an [R]CDATA element.
-105: End of file seen and there were open elements.
-XXX: These errors are wrong, please fix me!
-#document
-| <html>
-| <head>
-| <frameset>
-| <frame>
-| <frameset>
-| <frame>
-| <noframes>
-| "</frameset><noframes>"
-
-#data
-<!DOCTYPE html><object></html>
-#errors
-1: Expected closing tag. Unexpected end of file
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <object>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests16.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests16.dat
deleted file mode 100644
index c8ef66f0e..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests16.dat
+++ /dev/null
@@ -1,2299 +0,0 @@
-#data
-<!doctype html><script>
-#errors
-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| <body>
-
-#data
-<!doctype html><script>a
-#errors
-Line: 1 Col: 24 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "a"
-| <body>
-
-#data
-<!doctype html><script><
-#errors
-Line: 1 Col: 24 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<"
-| <body>
-
-#data
-<!doctype html><script></
-#errors
-Line: 1 Col: 25 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</"
-| <body>
-
-#data
-<!doctype html><script></S
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</S"
-| <body>
-
-#data
-<!doctype html><script></SC
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</SC"
-| <body>
-
-#data
-<!doctype html><script></SCR
-#errors
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</SCR"
-| <body>
-
-#data
-<!doctype html><script></SCRI
-#errors
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</SCRI"
-| <body>
-
-#data
-<!doctype html><script></SCRIP
-#errors
-Line: 1 Col: 30 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</SCRIP"
-| <body>
-
-#data
-<!doctype html><script></SCRIPT
-#errors
-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</SCRIPT"
-| <body>
-
-#data
-<!doctype html><script></SCRIPT
-#errors
-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| <body>
-
-#data
-<!doctype html><script></s
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</s"
-| <body>
-
-#data
-<!doctype html><script></sc
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</sc"
-| <body>
-
-#data
-<!doctype html><script></scr
-#errors
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</scr"
-| <body>
-
-#data
-<!doctype html><script></scri
-#errors
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</scri"
-| <body>
-
-#data
-<!doctype html><script></scrip
-#errors
-Line: 1 Col: 30 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</scrip"
-| <body>
-
-#data
-<!doctype html><script></script
-#errors
-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "</script"
-| <body>
-
-#data
-<!doctype html><script></script
-#errors
-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| <body>
-
-#data
-<!doctype html><script><!
-#errors
-Line: 1 Col: 25 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!"
-| <body>
-
-#data
-<!doctype html><script><!a
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!a"
-| <body>
-
-#data
-<!doctype html><script><!-
-#errors
-Line: 1 Col: 26 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!-"
-| <body>
-
-#data
-<!doctype html><script><!-a
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!-a"
-| <body>
-
-#data
-<!doctype html><script><!--
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--"
-| <body>
-
-#data
-<!doctype html><script><!--a
-#errors
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--a"
-| <body>
-
-#data
-<!doctype html><script><!--<
-#errors
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<"
-| <body>
-
-#data
-<!doctype html><script><!--<a
-#errors
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<a"
-| <body>
-
-#data
-<!doctype html><script><!--</
-#errors
-Line: 1 Col: 27 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--</"
-| <body>
-
-#data
-<!doctype html><script><!--</script
-#errors
-Line: 1 Col: 35 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--</script"
-| <body>
-
-#data
-<!doctype html><script><!--</script
-#errors
-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--"
-| <body>
-
-#data
-<!doctype html><script><!--<s
-#errors
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<s"
-| <body>
-
-#data
-<!doctype html><script><!--<script
-#errors
-Line: 1 Col: 34 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script"
-| <body>
-
-#data
-<!doctype html><script><!--<script
-#errors
-Line: 1 Col: 35 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script "
-| <body>
-
-#data
-<!doctype html><script><!--<script <
-#errors
-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script <"
-| <body>
-
-#data
-<!doctype html><script><!--<script <a
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script <a"
-| <body>
-
-#data
-<!doctype html><script><!--<script </
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </"
-| <body>
-
-#data
-<!doctype html><script><!--<script </s
-#errors
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </s"
-| <body>
-
-#data
-<!doctype html><script><!--<script </script
-#errors
-Line: 1 Col: 43 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script"
-| <body>
-
-#data
-<!doctype html><script><!--<script </scripta
-#errors
-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </scripta"
-| <body>
-
-#data
-<!doctype html><script><!--<script </script
-#errors
-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script "
-| <body>
-
-#data
-<!doctype html><script><!--<script </script>
-#errors
-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script>"
-| <body>
-
-#data
-<!doctype html><script><!--<script </script/
-#errors
-Line: 1 Col: 44 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script/"
-| <body>
-
-#data
-<!doctype html><script><!--<script </script <
-#errors
-Line: 1 Col: 45 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script <"
-| <body>
-
-#data
-<!doctype html><script><!--<script </script <a
-#errors
-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script <a"
-| <body>
-
-#data
-<!doctype html><script><!--<script </script </
-#errors
-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script </"
-| <body>
-
-#data
-<!doctype html><script><!--<script </script </script
-#errors
-Line: 1 Col: 52 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script </script"
-| <body>
-
-#data
-<!doctype html><script><!--<script </script </script
-#errors
-Line: 1 Col: 53 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script "
-| <body>
-
-#data
-<!doctype html><script><!--<script </script </script/
-#errors
-Line: 1 Col: 53 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script "
-| <body>
-
-#data
-<!doctype html><script><!--<script </script </script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script </script "
-| <body>
-
-#data
-<!doctype html><script><!--<script -
-#errors
-Line: 1 Col: 36 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script -"
-| <body>
-
-#data
-<!doctype html><script><!--<script -a
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script -a"
-| <body>
-
-#data
-<!doctype html><script><!--<script -<
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script -<"
-| <body>
-
-#data
-<!doctype html><script><!--<script --
-#errors
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script --"
-| <body>
-
-#data
-<!doctype html><script><!--<script --a
-#errors
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script --a"
-| <body>
-
-#data
-<!doctype html><script><!--<script --<
-#errors
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script --<"
-| <body>
-
-#data
-<!doctype html><script><!--<script -->
-#errors
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script -->"
-| <body>
-
-#data
-<!doctype html><script><!--<script --><
-#errors
-Line: 1 Col: 39 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script --><"
-| <body>
-
-#data
-<!doctype html><script><!--<script --></
-#errors
-Line: 1 Col: 40 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script --></"
-| <body>
-
-#data
-<!doctype html><script><!--<script --></script
-#errors
-Line: 1 Col: 46 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script --></script"
-| <body>
-
-#data
-<!doctype html><script><!--<script --></script
-#errors
-Line: 1 Col: 47 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script -->"
-| <body>
-
-#data
-<!doctype html><script><!--<script --></script/
-#errors
-Line: 1 Col: 47 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script -->"
-| <body>
-
-#data
-<!doctype html><script><!--<script --></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script -->"
-| <body>
-
-#data
-<!doctype html><script><!--<script><\/script>--></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script><\/script>-->"
-| <body>
-
-#data
-<!doctype html><script><!--<script></scr'+'ipt>--></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script></scr'+'ipt>-->"
-| <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>"
-| <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>--><!--</script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>--><!--"
-| <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>-- ></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>-- >"
-| <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>- -></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>- ->"
-| <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>- - ></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>- - >"
-| <body>
-
-#data
-<!doctype html><script><!--<script></script><script></script>-></script>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>->"
-| <body>
-
-#data
-<!doctype html><script><!--<script>--!></script>X
-#errors
-Line: 1 Col: 49 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script>--!></script>X"
-| <body>
-
-#data
-<!doctype html><script><!--<scr'+'ipt></script>--></script>
-#errors
-Line: 1 Col: 59 Unexpected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<scr'+'ipt>"
-| <body>
-| "-->"
-
-#data
-<!doctype html><script><!--<script></scr'+'ipt></script>X
-#errors
-Line: 1 Col: 57 Unexpected end of file. Expected end tag (script).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "<!--<script></scr'+'ipt></script>X"
-| <body>
-
-#data
-<!doctype html><style><!--<style></style>--></style>
-#errors
-Line: 1 Col: 52 Unexpected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| "<!--<style>"
-| <body>
-| "-->"
-
-#data
-<!doctype html><style><!--</style>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| "<!--"
-| <body>
-| "X"
-
-#data
-<!doctype html><style><!--...</style>...--></style>
-#errors
-Line: 1 Col: 51 Unexpected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| "<!--..."
-| <body>
-| "...-->"
-
-#data
-<!doctype html><style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>"
-| <body>
-| "X"
-
-#data
-<!doctype html><style><!--...<style><!--...--!></style>--></style>
-#errors
-Line: 1 Col: 66 Unexpected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| "<!--...<style><!--...--!>"
-| <body>
-| "-->"
-
-#data
-<!doctype html><style><!--...</style><!-- --><style>@import ...</style>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| "<!--..."
-| <!-- -->
-| <style>
-| "@import ..."
-| <body>
-
-#data
-<!doctype html><style>...<style><!--...</style><!-- --></style>
-#errors
-Line: 1 Col: 63 Unexpected end tag (style).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| "...<style><!--..."
-| <!-- -->
-| <body>
-
-#data
-<!doctype html><style>...<!--[if IE]><style>...</style>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <style>
-| "...<!--[if IE]><style>..."
-| <body>
-| "X"
-
-#data
-<!doctype html><title><!--<title></title>--></title>
-#errors
-Line: 1 Col: 52 Unexpected end tag (title).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <title>
-| "<!--<title>"
-| <body>
-| "-->"
-
-#data
-<!doctype html><title>&lt;/title></title>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <title>
-| "</title>"
-| <body>
-
-#data
-<!doctype html><title>foo/title><link></head><body>X
-#errors
-Line: 1 Col: 52 Unexpected end of file. Expected end tag (title).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <title>
-| "foo/title><link></head><body>X"
-| <body>
-
-#data
-<!doctype html><noscript><!--<noscript></noscript>--></noscript>
-#errors
-Line: 1 Col: 64 Unexpected end tag (noscript).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <noscript>
-| "<!--<noscript>"
-| <body>
-| "-->"
-
-#data
-<!doctype html><noscript><!--</noscript>X<noscript>--></noscript>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <noscript>
-| "<!--"
-| <body>
-| "X"
-| <noscript>
-| "-->"
-
-#data
-<!doctype html><noscript><iframe></noscript>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <noscript>
-| "<iframe>"
-| <body>
-| "X"
-
-#data
-<!doctype html><noframes><!--<noframes></noframes>--></noframes>
-#errors
-Line: 1 Col: 64 Unexpected end tag (noframes).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <noframes>
-| "<!--<noframes>"
-| <body>
-| "-->"
-
-#data
-<!doctype html><noframes><body><script><!--...</script></body></noframes></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <noframes>
-| "<body><script><!--...</script></body>"
-| <body>
-
-#data
-<!doctype html><textarea><!--<textarea></textarea>--></textarea>
-#errors
-Line: 1 Col: 64 Unexpected end tag (textarea).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "<!--<textarea>"
-| "-->"
-
-#data
-<!doctype html><textarea>&lt;/textarea></textarea>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "</textarea>"
-
-#data
-<!doctype html><textarea>&lt;</textarea>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "<"
-
-#data
-<!doctype html><textarea>a&lt;b</textarea>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "a<b"
-
-#data
-<!doctype html><iframe><!--<iframe></iframe>--></iframe>
-#errors
-Line: 1 Col: 56 Unexpected end tag (iframe).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <iframe>
-| "<!--<iframe>"
-| "-->"
-
-#data
-<!doctype html><iframe>...<!--X->...<!--/X->...</iframe>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <iframe>
-| "...<!--X->...<!--/X->..."
-
-#data
-<!doctype html><xmp><!--<xmp></xmp>--></xmp>
-#errors
-Line: 1 Col: 44 Unexpected end tag (xmp).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <xmp>
-| "<!--<xmp>"
-| "-->"
-
-#data
-<!doctype html><noembed><!--<noembed></noembed>--></noembed>
-#errors
-Line: 1 Col: 60 Unexpected end tag (noembed).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <noembed>
-| "<!--<noembed>"
-| "-->"
-
-#data
-<script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 8 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| <body>
-
-#data
-<script>a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 9 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "a"
-| <body>
-
-#data
-<script><
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 9 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<"
-| <body>
-
-#data
-<script></
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 10 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</"
-| <body>
-
-#data
-<script></S
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</S"
-| <body>
-
-#data
-<script></SC
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 12 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</SC"
-| <body>
-
-#data
-<script></SCR
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</SCR"
-| <body>
-
-#data
-<script></SCRI
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</SCRI"
-| <body>
-
-#data
-<script></SCRIP
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 15 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</SCRIP"
-| <body>
-
-#data
-<script></SCRIPT
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 16 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</SCRIPT"
-| <body>
-
-#data
-<script></SCRIPT
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 17 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| <body>
-
-#data
-<script></s
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</s"
-| <body>
-
-#data
-<script></sc
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 12 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</sc"
-| <body>
-
-#data
-<script></scr
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</scr"
-| <body>
-
-#data
-<script></scri
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</scri"
-| <body>
-
-#data
-<script></scrip
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 15 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</scrip"
-| <body>
-
-#data
-<script></script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 16 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</script"
-| <body>
-
-#data
-<script></script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 17 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| <body>
-
-#data
-<script><!
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 10 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!"
-| <body>
-
-#data
-<script><!a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!a"
-| <body>
-
-#data
-<script><!-
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!-"
-| <body>
-
-#data
-<script><!-a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 12 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!-a"
-| <body>
-
-#data
-<script><!--
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 12 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--"
-| <body>
-
-#data
-<script><!--a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--a"
-| <body>
-
-#data
-<script><!--<
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<"
-| <body>
-
-#data
-<script><!--<a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<a"
-| <body>
-
-#data
-<script><!--</
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--</"
-| <body>
-
-#data
-<script><!--</script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--</script"
-| <body>
-
-#data
-<script><!--</script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 21 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--"
-| <body>
-
-#data
-<script><!--<s
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<s"
-| <body>
-
-#data
-<script><!--<script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 19 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script"
-| <body>
-
-#data
-<script><!--<script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script "
-| <body>
-
-#data
-<script><!--<script <
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 21 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script <"
-| <body>
-
-#data
-<script><!--<script <a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script <a"
-| <body>
-
-#data
-<script><!--<script </
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </"
-| <body>
-
-#data
-<script><!--<script </s
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </s"
-| <body>
-
-#data
-<script><!--<script </script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 28 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script"
-| <body>
-
-#data
-<script><!--<script </scripta
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </scripta"
-| <body>
-
-#data
-<script><!--<script </script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script "
-| <body>
-
-#data
-<script><!--<script </script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script>"
-| <body>
-
-#data
-<script><!--<script </script/
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 29 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script/"
-| <body>
-
-#data
-<script><!--<script </script <
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 30 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script <"
-| <body>
-
-#data
-<script><!--<script </script <a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script <a"
-| <body>
-
-#data
-<script><!--<script </script </
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script </"
-| <body>
-
-#data
-<script><!--<script </script </script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script </script"
-| <body>
-
-#data
-<script><!--<script </script </script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script "
-| <body>
-
-#data
-<script><!--<script </script </script/
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 38 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script "
-| <body>
-
-#data
-<script><!--<script </script </script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script </script "
-| <body>
-
-#data
-<script><!--<script -
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 21 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script -"
-| <body>
-
-#data
-<script><!--<script -a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script -a"
-| <body>
-
-#data
-<script><!--<script --
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script --"
-| <body>
-
-#data
-<script><!--<script --a
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script --a"
-| <body>
-
-#data
-<script><!--<script -->
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script -->"
-| <body>
-
-#data
-<script><!--<script --><
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 24 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script --><"
-| <body>
-
-#data
-<script><!--<script --></
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 25 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script --></"
-| <body>
-
-#data
-<script><!--<script --></script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 31 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script --></script"
-| <body>
-
-#data
-<script><!--<script --></script
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script -->"
-| <body>
-
-#data
-<script><!--<script --></script/
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 32 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script -->"
-| <body>
-
-#data
-<script><!--<script --></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script -->"
-| <body>
-
-#data
-<script><!--<script><\/script>--></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script><\/script>-->"
-| <body>
-
-#data
-<script><!--<script></scr'+'ipt>--></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script></scr'+'ipt>-->"
-| <body>
-
-#data
-<script><!--<script></script><script></script></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>"
-| <body>
-
-#data
-<script><!--<script></script><script></script>--><!--</script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>--><!--"
-| <body>
-
-#data
-<script><!--<script></script><script></script>-- ></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>-- >"
-| <body>
-
-#data
-<script><!--<script></script><script></script>- -></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>- ->"
-| <body>
-
-#data
-<script><!--<script></script><script></script>- - ></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>- - >"
-| <body>
-
-#data
-<script><!--<script></script><script></script>-></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script></script><script></script>->"
-| <body>
-
-#data
-<script><!--<script>--!></script>X
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 34 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script>--!></script>X"
-| <body>
-
-#data
-<script><!--<scr'+'ipt></script>--></script>
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 44 Unexpected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<scr'+'ipt>"
-| <body>
-| "-->"
-
-#data
-<script><!--<script></scr'+'ipt></script>X
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 42 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "<!--<script></scr'+'ipt></script>X"
-| <body>
-
-#data
-<style><!--<style></style>--></style>
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-Line: 1 Col: 37 Unexpected end tag (style).
-#document
-| <html>
-| <head>
-| <style>
-| "<!--<style>"
-| <body>
-| "-->"
-
-#data
-<style><!--</style>X
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <style>
-| "<!--"
-| <body>
-| "X"
-
-#data
-<style><!--...</style>...--></style>
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-Line: 1 Col: 36 Unexpected end tag (style).
-#document
-| <html>
-| <head>
-| <style>
-| "<!--..."
-| <body>
-| "...-->"
-
-#data
-<style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <style>
-| "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>"
-| <body>
-| "X"
-
-#data
-<style><!--...<style><!--...--!></style>--></style>
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-Line: 1 Col: 51 Unexpected end tag (style).
-#document
-| <html>
-| <head>
-| <style>
-| "<!--...<style><!--...--!>"
-| <body>
-| "-->"
-
-#data
-<style><!--...</style><!-- --><style>@import ...</style>
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <style>
-| "<!--..."
-| <!-- -->
-| <style>
-| "@import ..."
-| <body>
-
-#data
-<style>...<style><!--...</style><!-- --></style>
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-Line: 1 Col: 48 Unexpected end tag (style).
-#document
-| <html>
-| <head>
-| <style>
-| "...<style><!--..."
-| <!-- -->
-| <body>
-
-#data
-<style>...<!--[if IE]><style>...</style>X
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <style>
-| "...<!--[if IE]><style>..."
-| <body>
-| "X"
-
-#data
-<title><!--<title></title>--></title>
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-Line: 1 Col: 37 Unexpected end tag (title).
-#document
-| <html>
-| <head>
-| <title>
-| "<!--<title>"
-| <body>
-| "-->"
-
-#data
-<title>&lt;/title></title>
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <title>
-| "</title>"
-| <body>
-
-#data
-<title>foo/title><link></head><body>X
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-Line: 1 Col: 37 Unexpected end of file. Expected end tag (title).
-#document
-| <html>
-| <head>
-| <title>
-| "foo/title><link></head><body>X"
-| <body>
-
-#data
-<noscript><!--<noscript></noscript>--></noscript>
-#errors
-Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE.
-Line: 1 Col: 49 Unexpected end tag (noscript).
-#document
-| <html>
-| <head>
-| <noscript>
-| "<!--<noscript>"
-| <body>
-| "-->"
-
-#data
-<noscript><!--</noscript>X<noscript>--></noscript>
-#errors
-Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <noscript>
-| "<!--"
-| <body>
-| "X"
-| <noscript>
-| "-->"
-
-#data
-<noscript><iframe></noscript>X
-#errors
-Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <noscript>
-| "<iframe>"
-| <body>
-| "X"
-
-#data
-<noframes><!--<noframes></noframes>--></noframes>
-#errors
-Line: 1 Col: 10 Unexpected start tag (noframes). Expected DOCTYPE.
-Line: 1 Col: 49 Unexpected end tag (noframes).
-#document
-| <html>
-| <head>
-| <noframes>
-| "<!--<noframes>"
-| <body>
-| "-->"
-
-#data
-<noframes><body><script><!--...</script></body></noframes></html>
-#errors
-Line: 1 Col: 10 Unexpected start tag (noframes). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <noframes>
-| "<body><script><!--...</script></body>"
-| <body>
-
-#data
-<textarea><!--<textarea></textarea>--></textarea>
-#errors
-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
-Line: 1 Col: 49 Unexpected end tag (textarea).
-#document
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "<!--<textarea>"
-| "-->"
-
-#data
-<textarea>&lt;/textarea></textarea>
-#errors
-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "</textarea>"
-
-#data
-<iframe><!--<iframe></iframe>--></iframe>
-#errors
-Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE.
-Line: 1 Col: 41 Unexpected end tag (iframe).
-#document
-| <html>
-| <head>
-| <body>
-| <iframe>
-| "<!--<iframe>"
-| "-->"
-
-#data
-<iframe>...<!--X->...<!--/X->...</iframe>
-#errors
-Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <iframe>
-| "...<!--X->...<!--/X->..."
-
-#data
-<xmp><!--<xmp></xmp>--></xmp>
-#errors
-Line: 1 Col: 5 Unexpected start tag (xmp). Expected DOCTYPE.
-Line: 1 Col: 29 Unexpected end tag (xmp).
-#document
-| <html>
-| <head>
-| <body>
-| <xmp>
-| "<!--<xmp>"
-| "-->"
-
-#data
-<noembed><!--<noembed></noembed>--></noembed>
-#errors
-Line: 1 Col: 9 Unexpected start tag (noembed). Expected DOCTYPE.
-Line: 1 Col: 45 Unexpected end tag (noembed).
-#document
-| <html>
-| <head>
-| <body>
-| <noembed>
-| "<!--<noembed>"
-| "-->"
-
-#data
-<!doctype html><table>
-
-#errors
-Line 2 Col 0 Unexpected end of file. Expected table content.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| "
-"
-
-#data
-<!doctype html><table><td><span><font></span><span>
-#errors
-Line 1 Col 26 Unexpected table cell start tag (td) in the table body phase.
-Line 1 Col 45 Unexpected end tag (span).
-Line 1 Col 51 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <span>
-| <font>
-| <font>
-| <span>
-
-#data
-<!doctype html><form><table></form><form></table></form>
-#errors
-35: Stray end tag “form”.
-41: Start tag “form” seen in “table”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <form>
-| <table>
-| <form>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests17.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests17.dat
deleted file mode 100644
index 7b555f888..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests17.dat
+++ /dev/null
@@ -1,153 +0,0 @@
-#data
-<!doctype html><table><tbody><select><tr>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!doctype html><table><tr><select><td>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<!doctype html><table><tr><td><select><td>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <select>
-| <td>
-
-#data
-<!doctype html><table><tr><th><select><td>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <th>
-| <select>
-| <td>
-
-#data
-<!doctype html><table><caption><select><tr>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <select>
-| <tbody>
-| <tr>
-
-#data
-<!doctype html><select><tr>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!doctype html><select><td>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!doctype html><select><th>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!doctype html><select><tbody>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!doctype html><select><thead>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!doctype html><select><tfoot>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!doctype html><select><caption>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!doctype html><table><tr></table>a
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| "a"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests18.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests18.dat
deleted file mode 100644
index 680e1f068..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests18.dat
+++ /dev/null
@@ -1,269 +0,0 @@
-#data
-<!doctype html><plaintext></plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <plaintext>
-| "</plaintext>"
-
-#data
-<!doctype html><table><plaintext></plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <plaintext>
-| "</plaintext>"
-| <table>
-
-#data
-<!doctype html><table><tbody><plaintext></plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <plaintext>
-| "</plaintext>"
-| <table>
-| <tbody>
-
-#data
-<!doctype html><table><tbody><tr><plaintext></plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <plaintext>
-| "</plaintext>"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!doctype html><table><tbody><tr><plaintext></plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <plaintext>
-| "</plaintext>"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!doctype html><table><td><plaintext></plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <plaintext>
-| "</plaintext>"
-
-#data
-<!doctype html><table><caption><plaintext></plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <plaintext>
-| "</plaintext>"
-
-#data
-<!doctype html><table><tr><style></script></style>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "abc"
-| <table>
-| <tbody>
-| <tr>
-| <style>
-| "</script>"
-
-#data
-<!doctype html><table><tr><script></style></script>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "abc"
-| <table>
-| <tbody>
-| <tr>
-| <script>
-| "</style>"
-
-#data
-<!doctype html><table><caption><style></script></style>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <style>
-| "</script>"
-| "abc"
-
-#data
-<!doctype html><table><td><style></script></style>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <style>
-| "</script>"
-| "abc"
-
-#data
-<!doctype html><select><script></style></script>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <script>
-| "</style>"
-| "abc"
-
-#data
-<!doctype html><table><select><script></style></script>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <script>
-| "</style>"
-| "abc"
-| <table>
-
-#data
-<!doctype html><table><tr><select><script></style></script>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <script>
-| "</style>"
-| "abc"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!doctype html><frameset></frameset><noframes>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <noframes>
-| "abc"
-
-#data
-<!doctype html><frameset></frameset><noframes>abc</noframes><!--abc-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <noframes>
-| "abc"
-| <!-- abc -->
-
-#data
-<!doctype html><frameset></frameset></html><noframes>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <noframes>
-| "abc"
-
-#data
-<!doctype html><frameset></frameset></html><noframes>abc</noframes><!--abc-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <noframes>
-| "abc"
-| <!-- abc -->
-
-#data
-<!doctype html><table><tr></tbody><tfoot>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <tfoot>
-
-#data
-<!doctype html><table><td><svg></svg>abc<td>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <svg svg>
-| "abc"
-| <td>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests19.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests19.dat
deleted file mode 100644
index 0d62f5a5b..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests19.dat
+++ /dev/null
@@ -1,1237 +0,0 @@
-#data
-<!doctype html><math><mn DefinitionUrl="foo">
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mn>
-| definitionURL="foo"
-
-#data
-<!doctype html><html></p><!--foo-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <!-- foo -->
-| <head>
-| <body>
-
-#data
-<!doctype html><head></head></p><!--foo-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <!-- foo -->
-| <body>
-
-#data
-<!doctype html><body><p><pre>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <pre>
-
-#data
-<!doctype html><body><p><listing>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <listing>
-
-#data
-<!doctype html><p><plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <plaintext>
-
-#data
-<!doctype html><p><h1>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <h1>
-
-#data
-<!doctype html><form><isindex>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <form>
-
-#data
-<!doctype html><isindex action="POST">
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <form>
-| action="POST"
-| <hr>
-| <label>
-| "This is a searchable index. Enter search keywords: "
-| <input>
-| name="isindex"
-| <hr>
-
-#data
-<!doctype html><isindex prompt="this is isindex">
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <form>
-| <hr>
-| <label>
-| "this is isindex"
-| <input>
-| name="isindex"
-| <hr>
-
-#data
-<!doctype html><isindex type="hidden">
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <form>
-| <hr>
-| <label>
-| "This is a searchable index. Enter search keywords: "
-| <input>
-| name="isindex"
-| type="hidden"
-| <hr>
-
-#data
-<!doctype html><isindex name="foo">
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <form>
-| <hr>
-| <label>
-| "This is a searchable index. Enter search keywords: "
-| <input>
-| name="isindex"
-| <hr>
-
-#data
-<!doctype html><ruby><p><rp>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <ruby>
-| <p>
-| <rp>
-
-#data
-<!doctype html><ruby><div><span><rp>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <ruby>
-| <div>
-| <span>
-| <rp>
-
-#data
-<!doctype html><ruby><div><p><rp>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <ruby>
-| <div>
-| <p>
-| <rp>
-
-#data
-<!doctype html><ruby><p><rt>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <ruby>
-| <p>
-| <rt>
-
-#data
-<!doctype html><ruby><div><span><rt>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <ruby>
-| <div>
-| <span>
-| <rt>
-
-#data
-<!doctype html><ruby><div><p><rt>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <ruby>
-| <div>
-| <p>
-| <rt>
-
-#data
-<!doctype html><math/><foo>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <foo>
-
-#data
-<!doctype html><svg/><foo>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <foo>
-
-#data
-<!doctype html><div></body><!--foo-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <div>
-| <!-- foo -->
-
-#data
-<!doctype html><h1><div><h3><span></h1>foo
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <h1>
-| <div>
-| <h3>
-| <span>
-| "foo"
-
-#data
-<!doctype html><p></h3>foo
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| "foo"
-
-#data
-<!doctype html><h3><li>abc</h2>foo
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <h3>
-| <li>
-| "abc"
-| "foo"
-
-#data
-<!doctype html><table>abc<!--foo-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "abc"
-| <table>
-| <!-- foo -->
-
-#data
-<!doctype html><table> <!--foo-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| " "
-| <!-- foo -->
-
-#data
-<!doctype html><table> b <!--foo-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| " b "
-| <table>
-| <!-- foo -->
-
-#data
-<!doctype html><select><option><option>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-| <option>
-
-#data
-<!doctype html><select><option></optgroup>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-
-#data
-<!doctype html><select><option></optgroup>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-
-#data
-<!doctype html><p><math><mi><p><h1>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <math math>
-| <math mi>
-| <p>
-| <h1>
-
-#data
-<!doctype html><p><math><mo><p><h1>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <math math>
-| <math mo>
-| <p>
-| <h1>
-
-#data
-<!doctype html><p><math><mn><p><h1>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <math math>
-| <math mn>
-| <p>
-| <h1>
-
-#data
-<!doctype html><p><math><ms><p><h1>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <math math>
-| <math ms>
-| <p>
-| <h1>
-
-#data
-<!doctype html><p><math><mtext><p><h1>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <math math>
-| <math mtext>
-| <p>
-| <h1>
-
-#data
-<!doctype html><frameset></noframes>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!doctype html><html c=d><body></html><html a=b>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| a="b"
-| c="d"
-| <head>
-| <body>
-
-#data
-<!doctype html><html c=d><frameset></frameset></html><html a=b>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| a="b"
-| c="d"
-| <head>
-| <frameset>
-
-#data
-<!doctype html><html><frameset></frameset></html><!--foo-->
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <!-- foo -->
-
-#data
-<!doctype html><html><frameset></frameset></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| " "
-
-#data
-<!doctype html><html><frameset></frameset></html>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!doctype html><html><frameset></frameset></html><p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!doctype html><html><frameset></frameset></html></p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<html><frameset></frameset></html><!doctype html>
-#errors
-#document
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!doctype html><body><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-
-#data
-<!doctype html><p><frameset><frame>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <frame>
-
-#data
-<!doctype html><p>a<frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| "a"
-
-#data
-<!doctype html><p> <frameset><frame>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <frame>
-
-#data
-<!doctype html><pre><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-
-#data
-<!doctype html><listing><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <listing>
-
-#data
-<!doctype html><li><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <li>
-
-#data
-<!doctype html><dd><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <dd>
-
-#data
-<!doctype html><dt><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <dt>
-
-#data
-<!doctype html><button><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <button>
-
-#data
-<!doctype html><applet><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <applet>
-
-#data
-<!doctype html><marquee><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <marquee>
-
-#data
-<!doctype html><object><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <object>
-
-#data
-<!doctype html><table><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-
-#data
-<!doctype html><area><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <area>
-
-#data
-<!doctype html><basefont><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <basefont>
-| <frameset>
-
-#data
-<!doctype html><bgsound><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <bgsound>
-| <frameset>
-
-#data
-<!doctype html><br><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <br>
-
-#data
-<!doctype html><embed><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <embed>
-
-#data
-<!doctype html><img><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <img>
-
-#data
-<!doctype html><input><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <input>
-
-#data
-<!doctype html><keygen><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <keygen>
-
-#data
-<!doctype html><wbr><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <wbr>
-
-#data
-<!doctype html><hr><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <hr>
-
-#data
-<!doctype html><textarea></textarea><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <textarea>
-
-#data
-<!doctype html><xmp></xmp><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <xmp>
-
-#data
-<!doctype html><iframe></iframe><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <iframe>
-
-#data
-<!doctype html><select></select><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!doctype html><svg></svg><frameset><frame>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <frame>
-
-#data
-<!doctype html><math></math><frameset><frame>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <frame>
-
-#data
-<!doctype html><svg><foreignObject><div> <frameset><frame>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <frame>
-
-#data
-<!doctype html><svg>a</svg><frameset><frame>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "a"
-
-#data
-<!doctype html><svg> </svg><frameset><frame>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-| <frame>
-
-#data
-<html>aaa<frameset></frameset>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "aaa"
-
-#data
-<html> a <frameset></frameset>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "a "
-
-#data
-<!doctype html><div><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!doctype html><div><body><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <div>
-
-#data
-<!doctype html><p><math></p>a
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <math math>
-| "a"
-
-#data
-<!doctype html><p><math><mn><span></p>a
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <math math>
-| <math mn>
-| <span>
-| <p>
-| "a"
-
-#data
-<!doctype html><math></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-
-#data
-<!doctype html><meta charset="ascii">
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <meta>
-| charset="ascii"
-| <body>
-
-#data
-<!doctype html><meta http-equiv="content-type" content="text/html;charset=ascii">
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <meta>
-| content="text/html;charset=ascii"
-| http-equiv="content-type"
-| <body>
-
-#data
-<!doctype html><head><!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--><meta charset="utf8">
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <!-- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -->
-| <meta>
-| charset="utf8"
-| <body>
-
-#data
-<!doctype html><html a=b><head></head><html c=d>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| a="b"
-| c="d"
-| <head>
-| <body>
-
-#data
-<!doctype html><image/>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <img>
-
-#data
-<!doctype html>a<i>b<table>c<b>d</i>e</b>f
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "a"
-| <i>
-| "bc"
-| <b>
-| "de"
-| "f"
-| <table>
-
-#data
-<!doctype html><table><i>a<b>b<div>c<a>d</i>e</b>f
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <i>
-| "a"
-| <b>
-| "b"
-| <b>
-| <div>
-| <b>
-| <i>
-| "c"
-| <a>
-| "d"
-| <a>
-| "e"
-| <a>
-| "f"
-| <table>
-
-#data
-<!doctype html><i>a<b>b<div>c<a>d</i>e</b>f
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <i>
-| "a"
-| <b>
-| "b"
-| <b>
-| <div>
-| <b>
-| <i>
-| "c"
-| <a>
-| "d"
-| <a>
-| "e"
-| <a>
-| "f"
-
-#data
-<!doctype html><table><i>a<b>b<div>c</i>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <i>
-| "a"
-| <b>
-| "b"
-| <b>
-| <div>
-| <i>
-| "c"
-| <table>
-
-#data
-<!doctype html><table><i>a<b>b<div>c<a>d</i>e</b>f
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <i>
-| "a"
-| <b>
-| "b"
-| <b>
-| <div>
-| <b>
-| <i>
-| "c"
-| <a>
-| "d"
-| <a>
-| "e"
-| <a>
-| "f"
-| <table>
-
-#data
-<!doctype html><table><i>a<div>b<tr>c<b>d</i>e
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <i>
-| "a"
-| <div>
-| "b"
-| <i>
-| "c"
-| <b>
-| "d"
-| <b>
-| "e"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!doctype html><table><td><table><i>a<div>b<b>c</i>d
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <i>
-| "a"
-| <div>
-| <i>
-| "b"
-| <b>
-| "c"
-| <b>
-| "d"
-| <table>
-
-#data
-<!doctype html><body><bgsound>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <bgsound>
-
-#data
-<!doctype html><body><basefont>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <basefont>
-
-#data
-<!doctype html><a><b></a><basefont>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <a>
-| <b>
-| <basefont>
-
-#data
-<!doctype html><a><b></a><bgsound>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <a>
-| <b>
-| <bgsound>
-
-#data
-<!doctype html><figcaption><article></figcaption>a
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <figcaption>
-| <article>
-| "a"
-
-#data
-<!doctype html><summary><article></summary>a
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <summary>
-| <article>
-| "a"
-
-#data
-<!doctype html><p><a><plaintext>b
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <a>
-| <plaintext>
-| <a>
-| "b"
-
-#data
-<!DOCTYPE html><div>a<a></div>b<p>c</p>d
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <div>
-| "a"
-| <a>
-| <a>
-| "b"
-| <p>
-| "c"
-| "d"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests2.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests2.dat
deleted file mode 100644
index 60d859221..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests2.dat
+++ /dev/null
@@ -1,763 +0,0 @@
-#data
-<!DOCTYPE html>Test
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "Test"
-
-#data
-<textarea>test</div>test
-#errors
-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
-Line: 1 Col: 24 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "test</div>test"
-
-#data
-<table><td>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 11 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<table><td>test</tbody></table>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected table cell start tag (td) in the table body phase.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "test"
-
-#data
-<frame>test
-#errors
-Line: 1 Col: 7 Unexpected start tag (frame). Expected DOCTYPE.
-Line: 1 Col: 7 Unexpected start tag frame. Ignored.
-#document
-| <html>
-| <head>
-| <body>
-| "test"
-
-#data
-<!DOCTYPE html><frameset>test
-#errors
-Line: 1 Col: 29 Unepxected characters in the frameset phase. Characters ignored.
-Line: 1 Col: 29 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!DOCTYPE html><frameset><!DOCTYPE html>
-#errors
-Line: 1 Col: 40 Unexpected DOCTYPE. Ignored.
-Line: 1 Col: 40 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!DOCTYPE html><font><p><b>test</font>
-#errors
-Line: 1 Col: 38 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 38 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <font>
-| <p>
-| <font>
-| <b>
-| "test"
-
-#data
-<!DOCTYPE html><dt><div><dd>
-#errors
-Line: 1 Col: 28 Missing end tag (div, dt).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <dt>
-| <div>
-| <dd>
-
-#data
-<script></x
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-Line: 1 Col: 11 Unexpected end of file. Expected end tag (script).
-#document
-| <html>
-| <head>
-| <script>
-| "</x"
-| <body>
-
-#data
-<table><plaintext><td>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 18 Unexpected start tag (plaintext) in table context caused voodoo mode.
-Line: 1 Col: 22 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <plaintext>
-| "<td>"
-| <table>
-
-#data
-<plaintext></plaintext>
-#errors
-Line: 1 Col: 11 Unexpected start tag (plaintext). Expected DOCTYPE.
-Line: 1 Col: 23 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <plaintext>
-| "</plaintext>"
-
-#data
-<!DOCTYPE html><table><tr>TEST
-#errors
-Line: 1 Col: 30 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 30 Unexpected end of file. Expected table content.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "TEST"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!DOCTYPE html><body t1=1><body t2=2><body t3=3 t4=4>
-#errors
-Line: 1 Col: 37 Unexpected start tag (body).
-Line: 1 Col: 53 Unexpected start tag (body).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| t1="1"
-| t2="2"
-| t3="3"
-| t4="4"
-
-#data
-</b test
-#errors
-Line: 1 Col: 8 Unexpected end of file in attribute name.
-Line: 1 Col: 8 End tag contains unexpected attributes.
-Line: 1 Col: 8 Unexpected end tag (b). Expected DOCTYPE.
-Line: 1 Col: 8 Unexpected end tag (b) after the (implied) root element.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html></b test<b &=&amp>X
-#errors
-Line: 1 Col: 32 Named entity didn't end with ';'.
-Line: 1 Col: 33 End tag contains unexpected attributes.
-Line: 1 Col: 33 Unexpected end tag (b) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "X"
-
-#data
-<!doctypehtml><scrIPt type=text/x-foobar;baz>X</SCRipt
-#errors
-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
-Line: 1 Col: 54 Unexpected end of file in the tag name.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| type="text/x-foobar;baz"
-| "X</SCRipt"
-| <body>
-
-#data
-&
-#errors
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "&"
-
-#data
-&#
-#errors
-Line: 1 Col: 1 Numeric entity expected. Got end of file instead.
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "&#"
-
-#data
-&#X
-#errors
-Line: 1 Col: 3 Numeric entity expected but none found.
-Line: 1 Col: 3 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "&#X"
-
-#data
-&#x
-#errors
-Line: 1 Col: 3 Numeric entity expected but none found.
-Line: 1 Col: 3 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "&#x"
-
-#data
-&#45
-#errors
-Line: 1 Col: 4 Numeric entity didn't end with ';'.
-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "-"
-
-#data
-&x-test
-#errors
-Line: 1 Col: 1 Named entity expected. Got none.
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "&x-test"
-
-#data
-<!doctypehtml><p><li>
-#errors
-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <li>
-
-#data
-<!doctypehtml><p><dt>
-#errors
-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <dt>
-
-#data
-<!doctypehtml><p><dd>
-#errors
-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <dd>
-
-#data
-<!doctypehtml><p><form>
-#errors
-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
-Line: 1 Col: 23 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <form>
-
-#data
-<!DOCTYPE html><p></P>X
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| "X"
-
-#data
-&AMP
-#errors
-Line: 1 Col: 4 Named entity didn't end with ';'.
-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "&"
-
-#data
-&AMp;
-#errors
-Line: 1 Col: 1 Named entity expected. Got none.
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "&AMp;"
-
-#data
-<!DOCTYPE html><html><head></head><body><thisISasillyTESTelementNameToMakeSureCrazyTagNamesArePARSEDcorrectLY>
-#errors
-Line: 1 Col: 110 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <thisisasillytestelementnametomakesurecrazytagnamesareparsedcorrectly>
-
-#data
-<!DOCTYPE html>X</body>X
-#errors
-Line: 1 Col: 24 Unexpected non-space characters in the after body phase.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "XX"
-
-#data
-<!DOCTYPE html><!-- X
-#errors
-Line: 1 Col: 21 Unexpected end of file in comment.
-#document
-| <!DOCTYPE html>
-| <!-- X -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><table><caption>test TEST</caption><td>test
-#errors
-Line: 1 Col: 54 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 58 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| "test TEST"
-| <tbody>
-| <tr>
-| <td>
-| "test"
-
-#data
-<!DOCTYPE html><select><option><optgroup>
-#errors
-Line: 1 Col: 41 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-| <optgroup>
-
-#data
-<!DOCTYPE html><select><optgroup><option></optgroup><option><select><option>
-#errors
-Line: 1 Col: 68 Unexpected select start tag in the select phase treated as select end tag.
-Line: 1 Col: 76 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <optgroup>
-| <option>
-| <option>
-| <option>
-
-#data
-<!DOCTYPE html><select><optgroup><option><optgroup>
-#errors
-Line: 1 Col: 51 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <optgroup>
-| <option>
-| <optgroup>
-
-#data
-<!DOCTYPE html><datalist><option>foo</datalist>bar
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <datalist>
-| <option>
-| "foo"
-| "bar"
-
-#data
-<!DOCTYPE html><font><input><input></font>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <font>
-| <input>
-| <input>
-
-#data
-<!DOCTYPE html><!-- XXX - XXX -->
-#errors
-#document
-| <!DOCTYPE html>
-| <!-- XXX - XXX -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><!-- XXX - XXX
-#errors
-Line: 1 Col: 29 Unexpected end of file in comment (-)
-#document
-| <!DOCTYPE html>
-| <!-- XXX - XXX -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><!-- XXX - XXX - XXX -->
-#errors
-#document
-| <!DOCTYPE html>
-| <!-- XXX - XXX - XXX -->
-| <html>
-| <head>
-| <body>
-
-#data
-<isindex test=x name=x>
-#errors
-Line: 1 Col: 23 Unexpected start tag (isindex). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected start tag isindex. Don't use it!
-#document
-| <html>
-| <head>
-| <body>
-| <form>
-| <hr>
-| <label>
-| "This is a searchable index. Enter search keywords: "
-| <input>
-| name="isindex"
-| test="x"
-| <hr>
-
-#data
-test
-test
-#errors
-Line: 2 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "test
-test"
-
-#data
-<!DOCTYPE html><body><title>test</body></title>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <title>
-| "test</body>"
-
-#data
-<!DOCTYPE html><body><title>X</title><meta name=z><link rel=foo><style>
-x { content:"</style" } </style>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <title>
-| "X"
-| <meta>
-| name="z"
-| <link>
-| rel="foo"
-| <style>
-| "
-x { content:"</style" } "
-
-#data
-<!DOCTYPE html><select><optgroup></optgroup></select>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <optgroup>
-
-#data
-
-
-#errors
-Line: 2 Col: 1 Unexpected End of file. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html> <html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><script>
-</script> <title>x</title> </head>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <script>
-| "
-"
-| " "
-| <title>
-| "x"
-| " "
-| <body>
-
-#data
-<!DOCTYPE html><html><body><html id=x>
-#errors
-Line: 1 Col: 38 html needs to be the first start tag.
-#document
-| <!DOCTYPE html>
-| <html>
-| id="x"
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html>X</body><html id="x">
-#errors
-Line: 1 Col: 36 Unexpected start tag token (html) in the after body phase.
-Line: 1 Col: 36 html needs to be the first start tag.
-#document
-| <!DOCTYPE html>
-| <html>
-| id="x"
-| <head>
-| <body>
-| "X"
-
-#data
-<!DOCTYPE html><head><html id=x>
-#errors
-Line: 1 Col: 32 html needs to be the first start tag.
-#document
-| <!DOCTYPE html>
-| <html>
-| id="x"
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html>X</html>X
-#errors
-Line: 1 Col: 24 Unexpected non-space characters in the after body phase.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "XX"
-
-#data
-<!DOCTYPE html>X</html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "X "
-
-#data
-<!DOCTYPE html>X</html><p>X
-#errors
-Line: 1 Col: 26 Unexpected start tag (p).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "X"
-| <p>
-| "X"
-
-#data
-<!DOCTYPE html>X<p/x/y/z>
-#errors
-Line: 1 Col: 19 Expected a > after the /.
-Line: 1 Col: 21 Solidus (/) incorrectly placed in tag.
-Line: 1 Col: 23 Solidus (/) incorrectly placed in tag.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "X"
-| <p>
-| x=""
-| y=""
-| z=""
-
-#data
-<!DOCTYPE html><!--x--
-#errors
-Line: 1 Col: 22 Unexpected end of file in comment (--).
-#document
-| <!DOCTYPE html>
-| <!-- x -->
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE html><table><tr><td></p></table>
-#errors
-Line: 1 Col: 34 Unexpected end tag (p). Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <p>
-
-#data
-<!DOCTYPE <!DOCTYPE HTML>><!--<!--x-->-->
-#errors
-Line: 1 Col: 20 Expected space or '>'. Got ''
-Line: 1 Col: 25 Erroneous DOCTYPE.
-Line: 1 Col: 35 Unexpected character in comment found.
-#document
-| <!DOCTYPE <!doctype>
-| <html>
-| <head>
-| <body>
-| ">"
-| <!-- <!--x -->
-| "-->"
-
-#data
-<!doctype html><div><form></form><div></div></div>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <div>
-| <form>
-| <div>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests20.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests20.dat
deleted file mode 100644
index 6bd825608..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests20.dat
+++ /dev/null
@@ -1,455 +0,0 @@
-#data
-<!doctype html><p><button><button>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <button>
-
-#data
-<!doctype html><p><button><address>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <address>
-
-#data
-<!doctype html><p><button><blockquote>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <blockquote>
-
-#data
-<!doctype html><p><button><menu>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <menu>
-
-#data
-<!doctype html><p><button><p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <p>
-
-#data
-<!doctype html><p><button><ul>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <ul>
-
-#data
-<!doctype html><p><button><h1>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <h1>
-
-#data
-<!doctype html><p><button><h6>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <h6>
-
-#data
-<!doctype html><p><button><listing>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <listing>
-
-#data
-<!doctype html><p><button><pre>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <pre>
-
-#data
-<!doctype html><p><button><form>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <form>
-
-#data
-<!doctype html><p><button><li>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <li>
-
-#data
-<!doctype html><p><button><dd>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <dd>
-
-#data
-<!doctype html><p><button><dt>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <dt>
-
-#data
-<!doctype html><p><button><plaintext>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <plaintext>
-
-#data
-<!doctype html><p><button><table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <table>
-
-#data
-<!doctype html><p><button><hr>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <hr>
-
-#data
-<!doctype html><p><button><xmp>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <xmp>
-
-#data
-<!doctype html><p><button></p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <button>
-| <p>
-
-#data
-<!doctype html><address><button></address>a
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <address>
-| <button>
-| "a"
-
-#data
-<!doctype html><address><button></address>a
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <address>
-| <button>
-| "a"
-
-#data
-<p><table></p>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <p>
-| <table>
-
-#data
-<!doctype html><svg>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-
-#data
-<!doctype html><p><figcaption>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <figcaption>
-
-#data
-<!doctype html><p><summary>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <summary>
-
-#data
-<!doctype html><form><table><form>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <form>
-| <table>
-
-#data
-<!doctype html><table><form><form>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <form>
-
-#data
-<!doctype html><table><form></table><form>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <form>
-
-#data
-<!doctype html><svg><foreignObject><p>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg foreignObject>
-| <p>
-
-#data
-<!doctype html><svg><title>abc
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg title>
-| "abc"
-
-#data
-<option><span><option>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <option>
-| <span>
-| <option>
-
-#data
-<option><option>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <option>
-| <option>
-
-#data
-<math><annotation-xml><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| <div>
-
-#data
-<math><annotation-xml encoding="application/svg+xml"><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| encoding="application/svg+xml"
-| <div>
-
-#data
-<math><annotation-xml encoding="application/xhtml+xml"><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| encoding="application/xhtml+xml"
-| <div>
-
-#data
-<math><annotation-xml encoding="aPPlication/xhtmL+xMl"><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| encoding="aPPlication/xhtmL+xMl"
-| <div>
-
-#data
-<math><annotation-xml encoding="text/html"><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| encoding="text/html"
-| <div>
-
-#data
-<math><annotation-xml encoding="Text/htmL"><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| encoding="Text/htmL"
-| <div>
-
-#data
-<math><annotation-xml encoding=" text/html "><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| encoding=" text/html "
-| <div>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests21.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests21.dat
deleted file mode 100644
index 1260ec03e..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests21.dat
+++ /dev/null
@@ -1,221 +0,0 @@
-#data
-<svg><![CDATA[foo]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "foo"
-
-#data
-<math><![CDATA[foo]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| "foo"
-
-#data
-<div><![CDATA[foo]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <!-- [CDATA[foo]] -->
-
-#data
-<svg><![CDATA[foo
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "foo"
-
-#data
-<svg><![CDATA[foo
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "foo"
-
-#data
-<svg><![CDATA[
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-
-#data
-<svg><![CDATA[]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-
-#data
-<svg><![CDATA[]] >]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "]] >"
-
-#data
-<svg><![CDATA[]] >]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "]] >"
-
-#data
-<svg><![CDATA[]]
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "]]"
-
-#data
-<svg><![CDATA[]
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "]"
-
-#data
-<svg><![CDATA[]>a
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "]>a"
-
-#data
-<svg><foreignObject><div><![CDATA[foo]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg foreignObject>
-| <div>
-| <!-- [CDATA[foo]] -->
-
-#data
-<svg><![CDATA[<svg>]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "<svg>"
-
-#data
-<svg><![CDATA[</svg>a]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "</svg>a"
-
-#data
-<svg><![CDATA[<svg>a
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "<svg>a"
-
-#data
-<svg><![CDATA[</svg>a
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "</svg>a"
-
-#data
-<svg><![CDATA[<svg>]]><path>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "<svg>"
-| <svg path>
-
-#data
-<svg><![CDATA[<svg>]]></path>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "<svg>"
-
-#data
-<svg><![CDATA[<svg>]]><!--path-->
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "<svg>"
-| <!-- path -->
-
-#data
-<svg><![CDATA[<svg>]]>path
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "<svg>path"
-
-#data
-<svg><![CDATA[<!--svg-->]]>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| "<!--svg-->"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests22.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests22.dat
deleted file mode 100644
index aab27b2e9..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests22.dat
+++ /dev/null
@@ -1,157 +0,0 @@
-#data
-<a><b><big><em><strong><div>X</a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <b>
-| <big>
-| <em>
-| <strong>
-| <big>
-| <em>
-| <strong>
-| <div>
-| <a>
-| "X"
-
-#data
-<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8>A</a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <b>
-| <b>
-| <div>
-| id="1"
-| <a>
-| <div>
-| id="2"
-| <a>
-| <div>
-| id="3"
-| <a>
-| <div>
-| id="4"
-| <a>
-| <div>
-| id="5"
-| <a>
-| <div>
-| id="6"
-| <a>
-| <div>
-| id="7"
-| <a>
-| <div>
-| id="8"
-| <a>
-| "A"
-
-#data
-<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8><div id=9>A</a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <b>
-| <b>
-| <div>
-| id="1"
-| <a>
-| <div>
-| id="2"
-| <a>
-| <div>
-| id="3"
-| <a>
-| <div>
-| id="4"
-| <a>
-| <div>
-| id="5"
-| <a>
-| <div>
-| id="6"
-| <a>
-| <div>
-| id="7"
-| <a>
-| <div>
-| id="8"
-| <a>
-| <div>
-| id="9"
-| "A"
-
-#data
-<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8><div id=9><div id=10>A</a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <b>
-| <b>
-| <div>
-| id="1"
-| <a>
-| <div>
-| id="2"
-| <a>
-| <div>
-| id="3"
-| <a>
-| <div>
-| id="4"
-| <a>
-| <div>
-| id="5"
-| <a>
-| <div>
-| id="6"
-| <a>
-| <div>
-| id="7"
-| <a>
-| <div>
-| id="8"
-| <a>
-| <div>
-| id="9"
-| <div>
-| id="10"
-| "A"
-
-#data
-<cite><b><cite><i><cite><i><cite><i><div>X</b>TEST
-#errors
-Line: 1 Col: 6 Unexpected start tag (cite). Expected DOCTYPE.
-Line: 1 Col: 46 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 50 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <cite>
-| <b>
-| <cite>
-| <i>
-| <cite>
-| <i>
-| <cite>
-| <i>
-| <i>
-| <i>
-| <div>
-| <b>
-| "X"
-| "TEST"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests23.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests23.dat
deleted file mode 100644
index 34d2a73f1..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests23.dat
+++ /dev/null
@@ -1,155 +0,0 @@
-#data
-<p><font size=4><font color=red><font size=4><font size=4><font size=4><font size=4><font size=4><font color=red><p>X
-#errors
-3: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-116: Unclosed elements.
-117: End of file seen and there were open elements.
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <font>
-| size="4"
-| <font>
-| color="red"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| color="red"
-| <p>
-| <font>
-| color="red"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| color="red"
-| "X"
-
-#data
-<p><font size=4><font size=4><font size=4><font size=4><p>X
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <p>
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| "X"
-
-#data
-<p><font size=4><font size=4><font size=4><font size="5"><font size=4><p>X
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="5"
-| <font>
-| size="4"
-| <p>
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="5"
-| <font>
-| size="4"
-| "X"
-
-#data
-<p><font size=4 id=a><font size=4 id=b><font size=4><font size=4><p>X
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <font>
-| id="a"
-| size="4"
-| <font>
-| id="b"
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| <p>
-| <font>
-| id="a"
-| size="4"
-| <font>
-| id="b"
-| size="4"
-| <font>
-| size="4"
-| <font>
-| size="4"
-| "X"
-
-#data
-<p><b id=a><b id=a><b id=a><b><object><b id=a><b id=a>X</object><p>Y
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <b>
-| id="a"
-| <b>
-| id="a"
-| <b>
-| id="a"
-| <b>
-| <object>
-| <b>
-| id="a"
-| <b>
-| id="a"
-| "X"
-| <p>
-| <b>
-| id="a"
-| <b>
-| id="a"
-| <b>
-| id="a"
-| <b>
-| "Y"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests24.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests24.dat
deleted file mode 100644
index f6dc7eb48..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests24.dat
+++ /dev/null
@@ -1,79 +0,0 @@
-#data
-<!DOCTYPE html>&NotEqualTilde;
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "≂̸"
-
-#data
-<!DOCTYPE html>&NotEqualTilde;A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "≂̸A"
-
-#data
-<!DOCTYPE html>&ThickSpace;
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "  "
-
-#data
-<!DOCTYPE html>&ThickSpace;A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "  A"
-
-#data
-<!DOCTYPE html>&NotSubset;
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "⊂⃒"
-
-#data
-<!DOCTYPE html>&NotSubset;A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "⊂⃒A"
-
-#data
-<!DOCTYPE html>&Gopf;
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "𝔾"
-
-#data
-<!DOCTYPE html>&Gopf;A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "𝔾A"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests25.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests25.dat
deleted file mode 100644
index 00de7295b..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests25.dat
+++ /dev/null
@@ -1,219 +0,0 @@
-#data
-<!DOCTYPE html><body><foo>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <foo>
-| "A"
-
-#data
-<!DOCTYPE html><body><area>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <area>
-| "A"
-
-#data
-<!DOCTYPE html><body><base>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <base>
-| "A"
-
-#data
-<!DOCTYPE html><body><basefont>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <basefont>
-| "A"
-
-#data
-<!DOCTYPE html><body><bgsound>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <bgsound>
-| "A"
-
-#data
-<!DOCTYPE html><body><br>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <br>
-| "A"
-
-#data
-<!DOCTYPE html><body><col>A
-#errors
-26: Stray start tag “col”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "A"
-
-#data
-<!DOCTYPE html><body><command>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <command>
-| "A"
-
-#data
-<!DOCTYPE html><body><embed>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <embed>
-| "A"
-
-#data
-<!DOCTYPE html><body><frame>A
-#errors
-26: Stray start tag “frame”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "A"
-
-#data
-<!DOCTYPE html><body><hr>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <hr>
-| "A"
-
-#data
-<!DOCTYPE html><body><img>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <img>
-| "A"
-
-#data
-<!DOCTYPE html><body><input>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <input>
-| "A"
-
-#data
-<!DOCTYPE html><body><keygen>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <keygen>
-| "A"
-
-#data
-<!DOCTYPE html><body><link>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <link>
-| "A"
-
-#data
-<!DOCTYPE html><body><meta>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <meta>
-| "A"
-
-#data
-<!DOCTYPE html><body><param>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <param>
-| "A"
-
-#data
-<!DOCTYPE html><body><source>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <source>
-| "A"
-
-#data
-<!DOCTYPE html><body><track>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <track>
-| "A"
-
-#data
-<!DOCTYPE html><body><wbr>A
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <wbr>
-| "A"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests26.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests26.dat
deleted file mode 100644
index fae11ffdf..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests26.dat
+++ /dev/null
@@ -1,313 +0,0 @@
-#data
-<!DOCTYPE html><body><a href='#1'><nobr>1<nobr></a><br><a href='#2'><nobr>2<nobr></a><br><a href='#3'><nobr>3<nobr></a>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <a>
-| href="#1"
-| <nobr>
-| "1"
-| <nobr>
-| <nobr>
-| <br>
-| <a>
-| href="#2"
-| <a>
-| href="#2"
-| <nobr>
-| "2"
-| <nobr>
-| <nobr>
-| <br>
-| <a>
-| href="#3"
-| <a>
-| href="#3"
-| <nobr>
-| "3"
-| <nobr>
-
-#data
-<!DOCTYPE html><body><b><nobr>1<nobr></b><i><nobr>2<nobr></i>3
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <b>
-| <nobr>
-| "1"
-| <nobr>
-| <nobr>
-| <i>
-| <i>
-| <nobr>
-| "2"
-| <nobr>
-| <nobr>
-| "3"
-
-#data
-<!DOCTYPE html><body><b><nobr>1<table><nobr></b><i><nobr>2<nobr></i>3
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <b>
-| <nobr>
-| "1"
-| <nobr>
-| <i>
-| <i>
-| <nobr>
-| "2"
-| <nobr>
-| <nobr>
-| "3"
-| <table>
-
-#data
-<!DOCTYPE html><body><b><nobr>1<table><tr><td><nobr></b><i><nobr>2<nobr></i>3
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <b>
-| <nobr>
-| "1"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <nobr>
-| <i>
-| <i>
-| <nobr>
-| "2"
-| <nobr>
-| <nobr>
-| "3"
-
-#data
-<!DOCTYPE html><body><b><nobr>1<div><nobr></b><i><nobr>2<nobr></i>3
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <b>
-| <nobr>
-| "1"
-| <div>
-| <b>
-| <nobr>
-| <nobr>
-| <nobr>
-| <i>
-| <i>
-| <nobr>
-| "2"
-| <nobr>
-| <nobr>
-| "3"
-
-#data
-<!DOCTYPE html><body><b><nobr>1<nobr></b><div><i><nobr>2<nobr></i>3
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <b>
-| <nobr>
-| "1"
-| <nobr>
-| <div>
-| <nobr>
-| <i>
-| <i>
-| <nobr>
-| "2"
-| <nobr>
-| <nobr>
-| "3"
-
-#data
-<!DOCTYPE html><body><b><nobr>1<nobr><ins></b><i><nobr>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <b>
-| <nobr>
-| "1"
-| <nobr>
-| <ins>
-| <nobr>
-| <i>
-| <i>
-| <nobr>
-
-#data
-<!DOCTYPE html><body><b><nobr>1<ins><nobr></b><i>2
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <b>
-| <nobr>
-| "1"
-| <ins>
-| <nobr>
-| <nobr>
-| <i>
-| "2"
-
-#data
-<!DOCTYPE html><body><b>1<nobr></b><i><nobr>2</i>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <b>
-| "1"
-| <nobr>
-| <nobr>
-| <i>
-| <i>
-| <nobr>
-| "2"
-
-#data
-<p><code x</code></p>
-
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <code>
-| code=""
-| x<=""
-| <code>
-| code=""
-| x<=""
-| "
-"
-
-#data
-<!DOCTYPE html><svg><foreignObject><p><i></p>a
-#errors
-45: End tag “p” seen, but there were open elements.
-41: Unclosed element “i”.
-46: End of file seen and there were open elements.
-35: Unclosed element “foreignObject”.
-20: Unclosed element “svg”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg foreignObject>
-| <p>
-| <i>
-| <i>
-| "a"
-
-#data
-<!DOCTYPE html><table><tr><td><svg><foreignObject><p><i></p>a
-#errors
-56: End tag “p” seen, but there were open elements.
-52: Unclosed element “i”.
-57: End of file seen and there were open elements.
-46: Unclosed element “foreignObject”.
-31: Unclosed element “svg”.
-22: Unclosed element “table”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <svg svg>
-| <svg foreignObject>
-| <p>
-| <i>
-| <i>
-| "a"
-
-#data
-<!DOCTYPE html><math><mtext><p><i></p>a
-#errors
-38: End tag “p” seen, but there were open elements.
-34: Unclosed element “i”.
-39: End of file in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mtext>
-| <p>
-| <i>
-| <i>
-| "a"
-
-#data
-<!DOCTYPE html><table><tr><td><math><mtext><p><i></p>a
-#errors
-53: End tag “p” seen, but there were open elements.
-49: Unclosed element “i”.
-54: End of file in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <math math>
-| <math mtext>
-| <p>
-| <i>
-| <i>
-| "a"
-
-#data
-<!DOCTYPE html><body><div><!/div>a
-#errors
-29: Bogus comment.
-34: End of file seen and there were open elements.
-26: Unclosed element “div”.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <div>
-| <!-- /div -->
-| "a"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests3.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests3.dat
deleted file mode 100644
index 38dc501be..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests3.dat
+++ /dev/null
@@ -1,305 +0,0 @@
-#data
-<head></head><style></style>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected start tag (style) that can be in head. Moved.
-#document
-| <html>
-| <head>
-| <style>
-| <body>
-
-#data
-<head></head><script></script>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 21 Unexpected start tag (script) that can be in head. Moved.
-#document
-| <html>
-| <head>
-| <script>
-| <body>
-
-#data
-<head></head><!-- --><style></style><!-- --><script></script>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-Line: 1 Col: 28 Unexpected start tag (style) that can be in head. Moved.
-#document
-| <html>
-| <head>
-| <style>
-| <script>
-| <!-- -->
-| <!-- -->
-| <body>
-
-#data
-<head></head><!-- -->x<style></style><!-- --><script></script>
-#errors
-Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <!-- -->
-| <body>
-| "x"
-| <style>
-| <!-- -->
-| <script>
-
-#data
-<!DOCTYPE html><html><head></head><body><pre>
-</pre></body></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-
-#data
-<!DOCTYPE html><html><head></head><body><pre>
-foo</pre></body></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-| "foo"
-
-#data
-<!DOCTYPE html><html><head></head><body><pre>
-
-foo</pre></body></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-| "
-foo"
-
-#data
-<!DOCTYPE html><html><head></head><body><pre>
-foo
-</pre></body></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-| "foo
-"
-
-#data
-<!DOCTYPE html><html><head></head><body><pre>x</pre><span>
-</span></body></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-| "x"
-| <span>
-| "
-"
-
-#data
-<!DOCTYPE html><html><head></head><body><pre>x
-y</pre></body></html>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-| "x
-y"
-
-#data
-<!DOCTYPE html><html><head></head><body><pre>x<div>
-y</pre></body></html>
-#errors
-Line: 2 Col: 7 End tag (pre) seen too early. Expected other end tag.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-| "x"
-| <div>
-| "
-y"
-
-#data
-<!DOCTYPE html><pre>&#x0a;&#x0a;A</pre>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <pre>
-| "
-A"
-
-#data
-<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML>
-#errors
-Line: 1 Col: 33 Unexpected start tag head in existing head. Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <meta>
-| <body>
-
-#data
-<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML>
-#errors
-Line: 1 Col: 33 Unexpected start tag head in existing head. Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-
-#data
-<textarea>foo<span>bar</span><i>baz
-#errors
-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
-Line: 1 Col: 35 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "foo<span>bar</span><i>baz"
-
-#data
-<title>foo<span>bar</em><i>baz
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-Line: 1 Col: 30 Unexpected end of file. Expected end tag (title).
-#document
-| <html>
-| <head>
-| <title>
-| "foo<span>bar</em><i>baz"
-| <body>
-
-#data
-<!DOCTYPE html><textarea>
-</textarea>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <textarea>
-
-#data
-<!DOCTYPE html><textarea>
-foo</textarea>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "foo"
-
-#data
-<!DOCTYPE html><textarea>
-
-foo</textarea>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <textarea>
-| "
-foo"
-
-#data
-<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html>
-#errors
-Line: 1 Col: 60 Missing end tag (div, li).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <ul>
-| <li>
-| <div>
-| <p>
-| <li>
-
-#data
-<!doctype html><nobr><nobr><nobr>
-#errors
-Line: 1 Col: 27 Unexpected start tag (nobr) implies end tag (nobr).
-Line: 1 Col: 33 Unexpected start tag (nobr) implies end tag (nobr).
-Line: 1 Col: 33 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <nobr>
-| <nobr>
-| <nobr>
-
-#data
-<!doctype html><nobr><nobr></nobr><nobr>
-#errors
-Line: 1 Col: 27 Unexpected start tag (nobr) implies end tag (nobr).
-Line: 1 Col: 40 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <nobr>
-| <nobr>
-| <nobr>
-
-#data
-<!doctype html><html><body><p><table></table></body></html>
-#errors
-Not known
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <table>
-
-#data
-<p><table></table>
-#errors
-Not known
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <table>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests4.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests4.dat
deleted file mode 100644
index 3c506326d..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests4.dat
+++ /dev/null
@@ -1,59 +0,0 @@
-#data
-direct div content
-#errors
-#document-fragment
-div
-#document
-| "direct div content"
-
-#data
-direct textarea content
-#errors
-#document-fragment
-textarea
-#document
-| "direct textarea content"
-
-#data
-textarea content with <em>pseudo</em> <foo>markup
-#errors
-#document-fragment
-textarea
-#document
-| "textarea content with <em>pseudo</em> <foo>markup"
-
-#data
-this is &#x0043;DATA inside a <style> element
-#errors
-#document-fragment
-style
-#document
-| "this is &#x0043;DATA inside a <style> element"
-
-#data
-</plaintext>
-#errors
-#document-fragment
-plaintext
-#document
-| "</plaintext>"
-
-#data
-setting html's innerHTML
-#errors
-Line: 1 Col: 24 Unexpected EOF in inner html mode.
-#document-fragment
-html
-#document
-| <head>
-| <body>
-| "setting html's innerHTML"
-
-#data
-<title>setting head's innerHTML</title>
-#errors
-#document-fragment
-head
-#document
-| <title>
-| "setting head's innerHTML"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests5.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests5.dat
deleted file mode 100644
index d7b5128a4..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests5.dat
+++ /dev/null
@@ -1,191 +0,0 @@
-#data
-<style> <!-- </style>x
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected end of file. Expected end tag (style).
-#document
-| <html>
-| <head>
-| <style>
-| " <!-- "
-| <body>
-| "x"
-
-#data
-<style> <!-- </style> --> </style>x
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <style>
-| " <!-- "
-| " "
-| <body>
-| "--> x"
-
-#data
-<style> <!--> </style>x
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <style>
-| " <!--> "
-| <body>
-| "x"
-
-#data
-<style> <!---> </style>x
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <style>
-| " <!---> "
-| <body>
-| "x"
-
-#data
-<iframe> <!---> </iframe>x
-#errors
-Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <iframe>
-| " <!---> "
-| "x"
-
-#data
-<iframe> <!--- </iframe>->x</iframe> --> </iframe>x
-#errors
-Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <iframe>
-| " <!--- "
-| "->x --> x"
-
-#data
-<script> <!-- </script> --> </script>x
-#errors
-Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <script>
-| " <!-- "
-| " "
-| <body>
-| "--> x"
-
-#data
-<title> <!-- </title> --> </title>x
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <title>
-| " <!-- "
-| " "
-| <body>
-| "--> x"
-
-#data
-<textarea> <!--- </textarea>->x</textarea> --> </textarea>x
-#errors
-Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <textarea>
-| " <!--- "
-| "->x --> x"
-
-#data
-<style> <!</-- </style>x
-#errors
-Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <style>
-| " <!</-- "
-| <body>
-| "x"
-
-#data
-<p><xmp></xmp>
-#errors
-XXX: Unknown
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <xmp>
-
-#data
-<xmp> <!-- > --> </xmp>
-#errors
-Line: 1 Col: 5 Unexpected start tag (xmp). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <xmp>
-| " <!-- > --> "
-
-#data
-<title>&amp;</title>
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <title>
-| "&"
-| <body>
-
-#data
-<title><!--&amp;--></title>
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <title>
-| "<!--&-->"
-| <body>
-
-#data
-<title><!--</title>
-#errors
-Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE.
-Line: 1 Col: 19 Unexpected end of file. Expected end tag (title).
-#document
-| <html>
-| <head>
-| <title>
-| "<!--"
-| <body>
-
-#data
-<noscript><!--</noscript>--></noscript>
-#errors
-Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <noscript>
-| "<!--"
-| <body>
-| "-->"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests6.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests6.dat
deleted file mode 100644
index f28ece4fb..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests6.dat
+++ /dev/null
@@ -1,663 +0,0 @@
-#data
-<!doctype html></head> <head>
-#errors
-Line: 1 Col: 29 Unexpected start tag head. Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| " "
-| <body>
-
-#data
-<!doctype html><form><div></form><div>
-#errors
-33: End tag "form" seen but there were unclosed elements.
-38: End of file seen and there were open elements.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <form>
-| <div>
-| <div>
-
-#data
-<!doctype html><title>&amp;</title>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <title>
-| "&"
-| <body>
-
-#data
-<!doctype html><title><!--&amp;--></title>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <title>
-| "<!--&-->"
-| <body>
-
-#data
-<!doctype>
-#errors
-Line: 1 Col: 9 No space after literal string 'DOCTYPE'.
-Line: 1 Col: 10 Unexpected > character. Expected DOCTYPE name.
-Line: 1 Col: 10 Erroneous DOCTYPE.
-#document
-| <!DOCTYPE >
-| <html>
-| <head>
-| <body>
-
-#data
-<!---x
-#errors
-Line: 1 Col: 6 Unexpected end of file in comment.
-Line: 1 Col: 6 Unexpected End of file. Expected DOCTYPE.
-#document
-| <!-- -x -->
-| <html>
-| <head>
-| <body>
-
-#data
-<body>
-<div>
-#errors
-Line: 1 Col: 6 Unexpected start tag (body).
-Line: 2 Col: 5 Expected closing tag. Unexpected end of file.
-#document-fragment
-div
-#document
-| "
-"
-| <div>
-
-#data
-<frameset></frameset>
-foo
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-Line: 2 Col: 3 Unexpected non-space characters in the after frameset phase. Ignored.
-#document
-| <html>
-| <head>
-| <frameset>
-| "
-"
-
-#data
-<frameset></frameset>
-<noframes>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-Line: 2 Col: 10 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <frameset>
-| "
-"
-| <noframes>
-
-#data
-<frameset></frameset>
-<div>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-Line: 2 Col: 5 Unexpected start tag (div) in the after frameset phase. Ignored.
-#document
-| <html>
-| <head>
-| <frameset>
-| "
-"
-
-#data
-<frameset></frameset>
-</html>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <frameset>
-| "
-"
-
-#data
-<frameset></frameset>
-</div>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-Line: 2 Col: 6 Unexpected end tag (div) in the after frameset phase. Ignored.
-#document
-| <html>
-| <head>
-| <frameset>
-| "
-"
-
-#data
-<form><form>
-#errors
-Line: 1 Col: 6 Unexpected start tag (form). Expected DOCTYPE.
-Line: 1 Col: 12 Unexpected start tag (form).
-Line: 1 Col: 12 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <form>
-
-#data
-<button><button>
-#errors
-Line: 1 Col: 8 Unexpected start tag (button). Expected DOCTYPE.
-Line: 1 Col: 16 Unexpected start tag (button) implies end tag (button).
-Line: 1 Col: 16 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <button>
-| <button>
-
-#data
-<table><tr><td></th>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected end tag (th). Ignored.
-Line: 1 Col: 20 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<table><caption><td>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected end tag (td). Ignored.
-Line: 1 Col: 20 Unexpected table cell start tag (td) in the table body phase.
-Line: 1 Col: 20 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<table><caption><div>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 21 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <div>
-
-#data
-</caption><div>
-#errors
-Line: 1 Col: 10 Unexpected end tag (caption). Ignored.
-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
-#document-fragment
-caption
-#document
-| <div>
-
-#data
-<table><caption><div></caption>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 31 Unexpected end tag (caption). Missing end tag (div).
-Line: 1 Col: 31 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <div>
-
-#data
-<table><caption></table>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 24 Unexpected end table tag in caption. Generates implied end caption.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-
-#data
-</table><div>
-#errors
-Line: 1 Col: 8 Unexpected end table tag in caption. Generates implied end caption.
-Line: 1 Col: 8 Unexpected end tag (caption). Ignored.
-Line: 1 Col: 13 Expected closing tag. Unexpected end of file.
-#document-fragment
-caption
-#document
-| <div>
-
-#data
-<table><caption></body></col></colgroup></html></tbody></td></tfoot></th></thead></tr>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 23 Unexpected end tag (body). Ignored.
-Line: 1 Col: 29 Unexpected end tag (col). Ignored.
-Line: 1 Col: 40 Unexpected end tag (colgroup). Ignored.
-Line: 1 Col: 47 Unexpected end tag (html). Ignored.
-Line: 1 Col: 55 Unexpected end tag (tbody). Ignored.
-Line: 1 Col: 60 Unexpected end tag (td). Ignored.
-Line: 1 Col: 68 Unexpected end tag (tfoot). Ignored.
-Line: 1 Col: 73 Unexpected end tag (th). Ignored.
-Line: 1 Col: 81 Unexpected end tag (thead). Ignored.
-Line: 1 Col: 86 Unexpected end tag (tr). Ignored.
-Line: 1 Col: 86 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-
-#data
-<table><caption><div></div>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 27 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <div>
-
-#data
-<table><tr><td></body></caption></col></colgroup></html>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected end tag (body). Ignored.
-Line: 1 Col: 32 Unexpected end tag (caption). Ignored.
-Line: 1 Col: 38 Unexpected end tag (col). Ignored.
-Line: 1 Col: 49 Unexpected end tag (colgroup). Ignored.
-Line: 1 Col: 56 Unexpected end tag (html). Ignored.
-Line: 1 Col: 56 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-</table></tbody></tfoot></thead></tr><div>
-#errors
-Line: 1 Col: 8 Unexpected end tag (table). Ignored.
-Line: 1 Col: 16 Unexpected end tag (tbody). Ignored.
-Line: 1 Col: 24 Unexpected end tag (tfoot). Ignored.
-Line: 1 Col: 32 Unexpected end tag (thead). Ignored.
-Line: 1 Col: 37 Unexpected end tag (tr). Ignored.
-Line: 1 Col: 42 Expected closing tag. Unexpected end of file.
-#document-fragment
-td
-#document
-| <div>
-
-#data
-<table><colgroup>foo
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 20 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| "foo"
-| <table>
-| <colgroup>
-
-#data
-foo<col>
-#errors
-Line: 1 Col: 3 Unexpected end tag (colgroup). Ignored.
-#document-fragment
-colgroup
-#document
-| <col>
-
-#data
-<table><colgroup></col>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 23 This element (col) has no end tag.
-Line: 1 Col: 23 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <colgroup>
-
-#data
-<frameset><div>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-Line: 1 Col: 15 Unexpected start tag token (div) in the frameset phase. Ignored.
-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <frameset>
-
-#data
-</frameset><frame>
-#errors
-Line: 1 Col: 11 Unexpected end tag token (frameset) in the frameset phase (innerHTML).
-#document-fragment
-frameset
-#document
-| <frame>
-
-#data
-<frameset></div>
-#errors
-Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE.
-Line: 1 Col: 16 Unexpected end tag token (div) in the frameset phase. Ignored.
-Line: 1 Col: 16 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <frameset>
-
-#data
-</body><div>
-#errors
-Line: 1 Col: 7 Unexpected end tag (body). Ignored.
-Line: 1 Col: 12 Expected closing tag. Unexpected end of file.
-#document-fragment
-body
-#document
-| <div>
-
-#data
-<table><tr><div>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 16 Unexpected start tag (div) in table context caused voodoo mode.
-Line: 1 Col: 16 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <table>
-| <tbody>
-| <tr>
-
-#data
-</tr><td>
-#errors
-Line: 1 Col: 5 Unexpected end tag (tr). Ignored.
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-</tbody></tfoot></thead><td>
-#errors
-Line: 1 Col: 8 Unexpected end tag (tbody). Ignored.
-Line: 1 Col: 16 Unexpected end tag (tfoot). Ignored.
-Line: 1 Col: 24 Unexpected end tag (thead). Ignored.
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<table><tr><div><td>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 16 Unexpected start tag (div) in table context caused voodoo mode.
-Line: 1 Col: 20 Unexpected implied end tag (div) in the table row phase.
-Line: 1 Col: 20 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<caption><col><colgroup><tbody><tfoot><thead><tr>
-#errors
-Line: 1 Col: 9 Unexpected start tag (caption).
-Line: 1 Col: 14 Unexpected start tag (col).
-Line: 1 Col: 24 Unexpected start tag (colgroup).
-Line: 1 Col: 31 Unexpected start tag (tbody).
-Line: 1 Col: 38 Unexpected start tag (tfoot).
-Line: 1 Col: 45 Unexpected start tag (thead).
-Line: 1 Col: 49 Unexpected end of file. Expected table content.
-#document-fragment
-tbody
-#document
-| <tr>
-
-#data
-<table><tbody></thead>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 22 Unexpected end tag (thead) in the table body phase. Ignored.
-Line: 1 Col: 22 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-
-#data
-</table><tr>
-#errors
-Line: 1 Col: 8 Unexpected end tag (table). Ignored.
-Line: 1 Col: 12 Unexpected end of file. Expected table content.
-#document-fragment
-tbody
-#document
-| <tr>
-
-#data
-<table><tbody></body></caption></col></colgroup></html></td></th></tr>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 21 Unexpected end tag (body) in the table body phase. Ignored.
-Line: 1 Col: 31 Unexpected end tag (caption) in the table body phase. Ignored.
-Line: 1 Col: 37 Unexpected end tag (col) in the table body phase. Ignored.
-Line: 1 Col: 48 Unexpected end tag (colgroup) in the table body phase. Ignored.
-Line: 1 Col: 55 Unexpected end tag (html) in the table body phase. Ignored.
-Line: 1 Col: 60 Unexpected end tag (td) in the table body phase. Ignored.
-Line: 1 Col: 65 Unexpected end tag (th) in the table body phase. Ignored.
-Line: 1 Col: 70 Unexpected end tag (tr) in the table body phase. Ignored.
-Line: 1 Col: 70 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-
-#data
-<table><tbody></div>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 20 Unexpected end tag (div) in table context caused voodoo mode.
-Line: 1 Col: 20 End tag (div) seen too early. Expected other end tag.
-Line: 1 Col: 20 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-
-#data
-<table><table>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected start tag (table) implies end tag (table).
-Line: 1 Col: 14 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <table>
-
-#data
-<table></body></caption></col></colgroup></html></tbody></td></tfoot></th></thead></tr>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 14 Unexpected end tag (body). Ignored.
-Line: 1 Col: 24 Unexpected end tag (caption). Ignored.
-Line: 1 Col: 30 Unexpected end tag (col). Ignored.
-Line: 1 Col: 41 Unexpected end tag (colgroup). Ignored.
-Line: 1 Col: 48 Unexpected end tag (html). Ignored.
-Line: 1 Col: 56 Unexpected end tag (tbody). Ignored.
-Line: 1 Col: 61 Unexpected end tag (td). Ignored.
-Line: 1 Col: 69 Unexpected end tag (tfoot). Ignored.
-Line: 1 Col: 74 Unexpected end tag (th). Ignored.
-Line: 1 Col: 82 Unexpected end tag (thead). Ignored.
-Line: 1 Col: 87 Unexpected end tag (tr). Ignored.
-Line: 1 Col: 87 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-
-#data
-</table><tr>
-#errors
-Line: 1 Col: 8 Unexpected end tag (table). Ignored.
-Line: 1 Col: 12 Unexpected end of file. Expected table content.
-#document-fragment
-table
-#document
-| <tbody>
-| <tr>
-
-#data
-<body></body></html>
-#errors
-Line: 1 Col: 20 Unexpected html end tag in inner html mode.
-Line: 1 Col: 20 Unexpected EOF in inner html mode.
-#document-fragment
-html
-#document
-| <head>
-| <body>
-
-#data
-<html><frameset></frameset></html>
-#errors
-Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <frameset>
-| " "
-
-#data
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"><html></html>
-#errors
-Line: 1 Col: 50 Erroneous DOCTYPE.
-Line: 1 Col: 63 Unexpected end tag (html) after the (implied) root element.
-#document
-| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "">
-| <html>
-| <head>
-| <body>
-
-#data
-<param><frameset></frameset>
-#errors
-Line: 1 Col: 7 Unexpected start tag (param). Expected DOCTYPE.
-Line: 1 Col: 17 Unexpected start tag (frameset).
-#document
-| <html>
-| <head>
-| <frameset>
-
-#data
-<source><frameset></frameset>
-#errors
-Line: 1 Col: 7 Unexpected start tag (source). Expected DOCTYPE.
-Line: 1 Col: 17 Unexpected start tag (frameset).
-#document
-| <html>
-| <head>
-| <frameset>
-
-#data
-<track><frameset></frameset>
-#errors
-Line: 1 Col: 7 Unexpected start tag (track). Expected DOCTYPE.
-Line: 1 Col: 17 Unexpected start tag (frameset).
-#document
-| <html>
-| <head>
-| <frameset>
-
-#data
-</html><frameset></frameset>
-#errors
-7: End tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-17: Stray “frameset” start tag.
-17: “frameset” start tag seen.
-#document
-| <html>
-| <head>
-| <frameset>
-
-#data
-</body><frameset></frameset>
-#errors
-7: End tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”.
-17: Stray “frameset” start tag.
-17: “frameset” start tag seen.
-#document
-| <html>
-| <head>
-| <frameset>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests7.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests7.dat
deleted file mode 100644
index f5193c660..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests7.dat
+++ /dev/null
@@ -1,390 +0,0 @@
-#data
-<!doctype html><body><title>X</title>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <title>
-| "X"
-
-#data
-<!doctype html><table><title>X</title></table>
-#errors
-Line: 1 Col: 29 Unexpected start tag (title) in table context caused voodoo mode.
-Line: 1 Col: 38 Unexpected end tag (title) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <title>
-| "X"
-| <table>
-
-#data
-<!doctype html><head></head><title>X</title>
-#errors
-Line: 1 Col: 35 Unexpected start tag (title) that can be in head. Moved.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <title>
-| "X"
-| <body>
-
-#data
-<!doctype html></head><title>X</title>
-#errors
-Line: 1 Col: 29 Unexpected start tag (title) that can be in head. Moved.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <title>
-| "X"
-| <body>
-
-#data
-<!doctype html><table><meta></table>
-#errors
-Line: 1 Col: 28 Unexpected start tag (meta) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <meta>
-| <table>
-
-#data
-<!doctype html><table>X<tr><td><table> <meta></table></table>
-#errors
-Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 45 Unexpected start tag (meta) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "X"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <meta>
-| <table>
-| " "
-
-#data
-<!doctype html><html> <head>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-
-#data
-<!doctype html> <head>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-
-#data
-<!doctype html><table><style> <tr>x </style> </table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <style>
-| " <tr>x "
-| " "
-
-#data
-<!doctype html><table><TBODY><script> <tr>x </script> </table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <script>
-| " <tr>x "
-| " "
-
-#data
-<!doctype html><p><applet><p>X</p></applet>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <p>
-| <applet>
-| <p>
-| "X"
-
-#data
-<!doctype html><listing>
-X</listing>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <listing>
-| "X"
-
-#data
-<!doctype html><select><input>X
-#errors
-Line: 1 Col: 30 Unexpected input start tag in the select phase.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <input>
-| "X"
-
-#data
-<!doctype html><select><select>X
-#errors
-Line: 1 Col: 31 Unexpected select start tag in the select phase treated as select end tag.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| "X"
-
-#data
-<!doctype html><table><input type=hidDEN></table>
-#errors
-Line: 1 Col: 41 Unexpected input with type hidden in table context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <input>
-| type="hidDEN"
-
-#data
-<!doctype html><table>X<input type=hidDEN></table>
-#errors
-Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| "X"
-| <table>
-| <input>
-| type="hidDEN"
-
-#data
-<!doctype html><table> <input type=hidDEN></table>
-#errors
-Line: 1 Col: 43 Unexpected input with type hidden in table context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| " "
-| <input>
-| type="hidDEN"
-
-#data
-<!doctype html><table> <input type='hidDEN'></table>
-#errors
-Line: 1 Col: 45 Unexpected input with type hidden in table context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| " "
-| <input>
-| type="hidDEN"
-
-#data
-<!doctype html><table><input type=" hidden"><input type=hidDEN></table>
-#errors
-Line: 1 Col: 44 Unexpected start tag (input) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <input>
-| type=" hidden"
-| <table>
-| <input>
-| type="hidDEN"
-
-#data
-<!doctype html><table><select>X<tr>
-#errors
-Line: 1 Col: 30 Unexpected start tag (select) in table context caused voodoo mode.
-Line: 1 Col: 35 Unexpected table element start tag (trs) in the select in table phase.
-Line: 1 Col: 35 Unexpected end of file. Expected table content.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| "X"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!doctype html><select>X</select>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| "X"
-
-#data
-<!DOCTYPE hTmL><html></html>
-#errors
-Line: 1 Col: 28 Unexpected end tag (html) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-
-#data
-<!DOCTYPE HTML><html></html>
-#errors
-Line: 1 Col: 28 Unexpected end tag (html) after the (implied) root element.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-
-#data
-<body>X</body></body>
-#errors
-Line: 1 Col: 21 Unexpected end tag token (body) in the after body phase.
-Line: 1 Col: 21 Unexpected EOF in inner html mode.
-#document-fragment
-html
-#document
-| <head>
-| <body>
-| "X"
-
-#data
-<div><p>a</x> b
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 13 Unexpected end tag (x). Ignored.
-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <p>
-| "a b"
-
-#data
-<table><tr><td><code></code> </table>
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <code>
-| " "
-
-#data
-<table><b><tr><td>aaa</td></tr>bbb</table>ccc
-#errors
-XXX: Fix me
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <b>
-| "bbb"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "aaa"
-| <b>
-| "ccc"
-
-#data
-A<table><tr> B</tr> B</table>
-#errors
-XXX: Fix me
-#document
-| <html>
-| <head>
-| <body>
-| "A B B"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-A<table><tr> B</tr> </em>C</table>
-#errors
-XXX: Fix me
-#document
-| <html>
-| <head>
-| <body>
-| "A BC"
-| <table>
-| <tbody>
-| <tr>
-| " "
-
-#data
-<select><keygen>
-#errors
-Not known
-#document
-| <html>
-| <head>
-| <body>
-| <select>
-| <keygen>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests8.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests8.dat
deleted file mode 100644
index 90e6c919e..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests8.dat
+++ /dev/null
@@ -1,148 +0,0 @@
-#data
-<div>
-<div></div>
-</span>x
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 3 Col: 7 Unexpected end tag (span). Ignored.
-Line: 3 Col: 8 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "
-"
-| <div>
-| "
-x"
-
-#data
-<div>x<div></div>
-</span>x
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 2 Col: 7 Unexpected end tag (span). Ignored.
-Line: 2 Col: 8 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "x"
-| <div>
-| "
-x"
-
-#data
-<div>x<div></div>x</span>x
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 25 Unexpected end tag (span). Ignored.
-Line: 1 Col: 26 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "x"
-| <div>
-| "xx"
-
-#data
-<div>x<div></div>y</span>z
-#errors
-Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE.
-Line: 1 Col: 25 Unexpected end tag (span). Ignored.
-Line: 1 Col: 26 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "x"
-| <div>
-| "yz"
-
-#data
-<table><div>x<div></div>x</span>x
-#errors
-Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE.
-Line: 1 Col: 12 Unexpected start tag (div) in table context caused voodoo mode.
-Line: 1 Col: 18 Unexpected start tag (div) in table context caused voodoo mode.
-Line: 1 Col: 24 Unexpected end tag (div) in table context caused voodoo mode.
-Line: 1 Col: 32 Unexpected end tag (span) in table context caused voodoo mode.
-Line: 1 Col: 32 Unexpected end tag (span). Ignored.
-Line: 1 Col: 33 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "x"
-| <div>
-| "xx"
-| <table>
-
-#data
-x<table>x
-#errors
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-Line: 1 Col: 9 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 9 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| "xx"
-| <table>
-
-#data
-x<table><table>x
-#errors
-Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE.
-Line: 1 Col: 15 Unexpected start tag (table) implies end tag (table).
-Line: 1 Col: 16 Unexpected non-space characters in table context caused voodoo mode.
-Line: 1 Col: 16 Unexpected end of file. Expected table content.
-#document
-| <html>
-| <head>
-| <body>
-| "x"
-| <table>
-| "x"
-| <table>
-
-#data
-<b>a<div></div><div></b>y
-#errors
-Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE.
-Line: 1 Col: 24 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 25 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| "a"
-| <div>
-| <div>
-| <b>
-| "y"
-
-#data
-<a><div><p></a>
-#errors
-Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE.
-Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm.
-Line: 1 Col: 15 Expected closing tag. Unexpected end of file.
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <div>
-| <a>
-| <p>
-| <a>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests9.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests9.dat
deleted file mode 100644
index 554e27aec..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests9.dat
+++ /dev/null
@@ -1,457 +0,0 @@
-#data
-<!DOCTYPE html><math></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-
-#data
-<!DOCTYPE html><body><math></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-
-#data
-<!DOCTYPE html><math><mi>
-#errors
-25: End of file in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-
-#data
-<!DOCTYPE html><math><annotation-xml><svg><u>
-#errors
-45: HTML start tag “u” in a foreign namespace context.
-45: End of file seen and there were open elements.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math annotation-xml>
-| <svg svg>
-| <u>
-
-#data
-<!DOCTYPE html><body><select><math></math></select>
-#errors
-Line: 1 Col: 35 Unexpected start tag token (math) in the select phase. Ignored.
-Line: 1 Col: 42 Unexpected end tag (math) in the select phase. Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-
-#data
-<!DOCTYPE html><body><select><option><math></math></option></select>
-#errors
-Line: 1 Col: 43 Unexpected start tag token (math) in the select phase. Ignored.
-Line: 1 Col: 50 Unexpected end tag (math) in the select phase. Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-
-#data
-<!DOCTYPE html><body><table><math></math></table>
-#errors
-Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode.
-Line: 1 Col: 41 Unexpected end tag (math) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <table>
-
-#data
-<!DOCTYPE html><body><table><math><mi>foo</mi></math></table>
-#errors
-Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode.
-Line: 1 Col: 46 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 53 Unexpected end tag (math) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| "foo"
-| <table>
-
-#data
-<!DOCTYPE html><body><table><math><mi>foo</mi><mi>bar</mi></math></table>
-#errors
-Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode.
-Line: 1 Col: 46 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 58 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 65 Unexpected end tag (math) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <table>
-
-#data
-<!DOCTYPE html><body><table><tbody><math><mi>foo</mi><mi>bar</mi></math></tbody></table>
-#errors
-Line: 1 Col: 41 Unexpected start tag (math) in table context caused voodoo mode.
-Line: 1 Col: 53 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 65 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 72 Unexpected end tag (math) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <table>
-| <tbody>
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><math><mi>foo</mi><mi>bar</mi></math></tr></tbody></table>
-#errors
-Line: 1 Col: 45 Unexpected start tag (math) in table context caused voodoo mode.
-Line: 1 Col: 57 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 69 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 76 Unexpected end tag (math) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><td><math><mi>foo</mi><mi>bar</mi></math></td></tr></tbody></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-
-#data
-<!DOCTYPE html><body><table><tbody><tr><td><math><mi>foo</mi><mi>bar</mi></math><p>baz</td></tr></tbody></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <p>
-| "baz"
-
-#data
-<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi></math><p>baz</caption></table>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <p>
-| "baz"
-
-#data
-<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
-#errors
-Line: 1 Col: 70 HTML start tag "p" in a foreign namespace context.
-Line: 1 Col: 81 Unexpected end table tag in caption. Generates implied end caption.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <p>
-| "baz"
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi>baz</table><p>quux
-#errors
-Line: 1 Col: 78 Unexpected end table tag in caption. Generates implied end caption.
-Line: 1 Col: 78 Unexpected end tag (caption). Missing end tag (math).
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <caption>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| "baz"
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body><table><colgroup><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
-#errors
-Line: 1 Col: 44 Unexpected start tag (math) in table context caused voodoo mode.
-Line: 1 Col: 56 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 68 Unexpected end tag (mi) in table context caused voodoo mode.
-Line: 1 Col: 71 HTML start tag "p" in a foreign namespace context.
-Line: 1 Col: 71 Unexpected start tag (p) in table context caused voodoo mode.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <p>
-| "baz"
-| <table>
-| <colgroup>
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body><table><tr><td><select><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
-#errors
-Line: 1 Col: 50 Unexpected start tag token (math) in the select phase. Ignored.
-Line: 1 Col: 54 Unexpected start tag token (mi) in the select phase. Ignored.
-Line: 1 Col: 62 Unexpected end tag (mi) in the select phase. Ignored.
-Line: 1 Col: 66 Unexpected start tag token (mi) in the select phase. Ignored.
-Line: 1 Col: 74 Unexpected end tag (mi) in the select phase. Ignored.
-Line: 1 Col: 77 Unexpected start tag token (p) in the select phase. Ignored.
-Line: 1 Col: 88 Unexpected table element end tag (tables) in the select in table phase.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <select>
-| "foobarbaz"
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body><table><select><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux
-#errors
-Line: 1 Col: 36 Unexpected start tag (select) in table context caused voodoo mode.
-Line: 1 Col: 42 Unexpected start tag token (math) in the select phase. Ignored.
-Line: 1 Col: 46 Unexpected start tag token (mi) in the select phase. Ignored.
-Line: 1 Col: 54 Unexpected end tag (mi) in the select phase. Ignored.
-Line: 1 Col: 58 Unexpected start tag token (mi) in the select phase. Ignored.
-Line: 1 Col: 66 Unexpected end tag (mi) in the select phase. Ignored.
-Line: 1 Col: 69 Unexpected start tag token (p) in the select phase. Ignored.
-Line: 1 Col: 80 Unexpected table element end tag (tables) in the select in table phase.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <select>
-| "foobarbaz"
-| <table>
-| <p>
-| "quux"
-
-#data
-<!DOCTYPE html><body></body></html><math><mi>foo</mi><mi>bar</mi><p>baz
-#errors
-Line: 1 Col: 41 Unexpected start tag (math).
-Line: 1 Col: 68 HTML start tag "p" in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <p>
-| "baz"
-
-#data
-<!DOCTYPE html><body></body><math><mi>foo</mi><mi>bar</mi><p>baz
-#errors
-Line: 1 Col: 34 Unexpected start tag token (math) in the after body phase.
-Line: 1 Col: 61 HTML start tag "p" in a foreign namespace context.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mi>
-| "foo"
-| <math mi>
-| "bar"
-| <p>
-| "baz"
-
-#data
-<!DOCTYPE html><frameset><math><mi></mi><mi></mi><p><span>
-#errors
-Line: 1 Col: 31 Unexpected start tag token (math) in the frameset phase. Ignored.
-Line: 1 Col: 35 Unexpected start tag token (mi) in the frameset phase. Ignored.
-Line: 1 Col: 40 Unexpected end tag token (mi) in the frameset phase. Ignored.
-Line: 1 Col: 44 Unexpected start tag token (mi) in the frameset phase. Ignored.
-Line: 1 Col: 49 Unexpected end tag token (mi) in the frameset phase. Ignored.
-Line: 1 Col: 52 Unexpected start tag token (p) in the frameset phase. Ignored.
-Line: 1 Col: 58 Unexpected start tag token (span) in the frameset phase. Ignored.
-Line: 1 Col: 58 Expected closing tag. Unexpected end of file.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!DOCTYPE html><frameset></frameset><math><mi></mi><mi></mi><p><span>
-#errors
-Line: 1 Col: 42 Unexpected start tag (math) in the after frameset phase. Ignored.
-Line: 1 Col: 46 Unexpected start tag (mi) in the after frameset phase. Ignored.
-Line: 1 Col: 51 Unexpected end tag (mi) in the after frameset phase. Ignored.
-Line: 1 Col: 55 Unexpected start tag (mi) in the after frameset phase. Ignored.
-Line: 1 Col: 60 Unexpected end tag (mi) in the after frameset phase. Ignored.
-Line: 1 Col: 63 Unexpected start tag (p) in the after frameset phase. Ignored.
-Line: 1 Col: 69 Unexpected start tag (span) in the after frameset phase. Ignored.
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!DOCTYPE html><body xlink:href=foo><math xlink:href=foo></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| xlink:href="foo"
-| <math math>
-| xlink href="foo"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo></mi></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| xlink:href="foo"
-| xml:lang="en"
-| <math math>
-| <math mi>
-| xlink href="foo"
-| xml lang="en"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo /></math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| xlink:href="foo"
-| xml:lang="en"
-| <math math>
-| <math mi>
-| xlink href="foo"
-| xml lang="en"
-
-#data
-<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo />bar</math>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| xlink:href="foo"
-| xml:lang="en"
-| <math math>
-| <math mi>
-| xlink href="foo"
-| xml lang="en"
-| "bar"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat
deleted file mode 100644
index 6c78661e0..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat
+++ /dev/null
@@ -1,741 +0,0 @@
-#data
-<body><span>
-#errors
-#document-fragment
-body
-#document
-| <span>
-
-#data
-<span><body>
-#errors
-#document-fragment
-body
-#document
-| <span>
-
-#data
-<span><body>
-#errors
-#document-fragment
-div
-#document
-| <span>
-
-#data
-<body><span>
-#errors
-#document-fragment
-html
-#document
-| <head>
-| <body>
-| <span>
-
-#data
-<frameset><span>
-#errors
-#document-fragment
-body
-#document
-| <span>
-
-#data
-<span><frameset>
-#errors
-#document-fragment
-body
-#document
-| <span>
-
-#data
-<span><frameset>
-#errors
-#document-fragment
-div
-#document
-| <span>
-
-#data
-<frameset><span>
-#errors
-#document-fragment
-html
-#document
-| <head>
-| <frameset>
-
-#data
-<table><tr>
-#errors
-#document-fragment
-table
-#document
-| <tbody>
-| <tr>
-
-#data
-</table><tr>
-#errors
-#document-fragment
-table
-#document
-| <tbody>
-| <tr>
-
-#data
-<a>
-#errors
-#document-fragment
-table
-#document
-| <a>
-
-#data
-<a>
-#errors
-#document-fragment
-table
-#document
-| <a>
-
-#data
-<a><caption>a
-#errors
-#document-fragment
-table
-#document
-| <a>
-| <caption>
-| "a"
-
-#data
-<a><colgroup><col>
-#errors
-#document-fragment
-table
-#document
-| <a>
-| <colgroup>
-| <col>
-
-#data
-<a><tbody><tr>
-#errors
-#document-fragment
-table
-#document
-| <a>
-| <tbody>
-| <tr>
-
-#data
-<a><tfoot><tr>
-#errors
-#document-fragment
-table
-#document
-| <a>
-| <tfoot>
-| <tr>
-
-#data
-<a><thead><tr>
-#errors
-#document-fragment
-table
-#document
-| <a>
-| <thead>
-| <tr>
-
-#data
-<a><tr>
-#errors
-#document-fragment
-table
-#document
-| <a>
-| <tbody>
-| <tr>
-
-#data
-<a><th>
-#errors
-#document-fragment
-table
-#document
-| <a>
-| <tbody>
-| <tr>
-| <th>
-
-#data
-<a><td>
-#errors
-#document-fragment
-table
-#document
-| <a>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<table></table><tbody>
-#errors
-#document-fragment
-caption
-#document
-| <table>
-
-#data
-</table><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-
-#data
-<span></table>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-
-#data
-</caption><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-
-#data
-<span></caption><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><caption><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><col><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><colgroup><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><html><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><tbody><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><td><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><tfoot><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><thead><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><th><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span><tr><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-<span></table><span>
-#errors
-#document-fragment
-caption
-#document
-| <span>
-| <span>
-
-#data
-</colgroup><col>
-#errors
-#document-fragment
-colgroup
-#document
-| <col>
-
-#data
-<a><col>
-#errors
-#document-fragment
-colgroup
-#document
-| <col>
-
-#data
-<caption><a>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-
-#data
-<col><a>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-
-#data
-<colgroup><a>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-
-#data
-<tbody><a>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-
-#data
-<tfoot><a>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-
-#data
-<thead><a>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-
-#data
-</table><a>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-
-#data
-<a><tr>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-| <tr>
-
-#data
-<a><td>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-| <tr>
-| <td>
-
-#data
-<a><td>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-| <tr>
-| <td>
-
-#data
-<a><td>
-#errors
-#document-fragment
-tbody
-#document
-| <a>
-| <tr>
-| <td>
-
-#data
-<td><table><tbody><a><tr>
-#errors
-#document-fragment
-tbody
-#document
-| <tr>
-| <td>
-| <a>
-| <table>
-| <tbody>
-| <tr>
-
-#data
-</tr><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<td><table><a><tr></tr><tr>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-| <a>
-| <table>
-| <tbody>
-| <tr>
-| <tr>
-
-#data
-<caption><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<col><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<colgroup><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<tbody><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<tfoot><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<thead><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<tr><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-</table><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-
-#data
-<td><table></table><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-| <table>
-| <td>
-
-#data
-<td><table></table><td>
-#errors
-#document-fragment
-tr
-#document
-| <td>
-| <table>
-| <td>
-
-#data
-<caption><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-<col><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-<colgroup><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-<tbody><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-<tfoot><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-<th><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-<thead><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-<tr><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-</table><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-</tbody><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-</td><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-</tfoot><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-</thead><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-</th><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-</tr><a>
-#errors
-#document-fragment
-td
-#document
-| <a>
-
-#data
-<table><td><td>
-#errors
-#document-fragment
-td
-#document
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <td>
-
-#data
-</select><option>
-#errors
-#document-fragment
-select
-#document
-| <option>
-
-#data
-<input><option>
-#errors
-#document-fragment
-select
-#document
-| <option>
-
-#data
-<keygen><option>
-#errors
-#document-fragment
-select
-#document
-| <option>
-
-#data
-<textarea><option>
-#errors
-#document-fragment
-select
-#document
-| <option>
-
-#data
-</html><!--abc-->
-#errors
-#document-fragment
-html
-#document
-| <head>
-| <body>
-| <!-- abc -->
-
-#data
-</frameset><frame>
-#errors
-#document-fragment
-frameset
-#document
-| <frame>
-
-#data
-#errors
-#document-fragment
-html
-#document
-| <head>
-| <body>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tricky01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tricky01.dat
deleted file mode 100644
index 084199244..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/tricky01.dat
+++ /dev/null
@@ -1,261 +0,0 @@
-#data
-<b><p>Bold </b> Not bold</p>
-Also not bold.
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <b>
-| <p>
-| <b>
-| "Bold "
-| " Not bold"
-| "
-Also not bold."
-
-#data
-<html>
-<font color=red><i>Italic and Red<p>Italic and Red </font> Just italic.</p> Italic only.</i> Plain
-<p>I should not be red. <font color=red>Red. <i>Italic and red.</p>
-<p>Italic and red. </i> Red.</font> I should not be red.</p>
-<b>Bold <i>Bold and italic</b> Only Italic </i> Plain
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <font>
-| color="red"
-| <i>
-| "Italic and Red"
-| <i>
-| <p>
-| <font>
-| color="red"
-| "Italic and Red "
-| " Just italic."
-| " Italic only."
-| " Plain
-"
-| <p>
-| "I should not be red. "
-| <font>
-| color="red"
-| "Red. "
-| <i>
-| "Italic and red."
-| <font>
-| color="red"
-| <i>
-| "
-"
-| <p>
-| <font>
-| color="red"
-| <i>
-| "Italic and red. "
-| " Red."
-| " I should not be red."
-| "
-"
-| <b>
-| "Bold "
-| <i>
-| "Bold and italic"
-| <i>
-| " Only Italic "
-| " Plain"
-
-#data
-<html><body>
-<p><font size="7">First paragraph.</p>
-<p>Second paragraph.</p></font>
-<b><p><i>Bold and Italic</b> Italic</p>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "
-"
-| <p>
-| <font>
-| size="7"
-| "First paragraph."
-| <font>
-| size="7"
-| "
-"
-| <p>
-| "Second paragraph."
-| "
-"
-| <b>
-| <p>
-| <b>
-| <i>
-| "Bold and Italic"
-| <i>
-| " Italic"
-
-#data
-<html>
-<dl>
-<dt><b>Boo
-<dd>Goo?
-</dl>
-</html>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <dl>
-| "
-"
-| <dt>
-| <b>
-| "Boo
-"
-| <dd>
-| <b>
-| "Goo?
-"
-| <b>
-| "
-"
-
-#data
-<html><body>
-<label><a><div>Hello<div>World</div></a></label>
-</body></html>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "
-"
-| <label>
-| <a>
-| <div>
-| <a>
-| "Hello"
-| <div>
-| "World"
-| "
-"
-
-#data
-<table><center> <font>a</center> <img> <tr><td> </td> </tr> </table>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <center>
-| " "
-| <font>
-| "a"
-| <font>
-| <img>
-| " "
-| <table>
-| " "
-| <tbody>
-| <tr>
-| <td>
-| " "
-| " "
-| " "
-
-#data
-<table><tr><p><a><p>You should see this text.
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| <a>
-| <p>
-| <a>
-| "You should see this text."
-| <table>
-| <tbody>
-| <tr>
-
-#data
-<TABLE>
-<TR>
-<CENTER><CENTER><TD></TD></TR><TR>
-<FONT>
-<TABLE><tr></tr></TABLE>
-</P>
-<a></font><font></a>
-This page contains an insanely badly-nested tag sequence.
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <center>
-| <center>
-| <font>
-| "
-"
-| <table>
-| "
-"
-| <tbody>
-| <tr>
-| "
-"
-| <td>
-| <tr>
-| "
-"
-| <table>
-| <tbody>
-| <tr>
-| <font>
-| "
-"
-| <p>
-| "
-"
-| <a>
-| <a>
-| <font>
-| <font>
-| "
-This page contains an insanely badly-nested tag sequence."
-
-#data
-<html>
-<body>
-<b><nobr><div>This text is in a div inside a nobr</nobr>More text that should not be in the nobr, i.e., the
-nobr should have closed the div inside it implicitly. </b><pre>A pre tag outside everything else.</pre>
-</body>
-</html>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "
-"
-| <b>
-| <nobr>
-| <div>
-| <b>
-| <nobr>
-| "This text is in a div inside a nobr"
-| "More text that should not be in the nobr, i.e., the
-nobr should have closed the div inside it implicitly. "
-| <pre>
-| "A pre tag outside everything else."
-| "
-
-"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/webkit01.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/webkit01.dat
deleted file mode 100644
index 9d425e99d..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/webkit01.dat
+++ /dev/null
@@ -1,610 +0,0 @@
-#data
-Test
-#errors
-Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE.
-#document
-| <html>
-| <head>
-| <body>
-| "Test"
-
-#data
-<div></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-
-#data
-<div>Test</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "Test"
-
-#data
-<di
-#errors
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<div>Hello</div>
-<script>
-console.log("PASS");
-</script>
-<div>Bye</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "Hello"
-| "
-"
-| <script>
-| "
-console.log("PASS");
-"
-| "
-"
-| <div>
-| "Bye"
-
-#data
-<div foo="bar">Hello</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| foo="bar"
-| "Hello"
-
-#data
-<div>Hello</div>
-<script>
-console.log("FOO<span>BAR</span>BAZ");
-</script>
-<div>Bye</div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| "Hello"
-| "
-"
-| <script>
-| "
-console.log("FOO<span>BAR</span>BAZ");
-"
-| "
-"
-| <div>
-| "Bye"
-
-#data
-<foo bar="baz"></foo><potato quack="duck"></potato>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <foo>
-| bar="baz"
-| <potato>
-| quack="duck"
-
-#data
-<foo bar="baz"><potato quack="duck"></potato></foo>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <foo>
-| bar="baz"
-| <potato>
-| quack="duck"
-
-#data
-<foo></foo bar="baz"><potato></potato quack="duck">
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <foo>
-| <potato>
-
-#data
-</ tttt>
-#errors
-#document
-| <!-- tttt -->
-| <html>
-| <head>
-| <body>
-
-#data
-<div FOO ><img><img></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| foo=""
-| <img>
-| <img>
-
-#data
-<p>Test</p<p>Test2</p>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| "TestTest2"
-
-#data
-<rdar://problem/6869687>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <rdar:>
-| 6869687=""
-| problem=""
-
-#data
-<A>test< /A>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| "test< /A>"
-
-#data
-&lt;
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "<"
-
-#data
-<body foo='bar'><body foo='baz' yo='mama'>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| foo="bar"
-| yo="mama"
-
-#data
-<body></br foo="bar"></body>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <br>
-
-#data
-<bdy><br foo="bar"></body>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <bdy>
-| <br>
-| foo="bar"
-
-#data
-<body></body></br foo="bar">
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <br>
-
-#data
-<bdy></body><br foo="bar">
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <bdy>
-| <br>
-| foo="bar"
-
-#data
-<html><body></body></html><!-- Hi there -->
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <!-- Hi there -->
-
-#data
-<html><body></body></html>x<!-- Hi there -->
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "x"
-| <!-- Hi there -->
-
-#data
-<html><body></body></html>x<!-- Hi there --></html><!-- Again -->
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "x"
-| <!-- Hi there -->
-| <!-- Again -->
-
-#data
-<html><body></body></html>x<!-- Hi there --></body></html><!-- Again -->
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "x"
-| <!-- Hi there -->
-| <!-- Again -->
-
-#data
-<html><body><ruby><div><rp>xx</rp></div></ruby></body></html>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <ruby>
-| <div>
-| <rp>
-| "xx"
-
-#data
-<html><body><ruby><div><rt>xx</rt></div></ruby></body></html>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <ruby>
-| <div>
-| <rt>
-| "xx"
-
-#data
-<html><frameset><!--1--><noframes>A</noframes><!--2--></frameset><!--3--><noframes>B</noframes><!--4--></html><!--5--><noframes>C</noframes><!--6-->
-#errors
-#document
-| <html>
-| <head>
-| <frameset>
-| <!-- 1 -->
-| <noframes>
-| "A"
-| <!-- 2 -->
-| <!-- 3 -->
-| <noframes>
-| "B"
-| <!-- 4 -->
-| <noframes>
-| "C"
-| <!-- 5 -->
-| <!-- 6 -->
-
-#data
-<select><option>A<select><option>B<select><option>C<select><option>D<select><option>E<select><option>F<select><option>G<select>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <select>
-| <option>
-| "A"
-| <option>
-| "B"
-| <select>
-| <option>
-| "C"
-| <option>
-| "D"
-| <select>
-| <option>
-| "E"
-| <option>
-| "F"
-| <select>
-| <option>
-| "G"
-
-#data
-<dd><dd><dt><dt><dd><li><li>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <dd>
-| <dd>
-| <dt>
-| <dt>
-| <dd>
-| <li>
-| <li>
-
-#data
-<div><b></div><div><nobr>a<nobr>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <b>
-| <div>
-| <b>
-| <nobr>
-| "a"
-| <nobr>
-
-#data
-<head></head>
-<body></body>
-#errors
-#document
-| <html>
-| <head>
-| "
-"
-| <body>
-
-#data
-<head></head> <style></style>ddd
-#errors
-#document
-| <html>
-| <head>
-| <style>
-| " "
-| <body>
-| "ddd"
-
-#data
-<kbd><table></kbd><col><select><tr>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <kbd>
-| <select>
-| <table>
-| <colgroup>
-| <col>
-| <tbody>
-| <tr>
-
-#data
-<kbd><table></kbd><col><select><tr></table><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <kbd>
-| <select>
-| <table>
-| <colgroup>
-| <col>
-| <tbody>
-| <tr>
-| <div>
-
-#data
-<a><li><style></style><title></title></a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <li>
-| <a>
-| <style>
-| <title>
-
-#data
-<font></p><p><meta><title></title></font>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <font>
-| <p>
-| <p>
-| <font>
-| <meta>
-| <title>
-
-#data
-<a><center><title></title><a>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <a>
-| <center>
-| <a>
-| <title>
-| <a>
-
-#data
-<svg><title><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg title>
-| <div>
-
-#data
-<svg><title><rect><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg title>
-| <rect>
-| <div>
-
-#data
-<svg><title><svg><div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg title>
-| <svg svg>
-| <div>
-
-#data
-<img <="" FAIL>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <img>
-| <=""
-| fail=""
-
-#data
-<ul><li><div id='foo'/>A</li><li>B<div>C</div></li></ul>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <ul>
-| <li>
-| <div>
-| id="foo"
-| "A"
-| <li>
-| "B"
-| <div>
-| "C"
-
-#data
-<svg><em><desc></em>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <em>
-| <desc>
-
-#data
-<table><tr><td><svg><desc><td></desc><circle>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| <svg svg>
-| <svg desc>
-| <td>
-| <circle>
-
-#data
-<svg><tfoot></mi><td>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <svg svg>
-| <svg tfoot>
-| <svg td>
-
-#data
-<math><mrow><mrow><mn>1</mn></mrow><mi>a</mi></mrow></math>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <math math>
-| <math mrow>
-| <math mrow>
-| <math mn>
-| "1"
-| <math mi>
-| "a"
-
-#data
-<!doctype html><input type="hidden"><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <frameset>
-
-#data
-<!doctype html><input type="button"><frameset>
-#errors
-#document
-| <!DOCTYPE html>
-| <html>
-| <head>
-| <body>
-| <input>
-| type="button"
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/webkit02.dat b/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/webkit02.dat
deleted file mode 100644
index 905783d3c..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/testdata/webkit/webkit02.dat
+++ /dev/null
@@ -1,159 +0,0 @@
-#data
-<foo bar=qux/>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <foo>
-| bar="qux/"
-
-#data
-<p id="status"><noscript><strong>A</strong></noscript><span>B</span></p>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <p>
-| id="status"
-| <noscript>
-| "<strong>A</strong>"
-| <span>
-| "B"
-
-#data
-<div><sarcasm><div></div></sarcasm></div>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <div>
-| <sarcasm>
-| <div>
-
-#data
-<html><body><img src="" border="0" alt="><div>A</div></body></html>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-
-#data
-<table><td></tbody>A
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| "A"
-| <table>
-| <tbody>
-| <tr>
-| <td>
-
-#data
-<table><td></thead>A
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "A"
-
-#data
-<table><td></tfoot>A
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <tbody>
-| <tr>
-| <td>
-| "A"
-
-#data
-<table><thead><td></tbody>A
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <table>
-| <thead>
-| <tr>
-| <td>
-| "A"
-
-#data
-<legend>test</legend>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <legend>
-| "test"
-
-#data
-<table><input>
-#errors
-#document
-| <html>
-| <head>
-| <body>
-| <input>
-| <table>
-
-#data
-<b><em><dcell><postfield><postfield><postfield><postfield><missing_glyph><missing_glyph><missing_glyph><missing_glyph><hkern><aside></b></em>
-#errors
-#document-fragment
-div
-#document
-| <b>
-| <em>
-| <dcell>
-| <postfield>
-| <postfield>
-| <postfield>
-| <postfield>
-| <missing_glyph>
-| <missing_glyph>
-| <missing_glyph>
-| <missing_glyph>
-| <hkern>
-| <aside>
-| <em>
-| <b>
-
-#data
-<isindex action="x">
-#errors
-#document-fragment
-table
-#document
-| <form>
-| action="x"
-| <hr>
-| <label>
-| "This is a searchable index. Enter search keywords: "
-| <input>
-| name="isindex"
-| <hr>
-
-#data
-<option><XH<optgroup></optgroup>
-#errors
-#document-fragment
-select
-#document
-| <option>
diff --git a/Godeps/_workspace/src/golang.org/x/net/html/token_test.go b/Godeps/_workspace/src/golang.org/x/net/html/token_test.go
deleted file mode 100644
index 20221c328..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/html/token_test.go
+++ /dev/null
@@ -1,748 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package html
-
-import (
- "bytes"
- "io"
- "io/ioutil"
- "reflect"
- "runtime"
- "strings"
- "testing"
-)
-
-type tokenTest struct {
- // A short description of the test case.
- desc string
- // The HTML to parse.
- html string
- // The string representations of the expected tokens, joined by '$'.
- golden string
-}
-
-var tokenTests = []tokenTest{
- {
- "empty",
- "",
- "",
- },
- // A single text node. The tokenizer should not break text nodes on whitespace,
- // nor should it normalize whitespace within a text node.
- {
- "text",
- "foo bar",
- "foo bar",
- },
- // An entity.
- {
- "entity",
- "one &lt; two",
- "one &lt; two",
- },
- // A start, self-closing and end tag. The tokenizer does not care if the start
- // and end tokens don't match; that is the job of the parser.
- {
- "tags",
- "<a>b<c/>d</e>",
- "<a>$b$<c/>$d$</e>",
- },
- // Angle brackets that aren't a tag.
- {
- "not a tag #0",
- "<",
- "&lt;",
- },
- {
- "not a tag #1",
- "</",
- "&lt;/",
- },
- {
- "not a tag #2",
- "</>",
- "<!---->",
- },
- {
- "not a tag #3",
- "a</>b",
- "a$<!---->$b",
- },
- {
- "not a tag #4",
- "</ >",
- "<!-- -->",
- },
- {
- "not a tag #5",
- "</.",
- "<!--.-->",
- },
- {
- "not a tag #6",
- "</.>",
- "<!--.-->",
- },
- {
- "not a tag #7",
- "a < b",
- "a &lt; b",
- },
- {
- "not a tag #8",
- "<.>",
- "&lt;.&gt;",
- },
- {
- "not a tag #9",
- "a<<<b>>>c",
- "a&lt;&lt;$<b>$&gt;&gt;c",
- },
- {
- "not a tag #10",
- "if x<0 and y < 0 then x*y>0",
- "if x&lt;0 and y &lt; 0 then x*y&gt;0",
- },
- {
- "not a tag #11",
- "<<p>",
- "&lt;$<p>",
- },
- // EOF in a tag name.
- {
- "tag name eof #0",
- "<a",
- "",
- },
- {
- "tag name eof #1",
- "<a ",
- "",
- },
- {
- "tag name eof #2",
- "a<b",
- "a",
- },
- {
- "tag name eof #3",
- "<a><b",
- "<a>",
- },
- {
- "tag name eof #4",
- `<a x`,
- ``,
- },
- // Some malformed tags that are missing a '>'.
- {
- "malformed tag #0",
- `<p</p>`,
- `<p< p="">`,
- },
- {
- "malformed tag #1",
- `<p </p>`,
- `<p <="" p="">`,
- },
- {
- "malformed tag #2",
- `<p id`,
- ``,
- },
- {
- "malformed tag #3",
- `<p id=`,
- ``,
- },
- {
- "malformed tag #4",
- `<p id=>`,
- `<p id="">`,
- },
- {
- "malformed tag #5",
- `<p id=0`,
- ``,
- },
- {
- "malformed tag #6",
- `<p id=0</p>`,
- `<p id="0&lt;/p">`,
- },
- {
- "malformed tag #7",
- `<p id="0</p>`,
- ``,
- },
- {
- "malformed tag #8",
- `<p id="0"</p>`,
- `<p id="0" <="" p="">`,
- },
- {
- "malformed tag #9",
- `<p></p id`,
- `<p>`,
- },
- // Raw text and RCDATA.
- {
- "basic raw text",
- "<script><a></b></script>",
- "<script>$&lt;a&gt;&lt;/b&gt;$</script>",
- },
- {
- "unfinished script end tag",
- "<SCRIPT>a</SCR",
- "<script>$a&lt;/SCR",
- },
- {
- "broken script end tag",
- "<SCRIPT>a</SCR ipt>",
- "<script>$a&lt;/SCR ipt&gt;",
- },
- {
- "EOF in script end tag",
- "<SCRIPT>a</SCRipt",
- "<script>$a&lt;/SCRipt",
- },
- {
- "scriptx end tag",
- "<SCRIPT>a</SCRiptx",
- "<script>$a&lt;/SCRiptx",
- },
- {
- "' ' completes script end tag",
- "<SCRIPT>a</SCRipt ",
- "<script>$a",
- },
- {
- "'>' completes script end tag",
- "<SCRIPT>a</SCRipt>",
- "<script>$a$</script>",
- },
- {
- "self-closing script end tag",
- "<SCRIPT>a</SCRipt/>",
- "<script>$a$</script>",
- },
- {
- "nested script tag",
- "<SCRIPT>a</SCRipt<script>",
- "<script>$a&lt;/SCRipt&lt;script&gt;",
- },
- {
- "script end tag after unfinished",
- "<SCRIPT>a</SCRipt</script>",
- "<script>$a&lt;/SCRipt$</script>",
- },
- {
- "script/style mismatched tags",
- "<script>a</style>",
- "<script>$a&lt;/style&gt;",
- },
- {
- "style element with entity",
- "<style>&apos;",
- "<style>$&amp;apos;",
- },
- {
- "textarea with tag",
- "<textarea><div></textarea>",
- "<textarea>$&lt;div&gt;$</textarea>",
- },
- {
- "title with tag and entity",
- "<title><b>K&amp;R C</b></title>",
- "<title>$&lt;b&gt;K&amp;R C&lt;/b&gt;$</title>",
- },
- // DOCTYPE tests.
- {
- "Proper DOCTYPE",
- "<!DOCTYPE html>",
- "<!DOCTYPE html>",
- },
- {
- "DOCTYPE with no space",
- "<!doctypehtml>",
- "<!DOCTYPE html>",
- },
- {
- "DOCTYPE with two spaces",
- "<!doctype html>",
- "<!DOCTYPE html>",
- },
- {
- "looks like DOCTYPE but isn't",
- "<!DOCUMENT html>",
- "<!--DOCUMENT html-->",
- },
- {
- "DOCTYPE at EOF",
- "<!DOCtype",
- "<!DOCTYPE >",
- },
- // XML processing instructions.
- {
- "XML processing instruction",
- "<?xml?>",
- "<!--?xml?-->",
- },
- // Comments.
- {
- "comment0",
- "abc<b><!-- skipme --></b>def",
- "abc$<b>$<!-- skipme -->$</b>$def",
- },
- {
- "comment1",
- "a<!-->z",
- "a$<!---->$z",
- },
- {
- "comment2",
- "a<!--->z",
- "a$<!---->$z",
- },
- {
- "comment3",
- "a<!--x>-->z",
- "a$<!--x>-->$z",
- },
- {
- "comment4",
- "a<!--x->-->z",
- "a$<!--x->-->$z",
- },
- {
- "comment5",
- "a<!>z",
- "a$<!---->$z",
- },
- {
- "comment6",
- "a<!->z",
- "a$<!----->$z",
- },
- {
- "comment7",
- "a<!---<>z",
- "a$<!---<>z-->",
- },
- {
- "comment8",
- "a<!--z",
- "a$<!--z-->",
- },
- {
- "comment9",
- "a<!--z-",
- "a$<!--z-->",
- },
- {
- "comment10",
- "a<!--z--",
- "a$<!--z-->",
- },
- {
- "comment11",
- "a<!--z---",
- "a$<!--z--->",
- },
- {
- "comment12",
- "a<!--z----",
- "a$<!--z---->",
- },
- {
- "comment13",
- "a<!--x--!>z",
- "a$<!--x-->$z",
- },
- // An attribute with a backslash.
- {
- "backslash",
- `<p id="a\"b">`,
- `<p id="a\" b"="">`,
- },
- // Entities, tag name and attribute key lower-casing, and whitespace
- // normalization within a tag.
- {
- "tricky",
- "<p \t\n iD=\"a&quot;B\" foo=\"bar\"><EM>te&lt;&amp;;xt</em></p>",
- `<p id="a&#34;B" foo="bar">$<em>$te&lt;&amp;;xt$</em>$</p>`,
- },
- // A nonexistent entity. Tokenizing and converting back to a string should
- // escape the "&" to become "&amp;".
- {
- "noSuchEntity",
- `<a b="c&noSuchEntity;d">&lt;&alsoDoesntExist;&`,
- `<a b="c&amp;noSuchEntity;d">$&lt;&amp;alsoDoesntExist;&amp;`,
- },
- {
- "entity without semicolon",
- `&notit;&notin;<a b="q=z&amp=5&notice=hello&not;=world">`,
- `¬it;∉$<a b="q=z&amp;amp=5&amp;notice=hello¬=world">`,
- },
- {
- "entity with digits",
- "&frac12;",
- "½",
- },
- // Attribute tests:
- // http://dev.w3.org/html5/pf-summary/Overview.html#attributes
- {
- "Empty attribute",
- `<input disabled FOO>`,
- `<input disabled="" foo="">`,
- },
- {
- "Empty attribute, whitespace",
- `<input disabled FOO >`,
- `<input disabled="" foo="">`,
- },
- {
- "Unquoted attribute value",
- `<input value=yes FOO=BAR>`,
- `<input value="yes" foo="BAR">`,
- },
- {
- "Unquoted attribute value, spaces",
- `<input value = yes FOO = BAR>`,
- `<input value="yes" foo="BAR">`,
- },
- {
- "Unquoted attribute value, trailing space",
- `<input value=yes FOO=BAR >`,
- `<input value="yes" foo="BAR">`,
- },
- {
- "Single-quoted attribute value",
- `<input value='yes' FOO='BAR'>`,
- `<input value="yes" foo="BAR">`,
- },
- {
- "Single-quoted attribute value, trailing space",
- `<input value='yes' FOO='BAR' >`,
- `<input value="yes" foo="BAR">`,
- },
- {
- "Double-quoted attribute value",
- `<input value="I'm an attribute" FOO="BAR">`,
- `<input value="I&#39;m an attribute" foo="BAR">`,
- },
- {
- "Attribute name characters",
- `<meta http-equiv="content-type">`,
- `<meta http-equiv="content-type">`,
- },
- {
- "Mixed attributes",
- `a<P V="0 1" w='2' X=3 y>z`,
- `a$<p v="0 1" w="2" x="3" y="">$z`,
- },
- {
- "Attributes with a solitary single quote",
- `<p id=can't><p id=won't>`,
- `<p id="can&#39;t">$<p id="won&#39;t">`,
- },
-}
-
-func TestTokenizer(t *testing.T) {
-loop:
- for _, tt := range tokenTests {
- z := NewTokenizer(strings.NewReader(tt.html))
- if tt.golden != "" {
- for i, s := range strings.Split(tt.golden, "$") {
- if z.Next() == ErrorToken {
- t.Errorf("%s token %d: want %q got error %v", tt.desc, i, s, z.Err())
- continue loop
- }
- actual := z.Token().String()
- if s != actual {
- t.Errorf("%s token %d: want %q got %q", tt.desc, i, s, actual)
- continue loop
- }
- }
- }
- z.Next()
- if z.Err() != io.EOF {
- t.Errorf("%s: want EOF got %q", tt.desc, z.Err())
- }
- }
-}
-
-func TestMaxBuffer(t *testing.T) {
- // Exceeding the maximum buffer size generates ErrBufferExceeded.
- z := NewTokenizer(strings.NewReader("<" + strings.Repeat("t", 10)))
- z.SetMaxBuf(5)
- tt := z.Next()
- if got, want := tt, ErrorToken; got != want {
- t.Fatalf("token type: got: %v want: %v", got, want)
- }
- if got, want := z.Err(), ErrBufferExceeded; got != want {
- t.Errorf("error type: got: %v want: %v", got, want)
- }
- if got, want := string(z.Raw()), "<tttt"; got != want {
- t.Fatalf("buffered before overflow: got: %q want: %q", got, want)
- }
-}
-
-func TestMaxBufferReconstruction(t *testing.T) {
- // Exceeding the maximum buffer size at any point while tokenizing permits
- // reconstructing the original input.
-tests:
- for _, test := range tokenTests {
- for maxBuf := 1; ; maxBuf++ {
- r := strings.NewReader(test.html)
- z := NewTokenizer(r)
- z.SetMaxBuf(maxBuf)
- var tokenized bytes.Buffer
- for {
- tt := z.Next()
- tokenized.Write(z.Raw())
- if tt == ErrorToken {
- if err := z.Err(); err != io.EOF && err != ErrBufferExceeded {
- t.Errorf("%s: unexpected error: %v", test.desc, err)
- }
- break
- }
- }
- // Anything tokenized along with untokenized input or data left in the reader.
- assembled, err := ioutil.ReadAll(io.MultiReader(&tokenized, bytes.NewReader(z.Buffered()), r))
- if err != nil {
- t.Errorf("%s: ReadAll: %v", test.desc, err)
- continue tests
- }
- if got, want := string(assembled), test.html; got != want {
- t.Errorf("%s: reassembled html:\n got: %q\nwant: %q", test.desc, got, want)
- continue tests
- }
- // EOF indicates that we completed tokenization and hence found the max
- // maxBuf that generates ErrBufferExceeded, so continue to the next test.
- if z.Err() == io.EOF {
- break
- }
- } // buffer sizes
- } // tests
-}
-
-func TestPassthrough(t *testing.T) {
- // Accumulating the raw output for each parse event should reconstruct the
- // original input.
- for _, test := range tokenTests {
- z := NewTokenizer(strings.NewReader(test.html))
- var parsed bytes.Buffer
- for {
- tt := z.Next()
- parsed.Write(z.Raw())
- if tt == ErrorToken {
- break
- }
- }
- if got, want := parsed.String(), test.html; got != want {
- t.Errorf("%s: parsed output:\n got: %q\nwant: %q", test.desc, got, want)
- }
- }
-}
-
-func TestBufAPI(t *testing.T) {
- s := "0<a>1</a>2<b>3<a>4<a>5</a>6</b>7</a>8<a/>9"
- z := NewTokenizer(bytes.NewBufferString(s))
- var result bytes.Buffer
- depth := 0
-loop:
- for {
- tt := z.Next()
- switch tt {
- case ErrorToken:
- if z.Err() != io.EOF {
- t.Error(z.Err())
- }
- break loop
- case TextToken:
- if depth > 0 {
- result.Write(z.Text())
- }
- case StartTagToken, EndTagToken:
- tn, _ := z.TagName()
- if len(tn) == 1 && tn[0] == 'a' {
- if tt == StartTagToken {
- depth++
- } else {
- depth--
- }
- }
- }
- }
- u := "14567"
- v := string(result.Bytes())
- if u != v {
- t.Errorf("TestBufAPI: want %q got %q", u, v)
- }
-}
-
-func TestConvertNewlines(t *testing.T) {
- testCases := map[string]string{
- "Mac\rDOS\r\nUnix\n": "Mac\nDOS\nUnix\n",
- "Unix\nMac\rDOS\r\n": "Unix\nMac\nDOS\n",
- "DOS\r\nDOS\r\nDOS\r\n": "DOS\nDOS\nDOS\n",
- "": "",
- "\n": "\n",
- "\n\r": "\n\n",
- "\r": "\n",
- "\r\n": "\n",
- "\r\n\n": "\n\n",
- "\r\n\r": "\n\n",
- "\r\n\r\n": "\n\n",
- "\r\r": "\n\n",
- "\r\r\n": "\n\n",
- "\r\r\n\n": "\n\n\n",
- "\r\r\r\n": "\n\n\n",
- "\r \n": "\n \n",
- "xyz": "xyz",
- }
- for in, want := range testCases {
- if got := string(convertNewlines([]byte(in))); got != want {
- t.Errorf("input %q: got %q, want %q", in, got, want)
- }
- }
-}
-
-func TestReaderEdgeCases(t *testing.T) {
- const s = "<p>An io.Reader can return (0, nil) or (n, io.EOF).</p>"
- testCases := []io.Reader{
- &zeroOneByteReader{s: s},
- &eofStringsReader{s: s},
- &stuckReader{},
- }
- for i, tc := range testCases {
- got := []TokenType{}
- z := NewTokenizer(tc)
- for {
- tt := z.Next()
- if tt == ErrorToken {
- break
- }
- got = append(got, tt)
- }
- if err := z.Err(); err != nil && err != io.EOF {
- if err != io.ErrNoProgress {
- t.Errorf("i=%d: %v", i, err)
- }
- continue
- }
- want := []TokenType{
- StartTagToken,
- TextToken,
- EndTagToken,
- }
- if !reflect.DeepEqual(got, want) {
- t.Errorf("i=%d: got %v, want %v", i, got, want)
- continue
- }
- }
-}
-
-// zeroOneByteReader is like a strings.Reader that alternates between
-// returning 0 bytes and 1 byte at a time.
-type zeroOneByteReader struct {
- s string
- n int
-}
-
-func (r *zeroOneByteReader) Read(p []byte) (int, error) {
- if len(p) == 0 {
- return 0, nil
- }
- if len(r.s) == 0 {
- return 0, io.EOF
- }
- r.n++
- if r.n%2 != 0 {
- return 0, nil
- }
- p[0], r.s = r.s[0], r.s[1:]
- return 1, nil
-}
-
-// eofStringsReader is like a strings.Reader but can return an (n, err) where
-// n > 0 && err != nil.
-type eofStringsReader struct {
- s string
-}
-
-func (r *eofStringsReader) Read(p []byte) (int, error) {
- n := copy(p, r.s)
- r.s = r.s[n:]
- if r.s != "" {
- return n, nil
- }
- return n, io.EOF
-}
-
-// stuckReader is an io.Reader that always returns no data and no error.
-type stuckReader struct{}
-
-func (*stuckReader) Read(p []byte) (int, error) {
- return 0, nil
-}
-
-const (
- rawLevel = iota
- lowLevel
- highLevel
-)
-
-func benchmarkTokenizer(b *testing.B, level int) {
- buf, err := ioutil.ReadFile("testdata/go1.html")
- if err != nil {
- b.Fatalf("could not read testdata/go1.html: %v", err)
- }
- b.SetBytes(int64(len(buf)))
- runtime.GC()
- b.ReportAllocs()
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- z := NewTokenizer(bytes.NewBuffer(buf))
- for {
- tt := z.Next()
- if tt == ErrorToken {
- if err := z.Err(); err != nil && err != io.EOF {
- b.Fatalf("tokenizer error: %v", err)
- }
- break
- }
- switch level {
- case rawLevel:
- // Calling z.Raw just returns the raw bytes of the token. It does
- // not unescape &lt; to <, or lower-case tag names and attribute keys.
- z.Raw()
- case lowLevel:
- // Caling z.Text, z.TagName and z.TagAttr returns []byte values
- // whose contents may change on the next call to z.Next.
- switch tt {
- case TextToken, CommentToken, DoctypeToken:
- z.Text()
- case StartTagToken, SelfClosingTagToken:
- _, more := z.TagName()
- for more {
- _, _, more = z.TagAttr()
- }
- case EndTagToken:
- z.TagName()
- }
- case highLevel:
- // Calling z.Token converts []byte values to strings whose validity
- // extend beyond the next call to z.Next.
- z.Token()
- }
- }
- }
-}
-
-func BenchmarkRawLevelTokenizer(b *testing.B) { benchmarkTokenizer(b, rawLevel) }
-func BenchmarkLowLevelTokenizer(b *testing.B) { benchmarkTokenizer(b, lowLevel) }
-func BenchmarkHighLevelTokenizer(b *testing.B) { benchmarkTokenizer(b, highLevel) }
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/exampledial_test.go b/Godeps/_workspace/src/golang.org/x/net/websocket/exampledial_test.go
deleted file mode 100644
index 72bb9d48e..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/exampledial_test.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package websocket_test
-
-import (
- "fmt"
- "log"
-
- "golang.org/x/net/websocket"
-)
-
-// This example demonstrates a trivial client.
-func ExampleDial() {
- origin := "http://localhost/"
- url := "ws://localhost:12345/ws"
- ws, err := websocket.Dial(url, "", origin)
- if err != nil {
- log.Fatal(err)
- }
- if _, err := ws.Write([]byte("hello, world!\n")); err != nil {
- log.Fatal(err)
- }
- var msg = make([]byte, 512)
- var n int
- if n, err = ws.Read(msg); err != nil {
- log.Fatal(err)
- }
- fmt.Printf("Received: %s.\n", msg[:n])
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/examplehandler_test.go b/Godeps/_workspace/src/golang.org/x/net/websocket/examplehandler_test.go
deleted file mode 100644
index f22a98fcd..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/examplehandler_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package websocket_test
-
-import (
- "io"
- "net/http"
-
- "golang.org/x/net/websocket"
-)
-
-// Echo the data received on the WebSocket.
-func EchoServer(ws *websocket.Conn) {
- io.Copy(ws, ws)
-}
-
-// This example demonstrates a trivial echo server.
-func ExampleHandler() {
- http.Handle("/echo", websocket.Handler(EchoServer))
- err := http.ListenAndServe(":12345", nil)
- if err != nil {
- panic("ListenAndServe: " + err.Error())
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go b/Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go
index f8c0b2e29..60bbc8418 100644
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go
+++ b/Godeps/_workspace/src/golang.org/x/net/websocket/hybi.go
@@ -157,6 +157,9 @@ func (buf hybiFrameReaderFactory) NewFrameReader() (frame frameReader, err error
if err != nil {
return
}
+ if lengthFields == 8 && i == 0 { // MSB must be zero when 7+64 bits
+ b &= 0x7f
+ }
header = append(header, b)
hybiFrame.header.Length = hybiFrame.header.Length*256 + int64(b)
}
@@ -264,7 +267,7 @@ type hybiFrameHandler struct {
payloadType byte
}
-func (handler *hybiFrameHandler) HandleFrame(frame frameReader) (r frameReader, err error) {
+func (handler *hybiFrameHandler) HandleFrame(frame frameReader) (frameReader, error) {
if handler.conn.IsServerConn() {
// The client MUST mask all frames sent to the server.
if frame.(*hybiFrameReader).header.MaskingKey == nil {
@@ -288,20 +291,19 @@ func (handler *hybiFrameHandler) HandleFrame(frame frameReader) (r frameReader,
handler.payloadType = frame.PayloadType()
case CloseFrame:
return nil, io.EOF
- case PingFrame:
- pingMsg := make([]byte, maxControlFramePayloadLength)
- n, err := io.ReadFull(frame, pingMsg)
- if err != nil && err != io.ErrUnexpectedEOF {
+ case PingFrame, PongFrame:
+ b := make([]byte, maxControlFramePayloadLength)
+ n, err := io.ReadFull(frame, b)
+ if err != nil && err != io.EOF && err != io.ErrUnexpectedEOF {
return nil, err
}
io.Copy(ioutil.Discard, frame)
- n, err = handler.WritePong(pingMsg[:n])
- if err != nil {
- return nil, err
+ if frame.PayloadType() == PingFrame {
+ if _, err := handler.WritePong(b[:n]); err != nil {
+ return nil, err
+ }
}
return nil, nil
- case PongFrame:
- return nil, ErrNotImplemented
}
return frame, nil
}
@@ -370,6 +372,23 @@ func generateNonce() (nonce []byte) {
return
}
+// removeZone removes IPv6 zone identifer from host.
+// E.g., "[fe80::1%en0]:8080" to "[fe80::1]:8080"
+func removeZone(host string) string {
+ if !strings.HasPrefix(host, "[") {
+ return host
+ }
+ i := strings.LastIndex(host, "]")
+ if i < 0 {
+ return host
+ }
+ j := strings.LastIndex(host[:i], "%")
+ if j < 0 {
+ return host
+ }
+ return host[:j] + host[i:]
+}
+
// getNonceAccept computes the base64-encoded SHA-1 of the concatenation of
// the nonce ("Sec-WebSocket-Key" value) with the websocket GUID string.
func getNonceAccept(nonce []byte) (expected []byte, err error) {
@@ -389,7 +408,10 @@ func getNonceAccept(nonce []byte) (expected []byte, err error) {
func hybiClientHandshake(config *Config, br *bufio.Reader, bw *bufio.Writer) (err error) {
bw.WriteString("GET " + config.Location.RequestURI() + " HTTP/1.1\r\n")
- bw.WriteString("Host: " + config.Location.Host + "\r\n")
+ // According to RFC 6874, an HTTP client, proxy, or other
+ // intermediary must remove any IPv6 zone identifier attached
+ // to an outgoing URI.
+ bw.WriteString("Host: " + removeZone(config.Location.Host) + "\r\n")
bw.WriteString("Upgrade: websocket\r\n")
bw.WriteString("Connection: Upgrade\r\n")
nonce := generateNonce()
@@ -515,15 +537,15 @@ func (c *hybiServerHandshaker) ReadHandshake(buf *bufio.Reader, req *http.Reques
return http.StatusSwitchingProtocols, nil
}
-// Origin parses Origin header in "req".
-// If origin is "null", returns (nil, nil).
+// Origin parses the Origin header in req.
+// If the Origin header is not set, it returns nil and nil.
func Origin(config *Config, req *http.Request) (*url.URL, error) {
var origin string
switch config.Version {
case ProtocolVersionHybi13:
origin = req.Header.Get("Origin")
}
- if origin == "null" {
+ if origin == "" {
return nil, nil
}
return url.ParseRequestURI(origin)
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/hybi_test.go b/Godeps/_workspace/src/golang.org/x/net/websocket/hybi_test.go
deleted file mode 100644
index d6a19108a..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/hybi_test.go
+++ /dev/null
@@ -1,590 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package websocket
-
-import (
- "bufio"
- "bytes"
- "fmt"
- "io"
- "net/http"
- "net/url"
- "strings"
- "testing"
-)
-
-// Test the getNonceAccept function with values in
-// http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17
-func TestSecWebSocketAccept(t *testing.T) {
- nonce := []byte("dGhlIHNhbXBsZSBub25jZQ==")
- expected := []byte("s3pPLMBiTxaQ9kYGzzhZRbK+xOo=")
- accept, err := getNonceAccept(nonce)
- if err != nil {
- t.Errorf("getNonceAccept: returned error %v", err)
- return
- }
- if !bytes.Equal(expected, accept) {
- t.Errorf("getNonceAccept: expected %q got %q", expected, accept)
- }
-}
-
-func TestHybiClientHandshake(t *testing.T) {
- b := bytes.NewBuffer([]byte{})
- bw := bufio.NewWriter(b)
- br := bufio.NewReader(strings.NewReader(`HTTP/1.1 101 Switching Protocols
-Upgrade: websocket
-Connection: Upgrade
-Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
-Sec-WebSocket-Protocol: chat
-
-`))
- var err error
- config := new(Config)
- config.Location, err = url.ParseRequestURI("ws://server.example.com/chat")
- if err != nil {
- t.Fatal("location url", err)
- }
- config.Origin, err = url.ParseRequestURI("http://example.com")
- if err != nil {
- t.Fatal("origin url", err)
- }
- config.Protocol = append(config.Protocol, "chat")
- config.Protocol = append(config.Protocol, "superchat")
- config.Version = ProtocolVersionHybi13
-
- config.handshakeData = map[string]string{
- "key": "dGhlIHNhbXBsZSBub25jZQ==",
- }
- err = hybiClientHandshake(config, br, bw)
- if err != nil {
- t.Errorf("handshake failed: %v", err)
- }
- req, err := http.ReadRequest(bufio.NewReader(b))
- if err != nil {
- t.Fatalf("read request: %v", err)
- }
- if req.Method != "GET" {
- t.Errorf("request method expected GET, but got %q", req.Method)
- }
- if req.URL.Path != "/chat" {
- t.Errorf("request path expected /chat, but got %q", req.URL.Path)
- }
- if req.Proto != "HTTP/1.1" {
- t.Errorf("request proto expected HTTP/1.1, but got %q", req.Proto)
- }
- if req.Host != "server.example.com" {
- t.Errorf("request Host expected server.example.com, but got %v", req.Host)
- }
- var expectedHeader = map[string]string{
- "Connection": "Upgrade",
- "Upgrade": "websocket",
- "Sec-Websocket-Key": config.handshakeData["key"],
- "Origin": config.Origin.String(),
- "Sec-Websocket-Protocol": "chat, superchat",
- "Sec-Websocket-Version": fmt.Sprintf("%d", ProtocolVersionHybi13),
- }
- for k, v := range expectedHeader {
- if req.Header.Get(k) != v {
- t.Errorf(fmt.Sprintf("%s expected %q but got %q", k, v, req.Header.Get(k)))
- }
- }
-}
-
-func TestHybiClientHandshakeWithHeader(t *testing.T) {
- b := bytes.NewBuffer([]byte{})
- bw := bufio.NewWriter(b)
- br := bufio.NewReader(strings.NewReader(`HTTP/1.1 101 Switching Protocols
-Upgrade: websocket
-Connection: Upgrade
-Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
-Sec-WebSocket-Protocol: chat
-
-`))
- var err error
- config := new(Config)
- config.Location, err = url.ParseRequestURI("ws://server.example.com/chat")
- if err != nil {
- t.Fatal("location url", err)
- }
- config.Origin, err = url.ParseRequestURI("http://example.com")
- if err != nil {
- t.Fatal("origin url", err)
- }
- config.Protocol = append(config.Protocol, "chat")
- config.Protocol = append(config.Protocol, "superchat")
- config.Version = ProtocolVersionHybi13
- config.Header = http.Header(make(map[string][]string))
- config.Header.Add("User-Agent", "test")
-
- config.handshakeData = map[string]string{
- "key": "dGhlIHNhbXBsZSBub25jZQ==",
- }
- err = hybiClientHandshake(config, br, bw)
- if err != nil {
- t.Errorf("handshake failed: %v", err)
- }
- req, err := http.ReadRequest(bufio.NewReader(b))
- if err != nil {
- t.Fatalf("read request: %v", err)
- }
- if req.Method != "GET" {
- t.Errorf("request method expected GET, but got %q", req.Method)
- }
- if req.URL.Path != "/chat" {
- t.Errorf("request path expected /chat, but got %q", req.URL.Path)
- }
- if req.Proto != "HTTP/1.1" {
- t.Errorf("request proto expected HTTP/1.1, but got %q", req.Proto)
- }
- if req.Host != "server.example.com" {
- t.Errorf("request Host expected server.example.com, but got %v", req.Host)
- }
- var expectedHeader = map[string]string{
- "Connection": "Upgrade",
- "Upgrade": "websocket",
- "Sec-Websocket-Key": config.handshakeData["key"],
- "Origin": config.Origin.String(),
- "Sec-Websocket-Protocol": "chat, superchat",
- "Sec-Websocket-Version": fmt.Sprintf("%d", ProtocolVersionHybi13),
- "User-Agent": "test",
- }
- for k, v := range expectedHeader {
- if req.Header.Get(k) != v {
- t.Errorf(fmt.Sprintf("%s expected %q but got %q", k, v, req.Header.Get(k)))
- }
- }
-}
-
-func TestHybiServerHandshake(t *testing.T) {
- config := new(Config)
- handshaker := &hybiServerHandshaker{Config: config}
- br := bufio.NewReader(strings.NewReader(`GET /chat HTTP/1.1
-Host: server.example.com
-Upgrade: websocket
-Connection: Upgrade
-Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
-Origin: http://example.com
-Sec-WebSocket-Protocol: chat, superchat
-Sec-WebSocket-Version: 13
-
-`))
- req, err := http.ReadRequest(br)
- if err != nil {
- t.Fatal("request", err)
- }
- code, err := handshaker.ReadHandshake(br, req)
- if err != nil {
- t.Errorf("handshake failed: %v", err)
- }
- if code != http.StatusSwitchingProtocols {
- t.Errorf("status expected %q but got %q", http.StatusSwitchingProtocols, code)
- }
- expectedProtocols := []string{"chat", "superchat"}
- if fmt.Sprintf("%v", config.Protocol) != fmt.Sprintf("%v", expectedProtocols) {
- t.Errorf("protocol expected %q but got %q", expectedProtocols, config.Protocol)
- }
- b := bytes.NewBuffer([]byte{})
- bw := bufio.NewWriter(b)
-
- config.Protocol = config.Protocol[:1]
-
- err = handshaker.AcceptHandshake(bw)
- if err != nil {
- t.Errorf("handshake response failed: %v", err)
- }
- expectedResponse := strings.Join([]string{
- "HTTP/1.1 101 Switching Protocols",
- "Upgrade: websocket",
- "Connection: Upgrade",
- "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=",
- "Sec-WebSocket-Protocol: chat",
- "", ""}, "\r\n")
-
- if b.String() != expectedResponse {
- t.Errorf("handshake expected %q but got %q", expectedResponse, b.String())
- }
-}
-
-func TestHybiServerHandshakeNoSubProtocol(t *testing.T) {
- config := new(Config)
- handshaker := &hybiServerHandshaker{Config: config}
- br := bufio.NewReader(strings.NewReader(`GET /chat HTTP/1.1
-Host: server.example.com
-Upgrade: websocket
-Connection: Upgrade
-Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
-Origin: http://example.com
-Sec-WebSocket-Version: 13
-
-`))
- req, err := http.ReadRequest(br)
- if err != nil {
- t.Fatal("request", err)
- }
- code, err := handshaker.ReadHandshake(br, req)
- if err != nil {
- t.Errorf("handshake failed: %v", err)
- }
- if code != http.StatusSwitchingProtocols {
- t.Errorf("status expected %q but got %q", http.StatusSwitchingProtocols, code)
- }
- if len(config.Protocol) != 0 {
- t.Errorf("len(config.Protocol) expected 0, but got %q", len(config.Protocol))
- }
- b := bytes.NewBuffer([]byte{})
- bw := bufio.NewWriter(b)
-
- err = handshaker.AcceptHandshake(bw)
- if err != nil {
- t.Errorf("handshake response failed: %v", err)
- }
- expectedResponse := strings.Join([]string{
- "HTTP/1.1 101 Switching Protocols",
- "Upgrade: websocket",
- "Connection: Upgrade",
- "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=",
- "", ""}, "\r\n")
-
- if b.String() != expectedResponse {
- t.Errorf("handshake expected %q but got %q", expectedResponse, b.String())
- }
-}
-
-func TestHybiServerHandshakeHybiBadVersion(t *testing.T) {
- config := new(Config)
- handshaker := &hybiServerHandshaker{Config: config}
- br := bufio.NewReader(strings.NewReader(`GET /chat HTTP/1.1
-Host: server.example.com
-Upgrade: websocket
-Connection: Upgrade
-Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
-Sec-WebSocket-Origin: http://example.com
-Sec-WebSocket-Protocol: chat, superchat
-Sec-WebSocket-Version: 9
-
-`))
- req, err := http.ReadRequest(br)
- if err != nil {
- t.Fatal("request", err)
- }
- code, err := handshaker.ReadHandshake(br, req)
- if err != ErrBadWebSocketVersion {
- t.Errorf("handshake expected err %q but got %q", ErrBadWebSocketVersion, err)
- }
- if code != http.StatusBadRequest {
- t.Errorf("status expected %q but got %q", http.StatusBadRequest, code)
- }
-}
-
-func testHybiFrame(t *testing.T, testHeader, testPayload, testMaskedPayload []byte, frameHeader *hybiFrameHeader) {
- b := bytes.NewBuffer([]byte{})
- frameWriterFactory := &hybiFrameWriterFactory{bufio.NewWriter(b), false}
- w, _ := frameWriterFactory.NewFrameWriter(TextFrame)
- w.(*hybiFrameWriter).header = frameHeader
- _, err := w.Write(testPayload)
- w.Close()
- if err != nil {
- t.Errorf("Write error %q", err)
- }
- var expectedFrame []byte
- expectedFrame = append(expectedFrame, testHeader...)
- expectedFrame = append(expectedFrame, testMaskedPayload...)
- if !bytes.Equal(expectedFrame, b.Bytes()) {
- t.Errorf("frame expected %q got %q", expectedFrame, b.Bytes())
- }
- frameReaderFactory := &hybiFrameReaderFactory{bufio.NewReader(b)}
- r, err := frameReaderFactory.NewFrameReader()
- if err != nil {
- t.Errorf("Read error %q", err)
- }
- if header := r.HeaderReader(); header == nil {
- t.Errorf("no header")
- } else {
- actualHeader := make([]byte, r.Len())
- n, err := header.Read(actualHeader)
- if err != nil {
- t.Errorf("Read header error %q", err)
- } else {
- if n < len(testHeader) {
- t.Errorf("header too short %q got %q", testHeader, actualHeader[:n])
- }
- if !bytes.Equal(testHeader, actualHeader[:n]) {
- t.Errorf("header expected %q got %q", testHeader, actualHeader[:n])
- }
- }
- }
- if trailer := r.TrailerReader(); trailer != nil {
- t.Errorf("unexpected trailer %q", trailer)
- }
- frame := r.(*hybiFrameReader)
- if frameHeader.Fin != frame.header.Fin ||
- frameHeader.OpCode != frame.header.OpCode ||
- len(testPayload) != int(frame.header.Length) {
- t.Errorf("mismatch %v (%d) vs %v", frameHeader, len(testPayload), frame)
- }
- payload := make([]byte, len(testPayload))
- _, err = r.Read(payload)
- if err != nil {
- t.Errorf("read %v", err)
- }
- if !bytes.Equal(testPayload, payload) {
- t.Errorf("payload %q vs %q", testPayload, payload)
- }
-}
-
-func TestHybiShortTextFrame(t *testing.T) {
- frameHeader := &hybiFrameHeader{Fin: true, OpCode: TextFrame}
- payload := []byte("hello")
- testHybiFrame(t, []byte{0x81, 0x05}, payload, payload, frameHeader)
-
- payload = make([]byte, 125)
- testHybiFrame(t, []byte{0x81, 125}, payload, payload, frameHeader)
-}
-
-func TestHybiShortMaskedTextFrame(t *testing.T) {
- frameHeader := &hybiFrameHeader{Fin: true, OpCode: TextFrame,
- MaskingKey: []byte{0xcc, 0x55, 0x80, 0x20}}
- payload := []byte("hello")
- maskedPayload := []byte{0xa4, 0x30, 0xec, 0x4c, 0xa3}
- header := []byte{0x81, 0x85}
- header = append(header, frameHeader.MaskingKey...)
- testHybiFrame(t, header, payload, maskedPayload, frameHeader)
-}
-
-func TestHybiShortBinaryFrame(t *testing.T) {
- frameHeader := &hybiFrameHeader{Fin: true, OpCode: BinaryFrame}
- payload := []byte("hello")
- testHybiFrame(t, []byte{0x82, 0x05}, payload, payload, frameHeader)
-
- payload = make([]byte, 125)
- testHybiFrame(t, []byte{0x82, 125}, payload, payload, frameHeader)
-}
-
-func TestHybiControlFrame(t *testing.T) {
- frameHeader := &hybiFrameHeader{Fin: true, OpCode: PingFrame}
- payload := []byte("hello")
- testHybiFrame(t, []byte{0x89, 0x05}, payload, payload, frameHeader)
-
- frameHeader = &hybiFrameHeader{Fin: true, OpCode: PongFrame}
- testHybiFrame(t, []byte{0x8A, 0x05}, payload, payload, frameHeader)
-
- frameHeader = &hybiFrameHeader{Fin: true, OpCode: CloseFrame}
- payload = []byte{0x03, 0xe8} // 1000
- testHybiFrame(t, []byte{0x88, 0x02}, payload, payload, frameHeader)
-}
-
-func TestHybiLongFrame(t *testing.T) {
- frameHeader := &hybiFrameHeader{Fin: true, OpCode: TextFrame}
- payload := make([]byte, 126)
- testHybiFrame(t, []byte{0x81, 126, 0x00, 126}, payload, payload, frameHeader)
-
- payload = make([]byte, 65535)
- testHybiFrame(t, []byte{0x81, 126, 0xff, 0xff}, payload, payload, frameHeader)
-
- payload = make([]byte, 65536)
- testHybiFrame(t, []byte{0x81, 127, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}, payload, payload, frameHeader)
-}
-
-func TestHybiClientRead(t *testing.T) {
- wireData := []byte{0x81, 0x05, 'h', 'e', 'l', 'l', 'o',
- 0x89, 0x05, 'h', 'e', 'l', 'l', 'o', // ping
- 0x81, 0x05, 'w', 'o', 'r', 'l', 'd'}
- br := bufio.NewReader(bytes.NewBuffer(wireData))
- bw := bufio.NewWriter(bytes.NewBuffer([]byte{}))
- conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, nil)
-
- msg := make([]byte, 512)
- n, err := conn.Read(msg)
- if err != nil {
- t.Errorf("read 1st frame, error %q", err)
- }
- if n != 5 {
- t.Errorf("read 1st frame, expect 5, got %d", n)
- }
- if !bytes.Equal(wireData[2:7], msg[:n]) {
- t.Errorf("read 1st frame %v, got %v", wireData[2:7], msg[:n])
- }
- n, err = conn.Read(msg)
- if err != nil {
- t.Errorf("read 2nd frame, error %q", err)
- }
- if n != 5 {
- t.Errorf("read 2nd frame, expect 5, got %d", n)
- }
- if !bytes.Equal(wireData[16:21], msg[:n]) {
- t.Errorf("read 2nd frame %v, got %v", wireData[16:21], msg[:n])
- }
- n, err = conn.Read(msg)
- if err == nil {
- t.Errorf("read not EOF")
- }
- if n != 0 {
- t.Errorf("expect read 0, got %d", n)
- }
-}
-
-func TestHybiShortRead(t *testing.T) {
- wireData := []byte{0x81, 0x05, 'h', 'e', 'l', 'l', 'o',
- 0x89, 0x05, 'h', 'e', 'l', 'l', 'o', // ping
- 0x81, 0x05, 'w', 'o', 'r', 'l', 'd'}
- br := bufio.NewReader(bytes.NewBuffer(wireData))
- bw := bufio.NewWriter(bytes.NewBuffer([]byte{}))
- conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, nil)
-
- step := 0
- pos := 0
- expectedPos := []int{2, 5, 16, 19}
- expectedLen := []int{3, 2, 3, 2}
- for {
- msg := make([]byte, 3)
- n, err := conn.Read(msg)
- if step >= len(expectedPos) {
- if err == nil {
- t.Errorf("read not EOF")
- }
- if n != 0 {
- t.Errorf("expect read 0, got %d", n)
- }
- return
- }
- pos = expectedPos[step]
- endPos := pos + expectedLen[step]
- if err != nil {
- t.Errorf("read from %d, got error %q", pos, err)
- return
- }
- if n != endPos-pos {
- t.Errorf("read from %d, expect %d, got %d", pos, endPos-pos, n)
- }
- if !bytes.Equal(wireData[pos:endPos], msg[:n]) {
- t.Errorf("read from %d, frame %v, got %v", pos, wireData[pos:endPos], msg[:n])
- }
- step++
- }
-}
-
-func TestHybiServerRead(t *testing.T) {
- wireData := []byte{0x81, 0x85, 0xcc, 0x55, 0x80, 0x20,
- 0xa4, 0x30, 0xec, 0x4c, 0xa3, // hello
- 0x89, 0x85, 0xcc, 0x55, 0x80, 0x20,
- 0xa4, 0x30, 0xec, 0x4c, 0xa3, // ping: hello
- 0x81, 0x85, 0xed, 0x83, 0xb4, 0x24,
- 0x9a, 0xec, 0xc6, 0x48, 0x89, // world
- }
- br := bufio.NewReader(bytes.NewBuffer(wireData))
- bw := bufio.NewWriter(bytes.NewBuffer([]byte{}))
- conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, new(http.Request))
-
- expected := [][]byte{[]byte("hello"), []byte("world")}
-
- msg := make([]byte, 512)
- n, err := conn.Read(msg)
- if err != nil {
- t.Errorf("read 1st frame, error %q", err)
- }
- if n != 5 {
- t.Errorf("read 1st frame, expect 5, got %d", n)
- }
- if !bytes.Equal(expected[0], msg[:n]) {
- t.Errorf("read 1st frame %q, got %q", expected[0], msg[:n])
- }
-
- n, err = conn.Read(msg)
- if err != nil {
- t.Errorf("read 2nd frame, error %q", err)
- }
- if n != 5 {
- t.Errorf("read 2nd frame, expect 5, got %d", n)
- }
- if !bytes.Equal(expected[1], msg[:n]) {
- t.Errorf("read 2nd frame %q, got %q", expected[1], msg[:n])
- }
-
- n, err = conn.Read(msg)
- if err == nil {
- t.Errorf("read not EOF")
- }
- if n != 0 {
- t.Errorf("expect read 0, got %d", n)
- }
-}
-
-func TestHybiServerReadWithoutMasking(t *testing.T) {
- wireData := []byte{0x81, 0x05, 'h', 'e', 'l', 'l', 'o'}
- br := bufio.NewReader(bytes.NewBuffer(wireData))
- bw := bufio.NewWriter(bytes.NewBuffer([]byte{}))
- conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, new(http.Request))
- // server MUST close the connection upon receiving a non-masked frame.
- msg := make([]byte, 512)
- _, err := conn.Read(msg)
- if err != io.EOF {
- t.Errorf("read 1st frame, expect %q, but got %q", io.EOF, err)
- }
-}
-
-func TestHybiClientReadWithMasking(t *testing.T) {
- wireData := []byte{0x81, 0x85, 0xcc, 0x55, 0x80, 0x20,
- 0xa4, 0x30, 0xec, 0x4c, 0xa3, // hello
- }
- br := bufio.NewReader(bytes.NewBuffer(wireData))
- bw := bufio.NewWriter(bytes.NewBuffer([]byte{}))
- conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, nil)
-
- // client MUST close the connection upon receiving a masked frame.
- msg := make([]byte, 512)
- _, err := conn.Read(msg)
- if err != io.EOF {
- t.Errorf("read 1st frame, expect %q, but got %q", io.EOF, err)
- }
-}
-
-// Test the hybiServerHandshaker supports firefox implementation and
-// checks Connection request header include (but it's not necessary
-// equal to) "upgrade"
-func TestHybiServerFirefoxHandshake(t *testing.T) {
- config := new(Config)
- handshaker := &hybiServerHandshaker{Config: config}
- br := bufio.NewReader(strings.NewReader(`GET /chat HTTP/1.1
-Host: server.example.com
-Upgrade: websocket
-Connection: keep-alive, upgrade
-Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
-Origin: http://example.com
-Sec-WebSocket-Protocol: chat, superchat
-Sec-WebSocket-Version: 13
-
-`))
- req, err := http.ReadRequest(br)
- if err != nil {
- t.Fatal("request", err)
- }
- code, err := handshaker.ReadHandshake(br, req)
- if err != nil {
- t.Errorf("handshake failed: %v", err)
- }
- if code != http.StatusSwitchingProtocols {
- t.Errorf("status expected %q but got %q", http.StatusSwitchingProtocols, code)
- }
- b := bytes.NewBuffer([]byte{})
- bw := bufio.NewWriter(b)
-
- config.Protocol = []string{"chat"}
-
- err = handshaker.AcceptHandshake(bw)
- if err != nil {
- t.Errorf("handshake response failed: %v", err)
- }
- expectedResponse := strings.Join([]string{
- "HTTP/1.1 101 Switching Protocols",
- "Upgrade: websocket",
- "Connection: Upgrade",
- "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=",
- "Sec-WebSocket-Protocol: chat",
- "", ""}, "\r\n")
-
- if b.String() != expectedResponse {
- t.Errorf("handshake expected %q but got %q", expectedResponse, b.String())
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/server.go b/Godeps/_workspace/src/golang.org/x/net/websocket/server.go
index 70322133c..0895dea19 100644
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/server.go
+++ b/Godeps/_workspace/src/golang.org/x/net/websocket/server.go
@@ -74,7 +74,6 @@ func (s Server) serveWebSocket(w http.ResponseWriter, req *http.Request) {
rwc, buf, err := w.(http.Hijacker).Hijack()
if err != nil {
panic("Hijack failed: " + err.Error())
- return
}
// The server should abort the WebSocket connection if it finds
// the client did not send a handshake that matches with protocol
@@ -95,8 +94,8 @@ func (s Server) serveWebSocket(w http.ResponseWriter, req *http.Request) {
// You might want to verify websocket.Conn.Config().Origin in the func.
// If you use Server instead of Handler, you could call websocket.Origin and
// check the origin in your Handshake func. So, if you want to accept
-// non-browser client, which doesn't send Origin header, you could use Server
-//. that doesn't check origin in its Handshake.
+// non-browser clients, which do not send an Origin header, set a
+// Server.Handshake that does not check the origin.
type Handler func(*Conn)
func checkOrigin(config *Config, req *http.Request) (err error) {
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go b/Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go
index 0f4917bf7..da0dd964c 100644
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go
+++ b/Godeps/_workspace/src/golang.org/x/net/websocket/websocket.go
@@ -216,10 +216,11 @@ func (ws *Conn) Write(msg []byte) (n int, err error) {
// Close implements the io.Closer interface.
func (ws *Conn) Close() error {
err := ws.frameHandler.WriteClose(ws.defaultCloseStatus)
+ err1 := ws.rwc.Close()
if err != nil {
return err
}
- return ws.rwc.Close()
+ return err1
}
func (ws *Conn) IsClientConn() bool { return ws.request == nil }
diff --git a/Godeps/_workspace/src/golang.org/x/net/websocket/websocket_test.go b/Godeps/_workspace/src/golang.org/x/net/websocket/websocket_test.go
deleted file mode 100644
index a376abacf..000000000
--- a/Godeps/_workspace/src/golang.org/x/net/websocket/websocket_test.go
+++ /dev/null
@@ -1,414 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package websocket
-
-import (
- "bytes"
- "fmt"
- "io"
- "log"
- "net"
- "net/http"
- "net/http/httptest"
- "net/url"
- "strings"
- "sync"
- "testing"
-)
-
-var serverAddr string
-var once sync.Once
-
-func echoServer(ws *Conn) { io.Copy(ws, ws) }
-
-type Count struct {
- S string
- N int
-}
-
-func countServer(ws *Conn) {
- for {
- var count Count
- err := JSON.Receive(ws, &count)
- if err != nil {
- return
- }
- count.N++
- count.S = strings.Repeat(count.S, count.N)
- err = JSON.Send(ws, count)
- if err != nil {
- return
- }
- }
-}
-
-func subProtocolHandshake(config *Config, req *http.Request) error {
- for _, proto := range config.Protocol {
- if proto == "chat" {
- config.Protocol = []string{proto}
- return nil
- }
- }
- return ErrBadWebSocketProtocol
-}
-
-func subProtoServer(ws *Conn) {
- for _, proto := range ws.Config().Protocol {
- io.WriteString(ws, proto)
- }
-}
-
-func startServer() {
- http.Handle("/echo", Handler(echoServer))
- http.Handle("/count", Handler(countServer))
- subproto := Server{
- Handshake: subProtocolHandshake,
- Handler: Handler(subProtoServer),
- }
- http.Handle("/subproto", subproto)
- server := httptest.NewServer(nil)
- serverAddr = server.Listener.Addr().String()
- log.Print("Test WebSocket server listening on ", serverAddr)
-}
-
-func newConfig(t *testing.T, path string) *Config {
- config, _ := NewConfig(fmt.Sprintf("ws://%s%s", serverAddr, path), "http://localhost")
- return config
-}
-
-func TestEcho(t *testing.T) {
- once.Do(startServer)
-
- // websocket.Dial()
- client, err := net.Dial("tcp", serverAddr)
- if err != nil {
- t.Fatal("dialing", err)
- }
- conn, err := NewClient(newConfig(t, "/echo"), client)
- if err != nil {
- t.Errorf("WebSocket handshake error: %v", err)
- return
- }
-
- msg := []byte("hello, world\n")
- if _, err := conn.Write(msg); err != nil {
- t.Errorf("Write: %v", err)
- }
- var actual_msg = make([]byte, 512)
- n, err := conn.Read(actual_msg)
- if err != nil {
- t.Errorf("Read: %v", err)
- }
- actual_msg = actual_msg[0:n]
- if !bytes.Equal(msg, actual_msg) {
- t.Errorf("Echo: expected %q got %q", msg, actual_msg)
- }
- conn.Close()
-}
-
-func TestAddr(t *testing.T) {
- once.Do(startServer)
-
- // websocket.Dial()
- client, err := net.Dial("tcp", serverAddr)
- if err != nil {
- t.Fatal("dialing", err)
- }
- conn, err := NewClient(newConfig(t, "/echo"), client)
- if err != nil {
- t.Errorf("WebSocket handshake error: %v", err)
- return
- }
-
- ra := conn.RemoteAddr().String()
- if !strings.HasPrefix(ra, "ws://") || !strings.HasSuffix(ra, "/echo") {
- t.Errorf("Bad remote addr: %v", ra)
- }
- la := conn.LocalAddr().String()
- if !strings.HasPrefix(la, "http://") {
- t.Errorf("Bad local addr: %v", la)
- }
- conn.Close()
-}
-
-func TestCount(t *testing.T) {
- once.Do(startServer)
-
- // websocket.Dial()
- client, err := net.Dial("tcp", serverAddr)
- if err != nil {
- t.Fatal("dialing", err)
- }
- conn, err := NewClient(newConfig(t, "/count"), client)
- if err != nil {
- t.Errorf("WebSocket handshake error: %v", err)
- return
- }
-
- var count Count
- count.S = "hello"
- if err := JSON.Send(conn, count); err != nil {
- t.Errorf("Write: %v", err)
- }
- if err := JSON.Receive(conn, &count); err != nil {
- t.Errorf("Read: %v", err)
- }
- if count.N != 1 {
- t.Errorf("count: expected %d got %d", 1, count.N)
- }
- if count.S != "hello" {
- t.Errorf("count: expected %q got %q", "hello", count.S)
- }
- if err := JSON.Send(conn, count); err != nil {
- t.Errorf("Write: %v", err)
- }
- if err := JSON.Receive(conn, &count); err != nil {
- t.Errorf("Read: %v", err)
- }
- if count.N != 2 {
- t.Errorf("count: expected %d got %d", 2, count.N)
- }
- if count.S != "hellohello" {
- t.Errorf("count: expected %q got %q", "hellohello", count.S)
- }
- conn.Close()
-}
-
-func TestWithQuery(t *testing.T) {
- once.Do(startServer)
-
- client, err := net.Dial("tcp", serverAddr)
- if err != nil {
- t.Fatal("dialing", err)
- }
-
- config := newConfig(t, "/echo")
- config.Location, err = url.ParseRequestURI(fmt.Sprintf("ws://%s/echo?q=v", serverAddr))
- if err != nil {
- t.Fatal("location url", err)
- }
-
- ws, err := NewClient(config, client)
- if err != nil {
- t.Errorf("WebSocket handshake: %v", err)
- return
- }
- ws.Close()
-}
-
-func testWithProtocol(t *testing.T, subproto []string) (string, error) {
- once.Do(startServer)
-
- client, err := net.Dial("tcp", serverAddr)
- if err != nil {
- t.Fatal("dialing", err)
- }
-
- config := newConfig(t, "/subproto")
- config.Protocol = subproto
-
- ws, err := NewClient(config, client)
- if err != nil {
- return "", err
- }
- msg := make([]byte, 16)
- n, err := ws.Read(msg)
- if err != nil {
- return "", err
- }
- ws.Close()
- return string(msg[:n]), nil
-}
-
-func TestWithProtocol(t *testing.T) {
- proto, err := testWithProtocol(t, []string{"chat"})
- if err != nil {
- t.Errorf("SubProto: unexpected error: %v", err)
- }
- if proto != "chat" {
- t.Errorf("SubProto: expected %q, got %q", "chat", proto)
- }
-}
-
-func TestWithTwoProtocol(t *testing.T) {
- proto, err := testWithProtocol(t, []string{"test", "chat"})
- if err != nil {
- t.Errorf("SubProto: unexpected error: %v", err)
- }
- if proto != "chat" {
- t.Errorf("SubProto: expected %q, got %q", "chat", proto)
- }
-}
-
-func TestWithBadProtocol(t *testing.T) {
- _, err := testWithProtocol(t, []string{"test"})
- if err != ErrBadStatus {
- t.Errorf("SubProto: expected %v, got %v", ErrBadStatus, err)
- }
-}
-
-func TestHTTP(t *testing.T) {
- once.Do(startServer)
-
- // If the client did not send a handshake that matches the protocol
- // specification, the server MUST return an HTTP response with an
- // appropriate error code (such as 400 Bad Request)
- resp, err := http.Get(fmt.Sprintf("http://%s/echo", serverAddr))
- if err != nil {
- t.Errorf("Get: error %#v", err)
- return
- }
- if resp == nil {
- t.Error("Get: resp is null")
- return
- }
- if resp.StatusCode != http.StatusBadRequest {
- t.Errorf("Get: expected %q got %q", http.StatusBadRequest, resp.StatusCode)
- }
-}
-
-func TestTrailingSpaces(t *testing.T) {
- // http://code.google.com/p/go/issues/detail?id=955
- // The last runs of this create keys with trailing spaces that should not be
- // generated by the client.
- once.Do(startServer)
- config := newConfig(t, "/echo")
- for i := 0; i < 30; i++ {
- // body
- ws, err := DialConfig(config)
- if err != nil {
- t.Errorf("Dial #%d failed: %v", i, err)
- break
- }
- ws.Close()
- }
-}
-
-func TestDialConfigBadVersion(t *testing.T) {
- once.Do(startServer)
- config := newConfig(t, "/echo")
- config.Version = 1234
-
- _, err := DialConfig(config)
-
- if dialerr, ok := err.(*DialError); ok {
- if dialerr.Err != ErrBadProtocolVersion {
- t.Errorf("dial expected err %q but got %q", ErrBadProtocolVersion, dialerr.Err)
- }
- }
-}
-
-func TestSmallBuffer(t *testing.T) {
- // http://code.google.com/p/go/issues/detail?id=1145
- // Read should be able to handle reading a fragment of a frame.
- once.Do(startServer)
-
- // websocket.Dial()
- client, err := net.Dial("tcp", serverAddr)
- if err != nil {
- t.Fatal("dialing", err)
- }
- conn, err := NewClient(newConfig(t, "/echo"), client)
- if err != nil {
- t.Errorf("WebSocket handshake error: %v", err)
- return
- }
-
- msg := []byte("hello, world\n")
- if _, err := conn.Write(msg); err != nil {
- t.Errorf("Write: %v", err)
- }
- var small_msg = make([]byte, 8)
- n, err := conn.Read(small_msg)
- if err != nil {
- t.Errorf("Read: %v", err)
- }
- if !bytes.Equal(msg[:len(small_msg)], small_msg) {
- t.Errorf("Echo: expected %q got %q", msg[:len(small_msg)], small_msg)
- }
- var second_msg = make([]byte, len(msg))
- n, err = conn.Read(second_msg)
- if err != nil {
- t.Errorf("Read: %v", err)
- }
- second_msg = second_msg[0:n]
- if !bytes.Equal(msg[len(small_msg):], second_msg) {
- t.Errorf("Echo: expected %q got %q", msg[len(small_msg):], second_msg)
- }
- conn.Close()
-}
-
-var parseAuthorityTests = []struct {
- in *url.URL
- out string
-}{
- {
- &url.URL{
- Scheme: "ws",
- Host: "www.google.com",
- },
- "www.google.com:80",
- },
- {
- &url.URL{
- Scheme: "wss",
- Host: "www.google.com",
- },
- "www.google.com:443",
- },
- {
- &url.URL{
- Scheme: "ws",
- Host: "www.google.com:80",
- },
- "www.google.com:80",
- },
- {
- &url.URL{
- Scheme: "wss",
- Host: "www.google.com:443",
- },
- "www.google.com:443",
- },
- // some invalid ones for parseAuthority. parseAuthority doesn't
- // concern itself with the scheme unless it actually knows about it
- {
- &url.URL{
- Scheme: "http",
- Host: "www.google.com",
- },
- "www.google.com",
- },
- {
- &url.URL{
- Scheme: "http",
- Host: "www.google.com:80",
- },
- "www.google.com:80",
- },
- {
- &url.URL{
- Scheme: "asdf",
- Host: "127.0.0.1",
- },
- "127.0.0.1",
- },
- {
- &url.URL{
- Scheme: "asdf",
- Host: "www.google.com",
- },
- "www.google.com",
- },
-}
-
-func TestParseAuthority(t *testing.T) {
- for _, tt := range parseAuthorityTests {
- out := parseAuthority(tt.in)
- if out != tt.out {
- t.Errorf("got %v; want %v", out, tt.out)
- }
- }
-}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/LICENSE b/Godeps/_workspace/src/golang.org/x/sys/LICENSE
new file mode 100644
index 000000000..6a66aea5e
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/golang.org/x/sys/PATENTS b/Godeps/_workspace/src/golang.org/x/sys/PATENTS
new file mode 100644
index 000000000..733099041
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/.gitignore b/Godeps/_workspace/src/golang.org/x/sys/unix/.gitignore
new file mode 100644
index 000000000..e48271590
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/.gitignore
@@ -0,0 +1 @@
+_obj/
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm.s
new file mode 100644
index 000000000..8ed2fdb94
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm.s
@@ -0,0 +1,10 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+TEXT ·use(SB),NOSPLIT,$0
+ RET
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_386.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_386.s
new file mode 100644
index 000000000..8a7278319
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_386.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, Darwin
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-52
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_amd64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_amd64.s
new file mode 100644
index 000000000..6321421f2
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_amd64.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, Darwin
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-104
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_arm.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_arm.s
new file mode 100644
index 000000000..333242d50
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_arm.s
@@ -0,0 +1,30 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+// +build arm,darwin
+
+#include "textflag.h"
+
+//
+// System call support for ARM, Darwin
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ B syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ B syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-52
+ B syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ B syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ B syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_arm64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_arm64.s
new file mode 100644
index 000000000..97e017437
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_darwin_arm64.s
@@ -0,0 +1,30 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+// +build arm64,darwin
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, Darwin
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ B syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ B syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-104
+ B syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ B syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ B syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_386.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_386.s
new file mode 100644
index 000000000..7e55e0d31
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_386.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, FreeBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-32
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-44
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-56
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-32
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-44
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_amd64.s
new file mode 100644
index 000000000..d5ed6726c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_dragonfly_amd64.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, DragonFly
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-64
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-88
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-112
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-64
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-88
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_386.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_386.s
new file mode 100644
index 000000000..c9a0a2601
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_386.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, FreeBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-52
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_amd64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_amd64.s
new file mode 100644
index 000000000..35172477c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_amd64.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, FreeBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-104
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_arm.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_arm.s
new file mode 100644
index 000000000..9227c875b
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_freebsd_arm.s
@@ -0,0 +1,29 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for ARM, FreeBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ B syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ B syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-52
+ B syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ B syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ B syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_386.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_386.s
new file mode 100644
index 000000000..4db290932
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_386.s
@@ -0,0 +1,35 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for 386, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ JMP syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ JMP syscall·RawSyscall6(SB)
+
+TEXT ·socketcall(SB),NOSPLIT,$0-36
+ JMP syscall·socketcall(SB)
+
+TEXT ·rawsocketcall(SB),NOSPLIT,$0-36
+ JMP syscall·rawsocketcall(SB)
+
+TEXT ·seek(SB),NOSPLIT,$0-28
+ JMP syscall·seek(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_amd64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_amd64.s
new file mode 100644
index 000000000..44e25c62f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_amd64.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for AMD64, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ JMP syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ JMP syscall·RawSyscall6(SB)
+
+TEXT ·gettimeofday(SB),NOSPLIT,$0-16
+ JMP syscall·gettimeofday(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_arm.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_arm.s
new file mode 100644
index 000000000..cf0b57465
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_arm.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for arm, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ B syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ B syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ B syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ B syscall·RawSyscall6(SB)
+
+TEXT ·seek(SB),NOSPLIT,$0-32
+ B syscall·seek(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_arm64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_arm64.s
new file mode 100644
index 000000000..4be9bfede
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_arm64.s
@@ -0,0 +1,24 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux
+// +build arm64
+// +build !gccgo
+
+#include "textflag.h"
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ B syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ B syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ B syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ B syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_ppc64x.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_ppc64x.s
new file mode 100644
index 000000000..8d231feb4
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_linux_ppc64x.s
@@ -0,0 +1,28 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux
+// +build ppc64 ppc64le
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for ppc64, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ BR syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ BR syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ BR syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ BR syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_386.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_386.s
new file mode 100644
index 000000000..48bdcd763
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_386.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, NetBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-52
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_amd64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_amd64.s
new file mode 100644
index 000000000..2ede05c72
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_amd64.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, NetBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-104
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_arm.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_arm.s
new file mode 100644
index 000000000..e8928571c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_netbsd_arm.s
@@ -0,0 +1,29 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for ARM, NetBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ B syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ B syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-52
+ B syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ B syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ B syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_openbsd_386.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_openbsd_386.s
new file mode 100644
index 000000000..00576f3c8
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_openbsd_386.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, OpenBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-28
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-40
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-52
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_openbsd_amd64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_openbsd_amd64.s
new file mode 100644
index 000000000..790ef77f8
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_openbsd_amd64.s
@@ -0,0 +1,29 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, OpenBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+ JMP syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+ JMP syscall·Syscall6(SB)
+
+TEXT ·Syscall9(SB),NOSPLIT,$0-104
+ JMP syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+ JMP syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+ JMP syscall·RawSyscall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/asm_solaris_amd64.s b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_solaris_amd64.s
new file mode 100644
index 000000000..43ed17a05
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/asm_solaris_amd64.s
@@ -0,0 +1,17 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go
+//
+
+TEXT ·sysvicall6(SB),NOSPLIT,$0-64
+ JMP syscall·sysvicall6(SB)
+
+TEXT ·rawSysvicall6(SB),NOSPLIT,$0-64
+ JMP syscall·rawSysvicall6(SB)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/constants.go b/Godeps/_workspace/src/golang.org/x/sys/unix/constants.go
new file mode 100644
index 000000000..a96f0ebc2
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/constants.go
@@ -0,0 +1,13 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package unix
+
+const (
+ R_OK = 0x4
+ W_OK = 0x2
+ X_OK = 0x1
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/env_unix.go b/Godeps/_workspace/src/golang.org/x/sys/unix/env_unix.go
new file mode 100644
index 000000000..45e281a04
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/env_unix.go
@@ -0,0 +1,27 @@
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+// Unix environment variables.
+
+package unix
+
+import "syscall"
+
+func Getenv(key string) (value string, found bool) {
+ return syscall.Getenv(key)
+}
+
+func Setenv(key, value string) error {
+ return syscall.Setenv(key, value)
+}
+
+func Clearenv() {
+ syscall.Clearenv()
+}
+
+func Environ() []string {
+ return syscall.Environ()
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/env_unset.go b/Godeps/_workspace/src/golang.org/x/sys/unix/env_unset.go
new file mode 100644
index 000000000..922226255
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/env_unset.go
@@ -0,0 +1,14 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.4
+
+package unix
+
+import "syscall"
+
+func Unsetenv(key string) error {
+ // This was added in Go 1.4.
+ return syscall.Unsetenv(key)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/flock.go b/Godeps/_workspace/src/golang.org/x/sys/unix/flock.go
new file mode 100644
index 000000000..ce67a5952
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/flock.go
@@ -0,0 +1,24 @@
+// +build linux darwin freebsd openbsd netbsd dragonfly
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package unix
+
+import "unsafe"
+
+// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux
+// systems by flock_linux_32bit.go to be SYS_FCNTL64.
+var fcntl64Syscall uintptr = SYS_FCNTL
+
+// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
+ _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
+ if errno == 0 {
+ return nil
+ }
+ return errno
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/flock_linux_32bit.go b/Godeps/_workspace/src/golang.org/x/sys/unix/flock_linux_32bit.go
new file mode 100644
index 000000000..362831c3f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/flock_linux_32bit.go
@@ -0,0 +1,13 @@
+// +build linux,386 linux,arm
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package unix
+
+func init() {
+ // On 32-bit Linux systems, the fcntl syscall that matches Go's
+ // Flock_t type is SYS_FCNTL64, not SYS_FCNTL.
+ fcntl64Syscall = SYS_FCNTL64
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo.go b/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo.go
new file mode 100644
index 000000000..94c823212
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo.go
@@ -0,0 +1,46 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build gccgo
+
+package unix
+
+import "syscall"
+
+// We can't use the gc-syntax .s files for gccgo. On the plus side
+// much of the functionality can be written directly in Go.
+
+//extern gccgoRealSyscall
+func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
+
+func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+ syscall.Entersyscall()
+ r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
+ syscall.Exitsyscall()
+ return r, 0, syscall.Errno(errno)
+}
+
+func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+ syscall.Entersyscall()
+ r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
+ syscall.Exitsyscall()
+ return r, 0, syscall.Errno(errno)
+}
+
+func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+ syscall.Entersyscall()
+ r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)
+ syscall.Exitsyscall()
+ return r, 0, syscall.Errno(errno)
+}
+
+func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+ r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
+ return r, 0, syscall.Errno(errno)
+}
+
+func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+ r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
+ return r, 0, syscall.Errno(errno)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo_c.c b/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo_c.c
new file mode 100644
index 000000000..07f6be039
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo_c.c
@@ -0,0 +1,41 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build gccgo
+
+#include <errno.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#define _STRINGIFY2_(x) #x
+#define _STRINGIFY_(x) _STRINGIFY2_(x)
+#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)
+
+// Call syscall from C code because the gccgo support for calling from
+// Go to C does not support varargs functions.
+
+struct ret {
+ uintptr_t r;
+ uintptr_t err;
+};
+
+struct ret
+gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
+{
+ struct ret r;
+
+ errno = 0;
+ r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ r.err = errno;
+ return r;
+}
+
+// Define the use function in C so that it is not inlined.
+
+extern void use(void *) __asm__ (GOSYM_PREFIX GOPKGPATH ".use") __attribute__((noinline));
+
+void
+use(void *p __attribute__ ((unused)))
+{
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo_linux_amd64.go
new file mode 100644
index 000000000..bffe1a77d
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/gccgo_linux_amd64.go
@@ -0,0 +1,20 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build gccgo,linux,amd64
+
+package unix
+
+import "syscall"
+
+//extern gettimeofday
+func realGettimeofday(*Timeval, *byte) int32
+
+func gettimeofday(tv *Timeval) (err syscall.Errno) {
+ r := realGettimeofday(tv, nil)
+ if r < 0 {
+ return syscall.GetErrno()
+ }
+ return 0
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh b/Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh
new file mode 100644
index 000000000..de95a4bbc
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mkall.sh
@@ -0,0 +1,274 @@
+#!/usr/bin/env bash
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# The unix package provides access to the raw system call
+# interface of the underlying operating system. Porting Go to
+# a new architecture/operating system combination requires
+# some manual effort, though there are tools that automate
+# much of the process. The auto-generated files have names
+# beginning with z.
+#
+# This script runs or (given -n) prints suggested commands to generate z files
+# for the current system. Running those commands is not automatic.
+# This script is documentation more than anything else.
+#
+# * asm_${GOOS}_${GOARCH}.s
+#
+# This hand-written assembly file implements system call dispatch.
+# There are three entry points:
+#
+# func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);
+# func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr);
+# func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);
+#
+# The first and second are the standard ones; they differ only in
+# how many arguments can be passed to the kernel.
+# The third is for low-level use by the ForkExec wrapper;
+# unlike the first two, it does not call into the scheduler to
+# let it know that a system call is running.
+#
+# * syscall_${GOOS}.go
+#
+# This hand-written Go file implements system calls that need
+# special handling and lists "//sys" comments giving prototypes
+# for ones that can be auto-generated. Mksyscall reads those
+# comments to generate the stubs.
+#
+# * syscall_${GOOS}_${GOARCH}.go
+#
+# Same as syscall_${GOOS}.go except that it contains code specific
+# to ${GOOS} on one particular architecture.
+#
+# * types_${GOOS}.c
+#
+# This hand-written C file includes standard C headers and then
+# creates typedef or enum names beginning with a dollar sign
+# (use of $ in variable names is a gcc extension). The hardest
+# part about preparing this file is figuring out which headers to
+# include and which symbols need to be #defined to get the
+# actual data structures that pass through to the kernel system calls.
+# Some C libraries present alternate versions for binary compatibility
+# and translate them on the way in and out of system calls, but
+# there is almost always a #define that can get the real ones.
+# See types_darwin.c and types_linux.c for examples.
+#
+# * zerror_${GOOS}_${GOARCH}.go
+#
+# This machine-generated file defines the system's error numbers,
+# error strings, and signal numbers. The generator is "mkerrors.sh".
+# Usually no arguments are needed, but mkerrors.sh will pass its
+# arguments on to godefs.
+#
+# * zsyscall_${GOOS}_${GOARCH}.go
+#
+# Generated by mksyscall.pl; see syscall_${GOOS}.go above.
+#
+# * zsysnum_${GOOS}_${GOARCH}.go
+#
+# Generated by mksysnum_${GOOS}.
+#
+# * ztypes_${GOOS}_${GOARCH}.go
+#
+# Generated by godefs; see types_${GOOS}.c above.
+
+GOOSARCH="${GOOS}_${GOARCH}"
+
+# defaults
+mksyscall="./mksyscall.pl"
+mkerrors="./mkerrors.sh"
+zerrors="zerrors_$GOOSARCH.go"
+mksysctl=""
+zsysctl="zsysctl_$GOOSARCH.go"
+mksysnum=
+mktypes=
+run="sh"
+
+case "$1" in
+-syscalls)
+ for i in zsyscall*go
+ do
+ sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i
+ rm _$i
+ done
+ exit 0
+ ;;
+-n)
+ run="cat"
+ shift
+esac
+
+case "$#" in
+0)
+ ;;
+*)
+ echo 'usage: mkall.sh [-n]' 1>&2
+ exit 2
+esac
+
+GOOSARCH_in=syscall_$GOOSARCH.go
+case "$GOOSARCH" in
+_* | *_ | _)
+ echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2
+ exit 1
+ ;;
+darwin_386)
+ mkerrors="$mkerrors -m32"
+ mksyscall="./mksyscall.pl -l32"
+ mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+darwin_amd64)
+ mkerrors="$mkerrors -m64"
+ mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+darwin_arm)
+ mkerrors="$mkerrors"
+ mksysnum="./mksysnum_darwin.pl /usr/include/sys/syscall.h"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+darwin_arm64)
+ mkerrors="$mkerrors -m64"
+ mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+dragonfly_386)
+ mkerrors="$mkerrors -m32"
+ mksyscall="./mksyscall.pl -l32 -dragonfly"
+ mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+dragonfly_amd64)
+ mkerrors="$mkerrors -m64"
+ mksyscall="./mksyscall.pl -dragonfly"
+ mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+freebsd_386)
+ mkerrors="$mkerrors -m32"
+ mksyscall="./mksyscall.pl -l32"
+ mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+freebsd_amd64)
+ mkerrors="$mkerrors -m64"
+ mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+freebsd_arm)
+ mkerrors="$mkerrors"
+ mksyscall="./mksyscall.pl -l32 -arm"
+ mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+ # Let the type of C char be singed for making the bare syscall
+ # API consistent across over platforms.
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
+ ;;
+linux_386)
+ mkerrors="$mkerrors -m32"
+ mksyscall="./mksyscall.pl -l32"
+ mksysnum="./mksysnum_linux.pl /usr/include/asm/unistd_32.h"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+linux_amd64)
+ unistd_h=$(ls -1 /usr/include/asm/unistd_64.h /usr/include/x86_64-linux-gnu/asm/unistd_64.h 2>/dev/null | head -1)
+ if [ "$unistd_h" = "" ]; then
+ echo >&2 cannot find unistd_64.h
+ exit 1
+ fi
+ mkerrors="$mkerrors -m64"
+ mksysnum="./mksysnum_linux.pl $unistd_h"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+linux_arm)
+ mkerrors="$mkerrors"
+ mksyscall="./mksyscall.pl -l32 -arm"
+ mksysnum="curl -s 'http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/arch/arm/include/uapi/asm/unistd.h' | ./mksysnum_linux.pl -"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+linux_arm64)
+ unistd_h=$(ls -1 /usr/include/asm/unistd.h /usr/include/asm-generic/unistd.h 2>/dev/null | head -1)
+ if [ "$unistd_h" = "" ]; then
+ echo >&2 cannot find unistd_64.h
+ exit 1
+ fi
+ mksysnum="./mksysnum_linux.pl $unistd_h"
+ # Let the type of C char be singed for making the bare syscall
+ # API consistent across over platforms.
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
+ ;;
+linux_ppc64)
+ GOOSARCH_in=syscall_linux_ppc64x.go
+ unistd_h=/usr/include/asm/unistd.h
+ mkerrors="$mkerrors -m64"
+ mksysnum="./mksysnum_linux.pl $unistd_h"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+linux_ppc64le)
+ GOOSARCH_in=syscall_linux_ppc64x.go
+ unistd_h=/usr/include/powerpc64le-linux-gnu/asm/unistd.h
+ mkerrors="$mkerrors -m64"
+ mksysnum="./mksysnum_linux.pl $unistd_h"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+netbsd_386)
+ mkerrors="$mkerrors -m32"
+ mksyscall="./mksyscall.pl -l32 -netbsd"
+ mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+netbsd_amd64)
+ mkerrors="$mkerrors -m64"
+ mksyscall="./mksyscall.pl -netbsd"
+ mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+openbsd_386)
+ mkerrors="$mkerrors -m32"
+ mksyscall="./mksyscall.pl -l32 -openbsd"
+ mksysctl="./mksysctl_openbsd.pl"
+ zsysctl="zsysctl_openbsd.go"
+ mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+openbsd_amd64)
+ mkerrors="$mkerrors -m64"
+ mksyscall="./mksyscall.pl -openbsd"
+ mksysctl="./mksysctl_openbsd.pl"
+ zsysctl="zsysctl_openbsd.go"
+ mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+solaris_amd64)
+ mksyscall="./mksyscall_solaris.pl"
+ mkerrors="$mkerrors -m64"
+ mksysnum=
+ mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+ ;;
+*)
+ echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2
+ exit 1
+ ;;
+esac
+
+(
+ if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi
+ case "$GOOS" in
+ *)
+ syscall_goos="syscall_$GOOS.go"
+ case "$GOOS" in
+ darwin | dragonfly | freebsd | netbsd | openbsd)
+ syscall_goos="syscall_bsd.go $syscall_goos"
+ ;;
+ esac
+ if [ -n "$mksyscall" ]; then echo "$mksyscall $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi
+ ;;
+ esac
+ if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
+ if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
+ if [ -n "$mktypes" ]; then
+ echo "echo // +build $GOARCH,$GOOS > ztypes_$GOOSARCH.go";
+ echo "$mktypes types_$GOOS.go | gofmt >>ztypes_$GOOSARCH.go";
+ fi
+) | $run
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh b/Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh
new file mode 100644
index 000000000..c40d788c4
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mkerrors.sh
@@ -0,0 +1,476 @@
+#!/usr/bin/env bash
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# Generate Go code listing errors and other #defined constant
+# values (ENAMETOOLONG etc.), by asking the preprocessor
+# about the definitions.
+
+unset LANG
+export LC_ALL=C
+export LC_CTYPE=C
+
+if test -z "$GOARCH" -o -z "$GOOS"; then
+ echo 1>&2 "GOARCH or GOOS not defined in environment"
+ exit 1
+fi
+
+CC=${CC:-cc}
+
+if [[ "$GOOS" -eq "solaris" ]]; then
+ # Assumes GNU versions of utilities in PATH.
+ export PATH=/usr/gnu/bin:$PATH
+fi
+
+uname=$(uname)
+
+includes_Darwin='
+#define _DARWIN_C_SOURCE
+#define KERNEL
+#define _DARWIN_USE_64_BIT_INODE
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/ptrace.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <termios.h>
+'
+
+includes_DragonFly='
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+#include <sys/ioctl.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <termios.h>
+#include <netinet/ip.h>
+#include <net/ip_mroute/ip_mroute.h>
+'
+
+includes_FreeBSD='
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+#include <sys/ioctl.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <termios.h>
+#include <netinet/ip.h>
+#include <netinet/ip_mroute.h>
+#include <sys/extattr.h>
+
+#if __FreeBSD__ >= 10
+#define IFT_CARP 0xf8 // IFT_CARP is deprecated in FreeBSD 10
+#undef SIOCAIFADDR
+#define SIOCAIFADDR _IOW(105, 26, struct oifaliasreq) // ifaliasreq contains if_data
+#undef SIOCSIFPHYADDR
+#define SIOCSIFPHYADDR _IOW(105, 70, struct oifaliasreq) // ifaliasreq contains if_data
+#endif
+'
+
+includes_Linux='
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#ifndef __LP64__
+#define _FILE_OFFSET_BITS 64
+#endif
+#define _GNU_SOURCE
+
+#include <bits/sockaddr.h>
+#include <sys/epoll.h>
+#include <sys/inotify.h>
+#include <sys/ioctl.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/prctl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/socket.h>
+#include <linux/if.h>
+#include <linux/if_arp.h>
+#include <linux/if_ether.h>
+#include <linux/if_tun.h>
+#include <linux/if_packet.h>
+#include <linux/if_addr.h>
+#include <linux/filter.h>
+#include <linux/netlink.h>
+#include <linux/reboot.h>
+#include <linux/rtnetlink.h>
+#include <linux/ptrace.h>
+#include <linux/sched.h>
+#include <linux/wait.h>
+#include <linux/icmpv6.h>
+#include <net/route.h>
+#include <asm/termbits.h>
+
+#ifndef MSG_FASTOPEN
+#define MSG_FASTOPEN 0x20000000
+#endif
+
+#ifndef PTRACE_GETREGS
+#define PTRACE_GETREGS 0xc
+#endif
+
+#ifndef PTRACE_SETREGS
+#define PTRACE_SETREGS 0xd
+#endif
+'
+
+includes_NetBSD='
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/termios.h>
+#include <sys/ttycom.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/ip_mroute.h>
+#include <netinet/if_ether.h>
+
+// Needed since <sys/param.h> refers to it...
+#define schedppq 1
+'
+
+includes_OpenBSD='
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/termios.h>
+#include <sys/ttycom.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/if_var.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/ip_mroute.h>
+#include <netinet/if_ether.h>
+#include <net/if_bridge.h>
+
+// We keep some constants not supported in OpenBSD 5.5 and beyond for
+// the promise of compatibility.
+#define EMUL_ENABLED 0x1
+#define EMUL_NATIVE 0x2
+#define IPV6_FAITH 0x1d
+#define IPV6_OPTIONS 0x1
+#define IPV6_RTHDR_STRICT 0x1
+#define IPV6_SOCKOPT_RESERVED1 0x3
+#define SIOCGIFGENERIC 0xc020693a
+#define SIOCSIFGENERIC 0x80206939
+#define WALTSIG 0x4
+'
+
+includes_SunOS='
+#include <limits.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+#include <sys/ioctl.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_arp.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <termios.h>
+#include <netinet/ip.h>
+#include <netinet/ip_mroute.h>
+'
+
+
+includes='
+#include <sys/types.h>
+#include <sys/file.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip6.h>
+#include <netinet/tcp.h>
+#include <errno.h>
+#include <sys/signal.h>
+#include <signal.h>
+#include <sys/resource.h>
+#include <time.h>
+'
+ccflags="$@"
+
+# Write go tool cgo -godefs input.
+(
+ echo package unix
+ echo
+ echo '/*'
+ indirect="includes_$(uname)"
+ echo "${!indirect} $includes"
+ echo '*/'
+ echo 'import "C"'
+ echo 'import "syscall"'
+ echo
+ echo 'const ('
+
+ # The gcc command line prints all the #defines
+ # it encounters while processing the input
+ echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags |
+ awk '
+ $1 != "#define" || $2 ~ /\(/ || $3 == "" {next}
+
+ $2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next} # 386 registers
+ $2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}
+ $2 ~ /^(SCM_SRCRT)$/ {next}
+ $2 ~ /^(MAP_FAILED)$/ {next}
+ $2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc.
+
+ $2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||
+ $2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}
+
+ $2 !~ /^ETH_/ &&
+ $2 !~ /^EPROC_/ &&
+ $2 !~ /^EQUIV_/ &&
+ $2 !~ /^EXPR_/ &&
+ $2 ~ /^E[A-Z0-9_]+$/ ||
+ $2 ~ /^B[0-9_]+$/ ||
+ $2 == "BOTHER" ||
+ $2 ~ /^CI?BAUD(EX)?$/ ||
+ $2 == "IBSHIFT" ||
+ $2 ~ /^V[A-Z0-9]+$/ ||
+ $2 ~ /^CS[A-Z0-9]/ ||
+ $2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ ||
+ $2 ~ /^IGN/ ||
+ $2 ~ /^IX(ON|ANY|OFF)$/ ||
+ $2 ~ /^IN(LCR|PCK)$/ ||
+ $2 ~ /(^FLU?SH)|(FLU?SH$)/ ||
+ $2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||
+ $2 == "BRKINT" ||
+ $2 == "HUPCL" ||
+ $2 == "PENDIN" ||
+ $2 == "TOSTOP" ||
+ $2 == "XCASE" ||
+ $2 == "ALTWERASE" ||
+ $2 == "NOKERNINFO" ||
+ $2 ~ /^PAR/ ||
+ $2 ~ /^SIG[^_]/ ||
+ $2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ ||
+ $2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ ||
+ $2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ ||
+ $2 ~ /^O?XTABS$/ ||
+ $2 ~ /^TC[IO](ON|OFF)$/ ||
+ $2 ~ /^IN_/ ||
+ $2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||
+ $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||
+ $2 == "ICMPV6_FILTER" ||
+ $2 == "SOMAXCONN" ||
+ $2 == "NAME_MAX" ||
+ $2 == "IFNAMSIZ" ||
+ $2 ~ /^CTL_(MAXNAME|NET|QUERY)$/ ||
+ $2 ~ /^SYSCTL_VERS/ ||
+ $2 ~ /^(MS|MNT)_/ ||
+ $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
+ $2 ~ /^(O|F|FD|NAME|S|PTRACE|PT)_/ ||
+ $2 ~ /^LINUX_REBOOT_CMD_/ ||
+ $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
+ $2 !~ "NLA_TYPE_MASK" &&
+ $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P)_/ ||
+ $2 ~ /^SIOC/ ||
+ $2 ~ /^TIOC/ ||
+ $2 ~ /^TCGET/ ||
+ $2 ~ /^TCSET/ ||
+ $2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||
+ $2 !~ "RTF_BITS" &&
+ $2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||
+ $2 ~ /^BIOC/ ||
+ $2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||
+ $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|NOFILE|STACK)|RLIM_INFINITY/ ||
+ $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||
+ $2 ~ /^CLONE_[A-Z_]+/ ||
+ $2 !~ /^(BPF_TIMEVAL)$/ &&
+ $2 ~ /^(BPF|DLT)_/ ||
+ $2 ~ /^CLOCK_/ ||
+ $2 !~ "WMESGLEN" &&
+ $2 ~ /^W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", $2, $2)}
+ $2 ~ /^__WCOREFLAG$/ {next}
+ $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)}
+
+ {next}
+ ' | sort
+
+ echo ')'
+) >_const.go
+
+# Pull out the error names for later.
+errors=$(
+ echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
+ awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |
+ sort
+)
+
+# Pull out the signal names for later.
+signals=$(
+ echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
+ awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |
+ egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
+ sort
+)
+
+# Again, writing regexps to a file.
+echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
+ awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' |
+ sort >_error.grep
+echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
+ awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' |
+ egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
+ sort >_signal.grep
+
+echo '// mkerrors.sh' "$@"
+echo '// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT'
+echo
+echo "// +build ${GOARCH},${GOOS}"
+echo
+go tool cgo -godefs -- "$@" _const.go >_error.out
+cat _error.out | grep -vf _error.grep | grep -vf _signal.grep
+echo
+echo '// Errors'
+echo 'const ('
+cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= syscall.Errno(\1)/'
+echo ')'
+
+echo
+echo '// Signals'
+echo 'const ('
+cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= syscall.Signal(\1)/'
+echo ')'
+
+# Run C program to print error and syscall strings.
+(
+ echo -E "
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <ctype.h>
+#include <string.h>
+#include <signal.h>
+
+#define nelem(x) (sizeof(x)/sizeof((x)[0]))
+
+enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below
+
+int errors[] = {
+"
+ for i in $errors
+ do
+ echo -E ' '$i,
+ done
+
+ echo -E "
+};
+
+int signals[] = {
+"
+ for i in $signals
+ do
+ echo -E ' '$i,
+ done
+
+ # Use -E because on some systems bash builtin interprets \n itself.
+ echo -E '
+};
+
+static int
+intcmp(const void *a, const void *b)
+{
+ return *(int*)a - *(int*)b;
+}
+
+int
+main(void)
+{
+ int i, j, e;
+ char buf[1024], *p;
+
+ printf("\n\n// Error table\n");
+ printf("var errors = [...]string {\n");
+ qsort(errors, nelem(errors), sizeof errors[0], intcmp);
+ for(i=0; i<nelem(errors); i++) {
+ e = errors[i];
+ if(i > 0 && errors[i-1] == e)
+ continue;
+ strcpy(buf, strerror(e));
+ // lowercase first letter: Bad -> bad, but STREAM -> STREAM.
+ if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
+ buf[0] += a - A;
+ printf("\t%d: \"%s\",\n", e, buf);
+ }
+ printf("}\n\n");
+
+ printf("\n\n// Signal table\n");
+ printf("var signals = [...]string {\n");
+ qsort(signals, nelem(signals), sizeof signals[0], intcmp);
+ for(i=0; i<nelem(signals); i++) {
+ e = signals[i];
+ if(i > 0 && signals[i-1] == e)
+ continue;
+ strcpy(buf, strsignal(e));
+ // lowercase first letter: Bad -> bad, but STREAM -> STREAM.
+ if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
+ buf[0] += a - A;
+ // cut trailing : number.
+ p = strrchr(buf, ":"[0]);
+ if(p)
+ *p = '\0';
+ printf("\t%d: \"%s\",\n", e, buf);
+ }
+ printf("}\n\n");
+
+ return 0;
+}
+
+'
+) >_errors.c
+
+$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl
new file mode 100644
index 000000000..b1e7766da
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall.pl
@@ -0,0 +1,323 @@
+#!/usr/bin/env perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# This program reads a file containing function prototypes
+# (like syscall_darwin.go) and generates system call bodies.
+# The prototypes are marked by lines beginning with "//sys"
+# and read like func declarations if //sys is replaced by func, but:
+# * The parameter lists must give a name for each argument.
+# This includes return parameters.
+# * The parameter lists must give a type for each argument:
+# the (x, y, z int) shorthand is not allowed.
+# * If the return parameter is an error number, it must be named errno.
+
+# A line beginning with //sysnb is like //sys, except that the
+# goroutine will not be suspended during the execution of the system
+# call. This must only be used for system calls which can never
+# block, as otherwise the system call could cause all goroutines to
+# hang.
+
+use strict;
+
+my $cmdline = "mksyscall.pl " . join(' ', @ARGV);
+my $errors = 0;
+my $_32bit = "";
+my $plan9 = 0;
+my $openbsd = 0;
+my $netbsd = 0;
+my $dragonfly = 0;
+my $arm = 0; # 64-bit value should use (even, odd)-pair
+
+if($ARGV[0] eq "-b32") {
+ $_32bit = "big-endian";
+ shift;
+} elsif($ARGV[0] eq "-l32") {
+ $_32bit = "little-endian";
+ shift;
+}
+if($ARGV[0] eq "-plan9") {
+ $plan9 = 1;
+ shift;
+}
+if($ARGV[0] eq "-openbsd") {
+ $openbsd = 1;
+ shift;
+}
+if($ARGV[0] eq "-netbsd") {
+ $netbsd = 1;
+ shift;
+}
+if($ARGV[0] eq "-dragonfly") {
+ $dragonfly = 1;
+ shift;
+}
+if($ARGV[0] eq "-arm") {
+ $arm = 1;
+ shift;
+}
+
+if($ARGV[0] =~ /^-/) {
+ print STDERR "usage: mksyscall.pl [-b32 | -l32] [file ...]\n";
+ exit 1;
+}
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+sub parseparamlist($) {
+ my ($list) = @_;
+ $list =~ s/^\s*//;
+ $list =~ s/\s*$//;
+ if($list eq "") {
+ return ();
+ }
+ return split(/\s*,\s*/, $list);
+}
+
+sub parseparam($) {
+ my ($p) = @_;
+ if($p !~ /^(\S*) (\S*)$/) {
+ print STDERR "$ARGV:$.: malformed parameter: $p\n";
+ $errors = 1;
+ return ("xx", "int");
+ }
+ return ($1, $2);
+}
+
+my $text = "";
+while(<>) {
+ chomp;
+ s/\s+/ /g;
+ s/^\s+//;
+ s/\s+$//;
+ my $nonblock = /^\/\/sysnb /;
+ next if !/^\/\/sys / && !$nonblock;
+
+ # Line must be of the form
+ # func Open(path string, mode int, perm int) (fd int, errno error)
+ # Split into name, in params, out params.
+ if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$/) {
+ print STDERR "$ARGV:$.: malformed //sys declaration\n";
+ $errors = 1;
+ next;
+ }
+ my ($func, $in, $out, $sysname) = ($2, $3, $4, $5);
+
+ # Split argument lists on comma.
+ my @in = parseparamlist($in);
+ my @out = parseparamlist($out);
+
+ # Try in vain to keep people from editing this file.
+ # The theory is that they jump into the middle of the file
+ # without reading the header.
+ $text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
+
+ # Go function header.
+ my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : "";
+ $text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl;
+
+ # Check if err return available
+ my $errvar = "";
+ foreach my $p (@out) {
+ my ($name, $type) = parseparam($p);
+ if($type eq "error") {
+ $errvar = $name;
+ last;
+ }
+ }
+
+ # Prepare arguments to Syscall.
+ my @args = ();
+ my @uses = ();
+ my $n = 0;
+ foreach my $p (@in) {
+ my ($name, $type) = parseparam($p);
+ if($type =~ /^\*/) {
+ push @args, "uintptr(unsafe.Pointer($name))";
+ } elsif($type eq "string" && $errvar ne "") {
+ $text .= "\tvar _p$n *byte\n";
+ $text .= "\t_p$n, $errvar = BytePtrFromString($name)\n";
+ $text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
+ push @args, "uintptr(unsafe.Pointer(_p$n))";
+ push @uses, "use(unsafe.Pointer(_p$n))";
+ $n++;
+ } elsif($type eq "string") {
+ print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
+ $text .= "\tvar _p$n *byte\n";
+ $text .= "\t_p$n, _ = BytePtrFromString($name)\n";
+ push @args, "uintptr(unsafe.Pointer(_p$n))";
+ push @uses, "use(unsafe.Pointer(_p$n))";
+ $n++;
+ } elsif($type =~ /^\[\](.*)/) {
+ # Convert slice into pointer, length.
+ # Have to be careful not to take address of &a[0] if len == 0:
+ # pass dummy pointer in that case.
+ # Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
+ $text .= "\tvar _p$n unsafe.Pointer\n";
+ $text .= "\tif len($name) > 0 {\n\t\t_p$n = unsafe.Pointer(\&${name}[0])\n\t}";
+ $text .= " else {\n\t\t_p$n = unsafe.Pointer(&_zero)\n\t}";
+ $text .= "\n";
+ push @args, "uintptr(_p$n)", "uintptr(len($name))";
+ $n++;
+ } elsif($type eq "int64" && ($openbsd || $netbsd)) {
+ push @args, "0";
+ if($_32bit eq "big-endian") {
+ push @args, "uintptr($name>>32)", "uintptr($name)";
+ } elsif($_32bit eq "little-endian") {
+ push @args, "uintptr($name)", "uintptr($name>>32)";
+ } else {
+ push @args, "uintptr($name)";
+ }
+ } elsif($type eq "int64" && $dragonfly) {
+ if ($func !~ /^extp(read|write)/i) {
+ push @args, "0";
+ }
+ if($_32bit eq "big-endian") {
+ push @args, "uintptr($name>>32)", "uintptr($name)";
+ } elsif($_32bit eq "little-endian") {
+ push @args, "uintptr($name)", "uintptr($name>>32)";
+ } else {
+ push @args, "uintptr($name)";
+ }
+ } elsif($type eq "int64" && $_32bit ne "") {
+ if(@args % 2 && $arm) {
+ # arm abi specifies 64-bit argument uses
+ # (even, odd) pair
+ push @args, "0"
+ }
+ if($_32bit eq "big-endian") {
+ push @args, "uintptr($name>>32)", "uintptr($name)";
+ } else {
+ push @args, "uintptr($name)", "uintptr($name>>32)";
+ }
+ } else {
+ push @args, "uintptr($name)";
+ }
+ }
+
+ # Determine which form to use; pad args with zeros.
+ my $asm = "Syscall";
+ if ($nonblock) {
+ $asm = "RawSyscall";
+ }
+ if(@args <= 3) {
+ while(@args < 3) {
+ push @args, "0";
+ }
+ } elsif(@args <= 6) {
+ $asm .= "6";
+ while(@args < 6) {
+ push @args, "0";
+ }
+ } elsif(@args <= 9) {
+ $asm .= "9";
+ while(@args < 9) {
+ push @args, "0";
+ }
+ } else {
+ print STDERR "$ARGV:$.: too many arguments to system call\n";
+ }
+
+ # System call number.
+ if($sysname eq "") {
+ $sysname = "SYS_$func";
+ $sysname =~ s/([a-z])([A-Z])/${1}_$2/g; # turn FooBar into Foo_Bar
+ $sysname =~ y/a-z/A-Z/;
+ }
+
+ # Actual call.
+ my $args = join(', ', @args);
+ my $call = "$asm($sysname, $args)";
+
+ # Assign return values.
+ my $body = "";
+ my @ret = ("_", "_", "_");
+ my $do_errno = 0;
+ for(my $i=0; $i<@out; $i++) {
+ my $p = $out[$i];
+ my ($name, $type) = parseparam($p);
+ my $reg = "";
+ if($name eq "err" && !$plan9) {
+ $reg = "e1";
+ $ret[2] = $reg;
+ $do_errno = 1;
+ } elsif($name eq "err" && $plan9) {
+ $ret[0] = "r0";
+ $ret[2] = "e1";
+ next;
+ } else {
+ $reg = sprintf("r%d", $i);
+ $ret[$i] = $reg;
+ }
+ if($type eq "bool") {
+ $reg = "$reg != 0";
+ }
+ if($type eq "int64" && $_32bit ne "") {
+ # 64-bit number in r1:r0 or r0:r1.
+ if($i+2 > @out) {
+ print STDERR "$ARGV:$.: not enough registers for int64 return\n";
+ }
+ if($_32bit eq "big-endian") {
+ $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
+ } else {
+ $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
+ }
+ $ret[$i] = sprintf("r%d", $i);
+ $ret[$i+1] = sprintf("r%d", $i+1);
+ }
+ if($reg ne "e1" || $plan9) {
+ $body .= "\t$name = $type($reg)\n";
+ }
+ }
+ if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
+ $text .= "\t$call\n";
+ } else {
+ $text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
+ }
+ foreach my $use (@uses) {
+ $text .= "\t$use\n";
+ }
+ $text .= $body;
+
+ if ($plan9 && $ret[2] eq "e1") {
+ $text .= "\tif int32(r0) == -1 {\n";
+ $text .= "\t\terr = e1\n";
+ $text .= "\t}\n";
+ } elsif ($do_errno) {
+ $text .= "\tif e1 != 0 {\n";
+ $text .= "\t\terr = errnoErr(e1)\n";
+ $text .= "\t}\n";
+ }
+ $text .= "\treturn\n";
+ $text .= "}\n\n";
+}
+
+chomp $text;
+chomp $text;
+
+if($errors) {
+ exit 1;
+}
+
+print <<EOF;
+// $cmdline
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+$text
+EOF
+exit 0;
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl
new file mode 100644
index 000000000..06bade768
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksyscall_solaris.pl
@@ -0,0 +1,294 @@
+#!/usr/bin/env perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# This program reads a file containing function prototypes
+# (like syscall_solaris.go) and generates system call bodies.
+# The prototypes are marked by lines beginning with "//sys"
+# and read like func declarations if //sys is replaced by func, but:
+# * The parameter lists must give a name for each argument.
+# This includes return parameters.
+# * The parameter lists must give a type for each argument:
+# the (x, y, z int) shorthand is not allowed.
+# * If the return parameter is an error number, it must be named err.
+# * If go func name needs to be different than its libc name,
+# * or the function is not in libc, name could be specified
+# * at the end, after "=" sign, like
+# //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
+
+use strict;
+
+my $cmdline = "mksyscall_solaris.pl " . join(' ', @ARGV);
+my $errors = 0;
+my $_32bit = "";
+
+binmode STDOUT;
+
+if($ARGV[0] eq "-b32") {
+ $_32bit = "big-endian";
+ shift;
+} elsif($ARGV[0] eq "-l32") {
+ $_32bit = "little-endian";
+ shift;
+}
+
+if($ARGV[0] =~ /^-/) {
+ print STDERR "usage: mksyscall_solaris.pl [-b32 | -l32] [file ...]\n";
+ exit 1;
+}
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+sub parseparamlist($) {
+ my ($list) = @_;
+ $list =~ s/^\s*//;
+ $list =~ s/\s*$//;
+ if($list eq "") {
+ return ();
+ }
+ return split(/\s*,\s*/, $list);
+}
+
+sub parseparam($) {
+ my ($p) = @_;
+ if($p !~ /^(\S*) (\S*)$/) {
+ print STDERR "$ARGV:$.: malformed parameter: $p\n";
+ $errors = 1;
+ return ("xx", "int");
+ }
+ return ($1, $2);
+}
+
+my $package = "";
+my $text = "";
+my $dynimports = "";
+my $linknames = "";
+my @vars = ();
+while(<>) {
+ chomp;
+ s/\s+/ /g;
+ s/^\s+//;
+ s/\s+$//;
+ $package = $1 if !$package && /^package (\S+)$/;
+ my $nonblock = /^\/\/sysnb /;
+ next if !/^\/\/sys / && !$nonblock;
+
+ # Line must be of the form
+ # func Open(path string, mode int, perm int) (fd int, err error)
+ # Split into name, in params, out params.
+ if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$/) {
+ print STDERR "$ARGV:$.: malformed //sys declaration\n";
+ $errors = 1;
+ next;
+ }
+ my ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6);
+
+ # Split argument lists on comma.
+ my @in = parseparamlist($in);
+ my @out = parseparamlist($out);
+
+ # So file name.
+ if($modname eq "") {
+ $modname = "libc";
+ }
+
+ # System call name.
+ if($sysname eq "") {
+ $sysname = "$func";
+ }
+
+ # System call pointer variable name.
+ my $sysvarname = "proc$sysname";
+
+ my $strconvfunc = "BytePtrFromString";
+ my $strconvtype = "*byte";
+
+ $sysname =~ y/A-Z/a-z/; # All libc functions are lowercase.
+
+ # Runtime import of function to allow cross-platform builds.
+ $dynimports .= "//go:cgo_import_dynamic libc_${sysname} ${sysname} \"$modname.so\"\n";
+ # Link symbol to proc address variable.
+ $linknames .= "//go:linkname ${sysvarname} libc_${sysname}\n";
+ # Library proc address variable.
+ push @vars, $sysvarname;
+
+ # Go function header.
+ $out = join(', ', @out);
+ if($out ne "") {
+ $out = " ($out)";
+ }
+ if($text ne "") {
+ $text .= "\n"
+ }
+ $text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out;
+
+ # Check if err return available
+ my $errvar = "";
+ foreach my $p (@out) {
+ my ($name, $type) = parseparam($p);
+ if($type eq "error") {
+ $errvar = $name;
+ last;
+ }
+ }
+
+ # Prepare arguments to Syscall.
+ my @args = ();
+ my @uses = ();
+ my $n = 0;
+ foreach my $p (@in) {
+ my ($name, $type) = parseparam($p);
+ if($type =~ /^\*/) {
+ push @args, "uintptr(unsafe.Pointer($name))";
+ } elsif($type eq "string" && $errvar ne "") {
+ $text .= "\tvar _p$n $strconvtype\n";
+ $text .= "\t_p$n, $errvar = $strconvfunc($name)\n";
+ $text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
+ push @args, "uintptr(unsafe.Pointer(_p$n))";
+ push @uses, "use(unsafe.Pointer(_p$n))";
+ $n++;
+ } elsif($type eq "string") {
+ print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
+ $text .= "\tvar _p$n $strconvtype\n";
+ $text .= "\t_p$n, _ = $strconvfunc($name)\n";
+ push @args, "uintptr(unsafe.Pointer(_p$n))";
+ push @uses, "use(unsafe.Pointer(_p$n))";
+ $n++;
+ } elsif($type =~ /^\[\](.*)/) {
+ # Convert slice into pointer, length.
+ # Have to be careful not to take address of &a[0] if len == 0:
+ # pass nil in that case.
+ $text .= "\tvar _p$n *$1\n";
+ $text .= "\tif len($name) > 0 {\n\t\t_p$n = \&$name\[0]\n\t}\n";
+ push @args, "uintptr(unsafe.Pointer(_p$n))", "uintptr(len($name))";
+ $n++;
+ } elsif($type eq "int64" && $_32bit ne "") {
+ if($_32bit eq "big-endian") {
+ push @args, "uintptr($name >> 32)", "uintptr($name)";
+ } else {
+ push @args, "uintptr($name)", "uintptr($name >> 32)";
+ }
+ } elsif($type eq "bool") {
+ $text .= "\tvar _p$n uint32\n";
+ $text .= "\tif $name {\n\t\t_p$n = 1\n\t} else {\n\t\t_p$n = 0\n\t}\n";
+ push @args, "uintptr(_p$n)";
+ $n++;
+ } else {
+ push @args, "uintptr($name)";
+ }
+ }
+ my $nargs = @args;
+
+ # Determine which form to use; pad args with zeros.
+ my $asm = "sysvicall6";
+ if ($nonblock) {
+ $asm = "rawSysvicall6";
+ }
+ if(@args <= 6) {
+ while(@args < 6) {
+ push @args, "0";
+ }
+ } else {
+ print STDERR "$ARGV:$.: too many arguments to system call\n";
+ }
+
+ # Actual call.
+ my $args = join(', ', @args);
+ my $call = "$asm(uintptr(unsafe.Pointer(&$sysvarname)), $nargs, $args)";
+
+ # Assign return values.
+ my $body = "";
+ my $failexpr = "";
+ my @ret = ("_", "_", "_");
+ my @pout= ();
+ my $do_errno = 0;
+ for(my $i=0; $i<@out; $i++) {
+ my $p = $out[$i];
+ my ($name, $type) = parseparam($p);
+ my $reg = "";
+ if($name eq "err") {
+ $reg = "e1";
+ $ret[2] = $reg;
+ $do_errno = 1;
+ } else {
+ $reg = sprintf("r%d", $i);
+ $ret[$i] = $reg;
+ }
+ if($type eq "bool") {
+ $reg = "$reg != 0";
+ }
+ if($type eq "int64" && $_32bit ne "") {
+ # 64-bit number in r1:r0 or r0:r1.
+ if($i+2 > @out) {
+ print STDERR "$ARGV:$.: not enough registers for int64 return\n";
+ }
+ if($_32bit eq "big-endian") {
+ $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
+ } else {
+ $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
+ }
+ $ret[$i] = sprintf("r%d", $i);
+ $ret[$i+1] = sprintf("r%d", $i+1);
+ }
+ if($reg ne "e1") {
+ $body .= "\t$name = $type($reg)\n";
+ }
+ }
+ if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
+ $text .= "\t$call\n";
+ } else {
+ $text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
+ }
+ foreach my $use (@uses) {
+ $text .= "\t$use\n";
+ }
+ $text .= $body;
+
+ if ($do_errno) {
+ $text .= "\tif e1 != 0 {\n";
+ $text .= "\t\terr = e1\n";
+ $text .= "\t}\n";
+ }
+ $text .= "\treturn\n";
+ $text .= "}\n";
+}
+
+if($errors) {
+ exit 1;
+}
+
+print <<EOF;
+// $cmdline
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package $package
+
+import (
+ "syscall"
+ "unsafe"
+)
+EOF
+
+print "import \"golang.org/x/sys/unix\"\n" if $package ne "unix";
+
+my $vardecls = "\t" . join(",\n\t", @vars);
+$vardecls .= " syscallFunc";
+
+chomp($_=<<EOF);
+
+$dynimports
+$linknames
+var (
+$vardecls
+)
+
+$text
+EOF
+print $_;
+exit 0;
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl
new file mode 100644
index 000000000..be67afa41
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysctl_openbsd.pl
@@ -0,0 +1,264 @@
+#!/usr/bin/env perl
+
+# Copyright 2011 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+#
+# Parse the header files for OpenBSD and generate a Go usable sysctl MIB.
+#
+# Build a MIB with each entry being an array containing the level, type and
+# a hash that will contain additional entries if the current entry is a node.
+# We then walk this MIB and create a flattened sysctl name to OID hash.
+#
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+my $debug = 0;
+my %ctls = ();
+
+my @headers = qw (
+ sys/sysctl.h
+ sys/socket.h
+ sys/tty.h
+ sys/malloc.h
+ sys/mount.h
+ sys/namei.h
+ sys/sem.h
+ sys/shm.h
+ sys/vmmeter.h
+ uvm/uvm_param.h
+ uvm/uvm_swap_encrypt.h
+ ddb/db_var.h
+ net/if.h
+ net/if_pfsync.h
+ net/pipex.h
+ netinet/in.h
+ netinet/icmp_var.h
+ netinet/igmp_var.h
+ netinet/ip_ah.h
+ netinet/ip_carp.h
+ netinet/ip_divert.h
+ netinet/ip_esp.h
+ netinet/ip_ether.h
+ netinet/ip_gre.h
+ netinet/ip_ipcomp.h
+ netinet/ip_ipip.h
+ netinet/pim_var.h
+ netinet/tcp_var.h
+ netinet/udp_var.h
+ netinet6/in6.h
+ netinet6/ip6_divert.h
+ netinet6/pim6_var.h
+ netinet/icmp6.h
+ netmpls/mpls.h
+);
+
+my @ctls = qw (
+ kern
+ vm
+ fs
+ net
+ #debug # Special handling required
+ hw
+ #machdep # Arch specific
+ user
+ ddb
+ #vfs # Special handling required
+ fs.posix
+ kern.forkstat
+ kern.intrcnt
+ kern.malloc
+ kern.nchstats
+ kern.seminfo
+ kern.shminfo
+ kern.timecounter
+ kern.tty
+ kern.watchdog
+ net.bpf
+ net.ifq
+ net.inet
+ net.inet.ah
+ net.inet.carp
+ net.inet.divert
+ net.inet.esp
+ net.inet.etherip
+ net.inet.gre
+ net.inet.icmp
+ net.inet.igmp
+ net.inet.ip
+ net.inet.ip.ifq
+ net.inet.ipcomp
+ net.inet.ipip
+ net.inet.mobileip
+ net.inet.pfsync
+ net.inet.pim
+ net.inet.tcp
+ net.inet.udp
+ net.inet6
+ net.inet6.divert
+ net.inet6.ip6
+ net.inet6.icmp6
+ net.inet6.pim6
+ net.inet6.tcp6
+ net.inet6.udp6
+ net.mpls
+ net.mpls.ifq
+ net.key
+ net.pflow
+ net.pfsync
+ net.pipex
+ net.rt
+ vm.swapencrypt
+ #vfsgenctl # Special handling required
+);
+
+# Node name "fixups"
+my %ctl_map = (
+ "ipproto" => "net.inet",
+ "net.inet.ipproto" => "net.inet",
+ "net.inet6.ipv6proto" => "net.inet6",
+ "net.inet6.ipv6" => "net.inet6.ip6",
+ "net.inet.icmpv6" => "net.inet6.icmp6",
+ "net.inet6.divert6" => "net.inet6.divert",
+ "net.inet6.tcp6" => "net.inet.tcp",
+ "net.inet6.udp6" => "net.inet.udp",
+ "mpls" => "net.mpls",
+ "swpenc" => "vm.swapencrypt"
+);
+
+# Node mappings
+my %node_map = (
+ "net.inet.ip.ifq" => "net.ifq",
+ "net.inet.pfsync" => "net.pfsync",
+ "net.mpls.ifq" => "net.ifq"
+);
+
+my $ctlname;
+my %mib = ();
+my %sysctl = ();
+my $node;
+
+sub debug() {
+ print STDERR "$_[0]\n" if $debug;
+}
+
+# Walk the MIB and build a sysctl name to OID mapping.
+sub build_sysctl() {
+ my ($node, $name, $oid) = @_;
+ my %node = %{$node};
+ my @oid = @{$oid};
+
+ foreach my $key (sort keys %node) {
+ my @node = @{$node{$key}};
+ my $nodename = $name.($name ne '' ? '.' : '').$key;
+ my @nodeoid = (@oid, $node[0]);
+ if ($node[1] eq 'CTLTYPE_NODE') {
+ if (exists $node_map{$nodename}) {
+ $node = \%mib;
+ $ctlname = $node_map{$nodename};
+ foreach my $part (split /\./, $ctlname) {
+ $node = \%{@{$$node{$part}}[2]};
+ }
+ } else {
+ $node = $node[2];
+ }
+ &build_sysctl($node, $nodename, \@nodeoid);
+ } elsif ($node[1] ne '') {
+ $sysctl{$nodename} = \@nodeoid;
+ }
+ }
+}
+
+foreach my $ctl (@ctls) {
+ $ctls{$ctl} = $ctl;
+}
+
+# Build MIB
+foreach my $header (@headers) {
+ &debug("Processing $header...");
+ open HEADER, "/usr/include/$header" ||
+ print STDERR "Failed to open $header\n";
+ while (<HEADER>) {
+ if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ ||
+ $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ ||
+ $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) {
+ if ($1 eq 'CTL_NAMES') {
+ # Top level.
+ $node = \%mib;
+ } else {
+ # Node.
+ my $nodename = lc($2);
+ if ($header =~ /^netinet\//) {
+ $ctlname = "net.inet.$nodename";
+ } elsif ($header =~ /^netinet6\//) {
+ $ctlname = "net.inet6.$nodename";
+ } elsif ($header =~ /^net\//) {
+ $ctlname = "net.$nodename";
+ } else {
+ $ctlname = "$nodename";
+ $ctlname =~ s/^(fs|net|kern)_/$1\./;
+ }
+ if (exists $ctl_map{$ctlname}) {
+ $ctlname = $ctl_map{$ctlname};
+ }
+ if (not exists $ctls{$ctlname}) {
+ &debug("Ignoring $ctlname...");
+ next;
+ }
+
+ # Walk down from the top of the MIB.
+ $node = \%mib;
+ foreach my $part (split /\./, $ctlname) {
+ if (not exists $$node{$part}) {
+ &debug("Missing node $part");
+ $$node{$part} = [ 0, '', {} ];
+ }
+ $node = \%{@{$$node{$part}}[2]};
+ }
+ }
+
+ # Populate current node with entries.
+ my $i = -1;
+ while (defined($_) && $_ !~ /^}/) {
+ $_ = <HEADER>;
+ $i++ if $_ =~ /{.*}/;
+ next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/;
+ $$node{$1} = [ $i, $2, {} ];
+ }
+ }
+ }
+ close HEADER;
+}
+
+&build_sysctl(\%mib, "", []);
+
+print <<EOF;
+// mksysctl_openbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix;
+
+type mibentry struct {
+ ctlname string
+ ctloid []_C_int
+}
+
+var sysctlMib = []mibentry {
+EOF
+
+foreach my $name (sort keys %sysctl) {
+ my @oid = @{$sysctl{$name}};
+ print "\t{ \"$name\", []_C_int{ ", join(', ', @oid), " } }, \n";
+}
+
+print <<EOF;
+}
+EOF
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl
new file mode 100644
index 000000000..d3e5147fc
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_darwin.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/env perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+#
+# Generate system call table for Darwin from sys/syscall.h
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+my $command = "mksysnum_darwin.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+while(<>){
+ if(/^#define\s+SYS_(\w+)\s+([0-9]+)/){
+ my $name = $1;
+ my $num = $2;
+ $name =~ y/a-z/A-Z/;
+ print " SYS_$name = $num;"
+ }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl
new file mode 100644
index 000000000..266a248c7
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_dragonfly.pl
@@ -0,0 +1,50 @@
+#!/usr/bin/env perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+#
+# Generate system call table for DragonFly from master list
+# (for example, /usr/src/sys/kern/syscalls.master).
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+my $command = "mksysnum_dragonfly.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+while(<>){
+ if(/^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$/){
+ my $num = $1;
+ my $proto = $2;
+ my $name = "SYS_$3";
+ $name =~ y/a-z/A-Z/;
+
+ # There are multiple entries for enosys and nosys, so comment them out.
+ if($name =~ /^SYS_E?NOSYS$/){
+ $name = "// $name";
+ }
+ if($name eq 'SYS_SYS_EXIT'){
+ $name = 'SYS_EXIT';
+ }
+
+ print " $name = $num; // $proto\n";
+ }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl
new file mode 100644
index 000000000..b767e124c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_freebsd.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/env perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+#
+# Generate system call table for FreeBSD from master list
+# (for example, /usr/src/sys/kern/syscalls.master).
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+my $command = "mksysnum_freebsd.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+while(<>){
+ if(/^([0-9]+)\s+\S+\s+STD\s+({ \S+\s+(\w+).*)$/){
+ my $num = $1;
+ my $proto = $2;
+ my $name = "SYS_$3";
+ $name =~ y/a-z/A-Z/;
+
+ # There are multiple entries for enosys and nosys, so comment them out.
+ if($name =~ /^SYS_E?NOSYS$/){
+ $name = "// $name";
+ }
+ if($name eq 'SYS_SYS_EXIT'){
+ $name = 'SYS_EXIT';
+ }
+ if($name =~ /^SYS_CAP_+/ || $name =~ /^SYS___CAP_+/){
+ next
+ }
+
+ print " $name = $num; // $proto\n";
+
+ # We keep Capsicum syscall numbers for FreeBSD
+ # 9-STABLE here because we are not sure whether they
+ # are mature and stable.
+ if($num == 513){
+ print " SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }\n";
+ print " SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \\\n";
+ print " SYS_CAP_ENTER = 516 // { int cap_enter(void); }\n";
+ print " SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }\n";
+ }
+ }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl
new file mode 100644
index 000000000..4d4017deb
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_linux.pl
@@ -0,0 +1,58 @@
+#!/usr/bin/env perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+my $command = "mksysnum_linux.pl ". join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const(
+EOF
+
+sub fmt {
+ my ($name, $num) = @_;
+ if($num > 999){
+ # ignore deprecated syscalls that are no longer implemented
+ # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h?id=refs/heads/master#n716
+ return;
+ }
+ $name =~ y/a-z/A-Z/;
+ print " SYS_$name = $num;\n";
+}
+
+my $prev;
+open(GCC, "gcc -E -dD $ARGV[0] |") || die "can't run gcc";
+while(<GCC>){
+ if(/^#define __NR_syscalls\s+/) {
+ # ignore redefinitions of __NR_syscalls
+ }
+ elsif(/^#define __NR_(\w+)\s+([0-9]+)/){
+ $prev = $2;
+ fmt($1, $2);
+ }
+ elsif(/^#define __NR3264_(\w+)\s+([0-9]+)/){
+ $prev = $2;
+ fmt($1, $2);
+ }
+ elsif(/^#define __NR_(\w+)\s+\(\w+\+\s*([0-9]+)\)/){
+ fmt($1, $prev+$2)
+ }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl
new file mode 100644
index 000000000..e74616a65
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_netbsd.pl
@@ -0,0 +1,58 @@
+#!/usr/bin/env perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+#
+# Generate system call table for OpenBSD from master list
+# (for example, /usr/src/sys/kern/syscalls.master).
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+my $command = "mksysnum_netbsd.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+my $line = '';
+while(<>){
+ if($line =~ /^(.*)\\$/) {
+ # Handle continuation
+ $line = $1;
+ $_ =~ s/^\s+//;
+ $line .= $_;
+ } else {
+ # New line
+ $line = $_;
+ }
+ next if $line =~ /\\$/;
+ if($line =~ /^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$/) {
+ my $num = $1;
+ my $proto = $6;
+ my $compat = $8;
+ my $name = "$7_$9";
+
+ $name = "$7_$11" if $11 ne '';
+ $name =~ y/a-z/A-Z/;
+
+ if($compat eq '' || $compat eq '30' || $compat eq '50') {
+ print " $name = $num; // $proto\n";
+ }
+ }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl
new file mode 100644
index 000000000..ae5aad586
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/mksysnum_openbsd.pl
@@ -0,0 +1,50 @@
+#!/usr/bin/env perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+#
+# Generate system call table for OpenBSD from master list
+# (for example, /usr/src/sys/kern/syscalls.master).
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+ print STDERR "GOARCH or GOOS not defined in environment\n";
+ exit 1;
+}
+
+my $command = "mksysnum_openbsd.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+while(<>){
+ if(/^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$/){
+ my $num = $1;
+ my $proto = $3;
+ my $name = $4;
+ $name =~ y/a-z/A-Z/;
+
+ # There are multiple entries for enosys and nosys, so comment them out.
+ if($name =~ /^SYS_E?NOSYS$/){
+ $name = "// $name";
+ }
+ if($name eq 'SYS_SYS_EXIT'){
+ $name = 'SYS_EXIT';
+ }
+
+ print " $name = $num; // $proto\n";
+ }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/race.go b/Godeps/_workspace/src/golang.org/x/sys/unix/race.go
new file mode 100644
index 000000000..3c7627eb5
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/race.go
@@ -0,0 +1,30 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin,race linux,race freebsd,race
+
+package unix
+
+import (
+ "runtime"
+ "unsafe"
+)
+
+const raceenabled = true
+
+func raceAcquire(addr unsafe.Pointer) {
+ runtime.RaceAcquire(addr)
+}
+
+func raceReleaseMerge(addr unsafe.Pointer) {
+ runtime.RaceReleaseMerge(addr)
+}
+
+func raceReadRange(addr unsafe.Pointer, len int) {
+ runtime.RaceReadRange(addr, len)
+}
+
+func raceWriteRange(addr unsafe.Pointer, len int) {
+ runtime.RaceWriteRange(addr, len)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/race0.go b/Godeps/_workspace/src/golang.org/x/sys/unix/race0.go
new file mode 100644
index 000000000..f8678e0d2
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/race0.go
@@ -0,0 +1,25 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
+
+package unix
+
+import (
+ "unsafe"
+)
+
+const raceenabled = false
+
+func raceAcquire(addr unsafe.Pointer) {
+}
+
+func raceReleaseMerge(addr unsafe.Pointer) {
+}
+
+func raceReadRange(addr unsafe.Pointer, len int) {
+}
+
+func raceWriteRange(addr unsafe.Pointer, len int) {
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_linux.go b/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_linux.go
new file mode 100644
index 000000000..d9ff4731a
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_linux.go
@@ -0,0 +1,36 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Socket control messages
+
+package unix
+
+import "unsafe"
+
+// UnixCredentials encodes credentials into a socket control message
+// for sending to another process. This can be used for
+// authentication.
+func UnixCredentials(ucred *Ucred) []byte {
+ b := make([]byte, CmsgSpace(SizeofUcred))
+ h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
+ h.Level = SOL_SOCKET
+ h.Type = SCM_CREDENTIALS
+ h.SetLen(CmsgLen(SizeofUcred))
+ *((*Ucred)(cmsgData(h))) = *ucred
+ return b
+}
+
+// ParseUnixCredentials decodes a socket control message that contains
+// credentials in a Ucred structure. To receive such a message, the
+// SO_PASSCRED option must be enabled on the socket.
+func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {
+ if m.Header.Level != SOL_SOCKET {
+ return nil, EINVAL
+ }
+ if m.Header.Type != SCM_CREDENTIALS {
+ return nil, EINVAL
+ }
+ ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))
+ return &ucred, nil
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go b/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go
new file mode 100644
index 000000000..70af5a728
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/sockcmsg_unix.go
@@ -0,0 +1,103 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+// Socket control messages
+
+package unix
+
+import "unsafe"
+
+// Round the length of a raw sockaddr up to align it properly.
+func cmsgAlignOf(salen int) int {
+ salign := sizeofPtr
+ // NOTE: It seems like 64-bit Darwin and DragonFly BSD kernels
+ // still require 32-bit aligned access to network subsystem.
+ if darwin64Bit || dragonfly64Bit {
+ salign = 4
+ }
+ return (salen + salign - 1) & ^(salign - 1)
+}
+
+// CmsgLen returns the value to store in the Len field of the Cmsghdr
+// structure, taking into account any necessary alignment.
+func CmsgLen(datalen int) int {
+ return cmsgAlignOf(SizeofCmsghdr) + datalen
+}
+
+// CmsgSpace returns the number of bytes an ancillary element with
+// payload of the passed data length occupies.
+func CmsgSpace(datalen int) int {
+ return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)
+}
+
+func cmsgData(h *Cmsghdr) unsafe.Pointer {
+ return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)))
+}
+
+// SocketControlMessage represents a socket control message.
+type SocketControlMessage struct {
+ Header Cmsghdr
+ Data []byte
+}
+
+// ParseSocketControlMessage parses b as an array of socket control
+// messages.
+func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {
+ var msgs []SocketControlMessage
+ i := 0
+ for i+CmsgLen(0) <= len(b) {
+ h, dbuf, err := socketControlMessageHeaderAndData(b[i:])
+ if err != nil {
+ return nil, err
+ }
+ m := SocketControlMessage{Header: *h, Data: dbuf}
+ msgs = append(msgs, m)
+ i += cmsgAlignOf(int(h.Len))
+ }
+ return msgs, nil
+}
+
+func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {
+ h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
+ if h.Len < SizeofCmsghdr || int(h.Len) > len(b) {
+ return nil, nil, EINVAL
+ }
+ return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil
+}
+
+// UnixRights encodes a set of open file descriptors into a socket
+// control message for sending to another process.
+func UnixRights(fds ...int) []byte {
+ datalen := len(fds) * 4
+ b := make([]byte, CmsgSpace(datalen))
+ h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
+ h.Level = SOL_SOCKET
+ h.Type = SCM_RIGHTS
+ h.SetLen(CmsgLen(datalen))
+ data := cmsgData(h)
+ for _, fd := range fds {
+ *(*int32)(data) = int32(fd)
+ data = unsafe.Pointer(uintptr(data) + 4)
+ }
+ return b
+}
+
+// ParseUnixRights decodes a socket control message that contains an
+// integer array of open file descriptors from another process.
+func ParseUnixRights(m *SocketControlMessage) ([]int, error) {
+ if m.Header.Level != SOL_SOCKET {
+ return nil, EINVAL
+ }
+ if m.Header.Type != SCM_RIGHTS {
+ return nil, EINVAL
+ }
+ fds := make([]int, len(m.Data)>>2)
+ for i, j := 0, 0; i < len(m.Data); i += 4 {
+ fds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))
+ j++
+ }
+ return fds, nil
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/str.go b/Godeps/_workspace/src/golang.org/x/sys/unix/str.go
new file mode 100644
index 000000000..35ed66435
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/str.go
@@ -0,0 +1,26 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package unix
+
+func itoa(val int) string { // do it here rather than with fmt to avoid dependency
+ if val < 0 {
+ return "-" + uitoa(uint(-val))
+ }
+ return uitoa(uint(val))
+}
+
+func uitoa(val uint) string {
+ var buf [32]byte // big enough for int64
+ i := len(buf) - 1
+ for val >= 10 {
+ buf[i] = byte(val%10 + '0')
+ i--
+ val /= 10
+ }
+ buf[i] = byte(val + '0')
+ return string(buf[i:])
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go
new file mode 100644
index 000000000..a48d47cff
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall.go
@@ -0,0 +1,74 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+// Package unix contains an interface to the low-level operating system
+// primitives. OS details vary depending on the underlying system, and
+// by default, godoc will display OS-specific documentation for the current
+// system. If you want godoc to display OS documentation for another
+// system, set $GOOS and $GOARCH to the desired system. For example, if
+// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
+// to freebsd and $GOARCH to arm.
+// The primary use of this package is inside other packages that provide a more
+// portable interface to the system, such as "os", "time" and "net". Use
+// those packages rather than this one if you can.
+// For details of the functions and data types in this package consult
+// the manuals for the appropriate operating system.
+// These calls return err == nil to indicate success; otherwise
+// err represents an operating system error describing the failure and
+// holds a value of type syscall.Errno.
+package unix
+
+import "unsafe"
+
+// ByteSliceFromString returns a NUL-terminated slice of bytes
+// containing the text of s. If s contains a NUL byte at any
+// location, it returns (nil, EINVAL).
+func ByteSliceFromString(s string) ([]byte, error) {
+ for i := 0; i < len(s); i++ {
+ if s[i] == 0 {
+ return nil, EINVAL
+ }
+ }
+ a := make([]byte, len(s)+1)
+ copy(a, s)
+ return a, nil
+}
+
+// BytePtrFromString returns a pointer to a NUL-terminated array of
+// bytes containing the text of s. If s contains a NUL byte at any
+// location, it returns (nil, EINVAL).
+func BytePtrFromString(s string) (*byte, error) {
+ a, err := ByteSliceFromString(s)
+ if err != nil {
+ return nil, err
+ }
+ return &a[0], nil
+}
+
+// Single-word zero for use when we need a valid pointer to 0 bytes.
+// See mkunix.pl.
+var _zero uintptr
+
+func (ts *Timespec) Unix() (sec int64, nsec int64) {
+ return int64(ts.Sec), int64(ts.Nsec)
+}
+
+func (tv *Timeval) Unix() (sec int64, nsec int64) {
+ return int64(tv.Sec), int64(tv.Usec) * 1000
+}
+
+func (ts *Timespec) Nano() int64 {
+ return int64(ts.Sec)*1e9 + int64(ts.Nsec)
+}
+
+func (tv *Timeval) Nano() int64 {
+ return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
+}
+
+// use is a no-op, but the compiler cannot see that it is.
+// Calling use(p) ensures that p is kept live until that point.
+//go:noescape
+func use(p unsafe.Pointer)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_bsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_bsd.go
new file mode 100644
index 000000000..e9671764c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_bsd.go
@@ -0,0 +1,628 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd netbsd openbsd
+
+// BSD system call wrappers shared by *BSD based systems
+// including OS X (Darwin) and FreeBSD. Like the other
+// syscall_*.go files it is compiled as Go code but also
+// used as input to mksyscall which parses the //sys
+// lines and generates system call stubs.
+
+package unix
+
+import (
+ "runtime"
+ "syscall"
+ "unsafe"
+)
+
+/*
+ * Wrapped
+ */
+
+//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error)
+//sysnb setgroups(ngid int, gid *_Gid_t) (err error)
+
+func Getgroups() (gids []int, err error) {
+ n, err := getgroups(0, nil)
+ if err != nil {
+ return nil, err
+ }
+ if n == 0 {
+ return nil, nil
+ }
+
+ // Sanity check group count. Max is 16 on BSD.
+ if n < 0 || n > 1000 {
+ return nil, EINVAL
+ }
+
+ a := make([]_Gid_t, n)
+ n, err = getgroups(n, &a[0])
+ if err != nil {
+ return nil, err
+ }
+ gids = make([]int, n)
+ for i, v := range a[0:n] {
+ gids[i] = int(v)
+ }
+ return
+}
+
+func Setgroups(gids []int) (err error) {
+ if len(gids) == 0 {
+ return setgroups(0, nil)
+ }
+
+ a := make([]_Gid_t, len(gids))
+ for i, v := range gids {
+ a[i] = _Gid_t(v)
+ }
+ return setgroups(len(a), &a[0])
+}
+
+func ReadDirent(fd int, buf []byte) (n int, err error) {
+ // Final argument is (basep *uintptr) and the syscall doesn't take nil.
+ // 64 bits should be enough. (32 bits isn't even on 386). Since the
+ // actual system call is getdirentries64, 64 is a good guess.
+ // TODO(rsc): Can we use a single global basep for all calls?
+ var base = (*uintptr)(unsafe.Pointer(new(uint64)))
+ return Getdirentries(fd, buf, base)
+}
+
+// Wait status is 7 bits at bottom, either 0 (exited),
+// 0x7F (stopped), or a signal number that caused an exit.
+// The 0x80 bit is whether there was a core dump.
+// An extra number (exit code, signal causing a stop)
+// is in the high bits.
+
+type WaitStatus uint32
+
+const (
+ mask = 0x7F
+ core = 0x80
+ shift = 8
+
+ exited = 0
+ stopped = 0x7F
+)
+
+func (w WaitStatus) Exited() bool { return w&mask == exited }
+
+func (w WaitStatus) ExitStatus() int {
+ if w&mask != exited {
+ return -1
+ }
+ return int(w >> shift)
+}
+
+func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }
+
+func (w WaitStatus) Signal() syscall.Signal {
+ sig := syscall.Signal(w & mask)
+ if sig == stopped || sig == 0 {
+ return -1
+ }
+ return sig
+}
+
+func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
+
+func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }
+
+func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }
+
+func (w WaitStatus) StopSignal() syscall.Signal {
+ if !w.Stopped() {
+ return -1
+ }
+ return syscall.Signal(w>>shift) & 0xFF
+}
+
+func (w WaitStatus) TrapCause() int { return -1 }
+
+//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)
+
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
+ var status _C_int
+ wpid, err = wait4(pid, &status, options, rusage)
+ if wstatus != nil {
+ *wstatus = WaitStatus(status)
+ }
+ return
+}
+
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb socket(domain int, typ int, proto int) (fd int, err error)
+//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys Shutdown(s int, how int) (err error)
+
+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Len = SizeofSockaddrInet4
+ sa.raw.Family = AF_INET
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+ p[0] = byte(sa.Port >> 8)
+ p[1] = byte(sa.Port)
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil
+}
+
+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Len = SizeofSockaddrInet6
+ sa.raw.Family = AF_INET6
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+ p[0] = byte(sa.Port >> 8)
+ p[1] = byte(sa.Port)
+ sa.raw.Scope_id = sa.ZoneId
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil
+}
+
+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ name := sa.Name
+ n := len(name)
+ if n >= len(sa.raw.Path) || n == 0 {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL
+ sa.raw.Family = AF_UNIX
+ for i := 0; i < n; i++ {
+ sa.raw.Path[i] = int8(name[i])
+ }
+ return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil
+}
+
+func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Index == 0 {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Len = sa.Len
+ sa.raw.Family = AF_LINK
+ sa.raw.Index = sa.Index
+ sa.raw.Type = sa.Type
+ sa.raw.Nlen = sa.Nlen
+ sa.raw.Alen = sa.Alen
+ sa.raw.Slen = sa.Slen
+ for i := 0; i < len(sa.raw.Data); i++ {
+ sa.raw.Data[i] = sa.Data[i]
+ }
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil
+}
+
+func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
+ switch rsa.Addr.Family {
+ case AF_LINK:
+ pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))
+ sa := new(SockaddrDatalink)
+ sa.Len = pp.Len
+ sa.Family = pp.Family
+ sa.Index = pp.Index
+ sa.Type = pp.Type
+ sa.Nlen = pp.Nlen
+ sa.Alen = pp.Alen
+ sa.Slen = pp.Slen
+ for i := 0; i < len(sa.Data); i++ {
+ sa.Data[i] = pp.Data[i]
+ }
+ return sa, nil
+
+ case AF_UNIX:
+ pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
+ if pp.Len < 2 || pp.Len > SizeofSockaddrUnix {
+ return nil, EINVAL
+ }
+ sa := new(SockaddrUnix)
+
+ // Some BSDs include the trailing NUL in the length, whereas
+ // others do not. Work around this by subtracting the leading
+ // family and len. The path is then scanned to see if a NUL
+ // terminator still exists within the length.
+ n := int(pp.Len) - 2 // subtract leading Family, Len
+ for i := 0; i < n; i++ {
+ if pp.Path[i] == 0 {
+ // found early NUL; assume Len included the NUL
+ // or was overestimating.
+ n = i
+ break
+ }
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
+ sa.Name = string(bytes)
+ return sa, nil
+
+ case AF_INET:
+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
+ sa := new(SockaddrInet4)
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ sa.Port = int(p[0])<<8 + int(p[1])
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+
+ case AF_INET6:
+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
+ sa := new(SockaddrInet6)
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ sa.Port = int(p[0])<<8 + int(p[1])
+ sa.ZoneId = pp.Scope_id
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+ }
+ return nil, EAFNOSUPPORT
+}
+
+func Accept(fd int) (nfd int, sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ nfd, err = accept(fd, &rsa, &len)
+ if err != nil {
+ return
+ }
+ if runtime.GOOS == "darwin" && len == 0 {
+ // Accepted socket has no address.
+ // This is likely due to a bug in xnu kernels,
+ // where instead of ECONNABORTED error socket
+ // is accepted, but has no address.
+ Close(nfd)
+ return 0, nil, ECONNABORTED
+ }
+ sa, err = anyToSockaddr(&rsa)
+ if err != nil {
+ Close(nfd)
+ nfd = 0
+ }
+ return
+}
+
+func Getsockname(fd int) (sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ if err = getsockname(fd, &rsa, &len); err != nil {
+ return
+ }
+ // TODO(jsing): DragonFly has a "bug" (see issue 3349), which should be
+ // reported upstream.
+ if runtime.GOOS == "dragonfly" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 {
+ rsa.Addr.Family = AF_UNIX
+ rsa.Addr.Len = SizeofSockaddrUnix
+ }
+ return anyToSockaddr(&rsa)
+}
+
+//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+
+func GetsockoptByte(fd, level, opt int) (value byte, err error) {
+ var n byte
+ vallen := _Socklen(1)
+ err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
+ return n, err
+}
+
+func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
+ vallen := _Socklen(4)
+ err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
+ return value, err
+}
+
+func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
+ var value IPMreq
+ vallen := _Socklen(SizeofIPMreq)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
+ var value IPv6Mreq
+ vallen := _Socklen(SizeofIPv6Mreq)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
+ var value IPv6MTUInfo
+ vallen := _Socklen(SizeofIPv6MTUInfo)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
+ var value ICMPv6Filter
+ vallen := _Socklen(SizeofICMPv6Filter)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+
+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+ var msg Msghdr
+ var rsa RawSockaddrAny
+ msg.Name = (*byte)(unsafe.Pointer(&rsa))
+ msg.Namelen = uint32(SizeofSockaddrAny)
+ var iov Iovec
+ if len(p) > 0 {
+ iov.Base = (*byte)(unsafe.Pointer(&p[0]))
+ iov.SetLen(len(p))
+ }
+ var dummy byte
+ if len(oob) > 0 {
+ // receive at least one normal byte
+ if len(p) == 0 {
+ iov.Base = &dummy
+ iov.SetLen(1)
+ }
+ msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+ msg.SetControllen(len(oob))
+ }
+ msg.Iov = &iov
+ msg.Iovlen = 1
+ if n, err = recvmsg(fd, &msg, flags); err != nil {
+ return
+ }
+ oobn = int(msg.Controllen)
+ recvflags = int(msg.Flags)
+ // source address is only specified if the socket is unconnected
+ if rsa.Addr.Family != AF_UNSPEC {
+ from, err = anyToSockaddr(&rsa)
+ }
+ return
+}
+
+//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+
+func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
+ _, err = SendmsgN(fd, p, oob, to, flags)
+ return
+}
+
+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
+ var ptr unsafe.Pointer
+ var salen _Socklen
+ if to != nil {
+ ptr, salen, err = to.sockaddr()
+ if err != nil {
+ return 0, err
+ }
+ }
+ var msg Msghdr
+ msg.Name = (*byte)(unsafe.Pointer(ptr))
+ msg.Namelen = uint32(salen)
+ var iov Iovec
+ if len(p) > 0 {
+ iov.Base = (*byte)(unsafe.Pointer(&p[0]))
+ iov.SetLen(len(p))
+ }
+ var dummy byte
+ if len(oob) > 0 {
+ // send at least one normal byte
+ if len(p) == 0 {
+ iov.Base = &dummy
+ iov.SetLen(1)
+ }
+ msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+ msg.SetControllen(len(oob))
+ }
+ msg.Iov = &iov
+ msg.Iovlen = 1
+ if n, err = sendmsg(fd, &msg, flags); err != nil {
+ return 0, err
+ }
+ if len(oob) > 0 && len(p) == 0 {
+ n = 0
+ }
+ return n, nil
+}
+
+//sys kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error)
+
+func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) {
+ var change, event unsafe.Pointer
+ if len(changes) > 0 {
+ change = unsafe.Pointer(&changes[0])
+ }
+ if len(events) > 0 {
+ event = unsafe.Pointer(&events[0])
+ }
+ return kevent(kq, change, len(changes), event, len(events), timeout)
+}
+
+//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
+
+// sysctlmib translates name to mib number and appends any additional args.
+func sysctlmib(name string, args ...int) ([]_C_int, error) {
+ // Translate name to mib number.
+ mib, err := nametomib(name)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, a := range args {
+ mib = append(mib, _C_int(a))
+ }
+
+ return mib, nil
+}
+
+func Sysctl(name string) (string, error) {
+ return SysctlArgs(name)
+}
+
+func SysctlArgs(name string, args ...int) (string, error) {
+ mib, err := sysctlmib(name, args...)
+ if err != nil {
+ return "", err
+ }
+
+ // Find size.
+ n := uintptr(0)
+ if err := sysctl(mib, nil, &n, nil, 0); err != nil {
+ return "", err
+ }
+ if n == 0 {
+ return "", nil
+ }
+
+ // Read into buffer of that size.
+ buf := make([]byte, n)
+ if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {
+ return "", err
+ }
+
+ // Throw away terminating NUL.
+ if n > 0 && buf[n-1] == '\x00' {
+ n--
+ }
+ return string(buf[0:n]), nil
+}
+
+func SysctlUint32(name string) (uint32, error) {
+ return SysctlUint32Args(name)
+}
+
+func SysctlUint32Args(name string, args ...int) (uint32, error) {
+ mib, err := sysctlmib(name, args...)
+ if err != nil {
+ return 0, err
+ }
+
+ n := uintptr(4)
+ buf := make([]byte, 4)
+ if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {
+ return 0, err
+ }
+ if n != 4 {
+ return 0, EIO
+ }
+ return *(*uint32)(unsafe.Pointer(&buf[0])), nil
+}
+
+func SysctlUint64(name string, args ...int) (uint64, error) {
+ mib, err := sysctlmib(name, args...)
+ if err != nil {
+ return 0, err
+ }
+
+ n := uintptr(8)
+ buf := make([]byte, 8)
+ if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {
+ return 0, err
+ }
+ if n != 8 {
+ return 0, EIO
+ }
+ return *(*uint64)(unsafe.Pointer(&buf[0])), nil
+}
+
+func SysctlRaw(name string, args ...int) ([]byte, error) {
+ mib, err := sysctlmib(name, args...)
+ if err != nil {
+ return nil, err
+ }
+
+ // Find size.
+ n := uintptr(0)
+ if err := sysctl(mib, nil, &n, nil, 0); err != nil {
+ return nil, err
+ }
+ if n == 0 {
+ return nil, nil
+ }
+
+ // Read into buffer of that size.
+ buf := make([]byte, n)
+ if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {
+ return nil, err
+ }
+
+ // The actual call may return less than the original reported required
+ // size so ensure we deal with that.
+ return buf[:n], nil
+}
+
+//sys utimes(path string, timeval *[2]Timeval) (err error)
+
+func Utimes(path string, tv []Timeval) error {
+ if tv == nil {
+ return utimes(path, nil)
+ }
+ if len(tv) != 2 {
+ return EINVAL
+ }
+ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+func UtimesNano(path string, ts []Timespec) error {
+ if ts == nil {
+ return utimes(path, nil)
+ }
+ // TODO: The BSDs can do utimensat with SYS_UTIMENSAT but it
+ // isn't supported by darwin so this uses utimes instead
+ if len(ts) != 2 {
+ return EINVAL
+ }
+ // Not as efficient as it could be because Timespec and
+ // Timeval have different types in the different OSes
+ tv := [2]Timeval{
+ NsecToTimeval(TimespecToNsec(ts[0])),
+ NsecToTimeval(TimespecToNsec(ts[1])),
+ }
+ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+//sys futimes(fd int, timeval *[2]Timeval) (err error)
+
+func Futimes(fd int, tv []Timeval) error {
+ if tv == nil {
+ return futimes(fd, nil)
+ }
+ if len(tv) != 2 {
+ return EINVAL
+ }
+ return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+//sys fcntl(fd int, cmd int, arg int) (val int, err error)
+
+// TODO: wrap
+// Acct(name nil-string) (err error)
+// Gethostuuid(uuid *byte, timeout *Timespec) (err error)
+// Madvise(addr *byte, len int, behav int) (err error)
+// Mprotect(addr *byte, len int, prot int) (err error)
+// Msync(addr *byte, len int, flags int) (err error)
+// Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error)
+
+var mapper = &mmapper{
+ active: make(map[*byte][]byte),
+ mmap: mmap,
+ munmap: munmap,
+}
+
+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
+ return mapper.Mmap(fd, offset, length, prot, flags)
+}
+
+func Munmap(b []byte) (err error) {
+ return mapper.Munmap(b)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go
new file mode 100644
index 000000000..0d1771c3f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin.go
@@ -0,0 +1,509 @@
+// Copyright 2009,2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Darwin system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and wrap
+// it in our own nicer implementation, either here or in
+// syscall_bsd.go or syscall_unix.go.
+
+package unix
+
+import (
+ errorspkg "errors"
+ "syscall"
+ "unsafe"
+)
+
+const ImplementsGetwd = true
+
+func Getwd() (string, error) {
+ buf := make([]byte, 2048)
+ attrs, err := getAttrList(".", attrList{CommonAttr: attrCmnFullpath}, buf, 0)
+ if err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 {
+ wd := string(attrs[0])
+ // Sanity check that it's an absolute path and ends
+ // in a null byte, which we then strip.
+ if wd[0] == '/' && wd[len(wd)-1] == 0 {
+ return wd[:len(wd)-1], nil
+ }
+ }
+ // If pkg/os/getwd.go gets ENOTSUP, it will fall back to the
+ // slow algorithm.
+ return "", ENOTSUP
+}
+
+type SockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+ raw RawSockaddrDatalink
+}
+
+// Translate "kern.hostname" to []_C_int{0,1,2,3}.
+func nametomib(name string) (mib []_C_int, err error) {
+ const siz = unsafe.Sizeof(mib[0])
+
+ // NOTE(rsc): It seems strange to set the buffer to have
+ // size CTL_MAXNAME+2 but use only CTL_MAXNAME
+ // as the size. I don't know why the +2 is here, but the
+ // kernel uses +2 for its own implementation of this function.
+ // I am scared that if we don't include the +2 here, the kernel
+ // will silently write 2 words farther than we specify
+ // and we'll get memory corruption.
+ var buf [CTL_MAXNAME + 2]_C_int
+ n := uintptr(CTL_MAXNAME) * siz
+
+ p := (*byte)(unsafe.Pointer(&buf[0]))
+ bytes, err := ByteSliceFromString(name)
+ if err != nil {
+ return nil, err
+ }
+
+ // Magic sysctl: "setting" 0.3 to a string name
+ // lets you read back the array of integers form.
+ if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {
+ return nil, err
+ }
+ return buf[0 : n/siz], nil
+}
+
+// ParseDirent parses up to max directory entries in buf,
+// appending the names to names. It returns the number
+// bytes consumed from buf, the number of entries added
+// to names, and the new names slice.
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+ origlen := len(buf)
+ for max != 0 && len(buf) > 0 {
+ dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+ if dirent.Reclen == 0 {
+ buf = nil
+ break
+ }
+ buf = buf[dirent.Reclen:]
+ if dirent.Ino == 0 { // File absent in directory.
+ continue
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+ var name = string(bytes[0:dirent.Namlen])
+ if name == "." || name == ".." { // Useless names
+ continue
+ }
+ max--
+ count++
+ names = append(names, name)
+ }
+ return origlen - len(buf), count, names
+}
+
+//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }
+func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }
+
+const (
+ attrBitMapCount = 5
+ attrCmnFullpath = 0x08000000
+)
+
+type attrList struct {
+ bitmapCount uint16
+ _ uint16
+ CommonAttr uint32
+ VolAttr uint32
+ DirAttr uint32
+ FileAttr uint32
+ Forkattr uint32
+}
+
+func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) {
+ if len(attrBuf) < 4 {
+ return nil, errorspkg.New("attrBuf too small")
+ }
+ attrList.bitmapCount = attrBitMapCount
+
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return nil, err
+ }
+
+ _, _, e1 := Syscall6(
+ SYS_GETATTRLIST,
+ uintptr(unsafe.Pointer(_p0)),
+ uintptr(unsafe.Pointer(&attrList)),
+ uintptr(unsafe.Pointer(&attrBuf[0])),
+ uintptr(len(attrBuf)),
+ uintptr(options),
+ 0,
+ )
+ if e1 != 0 {
+ return nil, e1
+ }
+ size := *(*uint32)(unsafe.Pointer(&attrBuf[0]))
+
+ // dat is the section of attrBuf that contains valid data,
+ // without the 4 byte length header. All attribute offsets
+ // are relative to dat.
+ dat := attrBuf
+ if int(size) < len(attrBuf) {
+ dat = dat[:size]
+ }
+ dat = dat[4:] // remove length prefix
+
+ for i := uint32(0); int(i) < len(dat); {
+ header := dat[i:]
+ if len(header) < 8 {
+ return attrs, errorspkg.New("truncated attribute header")
+ }
+ datOff := *(*int32)(unsafe.Pointer(&header[0]))
+ attrLen := *(*uint32)(unsafe.Pointer(&header[4]))
+ if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) {
+ return attrs, errorspkg.New("truncated results; attrBuf too small")
+ }
+ end := uint32(datOff) + attrLen
+ attrs = append(attrs, dat[datOff:end])
+ i = end
+ if r := i % 4; r != 0 {
+ i += (4 - r)
+ }
+ }
+ return
+}
+
+//sysnb pipe() (r int, w int, err error)
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ p[0], p[1], err = pipe()
+ return
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ var bufsize uintptr
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
+ }
+ r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(_p0), bufsize, uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+/*
+ * Wrapped
+ */
+
+//sys kill(pid int, signum int, posix int) (err error)
+
+func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }
+
+/*
+ * Exposed directly
+ */
+//sys Access(path string, mode uint32) (err error)
+//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys Chdir(path string) (err error)
+//sys Chflags(path string, flags int) (err error)
+//sys Chmod(path string, mode uint32) (err error)
+//sys Chown(path string, uid int, gid int) (err error)
+//sys Chroot(path string) (err error)
+//sys Close(fd int) (err error)
+//sys Dup(fd int) (nfd int, err error)
+//sys Dup2(from int, to int) (err error)
+//sys Exchangedata(path1 string, path2 string, options int) (err error)
+//sys Exit(code int)
+//sys Fchdir(fd int) (err error)
+//sys Fchflags(fd int, flags int) (err error)
+//sys Fchmod(fd int, mode uint32) (err error)
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Flock(fd int, how int) (err error)
+//sys Fpathconf(fd int, name int) (val int, err error)
+//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
+//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
+//sys Fsync(fd int) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
+//sys Getdtablesize() (size int)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (uid int)
+//sysnb Getgid() (gid int)
+//sysnb Getpgid(pid int) (pgid int, err error)
+//sysnb Getpgrp() (pgrp int)
+//sysnb Getpid() (pid int)
+//sysnb Getppid() (ppid int)
+//sys Getpriority(which int, who int) (prio int, err error)
+//sysnb Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb Getrusage(who int, rusage *Rusage) (err error)
+//sysnb Getsid(pid int) (sid int, err error)
+//sysnb Getuid() (uid int)
+//sysnb Issetugid() (tainted bool)
+//sys Kqueue() (fd int, err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Link(path string, link string) (err error)
+//sys Listen(s int, backlog int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys Mkdir(path string, mode uint32) (err error)
+//sys Mkfifo(path string, mode uint32) (err error)
+//sys Mknod(path string, mode uint32, dev int) (err error)
+//sys Mlock(b []byte) (err error)
+//sys Mlockall(flags int) (err error)
+//sys Mprotect(b []byte, prot int) (err error)
+//sys Munlock(b []byte) (err error)
+//sys Munlockall() (err error)
+//sys Open(path string, mode int, perm uint32) (fd int, err error)
+//sys Pathconf(path string, name int) (val int, err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys read(fd int, p []byte) (n int, err error)
+//sys Readlink(path string, buf []byte) (n int, err error)
+//sys Rename(from string, to string) (err error)
+//sys Revoke(path string) (err error)
+//sys Rmdir(path string) (err error)
+//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sys Setegid(egid int) (err error)
+//sysnb Seteuid(euid int) (err error)
+//sysnb Setgid(gid int) (err error)
+//sys Setlogin(name string) (err error)
+//sysnb Setpgid(pid int, pgid int) (err error)
+//sys Setpriority(which int, who int, prio int) (err error)
+//sys Setprivexec(flag int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sysnb Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb Setsid() (pid int, err error)
+//sysnb Settimeofday(tp *Timeval) (err error)
+//sysnb Setuid(uid int) (err error)
+//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
+//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
+//sys Symlink(path string, link string) (err error)
+//sys Sync() (err error)
+//sys Truncate(path string, length int64) (err error)
+//sys Umask(newmask int) (oldmask int)
+//sys Undelete(path string) (err error)
+//sys Unlink(path string) (err error)
+//sys Unmount(path string, flags int) (err error)
+//sys write(fd int, p []byte) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys munmap(addr uintptr, length uintptr) (err error)
+//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+
+/*
+ * Unimplemented
+ */
+// Profil
+// Sigaction
+// Sigprocmask
+// Getlogin
+// Sigpending
+// Sigaltstack
+// Ioctl
+// Reboot
+// Execve
+// Vfork
+// Sbrk
+// Sstk
+// Ovadvise
+// Mincore
+// Setitimer
+// Swapon
+// Select
+// Sigsuspend
+// Readv
+// Writev
+// Nfssvc
+// Getfh
+// Quotactl
+// Mount
+// Csops
+// Waitid
+// Add_profil
+// Kdebug_trace
+// Sigreturn
+// Mmap
+// Mlock
+// Munlock
+// Atsocket
+// Kqueue_from_portset_np
+// Kqueue_portset
+// Getattrlist
+// Setattrlist
+// Getdirentriesattr
+// Searchfs
+// Delete
+// Copyfile
+// Poll
+// Watchevent
+// Waitevent
+// Modwatch
+// Getxattr
+// Fgetxattr
+// Setxattr
+// Fsetxattr
+// Removexattr
+// Fremovexattr
+// Listxattr
+// Flistxattr
+// Fsctl
+// Initgroups
+// Posix_spawn
+// Nfsclnt
+// Fhopen
+// Minherit
+// Semsys
+// Msgsys
+// Shmsys
+// Semctl
+// Semget
+// Semop
+// Msgctl
+// Msgget
+// Msgsnd
+// Msgrcv
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Shm_open
+// Shm_unlink
+// Sem_open
+// Sem_close
+// Sem_unlink
+// Sem_wait
+// Sem_trywait
+// Sem_post
+// Sem_getvalue
+// Sem_init
+// Sem_destroy
+// Open_extended
+// Umask_extended
+// Stat_extended
+// Lstat_extended
+// Fstat_extended
+// Chmod_extended
+// Fchmod_extended
+// Access_extended
+// Settid
+// Gettid
+// Setsgroups
+// Getsgroups
+// Setwgroups
+// Getwgroups
+// Mkfifo_extended
+// Mkdir_extended
+// Identitysvc
+// Shared_region_check_np
+// Shared_region_map_np
+// __pthread_mutex_destroy
+// __pthread_mutex_init
+// __pthread_mutex_lock
+// __pthread_mutex_trylock
+// __pthread_mutex_unlock
+// __pthread_cond_init
+// __pthread_cond_destroy
+// __pthread_cond_broadcast
+// __pthread_cond_signal
+// Setsid_with_pid
+// __pthread_cond_timedwait
+// Aio_fsync
+// Aio_return
+// Aio_suspend
+// Aio_cancel
+// Aio_error
+// Aio_read
+// Aio_write
+// Lio_listio
+// __pthread_cond_wait
+// Iopolicysys
+// Mlockall
+// Munlockall
+// __pthread_kill
+// __pthread_sigmask
+// __sigwait
+// __disable_threadsignal
+// __pthread_markcancel
+// __pthread_canceled
+// __semwait_signal
+// Proc_info
+// sendfile
+// Stat64_extended
+// Lstat64_extended
+// Fstat64_extended
+// __pthread_chdir
+// __pthread_fchdir
+// Audit
+// Auditon
+// Getauid
+// Setauid
+// Getaudit
+// Setaudit
+// Getaudit_addr
+// Setaudit_addr
+// Auditctl
+// Bsdthread_create
+// Bsdthread_terminate
+// Stack_snapshot
+// Bsdthread_register
+// Workq_open
+// Workq_ops
+// __mac_execve
+// __mac_syscall
+// __mac_get_file
+// __mac_set_file
+// __mac_get_link
+// __mac_set_link
+// __mac_get_proc
+// __mac_set_proc
+// __mac_get_fd
+// __mac_set_fd
+// __mac_get_pid
+// __mac_get_lcid
+// __mac_get_lctx
+// __mac_set_lctx
+// Setlcid
+// Read_nocancel
+// Write_nocancel
+// Open_nocancel
+// Close_nocancel
+// Wait4_nocancel
+// Recvmsg_nocancel
+// Sendmsg_nocancel
+// Recvfrom_nocancel
+// Accept_nocancel
+// Msync_nocancel
+// Fcntl_nocancel
+// Select_nocancel
+// Fsync_nocancel
+// Connect_nocancel
+// Sigsuspend_nocancel
+// Readv_nocancel
+// Writev_nocancel
+// Sendto_nocancel
+// Pread_nocancel
+// Pwrite_nocancel
+// Waitid_nocancel
+// Poll_nocancel
+// Msgsnd_nocancel
+// Msgrcv_nocancel
+// Sem_wait_nocancel
+// Aio_suspend_nocancel
+// __sigwait_nocancel
+// __semwait_signal_nocancel
+// __mac_mount
+// __mac_get_mount
+// __mac_getfsstat
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go
new file mode 100644
index 000000000..3195c8bf5
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_386.go
@@ -0,0 +1,79 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build 386,darwin
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int32(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int32(nsec / 1e9)
+ return
+}
+
+//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
+func Gettimeofday(tv *Timeval) (err error) {
+ // The tv passed to gettimeofday must be non-nil
+ // but is otherwise unused. The answers come back
+ // in the two registers.
+ sec, usec, err := gettimeofday(tv)
+ tv.Sec = int32(sec)
+ tv.Usec = int32(usec)
+ return err
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var length = uint64(count)
+
+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
+
+ written = int(length)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
+// of darwin/386 the syscall is called sysctl instead of __sysctl.
+const SYS___SYSCTL = SYS_SYSCTL
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go
new file mode 100644
index 000000000..7adb98ded
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_amd64.go
@@ -0,0 +1,81 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64,darwin
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
+func Gettimeofday(tv *Timeval) (err error) {
+ // The tv passed to gettimeofday must be non-nil
+ // but is otherwise unused. The answers come back
+ // in the two registers.
+ sec, usec, err := gettimeofday(tv)
+ tv.Sec = sec
+ tv.Usec = usec
+ return err
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint64(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var length = uint64(count)
+
+ _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
+
+ written = int(length)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
+// of darwin/amd64 the syscall is called sysctl instead of __sysctl.
+const SYS___SYSCTL = SYS_SYSCTL
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go
new file mode 100644
index 000000000..e47ffd739
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm.go
@@ -0,0 +1,73 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int32(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int32(nsec / 1e9)
+ return
+}
+
+//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
+func Gettimeofday(tv *Timeval) (err error) {
+ // The tv passed to gettimeofday must be non-nil
+ // but is otherwise unused. The answers come back
+ // in the two registers.
+ sec, usec, err := gettimeofday(tv)
+ tv.Sec = int32(sec)
+ tv.Usec = int32(usec)
+ return err
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var length = uint64(count)
+
+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
+
+ written = int(length)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go
new file mode 100644
index 000000000..2560a9599
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_darwin_arm64.go
@@ -0,0 +1,79 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm64,darwin
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 16384 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
+func Gettimeofday(tv *Timeval) (err error) {
+ // The tv passed to gettimeofday must be non-nil
+ // but is otherwise unused. The answers come back
+ // in the two registers.
+ sec, usec, err := gettimeofday(tv)
+ tv.Sec = sec
+ tv.Usec = usec
+ return err
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint64(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var length = uint64(count)
+
+ _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
+
+ written = int(length)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
+
+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
+// of darwin/arm64 the syscall is called sysctl instead of __sysctl.
+const SYS___SYSCTL = SYS_SYSCTL
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go
new file mode 100644
index 000000000..fbbe0dce2
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly.go
@@ -0,0 +1,411 @@
+// Copyright 2009,2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// FreeBSD system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and wrap
+// it in our own nicer implementation, either here or in
+// syscall_bsd.go or syscall_unix.go.
+
+package unix
+
+import "unsafe"
+
+type SockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+ Rcf uint16
+ Route [16]uint16
+ raw RawSockaddrDatalink
+}
+
+// Translate "kern.hostname" to []_C_int{0,1,2,3}.
+func nametomib(name string) (mib []_C_int, err error) {
+ const siz = unsafe.Sizeof(mib[0])
+
+ // NOTE(rsc): It seems strange to set the buffer to have
+ // size CTL_MAXNAME+2 but use only CTL_MAXNAME
+ // as the size. I don't know why the +2 is here, but the
+ // kernel uses +2 for its own implementation of this function.
+ // I am scared that if we don't include the +2 here, the kernel
+ // will silently write 2 words farther than we specify
+ // and we'll get memory corruption.
+ var buf [CTL_MAXNAME + 2]_C_int
+ n := uintptr(CTL_MAXNAME) * siz
+
+ p := (*byte)(unsafe.Pointer(&buf[0]))
+ bytes, err := ByteSliceFromString(name)
+ if err != nil {
+ return nil, err
+ }
+
+ // Magic sysctl: "setting" 0.3 to a string name
+ // lets you read back the array of integers form.
+ if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {
+ return nil, err
+ }
+ return buf[0 : n/siz], nil
+}
+
+// ParseDirent parses up to max directory entries in buf,
+// appending the names to names. It returns the number
+// bytes consumed from buf, the number of entries added
+// to names, and the new names slice.
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+ origlen := len(buf)
+ for max != 0 && len(buf) > 0 {
+ dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+ reclen := int(16+dirent.Namlen+1+7) & ^7
+ buf = buf[reclen:]
+ if dirent.Fileno == 0 { // File absent in directory.
+ continue
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+ var name = string(bytes[0:dirent.Namlen])
+ if name == "." || name == ".." { // Useless names
+ continue
+ }
+ max--
+ count++
+ names = append(names, name)
+ }
+ return origlen - len(buf), count, names
+}
+
+//sysnb pipe() (r int, w int, err error)
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ p[0], p[1], err = pipe()
+ return
+}
+
+//sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error)
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ return extpread(fd, p, 0, offset)
+}
+
+//sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ return extpwrite(fd, p, 0, offset)
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ var bufsize uintptr
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
+ }
+ r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+/*
+ * Exposed directly
+ */
+//sys Access(path string, mode uint32) (err error)
+//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys Chdir(path string) (err error)
+//sys Chflags(path string, flags int) (err error)
+//sys Chmod(path string, mode uint32) (err error)
+//sys Chown(path string, uid int, gid int) (err error)
+//sys Chroot(path string) (err error)
+//sys Close(fd int) (err error)
+//sys Dup(fd int) (nfd int, err error)
+//sys Dup2(from int, to int) (err error)
+//sys Exit(code int)
+//sys Fchdir(fd int) (err error)
+//sys Fchflags(fd int, flags int) (err error)
+//sys Fchmod(fd int, mode uint32) (err error)
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Flock(fd int, how int) (err error)
+//sys Fpathconf(fd int, name int) (val int, err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Fstatfs(fd int, stat *Statfs_t) (err error)
+//sys Fsync(fd int) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
+//sys Getdtablesize() (size int)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (uid int)
+//sysnb Getgid() (gid int)
+//sysnb Getpgid(pid int) (pgid int, err error)
+//sysnb Getpgrp() (pgrp int)
+//sysnb Getpid() (pid int)
+//sysnb Getppid() (ppid int)
+//sys Getpriority(which int, who int) (prio int, err error)
+//sysnb Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb Getrusage(who int, rusage *Rusage) (err error)
+//sysnb Getsid(pid int) (sid int, err error)
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Getuid() (uid int)
+//sys Issetugid() (tainted bool)
+//sys Kill(pid int, signum syscall.Signal) (err error)
+//sys Kqueue() (fd int, err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Link(path string, link string) (err error)
+//sys Listen(s int, backlog int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Mkdir(path string, mode uint32) (err error)
+//sys Mkfifo(path string, mode uint32) (err error)
+//sys Mknod(path string, mode uint32, dev int) (err error)
+//sys Mlock(b []byte) (err error)
+//sys Mlockall(flags int) (err error)
+//sys Mprotect(b []byte, prot int) (err error)
+//sys Munlock(b []byte) (err error)
+//sys Munlockall() (err error)
+//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys Open(path string, mode int, perm uint32) (fd int, err error)
+//sys Pathconf(path string, name int) (val int, err error)
+//sys read(fd int, p []byte) (n int, err error)
+//sys Readlink(path string, buf []byte) (n int, err error)
+//sys Rename(from string, to string) (err error)
+//sys Revoke(path string) (err error)
+//sys Rmdir(path string) (err error)
+//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sysnb Setegid(egid int) (err error)
+//sysnb Seteuid(euid int) (err error)
+//sysnb Setgid(gid int) (err error)
+//sys Setlogin(name string) (err error)
+//sysnb Setpgid(pid int, pgid int) (err error)
+//sys Setpriority(which int, who int, prio int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb Setsid() (pid int, err error)
+//sysnb Settimeofday(tp *Timeval) (err error)
+//sysnb Setuid(uid int) (err error)
+//sys Stat(path string, stat *Stat_t) (err error)
+//sys Statfs(path string, stat *Statfs_t) (err error)
+//sys Symlink(path string, link string) (err error)
+//sys Sync() (err error)
+//sys Truncate(path string, length int64) (err error)
+//sys Umask(newmask int) (oldmask int)
+//sys Undelete(path string) (err error)
+//sys Unlink(path string) (err error)
+//sys Unmount(path string, flags int) (err error)
+//sys write(fd int, p []byte) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys munmap(addr uintptr, length uintptr) (err error)
+//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+
+/*
+ * Unimplemented
+ * TODO(jsing): Update this list for DragonFly.
+ */
+// Profil
+// Sigaction
+// Sigprocmask
+// Getlogin
+// Sigpending
+// Sigaltstack
+// Ioctl
+// Reboot
+// Execve
+// Vfork
+// Sbrk
+// Sstk
+// Ovadvise
+// Mincore
+// Setitimer
+// Swapon
+// Select
+// Sigsuspend
+// Readv
+// Writev
+// Nfssvc
+// Getfh
+// Quotactl
+// Mount
+// Csops
+// Waitid
+// Add_profil
+// Kdebug_trace
+// Sigreturn
+// Mmap
+// Atsocket
+// Kqueue_from_portset_np
+// Kqueue_portset
+// Getattrlist
+// Setattrlist
+// Getdirentriesattr
+// Searchfs
+// Delete
+// Copyfile
+// Poll
+// Watchevent
+// Waitevent
+// Modwatch
+// Getxattr
+// Fgetxattr
+// Setxattr
+// Fsetxattr
+// Removexattr
+// Fremovexattr
+// Listxattr
+// Flistxattr
+// Fsctl
+// Initgroups
+// Posix_spawn
+// Nfsclnt
+// Fhopen
+// Minherit
+// Semsys
+// Msgsys
+// Shmsys
+// Semctl
+// Semget
+// Semop
+// Msgctl
+// Msgget
+// Msgsnd
+// Msgrcv
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Shm_open
+// Shm_unlink
+// Sem_open
+// Sem_close
+// Sem_unlink
+// Sem_wait
+// Sem_trywait
+// Sem_post
+// Sem_getvalue
+// Sem_init
+// Sem_destroy
+// Open_extended
+// Umask_extended
+// Stat_extended
+// Lstat_extended
+// Fstat_extended
+// Chmod_extended
+// Fchmod_extended
+// Access_extended
+// Settid
+// Gettid
+// Setsgroups
+// Getsgroups
+// Setwgroups
+// Getwgroups
+// Mkfifo_extended
+// Mkdir_extended
+// Identitysvc
+// Shared_region_check_np
+// Shared_region_map_np
+// __pthread_mutex_destroy
+// __pthread_mutex_init
+// __pthread_mutex_lock
+// __pthread_mutex_trylock
+// __pthread_mutex_unlock
+// __pthread_cond_init
+// __pthread_cond_destroy
+// __pthread_cond_broadcast
+// __pthread_cond_signal
+// Setsid_with_pid
+// __pthread_cond_timedwait
+// Aio_fsync
+// Aio_return
+// Aio_suspend
+// Aio_cancel
+// Aio_error
+// Aio_read
+// Aio_write
+// Lio_listio
+// __pthread_cond_wait
+// Iopolicysys
+// __pthread_kill
+// __pthread_sigmask
+// __sigwait
+// __disable_threadsignal
+// __pthread_markcancel
+// __pthread_canceled
+// __semwait_signal
+// Proc_info
+// Stat64_extended
+// Lstat64_extended
+// Fstat64_extended
+// __pthread_chdir
+// __pthread_fchdir
+// Audit
+// Auditon
+// Getauid
+// Setauid
+// Getaudit
+// Setaudit
+// Getaudit_addr
+// Setaudit_addr
+// Auditctl
+// Bsdthread_create
+// Bsdthread_terminate
+// Stack_snapshot
+// Bsdthread_register
+// Workq_open
+// Workq_ops
+// __mac_execve
+// __mac_syscall
+// __mac_get_file
+// __mac_set_file
+// __mac_get_link
+// __mac_set_link
+// __mac_get_proc
+// __mac_set_proc
+// __mac_get_fd
+// __mac_set_fd
+// __mac_get_pid
+// __mac_get_lcid
+// __mac_get_lctx
+// __mac_set_lctx
+// Setlcid
+// Read_nocancel
+// Write_nocancel
+// Open_nocancel
+// Close_nocancel
+// Wait4_nocancel
+// Recvmsg_nocancel
+// Sendmsg_nocancel
+// Recvfrom_nocancel
+// Accept_nocancel
+// Msync_nocancel
+// Fcntl_nocancel
+// Select_nocancel
+// Fsync_nocancel
+// Connect_nocancel
+// Sigsuspend_nocancel
+// Readv_nocancel
+// Writev_nocancel
+// Sendto_nocancel
+// Pread_nocancel
+// Pwrite_nocancel
+// Waitid_nocancel
+// Poll_nocancel
+// Msgsnd_nocancel
+// Msgrcv_nocancel
+// Sem_wait_nocancel
+// Aio_suspend_nocancel
+// __sigwait_nocancel
+// __semwait_signal_nocancel
+// __mac_mount
+// __mac_get_mount
+// __mac_getfsstat
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_386.go
new file mode 100644
index 000000000..41c2e6978
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_386.go
@@ -0,0 +1,63 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build 386,dragonfly
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int32(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int32(nsec / 1e9)
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var writtenOut uint64 = 0
+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
+
+ written = int(writtenOut)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
new file mode 100644
index 000000000..2ed92590e
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
@@ -0,0 +1,63 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64,dragonfly
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = nsec % 1e9 / 1e3
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint64(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var writtenOut uint64 = 0
+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
+
+ written = int(writtenOut)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go
new file mode 100644
index 000000000..ec56ed608
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd.go
@@ -0,0 +1,682 @@
+// Copyright 2009,2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// FreeBSD system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and wrap
+// it in our own nicer implementation, either here or in
+// syscall_bsd.go or syscall_unix.go.
+
+package unix
+
+import "unsafe"
+
+type SockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [46]int8
+ raw RawSockaddrDatalink
+}
+
+// Translate "kern.hostname" to []_C_int{0,1,2,3}.
+func nametomib(name string) (mib []_C_int, err error) {
+ const siz = unsafe.Sizeof(mib[0])
+
+ // NOTE(rsc): It seems strange to set the buffer to have
+ // size CTL_MAXNAME+2 but use only CTL_MAXNAME
+ // as the size. I don't know why the +2 is here, but the
+ // kernel uses +2 for its own implementation of this function.
+ // I am scared that if we don't include the +2 here, the kernel
+ // will silently write 2 words farther than we specify
+ // and we'll get memory corruption.
+ var buf [CTL_MAXNAME + 2]_C_int
+ n := uintptr(CTL_MAXNAME) * siz
+
+ p := (*byte)(unsafe.Pointer(&buf[0]))
+ bytes, err := ByteSliceFromString(name)
+ if err != nil {
+ return nil, err
+ }
+
+ // Magic sysctl: "setting" 0.3 to a string name
+ // lets you read back the array of integers form.
+ if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {
+ return nil, err
+ }
+ return buf[0 : n/siz], nil
+}
+
+// ParseDirent parses up to max directory entries in buf,
+// appending the names to names. It returns the number
+// bytes consumed from buf, the number of entries added
+// to names, and the new names slice.
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+ origlen := len(buf)
+ for max != 0 && len(buf) > 0 {
+ dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+ if dirent.Reclen == 0 {
+ buf = nil
+ break
+ }
+ buf = buf[dirent.Reclen:]
+ if dirent.Fileno == 0 { // File absent in directory.
+ continue
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+ var name = string(bytes[0:dirent.Namlen])
+ if name == "." || name == ".." { // Useless names
+ continue
+ }
+ max--
+ count++
+ names = append(names, name)
+ }
+ return origlen - len(buf), count, names
+}
+
+//sysnb pipe() (r int, w int, err error)
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ p[0], p[1], err = pipe()
+ return
+}
+
+func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
+ var value IPMreqn
+ vallen := _Socklen(SizeofIPMreqn)
+ errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, errno
+}
+
+func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
+}
+
+func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ nfd, err = accept4(fd, &rsa, &len, flags)
+ if err != nil {
+ return
+ }
+ if len > SizeofSockaddrAny {
+ panic("RawSockaddrAny too small")
+ }
+ sa, err = anyToSockaddr(&rsa)
+ if err != nil {
+ Close(nfd)
+ nfd = 0
+ }
+ return
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ var bufsize uintptr
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
+ }
+ r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+// Derive extattr namespace and attribute name
+
+func xattrnamespace(fullattr string) (ns int, attr string, err error) {
+ s := -1
+ for idx, val := range fullattr {
+ if val == '.' {
+ s = idx
+ break
+ }
+ }
+
+ if s == -1 {
+ return -1, "", ENOATTR
+ }
+
+ namespace := fullattr[0:s]
+ attr = fullattr[s+1:]
+
+ switch namespace {
+ case "user":
+ return EXTATTR_NAMESPACE_USER, attr, nil
+ case "system":
+ return EXTATTR_NAMESPACE_SYSTEM, attr, nil
+ default:
+ return -1, "", ENOATTR
+ }
+}
+
+func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
+ if len(dest) > idx {
+ return unsafe.Pointer(&dest[idx])
+ } else {
+ return unsafe.Pointer(_zero)
+ }
+}
+
+// FreeBSD implements its own syscalls to handle extended attributes
+
+func Getxattr(file string, attr string, dest []byte) (sz int, err error) {
+ d := initxattrdest(dest, 0)
+ destsize := len(dest)
+
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return -1, err
+ }
+
+ return ExtattrGetFile(file, nsid, a, uintptr(d), destsize)
+}
+
+func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
+ d := initxattrdest(dest, 0)
+ destsize := len(dest)
+
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return -1, err
+ }
+
+ return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)
+}
+
+func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
+ d := initxattrdest(dest, 0)
+ destsize := len(dest)
+
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return -1, err
+ }
+
+ return ExtattrGetLink(link, nsid, a, uintptr(d), destsize)
+}
+
+// flags are unused on FreeBSD
+
+func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
+ d := unsafe.Pointer(&data[0])
+ datasiz := len(data)
+
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return
+ }
+
+ _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)
+ return
+}
+
+func Setxattr(file string, attr string, data []byte, flags int) (err error) {
+ d := unsafe.Pointer(&data[0])
+ datasiz := len(data)
+
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return
+ }
+
+ _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)
+ return
+}
+
+func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
+ d := unsafe.Pointer(&data[0])
+ datasiz := len(data)
+
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return
+ }
+
+ _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)
+ return
+}
+
+func Removexattr(file string, attr string) (err error) {
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return
+ }
+
+ err = ExtattrDeleteFile(file, nsid, a)
+ return
+}
+
+func Fremovexattr(fd int, attr string) (err error) {
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return
+ }
+
+ err = ExtattrDeleteFd(fd, nsid, a)
+ return
+}
+
+func Lremovexattr(link string, attr string) (err error) {
+ nsid, a, err := xattrnamespace(attr)
+ if err != nil {
+ return
+ }
+
+ err = ExtattrDeleteLink(link, nsid, a)
+ return
+}
+
+func Listxattr(file string, dest []byte) (sz int, err error) {
+ d := initxattrdest(dest, 0)
+ destsiz := len(dest)
+
+ // FreeBSD won't allow you to list xattrs from multiple namespaces
+ s := 0
+ var e error
+ for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
+ stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
+
+ /* Errors accessing system attrs are ignored so that
+ * we can implement the Linux-like behavior of omitting errors that
+ * we don't have read permissions on
+ *
+ * Linux will still error if we ask for user attributes on a file that
+ * we don't have read permissions on, so don't ignore those errors
+ */
+ if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
+ e = nil
+ continue
+ } else if e != nil {
+ return s, e
+ }
+
+ s += stmp
+ destsiz -= s
+ if destsiz < 0 {
+ destsiz = 0
+ }
+ d = initxattrdest(dest, s)
+ }
+
+ return s, e
+}
+
+func Flistxattr(fd int, dest []byte) (sz int, err error) {
+ d := initxattrdest(dest, 0)
+ destsiz := len(dest)
+
+ s := 0
+ var e error
+ for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
+ stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
+ if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
+ e = nil
+ continue
+ } else if e != nil {
+ return s, e
+ }
+
+ s += stmp
+ destsiz -= s
+ if destsiz < 0 {
+ destsiz = 0
+ }
+ d = initxattrdest(dest, s)
+ }
+
+ return s, e
+}
+
+func Llistxattr(link string, dest []byte) (sz int, err error) {
+ d := initxattrdest(dest, 0)
+ destsiz := len(dest)
+
+ s := 0
+ var e error
+ for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
+ stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
+ if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
+ e = nil
+ continue
+ } else if e != nil {
+ return s, e
+ }
+
+ s += stmp
+ destsiz -= s
+ if destsiz < 0 {
+ destsiz = 0
+ }
+ d = initxattrdest(dest, s)
+ }
+
+ return s, e
+}
+
+/*
+ * Exposed directly
+ */
+//sys Access(path string, mode uint32) (err error)
+//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys Chdir(path string) (err error)
+//sys Chflags(path string, flags int) (err error)
+//sys Chmod(path string, mode uint32) (err error)
+//sys Chown(path string, uid int, gid int) (err error)
+//sys Chroot(path string) (err error)
+//sys Close(fd int) (err error)
+//sys Dup(fd int) (nfd int, err error)
+//sys Dup2(from int, to int) (err error)
+//sys Exit(code int)
+//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)
+//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
+//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)
+//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
+//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)
+//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE
+//sys Fchdir(fd int) (err error)
+//sys Fchflags(fd int, flags int) (err error)
+//sys Fchmod(fd int, mode uint32) (err error)
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Flock(fd int, how int) (err error)
+//sys Fpathconf(fd int, name int) (val int, err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Fstatfs(fd int, stat *Statfs_t) (err error)
+//sys Fsync(fd int) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
+//sys Getdtablesize() (size int)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (uid int)
+//sysnb Getgid() (gid int)
+//sysnb Getpgid(pid int) (pgid int, err error)
+//sysnb Getpgrp() (pgrp int)
+//sysnb Getpid() (pid int)
+//sysnb Getppid() (ppid int)
+//sys Getpriority(which int, who int) (prio int, err error)
+//sysnb Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb Getrusage(who int, rusage *Rusage) (err error)
+//sysnb Getsid(pid int) (sid int, err error)
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Getuid() (uid int)
+//sys Issetugid() (tainted bool)
+//sys Kill(pid int, signum syscall.Signal) (err error)
+//sys Kqueue() (fd int, err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Link(path string, link string) (err error)
+//sys Listen(s int, backlog int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Mkdir(path string, mode uint32) (err error)
+//sys Mkfifo(path string, mode uint32) (err error)
+//sys Mknod(path string, mode uint32, dev int) (err error)
+//sys Mlock(b []byte) (err error)
+//sys Mlockall(flags int) (err error)
+//sys Mprotect(b []byte, prot int) (err error)
+//sys Munlock(b []byte) (err error)
+//sys Munlockall() (err error)
+//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys Open(path string, mode int, perm uint32) (fd int, err error)
+//sys Pathconf(path string, name int) (val int, err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys read(fd int, p []byte) (n int, err error)
+//sys Readlink(path string, buf []byte) (n int, err error)
+//sys Rename(from string, to string) (err error)
+//sys Revoke(path string) (err error)
+//sys Rmdir(path string) (err error)
+//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sysnb Setegid(egid int) (err error)
+//sysnb Seteuid(euid int) (err error)
+//sysnb Setgid(gid int) (err error)
+//sys Setlogin(name string) (err error)
+//sysnb Setpgid(pid int, pgid int) (err error)
+//sys Setpriority(which int, who int, prio int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb Setsid() (pid int, err error)
+//sysnb Settimeofday(tp *Timeval) (err error)
+//sysnb Setuid(uid int) (err error)
+//sys Stat(path string, stat *Stat_t) (err error)
+//sys Statfs(path string, stat *Statfs_t) (err error)
+//sys Symlink(path string, link string) (err error)
+//sys Sync() (err error)
+//sys Truncate(path string, length int64) (err error)
+//sys Umask(newmask int) (oldmask int)
+//sys Undelete(path string) (err error)
+//sys Unlink(path string) (err error)
+//sys Unmount(path string, flags int) (err error)
+//sys write(fd int, p []byte) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys munmap(addr uintptr, length uintptr) (err error)
+//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
+
+/*
+ * Unimplemented
+ */
+// Profil
+// Sigaction
+// Sigprocmask
+// Getlogin
+// Sigpending
+// Sigaltstack
+// Ioctl
+// Reboot
+// Execve
+// Vfork
+// Sbrk
+// Sstk
+// Ovadvise
+// Mincore
+// Setitimer
+// Swapon
+// Select
+// Sigsuspend
+// Readv
+// Writev
+// Nfssvc
+// Getfh
+// Quotactl
+// Mount
+// Csops
+// Waitid
+// Add_profil
+// Kdebug_trace
+// Sigreturn
+// Mmap
+// Mlock
+// Munlock
+// Atsocket
+// Kqueue_from_portset_np
+// Kqueue_portset
+// Getattrlist
+// Setattrlist
+// Getdirentriesattr
+// Searchfs
+// Delete
+// Copyfile
+// Poll
+// Watchevent
+// Waitevent
+// Modwatch
+// Getxattr
+// Fgetxattr
+// Setxattr
+// Fsetxattr
+// Removexattr
+// Fremovexattr
+// Listxattr
+// Flistxattr
+// Fsctl
+// Initgroups
+// Posix_spawn
+// Nfsclnt
+// Fhopen
+// Minherit
+// Semsys
+// Msgsys
+// Shmsys
+// Semctl
+// Semget
+// Semop
+// Msgctl
+// Msgget
+// Msgsnd
+// Msgrcv
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Shm_open
+// Shm_unlink
+// Sem_open
+// Sem_close
+// Sem_unlink
+// Sem_wait
+// Sem_trywait
+// Sem_post
+// Sem_getvalue
+// Sem_init
+// Sem_destroy
+// Open_extended
+// Umask_extended
+// Stat_extended
+// Lstat_extended
+// Fstat_extended
+// Chmod_extended
+// Fchmod_extended
+// Access_extended
+// Settid
+// Gettid
+// Setsgroups
+// Getsgroups
+// Setwgroups
+// Getwgroups
+// Mkfifo_extended
+// Mkdir_extended
+// Identitysvc
+// Shared_region_check_np
+// Shared_region_map_np
+// __pthread_mutex_destroy
+// __pthread_mutex_init
+// __pthread_mutex_lock
+// __pthread_mutex_trylock
+// __pthread_mutex_unlock
+// __pthread_cond_init
+// __pthread_cond_destroy
+// __pthread_cond_broadcast
+// __pthread_cond_signal
+// Setsid_with_pid
+// __pthread_cond_timedwait
+// Aio_fsync
+// Aio_return
+// Aio_suspend
+// Aio_cancel
+// Aio_error
+// Aio_read
+// Aio_write
+// Lio_listio
+// __pthread_cond_wait
+// Iopolicysys
+// Mlockall
+// Munlockall
+// __pthread_kill
+// __pthread_sigmask
+// __sigwait
+// __disable_threadsignal
+// __pthread_markcancel
+// __pthread_canceled
+// __semwait_signal
+// Proc_info
+// Stat64_extended
+// Lstat64_extended
+// Fstat64_extended
+// __pthread_chdir
+// __pthread_fchdir
+// Audit
+// Auditon
+// Getauid
+// Setauid
+// Getaudit
+// Setaudit
+// Getaudit_addr
+// Setaudit_addr
+// Auditctl
+// Bsdthread_create
+// Bsdthread_terminate
+// Stack_snapshot
+// Bsdthread_register
+// Workq_open
+// Workq_ops
+// __mac_execve
+// __mac_syscall
+// __mac_get_file
+// __mac_set_file
+// __mac_get_link
+// __mac_set_link
+// __mac_get_proc
+// __mac_set_proc
+// __mac_get_fd
+// __mac_set_fd
+// __mac_get_pid
+// __mac_get_lcid
+// __mac_get_lctx
+// __mac_set_lctx
+// Setlcid
+// Read_nocancel
+// Write_nocancel
+// Open_nocancel
+// Close_nocancel
+// Wait4_nocancel
+// Recvmsg_nocancel
+// Sendmsg_nocancel
+// Recvfrom_nocancel
+// Accept_nocancel
+// Msync_nocancel
+// Fcntl_nocancel
+// Select_nocancel
+// Fsync_nocancel
+// Connect_nocancel
+// Sigsuspend_nocancel
+// Readv_nocancel
+// Writev_nocancel
+// Sendto_nocancel
+// Pread_nocancel
+// Pwrite_nocancel
+// Waitid_nocancel
+// Poll_nocancel
+// Msgsnd_nocancel
+// Msgrcv_nocancel
+// Sem_wait_nocancel
+// Aio_suspend_nocancel
+// __sigwait_nocancel
+// __semwait_signal_nocancel
+// __mac_mount
+// __mac_get_mount
+// __mac_getfsstat
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go
new file mode 100644
index 000000000..6255d40ff
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_386.go
@@ -0,0 +1,63 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build 386,freebsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int32(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int32(nsec / 1e9)
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var writtenOut uint64 = 0
+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
+
+ written = int(writtenOut)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go
new file mode 100644
index 000000000..8b395d596
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_amd64.go
@@ -0,0 +1,63 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64,freebsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = nsec % 1e9 / 1e3
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint64(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var writtenOut uint64 = 0
+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
+
+ written = int(writtenOut)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go
new file mode 100644
index 000000000..4e72d46a8
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_freebsd_arm.go
@@ -0,0 +1,63 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm,freebsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return ts.Sec*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return tv.Sec*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = nsec / 1e9
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ var writtenOut uint64 = 0
+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
+
+ written = int(writtenOut)
+
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go
new file mode 100644
index 000000000..5048e563b
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux.go
@@ -0,0 +1,1086 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Linux system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and
+// wrap it in our own nicer implementation.
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+/*
+ * Wrapped
+ */
+
+func Access(path string, mode uint32) (err error) {
+ return Faccessat(AT_FDCWD, path, mode, 0)
+}
+
+func Chmod(path string, mode uint32) (err error) {
+ return Fchmodat(AT_FDCWD, path, mode, 0)
+}
+
+func Chown(path string, uid int, gid int) (err error) {
+ return Fchownat(AT_FDCWD, path, uid, gid, 0)
+}
+
+func Creat(path string, mode uint32) (fd int, err error) {
+ return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)
+}
+
+//sys linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
+
+func Link(oldpath string, newpath string) (err error) {
+ return linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)
+}
+
+func Mkdir(path string, mode uint32) (err error) {
+ return Mkdirat(AT_FDCWD, path, mode)
+}
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ return Mknodat(AT_FDCWD, path, mode, dev)
+}
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ return openat(AT_FDCWD, path, mode|O_LARGEFILE, perm)
+}
+
+//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
+
+func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ return openat(dirfd, path, flags|O_LARGEFILE, mode)
+}
+
+//sys readlinkat(dirfd int, path string, buf []byte) (n int, err error)
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ return readlinkat(AT_FDCWD, path, buf)
+}
+
+func Rename(oldpath string, newpath string) (err error) {
+ return Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath)
+}
+
+func Rmdir(path string) error {
+ return unlinkat(AT_FDCWD, path, AT_REMOVEDIR)
+}
+
+//sys symlinkat(oldpath string, newdirfd int, newpath string) (err error)
+
+func Symlink(oldpath string, newpath string) (err error) {
+ return symlinkat(oldpath, AT_FDCWD, newpath)
+}
+
+func Unlink(path string) error {
+ return unlinkat(AT_FDCWD, path, 0)
+}
+
+//sys unlinkat(dirfd int, path string, flags int) (err error)
+
+func Unlinkat(dirfd int, path string, flags int) error {
+ return unlinkat(dirfd, path, flags)
+}
+
+//sys utimes(path string, times *[2]Timeval) (err error)
+
+func Utimes(path string, tv []Timeval) (err error) {
+ if tv == nil {
+ return utimes(path, nil)
+ }
+ if len(tv) != 2 {
+ return EINVAL
+ }
+ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
+
+func UtimesNano(path string, ts []Timespec) error {
+ if ts == nil {
+ err := utimensat(AT_FDCWD, path, nil, 0)
+ if err != ENOSYS {
+ return err
+ }
+ return utimes(path, nil)
+ }
+ if len(ts) != 2 {
+ return EINVAL
+ }
+ err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
+ if err != ENOSYS {
+ return err
+ }
+ // If the utimensat syscall isn't available (utimensat was added to Linux
+ // in 2.6.22, Released, 8 July 2007) then fall back to utimes
+ var tv [2]Timeval
+ for i := 0; i < 2; i++ {
+ tv[i].Sec = ts[i].Sec
+ tv[i].Usec = ts[i].Nsec / 1000
+ }
+ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
+ if ts == nil {
+ return utimensat(dirfd, path, nil, flags)
+ }
+ if len(ts) != 2 {
+ return EINVAL
+ }
+ return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
+}
+
+//sys futimesat(dirfd int, path *byte, times *[2]Timeval) (err error)
+
+func Futimesat(dirfd int, path string, tv []Timeval) error {
+ pathp, err := BytePtrFromString(path)
+ if err != nil {
+ return err
+ }
+ if tv == nil {
+ return futimesat(dirfd, pathp, nil)
+ }
+ if len(tv) != 2 {
+ return EINVAL
+ }
+ return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+func Futimes(fd int, tv []Timeval) (err error) {
+ // Believe it or not, this is the best we can do on Linux
+ // (and is what glibc does).
+ return Utimes("/proc/self/fd/"+itoa(fd), tv)
+}
+
+const ImplementsGetwd = true
+
+//sys Getcwd(buf []byte) (n int, err error)
+
+func Getwd() (wd string, err error) {
+ var buf [PathMax]byte
+ n, err := Getcwd(buf[0:])
+ if err != nil {
+ return "", err
+ }
+ // Getcwd returns the number of bytes written to buf, including the NUL.
+ if n < 1 || n > len(buf) || buf[n-1] != 0 {
+ return "", EINVAL
+ }
+ return string(buf[0 : n-1]), nil
+}
+
+func Getgroups() (gids []int, err error) {
+ n, err := getgroups(0, nil)
+ if err != nil {
+ return nil, err
+ }
+ if n == 0 {
+ return nil, nil
+ }
+
+ // Sanity check group count. Max is 1<<16 on Linux.
+ if n < 0 || n > 1<<20 {
+ return nil, EINVAL
+ }
+
+ a := make([]_Gid_t, n)
+ n, err = getgroups(n, &a[0])
+ if err != nil {
+ return nil, err
+ }
+ gids = make([]int, n)
+ for i, v := range a[0:n] {
+ gids[i] = int(v)
+ }
+ return
+}
+
+func Setgroups(gids []int) (err error) {
+ if len(gids) == 0 {
+ return setgroups(0, nil)
+ }
+
+ a := make([]_Gid_t, len(gids))
+ for i, v := range gids {
+ a[i] = _Gid_t(v)
+ }
+ return setgroups(len(a), &a[0])
+}
+
+type WaitStatus uint32
+
+// Wait status is 7 bits at bottom, either 0 (exited),
+// 0x7F (stopped), or a signal number that caused an exit.
+// The 0x80 bit is whether there was a core dump.
+// An extra number (exit code, signal causing a stop)
+// is in the high bits. At least that's the idea.
+// There are various irregularities. For example, the
+// "continued" status is 0xFFFF, distinguishing itself
+// from stopped via the core dump bit.
+
+const (
+ mask = 0x7F
+ core = 0x80
+ exited = 0x00
+ stopped = 0x7F
+ shift = 8
+)
+
+func (w WaitStatus) Exited() bool { return w&mask == exited }
+
+func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }
+
+func (w WaitStatus) Stopped() bool { return w&0xFF == stopped }
+
+func (w WaitStatus) Continued() bool { return w == 0xFFFF }
+
+func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
+
+func (w WaitStatus) ExitStatus() int {
+ if !w.Exited() {
+ return -1
+ }
+ return int(w>>shift) & 0xFF
+}
+
+func (w WaitStatus) Signal() syscall.Signal {
+ if !w.Signaled() {
+ return -1
+ }
+ return syscall.Signal(w & mask)
+}
+
+func (w WaitStatus) StopSignal() syscall.Signal {
+ if !w.Stopped() {
+ return -1
+ }
+ return syscall.Signal(w>>shift) & 0xFF
+}
+
+func (w WaitStatus) TrapCause() int {
+ if w.StopSignal() != SIGTRAP {
+ return -1
+ }
+ return int(w>>shift) >> 8
+}
+
+//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)
+
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
+ var status _C_int
+ wpid, err = wait4(pid, &status, options, rusage)
+ if wstatus != nil {
+ *wstatus = WaitStatus(status)
+ }
+ return
+}
+
+func Mkfifo(path string, mode uint32) (err error) {
+ return Mknod(path, mode|S_IFIFO, 0)
+}
+
+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Family = AF_INET
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+ p[0] = byte(sa.Port >> 8)
+ p[1] = byte(sa.Port)
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil
+}
+
+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Family = AF_INET6
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+ p[0] = byte(sa.Port >> 8)
+ p[1] = byte(sa.Port)
+ sa.raw.Scope_id = sa.ZoneId
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil
+}
+
+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ name := sa.Name
+ n := len(name)
+ if n >= len(sa.raw.Path) {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Family = AF_UNIX
+ for i := 0; i < n; i++ {
+ sa.raw.Path[i] = int8(name[i])
+ }
+ // length is family (uint16), name, NUL.
+ sl := _Socklen(2)
+ if n > 0 {
+ sl += _Socklen(n) + 1
+ }
+ if sa.raw.Path[0] == '@' {
+ sa.raw.Path[0] = 0
+ // Don't count trailing NUL for abstract address.
+ sl--
+ }
+
+ return unsafe.Pointer(&sa.raw), sl, nil
+}
+
+type SockaddrLinklayer struct {
+ Protocol uint16
+ Ifindex int
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]byte
+ raw RawSockaddrLinklayer
+}
+
+func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Family = AF_PACKET
+ sa.raw.Protocol = sa.Protocol
+ sa.raw.Ifindex = int32(sa.Ifindex)
+ sa.raw.Hatype = sa.Hatype
+ sa.raw.Pkttype = sa.Pkttype
+ sa.raw.Halen = sa.Halen
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil
+}
+
+type SockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+ raw RawSockaddrNetlink
+}
+
+func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ sa.raw.Family = AF_NETLINK
+ sa.raw.Pad = sa.Pad
+ sa.raw.Pid = sa.Pid
+ sa.raw.Groups = sa.Groups
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil
+}
+
+func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
+ switch rsa.Addr.Family {
+ case AF_NETLINK:
+ pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))
+ sa := new(SockaddrNetlink)
+ sa.Family = pp.Family
+ sa.Pad = pp.Pad
+ sa.Pid = pp.Pid
+ sa.Groups = pp.Groups
+ return sa, nil
+
+ case AF_PACKET:
+ pp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa))
+ sa := new(SockaddrLinklayer)
+ sa.Protocol = pp.Protocol
+ sa.Ifindex = int(pp.Ifindex)
+ sa.Hatype = pp.Hatype
+ sa.Pkttype = pp.Pkttype
+ sa.Halen = pp.Halen
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+
+ case AF_UNIX:
+ pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
+ sa := new(SockaddrUnix)
+ if pp.Path[0] == 0 {
+ // "Abstract" Unix domain socket.
+ // Rewrite leading NUL as @ for textual display.
+ // (This is the standard convention.)
+ // Not friendly to overwrite in place,
+ // but the callers below don't care.
+ pp.Path[0] = '@'
+ }
+
+ // Assume path ends at NUL.
+ // This is not technically the Linux semantics for
+ // abstract Unix domain sockets--they are supposed
+ // to be uninterpreted fixed-size binary blobs--but
+ // everyone uses this convention.
+ n := 0
+ for n < len(pp.Path) && pp.Path[n] != 0 {
+ n++
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
+ sa.Name = string(bytes)
+ return sa, nil
+
+ case AF_INET:
+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
+ sa := new(SockaddrInet4)
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ sa.Port = int(p[0])<<8 + int(p[1])
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+
+ case AF_INET6:
+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
+ sa := new(SockaddrInet6)
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ sa.Port = int(p[0])<<8 + int(p[1])
+ sa.ZoneId = pp.Scope_id
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+ }
+ return nil, EAFNOSUPPORT
+}
+
+func Accept(fd int) (nfd int, sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ nfd, err = accept(fd, &rsa, &len)
+ if err != nil {
+ return
+ }
+ sa, err = anyToSockaddr(&rsa)
+ if err != nil {
+ Close(nfd)
+ nfd = 0
+ }
+ return
+}
+
+func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ nfd, err = accept4(fd, &rsa, &len, flags)
+ if err != nil {
+ return
+ }
+ if len > SizeofSockaddrAny {
+ panic("RawSockaddrAny too small")
+ }
+ sa, err = anyToSockaddr(&rsa)
+ if err != nil {
+ Close(nfd)
+ nfd = 0
+ }
+ return
+}
+
+func Getsockname(fd int) (sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ if err = getsockname(fd, &rsa, &len); err != nil {
+ return
+ }
+ return anyToSockaddr(&rsa)
+}
+
+func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
+ vallen := _Socklen(4)
+ err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
+ return value, err
+}
+
+func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
+ var value IPMreq
+ vallen := _Socklen(SizeofIPMreq)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
+ var value IPMreqn
+ vallen := _Socklen(SizeofIPMreqn)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
+ var value IPv6Mreq
+ vallen := _Socklen(SizeofIPv6Mreq)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
+ var value IPv6MTUInfo
+ vallen := _Socklen(SizeofIPv6MTUInfo)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
+ var value ICMPv6Filter
+ vallen := _Socklen(SizeofICMPv6Filter)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
+ var value Ucred
+ vallen := _Socklen(SizeofUcred)
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+ return &value, err
+}
+
+func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
+}
+
+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+ var msg Msghdr
+ var rsa RawSockaddrAny
+ msg.Name = (*byte)(unsafe.Pointer(&rsa))
+ msg.Namelen = uint32(SizeofSockaddrAny)
+ var iov Iovec
+ if len(p) > 0 {
+ iov.Base = (*byte)(unsafe.Pointer(&p[0]))
+ iov.SetLen(len(p))
+ }
+ var dummy byte
+ if len(oob) > 0 {
+ // receive at least one normal byte
+ if len(p) == 0 {
+ iov.Base = &dummy
+ iov.SetLen(1)
+ }
+ msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+ msg.SetControllen(len(oob))
+ }
+ msg.Iov = &iov
+ msg.Iovlen = 1
+ if n, err = recvmsg(fd, &msg, flags); err != nil {
+ return
+ }
+ oobn = int(msg.Controllen)
+ recvflags = int(msg.Flags)
+ // source address is only specified if the socket is unconnected
+ if rsa.Addr.Family != AF_UNSPEC {
+ from, err = anyToSockaddr(&rsa)
+ }
+ return
+}
+
+func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
+ _, err = SendmsgN(fd, p, oob, to, flags)
+ return
+}
+
+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
+ var ptr unsafe.Pointer
+ var salen _Socklen
+ if to != nil {
+ var err error
+ ptr, salen, err = to.sockaddr()
+ if err != nil {
+ return 0, err
+ }
+ }
+ var msg Msghdr
+ msg.Name = (*byte)(unsafe.Pointer(ptr))
+ msg.Namelen = uint32(salen)
+ var iov Iovec
+ if len(p) > 0 {
+ iov.Base = (*byte)(unsafe.Pointer(&p[0]))
+ iov.SetLen(len(p))
+ }
+ var dummy byte
+ if len(oob) > 0 {
+ // send at least one normal byte
+ if len(p) == 0 {
+ iov.Base = &dummy
+ iov.SetLen(1)
+ }
+ msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+ msg.SetControllen(len(oob))
+ }
+ msg.Iov = &iov
+ msg.Iovlen = 1
+ if n, err = sendmsg(fd, &msg, flags); err != nil {
+ return 0, err
+ }
+ if len(oob) > 0 && len(p) == 0 {
+ n = 0
+ }
+ return n, nil
+}
+
+// BindToDevice binds the socket associated with fd to device.
+func BindToDevice(fd int, device string) (err error) {
+ return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)
+}
+
+//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+
+func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) {
+ // The peek requests are machine-size oriented, so we wrap it
+ // to retrieve arbitrary-length data.
+
+ // The ptrace syscall differs from glibc's ptrace.
+ // Peeks returns the word in *data, not as the return value.
+
+ var buf [sizeofPtr]byte
+
+ // Leading edge. PEEKTEXT/PEEKDATA don't require aligned
+ // access (PEEKUSER warns that it might), but if we don't
+ // align our reads, we might straddle an unmapped page
+ // boundary and not get the bytes leading up to the page
+ // boundary.
+ n := 0
+ if addr%sizeofPtr != 0 {
+ err = ptrace(req, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
+ if err != nil {
+ return 0, err
+ }
+ n += copy(out, buf[addr%sizeofPtr:])
+ out = out[n:]
+ }
+
+ // Remainder.
+ for len(out) > 0 {
+ // We use an internal buffer to guarantee alignment.
+ // It's not documented if this is necessary, but we're paranoid.
+ err = ptrace(req, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))
+ if err != nil {
+ return n, err
+ }
+ copied := copy(out, buf[0:])
+ n += copied
+ out = out[copied:]
+ }
+
+ return n, nil
+}
+
+func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {
+ return ptracePeek(PTRACE_PEEKTEXT, pid, addr, out)
+}
+
+func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {
+ return ptracePeek(PTRACE_PEEKDATA, pid, addr, out)
+}
+
+func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) {
+ // As for ptracePeek, we need to align our accesses to deal
+ // with the possibility of straddling an invalid page.
+
+ // Leading edge.
+ n := 0
+ if addr%sizeofPtr != 0 {
+ var buf [sizeofPtr]byte
+ err = ptrace(peekReq, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
+ if err != nil {
+ return 0, err
+ }
+ n += copy(buf[addr%sizeofPtr:], data)
+ word := *((*uintptr)(unsafe.Pointer(&buf[0])))
+ err = ptrace(pokeReq, pid, addr-addr%sizeofPtr, word)
+ if err != nil {
+ return 0, err
+ }
+ data = data[n:]
+ }
+
+ // Interior.
+ for len(data) > sizeofPtr {
+ word := *((*uintptr)(unsafe.Pointer(&data[0])))
+ err = ptrace(pokeReq, pid, addr+uintptr(n), word)
+ if err != nil {
+ return n, err
+ }
+ n += sizeofPtr
+ data = data[sizeofPtr:]
+ }
+
+ // Trailing edge.
+ if len(data) > 0 {
+ var buf [sizeofPtr]byte
+ err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))
+ if err != nil {
+ return n, err
+ }
+ copy(buf[0:], data)
+ word := *((*uintptr)(unsafe.Pointer(&buf[0])))
+ err = ptrace(pokeReq, pid, addr+uintptr(n), word)
+ if err != nil {
+ return n, err
+ }
+ n += len(data)
+ }
+
+ return n, nil
+}
+
+func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {
+ return ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data)
+}
+
+func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
+ return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)
+}
+
+func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
+}
+
+func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
+}
+
+func PtraceSetOptions(pid int, options int) (err error) {
+ return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))
+}
+
+func PtraceGetEventMsg(pid int) (msg uint, err error) {
+ var data _C_long
+ err = ptrace(PTRACE_GETEVENTMSG, pid, 0, uintptr(unsafe.Pointer(&data)))
+ msg = uint(data)
+ return
+}
+
+func PtraceCont(pid int, signal int) (err error) {
+ return ptrace(PTRACE_CONT, pid, 0, uintptr(signal))
+}
+
+func PtraceSyscall(pid int, signal int) (err error) {
+ return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))
+}
+
+func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }
+
+func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }
+
+func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }
+
+//sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)
+
+func Reboot(cmd int) (err error) {
+ return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "")
+}
+
+func clen(n []byte) int {
+ for i := 0; i < len(n); i++ {
+ if n[i] == 0 {
+ return i
+ }
+ }
+ return len(n)
+}
+
+func ReadDirent(fd int, buf []byte) (n int, err error) {
+ return Getdents(fd, buf)
+}
+
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+ origlen := len(buf)
+ count = 0
+ for max != 0 && len(buf) > 0 {
+ dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+ buf = buf[dirent.Reclen:]
+ if dirent.Ino == 0 { // File absent in directory.
+ continue
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+ var name = string(bytes[0:clen(bytes[:])])
+ if name == "." || name == ".." { // Useless names
+ continue
+ }
+ max--
+ count++
+ names = append(names, name)
+ }
+ return origlen - len(buf), count, names
+}
+
+//sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error)
+
+func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {
+ // Certain file systems get rather angry and EINVAL if you give
+ // them an empty string of data, rather than NULL.
+ if data == "" {
+ return mount(source, target, fstype, flags, nil)
+ }
+ datap, err := BytePtrFromString(data)
+ if err != nil {
+ return err
+ }
+ return mount(source, target, fstype, flags, datap)
+}
+
+// Sendto
+// Recvfrom
+// Socketpair
+
+/*
+ * Direct access
+ */
+//sys Acct(path string) (err error)
+//sys Adjtimex(buf *Timex) (state int, err error)
+//sys Chdir(path string) (err error)
+//sys Chroot(path string) (err error)
+//sys ClockGettime(clockid int32, time *Timespec) (err error)
+//sys Close(fd int) (err error)
+//sys Dup(oldfd int) (fd int, err error)
+//sys Dup3(oldfd int, newfd int, flags int) (err error)
+//sysnb EpollCreate(size int) (fd int, err error)
+//sysnb EpollCreate1(flag int) (fd int, err error)
+//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)
+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys Exit(code int) = SYS_EXIT_GROUP
+//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
+//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error)
+//sys Fchdir(fd int) (err error)
+//sys Fchmod(fd int, mode uint32) (err error)
+//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
+//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
+//sys fcntl(fd int, cmd int, arg int) (val int, err error)
+//sys Fdatasync(fd int) (err error)
+//sys Flock(fd int, how int) (err error)
+//sys Fsync(fd int) (err error)
+//sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64
+//sysnb Getpgid(pid int) (pgid int, err error)
+
+func Getpgrp() (pid int) {
+ pid, _ = Getpgid(0)
+ return
+}
+
+//sysnb Getpid() (pid int)
+//sysnb Getppid() (ppid int)
+//sys Getpriority(which int, who int) (prio int, err error)
+//sysnb Getrusage(who int, rusage *Rusage) (err error)
+//sysnb Gettid() (tid int)
+//sys Getxattr(path string, attr string, dest []byte) (sz int, err error)
+//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
+//sysnb InotifyInit1(flags int) (fd int, err error)
+//sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error)
+//sysnb Kill(pid int, sig syscall.Signal) (err error)
+//sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG
+//sys Listxattr(path string, dest []byte) (sz int, err error)
+//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
+//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
+//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys Pause() (err error)
+//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
+//sysnb prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) = SYS_PRLIMIT64
+//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)
+//sys read(fd int, p []byte) (n int, err error)
+//sys Removexattr(path string, attr string) (err error)
+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
+//sys Setdomainname(p []byte) (err error)
+//sys Sethostname(p []byte) (err error)
+//sysnb Setpgid(pid int, pgid int) (err error)
+//sysnb Setsid() (pid int, err error)
+//sysnb Settimeofday(tv *Timeval) (err error)
+
+// issue 1435.
+// On linux Setuid and Setgid only affects the current thread, not the process.
+// This does not match what most callers expect so we must return an error
+// here rather than letting the caller think that the call succeeded.
+
+func Setuid(uid int) (err error) {
+ return EOPNOTSUPP
+}
+
+func Setgid(uid int) (err error) {
+ return EOPNOTSUPP
+}
+
+//sys Setpriority(which int, who int, prio int) (err error)
+//sys Setxattr(path string, attr string, data []byte, flags int) (err error)
+//sys Sync()
+//sysnb Sysinfo(info *Sysinfo_t) (err error)
+//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error)
+//sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error)
+//sysnb Times(tms *Tms) (ticks uintptr, err error)
+//sysnb Umask(mask int) (oldmask int)
+//sysnb Uname(buf *Utsname) (err error)
+//sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2
+//sys Unshare(flags int) (err error)
+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
+//sys Utime(path string, buf *Utimbuf) (err error)
+//sys write(fd int, p []byte) (n int, err error)
+//sys exitThread(code int) (err error) = SYS_EXIT
+//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ
+//sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE
+
+// mmap varies by architecture; see syscall_linux_*.go.
+//sys munmap(addr uintptr, length uintptr) (err error)
+
+var mapper = &mmapper{
+ active: make(map[*byte][]byte),
+ mmap: mmap,
+ munmap: munmap,
+}
+
+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
+ return mapper.Mmap(fd, offset, length, prot, flags)
+}
+
+func Munmap(b []byte) (err error) {
+ return mapper.Munmap(b)
+}
+
+//sys Madvise(b []byte, advice int) (err error)
+//sys Mprotect(b []byte, prot int) (err error)
+//sys Mlock(b []byte) (err error)
+//sys Munlock(b []byte) (err error)
+//sys Mlockall(flags int) (err error)
+//sys Munlockall() (err error)
+
+/*
+ * Unimplemented
+ */
+// AddKey
+// AfsSyscall
+// Alarm
+// ArchPrctl
+// Brk
+// Capget
+// Capset
+// ClockGetres
+// ClockNanosleep
+// ClockSettime
+// Clone
+// CreateModule
+// DeleteModule
+// EpollCtlOld
+// EpollPwait
+// EpollWaitOld
+// Eventfd
+// Execve
+// Fgetxattr
+// Flistxattr
+// Fork
+// Fremovexattr
+// Fsetxattr
+// Futex
+// GetKernelSyms
+// GetMempolicy
+// GetRobustList
+// GetThreadArea
+// Getitimer
+// Getpmsg
+// IoCancel
+// IoDestroy
+// IoGetevents
+// IoSetup
+// IoSubmit
+// Ioctl
+// IoprioGet
+// IoprioSet
+// KexecLoad
+// Keyctl
+// Lgetxattr
+// Llistxattr
+// LookupDcookie
+// Lremovexattr
+// Lsetxattr
+// Mbind
+// MigratePages
+// Mincore
+// ModifyLdt
+// Mount
+// MovePages
+// Mprotect
+// MqGetsetattr
+// MqNotify
+// MqOpen
+// MqTimedreceive
+// MqTimedsend
+// MqUnlink
+// Mremap
+// Msgctl
+// Msgget
+// Msgrcv
+// Msgsnd
+// Msync
+// Newfstatat
+// Nfsservctl
+// Personality
+// Poll
+// Ppoll
+// Pselect6
+// Ptrace
+// Putpmsg
+// QueryModule
+// Quotactl
+// Readahead
+// Readv
+// RemapFilePages
+// RequestKey
+// RestartSyscall
+// RtSigaction
+// RtSigpending
+// RtSigprocmask
+// RtSigqueueinfo
+// RtSigreturn
+// RtSigsuspend
+// RtSigtimedwait
+// SchedGetPriorityMax
+// SchedGetPriorityMin
+// SchedGetaffinity
+// SchedGetparam
+// SchedGetscheduler
+// SchedRrGetInterval
+// SchedSetaffinity
+// SchedSetparam
+// SchedYield
+// Security
+// Semctl
+// Semget
+// Semop
+// Semtimedop
+// SetMempolicy
+// SetRobustList
+// SetThreadArea
+// SetTidAddress
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Sigaltstack
+// Signalfd
+// Swapoff
+// Swapon
+// Sysfs
+// TimerCreate
+// TimerDelete
+// TimerGetoverrun
+// TimerGettime
+// TimerSettime
+// Timerfd
+// Tkill (obsolete)
+// Tuxcall
+// Umount2
+// Uselib
+// Utimensat
+// Vfork
+// Vhangup
+// Vmsplice
+// Vserver
+// Waitid
+// _Sysctl
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go
new file mode 100644
index 000000000..7171219af
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_386.go
@@ -0,0 +1,388 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP)
+// so that go vet can check that they are correct.
+
+// +build 386,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int32(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Sec = int32(nsec / 1e9)
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ return
+}
+
+//sysnb pipe(p *[2]_C_int) (err error)
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe(&pp)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+// 64-bit file system and 32-bit uid calls
+// (386 default is 32-bit file system and 16-bit uid).
+//sys Dup2(oldfd int, newfd int) (err error)
+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64
+//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
+//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
+//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
+//sysnb Getegid() (egid int) = SYS_GETEGID32
+//sysnb Geteuid() (euid int) = SYS_GETEUID32
+//sysnb Getgid() (gid int) = SYS_GETGID32
+//sysnb Getuid() (uid int) = SYS_GETUID32
+//sysnb InotifyInit() (fd int, err error)
+//sys Ioperm(from int, num int, on int) (err error)
+//sys Iopl(level int) (err error)
+//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
+//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
+//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32
+//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32
+//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32
+//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
+//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32
+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
+//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
+//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
+//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32
+//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32
+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
+
+//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ page := uintptr(offset / 4096)
+ if offset != int64(page)*4096 {
+ return 0, EINVAL
+ }
+ return mmap2(addr, length, prot, flags, fd, page)
+}
+
+type rlimit32 struct {
+ Cur uint32
+ Max uint32
+}
+
+//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT
+
+const rlimInf32 = ^uint32(0)
+const rlimInf64 = ^uint64(0)
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ err = prlimit(0, resource, nil, rlim)
+ if err != ENOSYS {
+ return err
+ }
+
+ rl := rlimit32{}
+ err = getrlimit(resource, &rl)
+ if err != nil {
+ return
+ }
+
+ if rl.Cur == rlimInf32 {
+ rlim.Cur = rlimInf64
+ } else {
+ rlim.Cur = uint64(rl.Cur)
+ }
+
+ if rl.Max == rlimInf32 {
+ rlim.Max = rlimInf64
+ } else {
+ rlim.Max = uint64(rl.Max)
+ }
+ return
+}
+
+//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ err = prlimit(0, resource, rlim, nil)
+ if err != ENOSYS {
+ return err
+ }
+
+ rl := rlimit32{}
+ if rlim.Cur == rlimInf64 {
+ rl.Cur = rlimInf32
+ } else if rlim.Cur < uint64(rlimInf32) {
+ rl.Cur = uint32(rlim.Cur)
+ } else {
+ return EINVAL
+ }
+ if rlim.Max == rlimInf64 {
+ rl.Max = rlimInf32
+ } else if rlim.Max < uint64(rlimInf32) {
+ rl.Max = uint32(rlim.Max)
+ } else {
+ return EINVAL
+ }
+
+ return setrlimit(resource, &rl)
+}
+
+// Underlying system call writes to newoffset via pointer.
+// Implemented in assembly to avoid allocation.
+func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ newoffset, errno := seek(fd, offset, whence)
+ if errno != 0 {
+ return 0, errno
+ }
+ return newoffset, nil
+}
+
+// Vsyscalls on amd64.
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Time(t *Time_t) (tt Time_t, err error)
+
+// On x86 Linux, all the socket calls go through an extra indirection,
+// I think because the 5-register system call interface can't handle
+// the 6-argument calls like sendto and recvfrom. Instead the
+// arguments to the underlying system call are the number below
+// and a pointer to an array of uintptr. We hide the pointer in the
+// socketcall assembly to avoid allocation on every system call.
+
+const (
+ // see linux/net.h
+ _SOCKET = 1
+ _BIND = 2
+ _CONNECT = 3
+ _LISTEN = 4
+ _ACCEPT = 5
+ _GETSOCKNAME = 6
+ _GETPEERNAME = 7
+ _SOCKETPAIR = 8
+ _SEND = 9
+ _RECV = 10
+ _SENDTO = 11
+ _RECVFROM = 12
+ _SHUTDOWN = 13
+ _SETSOCKOPT = 14
+ _GETSOCKOPT = 15
+ _SENDMSG = 16
+ _RECVMSG = 17
+ _ACCEPT4 = 18
+ _RECVMMSG = 19
+ _SENDMMSG = 20
+)
+
+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
+func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {
+ _, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ fd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var base uintptr
+ if len(p) > 0 {
+ base = uintptr(unsafe.Pointer(&p[0]))
+ }
+ n, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var base uintptr
+ if len(p) > 0 {
+ base = uintptr(unsafe.Pointer(&p[0]))
+ }
+ _, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ n, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ n, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func Listen(s int, n int) (err error) {
+ _, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func Shutdown(s, how int) (err error) {
+ _, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+ pathp, err := BytePtrFromString(path)
+ if err != nil {
+ return err
+ }
+ _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) }
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go
new file mode 100644
index 000000000..ae70c2afc
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_amd64.go
@@ -0,0 +1,146 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64,linux
+
+package unix
+
+import "syscall"
+
+//sys Dup2(oldfd int, newfd int) (err error)
+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (euid int)
+//sysnb Getgid() (gid int)
+//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Getuid() (uid int)
+//sysnb InotifyInit() (fd int, err error)
+//sys Ioperm(from int, num int, on int) (err error)
+//sys Iopl(level int) (err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Listen(s int, n int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
+//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys Setfsgid(gid int) (err error)
+//sys Setfsuid(uid int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sys Shutdown(fd int, how int) (err error)
+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+//sys Stat(path string, stat *Stat_t) (err error)
+//sys Statfs(path string, buf *Statfs_t) (err error)
+//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys Truncate(path string, length int64) (err error)
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb setgroups(n int, list *_Gid_t) (err error)
+//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
+
+//go:noescape
+func gettimeofday(tv *Timeval) (err syscall.Errno)
+
+func Gettimeofday(tv *Timeval) (err error) {
+ errno := gettimeofday(tv)
+ if errno != 0 {
+ return errno
+ }
+ return nil
+}
+
+func Getpagesize() int { return 4096 }
+
+func Time(t *Time_t) (tt Time_t, err error) {
+ var tv Timeval
+ errno := gettimeofday(&tv)
+ if errno != 0 {
+ return 0, errno
+ }
+ if t != nil {
+ *t = Time_t(tv.Sec)
+ }
+ return Time_t(tv.Sec), nil
+}
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Sec = nsec / 1e9
+ tv.Usec = nsec % 1e9 / 1e3
+ return
+}
+
+//sysnb pipe(p *[2]_C_int) (err error)
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe(&pp)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Rip }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint64(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go
new file mode 100644
index 000000000..abc41c3ea
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm.go
@@ -0,0 +1,233 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int32(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Sec = int32(nsec / 1e9)
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ return
+}
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, 0)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+// Underlying system call writes to newoffset via pointer.
+// Implemented in assembly to avoid allocation.
+func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ newoffset, errno := seek(fd, offset, whence)
+ if errno != 0 {
+ return 0, errno
+ }
+ return newoffset, nil
+}
+
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32
+//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32
+//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb socketpair(domain int, typ int, flags int, fd *[2]int32) (err error)
+//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+
+// 64-bit file system and 32-bit uid calls
+// (16-bit uid calls are not always supported in newer kernels)
+//sys Dup2(oldfd int, newfd int) (err error)
+//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
+//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
+//sysnb Getegid() (egid int) = SYS_GETEGID32
+//sysnb Geteuid() (euid int) = SYS_GETEUID32
+//sysnb Getgid() (gid int) = SYS_GETGID32
+//sysnb Getuid() (uid int) = SYS_GETUID32
+//sysnb InotifyInit() (fd int, err error)
+//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
+//sys Listen(s int, n int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
+//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32
+//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32
+//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32
+//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
+//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32
+//sys Shutdown(fd int, how int) (err error)
+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
+//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
+
+// Vsyscalls on amd64.
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Time(t *Time_t) (tt Time_t, err error)
+
+//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
+//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+ _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+ pathp, err := BytePtrFromString(path)
+ if err != nil {
+ return err
+ }
+ _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+ if e != 0 {
+ err = e
+ }
+ return
+}
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ page := uintptr(offset / 4096)
+ if offset != int64(page)*4096 {
+ return 0, EINVAL
+ }
+ return mmap2(addr, length, prot, flags, fd, page)
+}
+
+type rlimit32 struct {
+ Cur uint32
+ Max uint32
+}
+
+//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT
+
+const rlimInf32 = ^uint32(0)
+const rlimInf64 = ^uint64(0)
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ err = prlimit(0, resource, nil, rlim)
+ if err != ENOSYS {
+ return err
+ }
+
+ rl := rlimit32{}
+ err = getrlimit(resource, &rl)
+ if err != nil {
+ return
+ }
+
+ if rl.Cur == rlimInf32 {
+ rlim.Cur = rlimInf64
+ } else {
+ rlim.Cur = uint64(rl.Cur)
+ }
+
+ if rl.Max == rlimInf32 {
+ rlim.Max = rlimInf64
+ } else {
+ rlim.Max = uint64(rl.Max)
+ }
+ return
+}
+
+//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ err = prlimit(0, resource, rlim, nil)
+ if err != ENOSYS {
+ return err
+ }
+
+ rl := rlimit32{}
+ if rlim.Cur == rlimInf64 {
+ rl.Cur = rlimInf32
+ } else if rlim.Cur < uint64(rlimInf32) {
+ rl.Cur = uint32(rlim.Cur)
+ } else {
+ return EINVAL
+ }
+ if rlim.Max == rlimInf64 {
+ rl.Max = rlimInf32
+ } else if rlim.Max < uint64(rlimInf32) {
+ rl.Max = uint32(rlim.Max)
+ } else {
+ return EINVAL
+ }
+
+ return setrlimit(resource, &rl)
+}
+
+func (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) }
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go
new file mode 100644
index 000000000..f3d72dfd3
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_arm64.go
@@ -0,0 +1,150 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm64,linux
+
+package unix
+
+const _SYS_dup = SYS_DUP3
+
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
+//sys Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (euid int)
+//sysnb Getgid() (gid int)
+//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Getuid() (uid int)
+//sys Listen(s int, n int) (err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
+//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys Setfsgid(gid int) (err error)
+//sys Setfsuid(uid int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sys Shutdown(fd int, how int) (err error)
+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+
+func Stat(path string, stat *Stat_t) (err error) {
+ return Fstatat(AT_FDCWD, path, stat, 0)
+}
+
+func Lchown(path string, uid int, gid int) (err error) {
+ return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)
+}
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)
+}
+
+//sys Statfs(path string, buf *Statfs_t) (err error)
+//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys Truncate(path string, length int64) (err error)
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb setgroups(n int, list *_Gid_t) (err error)
+//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
+
+func Getpagesize() int { return 65536 }
+
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Time(t *Time_t) (tt Time_t, err error)
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Sec = nsec / 1e9
+ tv.Usec = nsec % 1e9 / 1e3
+ return
+}
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, 0)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe2(&pp, flags)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Pc }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint64(length)
+}
+
+func InotifyInit() (fd int, err error) {
+ return InotifyInit1(0)
+}
+
+// TODO(dfc): constants that should be in zsysnum_linux_arm64.go, remove
+// these when the deprecated syscalls that the syscall package relies on
+// are removed.
+const (
+ SYS_GETPGRP = 1060
+ SYS_UTIMES = 1037
+ SYS_FUTIMESAT = 1066
+ SYS_PAUSE = 1061
+ SYS_USTAT = 1070
+ SYS_UTIME = 1063
+ SYS_LCHOWN = 1032
+ SYS_TIME = 1062
+ SYS_EPOLL_CREATE = 1042
+ SYS_EPOLL_WAIT = 1069
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go
new file mode 100644
index 000000000..67eed6334
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_linux_ppc64x.go
@@ -0,0 +1,96 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux
+// +build ppc64 ppc64le
+
+package unix
+
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (euid int)
+//sysnb Getgid() (gid int)
+//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT
+//sysnb Getuid() (uid int)
+//sys Ioperm(from int, num int, on int) (err error)
+//sys Iopl(level int) (err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Listen(s int, n int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
+//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys Setfsgid(gid int) (err error)
+//sys Setfsuid(uid int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sys Shutdown(fd int, how int) (err error)
+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+//sys Stat(path string, stat *Stat_t) (err error)
+//sys Statfs(path string, buf *Statfs_t) (err error)
+//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) = SYS_SYNC_FILE_RANGE2
+//sys Truncate(path string, length int64) (err error)
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb setgroups(n int, list *_Gid_t) (err error)
+//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
+
+func Getpagesize() int { return 65536 }
+
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Time(t *Time_t) (tt Time_t, err error)
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Sec = nsec / 1e9
+ tv.Usec = nsec % 1e9 / 1e3
+ return
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Nip }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc }
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint64(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd.go
new file mode 100644
index 000000000..c4e945cd6
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd.go
@@ -0,0 +1,492 @@
+// Copyright 2009,2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// NetBSD system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and wrap
+// it in our own nicer implementation, either here or in
+// syscall_bsd.go or syscall_unix.go.
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+type SockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+ raw RawSockaddrDatalink
+}
+
+func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
+ var olen uintptr
+
+ // Get a list of all sysctl nodes below the given MIB by performing
+ // a sysctl for the given MIB with CTL_QUERY appended.
+ mib = append(mib, CTL_QUERY)
+ qnode := Sysctlnode{Flags: SYSCTL_VERS_1}
+ qp := (*byte)(unsafe.Pointer(&qnode))
+ sz := unsafe.Sizeof(qnode)
+ if err = sysctl(mib, nil, &olen, qp, sz); err != nil {
+ return nil, err
+ }
+
+ // Now that we know the size, get the actual nodes.
+ nodes = make([]Sysctlnode, olen/sz)
+ np := (*byte)(unsafe.Pointer(&nodes[0]))
+ if err = sysctl(mib, np, &olen, qp, sz); err != nil {
+ return nil, err
+ }
+
+ return nodes, nil
+}
+
+func nametomib(name string) (mib []_C_int, err error) {
+
+ // Split name into components.
+ var parts []string
+ last := 0
+ for i := 0; i < len(name); i++ {
+ if name[i] == '.' {
+ parts = append(parts, name[last:i])
+ last = i + 1
+ }
+ }
+ parts = append(parts, name[last:])
+
+ // Discover the nodes and construct the MIB OID.
+ for partno, part := range parts {
+ nodes, err := sysctlNodes(mib)
+ if err != nil {
+ return nil, err
+ }
+ for _, node := range nodes {
+ n := make([]byte, 0)
+ for i := range node.Name {
+ if node.Name[i] != 0 {
+ n = append(n, byte(node.Name[i]))
+ }
+ }
+ if string(n) == part {
+ mib = append(mib, _C_int(node.Num))
+ break
+ }
+ }
+ if len(mib) != partno+1 {
+ return nil, EINVAL
+ }
+ }
+
+ return mib, nil
+}
+
+// ParseDirent parses up to max directory entries in buf,
+// appending the names to names. It returns the number
+// bytes consumed from buf, the number of entries added
+// to names, and the new names slice.
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+ origlen := len(buf)
+ for max != 0 && len(buf) > 0 {
+ dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+ if dirent.Reclen == 0 {
+ buf = nil
+ break
+ }
+ buf = buf[dirent.Reclen:]
+ if dirent.Fileno == 0 { // File absent in directory.
+ continue
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+ var name = string(bytes[0:dirent.Namlen])
+ if name == "." || name == ".." { // Useless names
+ continue
+ }
+ max--
+ count++
+ names = append(names, name)
+ }
+ return origlen - len(buf), count, names
+}
+
+//sysnb pipe() (fd1 int, fd2 int, err error)
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ p[0], p[1], err = pipe()
+ return
+}
+
+//sys getdents(fd int, buf []byte) (n int, err error)
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ return getdents(fd, buf)
+}
+
+// TODO
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ return -1, ENOSYS
+}
+
+/*
+ * Exposed directly
+ */
+//sys Access(path string, mode uint32) (err error)
+//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys Chdir(path string) (err error)
+//sys Chflags(path string, flags int) (err error)
+//sys Chmod(path string, mode uint32) (err error)
+//sys Chown(path string, uid int, gid int) (err error)
+//sys Chroot(path string) (err error)
+//sys Close(fd int) (err error)
+//sys Dup(fd int) (nfd int, err error)
+//sys Dup2(from int, to int) (err error)
+//sys Exit(code int)
+//sys Fchdir(fd int) (err error)
+//sys Fchflags(fd int, flags int) (err error)
+//sys Fchmod(fd int, mode uint32) (err error)
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Flock(fd int, how int) (err error)
+//sys Fpathconf(fd int, name int) (val int, err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Fsync(fd int) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (uid int)
+//sysnb Getgid() (gid int)
+//sysnb Getpgid(pid int) (pgid int, err error)
+//sysnb Getpgrp() (pgrp int)
+//sysnb Getpid() (pid int)
+//sysnb Getppid() (ppid int)
+//sys Getpriority(which int, who int) (prio int, err error)
+//sysnb Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb Getrusage(who int, rusage *Rusage) (err error)
+//sysnb Getsid(pid int) (sid int, err error)
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Getuid() (uid int)
+//sys Issetugid() (tainted bool)
+//sys Kill(pid int, signum syscall.Signal) (err error)
+//sys Kqueue() (fd int, err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Link(path string, link string) (err error)
+//sys Listen(s int, backlog int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Mkdir(path string, mode uint32) (err error)
+//sys Mkfifo(path string, mode uint32) (err error)
+//sys Mknod(path string, mode uint32, dev int) (err error)
+//sys Mlock(b []byte) (err error)
+//sys Mlockall(flags int) (err error)
+//sys Mprotect(b []byte, prot int) (err error)
+//sys Munlock(b []byte) (err error)
+//sys Munlockall() (err error)
+//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys Open(path string, mode int, perm uint32) (fd int, err error)
+//sys Pathconf(path string, name int) (val int, err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys read(fd int, p []byte) (n int, err error)
+//sys Readlink(path string, buf []byte) (n int, err error)
+//sys Rename(from string, to string) (err error)
+//sys Revoke(path string) (err error)
+//sys Rmdir(path string) (err error)
+//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sysnb Setegid(egid int) (err error)
+//sysnb Seteuid(euid int) (err error)
+//sysnb Setgid(gid int) (err error)
+//sysnb Setpgid(pid int, pgid int) (err error)
+//sys Setpriority(which int, who int, prio int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sysnb Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb Setsid() (pid int, err error)
+//sysnb Settimeofday(tp *Timeval) (err error)
+//sysnb Setuid(uid int) (err error)
+//sys Stat(path string, stat *Stat_t) (err error)
+//sys Symlink(path string, link string) (err error)
+//sys Sync() (err error)
+//sys Truncate(path string, length int64) (err error)
+//sys Umask(newmask int) (oldmask int)
+//sys Unlink(path string) (err error)
+//sys Unmount(path string, flags int) (err error)
+//sys write(fd int, p []byte) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys munmap(addr uintptr, length uintptr) (err error)
+//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+
+/*
+ * Unimplemented
+ */
+// ____semctl13
+// __clone
+// __fhopen40
+// __fhstat40
+// __fhstatvfs140
+// __fstat30
+// __getcwd
+// __getfh30
+// __getlogin
+// __lstat30
+// __mount50
+// __msgctl13
+// __msync13
+// __ntp_gettime30
+// __posix_chown
+// __posix_fadvise50
+// __posix_fchown
+// __posix_lchown
+// __posix_rename
+// __setlogin
+// __shmctl13
+// __sigaction_sigtramp
+// __sigaltstack14
+// __sigpending14
+// __sigprocmask14
+// __sigsuspend14
+// __sigtimedwait
+// __stat30
+// __syscall
+// __vfork14
+// _ksem_close
+// _ksem_destroy
+// _ksem_getvalue
+// _ksem_init
+// _ksem_open
+// _ksem_post
+// _ksem_trywait
+// _ksem_unlink
+// _ksem_wait
+// _lwp_continue
+// _lwp_create
+// _lwp_ctl
+// _lwp_detach
+// _lwp_exit
+// _lwp_getname
+// _lwp_getprivate
+// _lwp_kill
+// _lwp_park
+// _lwp_self
+// _lwp_setname
+// _lwp_setprivate
+// _lwp_suspend
+// _lwp_unpark
+// _lwp_unpark_all
+// _lwp_wait
+// _lwp_wakeup
+// _pset_bind
+// _sched_getaffinity
+// _sched_getparam
+// _sched_setaffinity
+// _sched_setparam
+// acct
+// aio_cancel
+// aio_error
+// aio_fsync
+// aio_read
+// aio_return
+// aio_suspend
+// aio_write
+// break
+// clock_getres
+// clock_gettime
+// clock_settime
+// compat_09_ogetdomainname
+// compat_09_osetdomainname
+// compat_09_ouname
+// compat_10_omsgsys
+// compat_10_osemsys
+// compat_10_oshmsys
+// compat_12_fstat12
+// compat_12_getdirentries
+// compat_12_lstat12
+// compat_12_msync
+// compat_12_oreboot
+// compat_12_oswapon
+// compat_12_stat12
+// compat_13_sigaction13
+// compat_13_sigaltstack13
+// compat_13_sigpending13
+// compat_13_sigprocmask13
+// compat_13_sigreturn13
+// compat_13_sigsuspend13
+// compat_14___semctl
+// compat_14_msgctl
+// compat_14_shmctl
+// compat_16___sigaction14
+// compat_16___sigreturn14
+// compat_20_fhstatfs
+// compat_20_fstatfs
+// compat_20_getfsstat
+// compat_20_statfs
+// compat_30___fhstat30
+// compat_30___fstat13
+// compat_30___lstat13
+// compat_30___stat13
+// compat_30_fhopen
+// compat_30_fhstat
+// compat_30_fhstatvfs1
+// compat_30_getdents
+// compat_30_getfh
+// compat_30_ntp_gettime
+// compat_30_socket
+// compat_40_mount
+// compat_43_fstat43
+// compat_43_lstat43
+// compat_43_oaccept
+// compat_43_ocreat
+// compat_43_oftruncate
+// compat_43_ogetdirentries
+// compat_43_ogetdtablesize
+// compat_43_ogethostid
+// compat_43_ogethostname
+// compat_43_ogetkerninfo
+// compat_43_ogetpagesize
+// compat_43_ogetpeername
+// compat_43_ogetrlimit
+// compat_43_ogetsockname
+// compat_43_okillpg
+// compat_43_olseek
+// compat_43_ommap
+// compat_43_oquota
+// compat_43_orecv
+// compat_43_orecvfrom
+// compat_43_orecvmsg
+// compat_43_osend
+// compat_43_osendmsg
+// compat_43_osethostid
+// compat_43_osethostname
+// compat_43_osetrlimit
+// compat_43_osigblock
+// compat_43_osigsetmask
+// compat_43_osigstack
+// compat_43_osigvec
+// compat_43_otruncate
+// compat_43_owait
+// compat_43_stat43
+// execve
+// extattr_delete_fd
+// extattr_delete_file
+// extattr_delete_link
+// extattr_get_fd
+// extattr_get_file
+// extattr_get_link
+// extattr_list_fd
+// extattr_list_file
+// extattr_list_link
+// extattr_set_fd
+// extattr_set_file
+// extattr_set_link
+// extattrctl
+// fchroot
+// fdatasync
+// fgetxattr
+// fktrace
+// flistxattr
+// fork
+// fremovexattr
+// fsetxattr
+// fstatvfs1
+// fsync_range
+// getcontext
+// getitimer
+// getvfsstat
+// getxattr
+// ioctl
+// ktrace
+// lchflags
+// lchmod
+// lfs_bmapv
+// lfs_markv
+// lfs_segclean
+// lfs_segwait
+// lgetxattr
+// lio_listio
+// listxattr
+// llistxattr
+// lremovexattr
+// lseek
+// lsetxattr
+// lutimes
+// madvise
+// mincore
+// minherit
+// modctl
+// mq_close
+// mq_getattr
+// mq_notify
+// mq_open
+// mq_receive
+// mq_send
+// mq_setattr
+// mq_timedreceive
+// mq_timedsend
+// mq_unlink
+// mremap
+// msgget
+// msgrcv
+// msgsnd
+// nfssvc
+// ntp_adjtime
+// pmc_control
+// pmc_get_info
+// poll
+// pollts
+// preadv
+// profil
+// pselect
+// pset_assign
+// pset_create
+// pset_destroy
+// ptrace
+// pwritev
+// quotactl
+// rasctl
+// readv
+// reboot
+// removexattr
+// sa_enable
+// sa_preempt
+// sa_register
+// sa_setconcurrency
+// sa_stacks
+// sa_yield
+// sbrk
+// sched_yield
+// semconfig
+// semget
+// semop
+// setcontext
+// setitimer
+// setxattr
+// shmat
+// shmdt
+// shmget
+// sstk
+// statvfs1
+// swapctl
+// sysarch
+// syscall
+// timer_create
+// timer_delete
+// timer_getoverrun
+// timer_gettime
+// timer_settime
+// undelete
+// utrace
+// uuidgen
+// vadvise
+// vfork
+// writev
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go
new file mode 100644
index 000000000..1b0e1af12
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_386.go
@@ -0,0 +1,44 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build 386,netbsd
+
+package unix
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int64(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd)
+ k.Filter = uint32(mode)
+ k.Flags = uint32(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go
new file mode 100644
index 000000000..1b6dcbe35
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_amd64.go
@@ -0,0 +1,44 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64,netbsd
+
+package unix
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int64(nsec / 1e9)
+ ts.Nsec = int64(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint64(fd)
+ k.Filter = uint32(mode)
+ k.Flags = uint32(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go
new file mode 100644
index 000000000..87d1d6fed
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_netbsd_arm.go
@@ -0,0 +1,44 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build arm,netbsd
+
+package unix
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int64(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd)
+ k.Filter = uint32(mode)
+ k.Flags = uint32(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_no_getwd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_no_getwd.go
new file mode 100644
index 000000000..530792ea9
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_no_getwd.go
@@ -0,0 +1,11 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build dragonfly freebsd netbsd openbsd
+
+package unix
+
+const ImplementsGetwd = false
+
+func Getwd() (string, error) { return "", ENOTSUP }
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go
new file mode 100644
index 000000000..246131d2a
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd.go
@@ -0,0 +1,303 @@
+// Copyright 2009,2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// OpenBSD system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and wrap
+// it in our own nicer implementation, either here or in
+// syscall_bsd.go or syscall_unix.go.
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+type SockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [24]int8
+ raw RawSockaddrDatalink
+}
+
+func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+func nametomib(name string) (mib []_C_int, err error) {
+
+ // Perform lookup via a binary search
+ left := 0
+ right := len(sysctlMib) - 1
+ for {
+ idx := left + (right-left)/2
+ switch {
+ case name == sysctlMib[idx].ctlname:
+ return sysctlMib[idx].ctloid, nil
+ case name > sysctlMib[idx].ctlname:
+ left = idx + 1
+ default:
+ right = idx - 1
+ }
+ if left > right {
+ break
+ }
+ }
+ return nil, EINVAL
+}
+
+// ParseDirent parses up to max directory entries in buf,
+// appending the names to names. It returns the number
+// bytes consumed from buf, the number of entries added
+// to names, and the new names slice.
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+ origlen := len(buf)
+ for max != 0 && len(buf) > 0 {
+ dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+ if dirent.Reclen == 0 {
+ buf = nil
+ break
+ }
+ buf = buf[dirent.Reclen:]
+ if dirent.Fileno == 0 { // File absent in directory.
+ continue
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+ var name = string(bytes[0:dirent.Namlen])
+ if name == "." || name == ".." { // Useless names
+ continue
+ }
+ max--
+ count++
+ names = append(names, name)
+ }
+ return origlen - len(buf), count, names
+}
+
+//sysnb pipe(p *[2]_C_int) (err error)
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ var pp [2]_C_int
+ err = pipe(&pp)
+ p[0] = int(pp[0])
+ p[1] = int(pp[1])
+ return
+}
+
+//sys getdents(fd int, buf []byte) (n int, err error)
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ return getdents(fd, buf)
+}
+
+// TODO
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ return -1, ENOSYS
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ var bufsize uintptr
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
+ }
+ r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+/*
+ * Exposed directly
+ */
+//sys Access(path string, mode uint32) (err error)
+//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys Chdir(path string) (err error)
+//sys Chflags(path string, flags int) (err error)
+//sys Chmod(path string, mode uint32) (err error)
+//sys Chown(path string, uid int, gid int) (err error)
+//sys Chroot(path string) (err error)
+//sys Close(fd int) (err error)
+//sys Dup(fd int) (nfd int, err error)
+//sys Dup2(from int, to int) (err error)
+//sys Exit(code int)
+//sys Fchdir(fd int) (err error)
+//sys Fchflags(fd int, flags int) (err error)
+//sys Fchmod(fd int, mode uint32) (err error)
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Flock(fd int, how int) (err error)
+//sys Fpathconf(fd int, name int) (val int, err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Fstatfs(fd int, stat *Statfs_t) (err error)
+//sys Fsync(fd int) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sysnb Getegid() (egid int)
+//sysnb Geteuid() (uid int)
+//sysnb Getgid() (gid int)
+//sysnb Getpgid(pid int) (pgid int, err error)
+//sysnb Getpgrp() (pgrp int)
+//sysnb Getpid() (pid int)
+//sysnb Getppid() (ppid int)
+//sys Getpriority(which int, who int) (prio int, err error)
+//sysnb Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb Getrusage(who int, rusage *Rusage) (err error)
+//sysnb Getsid(pid int) (sid int, err error)
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Getuid() (uid int)
+//sys Issetugid() (tainted bool)
+//sys Kill(pid int, signum syscall.Signal) (err error)
+//sys Kqueue() (fd int, err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Link(path string, link string) (err error)
+//sys Listen(s int, backlog int) (err error)
+//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Mkdir(path string, mode uint32) (err error)
+//sys Mkfifo(path string, mode uint32) (err error)
+//sys Mknod(path string, mode uint32, dev int) (err error)
+//sys Mlock(b []byte) (err error)
+//sys Mlockall(flags int) (err error)
+//sys Mprotect(b []byte, prot int) (err error)
+//sys Munlock(b []byte) (err error)
+//sys Munlockall() (err error)
+//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys Open(path string, mode int, perm uint32) (fd int, err error)
+//sys Pathconf(path string, name int) (val int, err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys read(fd int, p []byte) (n int, err error)
+//sys Readlink(path string, buf []byte) (n int, err error)
+//sys Rename(from string, to string) (err error)
+//sys Revoke(path string) (err error)
+//sys Rmdir(path string) (err error)
+//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sysnb Setegid(egid int) (err error)
+//sysnb Seteuid(euid int) (err error)
+//sysnb Setgid(gid int) (err error)
+//sys Setlogin(name string) (err error)
+//sysnb Setpgid(pid int, pgid int) (err error)
+//sys Setpriority(which int, who int, prio int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sysnb Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb Setsid() (pid int, err error)
+//sysnb Settimeofday(tp *Timeval) (err error)
+//sysnb Setuid(uid int) (err error)
+//sys Stat(path string, stat *Stat_t) (err error)
+//sys Statfs(path string, stat *Statfs_t) (err error)
+//sys Symlink(path string, link string) (err error)
+//sys Sync() (err error)
+//sys Truncate(path string, length int64) (err error)
+//sys Umask(newmask int) (oldmask int)
+//sys Unlink(path string) (err error)
+//sys Unmount(path string, flags int) (err error)
+//sys write(fd int, p []byte) (n int, err error)
+//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys munmap(addr uintptr, length uintptr) (err error)
+//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+
+/*
+ * Unimplemented
+ */
+// __getcwd
+// __semctl
+// __syscall
+// __sysctl
+// adjfreq
+// break
+// clock_getres
+// clock_gettime
+// clock_settime
+// closefrom
+// execve
+// faccessat
+// fchmodat
+// fchownat
+// fcntl
+// fhopen
+// fhstat
+// fhstatfs
+// fork
+// fstatat
+// futimens
+// getfh
+// getgid
+// getitimer
+// getlogin
+// getresgid
+// getresuid
+// getrtable
+// getthrid
+// ioctl
+// ktrace
+// lfs_bmapv
+// lfs_markv
+// lfs_segclean
+// lfs_segwait
+// linkat
+// mincore
+// minherit
+// mkdirat
+// mkfifoat
+// mknodat
+// mount
+// mquery
+// msgctl
+// msgget
+// msgrcv
+// msgsnd
+// nfssvc
+// nnpfspioctl
+// openat
+// poll
+// preadv
+// profil
+// pwritev
+// quotactl
+// readlinkat
+// readv
+// reboot
+// renameat
+// rfork
+// sched_yield
+// semget
+// semop
+// setgroups
+// setitimer
+// setrtable
+// setsockopt
+// shmat
+// shmctl
+// shmdt
+// shmget
+// sigaction
+// sigaltstack
+// sigpending
+// sigprocmask
+// sigreturn
+// sigsuspend
+// symlinkat
+// sysarch
+// syscall
+// threxit
+// thrsigdivert
+// thrsleep
+// thrwakeup
+// unlinkat
+// utimensat
+// vfork
+// writev
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go
new file mode 100644
index 000000000..9529b20e8
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_386.go
@@ -0,0 +1,44 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build 386,openbsd
+
+package unix
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = int64(nsec / 1e9)
+ ts.Nsec = int32(nsec % 1e9)
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = int32(nsec % 1e9 / 1e3)
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint32(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go
new file mode 100644
index 000000000..fc6402946
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_openbsd_amd64.go
@@ -0,0 +1,44 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64,openbsd
+
+package unix
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = nsec % 1e9 / 1e3
+ tv.Sec = nsec / 1e9
+ return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+ k.Ident = uint64(fd)
+ k.Filter = int16(mode)
+ k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+ msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris.go
new file mode 100644
index 000000000..eb489b159
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris.go
@@ -0,0 +1,713 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Solaris system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and wrap
+// it in our own nicer implementation, either here or in
+// syscall_solaris.go or syscall_unix.go.
+
+package unix
+
+import (
+ "sync/atomic"
+ "syscall"
+ "unsafe"
+)
+
+// Implemented in runtime/syscall_solaris.go.
+type syscallFunc uintptr
+
+func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
+func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+type SockaddrDatalink struct {
+ Family uint16
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [244]int8
+ raw RawSockaddrDatalink
+}
+
+func clen(n []byte) int {
+ for i := 0; i < len(n); i++ {
+ if n[i] == 0 {
+ return i
+ }
+ }
+ return len(n)
+}
+
+// ParseDirent parses up to max directory entries in buf,
+// appending the names to names. It returns the number
+// bytes consumed from buf, the number of entries added
+// to names, and the new names slice.
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+ origlen := len(buf)
+ for max != 0 && len(buf) > 0 {
+ dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+ if dirent.Reclen == 0 {
+ buf = nil
+ break
+ }
+ buf = buf[dirent.Reclen:]
+ if dirent.Ino == 0 { // File absent in directory.
+ continue
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+ var name = string(bytes[0:clen(bytes[:])])
+ if name == "." || name == ".." { // Useless names
+ continue
+ }
+ max--
+ count++
+ names = append(names, name)
+ }
+ return origlen - len(buf), count, names
+}
+
+func pipe() (r uintptr, w uintptr, err uintptr)
+
+func Pipe(p []int) (err error) {
+ if len(p) != 2 {
+ return EINVAL
+ }
+ r0, w0, e1 := pipe()
+ if e1 != 0 {
+ err = syscall.Errno(e1)
+ }
+ p[0], p[1] = int(r0), int(w0)
+ return
+}
+
+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Family = AF_INET
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+ p[0] = byte(sa.Port >> 8)
+ p[1] = byte(sa.Port)
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil
+}
+
+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ if sa.Port < 0 || sa.Port > 0xFFFF {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Family = AF_INET6
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+ p[0] = byte(sa.Port >> 8)
+ p[1] = byte(sa.Port)
+ sa.raw.Scope_id = sa.ZoneId
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.raw.Addr[i] = sa.Addr[i]
+ }
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil
+}
+
+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
+ name := sa.Name
+ n := len(name)
+ if n >= len(sa.raw.Path) {
+ return nil, 0, EINVAL
+ }
+ sa.raw.Family = AF_UNIX
+ for i := 0; i < n; i++ {
+ sa.raw.Path[i] = int8(name[i])
+ }
+ // length is family (uint16), name, NUL.
+ sl := _Socklen(2)
+ if n > 0 {
+ sl += _Socklen(n) + 1
+ }
+ if sa.raw.Path[0] == '@' {
+ sa.raw.Path[0] = 0
+ // Don't count trailing NUL for abstract address.
+ sl--
+ }
+
+ return unsafe.Pointer(&sa.raw), sl, nil
+}
+
+//sys getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname
+
+func Getsockname(fd int) (sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ if err = getsockname(fd, &rsa, &len); err != nil {
+ return
+ }
+ return anyToSockaddr(&rsa)
+}
+
+const ImplementsGetwd = true
+
+//sys Getcwd(buf []byte) (n int, err error)
+
+func Getwd() (wd string, err error) {
+ var buf [PathMax]byte
+ // Getcwd will return an error if it failed for any reason.
+ _, err = Getcwd(buf[0:])
+ if err != nil {
+ return "", err
+ }
+ n := clen(buf[:])
+ if n < 1 {
+ return "", EINVAL
+ }
+ return string(buf[:n]), nil
+}
+
+/*
+ * Wrapped
+ */
+
+//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error)
+//sysnb setgroups(ngid int, gid *_Gid_t) (err error)
+
+func Getgroups() (gids []int, err error) {
+ n, err := getgroups(0, nil)
+ // Check for error and sanity check group count. Newer versions of
+ // Solaris allow up to 1024 (NGROUPS_MAX).
+ if n < 0 || n > 1024 {
+ if err != nil {
+ return nil, err
+ }
+ return nil, EINVAL
+ } else if n == 0 {
+ return nil, nil
+ }
+
+ a := make([]_Gid_t, n)
+ n, err = getgroups(n, &a[0])
+ if n == -1 {
+ return nil, err
+ }
+ gids = make([]int, n)
+ for i, v := range a[0:n] {
+ gids[i] = int(v)
+ }
+ return
+}
+
+func Setgroups(gids []int) (err error) {
+ if len(gids) == 0 {
+ return setgroups(0, nil)
+ }
+
+ a := make([]_Gid_t, len(gids))
+ for i, v := range gids {
+ a[i] = _Gid_t(v)
+ }
+ return setgroups(len(a), &a[0])
+}
+
+func ReadDirent(fd int, buf []byte) (n int, err error) {
+ // Final argument is (basep *uintptr) and the syscall doesn't take nil.
+ // TODO(rsc): Can we use a single global basep for all calls?
+ return Getdents(fd, buf, new(uintptr))
+}
+
+// Wait status is 7 bits at bottom, either 0 (exited),
+// 0x7F (stopped), or a signal number that caused an exit.
+// The 0x80 bit is whether there was a core dump.
+// An extra number (exit code, signal causing a stop)
+// is in the high bits.
+
+type WaitStatus uint32
+
+const (
+ mask = 0x7F
+ core = 0x80
+ shift = 8
+
+ exited = 0
+ stopped = 0x7F
+)
+
+func (w WaitStatus) Exited() bool { return w&mask == exited }
+
+func (w WaitStatus) ExitStatus() int {
+ if w&mask != exited {
+ return -1
+ }
+ return int(w >> shift)
+}
+
+func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }
+
+func (w WaitStatus) Signal() syscall.Signal {
+ sig := syscall.Signal(w & mask)
+ if sig == stopped || sig == 0 {
+ return -1
+ }
+ return sig
+}
+
+func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
+
+func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }
+
+func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }
+
+func (w WaitStatus) StopSignal() syscall.Signal {
+ if !w.Stopped() {
+ return -1
+ }
+ return syscall.Signal(w>>shift) & 0xFF
+}
+
+func (w WaitStatus) TrapCause() int { return -1 }
+
+func wait4(pid uintptr, wstatus *WaitStatus, options uintptr, rusage *Rusage) (wpid uintptr, err uintptr)
+
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
+ r0, e1 := wait4(uintptr(pid), wstatus, uintptr(options), rusage)
+ if e1 != 0 {
+ err = syscall.Errno(e1)
+ }
+ return int(r0), err
+}
+
+func gethostname() (name string, err uintptr)
+
+func Gethostname() (name string, err error) {
+ name, e1 := gethostname()
+ if e1 != 0 {
+ err = syscall.Errno(e1)
+ }
+ return name, err
+}
+
+//sys utimes(path string, times *[2]Timeval) (err error)
+
+func Utimes(path string, tv []Timeval) (err error) {
+ if tv == nil {
+ return utimes(path, nil)
+ }
+ if len(tv) != 2 {
+ return EINVAL
+ }
+ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+//sys utimensat(fd int, path string, times *[2]Timespec, flag int) (err error)
+
+func UtimesNano(path string, ts []Timespec) error {
+ if ts == nil {
+ return utimensat(AT_FDCWD, path, nil, 0)
+ }
+ if len(ts) != 2 {
+ return EINVAL
+ }
+ return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
+}
+
+func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
+ if ts == nil {
+ return utimensat(dirfd, path, nil, flags)
+ }
+ if len(ts) != 2 {
+ return EINVAL
+ }
+ return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
+}
+
+//sys fcntl(fd int, cmd int, arg int) (val int, err error)
+
+// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)
+ if e1 != 0 {
+ return e1
+ }
+ return nil
+}
+
+//sys futimesat(fildes int, path *byte, times *[2]Timeval) (err error)
+
+func Futimesat(dirfd int, path string, tv []Timeval) error {
+ pathp, err := BytePtrFromString(path)
+ if err != nil {
+ return err
+ }
+ if tv == nil {
+ return futimesat(dirfd, pathp, nil)
+ }
+ if len(tv) != 2 {
+ return EINVAL
+ }
+ return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+// Solaris doesn't have an futimes function because it allows NULL to be
+// specified as the path for futimesat. However, Go doesn't like
+// NULL-style string interfaces, so this simple wrapper is provided.
+func Futimes(fd int, tv []Timeval) error {
+ if tv == nil {
+ return futimesat(fd, nil, nil)
+ }
+ if len(tv) != 2 {
+ return EINVAL
+ }
+ return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
+ switch rsa.Addr.Family {
+ case AF_UNIX:
+ pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
+ sa := new(SockaddrUnix)
+ // Assume path ends at NUL.
+ // This is not technically the Solaris semantics for
+ // abstract Unix domain sockets -- they are supposed
+ // to be uninterpreted fixed-size binary blobs -- but
+ // everyone uses this convention.
+ n := 0
+ for n < len(pp.Path) && pp.Path[n] != 0 {
+ n++
+ }
+ bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
+ sa.Name = string(bytes)
+ return sa, nil
+
+ case AF_INET:
+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
+ sa := new(SockaddrInet4)
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ sa.Port = int(p[0])<<8 + int(p[1])
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+
+ case AF_INET6:
+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
+ sa := new(SockaddrInet6)
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+ sa.Port = int(p[0])<<8 + int(p[1])
+ sa.ZoneId = pp.Scope_id
+ for i := 0; i < len(sa.Addr); i++ {
+ sa.Addr[i] = pp.Addr[i]
+ }
+ return sa, nil
+ }
+ return nil, EAFNOSUPPORT
+}
+
+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept
+
+func Accept(fd int) (nfd int, sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ nfd, err = accept(fd, &rsa, &len)
+ if nfd == -1 {
+ return
+ }
+ sa, err = anyToSockaddr(&rsa)
+ if err != nil {
+ Close(nfd)
+ nfd = 0
+ }
+ return
+}
+
+//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.recvmsg
+
+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+ var msg Msghdr
+ var rsa RawSockaddrAny
+ msg.Name = (*byte)(unsafe.Pointer(&rsa))
+ msg.Namelen = uint32(SizeofSockaddrAny)
+ var iov Iovec
+ if len(p) > 0 {
+ iov.Base = (*int8)(unsafe.Pointer(&p[0]))
+ iov.SetLen(len(p))
+ }
+ var dummy int8
+ if len(oob) > 0 {
+ // receive at least one normal byte
+ if len(p) == 0 {
+ iov.Base = &dummy
+ iov.SetLen(1)
+ }
+ msg.Accrights = (*int8)(unsafe.Pointer(&oob[0]))
+ }
+ msg.Iov = &iov
+ msg.Iovlen = 1
+ if n, err = recvmsg(fd, &msg, flags); n == -1 {
+ return
+ }
+ oobn = int(msg.Accrightslen)
+ // source address is only specified if the socket is unconnected
+ if rsa.Addr.Family != AF_UNSPEC {
+ from, err = anyToSockaddr(&rsa)
+ }
+ return
+}
+
+func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
+ _, err = SendmsgN(fd, p, oob, to, flags)
+ return
+}
+
+//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.sendmsg
+
+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
+ var ptr unsafe.Pointer
+ var salen _Socklen
+ if to != nil {
+ ptr, salen, err = to.sockaddr()
+ if err != nil {
+ return 0, err
+ }
+ }
+ var msg Msghdr
+ msg.Name = (*byte)(unsafe.Pointer(ptr))
+ msg.Namelen = uint32(salen)
+ var iov Iovec
+ if len(p) > 0 {
+ iov.Base = (*int8)(unsafe.Pointer(&p[0]))
+ iov.SetLen(len(p))
+ }
+ var dummy int8
+ if len(oob) > 0 {
+ // send at least one normal byte
+ if len(p) == 0 {
+ iov.Base = &dummy
+ iov.SetLen(1)
+ }
+ msg.Accrights = (*int8)(unsafe.Pointer(&oob[0]))
+ }
+ msg.Iov = &iov
+ msg.Iovlen = 1
+ if n, err = sendmsg(fd, &msg, flags); err != nil {
+ return 0, err
+ }
+ if len(oob) > 0 && len(p) == 0 {
+ n = 0
+ }
+ return n, nil
+}
+
+//sys acct(path *byte) (err error)
+
+func Acct(path string) (err error) {
+ if len(path) == 0 {
+ // Assume caller wants to disable accounting.
+ return acct(nil)
+ }
+
+ pathp, err := BytePtrFromString(path)
+ if err != nil {
+ return err
+ }
+ return acct(pathp)
+}
+
+/*
+ * Expose the ioctl function
+ */
+
+//sys ioctl(fd int, req int, arg uintptr) (err error)
+
+func IoctlSetInt(fd int, req int, value int) (err error) {
+ return ioctl(fd, req, uintptr(value))
+}
+
+func IoctlSetWinsize(fd int, req int, value *Winsize) (err error) {
+ return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+}
+
+func IoctlSetTermios(fd int, req int, value *Termios) (err error) {
+ return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+}
+
+func IoctlSetTermio(fd int, req int, value *Termio) (err error) {
+ return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+}
+
+func IoctlGetInt(fd int, req int) (int, error) {
+ var value int
+ err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+ return value, err
+}
+
+func IoctlGetWinsize(fd int, req int) (*Winsize, error) {
+ var value Winsize
+ err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+ return &value, err
+}
+
+func IoctlGetTermios(fd int, req int) (*Termios, error) {
+ var value Termios
+ err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+ return &value, err
+}
+
+func IoctlGetTermio(fd int, req int) (*Termio, error) {
+ var value Termio
+ err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+ return &value, err
+}
+
+/*
+ * Exposed directly
+ */
+//sys Access(path string, mode uint32) (err error)
+//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys Chdir(path string) (err error)
+//sys Chmod(path string, mode uint32) (err error)
+//sys Chown(path string, uid int, gid int) (err error)
+//sys Chroot(path string) (err error)
+//sys Close(fd int) (err error)
+//sys Creat(path string, mode uint32) (fd int, err error)
+//sys Dup(fd int) (nfd int, err error)
+//sys Dup2(oldfd int, newfd int) (err error)
+//sys Exit(code int)
+//sys Fchdir(fd int) (err error)
+//sys Fchmod(fd int, mode uint32) (err error)
+//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
+//sys Fchown(fd int, uid int, gid int) (err error)
+//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
+//sys Fdatasync(fd int) (err error)
+//sys Fpathconf(fd int, name int) (val int, err error)
+//sys Fstat(fd int, stat *Stat_t) (err error)
+//sys Getdents(fd int, buf []byte, basep *uintptr) (n int, err error)
+//sysnb Getgid() (gid int)
+//sysnb Getpid() (pid int)
+//sysnb Getpgid(pid int) (pgid int, err error)
+//sysnb Getpgrp() (pgid int, err error)
+//sys Geteuid() (euid int)
+//sys Getegid() (egid int)
+//sys Getppid() (ppid int)
+//sys Getpriority(which int, who int) (n int, err error)
+//sysnb Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb Getrusage(who int, rusage *Rusage) (err error)
+//sysnb Gettimeofday(tv *Timeval) (err error)
+//sysnb Getuid() (uid int)
+//sys Kill(pid int, signum syscall.Signal) (err error)
+//sys Lchown(path string, uid int, gid int) (err error)
+//sys Link(path string, link string) (err error)
+//sys Listen(s int, backlog int) (err error) = libsocket.listen
+//sys Lstat(path string, stat *Stat_t) (err error)
+//sys Madvise(b []byte, advice int) (err error)
+//sys Mkdir(path string, mode uint32) (err error)
+//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
+//sys Mkfifo(path string, mode uint32) (err error)
+//sys Mkfifoat(dirfd int, path string, mode uint32) (err error)
+//sys Mknod(path string, mode uint32, dev int) (err error)
+//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
+//sys Mlock(b []byte) (err error)
+//sys Mlockall(flags int) (err error)
+//sys Mprotect(b []byte, prot int) (err error)
+//sys Munlock(b []byte) (err error)
+//sys Munlockall() (err error)
+//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys Open(path string, mode int, perm uint32) (fd int, err error)
+//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
+//sys Pathconf(path string, name int) (val int, err error)
+//sys Pause() (err error)
+//sys Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys read(fd int, p []byte) (n int, err error)
+//sys Readlink(path string, buf []byte) (n int, err error)
+//sys Rename(from string, to string) (err error)
+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
+//sys Rmdir(path string) (err error)
+//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek
+//sysnb Setegid(egid int) (err error)
+//sysnb Seteuid(euid int) (err error)
+//sysnb Setgid(gid int) (err error)
+//sys Sethostname(p []byte) (err error)
+//sysnb Setpgid(pid int, pgid int) (err error)
+//sys Setpriority(which int, who int, prio int) (err error)
+//sysnb Setregid(rgid int, egid int) (err error)
+//sysnb Setreuid(ruid int, euid int) (err error)
+//sysnb Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb Setsid() (pid int, err error)
+//sysnb Setuid(uid int) (err error)
+//sys Shutdown(s int, how int) (err error) = libsocket.shutdown
+//sys Stat(path string, stat *Stat_t) (err error)
+//sys Symlink(path string, link string) (err error)
+//sys Sync() (err error)
+//sysnb Times(tms *Tms) (ticks uintptr, err error)
+//sys Truncate(path string, length int64) (err error)
+//sys Fsync(fd int) (err error)
+//sys Ftruncate(fd int, length int64) (err error)
+//sys Umask(mask int) (oldmask int)
+//sysnb Uname(buf *Utsname) (err error)
+//sys Unmount(target string, flags int) (err error) = libc.umount
+//sys Unlink(path string) (err error)
+//sys Unlinkat(dirfd int, path string, flags int) (err error)
+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
+//sys Utime(path string, buf *Utimbuf) (err error)
+//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.bind
+//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.connect
+//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys munmap(addr uintptr, length uintptr) (err error)
+//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.sendto
+//sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.socket
+//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.socketpair
+//sys write(fd int, p []byte) (n int, err error)
+//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.getsockopt
+//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername
+//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt
+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+var mapper = &mmapper{
+ active: make(map[*byte][]byte),
+ mmap: mmap,
+ munmap: munmap,
+}
+
+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
+ return mapper.Mmap(fd, offset, length, prot, flags)
+}
+
+func Munmap(b []byte) (err error) {
+ return mapper.Munmap(b)
+}
+
+//sys sysconf(name int) (n int64, err error)
+
+// pageSize caches the value of Getpagesize, since it can't change
+// once the system is booted.
+var pageSize int64 // accessed atomically
+
+func Getpagesize() int {
+ n := atomic.LoadInt64(&pageSize)
+ if n == 0 {
+ n, _ = sysconf(_SC_PAGESIZE)
+ atomic.StoreInt64(&pageSize, n)
+ }
+ return int(n)
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go
new file mode 100644
index 000000000..2e44630cd
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_solaris_amd64.go
@@ -0,0 +1,37 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64,solaris
+
+package unix
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+ ts.Sec = nsec / 1e9
+ ts.Nsec = nsec % 1e9
+ return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+ nsec += 999 // round up to microsecond
+ tv.Usec = nsec % 1e9 / 1e3
+ tv.Sec = int64(nsec / 1e9)
+ return
+}
+
+func (iov *Iovec) SetLen(length int) {
+ iov.Len = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+ cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ // TODO(aram): implement this, see issue 5847.
+ panic("unimplemented")
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_unix.go b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_unix.go
new file mode 100644
index 000000000..b46b25028
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/syscall_unix.go
@@ -0,0 +1,297 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package unix
+
+import (
+ "runtime"
+ "sync"
+ "syscall"
+ "unsafe"
+)
+
+var (
+ Stdin = 0
+ Stdout = 1
+ Stderr = 2
+)
+
+const (
+ darwin64Bit = runtime.GOOS == "darwin" && sizeofPtr == 8
+ dragonfly64Bit = runtime.GOOS == "dragonfly" && sizeofPtr == 8
+ netbsd32Bit = runtime.GOOS == "netbsd" && sizeofPtr == 4
+)
+
+// Do the interface allocations only once for common
+// Errno values.
+var (
+ errEAGAIN error = syscall.EAGAIN
+ errEINVAL error = syscall.EINVAL
+ errENOENT error = syscall.ENOENT
+)
+
+// errnoErr returns common boxed Errno values, to prevent
+// allocations at runtime.
+func errnoErr(e syscall.Errno) error {
+ switch e {
+ case 0:
+ return nil
+ case EAGAIN:
+ return errEAGAIN
+ case EINVAL:
+ return errEINVAL
+ case ENOENT:
+ return errENOENT
+ }
+ return e
+}
+
+func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
+func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
+func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
+func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+// Mmap manager, for use by operating system-specific implementations.
+
+type mmapper struct {
+ sync.Mutex
+ active map[*byte][]byte // active mappings; key is last byte in mapping
+ mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)
+ munmap func(addr uintptr, length uintptr) error
+}
+
+func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
+ if length <= 0 {
+ return nil, EINVAL
+ }
+
+ // Map the requested memory.
+ addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)
+ if errno != nil {
+ return nil, errno
+ }
+
+ // Slice memory layout
+ var sl = struct {
+ addr uintptr
+ len int
+ cap int
+ }{addr, length, length}
+
+ // Use unsafe to turn sl into a []byte.
+ b := *(*[]byte)(unsafe.Pointer(&sl))
+
+ // Register mapping in m and return it.
+ p := &b[cap(b)-1]
+ m.Lock()
+ defer m.Unlock()
+ m.active[p] = b
+ return b, nil
+}
+
+func (m *mmapper) Munmap(data []byte) (err error) {
+ if len(data) == 0 || len(data) != cap(data) {
+ return EINVAL
+ }
+
+ // Find the base of the mapping.
+ p := &data[cap(data)-1]
+ m.Lock()
+ defer m.Unlock()
+ b := m.active[p]
+ if b == nil || &b[0] != &data[0] {
+ return EINVAL
+ }
+
+ // Unmap the memory and update m.
+ if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {
+ return errno
+ }
+ delete(m.active, p)
+ return nil
+}
+
+func Read(fd int, p []byte) (n int, err error) {
+ n, err = read(fd, p)
+ if raceenabled {
+ if n > 0 {
+ raceWriteRange(unsafe.Pointer(&p[0]), n)
+ }
+ if err == nil {
+ raceAcquire(unsafe.Pointer(&ioSync))
+ }
+ }
+ return
+}
+
+func Write(fd int, p []byte) (n int, err error) {
+ if raceenabled {
+ raceReleaseMerge(unsafe.Pointer(&ioSync))
+ }
+ n, err = write(fd, p)
+ if raceenabled && n > 0 {
+ raceReadRange(unsafe.Pointer(&p[0]), n)
+ }
+ return
+}
+
+// For testing: clients can set this flag to force
+// creation of IPv6 sockets to return EAFNOSUPPORT.
+var SocketDisableIPv6 bool
+
+type Sockaddr interface {
+ sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs
+}
+
+type SockaddrInet4 struct {
+ Port int
+ Addr [4]byte
+ raw RawSockaddrInet4
+}
+
+type SockaddrInet6 struct {
+ Port int
+ ZoneId uint32
+ Addr [16]byte
+ raw RawSockaddrInet6
+}
+
+type SockaddrUnix struct {
+ Name string
+ raw RawSockaddrUnix
+}
+
+func Bind(fd int, sa Sockaddr) (err error) {
+ ptr, n, err := sa.sockaddr()
+ if err != nil {
+ return err
+ }
+ return bind(fd, ptr, n)
+}
+
+func Connect(fd int, sa Sockaddr) (err error) {
+ ptr, n, err := sa.sockaddr()
+ if err != nil {
+ return err
+ }
+ return connect(fd, ptr, n)
+}
+
+func Getpeername(fd int) (sa Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ if err = getpeername(fd, &rsa, &len); err != nil {
+ return
+ }
+ return anyToSockaddr(&rsa)
+}
+
+func GetsockoptInt(fd, level, opt int) (value int, err error) {
+ var n int32
+ vallen := _Socklen(4)
+ err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
+ return int(n), err
+}
+
+func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
+ var rsa RawSockaddrAny
+ var len _Socklen = SizeofSockaddrAny
+ if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {
+ return
+ }
+ if rsa.Addr.Family != AF_UNSPEC {
+ from, err = anyToSockaddr(&rsa)
+ }
+ return
+}
+
+func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {
+ ptr, n, err := to.sockaddr()
+ if err != nil {
+ return err
+ }
+ return sendto(fd, p, flags, ptr, n)
+}
+
+func SetsockoptByte(fd, level, opt int, value byte) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)
+}
+
+func SetsockoptInt(fd, level, opt int, value int) (err error) {
+ var n = int32(value)
+ return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)
+}
+
+func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)
+}
+
+func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)
+}
+
+func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)
+}
+
+func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {
+ return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)
+}
+
+func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)
+}
+
+func SetsockoptString(fd, level, opt int, s string) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(&[]byte(s)[0]), uintptr(len(s)))
+}
+
+func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {
+ return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))
+}
+
+func Socket(domain, typ, proto int) (fd int, err error) {
+ if domain == AF_INET6 && SocketDisableIPv6 {
+ return -1, EAFNOSUPPORT
+ }
+ fd, err = socket(domain, typ, proto)
+ return
+}
+
+func Socketpair(domain, typ, proto int) (fd [2]int, err error) {
+ var fdx [2]int32
+ err = socketpair(domain, typ, proto, &fdx)
+ if err == nil {
+ fd[0] = int(fdx[0])
+ fd[1] = int(fdx[1])
+ }
+ return
+}
+
+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ if raceenabled {
+ raceReleaseMerge(unsafe.Pointer(&ioSync))
+ }
+ return sendfile(outfd, infd, offset, count)
+}
+
+var ioSync int64
+
+func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }
+
+func SetNonblock(fd int, nonblocking bool) (err error) {
+ flag, err := fcntl(fd, F_GETFL, 0)
+ if err != nil {
+ return err
+ }
+ if nonblocking {
+ flag |= O_NONBLOCK
+ } else {
+ flag &= ^O_NONBLOCK
+ }
+ _, err = fcntl(fd, F_SETFL, flag)
+ return err
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/types_darwin.go b/Godeps/_workspace/src/golang.org/x/sys/unix/types_darwin.go
new file mode 100644
index 000000000..115326182
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/types_darwin.go
@@ -0,0 +1,250 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+/*
+Input to cgo -godefs. See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define __DARWIN_UNIX03 0
+#define KERNEL
+#define _DARWIN_USE_64_BIT_INODE
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <unistd.h>
+#include <mach/mach.h>
+#include <mach/message.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/uio.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_var.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+ sizeofPtr = sizeof(void*),
+};
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+ struct sockaddr_un s4;
+ struct sockaddr_dl s5;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+ sizeofPtr = C.sizeofPtr
+ sizeofShort = C.sizeof_short
+ sizeofInt = C.sizeof_int
+ sizeofLong = C.sizeof_long
+ sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+ _C_short C.short
+ _C_int C.int
+ _C_long C.long
+ _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+type Timeval32 C.struct_timeval32
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+type Stat_t C.struct_stat64
+
+type Statfs_t C.struct_statfs64
+
+type Flock_t C.struct_flock
+
+type Fstore_t C.struct_fstore
+
+type Radvisory_t C.struct_radvisory
+
+type Fbootstraptransfer_t C.struct_fbootstraptransfer
+
+type Log2phys_t C.struct_log2phys
+
+type Fsid C.struct_fsid
+
+type Dirent C.struct_dirent
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet4Pktinfo C.struct_in_pktinfo
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+ SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
+ SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+ SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
+ SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
+ SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+ SizeofLinger = C.sizeof_struct_linger
+ SizeofIPMreq = C.sizeof_struct_ip_mreq
+ SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+ SizeofMsghdr = C.sizeof_struct_msghdr
+ SizeofCmsghdr = C.sizeof_struct_cmsghdr
+ SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo
+ SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
+ SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
+ SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+ PTRACE_TRACEME = C.PT_TRACE_ME
+ PTRACE_CONT = C.PT_CONTINUE
+ PTRACE_KILL = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+ SizeofIfMsghdr = C.sizeof_struct_if_msghdr
+ SizeofIfData = C.sizeof_struct_if_data
+ SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
+ SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr
+ SizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2
+ SizeofRtMsghdr = C.sizeof_struct_rt_msghdr
+ SizeofRtMetrics = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfmaMsghdr C.struct_ifma_msghdr
+
+type IfmaMsghdr2 C.struct_ifma_msghdr2
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+// Berkeley packet filter
+
+const (
+ SizeofBpfVersion = C.sizeof_struct_bpf_version
+ SizeofBpfStat = C.sizeof_struct_bpf_stat
+ SizeofBpfProgram = C.sizeof_struct_bpf_program
+ SizeofBpfInsn = C.sizeof_struct_bpf_insn
+ SizeofBpfHdr = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+// Terminal handling
+
+type Termios C.struct_termios
+
+// fchmodat-like syscalls.
+
+const (
+ AT_FDCWD = C.AT_FDCWD
+ AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/types_dragonfly.go b/Godeps/_workspace/src/golang.org/x/sys/unix/types_dragonfly.go
new file mode 100644
index 000000000..f3c971dff
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/types_dragonfly.go
@@ -0,0 +1,242 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+/*
+Input to cgo -godefs. See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+ sizeofPtr = sizeof(void*),
+};
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+ struct sockaddr_un s4;
+ struct sockaddr_dl s5;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+ sizeofPtr = C.sizeofPtr
+ sizeofShort = C.sizeof_short
+ sizeofInt = C.sizeof_int
+ sizeofLong = C.sizeof_long
+ sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+ _C_short C.short
+ _C_int C.int
+ _C_long C.long
+ _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+const ( // Directory mode bits
+ S_IFMT = C.S_IFMT
+ S_IFIFO = C.S_IFIFO
+ S_IFCHR = C.S_IFCHR
+ S_IFDIR = C.S_IFDIR
+ S_IFBLK = C.S_IFBLK
+ S_IFREG = C.S_IFREG
+ S_IFLNK = C.S_IFLNK
+ S_IFSOCK = C.S_IFSOCK
+ S_ISUID = C.S_ISUID
+ S_ISGID = C.S_ISGID
+ S_ISVTX = C.S_ISVTX
+ S_IRUSR = C.S_IRUSR
+ S_IWUSR = C.S_IWUSR
+ S_IXUSR = C.S_IXUSR
+)
+
+type Stat_t C.struct_stat
+
+type Statfs_t C.struct_statfs
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+type Fsid C.struct_fsid
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+ SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
+ SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+ SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
+ SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
+ SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+ SizeofLinger = C.sizeof_struct_linger
+ SizeofIPMreq = C.sizeof_struct_ip_mreq
+ SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+ SizeofMsghdr = C.sizeof_struct_msghdr
+ SizeofCmsghdr = C.sizeof_struct_cmsghdr
+ SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
+ SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
+ SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+ PTRACE_TRACEME = C.PT_TRACE_ME
+ PTRACE_CONT = C.PT_CONTINUE
+ PTRACE_KILL = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+ SizeofIfMsghdr = C.sizeof_struct_if_msghdr
+ SizeofIfData = C.sizeof_struct_if_data
+ SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
+ SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr
+ SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
+ SizeofRtMsghdr = C.sizeof_struct_rt_msghdr
+ SizeofRtMetrics = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfmaMsghdr C.struct_ifma_msghdr
+
+type IfAnnounceMsghdr C.struct_if_announcemsghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+// Berkeley packet filter
+
+const (
+ SizeofBpfVersion = C.sizeof_struct_bpf_version
+ SizeofBpfStat = C.sizeof_struct_bpf_stat
+ SizeofBpfProgram = C.sizeof_struct_bpf_program
+ SizeofBpfInsn = C.sizeof_struct_bpf_insn
+ SizeofBpfHdr = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+// Terminal handling
+
+type Termios C.struct_termios
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/types_freebsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/types_freebsd.go
new file mode 100644
index 000000000..ae24557ad
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/types_freebsd.go
@@ -0,0 +1,353 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+/*
+Input to cgo -godefs. See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+ sizeofPtr = sizeof(void*),
+};
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+ struct sockaddr_un s4;
+ struct sockaddr_dl s5;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+// This structure is a duplicate of stat on FreeBSD 8-STABLE.
+// See /usr/include/sys/stat.h.
+struct stat8 {
+#undef st_atimespec st_atim
+#undef st_mtimespec st_mtim
+#undef st_ctimespec st_ctim
+#undef st_birthtimespec st_birthtim
+ __dev_t st_dev;
+ ino_t st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ __dev_t st_rdev;
+#if __BSD_VISIBLE
+ struct timespec st_atimespec;
+ struct timespec st_mtimespec;
+ struct timespec st_ctimespec;
+#else
+ time_t st_atime;
+ long __st_atimensec;
+ time_t st_mtime;
+ long __st_mtimensec;
+ time_t st_ctime;
+ long __st_ctimensec;
+#endif
+ off_t st_size;
+ blkcnt_t st_blocks;
+ blksize_t st_blksize;
+ fflags_t st_flags;
+ __uint32_t st_gen;
+ __int32_t st_lspare;
+#if __BSD_VISIBLE
+ struct timespec st_birthtimespec;
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
+#else
+ time_t st_birthtime;
+ long st_birthtimensec;
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
+ unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
+#endif
+};
+
+// This structure is a duplicate of if_data on FreeBSD 8-STABLE.
+// See /usr/include/net/if.h.
+struct if_data8 {
+ u_char ifi_type;
+ u_char ifi_physical;
+ u_char ifi_addrlen;
+ u_char ifi_hdrlen;
+ u_char ifi_link_state;
+ u_char ifi_spare_char1;
+ u_char ifi_spare_char2;
+ u_char ifi_datalen;
+ u_long ifi_mtu;
+ u_long ifi_metric;
+ u_long ifi_baudrate;
+ u_long ifi_ipackets;
+ u_long ifi_ierrors;
+ u_long ifi_opackets;
+ u_long ifi_oerrors;
+ u_long ifi_collisions;
+ u_long ifi_ibytes;
+ u_long ifi_obytes;
+ u_long ifi_imcasts;
+ u_long ifi_omcasts;
+ u_long ifi_iqdrops;
+ u_long ifi_noproto;
+ u_long ifi_hwassist;
+ time_t ifi_epoch;
+ struct timeval ifi_lastchange;
+};
+
+// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE.
+// See /usr/include/net/if.h.
+struct if_msghdr8 {
+ u_short ifm_msglen;
+ u_char ifm_version;
+ u_char ifm_type;
+ int ifm_addrs;
+ int ifm_flags;
+ u_short ifm_index;
+ struct if_data8 ifm_data;
+};
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+ sizeofPtr = C.sizeofPtr
+ sizeofShort = C.sizeof_short
+ sizeofInt = C.sizeof_int
+ sizeofLong = C.sizeof_long
+ sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+ _C_short C.short
+ _C_int C.int
+ _C_long C.long
+ _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+const ( // Directory mode bits
+ S_IFMT = C.S_IFMT
+ S_IFIFO = C.S_IFIFO
+ S_IFCHR = C.S_IFCHR
+ S_IFDIR = C.S_IFDIR
+ S_IFBLK = C.S_IFBLK
+ S_IFREG = C.S_IFREG
+ S_IFLNK = C.S_IFLNK
+ S_IFSOCK = C.S_IFSOCK
+ S_ISUID = C.S_ISUID
+ S_ISGID = C.S_ISGID
+ S_ISVTX = C.S_ISVTX
+ S_IRUSR = C.S_IRUSR
+ S_IWUSR = C.S_IWUSR
+ S_IXUSR = C.S_IXUSR
+)
+
+type Stat_t C.struct_stat8
+
+type Statfs_t C.struct_statfs
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+type Fsid C.struct_fsid
+
+// Advice to Fadvise
+
+const (
+ FADV_NORMAL = C.POSIX_FADV_NORMAL
+ FADV_RANDOM = C.POSIX_FADV_RANDOM
+ FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
+ FADV_WILLNEED = C.POSIX_FADV_WILLNEED
+ FADV_DONTNEED = C.POSIX_FADV_DONTNEED
+ FADV_NOREUSE = C.POSIX_FADV_NOREUSE
+)
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPMreqn C.struct_ip_mreqn
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+ SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
+ SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+ SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
+ SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
+ SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+ SizeofLinger = C.sizeof_struct_linger
+ SizeofIPMreq = C.sizeof_struct_ip_mreq
+ SizeofIPMreqn = C.sizeof_struct_ip_mreqn
+ SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+ SizeofMsghdr = C.sizeof_struct_msghdr
+ SizeofCmsghdr = C.sizeof_struct_cmsghdr
+ SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
+ SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
+ SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+ PTRACE_TRACEME = C.PT_TRACE_ME
+ PTRACE_CONT = C.PT_CONTINUE
+ PTRACE_KILL = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+ sizeofIfMsghdr = C.sizeof_struct_if_msghdr
+ SizeofIfMsghdr = C.sizeof_struct_if_msghdr8
+ sizeofIfData = C.sizeof_struct_if_data
+ SizeofIfData = C.sizeof_struct_if_data8
+ SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
+ SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr
+ SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
+ SizeofRtMsghdr = C.sizeof_struct_rt_msghdr
+ SizeofRtMetrics = C.sizeof_struct_rt_metrics
+)
+
+type ifMsghdr C.struct_if_msghdr
+
+type IfMsghdr C.struct_if_msghdr8
+
+type ifData C.struct_if_data
+
+type IfData C.struct_if_data8
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfmaMsghdr C.struct_ifma_msghdr
+
+type IfAnnounceMsghdr C.struct_if_announcemsghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+// Berkeley packet filter
+
+const (
+ SizeofBpfVersion = C.sizeof_struct_bpf_version
+ SizeofBpfStat = C.sizeof_struct_bpf_stat
+ SizeofBpfZbuf = C.sizeof_struct_bpf_zbuf
+ SizeofBpfProgram = C.sizeof_struct_bpf_program
+ SizeofBpfInsn = C.sizeof_struct_bpf_insn
+ SizeofBpfHdr = C.sizeof_struct_bpf_hdr
+ SizeofBpfZbufHeader = C.sizeof_struct_bpf_zbuf_header
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfZbuf C.struct_bpf_zbuf
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+type BpfZbufHeader C.struct_bpf_zbuf_header
+
+// Terminal handling
+
+type Termios C.struct_termios
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go b/Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go
new file mode 100644
index 000000000..d5275875f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/types_linux.go
@@ -0,0 +1,406 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+/*
+Input to cgo -godefs. See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#define _FILE_OFFSET_BITS 64
+#define _GNU_SOURCE
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <netpacket/packet.h>
+#include <signal.h>
+#include <stdio.h>
+#include <sys/epoll.h>
+#include <sys/inotify.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/stat.h>
+#include <sys/statfs.h>
+#include <sys/sysinfo.h>
+#include <sys/time.h>
+#include <sys/times.h>
+#include <sys/timex.h>
+#include <sys/types.h>
+#include <sys/un.h>
+#include <sys/user.h>
+#include <sys/utsname.h>
+#include <sys/wait.h>
+#include <linux/filter.h>
+#include <linux/netlink.h>
+#include <linux/rtnetlink.h>
+#include <linux/icmpv6.h>
+#include <asm/termbits.h>
+#include <time.h>
+#include <unistd.h>
+#include <ustat.h>
+#include <utime.h>
+
+#ifdef TCSETS2
+// On systems that have "struct termios2" use this as type Termios.
+typedef struct termios2 termios_t;
+#else
+typedef struct termios termios_t;
+#endif
+
+enum {
+ sizeofPtr = sizeof(void*),
+};
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+ struct sockaddr_un s4;
+ struct sockaddr_ll s5;
+ struct sockaddr_nl s6;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+// copied from /usr/include/linux/un.h
+struct my_sockaddr_un {
+ sa_family_t sun_family;
+#if defined(__ARM_EABI__) || defined(__powerpc64__)
+ // on ARM char is by default unsigned
+ signed char sun_path[108];
+#else
+ char sun_path[108];
+#endif
+};
+
+#ifdef __ARM_EABI__
+typedef struct user_regs PtraceRegs;
+#elif defined(__aarch64__)
+typedef struct user_pt_regs PtraceRegs;
+#elif defined(__powerpc64__)
+typedef struct pt_regs PtraceRegs;
+#else
+typedef struct user_regs_struct PtraceRegs;
+#endif
+
+// The real epoll_event is a union, and godefs doesn't handle it well.
+struct my_epoll_event {
+ uint32_t events;
+#ifdef __ARM_EABI__
+ // padding is not specified in linux/eventpoll.h but added to conform to the
+ // alignment requirements of EABI
+ int32_t padFd;
+#endif
+ int32_t fd;
+ int32_t pad;
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+ sizeofPtr = C.sizeofPtr
+ sizeofShort = C.sizeof_short
+ sizeofInt = C.sizeof_int
+ sizeofLong = C.sizeof_long
+ sizeofLongLong = C.sizeof_longlong
+ PathMax = C.PATH_MAX
+)
+
+// Basic types
+
+type (
+ _C_short C.short
+ _C_int C.int
+ _C_long C.long
+ _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+type Timex C.struct_timex
+
+type Time_t C.time_t
+
+type Tms C.struct_tms
+
+type Utimbuf C.struct_utimbuf
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+type Stat_t C.struct_stat
+
+type Statfs_t C.struct_statfs
+
+type Dirent C.struct_dirent
+
+type Fsid C.fsid_t
+
+type Flock_t C.struct_flock
+
+// Advice to Fadvise
+
+const (
+ FADV_NORMAL = C.POSIX_FADV_NORMAL
+ FADV_RANDOM = C.POSIX_FADV_RANDOM
+ FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
+ FADV_WILLNEED = C.POSIX_FADV_WILLNEED
+ FADV_DONTNEED = C.POSIX_FADV_DONTNEED
+ FADV_NOREUSE = C.POSIX_FADV_NOREUSE
+)
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_my_sockaddr_un
+
+type RawSockaddrLinklayer C.struct_sockaddr_ll
+
+type RawSockaddrNetlink C.struct_sockaddr_nl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPMreqn C.struct_ip_mreqn
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet4Pktinfo C.struct_in_pktinfo
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+type Ucred C.struct_ucred
+
+type TCPInfo C.struct_tcp_info
+
+const (
+ SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
+ SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+ SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
+ SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
+ SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
+ SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl
+ SizeofLinger = C.sizeof_struct_linger
+ SizeofIPMreq = C.sizeof_struct_ip_mreq
+ SizeofIPMreqn = C.sizeof_struct_ip_mreqn
+ SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+ SizeofMsghdr = C.sizeof_struct_msghdr
+ SizeofCmsghdr = C.sizeof_struct_cmsghdr
+ SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo
+ SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
+ SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
+ SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+ SizeofUcred = C.sizeof_struct_ucred
+ SizeofTCPInfo = C.sizeof_struct_tcp_info
+)
+
+// Netlink routing and interface messages
+
+const (
+ IFA_UNSPEC = C.IFA_UNSPEC
+ IFA_ADDRESS = C.IFA_ADDRESS
+ IFA_LOCAL = C.IFA_LOCAL
+ IFA_LABEL = C.IFA_LABEL
+ IFA_BROADCAST = C.IFA_BROADCAST
+ IFA_ANYCAST = C.IFA_ANYCAST
+ IFA_CACHEINFO = C.IFA_CACHEINFO
+ IFA_MULTICAST = C.IFA_MULTICAST
+ IFLA_UNSPEC = C.IFLA_UNSPEC
+ IFLA_ADDRESS = C.IFLA_ADDRESS
+ IFLA_BROADCAST = C.IFLA_BROADCAST
+ IFLA_IFNAME = C.IFLA_IFNAME
+ IFLA_MTU = C.IFLA_MTU
+ IFLA_LINK = C.IFLA_LINK
+ IFLA_QDISC = C.IFLA_QDISC
+ IFLA_STATS = C.IFLA_STATS
+ IFLA_COST = C.IFLA_COST
+ IFLA_PRIORITY = C.IFLA_PRIORITY
+ IFLA_MASTER = C.IFLA_MASTER
+ IFLA_WIRELESS = C.IFLA_WIRELESS
+ IFLA_PROTINFO = C.IFLA_PROTINFO
+ IFLA_TXQLEN = C.IFLA_TXQLEN
+ IFLA_MAP = C.IFLA_MAP
+ IFLA_WEIGHT = C.IFLA_WEIGHT
+ IFLA_OPERSTATE = C.IFLA_OPERSTATE
+ IFLA_LINKMODE = C.IFLA_LINKMODE
+ IFLA_LINKINFO = C.IFLA_LINKINFO
+ IFLA_NET_NS_PID = C.IFLA_NET_NS_PID
+ IFLA_IFALIAS = C.IFLA_IFALIAS
+ IFLA_MAX = C.IFLA_MAX
+ RT_SCOPE_UNIVERSE = C.RT_SCOPE_UNIVERSE
+ RT_SCOPE_SITE = C.RT_SCOPE_SITE
+ RT_SCOPE_LINK = C.RT_SCOPE_LINK
+ RT_SCOPE_HOST = C.RT_SCOPE_HOST
+ RT_SCOPE_NOWHERE = C.RT_SCOPE_NOWHERE
+ RT_TABLE_UNSPEC = C.RT_TABLE_UNSPEC
+ RT_TABLE_COMPAT = C.RT_TABLE_COMPAT
+ RT_TABLE_DEFAULT = C.RT_TABLE_DEFAULT
+ RT_TABLE_MAIN = C.RT_TABLE_MAIN
+ RT_TABLE_LOCAL = C.RT_TABLE_LOCAL
+ RT_TABLE_MAX = C.RT_TABLE_MAX
+ RTA_UNSPEC = C.RTA_UNSPEC
+ RTA_DST = C.RTA_DST
+ RTA_SRC = C.RTA_SRC
+ RTA_IIF = C.RTA_IIF
+ RTA_OIF = C.RTA_OIF
+ RTA_GATEWAY = C.RTA_GATEWAY
+ RTA_PRIORITY = C.RTA_PRIORITY
+ RTA_PREFSRC = C.RTA_PREFSRC
+ RTA_METRICS = C.RTA_METRICS
+ RTA_MULTIPATH = C.RTA_MULTIPATH
+ RTA_FLOW = C.RTA_FLOW
+ RTA_CACHEINFO = C.RTA_CACHEINFO
+ RTA_TABLE = C.RTA_TABLE
+ RTN_UNSPEC = C.RTN_UNSPEC
+ RTN_UNICAST = C.RTN_UNICAST
+ RTN_LOCAL = C.RTN_LOCAL
+ RTN_BROADCAST = C.RTN_BROADCAST
+ RTN_ANYCAST = C.RTN_ANYCAST
+ RTN_MULTICAST = C.RTN_MULTICAST
+ RTN_BLACKHOLE = C.RTN_BLACKHOLE
+ RTN_UNREACHABLE = C.RTN_UNREACHABLE
+ RTN_PROHIBIT = C.RTN_PROHIBIT
+ RTN_THROW = C.RTN_THROW
+ RTN_NAT = C.RTN_NAT
+ RTN_XRESOLVE = C.RTN_XRESOLVE
+ RTNLGRP_NONE = C.RTNLGRP_NONE
+ RTNLGRP_LINK = C.RTNLGRP_LINK
+ RTNLGRP_NOTIFY = C.RTNLGRP_NOTIFY
+ RTNLGRP_NEIGH = C.RTNLGRP_NEIGH
+ RTNLGRP_TC = C.RTNLGRP_TC
+ RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR
+ RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE
+ RTNLGRP_IPV4_ROUTE = C.RTNLGRP_IPV4_ROUTE
+ RTNLGRP_IPV4_RULE = C.RTNLGRP_IPV4_RULE
+ RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR
+ RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE
+ RTNLGRP_IPV6_ROUTE = C.RTNLGRP_IPV6_ROUTE
+ RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO
+ RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX
+ RTNLGRP_IPV6_RULE = C.RTNLGRP_IPV6_RULE
+ RTNLGRP_ND_USEROPT = C.RTNLGRP_ND_USEROPT
+ SizeofNlMsghdr = C.sizeof_struct_nlmsghdr
+ SizeofNlMsgerr = C.sizeof_struct_nlmsgerr
+ SizeofRtGenmsg = C.sizeof_struct_rtgenmsg
+ SizeofNlAttr = C.sizeof_struct_nlattr
+ SizeofRtAttr = C.sizeof_struct_rtattr
+ SizeofIfInfomsg = C.sizeof_struct_ifinfomsg
+ SizeofIfAddrmsg = C.sizeof_struct_ifaddrmsg
+ SizeofRtMsg = C.sizeof_struct_rtmsg
+ SizeofRtNexthop = C.sizeof_struct_rtnexthop
+)
+
+type NlMsghdr C.struct_nlmsghdr
+
+type NlMsgerr C.struct_nlmsgerr
+
+type RtGenmsg C.struct_rtgenmsg
+
+type NlAttr C.struct_nlattr
+
+type RtAttr C.struct_rtattr
+
+type IfInfomsg C.struct_ifinfomsg
+
+type IfAddrmsg C.struct_ifaddrmsg
+
+type RtMsg C.struct_rtmsg
+
+type RtNexthop C.struct_rtnexthop
+
+// Linux socket filter
+
+const (
+ SizeofSockFilter = C.sizeof_struct_sock_filter
+ SizeofSockFprog = C.sizeof_struct_sock_fprog
+)
+
+type SockFilter C.struct_sock_filter
+
+type SockFprog C.struct_sock_fprog
+
+// Inotify
+
+type InotifyEvent C.struct_inotify_event
+
+const SizeofInotifyEvent = C.sizeof_struct_inotify_event
+
+// Ptrace
+
+// Register structures
+type PtraceRegs C.PtraceRegs
+
+// Misc
+
+type FdSet C.fd_set
+
+type Sysinfo_t C.struct_sysinfo
+
+type Utsname C.struct_utsname
+
+type Ustat_t C.struct_ustat
+
+type EpollEvent C.struct_my_epoll_event
+
+const (
+ AT_FDCWD = C.AT_FDCWD
+ AT_REMOVEDIR = C.AT_REMOVEDIR
+ AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
+)
+
+// Terminal handling
+
+type Termios C.termios_t
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/types_netbsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/types_netbsd.go
new file mode 100644
index 000000000..d15f93d19
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/types_netbsd.go
@@ -0,0 +1,232 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+/*
+Input to cgo -godefs. See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/sysctl.h>
+#include <sys/time.h>
+#include <sys/uio.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+ sizeofPtr = sizeof(void*),
+};
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+ struct sockaddr_un s4;
+ struct sockaddr_dl s5;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+ sizeofPtr = C.sizeofPtr
+ sizeofShort = C.sizeof_short
+ sizeofInt = C.sizeof_int
+ sizeofLong = C.sizeof_long
+ sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+ _C_short C.short
+ _C_int C.int
+ _C_long C.long
+ _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+type Stat_t C.struct_stat
+
+type Statfs_t C.struct_statfs
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+type Fsid C.fsid_t
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+ SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
+ SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+ SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
+ SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
+ SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+ SizeofLinger = C.sizeof_struct_linger
+ SizeofIPMreq = C.sizeof_struct_ip_mreq
+ SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+ SizeofMsghdr = C.sizeof_struct_msghdr
+ SizeofCmsghdr = C.sizeof_struct_cmsghdr
+ SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
+ SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
+ SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+ PTRACE_TRACEME = C.PT_TRACE_ME
+ PTRACE_CONT = C.PT_CONTINUE
+ PTRACE_KILL = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+ SizeofIfMsghdr = C.sizeof_struct_if_msghdr
+ SizeofIfData = C.sizeof_struct_if_data
+ SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
+ SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
+ SizeofRtMsghdr = C.sizeof_struct_rt_msghdr
+ SizeofRtMetrics = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfAnnounceMsghdr C.struct_if_announcemsghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+type Mclpool C.struct_mclpool
+
+// Berkeley packet filter
+
+const (
+ SizeofBpfVersion = C.sizeof_struct_bpf_version
+ SizeofBpfStat = C.sizeof_struct_bpf_stat
+ SizeofBpfProgram = C.sizeof_struct_bpf_program
+ SizeofBpfInsn = C.sizeof_struct_bpf_insn
+ SizeofBpfHdr = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+type BpfTimeval C.struct_bpf_timeval
+
+// Terminal handling
+
+type Termios C.struct_termios
+
+// Sysctl
+
+type Sysctlnode C.struct_sysctlnode
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/types_openbsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/types_openbsd.go
new file mode 100644
index 000000000..b66fe25f7
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/types_openbsd.go
@@ -0,0 +1,244 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+/*
+Input to cgo -godefs. See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/uio.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+ sizeofPtr = sizeof(void*),
+};
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+ struct sockaddr_un s4;
+ struct sockaddr_dl s5;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+ sizeofPtr = C.sizeofPtr
+ sizeofShort = C.sizeof_short
+ sizeofInt = C.sizeof_int
+ sizeofLong = C.sizeof_long
+ sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+ _C_short C.short
+ _C_int C.int
+ _C_long C.long
+ _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+const ( // Directory mode bits
+ S_IFMT = C.S_IFMT
+ S_IFIFO = C.S_IFIFO
+ S_IFCHR = C.S_IFCHR
+ S_IFDIR = C.S_IFDIR
+ S_IFBLK = C.S_IFBLK
+ S_IFREG = C.S_IFREG
+ S_IFLNK = C.S_IFLNK
+ S_IFSOCK = C.S_IFSOCK
+ S_ISUID = C.S_ISUID
+ S_ISGID = C.S_ISGID
+ S_ISVTX = C.S_ISVTX
+ S_IRUSR = C.S_IRUSR
+ S_IWUSR = C.S_IWUSR
+ S_IXUSR = C.S_IXUSR
+)
+
+type Stat_t C.struct_stat
+
+type Statfs_t C.struct_statfs
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+type Fsid C.fsid_t
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+ SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
+ SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+ SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
+ SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
+ SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+ SizeofLinger = C.sizeof_struct_linger
+ SizeofIPMreq = C.sizeof_struct_ip_mreq
+ SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+ SizeofMsghdr = C.sizeof_struct_msghdr
+ SizeofCmsghdr = C.sizeof_struct_cmsghdr
+ SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
+ SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
+ SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+ PTRACE_TRACEME = C.PT_TRACE_ME
+ PTRACE_CONT = C.PT_CONTINUE
+ PTRACE_KILL = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+ SizeofIfMsghdr = C.sizeof_struct_if_msghdr
+ SizeofIfData = C.sizeof_struct_if_data
+ SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
+ SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
+ SizeofRtMsghdr = C.sizeof_struct_rt_msghdr
+ SizeofRtMetrics = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfAnnounceMsghdr C.struct_if_announcemsghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+type Mclpool C.struct_mclpool
+
+// Berkeley packet filter
+
+const (
+ SizeofBpfVersion = C.sizeof_struct_bpf_version
+ SizeofBpfStat = C.sizeof_struct_bpf_stat
+ SizeofBpfProgram = C.sizeof_struct_bpf_program
+ SizeofBpfInsn = C.sizeof_struct_bpf_insn
+ SizeofBpfHdr = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+type BpfTimeval C.struct_bpf_timeval
+
+// Terminal handling
+
+type Termios C.struct_termios
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/types_solaris.go b/Godeps/_workspace/src/golang.org/x/sys/unix/types_solaris.go
new file mode 100644
index 000000000..6ad50eaba
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/types_solaris.go
@@ -0,0 +1,260 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+/*
+Input to cgo -godefs. See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+// These defines ensure that builds done on newer versions of Solaris are
+// backwards-compatible with older versions of Solaris and
+// OpenSolaris-based derivatives.
+#define __USE_SUNOS_SOCKETS__ // msghdr
+#define __USE_LEGACY_PROTOTYPES__ // iovec
+#include <dirent.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <termios.h>
+#include <termio.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/utsname.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+#include <netinet/tcp.h>
+#include <ustat.h>
+#include <utime.h>
+
+enum {
+ sizeofPtr = sizeof(void*),
+};
+
+union sockaddr_all {
+ struct sockaddr s1; // this one gets used for fields
+ struct sockaddr_in s2; // these pad it out
+ struct sockaddr_in6 s3;
+ struct sockaddr_un s4;
+ struct sockaddr_dl s5;
+};
+
+struct sockaddr_any {
+ struct sockaddr addr;
+ char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+ sizeofPtr = C.sizeofPtr
+ sizeofShort = C.sizeof_short
+ sizeofInt = C.sizeof_int
+ sizeofLong = C.sizeof_long
+ sizeofLongLong = C.sizeof_longlong
+ PathMax = C.PATH_MAX
+)
+
+// Basic types
+
+type (
+ _C_short C.short
+ _C_int C.int
+ _C_long C.long
+ _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+type Timeval32 C.struct_timeval32
+
+type Tms C.struct_tms
+
+type Utimbuf C.struct_utimbuf
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+const ( // Directory mode bits
+ S_IFMT = C.S_IFMT
+ S_IFIFO = C.S_IFIFO
+ S_IFCHR = C.S_IFCHR
+ S_IFDIR = C.S_IFDIR
+ S_IFBLK = C.S_IFBLK
+ S_IFREG = C.S_IFREG
+ S_IFLNK = C.S_IFLNK
+ S_IFSOCK = C.S_IFSOCK
+ S_ISUID = C.S_ISUID
+ S_ISGID = C.S_ISGID
+ S_ISVTX = C.S_ISVTX
+ S_IRUSR = C.S_IRUSR
+ S_IWUSR = C.S_IWUSR
+ S_IXUSR = C.S_IXUSR
+)
+
+type Stat_t C.struct_stat
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+ SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
+ SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+ SizeofSockaddrAny = C.sizeof_struct_sockaddr_any
+ SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un
+ SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+ SizeofLinger = C.sizeof_struct_linger
+ SizeofIPMreq = C.sizeof_struct_ip_mreq
+ SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+ SizeofMsghdr = C.sizeof_struct_msghdr
+ SizeofCmsghdr = C.sizeof_struct_cmsghdr
+ SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
+ SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
+ SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+// Select
+
+type FdSet C.fd_set
+
+// Misc
+
+type Utsname C.struct_utsname
+
+type Ustat_t C.struct_ustat
+
+const (
+ AT_FDCWD = C.AT_FDCWD
+ AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
+ AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW
+ AT_REMOVEDIR = C.AT_REMOVEDIR
+ AT_EACCESS = C.AT_EACCESS
+)
+
+// Routing and interface messages
+
+const (
+ SizeofIfMsghdr = C.sizeof_struct_if_msghdr
+ SizeofIfData = C.sizeof_struct_if_data
+ SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
+ SizeofRtMsghdr = C.sizeof_struct_rt_msghdr
+ SizeofRtMetrics = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+// Berkeley packet filter
+
+const (
+ SizeofBpfVersion = C.sizeof_struct_bpf_version
+ SizeofBpfStat = C.sizeof_struct_bpf_stat
+ SizeofBpfProgram = C.sizeof_struct_bpf_program
+ SizeofBpfInsn = C.sizeof_struct_bpf_insn
+ SizeofBpfHdr = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfTimeval C.struct_bpf_timeval
+
+type BpfHdr C.struct_bpf_hdr
+
+// sysconf information
+
+const _SC_PAGESIZE = C._SC_PAGESIZE
+
+// Terminal handling
+
+type Termios C.struct_termios
+
+type Termio C.struct_termio
+
+type Winsize C.struct_winsize
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_386.go
new file mode 100644
index 000000000..8e6388835
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_386.go
@@ -0,0 +1,1576 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,darwin
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1c
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x25
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1e
+ AF_IPX = 0x17
+ AF_ISDN = 0x1c
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x28
+ AF_NATM = 0x1f
+ AF_NDRV = 0x1b
+ AF_NETBIOS = 0x21
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PPP = 0x22
+ AF_PUP = 0x4
+ AF_RESERVED_36 = 0x24
+ AF_ROUTE = 0x11
+ AF_SIP = 0x18
+ AF_SNA = 0xb
+ AF_SYSTEM = 0x20
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_UTUN = 0x26
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc00c4279
+ BIOCGETIF = 0x4020426b
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4008426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044278
+ BIOCSETF = 0x80084267
+ BIOCSETFNR = 0x8008427e
+ BIOCSETIF = 0x8020426c
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8008426d
+ BIOCSSEESENT = 0x80044277
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DBUS = 0xe7
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_DVB_CI = 0xeb
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HHDLC = 0x79
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NOFCS = 0xe6
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPFILTER = 0x74
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPOIB = 0xf2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_ATM_CEMIC = 0xee
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FIBRECHANNEL = 0xea
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_SRX_E2E = 0xe9
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_JUNIPER_VS = 0xe8
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_PPP_WITHDIRECTION = 0xa6
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MATCHING_MAX = 0xf5
+ DLT_MATCHING_MIN = 0x68
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPEG_2_TS = 0xf3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_MUX27010 = 0xec
+ DLT_NETANALYZER = 0xf0
+ DLT_NETANALYZER_TRANSPARENT = 0xf1
+ DLT_NFC_LLCP = 0xf5
+ DLT_NFLOG = 0xef
+ DLT_NG40 = 0xf4
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PPP_WITH_DIRECTION = 0xa6
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_STANAG_5066_D_PDU = 0xed
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_USER0 = 0x93
+ DLT_USER1 = 0x94
+ DLT_USER10 = 0x9d
+ DLT_USER11 = 0x9e
+ DLT_USER12 = 0x9f
+ DLT_USER13 = 0xa0
+ DLT_USER14 = 0xa1
+ DLT_USER15 = 0xa2
+ DLT_USER2 = 0x95
+ DLT_USER3 = 0x96
+ DLT_USER4 = 0x97
+ DLT_USER5 = 0x98
+ DLT_USER6 = 0x99
+ DLT_USER7 = 0x9a
+ DLT_USER8 = 0x9b
+ DLT_USER9 = 0x9c
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_FS = -0x9
+ EVFILT_MACHPORT = -0x8
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0xe
+ EVFILT_THREADMARKER = 0xe
+ EVFILT_TIMER = -0x7
+ EVFILT_USER = -0xa
+ EVFILT_VM = -0xc
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_DISPATCH = 0x80
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG0 = 0x1000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_OOBAND = 0x2000
+ EV_POLL = 0x1000
+ EV_RECEIPT = 0x40
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_ADDFILESIGS = 0x3d
+ F_ADDSIGS = 0x3b
+ F_ALLOCATEALL = 0x4
+ F_ALLOCATECONTIG = 0x2
+ F_CHKCLEAN = 0x29
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x43
+ F_FINDSIGS = 0x4e
+ F_FLUSH_DATA = 0x28
+ F_FREEZE_FS = 0x35
+ F_FULLFSYNC = 0x33
+ F_GETCODEDIR = 0x48
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETLKPID = 0x42
+ F_GETNOSIGPIPE = 0x4a
+ F_GETOWN = 0x5
+ F_GETPATH = 0x32
+ F_GETPATH_MTMINFO = 0x47
+ F_GETPROTECTIONCLASS = 0x3f
+ F_GETPROTECTIONLEVEL = 0x4d
+ F_GLOBAL_NOCACHE = 0x37
+ F_LOG2PHYS = 0x31
+ F_LOG2PHYS_EXT = 0x41
+ F_NOCACHE = 0x30
+ F_NODIRECT = 0x3e
+ F_OK = 0x0
+ F_PATHPKG_CHECK = 0x34
+ F_PEOFPOSMODE = 0x3
+ F_PREALLOCATE = 0x2a
+ F_RDADVISE = 0x2c
+ F_RDAHEAD = 0x2d
+ F_RDLCK = 0x1
+ F_SETBACKINGSTORE = 0x46
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETLKWTIMEOUT = 0xa
+ F_SETNOSIGPIPE = 0x49
+ F_SETOWN = 0x6
+ F_SETPROTECTIONCLASS = 0x40
+ F_SETSIZE = 0x2b
+ F_SINGLE_WRITER = 0x4c
+ F_THAW_FS = 0x36
+ F_TRANSCODEKEY = 0x4b
+ F_UNLCK = 0x2
+ F_VOLPOSMODE = 0x4
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_AAL5 = 0x31
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ATM = 0x25
+ IFT_BRIDGE = 0xd1
+ IFT_CARP = 0xf8
+ IFT_CELLULAR = 0xff
+ IFT_CEPT = 0x13
+ IFT_DS3 = 0x1e
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0x38
+ IFT_FDDI = 0xf
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_GIF = 0x37
+ IFT_HDH1822 = 0x3
+ IFT_HIPPI = 0x2f
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE8023ADLAG = 0x88
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88026 = 0xa
+ IFT_L2VLAN = 0x87
+ IFT_LAPB = 0x10
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_NSIP = 0x1b
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PDP = 0xff
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PKTAP = 0xfe
+ IFT_PPP = 0x17
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PTPSERIAL = 0x16
+ IFT_RS232 = 0x21
+ IFT_SDLC = 0x11
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_STARLAN = 0xb
+ IFT_STF = 0x39
+ IFT_T1 = 0x12
+ IFT_ULTRA = 0x1d
+ IFT_V35 = 0x2d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LINKLOCALNETNUM = 0xa9fe0000
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0xfe
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEP = 0x21
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_2292DSTOPTS = 0x17
+ IPV6_2292HOPLIMIT = 0x14
+ IPV6_2292HOPOPTS = 0x16
+ IPV6_2292NEXTHOP = 0x15
+ IPV6_2292PKTINFO = 0x13
+ IPV6_2292PKTOPTIONS = 0x19
+ IPV6_2292RTHDR = 0x18
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_BOUND_IF = 0x7d
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x3c
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXOPTHDR = 0x800
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MAX_GROUP_SRC_FILTER = 0x200
+ IPV6_MAX_MEMBERSHIPS = 0xfff
+ IPV6_MAX_SOCK_SRC_FILTER = 0x80
+ IPV6_MIN_MEMBERSHIPS = 0x1f
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVTCLASS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x24
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_ADD_SOURCE_MEMBERSHIP = 0x46
+ IP_BLOCK_SOURCE = 0x48
+ IP_BOUND_IF = 0x19
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DROP_SOURCE_MEMBERSHIP = 0x47
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW_ADD = 0x28
+ IP_FW_DEL = 0x29
+ IP_FW_FLUSH = 0x2a
+ IP_FW_GET = 0x2c
+ IP_FW_RESETLOG = 0x2d
+ IP_FW_ZERO = 0x2b
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_GROUP_SRC_FILTER = 0x200
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MAX_SOCK_MUTE_FILTER = 0x80
+ IP_MAX_SOCK_SRC_FILTER = 0x80
+ IP_MF = 0x2000
+ IP_MIN_MEMBERSHIPS = 0x1f
+ IP_MSFILTER = 0x4a
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_IFINDEX = 0x42
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_NAT__XXX = 0x37
+ IP_OFFMASK = 0x1fff
+ IP_OLD_FW_ADD = 0x32
+ IP_OLD_FW_DEL = 0x33
+ IP_OLD_FW_FLUSH = 0x34
+ IP_OLD_FW_GET = 0x36
+ IP_OLD_FW_RESETLOG = 0x38
+ IP_OLD_FW_ZERO = 0x35
+ IP_OPTIONS = 0x1
+ IP_PKTINFO = 0x1a
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVPKTINFO = 0x1a
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x18
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_STRIPHDR = 0x17
+ IP_TOS = 0x3
+ IP_TRAFFIC_MGT_BACKGROUND = 0x41
+ IP_TTL = 0x4
+ IP_UNBLOCK_SOURCE = 0x49
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_CAN_REUSE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_FREE_REUSABLE = 0x7
+ MADV_FREE_REUSE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_WILLNEED = 0x3
+ MADV_ZERO_WIRED_PAGES = 0x6
+ MAP_ANON = 0x1000
+ MAP_COPY = 0x2
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_JIT = 0x800
+ MAP_NOCACHE = 0x400
+ MAP_NOEXTEND = 0x100
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_RESERVED0080 = 0x80
+ MAP_SHARED = 0x1
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_FLUSH = 0x400
+ MSG_HAVEMORE = 0x2000
+ MSG_HOLD = 0x800
+ MSG_NEEDSA = 0x10000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_RCVMORE = 0x4000
+ MSG_SEND = 0x1000
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MSG_WAITSTREAM = 0x200
+ MS_ASYNC = 0x1
+ MS_DEACTIVATE = 0x8
+ MS_INVALIDATE = 0x2
+ MS_KILLPAGES = 0x4
+ MS_SYNC = 0x10
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_DUMP2 = 0x7
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_IFLIST2 = 0x6
+ NET_RT_MAXID = 0xa
+ NET_RT_STAT = 0x4
+ NET_RT_TRASH = 0x5
+ NOFLSH = 0x80000000
+ NOTE_ABSOLUTE = 0x8
+ NOTE_ATTRIB = 0x8
+ NOTE_BACKGROUND = 0x40
+ NOTE_CHILD = 0x4
+ NOTE_CRITICAL = 0x20
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXITSTATUS = 0x4000000
+ NOTE_EXIT_CSERROR = 0x40000
+ NOTE_EXIT_DECRYPTFAIL = 0x10000
+ NOTE_EXIT_DETAIL = 0x2000000
+ NOTE_EXIT_DETAIL_MASK = 0x70000
+ NOTE_EXIT_MEMORY = 0x20000
+ NOTE_EXIT_REPARENTED = 0x80000
+ NOTE_EXTEND = 0x4
+ NOTE_FFAND = 0x40000000
+ NOTE_FFCOPY = 0xc0000000
+ NOTE_FFCTRLMASK = 0xc0000000
+ NOTE_FFLAGSMASK = 0xffffff
+ NOTE_FFNOP = 0x0
+ NOTE_FFOR = 0x80000000
+ NOTE_FORK = 0x40000000
+ NOTE_LEEWAY = 0x10
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_NONE = 0x80
+ NOTE_NSECONDS = 0x4
+ NOTE_PCTRLMASK = -0x100000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_REAP = 0x10000000
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_SECONDS = 0x1
+ NOTE_SIGNAL = 0x8000000
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRIGGER = 0x1000000
+ NOTE_USECONDS = 0x2
+ NOTE_VM_ERROR = 0x10000000
+ NOTE_VM_PRESSURE = 0x80000000
+ NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000
+ NOTE_VM_PRESSURE_TERMINATE = 0x40000000
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ OFDEL = 0x20000
+ OFILL = 0x80
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_ALERT = 0x20000000
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x1000000
+ O_CREAT = 0x200
+ O_DIRECTORY = 0x100000
+ O_DP_GETRAWENCRYPTED = 0x1
+ O_DSYNC = 0x400000
+ O_EVTONLY = 0x8000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x20000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_POPUP = 0x80000000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYMLINK = 0x200000
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PT_ATTACH = 0xa
+ PT_ATTACHEXC = 0xe
+ PT_CONTINUE = 0x7
+ PT_DENY_ATTACH = 0x1f
+ PT_DETACH = 0xb
+ PT_FIRSTMACH = 0x20
+ PT_FORCEQUOTA = 0x1e
+ PT_KILL = 0x8
+ PT_READ_D = 0x2
+ PT_READ_I = 0x1
+ PT_READ_U = 0x3
+ PT_SIGEXC = 0xc
+ PT_STEP = 0x9
+ PT_THUPDATE = 0xd
+ PT_TRACE_ME = 0x0
+ PT_WRITE_D = 0x5
+ PT_WRITE_I = 0x4
+ PT_WRITE_U = 0x6
+ RLIMIT_AS = 0x5
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_CPU_USAGE_MONITOR = 0x2
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x8
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_CLONING = 0x100
+ RTF_CONDEMNED = 0x2000000
+ RTF_DELCLONE = 0x80
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_IFREF = 0x4000000
+ RTF_IFSCOPE = 0x1000000
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MULTICAST = 0x800000
+ RTF_NOIFREF = 0x2000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_PROXY = 0x8000000
+ RTF_REJECT = 0x8
+ RTF_ROUTER = 0x10000000
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_WASCLONED = 0x20000
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_GET2 = 0x14
+ RTM_IFINFO = 0xe
+ RTM_IFINFO2 = 0x12
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_NEWMADDR2 = 0x13
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SCM_TIMESTAMP_MONOTONIC = 0x4
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCAIFADDR = 0x8040691a
+ SIOCARPIPLL = 0xc0206928
+ SIOCATMARK = 0x40047307
+ SIOCAUTOADDR = 0xc0206926
+ SIOCAUTONETMASK = 0x80206927
+ SIOCDELMULTI = 0x80206932
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFPHYADDR = 0x80206941
+ SIOCGDRVSPEC = 0xc01c697b
+ SIOCGETVLAN = 0xc020697f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFALTMTU = 0xc0206948
+ SIOCGIFASYNCMAP = 0xc020697c
+ SIOCGIFBOND = 0xc0206947
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020695b
+ SIOCGIFCONF = 0xc0086924
+ SIOCGIFDEVMTU = 0xc0206944
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFKPI = 0xc0206987
+ SIOCGIFMAC = 0xc0206982
+ SIOCGIFMEDIA = 0xc0286938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206940
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPSRCADDR = 0xc020693f
+ SIOCGIFSTATUS = 0xc331693d
+ SIOCGIFVLAN = 0xc020697f
+ SIOCGIFWAKEFLAGS = 0xc0206988
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCIFCREATE = 0xc0206978
+ SIOCIFCREATE2 = 0xc020697a
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc00c6981
+ SIOCRSLVMULTI = 0xc008693b
+ SIOCSDRVSPEC = 0x801c697b
+ SIOCSETVLAN = 0x8020697e
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFALTMTU = 0x80206945
+ SIOCSIFASYNCMAP = 0x8020697d
+ SIOCSIFBOND = 0x80206946
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020695a
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFKPI = 0x80206986
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMAC = 0x80206983
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x8040693e
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFVLAN = 0x8020697e
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_DONTTRUNC = 0x2000
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LABEL = 0x1010
+ SO_LINGER = 0x80
+ SO_LINGER_SEC = 0x1080
+ SO_NKE = 0x1021
+ SO_NOADDRERR = 0x1023
+ SO_NOSIGPIPE = 0x1022
+ SO_NOTIFYCONFLICT = 0x1026
+ SO_NP_EXTENSIONS = 0x1083
+ SO_NREAD = 0x1020
+ SO_NUMRCVPKT = 0x1112
+ SO_NWRITE = 0x1024
+ SO_OOBINLINE = 0x100
+ SO_PEERLABEL = 0x1011
+ SO_RANDOMPORT = 0x1082
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_REUSESHAREUID = 0x1025
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TIMESTAMP_MONOTONIC = 0x800
+ SO_TYPE = 0x1008
+ SO_UPCALLCLOSEWAIT = 0x1027
+ SO_USELOOPBACK = 0x40
+ SO_WANTMORE = 0x4000
+ SO_WANTOOBFLAG = 0x8000
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IFWHT = 0xe000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISTXT = 0x200
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CONNECTIONTIMEOUT = 0x20
+ TCP_ENABLE_ECN = 0x104
+ TCP_KEEPALIVE = 0x10
+ TCP_KEEPCNT = 0x102
+ TCP_KEEPINTVL = 0x101
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x4
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_NOTSENT_LOWAT = 0x201
+ TCP_RXT_CONNDROPTIME = 0x80
+ TCP_RXT_FINDROP = 0x100
+ TCP_SENDMOREACKS = 0x103
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x40087458
+ TIOCDRAIN = 0x2000745e
+ TIOCDSIMICROCODE = 0x20007455
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGWINSZ = 0x40087468
+ TIOCIXOFF = 0x20007480
+ TIOCIXON = 0x20007481
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x40047403
+ TIOCMODS = 0x80047404
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTYGNAME = 0x40807453
+ TIOCPTYGRANT = 0x20007454
+ TIOCPTYUNLK = 0x20007452
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCONS = 0x20007463
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2000745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40087459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VT0 = 0x0
+ VT1 = 0x10000
+ VTDLY = 0x10000
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x10
+ WCOREFLAG = 0x80
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOWAIT = 0x20
+ WORDSIZE = 0x20
+ WSTOPPED = 0x8
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADARCH = syscall.Errno(0x56)
+ EBADEXEC = syscall.Errno(0x55)
+ EBADF = syscall.Errno(0x9)
+ EBADMACHO = syscall.Errno(0x58)
+ EBADMSG = syscall.Errno(0x5e)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x59)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDEVERR = syscall.Errno(0x53)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x5a)
+ EILSEQ = syscall.Errno(0x5c)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x6a)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5f)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x5d)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODATA = syscall.Errno(0x60)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x61)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x5b)
+ ENOPOLICY = syscall.Errno(0x67)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x62)
+ ENOSTR = syscall.Errno(0x63)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTRECOVERABLE = syscall.Errno(0x68)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x66)
+ EOVERFLOW = syscall.Errno(0x54)
+ EOWNERDEAD = syscall.Errno(0x69)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x64)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ EPWROFF = syscall.Errno(0x52)
+ EQFULL = syscall.Errno(0x6a)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHLIBVERS = syscall.Errno(0x57)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIME = syscall.Errno(0x65)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "resource busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "operation timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "device power is off",
+ 83: "device error",
+ 84: "value too large to be stored in data type",
+ 85: "bad executable (or shared library)",
+ 86: "bad CPU type in executable",
+ 87: "shared library version mismatch",
+ 88: "malformed Mach-o file",
+ 89: "operation canceled",
+ 90: "identifier removed",
+ 91: "no message of desired type",
+ 92: "illegal byte sequence",
+ 93: "attribute not found",
+ 94: "bad message",
+ 95: "EMULTIHOP (Reserved)",
+ 96: "no message available on STREAM",
+ 97: "ENOLINK (Reserved)",
+ 98: "no STREAM resources",
+ 99: "not a STREAM",
+ 100: "protocol error",
+ 101: "STREAM ioctl timeout",
+ 102: "operation not supported on socket",
+ 103: "policy not found",
+ 104: "state not recoverable",
+ 105: "previous owner died",
+ 106: "interface output queue is full",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "suspended (signal)",
+ 18: "suspended",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_amd64.go
new file mode 100644
index 000000000..9594f9381
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_amd64.go
@@ -0,0 +1,1576 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,darwin
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1c
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x25
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1e
+ AF_IPX = 0x17
+ AF_ISDN = 0x1c
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x28
+ AF_NATM = 0x1f
+ AF_NDRV = 0x1b
+ AF_NETBIOS = 0x21
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PPP = 0x22
+ AF_PUP = 0x4
+ AF_RESERVED_36 = 0x24
+ AF_ROUTE = 0x11
+ AF_SIP = 0x18
+ AF_SNA = 0xb
+ AF_SYSTEM = 0x20
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_UTUN = 0x26
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc00c4279
+ BIOCGETIF = 0x4020426b
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4010426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044278
+ BIOCSETF = 0x80104267
+ BIOCSETFNR = 0x8010427e
+ BIOCSETIF = 0x8020426c
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8010426d
+ BIOCSSEESENT = 0x80044277
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DBUS = 0xe7
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_DVB_CI = 0xeb
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HHDLC = 0x79
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NOFCS = 0xe6
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPFILTER = 0x74
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPOIB = 0xf2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_ATM_CEMIC = 0xee
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FIBRECHANNEL = 0xea
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_SRX_E2E = 0xe9
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_JUNIPER_VS = 0xe8
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_PPP_WITHDIRECTION = 0xa6
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MATCHING_MAX = 0xf5
+ DLT_MATCHING_MIN = 0x68
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPEG_2_TS = 0xf3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_MUX27010 = 0xec
+ DLT_NETANALYZER = 0xf0
+ DLT_NETANALYZER_TRANSPARENT = 0xf1
+ DLT_NFC_LLCP = 0xf5
+ DLT_NFLOG = 0xef
+ DLT_NG40 = 0xf4
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PPP_WITH_DIRECTION = 0xa6
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_STANAG_5066_D_PDU = 0xed
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_USER0 = 0x93
+ DLT_USER1 = 0x94
+ DLT_USER10 = 0x9d
+ DLT_USER11 = 0x9e
+ DLT_USER12 = 0x9f
+ DLT_USER13 = 0xa0
+ DLT_USER14 = 0xa1
+ DLT_USER15 = 0xa2
+ DLT_USER2 = 0x95
+ DLT_USER3 = 0x96
+ DLT_USER4 = 0x97
+ DLT_USER5 = 0x98
+ DLT_USER6 = 0x99
+ DLT_USER7 = 0x9a
+ DLT_USER8 = 0x9b
+ DLT_USER9 = 0x9c
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_FS = -0x9
+ EVFILT_MACHPORT = -0x8
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0xe
+ EVFILT_THREADMARKER = 0xe
+ EVFILT_TIMER = -0x7
+ EVFILT_USER = -0xa
+ EVFILT_VM = -0xc
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_DISPATCH = 0x80
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG0 = 0x1000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_OOBAND = 0x2000
+ EV_POLL = 0x1000
+ EV_RECEIPT = 0x40
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_ADDFILESIGS = 0x3d
+ F_ADDSIGS = 0x3b
+ F_ALLOCATEALL = 0x4
+ F_ALLOCATECONTIG = 0x2
+ F_CHKCLEAN = 0x29
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x43
+ F_FINDSIGS = 0x4e
+ F_FLUSH_DATA = 0x28
+ F_FREEZE_FS = 0x35
+ F_FULLFSYNC = 0x33
+ F_GETCODEDIR = 0x48
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETLKPID = 0x42
+ F_GETNOSIGPIPE = 0x4a
+ F_GETOWN = 0x5
+ F_GETPATH = 0x32
+ F_GETPATH_MTMINFO = 0x47
+ F_GETPROTECTIONCLASS = 0x3f
+ F_GETPROTECTIONLEVEL = 0x4d
+ F_GLOBAL_NOCACHE = 0x37
+ F_LOG2PHYS = 0x31
+ F_LOG2PHYS_EXT = 0x41
+ F_NOCACHE = 0x30
+ F_NODIRECT = 0x3e
+ F_OK = 0x0
+ F_PATHPKG_CHECK = 0x34
+ F_PEOFPOSMODE = 0x3
+ F_PREALLOCATE = 0x2a
+ F_RDADVISE = 0x2c
+ F_RDAHEAD = 0x2d
+ F_RDLCK = 0x1
+ F_SETBACKINGSTORE = 0x46
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETLKWTIMEOUT = 0xa
+ F_SETNOSIGPIPE = 0x49
+ F_SETOWN = 0x6
+ F_SETPROTECTIONCLASS = 0x40
+ F_SETSIZE = 0x2b
+ F_SINGLE_WRITER = 0x4c
+ F_THAW_FS = 0x36
+ F_TRANSCODEKEY = 0x4b
+ F_UNLCK = 0x2
+ F_VOLPOSMODE = 0x4
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_AAL5 = 0x31
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ATM = 0x25
+ IFT_BRIDGE = 0xd1
+ IFT_CARP = 0xf8
+ IFT_CELLULAR = 0xff
+ IFT_CEPT = 0x13
+ IFT_DS3 = 0x1e
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0x38
+ IFT_FDDI = 0xf
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_GIF = 0x37
+ IFT_HDH1822 = 0x3
+ IFT_HIPPI = 0x2f
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE8023ADLAG = 0x88
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88026 = 0xa
+ IFT_L2VLAN = 0x87
+ IFT_LAPB = 0x10
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_NSIP = 0x1b
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PDP = 0xff
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PKTAP = 0xfe
+ IFT_PPP = 0x17
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PTPSERIAL = 0x16
+ IFT_RS232 = 0x21
+ IFT_SDLC = 0x11
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_STARLAN = 0xb
+ IFT_STF = 0x39
+ IFT_T1 = 0x12
+ IFT_ULTRA = 0x1d
+ IFT_V35 = 0x2d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LINKLOCALNETNUM = 0xa9fe0000
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0xfe
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEP = 0x21
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_2292DSTOPTS = 0x17
+ IPV6_2292HOPLIMIT = 0x14
+ IPV6_2292HOPOPTS = 0x16
+ IPV6_2292NEXTHOP = 0x15
+ IPV6_2292PKTINFO = 0x13
+ IPV6_2292PKTOPTIONS = 0x19
+ IPV6_2292RTHDR = 0x18
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_BOUND_IF = 0x7d
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x3c
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXOPTHDR = 0x800
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MAX_GROUP_SRC_FILTER = 0x200
+ IPV6_MAX_MEMBERSHIPS = 0xfff
+ IPV6_MAX_SOCK_SRC_FILTER = 0x80
+ IPV6_MIN_MEMBERSHIPS = 0x1f
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVTCLASS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x24
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_ADD_SOURCE_MEMBERSHIP = 0x46
+ IP_BLOCK_SOURCE = 0x48
+ IP_BOUND_IF = 0x19
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DROP_SOURCE_MEMBERSHIP = 0x47
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW_ADD = 0x28
+ IP_FW_DEL = 0x29
+ IP_FW_FLUSH = 0x2a
+ IP_FW_GET = 0x2c
+ IP_FW_RESETLOG = 0x2d
+ IP_FW_ZERO = 0x2b
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_GROUP_SRC_FILTER = 0x200
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MAX_SOCK_MUTE_FILTER = 0x80
+ IP_MAX_SOCK_SRC_FILTER = 0x80
+ IP_MF = 0x2000
+ IP_MIN_MEMBERSHIPS = 0x1f
+ IP_MSFILTER = 0x4a
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_IFINDEX = 0x42
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_NAT__XXX = 0x37
+ IP_OFFMASK = 0x1fff
+ IP_OLD_FW_ADD = 0x32
+ IP_OLD_FW_DEL = 0x33
+ IP_OLD_FW_FLUSH = 0x34
+ IP_OLD_FW_GET = 0x36
+ IP_OLD_FW_RESETLOG = 0x38
+ IP_OLD_FW_ZERO = 0x35
+ IP_OPTIONS = 0x1
+ IP_PKTINFO = 0x1a
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVPKTINFO = 0x1a
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x18
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_STRIPHDR = 0x17
+ IP_TOS = 0x3
+ IP_TRAFFIC_MGT_BACKGROUND = 0x41
+ IP_TTL = 0x4
+ IP_UNBLOCK_SOURCE = 0x49
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_CAN_REUSE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_FREE_REUSABLE = 0x7
+ MADV_FREE_REUSE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_WILLNEED = 0x3
+ MADV_ZERO_WIRED_PAGES = 0x6
+ MAP_ANON = 0x1000
+ MAP_COPY = 0x2
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_JIT = 0x800
+ MAP_NOCACHE = 0x400
+ MAP_NOEXTEND = 0x100
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_RESERVED0080 = 0x80
+ MAP_SHARED = 0x1
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_FLUSH = 0x400
+ MSG_HAVEMORE = 0x2000
+ MSG_HOLD = 0x800
+ MSG_NEEDSA = 0x10000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_RCVMORE = 0x4000
+ MSG_SEND = 0x1000
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MSG_WAITSTREAM = 0x200
+ MS_ASYNC = 0x1
+ MS_DEACTIVATE = 0x8
+ MS_INVALIDATE = 0x2
+ MS_KILLPAGES = 0x4
+ MS_SYNC = 0x10
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_DUMP2 = 0x7
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_IFLIST2 = 0x6
+ NET_RT_MAXID = 0xa
+ NET_RT_STAT = 0x4
+ NET_RT_TRASH = 0x5
+ NOFLSH = 0x80000000
+ NOTE_ABSOLUTE = 0x8
+ NOTE_ATTRIB = 0x8
+ NOTE_BACKGROUND = 0x40
+ NOTE_CHILD = 0x4
+ NOTE_CRITICAL = 0x20
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXITSTATUS = 0x4000000
+ NOTE_EXIT_CSERROR = 0x40000
+ NOTE_EXIT_DECRYPTFAIL = 0x10000
+ NOTE_EXIT_DETAIL = 0x2000000
+ NOTE_EXIT_DETAIL_MASK = 0x70000
+ NOTE_EXIT_MEMORY = 0x20000
+ NOTE_EXIT_REPARENTED = 0x80000
+ NOTE_EXTEND = 0x4
+ NOTE_FFAND = 0x40000000
+ NOTE_FFCOPY = 0xc0000000
+ NOTE_FFCTRLMASK = 0xc0000000
+ NOTE_FFLAGSMASK = 0xffffff
+ NOTE_FFNOP = 0x0
+ NOTE_FFOR = 0x80000000
+ NOTE_FORK = 0x40000000
+ NOTE_LEEWAY = 0x10
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_NONE = 0x80
+ NOTE_NSECONDS = 0x4
+ NOTE_PCTRLMASK = -0x100000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_REAP = 0x10000000
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_SECONDS = 0x1
+ NOTE_SIGNAL = 0x8000000
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRIGGER = 0x1000000
+ NOTE_USECONDS = 0x2
+ NOTE_VM_ERROR = 0x10000000
+ NOTE_VM_PRESSURE = 0x80000000
+ NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000
+ NOTE_VM_PRESSURE_TERMINATE = 0x40000000
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ OFDEL = 0x20000
+ OFILL = 0x80
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_ALERT = 0x20000000
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x1000000
+ O_CREAT = 0x200
+ O_DIRECTORY = 0x100000
+ O_DP_GETRAWENCRYPTED = 0x1
+ O_DSYNC = 0x400000
+ O_EVTONLY = 0x8000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x20000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_POPUP = 0x80000000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYMLINK = 0x200000
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PT_ATTACH = 0xa
+ PT_ATTACHEXC = 0xe
+ PT_CONTINUE = 0x7
+ PT_DENY_ATTACH = 0x1f
+ PT_DETACH = 0xb
+ PT_FIRSTMACH = 0x20
+ PT_FORCEQUOTA = 0x1e
+ PT_KILL = 0x8
+ PT_READ_D = 0x2
+ PT_READ_I = 0x1
+ PT_READ_U = 0x3
+ PT_SIGEXC = 0xc
+ PT_STEP = 0x9
+ PT_THUPDATE = 0xd
+ PT_TRACE_ME = 0x0
+ PT_WRITE_D = 0x5
+ PT_WRITE_I = 0x4
+ PT_WRITE_U = 0x6
+ RLIMIT_AS = 0x5
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_CPU_USAGE_MONITOR = 0x2
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x8
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_CLONING = 0x100
+ RTF_CONDEMNED = 0x2000000
+ RTF_DELCLONE = 0x80
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_IFREF = 0x4000000
+ RTF_IFSCOPE = 0x1000000
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MULTICAST = 0x800000
+ RTF_NOIFREF = 0x2000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_PROXY = 0x8000000
+ RTF_REJECT = 0x8
+ RTF_ROUTER = 0x10000000
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_WASCLONED = 0x20000
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_GET2 = 0x14
+ RTM_IFINFO = 0xe
+ RTM_IFINFO2 = 0x12
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_NEWMADDR2 = 0x13
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SCM_TIMESTAMP_MONOTONIC = 0x4
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCAIFADDR = 0x8040691a
+ SIOCARPIPLL = 0xc0206928
+ SIOCATMARK = 0x40047307
+ SIOCAUTOADDR = 0xc0206926
+ SIOCAUTONETMASK = 0x80206927
+ SIOCDELMULTI = 0x80206932
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFPHYADDR = 0x80206941
+ SIOCGDRVSPEC = 0xc028697b
+ SIOCGETVLAN = 0xc020697f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFALTMTU = 0xc0206948
+ SIOCGIFASYNCMAP = 0xc020697c
+ SIOCGIFBOND = 0xc0206947
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020695b
+ SIOCGIFCONF = 0xc00c6924
+ SIOCGIFDEVMTU = 0xc0206944
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFKPI = 0xc0206987
+ SIOCGIFMAC = 0xc0206982
+ SIOCGIFMEDIA = 0xc02c6938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206940
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPSRCADDR = 0xc020693f
+ SIOCGIFSTATUS = 0xc331693d
+ SIOCGIFVLAN = 0xc020697f
+ SIOCGIFWAKEFLAGS = 0xc0206988
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCIFCREATE = 0xc0206978
+ SIOCIFCREATE2 = 0xc020697a
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc0106981
+ SIOCRSLVMULTI = 0xc010693b
+ SIOCSDRVSPEC = 0x8028697b
+ SIOCSETVLAN = 0x8020697e
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFALTMTU = 0x80206945
+ SIOCSIFASYNCMAP = 0x8020697d
+ SIOCSIFBOND = 0x80206946
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020695a
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFKPI = 0x80206986
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMAC = 0x80206983
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x8040693e
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFVLAN = 0x8020697e
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_DONTTRUNC = 0x2000
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LABEL = 0x1010
+ SO_LINGER = 0x80
+ SO_LINGER_SEC = 0x1080
+ SO_NKE = 0x1021
+ SO_NOADDRERR = 0x1023
+ SO_NOSIGPIPE = 0x1022
+ SO_NOTIFYCONFLICT = 0x1026
+ SO_NP_EXTENSIONS = 0x1083
+ SO_NREAD = 0x1020
+ SO_NUMRCVPKT = 0x1112
+ SO_NWRITE = 0x1024
+ SO_OOBINLINE = 0x100
+ SO_PEERLABEL = 0x1011
+ SO_RANDOMPORT = 0x1082
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_REUSESHAREUID = 0x1025
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TIMESTAMP_MONOTONIC = 0x800
+ SO_TYPE = 0x1008
+ SO_UPCALLCLOSEWAIT = 0x1027
+ SO_USELOOPBACK = 0x40
+ SO_WANTMORE = 0x4000
+ SO_WANTOOBFLAG = 0x8000
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IFWHT = 0xe000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISTXT = 0x200
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CONNECTIONTIMEOUT = 0x20
+ TCP_ENABLE_ECN = 0x104
+ TCP_KEEPALIVE = 0x10
+ TCP_KEEPCNT = 0x102
+ TCP_KEEPINTVL = 0x101
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x4
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_NOTSENT_LOWAT = 0x201
+ TCP_RXT_CONNDROPTIME = 0x80
+ TCP_RXT_FINDROP = 0x100
+ TCP_SENDMOREACKS = 0x103
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x40107458
+ TIOCDRAIN = 0x2000745e
+ TIOCDSIMICROCODE = 0x20007455
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x40487413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGWINSZ = 0x40087468
+ TIOCIXOFF = 0x20007480
+ TIOCIXON = 0x20007481
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x40047403
+ TIOCMODS = 0x80047404
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTYGNAME = 0x40807453
+ TIOCPTYGRANT = 0x20007454
+ TIOCPTYUNLK = 0x20007452
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCONS = 0x20007463
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x80487414
+ TIOCSETAF = 0x80487416
+ TIOCSETAW = 0x80487415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2000745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40107459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VT0 = 0x0
+ VT1 = 0x10000
+ VTDLY = 0x10000
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x10
+ WCOREFLAG = 0x80
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOWAIT = 0x20
+ WORDSIZE = 0x40
+ WSTOPPED = 0x8
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADARCH = syscall.Errno(0x56)
+ EBADEXEC = syscall.Errno(0x55)
+ EBADF = syscall.Errno(0x9)
+ EBADMACHO = syscall.Errno(0x58)
+ EBADMSG = syscall.Errno(0x5e)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x59)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDEVERR = syscall.Errno(0x53)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x5a)
+ EILSEQ = syscall.Errno(0x5c)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x6a)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5f)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x5d)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODATA = syscall.Errno(0x60)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x61)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x5b)
+ ENOPOLICY = syscall.Errno(0x67)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x62)
+ ENOSTR = syscall.Errno(0x63)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTRECOVERABLE = syscall.Errno(0x68)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x66)
+ EOVERFLOW = syscall.Errno(0x54)
+ EOWNERDEAD = syscall.Errno(0x69)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x64)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ EPWROFF = syscall.Errno(0x52)
+ EQFULL = syscall.Errno(0x6a)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHLIBVERS = syscall.Errno(0x57)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIME = syscall.Errno(0x65)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "resource busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "operation timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "device power is off",
+ 83: "device error",
+ 84: "value too large to be stored in data type",
+ 85: "bad executable (or shared library)",
+ 86: "bad CPU type in executable",
+ 87: "shared library version mismatch",
+ 88: "malformed Mach-o file",
+ 89: "operation canceled",
+ 90: "identifier removed",
+ 91: "no message of desired type",
+ 92: "illegal byte sequence",
+ 93: "attribute not found",
+ 94: "bad message",
+ 95: "EMULTIHOP (Reserved)",
+ 96: "no message available on STREAM",
+ 97: "ENOLINK (Reserved)",
+ 98: "no STREAM resources",
+ 99: "not a STREAM",
+ 100: "protocol error",
+ 101: "STREAM ioctl timeout",
+ 102: "operation not supported on socket",
+ 103: "policy not found",
+ 104: "state not recoverable",
+ 105: "previous owner died",
+ 106: "interface output queue is full",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "suspended (signal)",
+ 18: "suspended",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_arm.go
new file mode 100644
index 000000000..a410e88ed
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_arm.go
@@ -0,0 +1,1293 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+// +build arm,darwin
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1c
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x25
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1e
+ AF_IPX = 0x17
+ AF_ISDN = 0x1c
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x28
+ AF_NATM = 0x1f
+ AF_NDRV = 0x1b
+ AF_NETBIOS = 0x21
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PPP = 0x22
+ AF_PUP = 0x4
+ AF_RESERVED_36 = 0x24
+ AF_ROUTE = 0x11
+ AF_SIP = 0x18
+ AF_SNA = 0xb
+ AF_SYSTEM = 0x20
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_UTUN = 0x26
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc00c4279
+ BIOCGETIF = 0x4020426b
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4010426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044278
+ BIOCSETF = 0x80104267
+ BIOCSETIF = 0x8020426c
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8010426d
+ BIOCSSEESENT = 0x80044277
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AX25 = 0x3
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_C_HDLC = 0x68
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_FDDI = 0xa
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_NULL = 0x0
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_SERIAL = 0x32
+ DLT_PRONET = 0x4
+ DLT_RAW = 0xc
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_FS = -0x9
+ EVFILT_MACHPORT = -0x8
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0xe
+ EVFILT_THREADMARKER = 0xe
+ EVFILT_TIMER = -0x7
+ EVFILT_USER = -0xa
+ EVFILT_VM = -0xc
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_DISPATCH = 0x80
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG0 = 0x1000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_OOBAND = 0x2000
+ EV_POLL = 0x1000
+ EV_RECEIPT = 0x40
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_ADDFILESIGS = 0x3d
+ F_ADDSIGS = 0x3b
+ F_ALLOCATEALL = 0x4
+ F_ALLOCATECONTIG = 0x2
+ F_CHKCLEAN = 0x29
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x43
+ F_FINDSIGS = 0x4e
+ F_FLUSH_DATA = 0x28
+ F_FREEZE_FS = 0x35
+ F_FULLFSYNC = 0x33
+ F_GETCODEDIR = 0x48
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETLKPID = 0x42
+ F_GETNOSIGPIPE = 0x4a
+ F_GETOWN = 0x5
+ F_GETPATH = 0x32
+ F_GETPATH_MTMINFO = 0x47
+ F_GETPROTECTIONCLASS = 0x3f
+ F_GETPROTECTIONLEVEL = 0x4d
+ F_GLOBAL_NOCACHE = 0x37
+ F_LOG2PHYS = 0x31
+ F_LOG2PHYS_EXT = 0x41
+ F_NOCACHE = 0x30
+ F_NODIRECT = 0x3e
+ F_OK = 0x0
+ F_PATHPKG_CHECK = 0x34
+ F_PEOFPOSMODE = 0x3
+ F_PREALLOCATE = 0x2a
+ F_RDADVISE = 0x2c
+ F_RDAHEAD = 0x2d
+ F_RDLCK = 0x1
+ F_SETBACKINGSTORE = 0x46
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETLKWTIMEOUT = 0xa
+ F_SETNOSIGPIPE = 0x49
+ F_SETOWN = 0x6
+ F_SETPROTECTIONCLASS = 0x40
+ F_SETSIZE = 0x2b
+ F_SINGLE_WRITER = 0x4c
+ F_THAW_FS = 0x36
+ F_TRANSCODEKEY = 0x4b
+ F_UNLCK = 0x2
+ F_VOLPOSMODE = 0x4
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_AAL5 = 0x31
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ATM = 0x25
+ IFT_BRIDGE = 0xd1
+ IFT_CARP = 0xf8
+ IFT_CELLULAR = 0xff
+ IFT_CEPT = 0x13
+ IFT_DS3 = 0x1e
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0x38
+ IFT_FDDI = 0xf
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_GIF = 0x37
+ IFT_HDH1822 = 0x3
+ IFT_HIPPI = 0x2f
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE8023ADLAG = 0x88
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88026 = 0xa
+ IFT_L2VLAN = 0x87
+ IFT_LAPB = 0x10
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_NSIP = 0x1b
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PDP = 0xff
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PPP = 0x17
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PTPSERIAL = 0x16
+ IFT_RS232 = 0x21
+ IFT_SDLC = 0x11
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_STARLAN = 0xb
+ IFT_STF = 0x39
+ IFT_T1 = 0x12
+ IFT_ULTRA = 0x1d
+ IFT_V35 = 0x2d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LINKLOCALNETNUM = 0xa9fe0000
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0xfe
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEP = 0x21
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_2292DSTOPTS = 0x17
+ IPV6_2292HOPLIMIT = 0x14
+ IPV6_2292HOPOPTS = 0x16
+ IPV6_2292NEXTHOP = 0x15
+ IPV6_2292PKTINFO = 0x13
+ IPV6_2292PKTOPTIONS = 0x19
+ IPV6_2292RTHDR = 0x18
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_BOUND_IF = 0x7d
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXOPTHDR = 0x800
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MAX_GROUP_SRC_FILTER = 0x200
+ IPV6_MAX_MEMBERSHIPS = 0xfff
+ IPV6_MAX_SOCK_SRC_FILTER = 0x80
+ IPV6_MIN_MEMBERSHIPS = 0x1f
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVTCLASS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x24
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_ADD_SOURCE_MEMBERSHIP = 0x46
+ IP_BLOCK_SOURCE = 0x48
+ IP_BOUND_IF = 0x19
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DROP_SOURCE_MEMBERSHIP = 0x47
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW_ADD = 0x28
+ IP_FW_DEL = 0x29
+ IP_FW_FLUSH = 0x2a
+ IP_FW_GET = 0x2c
+ IP_FW_RESETLOG = 0x2d
+ IP_FW_ZERO = 0x2b
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_GROUP_SRC_FILTER = 0x200
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MAX_SOCK_MUTE_FILTER = 0x80
+ IP_MAX_SOCK_SRC_FILTER = 0x80
+ IP_MF = 0x2000
+ IP_MIN_MEMBERSHIPS = 0x1f
+ IP_MSFILTER = 0x4a
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_IFINDEX = 0x42
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_NAT__XXX = 0x37
+ IP_OFFMASK = 0x1fff
+ IP_OLD_FW_ADD = 0x32
+ IP_OLD_FW_DEL = 0x33
+ IP_OLD_FW_FLUSH = 0x34
+ IP_OLD_FW_GET = 0x36
+ IP_OLD_FW_RESETLOG = 0x38
+ IP_OLD_FW_ZERO = 0x35
+ IP_OPTIONS = 0x1
+ IP_PKTINFO = 0x1a
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVPKTINFO = 0x1a
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x18
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_STRIPHDR = 0x17
+ IP_TOS = 0x3
+ IP_TRAFFIC_MGT_BACKGROUND = 0x41
+ IP_TTL = 0x4
+ IP_UNBLOCK_SOURCE = 0x49
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_CAN_REUSE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_FREE_REUSABLE = 0x7
+ MADV_FREE_REUSE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_WILLNEED = 0x3
+ MADV_ZERO_WIRED_PAGES = 0x6
+ MAP_ANON = 0x1000
+ MAP_COPY = 0x2
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_JIT = 0x800
+ MAP_NOCACHE = 0x400
+ MAP_NOEXTEND = 0x100
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_RESERVED0080 = 0x80
+ MAP_SHARED = 0x1
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_FLUSH = 0x400
+ MSG_HAVEMORE = 0x2000
+ MSG_HOLD = 0x800
+ MSG_NEEDSA = 0x10000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_RCVMORE = 0x4000
+ MSG_SEND = 0x1000
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MSG_WAITSTREAM = 0x200
+ MS_ASYNC = 0x1
+ MS_DEACTIVATE = 0x8
+ MS_INVALIDATE = 0x2
+ MS_KILLPAGES = 0x4
+ MS_SYNC = 0x10
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_DUMP2 = 0x7
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_IFLIST2 = 0x6
+ NET_RT_MAXID = 0xa
+ NET_RT_STAT = 0x4
+ NET_RT_TRASH = 0x5
+ NOFLSH = 0x80000000
+ NOTE_ABSOLUTE = 0x8
+ NOTE_ATTRIB = 0x8
+ NOTE_BACKGROUND = 0x40
+ NOTE_CHILD = 0x4
+ NOTE_CRITICAL = 0x20
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXITSTATUS = 0x4000000
+ NOTE_EXIT_CSERROR = 0x40000
+ NOTE_EXIT_DECRYPTFAIL = 0x10000
+ NOTE_EXIT_DETAIL = 0x2000000
+ NOTE_EXIT_DETAIL_MASK = 0x70000
+ NOTE_EXIT_MEMORY = 0x20000
+ NOTE_EXIT_REPARENTED = 0x80000
+ NOTE_EXTEND = 0x4
+ NOTE_FFAND = 0x40000000
+ NOTE_FFCOPY = 0xc0000000
+ NOTE_FFCTRLMASK = 0xc0000000
+ NOTE_FFLAGSMASK = 0xffffff
+ NOTE_FFNOP = 0x0
+ NOTE_FFOR = 0x80000000
+ NOTE_FORK = 0x40000000
+ NOTE_LEEWAY = 0x10
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_NONE = 0x80
+ NOTE_NSECONDS = 0x4
+ NOTE_PCTRLMASK = -0x100000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_REAP = 0x10000000
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_SECONDS = 0x1
+ NOTE_SIGNAL = 0x8000000
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRIGGER = 0x1000000
+ NOTE_USECONDS = 0x2
+ NOTE_VM_ERROR = 0x10000000
+ NOTE_VM_PRESSURE = 0x80000000
+ NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000
+ NOTE_VM_PRESSURE_TERMINATE = 0x40000000
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ OFDEL = 0x20000
+ OFILL = 0x80
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_ALERT = 0x20000000
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x1000000
+ O_CREAT = 0x200
+ O_DIRECTORY = 0x100000
+ O_DP_GETRAWENCRYPTED = 0x1
+ O_DSYNC = 0x400000
+ O_EVTONLY = 0x8000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x20000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_POPUP = 0x80000000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYMLINK = 0x200000
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PT_ATTACH = 0xa
+ PT_ATTACHEXC = 0xe
+ PT_CONTINUE = 0x7
+ PT_DENY_ATTACH = 0x1f
+ PT_DETACH = 0xb
+ PT_FIRSTMACH = 0x20
+ PT_FORCEQUOTA = 0x1e
+ PT_KILL = 0x8
+ PT_READ_D = 0x2
+ PT_READ_I = 0x1
+ PT_READ_U = 0x3
+ PT_SIGEXC = 0xc
+ PT_STEP = 0x9
+ PT_THUPDATE = 0xd
+ PT_TRACE_ME = 0x0
+ PT_WRITE_D = 0x5
+ PT_WRITE_I = 0x4
+ PT_WRITE_U = 0x6
+ RLIMIT_AS = 0x5
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_CPU_USAGE_MONITOR = 0x2
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x8
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_CLONING = 0x100
+ RTF_CONDEMNED = 0x2000000
+ RTF_DELCLONE = 0x80
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_IFREF = 0x4000000
+ RTF_IFSCOPE = 0x1000000
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MULTICAST = 0x800000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_PROXY = 0x8000000
+ RTF_REJECT = 0x8
+ RTF_ROUTER = 0x10000000
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_WASCLONED = 0x20000
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_GET2 = 0x14
+ RTM_IFINFO = 0xe
+ RTM_IFINFO2 = 0x12
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_NEWMADDR2 = 0x13
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SCM_TIMESTAMP_MONOTONIC = 0x4
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCAIFADDR = 0x8040691a
+ SIOCARPIPLL = 0xc0206928
+ SIOCATMARK = 0x40047307
+ SIOCAUTOADDR = 0xc0206926
+ SIOCAUTONETMASK = 0x80206927
+ SIOCDELMULTI = 0x80206932
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFPHYADDR = 0x80206941
+ SIOCGDRVSPEC = 0xc028697b
+ SIOCGETVLAN = 0xc020697f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFALTMTU = 0xc0206948
+ SIOCGIFASYNCMAP = 0xc020697c
+ SIOCGIFBOND = 0xc0206947
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020695b
+ SIOCGIFCONF = 0xc00c6924
+ SIOCGIFDEVMTU = 0xc0206944
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFKPI = 0xc0206987
+ SIOCGIFMAC = 0xc0206982
+ SIOCGIFMEDIA = 0xc02c6938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206940
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPSRCADDR = 0xc020693f
+ SIOCGIFSTATUS = 0xc331693d
+ SIOCGIFVLAN = 0xc020697f
+ SIOCGIFWAKEFLAGS = 0xc0206988
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCIFCREATE = 0xc0206978
+ SIOCIFCREATE2 = 0xc020697a
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc0106981
+ SIOCRSLVMULTI = 0xc010693b
+ SIOCSDRVSPEC = 0x8028697b
+ SIOCSETVLAN = 0x8020697e
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFALTMTU = 0x80206945
+ SIOCSIFASYNCMAP = 0x8020697d
+ SIOCSIFBOND = 0x80206946
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020695a
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFKPI = 0x80206986
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMAC = 0x80206983
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x8040693e
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFVLAN = 0x8020697e
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_DONTTRUNC = 0x2000
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LABEL = 0x1010
+ SO_LINGER = 0x80
+ SO_LINGER_SEC = 0x1080
+ SO_NKE = 0x1021
+ SO_NOADDRERR = 0x1023
+ SO_NOSIGPIPE = 0x1022
+ SO_NOTIFYCONFLICT = 0x1026
+ SO_NP_EXTENSIONS = 0x1083
+ SO_NREAD = 0x1020
+ SO_NUMRCVPKT = 0x1112
+ SO_NWRITE = 0x1024
+ SO_OOBINLINE = 0x100
+ SO_PEERLABEL = 0x1011
+ SO_RANDOMPORT = 0x1082
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_REUSESHAREUID = 0x1025
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TIMESTAMP_MONOTONIC = 0x800
+ SO_TYPE = 0x1008
+ SO_UPCALLCLOSEWAIT = 0x1027
+ SO_USELOOPBACK = 0x40
+ SO_WANTMORE = 0x4000
+ SO_WANTOOBFLAG = 0x8000
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IFWHT = 0xe000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISTXT = 0x200
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CONNECTIONTIMEOUT = 0x20
+ TCP_ENABLE_ECN = 0x104
+ TCP_KEEPALIVE = 0x10
+ TCP_KEEPCNT = 0x102
+ TCP_KEEPINTVL = 0x101
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x4
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_NOTSENT_LOWAT = 0x201
+ TCP_RXT_CONNDROPTIME = 0x80
+ TCP_RXT_FINDROP = 0x100
+ TCP_SENDMOREACKS = 0x103
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x40107458
+ TIOCDRAIN = 0x2000745e
+ TIOCDSIMICROCODE = 0x20007455
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x40487413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGWINSZ = 0x40087468
+ TIOCIXOFF = 0x20007480
+ TIOCIXON = 0x20007481
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x40047403
+ TIOCMODS = 0x80047404
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTYGNAME = 0x40807453
+ TIOCPTYGRANT = 0x20007454
+ TIOCPTYUNLK = 0x20007452
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCONS = 0x20007463
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x80487414
+ TIOCSETAF = 0x80487416
+ TIOCSETAW = 0x80487415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2000745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40107459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VT0 = 0x0
+ VT1 = 0x10000
+ VTDLY = 0x10000
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x10
+ WCOREFLAG = 0x80
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOWAIT = 0x20
+ WORDSIZE = 0x40
+ WSTOPPED = 0x8
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADARCH = syscall.Errno(0x56)
+ EBADEXEC = syscall.Errno(0x55)
+ EBADF = syscall.Errno(0x9)
+ EBADMACHO = syscall.Errno(0x58)
+ EBADMSG = syscall.Errno(0x5e)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x59)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDEVERR = syscall.Errno(0x53)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x5a)
+ EILSEQ = syscall.Errno(0x5c)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x6a)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5f)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x5d)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODATA = syscall.Errno(0x60)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x61)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x5b)
+ ENOPOLICY = syscall.Errno(0x67)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x62)
+ ENOSTR = syscall.Errno(0x63)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTRECOVERABLE = syscall.Errno(0x68)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x66)
+ EOVERFLOW = syscall.Errno(0x54)
+ EOWNERDEAD = syscall.Errno(0x69)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x64)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ EPWROFF = syscall.Errno(0x52)
+ EQFULL = syscall.Errno(0x6a)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHLIBVERS = syscall.Errno(0x57)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIME = syscall.Errno(0x65)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_arm64.go
new file mode 100644
index 000000000..3189c6b34
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_darwin_arm64.go
@@ -0,0 +1,1576 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm64,darwin
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1c
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x25
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1e
+ AF_IPX = 0x17
+ AF_ISDN = 0x1c
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x28
+ AF_NATM = 0x1f
+ AF_NDRV = 0x1b
+ AF_NETBIOS = 0x21
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PPP = 0x22
+ AF_PUP = 0x4
+ AF_RESERVED_36 = 0x24
+ AF_ROUTE = 0x11
+ AF_SIP = 0x18
+ AF_SNA = 0xb
+ AF_SYSTEM = 0x20
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_UTUN = 0x26
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc00c4279
+ BIOCGETIF = 0x4020426b
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4010426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044278
+ BIOCSETF = 0x80104267
+ BIOCSETFNR = 0x8010427e
+ BIOCSETIF = 0x8020426c
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8010426d
+ BIOCSSEESENT = 0x80044277
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DBUS = 0xe7
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_DVB_CI = 0xeb
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HHDLC = 0x79
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NOFCS = 0xe6
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPFILTER = 0x74
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPOIB = 0xf2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_ATM_CEMIC = 0xee
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FIBRECHANNEL = 0xea
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_SRX_E2E = 0xe9
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_JUNIPER_VS = 0xe8
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_PPP_WITHDIRECTION = 0xa6
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MATCHING_MAX = 0xf5
+ DLT_MATCHING_MIN = 0x68
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPEG_2_TS = 0xf3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_MUX27010 = 0xec
+ DLT_NETANALYZER = 0xf0
+ DLT_NETANALYZER_TRANSPARENT = 0xf1
+ DLT_NFC_LLCP = 0xf5
+ DLT_NFLOG = 0xef
+ DLT_NG40 = 0xf4
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PPP_WITH_DIRECTION = 0xa6
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_STANAG_5066_D_PDU = 0xed
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_USER0 = 0x93
+ DLT_USER1 = 0x94
+ DLT_USER10 = 0x9d
+ DLT_USER11 = 0x9e
+ DLT_USER12 = 0x9f
+ DLT_USER13 = 0xa0
+ DLT_USER14 = 0xa1
+ DLT_USER15 = 0xa2
+ DLT_USER2 = 0x95
+ DLT_USER3 = 0x96
+ DLT_USER4 = 0x97
+ DLT_USER5 = 0x98
+ DLT_USER6 = 0x99
+ DLT_USER7 = 0x9a
+ DLT_USER8 = 0x9b
+ DLT_USER9 = 0x9c
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_FS = -0x9
+ EVFILT_MACHPORT = -0x8
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0xe
+ EVFILT_THREADMARKER = 0xe
+ EVFILT_TIMER = -0x7
+ EVFILT_USER = -0xa
+ EVFILT_VM = -0xc
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_DISPATCH = 0x80
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG0 = 0x1000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_OOBAND = 0x2000
+ EV_POLL = 0x1000
+ EV_RECEIPT = 0x40
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_ADDFILESIGS = 0x3d
+ F_ADDSIGS = 0x3b
+ F_ALLOCATEALL = 0x4
+ F_ALLOCATECONTIG = 0x2
+ F_CHKCLEAN = 0x29
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x43
+ F_FINDSIGS = 0x4e
+ F_FLUSH_DATA = 0x28
+ F_FREEZE_FS = 0x35
+ F_FULLFSYNC = 0x33
+ F_GETCODEDIR = 0x48
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETLKPID = 0x42
+ F_GETNOSIGPIPE = 0x4a
+ F_GETOWN = 0x5
+ F_GETPATH = 0x32
+ F_GETPATH_MTMINFO = 0x47
+ F_GETPROTECTIONCLASS = 0x3f
+ F_GETPROTECTIONLEVEL = 0x4d
+ F_GLOBAL_NOCACHE = 0x37
+ F_LOG2PHYS = 0x31
+ F_LOG2PHYS_EXT = 0x41
+ F_NOCACHE = 0x30
+ F_NODIRECT = 0x3e
+ F_OK = 0x0
+ F_PATHPKG_CHECK = 0x34
+ F_PEOFPOSMODE = 0x3
+ F_PREALLOCATE = 0x2a
+ F_RDADVISE = 0x2c
+ F_RDAHEAD = 0x2d
+ F_RDLCK = 0x1
+ F_SETBACKINGSTORE = 0x46
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETLKWTIMEOUT = 0xa
+ F_SETNOSIGPIPE = 0x49
+ F_SETOWN = 0x6
+ F_SETPROTECTIONCLASS = 0x40
+ F_SETSIZE = 0x2b
+ F_SINGLE_WRITER = 0x4c
+ F_THAW_FS = 0x36
+ F_TRANSCODEKEY = 0x4b
+ F_UNLCK = 0x2
+ F_VOLPOSMODE = 0x4
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_AAL5 = 0x31
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ATM = 0x25
+ IFT_BRIDGE = 0xd1
+ IFT_CARP = 0xf8
+ IFT_CELLULAR = 0xff
+ IFT_CEPT = 0x13
+ IFT_DS3 = 0x1e
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0x38
+ IFT_FDDI = 0xf
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_GIF = 0x37
+ IFT_HDH1822 = 0x3
+ IFT_HIPPI = 0x2f
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE8023ADLAG = 0x88
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88026 = 0xa
+ IFT_L2VLAN = 0x87
+ IFT_LAPB = 0x10
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_NSIP = 0x1b
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PDP = 0xff
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PKTAP = 0xfe
+ IFT_PPP = 0x17
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PTPSERIAL = 0x16
+ IFT_RS232 = 0x21
+ IFT_SDLC = 0x11
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_STARLAN = 0xb
+ IFT_STF = 0x39
+ IFT_T1 = 0x12
+ IFT_ULTRA = 0x1d
+ IFT_V35 = 0x2d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LINKLOCALNETNUM = 0xa9fe0000
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0xfe
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEP = 0x21
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_2292DSTOPTS = 0x17
+ IPV6_2292HOPLIMIT = 0x14
+ IPV6_2292HOPOPTS = 0x16
+ IPV6_2292NEXTHOP = 0x15
+ IPV6_2292PKTINFO = 0x13
+ IPV6_2292PKTOPTIONS = 0x19
+ IPV6_2292RTHDR = 0x18
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_BOUND_IF = 0x7d
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x3c
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXOPTHDR = 0x800
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MAX_GROUP_SRC_FILTER = 0x200
+ IPV6_MAX_MEMBERSHIPS = 0xfff
+ IPV6_MAX_SOCK_SRC_FILTER = 0x80
+ IPV6_MIN_MEMBERSHIPS = 0x1f
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVTCLASS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x24
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_ADD_SOURCE_MEMBERSHIP = 0x46
+ IP_BLOCK_SOURCE = 0x48
+ IP_BOUND_IF = 0x19
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DROP_SOURCE_MEMBERSHIP = 0x47
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW_ADD = 0x28
+ IP_FW_DEL = 0x29
+ IP_FW_FLUSH = 0x2a
+ IP_FW_GET = 0x2c
+ IP_FW_RESETLOG = 0x2d
+ IP_FW_ZERO = 0x2b
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_GROUP_SRC_FILTER = 0x200
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MAX_SOCK_MUTE_FILTER = 0x80
+ IP_MAX_SOCK_SRC_FILTER = 0x80
+ IP_MF = 0x2000
+ IP_MIN_MEMBERSHIPS = 0x1f
+ IP_MSFILTER = 0x4a
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_IFINDEX = 0x42
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_NAT__XXX = 0x37
+ IP_OFFMASK = 0x1fff
+ IP_OLD_FW_ADD = 0x32
+ IP_OLD_FW_DEL = 0x33
+ IP_OLD_FW_FLUSH = 0x34
+ IP_OLD_FW_GET = 0x36
+ IP_OLD_FW_RESETLOG = 0x38
+ IP_OLD_FW_ZERO = 0x35
+ IP_OPTIONS = 0x1
+ IP_PKTINFO = 0x1a
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVPKTINFO = 0x1a
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x18
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_STRIPHDR = 0x17
+ IP_TOS = 0x3
+ IP_TRAFFIC_MGT_BACKGROUND = 0x41
+ IP_TTL = 0x4
+ IP_UNBLOCK_SOURCE = 0x49
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_CAN_REUSE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_FREE_REUSABLE = 0x7
+ MADV_FREE_REUSE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_WILLNEED = 0x3
+ MADV_ZERO_WIRED_PAGES = 0x6
+ MAP_ANON = 0x1000
+ MAP_COPY = 0x2
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_JIT = 0x800
+ MAP_NOCACHE = 0x400
+ MAP_NOEXTEND = 0x100
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_RESERVED0080 = 0x80
+ MAP_SHARED = 0x1
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_FLUSH = 0x400
+ MSG_HAVEMORE = 0x2000
+ MSG_HOLD = 0x800
+ MSG_NEEDSA = 0x10000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_RCVMORE = 0x4000
+ MSG_SEND = 0x1000
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MSG_WAITSTREAM = 0x200
+ MS_ASYNC = 0x1
+ MS_DEACTIVATE = 0x8
+ MS_INVALIDATE = 0x2
+ MS_KILLPAGES = 0x4
+ MS_SYNC = 0x10
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_DUMP2 = 0x7
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_IFLIST2 = 0x6
+ NET_RT_MAXID = 0xa
+ NET_RT_STAT = 0x4
+ NET_RT_TRASH = 0x5
+ NOFLSH = 0x80000000
+ NOTE_ABSOLUTE = 0x8
+ NOTE_ATTRIB = 0x8
+ NOTE_BACKGROUND = 0x40
+ NOTE_CHILD = 0x4
+ NOTE_CRITICAL = 0x20
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXITSTATUS = 0x4000000
+ NOTE_EXIT_CSERROR = 0x40000
+ NOTE_EXIT_DECRYPTFAIL = 0x10000
+ NOTE_EXIT_DETAIL = 0x2000000
+ NOTE_EXIT_DETAIL_MASK = 0x70000
+ NOTE_EXIT_MEMORY = 0x20000
+ NOTE_EXIT_REPARENTED = 0x80000
+ NOTE_EXTEND = 0x4
+ NOTE_FFAND = 0x40000000
+ NOTE_FFCOPY = 0xc0000000
+ NOTE_FFCTRLMASK = 0xc0000000
+ NOTE_FFLAGSMASK = 0xffffff
+ NOTE_FFNOP = 0x0
+ NOTE_FFOR = 0x80000000
+ NOTE_FORK = 0x40000000
+ NOTE_LEEWAY = 0x10
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_NONE = 0x80
+ NOTE_NSECONDS = 0x4
+ NOTE_PCTRLMASK = -0x100000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_REAP = 0x10000000
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_SECONDS = 0x1
+ NOTE_SIGNAL = 0x8000000
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRIGGER = 0x1000000
+ NOTE_USECONDS = 0x2
+ NOTE_VM_ERROR = 0x10000000
+ NOTE_VM_PRESSURE = 0x80000000
+ NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000
+ NOTE_VM_PRESSURE_TERMINATE = 0x40000000
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ OFDEL = 0x20000
+ OFILL = 0x80
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_ALERT = 0x20000000
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x1000000
+ O_CREAT = 0x200
+ O_DIRECTORY = 0x100000
+ O_DP_GETRAWENCRYPTED = 0x1
+ O_DSYNC = 0x400000
+ O_EVTONLY = 0x8000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x20000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_POPUP = 0x80000000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYMLINK = 0x200000
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PT_ATTACH = 0xa
+ PT_ATTACHEXC = 0xe
+ PT_CONTINUE = 0x7
+ PT_DENY_ATTACH = 0x1f
+ PT_DETACH = 0xb
+ PT_FIRSTMACH = 0x20
+ PT_FORCEQUOTA = 0x1e
+ PT_KILL = 0x8
+ PT_READ_D = 0x2
+ PT_READ_I = 0x1
+ PT_READ_U = 0x3
+ PT_SIGEXC = 0xc
+ PT_STEP = 0x9
+ PT_THUPDATE = 0xd
+ PT_TRACE_ME = 0x0
+ PT_WRITE_D = 0x5
+ PT_WRITE_I = 0x4
+ PT_WRITE_U = 0x6
+ RLIMIT_AS = 0x5
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_CPU_USAGE_MONITOR = 0x2
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x8
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_CLONING = 0x100
+ RTF_CONDEMNED = 0x2000000
+ RTF_DELCLONE = 0x80
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_IFREF = 0x4000000
+ RTF_IFSCOPE = 0x1000000
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MULTICAST = 0x800000
+ RTF_NOIFREF = 0x2000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_PROXY = 0x8000000
+ RTF_REJECT = 0x8
+ RTF_ROUTER = 0x10000000
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_WASCLONED = 0x20000
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_GET2 = 0x14
+ RTM_IFINFO = 0xe
+ RTM_IFINFO2 = 0x12
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_NEWMADDR2 = 0x13
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SCM_TIMESTAMP_MONOTONIC = 0x4
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCAIFADDR = 0x8040691a
+ SIOCARPIPLL = 0xc0206928
+ SIOCATMARK = 0x40047307
+ SIOCAUTOADDR = 0xc0206926
+ SIOCAUTONETMASK = 0x80206927
+ SIOCDELMULTI = 0x80206932
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFPHYADDR = 0x80206941
+ SIOCGDRVSPEC = 0xc028697b
+ SIOCGETVLAN = 0xc020697f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFALTMTU = 0xc0206948
+ SIOCGIFASYNCMAP = 0xc020697c
+ SIOCGIFBOND = 0xc0206947
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020695b
+ SIOCGIFCONF = 0xc00c6924
+ SIOCGIFDEVMTU = 0xc0206944
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFKPI = 0xc0206987
+ SIOCGIFMAC = 0xc0206982
+ SIOCGIFMEDIA = 0xc02c6938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206940
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPSRCADDR = 0xc020693f
+ SIOCGIFSTATUS = 0xc331693d
+ SIOCGIFVLAN = 0xc020697f
+ SIOCGIFWAKEFLAGS = 0xc0206988
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCIFCREATE = 0xc0206978
+ SIOCIFCREATE2 = 0xc020697a
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc0106981
+ SIOCRSLVMULTI = 0xc010693b
+ SIOCSDRVSPEC = 0x8028697b
+ SIOCSETVLAN = 0x8020697e
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFALTMTU = 0x80206945
+ SIOCSIFASYNCMAP = 0x8020697d
+ SIOCSIFBOND = 0x80206946
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020695a
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFKPI = 0x80206986
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMAC = 0x80206983
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x8040693e
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFVLAN = 0x8020697e
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_DONTTRUNC = 0x2000
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LABEL = 0x1010
+ SO_LINGER = 0x80
+ SO_LINGER_SEC = 0x1080
+ SO_NKE = 0x1021
+ SO_NOADDRERR = 0x1023
+ SO_NOSIGPIPE = 0x1022
+ SO_NOTIFYCONFLICT = 0x1026
+ SO_NP_EXTENSIONS = 0x1083
+ SO_NREAD = 0x1020
+ SO_NUMRCVPKT = 0x1112
+ SO_NWRITE = 0x1024
+ SO_OOBINLINE = 0x100
+ SO_PEERLABEL = 0x1011
+ SO_RANDOMPORT = 0x1082
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_REUSESHAREUID = 0x1025
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TIMESTAMP_MONOTONIC = 0x800
+ SO_TYPE = 0x1008
+ SO_UPCALLCLOSEWAIT = 0x1027
+ SO_USELOOPBACK = 0x40
+ SO_WANTMORE = 0x4000
+ SO_WANTOOBFLAG = 0x8000
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IFWHT = 0xe000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISTXT = 0x200
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CONNECTIONTIMEOUT = 0x20
+ TCP_ENABLE_ECN = 0x104
+ TCP_KEEPALIVE = 0x10
+ TCP_KEEPCNT = 0x102
+ TCP_KEEPINTVL = 0x101
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x4
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_NOTSENT_LOWAT = 0x201
+ TCP_RXT_CONNDROPTIME = 0x80
+ TCP_RXT_FINDROP = 0x100
+ TCP_SENDMOREACKS = 0x103
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x40107458
+ TIOCDRAIN = 0x2000745e
+ TIOCDSIMICROCODE = 0x20007455
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x40487413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGWINSZ = 0x40087468
+ TIOCIXOFF = 0x20007480
+ TIOCIXON = 0x20007481
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x40047403
+ TIOCMODS = 0x80047404
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTYGNAME = 0x40807453
+ TIOCPTYGRANT = 0x20007454
+ TIOCPTYUNLK = 0x20007452
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCONS = 0x20007463
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x80487414
+ TIOCSETAF = 0x80487416
+ TIOCSETAW = 0x80487415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2000745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40107459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VT0 = 0x0
+ VT1 = 0x10000
+ VTDLY = 0x10000
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x10
+ WCOREFLAG = 0x80
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOWAIT = 0x20
+ WORDSIZE = 0x40
+ WSTOPPED = 0x8
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADARCH = syscall.Errno(0x56)
+ EBADEXEC = syscall.Errno(0x55)
+ EBADF = syscall.Errno(0x9)
+ EBADMACHO = syscall.Errno(0x58)
+ EBADMSG = syscall.Errno(0x5e)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x59)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDEVERR = syscall.Errno(0x53)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x5a)
+ EILSEQ = syscall.Errno(0x5c)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x6a)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5f)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x5d)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODATA = syscall.Errno(0x60)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x61)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x5b)
+ ENOPOLICY = syscall.Errno(0x67)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x62)
+ ENOSTR = syscall.Errno(0x63)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTRECOVERABLE = syscall.Errno(0x68)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x66)
+ EOVERFLOW = syscall.Errno(0x54)
+ EOWNERDEAD = syscall.Errno(0x69)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x64)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ EPWROFF = syscall.Errno(0x52)
+ EQFULL = syscall.Errno(0x6a)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHLIBVERS = syscall.Errno(0x57)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIME = syscall.Errno(0x65)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "resource busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "operation timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "device power is off",
+ 83: "device error",
+ 84: "value too large to be stored in data type",
+ 85: "bad executable (or shared library)",
+ 86: "bad CPU type in executable",
+ 87: "shared library version mismatch",
+ 88: "malformed Mach-o file",
+ 89: "operation canceled",
+ 90: "identifier removed",
+ 91: "no message of desired type",
+ 92: "illegal byte sequence",
+ 93: "attribute not found",
+ 94: "bad message",
+ 95: "EMULTIHOP (Reserved)",
+ 96: "no message available on STREAM",
+ 97: "ENOLINK (Reserved)",
+ 98: "no STREAM resources",
+ 99: "not a STREAM",
+ 100: "protocol error",
+ 101: "STREAM ioctl timeout",
+ 102: "operation not supported on socket",
+ 103: "policy not found",
+ 104: "state not recoverable",
+ 105: "previous owner died",
+ 106: "interface output queue is full",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "suspended (signal)",
+ 18: "suspended",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_386.go
new file mode 100644
index 000000000..2a329f06e
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_386.go
@@ -0,0 +1,1530 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,dragonfly
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_ATM = 0x1e
+ AF_BLUETOOTH = 0x21
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x23
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1c
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x24
+ AF_MPLS = 0x22
+ AF_NATM = 0x1d
+ AF_NETGRAPH = 0x20
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x11
+ AF_SIP = 0x18
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc0084279
+ BIOCGETIF = 0x4020426b
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4008426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCLOCK = 0x2000427a
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044278
+ BIOCSETF = 0x80084267
+ BIOCSETIF = 0x8020426c
+ BIOCSETWF = 0x8008427b
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8008426d
+ BIOCSSEESENT = 0x80044277
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DEFAULTBUFSIZE = 0x1000
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MAX_CLONES = 0x80
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DOCSIS = 0x8f
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_HHDLC = 0x79
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPFILTER = 0x74
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_REDBACK_SMARTEDGE = 0x20
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DBF = 0xf
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_EXCEPT = -0x8
+ EVFILT_MARKER = 0xf
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0x8
+ EVFILT_TIMER = -0x7
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_NODATA = 0x1000
+ EV_ONESHOT = 0x10
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTEXIT_LWP = 0x10000
+ EXTEXIT_PROC = 0x0
+ EXTEXIT_SETINT = 0x1
+ EXTEXIT_SIMPLE = 0x0
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_DUP2FD = 0xa
+ F_DUP2FD_CLOEXEC = 0x12
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x11
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETOWN = 0x5
+ F_OK = 0x0
+ F_RDLCK = 0x1
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x118e72
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MONITOR = 0x40000
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NPOLLING = 0x100000
+ IFF_OACTIVE = 0x400
+ IFF_OACTIVE_COMPAT = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_POLLING = 0x10000
+ IFF_POLLING_COMPAT = 0x10000
+ IFF_PPROMISC = 0x20000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_SMART = 0x20
+ IFF_STATICARP = 0x80000
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf8
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf2
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PLC = 0xae
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf1
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_STF = 0xf3
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VOICEEM = 0x64
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CARP = 0x70
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0xfe
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEP = 0x21
+ IPPROTO_SKIP = 0x39
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TLSP = 0x38
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_UNKNOWN = 0x102
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_AUTOFLOWLABEL = 0x3b
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MMTU = 0x500
+ IPV6_MSFILTER = 0x4a
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_PATHMTU = 0x2c
+ IPV6_PKTINFO = 0x2e
+ IPV6_PKTOPTIONS = 0x34
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_PREFER_TEMPADDR = 0x3f
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW_ADD = 0x32
+ IP_FW_DEL = 0x33
+ IP_FW_FLUSH = 0x34
+ IP_FW_GET = 0x36
+ IP_FW_RESETLOG = 0x37
+ IP_FW_ZERO = 0x35
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x42
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x1
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x41
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_AUTOSYNC = 0x7
+ MADV_CONTROL_END = 0xb
+ MADV_CONTROL_START = 0xa
+ MADV_CORE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_INVAL = 0xa
+ MADV_NOCORE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_NOSYNC = 0x6
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_SETMAP = 0xb
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x1000
+ MAP_COPY = 0x2
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_INHERIT = 0x80
+ MAP_NOCORE = 0x20000
+ MAP_NOEXTEND = 0x100
+ MAP_NORESERVE = 0x40
+ MAP_NOSYNC = 0x800
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_SHARED = 0x1
+ MAP_SIZEALIGN = 0x40000
+ MAP_STACK = 0x400
+ MAP_TRYFIXED = 0x10000
+ MAP_VPAGETABLE = 0x2000
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_FBLOCKING = 0x10000
+ MSG_FMASK = 0xffff0000
+ MSG_FNONBLOCKING = 0x20000
+ MSG_NOSIGNAL = 0x400
+ MSG_NOTIFICATION = 0x200
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_SYNC = 0x800
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x2
+ MS_SYNC = 0x0
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_MAXID = 0x4
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_OOB = 0x2
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x20000
+ O_CREAT = 0x200
+ O_DIRECT = 0x10000
+ O_DIRECTORY = 0x8000000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FAPPEND = 0x100000
+ O_FASYNCWRITE = 0x800000
+ O_FBLOCKING = 0x40000
+ O_FBUFFERED = 0x2000000
+ O_FMASK = 0x7fc0000
+ O_FNONBLOCKING = 0x80000
+ O_FOFFSET = 0x200000
+ O_FSYNC = 0x80
+ O_FSYNCWRITE = 0x400000
+ O_FUNBUFFERED = 0x1000000
+ O_MAPONREAD = 0x4000000
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_AS = 0xa
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0xb
+ RTAX_MPLS1 = 0x8
+ RTAX_MPLS2 = 0x9
+ RTAX_MPLS3 = 0xa
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_MPLS1 = 0x100
+ RTA_MPLS2 = 0x200
+ RTA_MPLS3 = 0x400
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_CLONING = 0x100
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MPLSOPS = 0x1000000
+ RTF_MULTICAST = 0x800000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_REJECT = 0x8
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_WASCLONED = 0x20000
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_IEEE80211 = 0x12
+ RTM_IFANNOUNCE = 0x11
+ RTM_IFINFO = 0xe
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x6
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_IWCAPSEGS = 0x400
+ RTV_IWMAXSEGS = 0x200
+ RTV_MSL = 0x100
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCADDRT = 0x8030720a
+ SIOCAIFADDR = 0x8040691a
+ SIOCALIFADDR = 0x8118691b
+ SIOCATMARK = 0x40047307
+ SIOCDELMULTI = 0x80206932
+ SIOCDELRT = 0x8030720b
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFPHYADDR = 0x80206949
+ SIOCDLIFADDR = 0x8118691d
+ SIOCGDRVSPEC = 0xc01c697b
+ SIOCGETSGCNT = 0xc0147210
+ SIOCGETVIFCNT = 0xc014720f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020691f
+ SIOCGIFCONF = 0xc0086924
+ SIOCGIFDATA = 0xc0206926
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFGMEMB = 0xc024698a
+ SIOCGIFINDEX = 0xc0206920
+ SIOCGIFMEDIA = 0xc0286938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206948
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPOLLCPU = 0xc020697e
+ SIOCGIFPSRCADDR = 0xc0206947
+ SIOCGIFSTATUS = 0xc331693b
+ SIOCGIFTSOLEN = 0xc0206980
+ SIOCGLIFADDR = 0xc118691c
+ SIOCGLIFPHYADDR = 0xc118694b
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGPRIVATE_0 = 0xc0206950
+ SIOCGPRIVATE_1 = 0xc0206951
+ SIOCIFCREATE = 0xc020697a
+ SIOCIFCREATE2 = 0xc020697c
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc00c6978
+ SIOCSDRVSPEC = 0x801c697b
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020691e
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNAME = 0x80206928
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFPOLLCPU = 0x8020697d
+ SIOCSIFTSOLEN = 0x8020697f
+ SIOCSLIFPHYADDR = 0x8118694a
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ACCEPTFILTER = 0x1000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_NOSIGPIPE = 0x800
+ SO_OOBINLINE = 0x100
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDSPACE = 0x100a
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_FASTKEEP = 0x80
+ TCP_KEEPCNT = 0x400
+ TCP_KEEPIDLE = 0x100
+ TCP_KEEPINIT = 0x20
+ TCP_KEEPINTVL = 0x200
+ TCP_MAXBURST = 0x4
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MINMSS = 0x100
+ TCP_MIN_WINSHIFT = 0x5
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_SIGNATURE_ENABLE = 0x10
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x40087458
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGSID = 0x40047463
+ TIOCGSIZE = 0x40087468
+ TIOCGWINSZ = 0x40087468
+ TIOCISPTMASTER = 0x20007455
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x40047403
+ TIOCMODS = 0x80047404
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2000745f
+ TIOCSPGRP = 0x80047476
+ TIOCSSIZE = 0x80087467
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40087459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VCHECKPT = 0x13
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VERASE2 = 0x7
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x4
+ WCOREFLAG = 0x80
+ WLINUXCLONE = 0x80000000
+ WNOHANG = 0x1
+ WSTOPPED = 0x7f
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EASYNC = syscall.Errno(0x63)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x59)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x55)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDOOFUS = syscall.Errno(0x58)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x52)
+ EILSEQ = syscall.Errno(0x56)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x63)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5a)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x57)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x5b)
+ ENOMEDIUM = syscall.Errno(0x5d)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x53)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x54)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x5c)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUNUSED94 = syscall.Errno(0x5e)
+ EUNUSED95 = syscall.Errno(0x5f)
+ EUNUSED96 = syscall.Errno(0x60)
+ EUNUSED97 = syscall.Errno(0x61)
+ EUNUSED98 = syscall.Errno(0x62)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCKPT = syscall.Signal(0x21)
+ SIGCKPTEXIT = syscall.Signal(0x22)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHR = syscall.Signal(0x20)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "operation timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "identifier removed",
+ 83: "no message of desired type",
+ 84: "value too large to be stored in data type",
+ 85: "operation canceled",
+ 86: "illegal byte sequence",
+ 87: "attribute not found",
+ 88: "programming error",
+ 89: "bad message",
+ 90: "multihop attempted",
+ 91: "link has been severed",
+ 92: "protocol error",
+ 93: "no medium found",
+ 94: "unknown error: 94",
+ 95: "unknown error: 95",
+ 96: "unknown error: 96",
+ 97: "unknown error: 97",
+ 98: "unknown error: 98",
+ 99: "unknown error: 99",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "suspended (signal)",
+ 18: "suspended",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "thread Scheduler",
+ 33: "checkPoint",
+ 34: "checkPointExit",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
new file mode 100644
index 000000000..0feceee15
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
@@ -0,0 +1,1530 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,dragonfly
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_ATM = 0x1e
+ AF_BLUETOOTH = 0x21
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x23
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1c
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x24
+ AF_MPLS = 0x22
+ AF_NATM = 0x1d
+ AF_NETGRAPH = 0x20
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x11
+ AF_SIP = 0x18
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc0104279
+ BIOCGETIF = 0x4020426b
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4010426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCLOCK = 0x2000427a
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044278
+ BIOCSETF = 0x80104267
+ BIOCSETIF = 0x8020426c
+ BIOCSETWF = 0x8010427b
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8010426d
+ BIOCSSEESENT = 0x80044277
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x8
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DEFAULTBUFSIZE = 0x1000
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MAX_CLONES = 0x80
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DOCSIS = 0x8f
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_HHDLC = 0x79
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPFILTER = 0x74
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_REDBACK_SMARTEDGE = 0x20
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DBF = 0xf
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_EXCEPT = -0x8
+ EVFILT_MARKER = 0xf
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0x8
+ EVFILT_TIMER = -0x7
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_NODATA = 0x1000
+ EV_ONESHOT = 0x10
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTEXIT_LWP = 0x10000
+ EXTEXIT_PROC = 0x0
+ EXTEXIT_SETINT = 0x1
+ EXTEXIT_SIMPLE = 0x0
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_DUP2FD = 0xa
+ F_DUP2FD_CLOEXEC = 0x12
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x11
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETOWN = 0x5
+ F_OK = 0x0
+ F_RDLCK = 0x1
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x118e72
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MONITOR = 0x40000
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NPOLLING = 0x100000
+ IFF_OACTIVE = 0x400
+ IFF_OACTIVE_COMPAT = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_POLLING = 0x10000
+ IFF_POLLING_COMPAT = 0x10000
+ IFF_PPROMISC = 0x20000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_SMART = 0x20
+ IFF_STATICARP = 0x80000
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf8
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf2
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PLC = 0xae
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf1
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_STF = 0xf3
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VOICEEM = 0x64
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CARP = 0x70
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0xfe
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEP = 0x21
+ IPPROTO_SKIP = 0x39
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TLSP = 0x38
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_UNKNOWN = 0x102
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_AUTOFLOWLABEL = 0x3b
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MMTU = 0x500
+ IPV6_MSFILTER = 0x4a
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_PATHMTU = 0x2c
+ IPV6_PKTINFO = 0x2e
+ IPV6_PKTOPTIONS = 0x34
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_PREFER_TEMPADDR = 0x3f
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW_ADD = 0x32
+ IP_FW_DEL = 0x33
+ IP_FW_FLUSH = 0x34
+ IP_FW_GET = 0x36
+ IP_FW_RESETLOG = 0x37
+ IP_FW_ZERO = 0x35
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x42
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x1
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x41
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_AUTOSYNC = 0x7
+ MADV_CONTROL_END = 0xb
+ MADV_CONTROL_START = 0xa
+ MADV_CORE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_INVAL = 0xa
+ MADV_NOCORE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_NOSYNC = 0x6
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_SETMAP = 0xb
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x1000
+ MAP_COPY = 0x2
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_INHERIT = 0x80
+ MAP_NOCORE = 0x20000
+ MAP_NOEXTEND = 0x100
+ MAP_NORESERVE = 0x40
+ MAP_NOSYNC = 0x800
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_SHARED = 0x1
+ MAP_SIZEALIGN = 0x40000
+ MAP_STACK = 0x400
+ MAP_TRYFIXED = 0x10000
+ MAP_VPAGETABLE = 0x2000
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_FBLOCKING = 0x10000
+ MSG_FMASK = 0xffff0000
+ MSG_FNONBLOCKING = 0x20000
+ MSG_NOSIGNAL = 0x400
+ MSG_NOTIFICATION = 0x200
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_SYNC = 0x800
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x2
+ MS_SYNC = 0x0
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_MAXID = 0x4
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_OOB = 0x2
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x20000
+ O_CREAT = 0x200
+ O_DIRECT = 0x10000
+ O_DIRECTORY = 0x8000000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FAPPEND = 0x100000
+ O_FASYNCWRITE = 0x800000
+ O_FBLOCKING = 0x40000
+ O_FBUFFERED = 0x2000000
+ O_FMASK = 0x7fc0000
+ O_FNONBLOCKING = 0x80000
+ O_FOFFSET = 0x200000
+ O_FSYNC = 0x80
+ O_FSYNCWRITE = 0x400000
+ O_FUNBUFFERED = 0x1000000
+ O_MAPONREAD = 0x4000000
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_AS = 0xa
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0xb
+ RTAX_MPLS1 = 0x8
+ RTAX_MPLS2 = 0x9
+ RTAX_MPLS3 = 0xa
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_MPLS1 = 0x100
+ RTA_MPLS2 = 0x200
+ RTA_MPLS3 = 0x400
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_CLONING = 0x100
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MPLSOPS = 0x1000000
+ RTF_MULTICAST = 0x800000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_REJECT = 0x8
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_WASCLONED = 0x20000
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_IEEE80211 = 0x12
+ RTM_IFANNOUNCE = 0x11
+ RTM_IFINFO = 0xe
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x6
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_IWCAPSEGS = 0x400
+ RTV_IWMAXSEGS = 0x200
+ RTV_MSL = 0x100
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCADDRT = 0x8040720a
+ SIOCAIFADDR = 0x8040691a
+ SIOCALIFADDR = 0x8118691b
+ SIOCATMARK = 0x40047307
+ SIOCDELMULTI = 0x80206932
+ SIOCDELRT = 0x8040720b
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFPHYADDR = 0x80206949
+ SIOCDLIFADDR = 0x8118691d
+ SIOCGDRVSPEC = 0xc028697b
+ SIOCGETSGCNT = 0xc0207210
+ SIOCGETVIFCNT = 0xc028720f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020691f
+ SIOCGIFCONF = 0xc0106924
+ SIOCGIFDATA = 0xc0206926
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFGMEMB = 0xc028698a
+ SIOCGIFINDEX = 0xc0206920
+ SIOCGIFMEDIA = 0xc0306938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206948
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPOLLCPU = 0xc020697e
+ SIOCGIFPSRCADDR = 0xc0206947
+ SIOCGIFSTATUS = 0xc331693b
+ SIOCGIFTSOLEN = 0xc0206980
+ SIOCGLIFADDR = 0xc118691c
+ SIOCGLIFPHYADDR = 0xc118694b
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGPRIVATE_0 = 0xc0206950
+ SIOCGPRIVATE_1 = 0xc0206951
+ SIOCIFCREATE = 0xc020697a
+ SIOCIFCREATE2 = 0xc020697c
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc0106978
+ SIOCSDRVSPEC = 0x8028697b
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020691e
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNAME = 0x80206928
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFPOLLCPU = 0x8020697d
+ SIOCSIFTSOLEN = 0x8020697f
+ SIOCSLIFPHYADDR = 0x8118694a
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ACCEPTFILTER = 0x1000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_NOSIGPIPE = 0x800
+ SO_OOBINLINE = 0x100
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDSPACE = 0x100a
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_FASTKEEP = 0x80
+ TCP_KEEPCNT = 0x400
+ TCP_KEEPIDLE = 0x100
+ TCP_KEEPINIT = 0x20
+ TCP_KEEPINTVL = 0x200
+ TCP_MAXBURST = 0x4
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MINMSS = 0x100
+ TCP_MIN_WINSHIFT = 0x5
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_SIGNATURE_ENABLE = 0x10
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x40107458
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGSID = 0x40047463
+ TIOCGSIZE = 0x40087468
+ TIOCGWINSZ = 0x40087468
+ TIOCISPTMASTER = 0x20007455
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x40047403
+ TIOCMODS = 0x80047404
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2000745f
+ TIOCSPGRP = 0x80047476
+ TIOCSSIZE = 0x80087467
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40107459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VCHECKPT = 0x13
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VERASE2 = 0x7
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x4
+ WCOREFLAG = 0x80
+ WLINUXCLONE = 0x80000000
+ WNOHANG = 0x1
+ WSTOPPED = 0x7f
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EASYNC = syscall.Errno(0x63)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x59)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x55)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDOOFUS = syscall.Errno(0x58)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x52)
+ EILSEQ = syscall.Errno(0x56)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x63)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5a)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x57)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x5b)
+ ENOMEDIUM = syscall.Errno(0x5d)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x53)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x54)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x5c)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUNUSED94 = syscall.Errno(0x5e)
+ EUNUSED95 = syscall.Errno(0x5f)
+ EUNUSED96 = syscall.Errno(0x60)
+ EUNUSED97 = syscall.Errno(0x61)
+ EUNUSED98 = syscall.Errno(0x62)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCKPT = syscall.Signal(0x21)
+ SIGCKPTEXIT = syscall.Signal(0x22)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHR = syscall.Signal(0x20)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "operation timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "identifier removed",
+ 83: "no message of desired type",
+ 84: "value too large to be stored in data type",
+ 85: "operation canceled",
+ 86: "illegal byte sequence",
+ 87: "attribute not found",
+ 88: "programming error",
+ 89: "bad message",
+ 90: "multihop attempted",
+ 91: "link has been severed",
+ 92: "protocol error",
+ 93: "no medium found",
+ 94: "unknown error: 94",
+ 95: "unknown error: 95",
+ 96: "unknown error: 96",
+ 97: "unknown error: 97",
+ 98: "unknown error: 98",
+ 99: "unknown error: 99",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "suspended (signal)",
+ 18: "suspended",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "thread Scheduler",
+ 33: "checkPoint",
+ 34: "checkPointExit",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_386.go
new file mode 100644
index 000000000..7b95751c3
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_386.go
@@ -0,0 +1,1743 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,freebsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_ARP = 0x23
+ AF_ATM = 0x1e
+ AF_BLUETOOTH = 0x24
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x25
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1c
+ AF_INET6_SDP = 0x2a
+ AF_INET_SDP = 0x28
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x2a
+ AF_NATM = 0x1d
+ AF_NETBIOS = 0x6
+ AF_NETGRAPH = 0x20
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x11
+ AF_SCLUSTER = 0x22
+ AF_SIP = 0x18
+ AF_SLOW = 0x21
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VENDOR00 = 0x27
+ AF_VENDOR01 = 0x29
+ AF_VENDOR02 = 0x2b
+ AF_VENDOR03 = 0x2d
+ AF_VENDOR04 = 0x2f
+ AF_VENDOR05 = 0x31
+ AF_VENDOR06 = 0x33
+ AF_VENDOR07 = 0x35
+ AF_VENDOR08 = 0x37
+ AF_VENDOR09 = 0x39
+ AF_VENDOR10 = 0x3b
+ AF_VENDOR11 = 0x3d
+ AF_VENDOR12 = 0x3f
+ AF_VENDOR13 = 0x41
+ AF_VENDOR14 = 0x43
+ AF_VENDOR15 = 0x45
+ AF_VENDOR16 = 0x47
+ AF_VENDOR17 = 0x49
+ AF_VENDOR18 = 0x4b
+ AF_VENDOR19 = 0x4d
+ AF_VENDOR20 = 0x4f
+ AF_VENDOR21 = 0x51
+ AF_VENDOR22 = 0x53
+ AF_VENDOR23 = 0x55
+ AF_VENDOR24 = 0x57
+ AF_VENDOR25 = 0x59
+ AF_VENDOR26 = 0x5b
+ AF_VENDOR27 = 0x5d
+ AF_VENDOR28 = 0x5f
+ AF_VENDOR29 = 0x61
+ AF_VENDOR30 = 0x63
+ AF_VENDOR31 = 0x65
+ AF_VENDOR32 = 0x67
+ AF_VENDOR33 = 0x69
+ AF_VENDOR34 = 0x6b
+ AF_VENDOR35 = 0x6d
+ AF_VENDOR36 = 0x6f
+ AF_VENDOR37 = 0x71
+ AF_VENDOR38 = 0x73
+ AF_VENDOR39 = 0x75
+ AF_VENDOR40 = 0x77
+ AF_VENDOR41 = 0x79
+ AF_VENDOR42 = 0x7b
+ AF_VENDOR43 = 0x7d
+ AF_VENDOR44 = 0x7f
+ AF_VENDOR45 = 0x81
+ AF_VENDOR46 = 0x83
+ AF_VENDOR47 = 0x85
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B460800 = 0x70800
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B921600 = 0xe1000
+ B9600 = 0x2580
+ BIOCFEEDBACK = 0x8004427c
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDIRECTION = 0x40044276
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc0084279
+ BIOCGETBUFMODE = 0x4004427d
+ BIOCGETIF = 0x4020426b
+ BIOCGETZMAX = 0x4004427f
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4008426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCGTSTAMP = 0x40044283
+ BIOCIMMEDIATE = 0x80044270
+ BIOCLOCK = 0x2000427a
+ BIOCPROMISC = 0x20004269
+ BIOCROTZBUF = 0x400c4280
+ BIOCSBLEN = 0xc0044266
+ BIOCSDIRECTION = 0x80044277
+ BIOCSDLT = 0x80044278
+ BIOCSETBUFMODE = 0x8004427e
+ BIOCSETF = 0x80084267
+ BIOCSETFNR = 0x80084282
+ BIOCSETIF = 0x8020426c
+ BIOCSETWF = 0x8008427b
+ BIOCSETZBUF = 0x800c4281
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8008426d
+ BIOCSSEESENT = 0x80044277
+ BIOCSTSTAMP = 0x80044284
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_BUFMODE_BUFFER = 0x1
+ BPF_BUFMODE_ZBUF = 0x2
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_T_BINTIME = 0x2
+ BPF_T_BINTIME_FAST = 0x102
+ BPF_T_BINTIME_MONOTONIC = 0x202
+ BPF_T_BINTIME_MONOTONIC_FAST = 0x302
+ BPF_T_FAST = 0x100
+ BPF_T_FLAG_MASK = 0x300
+ BPF_T_FORMAT_MASK = 0x3
+ BPF_T_MICROTIME = 0x0
+ BPF_T_MICROTIME_FAST = 0x100
+ BPF_T_MICROTIME_MONOTONIC = 0x200
+ BPF_T_MICROTIME_MONOTONIC_FAST = 0x300
+ BPF_T_MONOTONIC = 0x200
+ BPF_T_MONOTONIC_FAST = 0x300
+ BPF_T_NANOTIME = 0x1
+ BPF_T_NANOTIME_FAST = 0x101
+ BPF_T_NANOTIME_MONOTONIC = 0x201
+ BPF_T_NANOTIME_MONOTONIC_FAST = 0x301
+ BPF_T_NONE = 0x3
+ BPF_T_NORMAL = 0x0
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CLOCK_MONOTONIC = 0x4
+ CLOCK_MONOTONIC_FAST = 0xc
+ CLOCK_MONOTONIC_PRECISE = 0xb
+ CLOCK_PROCESS_CPUTIME_ID = 0xf
+ CLOCK_PROF = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_FAST = 0xa
+ CLOCK_REALTIME_PRECISE = 0x9
+ CLOCK_SECOND = 0xd
+ CLOCK_THREAD_CPUTIME_ID = 0xe
+ CLOCK_UPTIME = 0x5
+ CLOCK_UPTIME_FAST = 0x8
+ CLOCK_UPTIME_PRECISE = 0x7
+ CLOCK_VIRTUAL = 0x1
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0x18
+ CTL_NET = 0x4
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DBUS = 0xe7
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_DVB_CI = 0xeb
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HHDLC = 0x79
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NOFCS = 0xe6
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPFILTER = 0x74
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPOIB = 0xf2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_ATM_CEMIC = 0xee
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FIBRECHANNEL = 0xea
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_SRX_E2E = 0xe9
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_JUNIPER_VS = 0xe8
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_PPP_WITHDIRECTION = 0xa6
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MATCHING_MAX = 0xf6
+ DLT_MATCHING_MIN = 0x68
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPEG_2_TS = 0xf3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_MUX27010 = 0xec
+ DLT_NETANALYZER = 0xf0
+ DLT_NETANALYZER_TRANSPARENT = 0xf1
+ DLT_NFC_LLCP = 0xf5
+ DLT_NFLOG = 0xef
+ DLT_NG40 = 0xf4
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x79
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PPP_WITH_DIRECTION = 0xa6
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_STANAG_5066_D_PDU = 0xed
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_USER0 = 0x93
+ DLT_USER1 = 0x94
+ DLT_USER10 = 0x9d
+ DLT_USER11 = 0x9e
+ DLT_USER12 = 0x9f
+ DLT_USER13 = 0xa0
+ DLT_USER14 = 0xa1
+ DLT_USER15 = 0xa2
+ DLT_USER2 = 0x95
+ DLT_USER3 = 0x96
+ DLT_USER4 = 0x97
+ DLT_USER5 = 0x98
+ DLT_USER6 = 0x99
+ DLT_USER7 = 0x9a
+ DLT_USER8 = 0x9b
+ DLT_USER9 = 0x9c
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_FS = -0x9
+ EVFILT_LIO = -0xa
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0xb
+ EVFILT_TIMER = -0x7
+ EVFILT_USER = -0xb
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_DISPATCH = 0x80
+ EV_DROP = 0x1000
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_RECEIPT = 0x40
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTATTR_NAMESPACE_EMPTY = 0x0
+ EXTATTR_NAMESPACE_SYSTEM = 0x2
+ EXTATTR_NAMESPACE_USER = 0x1
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_CANCEL = 0x5
+ F_DUP2FD = 0xa
+ F_DUP2FD_CLOEXEC = 0x12
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x11
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0xb
+ F_GETOWN = 0x5
+ F_OGETLK = 0x7
+ F_OK = 0x0
+ F_OSETLK = 0x8
+ F_OSETLKW = 0x9
+ F_RDAHEAD = 0x10
+ F_RDLCK = 0x1
+ F_READAHEAD = 0xf
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0xc
+ F_SETLKW = 0xd
+ F_SETLK_REMOTE = 0xe
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_UNLCKSYS = 0x4
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x218f72
+ IFF_CANTCONFIG = 0x10000
+ IFF_DEBUG = 0x4
+ IFF_DRV_OACTIVE = 0x400
+ IFF_DRV_RUNNING = 0x40
+ IFF_DYING = 0x200000
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MONITOR = 0x40000
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PPROMISC = 0x20000
+ IFF_PROMISC = 0x100
+ IFF_RENAMING = 0x400000
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_SMART = 0x20
+ IFF_STATICARP = 0x80000
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf8
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf2
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_IPXIP = 0xf9
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf6
+ IFT_PFSYNC = 0xf7
+ IFT_PLC = 0xae
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf1
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_STF = 0xd7
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VOICEEM = 0x64
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IN_RFC3021_MASK = 0xfffffffe
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CARP = 0x70
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0x102
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HIP = 0x8b
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MH = 0x87
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_MPLS = 0x89
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OLD_DIVERT = 0xfe
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_RESERVED_253 = 0xfd
+ IPPROTO_RESERVED_254 = 0xfe
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEND = 0x103
+ IPPROTO_SEP = 0x21
+ IPPROTO_SHIM6 = 0x8c
+ IPPROTO_SKIP = 0x39
+ IPPROTO_SPACER = 0x7fff
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TLSP = 0x38
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_AUTOFLOWLABEL = 0x3b
+ IPV6_BINDANY = 0x40
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXOPTHDR = 0x800
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MAX_GROUP_SRC_FILTER = 0x200
+ IPV6_MAX_MEMBERSHIPS = 0xfff
+ IPV6_MAX_SOCK_SRC_FILTER = 0x80
+ IPV6_MIN_MEMBERSHIPS = 0x1f
+ IPV6_MMTU = 0x500
+ IPV6_MSFILTER = 0x4a
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_PATHMTU = 0x2c
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_PREFER_TEMPADDR = 0x3f
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_ADD_SOURCE_MEMBERSHIP = 0x46
+ IP_BINDANY = 0x18
+ IP_BLOCK_SOURCE = 0x48
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DONTFRAG = 0x43
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DROP_SOURCE_MEMBERSHIP = 0x47
+ IP_DUMMYNET3 = 0x31
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW3 = 0x30
+ IP_FW_ADD = 0x32
+ IP_FW_DEL = 0x33
+ IP_FW_FLUSH = 0x34
+ IP_FW_GET = 0x36
+ IP_FW_NAT_CFG = 0x38
+ IP_FW_NAT_DEL = 0x39
+ IP_FW_NAT_GET_CONFIG = 0x3a
+ IP_FW_NAT_GET_LOG = 0x3b
+ IP_FW_RESETLOG = 0x37
+ IP_FW_TABLE_ADD = 0x28
+ IP_FW_TABLE_DEL = 0x29
+ IP_FW_TABLE_FLUSH = 0x2a
+ IP_FW_TABLE_GETSIZE = 0x2b
+ IP_FW_TABLE_LIST = 0x2c
+ IP_FW_ZERO = 0x35
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_GROUP_SRC_FILTER = 0x200
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MAX_SOCK_MUTE_FILTER = 0x80
+ IP_MAX_SOCK_SRC_FILTER = 0x80
+ IP_MAX_SOURCE_FILTER = 0x400
+ IP_MF = 0x2000
+ IP_MINTTL = 0x42
+ IP_MIN_MEMBERSHIPS = 0x1f
+ IP_MSFILTER = 0x4a
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_OFFMASK = 0x1fff
+ IP_ONESBCAST = 0x17
+ IP_OPTIONS = 0x1
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTOS = 0x44
+ IP_RECVTTL = 0x41
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_SENDSRCADDR = 0x7
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ IP_UNBLOCK_SOURCE = 0x49
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_AUTOSYNC = 0x7
+ MADV_CORE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_NOCORE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_NOSYNC = 0x6
+ MADV_PROTECT = 0xa
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_WILLNEED = 0x3
+ MAP_ALIGNED_SUPER = 0x1000000
+ MAP_ALIGNMENT_MASK = -0x1000000
+ MAP_ALIGNMENT_SHIFT = 0x18
+ MAP_ANON = 0x1000
+ MAP_ANONYMOUS = 0x1000
+ MAP_COPY = 0x2
+ MAP_EXCL = 0x4000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_NOCORE = 0x20000
+ MAP_NORESERVE = 0x40
+ MAP_NOSYNC = 0x800
+ MAP_PREFAULT_READ = 0x40000
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_RESERVED0080 = 0x80
+ MAP_RESERVED0100 = 0x100
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x400
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CMSG_CLOEXEC = 0x40000
+ MSG_COMPAT = 0x8000
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_NBIO = 0x4000
+ MSG_NOSIGNAL = 0x20000
+ MSG_NOTIFICATION = 0x2000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x2
+ MS_SYNC = 0x0
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_IFLISTL = 0x5
+ NET_RT_IFMALIST = 0x4
+ NET_RT_MAXID = 0x6
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FFAND = 0x40000000
+ NOTE_FFCOPY = 0xc0000000
+ NOTE_FFCTRLMASK = 0xc0000000
+ NOTE_FFLAGSMASK = 0xffffff
+ NOTE_FFNOP = 0x0
+ NOTE_FFOR = 0x80000000
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRIGGER = 0x1000000
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x100000
+ O_CREAT = 0x200
+ O_DIRECT = 0x10000
+ O_DIRECTORY = 0x20000
+ O_EXCL = 0x800
+ O_EXEC = 0x40000
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_TTY_INIT = 0x80000
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_AS = 0xa
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x8
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_FMASK = 0x1004d808
+ RTF_GATEWAY = 0x2
+ RTF_GWFLAG_COMPAT = 0x80000000
+ RTF_HOST = 0x4
+ RTF_LLDATA = 0x400
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MULTICAST = 0x800000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_REJECT = 0x8
+ RTF_RNH_LOCKED = 0x40000000
+ RTF_STATIC = 0x800
+ RTF_STICKY = 0x10000000
+ RTF_UP = 0x1
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_IEEE80211 = 0x12
+ RTM_IFANNOUNCE = 0x11
+ RTM_IFINFO = 0xe
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RTV_WEIGHT = 0x100
+ RT_ALL_FIBS = -0x1
+ RT_CACHING_CONTEXT = 0x1
+ RT_DEFAULT_FIB = 0x0
+ RT_NORTREF = 0x2
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_BINTIME = 0x4
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCADDRT = 0x8030720a
+ SIOCAIFADDR = 0x8040691a
+ SIOCAIFGROUP = 0x80246987
+ SIOCALIFADDR = 0x8118691b
+ SIOCATMARK = 0x40047307
+ SIOCDELMULTI = 0x80206932
+ SIOCDELRT = 0x8030720b
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFGROUP = 0x80246989
+ SIOCDIFPHYADDR = 0x80206949
+ SIOCDLIFADDR = 0x8118691d
+ SIOCGDRVSPEC = 0xc01c697b
+ SIOCGETSGCNT = 0xc0147210
+ SIOCGETVIFCNT = 0xc014720f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020691f
+ SIOCGIFCONF = 0xc0086924
+ SIOCGIFDESCR = 0xc020692a
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFIB = 0xc020695c
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFGMEMB = 0xc024698a
+ SIOCGIFGROUP = 0xc0246988
+ SIOCGIFINDEX = 0xc0206920
+ SIOCGIFMAC = 0xc0206926
+ SIOCGIFMEDIA = 0xc0286938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206948
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPSRCADDR = 0xc0206947
+ SIOCGIFSTATUS = 0xc331693b
+ SIOCGLIFADDR = 0xc118691c
+ SIOCGLIFPHYADDR = 0xc118694b
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGPRIVATE_0 = 0xc0206950
+ SIOCGPRIVATE_1 = 0xc0206951
+ SIOCIFCREATE = 0xc020697a
+ SIOCIFCREATE2 = 0xc020697c
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc00c6978
+ SIOCSDRVSPEC = 0x801c697b
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020691e
+ SIOCSIFDESCR = 0x80206929
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFIB = 0x8020695d
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMAC = 0x80206927
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNAME = 0x80206928
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFRVNET = 0xc020695b
+ SIOCSIFVNET = 0xc020695a
+ SIOCSLIFPHYADDR = 0x8118694a
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_CLOEXEC = 0x10000000
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_NONBLOCK = 0x20000000
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ACCEPTFILTER = 0x1000
+ SO_BINTIME = 0x2000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LABEL = 0x1009
+ SO_LINGER = 0x80
+ SO_LISTENINCQLEN = 0x1013
+ SO_LISTENQLEN = 0x1012
+ SO_LISTENQLIMIT = 0x1011
+ SO_NOSIGPIPE = 0x800
+ SO_NO_DDP = 0x8000
+ SO_NO_OFFLOAD = 0x4000
+ SO_OOBINLINE = 0x100
+ SO_PEERLABEL = 0x1010
+ SO_PROTOCOL = 0x1016
+ SO_PROTOTYPE = 0x1016
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_SETFIB = 0x1014
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ SO_USER_COOKIE = 0x1015
+ SO_VENDOR = 0x80000000
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CA_NAME_MAX = 0x10
+ TCP_CONGESTION = 0x40
+ TCP_INFO = 0x20
+ TCP_KEEPCNT = 0x400
+ TCP_KEEPIDLE = 0x100
+ TCP_KEEPINIT = 0x80
+ TCP_KEEPINTVL = 0x200
+ TCP_MAXBURST = 0x4
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x4
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x10
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x218
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_VENDOR = 0x80000000
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGPTN = 0x4004740f
+ TIOCGSID = 0x40047463
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DCD = 0x40
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTMASTER = 0x2000741c
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2004745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40087459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VERASE2 = 0x7
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x4
+ WCOREFLAG = 0x80
+ WEXITED = 0x10
+ WLINUXCLONE = 0x80000000
+ WNOHANG = 0x1
+ WNOWAIT = 0x8
+ WSTOPPED = 0x2
+ WTRAPPED = 0x20
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x59)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x55)
+ ECAPMODE = syscall.Errno(0x5e)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDOOFUS = syscall.Errno(0x58)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x52)
+ EILSEQ = syscall.Errno(0x56)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x60)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5a)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x57)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x5b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x53)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCAPABLE = syscall.Errno(0x5d)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTRECOVERABLE = syscall.Errno(0x5f)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x54)
+ EOWNERDEAD = syscall.Errno(0x60)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x5c)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGLIBRT = syscall.Signal(0x21)
+ SIGLWP = syscall.Signal(0x20)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHR = syscall.Signal(0x20)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "operation timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "identifier removed",
+ 83: "no message of desired type",
+ 84: "value too large to be stored in data type",
+ 85: "operation canceled",
+ 86: "illegal byte sequence",
+ 87: "attribute not found",
+ 88: "programming error",
+ 89: "bad message",
+ 90: "multihop attempted",
+ 91: "link has been severed",
+ 92: "protocol error",
+ 93: "capabilities insufficient",
+ 94: "not permitted in capability mode",
+ 95: "state not recoverable",
+ 96: "previous owner died",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "suspended (signal)",
+ 18: "suspended",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "unknown signal",
+ 33: "unknown signal",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
new file mode 100644
index 000000000..e48e7799a
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
@@ -0,0 +1,1748 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,freebsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_ARP = 0x23
+ AF_ATM = 0x1e
+ AF_BLUETOOTH = 0x24
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x25
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1c
+ AF_INET6_SDP = 0x2a
+ AF_INET_SDP = 0x28
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x2a
+ AF_NATM = 0x1d
+ AF_NETBIOS = 0x6
+ AF_NETGRAPH = 0x20
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x11
+ AF_SCLUSTER = 0x22
+ AF_SIP = 0x18
+ AF_SLOW = 0x21
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VENDOR00 = 0x27
+ AF_VENDOR01 = 0x29
+ AF_VENDOR02 = 0x2b
+ AF_VENDOR03 = 0x2d
+ AF_VENDOR04 = 0x2f
+ AF_VENDOR05 = 0x31
+ AF_VENDOR06 = 0x33
+ AF_VENDOR07 = 0x35
+ AF_VENDOR08 = 0x37
+ AF_VENDOR09 = 0x39
+ AF_VENDOR10 = 0x3b
+ AF_VENDOR11 = 0x3d
+ AF_VENDOR12 = 0x3f
+ AF_VENDOR13 = 0x41
+ AF_VENDOR14 = 0x43
+ AF_VENDOR15 = 0x45
+ AF_VENDOR16 = 0x47
+ AF_VENDOR17 = 0x49
+ AF_VENDOR18 = 0x4b
+ AF_VENDOR19 = 0x4d
+ AF_VENDOR20 = 0x4f
+ AF_VENDOR21 = 0x51
+ AF_VENDOR22 = 0x53
+ AF_VENDOR23 = 0x55
+ AF_VENDOR24 = 0x57
+ AF_VENDOR25 = 0x59
+ AF_VENDOR26 = 0x5b
+ AF_VENDOR27 = 0x5d
+ AF_VENDOR28 = 0x5f
+ AF_VENDOR29 = 0x61
+ AF_VENDOR30 = 0x63
+ AF_VENDOR31 = 0x65
+ AF_VENDOR32 = 0x67
+ AF_VENDOR33 = 0x69
+ AF_VENDOR34 = 0x6b
+ AF_VENDOR35 = 0x6d
+ AF_VENDOR36 = 0x6f
+ AF_VENDOR37 = 0x71
+ AF_VENDOR38 = 0x73
+ AF_VENDOR39 = 0x75
+ AF_VENDOR40 = 0x77
+ AF_VENDOR41 = 0x79
+ AF_VENDOR42 = 0x7b
+ AF_VENDOR43 = 0x7d
+ AF_VENDOR44 = 0x7f
+ AF_VENDOR45 = 0x81
+ AF_VENDOR46 = 0x83
+ AF_VENDOR47 = 0x85
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B460800 = 0x70800
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B921600 = 0xe1000
+ B9600 = 0x2580
+ BIOCFEEDBACK = 0x8004427c
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDIRECTION = 0x40044276
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc0104279
+ BIOCGETBUFMODE = 0x4004427d
+ BIOCGETIF = 0x4020426b
+ BIOCGETZMAX = 0x4008427f
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4010426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCGTSTAMP = 0x40044283
+ BIOCIMMEDIATE = 0x80044270
+ BIOCLOCK = 0x2000427a
+ BIOCPROMISC = 0x20004269
+ BIOCROTZBUF = 0x40184280
+ BIOCSBLEN = 0xc0044266
+ BIOCSDIRECTION = 0x80044277
+ BIOCSDLT = 0x80044278
+ BIOCSETBUFMODE = 0x8004427e
+ BIOCSETF = 0x80104267
+ BIOCSETFNR = 0x80104282
+ BIOCSETIF = 0x8020426c
+ BIOCSETWF = 0x8010427b
+ BIOCSETZBUF = 0x80184281
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8010426d
+ BIOCSSEESENT = 0x80044277
+ BIOCSTSTAMP = 0x80044284
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x8
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_BUFMODE_BUFFER = 0x1
+ BPF_BUFMODE_ZBUF = 0x2
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_T_BINTIME = 0x2
+ BPF_T_BINTIME_FAST = 0x102
+ BPF_T_BINTIME_MONOTONIC = 0x202
+ BPF_T_BINTIME_MONOTONIC_FAST = 0x302
+ BPF_T_FAST = 0x100
+ BPF_T_FLAG_MASK = 0x300
+ BPF_T_FORMAT_MASK = 0x3
+ BPF_T_MICROTIME = 0x0
+ BPF_T_MICROTIME_FAST = 0x100
+ BPF_T_MICROTIME_MONOTONIC = 0x200
+ BPF_T_MICROTIME_MONOTONIC_FAST = 0x300
+ BPF_T_MONOTONIC = 0x200
+ BPF_T_MONOTONIC_FAST = 0x300
+ BPF_T_NANOTIME = 0x1
+ BPF_T_NANOTIME_FAST = 0x101
+ BPF_T_NANOTIME_MONOTONIC = 0x201
+ BPF_T_NANOTIME_MONOTONIC_FAST = 0x301
+ BPF_T_NONE = 0x3
+ BPF_T_NORMAL = 0x0
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CLOCK_MONOTONIC = 0x4
+ CLOCK_MONOTONIC_FAST = 0xc
+ CLOCK_MONOTONIC_PRECISE = 0xb
+ CLOCK_PROCESS_CPUTIME_ID = 0xf
+ CLOCK_PROF = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_FAST = 0xa
+ CLOCK_REALTIME_PRECISE = 0x9
+ CLOCK_SECOND = 0xd
+ CLOCK_THREAD_CPUTIME_ID = 0xe
+ CLOCK_UPTIME = 0x5
+ CLOCK_UPTIME_FAST = 0x8
+ CLOCK_UPTIME_PRECISE = 0x7
+ CLOCK_VIRTUAL = 0x1
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0x18
+ CTL_NET = 0x4
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DBUS = 0xe7
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_DVB_CI = 0xeb
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HHDLC = 0x79
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NOFCS = 0xe6
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPFILTER = 0x74
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPOIB = 0xf2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_ATM_CEMIC = 0xee
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FIBRECHANNEL = 0xea
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_SRX_E2E = 0xe9
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_JUNIPER_VS = 0xe8
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_PPP_WITHDIRECTION = 0xa6
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MATCHING_MAX = 0xf6
+ DLT_MATCHING_MIN = 0x68
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPEG_2_TS = 0xf3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_MUX27010 = 0xec
+ DLT_NETANALYZER = 0xf0
+ DLT_NETANALYZER_TRANSPARENT = 0xf1
+ DLT_NFC_LLCP = 0xf5
+ DLT_NFLOG = 0xef
+ DLT_NG40 = 0xf4
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x79
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PPP_WITH_DIRECTION = 0xa6
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_STANAG_5066_D_PDU = 0xed
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_USER0 = 0x93
+ DLT_USER1 = 0x94
+ DLT_USER10 = 0x9d
+ DLT_USER11 = 0x9e
+ DLT_USER12 = 0x9f
+ DLT_USER13 = 0xa0
+ DLT_USER14 = 0xa1
+ DLT_USER15 = 0xa2
+ DLT_USER2 = 0x95
+ DLT_USER3 = 0x96
+ DLT_USER4 = 0x97
+ DLT_USER5 = 0x98
+ DLT_USER6 = 0x99
+ DLT_USER7 = 0x9a
+ DLT_USER8 = 0x9b
+ DLT_USER9 = 0x9c
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_FS = -0x9
+ EVFILT_LIO = -0xa
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0xb
+ EVFILT_TIMER = -0x7
+ EVFILT_USER = -0xb
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_DISPATCH = 0x80
+ EV_DROP = 0x1000
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_RECEIPT = 0x40
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTATTR_NAMESPACE_EMPTY = 0x0
+ EXTATTR_NAMESPACE_SYSTEM = 0x2
+ EXTATTR_NAMESPACE_USER = 0x1
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_CANCEL = 0x5
+ F_DUP2FD = 0xa
+ F_DUP2FD_CLOEXEC = 0x12
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x11
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0xb
+ F_GETOWN = 0x5
+ F_OGETLK = 0x7
+ F_OK = 0x0
+ F_OSETLK = 0x8
+ F_OSETLKW = 0x9
+ F_RDAHEAD = 0x10
+ F_RDLCK = 0x1
+ F_READAHEAD = 0xf
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0xc
+ F_SETLKW = 0xd
+ F_SETLK_REMOTE = 0xe
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_UNLCKSYS = 0x4
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x218f72
+ IFF_CANTCONFIG = 0x10000
+ IFF_DEBUG = 0x4
+ IFF_DRV_OACTIVE = 0x400
+ IFF_DRV_RUNNING = 0x40
+ IFF_DYING = 0x200000
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MONITOR = 0x40000
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PPROMISC = 0x20000
+ IFF_PROMISC = 0x100
+ IFF_RENAMING = 0x400000
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_SMART = 0x20
+ IFF_STATICARP = 0x80000
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf8
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf2
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_IPXIP = 0xf9
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf6
+ IFT_PFSYNC = 0xf7
+ IFT_PLC = 0xae
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf1
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_STF = 0xd7
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VOICEEM = 0x64
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IN_RFC3021_MASK = 0xfffffffe
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CARP = 0x70
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0x102
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HIP = 0x8b
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MH = 0x87
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_MPLS = 0x89
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OLD_DIVERT = 0xfe
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_RESERVED_253 = 0xfd
+ IPPROTO_RESERVED_254 = 0xfe
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEND = 0x103
+ IPPROTO_SEP = 0x21
+ IPPROTO_SHIM6 = 0x8c
+ IPPROTO_SKIP = 0x39
+ IPPROTO_SPACER = 0x7fff
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TLSP = 0x38
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_AUTOFLOWLABEL = 0x3b
+ IPV6_BINDANY = 0x40
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXOPTHDR = 0x800
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MAX_GROUP_SRC_FILTER = 0x200
+ IPV6_MAX_MEMBERSHIPS = 0xfff
+ IPV6_MAX_SOCK_SRC_FILTER = 0x80
+ IPV6_MIN_MEMBERSHIPS = 0x1f
+ IPV6_MMTU = 0x500
+ IPV6_MSFILTER = 0x4a
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_PATHMTU = 0x2c
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_PREFER_TEMPADDR = 0x3f
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_ADD_SOURCE_MEMBERSHIP = 0x46
+ IP_BINDANY = 0x18
+ IP_BLOCK_SOURCE = 0x48
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DONTFRAG = 0x43
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DROP_SOURCE_MEMBERSHIP = 0x47
+ IP_DUMMYNET3 = 0x31
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW3 = 0x30
+ IP_FW_ADD = 0x32
+ IP_FW_DEL = 0x33
+ IP_FW_FLUSH = 0x34
+ IP_FW_GET = 0x36
+ IP_FW_NAT_CFG = 0x38
+ IP_FW_NAT_DEL = 0x39
+ IP_FW_NAT_GET_CONFIG = 0x3a
+ IP_FW_NAT_GET_LOG = 0x3b
+ IP_FW_RESETLOG = 0x37
+ IP_FW_TABLE_ADD = 0x28
+ IP_FW_TABLE_DEL = 0x29
+ IP_FW_TABLE_FLUSH = 0x2a
+ IP_FW_TABLE_GETSIZE = 0x2b
+ IP_FW_TABLE_LIST = 0x2c
+ IP_FW_ZERO = 0x35
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_GROUP_SRC_FILTER = 0x200
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MAX_SOCK_MUTE_FILTER = 0x80
+ IP_MAX_SOCK_SRC_FILTER = 0x80
+ IP_MAX_SOURCE_FILTER = 0x400
+ IP_MF = 0x2000
+ IP_MINTTL = 0x42
+ IP_MIN_MEMBERSHIPS = 0x1f
+ IP_MSFILTER = 0x4a
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_OFFMASK = 0x1fff
+ IP_ONESBCAST = 0x17
+ IP_OPTIONS = 0x1
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTOS = 0x44
+ IP_RECVTTL = 0x41
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_SENDSRCADDR = 0x7
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ IP_UNBLOCK_SOURCE = 0x49
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_AUTOSYNC = 0x7
+ MADV_CORE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_NOCORE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_NOSYNC = 0x6
+ MADV_PROTECT = 0xa
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_WILLNEED = 0x3
+ MAP_32BIT = 0x80000
+ MAP_ALIGNED_SUPER = 0x1000000
+ MAP_ALIGNMENT_MASK = -0x1000000
+ MAP_ALIGNMENT_SHIFT = 0x18
+ MAP_ANON = 0x1000
+ MAP_ANONYMOUS = 0x1000
+ MAP_COPY = 0x2
+ MAP_EXCL = 0x4000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_NOCORE = 0x20000
+ MAP_NORESERVE = 0x40
+ MAP_NOSYNC = 0x800
+ MAP_PREFAULT_READ = 0x40000
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_RESERVED0080 = 0x80
+ MAP_RESERVED0100 = 0x100
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x400
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CMSG_CLOEXEC = 0x40000
+ MSG_COMPAT = 0x8000
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_NBIO = 0x4000
+ MSG_NOSIGNAL = 0x20000
+ MSG_NOTIFICATION = 0x2000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x2
+ MS_SYNC = 0x0
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_IFLISTL = 0x5
+ NET_RT_IFMALIST = 0x4
+ NET_RT_MAXID = 0x6
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FFAND = 0x40000000
+ NOTE_FFCOPY = 0xc0000000
+ NOTE_FFCTRLMASK = 0xc0000000
+ NOTE_FFLAGSMASK = 0xffffff
+ NOTE_FFNOP = 0x0
+ NOTE_FFOR = 0x80000000
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_MSECONDS = 0x2
+ NOTE_NSECONDS = 0x8
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_SECONDS = 0x1
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRIGGER = 0x1000000
+ NOTE_USECONDS = 0x4
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x100000
+ O_CREAT = 0x200
+ O_DIRECT = 0x10000
+ O_DIRECTORY = 0x20000
+ O_EXCL = 0x800
+ O_EXEC = 0x40000
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_TTY_INIT = 0x80000
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_AS = 0xa
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x8
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_FMASK = 0x1004d808
+ RTF_GATEWAY = 0x2
+ RTF_GWFLAG_COMPAT = 0x80000000
+ RTF_HOST = 0x4
+ RTF_LLDATA = 0x400
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MULTICAST = 0x800000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_REJECT = 0x8
+ RTF_RNH_LOCKED = 0x40000000
+ RTF_STATIC = 0x800
+ RTF_STICKY = 0x10000000
+ RTF_UP = 0x1
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_IEEE80211 = 0x12
+ RTM_IFANNOUNCE = 0x11
+ RTM_IFINFO = 0xe
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RTV_WEIGHT = 0x100
+ RT_ALL_FIBS = -0x1
+ RT_CACHING_CONTEXT = 0x1
+ RT_DEFAULT_FIB = 0x0
+ RT_NORTREF = 0x2
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_BINTIME = 0x4
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCADDRT = 0x8040720a
+ SIOCAIFADDR = 0x8040691a
+ SIOCAIFGROUP = 0x80286987
+ SIOCALIFADDR = 0x8118691b
+ SIOCATMARK = 0x40047307
+ SIOCDELMULTI = 0x80206932
+ SIOCDELRT = 0x8040720b
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFGROUP = 0x80286989
+ SIOCDIFPHYADDR = 0x80206949
+ SIOCDLIFADDR = 0x8118691d
+ SIOCGDRVSPEC = 0xc028697b
+ SIOCGETSGCNT = 0xc0207210
+ SIOCGETVIFCNT = 0xc028720f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020691f
+ SIOCGIFCONF = 0xc0106924
+ SIOCGIFDESCR = 0xc020692a
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFIB = 0xc020695c
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFGMEMB = 0xc028698a
+ SIOCGIFGROUP = 0xc0286988
+ SIOCGIFINDEX = 0xc0206920
+ SIOCGIFMAC = 0xc0206926
+ SIOCGIFMEDIA = 0xc0306938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206948
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPSRCADDR = 0xc0206947
+ SIOCGIFSTATUS = 0xc331693b
+ SIOCGLIFADDR = 0xc118691c
+ SIOCGLIFPHYADDR = 0xc118694b
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGPRIVATE_0 = 0xc0206950
+ SIOCGPRIVATE_1 = 0xc0206951
+ SIOCIFCREATE = 0xc020697a
+ SIOCIFCREATE2 = 0xc020697c
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc0106978
+ SIOCSDRVSPEC = 0x8028697b
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020691e
+ SIOCSIFDESCR = 0x80206929
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFIB = 0x8020695d
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMAC = 0x80206927
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNAME = 0x80206928
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFRVNET = 0xc020695b
+ SIOCSIFVNET = 0xc020695a
+ SIOCSLIFPHYADDR = 0x8118694a
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_CLOEXEC = 0x10000000
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_NONBLOCK = 0x20000000
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ACCEPTFILTER = 0x1000
+ SO_BINTIME = 0x2000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LABEL = 0x1009
+ SO_LINGER = 0x80
+ SO_LISTENINCQLEN = 0x1013
+ SO_LISTENQLEN = 0x1012
+ SO_LISTENQLIMIT = 0x1011
+ SO_NOSIGPIPE = 0x800
+ SO_NO_DDP = 0x8000
+ SO_NO_OFFLOAD = 0x4000
+ SO_OOBINLINE = 0x100
+ SO_PEERLABEL = 0x1010
+ SO_PROTOCOL = 0x1016
+ SO_PROTOTYPE = 0x1016
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_SETFIB = 0x1014
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ SO_USER_COOKIE = 0x1015
+ SO_VENDOR = 0x80000000
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CA_NAME_MAX = 0x10
+ TCP_CONGESTION = 0x40
+ TCP_INFO = 0x20
+ TCP_KEEPCNT = 0x400
+ TCP_KEEPIDLE = 0x100
+ TCP_KEEPINIT = 0x80
+ TCP_KEEPINTVL = 0x200
+ TCP_MAXBURST = 0x4
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x4
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x10
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x218
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_VENDOR = 0x80000000
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGPTN = 0x4004740f
+ TIOCGSID = 0x40047463
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DCD = 0x40
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTMASTER = 0x2000741c
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2004745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40107459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VERASE2 = 0x7
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x4
+ WCOREFLAG = 0x80
+ WEXITED = 0x10
+ WLINUXCLONE = 0x80000000
+ WNOHANG = 0x1
+ WNOWAIT = 0x8
+ WSTOPPED = 0x2
+ WTRAPPED = 0x20
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x59)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x55)
+ ECAPMODE = syscall.Errno(0x5e)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDOOFUS = syscall.Errno(0x58)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x52)
+ EILSEQ = syscall.Errno(0x56)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x60)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5a)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x57)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x5b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x53)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCAPABLE = syscall.Errno(0x5d)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTRECOVERABLE = syscall.Errno(0x5f)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x54)
+ EOWNERDEAD = syscall.Errno(0x60)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x5c)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGLIBRT = syscall.Signal(0x21)
+ SIGLWP = syscall.Signal(0x20)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHR = syscall.Signal(0x20)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "operation timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "identifier removed",
+ 83: "no message of desired type",
+ 84: "value too large to be stored in data type",
+ 85: "operation canceled",
+ 86: "illegal byte sequence",
+ 87: "attribute not found",
+ 88: "programming error",
+ 89: "bad message",
+ 90: "multihop attempted",
+ 91: "link has been severed",
+ 92: "protocol error",
+ 93: "capabilities insufficient",
+ 94: "not permitted in capability mode",
+ 95: "state not recoverable",
+ 96: "previous owner died",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "suspended (signal)",
+ 18: "suspended",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "unknown signal",
+ 33: "unknown signal",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_arm.go
new file mode 100644
index 000000000..2afbe2d5e
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_freebsd_arm.go
@@ -0,0 +1,1729 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,freebsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_ARP = 0x23
+ AF_ATM = 0x1e
+ AF_BLUETOOTH = 0x24
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x25
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1c
+ AF_INET6_SDP = 0x2a
+ AF_INET_SDP = 0x28
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x2a
+ AF_NATM = 0x1d
+ AF_NETBIOS = 0x6
+ AF_NETGRAPH = 0x20
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x11
+ AF_SCLUSTER = 0x22
+ AF_SIP = 0x18
+ AF_SLOW = 0x21
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VENDOR00 = 0x27
+ AF_VENDOR01 = 0x29
+ AF_VENDOR02 = 0x2b
+ AF_VENDOR03 = 0x2d
+ AF_VENDOR04 = 0x2f
+ AF_VENDOR05 = 0x31
+ AF_VENDOR06 = 0x33
+ AF_VENDOR07 = 0x35
+ AF_VENDOR08 = 0x37
+ AF_VENDOR09 = 0x39
+ AF_VENDOR10 = 0x3b
+ AF_VENDOR11 = 0x3d
+ AF_VENDOR12 = 0x3f
+ AF_VENDOR13 = 0x41
+ AF_VENDOR14 = 0x43
+ AF_VENDOR15 = 0x45
+ AF_VENDOR16 = 0x47
+ AF_VENDOR17 = 0x49
+ AF_VENDOR18 = 0x4b
+ AF_VENDOR19 = 0x4d
+ AF_VENDOR20 = 0x4f
+ AF_VENDOR21 = 0x51
+ AF_VENDOR22 = 0x53
+ AF_VENDOR23 = 0x55
+ AF_VENDOR24 = 0x57
+ AF_VENDOR25 = 0x59
+ AF_VENDOR26 = 0x5b
+ AF_VENDOR27 = 0x5d
+ AF_VENDOR28 = 0x5f
+ AF_VENDOR29 = 0x61
+ AF_VENDOR30 = 0x63
+ AF_VENDOR31 = 0x65
+ AF_VENDOR32 = 0x67
+ AF_VENDOR33 = 0x69
+ AF_VENDOR34 = 0x6b
+ AF_VENDOR35 = 0x6d
+ AF_VENDOR36 = 0x6f
+ AF_VENDOR37 = 0x71
+ AF_VENDOR38 = 0x73
+ AF_VENDOR39 = 0x75
+ AF_VENDOR40 = 0x77
+ AF_VENDOR41 = 0x79
+ AF_VENDOR42 = 0x7b
+ AF_VENDOR43 = 0x7d
+ AF_VENDOR44 = 0x7f
+ AF_VENDOR45 = 0x81
+ AF_VENDOR46 = 0x83
+ AF_VENDOR47 = 0x85
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B460800 = 0x70800
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B921600 = 0xe1000
+ B9600 = 0x2580
+ BIOCFEEDBACK = 0x8004427c
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDIRECTION = 0x40044276
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc0084279
+ BIOCGETBUFMODE = 0x4004427d
+ BIOCGETIF = 0x4020426b
+ BIOCGETZMAX = 0x4004427f
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044272
+ BIOCGRTIMEOUT = 0x4008426e
+ BIOCGSEESENT = 0x40044276
+ BIOCGSTATS = 0x4008426f
+ BIOCGTSTAMP = 0x40044283
+ BIOCIMMEDIATE = 0x80044270
+ BIOCLOCK = 0x2000427a
+ BIOCPROMISC = 0x20004269
+ BIOCROTZBUF = 0x400c4280
+ BIOCSBLEN = 0xc0044266
+ BIOCSDIRECTION = 0x80044277
+ BIOCSDLT = 0x80044278
+ BIOCSETBUFMODE = 0x8004427e
+ BIOCSETF = 0x80084267
+ BIOCSETFNR = 0x80084282
+ BIOCSETIF = 0x8020426c
+ BIOCSETWF = 0x8008427b
+ BIOCSETZBUF = 0x800c4281
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044273
+ BIOCSRTIMEOUT = 0x8008426d
+ BIOCSSEESENT = 0x80044277
+ BIOCSTSTAMP = 0x80044284
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_BUFMODE_BUFFER = 0x1
+ BPF_BUFMODE_ZBUF = 0x2
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x80000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_T_BINTIME = 0x2
+ BPF_T_BINTIME_FAST = 0x102
+ BPF_T_BINTIME_MONOTONIC = 0x202
+ BPF_T_BINTIME_MONOTONIC_FAST = 0x302
+ BPF_T_FAST = 0x100
+ BPF_T_FLAG_MASK = 0x300
+ BPF_T_FORMAT_MASK = 0x3
+ BPF_T_MICROTIME = 0x0
+ BPF_T_MICROTIME_FAST = 0x100
+ BPF_T_MICROTIME_MONOTONIC = 0x200
+ BPF_T_MICROTIME_MONOTONIC_FAST = 0x300
+ BPF_T_MONOTONIC = 0x200
+ BPF_T_MONOTONIC_FAST = 0x300
+ BPF_T_NANOTIME = 0x1
+ BPF_T_NANOTIME_FAST = 0x101
+ BPF_T_NANOTIME_MONOTONIC = 0x201
+ BPF_T_NANOTIME_MONOTONIC_FAST = 0x301
+ BPF_T_NONE = 0x3
+ BPF_T_NORMAL = 0x0
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0x18
+ CTL_NET = 0x4
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CHDLC = 0x68
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DBUS = 0xe7
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_DVB_CI = 0xeb
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HHDLC = 0x79
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NOFCS = 0xe6
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPFILTER = 0x74
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPOIB = 0xf2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_ATM_CEMIC = 0xee
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FIBRECHANNEL = 0xea
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_SRX_E2E = 0xe9
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_JUNIPER_VS = 0xe8
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_PPP_WITHDIRECTION = 0xa6
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MATCHING_MAX = 0xf6
+ DLT_MATCHING_MIN = 0x68
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPEG_2_TS = 0xf3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_MUX27010 = 0xec
+ DLT_NETANALYZER = 0xf0
+ DLT_NETANALYZER_TRANSPARENT = 0xf1
+ DLT_NFC_LLCP = 0xf5
+ DLT_NFLOG = 0xef
+ DLT_NG40 = 0xf4
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x79
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PPP_WITH_DIRECTION = 0xa6
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DLT_STANAG_5066_D_PDU = 0xed
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_USER0 = 0x93
+ DLT_USER1 = 0x94
+ DLT_USER10 = 0x9d
+ DLT_USER11 = 0x9e
+ DLT_USER12 = 0x9f
+ DLT_USER13 = 0xa0
+ DLT_USER14 = 0xa1
+ DLT_USER15 = 0xa2
+ DLT_USER2 = 0x95
+ DLT_USER3 = 0x96
+ DLT_USER4 = 0x97
+ DLT_USER5 = 0x98
+ DLT_USER6 = 0x99
+ DLT_USER7 = 0x9a
+ DLT_USER8 = 0x9b
+ DLT_USER9 = 0x9c
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EVFILT_AIO = -0x3
+ EVFILT_FS = -0x9
+ EVFILT_LIO = -0xa
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0xb
+ EVFILT_TIMER = -0x7
+ EVFILT_USER = -0xb
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_DISPATCH = 0x80
+ EV_DROP = 0x1000
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_RECEIPT = 0x40
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTATTR_NAMESPACE_EMPTY = 0x0
+ EXTATTR_NAMESPACE_SYSTEM = 0x2
+ EXTATTR_NAMESPACE_USER = 0x1
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_CANCEL = 0x5
+ F_DUP2FD = 0xa
+ F_DUP2FD_CLOEXEC = 0x12
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x11
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0xb
+ F_GETOWN = 0x5
+ F_OGETLK = 0x7
+ F_OK = 0x0
+ F_OSETLK = 0x8
+ F_OSETLKW = 0x9
+ F_RDAHEAD = 0x10
+ F_RDLCK = 0x1
+ F_READAHEAD = 0xf
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0xc
+ F_SETLKW = 0xd
+ F_SETLK_REMOTE = 0xe
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_UNLCKSYS = 0x4
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_ALTPHYS = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x218f72
+ IFF_CANTCONFIG = 0x10000
+ IFF_DEBUG = 0x4
+ IFF_DRV_OACTIVE = 0x400
+ IFF_DRV_RUNNING = 0x40
+ IFF_DYING = 0x200000
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MONITOR = 0x40000
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PPROMISC = 0x20000
+ IFF_PROMISC = 0x100
+ IFF_RENAMING = 0x400000
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_SMART = 0x20
+ IFF_STATICARP = 0x80000
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf8
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf2
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_IPXIP = 0xf9
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf6
+ IFT_PFSYNC = 0xf7
+ IFT_PLC = 0xae
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf1
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_STF = 0xd7
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VOICEEM = 0x64
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IN_RFC3021_MASK = 0xfffffffe
+ IPPROTO_3PC = 0x22
+ IPPROTO_ADFS = 0x44
+ IPPROTO_AH = 0x33
+ IPPROTO_AHIP = 0x3d
+ IPPROTO_APES = 0x63
+ IPPROTO_ARGUS = 0xd
+ IPPROTO_AX25 = 0x5d
+ IPPROTO_BHA = 0x31
+ IPPROTO_BLT = 0x1e
+ IPPROTO_BRSATMON = 0x4c
+ IPPROTO_CARP = 0x70
+ IPPROTO_CFTP = 0x3e
+ IPPROTO_CHAOS = 0x10
+ IPPROTO_CMTP = 0x26
+ IPPROTO_CPHB = 0x49
+ IPPROTO_CPNX = 0x48
+ IPPROTO_DDP = 0x25
+ IPPROTO_DGP = 0x56
+ IPPROTO_DIVERT = 0x102
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_EMCON = 0xe
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GMTP = 0x64
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HIP = 0x8b
+ IPPROTO_HMP = 0x14
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IDPR = 0x23
+ IPPROTO_IDRP = 0x2d
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IGP = 0x55
+ IPPROTO_IGRP = 0x58
+ IPPROTO_IL = 0x28
+ IPPROTO_INLSP = 0x34
+ IPPROTO_INP = 0x20
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPCV = 0x47
+ IPPROTO_IPEIP = 0x5e
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPPC = 0x43
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IRTP = 0x1c
+ IPPROTO_KRYPTOLAN = 0x41
+ IPPROTO_LARP = 0x5b
+ IPPROTO_LEAF1 = 0x19
+ IPPROTO_LEAF2 = 0x1a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MEAS = 0x13
+ IPPROTO_MH = 0x87
+ IPPROTO_MHRP = 0x30
+ IPPROTO_MICP = 0x5f
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_MPLS = 0x89
+ IPPROTO_MTP = 0x5c
+ IPPROTO_MUX = 0x12
+ IPPROTO_ND = 0x4d
+ IPPROTO_NHRP = 0x36
+ IPPROTO_NONE = 0x3b
+ IPPROTO_NSP = 0x1f
+ IPPROTO_NVPII = 0xb
+ IPPROTO_OLD_DIVERT = 0xfe
+ IPPROTO_OSPFIGP = 0x59
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PGM = 0x71
+ IPPROTO_PIGP = 0x9
+ IPPROTO_PIM = 0x67
+ IPPROTO_PRM = 0x15
+ IPPROTO_PUP = 0xc
+ IPPROTO_PVP = 0x4b
+ IPPROTO_RAW = 0xff
+ IPPROTO_RCCMON = 0xa
+ IPPROTO_RDP = 0x1b
+ IPPROTO_RESERVED_253 = 0xfd
+ IPPROTO_RESERVED_254 = 0xfe
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_RVD = 0x42
+ IPPROTO_SATEXPAK = 0x40
+ IPPROTO_SATMON = 0x45
+ IPPROTO_SCCSP = 0x60
+ IPPROTO_SCTP = 0x84
+ IPPROTO_SDRP = 0x2a
+ IPPROTO_SEND = 0x103
+ IPPROTO_SEP = 0x21
+ IPPROTO_SHIM6 = 0x8c
+ IPPROTO_SKIP = 0x39
+ IPPROTO_SPACER = 0x7fff
+ IPPROTO_SRPC = 0x5a
+ IPPROTO_ST = 0x7
+ IPPROTO_SVMTP = 0x52
+ IPPROTO_SWIPE = 0x35
+ IPPROTO_TCF = 0x57
+ IPPROTO_TCP = 0x6
+ IPPROTO_TLSP = 0x38
+ IPPROTO_TP = 0x1d
+ IPPROTO_TPXX = 0x27
+ IPPROTO_TRUNK1 = 0x17
+ IPPROTO_TRUNK2 = 0x18
+ IPPROTO_TTP = 0x54
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPPROTO_VINES = 0x53
+ IPPROTO_VISA = 0x46
+ IPPROTO_VMTP = 0x51
+ IPPROTO_WBEXPAK = 0x4f
+ IPPROTO_WBMON = 0x4e
+ IPPROTO_WSN = 0x4a
+ IPPROTO_XNET = 0xf
+ IPPROTO_XTP = 0x24
+ IPV6_AUTOFLOWLABEL = 0x3b
+ IPV6_BINDANY = 0x40
+ IPV6_BINDV6ONLY = 0x1b
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_FW_ADD = 0x1e
+ IPV6_FW_DEL = 0x1f
+ IPV6_FW_FLUSH = 0x20
+ IPV6_FW_GET = 0x22
+ IPV6_FW_ZERO = 0x21
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXOPTHDR = 0x800
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MAX_GROUP_SRC_FILTER = 0x200
+ IPV6_MAX_MEMBERSHIPS = 0xfff
+ IPV6_MAX_SOCK_SRC_FILTER = 0x80
+ IPV6_MIN_MEMBERSHIPS = 0x1f
+ IPV6_MMTU = 0x500
+ IPV6_MSFILTER = 0x4a
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_PATHMTU = 0x2c
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_PREFER_TEMPADDR = 0x3f
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_ADD_SOURCE_MEMBERSHIP = 0x46
+ IP_BINDANY = 0x18
+ IP_BLOCK_SOURCE = 0x48
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DONTFRAG = 0x43
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_DROP_SOURCE_MEMBERSHIP = 0x47
+ IP_DUMMYNET3 = 0x31
+ IP_DUMMYNET_CONFIGURE = 0x3c
+ IP_DUMMYNET_DEL = 0x3d
+ IP_DUMMYNET_FLUSH = 0x3e
+ IP_DUMMYNET_GET = 0x40
+ IP_FAITH = 0x16
+ IP_FW3 = 0x30
+ IP_FW_ADD = 0x32
+ IP_FW_DEL = 0x33
+ IP_FW_FLUSH = 0x34
+ IP_FW_GET = 0x36
+ IP_FW_NAT_CFG = 0x38
+ IP_FW_NAT_DEL = 0x39
+ IP_FW_NAT_GET_CONFIG = 0x3a
+ IP_FW_NAT_GET_LOG = 0x3b
+ IP_FW_RESETLOG = 0x37
+ IP_FW_TABLE_ADD = 0x28
+ IP_FW_TABLE_DEL = 0x29
+ IP_FW_TABLE_FLUSH = 0x2a
+ IP_FW_TABLE_GETSIZE = 0x2b
+ IP_FW_TABLE_LIST = 0x2c
+ IP_FW_ZERO = 0x35
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x15
+ IP_MAXPACKET = 0xffff
+ IP_MAX_GROUP_SRC_FILTER = 0x200
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MAX_SOCK_MUTE_FILTER = 0x80
+ IP_MAX_SOCK_SRC_FILTER = 0x80
+ IP_MAX_SOURCE_FILTER = 0x400
+ IP_MF = 0x2000
+ IP_MINTTL = 0x42
+ IP_MIN_MEMBERSHIPS = 0x1f
+ IP_MSFILTER = 0x4a
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_MULTICAST_VIF = 0xe
+ IP_OFFMASK = 0x1fff
+ IP_ONESBCAST = 0x17
+ IP_OPTIONS = 0x1
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTOS = 0x44
+ IP_RECVTTL = 0x41
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RSVP_OFF = 0x10
+ IP_RSVP_ON = 0xf
+ IP_RSVP_VIF_OFF = 0x12
+ IP_RSVP_VIF_ON = 0x11
+ IP_SENDSRCADDR = 0x7
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ IP_UNBLOCK_SOURCE = 0x49
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_AUTOSYNC = 0x7
+ MADV_CORE = 0x9
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_NOCORE = 0x8
+ MADV_NORMAL = 0x0
+ MADV_NOSYNC = 0x6
+ MADV_PROTECT = 0xa
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_WILLNEED = 0x3
+ MAP_ALIGNED_SUPER = 0x1000000
+ MAP_ALIGNMENT_MASK = -0x1000000
+ MAP_ALIGNMENT_SHIFT = 0x18
+ MAP_ANON = 0x1000
+ MAP_ANONYMOUS = 0x1000
+ MAP_COPY = 0x2
+ MAP_EXCL = 0x4000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_NOCORE = 0x20000
+ MAP_NORESERVE = 0x40
+ MAP_NOSYNC = 0x800
+ MAP_PREFAULT_READ = 0x40000
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_RESERVED0080 = 0x80
+ MAP_RESERVED0100 = 0x100
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x400
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CMSG_CLOEXEC = 0x40000
+ MSG_COMPAT = 0x8000
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOF = 0x100
+ MSG_EOR = 0x8
+ MSG_NBIO = 0x4000
+ MSG_NOSIGNAL = 0x20000
+ MSG_NOTIFICATION = 0x2000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x2
+ MS_SYNC = 0x0
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_IFLISTL = 0x5
+ NET_RT_IFMALIST = 0x4
+ NET_RT_MAXID = 0x6
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FFAND = 0x40000000
+ NOTE_FFCOPY = 0xc0000000
+ NOTE_FFCTRLMASK = 0xc0000000
+ NOTE_FFLAGSMASK = 0xffffff
+ NOTE_FFNOP = 0x0
+ NOTE_FFOR = 0x80000000
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRIGGER = 0x1000000
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x100000
+ O_CREAT = 0x200
+ O_DIRECT = 0x10000
+ O_DIRECTORY = 0x20000
+ O_EXCL = 0x800
+ O_EXEC = 0x40000
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_TTY_INIT = 0x80000
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_AS = 0xa
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x8
+ RTAX_NETMASK = 0x2
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTF_BLACKHOLE = 0x1000
+ RTF_BROADCAST = 0x400000
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_FMASK = 0x1004d808
+ RTF_GATEWAY = 0x2
+ RTF_GWFLAG_COMPAT = 0x80000000
+ RTF_HOST = 0x4
+ RTF_LLDATA = 0x400
+ RTF_LLINFO = 0x400
+ RTF_LOCAL = 0x200000
+ RTF_MODIFIED = 0x20
+ RTF_MULTICAST = 0x800000
+ RTF_PINNED = 0x100000
+ RTF_PRCLONING = 0x10000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x40000
+ RTF_REJECT = 0x8
+ RTF_RNH_LOCKED = 0x40000000
+ RTF_STATIC = 0x800
+ RTF_STICKY = 0x10000000
+ RTF_UP = 0x1
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DELMADDR = 0x10
+ RTM_GET = 0x4
+ RTM_IEEE80211 = 0x12
+ RTM_IFANNOUNCE = 0x11
+ RTM_IFINFO = 0xe
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_NEWMADDR = 0xf
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RTV_WEIGHT = 0x100
+ RT_ALL_FIBS = -0x1
+ RT_CACHING_CONTEXT = 0x1
+ RT_DEFAULT_FIB = 0x0
+ RT_NORTREF = 0x2
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_BINTIME = 0x4
+ SCM_CREDS = 0x3
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x2
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCADDRT = 0x8030720a
+ SIOCAIFADDR = 0x8040691a
+ SIOCAIFGROUP = 0x80246987
+ SIOCALIFADDR = 0x8118691b
+ SIOCATMARK = 0x40047307
+ SIOCDELMULTI = 0x80206932
+ SIOCDELRT = 0x8030720b
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFGROUP = 0x80246989
+ SIOCDIFPHYADDR = 0x80206949
+ SIOCDLIFADDR = 0x8118691d
+ SIOCGDRVSPEC = 0xc01c697b
+ SIOCGETSGCNT = 0xc0147210
+ SIOCGETVIFCNT = 0xc014720f
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCAP = 0xc020691f
+ SIOCGIFCONF = 0xc0086924
+ SIOCGIFDESCR = 0xc020692a
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFIB = 0xc020695c
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFGMEMB = 0xc024698a
+ SIOCGIFGROUP = 0xc0246988
+ SIOCGIFINDEX = 0xc0206920
+ SIOCGIFMAC = 0xc0206926
+ SIOCGIFMEDIA = 0xc0286938
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc0206933
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206948
+ SIOCGIFPHYS = 0xc0206935
+ SIOCGIFPSRCADDR = 0xc0206947
+ SIOCGIFSTATUS = 0xc331693b
+ SIOCGLIFADDR = 0xc118691c
+ SIOCGLIFPHYADDR = 0xc118694b
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGPRIVATE_0 = 0xc0206950
+ SIOCGPRIVATE_1 = 0xc0206951
+ SIOCIFCREATE = 0xc020697a
+ SIOCIFCREATE2 = 0xc020697c
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc00c6978
+ SIOCSDRVSPEC = 0x801c697b
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFCAP = 0x8020691e
+ SIOCSIFDESCR = 0x80206929
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFIB = 0x8020695d
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFLLADDR = 0x8020693c
+ SIOCSIFMAC = 0x80206927
+ SIOCSIFMEDIA = 0xc0206937
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x80206934
+ SIOCSIFNAME = 0x80206928
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSIFPHYS = 0x80206936
+ SIOCSIFRVNET = 0xc020695b
+ SIOCSIFVNET = 0xc020695a
+ SIOCSLIFPHYADDR = 0x8118694a
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SOCK_CLOEXEC = 0x10000000
+ SOCK_DGRAM = 0x2
+ SOCK_MAXADDRLEN = 0xff
+ SOCK_NONBLOCK = 0x20000000
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ACCEPTFILTER = 0x1000
+ SO_BINTIME = 0x2000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LABEL = 0x1009
+ SO_LINGER = 0x80
+ SO_LISTENINCQLEN = 0x1013
+ SO_LISTENQLEN = 0x1012
+ SO_LISTENQLIMIT = 0x1011
+ SO_NOSIGPIPE = 0x800
+ SO_NO_DDP = 0x8000
+ SO_NO_OFFLOAD = 0x4000
+ SO_OOBINLINE = 0x100
+ SO_PEERLABEL = 0x1010
+ SO_PROTOCOL = 0x1016
+ SO_PROTOTYPE = 0x1016
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_SETFIB = 0x1014
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_TIMESTAMP = 0x400
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ SO_USER_COOKIE = 0x1015
+ SO_VENDOR = 0x80000000
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CA_NAME_MAX = 0x10
+ TCP_CONGESTION = 0x40
+ TCP_INFO = 0x20
+ TCP_KEEPCNT = 0x400
+ TCP_KEEPIDLE = 0x100
+ TCP_KEEPINIT = 0x80
+ TCP_KEEPINTVL = 0x200
+ TCP_MAXBURST = 0x4
+ TCP_MAXHLEN = 0x3c
+ TCP_MAXOLEN = 0x28
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x4
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x10
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x218
+ TCP_NODELAY = 0x1
+ TCP_NOOPT = 0x8
+ TCP_NOPUSH = 0x4
+ TCP_VENDOR = 0x80000000
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLUSH = 0x80047410
+ TIOCGDRAINWAIT = 0x40047456
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGPGRP = 0x40047477
+ TIOCGPTN = 0x4004740f
+ TIOCGSID = 0x40047463
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGDTRWAIT = 0x4004745a
+ TIOCMGET = 0x4004746a
+ TIOCMSDTRWAIT = 0x8004745b
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DCD = 0x40
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTMASTER = 0x2000741c
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDRAINWAIT = 0x80047457
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSIG = 0x2004745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x20007465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCTIMESTAMP = 0x40087459
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VERASE2 = 0x7
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WCONTINUED = 0x4
+ WCOREFLAG = 0x80
+ WEXITED = 0x10
+ WLINUXCLONE = 0x80000000
+ WNOHANG = 0x1
+ WNOWAIT = 0x8
+ WSTOPPED = 0x2
+ WTRAPPED = 0x20
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x59)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x55)
+ ECAPMODE = syscall.Errno(0x5e)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDOOFUS = syscall.Errno(0x58)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x52)
+ EILSEQ = syscall.Errno(0x56)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x60)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5a)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x57)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x5b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x53)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCAPABLE = syscall.Errno(0x5d)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTRECOVERABLE = syscall.Errno(0x5f)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x2d)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x54)
+ EOWNERDEAD = syscall.Errno(0x60)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x5c)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGLIBRT = syscall.Signal(0x21)
+ SIGLWP = syscall.Signal(0x20)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHR = syscall.Signal(0x20)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "operation timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "identifier removed",
+ 83: "no message of desired type",
+ 84: "value too large to be stored in data type",
+ 85: "operation canceled",
+ 86: "illegal byte sequence",
+ 87: "attribute not found",
+ 88: "programming error",
+ 89: "bad message",
+ 90: "multihop attempted",
+ 91: "link has been severed",
+ 92: "protocol error",
+ 93: "capabilities insufficient",
+ 94: "not permitted in capability mode",
+ 95: "state not recoverable",
+ 96: "previous owner died",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "suspended (signal)",
+ 18: "suspended",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "unknown signal",
+ 33: "unknown signal",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go
new file mode 100644
index 000000000..d370be0ec
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_386.go
@@ -0,0 +1,1817 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x28
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_NFC = 0x27
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CAIF = 0x336
+ ARPHRD_CAN = 0x118
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PHONET = 0x334
+ ARPHRD_PHONET_PIPE = 0x335
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x1008
+ B110 = 0x3
+ B115200 = 0x1002
+ B1152000 = 0x1009
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x100a
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x100b
+ B230400 = 0x1003
+ B2400 = 0xb
+ B2500000 = 0x100c
+ B300 = 0x7
+ B3000000 = 0x100d
+ B3500000 = 0x100e
+ B38400 = 0xf
+ B4000000 = 0x100f
+ B460800 = 0x1004
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x1005
+ B57600 = 0x1001
+ B576000 = 0x1006
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x1007
+ B9600 = 0xd
+ BOTHER = 0x1000
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ BS0 = 0x0
+ BS1 = 0x2000
+ BSDLY = 0x2000
+ CBAUD = 0x100f
+ CBAUDEX = 0x1000
+ CFLUSH = 0xf
+ CIBAUD = 0x100f0000
+ CLOCAL = 0x800
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CMSPAR = 0x40000000
+ CR0 = 0x0
+ CR1 = 0x200
+ CR2 = 0x400
+ CR3 = 0x600
+ CRDLY = 0x600
+ CREAD = 0x80
+ CRTSCTS = 0x80000000
+ CS5 = 0x0
+ CS6 = 0x10
+ CS7 = 0x20
+ CS8 = 0x30
+ CSIGNAL = 0xff
+ CSIZE = 0x30
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x40
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x200
+ ECHOE = 0x10
+ ECHOK = 0x20
+ ECHOKE = 0x800
+ ECHONL = 0x40
+ ECHOPRT = 0x400
+ ENCODING_DEFAULT = 0x0
+ ENCODING_FM_MARK = 0x3
+ ENCODING_FM_SPACE = 0x4
+ ENCODING_MANCHESTER = 0x5
+ ENCODING_NRZ = 0x1
+ ENCODING_NRZI = 0x2
+ EPOLLERR = 0x8
+ EPOLLET = 0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ EPOLL_NONBLOCK = 0x800
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021AD = 0x88a8
+ ETH_P_8021AH = 0x88e7
+ ETH_P_8021Q = 0x8100
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_AARP = 0x80f3
+ ETH_P_AF_IUCV = 0xfbfb
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_QINQ1 = 0x9100
+ ETH_P_QINQ2 = 0x9200
+ ETH_P_QINQ3 = 0x9300
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TDLS = 0x890d
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FF0 = 0x0
+ FF1 = 0x8000
+ FFDLY = 0x8000
+ FLUSHO = 0x1000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0xc
+ F_GETLK64 = 0xc
+ F_GETOWN = 0x9
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0xd
+ F_SETLK64 = 0xd
+ F_SETLKW = 0xe
+ F_SETLKW64 = 0xe
+ F_SETOWN = 0x8
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x400
+ IBSHIFT = 0x10
+ ICANON = 0x2
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x8000
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_NODAD = 0x2
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x7
+ IFF_802_1Q_VLAN = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BONDING = 0x20
+ IFF_BRIDGE_PORT = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DISABLE_NETPOLL = 0x1000
+ IFF_DONT_BRIDGE = 0x800
+ IFF_DORMANT = 0x20000
+ IFF_DYNAMIC = 0x8000
+ IFF_EBRIDGE = 0x2
+ IFF_ECHO = 0x40000
+ IFF_ISATAP = 0x80
+ IFF_LOOPBACK = 0x8
+ IFF_LOWER_UP = 0x10000
+ IFF_MACVLAN_PORT = 0x2000
+ IFF_MASTER = 0x400
+ IFF_MASTER_8023AD = 0x8
+ IFF_MASTER_ALB = 0x10
+ IFF_MASTER_ARPMON = 0x100
+ IFF_MULTICAST = 0x1000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_OVS_DATAPATH = 0x8000
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_SLAVE_INACTIVE = 0x4
+ IFF_SLAVE_NEEDARP = 0x40
+ IFF_TAP = 0x2
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_TX_SKB_SHARING = 0x10000
+ IFF_UNICAST_FLT = 0x20000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFF_VOLATILE = 0x70c5a
+ IFF_WAN_HDLC = 0x200
+ IFF_XMIT_DST_RELEASE = 0x400
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x800
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BLOCK_SOURCE = 0x26
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_ALL = 0x31
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x1
+ ISTRIP = 0x20
+ IUCLC = 0x200
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x1000
+ IXON = 0x400
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DOFORK = 0xb
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_32BIT = 0x40
+ MAP_ANON = 0x20
+ MAP_ANONYMOUS = 0x20
+ MAP_DENYWRITE = 0x800
+ MAP_EXECUTABLE = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x100
+ MAP_HUGETLB = 0x40000
+ MAP_LOCKED = 0x2000
+ MAP_NONBLOCK = 0x10000
+ MAP_NORESERVE = 0x4000
+ MAP_POPULATE = 0x8000
+ MAP_PRIVATE = 0x2
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x20000
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_CRYPTO = 0x15
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NL0 = 0x0
+ NL1 = 0x100
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLDLY = 0x100
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_DUMP_INTR = 0x10
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ OLCUC = 0x2
+ ONLCR = 0x4
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x400
+ O_ASYNC = 0x2000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x40
+ O_DIRECT = 0x4000
+ O_DIRECTORY = 0x10000
+ O_DSYNC = 0x1000
+ O_EXCL = 0x80
+ O_FSYNC = 0x101000
+ O_LARGEFILE = 0x8000
+ O_NDELAY = 0x800
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x100
+ O_NOFOLLOW = 0x20000
+ O_NONBLOCK = 0x800
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x101000
+ O_SYNC = 0x101000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_AUXDATA = 0x8
+ PACKET_BROADCAST = 0x1
+ PACKET_COPY_THRESH = 0x7
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FANOUT = 0x12
+ PACKET_FANOUT_CPU = 0x2
+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
+ PACKET_FANOUT_HASH = 0x0
+ PACKET_FANOUT_LB = 0x1
+ PACKET_FASTROUTE = 0x6
+ PACKET_HDRLEN = 0xb
+ PACKET_HOST = 0x0
+ PACKET_LOOPBACK = 0x5
+ PACKET_LOSS = 0xe
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MR_UNICAST = 0x3
+ PACKET_MULTICAST = 0x2
+ PACKET_ORIGDEV = 0x9
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RESERVE = 0xc
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PACKET_TIMESTAMP = 0x11
+ PACKET_TX_RING = 0xd
+ PACKET_TX_TIMESTAMP = 0x10
+ PACKET_VERSION = 0xa
+ PACKET_VNET_HDR = 0xf
+ PARENB = 0x100
+ PARITY_CRC16_PR0 = 0x2
+ PARITY_CRC16_PR0_CCITT = 0x4
+ PARITY_CRC16_PR1 = 0x3
+ PARITY_CRC16_PR1_CCITT = 0x5
+ PARITY_CRC32_PR0_CCITT = 0x6
+ PARITY_CRC32_PR1_CCITT = 0x7
+ PARITY_DEFAULT = 0x0
+ PARITY_NONE = 0x1
+ PARMRK = 0x8
+ PARODD = 0x200
+ PENDIN = 0x4000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_NO_NEW_PRIVS = 0x27
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_MM = 0x23
+ PR_SET_MM_BRK = 0x7
+ PR_SET_MM_END_CODE = 0x2
+ PR_SET_MM_END_DATA = 0x4
+ PR_SET_MM_START_BRK = 0x6
+ PR_SET_MM_START_CODE = 0x1
+ PR_SET_MM_START_DATA = 0x3
+ PR_SET_MM_START_STACK = 0x5
+ PR_SET_NAME = 0xf
+ PR_SET_NO_NEW_PRIVS = 0x26
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_PTRACER_ANY = 0xffffffff
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_SECCOMP = 0x7
+ PTRACE_EVENT_STOP = 0x80
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETFPREGS = 0xe
+ PTRACE_GETFPXREGS = 0x12
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GET_THREAD_AREA = 0x19
+ PTRACE_INTERRUPT = 0x4207
+ PTRACE_KILL = 0x8
+ PTRACE_LISTEN = 0x4208
+ PTRACE_OLDSETOPTIONS = 0x15
+ PTRACE_O_MASK = 0xff
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESECCOMP = 0x80
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKEUSR = 0x6
+ PTRACE_SEIZE = 0x4206
+ PTRACE_SEIZE_DEVEL = 0x80000000
+ PTRACE_SETFPREGS = 0xf
+ PTRACE_SETFPXREGS = 0x13
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SET_THREAD_AREA = 0x1a
+ PTRACE_SINGLEBLOCK = 0x21
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_SYSEMU = 0x1f
+ PTRACE_SYSEMU_SINGLESTEP = 0x20
+ PTRACE_TRACEME = 0x0
+ RLIMIT_AS = 0x9
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x7
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0xe
+ RTAX_MTU = 0x2
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x10
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELNEIGH = 0x1d
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x4f
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x10
+ RTM_NR_MSGTYPES = 0x40
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_F_DEAD = 0x1
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x8905
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x8904
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x8902
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x2
+ SOCK_NONBLOCK = 0x800
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0x1
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1e
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BROADCAST = 0x6
+ SO_BSDCOMPAT = 0xe
+ SO_DEBUG = 0x1
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x27
+ SO_DONTROUTE = 0x5
+ SO_ERROR = 0x4
+ SO_KEEPALIVE = 0x9
+ SO_LINGER = 0xd
+ SO_MARK = 0x24
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0xa
+ SO_PASSCRED = 0x10
+ SO_PASSSEC = 0x22
+ SO_PEERCRED = 0x11
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1f
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x26
+ SO_RCVBUF = 0x8
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x12
+ SO_RCVTIMEO = 0x14
+ SO_REUSEADDR = 0x2
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SNDBUF = 0x7
+ SO_SNDBUFFORCE = 0x20
+ SO_SNDLOWAT = 0x13
+ SO_SNDTIMEO = 0x15
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x3
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TAB0 = 0x0
+ TAB1 = 0x800
+ TAB2 = 0x1000
+ TAB3 = 0x1800
+ TABDLY = 0x1800
+ TCFLSH = 0x540b
+ TCGETA = 0x5405
+ TCGETS = 0x5401
+ TCGETS2 = 0x802c542a
+ TCGETX = 0x5432
+ TCIFLUSH = 0x0
+ TCIOFF = 0x2
+ TCIOFLUSH = 0x2
+ TCION = 0x3
+ TCOFLUSH = 0x1
+ TCOOFF = 0x0
+ TCOON = 0x1
+ TCP_CONGESTION = 0xd
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_QUICKACK = 0xc
+ TCP_SYNCNT = 0x7
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x2
+ TCSBRK = 0x5409
+ TCSBRKP = 0x5425
+ TCSETA = 0x5406
+ TCSETAF = 0x5408
+ TCSETAW = 0x5407
+ TCSETS = 0x5402
+ TCSETS2 = 0x402c542b
+ TCSETSF = 0x5404
+ TCSETSF2 = 0x402c542d
+ TCSETSW = 0x5403
+ TCSETSW2 = 0x402c542c
+ TCSETX = 0x5433
+ TCSETXF = 0x5434
+ TCSETXW = 0x5435
+ TCXONC = 0x540a
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x541d
+ TIOCEXCL = 0x540c
+ TIOCGDEV = 0x80045432
+ TIOCGETD = 0x5424
+ TIOCGEXCL = 0x80045440
+ TIOCGICOUNT = 0x545d
+ TIOCGLCKTRMIOS = 0x5456
+ TIOCGPGRP = 0x540f
+ TIOCGPKT = 0x80045438
+ TIOCGPTLCK = 0x80045439
+ TIOCGPTN = 0x80045430
+ TIOCGRS485 = 0x542e
+ TIOCGSERIAL = 0x541e
+ TIOCGSID = 0x5429
+ TIOCGSOFTCAR = 0x5419
+ TIOCGWINSZ = 0x5413
+ TIOCINQ = 0x541b
+ TIOCLINUX = 0x541c
+ TIOCMBIC = 0x5417
+ TIOCMBIS = 0x5416
+ TIOCMGET = 0x5415
+ TIOCMIWAIT = 0x545c
+ TIOCMSET = 0x5418
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x5422
+ TIOCNXCL = 0x540d
+ TIOCOUTQ = 0x5411
+ TIOCPKT = 0x5420
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x540e
+ TIOCSERCONFIG = 0x5453
+ TIOCSERGETLSR = 0x5459
+ TIOCSERGETMULTI = 0x545a
+ TIOCSERGSTRUCT = 0x5458
+ TIOCSERGWILD = 0x5454
+ TIOCSERSETMULTI = 0x545b
+ TIOCSERSWILD = 0x5455
+ TIOCSER_TEMT = 0x1
+ TIOCSETD = 0x5423
+ TIOCSIG = 0x40045436
+ TIOCSLCKTRMIOS = 0x5457
+ TIOCSPGRP = 0x5410
+ TIOCSPTLCK = 0x40045431
+ TIOCSRS485 = 0x542f
+ TIOCSSERIAL = 0x541f
+ TIOCSSOFTCAR = 0x541a
+ TIOCSTI = 0x5412
+ TIOCSWINSZ = 0x5414
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x100
+ TUNATTACHFILTER = 0x400854d5
+ TUNDETACHFILTER = 0x400854d6
+ TUNGETFEATURES = 0x800454cf
+ TUNGETIFF = 0x800454d2
+ TUNGETSNDBUF = 0x800454d3
+ TUNGETVNETHDRSZ = 0x800454d7
+ TUNSETDEBUG = 0x400454c9
+ TUNSETGROUP = 0x400454ce
+ TUNSETIFF = 0x400454ca
+ TUNSETLINK = 0x400454cd
+ TUNSETNOCSUM = 0x400454c8
+ TUNSETOFFLOAD = 0x400454d0
+ TUNSETOWNER = 0x400454cc
+ TUNSETPERSIST = 0x400454cb
+ TUNSETSNDBUF = 0x400454d4
+ TUNSETTXFILTER = 0x400454d1
+ TUNSETVNETHDRSZ = 0x400454d8
+ VDISCARD = 0xd
+ VEOF = 0x4
+ VEOL = 0xb
+ VEOL2 = 0x10
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x6
+ VQUIT = 0x1
+ VREPRINT = 0xc
+ VSTART = 0x8
+ VSTOP = 0x9
+ VSUSP = 0xa
+ VSWTC = 0x7
+ VT0 = 0x0
+ VT1 = 0x4000
+ VTDLY = 0x4000
+ VTIME = 0x5
+ VWERASE = 0xe
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x20
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+ XCASE = 0x4
+ XTABS = 0x1800
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x62)
+ EADDRNOTAVAIL = syscall.Errno(0x63)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x61)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x72)
+ EBADE = syscall.Errno(0x34)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x4d)
+ EBADMSG = syscall.Errno(0x4a)
+ EBADR = syscall.Errno(0x35)
+ EBADRQC = syscall.Errno(0x38)
+ EBADSLT = syscall.Errno(0x39)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x7d)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x2c)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x67)
+ ECONNREFUSED = syscall.Errno(0x6f)
+ ECONNRESET = syscall.Errno(0x68)
+ EDEADLK = syscall.Errno(0x23)
+ EDEADLOCK = syscall.Errno(0x23)
+ EDESTADDRREQ = syscall.Errno(0x59)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x7a)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x70)
+ EHOSTUNREACH = syscall.Errno(0x71)
+ EHWPOISON = syscall.Errno(0x85)
+ EIDRM = syscall.Errno(0x2b)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x73)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x6a)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x78)
+ EKEYEXPIRED = syscall.Errno(0x7f)
+ EKEYREJECTED = syscall.Errno(0x81)
+ EKEYREVOKED = syscall.Errno(0x80)
+ EL2HLT = syscall.Errno(0x33)
+ EL2NSYNC = syscall.Errno(0x2d)
+ EL3HLT = syscall.Errno(0x2e)
+ EL3RST = syscall.Errno(0x2f)
+ ELIBACC = syscall.Errno(0x4f)
+ ELIBBAD = syscall.Errno(0x50)
+ ELIBEXEC = syscall.Errno(0x53)
+ ELIBMAX = syscall.Errno(0x52)
+ ELIBSCN = syscall.Errno(0x51)
+ ELNRNG = syscall.Errno(0x30)
+ ELOOP = syscall.Errno(0x28)
+ EMEDIUMTYPE = syscall.Errno(0x7c)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x5a)
+ EMULTIHOP = syscall.Errno(0x48)
+ ENAMETOOLONG = syscall.Errno(0x24)
+ ENAVAIL = syscall.Errno(0x77)
+ ENETDOWN = syscall.Errno(0x64)
+ ENETRESET = syscall.Errno(0x66)
+ ENETUNREACH = syscall.Errno(0x65)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x37)
+ ENOBUFS = syscall.Errno(0x69)
+ ENOCSI = syscall.Errno(0x32)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0x7e)
+ ENOLCK = syscall.Errno(0x25)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x7b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x2a)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x5c)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x26)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x6b)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x27)
+ ENOTNAM = syscall.Errno(0x76)
+ ENOTRECOVERABLE = syscall.Errno(0x83)
+ ENOTSOCK = syscall.Errno(0x58)
+ ENOTSUP = syscall.Errno(0x5f)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x4c)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x5f)
+ EOVERFLOW = syscall.Errno(0x4b)
+ EOWNERDEAD = syscall.Errno(0x82)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x60)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x5d)
+ EPROTOTYPE = syscall.Errno(0x5b)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x4e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x79)
+ ERESTART = syscall.Errno(0x55)
+ ERFKILL = syscall.Errno(0x84)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x6c)
+ ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x74)
+ ESTRPIPE = syscall.Errno(0x56)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x6e)
+ ETOOMANYREFS = syscall.Errno(0x6d)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x75)
+ EUNATCH = syscall.Errno(0x31)
+ EUSERS = syscall.Errno(0x57)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0x7)
+ SIGCHLD = syscall.Signal(0x11)
+ SIGCLD = syscall.Signal(0x11)
+ SIGCONT = syscall.Signal(0x12)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x1d)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x1d)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x1e)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTKFLT = syscall.Signal(0x10)
+ SIGSTOP = syscall.Signal(0x13)
+ SIGSYS = syscall.Signal(0x1f)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x14)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGUNUSED = syscall.Signal(0x1f)
+ SIGURG = syscall.Signal(0x17)
+ SIGUSR1 = syscall.Signal(0xa)
+ SIGUSR2 = syscall.Signal(0xc)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "resource deadlock avoided",
+ 36: "file name too long",
+ 37: "no locks available",
+ 38: "function not implemented",
+ 39: "directory not empty",
+ 40: "too many levels of symbolic links",
+ 42: "no message of desired type",
+ 43: "identifier removed",
+ 44: "channel number out of range",
+ 45: "level 2 not synchronized",
+ 46: "level 3 halted",
+ 47: "level 3 reset",
+ 48: "link number out of range",
+ 49: "protocol driver not attached",
+ 50: "no CSI structure available",
+ 51: "level 2 halted",
+ 52: "invalid exchange",
+ 53: "invalid request descriptor",
+ 54: "exchange full",
+ 55: "no anode",
+ 56: "invalid request code",
+ 57: "invalid slot",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 72: "multihop attempted",
+ 73: "RFS specific error",
+ 74: "bad message",
+ 75: "value too large for defined data type",
+ 76: "name not unique on network",
+ 77: "file descriptor in bad state",
+ 78: "remote address changed",
+ 79: "can not access a needed shared library",
+ 80: "accessing a corrupted shared library",
+ 81: ".lib section in a.out corrupted",
+ 82: "attempting to link in too many shared libraries",
+ 83: "cannot exec a shared library directly",
+ 84: "invalid or incomplete multibyte or wide character",
+ 85: "interrupted system call should be restarted",
+ 86: "streams pipe error",
+ 87: "too many users",
+ 88: "socket operation on non-socket",
+ 89: "destination address required",
+ 90: "message too long",
+ 91: "protocol wrong type for socket",
+ 92: "protocol not available",
+ 93: "protocol not supported",
+ 94: "socket type not supported",
+ 95: "operation not supported",
+ 96: "protocol family not supported",
+ 97: "address family not supported by protocol",
+ 98: "address already in use",
+ 99: "cannot assign requested address",
+ 100: "network is down",
+ 101: "network is unreachable",
+ 102: "network dropped connection on reset",
+ 103: "software caused connection abort",
+ 104: "connection reset by peer",
+ 105: "no buffer space available",
+ 106: "transport endpoint is already connected",
+ 107: "transport endpoint is not connected",
+ 108: "cannot send after transport endpoint shutdown",
+ 109: "too many references: cannot splice",
+ 110: "connection timed out",
+ 111: "connection refused",
+ 112: "host is down",
+ 113: "no route to host",
+ 114: "operation already in progress",
+ 115: "operation now in progress",
+ 116: "stale NFS file handle",
+ 117: "structure needs cleaning",
+ 118: "not a XENIX named type file",
+ 119: "no XENIX semaphores available",
+ 120: "is a named type file",
+ 121: "remote I/O error",
+ 122: "disk quota exceeded",
+ 123: "no medium found",
+ 124: "wrong medium type",
+ 125: "operation canceled",
+ 126: "required key not available",
+ 127: "key has expired",
+ 128: "key has been revoked",
+ 129: "key was rejected by service",
+ 130: "owner died",
+ 131: "state not recoverable",
+ 132: "operation not possible due to RF-kill",
+ 133: "unknown error 133",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "bus error",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "user defined signal 1",
+ 11: "segmentation fault",
+ 12: "user defined signal 2",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "stack fault",
+ 17: "child exited",
+ 18: "continued",
+ 19: "stopped (signal)",
+ 20: "stopped",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "urgent I/O condition",
+ 24: "CPU time limit exceeded",
+ 25: "file size limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window changed",
+ 29: "I/O possible",
+ 30: "power failure",
+ 31: "bad system call",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go
new file mode 100644
index 000000000..b83fb40b3
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_amd64.go
@@ -0,0 +1,1818 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x28
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_NFC = 0x27
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CAIF = 0x336
+ ARPHRD_CAN = 0x118
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PHONET = 0x334
+ ARPHRD_PHONET_PIPE = 0x335
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x1008
+ B110 = 0x3
+ B115200 = 0x1002
+ B1152000 = 0x1009
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x100a
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x100b
+ B230400 = 0x1003
+ B2400 = 0xb
+ B2500000 = 0x100c
+ B300 = 0x7
+ B3000000 = 0x100d
+ B3500000 = 0x100e
+ B38400 = 0xf
+ B4000000 = 0x100f
+ B460800 = 0x1004
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x1005
+ B57600 = 0x1001
+ B576000 = 0x1006
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x1007
+ B9600 = 0xd
+ BOTHER = 0x1000
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ BS0 = 0x0
+ BS1 = 0x2000
+ BSDLY = 0x2000
+ CBAUD = 0x100f
+ CBAUDEX = 0x1000
+ CFLUSH = 0xf
+ CIBAUD = 0x100f0000
+ CLOCAL = 0x800
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CMSPAR = 0x40000000
+ CR0 = 0x0
+ CR1 = 0x200
+ CR2 = 0x400
+ CR3 = 0x600
+ CRDLY = 0x600
+ CREAD = 0x80
+ CRTSCTS = 0x80000000
+ CS5 = 0x0
+ CS6 = 0x10
+ CS7 = 0x20
+ CS8 = 0x30
+ CSIGNAL = 0xff
+ CSIZE = 0x30
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x40
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x200
+ ECHOE = 0x10
+ ECHOK = 0x20
+ ECHOKE = 0x800
+ ECHONL = 0x40
+ ECHOPRT = 0x400
+ ENCODING_DEFAULT = 0x0
+ ENCODING_FM_MARK = 0x3
+ ENCODING_FM_SPACE = 0x4
+ ENCODING_MANCHESTER = 0x5
+ ENCODING_NRZ = 0x1
+ ENCODING_NRZI = 0x2
+ EPOLLERR = 0x8
+ EPOLLET = 0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ EPOLL_NONBLOCK = 0x800
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021AD = 0x88a8
+ ETH_P_8021AH = 0x88e7
+ ETH_P_8021Q = 0x8100
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_AARP = 0x80f3
+ ETH_P_AF_IUCV = 0xfbfb
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_QINQ1 = 0x9100
+ ETH_P_QINQ2 = 0x9200
+ ETH_P_QINQ3 = 0x9300
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TDLS = 0x890d
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FF0 = 0x0
+ FF1 = 0x8000
+ FFDLY = 0x8000
+ FLUSHO = 0x1000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0x5
+ F_GETLK64 = 0x5
+ F_GETOWN = 0x9
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0x6
+ F_SETLK64 = 0x6
+ F_SETLKW = 0x7
+ F_SETLKW64 = 0x7
+ F_SETOWN = 0x8
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x400
+ IBSHIFT = 0x10
+ ICANON = 0x2
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x8000
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_NODAD = 0x2
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x7
+ IFF_802_1Q_VLAN = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BONDING = 0x20
+ IFF_BRIDGE_PORT = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DISABLE_NETPOLL = 0x1000
+ IFF_DONT_BRIDGE = 0x800
+ IFF_DORMANT = 0x20000
+ IFF_DYNAMIC = 0x8000
+ IFF_EBRIDGE = 0x2
+ IFF_ECHO = 0x40000
+ IFF_ISATAP = 0x80
+ IFF_LOOPBACK = 0x8
+ IFF_LOWER_UP = 0x10000
+ IFF_MACVLAN_PORT = 0x2000
+ IFF_MASTER = 0x400
+ IFF_MASTER_8023AD = 0x8
+ IFF_MASTER_ALB = 0x10
+ IFF_MASTER_ARPMON = 0x100
+ IFF_MULTICAST = 0x1000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_OVS_DATAPATH = 0x8000
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_SLAVE_INACTIVE = 0x4
+ IFF_SLAVE_NEEDARP = 0x40
+ IFF_TAP = 0x2
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_TX_SKB_SHARING = 0x10000
+ IFF_UNICAST_FLT = 0x20000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFF_VOLATILE = 0x70c5a
+ IFF_WAN_HDLC = 0x200
+ IFF_XMIT_DST_RELEASE = 0x400
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x800
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BLOCK_SOURCE = 0x26
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_ALL = 0x31
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x1
+ ISTRIP = 0x20
+ IUCLC = 0x200
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x1000
+ IXON = 0x400
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DOFORK = 0xb
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_32BIT = 0x40
+ MAP_ANON = 0x20
+ MAP_ANONYMOUS = 0x20
+ MAP_DENYWRITE = 0x800
+ MAP_EXECUTABLE = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x100
+ MAP_HUGETLB = 0x40000
+ MAP_LOCKED = 0x2000
+ MAP_NONBLOCK = 0x10000
+ MAP_NORESERVE = 0x4000
+ MAP_POPULATE = 0x8000
+ MAP_PRIVATE = 0x2
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x20000
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_CRYPTO = 0x15
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NL0 = 0x0
+ NL1 = 0x100
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLDLY = 0x100
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_DUMP_INTR = 0x10
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ OLCUC = 0x2
+ ONLCR = 0x4
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x400
+ O_ASYNC = 0x2000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x40
+ O_DIRECT = 0x4000
+ O_DIRECTORY = 0x10000
+ O_DSYNC = 0x1000
+ O_EXCL = 0x80
+ O_FSYNC = 0x101000
+ O_LARGEFILE = 0x0
+ O_NDELAY = 0x800
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x100
+ O_NOFOLLOW = 0x20000
+ O_NONBLOCK = 0x800
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x101000
+ O_SYNC = 0x101000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_AUXDATA = 0x8
+ PACKET_BROADCAST = 0x1
+ PACKET_COPY_THRESH = 0x7
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FANOUT = 0x12
+ PACKET_FANOUT_CPU = 0x2
+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
+ PACKET_FANOUT_HASH = 0x0
+ PACKET_FANOUT_LB = 0x1
+ PACKET_FASTROUTE = 0x6
+ PACKET_HDRLEN = 0xb
+ PACKET_HOST = 0x0
+ PACKET_LOOPBACK = 0x5
+ PACKET_LOSS = 0xe
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MR_UNICAST = 0x3
+ PACKET_MULTICAST = 0x2
+ PACKET_ORIGDEV = 0x9
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RESERVE = 0xc
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PACKET_TIMESTAMP = 0x11
+ PACKET_TX_RING = 0xd
+ PACKET_TX_TIMESTAMP = 0x10
+ PACKET_VERSION = 0xa
+ PACKET_VNET_HDR = 0xf
+ PARENB = 0x100
+ PARITY_CRC16_PR0 = 0x2
+ PARITY_CRC16_PR0_CCITT = 0x4
+ PARITY_CRC16_PR1 = 0x3
+ PARITY_CRC16_PR1_CCITT = 0x5
+ PARITY_CRC32_PR0_CCITT = 0x6
+ PARITY_CRC32_PR1_CCITT = 0x7
+ PARITY_DEFAULT = 0x0
+ PARITY_NONE = 0x1
+ PARMRK = 0x8
+ PARODD = 0x200
+ PENDIN = 0x4000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_NO_NEW_PRIVS = 0x27
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_MM = 0x23
+ PR_SET_MM_BRK = 0x7
+ PR_SET_MM_END_CODE = 0x2
+ PR_SET_MM_END_DATA = 0x4
+ PR_SET_MM_START_BRK = 0x6
+ PR_SET_MM_START_CODE = 0x1
+ PR_SET_MM_START_DATA = 0x3
+ PR_SET_MM_START_STACK = 0x5
+ PR_SET_NAME = 0xf
+ PR_SET_NO_NEW_PRIVS = 0x26
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_PTRACER_ANY = -0x1
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ARCH_PRCTL = 0x1e
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_SECCOMP = 0x7
+ PTRACE_EVENT_STOP = 0x80
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETFPREGS = 0xe
+ PTRACE_GETFPXREGS = 0x12
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GET_THREAD_AREA = 0x19
+ PTRACE_INTERRUPT = 0x4207
+ PTRACE_KILL = 0x8
+ PTRACE_LISTEN = 0x4208
+ PTRACE_OLDSETOPTIONS = 0x15
+ PTRACE_O_MASK = 0xff
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESECCOMP = 0x80
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKEUSR = 0x6
+ PTRACE_SEIZE = 0x4206
+ PTRACE_SEIZE_DEVEL = 0x80000000
+ PTRACE_SETFPREGS = 0xf
+ PTRACE_SETFPXREGS = 0x13
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SET_THREAD_AREA = 0x1a
+ PTRACE_SINGLEBLOCK = 0x21
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_SYSEMU = 0x1f
+ PTRACE_SYSEMU_SINGLESTEP = 0x20
+ PTRACE_TRACEME = 0x0
+ RLIMIT_AS = 0x9
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x7
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0xe
+ RTAX_MTU = 0x2
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x10
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELNEIGH = 0x1d
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x4f
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x10
+ RTM_NR_MSGTYPES = 0x40
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_F_DEAD = 0x1
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x8905
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x8904
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x8902
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x2
+ SOCK_NONBLOCK = 0x800
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0x1
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1e
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BROADCAST = 0x6
+ SO_BSDCOMPAT = 0xe
+ SO_DEBUG = 0x1
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x27
+ SO_DONTROUTE = 0x5
+ SO_ERROR = 0x4
+ SO_KEEPALIVE = 0x9
+ SO_LINGER = 0xd
+ SO_MARK = 0x24
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0xa
+ SO_PASSCRED = 0x10
+ SO_PASSSEC = 0x22
+ SO_PEERCRED = 0x11
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1f
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x26
+ SO_RCVBUF = 0x8
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x12
+ SO_RCVTIMEO = 0x14
+ SO_REUSEADDR = 0x2
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SNDBUF = 0x7
+ SO_SNDBUFFORCE = 0x20
+ SO_SNDLOWAT = 0x13
+ SO_SNDTIMEO = 0x15
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x3
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TAB0 = 0x0
+ TAB1 = 0x800
+ TAB2 = 0x1000
+ TAB3 = 0x1800
+ TABDLY = 0x1800
+ TCFLSH = 0x540b
+ TCGETA = 0x5405
+ TCGETS = 0x5401
+ TCGETS2 = 0x802c542a
+ TCGETX = 0x5432
+ TCIFLUSH = 0x0
+ TCIOFF = 0x2
+ TCIOFLUSH = 0x2
+ TCION = 0x3
+ TCOFLUSH = 0x1
+ TCOOFF = 0x0
+ TCOON = 0x1
+ TCP_CONGESTION = 0xd
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_QUICKACK = 0xc
+ TCP_SYNCNT = 0x7
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x2
+ TCSBRK = 0x5409
+ TCSBRKP = 0x5425
+ TCSETA = 0x5406
+ TCSETAF = 0x5408
+ TCSETAW = 0x5407
+ TCSETS = 0x5402
+ TCSETS2 = 0x402c542b
+ TCSETSF = 0x5404
+ TCSETSF2 = 0x402c542d
+ TCSETSW = 0x5403
+ TCSETSW2 = 0x402c542c
+ TCSETX = 0x5433
+ TCSETXF = 0x5434
+ TCSETXW = 0x5435
+ TCXONC = 0x540a
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x541d
+ TIOCEXCL = 0x540c
+ TIOCGDEV = 0x80045432
+ TIOCGETD = 0x5424
+ TIOCGEXCL = 0x80045440
+ TIOCGICOUNT = 0x545d
+ TIOCGLCKTRMIOS = 0x5456
+ TIOCGPGRP = 0x540f
+ TIOCGPKT = 0x80045438
+ TIOCGPTLCK = 0x80045439
+ TIOCGPTN = 0x80045430
+ TIOCGRS485 = 0x542e
+ TIOCGSERIAL = 0x541e
+ TIOCGSID = 0x5429
+ TIOCGSOFTCAR = 0x5419
+ TIOCGWINSZ = 0x5413
+ TIOCINQ = 0x541b
+ TIOCLINUX = 0x541c
+ TIOCMBIC = 0x5417
+ TIOCMBIS = 0x5416
+ TIOCMGET = 0x5415
+ TIOCMIWAIT = 0x545c
+ TIOCMSET = 0x5418
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x5422
+ TIOCNXCL = 0x540d
+ TIOCOUTQ = 0x5411
+ TIOCPKT = 0x5420
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x540e
+ TIOCSERCONFIG = 0x5453
+ TIOCSERGETLSR = 0x5459
+ TIOCSERGETMULTI = 0x545a
+ TIOCSERGSTRUCT = 0x5458
+ TIOCSERGWILD = 0x5454
+ TIOCSERSETMULTI = 0x545b
+ TIOCSERSWILD = 0x5455
+ TIOCSER_TEMT = 0x1
+ TIOCSETD = 0x5423
+ TIOCSIG = 0x40045436
+ TIOCSLCKTRMIOS = 0x5457
+ TIOCSPGRP = 0x5410
+ TIOCSPTLCK = 0x40045431
+ TIOCSRS485 = 0x542f
+ TIOCSSERIAL = 0x541f
+ TIOCSSOFTCAR = 0x541a
+ TIOCSTI = 0x5412
+ TIOCSWINSZ = 0x5414
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x100
+ TUNATTACHFILTER = 0x401054d5
+ TUNDETACHFILTER = 0x401054d6
+ TUNGETFEATURES = 0x800454cf
+ TUNGETIFF = 0x800454d2
+ TUNGETSNDBUF = 0x800454d3
+ TUNGETVNETHDRSZ = 0x800454d7
+ TUNSETDEBUG = 0x400454c9
+ TUNSETGROUP = 0x400454ce
+ TUNSETIFF = 0x400454ca
+ TUNSETLINK = 0x400454cd
+ TUNSETNOCSUM = 0x400454c8
+ TUNSETOFFLOAD = 0x400454d0
+ TUNSETOWNER = 0x400454cc
+ TUNSETPERSIST = 0x400454cb
+ TUNSETSNDBUF = 0x400454d4
+ TUNSETTXFILTER = 0x400454d1
+ TUNSETVNETHDRSZ = 0x400454d8
+ VDISCARD = 0xd
+ VEOF = 0x4
+ VEOL = 0xb
+ VEOL2 = 0x10
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x6
+ VQUIT = 0x1
+ VREPRINT = 0xc
+ VSTART = 0x8
+ VSTOP = 0x9
+ VSUSP = 0xa
+ VSWTC = 0x7
+ VT0 = 0x0
+ VT1 = 0x4000
+ VTDLY = 0x4000
+ VTIME = 0x5
+ VWERASE = 0xe
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x40
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+ XCASE = 0x4
+ XTABS = 0x1800
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x62)
+ EADDRNOTAVAIL = syscall.Errno(0x63)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x61)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x72)
+ EBADE = syscall.Errno(0x34)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x4d)
+ EBADMSG = syscall.Errno(0x4a)
+ EBADR = syscall.Errno(0x35)
+ EBADRQC = syscall.Errno(0x38)
+ EBADSLT = syscall.Errno(0x39)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x7d)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x2c)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x67)
+ ECONNREFUSED = syscall.Errno(0x6f)
+ ECONNRESET = syscall.Errno(0x68)
+ EDEADLK = syscall.Errno(0x23)
+ EDEADLOCK = syscall.Errno(0x23)
+ EDESTADDRREQ = syscall.Errno(0x59)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x7a)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x70)
+ EHOSTUNREACH = syscall.Errno(0x71)
+ EHWPOISON = syscall.Errno(0x85)
+ EIDRM = syscall.Errno(0x2b)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x73)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x6a)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x78)
+ EKEYEXPIRED = syscall.Errno(0x7f)
+ EKEYREJECTED = syscall.Errno(0x81)
+ EKEYREVOKED = syscall.Errno(0x80)
+ EL2HLT = syscall.Errno(0x33)
+ EL2NSYNC = syscall.Errno(0x2d)
+ EL3HLT = syscall.Errno(0x2e)
+ EL3RST = syscall.Errno(0x2f)
+ ELIBACC = syscall.Errno(0x4f)
+ ELIBBAD = syscall.Errno(0x50)
+ ELIBEXEC = syscall.Errno(0x53)
+ ELIBMAX = syscall.Errno(0x52)
+ ELIBSCN = syscall.Errno(0x51)
+ ELNRNG = syscall.Errno(0x30)
+ ELOOP = syscall.Errno(0x28)
+ EMEDIUMTYPE = syscall.Errno(0x7c)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x5a)
+ EMULTIHOP = syscall.Errno(0x48)
+ ENAMETOOLONG = syscall.Errno(0x24)
+ ENAVAIL = syscall.Errno(0x77)
+ ENETDOWN = syscall.Errno(0x64)
+ ENETRESET = syscall.Errno(0x66)
+ ENETUNREACH = syscall.Errno(0x65)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x37)
+ ENOBUFS = syscall.Errno(0x69)
+ ENOCSI = syscall.Errno(0x32)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0x7e)
+ ENOLCK = syscall.Errno(0x25)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x7b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x2a)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x5c)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x26)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x6b)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x27)
+ ENOTNAM = syscall.Errno(0x76)
+ ENOTRECOVERABLE = syscall.Errno(0x83)
+ ENOTSOCK = syscall.Errno(0x58)
+ ENOTSUP = syscall.Errno(0x5f)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x4c)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x5f)
+ EOVERFLOW = syscall.Errno(0x4b)
+ EOWNERDEAD = syscall.Errno(0x82)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x60)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x5d)
+ EPROTOTYPE = syscall.Errno(0x5b)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x4e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x79)
+ ERESTART = syscall.Errno(0x55)
+ ERFKILL = syscall.Errno(0x84)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x6c)
+ ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x74)
+ ESTRPIPE = syscall.Errno(0x56)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x6e)
+ ETOOMANYREFS = syscall.Errno(0x6d)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x75)
+ EUNATCH = syscall.Errno(0x31)
+ EUSERS = syscall.Errno(0x57)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0x7)
+ SIGCHLD = syscall.Signal(0x11)
+ SIGCLD = syscall.Signal(0x11)
+ SIGCONT = syscall.Signal(0x12)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x1d)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x1d)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x1e)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTKFLT = syscall.Signal(0x10)
+ SIGSTOP = syscall.Signal(0x13)
+ SIGSYS = syscall.Signal(0x1f)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x14)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGUNUSED = syscall.Signal(0x1f)
+ SIGURG = syscall.Signal(0x17)
+ SIGUSR1 = syscall.Signal(0xa)
+ SIGUSR2 = syscall.Signal(0xc)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "resource deadlock avoided",
+ 36: "file name too long",
+ 37: "no locks available",
+ 38: "function not implemented",
+ 39: "directory not empty",
+ 40: "too many levels of symbolic links",
+ 42: "no message of desired type",
+ 43: "identifier removed",
+ 44: "channel number out of range",
+ 45: "level 2 not synchronized",
+ 46: "level 3 halted",
+ 47: "level 3 reset",
+ 48: "link number out of range",
+ 49: "protocol driver not attached",
+ 50: "no CSI structure available",
+ 51: "level 2 halted",
+ 52: "invalid exchange",
+ 53: "invalid request descriptor",
+ 54: "exchange full",
+ 55: "no anode",
+ 56: "invalid request code",
+ 57: "invalid slot",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 72: "multihop attempted",
+ 73: "RFS specific error",
+ 74: "bad message",
+ 75: "value too large for defined data type",
+ 76: "name not unique on network",
+ 77: "file descriptor in bad state",
+ 78: "remote address changed",
+ 79: "can not access a needed shared library",
+ 80: "accessing a corrupted shared library",
+ 81: ".lib section in a.out corrupted",
+ 82: "attempting to link in too many shared libraries",
+ 83: "cannot exec a shared library directly",
+ 84: "invalid or incomplete multibyte or wide character",
+ 85: "interrupted system call should be restarted",
+ 86: "streams pipe error",
+ 87: "too many users",
+ 88: "socket operation on non-socket",
+ 89: "destination address required",
+ 90: "message too long",
+ 91: "protocol wrong type for socket",
+ 92: "protocol not available",
+ 93: "protocol not supported",
+ 94: "socket type not supported",
+ 95: "operation not supported",
+ 96: "protocol family not supported",
+ 97: "address family not supported by protocol",
+ 98: "address already in use",
+ 99: "cannot assign requested address",
+ 100: "network is down",
+ 101: "network is unreachable",
+ 102: "network dropped connection on reset",
+ 103: "software caused connection abort",
+ 104: "connection reset by peer",
+ 105: "no buffer space available",
+ 106: "transport endpoint is already connected",
+ 107: "transport endpoint is not connected",
+ 108: "cannot send after transport endpoint shutdown",
+ 109: "too many references: cannot splice",
+ 110: "connection timed out",
+ 111: "connection refused",
+ 112: "host is down",
+ 113: "no route to host",
+ 114: "operation already in progress",
+ 115: "operation now in progress",
+ 116: "stale NFS file handle",
+ 117: "structure needs cleaning",
+ 118: "not a XENIX named type file",
+ 119: "no XENIX semaphores available",
+ 120: "is a named type file",
+ 121: "remote I/O error",
+ 122: "disk quota exceeded",
+ 123: "no medium found",
+ 124: "wrong medium type",
+ 125: "operation canceled",
+ 126: "required key not available",
+ 127: "key has expired",
+ 128: "key has been revoked",
+ 129: "key was rejected by service",
+ 130: "owner died",
+ 131: "state not recoverable",
+ 132: "operation not possible due to RF-kill",
+ 133: "unknown error 133",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "bus error",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "user defined signal 1",
+ 11: "segmentation fault",
+ 12: "user defined signal 2",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "stack fault",
+ 17: "child exited",
+ 18: "continued",
+ 19: "stopped (signal)",
+ 20: "stopped",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "urgent I/O condition",
+ 24: "CPU time limit exceeded",
+ 25: "file size limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window changed",
+ 29: "I/O possible",
+ 30: "power failure",
+ 31: "bad system call",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go
new file mode 100644
index 000000000..1cc76a78c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm.go
@@ -0,0 +1,1742 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x27
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802154_PHY = 0x325
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x1008
+ B110 = 0x3
+ B115200 = 0x1002
+ B1152000 = 0x1009
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x100a
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x100b
+ B230400 = 0x1003
+ B2400 = 0xb
+ B2500000 = 0x100c
+ B300 = 0x7
+ B3000000 = 0x100d
+ B3500000 = 0x100e
+ B38400 = 0xf
+ B4000000 = 0x100f
+ B460800 = 0x1004
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x1005
+ B57600 = 0x1001
+ B576000 = 0x1006
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x1007
+ B9600 = 0xd
+ BOTHER = 0x1000
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ BS0 = 0x0
+ BS1 = 0x2000
+ BSDLY = 0x2000
+ CBAUD = 0x100f
+ CBAUDEX = 0x1000
+ CFLUSH = 0xf
+ CIBAUD = 0x100f0000
+ CLOCAL = 0x800
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CMSPAR = 0x40000000
+ CR0 = 0x0
+ CR1 = 0x200
+ CR2 = 0x400
+ CR3 = 0x600
+ CRDLY = 0x600
+ CREAD = 0x80
+ CRTSCTS = 0x80000000
+ CS5 = 0x0
+ CS6 = 0x10
+ CS7 = 0x20
+ CS8 = 0x30
+ CSIGNAL = 0xff
+ CSIZE = 0x30
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x40
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ELF_NGREG = 0x12
+ ELF_PRARGSZ = 0x50
+ ECHO = 0x8
+ ECHOCTL = 0x200
+ ECHOE = 0x10
+ ECHOK = 0x20
+ ECHOKE = 0x800
+ ECHONL = 0x40
+ ECHOPRT = 0x400
+ EPOLLERR = 0x8
+ EPOLLET = -0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ EPOLL_NONBLOCK = 0x800
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021Q = 0x8100
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_AARP = 0x80f3
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FF0 = 0x0
+ FF1 = 0x8000
+ FFDLY = 0x8000
+ FLUSHO = 0x1000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0xc
+ F_GETLK64 = 0xc
+ F_GETOWN = 0x9
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0xd
+ F_SETLK64 = 0xd
+ F_SETLKW = 0xe
+ F_SETLKW64 = 0xe
+ F_SETOWN = 0x8
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x400
+ IBSHIFT = 0x10
+ ICANON = 0x2
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x8000
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_NODAD = 0x2
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x7
+ IFF_ALLMULTI = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DYNAMIC = 0x8000
+ IFF_LOOPBACK = 0x8
+ IFF_MASTER = 0x400
+ IFF_MULTICAST = 0x1000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_TAP = 0x2
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x800
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BLOCK_SOURCE = 0x26
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x1
+ ISTRIP = 0x20
+ IUCLC = 0x200
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x1000
+ IXON = 0x400
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DOFORK = 0xb
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x20
+ MAP_ANONYMOUS = 0x20
+ MAP_DENYWRITE = 0x800
+ MAP_EXECUTABLE = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x100
+ MAP_LOCKED = 0x2000
+ MAP_NONBLOCK = 0x10000
+ MAP_NORESERVE = 0x4000
+ MAP_POPULATE = 0x8000
+ MAP_PRIVATE = 0x2
+ MAP_SHARED = 0x1
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NL0 = 0x0
+ NL1 = 0x100
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLDLY = 0x100
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ OLCUC = 0x2
+ ONLCR = 0x4
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x400
+ O_ASYNC = 0x2000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x40
+ O_DIRECT = 0x10000
+ O_DIRECTORY = 0x4000
+ O_DSYNC = 0x1000
+ O_EXCL = 0x80
+ O_FSYNC = 0x1000
+ O_LARGEFILE = 0x20000
+ O_NDELAY = 0x800
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x100
+ O_NOFOLLOW = 0x8000
+ O_NONBLOCK = 0x800
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x1000
+ O_SYNC = 0x1000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_BROADCAST = 0x1
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FASTROUTE = 0x6
+ PACKET_HOST = 0x0
+ PACKET_LOOPBACK = 0x5
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MULTICAST = 0x2
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PARENB = 0x100
+ PARMRK = 0x8
+ PARODD = 0x200
+ PENDIN = 0x4000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_CLEAR_SECCOMP_FILTER = 0x25
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECCOMP_FILTER = 0x23
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_SECCOMP_FILTER_EVENT = 0x1
+ PR_SECCOMP_FILTER_SYSCALL = 0x0
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_NAME = 0xf
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECCOMP_FILTER = 0x24
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETCRUNCHREGS = 0x19
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETFPREGS = 0xe
+ PTRACE_GETHBPREGS = 0x1d
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GETVFPREGS = 0x1b
+ PTRACE_GETWMMXREGS = 0x12
+ PTRACE_GET_THREAD_AREA = 0x16
+ PTRACE_KILL = 0x8
+ PTRACE_OLDSETOPTIONS = 0x15
+ PTRACE_O_MASK = 0x7f
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKEUSR = 0x6
+ PTRACE_SETCRUNCHREGS = 0x1a
+ PTRACE_SETFPREGS = 0xf
+ PTRACE_SETHBPREGS = 0x1e
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SETVFPREGS = 0x1c
+ PTRACE_SETWMMXREGS = 0x13
+ PTRACE_SET_SYSCALL = 0x17
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_TRACEME = 0x0
+ PT_DATA_ADDR = 0x10004
+ PT_TEXT_ADDR = 0x10000
+ PT_TEXT_END_ADDR = 0x10008
+ RLIMIT_AS = 0x9
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x7
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0xe
+ RTAX_MTU = 0x2
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x10
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELNEIGH = 0x1d
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x4f
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x10
+ RTM_NR_MSGTYPES = 0x40
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_F_DEAD = 0x1
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x8905
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x8904
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x8902
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x2
+ SOCK_NONBLOCK = 0x800
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0x1
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1e
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BROADCAST = 0x6
+ SO_BSDCOMPAT = 0xe
+ SO_DEBUG = 0x1
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x27
+ SO_DONTROUTE = 0x5
+ SO_ERROR = 0x4
+ SO_KEEPALIVE = 0x9
+ SO_LINGER = 0xd
+ SO_MARK = 0x24
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0xa
+ SO_PASSCRED = 0x10
+ SO_PASSSEC = 0x22
+ SO_PEERCRED = 0x11
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1f
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x26
+ SO_RCVBUF = 0x8
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x12
+ SO_RCVTIMEO = 0x14
+ SO_REUSEADDR = 0x2
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SNDBUF = 0x7
+ SO_SNDBUFFORCE = 0x20
+ SO_SNDLOWAT = 0x13
+ SO_SNDTIMEO = 0x15
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x3
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TAB0 = 0x0
+ TAB1 = 0x800
+ TAB2 = 0x1000
+ TAB3 = 0x1800
+ TABDLY = 0x1800
+ TCFLSH = 0x540b
+ TCGETA = 0x5405
+ TCGETS = 0x5401
+ TCGETS2 = 0x802c542a
+ TCGETX = 0x5432
+ TCIFLUSH = 0x0
+ TCIOFF = 0x2
+ TCIOFLUSH = 0x2
+ TCION = 0x3
+ TCOFLUSH = 0x1
+ TCOOFF = 0x0
+ TCOON = 0x1
+ TCP_CONGESTION = 0xd
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_QUICKACK = 0xc
+ TCP_SYNCNT = 0x7
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x2
+ TCSBRK = 0x5409
+ TCSBRKP = 0x5425
+ TCSETA = 0x5406
+ TCSETAF = 0x5408
+ TCSETAW = 0x5407
+ TCSETS = 0x5402
+ TCSETS2 = 0x402c542b
+ TCSETSF = 0x5404
+ TCSETSF2 = 0x402c542d
+ TCSETSW = 0x5403
+ TCSETSW2 = 0x402c542c
+ TCSETX = 0x5433
+ TCSETXF = 0x5434
+ TCSETXW = 0x5435
+ TCXONC = 0x540a
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x541d
+ TIOCEXCL = 0x540c
+ TIOCGDEV = 0x80045432
+ TIOCGETD = 0x5424
+ TIOCGEXCL = 0x80045440
+ TIOCGICOUNT = 0x545d
+ TIOCGLCKTRMIOS = 0x5456
+ TIOCGPGRP = 0x540f
+ TIOCGPKT = 0x80045438
+ TIOCGPTLCK = 0x80045439
+ TIOCGPTN = 0x80045430
+ TIOCGRS485 = 0x542e
+ TIOCGSERIAL = 0x541e
+ TIOCGSID = 0x5429
+ TIOCGSOFTCAR = 0x5419
+ TIOCGWINSZ = 0x5413
+ TIOCINQ = 0x541b
+ TIOCLINUX = 0x541c
+ TIOCMBIC = 0x5417
+ TIOCMBIS = 0x5416
+ TIOCMGET = 0x5415
+ TIOCMIWAIT = 0x545c
+ TIOCMSET = 0x5418
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x5422
+ TIOCNXCL = 0x540d
+ TIOCOUTQ = 0x5411
+ TIOCPKT = 0x5420
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x540e
+ TIOCSERCONFIG = 0x5453
+ TIOCSERGETLSR = 0x5459
+ TIOCSERGETMULTI = 0x545a
+ TIOCSERGSTRUCT = 0x5458
+ TIOCSERGWILD = 0x5454
+ TIOCSERSETMULTI = 0x545b
+ TIOCSERSWILD = 0x5455
+ TIOCSER_TEMT = 0x1
+ TIOCSETD = 0x5423
+ TIOCSIG = 0x40045436
+ TIOCSLCKTRMIOS = 0x5457
+ TIOCSPGRP = 0x5410
+ TIOCSPTLCK = 0x40045431
+ TIOCSRS485 = 0x542f
+ TIOCSSERIAL = 0x541f
+ TIOCSSOFTCAR = 0x541a
+ TIOCSTI = 0x5412
+ TIOCSWINSZ = 0x5414
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x100
+ TUNATTACHFILTER = 0x400854d5
+ TUNDETACHFILTER = 0x400854d6
+ TUNGETFEATURES = 0x800454cf
+ TUNGETIFF = 0x800454d2
+ TUNGETSNDBUF = 0x800454d3
+ TUNGETVNETHDRSZ = 0x800454d7
+ TUNSETDEBUG = 0x400454c9
+ TUNSETGROUP = 0x400454ce
+ TUNSETIFF = 0x400454ca
+ TUNSETLINK = 0x400454cd
+ TUNSETNOCSUM = 0x400454c8
+ TUNSETOFFLOAD = 0x400454d0
+ TUNSETOWNER = 0x400454cc
+ TUNSETPERSIST = 0x400454cb
+ TUNSETSNDBUF = 0x400454d4
+ TUNSETTXFILTER = 0x400454d1
+ TUNSETVNETHDRSZ = 0x400454d8
+ VDISCARD = 0xd
+ VEOF = 0x4
+ VEOL = 0xb
+ VEOL2 = 0x10
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x6
+ VQUIT = 0x1
+ VREPRINT = 0xc
+ VSTART = 0x8
+ VSTOP = 0x9
+ VSUSP = 0xa
+ VSWTC = 0x7
+ VT0 = 0x0
+ VT1 = 0x4000
+ VTDLY = 0x4000
+ VTIME = 0x5
+ VWERASE = 0xe
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x20
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+ XCASE = 0x4
+ XTABS = 0x1800
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x62)
+ EADDRNOTAVAIL = syscall.Errno(0x63)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x61)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x72)
+ EBADE = syscall.Errno(0x34)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x4d)
+ EBADMSG = syscall.Errno(0x4a)
+ EBADR = syscall.Errno(0x35)
+ EBADRQC = syscall.Errno(0x38)
+ EBADSLT = syscall.Errno(0x39)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x7d)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x2c)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x67)
+ ECONNREFUSED = syscall.Errno(0x6f)
+ ECONNRESET = syscall.Errno(0x68)
+ EDEADLK = syscall.Errno(0x23)
+ EDEADLOCK = syscall.Errno(0x23)
+ EDESTADDRREQ = syscall.Errno(0x59)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x7a)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x70)
+ EHOSTUNREACH = syscall.Errno(0x71)
+ EHWPOISON = syscall.Errno(0x85)
+ EIDRM = syscall.Errno(0x2b)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x73)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x6a)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x78)
+ EKEYEXPIRED = syscall.Errno(0x7f)
+ EKEYREJECTED = syscall.Errno(0x81)
+ EKEYREVOKED = syscall.Errno(0x80)
+ EL2HLT = syscall.Errno(0x33)
+ EL2NSYNC = syscall.Errno(0x2d)
+ EL3HLT = syscall.Errno(0x2e)
+ EL3RST = syscall.Errno(0x2f)
+ ELIBACC = syscall.Errno(0x4f)
+ ELIBBAD = syscall.Errno(0x50)
+ ELIBEXEC = syscall.Errno(0x53)
+ ELIBMAX = syscall.Errno(0x52)
+ ELIBSCN = syscall.Errno(0x51)
+ ELNRNG = syscall.Errno(0x30)
+ ELOOP = syscall.Errno(0x28)
+ EMEDIUMTYPE = syscall.Errno(0x7c)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x5a)
+ EMULTIHOP = syscall.Errno(0x48)
+ ENAMETOOLONG = syscall.Errno(0x24)
+ ENAVAIL = syscall.Errno(0x77)
+ ENETDOWN = syscall.Errno(0x64)
+ ENETRESET = syscall.Errno(0x66)
+ ENETUNREACH = syscall.Errno(0x65)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x37)
+ ENOBUFS = syscall.Errno(0x69)
+ ENOCSI = syscall.Errno(0x32)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0x7e)
+ ENOLCK = syscall.Errno(0x25)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x7b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x2a)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x5c)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x26)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x6b)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x27)
+ ENOTNAM = syscall.Errno(0x76)
+ ENOTRECOVERABLE = syscall.Errno(0x83)
+ ENOTSOCK = syscall.Errno(0x58)
+ ENOTSUP = syscall.Errno(0x5f)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x4c)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x5f)
+ EOVERFLOW = syscall.Errno(0x4b)
+ EOWNERDEAD = syscall.Errno(0x82)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x60)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x5d)
+ EPROTOTYPE = syscall.Errno(0x5b)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x4e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x79)
+ ERESTART = syscall.Errno(0x55)
+ ERFKILL = syscall.Errno(0x84)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x6c)
+ ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x74)
+ ESTRPIPE = syscall.Errno(0x56)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x6e)
+ ETOOMANYREFS = syscall.Errno(0x6d)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x75)
+ EUNATCH = syscall.Errno(0x31)
+ EUSERS = syscall.Errno(0x57)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0x7)
+ SIGCHLD = syscall.Signal(0x11)
+ SIGCLD = syscall.Signal(0x11)
+ SIGCONT = syscall.Signal(0x12)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x1d)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x1d)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x1e)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTKFLT = syscall.Signal(0x10)
+ SIGSTOP = syscall.Signal(0x13)
+ SIGSYS = syscall.Signal(0x1f)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x14)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGUNUSED = syscall.Signal(0x1f)
+ SIGURG = syscall.Signal(0x17)
+ SIGUSR1 = syscall.Signal(0xa)
+ SIGUSR2 = syscall.Signal(0xc)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "resource deadlock avoided",
+ 36: "file name too long",
+ 37: "no locks available",
+ 38: "function not implemented",
+ 39: "directory not empty",
+ 40: "too many levels of symbolic links",
+ 42: "no message of desired type",
+ 43: "identifier removed",
+ 44: "channel number out of range",
+ 45: "level 2 not synchronized",
+ 46: "level 3 halted",
+ 47: "level 3 reset",
+ 48: "link number out of range",
+ 49: "protocol driver not attached",
+ 50: "no CSI structure available",
+ 51: "level 2 halted",
+ 52: "invalid exchange",
+ 53: "invalid request descriptor",
+ 54: "exchange full",
+ 55: "no anode",
+ 56: "invalid request code",
+ 57: "invalid slot",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 72: "multihop attempted",
+ 73: "RFS specific error",
+ 74: "bad message",
+ 75: "value too large for defined data type",
+ 76: "name not unique on network",
+ 77: "file descriptor in bad state",
+ 78: "remote address changed",
+ 79: "can not access a needed shared library",
+ 80: "accessing a corrupted shared library",
+ 81: ".lib section in a.out corrupted",
+ 82: "attempting to link in too many shared libraries",
+ 83: "cannot exec a shared library directly",
+ 84: "invalid or incomplete multibyte or wide character",
+ 85: "interrupted system call should be restarted",
+ 86: "streams pipe error",
+ 87: "too many users",
+ 88: "socket operation on non-socket",
+ 89: "destination address required",
+ 90: "message too long",
+ 91: "protocol wrong type for socket",
+ 92: "protocol not available",
+ 93: "protocol not supported",
+ 94: "socket type not supported",
+ 95: "operation not supported",
+ 96: "protocol family not supported",
+ 97: "address family not supported by protocol",
+ 98: "address already in use",
+ 99: "cannot assign requested address",
+ 100: "network is down",
+ 101: "network is unreachable",
+ 102: "network dropped connection on reset",
+ 103: "software caused connection abort",
+ 104: "connection reset by peer",
+ 105: "no buffer space available",
+ 106: "transport endpoint is already connected",
+ 107: "transport endpoint is not connected",
+ 108: "cannot send after transport endpoint shutdown",
+ 109: "too many references: cannot splice",
+ 110: "connection timed out",
+ 111: "connection refused",
+ 112: "host is down",
+ 113: "no route to host",
+ 114: "operation already in progress",
+ 115: "operation now in progress",
+ 116: "stale NFS file handle",
+ 117: "structure needs cleaning",
+ 118: "not a XENIX named type file",
+ 119: "no XENIX semaphores available",
+ 120: "is a named type file",
+ 121: "remote I/O error",
+ 122: "disk quota exceeded",
+ 123: "no medium found",
+ 124: "wrong medium type",
+ 125: "operation canceled",
+ 126: "required key not available",
+ 127: "key has expired",
+ 128: "key has been revoked",
+ 129: "key was rejected by service",
+ 130: "owner died",
+ 131: "state not recoverable",
+ 132: "operation not possible due to RF-kill",
+ 133: "unknown error 133",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "bus error",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "user defined signal 1",
+ 11: "segmentation fault",
+ 12: "user defined signal 2",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "stack fault",
+ 17: "child exited",
+ 18: "continued",
+ 19: "stopped (signal)",
+ 20: "stopped",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "urgent I/O condition",
+ 24: "CPU time limit exceeded",
+ 25: "file size limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window changed",
+ 29: "I/O possible",
+ 30: "power failure",
+ 31: "bad system call",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go
new file mode 100644
index 000000000..47027b79c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_arm64.go
@@ -0,0 +1,1896 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x29
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_NFC = 0x27
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VSOCK = 0x28
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CAIF = 0x336
+ ARPHRD_CAN = 0x118
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802154_MONITOR = 0x325
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IP6GRE = 0x337
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETLINK = 0x338
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PHONET = 0x334
+ ARPHRD_PHONET_PIPE = 0x335
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x1008
+ B110 = 0x3
+ B115200 = 0x1002
+ B1152000 = 0x1009
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x100a
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x100b
+ B230400 = 0x1003
+ B2400 = 0xb
+ B2500000 = 0x100c
+ B300 = 0x7
+ B3000000 = 0x100d
+ B3500000 = 0x100e
+ B38400 = 0xf
+ B4000000 = 0x100f
+ B460800 = 0x1004
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x1005
+ B57600 = 0x1001
+ B576000 = 0x1006
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x1007
+ B9600 = 0xd
+ BOTHER = 0x1000
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MOD = 0x90
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BPF_XOR = 0xa0
+ BRKINT = 0x2
+ BS0 = 0x0
+ BS1 = 0x2000
+ BSDLY = 0x2000
+ CBAUD = 0x100f
+ CBAUDEX = 0x1000
+ CFLUSH = 0xf
+ CIBAUD = 0x100f0000
+ CLOCAL = 0x800
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CMSPAR = 0x40000000
+ CR0 = 0x0
+ CR1 = 0x200
+ CR2 = 0x400
+ CR3 = 0x600
+ CRDLY = 0x600
+ CREAD = 0x80
+ CRTSCTS = 0x80000000
+ CS5 = 0x0
+ CS6 = 0x10
+ CS7 = 0x20
+ CS8 = 0x30
+ CSIGNAL = 0xff
+ CSIZE = 0x30
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x40
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x200
+ ECHOE = 0x10
+ ECHOK = 0x20
+ ECHOKE = 0x800
+ ECHONL = 0x40
+ ECHOPRT = 0x400
+ ELF_NGREG = 0x22
+ ELF_PRARGSZ = 0x50
+ ENCODING_DEFAULT = 0x0
+ ENCODING_FM_MARK = 0x3
+ ENCODING_FM_SPACE = 0x4
+ ENCODING_MANCHESTER = 0x5
+ ENCODING_NRZ = 0x1
+ ENCODING_NRZI = 0x2
+ EPOLLERR = 0x8
+ EPOLLET = 0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWAKEUP = 0x20000000
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021AD = 0x88a8
+ ETH_P_8021AH = 0x88e7
+ ETH_P_8021Q = 0x8100
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_802_3_MIN = 0x600
+ ETH_P_802_EX1 = 0x88b5
+ ETH_P_AARP = 0x80f3
+ ETH_P_AF_IUCV = 0xfbfb
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BATMAN = 0x4305
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CANFD = 0xd
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_MVRP = 0x88f5
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PRP = 0x88fb
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_QINQ1 = 0x9100
+ ETH_P_QINQ2 = 0x9200
+ ETH_P_QINQ3 = 0x9300
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TDLS = 0x890d
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FF0 = 0x0
+ FF1 = 0x8000
+ FFDLY = 0x8000
+ FLUSHO = 0x1000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0x5
+ F_GETLK64 = 0x5
+ F_GETOWN = 0x9
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0x6
+ F_SETLK64 = 0x6
+ F_SETLKW = 0x7
+ F_SETLKW64 = 0x7
+ F_SETOWN = 0x8
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x400
+ IBSHIFT = 0x10
+ ICANON = 0x2
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x8000
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_NODAD = 0x2
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x7
+ IFF_802_1Q_VLAN = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_ATTACH_QUEUE = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BONDING = 0x20
+ IFF_BRIDGE_PORT = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DETACH_QUEUE = 0x400
+ IFF_DISABLE_NETPOLL = 0x1000
+ IFF_DONT_BRIDGE = 0x800
+ IFF_DORMANT = 0x20000
+ IFF_DYNAMIC = 0x8000
+ IFF_EBRIDGE = 0x2
+ IFF_ECHO = 0x40000
+ IFF_ISATAP = 0x80
+ IFF_LIVE_ADDR_CHANGE = 0x100000
+ IFF_LOOPBACK = 0x8
+ IFF_LOWER_UP = 0x10000
+ IFF_MACVLAN = 0x200000
+ IFF_MACVLAN_PORT = 0x2000
+ IFF_MASTER = 0x400
+ IFF_MASTER_8023AD = 0x8
+ IFF_MASTER_ALB = 0x10
+ IFF_MASTER_ARPMON = 0x100
+ IFF_MULTICAST = 0x1000
+ IFF_MULTI_QUEUE = 0x100
+ IFF_NOARP = 0x80
+ IFF_NOFILTER = 0x1000
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_OVS_DATAPATH = 0x8000
+ IFF_PERSIST = 0x800
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_SLAVE_INACTIVE = 0x4
+ IFF_SLAVE_NEEDARP = 0x40
+ IFF_SUPP_NOFCS = 0x80000
+ IFF_TAP = 0x2
+ IFF_TEAM_PORT = 0x40000
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_TX_SKB_SHARING = 0x10000
+ IFF_UNICAST_FLT = 0x20000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFF_VOLATILE = 0x70c5a
+ IFF_WAN_HDLC = 0x200
+ IFF_XMIT_DST_RELEASE = 0x400
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x800
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_BEETPH = 0x5e
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MH = 0x87
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BLOCK_SOURCE = 0x26
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_ALL = 0x31
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_UNICAST_IF = 0x32
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x1
+ ISTRIP = 0x20
+ IUCLC = 0x200
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x1000
+ IXON = 0x400
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DODUMP = 0x11
+ MADV_DOFORK = 0xb
+ MADV_DONTDUMP = 0x10
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x20
+ MAP_ANONYMOUS = 0x20
+ MAP_DENYWRITE = 0x800
+ MAP_EXECUTABLE = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x100
+ MAP_HUGETLB = 0x40000
+ MAP_HUGE_MASK = 0x3f
+ MAP_HUGE_SHIFT = 0x1a
+ MAP_LOCKED = 0x2000
+ MAP_NONBLOCK = 0x10000
+ MAP_NORESERVE = 0x4000
+ MAP_POPULATE = 0x8000
+ MAP_PRIVATE = 0x2
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x20000
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_CRYPTO = 0x15
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_RX_RING = 0x6
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_SOCK_DIAG = 0x4
+ NETLINK_TX_RING = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NL0 = 0x0
+ NL1 = 0x100
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLDLY = 0x100
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_DUMP_INTR = 0x10
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ OLCUC = 0x2
+ ONLCR = 0x4
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x400
+ O_ASYNC = 0x2000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x40
+ O_DIRECT = 0x10000
+ O_DIRECTORY = 0x4000
+ O_DSYNC = 0x1000
+ O_EXCL = 0x80
+ O_FSYNC = 0x101000
+ O_LARGEFILE = 0x0
+ O_NDELAY = 0x800
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x100
+ O_NOFOLLOW = 0x8000
+ O_NONBLOCK = 0x800
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x101000
+ O_SYNC = 0x101000
+ O_TMPFILE = 0x410000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_AUXDATA = 0x8
+ PACKET_BROADCAST = 0x1
+ PACKET_COPY_THRESH = 0x7
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FANOUT = 0x12
+ PACKET_FANOUT_CPU = 0x2
+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
+ PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
+ PACKET_FANOUT_HASH = 0x0
+ PACKET_FANOUT_LB = 0x1
+ PACKET_FANOUT_RND = 0x4
+ PACKET_FANOUT_ROLLOVER = 0x3
+ PACKET_FASTROUTE = 0x6
+ PACKET_HDRLEN = 0xb
+ PACKET_HOST = 0x0
+ PACKET_LOOPBACK = 0x5
+ PACKET_LOSS = 0xe
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MR_UNICAST = 0x3
+ PACKET_MULTICAST = 0x2
+ PACKET_ORIGDEV = 0x9
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RESERVE = 0xc
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PACKET_TIMESTAMP = 0x11
+ PACKET_TX_HAS_OFF = 0x13
+ PACKET_TX_RING = 0xd
+ PACKET_TX_TIMESTAMP = 0x10
+ PACKET_VERSION = 0xa
+ PACKET_VNET_HDR = 0xf
+ PARENB = 0x100
+ PARITY_CRC16_PR0 = 0x2
+ PARITY_CRC16_PR0_CCITT = 0x4
+ PARITY_CRC16_PR1 = 0x3
+ PARITY_CRC16_PR1_CCITT = 0x5
+ PARITY_CRC32_PR0_CCITT = 0x6
+ PARITY_CRC32_PR1_CCITT = 0x7
+ PARITY_DEFAULT = 0x0
+ PARITY_NONE = 0x1
+ PARMRK = 0x8
+ PARODD = 0x200
+ PENDIN = 0x4000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_GET_CHILD_SUBREAPER = 0x25
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_NO_NEW_PRIVS = 0x27
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_TID_ADDRESS = 0x28
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_SET_CHILD_SUBREAPER = 0x24
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_MM = 0x23
+ PR_SET_MM_ARG_END = 0x9
+ PR_SET_MM_ARG_START = 0x8
+ PR_SET_MM_AUXV = 0xc
+ PR_SET_MM_BRK = 0x7
+ PR_SET_MM_END_CODE = 0x2
+ PR_SET_MM_END_DATA = 0x4
+ PR_SET_MM_ENV_END = 0xb
+ PR_SET_MM_ENV_START = 0xa
+ PR_SET_MM_EXE_FILE = 0xd
+ PR_SET_MM_START_BRK = 0x6
+ PR_SET_MM_START_CODE = 0x1
+ PR_SET_MM_START_DATA = 0x3
+ PR_SET_MM_START_STACK = 0x5
+ PR_SET_NAME = 0xf
+ PR_SET_NO_NEW_PRIVS = 0x26
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_PTRACER_ANY = -0x1
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_SECCOMP = 0x7
+ PTRACE_EVENT_STOP = 0x80
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GETSIGMASK = 0x420a
+ PTRACE_INTERRUPT = 0x4207
+ PTRACE_KILL = 0x8
+ PTRACE_LISTEN = 0x4208
+ PTRACE_O_EXITKILL = 0x100000
+ PTRACE_O_MASK = 0x1000ff
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESECCOMP = 0x80
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKSIGINFO = 0x4209
+ PTRACE_PEEKSIGINFO_SHARED = 0x1
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKEUSR = 0x6
+ PTRACE_SEIZE = 0x4206
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SETSIGMASK = 0x420b
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_TRACEME = 0x0
+ RLIMIT_AS = 0x9
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x7
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0xf
+ RTAX_MTU = 0x2
+ RTAX_QUICKACK = 0xf
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x11
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELMDB = 0x55
+ RTM_DELNEIGH = 0x1d
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMDB = 0x56
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETNETCONF = 0x52
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x57
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWMDB = 0x54
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWNETCONF = 0x50
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x12
+ RTM_NR_MSGTYPES = 0x48
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_F_DEAD = 0x1
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MROUTED = 0x11
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SCM_WIFI_STATUS = 0x29
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x8905
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x8904
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x8902
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x2
+ SOCK_NONBLOCK = 0x800
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0x1
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1e
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BROADCAST = 0x6
+ SO_BSDCOMPAT = 0xe
+ SO_BUSY_POLL = 0x2e
+ SO_DEBUG = 0x1
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x27
+ SO_DONTROUTE = 0x5
+ SO_ERROR = 0x4
+ SO_GET_FILTER = 0x1a
+ SO_KEEPALIVE = 0x9
+ SO_LINGER = 0xd
+ SO_LOCK_FILTER = 0x2c
+ SO_MARK = 0x24
+ SO_MAX_PACING_RATE = 0x2f
+ SO_NOFCS = 0x2b
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0xa
+ SO_PASSCRED = 0x10
+ SO_PASSSEC = 0x22
+ SO_PEEK_OFF = 0x2a
+ SO_PEERCRED = 0x11
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1f
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x26
+ SO_RCVBUF = 0x8
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x12
+ SO_RCVTIMEO = 0x14
+ SO_REUSEADDR = 0x2
+ SO_REUSEPORT = 0xf
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SELECT_ERR_QUEUE = 0x2d
+ SO_SNDBUF = 0x7
+ SO_SNDBUFFORCE = 0x20
+ SO_SNDLOWAT = 0x13
+ SO_SNDTIMEO = 0x15
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x3
+ SO_WIFI_STATUS = 0x29
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TAB0 = 0x0
+ TAB1 = 0x800
+ TAB2 = 0x1000
+ TAB3 = 0x1800
+ TABDLY = 0x1800
+ TCFLSH = 0x540b
+ TCGETA = 0x5405
+ TCGETS = 0x5401
+ TCGETS2 = 0x802c542a
+ TCGETX = 0x5432
+ TCIFLUSH = 0x0
+ TCIOFF = 0x2
+ TCIOFLUSH = 0x2
+ TCION = 0x3
+ TCOFLUSH = 0x1
+ TCOOFF = 0x0
+ TCOON = 0x1
+ TCP_CONGESTION = 0xd
+ TCP_COOKIE_IN_ALWAYS = 0x1
+ TCP_COOKIE_MAX = 0x10
+ TCP_COOKIE_MIN = 0x8
+ TCP_COOKIE_OUT_NEVER = 0x2
+ TCP_COOKIE_PAIR_SIZE = 0x20
+ TCP_COOKIE_TRANSACTIONS = 0xf
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_FASTOPEN = 0x17
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_MSS_DEFAULT = 0x218
+ TCP_MSS_DESIRED = 0x4c4
+ TCP_NODELAY = 0x1
+ TCP_QUEUE_SEQ = 0x15
+ TCP_QUICKACK = 0xc
+ TCP_REPAIR = 0x13
+ TCP_REPAIR_OPTIONS = 0x16
+ TCP_REPAIR_QUEUE = 0x14
+ TCP_SYNCNT = 0x7
+ TCP_S_DATA_IN = 0x4
+ TCP_S_DATA_OUT = 0x8
+ TCP_THIN_DUPACK = 0x11
+ TCP_THIN_LINEAR_TIMEOUTS = 0x10
+ TCP_TIMESTAMP = 0x18
+ TCP_USER_TIMEOUT = 0x12
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x2
+ TCSBRK = 0x5409
+ TCSBRKP = 0x5425
+ TCSETA = 0x5406
+ TCSETAF = 0x5408
+ TCSETAW = 0x5407
+ TCSETS = 0x5402
+ TCSETS2 = 0x402c542b
+ TCSETSF = 0x5404
+ TCSETSF2 = 0x402c542d
+ TCSETSW = 0x5403
+ TCSETSW2 = 0x402c542c
+ TCSETX = 0x5433
+ TCSETXF = 0x5434
+ TCSETXW = 0x5435
+ TCXONC = 0x540a
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x541d
+ TIOCEXCL = 0x540c
+ TIOCGDEV = 0x80045432
+ TIOCGETD = 0x5424
+ TIOCGEXCL = 0x80045440
+ TIOCGICOUNT = 0x545d
+ TIOCGLCKTRMIOS = 0x5456
+ TIOCGPGRP = 0x540f
+ TIOCGPKT = 0x80045438
+ TIOCGPTLCK = 0x80045439
+ TIOCGPTN = 0x80045430
+ TIOCGRS485 = 0x542e
+ TIOCGSERIAL = 0x541e
+ TIOCGSID = 0x5429
+ TIOCGSOFTCAR = 0x5419
+ TIOCGWINSZ = 0x5413
+ TIOCINQ = 0x541b
+ TIOCLINUX = 0x541c
+ TIOCMBIC = 0x5417
+ TIOCMBIS = 0x5416
+ TIOCMGET = 0x5415
+ TIOCMIWAIT = 0x545c
+ TIOCMSET = 0x5418
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x5422
+ TIOCNXCL = 0x540d
+ TIOCOUTQ = 0x5411
+ TIOCPKT = 0x5420
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x540e
+ TIOCSERCONFIG = 0x5453
+ TIOCSERGETLSR = 0x5459
+ TIOCSERGETMULTI = 0x545a
+ TIOCSERGSTRUCT = 0x5458
+ TIOCSERGWILD = 0x5454
+ TIOCSERSETMULTI = 0x545b
+ TIOCSERSWILD = 0x5455
+ TIOCSER_TEMT = 0x1
+ TIOCSETD = 0x5423
+ TIOCSIG = 0x40045436
+ TIOCSLCKTRMIOS = 0x5457
+ TIOCSPGRP = 0x5410
+ TIOCSPTLCK = 0x40045431
+ TIOCSRS485 = 0x542f
+ TIOCSSERIAL = 0x541f
+ TIOCSSOFTCAR = 0x541a
+ TIOCSTI = 0x5412
+ TIOCSWINSZ = 0x5414
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x100
+ TUNATTACHFILTER = 0x401054d5
+ TUNDETACHFILTER = 0x401054d6
+ TUNGETFEATURES = 0x800454cf
+ TUNGETFILTER = 0x801054db
+ TUNGETIFF = 0x800454d2
+ TUNGETSNDBUF = 0x800454d3
+ TUNGETVNETHDRSZ = 0x800454d7
+ TUNSETDEBUG = 0x400454c9
+ TUNSETGROUP = 0x400454ce
+ TUNSETIFF = 0x400454ca
+ TUNSETIFINDEX = 0x400454da
+ TUNSETLINK = 0x400454cd
+ TUNSETNOCSUM = 0x400454c8
+ TUNSETOFFLOAD = 0x400454d0
+ TUNSETOWNER = 0x400454cc
+ TUNSETPERSIST = 0x400454cb
+ TUNSETQUEUE = 0x400454d9
+ TUNSETSNDBUF = 0x400454d4
+ TUNSETTXFILTER = 0x400454d1
+ TUNSETVNETHDRSZ = 0x400454d8
+ VDISCARD = 0xd
+ VEOF = 0x4
+ VEOL = 0xb
+ VEOL2 = 0x10
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x6
+ VQUIT = 0x1
+ VREPRINT = 0xc
+ VSTART = 0x8
+ VSTOP = 0x9
+ VSUSP = 0xa
+ VSWTC = 0x7
+ VT0 = 0x0
+ VT1 = 0x4000
+ VTDLY = 0x4000
+ VTIME = 0x5
+ VWERASE = 0xe
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x40
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+ XCASE = 0x4
+ XTABS = 0x1800
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x62)
+ EADDRNOTAVAIL = syscall.Errno(0x63)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x61)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x72)
+ EBADE = syscall.Errno(0x34)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x4d)
+ EBADMSG = syscall.Errno(0x4a)
+ EBADR = syscall.Errno(0x35)
+ EBADRQC = syscall.Errno(0x38)
+ EBADSLT = syscall.Errno(0x39)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x7d)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x2c)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x67)
+ ECONNREFUSED = syscall.Errno(0x6f)
+ ECONNRESET = syscall.Errno(0x68)
+ EDEADLK = syscall.Errno(0x23)
+ EDEADLOCK = syscall.Errno(0x23)
+ EDESTADDRREQ = syscall.Errno(0x59)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x7a)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x70)
+ EHOSTUNREACH = syscall.Errno(0x71)
+ EHWPOISON = syscall.Errno(0x85)
+ EIDRM = syscall.Errno(0x2b)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x73)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x6a)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x78)
+ EKEYEXPIRED = syscall.Errno(0x7f)
+ EKEYREJECTED = syscall.Errno(0x81)
+ EKEYREVOKED = syscall.Errno(0x80)
+ EL2HLT = syscall.Errno(0x33)
+ EL2NSYNC = syscall.Errno(0x2d)
+ EL3HLT = syscall.Errno(0x2e)
+ EL3RST = syscall.Errno(0x2f)
+ ELIBACC = syscall.Errno(0x4f)
+ ELIBBAD = syscall.Errno(0x50)
+ ELIBEXEC = syscall.Errno(0x53)
+ ELIBMAX = syscall.Errno(0x52)
+ ELIBSCN = syscall.Errno(0x51)
+ ELNRNG = syscall.Errno(0x30)
+ ELOOP = syscall.Errno(0x28)
+ EMEDIUMTYPE = syscall.Errno(0x7c)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x5a)
+ EMULTIHOP = syscall.Errno(0x48)
+ ENAMETOOLONG = syscall.Errno(0x24)
+ ENAVAIL = syscall.Errno(0x77)
+ ENETDOWN = syscall.Errno(0x64)
+ ENETRESET = syscall.Errno(0x66)
+ ENETUNREACH = syscall.Errno(0x65)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x37)
+ ENOBUFS = syscall.Errno(0x69)
+ ENOCSI = syscall.Errno(0x32)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0x7e)
+ ENOLCK = syscall.Errno(0x25)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x7b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x2a)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x5c)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x26)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x6b)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x27)
+ ENOTNAM = syscall.Errno(0x76)
+ ENOTRECOVERABLE = syscall.Errno(0x83)
+ ENOTSOCK = syscall.Errno(0x58)
+ ENOTSUP = syscall.Errno(0x5f)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x4c)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x5f)
+ EOVERFLOW = syscall.Errno(0x4b)
+ EOWNERDEAD = syscall.Errno(0x82)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x60)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x5d)
+ EPROTOTYPE = syscall.Errno(0x5b)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x4e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x79)
+ ERESTART = syscall.Errno(0x55)
+ ERFKILL = syscall.Errno(0x84)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x6c)
+ ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x74)
+ ESTRPIPE = syscall.Errno(0x56)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x6e)
+ ETOOMANYREFS = syscall.Errno(0x6d)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x75)
+ EUNATCH = syscall.Errno(0x31)
+ EUSERS = syscall.Errno(0x57)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0x7)
+ SIGCHLD = syscall.Signal(0x11)
+ SIGCLD = syscall.Signal(0x11)
+ SIGCONT = syscall.Signal(0x12)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x1d)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x1d)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x1e)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTKFLT = syscall.Signal(0x10)
+ SIGSTOP = syscall.Signal(0x13)
+ SIGSYS = syscall.Signal(0x1f)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x14)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGUNUSED = syscall.Signal(0x1f)
+ SIGURG = syscall.Signal(0x17)
+ SIGUSR1 = syscall.Signal(0xa)
+ SIGUSR2 = syscall.Signal(0xc)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "resource deadlock avoided",
+ 36: "file name too long",
+ 37: "no locks available",
+ 38: "function not implemented",
+ 39: "directory not empty",
+ 40: "too many levels of symbolic links",
+ 42: "no message of desired type",
+ 43: "identifier removed",
+ 44: "channel number out of range",
+ 45: "level 2 not synchronized",
+ 46: "level 3 halted",
+ 47: "level 3 reset",
+ 48: "link number out of range",
+ 49: "protocol driver not attached",
+ 50: "no CSI structure available",
+ 51: "level 2 halted",
+ 52: "invalid exchange",
+ 53: "invalid request descriptor",
+ 54: "exchange full",
+ 55: "no anode",
+ 56: "invalid request code",
+ 57: "invalid slot",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 72: "multihop attempted",
+ 73: "RFS specific error",
+ 74: "bad message",
+ 75: "value too large for defined data type",
+ 76: "name not unique on network",
+ 77: "file descriptor in bad state",
+ 78: "remote address changed",
+ 79: "can not access a needed shared library",
+ 80: "accessing a corrupted shared library",
+ 81: ".lib section in a.out corrupted",
+ 82: "attempting to link in too many shared libraries",
+ 83: "cannot exec a shared library directly",
+ 84: "invalid or incomplete multibyte or wide character",
+ 85: "interrupted system call should be restarted",
+ 86: "streams pipe error",
+ 87: "too many users",
+ 88: "socket operation on non-socket",
+ 89: "destination address required",
+ 90: "message too long",
+ 91: "protocol wrong type for socket",
+ 92: "protocol not available",
+ 93: "protocol not supported",
+ 94: "socket type not supported",
+ 95: "operation not supported",
+ 96: "protocol family not supported",
+ 97: "address family not supported by protocol",
+ 98: "address already in use",
+ 99: "cannot assign requested address",
+ 100: "network is down",
+ 101: "network is unreachable",
+ 102: "network dropped connection on reset",
+ 103: "software caused connection abort",
+ 104: "connection reset by peer",
+ 105: "no buffer space available",
+ 106: "transport endpoint is already connected",
+ 107: "transport endpoint is not connected",
+ 108: "cannot send after transport endpoint shutdown",
+ 109: "too many references: cannot splice",
+ 110: "connection timed out",
+ 111: "connection refused",
+ 112: "host is down",
+ 113: "no route to host",
+ 114: "operation already in progress",
+ 115: "operation now in progress",
+ 116: "stale file handle",
+ 117: "structure needs cleaning",
+ 118: "not a XENIX named type file",
+ 119: "no XENIX semaphores available",
+ 120: "is a named type file",
+ 121: "remote I/O error",
+ 122: "disk quota exceeded",
+ 123: "no medium found",
+ 124: "wrong medium type",
+ 125: "operation canceled",
+ 126: "required key not available",
+ 127: "key has expired",
+ 128: "key has been revoked",
+ 129: "key was rejected by service",
+ 130: "owner died",
+ 131: "state not recoverable",
+ 132: "operation not possible due to RF-kill",
+ 133: "memory page has hardware error",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "bus error",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "user defined signal 1",
+ 11: "segmentation fault",
+ 12: "user defined signal 2",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "stack fault",
+ 17: "child exited",
+ 18: "continued",
+ 19: "stopped (signal)",
+ 20: "stopped",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "urgent I/O condition",
+ 24: "CPU time limit exceeded",
+ 25: "file size limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window changed",
+ 29: "I/O possible",
+ 30: "power failure",
+ 31: "bad system call",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go
new file mode 100644
index 000000000..5b90d07ed
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64.go
@@ -0,0 +1,1969 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build ppc64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x29
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_NFC = 0x27
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VSOCK = 0x28
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_6LOWPAN = 0x339
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CAIF = 0x336
+ ARPHRD_CAN = 0x118
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802154_MONITOR = 0x325
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IP6GRE = 0x337
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETLINK = 0x338
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PHONET = 0x334
+ ARPHRD_PHONET_PIPE = 0x335
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x17
+ B110 = 0x3
+ B115200 = 0x11
+ B1152000 = 0x18
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x19
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x1a
+ B230400 = 0x12
+ B2400 = 0xb
+ B2500000 = 0x1b
+ B300 = 0x7
+ B3000000 = 0x1c
+ B3500000 = 0x1d
+ B38400 = 0xf
+ B4000000 = 0x1e
+ B460800 = 0x13
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x14
+ B57600 = 0x10
+ B576000 = 0x15
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x16
+ B9600 = 0xd
+ BOTHER = 0x1f
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MOD = 0x90
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BPF_XOR = 0xa0
+ BRKINT = 0x2
+ BS0 = 0x0
+ BS1 = 0x8000
+ BSDLY = 0x8000
+ CBAUD = 0xff
+ CBAUDEX = 0x0
+ CFLUSH = 0xf
+ CIBAUD = 0xff0000
+ CLOCAL = 0x8000
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CMSPAR = 0x40000000
+ CR0 = 0x0
+ CR1 = 0x1000
+ CR2 = 0x2000
+ CR3 = 0x3000
+ CRDLY = 0x3000
+ CREAD = 0x800
+ CRTSCTS = 0x80000000
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIGNAL = 0xff
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ ENCODING_DEFAULT = 0x0
+ ENCODING_FM_MARK = 0x3
+ ENCODING_FM_SPACE = 0x4
+ ENCODING_MANCHESTER = 0x5
+ ENCODING_NRZ = 0x1
+ ENCODING_NRZI = 0x2
+ EPOLLERR = 0x8
+ EPOLLET = 0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWAKEUP = 0x20000000
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021AD = 0x88a8
+ ETH_P_8021AH = 0x88e7
+ ETH_P_8021Q = 0x8100
+ ETH_P_80221 = 0x8917
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_802_3_MIN = 0x600
+ ETH_P_802_EX1 = 0x88b5
+ ETH_P_AARP = 0x80f3
+ ETH_P_AF_IUCV = 0xfbfb
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BATMAN = 0x4305
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CANFD = 0xd
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_LOOPBACK = 0x9000
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_MVRP = 0x88f5
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PRP = 0x88fb
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_QINQ1 = 0x9100
+ ETH_P_QINQ2 = 0x9200
+ ETH_P_QINQ3 = 0x9300
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TDLS = 0x890d
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ ETH_P_XDSA = 0xf8
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FF0 = 0x0
+ FF1 = 0x4000
+ FFDLY = 0x4000
+ FLUSHO = 0x800000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0x5
+ F_GETLK64 = 0xc
+ F_GETOWN = 0x9
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OFD_GETLK = 0x24
+ F_OFD_SETLK = 0x25
+ F_OFD_SETLKW = 0x26
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0x6
+ F_SETLK64 = 0xd
+ F_SETLKW = 0x7
+ F_SETLKW64 = 0xe
+ F_SETOWN = 0x8
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x4000
+ IBSHIFT = 0x10
+ ICANON = 0x100
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_MANAGETEMPADDR = 0x100
+ IFA_F_NODAD = 0x2
+ IFA_F_NOPREFIXROUTE = 0x200
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x8
+ IFF_ALLMULTI = 0x200
+ IFF_ATTACH_QUEUE = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DETACH_QUEUE = 0x400
+ IFF_DORMANT = 0x20000
+ IFF_DYNAMIC = 0x8000
+ IFF_ECHO = 0x40000
+ IFF_LOOPBACK = 0x8
+ IFF_LOWER_UP = 0x10000
+ IFF_MASTER = 0x400
+ IFF_MULTICAST = 0x1000
+ IFF_MULTI_QUEUE = 0x100
+ IFF_NOARP = 0x80
+ IFF_NOFILTER = 0x1000
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_PERSIST = 0x800
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_TAP = 0x2
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFF_VOLATILE = 0x70c5a
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x800
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_BEETPH = 0x5e
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MH = 0x87
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_INTERFACE = 0x4
+ IPV6_PMTUDISC_OMIT = 0x5
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BLOCK_SOURCE = 0x26
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_ALL = 0x31
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_NODEFRAG = 0x16
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_INTERFACE = 0x4
+ IP_PMTUDISC_OMIT = 0x5
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_UNICAST_IF = 0x32
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IUCLC = 0x1000
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DODUMP = 0x11
+ MADV_DOFORK = 0xb
+ MADV_DONTDUMP = 0x10
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x20
+ MAP_ANONYMOUS = 0x20
+ MAP_DENYWRITE = 0x800
+ MAP_EXECUTABLE = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x100
+ MAP_HUGETLB = 0x40000
+ MAP_HUGE_MASK = 0x3f
+ MAP_HUGE_SHIFT = 0x1a
+ MAP_LOCKED = 0x80
+ MAP_NONBLOCK = 0x10000
+ MAP_NORESERVE = 0x40
+ MAP_POPULATE = 0x8000
+ MAP_PRIVATE = 0x2
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x20000
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x2000
+ MCL_FUTURE = 0x4000
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_CRYPTO = 0x15
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_RX_RING = 0x6
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_SOCK_DIAG = 0x4
+ NETLINK_TX_RING = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NL0 = 0x0
+ NL1 = 0x100
+ NL2 = 0x200
+ NL3 = 0x300
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLDLY = 0x300
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_DUMP_INTR = 0x10
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80000000
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ OLCUC = 0x4
+ ONLCR = 0x2
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x400
+ O_ASYNC = 0x2000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x40
+ O_DIRECT = 0x20000
+ O_DIRECTORY = 0x4000
+ O_DSYNC = 0x1000
+ O_EXCL = 0x80
+ O_FSYNC = 0x101000
+ O_LARGEFILE = 0x0
+ O_NDELAY = 0x800
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x100
+ O_NOFOLLOW = 0x8000
+ O_NONBLOCK = 0x800
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x101000
+ O_SYNC = 0x101000
+ O_TMPFILE = 0x410000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_AUXDATA = 0x8
+ PACKET_BROADCAST = 0x1
+ PACKET_COPY_THRESH = 0x7
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FANOUT = 0x12
+ PACKET_FANOUT_CPU = 0x2
+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
+ PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
+ PACKET_FANOUT_HASH = 0x0
+ PACKET_FANOUT_LB = 0x1
+ PACKET_FANOUT_QM = 0x5
+ PACKET_FANOUT_RND = 0x4
+ PACKET_FANOUT_ROLLOVER = 0x3
+ PACKET_FASTROUTE = 0x6
+ PACKET_HDRLEN = 0xb
+ PACKET_HOST = 0x0
+ PACKET_KERNEL = 0x7
+ PACKET_LOOPBACK = 0x5
+ PACKET_LOSS = 0xe
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MR_UNICAST = 0x3
+ PACKET_MULTICAST = 0x2
+ PACKET_ORIGDEV = 0x9
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_QDISC_BYPASS = 0x14
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RESERVE = 0xc
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PACKET_TIMESTAMP = 0x11
+ PACKET_TX_HAS_OFF = 0x13
+ PACKET_TX_RING = 0xd
+ PACKET_TX_TIMESTAMP = 0x10
+ PACKET_USER = 0x6
+ PACKET_VERSION = 0xa
+ PACKET_VNET_HDR = 0xf
+ PARENB = 0x1000
+ PARITY_CRC16_PR0 = 0x2
+ PARITY_CRC16_PR0_CCITT = 0x4
+ PARITY_CRC16_PR1 = 0x3
+ PARITY_CRC16_PR1_CCITT = 0x5
+ PARITY_CRC32_PR0_CCITT = 0x6
+ PARITY_CRC32_PR1_CCITT = 0x7
+ PARITY_DEFAULT = 0x0
+ PARITY_NONE = 0x1
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_SAO = 0x10
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_GET_CHILD_SUBREAPER = 0x25
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_NO_NEW_PRIVS = 0x27
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_THP_DISABLE = 0x2a
+ PR_GET_TID_ADDRESS = 0x28
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_SET_CHILD_SUBREAPER = 0x24
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_MM = 0x23
+ PR_SET_MM_ARG_END = 0x9
+ PR_SET_MM_ARG_START = 0x8
+ PR_SET_MM_AUXV = 0xc
+ PR_SET_MM_BRK = 0x7
+ PR_SET_MM_END_CODE = 0x2
+ PR_SET_MM_END_DATA = 0x4
+ PR_SET_MM_ENV_END = 0xb
+ PR_SET_MM_ENV_START = 0xa
+ PR_SET_MM_EXE_FILE = 0xd
+ PR_SET_MM_MAP = 0xe
+ PR_SET_MM_MAP_SIZE = 0xf
+ PR_SET_MM_START_BRK = 0x6
+ PR_SET_MM_START_CODE = 0x1
+ PR_SET_MM_START_DATA = 0x3
+ PR_SET_MM_START_STACK = 0x5
+ PR_SET_NAME = 0xf
+ PR_SET_NO_NEW_PRIVS = 0x26
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_PTRACER_ANY = -0x1
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_THP_DISABLE = 0x29
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_SECCOMP = 0x7
+ PTRACE_EVENT_STOP = 0x80
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETEVRREGS = 0x14
+ PTRACE_GETFPREGS = 0xe
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGS64 = 0x16
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GETSIGMASK = 0x420a
+ PTRACE_GETVRREGS = 0x12
+ PTRACE_GETVSRREGS = 0x1b
+ PTRACE_GET_DEBUGREG = 0x19
+ PTRACE_INTERRUPT = 0x4207
+ PTRACE_KILL = 0x8
+ PTRACE_LISTEN = 0x4208
+ PTRACE_O_EXITKILL = 0x100000
+ PTRACE_O_MASK = 0x1000ff
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESECCOMP = 0x80
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKSIGINFO = 0x4209
+ PTRACE_PEEKSIGINFO_SHARED = 0x1
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKEUSR = 0x6
+ PTRACE_SEIZE = 0x4206
+ PTRACE_SETEVRREGS = 0x15
+ PTRACE_SETFPREGS = 0xf
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGS64 = 0x17
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SETSIGMASK = 0x420b
+ PTRACE_SETVRREGS = 0x13
+ PTRACE_SETVSRREGS = 0x1c
+ PTRACE_SET_DEBUGREG = 0x1a
+ PTRACE_SINGLEBLOCK = 0x100
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_TRACEME = 0x0
+ PT_CCR = 0x26
+ PT_CTR = 0x23
+ PT_DAR = 0x29
+ PT_DSCR = 0x2c
+ PT_DSISR = 0x2a
+ PT_FPR0 = 0x30
+ PT_FPSCR = 0x50
+ PT_LNK = 0x24
+ PT_MSR = 0x21
+ PT_NIP = 0x20
+ PT_ORIG_R3 = 0x22
+ PT_R0 = 0x0
+ PT_R1 = 0x1
+ PT_R10 = 0xa
+ PT_R11 = 0xb
+ PT_R12 = 0xc
+ PT_R13 = 0xd
+ PT_R14 = 0xe
+ PT_R15 = 0xf
+ PT_R16 = 0x10
+ PT_R17 = 0x11
+ PT_R18 = 0x12
+ PT_R19 = 0x13
+ PT_R2 = 0x2
+ PT_R20 = 0x14
+ PT_R21 = 0x15
+ PT_R22 = 0x16
+ PT_R23 = 0x17
+ PT_R24 = 0x18
+ PT_R25 = 0x19
+ PT_R26 = 0x1a
+ PT_R27 = 0x1b
+ PT_R28 = 0x1c
+ PT_R29 = 0x1d
+ PT_R3 = 0x3
+ PT_R30 = 0x1e
+ PT_R31 = 0x1f
+ PT_R4 = 0x4
+ PT_R5 = 0x5
+ PT_R6 = 0x6
+ PT_R7 = 0x7
+ PT_R8 = 0x8
+ PT_R9 = 0x9
+ PT_REGS_COUNT = 0x2c
+ PT_RESULT = 0x2b
+ PT_SOFTE = 0x27
+ PT_TRAP = 0x28
+ PT_VR0 = 0x52
+ PT_VRSAVE = 0x94
+ PT_VSCR = 0x93
+ PT_VSR0 = 0x96
+ PT_VSR31 = 0xd4
+ PT_XER = 0x25
+ RLIMIT_AS = 0x9
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x7
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0xf
+ RTAX_MTU = 0x2
+ RTAX_QUICKACK = 0xf
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x11
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELMDB = 0x55
+ RTM_DELNEIGH = 0x1d
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMDB = 0x56
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETNETCONF = 0x52
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x57
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWMDB = 0x54
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWNETCONF = 0x50
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x12
+ RTM_NR_MSGTYPES = 0x48
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_F_DEAD = 0x1
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MROUTED = 0x11
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SCM_WIFI_STATUS = 0x29
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x8905
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x8904
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x8902
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x2
+ SOCK_NONBLOCK = 0x800
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0x1
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1e
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BPF_EXTENSIONS = 0x30
+ SO_BROADCAST = 0x6
+ SO_BSDCOMPAT = 0xe
+ SO_BUSY_POLL = 0x2e
+ SO_DEBUG = 0x1
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x27
+ SO_DONTROUTE = 0x5
+ SO_ERROR = 0x4
+ SO_GET_FILTER = 0x1a
+ SO_KEEPALIVE = 0x9
+ SO_LINGER = 0xd
+ SO_LOCK_FILTER = 0x2c
+ SO_MARK = 0x24
+ SO_MAX_PACING_RATE = 0x2f
+ SO_NOFCS = 0x2b
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0xa
+ SO_PASSCRED = 0x14
+ SO_PASSSEC = 0x22
+ SO_PEEK_OFF = 0x2a
+ SO_PEERCRED = 0x15
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1f
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x26
+ SO_RCVBUF = 0x8
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x10
+ SO_RCVTIMEO = 0x12
+ SO_REUSEADDR = 0x2
+ SO_REUSEPORT = 0xf
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SELECT_ERR_QUEUE = 0x2d
+ SO_SNDBUF = 0x7
+ SO_SNDBUFFORCE = 0x20
+ SO_SNDLOWAT = 0x11
+ SO_SNDTIMEO = 0x13
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x3
+ SO_WIFI_STATUS = 0x29
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TAB0 = 0x0
+ TAB1 = 0x400
+ TAB2 = 0x800
+ TAB3 = 0xc00
+ TABDLY = 0xc00
+ TCFLSH = 0x2000741f
+ TCGETA = 0x40147417
+ TCGETS = 0x402c7413
+ TCIFLUSH = 0x0
+ TCIOFF = 0x2
+ TCIOFLUSH = 0x2
+ TCION = 0x3
+ TCOFLUSH = 0x1
+ TCOOFF = 0x0
+ TCOON = 0x1
+ TCP_CONGESTION = 0xd
+ TCP_COOKIE_IN_ALWAYS = 0x1
+ TCP_COOKIE_MAX = 0x10
+ TCP_COOKIE_MIN = 0x8
+ TCP_COOKIE_OUT_NEVER = 0x2
+ TCP_COOKIE_PAIR_SIZE = 0x20
+ TCP_COOKIE_TRANSACTIONS = 0xf
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_FASTOPEN = 0x17
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_MSS_DEFAULT = 0x218
+ TCP_MSS_DESIRED = 0x4c4
+ TCP_NODELAY = 0x1
+ TCP_QUEUE_SEQ = 0x15
+ TCP_QUICKACK = 0xc
+ TCP_REPAIR = 0x13
+ TCP_REPAIR_OPTIONS = 0x16
+ TCP_REPAIR_QUEUE = 0x14
+ TCP_SYNCNT = 0x7
+ TCP_S_DATA_IN = 0x4
+ TCP_S_DATA_OUT = 0x8
+ TCP_THIN_DUPACK = 0x11
+ TCP_THIN_LINEAR_TIMEOUTS = 0x10
+ TCP_TIMESTAMP = 0x18
+ TCP_USER_TIMEOUT = 0x12
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x2
+ TCSBRK = 0x2000741d
+ TCSBRKP = 0x5425
+ TCSETA = 0x80147418
+ TCSETAF = 0x8014741c
+ TCSETAW = 0x80147419
+ TCSETS = 0x802c7414
+ TCSETSF = 0x802c7416
+ TCSETSW = 0x802c7415
+ TCXONC = 0x2000741e
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x541d
+ TIOCEXCL = 0x540c
+ TIOCGDEV = 0x40045432
+ TIOCGETC = 0x40067412
+ TIOCGETD = 0x5424
+ TIOCGETP = 0x40067408
+ TIOCGEXCL = 0x40045440
+ TIOCGICOUNT = 0x545d
+ TIOCGLCKTRMIOS = 0x5456
+ TIOCGLTC = 0x40067474
+ TIOCGPGRP = 0x40047477
+ TIOCGPKT = 0x40045438
+ TIOCGPTLCK = 0x40045439
+ TIOCGPTN = 0x40045430
+ TIOCGRS485 = 0x542e
+ TIOCGSERIAL = 0x541e
+ TIOCGSID = 0x5429
+ TIOCGSOFTCAR = 0x5419
+ TIOCGWINSZ = 0x40087468
+ TIOCINQ = 0x4004667f
+ TIOCLINUX = 0x541c
+ TIOCMBIC = 0x5417
+ TIOCMBIS = 0x5416
+ TIOCMGET = 0x5415
+ TIOCMIWAIT = 0x545c
+ TIOCMSET = 0x5418
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_LOOP = 0x8000
+ TIOCM_OUT1 = 0x2000
+ TIOCM_OUT2 = 0x4000
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x5422
+ TIOCNXCL = 0x540d
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x5420
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x540e
+ TIOCSERCONFIG = 0x5453
+ TIOCSERGETLSR = 0x5459
+ TIOCSERGETMULTI = 0x545a
+ TIOCSERGSTRUCT = 0x5458
+ TIOCSERGWILD = 0x5454
+ TIOCSERSETMULTI = 0x545b
+ TIOCSERSWILD = 0x5455
+ TIOCSER_TEMT = 0x1
+ TIOCSETC = 0x80067411
+ TIOCSETD = 0x5423
+ TIOCSETN = 0x8006740a
+ TIOCSETP = 0x80067409
+ TIOCSIG = 0x80045436
+ TIOCSLCKTRMIOS = 0x5457
+ TIOCSLTC = 0x80067475
+ TIOCSPGRP = 0x80047476
+ TIOCSPTLCK = 0x80045431
+ TIOCSRS485 = 0x542f
+ TIOCSSERIAL = 0x541f
+ TIOCSSOFTCAR = 0x541a
+ TIOCSTART = 0x2000746e
+ TIOCSTI = 0x5412
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x400000
+ TUNATTACHFILTER = 0x801054d5
+ TUNDETACHFILTER = 0x801054d6
+ TUNGETFEATURES = 0x400454cf
+ TUNGETFILTER = 0x401054db
+ TUNGETIFF = 0x400454d2
+ TUNGETSNDBUF = 0x400454d3
+ TUNGETVNETHDRSZ = 0x400454d7
+ TUNSETDEBUG = 0x800454c9
+ TUNSETGROUP = 0x800454ce
+ TUNSETIFF = 0x800454ca
+ TUNSETIFINDEX = 0x800454da
+ TUNSETLINK = 0x800454cd
+ TUNSETNOCSUM = 0x800454c8
+ TUNSETOFFLOAD = 0x800454d0
+ TUNSETOWNER = 0x800454cc
+ TUNSETPERSIST = 0x800454cb
+ TUNSETQUEUE = 0x800454d9
+ TUNSETSNDBUF = 0x800454d4
+ TUNSETTXFILTER = 0x800454d1
+ TUNSETVNETHDRSZ = 0x800454d8
+ VDISCARD = 0x10
+ VEOF = 0x4
+ VEOL = 0x6
+ VEOL2 = 0x8
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x5
+ VQUIT = 0x1
+ VREPRINT = 0xb
+ VSTART = 0xd
+ VSTOP = 0xe
+ VSUSP = 0xc
+ VSWTC = 0x9
+ VT0 = 0x0
+ VT1 = 0x10000
+ VTDLY = 0x10000
+ VTIME = 0x7
+ VWERASE = 0xa
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x40
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+ XCASE = 0x4000
+ XTABS = 0xc00
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x62)
+ EADDRNOTAVAIL = syscall.Errno(0x63)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x61)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x72)
+ EBADE = syscall.Errno(0x34)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x4d)
+ EBADMSG = syscall.Errno(0x4a)
+ EBADR = syscall.Errno(0x35)
+ EBADRQC = syscall.Errno(0x38)
+ EBADSLT = syscall.Errno(0x39)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x7d)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x2c)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x67)
+ ECONNREFUSED = syscall.Errno(0x6f)
+ ECONNRESET = syscall.Errno(0x68)
+ EDEADLK = syscall.Errno(0x23)
+ EDEADLOCK = syscall.Errno(0x3a)
+ EDESTADDRREQ = syscall.Errno(0x59)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x7a)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x70)
+ EHOSTUNREACH = syscall.Errno(0x71)
+ EHWPOISON = syscall.Errno(0x85)
+ EIDRM = syscall.Errno(0x2b)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x73)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x6a)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x78)
+ EKEYEXPIRED = syscall.Errno(0x7f)
+ EKEYREJECTED = syscall.Errno(0x81)
+ EKEYREVOKED = syscall.Errno(0x80)
+ EL2HLT = syscall.Errno(0x33)
+ EL2NSYNC = syscall.Errno(0x2d)
+ EL3HLT = syscall.Errno(0x2e)
+ EL3RST = syscall.Errno(0x2f)
+ ELIBACC = syscall.Errno(0x4f)
+ ELIBBAD = syscall.Errno(0x50)
+ ELIBEXEC = syscall.Errno(0x53)
+ ELIBMAX = syscall.Errno(0x52)
+ ELIBSCN = syscall.Errno(0x51)
+ ELNRNG = syscall.Errno(0x30)
+ ELOOP = syscall.Errno(0x28)
+ EMEDIUMTYPE = syscall.Errno(0x7c)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x5a)
+ EMULTIHOP = syscall.Errno(0x48)
+ ENAMETOOLONG = syscall.Errno(0x24)
+ ENAVAIL = syscall.Errno(0x77)
+ ENETDOWN = syscall.Errno(0x64)
+ ENETRESET = syscall.Errno(0x66)
+ ENETUNREACH = syscall.Errno(0x65)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x37)
+ ENOBUFS = syscall.Errno(0x69)
+ ENOCSI = syscall.Errno(0x32)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0x7e)
+ ENOLCK = syscall.Errno(0x25)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x7b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x2a)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x5c)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x26)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x6b)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x27)
+ ENOTNAM = syscall.Errno(0x76)
+ ENOTRECOVERABLE = syscall.Errno(0x83)
+ ENOTSOCK = syscall.Errno(0x58)
+ ENOTSUP = syscall.Errno(0x5f)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x4c)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x5f)
+ EOVERFLOW = syscall.Errno(0x4b)
+ EOWNERDEAD = syscall.Errno(0x82)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x60)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x5d)
+ EPROTOTYPE = syscall.Errno(0x5b)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x4e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x79)
+ ERESTART = syscall.Errno(0x55)
+ ERFKILL = syscall.Errno(0x84)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x6c)
+ ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x74)
+ ESTRPIPE = syscall.Errno(0x56)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x6e)
+ ETOOMANYREFS = syscall.Errno(0x6d)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x75)
+ EUNATCH = syscall.Errno(0x31)
+ EUSERS = syscall.Errno(0x57)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0x7)
+ SIGCHLD = syscall.Signal(0x11)
+ SIGCLD = syscall.Signal(0x11)
+ SIGCONT = syscall.Signal(0x12)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x1d)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x1d)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x1e)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTKFLT = syscall.Signal(0x10)
+ SIGSTOP = syscall.Signal(0x13)
+ SIGSYS = syscall.Signal(0x1f)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x14)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGUNUSED = syscall.Signal(0x1f)
+ SIGURG = syscall.Signal(0x17)
+ SIGUSR1 = syscall.Signal(0xa)
+ SIGUSR2 = syscall.Signal(0xc)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "resource deadlock avoided",
+ 36: "file name too long",
+ 37: "no locks available",
+ 38: "function not implemented",
+ 39: "directory not empty",
+ 40: "too many levels of symbolic links",
+ 42: "no message of desired type",
+ 43: "identifier removed",
+ 44: "channel number out of range",
+ 45: "level 2 not synchronized",
+ 46: "level 3 halted",
+ 47: "level 3 reset",
+ 48: "link number out of range",
+ 49: "protocol driver not attached",
+ 50: "no CSI structure available",
+ 51: "level 2 halted",
+ 52: "invalid exchange",
+ 53: "invalid request descriptor",
+ 54: "exchange full",
+ 55: "no anode",
+ 56: "invalid request code",
+ 57: "invalid slot",
+ 58: "file locking deadlock error",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 72: "multihop attempted",
+ 73: "RFS specific error",
+ 74: "bad message",
+ 75: "value too large for defined data type",
+ 76: "name not unique on network",
+ 77: "file descriptor in bad state",
+ 78: "remote address changed",
+ 79: "can not access a needed shared library",
+ 80: "accessing a corrupted shared library",
+ 81: ".lib section in a.out corrupted",
+ 82: "attempting to link in too many shared libraries",
+ 83: "cannot exec a shared library directly",
+ 84: "invalid or incomplete multibyte or wide character",
+ 85: "interrupted system call should be restarted",
+ 86: "streams pipe error",
+ 87: "too many users",
+ 88: "socket operation on non-socket",
+ 89: "destination address required",
+ 90: "message too long",
+ 91: "protocol wrong type for socket",
+ 92: "protocol not available",
+ 93: "protocol not supported",
+ 94: "socket type not supported",
+ 95: "operation not supported",
+ 96: "protocol family not supported",
+ 97: "address family not supported by protocol",
+ 98: "address already in use",
+ 99: "cannot assign requested address",
+ 100: "network is down",
+ 101: "network is unreachable",
+ 102: "network dropped connection on reset",
+ 103: "software caused connection abort",
+ 104: "connection reset by peer",
+ 105: "no buffer space available",
+ 106: "transport endpoint is already connected",
+ 107: "transport endpoint is not connected",
+ 108: "cannot send after transport endpoint shutdown",
+ 109: "too many references: cannot splice",
+ 110: "connection timed out",
+ 111: "connection refused",
+ 112: "host is down",
+ 113: "no route to host",
+ 114: "operation already in progress",
+ 115: "operation now in progress",
+ 116: "stale file handle",
+ 117: "structure needs cleaning",
+ 118: "not a XENIX named type file",
+ 119: "no XENIX semaphores available",
+ 120: "is a named type file",
+ 121: "remote I/O error",
+ 122: "disk quota exceeded",
+ 123: "no medium found",
+ 124: "wrong medium type",
+ 125: "operation canceled",
+ 126: "required key not available",
+ 127: "key has expired",
+ 128: "key has been revoked",
+ 129: "key was rejected by service",
+ 130: "owner died",
+ 131: "state not recoverable",
+ 132: "operation not possible due to RF-kill",
+ 133: "memory page has hardware error",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "bus error",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "user defined signal 1",
+ 11: "segmentation fault",
+ 12: "user defined signal 2",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "stack fault",
+ 17: "child exited",
+ 18: "continued",
+ 19: "stopped (signal)",
+ 20: "stopped",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "urgent I/O condition",
+ 24: "CPU time limit exceeded",
+ 25: "file size limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window changed",
+ 29: "I/O possible",
+ 30: "power failure",
+ 31: "bad system call",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
new file mode 100644
index 000000000..0861bd566
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
@@ -0,0 +1,1968 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build ppc64le,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_ALG = 0x26
+ AF_APPLETALK = 0x5
+ AF_ASH = 0x12
+ AF_ATMPVC = 0x8
+ AF_ATMSVC = 0x14
+ AF_AX25 = 0x3
+ AF_BLUETOOTH = 0x1f
+ AF_BRIDGE = 0x7
+ AF_CAIF = 0x25
+ AF_CAN = 0x1d
+ AF_DECnet = 0xc
+ AF_ECONET = 0x13
+ AF_FILE = 0x1
+ AF_IEEE802154 = 0x24
+ AF_INET = 0x2
+ AF_INET6 = 0xa
+ AF_IPX = 0x4
+ AF_IRDA = 0x17
+ AF_ISDN = 0x22
+ AF_IUCV = 0x20
+ AF_KEY = 0xf
+ AF_LLC = 0x1a
+ AF_LOCAL = 0x1
+ AF_MAX = 0x29
+ AF_NETBEUI = 0xd
+ AF_NETLINK = 0x10
+ AF_NETROM = 0x6
+ AF_NFC = 0x27
+ AF_PACKET = 0x11
+ AF_PHONET = 0x23
+ AF_PPPOX = 0x18
+ AF_RDS = 0x15
+ AF_ROSE = 0xb
+ AF_ROUTE = 0x10
+ AF_RXRPC = 0x21
+ AF_SECURITY = 0xe
+ AF_SNA = 0x16
+ AF_TIPC = 0x1e
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_VSOCK = 0x28
+ AF_WANPIPE = 0x19
+ AF_X25 = 0x9
+ ARPHRD_ADAPT = 0x108
+ ARPHRD_APPLETLK = 0x8
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ASH = 0x30d
+ ARPHRD_ATM = 0x13
+ ARPHRD_AX25 = 0x3
+ ARPHRD_BIF = 0x307
+ ARPHRD_CAIF = 0x336
+ ARPHRD_CAN = 0x118
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_CISCO = 0x201
+ ARPHRD_CSLIP = 0x101
+ ARPHRD_CSLIP6 = 0x103
+ ARPHRD_DDCMP = 0x205
+ ARPHRD_DLCI = 0xf
+ ARPHRD_ECONET = 0x30e
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_EUI64 = 0x1b
+ ARPHRD_FCAL = 0x311
+ ARPHRD_FCFABRIC = 0x313
+ ARPHRD_FCPL = 0x312
+ ARPHRD_FCPP = 0x310
+ ARPHRD_FDDI = 0x306
+ ARPHRD_FRAD = 0x302
+ ARPHRD_HDLC = 0x201
+ ARPHRD_HIPPI = 0x30c
+ ARPHRD_HWX25 = 0x110
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IEEE80211 = 0x321
+ ARPHRD_IEEE80211_PRISM = 0x322
+ ARPHRD_IEEE80211_RADIOTAP = 0x323
+ ARPHRD_IEEE802154 = 0x324
+ ARPHRD_IEEE802154_MONITOR = 0x325
+ ARPHRD_IEEE802_TR = 0x320
+ ARPHRD_INFINIBAND = 0x20
+ ARPHRD_IP6GRE = 0x337
+ ARPHRD_IPDDP = 0x309
+ ARPHRD_IPGRE = 0x30a
+ ARPHRD_IRDA = 0x30f
+ ARPHRD_LAPB = 0x204
+ ARPHRD_LOCALTLK = 0x305
+ ARPHRD_LOOPBACK = 0x304
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_NETLINK = 0x338
+ ARPHRD_NETROM = 0x0
+ ARPHRD_NONE = 0xfffe
+ ARPHRD_PHONET = 0x334
+ ARPHRD_PHONET_PIPE = 0x335
+ ARPHRD_PIMREG = 0x30b
+ ARPHRD_PPP = 0x200
+ ARPHRD_PRONET = 0x4
+ ARPHRD_RAWHDLC = 0x206
+ ARPHRD_ROSE = 0x10e
+ ARPHRD_RSRVD = 0x104
+ ARPHRD_SIT = 0x308
+ ARPHRD_SKIP = 0x303
+ ARPHRD_SLIP = 0x100
+ ARPHRD_SLIP6 = 0x102
+ ARPHRD_TUNNEL = 0x300
+ ARPHRD_TUNNEL6 = 0x301
+ ARPHRD_VOID = 0xffff
+ ARPHRD_X25 = 0x10f
+ B0 = 0x0
+ B1000000 = 0x17
+ B110 = 0x3
+ B115200 = 0x11
+ B1152000 = 0x18
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B1500000 = 0x19
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B2000000 = 0x1a
+ B230400 = 0x12
+ B2400 = 0xb
+ B2500000 = 0x1b
+ B300 = 0x7
+ B3000000 = 0x1c
+ B3500000 = 0x1d
+ B38400 = 0xf
+ B4000000 = 0x1e
+ B460800 = 0x13
+ B4800 = 0xc
+ B50 = 0x1
+ B500000 = 0x14
+ B57600 = 0x10
+ B576000 = 0x15
+ B600 = 0x8
+ B75 = 0x2
+ B921600 = 0x16
+ B9600 = 0xd
+ BOTHER = 0x1f
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXINSNS = 0x1000
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MOD = 0x90
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BPF_XOR = 0xa0
+ BRKINT = 0x2
+ BS0 = 0x0
+ BS1 = 0x8000
+ BSDLY = 0x8000
+ CBAUD = 0xff
+ CBAUDEX = 0x0
+ CFLUSH = 0xf
+ CIBAUD = 0xff0000
+ CLOCAL = 0x8000
+ CLOCK_BOOTTIME = 0x7
+ CLOCK_BOOTTIME_ALARM = 0x9
+ CLOCK_DEFAULT = 0x0
+ CLOCK_EXT = 0x1
+ CLOCK_INT = 0x2
+ CLOCK_MONOTONIC = 0x1
+ CLOCK_MONOTONIC_COARSE = 0x6
+ CLOCK_MONOTONIC_RAW = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x2
+ CLOCK_REALTIME = 0x0
+ CLOCK_REALTIME_ALARM = 0x8
+ CLOCK_REALTIME_COARSE = 0x5
+ CLOCK_THREAD_CPUTIME_ID = 0x3
+ CLOCK_TXFROMRX = 0x4
+ CLOCK_TXINT = 0x3
+ CLONE_CHILD_CLEARTID = 0x200000
+ CLONE_CHILD_SETTID = 0x1000000
+ CLONE_DETACHED = 0x400000
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_IO = 0x80000000
+ CLONE_NEWIPC = 0x8000000
+ CLONE_NEWNET = 0x40000000
+ CLONE_NEWNS = 0x20000
+ CLONE_NEWPID = 0x20000000
+ CLONE_NEWUSER = 0x10000000
+ CLONE_NEWUTS = 0x4000000
+ CLONE_PARENT = 0x8000
+ CLONE_PARENT_SETTID = 0x100000
+ CLONE_PTRACE = 0x2000
+ CLONE_SETTLS = 0x80000
+ CLONE_SIGHAND = 0x800
+ CLONE_SYSVSEM = 0x40000
+ CLONE_THREAD = 0x10000
+ CLONE_UNTRACED = 0x800000
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CMSPAR = 0x40000000
+ CR0 = 0x0
+ CR1 = 0x1000
+ CR2 = 0x2000
+ CR3 = 0x3000
+ CRDLY = 0x3000
+ CREAD = 0x800
+ CRTSCTS = 0x80000000
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIGNAL = 0xff
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x0
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ ENCODING_DEFAULT = 0x0
+ ENCODING_FM_MARK = 0x3
+ ENCODING_FM_SPACE = 0x4
+ ENCODING_MANCHESTER = 0x5
+ ENCODING_NRZ = 0x1
+ ENCODING_NRZI = 0x2
+ EPOLLERR = 0x8
+ EPOLLET = 0x80000000
+ EPOLLHUP = 0x10
+ EPOLLIN = 0x1
+ EPOLLMSG = 0x400
+ EPOLLONESHOT = 0x40000000
+ EPOLLOUT = 0x4
+ EPOLLPRI = 0x2
+ EPOLLRDBAND = 0x80
+ EPOLLRDHUP = 0x2000
+ EPOLLRDNORM = 0x40
+ EPOLLWAKEUP = 0x20000000
+ EPOLLWRBAND = 0x200
+ EPOLLWRNORM = 0x100
+ EPOLL_CLOEXEC = 0x80000
+ EPOLL_CTL_ADD = 0x1
+ EPOLL_CTL_DEL = 0x2
+ EPOLL_CTL_MOD = 0x3
+ ETH_P_1588 = 0x88f7
+ ETH_P_8021AD = 0x88a8
+ ETH_P_8021AH = 0x88e7
+ ETH_P_8021Q = 0x8100
+ ETH_P_802_2 = 0x4
+ ETH_P_802_3 = 0x1
+ ETH_P_802_3_MIN = 0x600
+ ETH_P_802_EX1 = 0x88b5
+ ETH_P_AARP = 0x80f3
+ ETH_P_AF_IUCV = 0xfbfb
+ ETH_P_ALL = 0x3
+ ETH_P_AOE = 0x88a2
+ ETH_P_ARCNET = 0x1a
+ ETH_P_ARP = 0x806
+ ETH_P_ATALK = 0x809b
+ ETH_P_ATMFATE = 0x8884
+ ETH_P_ATMMPOA = 0x884c
+ ETH_P_AX25 = 0x2
+ ETH_P_BATMAN = 0x4305
+ ETH_P_BPQ = 0x8ff
+ ETH_P_CAIF = 0xf7
+ ETH_P_CAN = 0xc
+ ETH_P_CANFD = 0xd
+ ETH_P_CONTROL = 0x16
+ ETH_P_CUST = 0x6006
+ ETH_P_DDCMP = 0x6
+ ETH_P_DEC = 0x6000
+ ETH_P_DIAG = 0x6005
+ ETH_P_DNA_DL = 0x6001
+ ETH_P_DNA_RC = 0x6002
+ ETH_P_DNA_RT = 0x6003
+ ETH_P_DSA = 0x1b
+ ETH_P_ECONET = 0x18
+ ETH_P_EDSA = 0xdada
+ ETH_P_FCOE = 0x8906
+ ETH_P_FIP = 0x8914
+ ETH_P_HDLC = 0x19
+ ETH_P_IEEE802154 = 0xf6
+ ETH_P_IEEEPUP = 0xa00
+ ETH_P_IEEEPUPAT = 0xa01
+ ETH_P_IP = 0x800
+ ETH_P_IPV6 = 0x86dd
+ ETH_P_IPX = 0x8137
+ ETH_P_IRDA = 0x17
+ ETH_P_LAT = 0x6004
+ ETH_P_LINK_CTL = 0x886c
+ ETH_P_LOCALTALK = 0x9
+ ETH_P_LOOP = 0x60
+ ETH_P_MOBITEX = 0x15
+ ETH_P_MPLS_MC = 0x8848
+ ETH_P_MPLS_UC = 0x8847
+ ETH_P_MVRP = 0x88f5
+ ETH_P_PAE = 0x888e
+ ETH_P_PAUSE = 0x8808
+ ETH_P_PHONET = 0xf5
+ ETH_P_PPPTALK = 0x10
+ ETH_P_PPP_DISC = 0x8863
+ ETH_P_PPP_MP = 0x8
+ ETH_P_PPP_SES = 0x8864
+ ETH_P_PRP = 0x88fb
+ ETH_P_PUP = 0x200
+ ETH_P_PUPAT = 0x201
+ ETH_P_QINQ1 = 0x9100
+ ETH_P_QINQ2 = 0x9200
+ ETH_P_QINQ3 = 0x9300
+ ETH_P_RARP = 0x8035
+ ETH_P_SCA = 0x6007
+ ETH_P_SLOW = 0x8809
+ ETH_P_SNAP = 0x5
+ ETH_P_TDLS = 0x890d
+ ETH_P_TEB = 0x6558
+ ETH_P_TIPC = 0x88ca
+ ETH_P_TRAILER = 0x1c
+ ETH_P_TR_802_2 = 0x11
+ ETH_P_WAN_PPP = 0x7
+ ETH_P_WCCP = 0x883e
+ ETH_P_X25 = 0x805
+ EXTA = 0xe
+ EXTB = 0xf
+ EXTPROC = 0x10000000
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FF0 = 0x0
+ FF1 = 0x4000
+ FFDLY = 0x4000
+ FLUSHO = 0x800000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x406
+ F_EXLCK = 0x4
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLEASE = 0x401
+ F_GETLK = 0x5
+ F_GETLK64 = 0xc
+ F_GETOWN = 0x9
+ F_GETOWN_EX = 0x10
+ F_GETPIPE_SZ = 0x408
+ F_GETSIG = 0xb
+ F_LOCK = 0x1
+ F_NOTIFY = 0x402
+ F_OK = 0x0
+ F_RDLCK = 0x0
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLEASE = 0x400
+ F_SETLK = 0x6
+ F_SETLK64 = 0xd
+ F_SETLKW = 0x7
+ F_SETLKW64 = 0xe
+ F_SETOWN = 0x8
+ F_SETOWN_EX = 0xf
+ F_SETPIPE_SZ = 0x407
+ F_SETSIG = 0xa
+ F_SHLCK = 0x8
+ F_TEST = 0x3
+ F_TLOCK = 0x2
+ F_ULOCK = 0x0
+ F_UNLCK = 0x2
+ F_WRLCK = 0x1
+ HUPCL = 0x4000
+ IBSHIFT = 0x10
+ ICANON = 0x100
+ ICMPV6_FILTER = 0x1
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFA_F_DADFAILED = 0x8
+ IFA_F_DEPRECATED = 0x20
+ IFA_F_HOMEADDRESS = 0x10
+ IFA_F_NODAD = 0x2
+ IFA_F_OPTIMISTIC = 0x4
+ IFA_F_PERMANENT = 0x80
+ IFA_F_SECONDARY = 0x1
+ IFA_F_TEMPORARY = 0x1
+ IFA_F_TENTATIVE = 0x40
+ IFA_MAX = 0x7
+ IFF_802_1Q_VLAN = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_ATTACH_QUEUE = 0x200
+ IFF_AUTOMEDIA = 0x4000
+ IFF_BONDING = 0x20
+ IFF_BRIDGE_PORT = 0x4000
+ IFF_BROADCAST = 0x2
+ IFF_DEBUG = 0x4
+ IFF_DETACH_QUEUE = 0x400
+ IFF_DISABLE_NETPOLL = 0x1000
+ IFF_DONT_BRIDGE = 0x800
+ IFF_DORMANT = 0x20000
+ IFF_DYNAMIC = 0x8000
+ IFF_EBRIDGE = 0x2
+ IFF_ECHO = 0x40000
+ IFF_ISATAP = 0x80
+ IFF_LIVE_ADDR_CHANGE = 0x100000
+ IFF_LOOPBACK = 0x8
+ IFF_LOWER_UP = 0x10000
+ IFF_MACVLAN = 0x200000
+ IFF_MACVLAN_PORT = 0x2000
+ IFF_MASTER = 0x400
+ IFF_MASTER_8023AD = 0x8
+ IFF_MASTER_ALB = 0x10
+ IFF_MASTER_ARPMON = 0x100
+ IFF_MULTICAST = 0x1000
+ IFF_MULTI_QUEUE = 0x100
+ IFF_NOARP = 0x80
+ IFF_NOFILTER = 0x1000
+ IFF_NOTRAILERS = 0x20
+ IFF_NO_PI = 0x1000
+ IFF_ONE_QUEUE = 0x2000
+ IFF_OVS_DATAPATH = 0x8000
+ IFF_PERSIST = 0x800
+ IFF_POINTOPOINT = 0x10
+ IFF_PORTSEL = 0x2000
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SLAVE = 0x800
+ IFF_SLAVE_INACTIVE = 0x4
+ IFF_SLAVE_NEEDARP = 0x40
+ IFF_SUPP_NOFCS = 0x80000
+ IFF_TAP = 0x2
+ IFF_TEAM_PORT = 0x40000
+ IFF_TUN = 0x1
+ IFF_TUN_EXCL = 0x8000
+ IFF_TX_SKB_SHARING = 0x10000
+ IFF_UNICAST_FLT = 0x20000
+ IFF_UP = 0x1
+ IFF_VNET_HDR = 0x4000
+ IFF_VOLATILE = 0x70c5a
+ IFF_WAN_HDLC = 0x200
+ IFF_XMIT_DST_RELEASE = 0x400
+ IFNAMSIZ = 0x10
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_ACCESS = 0x1
+ IN_ALL_EVENTS = 0xfff
+ IN_ATTRIB = 0x4
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLOEXEC = 0x80000
+ IN_CLOSE = 0x18
+ IN_CLOSE_NOWRITE = 0x10
+ IN_CLOSE_WRITE = 0x8
+ IN_CREATE = 0x100
+ IN_DELETE = 0x200
+ IN_DELETE_SELF = 0x400
+ IN_DONT_FOLLOW = 0x2000000
+ IN_EXCL_UNLINK = 0x4000000
+ IN_IGNORED = 0x8000
+ IN_ISDIR = 0x40000000
+ IN_LOOPBACKNET = 0x7f
+ IN_MASK_ADD = 0x20000000
+ IN_MODIFY = 0x2
+ IN_MOVE = 0xc0
+ IN_MOVED_FROM = 0x40
+ IN_MOVED_TO = 0x80
+ IN_MOVE_SELF = 0x800
+ IN_NONBLOCK = 0x800
+ IN_ONESHOT = 0x80000000
+ IN_ONLYDIR = 0x1000000
+ IN_OPEN = 0x20
+ IN_Q_OVERFLOW = 0x4000
+ IN_UNMOUNT = 0x2000
+ IPPROTO_AH = 0x33
+ IPPROTO_BEETPH = 0x5e
+ IPPROTO_COMP = 0x6c
+ IPPROTO_DCCP = 0x21
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MH = 0x87
+ IPPROTO_MTP = 0x5c
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_UDPLITE = 0x88
+ IPV6_2292DSTOPTS = 0x4
+ IPV6_2292HOPLIMIT = 0x8
+ IPV6_2292HOPOPTS = 0x3
+ IPV6_2292PKTINFO = 0x2
+ IPV6_2292PKTOPTIONS = 0x6
+ IPV6_2292RTHDR = 0x5
+ IPV6_ADDRFORM = 0x1
+ IPV6_ADD_MEMBERSHIP = 0x14
+ IPV6_AUTHHDR = 0xa
+ IPV6_CHECKSUM = 0x7
+ IPV6_DROP_MEMBERSHIP = 0x15
+ IPV6_DSTOPTS = 0x3b
+ IPV6_HOPLIMIT = 0x34
+ IPV6_HOPOPTS = 0x36
+ IPV6_IPSEC_POLICY = 0x22
+ IPV6_JOIN_ANYCAST = 0x1b
+ IPV6_JOIN_GROUP = 0x14
+ IPV6_LEAVE_ANYCAST = 0x1c
+ IPV6_LEAVE_GROUP = 0x15
+ IPV6_MTU = 0x18
+ IPV6_MTU_DISCOVER = 0x17
+ IPV6_MULTICAST_HOPS = 0x12
+ IPV6_MULTICAST_IF = 0x11
+ IPV6_MULTICAST_LOOP = 0x13
+ IPV6_NEXTHOP = 0x9
+ IPV6_PKTINFO = 0x32
+ IPV6_PMTUDISC_DO = 0x2
+ IPV6_PMTUDISC_DONT = 0x0
+ IPV6_PMTUDISC_PROBE = 0x3
+ IPV6_PMTUDISC_WANT = 0x1
+ IPV6_RECVDSTOPTS = 0x3a
+ IPV6_RECVERR = 0x19
+ IPV6_RECVHOPLIMIT = 0x33
+ IPV6_RECVHOPOPTS = 0x35
+ IPV6_RECVPKTINFO = 0x31
+ IPV6_RECVRTHDR = 0x38
+ IPV6_RECVTCLASS = 0x42
+ IPV6_ROUTER_ALERT = 0x16
+ IPV6_RTHDR = 0x39
+ IPV6_RTHDRDSTOPTS = 0x37
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_RXDSTOPTS = 0x3b
+ IPV6_RXHOPOPTS = 0x36
+ IPV6_TCLASS = 0x43
+ IPV6_UNICAST_HOPS = 0x10
+ IPV6_V6ONLY = 0x1a
+ IPV6_XFRM_POLICY = 0x23
+ IP_ADD_MEMBERSHIP = 0x23
+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
+ IP_BLOCK_SOURCE = 0x26
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0x24
+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
+ IP_FREEBIND = 0xf
+ IP_HDRINCL = 0x3
+ IP_IPSEC_POLICY = 0x10
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINTTL = 0x15
+ IP_MSFILTER = 0x29
+ IP_MSS = 0x240
+ IP_MTU = 0xe
+ IP_MTU_DISCOVER = 0xa
+ IP_MULTICAST_ALL = 0x31
+ IP_MULTICAST_IF = 0x20
+ IP_MULTICAST_LOOP = 0x22
+ IP_MULTICAST_TTL = 0x21
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x4
+ IP_ORIGDSTADDR = 0x14
+ IP_PASSSEC = 0x12
+ IP_PKTINFO = 0x8
+ IP_PKTOPTIONS = 0x9
+ IP_PMTUDISC = 0xa
+ IP_PMTUDISC_DO = 0x2
+ IP_PMTUDISC_DONT = 0x0
+ IP_PMTUDISC_PROBE = 0x3
+ IP_PMTUDISC_WANT = 0x1
+ IP_RECVERR = 0xb
+ IP_RECVOPTS = 0x6
+ IP_RECVORIGDSTADDR = 0x14
+ IP_RECVRETOPTS = 0x7
+ IP_RECVTOS = 0xd
+ IP_RECVTTL = 0xc
+ IP_RETOPTS = 0x7
+ IP_RF = 0x8000
+ IP_ROUTER_ALERT = 0x5
+ IP_TOS = 0x1
+ IP_TRANSPARENT = 0x13
+ IP_TTL = 0x2
+ IP_UNBLOCK_SOURCE = 0x25
+ IP_UNICAST_IF = 0x32
+ IP_XFRM_POLICY = 0x11
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IUCLC = 0x1000
+ IUTF8 = 0x4000
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
+ LINUX_REBOOT_CMD_RESTART = 0x1234567
+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
+ LINUX_REBOOT_MAGIC2 = 0x28121969
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DODUMP = 0x11
+ MADV_DOFORK = 0xb
+ MADV_DONTDUMP = 0x10
+ MADV_DONTFORK = 0xa
+ MADV_DONTNEED = 0x4
+ MADV_HUGEPAGE = 0xe
+ MADV_HWPOISON = 0x64
+ MADV_MERGEABLE = 0xc
+ MADV_NOHUGEPAGE = 0xf
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_REMOVE = 0x9
+ MADV_SEQUENTIAL = 0x2
+ MADV_UNMERGEABLE = 0xd
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x20
+ MAP_ANONYMOUS = 0x20
+ MAP_DENYWRITE = 0x800
+ MAP_EXECUTABLE = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_GROWSDOWN = 0x100
+ MAP_HUGETLB = 0x40000
+ MAP_HUGE_MASK = 0x3f
+ MAP_HUGE_SHIFT = 0x1a
+ MAP_LOCKED = 0x80
+ MAP_NONBLOCK = 0x10000
+ MAP_NORESERVE = 0x40
+ MAP_POPULATE = 0x8000
+ MAP_PRIVATE = 0x2
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x20000
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x2000
+ MCL_FUTURE = 0x4000
+ MNT_DETACH = 0x2
+ MNT_EXPIRE = 0x4
+ MNT_FORCE = 0x1
+ MSG_CMSG_CLOEXEC = 0x40000000
+ MSG_CONFIRM = 0x800
+ MSG_CTRUNC = 0x8
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x40
+ MSG_EOR = 0x80
+ MSG_ERRQUEUE = 0x2000
+ MSG_FASTOPEN = 0x20000000
+ MSG_FIN = 0x200
+ MSG_MORE = 0x8000
+ MSG_NOSIGNAL = 0x4000
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_PROXY = 0x10
+ MSG_RST = 0x1000
+ MSG_SYN = 0x400
+ MSG_TRUNC = 0x20
+ MSG_TRYHARD = 0x4
+ MSG_WAITALL = 0x100
+ MSG_WAITFORONE = 0x10000
+ MS_ACTIVE = 0x40000000
+ MS_ASYNC = 0x1
+ MS_BIND = 0x1000
+ MS_DIRSYNC = 0x80
+ MS_INVALIDATE = 0x2
+ MS_I_VERSION = 0x800000
+ MS_KERNMOUNT = 0x400000
+ MS_MANDLOCK = 0x40
+ MS_MGC_MSK = 0xffff0000
+ MS_MGC_VAL = 0xc0ed0000
+ MS_MOVE = 0x2000
+ MS_NOATIME = 0x400
+ MS_NODEV = 0x4
+ MS_NODIRATIME = 0x800
+ MS_NOEXEC = 0x8
+ MS_NOSUID = 0x2
+ MS_NOUSER = -0x80000000
+ MS_POSIXACL = 0x10000
+ MS_PRIVATE = 0x40000
+ MS_RDONLY = 0x1
+ MS_REC = 0x4000
+ MS_RELATIME = 0x200000
+ MS_REMOUNT = 0x20
+ MS_RMT_MASK = 0x800051
+ MS_SHARED = 0x100000
+ MS_SILENT = 0x8000
+ MS_SLAVE = 0x80000
+ MS_STRICTATIME = 0x1000000
+ MS_SYNC = 0x4
+ MS_SYNCHRONOUS = 0x10
+ MS_UNBINDABLE = 0x20000
+ NAME_MAX = 0xff
+ NETLINK_ADD_MEMBERSHIP = 0x1
+ NETLINK_AUDIT = 0x9
+ NETLINK_BROADCAST_ERROR = 0x4
+ NETLINK_CONNECTOR = 0xb
+ NETLINK_CRYPTO = 0x15
+ NETLINK_DNRTMSG = 0xe
+ NETLINK_DROP_MEMBERSHIP = 0x2
+ NETLINK_ECRYPTFS = 0x13
+ NETLINK_FIB_LOOKUP = 0xa
+ NETLINK_FIREWALL = 0x3
+ NETLINK_GENERIC = 0x10
+ NETLINK_INET_DIAG = 0x4
+ NETLINK_IP6_FW = 0xd
+ NETLINK_ISCSI = 0x8
+ NETLINK_KOBJECT_UEVENT = 0xf
+ NETLINK_NETFILTER = 0xc
+ NETLINK_NFLOG = 0x5
+ NETLINK_NO_ENOBUFS = 0x5
+ NETLINK_PKTINFO = 0x3
+ NETLINK_RDMA = 0x14
+ NETLINK_ROUTE = 0x0
+ NETLINK_RX_RING = 0x6
+ NETLINK_SCSITRANSPORT = 0x12
+ NETLINK_SELINUX = 0x7
+ NETLINK_SOCK_DIAG = 0x4
+ NETLINK_TX_RING = 0x7
+ NETLINK_UNUSED = 0x1
+ NETLINK_USERSOCK = 0x2
+ NETLINK_XFRM = 0x6
+ NL0 = 0x0
+ NL1 = 0x100
+ NL2 = 0x200
+ NL3 = 0x300
+ NLA_ALIGNTO = 0x4
+ NLA_F_NESTED = 0x8000
+ NLA_F_NET_BYTEORDER = 0x4000
+ NLA_HDRLEN = 0x4
+ NLDLY = 0x300
+ NLMSG_ALIGNTO = 0x4
+ NLMSG_DONE = 0x3
+ NLMSG_ERROR = 0x2
+ NLMSG_HDRLEN = 0x10
+ NLMSG_MIN_TYPE = 0x10
+ NLMSG_NOOP = 0x1
+ NLMSG_OVERRUN = 0x4
+ NLM_F_ACK = 0x4
+ NLM_F_APPEND = 0x800
+ NLM_F_ATOMIC = 0x400
+ NLM_F_CREATE = 0x400
+ NLM_F_DUMP = 0x300
+ NLM_F_DUMP_INTR = 0x10
+ NLM_F_ECHO = 0x8
+ NLM_F_EXCL = 0x200
+ NLM_F_MATCH = 0x200
+ NLM_F_MULTI = 0x2
+ NLM_F_REPLACE = 0x100
+ NLM_F_REQUEST = 0x1
+ NLM_F_ROOT = 0x100
+ NOFLSH = 0x80000000
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ OLCUC = 0x4
+ ONLCR = 0x2
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x400
+ O_ASYNC = 0x2000
+ O_CLOEXEC = 0x80000
+ O_CREAT = 0x40
+ O_DIRECT = 0x20000
+ O_DIRECTORY = 0x4000
+ O_DSYNC = 0x1000
+ O_EXCL = 0x80
+ O_FSYNC = 0x101000
+ O_LARGEFILE = 0x0
+ O_NDELAY = 0x800
+ O_NOATIME = 0x40000
+ O_NOCTTY = 0x100
+ O_NOFOLLOW = 0x8000
+ O_NONBLOCK = 0x800
+ O_PATH = 0x200000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x101000
+ O_SYNC = 0x101000
+ O_TMPFILE = 0x410000
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ PACKET_ADD_MEMBERSHIP = 0x1
+ PACKET_AUXDATA = 0x8
+ PACKET_BROADCAST = 0x1
+ PACKET_COPY_THRESH = 0x7
+ PACKET_DROP_MEMBERSHIP = 0x2
+ PACKET_FANOUT = 0x12
+ PACKET_FANOUT_CPU = 0x2
+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
+ PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
+ PACKET_FANOUT_HASH = 0x0
+ PACKET_FANOUT_LB = 0x1
+ PACKET_FANOUT_RND = 0x4
+ PACKET_FANOUT_ROLLOVER = 0x3
+ PACKET_FASTROUTE = 0x6
+ PACKET_HDRLEN = 0xb
+ PACKET_HOST = 0x0
+ PACKET_LOOPBACK = 0x5
+ PACKET_LOSS = 0xe
+ PACKET_MR_ALLMULTI = 0x2
+ PACKET_MR_MULTICAST = 0x0
+ PACKET_MR_PROMISC = 0x1
+ PACKET_MR_UNICAST = 0x3
+ PACKET_MULTICAST = 0x2
+ PACKET_ORIGDEV = 0x9
+ PACKET_OTHERHOST = 0x3
+ PACKET_OUTGOING = 0x4
+ PACKET_RECV_OUTPUT = 0x3
+ PACKET_RESERVE = 0xc
+ PACKET_RX_RING = 0x5
+ PACKET_STATISTICS = 0x6
+ PACKET_TIMESTAMP = 0x11
+ PACKET_TX_HAS_OFF = 0x13
+ PACKET_TX_RING = 0xd
+ PACKET_TX_TIMESTAMP = 0x10
+ PACKET_VERSION = 0xa
+ PACKET_VNET_HDR = 0xf
+ PARENB = 0x1000
+ PARITY_CRC16_PR0 = 0x2
+ PARITY_CRC16_PR0_CCITT = 0x4
+ PARITY_CRC16_PR1 = 0x3
+ PARITY_CRC16_PR1_CCITT = 0x5
+ PARITY_CRC32_PR0_CCITT = 0x6
+ PARITY_CRC32_PR1_CCITT = 0x7
+ PARITY_DEFAULT = 0x0
+ PARITY_NONE = 0x1
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_GROWSDOWN = 0x1000000
+ PROT_GROWSUP = 0x2000000
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_SAO = 0x10
+ PROT_WRITE = 0x2
+ PR_CAPBSET_DROP = 0x18
+ PR_CAPBSET_READ = 0x17
+ PR_ENDIAN_BIG = 0x0
+ PR_ENDIAN_LITTLE = 0x1
+ PR_ENDIAN_PPC_LITTLE = 0x2
+ PR_FPEMU_NOPRINT = 0x1
+ PR_FPEMU_SIGFPE = 0x2
+ PR_FP_EXC_ASYNC = 0x2
+ PR_FP_EXC_DISABLED = 0x0
+ PR_FP_EXC_DIV = 0x10000
+ PR_FP_EXC_INV = 0x100000
+ PR_FP_EXC_NONRECOV = 0x1
+ PR_FP_EXC_OVF = 0x20000
+ PR_FP_EXC_PRECISE = 0x3
+ PR_FP_EXC_RES = 0x80000
+ PR_FP_EXC_SW_ENABLE = 0x80
+ PR_FP_EXC_UND = 0x40000
+ PR_GET_CHILD_SUBREAPER = 0x25
+ PR_GET_DUMPABLE = 0x3
+ PR_GET_ENDIAN = 0x13
+ PR_GET_FPEMU = 0x9
+ PR_GET_FPEXC = 0xb
+ PR_GET_KEEPCAPS = 0x7
+ PR_GET_NAME = 0x10
+ PR_GET_NO_NEW_PRIVS = 0x27
+ PR_GET_PDEATHSIG = 0x2
+ PR_GET_SECCOMP = 0x15
+ PR_GET_SECUREBITS = 0x1b
+ PR_GET_TID_ADDRESS = 0x28
+ PR_GET_TIMERSLACK = 0x1e
+ PR_GET_TIMING = 0xd
+ PR_GET_TSC = 0x19
+ PR_GET_UNALIGN = 0x5
+ PR_MCE_KILL = 0x21
+ PR_MCE_KILL_CLEAR = 0x0
+ PR_MCE_KILL_DEFAULT = 0x2
+ PR_MCE_KILL_EARLY = 0x1
+ PR_MCE_KILL_GET = 0x22
+ PR_MCE_KILL_LATE = 0x0
+ PR_MCE_KILL_SET = 0x1
+ PR_SET_CHILD_SUBREAPER = 0x24
+ PR_SET_DUMPABLE = 0x4
+ PR_SET_ENDIAN = 0x14
+ PR_SET_FPEMU = 0xa
+ PR_SET_FPEXC = 0xc
+ PR_SET_KEEPCAPS = 0x8
+ PR_SET_MM = 0x23
+ PR_SET_MM_ARG_END = 0x9
+ PR_SET_MM_ARG_START = 0x8
+ PR_SET_MM_AUXV = 0xc
+ PR_SET_MM_BRK = 0x7
+ PR_SET_MM_END_CODE = 0x2
+ PR_SET_MM_END_DATA = 0x4
+ PR_SET_MM_ENV_END = 0xb
+ PR_SET_MM_ENV_START = 0xa
+ PR_SET_MM_EXE_FILE = 0xd
+ PR_SET_MM_START_BRK = 0x6
+ PR_SET_MM_START_CODE = 0x1
+ PR_SET_MM_START_DATA = 0x3
+ PR_SET_MM_START_STACK = 0x5
+ PR_SET_NAME = 0xf
+ PR_SET_NO_NEW_PRIVS = 0x26
+ PR_SET_PDEATHSIG = 0x1
+ PR_SET_PTRACER = 0x59616d61
+ PR_SET_PTRACER_ANY = -0x1
+ PR_SET_SECCOMP = 0x16
+ PR_SET_SECUREBITS = 0x1c
+ PR_SET_TIMERSLACK = 0x1d
+ PR_SET_TIMING = 0xe
+ PR_SET_TSC = 0x1a
+ PR_SET_UNALIGN = 0x6
+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
+ PR_TIMING_STATISTICAL = 0x0
+ PR_TIMING_TIMESTAMP = 0x1
+ PR_TSC_ENABLE = 0x1
+ PR_TSC_SIGSEGV = 0x2
+ PR_UNALIGN_NOPRINT = 0x1
+ PR_UNALIGN_SIGBUS = 0x2
+ PTRACE_ATTACH = 0x10
+ PTRACE_CONT = 0x7
+ PTRACE_DETACH = 0x11
+ PTRACE_EVENT_CLONE = 0x3
+ PTRACE_EVENT_EXEC = 0x4
+ PTRACE_EVENT_EXIT = 0x6
+ PTRACE_EVENT_FORK = 0x1
+ PTRACE_EVENT_SECCOMP = 0x7
+ PTRACE_EVENT_STOP = 0x80
+ PTRACE_EVENT_VFORK = 0x2
+ PTRACE_EVENT_VFORK_DONE = 0x5
+ PTRACE_GETEVENTMSG = 0x4201
+ PTRACE_GETEVRREGS = 0x14
+ PTRACE_GETFPREGS = 0xe
+ PTRACE_GETREGS = 0xc
+ PTRACE_GETREGS64 = 0x16
+ PTRACE_GETREGSET = 0x4204
+ PTRACE_GETSIGINFO = 0x4202
+ PTRACE_GETSIGMASK = 0x420a
+ PTRACE_GETVRREGS = 0x12
+ PTRACE_GETVSRREGS = 0x1b
+ PTRACE_GET_DEBUGREG = 0x19
+ PTRACE_INTERRUPT = 0x4207
+ PTRACE_KILL = 0x8
+ PTRACE_LISTEN = 0x4208
+ PTRACE_O_EXITKILL = 0x100000
+ PTRACE_O_MASK = 0x1000ff
+ PTRACE_O_TRACECLONE = 0x8
+ PTRACE_O_TRACEEXEC = 0x10
+ PTRACE_O_TRACEEXIT = 0x40
+ PTRACE_O_TRACEFORK = 0x2
+ PTRACE_O_TRACESECCOMP = 0x80
+ PTRACE_O_TRACESYSGOOD = 0x1
+ PTRACE_O_TRACEVFORK = 0x4
+ PTRACE_O_TRACEVFORKDONE = 0x20
+ PTRACE_PEEKDATA = 0x2
+ PTRACE_PEEKSIGINFO = 0x4209
+ PTRACE_PEEKSIGINFO_SHARED = 0x1
+ PTRACE_PEEKTEXT = 0x1
+ PTRACE_PEEKUSR = 0x3
+ PTRACE_POKEDATA = 0x5
+ PTRACE_POKETEXT = 0x4
+ PTRACE_POKEUSR = 0x6
+ PTRACE_SEIZE = 0x4206
+ PTRACE_SETEVRREGS = 0x15
+ PTRACE_SETFPREGS = 0xf
+ PTRACE_SETOPTIONS = 0x4200
+ PTRACE_SETREGS = 0xd
+ PTRACE_SETREGS64 = 0x17
+ PTRACE_SETREGSET = 0x4205
+ PTRACE_SETSIGINFO = 0x4203
+ PTRACE_SETSIGMASK = 0x420b
+ PTRACE_SETVRREGS = 0x13
+ PTRACE_SETVSRREGS = 0x1c
+ PTRACE_SET_DEBUGREG = 0x1a
+ PTRACE_SINGLEBLOCK = 0x100
+ PTRACE_SINGLESTEP = 0x9
+ PTRACE_SYSCALL = 0x18
+ PTRACE_TRACEME = 0x0
+ PT_CCR = 0x26
+ PT_CTR = 0x23
+ PT_DAR = 0x29
+ PT_DSCR = 0x2c
+ PT_DSISR = 0x2a
+ PT_FPR0 = 0x30
+ PT_FPSCR = 0x50
+ PT_LNK = 0x24
+ PT_MSR = 0x21
+ PT_NIP = 0x20
+ PT_ORIG_R3 = 0x22
+ PT_R0 = 0x0
+ PT_R1 = 0x1
+ PT_R10 = 0xa
+ PT_R11 = 0xb
+ PT_R12 = 0xc
+ PT_R13 = 0xd
+ PT_R14 = 0xe
+ PT_R15 = 0xf
+ PT_R16 = 0x10
+ PT_R17 = 0x11
+ PT_R18 = 0x12
+ PT_R19 = 0x13
+ PT_R2 = 0x2
+ PT_R20 = 0x14
+ PT_R21 = 0x15
+ PT_R22 = 0x16
+ PT_R23 = 0x17
+ PT_R24 = 0x18
+ PT_R25 = 0x19
+ PT_R26 = 0x1a
+ PT_R27 = 0x1b
+ PT_R28 = 0x1c
+ PT_R29 = 0x1d
+ PT_R3 = 0x3
+ PT_R30 = 0x1e
+ PT_R31 = 0x1f
+ PT_R4 = 0x4
+ PT_R5 = 0x5
+ PT_R6 = 0x6
+ PT_R7 = 0x7
+ PT_R8 = 0x8
+ PT_R9 = 0x9
+ PT_REGS_COUNT = 0x2c
+ PT_RESULT = 0x2b
+ PT_SOFTE = 0x27
+ PT_TRAP = 0x28
+ PT_VR0 = 0x52
+ PT_VRSAVE = 0x94
+ PT_VSCR = 0x93
+ PT_VSR0 = 0x96
+ PT_VSR31 = 0xd4
+ PT_XER = 0x25
+ RLIMIT_AS = 0x9
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x7
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x1
+ RTAX_ADVMSS = 0x8
+ RTAX_CWND = 0x7
+ RTAX_FEATURES = 0xc
+ RTAX_FEATURE_ALLFRAG = 0x8
+ RTAX_FEATURE_ECN = 0x1
+ RTAX_FEATURE_SACK = 0x2
+ RTAX_FEATURE_TIMESTAMP = 0x4
+ RTAX_HOPLIMIT = 0xa
+ RTAX_INITCWND = 0xb
+ RTAX_INITRWND = 0xe
+ RTAX_LOCK = 0x1
+ RTAX_MAX = 0xf
+ RTAX_MTU = 0x2
+ RTAX_QUICKACK = 0xf
+ RTAX_REORDERING = 0x9
+ RTAX_RTO_MIN = 0xd
+ RTAX_RTT = 0x4
+ RTAX_RTTVAR = 0x5
+ RTAX_SSTHRESH = 0x6
+ RTAX_UNSPEC = 0x0
+ RTAX_WINDOW = 0x3
+ RTA_ALIGNTO = 0x4
+ RTA_MAX = 0x11
+ RTCF_DIRECTSRC = 0x4000000
+ RTCF_DOREDIRECT = 0x1000000
+ RTCF_LOG = 0x2000000
+ RTCF_MASQ = 0x400000
+ RTCF_NAT = 0x800000
+ RTCF_VALVE = 0x200000
+ RTF_ADDRCLASSMASK = 0xf8000000
+ RTF_ADDRCONF = 0x40000
+ RTF_ALLONLINK = 0x20000
+ RTF_BROADCAST = 0x10000000
+ RTF_CACHE = 0x1000000
+ RTF_DEFAULT = 0x10000
+ RTF_DYNAMIC = 0x10
+ RTF_FLOW = 0x2000000
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INTERFACE = 0x40000000
+ RTF_IRTT = 0x100
+ RTF_LINKRT = 0x100000
+ RTF_LOCAL = 0x80000000
+ RTF_MODIFIED = 0x20
+ RTF_MSS = 0x40
+ RTF_MTU = 0x40
+ RTF_MULTICAST = 0x20000000
+ RTF_NAT = 0x8000000
+ RTF_NOFORWARD = 0x1000
+ RTF_NONEXTHOP = 0x200000
+ RTF_NOPMTUDISC = 0x4000
+ RTF_POLICY = 0x4000000
+ RTF_REINSTATE = 0x8
+ RTF_REJECT = 0x200
+ RTF_STATIC = 0x400
+ RTF_THROW = 0x2000
+ RTF_UP = 0x1
+ RTF_WINDOW = 0x80
+ RTF_XRESOLVE = 0x800
+ RTM_BASE = 0x10
+ RTM_DELACTION = 0x31
+ RTM_DELADDR = 0x15
+ RTM_DELADDRLABEL = 0x49
+ RTM_DELLINK = 0x11
+ RTM_DELMDB = 0x55
+ RTM_DELNEIGH = 0x1d
+ RTM_DELQDISC = 0x25
+ RTM_DELROUTE = 0x19
+ RTM_DELRULE = 0x21
+ RTM_DELTCLASS = 0x29
+ RTM_DELTFILTER = 0x2d
+ RTM_F_CLONED = 0x200
+ RTM_F_EQUALIZE = 0x400
+ RTM_F_NOTIFY = 0x100
+ RTM_F_PREFIX = 0x800
+ RTM_GETACTION = 0x32
+ RTM_GETADDR = 0x16
+ RTM_GETADDRLABEL = 0x4a
+ RTM_GETANYCAST = 0x3e
+ RTM_GETDCB = 0x4e
+ RTM_GETLINK = 0x12
+ RTM_GETMDB = 0x56
+ RTM_GETMULTICAST = 0x3a
+ RTM_GETNEIGH = 0x1e
+ RTM_GETNEIGHTBL = 0x42
+ RTM_GETNETCONF = 0x52
+ RTM_GETQDISC = 0x26
+ RTM_GETROUTE = 0x1a
+ RTM_GETRULE = 0x22
+ RTM_GETTCLASS = 0x2a
+ RTM_GETTFILTER = 0x2e
+ RTM_MAX = 0x57
+ RTM_NEWACTION = 0x30
+ RTM_NEWADDR = 0x14
+ RTM_NEWADDRLABEL = 0x48
+ RTM_NEWLINK = 0x10
+ RTM_NEWMDB = 0x54
+ RTM_NEWNDUSEROPT = 0x44
+ RTM_NEWNEIGH = 0x1c
+ RTM_NEWNEIGHTBL = 0x40
+ RTM_NEWNETCONF = 0x50
+ RTM_NEWPREFIX = 0x34
+ RTM_NEWQDISC = 0x24
+ RTM_NEWROUTE = 0x18
+ RTM_NEWRULE = 0x20
+ RTM_NEWTCLASS = 0x28
+ RTM_NEWTFILTER = 0x2c
+ RTM_NR_FAMILIES = 0x12
+ RTM_NR_MSGTYPES = 0x48
+ RTM_SETDCB = 0x4f
+ RTM_SETLINK = 0x13
+ RTM_SETNEIGHTBL = 0x43
+ RTNH_ALIGNTO = 0x4
+ RTNH_F_DEAD = 0x1
+ RTNH_F_ONLINK = 0x4
+ RTNH_F_PERVASIVE = 0x2
+ RTN_MAX = 0xb
+ RTPROT_BIRD = 0xc
+ RTPROT_BOOT = 0x3
+ RTPROT_DHCP = 0x10
+ RTPROT_DNROUTED = 0xd
+ RTPROT_GATED = 0x8
+ RTPROT_KERNEL = 0x2
+ RTPROT_MROUTED = 0x11
+ RTPROT_MRT = 0xa
+ RTPROT_NTK = 0xf
+ RTPROT_RA = 0x9
+ RTPROT_REDIRECT = 0x1
+ RTPROT_STATIC = 0x4
+ RTPROT_UNSPEC = 0x0
+ RTPROT_XORP = 0xe
+ RTPROT_ZEBRA = 0xb
+ RT_CLASS_DEFAULT = 0xfd
+ RT_CLASS_LOCAL = 0xff
+ RT_CLASS_MAIN = 0xfe
+ RT_CLASS_MAX = 0xff
+ RT_CLASS_UNSPEC = 0x0
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_CREDENTIALS = 0x2
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x1d
+ SCM_TIMESTAMPING = 0x25
+ SCM_TIMESTAMPNS = 0x23
+ SCM_WIFI_STATUS = 0x29
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDDLCI = 0x8980
+ SIOCADDMULTI = 0x8931
+ SIOCADDRT = 0x890b
+ SIOCATMARK = 0x8905
+ SIOCDARP = 0x8953
+ SIOCDELDLCI = 0x8981
+ SIOCDELMULTI = 0x8932
+ SIOCDELRT = 0x890c
+ SIOCDEVPRIVATE = 0x89f0
+ SIOCDIFADDR = 0x8936
+ SIOCDRARP = 0x8960
+ SIOCGARP = 0x8954
+ SIOCGIFADDR = 0x8915
+ SIOCGIFBR = 0x8940
+ SIOCGIFBRDADDR = 0x8919
+ SIOCGIFCONF = 0x8912
+ SIOCGIFCOUNT = 0x8938
+ SIOCGIFDSTADDR = 0x8917
+ SIOCGIFENCAP = 0x8925
+ SIOCGIFFLAGS = 0x8913
+ SIOCGIFHWADDR = 0x8927
+ SIOCGIFINDEX = 0x8933
+ SIOCGIFMAP = 0x8970
+ SIOCGIFMEM = 0x891f
+ SIOCGIFMETRIC = 0x891d
+ SIOCGIFMTU = 0x8921
+ SIOCGIFNAME = 0x8910
+ SIOCGIFNETMASK = 0x891b
+ SIOCGIFPFLAGS = 0x8935
+ SIOCGIFSLAVE = 0x8929
+ SIOCGIFTXQLEN = 0x8942
+ SIOCGPGRP = 0x8904
+ SIOCGRARP = 0x8961
+ SIOCGSTAMP = 0x8906
+ SIOCGSTAMPNS = 0x8907
+ SIOCPROTOPRIVATE = 0x89e0
+ SIOCRTMSG = 0x890d
+ SIOCSARP = 0x8955
+ SIOCSIFADDR = 0x8916
+ SIOCSIFBR = 0x8941
+ SIOCSIFBRDADDR = 0x891a
+ SIOCSIFDSTADDR = 0x8918
+ SIOCSIFENCAP = 0x8926
+ SIOCSIFFLAGS = 0x8914
+ SIOCSIFHWADDR = 0x8924
+ SIOCSIFHWBROADCAST = 0x8937
+ SIOCSIFLINK = 0x8911
+ SIOCSIFMAP = 0x8971
+ SIOCSIFMEM = 0x8920
+ SIOCSIFMETRIC = 0x891e
+ SIOCSIFMTU = 0x8922
+ SIOCSIFNAME = 0x8923
+ SIOCSIFNETMASK = 0x891c
+ SIOCSIFPFLAGS = 0x8934
+ SIOCSIFSLAVE = 0x8930
+ SIOCSIFTXQLEN = 0x8943
+ SIOCSPGRP = 0x8902
+ SIOCSRARP = 0x8962
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DCCP = 0x6
+ SOCK_DGRAM = 0x2
+ SOCK_NONBLOCK = 0x800
+ SOCK_PACKET = 0xa
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_AAL = 0x109
+ SOL_ATM = 0x108
+ SOL_DECNET = 0x105
+ SOL_ICMPV6 = 0x3a
+ SOL_IP = 0x0
+ SOL_IPV6 = 0x29
+ SOL_IRDA = 0x10a
+ SOL_PACKET = 0x107
+ SOL_RAW = 0xff
+ SOL_SOCKET = 0x1
+ SOL_TCP = 0x6
+ SOL_X25 = 0x106
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x1e
+ SO_ATTACH_FILTER = 0x1a
+ SO_BINDTODEVICE = 0x19
+ SO_BROADCAST = 0x6
+ SO_BSDCOMPAT = 0xe
+ SO_BUSY_POLL = 0x2e
+ SO_DEBUG = 0x1
+ SO_DETACH_FILTER = 0x1b
+ SO_DOMAIN = 0x27
+ SO_DONTROUTE = 0x5
+ SO_ERROR = 0x4
+ SO_GET_FILTER = 0x1a
+ SO_KEEPALIVE = 0x9
+ SO_LINGER = 0xd
+ SO_LOCK_FILTER = 0x2c
+ SO_MARK = 0x24
+ SO_MAX_PACING_RATE = 0x2f
+ SO_NOFCS = 0x2b
+ SO_NO_CHECK = 0xb
+ SO_OOBINLINE = 0xa
+ SO_PASSCRED = 0x14
+ SO_PASSSEC = 0x22
+ SO_PEEK_OFF = 0x2a
+ SO_PEERCRED = 0x15
+ SO_PEERNAME = 0x1c
+ SO_PEERSEC = 0x1f
+ SO_PRIORITY = 0xc
+ SO_PROTOCOL = 0x26
+ SO_RCVBUF = 0x8
+ SO_RCVBUFFORCE = 0x21
+ SO_RCVLOWAT = 0x10
+ SO_RCVTIMEO = 0x12
+ SO_REUSEADDR = 0x2
+ SO_REUSEPORT = 0xf
+ SO_RXQ_OVFL = 0x28
+ SO_SECURITY_AUTHENTICATION = 0x16
+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+ SO_SELECT_ERR_QUEUE = 0x2d
+ SO_SNDBUF = 0x7
+ SO_SNDBUFFORCE = 0x20
+ SO_SNDLOWAT = 0x11
+ SO_SNDTIMEO = 0x13
+ SO_TIMESTAMP = 0x1d
+ SO_TIMESTAMPING = 0x25
+ SO_TIMESTAMPNS = 0x23
+ SO_TYPE = 0x3
+ SO_WIFI_STATUS = 0x29
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TAB0 = 0x0
+ TAB1 = 0x400
+ TAB2 = 0x800
+ TAB3 = 0xc00
+ TABDLY = 0xc00
+ TCFLSH = 0x2000741f
+ TCGETA = 0x40147417
+ TCGETS = 0x402c7413
+ TCIFLUSH = 0x0
+ TCIOFF = 0x2
+ TCIOFLUSH = 0x2
+ TCION = 0x3
+ TCOFLUSH = 0x1
+ TCOOFF = 0x0
+ TCOON = 0x1
+ TCP_CONGESTION = 0xd
+ TCP_COOKIE_IN_ALWAYS = 0x1
+ TCP_COOKIE_MAX = 0x10
+ TCP_COOKIE_MIN = 0x8
+ TCP_COOKIE_OUT_NEVER = 0x2
+ TCP_COOKIE_PAIR_SIZE = 0x20
+ TCP_COOKIE_TRANSACTIONS = 0xf
+ TCP_CORK = 0x3
+ TCP_DEFER_ACCEPT = 0x9
+ TCP_FASTOPEN = 0x17
+ TCP_INFO = 0xb
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x4
+ TCP_KEEPINTVL = 0x5
+ TCP_LINGER2 = 0x8
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0xe
+ TCP_MD5SIG_MAXKEYLEN = 0x50
+ TCP_MSS = 0x200
+ TCP_MSS_DEFAULT = 0x218
+ TCP_MSS_DESIRED = 0x4c4
+ TCP_NODELAY = 0x1
+ TCP_QUEUE_SEQ = 0x15
+ TCP_QUICKACK = 0xc
+ TCP_REPAIR = 0x13
+ TCP_REPAIR_OPTIONS = 0x16
+ TCP_REPAIR_QUEUE = 0x14
+ TCP_SYNCNT = 0x7
+ TCP_S_DATA_IN = 0x4
+ TCP_S_DATA_OUT = 0x8
+ TCP_THIN_DUPACK = 0x11
+ TCP_THIN_LINEAR_TIMEOUTS = 0x10
+ TCP_TIMESTAMP = 0x18
+ TCP_USER_TIMEOUT = 0x12
+ TCP_WINDOW_CLAMP = 0xa
+ TCSAFLUSH = 0x2
+ TCSBRK = 0x2000741d
+ TCSBRKP = 0x5425
+ TCSETA = 0x80147418
+ TCSETAF = 0x8014741c
+ TCSETAW = 0x80147419
+ TCSETS = 0x802c7414
+ TCSETSF = 0x802c7416
+ TCSETSW = 0x802c7415
+ TCXONC = 0x2000741e
+ TIOCCBRK = 0x5428
+ TIOCCONS = 0x541d
+ TIOCEXCL = 0x540c
+ TIOCGDEV = 0x40045432
+ TIOCGETC = 0x40067412
+ TIOCGETD = 0x5424
+ TIOCGETP = 0x40067408
+ TIOCGEXCL = 0x40045440
+ TIOCGICOUNT = 0x545d
+ TIOCGLCKTRMIOS = 0x5456
+ TIOCGLTC = 0x40067474
+ TIOCGPGRP = 0x40047477
+ TIOCGPKT = 0x40045438
+ TIOCGPTLCK = 0x40045439
+ TIOCGPTN = 0x40045430
+ TIOCGRS485 = 0x542e
+ TIOCGSERIAL = 0x541e
+ TIOCGSID = 0x5429
+ TIOCGSOFTCAR = 0x5419
+ TIOCGWINSZ = 0x40087468
+ TIOCINQ = 0x4004667f
+ TIOCLINUX = 0x541c
+ TIOCMBIC = 0x5417
+ TIOCMBIS = 0x5416
+ TIOCMGET = 0x5415
+ TIOCMIWAIT = 0x545c
+ TIOCMSET = 0x5418
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_LOOP = 0x8000
+ TIOCM_OUT1 = 0x2000
+ TIOCM_OUT2 = 0x4000
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x5422
+ TIOCNXCL = 0x540d
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x5420
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCSBRK = 0x5427
+ TIOCSCTTY = 0x540e
+ TIOCSERCONFIG = 0x5453
+ TIOCSERGETLSR = 0x5459
+ TIOCSERGETMULTI = 0x545a
+ TIOCSERGSTRUCT = 0x5458
+ TIOCSERGWILD = 0x5454
+ TIOCSERSETMULTI = 0x545b
+ TIOCSERSWILD = 0x5455
+ TIOCSER_TEMT = 0x1
+ TIOCSETC = 0x80067411
+ TIOCSETD = 0x5423
+ TIOCSETN = 0x8006740a
+ TIOCSETP = 0x80067409
+ TIOCSIG = 0x80045436
+ TIOCSLCKTRMIOS = 0x5457
+ TIOCSLTC = 0x80067475
+ TIOCSPGRP = 0x80047476
+ TIOCSPTLCK = 0x80045431
+ TIOCSRS485 = 0x542f
+ TIOCSSERIAL = 0x541f
+ TIOCSSOFTCAR = 0x541a
+ TIOCSTART = 0x2000746e
+ TIOCSTI = 0x5412
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCVHANGUP = 0x5437
+ TOSTOP = 0x400000
+ TUNATTACHFILTER = 0x801054d5
+ TUNDETACHFILTER = 0x801054d6
+ TUNGETFEATURES = 0x400454cf
+ TUNGETFILTER = 0x401054db
+ TUNGETIFF = 0x400454d2
+ TUNGETSNDBUF = 0x400454d3
+ TUNGETVNETHDRSZ = 0x400454d7
+ TUNSETDEBUG = 0x800454c9
+ TUNSETGROUP = 0x800454ce
+ TUNSETIFF = 0x800454ca
+ TUNSETIFINDEX = 0x800454da
+ TUNSETLINK = 0x800454cd
+ TUNSETNOCSUM = 0x800454c8
+ TUNSETOFFLOAD = 0x800454d0
+ TUNSETOWNER = 0x800454cc
+ TUNSETPERSIST = 0x800454cb
+ TUNSETQUEUE = 0x800454d9
+ TUNSETSNDBUF = 0x800454d4
+ TUNSETTXFILTER = 0x800454d1
+ TUNSETVNETHDRSZ = 0x800454d8
+ VDISCARD = 0x10
+ VEOF = 0x4
+ VEOL = 0x6
+ VEOL2 = 0x8
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x5
+ VQUIT = 0x1
+ VREPRINT = 0xb
+ VSTART = 0xd
+ VSTOP = 0xe
+ VSUSP = 0xc
+ VSWTC = 0x9
+ VT0 = 0x0
+ VT1 = 0x10000
+ VTDLY = 0x10000
+ VTIME = 0x7
+ VWERASE = 0xa
+ WALL = 0x40000000
+ WCLONE = 0x80000000
+ WCONTINUED = 0x8
+ WEXITED = 0x4
+ WNOHANG = 0x1
+ WNOTHREAD = 0x20000000
+ WNOWAIT = 0x1000000
+ WORDSIZE = 0x40
+ WSTOPPED = 0x2
+ WUNTRACED = 0x2
+ XCASE = 0x4000
+ XTABS = 0xc00
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x62)
+ EADDRNOTAVAIL = syscall.Errno(0x63)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x61)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x72)
+ EBADE = syscall.Errno(0x34)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x4d)
+ EBADMSG = syscall.Errno(0x4a)
+ EBADR = syscall.Errno(0x35)
+ EBADRQC = syscall.Errno(0x38)
+ EBADSLT = syscall.Errno(0x39)
+ EBFONT = syscall.Errno(0x3b)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x7d)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x2c)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x67)
+ ECONNREFUSED = syscall.Errno(0x6f)
+ ECONNRESET = syscall.Errno(0x68)
+ EDEADLK = syscall.Errno(0x23)
+ EDEADLOCK = syscall.Errno(0x3a)
+ EDESTADDRREQ = syscall.Errno(0x59)
+ EDOM = syscall.Errno(0x21)
+ EDOTDOT = syscall.Errno(0x49)
+ EDQUOT = syscall.Errno(0x7a)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x70)
+ EHOSTUNREACH = syscall.Errno(0x71)
+ EHWPOISON = syscall.Errno(0x85)
+ EIDRM = syscall.Errno(0x2b)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x73)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x6a)
+ EISDIR = syscall.Errno(0x15)
+ EISNAM = syscall.Errno(0x78)
+ EKEYEXPIRED = syscall.Errno(0x7f)
+ EKEYREJECTED = syscall.Errno(0x81)
+ EKEYREVOKED = syscall.Errno(0x80)
+ EL2HLT = syscall.Errno(0x33)
+ EL2NSYNC = syscall.Errno(0x2d)
+ EL3HLT = syscall.Errno(0x2e)
+ EL3RST = syscall.Errno(0x2f)
+ ELIBACC = syscall.Errno(0x4f)
+ ELIBBAD = syscall.Errno(0x50)
+ ELIBEXEC = syscall.Errno(0x53)
+ ELIBMAX = syscall.Errno(0x52)
+ ELIBSCN = syscall.Errno(0x51)
+ ELNRNG = syscall.Errno(0x30)
+ ELOOP = syscall.Errno(0x28)
+ EMEDIUMTYPE = syscall.Errno(0x7c)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x5a)
+ EMULTIHOP = syscall.Errno(0x48)
+ ENAMETOOLONG = syscall.Errno(0x24)
+ ENAVAIL = syscall.Errno(0x77)
+ ENETDOWN = syscall.Errno(0x64)
+ ENETRESET = syscall.Errno(0x66)
+ ENETUNREACH = syscall.Errno(0x65)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x37)
+ ENOBUFS = syscall.Errno(0x69)
+ ENOCSI = syscall.Errno(0x32)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOKEY = syscall.Errno(0x7e)
+ ENOLCK = syscall.Errno(0x25)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEDIUM = syscall.Errno(0x7b)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x2a)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x5c)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x26)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x6b)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x27)
+ ENOTNAM = syscall.Errno(0x76)
+ ENOTRECOVERABLE = syscall.Errno(0x83)
+ ENOTSOCK = syscall.Errno(0x58)
+ ENOTSUP = syscall.Errno(0x5f)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x4c)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x5f)
+ EOVERFLOW = syscall.Errno(0x4b)
+ EOWNERDEAD = syscall.Errno(0x82)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x60)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x5d)
+ EPROTOTYPE = syscall.Errno(0x5b)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x4e)
+ EREMOTE = syscall.Errno(0x42)
+ EREMOTEIO = syscall.Errno(0x79)
+ ERESTART = syscall.Errno(0x55)
+ ERFKILL = syscall.Errno(0x84)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x6c)
+ ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x74)
+ ESTRPIPE = syscall.Errno(0x56)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x6e)
+ ETOOMANYREFS = syscall.Errno(0x6d)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUCLEAN = syscall.Errno(0x75)
+ EUNATCH = syscall.Errno(0x31)
+ EUSERS = syscall.Errno(0x57)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0x7)
+ SIGCHLD = syscall.Signal(0x11)
+ SIGCLD = syscall.Signal(0x11)
+ SIGCONT = syscall.Signal(0x12)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x1d)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x1d)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x1e)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTKFLT = syscall.Signal(0x10)
+ SIGSTOP = syscall.Signal(0x13)
+ SIGSYS = syscall.Signal(0x1f)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x14)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGUNUSED = syscall.Signal(0x1f)
+ SIGURG = syscall.Signal(0x17)
+ SIGUSR1 = syscall.Signal(0xa)
+ SIGUSR2 = syscall.Signal(0xc)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "no such device or address",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device or resource busy",
+ 17: "file exists",
+ 18: "invalid cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "numerical result out of range",
+ 35: "resource deadlock avoided",
+ 36: "file name too long",
+ 37: "no locks available",
+ 38: "function not implemented",
+ 39: "directory not empty",
+ 40: "too many levels of symbolic links",
+ 42: "no message of desired type",
+ 43: "identifier removed",
+ 44: "channel number out of range",
+ 45: "level 2 not synchronized",
+ 46: "level 3 halted",
+ 47: "level 3 reset",
+ 48: "link number out of range",
+ 49: "protocol driver not attached",
+ 50: "no CSI structure available",
+ 51: "level 2 halted",
+ 52: "invalid exchange",
+ 53: "invalid request descriptor",
+ 54: "exchange full",
+ 55: "no anode",
+ 56: "invalid request code",
+ 57: "invalid slot",
+ 58: "file locking deadlock error",
+ 59: "bad font file format",
+ 60: "device not a stream",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of streams resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 72: "multihop attempted",
+ 73: "RFS specific error",
+ 74: "bad message",
+ 75: "value too large for defined data type",
+ 76: "name not unique on network",
+ 77: "file descriptor in bad state",
+ 78: "remote address changed",
+ 79: "can not access a needed shared library",
+ 80: "accessing a corrupted shared library",
+ 81: ".lib section in a.out corrupted",
+ 82: "attempting to link in too many shared libraries",
+ 83: "cannot exec a shared library directly",
+ 84: "invalid or incomplete multibyte or wide character",
+ 85: "interrupted system call should be restarted",
+ 86: "streams pipe error",
+ 87: "too many users",
+ 88: "socket operation on non-socket",
+ 89: "destination address required",
+ 90: "message too long",
+ 91: "protocol wrong type for socket",
+ 92: "protocol not available",
+ 93: "protocol not supported",
+ 94: "socket type not supported",
+ 95: "operation not supported",
+ 96: "protocol family not supported",
+ 97: "address family not supported by protocol",
+ 98: "address already in use",
+ 99: "cannot assign requested address",
+ 100: "network is down",
+ 101: "network is unreachable",
+ 102: "network dropped connection on reset",
+ 103: "software caused connection abort",
+ 104: "connection reset by peer",
+ 105: "no buffer space available",
+ 106: "transport endpoint is already connected",
+ 107: "transport endpoint is not connected",
+ 108: "cannot send after transport endpoint shutdown",
+ 109: "too many references: cannot splice",
+ 110: "connection timed out",
+ 111: "connection refused",
+ 112: "host is down",
+ 113: "no route to host",
+ 114: "operation already in progress",
+ 115: "operation now in progress",
+ 116: "stale file handle",
+ 117: "structure needs cleaning",
+ 118: "not a XENIX named type file",
+ 119: "no XENIX semaphores available",
+ 120: "is a named type file",
+ 121: "remote I/O error",
+ 122: "disk quota exceeded",
+ 123: "no medium found",
+ 124: "wrong medium type",
+ 125: "operation canceled",
+ 126: "required key not available",
+ 127: "key has expired",
+ 128: "key has been revoked",
+ 129: "key was rejected by service",
+ 130: "owner died",
+ 131: "state not recoverable",
+ 132: "operation not possible due to RF-kill",
+ 133: "memory page has hardware error",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/breakpoint trap",
+ 6: "aborted",
+ 7: "bus error",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "user defined signal 1",
+ 11: "segmentation fault",
+ 12: "user defined signal 2",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "stack fault",
+ 17: "child exited",
+ 18: "continued",
+ 19: "stopped (signal)",
+ 20: "stopped",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "urgent I/O condition",
+ 24: "CPU time limit exceeded",
+ 25: "file size limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window changed",
+ 29: "I/O possible",
+ 30: "power failure",
+ 31: "bad system call",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_386.go
new file mode 100644
index 000000000..b4338d5f2
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_386.go
@@ -0,0 +1,1712 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,netbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_ARP = 0x1c
+ AF_BLUETOOTH = 0x1f
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x20
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x18
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x23
+ AF_MPLS = 0x21
+ AF_NATM = 0x1b
+ AF_NS = 0x6
+ AF_OROUTE = 0x11
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x22
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ETHER = 0x1
+ ARPHRD_FRELAY = 0xf
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_STRIP = 0x17
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B460800 = 0x70800
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B921600 = 0xe1000
+ B9600 = 0x2580
+ BIOCFEEDBACK = 0x8004427d
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc0084277
+ BIOCGETIF = 0x4090426b
+ BIOCGFEEDBACK = 0x4004427c
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRTIMEOUT = 0x400c427b
+ BIOCGSEESENT = 0x40044278
+ BIOCGSTATS = 0x4080426f
+ BIOCGSTATSOLD = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044276
+ BIOCSETF = 0x80084267
+ BIOCSETIF = 0x8090426c
+ BIOCSFEEDBACK = 0x8004427d
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRTIMEOUT = 0x800c427a
+ BIOCSSEESENT = 0x80044279
+ BIOCSTCPF = 0x80084272
+ BIOCSUDPF = 0x80084273
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALIGNMENT32 = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DFLTBUFSIZE = 0x100000
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x1000000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CLONE_CSIGNAL = 0xff
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_PID = 0x1000
+ CLONE_PTRACE = 0x2000
+ CLONE_SIGHAND = 0x800
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ CTL_QUERY = -0x2
+ DIOCBSFLUSH = 0x20006478
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HDLC = 0x10
+ DLT_HHDLC = 0x79
+ DLT_HIPPI = 0xf
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0xe
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RAWAF_MASK = 0x2240000
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xd
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EMUL_LINUX = 0x1
+ EMUL_LINUX32 = 0x5
+ EMUL_MAXID = 0x6
+ EN_SW_CTL_INF = 0x1000
+ EN_SW_CTL_PREC = 0x300
+ EN_SW_CTL_ROUND = 0xc00
+ EN_SW_DATACHAIN = 0x80
+ EN_SW_DENORM = 0x2
+ EN_SW_INVOP = 0x1
+ EN_SW_OVERFLOW = 0x8
+ EN_SW_PRECLOSS = 0x20
+ EN_SW_UNDERFLOW = 0x10
+ EN_SW_ZERODIV = 0x4
+ ETHERCAP_JUMBO_MTU = 0x4
+ ETHERCAP_VLAN_HWTAGGING = 0x2
+ ETHERCAP_VLAN_MTU = 0x1
+ ETHERMIN = 0x2e
+ ETHERMTU = 0x5dc
+ ETHERMTU_JUMBO = 0x2328
+ ETHERTYPE_8023 = 0x4
+ ETHERTYPE_AARP = 0x80f3
+ ETHERTYPE_ACCTON = 0x8390
+ ETHERTYPE_AEONIC = 0x8036
+ ETHERTYPE_ALPHA = 0x814a
+ ETHERTYPE_AMBER = 0x6008
+ ETHERTYPE_AMOEBA = 0x8145
+ ETHERTYPE_APOLLO = 0x80f7
+ ETHERTYPE_APOLLODOMAIN = 0x8019
+ ETHERTYPE_APPLETALK = 0x809b
+ ETHERTYPE_APPLITEK = 0x80c7
+ ETHERTYPE_ARGONAUT = 0x803a
+ ETHERTYPE_ARP = 0x806
+ ETHERTYPE_AT = 0x809b
+ ETHERTYPE_ATALK = 0x809b
+ ETHERTYPE_ATOMIC = 0x86df
+ ETHERTYPE_ATT = 0x8069
+ ETHERTYPE_ATTSTANFORD = 0x8008
+ ETHERTYPE_AUTOPHON = 0x806a
+ ETHERTYPE_AXIS = 0x8856
+ ETHERTYPE_BCLOOP = 0x9003
+ ETHERTYPE_BOFL = 0x8102
+ ETHERTYPE_CABLETRON = 0x7034
+ ETHERTYPE_CHAOS = 0x804
+ ETHERTYPE_COMDESIGN = 0x806c
+ ETHERTYPE_COMPUGRAPHIC = 0x806d
+ ETHERTYPE_COUNTERPOINT = 0x8062
+ ETHERTYPE_CRONUS = 0x8004
+ ETHERTYPE_CRONUSVLN = 0x8003
+ ETHERTYPE_DCA = 0x1234
+ ETHERTYPE_DDE = 0x807b
+ ETHERTYPE_DEBNI = 0xaaaa
+ ETHERTYPE_DECAM = 0x8048
+ ETHERTYPE_DECCUST = 0x6006
+ ETHERTYPE_DECDIAG = 0x6005
+ ETHERTYPE_DECDNS = 0x803c
+ ETHERTYPE_DECDTS = 0x803e
+ ETHERTYPE_DECEXPER = 0x6000
+ ETHERTYPE_DECLAST = 0x8041
+ ETHERTYPE_DECLTM = 0x803f
+ ETHERTYPE_DECMUMPS = 0x6009
+ ETHERTYPE_DECNETBIOS = 0x8040
+ ETHERTYPE_DELTACON = 0x86de
+ ETHERTYPE_DIDDLE = 0x4321
+ ETHERTYPE_DLOG1 = 0x660
+ ETHERTYPE_DLOG2 = 0x661
+ ETHERTYPE_DN = 0x6003
+ ETHERTYPE_DOGFIGHT = 0x1989
+ ETHERTYPE_DSMD = 0x8039
+ ETHERTYPE_ECMA = 0x803
+ ETHERTYPE_ENCRYPT = 0x803d
+ ETHERTYPE_ES = 0x805d
+ ETHERTYPE_EXCELAN = 0x8010
+ ETHERTYPE_EXPERDATA = 0x8049
+ ETHERTYPE_FLIP = 0x8146
+ ETHERTYPE_FLOWCONTROL = 0x8808
+ ETHERTYPE_FRARP = 0x808
+ ETHERTYPE_GENDYN = 0x8068
+ ETHERTYPE_HAYES = 0x8130
+ ETHERTYPE_HIPPI_FP = 0x8180
+ ETHERTYPE_HITACHI = 0x8820
+ ETHERTYPE_HP = 0x8005
+ ETHERTYPE_IEEEPUP = 0xa00
+ ETHERTYPE_IEEEPUPAT = 0xa01
+ ETHERTYPE_IMLBL = 0x4c42
+ ETHERTYPE_IMLBLDIAG = 0x424c
+ ETHERTYPE_IP = 0x800
+ ETHERTYPE_IPAS = 0x876c
+ ETHERTYPE_IPV6 = 0x86dd
+ ETHERTYPE_IPX = 0x8137
+ ETHERTYPE_IPXNEW = 0x8037
+ ETHERTYPE_KALPANA = 0x8582
+ ETHERTYPE_LANBRIDGE = 0x8038
+ ETHERTYPE_LANPROBE = 0x8888
+ ETHERTYPE_LAT = 0x6004
+ ETHERTYPE_LBACK = 0x9000
+ ETHERTYPE_LITTLE = 0x8060
+ ETHERTYPE_LOGICRAFT = 0x8148
+ ETHERTYPE_LOOPBACK = 0x9000
+ ETHERTYPE_MATRA = 0x807a
+ ETHERTYPE_MAX = 0xffff
+ ETHERTYPE_MERIT = 0x807c
+ ETHERTYPE_MICP = 0x873a
+ ETHERTYPE_MOPDL = 0x6001
+ ETHERTYPE_MOPRC = 0x6002
+ ETHERTYPE_MOTOROLA = 0x818d
+ ETHERTYPE_MPLS = 0x8847
+ ETHERTYPE_MPLS_MCAST = 0x8848
+ ETHERTYPE_MUMPS = 0x813f
+ ETHERTYPE_NBPCC = 0x3c04
+ ETHERTYPE_NBPCLAIM = 0x3c09
+ ETHERTYPE_NBPCLREQ = 0x3c05
+ ETHERTYPE_NBPCLRSP = 0x3c06
+ ETHERTYPE_NBPCREQ = 0x3c02
+ ETHERTYPE_NBPCRSP = 0x3c03
+ ETHERTYPE_NBPDG = 0x3c07
+ ETHERTYPE_NBPDGB = 0x3c08
+ ETHERTYPE_NBPDLTE = 0x3c0a
+ ETHERTYPE_NBPRAR = 0x3c0c
+ ETHERTYPE_NBPRAS = 0x3c0b
+ ETHERTYPE_NBPRST = 0x3c0d
+ ETHERTYPE_NBPSCD = 0x3c01
+ ETHERTYPE_NBPVCD = 0x3c00
+ ETHERTYPE_NBS = 0x802
+ ETHERTYPE_NCD = 0x8149
+ ETHERTYPE_NESTAR = 0x8006
+ ETHERTYPE_NETBEUI = 0x8191
+ ETHERTYPE_NOVELL = 0x8138
+ ETHERTYPE_NS = 0x600
+ ETHERTYPE_NSAT = 0x601
+ ETHERTYPE_NSCOMPAT = 0x807
+ ETHERTYPE_NTRAILER = 0x10
+ ETHERTYPE_OS9 = 0x7007
+ ETHERTYPE_OS9NET = 0x7009
+ ETHERTYPE_PACER = 0x80c6
+ ETHERTYPE_PAE = 0x888e
+ ETHERTYPE_PCS = 0x4242
+ ETHERTYPE_PLANNING = 0x8044
+ ETHERTYPE_PPP = 0x880b
+ ETHERTYPE_PPPOE = 0x8864
+ ETHERTYPE_PPPOEDISC = 0x8863
+ ETHERTYPE_PRIMENTS = 0x7031
+ ETHERTYPE_PUP = 0x200
+ ETHERTYPE_PUPAT = 0x200
+ ETHERTYPE_RACAL = 0x7030
+ ETHERTYPE_RATIONAL = 0x8150
+ ETHERTYPE_RAWFR = 0x6559
+ ETHERTYPE_RCL = 0x1995
+ ETHERTYPE_RDP = 0x8739
+ ETHERTYPE_RETIX = 0x80f2
+ ETHERTYPE_REVARP = 0x8035
+ ETHERTYPE_SCA = 0x6007
+ ETHERTYPE_SECTRA = 0x86db
+ ETHERTYPE_SECUREDATA = 0x876d
+ ETHERTYPE_SGITW = 0x817e
+ ETHERTYPE_SG_BOUNCE = 0x8016
+ ETHERTYPE_SG_DIAG = 0x8013
+ ETHERTYPE_SG_NETGAMES = 0x8014
+ ETHERTYPE_SG_RESV = 0x8015
+ ETHERTYPE_SIMNET = 0x5208
+ ETHERTYPE_SLOWPROTOCOLS = 0x8809
+ ETHERTYPE_SNA = 0x80d5
+ ETHERTYPE_SNMP = 0x814c
+ ETHERTYPE_SONIX = 0xfaf5
+ ETHERTYPE_SPIDER = 0x809f
+ ETHERTYPE_SPRITE = 0x500
+ ETHERTYPE_STP = 0x8181
+ ETHERTYPE_TALARIS = 0x812b
+ ETHERTYPE_TALARISMC = 0x852b
+ ETHERTYPE_TCPCOMP = 0x876b
+ ETHERTYPE_TCPSM = 0x9002
+ ETHERTYPE_TEC = 0x814f
+ ETHERTYPE_TIGAN = 0x802f
+ ETHERTYPE_TRAIL = 0x1000
+ ETHERTYPE_TRANSETHER = 0x6558
+ ETHERTYPE_TYMSHARE = 0x802e
+ ETHERTYPE_UBBST = 0x7005
+ ETHERTYPE_UBDEBUG = 0x900
+ ETHERTYPE_UBDIAGLOOP = 0x7002
+ ETHERTYPE_UBDL = 0x7000
+ ETHERTYPE_UBNIU = 0x7001
+ ETHERTYPE_UBNMC = 0x7003
+ ETHERTYPE_VALID = 0x1600
+ ETHERTYPE_VARIAN = 0x80dd
+ ETHERTYPE_VAXELN = 0x803b
+ ETHERTYPE_VEECO = 0x8067
+ ETHERTYPE_VEXP = 0x805b
+ ETHERTYPE_VGLAB = 0x8131
+ ETHERTYPE_VINES = 0xbad
+ ETHERTYPE_VINESECHO = 0xbaf
+ ETHERTYPE_VINESLOOP = 0xbae
+ ETHERTYPE_VITAL = 0xff00
+ ETHERTYPE_VLAN = 0x8100
+ ETHERTYPE_VLTLMAN = 0x8080
+ ETHERTYPE_VPROD = 0x805c
+ ETHERTYPE_VURESERVED = 0x8147
+ ETHERTYPE_WATERLOO = 0x8130
+ ETHERTYPE_WELLFLEET = 0x8103
+ ETHERTYPE_X25 = 0x805
+ ETHERTYPE_X75 = 0x801
+ ETHERTYPE_XNSSM = 0x9001
+ ETHERTYPE_XTP = 0x817d
+ ETHER_ADDR_LEN = 0x6
+ ETHER_CRC_LEN = 0x4
+ ETHER_CRC_POLY_BE = 0x4c11db6
+ ETHER_CRC_POLY_LE = 0xedb88320
+ ETHER_HDR_LEN = 0xe
+ ETHER_MAX_LEN = 0x5ee
+ ETHER_MAX_LEN_JUMBO = 0x233a
+ ETHER_MIN_LEN = 0x40
+ ETHER_PPPOE_ENCAP_LEN = 0x8
+ ETHER_TYPE_LEN = 0x2
+ ETHER_VLAN_ENCAP_LEN = 0x4
+ EVFILT_AIO = 0x2
+ EVFILT_PROC = 0x4
+ EVFILT_READ = 0x0
+ EVFILT_SIGNAL = 0x5
+ EVFILT_SYSCOUNT = 0x7
+ EVFILT_TIMER = 0x6
+ EVFILT_VNODE = 0x3
+ EVFILT_WRITE = 0x1
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x100
+ FLUSHO = 0x800000
+ F_CLOSEM = 0xa
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0xc
+ F_FSCTL = -0x80000000
+ F_FSDIRMASK = 0x70000000
+ F_FSIN = 0x10000000
+ F_FSINOUT = 0x30000000
+ F_FSOUT = 0x20000000
+ F_FSPRIV = 0x8000
+ F_FSVOID = 0x40000000
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETNOSIGPIPE = 0xd
+ F_GETOWN = 0x5
+ F_MAXFD = 0xb
+ F_OK = 0x0
+ F_PARAM_MASK = 0xfff
+ F_PARAM_MAX = 0xfff
+ F_RDLCK = 0x1
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETNOSIGPIPE = 0xe
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFA_ROUTE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x8f52
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf8
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ECONET = 0xce
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf2
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LINEGROUP = 0xd2
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PLC = 0xae
+ IFT_PON155 = 0xcf
+ IFT_PON622 = 0xd0
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPATM = 0xc5
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf1
+ IFT_Q2931 = 0xc9
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SIPSIG = 0xcc
+ IFT_SIPTG = 0xcb
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_STF = 0xd7
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TELINK = 0xc8
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VIRTUALTG = 0xca
+ IFT_VOICEDID = 0xd5
+ IFT_VOICEEM = 0x64
+ IFT_VOICEEMFGD = 0xd3
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFGDEANA = 0xd4
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERCABLE = 0xc6
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_AH = 0x33
+ IPPROTO_CARP = 0x70
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IPV6_ICMP = 0x3a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_VRRP = 0x70
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_PATHMTU = 0x2c
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_EF = 0x8000
+ IP_ERRORMTU = 0x15
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x16
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINFRAGSIZE = 0x45
+ IP_MINTTL = 0x18
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x1
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x17
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x6
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_SPACEAVAIL = 0x5
+ MADV_WILLNEED = 0x3
+ MAP_ALIGNMENT_16MB = 0x18000000
+ MAP_ALIGNMENT_1TB = 0x28000000
+ MAP_ALIGNMENT_256TB = 0x30000000
+ MAP_ALIGNMENT_4GB = 0x20000000
+ MAP_ALIGNMENT_64KB = 0x10000000
+ MAP_ALIGNMENT_64PB = 0x38000000
+ MAP_ALIGNMENT_MASK = -0x1000000
+ MAP_ALIGNMENT_SHIFT = 0x18
+ MAP_ANON = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_INHERIT = 0x80
+ MAP_INHERIT_COPY = 0x1
+ MAP_INHERIT_DEFAULT = 0x1
+ MAP_INHERIT_DONATE_COPY = 0x3
+ MAP_INHERIT_NONE = 0x2
+ MAP_INHERIT_SHARE = 0x0
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x2000
+ MAP_TRYFIXED = 0x400
+ MAP_WIRED = 0x800
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_BCAST = 0x100
+ MSG_CMSG_CLOEXEC = 0x800
+ MSG_CONTROLMBUF = 0x2000000
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOR = 0x8
+ MSG_IOVUSRSPACE = 0x4000000
+ MSG_LENUSRSPACE = 0x8000000
+ MSG_MCAST = 0x200
+ MSG_NAMEMBUF = 0x1000000
+ MSG_NBIO = 0x1000
+ MSG_NOSIGNAL = 0x400
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_USERFLAGS = 0xffffff
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x2
+ MS_SYNC = 0x4
+ NAME_MAX = 0x1ff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x5
+ NET_RT_MAXID = 0x6
+ NET_RT_OIFLIST = 0x4
+ NET_RT_OOIFLIST = 0x3
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ OFIOGETBMAP = 0xc004667a
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_ALT_IO = 0x40000
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x400000
+ O_CREAT = 0x200
+ O_DIRECT = 0x80000
+ O_DIRECTORY = 0x200000
+ O_DSYNC = 0x10000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_NOSIGPIPE = 0x1000000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x20000
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PRI_IOFLUSH = 0x7c
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_AS = 0xa
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x9
+ RTAX_NETMASK = 0x2
+ RTAX_TAG = 0x8
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTA_TAG = 0x100
+ RTF_ANNOUNCE = 0x20000
+ RTF_BLACKHOLE = 0x1000
+ RTF_CLONED = 0x2000
+ RTF_CLONING = 0x100
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_LLINFO = 0x400
+ RTF_MASK = 0x80
+ RTF_MODIFIED = 0x20
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_REJECT = 0x8
+ RTF_SRC = 0x10000
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_CHGADDR = 0x15
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_GET = 0x4
+ RTM_IEEE80211 = 0x11
+ RTM_IFANNOUNCE = 0x10
+ RTM_IFINFO = 0x14
+ RTM_LLINFO_UPD = 0x13
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_OIFINFO = 0xf
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_OOIFINFO = 0xe
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_SETGATE = 0x12
+ RTM_VERSION = 0x4
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x4
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x8
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80906931
+ SIOCADDRT = 0x8030720a
+ SIOCAIFADDR = 0x8040691a
+ SIOCALIFADDR = 0x8118691c
+ SIOCATMARK = 0x40047307
+ SIOCDELMULTI = 0x80906932
+ SIOCDELRT = 0x8030720b
+ SIOCDIFADDR = 0x80906919
+ SIOCDIFPHYADDR = 0x80906949
+ SIOCDLIFADDR = 0x8118691e
+ SIOCGDRVSPEC = 0xc01c697b
+ SIOCGETPFSYNC = 0xc09069f8
+ SIOCGETSGCNT = 0xc0147534
+ SIOCGETVIFCNT = 0xc0147533
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0906921
+ SIOCGIFADDRPREF = 0xc0946920
+ SIOCGIFALIAS = 0xc040691b
+ SIOCGIFBRDADDR = 0xc0906923
+ SIOCGIFCAP = 0xc0206976
+ SIOCGIFCONF = 0xc0086926
+ SIOCGIFDATA = 0xc0946985
+ SIOCGIFDLT = 0xc0906977
+ SIOCGIFDSTADDR = 0xc0906922
+ SIOCGIFFLAGS = 0xc0906911
+ SIOCGIFGENERIC = 0xc090693a
+ SIOCGIFMEDIA = 0xc0286936
+ SIOCGIFMETRIC = 0xc0906917
+ SIOCGIFMTU = 0xc090697e
+ SIOCGIFNETMASK = 0xc0906925
+ SIOCGIFPDSTADDR = 0xc0906948
+ SIOCGIFPSRCADDR = 0xc0906947
+ SIOCGLIFADDR = 0xc118691d
+ SIOCGLIFPHYADDR = 0xc118694b
+ SIOCGLINKSTR = 0xc01c6987
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGVH = 0xc0906983
+ SIOCIFCREATE = 0x8090697a
+ SIOCIFDESTROY = 0x80906979
+ SIOCIFGCLONERS = 0xc00c6978
+ SIOCINITIFADDR = 0xc0446984
+ SIOCSDRVSPEC = 0x801c697b
+ SIOCSETPFSYNC = 0x809069f7
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8090690c
+ SIOCSIFADDRPREF = 0x8094691f
+ SIOCSIFBRDADDR = 0x80906913
+ SIOCSIFCAP = 0x80206975
+ SIOCSIFDSTADDR = 0x8090690e
+ SIOCSIFFLAGS = 0x80906910
+ SIOCSIFGENERIC = 0x80906939
+ SIOCSIFMEDIA = 0xc0906935
+ SIOCSIFMETRIC = 0x80906918
+ SIOCSIFMTU = 0x8090697f
+ SIOCSIFNETMASK = 0x80906916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSLIFPHYADDR = 0x8118694a
+ SIOCSLINKSTR = 0x801c6988
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SIOCSVH = 0xc0906982
+ SIOCZIFDATA = 0xc0946986
+ SOCK_CLOEXEC = 0x10000000
+ SOCK_DGRAM = 0x2
+ SOCK_FLAGS_MASK = 0xf0000000
+ SOCK_NONBLOCK = 0x20000000
+ SOCK_NOSIGPIPE = 0x40000000
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ACCEPTFILTER = 0x1000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_NOHEADER = 0x100a
+ SO_NOSIGPIPE = 0x800
+ SO_OOBINLINE = 0x100
+ SO_OVERFLOWED = 0x1009
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x100c
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x100b
+ SO_TIMESTAMP = 0x2000
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ SYSCTL_VERSION = 0x1000000
+ SYSCTL_VERS_0 = 0x0
+ SYSCTL_VERS_1 = 0x1000000
+ SYSCTL_VERS_MASK = 0xff000000
+ S_ARCH1 = 0x10000
+ S_ARCH2 = 0x20000
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IFWHT = 0xe000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISTXT = 0x200
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ S_LOGIN_SET = 0x1
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CONGCTL = 0x20
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x3
+ TCP_KEEPINIT = 0x7
+ TCP_KEEPINTVL = 0x5
+ TCP_MAXBURST = 0x4
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x10
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x218
+ TCP_NODELAY = 0x1
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x400c7458
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLAG_CDTRCTS = 0x10
+ TIOCFLAG_CLOCAL = 0x2
+ TIOCFLAG_CRTSCTS = 0x4
+ TIOCFLAG_MDMBUF = 0x8
+ TIOCFLAG_SOFTCAR = 0x1
+ TIOCFLUSH = 0x80047410
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGFLAGS = 0x4004745d
+ TIOCGLINED = 0x40207442
+ TIOCGPGRP = 0x40047477
+ TIOCGQSIZE = 0x40047481
+ TIOCGRANTPT = 0x20007447
+ TIOCGSID = 0x40047463
+ TIOCGSIZE = 0x40087468
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGET = 0x4004746a
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTMGET = 0x40287446
+ TIOCPTSNAME = 0x40287448
+ TIOCRCVFRAME = 0x80047445
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSFLAGS = 0x8004745c
+ TIOCSIG = 0x2000745f
+ TIOCSLINED = 0x80207443
+ TIOCSPGRP = 0x80047476
+ TIOCSQSIZE = 0x80047480
+ TIOCSSIZE = 0x80087467
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x80047465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCUCNTL = 0x80047466
+ TIOCXMTFRAME = 0x80047444
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WALL = 0x8
+ WALLSIG = 0x8
+ WALTSIG = 0x4
+ WCLONE = 0x4
+ WCOREFLAG = 0x80
+ WNOHANG = 0x1
+ WNOWAIT = 0x10000
+ WNOZOMBIE = 0x20000
+ WOPTSCHECKED = 0x40000
+ WSTOPPED = 0x7f
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x58)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x57)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x52)
+ EILSEQ = syscall.Errno(0x55)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x60)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5e)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x5d)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODATA = syscall.Errno(0x59)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x5f)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x53)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x5a)
+ ENOSTR = syscall.Errno(0x5b)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x56)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x54)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x60)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIME = syscall.Errno(0x5c)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x20)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large or too small",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol option not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "connection timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "identifier removed",
+ 83: "no message of desired type",
+ 84: "value too large to be stored in data type",
+ 85: "illegal byte sequence",
+ 86: "not supported",
+ 87: "operation Canceled",
+ 88: "bad or Corrupt message",
+ 89: "no message available",
+ 90: "no STREAM resources",
+ 91: "not a STREAM",
+ 92: "STREAM ioctl timeout",
+ 93: "attribute not found",
+ 94: "multihop attempted",
+ 95: "link has been severed",
+ 96: "protocol error",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "stopped (signal)",
+ 18: "stopped",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "power fail/restart",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
new file mode 100644
index 000000000..4994437b6
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
@@ -0,0 +1,1702 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,netbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_ARP = 0x1c
+ AF_BLUETOOTH = 0x1f
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x20
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x18
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x23
+ AF_MPLS = 0x21
+ AF_NATM = 0x1b
+ AF_NS = 0x6
+ AF_OROUTE = 0x11
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x22
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ETHER = 0x1
+ ARPHRD_FRELAY = 0xf
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_STRIP = 0x17
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B460800 = 0x70800
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B921600 = 0xe1000
+ B9600 = 0x2580
+ BIOCFEEDBACK = 0x8004427d
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc0104277
+ BIOCGETIF = 0x4090426b
+ BIOCGFEEDBACK = 0x4004427c
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRTIMEOUT = 0x4010427b
+ BIOCGSEESENT = 0x40044278
+ BIOCGSTATS = 0x4080426f
+ BIOCGSTATSOLD = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044276
+ BIOCSETF = 0x80104267
+ BIOCSETIF = 0x8090426c
+ BIOCSFEEDBACK = 0x8004427d
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRTIMEOUT = 0x8010427a
+ BIOCSSEESENT = 0x80044279
+ BIOCSTCPF = 0x80104272
+ BIOCSUDPF = 0x80104273
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x8
+ BPF_ALIGNMENT32 = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DFLTBUFSIZE = 0x100000
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x1000000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CLONE_CSIGNAL = 0xff
+ CLONE_FILES = 0x400
+ CLONE_FS = 0x200
+ CLONE_PID = 0x1000
+ CLONE_PTRACE = 0x2000
+ CLONE_SIGHAND = 0x800
+ CLONE_VFORK = 0x4000
+ CLONE_VM = 0x100
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ CTL_QUERY = -0x2
+ DIOCBSFLUSH = 0x20006478
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HDLC = 0x10
+ DLT_HHDLC = 0x79
+ DLT_HIPPI = 0xf
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0xe
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RAWAF_MASK = 0x2240000
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xd
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EMUL_LINUX = 0x1
+ EMUL_LINUX32 = 0x5
+ EMUL_MAXID = 0x6
+ ETHERCAP_JUMBO_MTU = 0x4
+ ETHERCAP_VLAN_HWTAGGING = 0x2
+ ETHERCAP_VLAN_MTU = 0x1
+ ETHERMIN = 0x2e
+ ETHERMTU = 0x5dc
+ ETHERMTU_JUMBO = 0x2328
+ ETHERTYPE_8023 = 0x4
+ ETHERTYPE_AARP = 0x80f3
+ ETHERTYPE_ACCTON = 0x8390
+ ETHERTYPE_AEONIC = 0x8036
+ ETHERTYPE_ALPHA = 0x814a
+ ETHERTYPE_AMBER = 0x6008
+ ETHERTYPE_AMOEBA = 0x8145
+ ETHERTYPE_APOLLO = 0x80f7
+ ETHERTYPE_APOLLODOMAIN = 0x8019
+ ETHERTYPE_APPLETALK = 0x809b
+ ETHERTYPE_APPLITEK = 0x80c7
+ ETHERTYPE_ARGONAUT = 0x803a
+ ETHERTYPE_ARP = 0x806
+ ETHERTYPE_AT = 0x809b
+ ETHERTYPE_ATALK = 0x809b
+ ETHERTYPE_ATOMIC = 0x86df
+ ETHERTYPE_ATT = 0x8069
+ ETHERTYPE_ATTSTANFORD = 0x8008
+ ETHERTYPE_AUTOPHON = 0x806a
+ ETHERTYPE_AXIS = 0x8856
+ ETHERTYPE_BCLOOP = 0x9003
+ ETHERTYPE_BOFL = 0x8102
+ ETHERTYPE_CABLETRON = 0x7034
+ ETHERTYPE_CHAOS = 0x804
+ ETHERTYPE_COMDESIGN = 0x806c
+ ETHERTYPE_COMPUGRAPHIC = 0x806d
+ ETHERTYPE_COUNTERPOINT = 0x8062
+ ETHERTYPE_CRONUS = 0x8004
+ ETHERTYPE_CRONUSVLN = 0x8003
+ ETHERTYPE_DCA = 0x1234
+ ETHERTYPE_DDE = 0x807b
+ ETHERTYPE_DEBNI = 0xaaaa
+ ETHERTYPE_DECAM = 0x8048
+ ETHERTYPE_DECCUST = 0x6006
+ ETHERTYPE_DECDIAG = 0x6005
+ ETHERTYPE_DECDNS = 0x803c
+ ETHERTYPE_DECDTS = 0x803e
+ ETHERTYPE_DECEXPER = 0x6000
+ ETHERTYPE_DECLAST = 0x8041
+ ETHERTYPE_DECLTM = 0x803f
+ ETHERTYPE_DECMUMPS = 0x6009
+ ETHERTYPE_DECNETBIOS = 0x8040
+ ETHERTYPE_DELTACON = 0x86de
+ ETHERTYPE_DIDDLE = 0x4321
+ ETHERTYPE_DLOG1 = 0x660
+ ETHERTYPE_DLOG2 = 0x661
+ ETHERTYPE_DN = 0x6003
+ ETHERTYPE_DOGFIGHT = 0x1989
+ ETHERTYPE_DSMD = 0x8039
+ ETHERTYPE_ECMA = 0x803
+ ETHERTYPE_ENCRYPT = 0x803d
+ ETHERTYPE_ES = 0x805d
+ ETHERTYPE_EXCELAN = 0x8010
+ ETHERTYPE_EXPERDATA = 0x8049
+ ETHERTYPE_FLIP = 0x8146
+ ETHERTYPE_FLOWCONTROL = 0x8808
+ ETHERTYPE_FRARP = 0x808
+ ETHERTYPE_GENDYN = 0x8068
+ ETHERTYPE_HAYES = 0x8130
+ ETHERTYPE_HIPPI_FP = 0x8180
+ ETHERTYPE_HITACHI = 0x8820
+ ETHERTYPE_HP = 0x8005
+ ETHERTYPE_IEEEPUP = 0xa00
+ ETHERTYPE_IEEEPUPAT = 0xa01
+ ETHERTYPE_IMLBL = 0x4c42
+ ETHERTYPE_IMLBLDIAG = 0x424c
+ ETHERTYPE_IP = 0x800
+ ETHERTYPE_IPAS = 0x876c
+ ETHERTYPE_IPV6 = 0x86dd
+ ETHERTYPE_IPX = 0x8137
+ ETHERTYPE_IPXNEW = 0x8037
+ ETHERTYPE_KALPANA = 0x8582
+ ETHERTYPE_LANBRIDGE = 0x8038
+ ETHERTYPE_LANPROBE = 0x8888
+ ETHERTYPE_LAT = 0x6004
+ ETHERTYPE_LBACK = 0x9000
+ ETHERTYPE_LITTLE = 0x8060
+ ETHERTYPE_LOGICRAFT = 0x8148
+ ETHERTYPE_LOOPBACK = 0x9000
+ ETHERTYPE_MATRA = 0x807a
+ ETHERTYPE_MAX = 0xffff
+ ETHERTYPE_MERIT = 0x807c
+ ETHERTYPE_MICP = 0x873a
+ ETHERTYPE_MOPDL = 0x6001
+ ETHERTYPE_MOPRC = 0x6002
+ ETHERTYPE_MOTOROLA = 0x818d
+ ETHERTYPE_MPLS = 0x8847
+ ETHERTYPE_MPLS_MCAST = 0x8848
+ ETHERTYPE_MUMPS = 0x813f
+ ETHERTYPE_NBPCC = 0x3c04
+ ETHERTYPE_NBPCLAIM = 0x3c09
+ ETHERTYPE_NBPCLREQ = 0x3c05
+ ETHERTYPE_NBPCLRSP = 0x3c06
+ ETHERTYPE_NBPCREQ = 0x3c02
+ ETHERTYPE_NBPCRSP = 0x3c03
+ ETHERTYPE_NBPDG = 0x3c07
+ ETHERTYPE_NBPDGB = 0x3c08
+ ETHERTYPE_NBPDLTE = 0x3c0a
+ ETHERTYPE_NBPRAR = 0x3c0c
+ ETHERTYPE_NBPRAS = 0x3c0b
+ ETHERTYPE_NBPRST = 0x3c0d
+ ETHERTYPE_NBPSCD = 0x3c01
+ ETHERTYPE_NBPVCD = 0x3c00
+ ETHERTYPE_NBS = 0x802
+ ETHERTYPE_NCD = 0x8149
+ ETHERTYPE_NESTAR = 0x8006
+ ETHERTYPE_NETBEUI = 0x8191
+ ETHERTYPE_NOVELL = 0x8138
+ ETHERTYPE_NS = 0x600
+ ETHERTYPE_NSAT = 0x601
+ ETHERTYPE_NSCOMPAT = 0x807
+ ETHERTYPE_NTRAILER = 0x10
+ ETHERTYPE_OS9 = 0x7007
+ ETHERTYPE_OS9NET = 0x7009
+ ETHERTYPE_PACER = 0x80c6
+ ETHERTYPE_PAE = 0x888e
+ ETHERTYPE_PCS = 0x4242
+ ETHERTYPE_PLANNING = 0x8044
+ ETHERTYPE_PPP = 0x880b
+ ETHERTYPE_PPPOE = 0x8864
+ ETHERTYPE_PPPOEDISC = 0x8863
+ ETHERTYPE_PRIMENTS = 0x7031
+ ETHERTYPE_PUP = 0x200
+ ETHERTYPE_PUPAT = 0x200
+ ETHERTYPE_RACAL = 0x7030
+ ETHERTYPE_RATIONAL = 0x8150
+ ETHERTYPE_RAWFR = 0x6559
+ ETHERTYPE_RCL = 0x1995
+ ETHERTYPE_RDP = 0x8739
+ ETHERTYPE_RETIX = 0x80f2
+ ETHERTYPE_REVARP = 0x8035
+ ETHERTYPE_SCA = 0x6007
+ ETHERTYPE_SECTRA = 0x86db
+ ETHERTYPE_SECUREDATA = 0x876d
+ ETHERTYPE_SGITW = 0x817e
+ ETHERTYPE_SG_BOUNCE = 0x8016
+ ETHERTYPE_SG_DIAG = 0x8013
+ ETHERTYPE_SG_NETGAMES = 0x8014
+ ETHERTYPE_SG_RESV = 0x8015
+ ETHERTYPE_SIMNET = 0x5208
+ ETHERTYPE_SLOWPROTOCOLS = 0x8809
+ ETHERTYPE_SNA = 0x80d5
+ ETHERTYPE_SNMP = 0x814c
+ ETHERTYPE_SONIX = 0xfaf5
+ ETHERTYPE_SPIDER = 0x809f
+ ETHERTYPE_SPRITE = 0x500
+ ETHERTYPE_STP = 0x8181
+ ETHERTYPE_TALARIS = 0x812b
+ ETHERTYPE_TALARISMC = 0x852b
+ ETHERTYPE_TCPCOMP = 0x876b
+ ETHERTYPE_TCPSM = 0x9002
+ ETHERTYPE_TEC = 0x814f
+ ETHERTYPE_TIGAN = 0x802f
+ ETHERTYPE_TRAIL = 0x1000
+ ETHERTYPE_TRANSETHER = 0x6558
+ ETHERTYPE_TYMSHARE = 0x802e
+ ETHERTYPE_UBBST = 0x7005
+ ETHERTYPE_UBDEBUG = 0x900
+ ETHERTYPE_UBDIAGLOOP = 0x7002
+ ETHERTYPE_UBDL = 0x7000
+ ETHERTYPE_UBNIU = 0x7001
+ ETHERTYPE_UBNMC = 0x7003
+ ETHERTYPE_VALID = 0x1600
+ ETHERTYPE_VARIAN = 0x80dd
+ ETHERTYPE_VAXELN = 0x803b
+ ETHERTYPE_VEECO = 0x8067
+ ETHERTYPE_VEXP = 0x805b
+ ETHERTYPE_VGLAB = 0x8131
+ ETHERTYPE_VINES = 0xbad
+ ETHERTYPE_VINESECHO = 0xbaf
+ ETHERTYPE_VINESLOOP = 0xbae
+ ETHERTYPE_VITAL = 0xff00
+ ETHERTYPE_VLAN = 0x8100
+ ETHERTYPE_VLTLMAN = 0x8080
+ ETHERTYPE_VPROD = 0x805c
+ ETHERTYPE_VURESERVED = 0x8147
+ ETHERTYPE_WATERLOO = 0x8130
+ ETHERTYPE_WELLFLEET = 0x8103
+ ETHERTYPE_X25 = 0x805
+ ETHERTYPE_X75 = 0x801
+ ETHERTYPE_XNSSM = 0x9001
+ ETHERTYPE_XTP = 0x817d
+ ETHER_ADDR_LEN = 0x6
+ ETHER_CRC_LEN = 0x4
+ ETHER_CRC_POLY_BE = 0x4c11db6
+ ETHER_CRC_POLY_LE = 0xedb88320
+ ETHER_HDR_LEN = 0xe
+ ETHER_MAX_LEN = 0x5ee
+ ETHER_MAX_LEN_JUMBO = 0x233a
+ ETHER_MIN_LEN = 0x40
+ ETHER_PPPOE_ENCAP_LEN = 0x8
+ ETHER_TYPE_LEN = 0x2
+ ETHER_VLAN_ENCAP_LEN = 0x4
+ EVFILT_AIO = 0x2
+ EVFILT_PROC = 0x4
+ EVFILT_READ = 0x0
+ EVFILT_SIGNAL = 0x5
+ EVFILT_SYSCOUNT = 0x7
+ EVFILT_TIMER = 0x6
+ EVFILT_VNODE = 0x3
+ EVFILT_WRITE = 0x1
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x100
+ FLUSHO = 0x800000
+ F_CLOSEM = 0xa
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0xc
+ F_FSCTL = -0x80000000
+ F_FSDIRMASK = 0x70000000
+ F_FSIN = 0x10000000
+ F_FSINOUT = 0x30000000
+ F_FSOUT = 0x20000000
+ F_FSPRIV = 0x8000
+ F_FSVOID = 0x40000000
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETNOSIGPIPE = 0xd
+ F_GETOWN = 0x5
+ F_MAXFD = 0xb
+ F_OK = 0x0
+ F_PARAM_MASK = 0xfff
+ F_PARAM_MAX = 0xfff
+ F_RDLCK = 0x1
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETNOSIGPIPE = 0xe
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFA_ROUTE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x8f52
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf8
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ECONET = 0xce
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf2
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LINEGROUP = 0xd2
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PLC = 0xae
+ IFT_PON155 = 0xcf
+ IFT_PON622 = 0xd0
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPATM = 0xc5
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf1
+ IFT_Q2931 = 0xc9
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SIPSIG = 0xcc
+ IFT_SIPTG = 0xcb
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_STF = 0xd7
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TELINK = 0xc8
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VIRTUALTG = 0xca
+ IFT_VOICEDID = 0xd5
+ IFT_VOICEEM = 0x64
+ IFT_VOICEEMFGD = 0xd3
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFGDEANA = 0xd4
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERCABLE = 0xc6
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_AH = 0x33
+ IPPROTO_CARP = 0x70
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IPV6_ICMP = 0x3a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_VRRP = 0x70
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_PATHMTU = 0x2c
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_EF = 0x8000
+ IP_ERRORMTU = 0x15
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x16
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINFRAGSIZE = 0x45
+ IP_MINTTL = 0x18
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x1
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x17
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x6
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_SPACEAVAIL = 0x5
+ MADV_WILLNEED = 0x3
+ MAP_ALIGNMENT_16MB = 0x18000000
+ MAP_ALIGNMENT_1TB = 0x28000000
+ MAP_ALIGNMENT_256TB = 0x30000000
+ MAP_ALIGNMENT_4GB = 0x20000000
+ MAP_ALIGNMENT_64KB = 0x10000000
+ MAP_ALIGNMENT_64PB = 0x38000000
+ MAP_ALIGNMENT_MASK = -0x1000000
+ MAP_ALIGNMENT_SHIFT = 0x18
+ MAP_ANON = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_INHERIT = 0x80
+ MAP_INHERIT_COPY = 0x1
+ MAP_INHERIT_DEFAULT = 0x1
+ MAP_INHERIT_DONATE_COPY = 0x3
+ MAP_INHERIT_NONE = 0x2
+ MAP_INHERIT_SHARE = 0x0
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x2000
+ MAP_TRYFIXED = 0x400
+ MAP_WIRED = 0x800
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_BCAST = 0x100
+ MSG_CMSG_CLOEXEC = 0x800
+ MSG_CONTROLMBUF = 0x2000000
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOR = 0x8
+ MSG_IOVUSRSPACE = 0x4000000
+ MSG_LENUSRSPACE = 0x8000000
+ MSG_MCAST = 0x200
+ MSG_NAMEMBUF = 0x1000000
+ MSG_NBIO = 0x1000
+ MSG_NOSIGNAL = 0x400
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_USERFLAGS = 0xffffff
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x2
+ MS_SYNC = 0x4
+ NAME_MAX = 0x1ff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x5
+ NET_RT_MAXID = 0x6
+ NET_RT_OIFLIST = 0x4
+ NET_RT_OOIFLIST = 0x3
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ OFIOGETBMAP = 0xc004667a
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_ALT_IO = 0x40000
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x400000
+ O_CREAT = 0x200
+ O_DIRECT = 0x80000
+ O_DIRECTORY = 0x200000
+ O_DSYNC = 0x10000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_NOSIGPIPE = 0x1000000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x20000
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PRI_IOFLUSH = 0x7c
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_AS = 0xa
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x9
+ RTAX_NETMASK = 0x2
+ RTAX_TAG = 0x8
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTA_TAG = 0x100
+ RTF_ANNOUNCE = 0x20000
+ RTF_BLACKHOLE = 0x1000
+ RTF_CLONED = 0x2000
+ RTF_CLONING = 0x100
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_LLINFO = 0x400
+ RTF_MASK = 0x80
+ RTF_MODIFIED = 0x20
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_REJECT = 0x8
+ RTF_SRC = 0x10000
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_CHGADDR = 0x15
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_GET = 0x4
+ RTM_IEEE80211 = 0x11
+ RTM_IFANNOUNCE = 0x10
+ RTM_IFINFO = 0x14
+ RTM_LLINFO_UPD = 0x13
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_OIFINFO = 0xf
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_OOIFINFO = 0xe
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_SETGATE = 0x12
+ RTM_VERSION = 0x4
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x4
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x8
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80906931
+ SIOCADDRT = 0x8038720a
+ SIOCAIFADDR = 0x8040691a
+ SIOCALIFADDR = 0x8118691c
+ SIOCATMARK = 0x40047307
+ SIOCDELMULTI = 0x80906932
+ SIOCDELRT = 0x8038720b
+ SIOCDIFADDR = 0x80906919
+ SIOCDIFPHYADDR = 0x80906949
+ SIOCDLIFADDR = 0x8118691e
+ SIOCGDRVSPEC = 0xc028697b
+ SIOCGETPFSYNC = 0xc09069f8
+ SIOCGETSGCNT = 0xc0207534
+ SIOCGETVIFCNT = 0xc0287533
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0906921
+ SIOCGIFADDRPREF = 0xc0986920
+ SIOCGIFALIAS = 0xc040691b
+ SIOCGIFBRDADDR = 0xc0906923
+ SIOCGIFCAP = 0xc0206976
+ SIOCGIFCONF = 0xc0106926
+ SIOCGIFDATA = 0xc0986985
+ SIOCGIFDLT = 0xc0906977
+ SIOCGIFDSTADDR = 0xc0906922
+ SIOCGIFFLAGS = 0xc0906911
+ SIOCGIFGENERIC = 0xc090693a
+ SIOCGIFMEDIA = 0xc0306936
+ SIOCGIFMETRIC = 0xc0906917
+ SIOCGIFMTU = 0xc090697e
+ SIOCGIFNETMASK = 0xc0906925
+ SIOCGIFPDSTADDR = 0xc0906948
+ SIOCGIFPSRCADDR = 0xc0906947
+ SIOCGLIFADDR = 0xc118691d
+ SIOCGLIFPHYADDR = 0xc118694b
+ SIOCGLINKSTR = 0xc0286987
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGVH = 0xc0906983
+ SIOCIFCREATE = 0x8090697a
+ SIOCIFDESTROY = 0x80906979
+ SIOCIFGCLONERS = 0xc0106978
+ SIOCINITIFADDR = 0xc0706984
+ SIOCSDRVSPEC = 0x8028697b
+ SIOCSETPFSYNC = 0x809069f7
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8090690c
+ SIOCSIFADDRPREF = 0x8098691f
+ SIOCSIFBRDADDR = 0x80906913
+ SIOCSIFCAP = 0x80206975
+ SIOCSIFDSTADDR = 0x8090690e
+ SIOCSIFFLAGS = 0x80906910
+ SIOCSIFGENERIC = 0x80906939
+ SIOCSIFMEDIA = 0xc0906935
+ SIOCSIFMETRIC = 0x80906918
+ SIOCSIFMTU = 0x8090697f
+ SIOCSIFNETMASK = 0x80906916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSLIFPHYADDR = 0x8118694a
+ SIOCSLINKSTR = 0x80286988
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SIOCSVH = 0xc0906982
+ SIOCZIFDATA = 0xc0986986
+ SOCK_CLOEXEC = 0x10000000
+ SOCK_DGRAM = 0x2
+ SOCK_FLAGS_MASK = 0xf0000000
+ SOCK_NONBLOCK = 0x20000000
+ SOCK_NOSIGPIPE = 0x40000000
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ACCEPTFILTER = 0x1000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_NOHEADER = 0x100a
+ SO_NOSIGPIPE = 0x800
+ SO_OOBINLINE = 0x100
+ SO_OVERFLOWED = 0x1009
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x100c
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x100b
+ SO_TIMESTAMP = 0x2000
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ SYSCTL_VERSION = 0x1000000
+ SYSCTL_VERS_0 = 0x0
+ SYSCTL_VERS_1 = 0x1000000
+ SYSCTL_VERS_MASK = 0xff000000
+ S_ARCH1 = 0x10000
+ S_ARCH2 = 0x20000
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IFWHT = 0xe000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISTXT = 0x200
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ S_LOGIN_SET = 0x1
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CONGCTL = 0x20
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x3
+ TCP_KEEPINIT = 0x7
+ TCP_KEEPINTVL = 0x5
+ TCP_MAXBURST = 0x4
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x10
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x218
+ TCP_NODELAY = 0x1
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x40107458
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLAG_CDTRCTS = 0x10
+ TIOCFLAG_CLOCAL = 0x2
+ TIOCFLAG_CRTSCTS = 0x4
+ TIOCFLAG_MDMBUF = 0x8
+ TIOCFLAG_SOFTCAR = 0x1
+ TIOCFLUSH = 0x80047410
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGFLAGS = 0x4004745d
+ TIOCGLINED = 0x40207442
+ TIOCGPGRP = 0x40047477
+ TIOCGQSIZE = 0x40047481
+ TIOCGRANTPT = 0x20007447
+ TIOCGSID = 0x40047463
+ TIOCGSIZE = 0x40087468
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGET = 0x4004746a
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTMGET = 0x40287446
+ TIOCPTSNAME = 0x40287448
+ TIOCRCVFRAME = 0x80087445
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSFLAGS = 0x8004745c
+ TIOCSIG = 0x2000745f
+ TIOCSLINED = 0x80207443
+ TIOCSPGRP = 0x80047476
+ TIOCSQSIZE = 0x80047480
+ TIOCSSIZE = 0x80087467
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x80047465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCUCNTL = 0x80047466
+ TIOCXMTFRAME = 0x80087444
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WALL = 0x8
+ WALLSIG = 0x8
+ WALTSIG = 0x4
+ WCLONE = 0x4
+ WCOREFLAG = 0x80
+ WNOHANG = 0x1
+ WNOWAIT = 0x10000
+ WNOZOMBIE = 0x20000
+ WOPTSCHECKED = 0x40000
+ WSTOPPED = 0x7f
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x58)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x57)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x52)
+ EILSEQ = syscall.Errno(0x55)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x60)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5e)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x5d)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODATA = syscall.Errno(0x59)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x5f)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x53)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x5a)
+ ENOSTR = syscall.Errno(0x5b)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x56)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x54)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x60)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIME = syscall.Errno(0x5c)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x20)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large or too small",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol option not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "connection timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "identifier removed",
+ 83: "no message of desired type",
+ 84: "value too large to be stored in data type",
+ 85: "illegal byte sequence",
+ 86: "not supported",
+ 87: "operation Canceled",
+ 88: "bad or Corrupt message",
+ 89: "no message available",
+ 90: "no STREAM resources",
+ 91: "not a STREAM",
+ 92: "STREAM ioctl timeout",
+ 93: "attribute not found",
+ 94: "multihop attempted",
+ 95: "link has been severed",
+ 96: "protocol error",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "stopped (signal)",
+ 18: "stopped",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "power fail/restart",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_arm.go
new file mode 100644
index 000000000..ac85ca645
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_netbsd_arm.go
@@ -0,0 +1,1688 @@
+// mkerrors.sh -marm
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,netbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -marm _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_ARP = 0x1c
+ AF_BLUETOOTH = 0x1f
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_HYLINK = 0xf
+ AF_IEEE80211 = 0x20
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x18
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x23
+ AF_MPLS = 0x21
+ AF_NATM = 0x1b
+ AF_NS = 0x6
+ AF_OROUTE = 0x11
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x22
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ETHER = 0x1
+ ARPHRD_FRELAY = 0xf
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_STRIP = 0x17
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B460800 = 0x70800
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B921600 = 0xe1000
+ B9600 = 0x2580
+ BIOCFEEDBACK = 0x8004427d
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc0084277
+ BIOCGETIF = 0x4090426b
+ BIOCGFEEDBACK = 0x4004427c
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRTIMEOUT = 0x400c427b
+ BIOCGSEESENT = 0x40044278
+ BIOCGSTATS = 0x4080426f
+ BIOCGSTATSOLD = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDLT = 0x80044276
+ BIOCSETF = 0x80084267
+ BIOCSETIF = 0x8090426c
+ BIOCSFEEDBACK = 0x8004427d
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRTIMEOUT = 0x800c427a
+ BIOCSSEESENT = 0x80044279
+ BIOCSTCPF = 0x80084272
+ BIOCSUDPF = 0x80084273
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALIGNMENT32 = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DFLTBUFSIZE = 0x100000
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x1000000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ CTL_QUERY = -0x2
+ DIOCBSFLUSH = 0x20006478
+ DLT_A429 = 0xb8
+ DLT_A653_ICM = 0xb9
+ DLT_AIRONET_HEADER = 0x78
+ DLT_AOS = 0xde
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_AX25_KISS = 0xca
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_BLUETOOTH_HCI_H4 = 0xbb
+ DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9
+ DLT_CAN20B = 0xbe
+ DLT_CAN_SOCKETCAN = 0xe3
+ DLT_CHAOS = 0x5
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_C_HDLC_WITH_DIR = 0xcd
+ DLT_DECT = 0xdd
+ DLT_DOCSIS = 0x8f
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF = 0xc5
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FC_2 = 0xe0
+ DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
+ DLT_FDDI = 0xa
+ DLT_FLEXRAY = 0xd2
+ DLT_FRELAY = 0x6b
+ DLT_FRELAY_WITH_DIR = 0xce
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_GSMTAP_ABIS = 0xda
+ DLT_GSMTAP_UM = 0xd9
+ DLT_HDLC = 0x10
+ DLT_HHDLC = 0x79
+ DLT_HIPPI = 0xf
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IEEE802_15_4 = 0xc3
+ DLT_IEEE802_15_4_LINUX = 0xbf
+ DLT_IEEE802_15_4_NONASK_PHY = 0xd7
+ DLT_IEEE802_16_MAC_CPS = 0xbc
+ DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1
+ DLT_IPMB = 0xc7
+ DLT_IPMB_LINUX = 0xd1
+ DLT_IPNET = 0xe2
+ DLT_IPV4 = 0xe4
+ DLT_IPV6 = 0xe5
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_ISM = 0xc2
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_JUNIPER_ST = 0xc8
+ DLT_JUNIPER_VP = 0xb7
+ DLT_LAPB_WITH_DIR = 0xcf
+ DLT_LAPD = 0xcb
+ DLT_LIN = 0xd4
+ DLT_LINUX_EVDEV = 0xd8
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MFR = 0xb6
+ DLT_MOST = 0xd3
+ DLT_MPLS = 0xdb
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPI = 0xc0
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0xe
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_PPPD = 0xa6
+ DLT_PPP_SERIAL = 0x32
+ DLT_PPP_WITH_DIR = 0xcc
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAIF1 = 0xc6
+ DLT_RAW = 0xc
+ DLT_RAWAF_MASK = 0x2240000
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SITA = 0xc4
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xd
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ DLT_USB = 0xba
+ DLT_USB_LINUX = 0xbd
+ DLT_USB_LINUX_MMAPPED = 0xdc
+ DLT_WIHART = 0xdf
+ DLT_X2E_SERIAL = 0xd5
+ DLT_X2E_XORAYA = 0xd6
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ DT_WHT = 0xe
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EMUL_LINUX = 0x1
+ EMUL_LINUX32 = 0x5
+ EMUL_MAXID = 0x6
+ ETHERCAP_JUMBO_MTU = 0x4
+ ETHERCAP_VLAN_HWTAGGING = 0x2
+ ETHERCAP_VLAN_MTU = 0x1
+ ETHERMIN = 0x2e
+ ETHERMTU = 0x5dc
+ ETHERMTU_JUMBO = 0x2328
+ ETHERTYPE_8023 = 0x4
+ ETHERTYPE_AARP = 0x80f3
+ ETHERTYPE_ACCTON = 0x8390
+ ETHERTYPE_AEONIC = 0x8036
+ ETHERTYPE_ALPHA = 0x814a
+ ETHERTYPE_AMBER = 0x6008
+ ETHERTYPE_AMOEBA = 0x8145
+ ETHERTYPE_APOLLO = 0x80f7
+ ETHERTYPE_APOLLODOMAIN = 0x8019
+ ETHERTYPE_APPLETALK = 0x809b
+ ETHERTYPE_APPLITEK = 0x80c7
+ ETHERTYPE_ARGONAUT = 0x803a
+ ETHERTYPE_ARP = 0x806
+ ETHERTYPE_AT = 0x809b
+ ETHERTYPE_ATALK = 0x809b
+ ETHERTYPE_ATOMIC = 0x86df
+ ETHERTYPE_ATT = 0x8069
+ ETHERTYPE_ATTSTANFORD = 0x8008
+ ETHERTYPE_AUTOPHON = 0x806a
+ ETHERTYPE_AXIS = 0x8856
+ ETHERTYPE_BCLOOP = 0x9003
+ ETHERTYPE_BOFL = 0x8102
+ ETHERTYPE_CABLETRON = 0x7034
+ ETHERTYPE_CHAOS = 0x804
+ ETHERTYPE_COMDESIGN = 0x806c
+ ETHERTYPE_COMPUGRAPHIC = 0x806d
+ ETHERTYPE_COUNTERPOINT = 0x8062
+ ETHERTYPE_CRONUS = 0x8004
+ ETHERTYPE_CRONUSVLN = 0x8003
+ ETHERTYPE_DCA = 0x1234
+ ETHERTYPE_DDE = 0x807b
+ ETHERTYPE_DEBNI = 0xaaaa
+ ETHERTYPE_DECAM = 0x8048
+ ETHERTYPE_DECCUST = 0x6006
+ ETHERTYPE_DECDIAG = 0x6005
+ ETHERTYPE_DECDNS = 0x803c
+ ETHERTYPE_DECDTS = 0x803e
+ ETHERTYPE_DECEXPER = 0x6000
+ ETHERTYPE_DECLAST = 0x8041
+ ETHERTYPE_DECLTM = 0x803f
+ ETHERTYPE_DECMUMPS = 0x6009
+ ETHERTYPE_DECNETBIOS = 0x8040
+ ETHERTYPE_DELTACON = 0x86de
+ ETHERTYPE_DIDDLE = 0x4321
+ ETHERTYPE_DLOG1 = 0x660
+ ETHERTYPE_DLOG2 = 0x661
+ ETHERTYPE_DN = 0x6003
+ ETHERTYPE_DOGFIGHT = 0x1989
+ ETHERTYPE_DSMD = 0x8039
+ ETHERTYPE_ECMA = 0x803
+ ETHERTYPE_ENCRYPT = 0x803d
+ ETHERTYPE_ES = 0x805d
+ ETHERTYPE_EXCELAN = 0x8010
+ ETHERTYPE_EXPERDATA = 0x8049
+ ETHERTYPE_FLIP = 0x8146
+ ETHERTYPE_FLOWCONTROL = 0x8808
+ ETHERTYPE_FRARP = 0x808
+ ETHERTYPE_GENDYN = 0x8068
+ ETHERTYPE_HAYES = 0x8130
+ ETHERTYPE_HIPPI_FP = 0x8180
+ ETHERTYPE_HITACHI = 0x8820
+ ETHERTYPE_HP = 0x8005
+ ETHERTYPE_IEEEPUP = 0xa00
+ ETHERTYPE_IEEEPUPAT = 0xa01
+ ETHERTYPE_IMLBL = 0x4c42
+ ETHERTYPE_IMLBLDIAG = 0x424c
+ ETHERTYPE_IP = 0x800
+ ETHERTYPE_IPAS = 0x876c
+ ETHERTYPE_IPV6 = 0x86dd
+ ETHERTYPE_IPX = 0x8137
+ ETHERTYPE_IPXNEW = 0x8037
+ ETHERTYPE_KALPANA = 0x8582
+ ETHERTYPE_LANBRIDGE = 0x8038
+ ETHERTYPE_LANPROBE = 0x8888
+ ETHERTYPE_LAT = 0x6004
+ ETHERTYPE_LBACK = 0x9000
+ ETHERTYPE_LITTLE = 0x8060
+ ETHERTYPE_LOGICRAFT = 0x8148
+ ETHERTYPE_LOOPBACK = 0x9000
+ ETHERTYPE_MATRA = 0x807a
+ ETHERTYPE_MAX = 0xffff
+ ETHERTYPE_MERIT = 0x807c
+ ETHERTYPE_MICP = 0x873a
+ ETHERTYPE_MOPDL = 0x6001
+ ETHERTYPE_MOPRC = 0x6002
+ ETHERTYPE_MOTOROLA = 0x818d
+ ETHERTYPE_MPLS = 0x8847
+ ETHERTYPE_MPLS_MCAST = 0x8848
+ ETHERTYPE_MUMPS = 0x813f
+ ETHERTYPE_NBPCC = 0x3c04
+ ETHERTYPE_NBPCLAIM = 0x3c09
+ ETHERTYPE_NBPCLREQ = 0x3c05
+ ETHERTYPE_NBPCLRSP = 0x3c06
+ ETHERTYPE_NBPCREQ = 0x3c02
+ ETHERTYPE_NBPCRSP = 0x3c03
+ ETHERTYPE_NBPDG = 0x3c07
+ ETHERTYPE_NBPDGB = 0x3c08
+ ETHERTYPE_NBPDLTE = 0x3c0a
+ ETHERTYPE_NBPRAR = 0x3c0c
+ ETHERTYPE_NBPRAS = 0x3c0b
+ ETHERTYPE_NBPRST = 0x3c0d
+ ETHERTYPE_NBPSCD = 0x3c01
+ ETHERTYPE_NBPVCD = 0x3c00
+ ETHERTYPE_NBS = 0x802
+ ETHERTYPE_NCD = 0x8149
+ ETHERTYPE_NESTAR = 0x8006
+ ETHERTYPE_NETBEUI = 0x8191
+ ETHERTYPE_NOVELL = 0x8138
+ ETHERTYPE_NS = 0x600
+ ETHERTYPE_NSAT = 0x601
+ ETHERTYPE_NSCOMPAT = 0x807
+ ETHERTYPE_NTRAILER = 0x10
+ ETHERTYPE_OS9 = 0x7007
+ ETHERTYPE_OS9NET = 0x7009
+ ETHERTYPE_PACER = 0x80c6
+ ETHERTYPE_PAE = 0x888e
+ ETHERTYPE_PCS = 0x4242
+ ETHERTYPE_PLANNING = 0x8044
+ ETHERTYPE_PPP = 0x880b
+ ETHERTYPE_PPPOE = 0x8864
+ ETHERTYPE_PPPOEDISC = 0x8863
+ ETHERTYPE_PRIMENTS = 0x7031
+ ETHERTYPE_PUP = 0x200
+ ETHERTYPE_PUPAT = 0x200
+ ETHERTYPE_RACAL = 0x7030
+ ETHERTYPE_RATIONAL = 0x8150
+ ETHERTYPE_RAWFR = 0x6559
+ ETHERTYPE_RCL = 0x1995
+ ETHERTYPE_RDP = 0x8739
+ ETHERTYPE_RETIX = 0x80f2
+ ETHERTYPE_REVARP = 0x8035
+ ETHERTYPE_SCA = 0x6007
+ ETHERTYPE_SECTRA = 0x86db
+ ETHERTYPE_SECUREDATA = 0x876d
+ ETHERTYPE_SGITW = 0x817e
+ ETHERTYPE_SG_BOUNCE = 0x8016
+ ETHERTYPE_SG_DIAG = 0x8013
+ ETHERTYPE_SG_NETGAMES = 0x8014
+ ETHERTYPE_SG_RESV = 0x8015
+ ETHERTYPE_SIMNET = 0x5208
+ ETHERTYPE_SLOWPROTOCOLS = 0x8809
+ ETHERTYPE_SNA = 0x80d5
+ ETHERTYPE_SNMP = 0x814c
+ ETHERTYPE_SONIX = 0xfaf5
+ ETHERTYPE_SPIDER = 0x809f
+ ETHERTYPE_SPRITE = 0x500
+ ETHERTYPE_STP = 0x8181
+ ETHERTYPE_TALARIS = 0x812b
+ ETHERTYPE_TALARISMC = 0x852b
+ ETHERTYPE_TCPCOMP = 0x876b
+ ETHERTYPE_TCPSM = 0x9002
+ ETHERTYPE_TEC = 0x814f
+ ETHERTYPE_TIGAN = 0x802f
+ ETHERTYPE_TRAIL = 0x1000
+ ETHERTYPE_TRANSETHER = 0x6558
+ ETHERTYPE_TYMSHARE = 0x802e
+ ETHERTYPE_UBBST = 0x7005
+ ETHERTYPE_UBDEBUG = 0x900
+ ETHERTYPE_UBDIAGLOOP = 0x7002
+ ETHERTYPE_UBDL = 0x7000
+ ETHERTYPE_UBNIU = 0x7001
+ ETHERTYPE_UBNMC = 0x7003
+ ETHERTYPE_VALID = 0x1600
+ ETHERTYPE_VARIAN = 0x80dd
+ ETHERTYPE_VAXELN = 0x803b
+ ETHERTYPE_VEECO = 0x8067
+ ETHERTYPE_VEXP = 0x805b
+ ETHERTYPE_VGLAB = 0x8131
+ ETHERTYPE_VINES = 0xbad
+ ETHERTYPE_VINESECHO = 0xbaf
+ ETHERTYPE_VINESLOOP = 0xbae
+ ETHERTYPE_VITAL = 0xff00
+ ETHERTYPE_VLAN = 0x8100
+ ETHERTYPE_VLTLMAN = 0x8080
+ ETHERTYPE_VPROD = 0x805c
+ ETHERTYPE_VURESERVED = 0x8147
+ ETHERTYPE_WATERLOO = 0x8130
+ ETHERTYPE_WELLFLEET = 0x8103
+ ETHERTYPE_X25 = 0x805
+ ETHERTYPE_X75 = 0x801
+ ETHERTYPE_XNSSM = 0x9001
+ ETHERTYPE_XTP = 0x817d
+ ETHER_ADDR_LEN = 0x6
+ ETHER_CRC_LEN = 0x4
+ ETHER_CRC_POLY_BE = 0x4c11db6
+ ETHER_CRC_POLY_LE = 0xedb88320
+ ETHER_HDR_LEN = 0xe
+ ETHER_MAX_LEN = 0x5ee
+ ETHER_MAX_LEN_JUMBO = 0x233a
+ ETHER_MIN_LEN = 0x40
+ ETHER_PPPOE_ENCAP_LEN = 0x8
+ ETHER_TYPE_LEN = 0x2
+ ETHER_VLAN_ENCAP_LEN = 0x4
+ EVFILT_AIO = 0x2
+ EVFILT_PROC = 0x4
+ EVFILT_READ = 0x0
+ EVFILT_SIGNAL = 0x5
+ EVFILT_SYSCOUNT = 0x7
+ EVFILT_TIMER = 0x6
+ EVFILT_VNODE = 0x3
+ EVFILT_WRITE = 0x1
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x100
+ FLUSHO = 0x800000
+ F_CLOSEM = 0xa
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0xc
+ F_FSCTL = -0x80000000
+ F_FSDIRMASK = 0x70000000
+ F_FSIN = 0x10000000
+ F_FSINOUT = 0x30000000
+ F_FSOUT = 0x20000000
+ F_FSPRIV = 0x8000
+ F_FSVOID = 0x40000000
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETNOSIGPIPE = 0xd
+ F_GETOWN = 0x5
+ F_MAXFD = 0xb
+ F_OK = 0x0
+ F_PARAM_MASK = 0xfff
+ F_PARAM_MAX = 0xfff
+ F_RDLCK = 0x1
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETNOSIGPIPE = 0xe
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFA_ROUTE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x8f52
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf8
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ECONET = 0xce
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf2
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LINEGROUP = 0xd2
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf5
+ IFT_PFSYNC = 0xf6
+ IFT_PLC = 0xae
+ IFT_PON155 = 0xcf
+ IFT_PON622 = 0xd0
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPATM = 0xc5
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf1
+ IFT_Q2931 = 0xc9
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SIPSIG = 0xcc
+ IFT_SIPTG = 0xcb
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_STF = 0xd7
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TELINK = 0xc8
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VIRTUALTG = 0xca
+ IFT_VOICEDID = 0xd5
+ IFT_VOICEEM = 0x64
+ IFT_VOICEEMFGD = 0xd3
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFGDEANA = 0xd4
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERCABLE = 0xc6
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IPPROTO_AH = 0x33
+ IPPROTO_CARP = 0x70
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_IPV6_ICMP = 0x3a
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x34
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPPROTO_VRRP = 0x70
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPSEC_POLICY = 0x1c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_PATHMTU = 0x2c
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_EF = 0x8000
+ IP_ERRORMTU = 0x15
+ IP_HDRINCL = 0x2
+ IP_IPSEC_POLICY = 0x16
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0x14
+ IP_MF = 0x2000
+ IP_MINFRAGSIZE = 0x45
+ IP_MINTTL = 0x18
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x1
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x14
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVTTL = 0x17
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x6
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_SPACEAVAIL = 0x5
+ MADV_WILLNEED = 0x3
+ MAP_ALIGNMENT_16MB = 0x18000000
+ MAP_ALIGNMENT_1TB = 0x28000000
+ MAP_ALIGNMENT_256TB = 0x30000000
+ MAP_ALIGNMENT_4GB = 0x20000000
+ MAP_ALIGNMENT_64KB = 0x10000000
+ MAP_ALIGNMENT_64PB = 0x38000000
+ MAP_ALIGNMENT_MASK = -0x1000000
+ MAP_ALIGNMENT_SHIFT = 0x18
+ MAP_ANON = 0x1000
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_HASSEMAPHORE = 0x200
+ MAP_INHERIT = 0x80
+ MAP_INHERIT_COPY = 0x1
+ MAP_INHERIT_DEFAULT = 0x1
+ MAP_INHERIT_DONATE_COPY = 0x3
+ MAP_INHERIT_NONE = 0x2
+ MAP_INHERIT_SHARE = 0x0
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_SHARED = 0x1
+ MAP_STACK = 0x2000
+ MAP_TRYFIXED = 0x400
+ MAP_WIRED = 0x800
+ MSG_BCAST = 0x100
+ MSG_CMSG_CLOEXEC = 0x800
+ MSG_CONTROLMBUF = 0x2000000
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOR = 0x8
+ MSG_IOVUSRSPACE = 0x4000000
+ MSG_LENUSRSPACE = 0x8000000
+ MSG_MCAST = 0x200
+ MSG_NAMEMBUF = 0x1000000
+ MSG_NBIO = 0x1000
+ MSG_NOSIGNAL = 0x400
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_USERFLAGS = 0xffffff
+ MSG_WAITALL = 0x40
+ NAME_MAX = 0x1ff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x5
+ NET_RT_MAXID = 0x6
+ NET_RT_OIFLIST = 0x4
+ NET_RT_OOIFLIST = 0x3
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ OFIOGETBMAP = 0xc004667a
+ ONLCR = 0x2
+ ONLRET = 0x40
+ ONOCR = 0x20
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_ALT_IO = 0x40000
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x400000
+ O_CREAT = 0x200
+ O_DIRECT = 0x80000
+ O_DIRECTORY = 0x200000
+ O_DSYNC = 0x10000
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_NOSIGPIPE = 0x1000000
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x20000
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PRI_IOFLUSH = 0x7c
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ RLIMIT_AS = 0xa
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x9
+ RTAX_NETMASK = 0x2
+ RTAX_TAG = 0x8
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTA_TAG = 0x100
+ RTF_ANNOUNCE = 0x20000
+ RTF_BLACKHOLE = 0x1000
+ RTF_CLONED = 0x2000
+ RTF_CLONING = 0x100
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_LLINFO = 0x400
+ RTF_MASK = 0x80
+ RTF_MODIFIED = 0x20
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_REJECT = 0x8
+ RTF_SRC = 0x10000
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_CHGADDR = 0x15
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_GET = 0x4
+ RTM_IEEE80211 = 0x11
+ RTM_IFANNOUNCE = 0x10
+ RTM_IFINFO = 0x14
+ RTM_LLINFO_UPD = 0x13
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_OIFINFO = 0xf
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_OOIFINFO = 0xe
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_SETGATE = 0x12
+ RTM_VERSION = 0x4
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_CREDS = 0x4
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x8
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80906931
+ SIOCADDRT = 0x8030720a
+ SIOCAIFADDR = 0x8040691a
+ SIOCALIFADDR = 0x8118691c
+ SIOCATMARK = 0x40047307
+ SIOCDELMULTI = 0x80906932
+ SIOCDELRT = 0x8030720b
+ SIOCDIFADDR = 0x80906919
+ SIOCDIFPHYADDR = 0x80906949
+ SIOCDLIFADDR = 0x8118691e
+ SIOCGDRVSPEC = 0xc01c697b
+ SIOCGETPFSYNC = 0xc09069f8
+ SIOCGETSGCNT = 0xc0147534
+ SIOCGETVIFCNT = 0xc0147533
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0906921
+ SIOCGIFADDRPREF = 0xc0946920
+ SIOCGIFALIAS = 0xc040691b
+ SIOCGIFBRDADDR = 0xc0906923
+ SIOCGIFCAP = 0xc0206976
+ SIOCGIFCONF = 0xc0086926
+ SIOCGIFDATA = 0xc0946985
+ SIOCGIFDLT = 0xc0906977
+ SIOCGIFDSTADDR = 0xc0906922
+ SIOCGIFFLAGS = 0xc0906911
+ SIOCGIFGENERIC = 0xc090693a
+ SIOCGIFMEDIA = 0xc0286936
+ SIOCGIFMETRIC = 0xc0906917
+ SIOCGIFMTU = 0xc090697e
+ SIOCGIFNETMASK = 0xc0906925
+ SIOCGIFPDSTADDR = 0xc0906948
+ SIOCGIFPSRCADDR = 0xc0906947
+ SIOCGLIFADDR = 0xc118691d
+ SIOCGLIFPHYADDR = 0xc118694b
+ SIOCGLINKSTR = 0xc01c6987
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGVH = 0xc0906983
+ SIOCIFCREATE = 0x8090697a
+ SIOCIFDESTROY = 0x80906979
+ SIOCIFGCLONERS = 0xc00c6978
+ SIOCINITIFADDR = 0xc0446984
+ SIOCSDRVSPEC = 0x801c697b
+ SIOCSETPFSYNC = 0x809069f7
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8090690c
+ SIOCSIFADDRPREF = 0x8094691f
+ SIOCSIFBRDADDR = 0x80906913
+ SIOCSIFCAP = 0x80206975
+ SIOCSIFDSTADDR = 0x8090690e
+ SIOCSIFFLAGS = 0x80906910
+ SIOCSIFGENERIC = 0x80906939
+ SIOCSIFMEDIA = 0xc0906935
+ SIOCSIFMETRIC = 0x80906918
+ SIOCSIFMTU = 0x8090697f
+ SIOCSIFNETMASK = 0x80906916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSLIFPHYADDR = 0x8118694a
+ SIOCSLINKSTR = 0x801c6988
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SIOCSVH = 0xc0906982
+ SIOCZIFDATA = 0xc0946986
+ SOCK_CLOEXEC = 0x10000000
+ SOCK_DGRAM = 0x2
+ SOCK_FLAGS_MASK = 0xf0000000
+ SOCK_NONBLOCK = 0x20000000
+ SOCK_NOSIGPIPE = 0x40000000
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ACCEPTFILTER = 0x1000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_NOHEADER = 0x100a
+ SO_NOSIGPIPE = 0x800
+ SO_OOBINLINE = 0x100
+ SO_OVERFLOWED = 0x1009
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x100c
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x100b
+ SO_TIMESTAMP = 0x2000
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ SYSCTL_VERSION = 0x1000000
+ SYSCTL_VERS_0 = 0x0
+ SYSCTL_VERS_1 = 0x1000000
+ SYSCTL_VERS_MASK = 0xff000000
+ S_ARCH1 = 0x10000
+ S_ARCH2 = 0x20000
+ S_BLKSIZE = 0x200
+ S_IEXEC = 0x40
+ S_IFBLK = 0x6000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFIFO = 0x1000
+ S_IFLNK = 0xa000
+ S_IFMT = 0xf000
+ S_IFREG = 0x8000
+ S_IFSOCK = 0xc000
+ S_IFWHT = 0xe000
+ S_IREAD = 0x100
+ S_IRGRP = 0x20
+ S_IROTH = 0x4
+ S_IRUSR = 0x100
+ S_IRWXG = 0x38
+ S_IRWXO = 0x7
+ S_IRWXU = 0x1c0
+ S_ISGID = 0x400
+ S_ISTXT = 0x200
+ S_ISUID = 0x800
+ S_ISVTX = 0x200
+ S_IWGRP = 0x10
+ S_IWOTH = 0x2
+ S_IWRITE = 0x80
+ S_IWUSR = 0x80
+ S_IXGRP = 0x8
+ S_IXOTH = 0x1
+ S_IXUSR = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_CONGCTL = 0x20
+ TCP_KEEPCNT = 0x6
+ TCP_KEEPIDLE = 0x3
+ TCP_KEEPINIT = 0x7
+ TCP_KEEPINTVL = 0x5
+ TCP_MAXBURST = 0x4
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x10
+ TCP_MINMSS = 0xd8
+ TCP_MSS = 0x218
+ TCP_NODELAY = 0x1
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDCDTIMESTAMP = 0x400c7458
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLAG_CDTRCTS = 0x10
+ TIOCFLAG_CLOCAL = 0x2
+ TIOCFLAG_CRTSCTS = 0x4
+ TIOCFLAG_MDMBUF = 0x8
+ TIOCFLAG_SOFTCAR = 0x1
+ TIOCFLUSH = 0x80047410
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGFLAGS = 0x4004745d
+ TIOCGLINED = 0x40207442
+ TIOCGPGRP = 0x40047477
+ TIOCGQSIZE = 0x40047481
+ TIOCGRANTPT = 0x20007447
+ TIOCGSID = 0x40047463
+ TIOCGSIZE = 0x40087468
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGET = 0x4004746a
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCPTMGET = 0x48087446
+ TIOCPTSNAME = 0x48087448
+ TIOCRCVFRAME = 0x80047445
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSFLAGS = 0x8004745c
+ TIOCSIG = 0x2000745f
+ TIOCSLINED = 0x80207443
+ TIOCSPGRP = 0x80047476
+ TIOCSQSIZE = 0x80047480
+ TIOCSSIZE = 0x80087467
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x80047465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSWINSZ = 0x80087467
+ TIOCUCNTL = 0x80047466
+ TIOCXMTFRAME = 0x80047444
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WALL = 0x8
+ WALLSIG = 0x8
+ WALTSIG = 0x4
+ WCLONE = 0x4
+ WCOREFLAG = 0x80
+ WNOHANG = 0x1
+ WNOWAIT = 0x10000
+ WNOZOMBIE = 0x20000
+ WOPTSCHECKED = 0x40000
+ WSTOPPED = 0x7f
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADMSG = syscall.Errno(0x58)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x57)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x52)
+ EILSEQ = syscall.Errno(0x55)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x60)
+ ELOOP = syscall.Errno(0x3e)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ EMULTIHOP = syscall.Errno(0x5e)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x5d)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODATA = syscall.Errno(0x59)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOLINK = syscall.Errno(0x5f)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x53)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x5a)
+ ENOSTR = syscall.Errno(0x5b)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x56)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x54)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTO = syscall.Errno(0x60)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIME = syscall.Errno(0x5c)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGPWR = syscall.Signal(0x20)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large or too small",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol option not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "connection timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "identifier removed",
+ 83: "no message of desired type",
+ 84: "value too large to be stored in data type",
+ 85: "illegal byte sequence",
+ 86: "not supported",
+ 87: "operation Canceled",
+ 88: "bad or Corrupt message",
+ 89: "no message available",
+ 90: "no STREAM resources",
+ 91: "not a STREAM",
+ 92: "STREAM ioctl timeout",
+ 93: "attribute not found",
+ 94: "multihop attempted",
+ 95: "link has been severed",
+ 96: "protocol error",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "stopped (signal)",
+ 18: "stopped",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "power fail/restart",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_openbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_openbsd_386.go
new file mode 100644
index 000000000..3322e998d
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_openbsd_386.go
@@ -0,0 +1,1584 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,openbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_BLUETOOTH = 0x20
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_ENCAP = 0x1c
+ AF_HYLINK = 0xf
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x18
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_KEY = 0x1e
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x24
+ AF_MPLS = 0x21
+ AF_NATM = 0x1b
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x11
+ AF_SIP = 0x1d
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ ARPHRD_ETHER = 0x1
+ ARPHRD_FRELAY = 0xf
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDIRFILT = 0x4004427c
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc008427b
+ BIOCGETIF = 0x4020426b
+ BIOCGFILDROP = 0x40044278
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044273
+ BIOCGRTIMEOUT = 0x400c426e
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCLOCK = 0x20004276
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDIRFILT = 0x8004427d
+ BIOCSDLT = 0x8004427a
+ BIOCSETF = 0x80084267
+ BIOCSETIF = 0x8020426c
+ BIOCSETWF = 0x80084277
+ BIOCSFILDROP = 0x80044279
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044272
+ BIOCSRTIMEOUT = 0x800c426d
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIRECTION_IN = 0x1
+ BPF_DIRECTION_OUT = 0x2
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x200000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0xff
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DIOCOSFPFLUSH = 0x2000444e
+ DLT_ARCNET = 0x7
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AX25 = 0x3
+ DLT_CHAOS = 0x5
+ DLT_C_HDLC = 0x68
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0xd
+ DLT_FDDI = 0xa
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_LOOP = 0xc
+ DLT_MPLS = 0xdb
+ DLT_NULL = 0x0
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_SERIAL = 0x32
+ DLT_PRONET = 0x4
+ DLT_RAW = 0xe
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EMT_TAGOVF = 0x1
+ EMUL_ENABLED = 0x1
+ EMUL_NATIVE = 0x2
+ ENDRUNDISC = 0x9
+ ETHERMIN = 0x2e
+ ETHERMTU = 0x5dc
+ ETHERTYPE_8023 = 0x4
+ ETHERTYPE_AARP = 0x80f3
+ ETHERTYPE_ACCTON = 0x8390
+ ETHERTYPE_AEONIC = 0x8036
+ ETHERTYPE_ALPHA = 0x814a
+ ETHERTYPE_AMBER = 0x6008
+ ETHERTYPE_AMOEBA = 0x8145
+ ETHERTYPE_AOE = 0x88a2
+ ETHERTYPE_APOLLO = 0x80f7
+ ETHERTYPE_APOLLODOMAIN = 0x8019
+ ETHERTYPE_APPLETALK = 0x809b
+ ETHERTYPE_APPLITEK = 0x80c7
+ ETHERTYPE_ARGONAUT = 0x803a
+ ETHERTYPE_ARP = 0x806
+ ETHERTYPE_AT = 0x809b
+ ETHERTYPE_ATALK = 0x809b
+ ETHERTYPE_ATOMIC = 0x86df
+ ETHERTYPE_ATT = 0x8069
+ ETHERTYPE_ATTSTANFORD = 0x8008
+ ETHERTYPE_AUTOPHON = 0x806a
+ ETHERTYPE_AXIS = 0x8856
+ ETHERTYPE_BCLOOP = 0x9003
+ ETHERTYPE_BOFL = 0x8102
+ ETHERTYPE_CABLETRON = 0x7034
+ ETHERTYPE_CHAOS = 0x804
+ ETHERTYPE_COMDESIGN = 0x806c
+ ETHERTYPE_COMPUGRAPHIC = 0x806d
+ ETHERTYPE_COUNTERPOINT = 0x8062
+ ETHERTYPE_CRONUS = 0x8004
+ ETHERTYPE_CRONUSVLN = 0x8003
+ ETHERTYPE_DCA = 0x1234
+ ETHERTYPE_DDE = 0x807b
+ ETHERTYPE_DEBNI = 0xaaaa
+ ETHERTYPE_DECAM = 0x8048
+ ETHERTYPE_DECCUST = 0x6006
+ ETHERTYPE_DECDIAG = 0x6005
+ ETHERTYPE_DECDNS = 0x803c
+ ETHERTYPE_DECDTS = 0x803e
+ ETHERTYPE_DECEXPER = 0x6000
+ ETHERTYPE_DECLAST = 0x8041
+ ETHERTYPE_DECLTM = 0x803f
+ ETHERTYPE_DECMUMPS = 0x6009
+ ETHERTYPE_DECNETBIOS = 0x8040
+ ETHERTYPE_DELTACON = 0x86de
+ ETHERTYPE_DIDDLE = 0x4321
+ ETHERTYPE_DLOG1 = 0x660
+ ETHERTYPE_DLOG2 = 0x661
+ ETHERTYPE_DN = 0x6003
+ ETHERTYPE_DOGFIGHT = 0x1989
+ ETHERTYPE_DSMD = 0x8039
+ ETHERTYPE_ECMA = 0x803
+ ETHERTYPE_ENCRYPT = 0x803d
+ ETHERTYPE_ES = 0x805d
+ ETHERTYPE_EXCELAN = 0x8010
+ ETHERTYPE_EXPERDATA = 0x8049
+ ETHERTYPE_FLIP = 0x8146
+ ETHERTYPE_FLOWCONTROL = 0x8808
+ ETHERTYPE_FRARP = 0x808
+ ETHERTYPE_GENDYN = 0x8068
+ ETHERTYPE_HAYES = 0x8130
+ ETHERTYPE_HIPPI_FP = 0x8180
+ ETHERTYPE_HITACHI = 0x8820
+ ETHERTYPE_HP = 0x8005
+ ETHERTYPE_IEEEPUP = 0xa00
+ ETHERTYPE_IEEEPUPAT = 0xa01
+ ETHERTYPE_IMLBL = 0x4c42
+ ETHERTYPE_IMLBLDIAG = 0x424c
+ ETHERTYPE_IP = 0x800
+ ETHERTYPE_IPAS = 0x876c
+ ETHERTYPE_IPV6 = 0x86dd
+ ETHERTYPE_IPX = 0x8137
+ ETHERTYPE_IPXNEW = 0x8037
+ ETHERTYPE_KALPANA = 0x8582
+ ETHERTYPE_LANBRIDGE = 0x8038
+ ETHERTYPE_LANPROBE = 0x8888
+ ETHERTYPE_LAT = 0x6004
+ ETHERTYPE_LBACK = 0x9000
+ ETHERTYPE_LITTLE = 0x8060
+ ETHERTYPE_LLDP = 0x88cc
+ ETHERTYPE_LOGICRAFT = 0x8148
+ ETHERTYPE_LOOPBACK = 0x9000
+ ETHERTYPE_MATRA = 0x807a
+ ETHERTYPE_MAX = 0xffff
+ ETHERTYPE_MERIT = 0x807c
+ ETHERTYPE_MICP = 0x873a
+ ETHERTYPE_MOPDL = 0x6001
+ ETHERTYPE_MOPRC = 0x6002
+ ETHERTYPE_MOTOROLA = 0x818d
+ ETHERTYPE_MPLS = 0x8847
+ ETHERTYPE_MPLS_MCAST = 0x8848
+ ETHERTYPE_MUMPS = 0x813f
+ ETHERTYPE_NBPCC = 0x3c04
+ ETHERTYPE_NBPCLAIM = 0x3c09
+ ETHERTYPE_NBPCLREQ = 0x3c05
+ ETHERTYPE_NBPCLRSP = 0x3c06
+ ETHERTYPE_NBPCREQ = 0x3c02
+ ETHERTYPE_NBPCRSP = 0x3c03
+ ETHERTYPE_NBPDG = 0x3c07
+ ETHERTYPE_NBPDGB = 0x3c08
+ ETHERTYPE_NBPDLTE = 0x3c0a
+ ETHERTYPE_NBPRAR = 0x3c0c
+ ETHERTYPE_NBPRAS = 0x3c0b
+ ETHERTYPE_NBPRST = 0x3c0d
+ ETHERTYPE_NBPSCD = 0x3c01
+ ETHERTYPE_NBPVCD = 0x3c00
+ ETHERTYPE_NBS = 0x802
+ ETHERTYPE_NCD = 0x8149
+ ETHERTYPE_NESTAR = 0x8006
+ ETHERTYPE_NETBEUI = 0x8191
+ ETHERTYPE_NOVELL = 0x8138
+ ETHERTYPE_NS = 0x600
+ ETHERTYPE_NSAT = 0x601
+ ETHERTYPE_NSCOMPAT = 0x807
+ ETHERTYPE_NTRAILER = 0x10
+ ETHERTYPE_OS9 = 0x7007
+ ETHERTYPE_OS9NET = 0x7009
+ ETHERTYPE_PACER = 0x80c6
+ ETHERTYPE_PAE = 0x888e
+ ETHERTYPE_PCS = 0x4242
+ ETHERTYPE_PLANNING = 0x8044
+ ETHERTYPE_PPP = 0x880b
+ ETHERTYPE_PPPOE = 0x8864
+ ETHERTYPE_PPPOEDISC = 0x8863
+ ETHERTYPE_PRIMENTS = 0x7031
+ ETHERTYPE_PUP = 0x200
+ ETHERTYPE_PUPAT = 0x200
+ ETHERTYPE_QINQ = 0x88a8
+ ETHERTYPE_RACAL = 0x7030
+ ETHERTYPE_RATIONAL = 0x8150
+ ETHERTYPE_RAWFR = 0x6559
+ ETHERTYPE_RCL = 0x1995
+ ETHERTYPE_RDP = 0x8739
+ ETHERTYPE_RETIX = 0x80f2
+ ETHERTYPE_REVARP = 0x8035
+ ETHERTYPE_SCA = 0x6007
+ ETHERTYPE_SECTRA = 0x86db
+ ETHERTYPE_SECUREDATA = 0x876d
+ ETHERTYPE_SGITW = 0x817e
+ ETHERTYPE_SG_BOUNCE = 0x8016
+ ETHERTYPE_SG_DIAG = 0x8013
+ ETHERTYPE_SG_NETGAMES = 0x8014
+ ETHERTYPE_SG_RESV = 0x8015
+ ETHERTYPE_SIMNET = 0x5208
+ ETHERTYPE_SLOW = 0x8809
+ ETHERTYPE_SNA = 0x80d5
+ ETHERTYPE_SNMP = 0x814c
+ ETHERTYPE_SONIX = 0xfaf5
+ ETHERTYPE_SPIDER = 0x809f
+ ETHERTYPE_SPRITE = 0x500
+ ETHERTYPE_STP = 0x8181
+ ETHERTYPE_TALARIS = 0x812b
+ ETHERTYPE_TALARISMC = 0x852b
+ ETHERTYPE_TCPCOMP = 0x876b
+ ETHERTYPE_TCPSM = 0x9002
+ ETHERTYPE_TEC = 0x814f
+ ETHERTYPE_TIGAN = 0x802f
+ ETHERTYPE_TRAIL = 0x1000
+ ETHERTYPE_TRANSETHER = 0x6558
+ ETHERTYPE_TYMSHARE = 0x802e
+ ETHERTYPE_UBBST = 0x7005
+ ETHERTYPE_UBDEBUG = 0x900
+ ETHERTYPE_UBDIAGLOOP = 0x7002
+ ETHERTYPE_UBDL = 0x7000
+ ETHERTYPE_UBNIU = 0x7001
+ ETHERTYPE_UBNMC = 0x7003
+ ETHERTYPE_VALID = 0x1600
+ ETHERTYPE_VARIAN = 0x80dd
+ ETHERTYPE_VAXELN = 0x803b
+ ETHERTYPE_VEECO = 0x8067
+ ETHERTYPE_VEXP = 0x805b
+ ETHERTYPE_VGLAB = 0x8131
+ ETHERTYPE_VINES = 0xbad
+ ETHERTYPE_VINESECHO = 0xbaf
+ ETHERTYPE_VINESLOOP = 0xbae
+ ETHERTYPE_VITAL = 0xff00
+ ETHERTYPE_VLAN = 0x8100
+ ETHERTYPE_VLTLMAN = 0x8080
+ ETHERTYPE_VPROD = 0x805c
+ ETHERTYPE_VURESERVED = 0x8147
+ ETHERTYPE_WATERLOO = 0x8130
+ ETHERTYPE_WELLFLEET = 0x8103
+ ETHERTYPE_X25 = 0x805
+ ETHERTYPE_X75 = 0x801
+ ETHERTYPE_XNSSM = 0x9001
+ ETHERTYPE_XTP = 0x817d
+ ETHER_ADDR_LEN = 0x6
+ ETHER_ALIGN = 0x2
+ ETHER_CRC_LEN = 0x4
+ ETHER_CRC_POLY_BE = 0x4c11db6
+ ETHER_CRC_POLY_LE = 0xedb88320
+ ETHER_HDR_LEN = 0xe
+ ETHER_MAX_DIX_LEN = 0x600
+ ETHER_MAX_LEN = 0x5ee
+ ETHER_MIN_LEN = 0x40
+ ETHER_TYPE_LEN = 0x2
+ ETHER_VLAN_ENCAP_LEN = 0x4
+ EVFILT_AIO = -0x3
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0x7
+ EVFILT_TIMER = -0x7
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0xa
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETOWN = 0x5
+ F_OK = 0x0
+ F_RDLCK = 0x1
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFA_ROUTE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x8e52
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BLUETOOTH = 0xf8
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf7
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DUMMY = 0xf1
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ECONET = 0xce
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf3
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LINEGROUP = 0xd2
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf5
+ IFT_PFLOW = 0xf9
+ IFT_PFSYNC = 0xf6
+ IFT_PLC = 0xae
+ IFT_PON155 = 0xcf
+ IFT_PON622 = 0xd0
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPATM = 0xc5
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf2
+ IFT_Q2931 = 0xc9
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SIPSIG = 0xcc
+ IFT_SIPTG = 0xcb
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TELINK = 0xc8
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VIRTUALTG = 0xca
+ IFT_VOICEDID = 0xd5
+ IFT_VOICEEM = 0x64
+ IFT_VOICEEMFGD = 0xd3
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFGDEANA = 0xd4
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERCABLE = 0xc6
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IN_RFC3021_HOST = 0x1
+ IN_RFC3021_NET = 0xfffffffe
+ IN_RFC3021_NSHIFT = 0x1f
+ IPPROTO_AH = 0x33
+ IPPROTO_CARP = 0x70
+ IPPROTO_DIVERT = 0x102
+ IPPROTO_DIVERT_INIT = 0x2
+ IPPROTO_DIVERT_RESP = 0x1
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x103
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_MPLS = 0x89
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPV6_AUTH_LEVEL = 0x35
+ IPV6_AUTOFLOWLABEL = 0x3b
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_ESP_NETWORK_LEVEL = 0x37
+ IPV6_ESP_TRANS_LEVEL = 0x36
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPCOMP_LEVEL = 0x3c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_OPTIONS = 0x1
+ IPV6_PATHMTU = 0x2c
+ IPV6_PIPEX = 0x3f
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVDSTPORT = 0x40
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTABLE = 0x1021
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_AUTH_LEVEL = 0x14
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DIVERTFL = 0x1022
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_ESP_NETWORK_LEVEL = 0x16
+ IP_ESP_TRANS_LEVEL = 0x15
+ IP_HDRINCL = 0x2
+ IP_IPCOMP_LEVEL = 0x1d
+ IP_IPSECFLOWINFO = 0x24
+ IP_IPSEC_LOCAL_AUTH = 0x1b
+ IP_IPSEC_LOCAL_CRED = 0x19
+ IP_IPSEC_LOCAL_ID = 0x17
+ IP_IPSEC_REMOTE_AUTH = 0x1c
+ IP_IPSEC_REMOTE_CRED = 0x1a
+ IP_IPSEC_REMOTE_ID = 0x18
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MF = 0x2000
+ IP_MINTTL = 0x20
+ IP_MIN_MEMBERSHIPS = 0xf
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x1
+ IP_PIPEX = 0x22
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVDSTPORT = 0x21
+ IP_RECVIF = 0x1e
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVRTABLE = 0x23
+ IP_RECVTTL = 0x1f
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RTABLE = 0x1021
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LCNT_OVERLOAD_FLUSH = 0x6
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x6
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_SPACEAVAIL = 0x5
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x1000
+ MAP_COPY = 0x4
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_FLAGMASK = 0x1ff7
+ MAP_HASSEMAPHORE = 0x200
+ MAP_INHERIT = 0x80
+ MAP_INHERIT_COPY = 0x1
+ MAP_INHERIT_DONATE_COPY = 0x3
+ MAP_INHERIT_NONE = 0x2
+ MAP_INHERIT_SHARE = 0x0
+ MAP_NOEXTEND = 0x100
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_SHARED = 0x1
+ MAP_TRYFIXED = 0x400
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_BCAST = 0x100
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOR = 0x8
+ MSG_MCAST = 0x200
+ MSG_NOSIGNAL = 0x400
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x4
+ MS_SYNC = 0x2
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_MAXID = 0x6
+ NET_RT_STATS = 0x4
+ NET_RT_TABLE = 0x5
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EOF = 0x2
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRUNCATE = 0x80
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ ONLCR = 0x2
+ ONLRET = 0x80
+ ONOCR = 0x40
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x10000
+ O_CREAT = 0x200
+ O_DIRECTORY = 0x20000
+ O_DSYNC = 0x80
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x80
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PF_FLUSH = 0x1
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ PT_MASK = 0x3ff000
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_LABEL = 0xa
+ RTAX_MAX = 0xb
+ RTAX_NETMASK = 0x2
+ RTAX_SRC = 0x8
+ RTAX_SRCMASK = 0x9
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_LABEL = 0x400
+ RTA_NETMASK = 0x4
+ RTA_SRC = 0x100
+ RTA_SRCMASK = 0x200
+ RTF_ANNOUNCE = 0x4000
+ RTF_BLACKHOLE = 0x1000
+ RTF_CLONED = 0x10000
+ RTF_CLONING = 0x100
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_FMASK = 0x10f808
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_LLINFO = 0x400
+ RTF_MASK = 0x80
+ RTF_MODIFIED = 0x20
+ RTF_MPATH = 0x40000
+ RTF_MPLS = 0x100000
+ RTF_PERMANENT_ARP = 0x2000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x2000
+ RTF_REJECT = 0x8
+ RTF_SOURCE = 0x20000
+ RTF_STATIC = 0x800
+ RTF_TUNNEL = 0x100000
+ RTF_UP = 0x1
+ RTF_USETRAILERS = 0x8000
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DESYNC = 0x10
+ RTM_GET = 0x4
+ RTM_IFANNOUNCE = 0xf
+ RTM_IFINFO = 0xe
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MAXSIZE = 0x800
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RT_TABLEID_MAX = 0xff
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x4
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCAIFADDR = 0x8040691a
+ SIOCAIFGROUP = 0x80246987
+ SIOCALIFADDR = 0x8218691c
+ SIOCATMARK = 0x40047307
+ SIOCBRDGADD = 0x8054693c
+ SIOCBRDGADDS = 0x80546941
+ SIOCBRDGARL = 0x806e694d
+ SIOCBRDGDADDR = 0x81286947
+ SIOCBRDGDEL = 0x8054693d
+ SIOCBRDGDELS = 0x80546942
+ SIOCBRDGFLUSH = 0x80546948
+ SIOCBRDGFRL = 0x806e694e
+ SIOCBRDGGCACHE = 0xc0146941
+ SIOCBRDGGFD = 0xc0146952
+ SIOCBRDGGHT = 0xc0146951
+ SIOCBRDGGIFFLGS = 0xc054693e
+ SIOCBRDGGMA = 0xc0146953
+ SIOCBRDGGPARAM = 0xc03c6958
+ SIOCBRDGGPRI = 0xc0146950
+ SIOCBRDGGRL = 0xc028694f
+ SIOCBRDGGSIFS = 0xc054693c
+ SIOCBRDGGTO = 0xc0146946
+ SIOCBRDGIFS = 0xc0546942
+ SIOCBRDGRTS = 0xc0186943
+ SIOCBRDGSADDR = 0xc1286944
+ SIOCBRDGSCACHE = 0x80146940
+ SIOCBRDGSFD = 0x80146952
+ SIOCBRDGSHT = 0x80146951
+ SIOCBRDGSIFCOST = 0x80546955
+ SIOCBRDGSIFFLGS = 0x8054693f
+ SIOCBRDGSIFPRIO = 0x80546954
+ SIOCBRDGSMA = 0x80146953
+ SIOCBRDGSPRI = 0x80146950
+ SIOCBRDGSPROTO = 0x8014695a
+ SIOCBRDGSTO = 0x80146945
+ SIOCBRDGSTXHC = 0x80146959
+ SIOCDELMULTI = 0x80206932
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFGROUP = 0x80246989
+ SIOCDIFPHYADDR = 0x80206949
+ SIOCDLIFADDR = 0x8218691e
+ SIOCGETKALIVE = 0xc01869a4
+ SIOCGETLABEL = 0x8020699a
+ SIOCGETPFLOW = 0xc02069fe
+ SIOCGETPFSYNC = 0xc02069f8
+ SIOCGETSGCNT = 0xc0147534
+ SIOCGETVIFCNT = 0xc0147533
+ SIOCGETVLAN = 0xc0206990
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFASYNCMAP = 0xc020697c
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCONF = 0xc0086924
+ SIOCGIFDATA = 0xc020691b
+ SIOCGIFDESCR = 0xc0206981
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGATTR = 0xc024698b
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFGMEMB = 0xc024698a
+ SIOCGIFGROUP = 0xc0246988
+ SIOCGIFHARDMTU = 0xc02069a5
+ SIOCGIFMEDIA = 0xc0286936
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc020697e
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206948
+ SIOCGIFPRIORITY = 0xc020699c
+ SIOCGIFPSRCADDR = 0xc0206947
+ SIOCGIFRDOMAIN = 0xc02069a0
+ SIOCGIFRTLABEL = 0xc0206983
+ SIOCGIFTIMESLOT = 0xc0206986
+ SIOCGIFXFLAGS = 0xc020699e
+ SIOCGLIFADDR = 0xc218691d
+ SIOCGLIFPHYADDR = 0xc218694b
+ SIOCGLIFPHYRTABLE = 0xc02069a2
+ SIOCGLIFPHYTTL = 0xc02069a9
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGSPPPPARAMS = 0xc0206994
+ SIOCGVH = 0xc02069f6
+ SIOCGVNETID = 0xc02069a7
+ SIOCIFCREATE = 0x8020697a
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc00c6978
+ SIOCSETKALIVE = 0x801869a3
+ SIOCSETLABEL = 0x80206999
+ SIOCSETPFLOW = 0x802069fd
+ SIOCSETPFSYNC = 0x802069f7
+ SIOCSETVLAN = 0x8020698f
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFASYNCMAP = 0x8020697d
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFDESCR = 0x80206980
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGATTR = 0x8024698c
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFLLADDR = 0x8020691f
+ SIOCSIFMEDIA = 0xc0206935
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x8020697f
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSIFPRIORITY = 0x8020699b
+ SIOCSIFRDOMAIN = 0x8020699f
+ SIOCSIFRTLABEL = 0x80206982
+ SIOCSIFTIMESLOT = 0x80206985
+ SIOCSIFXFLAGS = 0x8020699d
+ SIOCSLIFPHYADDR = 0x8218694a
+ SIOCSLIFPHYRTABLE = 0x802069a1
+ SIOCSLIFPHYTTL = 0x802069a8
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SIOCSSPPPPARAMS = 0x80206993
+ SIOCSVH = 0xc02069f5
+ SIOCSVNETID = 0x802069a6
+ SOCK_DGRAM = 0x2
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_BINDANY = 0x1000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_NETPROC = 0x1020
+ SO_OOBINLINE = 0x100
+ SO_PEERCRED = 0x1022
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_RTABLE = 0x1021
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_SPLICE = 0x1023
+ SO_TIMESTAMP = 0x800
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_MAXBURST = 0x4
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x3
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x4
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOPUSH = 0x10
+ TCP_NSTATES = 0xb
+ TCP_SACK_ENABLE = 0x8
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLAG_CLOCAL = 0x2
+ TIOCFLAG_CRTSCTS = 0x4
+ TIOCFLAG_MDMBUF = 0x8
+ TIOCFLAG_PPS = 0x10
+ TIOCFLAG_SOFTCAR = 0x1
+ TIOCFLUSH = 0x80047410
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGFLAGS = 0x4004745d
+ TIOCGPGRP = 0x40047477
+ TIOCGSID = 0x40047463
+ TIOCGTSTAMP = 0x400c745b
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x4004746a
+ TIOCMODS = 0x8004746d
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSFLAGS = 0x8004745c
+ TIOCSIG = 0x8004745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x80047465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSTSTAMP = 0x8008745a
+ TIOCSWINSZ = 0x80087467
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WALTSIG = 0x4
+ WCONTINUED = 0x8
+ WCOREFLAG = 0x80
+ WNOHANG = 0x1
+ WSTOPPED = 0x7f
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x58)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x59)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EIPSEC = syscall.Errno(0x52)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x5b)
+ ELOOP = syscall.Errno(0x3e)
+ EMEDIUMTYPE = syscall.Errno(0x56)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x53)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOMEDIUM = syscall.Errno(0x55)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x5a)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x5b)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x57)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHR = syscall.Signal(0x20)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "connection timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "IPsec processing failure",
+ 83: "attribute not found",
+ 84: "illegal byte sequence",
+ 85: "no medium found",
+ 86: "wrong medium type",
+ 87: "value too large to be stored in data type",
+ 88: "operation canceled",
+ 89: "identifier removed",
+ 90: "no message of desired type",
+ 91: "not supported",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "stopped (signal)",
+ 18: "stopped",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "thread AST",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
new file mode 100644
index 000000000..1758ecca9
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
@@ -0,0 +1,1583 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,openbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_APPLETALK = 0x10
+ AF_BLUETOOTH = 0x20
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_CNT = 0x15
+ AF_COIP = 0x14
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_E164 = 0x1a
+ AF_ECMA = 0x8
+ AF_ENCAP = 0x1c
+ AF_HYLINK = 0xf
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x18
+ AF_IPX = 0x17
+ AF_ISDN = 0x1a
+ AF_ISO = 0x7
+ AF_KEY = 0x1e
+ AF_LAT = 0xe
+ AF_LINK = 0x12
+ AF_LOCAL = 0x1
+ AF_MAX = 0x24
+ AF_MPLS = 0x21
+ AF_NATM = 0x1b
+ AF_NS = 0x6
+ AF_OSI = 0x7
+ AF_PUP = 0x4
+ AF_ROUTE = 0x11
+ AF_SIP = 0x1d
+ AF_SNA = 0xb
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ ARPHRD_ETHER = 0x1
+ ARPHRD_FRELAY = 0xf
+ ARPHRD_IEEE1394 = 0x18
+ ARPHRD_IEEE802 = 0x6
+ B0 = 0x0
+ B110 = 0x6e
+ B115200 = 0x1c200
+ B1200 = 0x4b0
+ B134 = 0x86
+ B14400 = 0x3840
+ B150 = 0x96
+ B1800 = 0x708
+ B19200 = 0x4b00
+ B200 = 0xc8
+ B230400 = 0x38400
+ B2400 = 0x960
+ B28800 = 0x7080
+ B300 = 0x12c
+ B38400 = 0x9600
+ B4800 = 0x12c0
+ B50 = 0x32
+ B57600 = 0xe100
+ B600 = 0x258
+ B7200 = 0x1c20
+ B75 = 0x4b
+ B76800 = 0x12c00
+ B9600 = 0x2580
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDIRFILT = 0x4004427c
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = 0xc010427b
+ BIOCGETIF = 0x4020426b
+ BIOCGFILDROP = 0x40044278
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRSIG = 0x40044273
+ BIOCGRTIMEOUT = 0x4010426e
+ BIOCGSTATS = 0x4008426f
+ BIOCIMMEDIATE = 0x80044270
+ BIOCLOCK = 0x20004276
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = 0xc0044266
+ BIOCSDIRFILT = 0x8004427d
+ BIOCSDLT = 0x8004427a
+ BIOCSETF = 0x80104267
+ BIOCSETIF = 0x8020426c
+ BIOCSETWF = 0x80104277
+ BIOCSFILDROP = 0x80044279
+ BIOCSHDRCMPLT = 0x80044275
+ BIOCSRSIG = 0x80044272
+ BIOCSRTIMEOUT = 0x8010426d
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DIRECTION_IN = 0x1
+ BPF_DIRECTION_OUT = 0x2
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x200000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x8000
+ CREAD = 0x800
+ CS5 = 0x0
+ CS6 = 0x100
+ CS7 = 0x200
+ CS8 = 0x300
+ CSIZE = 0x300
+ CSTART = 0x11
+ CSTATUS = 0xff
+ CSTOP = 0x13
+ CSTOPB = 0x400
+ CSUSP = 0x1a
+ CTL_MAXNAME = 0xc
+ CTL_NET = 0x4
+ DIOCOSFPFLUSH = 0x2000444e
+ DLT_ARCNET = 0x7
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AX25 = 0x3
+ DLT_CHAOS = 0x5
+ DLT_C_HDLC = 0x68
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0xd
+ DLT_FDDI = 0xa
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_LOOP = 0xc
+ DLT_MPLS = 0xdb
+ DLT_NULL = 0x0
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0x10
+ DLT_PPP_ETHER = 0x33
+ DLT_PPP_SERIAL = 0x32
+ DLT_PRONET = 0x4
+ DLT_RAW = 0xe
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xf
+ DT_BLK = 0x6
+ DT_CHR = 0x2
+ DT_DIR = 0x4
+ DT_FIFO = 0x1
+ DT_LNK = 0xa
+ DT_REG = 0x8
+ DT_SOCK = 0xc
+ DT_UNKNOWN = 0x0
+ ECHO = 0x8
+ ECHOCTL = 0x40
+ ECHOE = 0x2
+ ECHOK = 0x4
+ ECHOKE = 0x1
+ ECHONL = 0x10
+ ECHOPRT = 0x20
+ EMT_TAGOVF = 0x1
+ EMUL_ENABLED = 0x1
+ EMUL_NATIVE = 0x2
+ ENDRUNDISC = 0x9
+ ETHERMIN = 0x2e
+ ETHERMTU = 0x5dc
+ ETHERTYPE_8023 = 0x4
+ ETHERTYPE_AARP = 0x80f3
+ ETHERTYPE_ACCTON = 0x8390
+ ETHERTYPE_AEONIC = 0x8036
+ ETHERTYPE_ALPHA = 0x814a
+ ETHERTYPE_AMBER = 0x6008
+ ETHERTYPE_AMOEBA = 0x8145
+ ETHERTYPE_AOE = 0x88a2
+ ETHERTYPE_APOLLO = 0x80f7
+ ETHERTYPE_APOLLODOMAIN = 0x8019
+ ETHERTYPE_APPLETALK = 0x809b
+ ETHERTYPE_APPLITEK = 0x80c7
+ ETHERTYPE_ARGONAUT = 0x803a
+ ETHERTYPE_ARP = 0x806
+ ETHERTYPE_AT = 0x809b
+ ETHERTYPE_ATALK = 0x809b
+ ETHERTYPE_ATOMIC = 0x86df
+ ETHERTYPE_ATT = 0x8069
+ ETHERTYPE_ATTSTANFORD = 0x8008
+ ETHERTYPE_AUTOPHON = 0x806a
+ ETHERTYPE_AXIS = 0x8856
+ ETHERTYPE_BCLOOP = 0x9003
+ ETHERTYPE_BOFL = 0x8102
+ ETHERTYPE_CABLETRON = 0x7034
+ ETHERTYPE_CHAOS = 0x804
+ ETHERTYPE_COMDESIGN = 0x806c
+ ETHERTYPE_COMPUGRAPHIC = 0x806d
+ ETHERTYPE_COUNTERPOINT = 0x8062
+ ETHERTYPE_CRONUS = 0x8004
+ ETHERTYPE_CRONUSVLN = 0x8003
+ ETHERTYPE_DCA = 0x1234
+ ETHERTYPE_DDE = 0x807b
+ ETHERTYPE_DEBNI = 0xaaaa
+ ETHERTYPE_DECAM = 0x8048
+ ETHERTYPE_DECCUST = 0x6006
+ ETHERTYPE_DECDIAG = 0x6005
+ ETHERTYPE_DECDNS = 0x803c
+ ETHERTYPE_DECDTS = 0x803e
+ ETHERTYPE_DECEXPER = 0x6000
+ ETHERTYPE_DECLAST = 0x8041
+ ETHERTYPE_DECLTM = 0x803f
+ ETHERTYPE_DECMUMPS = 0x6009
+ ETHERTYPE_DECNETBIOS = 0x8040
+ ETHERTYPE_DELTACON = 0x86de
+ ETHERTYPE_DIDDLE = 0x4321
+ ETHERTYPE_DLOG1 = 0x660
+ ETHERTYPE_DLOG2 = 0x661
+ ETHERTYPE_DN = 0x6003
+ ETHERTYPE_DOGFIGHT = 0x1989
+ ETHERTYPE_DSMD = 0x8039
+ ETHERTYPE_ECMA = 0x803
+ ETHERTYPE_ENCRYPT = 0x803d
+ ETHERTYPE_ES = 0x805d
+ ETHERTYPE_EXCELAN = 0x8010
+ ETHERTYPE_EXPERDATA = 0x8049
+ ETHERTYPE_FLIP = 0x8146
+ ETHERTYPE_FLOWCONTROL = 0x8808
+ ETHERTYPE_FRARP = 0x808
+ ETHERTYPE_GENDYN = 0x8068
+ ETHERTYPE_HAYES = 0x8130
+ ETHERTYPE_HIPPI_FP = 0x8180
+ ETHERTYPE_HITACHI = 0x8820
+ ETHERTYPE_HP = 0x8005
+ ETHERTYPE_IEEEPUP = 0xa00
+ ETHERTYPE_IEEEPUPAT = 0xa01
+ ETHERTYPE_IMLBL = 0x4c42
+ ETHERTYPE_IMLBLDIAG = 0x424c
+ ETHERTYPE_IP = 0x800
+ ETHERTYPE_IPAS = 0x876c
+ ETHERTYPE_IPV6 = 0x86dd
+ ETHERTYPE_IPX = 0x8137
+ ETHERTYPE_IPXNEW = 0x8037
+ ETHERTYPE_KALPANA = 0x8582
+ ETHERTYPE_LANBRIDGE = 0x8038
+ ETHERTYPE_LANPROBE = 0x8888
+ ETHERTYPE_LAT = 0x6004
+ ETHERTYPE_LBACK = 0x9000
+ ETHERTYPE_LITTLE = 0x8060
+ ETHERTYPE_LLDP = 0x88cc
+ ETHERTYPE_LOGICRAFT = 0x8148
+ ETHERTYPE_LOOPBACK = 0x9000
+ ETHERTYPE_MATRA = 0x807a
+ ETHERTYPE_MAX = 0xffff
+ ETHERTYPE_MERIT = 0x807c
+ ETHERTYPE_MICP = 0x873a
+ ETHERTYPE_MOPDL = 0x6001
+ ETHERTYPE_MOPRC = 0x6002
+ ETHERTYPE_MOTOROLA = 0x818d
+ ETHERTYPE_MPLS = 0x8847
+ ETHERTYPE_MPLS_MCAST = 0x8848
+ ETHERTYPE_MUMPS = 0x813f
+ ETHERTYPE_NBPCC = 0x3c04
+ ETHERTYPE_NBPCLAIM = 0x3c09
+ ETHERTYPE_NBPCLREQ = 0x3c05
+ ETHERTYPE_NBPCLRSP = 0x3c06
+ ETHERTYPE_NBPCREQ = 0x3c02
+ ETHERTYPE_NBPCRSP = 0x3c03
+ ETHERTYPE_NBPDG = 0x3c07
+ ETHERTYPE_NBPDGB = 0x3c08
+ ETHERTYPE_NBPDLTE = 0x3c0a
+ ETHERTYPE_NBPRAR = 0x3c0c
+ ETHERTYPE_NBPRAS = 0x3c0b
+ ETHERTYPE_NBPRST = 0x3c0d
+ ETHERTYPE_NBPSCD = 0x3c01
+ ETHERTYPE_NBPVCD = 0x3c00
+ ETHERTYPE_NBS = 0x802
+ ETHERTYPE_NCD = 0x8149
+ ETHERTYPE_NESTAR = 0x8006
+ ETHERTYPE_NETBEUI = 0x8191
+ ETHERTYPE_NOVELL = 0x8138
+ ETHERTYPE_NS = 0x600
+ ETHERTYPE_NSAT = 0x601
+ ETHERTYPE_NSCOMPAT = 0x807
+ ETHERTYPE_NTRAILER = 0x10
+ ETHERTYPE_OS9 = 0x7007
+ ETHERTYPE_OS9NET = 0x7009
+ ETHERTYPE_PACER = 0x80c6
+ ETHERTYPE_PAE = 0x888e
+ ETHERTYPE_PCS = 0x4242
+ ETHERTYPE_PLANNING = 0x8044
+ ETHERTYPE_PPP = 0x880b
+ ETHERTYPE_PPPOE = 0x8864
+ ETHERTYPE_PPPOEDISC = 0x8863
+ ETHERTYPE_PRIMENTS = 0x7031
+ ETHERTYPE_PUP = 0x200
+ ETHERTYPE_PUPAT = 0x200
+ ETHERTYPE_QINQ = 0x88a8
+ ETHERTYPE_RACAL = 0x7030
+ ETHERTYPE_RATIONAL = 0x8150
+ ETHERTYPE_RAWFR = 0x6559
+ ETHERTYPE_RCL = 0x1995
+ ETHERTYPE_RDP = 0x8739
+ ETHERTYPE_RETIX = 0x80f2
+ ETHERTYPE_REVARP = 0x8035
+ ETHERTYPE_SCA = 0x6007
+ ETHERTYPE_SECTRA = 0x86db
+ ETHERTYPE_SECUREDATA = 0x876d
+ ETHERTYPE_SGITW = 0x817e
+ ETHERTYPE_SG_BOUNCE = 0x8016
+ ETHERTYPE_SG_DIAG = 0x8013
+ ETHERTYPE_SG_NETGAMES = 0x8014
+ ETHERTYPE_SG_RESV = 0x8015
+ ETHERTYPE_SIMNET = 0x5208
+ ETHERTYPE_SLOW = 0x8809
+ ETHERTYPE_SNA = 0x80d5
+ ETHERTYPE_SNMP = 0x814c
+ ETHERTYPE_SONIX = 0xfaf5
+ ETHERTYPE_SPIDER = 0x809f
+ ETHERTYPE_SPRITE = 0x500
+ ETHERTYPE_STP = 0x8181
+ ETHERTYPE_TALARIS = 0x812b
+ ETHERTYPE_TALARISMC = 0x852b
+ ETHERTYPE_TCPCOMP = 0x876b
+ ETHERTYPE_TCPSM = 0x9002
+ ETHERTYPE_TEC = 0x814f
+ ETHERTYPE_TIGAN = 0x802f
+ ETHERTYPE_TRAIL = 0x1000
+ ETHERTYPE_TRANSETHER = 0x6558
+ ETHERTYPE_TYMSHARE = 0x802e
+ ETHERTYPE_UBBST = 0x7005
+ ETHERTYPE_UBDEBUG = 0x900
+ ETHERTYPE_UBDIAGLOOP = 0x7002
+ ETHERTYPE_UBDL = 0x7000
+ ETHERTYPE_UBNIU = 0x7001
+ ETHERTYPE_UBNMC = 0x7003
+ ETHERTYPE_VALID = 0x1600
+ ETHERTYPE_VARIAN = 0x80dd
+ ETHERTYPE_VAXELN = 0x803b
+ ETHERTYPE_VEECO = 0x8067
+ ETHERTYPE_VEXP = 0x805b
+ ETHERTYPE_VGLAB = 0x8131
+ ETHERTYPE_VINES = 0xbad
+ ETHERTYPE_VINESECHO = 0xbaf
+ ETHERTYPE_VINESLOOP = 0xbae
+ ETHERTYPE_VITAL = 0xff00
+ ETHERTYPE_VLAN = 0x8100
+ ETHERTYPE_VLTLMAN = 0x8080
+ ETHERTYPE_VPROD = 0x805c
+ ETHERTYPE_VURESERVED = 0x8147
+ ETHERTYPE_WATERLOO = 0x8130
+ ETHERTYPE_WELLFLEET = 0x8103
+ ETHERTYPE_X25 = 0x805
+ ETHERTYPE_X75 = 0x801
+ ETHERTYPE_XNSSM = 0x9001
+ ETHERTYPE_XTP = 0x817d
+ ETHER_ADDR_LEN = 0x6
+ ETHER_ALIGN = 0x2
+ ETHER_CRC_LEN = 0x4
+ ETHER_CRC_POLY_BE = 0x4c11db6
+ ETHER_CRC_POLY_LE = 0xedb88320
+ ETHER_HDR_LEN = 0xe
+ ETHER_MAX_DIX_LEN = 0x600
+ ETHER_MAX_LEN = 0x5ee
+ ETHER_MIN_LEN = 0x40
+ ETHER_TYPE_LEN = 0x2
+ ETHER_VLAN_ENCAP_LEN = 0x4
+ EVFILT_AIO = -0x3
+ EVFILT_PROC = -0x5
+ EVFILT_READ = -0x1
+ EVFILT_SIGNAL = -0x6
+ EVFILT_SYSCOUNT = 0x7
+ EVFILT_TIMER = -0x7
+ EVFILT_VNODE = -0x4
+ EVFILT_WRITE = -0x2
+ EV_ADD = 0x1
+ EV_CLEAR = 0x20
+ EV_DELETE = 0x2
+ EV_DISABLE = 0x8
+ EV_ENABLE = 0x4
+ EV_EOF = 0x8000
+ EV_ERROR = 0x4000
+ EV_FLAG1 = 0x2000
+ EV_ONESHOT = 0x10
+ EV_SYSFLAGS = 0xf000
+ EXTA = 0x4b00
+ EXTB = 0x9600
+ EXTPROC = 0x800
+ FD_CLOEXEC = 0x1
+ FD_SETSIZE = 0x400
+ FLUSHO = 0x800000
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0xa
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0x7
+ F_GETOWN = 0x5
+ F_OK = 0x0
+ F_RDLCK = 0x1
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x8
+ F_SETLKW = 0x9
+ F_SETOWN = 0x6
+ F_UNLCK = 0x2
+ F_WRLCK = 0x3
+ HUPCL = 0x4000
+ ICANON = 0x100
+ ICMP6_FILTER = 0x12
+ ICRNL = 0x100
+ IEXTEN = 0x400
+ IFAN_ARRIVAL = 0x0
+ IFAN_DEPARTURE = 0x1
+ IFA_ROUTE = 0x1
+ IFF_ALLMULTI = 0x200
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x8e52
+ IFF_DEBUG = 0x4
+ IFF_LINK0 = 0x1000
+ IFF_LINK1 = 0x2000
+ IFF_LINK2 = 0x4000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x8000
+ IFF_NOARP = 0x80
+ IFF_NOTRAILERS = 0x20
+ IFF_OACTIVE = 0x400
+ IFF_POINTOPOINT = 0x10
+ IFF_PROMISC = 0x100
+ IFF_RUNNING = 0x40
+ IFF_SIMPLEX = 0x800
+ IFF_UP = 0x1
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_A12MPPSWITCH = 0x82
+ IFT_AAL2 = 0xbb
+ IFT_AAL5 = 0x31
+ IFT_ADSL = 0x5e
+ IFT_AFLANE8023 = 0x3b
+ IFT_AFLANE8025 = 0x3c
+ IFT_ARAP = 0x58
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ASYNC = 0x54
+ IFT_ATM = 0x25
+ IFT_ATMDXI = 0x69
+ IFT_ATMFUNI = 0x6a
+ IFT_ATMIMA = 0x6b
+ IFT_ATMLOGICAL = 0x50
+ IFT_ATMRADIO = 0xbd
+ IFT_ATMSUBINTERFACE = 0x86
+ IFT_ATMVCIENDPT = 0xc2
+ IFT_ATMVIRTUAL = 0x95
+ IFT_BGPPOLICYACCOUNTING = 0xa2
+ IFT_BLUETOOTH = 0xf8
+ IFT_BRIDGE = 0xd1
+ IFT_BSC = 0x53
+ IFT_CARP = 0xf7
+ IFT_CCTEMUL = 0x3d
+ IFT_CEPT = 0x13
+ IFT_CES = 0x85
+ IFT_CHANNEL = 0x46
+ IFT_CNR = 0x55
+ IFT_COFFEE = 0x84
+ IFT_COMPOSITELINK = 0x9b
+ IFT_DCN = 0x8d
+ IFT_DIGITALPOWERLINE = 0x8a
+ IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+ IFT_DLSW = 0x4a
+ IFT_DOCSCABLEDOWNSTREAM = 0x80
+ IFT_DOCSCABLEMACLAYER = 0x7f
+ IFT_DOCSCABLEUPSTREAM = 0x81
+ IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd
+ IFT_DS0 = 0x51
+ IFT_DS0BUNDLE = 0x52
+ IFT_DS1FDL = 0xaa
+ IFT_DS3 = 0x1e
+ IFT_DTM = 0x8c
+ IFT_DUMMY = 0xf1
+ IFT_DVBASILN = 0xac
+ IFT_DVBASIOUT = 0xad
+ IFT_DVBRCCDOWNSTREAM = 0x93
+ IFT_DVBRCCMACLAYER = 0x92
+ IFT_DVBRCCUPSTREAM = 0x94
+ IFT_ECONET = 0xce
+ IFT_ENC = 0xf4
+ IFT_EON = 0x19
+ IFT_EPLRS = 0x57
+ IFT_ESCON = 0x49
+ IFT_ETHER = 0x6
+ IFT_FAITH = 0xf3
+ IFT_FAST = 0x7d
+ IFT_FASTETHER = 0x3e
+ IFT_FASTETHERFX = 0x45
+ IFT_FDDI = 0xf
+ IFT_FIBRECHANNEL = 0x38
+ IFT_FRAMERELAYINTERCONNECT = 0x3a
+ IFT_FRAMERELAYMPI = 0x5c
+ IFT_FRDLCIENDPT = 0xc1
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_FRF16MFRBUNDLE = 0xa3
+ IFT_FRFORWARD = 0x9e
+ IFT_G703AT2MB = 0x43
+ IFT_G703AT64K = 0x42
+ IFT_GIF = 0xf0
+ IFT_GIGABITETHERNET = 0x75
+ IFT_GR303IDT = 0xb2
+ IFT_GR303RDT = 0xb1
+ IFT_H323GATEKEEPER = 0xa4
+ IFT_H323PROXY = 0xa5
+ IFT_HDH1822 = 0x3
+ IFT_HDLC = 0x76
+ IFT_HDSL2 = 0xa8
+ IFT_HIPERLAN2 = 0xb7
+ IFT_HIPPI = 0x2f
+ IFT_HIPPIINTERFACE = 0x39
+ IFT_HOSTPAD = 0x5a
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IBM370PARCHAN = 0x48
+ IFT_IDSL = 0x9a
+ IFT_IEEE1394 = 0x90
+ IFT_IEEE80211 = 0x47
+ IFT_IEEE80212 = 0x37
+ IFT_IEEE8023ADLAG = 0xa1
+ IFT_IFGSN = 0x91
+ IFT_IMT = 0xbe
+ IFT_INFINIBAND = 0xc7
+ IFT_INTERLEAVE = 0x7c
+ IFT_IP = 0x7e
+ IFT_IPFORWARD = 0x8e
+ IFT_IPOVERATM = 0x72
+ IFT_IPOVERCDLC = 0x6d
+ IFT_IPOVERCLAW = 0x6e
+ IFT_IPSWITCH = 0x4e
+ IFT_ISDN = 0x3f
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISDNS = 0x4b
+ IFT_ISDNU = 0x4c
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88025CRFPINT = 0x62
+ IFT_ISO88025DTR = 0x56
+ IFT_ISO88025FIBER = 0x73
+ IFT_ISO88026 = 0xa
+ IFT_ISUP = 0xb3
+ IFT_L2VLAN = 0x87
+ IFT_L3IPVLAN = 0x88
+ IFT_L3IPXVLAN = 0x89
+ IFT_LAPB = 0x10
+ IFT_LAPD = 0x4d
+ IFT_LAPF = 0x77
+ IFT_LINEGROUP = 0xd2
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MEDIAMAILOVERIP = 0x8b
+ IFT_MFSIGLINK = 0xa7
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_MPC = 0x71
+ IFT_MPLS = 0xa6
+ IFT_MPLSTUNNEL = 0x96
+ IFT_MSDSL = 0x8f
+ IFT_MVL = 0xbf
+ IFT_MYRINET = 0x63
+ IFT_NFAS = 0xaf
+ IFT_NSIP = 0x1b
+ IFT_OPTICALCHANNEL = 0xc3
+ IFT_OPTICALTRANSPORT = 0xc4
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PFLOG = 0xf5
+ IFT_PFLOW = 0xf9
+ IFT_PFSYNC = 0xf6
+ IFT_PLC = 0xae
+ IFT_PON155 = 0xcf
+ IFT_PON622 = 0xd0
+ IFT_POS = 0xab
+ IFT_PPP = 0x17
+ IFT_PPPMULTILINKBUNDLE = 0x6c
+ IFT_PROPATM = 0xc5
+ IFT_PROPBWAP2MP = 0xb8
+ IFT_PROPCNLS = 0x59
+ IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
+ IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
+ IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PROPWIRELESSP2P = 0x9d
+ IFT_PTPSERIAL = 0x16
+ IFT_PVC = 0xf2
+ IFT_Q2931 = 0xc9
+ IFT_QLLC = 0x44
+ IFT_RADIOMAC = 0xbc
+ IFT_RADSL = 0x5f
+ IFT_REACHDSL = 0xc0
+ IFT_RFC1483 = 0x9f
+ IFT_RS232 = 0x21
+ IFT_RSRB = 0x4f
+ IFT_SDLC = 0x11
+ IFT_SDSL = 0x60
+ IFT_SHDSL = 0xa9
+ IFT_SIP = 0x1f
+ IFT_SIPSIG = 0xcc
+ IFT_SIPTG = 0xcb
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETOVERHEADCHANNEL = 0xb9
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_SRP = 0x97
+ IFT_SS7SIGLINK = 0x9c
+ IFT_STACKTOSTACK = 0x6f
+ IFT_STARLAN = 0xb
+ IFT_T1 = 0x12
+ IFT_TDLC = 0x74
+ IFT_TELINK = 0xc8
+ IFT_TERMPAD = 0x5b
+ IFT_TR008 = 0xb0
+ IFT_TRANSPHDLC = 0x7b
+ IFT_TUNNEL = 0x83
+ IFT_ULTRA = 0x1d
+ IFT_USB = 0xa0
+ IFT_V11 = 0x40
+ IFT_V35 = 0x2d
+ IFT_V36 = 0x41
+ IFT_V37 = 0x78
+ IFT_VDSL = 0x61
+ IFT_VIRTUALIPADDRESS = 0x70
+ IFT_VIRTUALTG = 0xca
+ IFT_VOICEDID = 0xd5
+ IFT_VOICEEM = 0x64
+ IFT_VOICEEMFGD = 0xd3
+ IFT_VOICEENCAP = 0x67
+ IFT_VOICEFGDEANA = 0xd4
+ IFT_VOICEFXO = 0x65
+ IFT_VOICEFXS = 0x66
+ IFT_VOICEOVERATM = 0x98
+ IFT_VOICEOVERCABLE = 0xc6
+ IFT_VOICEOVERFRAMERELAY = 0x99
+ IFT_VOICEOVERIP = 0x68
+ IFT_X213 = 0x5d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25HUNTGROUP = 0x7a
+ IFT_X25MLP = 0x79
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_LOOPBACKNET = 0x7f
+ IN_RFC3021_HOST = 0x1
+ IN_RFC3021_NET = 0xfffffffe
+ IN_RFC3021_NSHIFT = 0x1f
+ IPPROTO_AH = 0x33
+ IPPROTO_CARP = 0x70
+ IPPROTO_DIVERT = 0x102
+ IPPROTO_DIVERT_INIT = 0x2
+ IPPROTO_DIVERT_RESP = 0x1
+ IPPROTO_DONE = 0x101
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x62
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_ETHERIP = 0x61
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_GRE = 0x2f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPCOMP = 0x6c
+ IPPROTO_IPIP = 0x4
+ IPPROTO_IPV4 = 0x4
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MAX = 0x100
+ IPPROTO_MAXID = 0x103
+ IPPROTO_MOBILE = 0x37
+ IPPROTO_MPLS = 0x89
+ IPPROTO_NONE = 0x3b
+ IPPROTO_PFSYNC = 0xf0
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_TCP = 0x6
+ IPPROTO_TP = 0x1d
+ IPPROTO_UDP = 0x11
+ IPV6_AUTH_LEVEL = 0x35
+ IPV6_AUTOFLOWLABEL = 0x3b
+ IPV6_CHECKSUM = 0x1a
+ IPV6_DEFAULT_MULTICAST_HOPS = 0x1
+ IPV6_DEFAULT_MULTICAST_LOOP = 0x1
+ IPV6_DEFHLIM = 0x40
+ IPV6_DONTFRAG = 0x3e
+ IPV6_DSTOPTS = 0x32
+ IPV6_ESP_NETWORK_LEVEL = 0x37
+ IPV6_ESP_TRANS_LEVEL = 0x36
+ IPV6_FAITH = 0x1d
+ IPV6_FLOWINFO_MASK = 0xffffff0f
+ IPV6_FLOWLABEL_MASK = 0xffff0f00
+ IPV6_FRAGTTL = 0x78
+ IPV6_HLIMDEC = 0x1
+ IPV6_HOPLIMIT = 0x2f
+ IPV6_HOPOPTS = 0x31
+ IPV6_IPCOMP_LEVEL = 0x3c
+ IPV6_JOIN_GROUP = 0xc
+ IPV6_LEAVE_GROUP = 0xd
+ IPV6_MAXHLIM = 0xff
+ IPV6_MAXPACKET = 0xffff
+ IPV6_MMTU = 0x500
+ IPV6_MULTICAST_HOPS = 0xa
+ IPV6_MULTICAST_IF = 0x9
+ IPV6_MULTICAST_LOOP = 0xb
+ IPV6_NEXTHOP = 0x30
+ IPV6_OPTIONS = 0x1
+ IPV6_PATHMTU = 0x2c
+ IPV6_PIPEX = 0x3f
+ IPV6_PKTINFO = 0x2e
+ IPV6_PORTRANGE = 0xe
+ IPV6_PORTRANGE_DEFAULT = 0x0
+ IPV6_PORTRANGE_HIGH = 0x1
+ IPV6_PORTRANGE_LOW = 0x2
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVDSTPORT = 0x40
+ IPV6_RECVHOPLIMIT = 0x25
+ IPV6_RECVHOPOPTS = 0x27
+ IPV6_RECVPATHMTU = 0x2b
+ IPV6_RECVPKTINFO = 0x24
+ IPV6_RECVRTHDR = 0x26
+ IPV6_RECVTCLASS = 0x39
+ IPV6_RTABLE = 0x1021
+ IPV6_RTHDR = 0x33
+ IPV6_RTHDRDSTOPTS = 0x23
+ IPV6_RTHDR_LOOSE = 0x0
+ IPV6_RTHDR_STRICT = 0x1
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SOCKOPT_RESERVED1 = 0x3
+ IPV6_TCLASS = 0x3d
+ IPV6_UNICAST_HOPS = 0x4
+ IPV6_USE_MIN_MTU = 0x2a
+ IPV6_V6ONLY = 0x1b
+ IPV6_VERSION = 0x60
+ IPV6_VERSION_MASK = 0xf0
+ IP_ADD_MEMBERSHIP = 0xc
+ IP_AUTH_LEVEL = 0x14
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DIVERTFL = 0x1022
+ IP_DROP_MEMBERSHIP = 0xd
+ IP_ESP_NETWORK_LEVEL = 0x16
+ IP_ESP_TRANS_LEVEL = 0x15
+ IP_HDRINCL = 0x2
+ IP_IPCOMP_LEVEL = 0x1d
+ IP_IPSECFLOWINFO = 0x24
+ IP_IPSEC_LOCAL_AUTH = 0x1b
+ IP_IPSEC_LOCAL_CRED = 0x19
+ IP_IPSEC_LOCAL_ID = 0x17
+ IP_IPSEC_REMOTE_AUTH = 0x1c
+ IP_IPSEC_REMOTE_CRED = 0x1a
+ IP_IPSEC_REMOTE_ID = 0x18
+ IP_MAXPACKET = 0xffff
+ IP_MAX_MEMBERSHIPS = 0xfff
+ IP_MF = 0x2000
+ IP_MINTTL = 0x20
+ IP_MIN_MEMBERSHIPS = 0xf
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x9
+ IP_MULTICAST_LOOP = 0xb
+ IP_MULTICAST_TTL = 0xa
+ IP_OFFMASK = 0x1fff
+ IP_OPTIONS = 0x1
+ IP_PIPEX = 0x22
+ IP_PORTRANGE = 0x13
+ IP_PORTRANGE_DEFAULT = 0x0
+ IP_PORTRANGE_HIGH = 0x1
+ IP_PORTRANGE_LOW = 0x2
+ IP_RECVDSTADDR = 0x7
+ IP_RECVDSTPORT = 0x21
+ IP_RECVIF = 0x1e
+ IP_RECVOPTS = 0x5
+ IP_RECVRETOPTS = 0x6
+ IP_RECVRTABLE = 0x23
+ IP_RECVTTL = 0x1f
+ IP_RETOPTS = 0x8
+ IP_RF = 0x8000
+ IP_RTABLE = 0x1021
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ ISIG = 0x80
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x400
+ IXON = 0x200
+ LCNT_OVERLOAD_FLUSH = 0x6
+ LOCK_EX = 0x2
+ LOCK_NB = 0x4
+ LOCK_SH = 0x1
+ LOCK_UN = 0x8
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x6
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_SPACEAVAIL = 0x5
+ MADV_WILLNEED = 0x3
+ MAP_ANON = 0x1000
+ MAP_COPY = 0x4
+ MAP_FILE = 0x0
+ MAP_FIXED = 0x10
+ MAP_FLAGMASK = 0x1ff7
+ MAP_HASSEMAPHORE = 0x200
+ MAP_INHERIT = 0x80
+ MAP_INHERIT_COPY = 0x1
+ MAP_INHERIT_DONATE_COPY = 0x3
+ MAP_INHERIT_NONE = 0x2
+ MAP_INHERIT_SHARE = 0x0
+ MAP_NOEXTEND = 0x100
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_SHARED = 0x1
+ MAP_TRYFIXED = 0x400
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_BCAST = 0x100
+ MSG_CTRUNC = 0x20
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_EOR = 0x8
+ MSG_MCAST = 0x200
+ MSG_NOSIGNAL = 0x400
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x10
+ MSG_WAITALL = 0x40
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x4
+ MS_SYNC = 0x2
+ NAME_MAX = 0xff
+ NET_RT_DUMP = 0x1
+ NET_RT_FLAGS = 0x2
+ NET_RT_IFLIST = 0x3
+ NET_RT_MAXID = 0x6
+ NET_RT_STATS = 0x4
+ NET_RT_TABLE = 0x5
+ NOFLSH = 0x80000000
+ NOTE_ATTRIB = 0x8
+ NOTE_CHILD = 0x4
+ NOTE_DELETE = 0x1
+ NOTE_EOF = 0x2
+ NOTE_EXEC = 0x20000000
+ NOTE_EXIT = 0x80000000
+ NOTE_EXTEND = 0x4
+ NOTE_FORK = 0x40000000
+ NOTE_LINK = 0x10
+ NOTE_LOWAT = 0x1
+ NOTE_PCTRLMASK = 0xf0000000
+ NOTE_PDATAMASK = 0xfffff
+ NOTE_RENAME = 0x20
+ NOTE_REVOKE = 0x40
+ NOTE_TRACK = 0x1
+ NOTE_TRACKERR = 0x2
+ NOTE_TRUNCATE = 0x80
+ NOTE_WRITE = 0x2
+ OCRNL = 0x10
+ ONLCR = 0x2
+ ONLRET = 0x80
+ ONOCR = 0x40
+ ONOEOT = 0x8
+ OPOST = 0x1
+ O_ACCMODE = 0x3
+ O_APPEND = 0x8
+ O_ASYNC = 0x40
+ O_CLOEXEC = 0x10000
+ O_CREAT = 0x200
+ O_DIRECTORY = 0x20000
+ O_DSYNC = 0x80
+ O_EXCL = 0x800
+ O_EXLOCK = 0x20
+ O_FSYNC = 0x80
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x8000
+ O_NOFOLLOW = 0x100
+ O_NONBLOCK = 0x4
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x80
+ O_SHLOCK = 0x10
+ O_SYNC = 0x80
+ O_TRUNC = 0x400
+ O_WRONLY = 0x1
+ PARENB = 0x1000
+ PARMRK = 0x8
+ PARODD = 0x2000
+ PENDIN = 0x20000000
+ PF_FLUSH = 0x1
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x8
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = 0x7fffffffffffffff
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_LABEL = 0xa
+ RTAX_MAX = 0xb
+ RTAX_NETMASK = 0x2
+ RTAX_SRC = 0x8
+ RTAX_SRCMASK = 0x9
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_LABEL = 0x400
+ RTA_NETMASK = 0x4
+ RTA_SRC = 0x100
+ RTA_SRCMASK = 0x200
+ RTF_ANNOUNCE = 0x4000
+ RTF_BLACKHOLE = 0x1000
+ RTF_CLONED = 0x10000
+ RTF_CLONING = 0x100
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_FMASK = 0x10f808
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_LLINFO = 0x400
+ RTF_MASK = 0x80
+ RTF_MODIFIED = 0x20
+ RTF_MPATH = 0x40000
+ RTF_MPLS = 0x100000
+ RTF_PERMANENT_ARP = 0x2000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_PROTO3 = 0x2000
+ RTF_REJECT = 0x8
+ RTF_SOURCE = 0x20000
+ RTF_STATIC = 0x800
+ RTF_TUNNEL = 0x100000
+ RTF_UP = 0x1
+ RTF_USETRAILERS = 0x8000
+ RTF_XRESOLVE = 0x200
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_DESYNC = 0x10
+ RTM_GET = 0x4
+ RTM_IFANNOUNCE = 0xf
+ RTM_IFINFO = 0xe
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MAXSIZE = 0x800
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_RTTUNIT = 0xf4240
+ RTM_VERSION = 0x5
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RT_TABLEID_MAX = 0xff
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ RUSAGE_THREAD = 0x1
+ SCM_RIGHTS = 0x1
+ SCM_TIMESTAMP = 0x4
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIOCADDMULTI = 0x80206931
+ SIOCAIFADDR = 0x8040691a
+ SIOCAIFGROUP = 0x80286987
+ SIOCALIFADDR = 0x8218691c
+ SIOCATMARK = 0x40047307
+ SIOCBRDGADD = 0x8058693c
+ SIOCBRDGADDS = 0x80586941
+ SIOCBRDGARL = 0x806e694d
+ SIOCBRDGDADDR = 0x81286947
+ SIOCBRDGDEL = 0x8058693d
+ SIOCBRDGDELS = 0x80586942
+ SIOCBRDGFLUSH = 0x80586948
+ SIOCBRDGFRL = 0x806e694e
+ SIOCBRDGGCACHE = 0xc0146941
+ SIOCBRDGGFD = 0xc0146952
+ SIOCBRDGGHT = 0xc0146951
+ SIOCBRDGGIFFLGS = 0xc058693e
+ SIOCBRDGGMA = 0xc0146953
+ SIOCBRDGGPARAM = 0xc0406958
+ SIOCBRDGGPRI = 0xc0146950
+ SIOCBRDGGRL = 0xc030694f
+ SIOCBRDGGSIFS = 0xc058693c
+ SIOCBRDGGTO = 0xc0146946
+ SIOCBRDGIFS = 0xc0586942
+ SIOCBRDGRTS = 0xc0206943
+ SIOCBRDGSADDR = 0xc1286944
+ SIOCBRDGSCACHE = 0x80146940
+ SIOCBRDGSFD = 0x80146952
+ SIOCBRDGSHT = 0x80146951
+ SIOCBRDGSIFCOST = 0x80586955
+ SIOCBRDGSIFFLGS = 0x8058693f
+ SIOCBRDGSIFPRIO = 0x80586954
+ SIOCBRDGSMA = 0x80146953
+ SIOCBRDGSPRI = 0x80146950
+ SIOCBRDGSPROTO = 0x8014695a
+ SIOCBRDGSTO = 0x80146945
+ SIOCBRDGSTXHC = 0x80146959
+ SIOCDELMULTI = 0x80206932
+ SIOCDIFADDR = 0x80206919
+ SIOCDIFGROUP = 0x80286989
+ SIOCDIFPHYADDR = 0x80206949
+ SIOCDLIFADDR = 0x8218691e
+ SIOCGETKALIVE = 0xc01869a4
+ SIOCGETLABEL = 0x8020699a
+ SIOCGETPFLOW = 0xc02069fe
+ SIOCGETPFSYNC = 0xc02069f8
+ SIOCGETSGCNT = 0xc0207534
+ SIOCGETVIFCNT = 0xc0287533
+ SIOCGETVLAN = 0xc0206990
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = 0xc0206921
+ SIOCGIFASYNCMAP = 0xc020697c
+ SIOCGIFBRDADDR = 0xc0206923
+ SIOCGIFCONF = 0xc0106924
+ SIOCGIFDATA = 0xc020691b
+ SIOCGIFDESCR = 0xc0206981
+ SIOCGIFDSTADDR = 0xc0206922
+ SIOCGIFFLAGS = 0xc0206911
+ SIOCGIFGATTR = 0xc028698b
+ SIOCGIFGENERIC = 0xc020693a
+ SIOCGIFGMEMB = 0xc028698a
+ SIOCGIFGROUP = 0xc0286988
+ SIOCGIFHARDMTU = 0xc02069a5
+ SIOCGIFMEDIA = 0xc0306936
+ SIOCGIFMETRIC = 0xc0206917
+ SIOCGIFMTU = 0xc020697e
+ SIOCGIFNETMASK = 0xc0206925
+ SIOCGIFPDSTADDR = 0xc0206948
+ SIOCGIFPRIORITY = 0xc020699c
+ SIOCGIFPSRCADDR = 0xc0206947
+ SIOCGIFRDOMAIN = 0xc02069a0
+ SIOCGIFRTLABEL = 0xc0206983
+ SIOCGIFTIMESLOT = 0xc0206986
+ SIOCGIFXFLAGS = 0xc020699e
+ SIOCGLIFADDR = 0xc218691d
+ SIOCGLIFPHYADDR = 0xc218694b
+ SIOCGLIFPHYRTABLE = 0xc02069a2
+ SIOCGLIFPHYTTL = 0xc02069a9
+ SIOCGLOWAT = 0x40047303
+ SIOCGPGRP = 0x40047309
+ SIOCGSPPPPARAMS = 0xc0206994
+ SIOCGVH = 0xc02069f6
+ SIOCGVNETID = 0xc02069a7
+ SIOCIFCREATE = 0x8020697a
+ SIOCIFDESTROY = 0x80206979
+ SIOCIFGCLONERS = 0xc0106978
+ SIOCSETKALIVE = 0x801869a3
+ SIOCSETLABEL = 0x80206999
+ SIOCSETPFLOW = 0x802069fd
+ SIOCSETPFSYNC = 0x802069f7
+ SIOCSETVLAN = 0x8020698f
+ SIOCSHIWAT = 0x80047300
+ SIOCSIFADDR = 0x8020690c
+ SIOCSIFASYNCMAP = 0x8020697d
+ SIOCSIFBRDADDR = 0x80206913
+ SIOCSIFDESCR = 0x80206980
+ SIOCSIFDSTADDR = 0x8020690e
+ SIOCSIFFLAGS = 0x80206910
+ SIOCSIFGATTR = 0x8028698c
+ SIOCSIFGENERIC = 0x80206939
+ SIOCSIFLLADDR = 0x8020691f
+ SIOCSIFMEDIA = 0xc0206935
+ SIOCSIFMETRIC = 0x80206918
+ SIOCSIFMTU = 0x8020697f
+ SIOCSIFNETMASK = 0x80206916
+ SIOCSIFPHYADDR = 0x80406946
+ SIOCSIFPRIORITY = 0x8020699b
+ SIOCSIFRDOMAIN = 0x8020699f
+ SIOCSIFRTLABEL = 0x80206982
+ SIOCSIFTIMESLOT = 0x80206985
+ SIOCSIFXFLAGS = 0x8020699d
+ SIOCSLIFPHYADDR = 0x8218694a
+ SIOCSLIFPHYRTABLE = 0x802069a1
+ SIOCSLIFPHYTTL = 0x802069a8
+ SIOCSLOWAT = 0x80047302
+ SIOCSPGRP = 0x80047308
+ SIOCSSPPPPARAMS = 0x80206993
+ SIOCSVH = 0xc02069f5
+ SIOCSVNETID = 0x802069a6
+ SOCK_DGRAM = 0x2
+ SOCK_RAW = 0x3
+ SOCK_RDM = 0x4
+ SOCK_SEQPACKET = 0x5
+ SOCK_STREAM = 0x1
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_BINDANY = 0x1000
+ SO_BROADCAST = 0x20
+ SO_DEBUG = 0x1
+ SO_DONTROUTE = 0x10
+ SO_ERROR = 0x1007
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_NETPROC = 0x1020
+ SO_OOBINLINE = 0x100
+ SO_PEERCRED = 0x1022
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVTIMEO = 0x1006
+ SO_REUSEADDR = 0x4
+ SO_REUSEPORT = 0x200
+ SO_RTABLE = 0x1021
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_SPLICE = 0x1023
+ SO_TIMESTAMP = 0x800
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ TCIFLUSH = 0x1
+ TCIOFLUSH = 0x3
+ TCOFLUSH = 0x2
+ TCP_MAXBURST = 0x4
+ TCP_MAXSEG = 0x2
+ TCP_MAXWIN = 0xffff
+ TCP_MAX_SACK = 0x3
+ TCP_MAX_WINSHIFT = 0xe
+ TCP_MD5SIG = 0x4
+ TCP_MSS = 0x200
+ TCP_NODELAY = 0x1
+ TCP_NOPUSH = 0x10
+ TCP_NSTATES = 0xb
+ TCP_SACK_ENABLE = 0x8
+ TCSAFLUSH = 0x2
+ TIOCCBRK = 0x2000747a
+ TIOCCDTR = 0x20007478
+ TIOCCONS = 0x80047462
+ TIOCDRAIN = 0x2000745e
+ TIOCEXCL = 0x2000740d
+ TIOCEXT = 0x80047460
+ TIOCFLAG_CLOCAL = 0x2
+ TIOCFLAG_CRTSCTS = 0x4
+ TIOCFLAG_MDMBUF = 0x8
+ TIOCFLAG_PPS = 0x10
+ TIOCFLAG_SOFTCAR = 0x1
+ TIOCFLUSH = 0x80047410
+ TIOCGETA = 0x402c7413
+ TIOCGETD = 0x4004741a
+ TIOCGFLAGS = 0x4004745d
+ TIOCGPGRP = 0x40047477
+ TIOCGSID = 0x40047463
+ TIOCGTSTAMP = 0x4010745b
+ TIOCGWINSZ = 0x40087468
+ TIOCMBIC = 0x8004746b
+ TIOCMBIS = 0x8004746c
+ TIOCMGET = 0x4004746a
+ TIOCMODG = 0x4004746a
+ TIOCMODS = 0x8004746d
+ TIOCMSET = 0x8004746d
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x20007471
+ TIOCNXCL = 0x2000740e
+ TIOCOUTQ = 0x40047473
+ TIOCPKT = 0x80047470
+ TIOCPKT_DATA = 0x0
+ TIOCPKT_DOSTOP = 0x20
+ TIOCPKT_FLUSHREAD = 0x1
+ TIOCPKT_FLUSHWRITE = 0x2
+ TIOCPKT_IOCTL = 0x40
+ TIOCPKT_NOSTOP = 0x10
+ TIOCPKT_START = 0x8
+ TIOCPKT_STOP = 0x4
+ TIOCREMOTE = 0x80047469
+ TIOCSBRK = 0x2000747b
+ TIOCSCTTY = 0x20007461
+ TIOCSDTR = 0x20007479
+ TIOCSETA = 0x802c7414
+ TIOCSETAF = 0x802c7416
+ TIOCSETAW = 0x802c7415
+ TIOCSETD = 0x8004741b
+ TIOCSFLAGS = 0x8004745c
+ TIOCSIG = 0x8004745f
+ TIOCSPGRP = 0x80047476
+ TIOCSTART = 0x2000746e
+ TIOCSTAT = 0x80047465
+ TIOCSTI = 0x80017472
+ TIOCSTOP = 0x2000746f
+ TIOCSTSTAMP = 0x8008745a
+ TIOCSWINSZ = 0x80087467
+ TIOCUCNTL = 0x80047466
+ TOSTOP = 0x400000
+ VDISCARD = 0xf
+ VDSUSP = 0xb
+ VEOF = 0x0
+ VEOL = 0x1
+ VEOL2 = 0x2
+ VERASE = 0x3
+ VINTR = 0x8
+ VKILL = 0x5
+ VLNEXT = 0xe
+ VMIN = 0x10
+ VQUIT = 0x9
+ VREPRINT = 0x6
+ VSTART = 0xc
+ VSTATUS = 0x12
+ VSTOP = 0xd
+ VSUSP = 0xa
+ VTIME = 0x11
+ VWERASE = 0x4
+ WALTSIG = 0x4
+ WCONTINUED = 0x8
+ WCOREFLAG = 0x80
+ WNOHANG = 0x1
+ WSTOPPED = 0x7f
+ WUNTRACED = 0x2
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x30)
+ EADDRNOTAVAIL = syscall.Errno(0x31)
+ EAFNOSUPPORT = syscall.Errno(0x2f)
+ EAGAIN = syscall.Errno(0x23)
+ EALREADY = syscall.Errno(0x25)
+ EAUTH = syscall.Errno(0x50)
+ EBADF = syscall.Errno(0x9)
+ EBADRPC = syscall.Errno(0x48)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x58)
+ ECHILD = syscall.Errno(0xa)
+ ECONNABORTED = syscall.Errno(0x35)
+ ECONNREFUSED = syscall.Errno(0x3d)
+ ECONNRESET = syscall.Errno(0x36)
+ EDEADLK = syscall.Errno(0xb)
+ EDESTADDRREQ = syscall.Errno(0x27)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x45)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EFTYPE = syscall.Errno(0x4f)
+ EHOSTDOWN = syscall.Errno(0x40)
+ EHOSTUNREACH = syscall.Errno(0x41)
+ EIDRM = syscall.Errno(0x59)
+ EILSEQ = syscall.Errno(0x54)
+ EINPROGRESS = syscall.Errno(0x24)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EIPSEC = syscall.Errno(0x52)
+ EISCONN = syscall.Errno(0x38)
+ EISDIR = syscall.Errno(0x15)
+ ELAST = syscall.Errno(0x5b)
+ ELOOP = syscall.Errno(0x3e)
+ EMEDIUMTYPE = syscall.Errno(0x56)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x28)
+ ENAMETOOLONG = syscall.Errno(0x3f)
+ ENEEDAUTH = syscall.Errno(0x51)
+ ENETDOWN = syscall.Errno(0x32)
+ ENETRESET = syscall.Errno(0x34)
+ ENETUNREACH = syscall.Errno(0x33)
+ ENFILE = syscall.Errno(0x17)
+ ENOATTR = syscall.Errno(0x53)
+ ENOBUFS = syscall.Errno(0x37)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x4d)
+ ENOMEDIUM = syscall.Errno(0x55)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x5a)
+ ENOPROTOOPT = syscall.Errno(0x2a)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSYS = syscall.Errno(0x4e)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x39)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x42)
+ ENOTSOCK = syscall.Errno(0x26)
+ ENOTSUP = syscall.Errno(0x5b)
+ ENOTTY = syscall.Errno(0x19)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x2d)
+ EOVERFLOW = syscall.Errno(0x57)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x2e)
+ EPIPE = syscall.Errno(0x20)
+ EPROCLIM = syscall.Errno(0x43)
+ EPROCUNAVAIL = syscall.Errno(0x4c)
+ EPROGMISMATCH = syscall.Errno(0x4b)
+ EPROGUNAVAIL = syscall.Errno(0x4a)
+ EPROTONOSUPPORT = syscall.Errno(0x2b)
+ EPROTOTYPE = syscall.Errno(0x29)
+ ERANGE = syscall.Errno(0x22)
+ EREMOTE = syscall.Errno(0x47)
+ EROFS = syscall.Errno(0x1e)
+ ERPCMISMATCH = syscall.Errno(0x49)
+ ESHUTDOWN = syscall.Errno(0x3a)
+ ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESTALE = syscall.Errno(0x46)
+ ETIMEDOUT = syscall.Errno(0x3c)
+ ETOOMANYREFS = syscall.Errno(0x3b)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUSERS = syscall.Errno(0x44)
+ EWOULDBLOCK = syscall.Errno(0x23)
+ EXDEV = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCHLD = syscall.Signal(0x14)
+ SIGCONT = syscall.Signal(0x13)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x1d)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x17)
+ SIGIOT = syscall.Signal(0x6)
+ SIGKILL = syscall.Signal(0x9)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPROF = syscall.Signal(0x1b)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x11)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHR = syscall.Signal(0x20)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x12)
+ SIGTTIN = syscall.Signal(0x15)
+ SIGTTOU = syscall.Signal(0x16)
+ SIGURG = syscall.Signal(0x10)
+ SIGUSR1 = syscall.Signal(0x1e)
+ SIGUSR2 = syscall.Signal(0x1f)
+ SIGVTALRM = syscall.Signal(0x1a)
+ SIGWINCH = syscall.Signal(0x1c)
+ SIGXCPU = syscall.Signal(0x18)
+ SIGXFSZ = syscall.Signal(0x19)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "operation not permitted",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "input/output error",
+ 6: "device not configured",
+ 7: "argument list too long",
+ 8: "exec format error",
+ 9: "bad file descriptor",
+ 10: "no child processes",
+ 11: "resource deadlock avoided",
+ 12: "cannot allocate memory",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "operation not supported by device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "too many open files in system",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "numerical argument out of domain",
+ 34: "result too large",
+ 35: "resource temporarily unavailable",
+ 36: "operation now in progress",
+ 37: "operation already in progress",
+ 38: "socket operation on non-socket",
+ 39: "destination address required",
+ 40: "message too long",
+ 41: "protocol wrong type for socket",
+ 42: "protocol not available",
+ 43: "protocol not supported",
+ 44: "socket type not supported",
+ 45: "operation not supported",
+ 46: "protocol family not supported",
+ 47: "address family not supported by protocol family",
+ 48: "address already in use",
+ 49: "can't assign requested address",
+ 50: "network is down",
+ 51: "network is unreachable",
+ 52: "network dropped connection on reset",
+ 53: "software caused connection abort",
+ 54: "connection reset by peer",
+ 55: "no buffer space available",
+ 56: "socket is already connected",
+ 57: "socket is not connected",
+ 58: "can't send after socket shutdown",
+ 59: "too many references: can't splice",
+ 60: "connection timed out",
+ 61: "connection refused",
+ 62: "too many levels of symbolic links",
+ 63: "file name too long",
+ 64: "host is down",
+ 65: "no route to host",
+ 66: "directory not empty",
+ 67: "too many processes",
+ 68: "too many users",
+ 69: "disc quota exceeded",
+ 70: "stale NFS file handle",
+ 71: "too many levels of remote in path",
+ 72: "RPC struct is bad",
+ 73: "RPC version wrong",
+ 74: "RPC prog. not avail",
+ 75: "program version wrong",
+ 76: "bad procedure for program",
+ 77: "no locks available",
+ 78: "function not implemented",
+ 79: "inappropriate file type or format",
+ 80: "authentication error",
+ 81: "need authenticator",
+ 82: "IPsec processing failure",
+ 83: "attribute not found",
+ 84: "illegal byte sequence",
+ 85: "no medium found",
+ 86: "wrong medium type",
+ 87: "value too large to be stored in data type",
+ 88: "operation canceled",
+ 89: "identifier removed",
+ 90: "no message of desired type",
+ 91: "not supported",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal instruction",
+ 5: "trace/BPT trap",
+ 6: "abort trap",
+ 7: "EMT trap",
+ 8: "floating point exception",
+ 9: "killed",
+ 10: "bus error",
+ 11: "segmentation fault",
+ 12: "bad system call",
+ 13: "broken pipe",
+ 14: "alarm clock",
+ 15: "terminated",
+ 16: "urgent I/O condition",
+ 17: "stopped (signal)",
+ 18: "stopped",
+ 19: "continued",
+ 20: "child exited",
+ 21: "stopped (tty input)",
+ 22: "stopped (tty output)",
+ 23: "I/O possible",
+ 24: "cputime limit exceeded",
+ 25: "filesize limit exceeded",
+ 26: "virtual timer expired",
+ 27: "profiling timer expired",
+ 28: "window size changes",
+ 29: "information request",
+ 30: "user defined signal 1",
+ 31: "user defined signal 2",
+ 32: "thread AST",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_solaris_amd64.go
new file mode 100644
index 000000000..a08922b98
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zerrors_solaris_amd64.go
@@ -0,0 +1,1436 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,solaris
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+ AF_802 = 0x12
+ AF_APPLETALK = 0x10
+ AF_CCITT = 0xa
+ AF_CHAOS = 0x5
+ AF_DATAKIT = 0x9
+ AF_DECnet = 0xc
+ AF_DLI = 0xd
+ AF_ECMA = 0x8
+ AF_FILE = 0x1
+ AF_GOSIP = 0x16
+ AF_HYLINK = 0xf
+ AF_IMPLINK = 0x3
+ AF_INET = 0x2
+ AF_INET6 = 0x1a
+ AF_INET_OFFLOAD = 0x1e
+ AF_IPX = 0x17
+ AF_KEY = 0x1b
+ AF_LAT = 0xe
+ AF_LINK = 0x19
+ AF_LOCAL = 0x1
+ AF_MAX = 0x20
+ AF_NBS = 0x7
+ AF_NCA = 0x1c
+ AF_NIT = 0x11
+ AF_NS = 0x6
+ AF_OSI = 0x13
+ AF_OSINET = 0x15
+ AF_PACKET = 0x20
+ AF_POLICY = 0x1d
+ AF_PUP = 0x4
+ AF_ROUTE = 0x18
+ AF_SNA = 0xb
+ AF_TRILL = 0x1f
+ AF_UNIX = 0x1
+ AF_UNSPEC = 0x0
+ AF_X25 = 0x14
+ ARPHRD_ARCNET = 0x7
+ ARPHRD_ATM = 0x10
+ ARPHRD_AX25 = 0x3
+ ARPHRD_CHAOS = 0x5
+ ARPHRD_EETHER = 0x2
+ ARPHRD_ETHER = 0x1
+ ARPHRD_FC = 0x12
+ ARPHRD_FRAME = 0xf
+ ARPHRD_HDLC = 0x11
+ ARPHRD_IB = 0x20
+ ARPHRD_IEEE802 = 0x6
+ ARPHRD_IPATM = 0x13
+ ARPHRD_METRICOM = 0x17
+ ARPHRD_TUNNEL = 0x1f
+ B0 = 0x0
+ B110 = 0x3
+ B115200 = 0x12
+ B1200 = 0x9
+ B134 = 0x4
+ B150 = 0x5
+ B153600 = 0x13
+ B1800 = 0xa
+ B19200 = 0xe
+ B200 = 0x6
+ B230400 = 0x14
+ B2400 = 0xb
+ B300 = 0x7
+ B307200 = 0x15
+ B38400 = 0xf
+ B460800 = 0x16
+ B4800 = 0xc
+ B50 = 0x1
+ B57600 = 0x10
+ B600 = 0x8
+ B75 = 0x2
+ B76800 = 0x11
+ B921600 = 0x17
+ B9600 = 0xd
+ BIOCFLUSH = 0x20004268
+ BIOCGBLEN = 0x40044266
+ BIOCGDLT = 0x4004426a
+ BIOCGDLTLIST = -0x3fefbd89
+ BIOCGDLTLIST32 = -0x3ff7bd89
+ BIOCGETIF = 0x4020426b
+ BIOCGETLIF = 0x4078426b
+ BIOCGHDRCMPLT = 0x40044274
+ BIOCGRTIMEOUT = 0x4010427b
+ BIOCGRTIMEOUT32 = 0x4008427b
+ BIOCGSEESENT = 0x40044278
+ BIOCGSTATS = 0x4080426f
+ BIOCGSTATSOLD = 0x4008426f
+ BIOCIMMEDIATE = -0x7ffbbd90
+ BIOCPROMISC = 0x20004269
+ BIOCSBLEN = -0x3ffbbd9a
+ BIOCSDLT = -0x7ffbbd8a
+ BIOCSETF = -0x7fefbd99
+ BIOCSETF32 = -0x7ff7bd99
+ BIOCSETIF = -0x7fdfbd94
+ BIOCSETLIF = -0x7f87bd94
+ BIOCSHDRCMPLT = -0x7ffbbd8b
+ BIOCSRTIMEOUT = -0x7fefbd86
+ BIOCSRTIMEOUT32 = -0x7ff7bd86
+ BIOCSSEESENT = -0x7ffbbd87
+ BIOCSTCPF = -0x7fefbd8e
+ BIOCSUDPF = -0x7fefbd8d
+ BIOCVERSION = 0x40044271
+ BPF_A = 0x10
+ BPF_ABS = 0x20
+ BPF_ADD = 0x0
+ BPF_ALIGNMENT = 0x4
+ BPF_ALU = 0x4
+ BPF_AND = 0x50
+ BPF_B = 0x10
+ BPF_DFLTBUFSIZE = 0x100000
+ BPF_DIV = 0x30
+ BPF_H = 0x8
+ BPF_IMM = 0x0
+ BPF_IND = 0x40
+ BPF_JA = 0x0
+ BPF_JEQ = 0x10
+ BPF_JGE = 0x30
+ BPF_JGT = 0x20
+ BPF_JMP = 0x5
+ BPF_JSET = 0x40
+ BPF_K = 0x0
+ BPF_LD = 0x0
+ BPF_LDX = 0x1
+ BPF_LEN = 0x80
+ BPF_LSH = 0x60
+ BPF_MAJOR_VERSION = 0x1
+ BPF_MAXBUFSIZE = 0x1000000
+ BPF_MAXINSNS = 0x200
+ BPF_MEM = 0x60
+ BPF_MEMWORDS = 0x10
+ BPF_MINBUFSIZE = 0x20
+ BPF_MINOR_VERSION = 0x1
+ BPF_MISC = 0x7
+ BPF_MSH = 0xa0
+ BPF_MUL = 0x20
+ BPF_NEG = 0x80
+ BPF_OR = 0x40
+ BPF_RELEASE = 0x30bb6
+ BPF_RET = 0x6
+ BPF_RSH = 0x70
+ BPF_ST = 0x2
+ BPF_STX = 0x3
+ BPF_SUB = 0x10
+ BPF_TAX = 0x0
+ BPF_TXA = 0x80
+ BPF_W = 0x0
+ BPF_X = 0x8
+ BRKINT = 0x2
+ CFLUSH = 0xf
+ CLOCAL = 0x800
+ CLOCK_HIGHRES = 0x4
+ CLOCK_LEVEL = 0xa
+ CLOCK_MONOTONIC = 0x4
+ CLOCK_PROCESS_CPUTIME_ID = 0x5
+ CLOCK_PROF = 0x2
+ CLOCK_REALTIME = 0x3
+ CLOCK_THREAD_CPUTIME_ID = 0x2
+ CLOCK_VIRTUAL = 0x1
+ CREAD = 0x80
+ CS5 = 0x0
+ CS6 = 0x10
+ CS7 = 0x20
+ CS8 = 0x30
+ CSIZE = 0x30
+ CSTART = 0x11
+ CSTATUS = 0x14
+ CSTOP = 0x13
+ CSTOPB = 0x40
+ CSUSP = 0x1a
+ CSWTCH = 0x1a
+ DLT_AIRONET_HEADER = 0x78
+ DLT_APPLE_IP_OVER_IEEE1394 = 0x8a
+ DLT_ARCNET = 0x7
+ DLT_ARCNET_LINUX = 0x81
+ DLT_ATM_CLIP = 0x13
+ DLT_ATM_RFC1483 = 0xb
+ DLT_AURORA = 0x7e
+ DLT_AX25 = 0x3
+ DLT_BACNET_MS_TP = 0xa5
+ DLT_CHAOS = 0x5
+ DLT_CISCO_IOS = 0x76
+ DLT_C_HDLC = 0x68
+ DLT_DOCSIS = 0x8f
+ DLT_ECONET = 0x73
+ DLT_EN10MB = 0x1
+ DLT_EN3MB = 0x2
+ DLT_ENC = 0x6d
+ DLT_ERF_ETH = 0xaf
+ DLT_ERF_POS = 0xb0
+ DLT_FDDI = 0xa
+ DLT_FRELAY = 0x6b
+ DLT_GCOM_SERIAL = 0xad
+ DLT_GCOM_T1E1 = 0xac
+ DLT_GPF_F = 0xab
+ DLT_GPF_T = 0xaa
+ DLT_GPRS_LLC = 0xa9
+ DLT_HDLC = 0x10
+ DLT_HHDLC = 0x79
+ DLT_HIPPI = 0xf
+ DLT_IBM_SN = 0x92
+ DLT_IBM_SP = 0x91
+ DLT_IEEE802 = 0x6
+ DLT_IEEE802_11 = 0x69
+ DLT_IEEE802_11_RADIO = 0x7f
+ DLT_IEEE802_11_RADIO_AVS = 0xa3
+ DLT_IPNET = 0xe2
+ DLT_IPOIB = 0xa2
+ DLT_IP_OVER_FC = 0x7a
+ DLT_JUNIPER_ATM1 = 0x89
+ DLT_JUNIPER_ATM2 = 0x87
+ DLT_JUNIPER_CHDLC = 0xb5
+ DLT_JUNIPER_ES = 0x84
+ DLT_JUNIPER_ETHER = 0xb2
+ DLT_JUNIPER_FRELAY = 0xb4
+ DLT_JUNIPER_GGSN = 0x85
+ DLT_JUNIPER_MFR = 0x86
+ DLT_JUNIPER_MLFR = 0x83
+ DLT_JUNIPER_MLPPP = 0x82
+ DLT_JUNIPER_MONITOR = 0xa4
+ DLT_JUNIPER_PIC_PEER = 0xae
+ DLT_JUNIPER_PPP = 0xb3
+ DLT_JUNIPER_PPPOE = 0xa7
+ DLT_JUNIPER_PPPOE_ATM = 0xa8
+ DLT_JUNIPER_SERVICES = 0x88
+ DLT_LINUX_IRDA = 0x90
+ DLT_LINUX_LAPD = 0xb1
+ DLT_LINUX_SLL = 0x71
+ DLT_LOOP = 0x6c
+ DLT_LTALK = 0x72
+ DLT_MTP2 = 0x8c
+ DLT_MTP2_WITH_PHDR = 0x8b
+ DLT_MTP3 = 0x8d
+ DLT_NULL = 0x0
+ DLT_PCI_EXP = 0x7d
+ DLT_PFLOG = 0x75
+ DLT_PFSYNC = 0x12
+ DLT_PPP = 0x9
+ DLT_PPP_BSDOS = 0xe
+ DLT_PPP_PPPD = 0xa6
+ DLT_PRISM_HEADER = 0x77
+ DLT_PRONET = 0x4
+ DLT_RAW = 0xc
+ DLT_RAWAF_MASK = 0x2240000
+ DLT_RIO = 0x7c
+ DLT_SCCP = 0x8e
+ DLT_SLIP = 0x8
+ DLT_SLIP_BSDOS = 0xd
+ DLT_SUNATM = 0x7b
+ DLT_SYMANTEC_FIREWALL = 0x63
+ DLT_TZSP = 0x80
+ ECHO = 0x8
+ ECHOCTL = 0x200
+ ECHOE = 0x10
+ ECHOK = 0x20
+ ECHOKE = 0x800
+ ECHONL = 0x40
+ ECHOPRT = 0x400
+ EMPTY_SET = 0x0
+ EMT_CPCOVF = 0x1
+ EQUALITY_CHECK = 0x0
+ EXTA = 0xe
+ EXTB = 0xf
+ FD_CLOEXEC = 0x1
+ FD_NFDBITS = 0x40
+ FD_SETSIZE = 0x10000
+ FLUSHALL = 0x1
+ FLUSHDATA = 0x0
+ FLUSHO = 0x2000
+ F_ALLOCSP = 0xa
+ F_ALLOCSP64 = 0xa
+ F_BADFD = 0x2e
+ F_BLKSIZE = 0x13
+ F_BLOCKS = 0x12
+ F_CHKFL = 0x8
+ F_COMPAT = 0x8
+ F_DUP2FD = 0x9
+ F_DUP2FD_CLOEXEC = 0x24
+ F_DUPFD = 0x0
+ F_DUPFD_CLOEXEC = 0x25
+ F_FREESP = 0xb
+ F_FREESP64 = 0xb
+ F_GETFD = 0x1
+ F_GETFL = 0x3
+ F_GETLK = 0xe
+ F_GETLK64 = 0xe
+ F_GETOWN = 0x17
+ F_GETXFL = 0x2d
+ F_HASREMOTELOCKS = 0x1a
+ F_ISSTREAM = 0xd
+ F_MANDDNY = 0x10
+ F_MDACC = 0x20
+ F_NODNY = 0x0
+ F_NPRIV = 0x10
+ F_PRIV = 0xf
+ F_QUOTACTL = 0x11
+ F_RDACC = 0x1
+ F_RDDNY = 0x1
+ F_RDLCK = 0x1
+ F_REVOKE = 0x19
+ F_RMACC = 0x4
+ F_RMDNY = 0x4
+ F_RWACC = 0x3
+ F_RWDNY = 0x3
+ F_SETFD = 0x2
+ F_SETFL = 0x4
+ F_SETLK = 0x6
+ F_SETLK64 = 0x6
+ F_SETLK64_NBMAND = 0x2a
+ F_SETLKW = 0x7
+ F_SETLKW64 = 0x7
+ F_SETLK_NBMAND = 0x2a
+ F_SETOWN = 0x18
+ F_SHARE = 0x28
+ F_SHARE_NBMAND = 0x2b
+ F_UNLCK = 0x3
+ F_UNLKSYS = 0x4
+ F_UNSHARE = 0x29
+ F_WRACC = 0x2
+ F_WRDNY = 0x2
+ F_WRLCK = 0x2
+ HUPCL = 0x400
+ ICANON = 0x2
+ ICRNL = 0x100
+ IEXTEN = 0x8000
+ IFF_ADDRCONF = 0x80000
+ IFF_ALLMULTI = 0x200
+ IFF_ANYCAST = 0x400000
+ IFF_BROADCAST = 0x2
+ IFF_CANTCHANGE = 0x7f203003b5a
+ IFF_COS_ENABLED = 0x200000000
+ IFF_DEBUG = 0x4
+ IFF_DEPRECATED = 0x40000
+ IFF_DHCPRUNNING = 0x4000
+ IFF_DUPLICATE = 0x4000000000
+ IFF_FAILED = 0x10000000
+ IFF_FIXEDMTU = 0x1000000000
+ IFF_INACTIVE = 0x40000000
+ IFF_INTELLIGENT = 0x400
+ IFF_IPMP = 0x8000000000
+ IFF_IPMP_CANTCHANGE = 0x10000000
+ IFF_IPMP_INVALID = 0x1ec200080
+ IFF_IPV4 = 0x1000000
+ IFF_IPV6 = 0x2000000
+ IFF_L3PROTECT = 0x40000000000
+ IFF_LOOPBACK = 0x8
+ IFF_MULTICAST = 0x800
+ IFF_MULTI_BCAST = 0x1000
+ IFF_NOACCEPT = 0x4000000
+ IFF_NOARP = 0x80
+ IFF_NOFAILOVER = 0x8000000
+ IFF_NOLINKLOCAL = 0x20000000000
+ IFF_NOLOCAL = 0x20000
+ IFF_NONUD = 0x200000
+ IFF_NORTEXCH = 0x800000
+ IFF_NOTRAILERS = 0x20
+ IFF_NOXMIT = 0x10000
+ IFF_OFFLINE = 0x80000000
+ IFF_POINTOPOINT = 0x10
+ IFF_PREFERRED = 0x400000000
+ IFF_PRIVATE = 0x8000
+ IFF_PROMISC = 0x100
+ IFF_ROUTER = 0x100000
+ IFF_RUNNING = 0x40
+ IFF_STANDBY = 0x20000000
+ IFF_TEMPORARY = 0x800000000
+ IFF_UNNUMBERED = 0x2000
+ IFF_UP = 0x1
+ IFF_VIRTUAL = 0x2000000000
+ IFF_VRRP = 0x10000000000
+ IFF_XRESOLV = 0x100000000
+ IFNAMSIZ = 0x10
+ IFT_1822 = 0x2
+ IFT_6TO4 = 0xca
+ IFT_AAL5 = 0x31
+ IFT_ARCNET = 0x23
+ IFT_ARCNETPLUS = 0x24
+ IFT_ATM = 0x25
+ IFT_CEPT = 0x13
+ IFT_DS3 = 0x1e
+ IFT_EON = 0x19
+ IFT_ETHER = 0x6
+ IFT_FDDI = 0xf
+ IFT_FRELAY = 0x20
+ IFT_FRELAYDCE = 0x2c
+ IFT_HDH1822 = 0x3
+ IFT_HIPPI = 0x2f
+ IFT_HSSI = 0x2e
+ IFT_HY = 0xe
+ IFT_IB = 0xc7
+ IFT_IPV4 = 0xc8
+ IFT_IPV6 = 0xc9
+ IFT_ISDNBASIC = 0x14
+ IFT_ISDNPRIMARY = 0x15
+ IFT_ISO88022LLC = 0x29
+ IFT_ISO88023 = 0x7
+ IFT_ISO88024 = 0x8
+ IFT_ISO88025 = 0x9
+ IFT_ISO88026 = 0xa
+ IFT_LAPB = 0x10
+ IFT_LOCALTALK = 0x2a
+ IFT_LOOP = 0x18
+ IFT_MIOX25 = 0x26
+ IFT_MODEM = 0x30
+ IFT_NSIP = 0x1b
+ IFT_OTHER = 0x1
+ IFT_P10 = 0xc
+ IFT_P80 = 0xd
+ IFT_PARA = 0x22
+ IFT_PPP = 0x17
+ IFT_PROPMUX = 0x36
+ IFT_PROPVIRTUAL = 0x35
+ IFT_PTPSERIAL = 0x16
+ IFT_RS232 = 0x21
+ IFT_SDLC = 0x11
+ IFT_SIP = 0x1f
+ IFT_SLIP = 0x1c
+ IFT_SMDSDXI = 0x2b
+ IFT_SMDSICIP = 0x34
+ IFT_SONET = 0x27
+ IFT_SONETPATH = 0x32
+ IFT_SONETVT = 0x33
+ IFT_STARLAN = 0xb
+ IFT_T1 = 0x12
+ IFT_ULTRA = 0x1d
+ IFT_V35 = 0x2d
+ IFT_X25 = 0x5
+ IFT_X25DDN = 0x4
+ IFT_X25PLE = 0x28
+ IFT_XETHER = 0x1a
+ IGNBRK = 0x1
+ IGNCR = 0x80
+ IGNPAR = 0x4
+ IMAXBEL = 0x2000
+ INLCR = 0x40
+ INPCK = 0x10
+ IN_AUTOCONF_MASK = 0xffff0000
+ IN_AUTOCONF_NET = 0xa9fe0000
+ IN_CLASSA_HOST = 0xffffff
+ IN_CLASSA_MAX = 0x80
+ IN_CLASSA_NET = 0xff000000
+ IN_CLASSA_NSHIFT = 0x18
+ IN_CLASSB_HOST = 0xffff
+ IN_CLASSB_MAX = 0x10000
+ IN_CLASSB_NET = 0xffff0000
+ IN_CLASSB_NSHIFT = 0x10
+ IN_CLASSC_HOST = 0xff
+ IN_CLASSC_NET = 0xffffff00
+ IN_CLASSC_NSHIFT = 0x8
+ IN_CLASSD_HOST = 0xfffffff
+ IN_CLASSD_NET = 0xf0000000
+ IN_CLASSD_NSHIFT = 0x1c
+ IN_CLASSE_NET = 0xffffffff
+ IN_LOOPBACKNET = 0x7f
+ IN_PRIVATE12_MASK = 0xfff00000
+ IN_PRIVATE12_NET = 0xac100000
+ IN_PRIVATE16_MASK = 0xffff0000
+ IN_PRIVATE16_NET = 0xc0a80000
+ IN_PRIVATE8_MASK = 0xff000000
+ IN_PRIVATE8_NET = 0xa000000
+ IPPROTO_AH = 0x33
+ IPPROTO_DSTOPTS = 0x3c
+ IPPROTO_EGP = 0x8
+ IPPROTO_ENCAP = 0x4
+ IPPROTO_EON = 0x50
+ IPPROTO_ESP = 0x32
+ IPPROTO_FRAGMENT = 0x2c
+ IPPROTO_GGP = 0x3
+ IPPROTO_HELLO = 0x3f
+ IPPROTO_HOPOPTS = 0x0
+ IPPROTO_ICMP = 0x1
+ IPPROTO_ICMPV6 = 0x3a
+ IPPROTO_IDP = 0x16
+ IPPROTO_IGMP = 0x2
+ IPPROTO_IP = 0x0
+ IPPROTO_IPV6 = 0x29
+ IPPROTO_MAX = 0x100
+ IPPROTO_ND = 0x4d
+ IPPROTO_NONE = 0x3b
+ IPPROTO_OSPF = 0x59
+ IPPROTO_PIM = 0x67
+ IPPROTO_PUP = 0xc
+ IPPROTO_RAW = 0xff
+ IPPROTO_ROUTING = 0x2b
+ IPPROTO_RSVP = 0x2e
+ IPPROTO_SCTP = 0x84
+ IPPROTO_TCP = 0x6
+ IPPROTO_UDP = 0x11
+ IPV6_ADD_MEMBERSHIP = 0x9
+ IPV6_BOUND_IF = 0x41
+ IPV6_CHECKSUM = 0x18
+ IPV6_DONTFRAG = 0x21
+ IPV6_DROP_MEMBERSHIP = 0xa
+ IPV6_DSTOPTS = 0xf
+ IPV6_FLOWINFO_FLOWLABEL = 0xffff0f00
+ IPV6_FLOWINFO_TCLASS = 0xf00f
+ IPV6_HOPLIMIT = 0xc
+ IPV6_HOPOPTS = 0xe
+ IPV6_JOIN_GROUP = 0x9
+ IPV6_LEAVE_GROUP = 0xa
+ IPV6_MULTICAST_HOPS = 0x7
+ IPV6_MULTICAST_IF = 0x6
+ IPV6_MULTICAST_LOOP = 0x8
+ IPV6_NEXTHOP = 0xd
+ IPV6_PAD1_OPT = 0x0
+ IPV6_PATHMTU = 0x25
+ IPV6_PKTINFO = 0xb
+ IPV6_PREFER_SRC_CGA = 0x20
+ IPV6_PREFER_SRC_CGADEFAULT = 0x10
+ IPV6_PREFER_SRC_CGAMASK = 0x30
+ IPV6_PREFER_SRC_COA = 0x2
+ IPV6_PREFER_SRC_DEFAULT = 0x15
+ IPV6_PREFER_SRC_HOME = 0x1
+ IPV6_PREFER_SRC_MASK = 0x3f
+ IPV6_PREFER_SRC_MIPDEFAULT = 0x1
+ IPV6_PREFER_SRC_MIPMASK = 0x3
+ IPV6_PREFER_SRC_NONCGA = 0x10
+ IPV6_PREFER_SRC_PUBLIC = 0x4
+ IPV6_PREFER_SRC_TMP = 0x8
+ IPV6_PREFER_SRC_TMPDEFAULT = 0x4
+ IPV6_PREFER_SRC_TMPMASK = 0xc
+ IPV6_RECVDSTOPTS = 0x28
+ IPV6_RECVHOPLIMIT = 0x13
+ IPV6_RECVHOPOPTS = 0x14
+ IPV6_RECVPATHMTU = 0x24
+ IPV6_RECVPKTINFO = 0x12
+ IPV6_RECVRTHDR = 0x16
+ IPV6_RECVRTHDRDSTOPTS = 0x17
+ IPV6_RECVTCLASS = 0x19
+ IPV6_RTHDR = 0x10
+ IPV6_RTHDRDSTOPTS = 0x11
+ IPV6_RTHDR_TYPE_0 = 0x0
+ IPV6_SEC_OPT = 0x22
+ IPV6_SRC_PREFERENCES = 0x23
+ IPV6_TCLASS = 0x26
+ IPV6_UNICAST_HOPS = 0x5
+ IPV6_UNSPEC_SRC = 0x42
+ IPV6_USE_MIN_MTU = 0x20
+ IPV6_V6ONLY = 0x27
+ IP_ADD_MEMBERSHIP = 0x13
+ IP_ADD_SOURCE_MEMBERSHIP = 0x17
+ IP_BLOCK_SOURCE = 0x15
+ IP_BOUND_IF = 0x41
+ IP_BROADCAST = 0x106
+ IP_BROADCAST_TTL = 0x43
+ IP_DEFAULT_MULTICAST_LOOP = 0x1
+ IP_DEFAULT_MULTICAST_TTL = 0x1
+ IP_DF = 0x4000
+ IP_DHCPINIT_IF = 0x45
+ IP_DONTFRAG = 0x1b
+ IP_DONTROUTE = 0x105
+ IP_DROP_MEMBERSHIP = 0x14
+ IP_DROP_SOURCE_MEMBERSHIP = 0x18
+ IP_HDRINCL = 0x2
+ IP_MAXPACKET = 0xffff
+ IP_MF = 0x2000
+ IP_MSS = 0x240
+ IP_MULTICAST_IF = 0x10
+ IP_MULTICAST_LOOP = 0x12
+ IP_MULTICAST_TTL = 0x11
+ IP_NEXTHOP = 0x19
+ IP_OPTIONS = 0x1
+ IP_PKTINFO = 0x1a
+ IP_RECVDSTADDR = 0x7
+ IP_RECVIF = 0x9
+ IP_RECVOPTS = 0x5
+ IP_RECVPKTINFO = 0x1a
+ IP_RECVRETOPTS = 0x6
+ IP_RECVSLLA = 0xa
+ IP_RECVTTL = 0xb
+ IP_RETOPTS = 0x8
+ IP_REUSEADDR = 0x104
+ IP_SEC_OPT = 0x22
+ IP_TOS = 0x3
+ IP_TTL = 0x4
+ IP_UNBLOCK_SOURCE = 0x16
+ IP_UNSPEC_SRC = 0x42
+ ISIG = 0x1
+ ISTRIP = 0x20
+ IXANY = 0x800
+ IXOFF = 0x1000
+ IXON = 0x400
+ MADV_ACCESS_DEFAULT = 0x6
+ MADV_ACCESS_LWP = 0x7
+ MADV_ACCESS_MANY = 0x8
+ MADV_DONTNEED = 0x4
+ MADV_FREE = 0x5
+ MADV_NORMAL = 0x0
+ MADV_RANDOM = 0x1
+ MADV_SEQUENTIAL = 0x2
+ MADV_WILLNEED = 0x3
+ MAP_32BIT = 0x80
+ MAP_ALIGN = 0x200
+ MAP_ANON = 0x100
+ MAP_ANONYMOUS = 0x100
+ MAP_FIXED = 0x10
+ MAP_INITDATA = 0x800
+ MAP_NORESERVE = 0x40
+ MAP_PRIVATE = 0x2
+ MAP_RENAME = 0x20
+ MAP_SHARED = 0x1
+ MAP_TEXT = 0x400
+ MAP_TYPE = 0xf
+ MCL_CURRENT = 0x1
+ MCL_FUTURE = 0x2
+ MSG_CTRUNC = 0x10
+ MSG_DONTROUTE = 0x4
+ MSG_DONTWAIT = 0x80
+ MSG_DUPCTRL = 0x800
+ MSG_EOR = 0x8
+ MSG_MAXIOVLEN = 0x10
+ MSG_NOTIFICATION = 0x100
+ MSG_OOB = 0x1
+ MSG_PEEK = 0x2
+ MSG_TRUNC = 0x20
+ MSG_WAITALL = 0x40
+ MSG_XPG4_2 = 0x8000
+ MS_ASYNC = 0x1
+ MS_INVALIDATE = 0x2
+ MS_OLDSYNC = 0x0
+ MS_SYNC = 0x4
+ M_FLUSH = 0x86
+ NOFLSH = 0x80
+ OCRNL = 0x8
+ OFDEL = 0x80
+ OFILL = 0x40
+ ONLCR = 0x4
+ ONLRET = 0x20
+ ONOCR = 0x10
+ OPENFAIL = -0x1
+ OPOST = 0x1
+ O_ACCMODE = 0x600003
+ O_APPEND = 0x8
+ O_CLOEXEC = 0x800000
+ O_CREAT = 0x100
+ O_DSYNC = 0x40
+ O_EXCL = 0x400
+ O_EXEC = 0x400000
+ O_LARGEFILE = 0x2000
+ O_NDELAY = 0x4
+ O_NOCTTY = 0x800
+ O_NOFOLLOW = 0x20000
+ O_NOLINKS = 0x40000
+ O_NONBLOCK = 0x80
+ O_RDONLY = 0x0
+ O_RDWR = 0x2
+ O_RSYNC = 0x8000
+ O_SEARCH = 0x200000
+ O_SIOCGIFCONF = -0x3ff796ec
+ O_SIOCGLIFCONF = -0x3fef9688
+ O_SYNC = 0x10
+ O_TRUNC = 0x200
+ O_WRONLY = 0x1
+ O_XATTR = 0x4000
+ PARENB = 0x100
+ PAREXT = 0x100000
+ PARMRK = 0x8
+ PARODD = 0x200
+ PENDIN = 0x4000
+ PRIO_PGRP = 0x1
+ PRIO_PROCESS = 0x0
+ PRIO_USER = 0x2
+ PROT_EXEC = 0x4
+ PROT_NONE = 0x0
+ PROT_READ = 0x1
+ PROT_WRITE = 0x2
+ RLIMIT_AS = 0x6
+ RLIMIT_CORE = 0x4
+ RLIMIT_CPU = 0x0
+ RLIMIT_DATA = 0x2
+ RLIMIT_FSIZE = 0x1
+ RLIMIT_NOFILE = 0x5
+ RLIMIT_STACK = 0x3
+ RLIM_INFINITY = -0x3
+ RTAX_AUTHOR = 0x6
+ RTAX_BRD = 0x7
+ RTAX_DST = 0x0
+ RTAX_GATEWAY = 0x1
+ RTAX_GENMASK = 0x3
+ RTAX_IFA = 0x5
+ RTAX_IFP = 0x4
+ RTAX_MAX = 0x9
+ RTAX_NETMASK = 0x2
+ RTAX_SRC = 0x8
+ RTA_AUTHOR = 0x40
+ RTA_BRD = 0x80
+ RTA_DST = 0x1
+ RTA_GATEWAY = 0x2
+ RTA_GENMASK = 0x8
+ RTA_IFA = 0x20
+ RTA_IFP = 0x10
+ RTA_NETMASK = 0x4
+ RTA_NUMBITS = 0x9
+ RTA_SRC = 0x100
+ RTF_BLACKHOLE = 0x1000
+ RTF_CLONING = 0x100
+ RTF_DONE = 0x40
+ RTF_DYNAMIC = 0x10
+ RTF_GATEWAY = 0x2
+ RTF_HOST = 0x4
+ RTF_INDIRECT = 0x40000
+ RTF_KERNEL = 0x80000
+ RTF_LLINFO = 0x400
+ RTF_MASK = 0x80
+ RTF_MODIFIED = 0x20
+ RTF_MULTIRT = 0x10000
+ RTF_PRIVATE = 0x2000
+ RTF_PROTO1 = 0x8000
+ RTF_PROTO2 = 0x4000
+ RTF_REJECT = 0x8
+ RTF_SETSRC = 0x20000
+ RTF_STATIC = 0x800
+ RTF_UP = 0x1
+ RTF_XRESOLVE = 0x200
+ RTF_ZONE = 0x100000
+ RTM_ADD = 0x1
+ RTM_CHANGE = 0x3
+ RTM_CHGADDR = 0xf
+ RTM_DELADDR = 0xd
+ RTM_DELETE = 0x2
+ RTM_FREEADDR = 0x10
+ RTM_GET = 0x4
+ RTM_IFINFO = 0xe
+ RTM_LOCK = 0x8
+ RTM_LOSING = 0x5
+ RTM_MISS = 0x7
+ RTM_NEWADDR = 0xc
+ RTM_OLDADD = 0x9
+ RTM_OLDDEL = 0xa
+ RTM_REDIRECT = 0x6
+ RTM_RESOLVE = 0xb
+ RTM_VERSION = 0x3
+ RTV_EXPIRE = 0x4
+ RTV_HOPCOUNT = 0x2
+ RTV_MTU = 0x1
+ RTV_RPIPE = 0x8
+ RTV_RTT = 0x40
+ RTV_RTTVAR = 0x80
+ RTV_SPIPE = 0x10
+ RTV_SSTHRESH = 0x20
+ RT_AWARE = 0x1
+ RUSAGE_CHILDREN = -0x1
+ RUSAGE_SELF = 0x0
+ SCM_RIGHTS = 0x1010
+ SCM_TIMESTAMP = 0x1013
+ SCM_UCRED = 0x1012
+ SHUT_RD = 0x0
+ SHUT_RDWR = 0x2
+ SHUT_WR = 0x1
+ SIG2STR_MAX = 0x20
+ SIOCADDMULTI = -0x7fdf96cf
+ SIOCADDRT = -0x7fcf8df6
+ SIOCATMARK = 0x40047307
+ SIOCDARP = -0x7fdb96e0
+ SIOCDELMULTI = -0x7fdf96ce
+ SIOCDELRT = -0x7fcf8df5
+ SIOCDXARP = -0x7fff9658
+ SIOCGARP = -0x3fdb96e1
+ SIOCGDSTINFO = -0x3fff965c
+ SIOCGENADDR = -0x3fdf96ab
+ SIOCGENPSTATS = -0x3fdf96c7
+ SIOCGETLSGCNT = -0x3fef8deb
+ SIOCGETNAME = 0x40107334
+ SIOCGETPEER = 0x40107335
+ SIOCGETPROP = -0x3fff8f44
+ SIOCGETSGCNT = -0x3feb8deb
+ SIOCGETSYNC = -0x3fdf96d3
+ SIOCGETVIFCNT = -0x3feb8dec
+ SIOCGHIWAT = 0x40047301
+ SIOCGIFADDR = -0x3fdf96f3
+ SIOCGIFBRDADDR = -0x3fdf96e9
+ SIOCGIFCONF = -0x3ff796a4
+ SIOCGIFDSTADDR = -0x3fdf96f1
+ SIOCGIFFLAGS = -0x3fdf96ef
+ SIOCGIFHWADDR = -0x3fdf9647
+ SIOCGIFINDEX = -0x3fdf96a6
+ SIOCGIFMEM = -0x3fdf96ed
+ SIOCGIFMETRIC = -0x3fdf96e5
+ SIOCGIFMTU = -0x3fdf96ea
+ SIOCGIFMUXID = -0x3fdf96a8
+ SIOCGIFNETMASK = -0x3fdf96e7
+ SIOCGIFNUM = 0x40046957
+ SIOCGIP6ADDRPOLICY = -0x3fff965e
+ SIOCGIPMSFILTER = -0x3ffb964c
+ SIOCGLIFADDR = -0x3f87968f
+ SIOCGLIFBINDING = -0x3f879666
+ SIOCGLIFBRDADDR = -0x3f879685
+ SIOCGLIFCONF = -0x3fef965b
+ SIOCGLIFDADSTATE = -0x3f879642
+ SIOCGLIFDSTADDR = -0x3f87968d
+ SIOCGLIFFLAGS = -0x3f87968b
+ SIOCGLIFGROUPINFO = -0x3f4b9663
+ SIOCGLIFGROUPNAME = -0x3f879664
+ SIOCGLIFHWADDR = -0x3f879640
+ SIOCGLIFINDEX = -0x3f87967b
+ SIOCGLIFLNKINFO = -0x3f879674
+ SIOCGLIFMETRIC = -0x3f879681
+ SIOCGLIFMTU = -0x3f879686
+ SIOCGLIFMUXID = -0x3f87967d
+ SIOCGLIFNETMASK = -0x3f879683
+ SIOCGLIFNUM = -0x3ff3967e
+ SIOCGLIFSRCOF = -0x3fef964f
+ SIOCGLIFSUBNET = -0x3f879676
+ SIOCGLIFTOKEN = -0x3f879678
+ SIOCGLIFUSESRC = -0x3f879651
+ SIOCGLIFZONE = -0x3f879656
+ SIOCGLOWAT = 0x40047303
+ SIOCGMSFILTER = -0x3ffb964e
+ SIOCGPGRP = 0x40047309
+ SIOCGSTAMP = -0x3fef9646
+ SIOCGXARP = -0x3fff9659
+ SIOCIFDETACH = -0x7fdf96c8
+ SIOCILB = -0x3ffb9645
+ SIOCLIFADDIF = -0x3f879691
+ SIOCLIFDELND = -0x7f879673
+ SIOCLIFGETND = -0x3f879672
+ SIOCLIFREMOVEIF = -0x7f879692
+ SIOCLIFSETND = -0x7f879671
+ SIOCLOWER = -0x7fdf96d7
+ SIOCSARP = -0x7fdb96e2
+ SIOCSCTPGOPT = -0x3fef9653
+ SIOCSCTPPEELOFF = -0x3ffb9652
+ SIOCSCTPSOPT = -0x7fef9654
+ SIOCSENABLESDP = -0x3ffb9649
+ SIOCSETPROP = -0x7ffb8f43
+ SIOCSETSYNC = -0x7fdf96d4
+ SIOCSHIWAT = -0x7ffb8d00
+ SIOCSIFADDR = -0x7fdf96f4
+ SIOCSIFBRDADDR = -0x7fdf96e8
+ SIOCSIFDSTADDR = -0x7fdf96f2
+ SIOCSIFFLAGS = -0x7fdf96f0
+ SIOCSIFINDEX = -0x7fdf96a5
+ SIOCSIFMEM = -0x7fdf96ee
+ SIOCSIFMETRIC = -0x7fdf96e4
+ SIOCSIFMTU = -0x7fdf96eb
+ SIOCSIFMUXID = -0x7fdf96a7
+ SIOCSIFNAME = -0x7fdf96b7
+ SIOCSIFNETMASK = -0x7fdf96e6
+ SIOCSIP6ADDRPOLICY = -0x7fff965d
+ SIOCSIPMSFILTER = -0x7ffb964b
+ SIOCSLGETREQ = -0x3fdf96b9
+ SIOCSLIFADDR = -0x7f879690
+ SIOCSLIFBRDADDR = -0x7f879684
+ SIOCSLIFDSTADDR = -0x7f87968e
+ SIOCSLIFFLAGS = -0x7f87968c
+ SIOCSLIFGROUPNAME = -0x7f879665
+ SIOCSLIFINDEX = -0x7f87967a
+ SIOCSLIFLNKINFO = -0x7f879675
+ SIOCSLIFMETRIC = -0x7f879680
+ SIOCSLIFMTU = -0x7f879687
+ SIOCSLIFMUXID = -0x7f87967c
+ SIOCSLIFNAME = -0x3f87967f
+ SIOCSLIFNETMASK = -0x7f879682
+ SIOCSLIFPREFIX = -0x3f879641
+ SIOCSLIFSUBNET = -0x7f879677
+ SIOCSLIFTOKEN = -0x7f879679
+ SIOCSLIFUSESRC = -0x7f879650
+ SIOCSLIFZONE = -0x7f879655
+ SIOCSLOWAT = -0x7ffb8cfe
+ SIOCSLSTAT = -0x7fdf96b8
+ SIOCSMSFILTER = -0x7ffb964d
+ SIOCSPGRP = -0x7ffb8cf8
+ SIOCSPROMISC = -0x7ffb96d0
+ SIOCSQPTR = -0x3ffb9648
+ SIOCSSDSTATS = -0x3fdf96d2
+ SIOCSSESTATS = -0x3fdf96d1
+ SIOCSXARP = -0x7fff965a
+ SIOCTMYADDR = -0x3ff79670
+ SIOCTMYSITE = -0x3ff7966e
+ SIOCTONLINK = -0x3ff7966f
+ SIOCUPPER = -0x7fdf96d8
+ SIOCX25RCV = -0x3fdf96c4
+ SIOCX25TBL = -0x3fdf96c3
+ SIOCX25XMT = -0x3fdf96c5
+ SIOCXPROTO = 0x20007337
+ SOCK_CLOEXEC = 0x80000
+ SOCK_DGRAM = 0x1
+ SOCK_NDELAY = 0x200000
+ SOCK_NONBLOCK = 0x100000
+ SOCK_RAW = 0x4
+ SOCK_RDM = 0x5
+ SOCK_SEQPACKET = 0x6
+ SOCK_STREAM = 0x2
+ SOCK_TYPE_MASK = 0xffff
+ SOL_FILTER = 0xfffc
+ SOL_PACKET = 0xfffd
+ SOL_ROUTE = 0xfffe
+ SOL_SOCKET = 0xffff
+ SOMAXCONN = 0x80
+ SO_ACCEPTCONN = 0x2
+ SO_ALL = 0x3f
+ SO_ALLZONES = 0x1014
+ SO_ANON_MLP = 0x100a
+ SO_ATTACH_FILTER = 0x40000001
+ SO_BAND = 0x4000
+ SO_BROADCAST = 0x20
+ SO_COPYOPT = 0x80000
+ SO_DEBUG = 0x1
+ SO_DELIM = 0x8000
+ SO_DETACH_FILTER = 0x40000002
+ SO_DGRAM_ERRIND = 0x200
+ SO_DOMAIN = 0x100c
+ SO_DONTLINGER = -0x81
+ SO_DONTROUTE = 0x10
+ SO_ERROPT = 0x40000
+ SO_ERROR = 0x1007
+ SO_EXCLBIND = 0x1015
+ SO_HIWAT = 0x10
+ SO_ISNTTY = 0x800
+ SO_ISTTY = 0x400
+ SO_KEEPALIVE = 0x8
+ SO_LINGER = 0x80
+ SO_LOWAT = 0x20
+ SO_MAC_EXEMPT = 0x100b
+ SO_MAC_IMPLICIT = 0x1016
+ SO_MAXBLK = 0x100000
+ SO_MAXPSZ = 0x8
+ SO_MINPSZ = 0x4
+ SO_MREADOFF = 0x80
+ SO_MREADON = 0x40
+ SO_NDELOFF = 0x200
+ SO_NDELON = 0x100
+ SO_NODELIM = 0x10000
+ SO_OOBINLINE = 0x100
+ SO_PROTOTYPE = 0x1009
+ SO_RCVBUF = 0x1002
+ SO_RCVLOWAT = 0x1004
+ SO_RCVPSH = 0x100d
+ SO_RCVTIMEO = 0x1006
+ SO_READOPT = 0x1
+ SO_RECVUCRED = 0x400
+ SO_REUSEADDR = 0x4
+ SO_SECATTR = 0x1011
+ SO_SNDBUF = 0x1001
+ SO_SNDLOWAT = 0x1003
+ SO_SNDTIMEO = 0x1005
+ SO_STRHOLD = 0x20000
+ SO_TAIL = 0x200000
+ SO_TIMESTAMP = 0x1013
+ SO_TONSTOP = 0x2000
+ SO_TOSTOP = 0x1000
+ SO_TYPE = 0x1008
+ SO_USELOOPBACK = 0x40
+ SO_VRRP = 0x1017
+ SO_WROFF = 0x2
+ TCFLSH = 0x5407
+ TCGETA = 0x5401
+ TCGETS = 0x540d
+ TCIFLUSH = 0x0
+ TCIOFLUSH = 0x2
+ TCOFLUSH = 0x1
+ TCP_ABORT_THRESHOLD = 0x11
+ TCP_ANONPRIVBIND = 0x20
+ TCP_CONN_ABORT_THRESHOLD = 0x13
+ TCP_CONN_NOTIFY_THRESHOLD = 0x12
+ TCP_CORK = 0x18
+ TCP_EXCLBIND = 0x21
+ TCP_INIT_CWND = 0x15
+ TCP_KEEPALIVE = 0x8
+ TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17
+ TCP_KEEPALIVE_THRESHOLD = 0x16
+ TCP_KEEPCNT = 0x23
+ TCP_KEEPIDLE = 0x22
+ TCP_KEEPINTVL = 0x24
+ TCP_LINGER2 = 0x1c
+ TCP_MAXSEG = 0x2
+ TCP_MSS = 0x218
+ TCP_NODELAY = 0x1
+ TCP_NOTIFY_THRESHOLD = 0x10
+ TCP_RECVDSTADDR = 0x14
+ TCP_RTO_INITIAL = 0x19
+ TCP_RTO_MAX = 0x1b
+ TCP_RTO_MIN = 0x1a
+ TCSAFLUSH = 0x5410
+ TCSBRK = 0x5405
+ TCSETA = 0x5402
+ TCSETAF = 0x5404
+ TCSETAW = 0x5403
+ TCSETS = 0x540e
+ TCSETSF = 0x5410
+ TCSETSW = 0x540f
+ TCXONC = 0x5406
+ TIOC = 0x5400
+ TIOCCBRK = 0x747a
+ TIOCCDTR = 0x7478
+ TIOCCILOOP = 0x746c
+ TIOCEXCL = 0x740d
+ TIOCFLUSH = 0x7410
+ TIOCGETC = 0x7412
+ TIOCGETD = 0x7400
+ TIOCGETP = 0x7408
+ TIOCGLTC = 0x7474
+ TIOCGPGRP = 0x7414
+ TIOCGPPS = 0x547d
+ TIOCGPPSEV = 0x547f
+ TIOCGSID = 0x7416
+ TIOCGSOFTCAR = 0x5469
+ TIOCGWINSZ = 0x5468
+ TIOCHPCL = 0x7402
+ TIOCKBOF = 0x5409
+ TIOCKBON = 0x5408
+ TIOCLBIC = 0x747e
+ TIOCLBIS = 0x747f
+ TIOCLGET = 0x747c
+ TIOCLSET = 0x747d
+ TIOCMBIC = 0x741c
+ TIOCMBIS = 0x741b
+ TIOCMGET = 0x741d
+ TIOCMSET = 0x741a
+ TIOCM_CAR = 0x40
+ TIOCM_CD = 0x40
+ TIOCM_CTS = 0x20
+ TIOCM_DSR = 0x100
+ TIOCM_DTR = 0x2
+ TIOCM_LE = 0x1
+ TIOCM_RI = 0x80
+ TIOCM_RNG = 0x80
+ TIOCM_RTS = 0x4
+ TIOCM_SR = 0x10
+ TIOCM_ST = 0x8
+ TIOCNOTTY = 0x7471
+ TIOCNXCL = 0x740e
+ TIOCOUTQ = 0x7473
+ TIOCREMOTE = 0x741e
+ TIOCSBRK = 0x747b
+ TIOCSCTTY = 0x7484
+ TIOCSDTR = 0x7479
+ TIOCSETC = 0x7411
+ TIOCSETD = 0x7401
+ TIOCSETN = 0x740a
+ TIOCSETP = 0x7409
+ TIOCSIGNAL = 0x741f
+ TIOCSILOOP = 0x746d
+ TIOCSLTC = 0x7475
+ TIOCSPGRP = 0x7415
+ TIOCSPPS = 0x547e
+ TIOCSSOFTCAR = 0x546a
+ TIOCSTART = 0x746e
+ TIOCSTI = 0x7417
+ TIOCSTOP = 0x746f
+ TIOCSWINSZ = 0x5467
+ TOSTOP = 0x100
+ VCEOF = 0x8
+ VCEOL = 0x9
+ VDISCARD = 0xd
+ VDSUSP = 0xb
+ VEOF = 0x4
+ VEOL = 0x5
+ VEOL2 = 0x6
+ VERASE = 0x2
+ VINTR = 0x0
+ VKILL = 0x3
+ VLNEXT = 0xf
+ VMIN = 0x4
+ VQUIT = 0x1
+ VREPRINT = 0xc
+ VSTART = 0x8
+ VSTATUS = 0x10
+ VSTOP = 0x9
+ VSUSP = 0xa
+ VSWTCH = 0x7
+ VT0 = 0x0
+ VT1 = 0x4000
+ VTDLY = 0x4000
+ VTIME = 0x5
+ VWERASE = 0xe
+ WCONTFLG = 0xffff
+ WCONTINUED = 0x8
+ WCOREFLG = 0x80
+ WEXITED = 0x1
+ WNOHANG = 0x40
+ WNOWAIT = 0x80
+ WOPTMASK = 0xcf
+ WRAP = 0x20000
+ WSIGMASK = 0x7f
+ WSTOPFLG = 0x7f
+ WSTOPPED = 0x4
+ WTRAPPED = 0x2
+ WUNTRACED = 0x4
+)
+
+// Errors
+const (
+ E2BIG = syscall.Errno(0x7)
+ EACCES = syscall.Errno(0xd)
+ EADDRINUSE = syscall.Errno(0x7d)
+ EADDRNOTAVAIL = syscall.Errno(0x7e)
+ EADV = syscall.Errno(0x44)
+ EAFNOSUPPORT = syscall.Errno(0x7c)
+ EAGAIN = syscall.Errno(0xb)
+ EALREADY = syscall.Errno(0x95)
+ EBADE = syscall.Errno(0x32)
+ EBADF = syscall.Errno(0x9)
+ EBADFD = syscall.Errno(0x51)
+ EBADMSG = syscall.Errno(0x4d)
+ EBADR = syscall.Errno(0x33)
+ EBADRQC = syscall.Errno(0x36)
+ EBADSLT = syscall.Errno(0x37)
+ EBFONT = syscall.Errno(0x39)
+ EBUSY = syscall.Errno(0x10)
+ ECANCELED = syscall.Errno(0x2f)
+ ECHILD = syscall.Errno(0xa)
+ ECHRNG = syscall.Errno(0x25)
+ ECOMM = syscall.Errno(0x46)
+ ECONNABORTED = syscall.Errno(0x82)
+ ECONNREFUSED = syscall.Errno(0x92)
+ ECONNRESET = syscall.Errno(0x83)
+ EDEADLK = syscall.Errno(0x2d)
+ EDEADLOCK = syscall.Errno(0x38)
+ EDESTADDRREQ = syscall.Errno(0x60)
+ EDOM = syscall.Errno(0x21)
+ EDQUOT = syscall.Errno(0x31)
+ EEXIST = syscall.Errno(0x11)
+ EFAULT = syscall.Errno(0xe)
+ EFBIG = syscall.Errno(0x1b)
+ EHOSTDOWN = syscall.Errno(0x93)
+ EHOSTUNREACH = syscall.Errno(0x94)
+ EIDRM = syscall.Errno(0x24)
+ EILSEQ = syscall.Errno(0x58)
+ EINPROGRESS = syscall.Errno(0x96)
+ EINTR = syscall.Errno(0x4)
+ EINVAL = syscall.Errno(0x16)
+ EIO = syscall.Errno(0x5)
+ EISCONN = syscall.Errno(0x85)
+ EISDIR = syscall.Errno(0x15)
+ EL2HLT = syscall.Errno(0x2c)
+ EL2NSYNC = syscall.Errno(0x26)
+ EL3HLT = syscall.Errno(0x27)
+ EL3RST = syscall.Errno(0x28)
+ ELIBACC = syscall.Errno(0x53)
+ ELIBBAD = syscall.Errno(0x54)
+ ELIBEXEC = syscall.Errno(0x57)
+ ELIBMAX = syscall.Errno(0x56)
+ ELIBSCN = syscall.Errno(0x55)
+ ELNRNG = syscall.Errno(0x29)
+ ELOCKUNMAPPED = syscall.Errno(0x48)
+ ELOOP = syscall.Errno(0x5a)
+ EMFILE = syscall.Errno(0x18)
+ EMLINK = syscall.Errno(0x1f)
+ EMSGSIZE = syscall.Errno(0x61)
+ EMULTIHOP = syscall.Errno(0x4a)
+ ENAMETOOLONG = syscall.Errno(0x4e)
+ ENETDOWN = syscall.Errno(0x7f)
+ ENETRESET = syscall.Errno(0x81)
+ ENETUNREACH = syscall.Errno(0x80)
+ ENFILE = syscall.Errno(0x17)
+ ENOANO = syscall.Errno(0x35)
+ ENOBUFS = syscall.Errno(0x84)
+ ENOCSI = syscall.Errno(0x2b)
+ ENODATA = syscall.Errno(0x3d)
+ ENODEV = syscall.Errno(0x13)
+ ENOENT = syscall.Errno(0x2)
+ ENOEXEC = syscall.Errno(0x8)
+ ENOLCK = syscall.Errno(0x2e)
+ ENOLINK = syscall.Errno(0x43)
+ ENOMEM = syscall.Errno(0xc)
+ ENOMSG = syscall.Errno(0x23)
+ ENONET = syscall.Errno(0x40)
+ ENOPKG = syscall.Errno(0x41)
+ ENOPROTOOPT = syscall.Errno(0x63)
+ ENOSPC = syscall.Errno(0x1c)
+ ENOSR = syscall.Errno(0x3f)
+ ENOSTR = syscall.Errno(0x3c)
+ ENOSYS = syscall.Errno(0x59)
+ ENOTACTIVE = syscall.Errno(0x49)
+ ENOTBLK = syscall.Errno(0xf)
+ ENOTCONN = syscall.Errno(0x86)
+ ENOTDIR = syscall.Errno(0x14)
+ ENOTEMPTY = syscall.Errno(0x5d)
+ ENOTRECOVERABLE = syscall.Errno(0x3b)
+ ENOTSOCK = syscall.Errno(0x5f)
+ ENOTSUP = syscall.Errno(0x30)
+ ENOTTY = syscall.Errno(0x19)
+ ENOTUNIQ = syscall.Errno(0x50)
+ ENXIO = syscall.Errno(0x6)
+ EOPNOTSUPP = syscall.Errno(0x7a)
+ EOVERFLOW = syscall.Errno(0x4f)
+ EOWNERDEAD = syscall.Errno(0x3a)
+ EPERM = syscall.Errno(0x1)
+ EPFNOSUPPORT = syscall.Errno(0x7b)
+ EPIPE = syscall.Errno(0x20)
+ EPROTO = syscall.Errno(0x47)
+ EPROTONOSUPPORT = syscall.Errno(0x78)
+ EPROTOTYPE = syscall.Errno(0x62)
+ ERANGE = syscall.Errno(0x22)
+ EREMCHG = syscall.Errno(0x52)
+ EREMOTE = syscall.Errno(0x42)
+ ERESTART = syscall.Errno(0x5b)
+ EROFS = syscall.Errno(0x1e)
+ ESHUTDOWN = syscall.Errno(0x8f)
+ ESOCKTNOSUPPORT = syscall.Errno(0x79)
+ ESPIPE = syscall.Errno(0x1d)
+ ESRCH = syscall.Errno(0x3)
+ ESRMNT = syscall.Errno(0x45)
+ ESTALE = syscall.Errno(0x97)
+ ESTRPIPE = syscall.Errno(0x5c)
+ ETIME = syscall.Errno(0x3e)
+ ETIMEDOUT = syscall.Errno(0x91)
+ ETOOMANYREFS = syscall.Errno(0x90)
+ ETXTBSY = syscall.Errno(0x1a)
+ EUNATCH = syscall.Errno(0x2a)
+ EUSERS = syscall.Errno(0x5e)
+ EWOULDBLOCK = syscall.Errno(0xb)
+ EXDEV = syscall.Errno(0x12)
+ EXFULL = syscall.Errno(0x34)
+)
+
+// Signals
+const (
+ SIGABRT = syscall.Signal(0x6)
+ SIGALRM = syscall.Signal(0xe)
+ SIGBUS = syscall.Signal(0xa)
+ SIGCANCEL = syscall.Signal(0x24)
+ SIGCHLD = syscall.Signal(0x12)
+ SIGCLD = syscall.Signal(0x12)
+ SIGCONT = syscall.Signal(0x19)
+ SIGEMT = syscall.Signal(0x7)
+ SIGFPE = syscall.Signal(0x8)
+ SIGFREEZE = syscall.Signal(0x22)
+ SIGHUP = syscall.Signal(0x1)
+ SIGILL = syscall.Signal(0x4)
+ SIGINFO = syscall.Signal(0x29)
+ SIGINT = syscall.Signal(0x2)
+ SIGIO = syscall.Signal(0x16)
+ SIGIOT = syscall.Signal(0x6)
+ SIGJVM1 = syscall.Signal(0x27)
+ SIGJVM2 = syscall.Signal(0x28)
+ SIGKILL = syscall.Signal(0x9)
+ SIGLOST = syscall.Signal(0x25)
+ SIGLWP = syscall.Signal(0x21)
+ SIGPIPE = syscall.Signal(0xd)
+ SIGPOLL = syscall.Signal(0x16)
+ SIGPROF = syscall.Signal(0x1d)
+ SIGPWR = syscall.Signal(0x13)
+ SIGQUIT = syscall.Signal(0x3)
+ SIGSEGV = syscall.Signal(0xb)
+ SIGSTOP = syscall.Signal(0x17)
+ SIGSYS = syscall.Signal(0xc)
+ SIGTERM = syscall.Signal(0xf)
+ SIGTHAW = syscall.Signal(0x23)
+ SIGTRAP = syscall.Signal(0x5)
+ SIGTSTP = syscall.Signal(0x18)
+ SIGTTIN = syscall.Signal(0x1a)
+ SIGTTOU = syscall.Signal(0x1b)
+ SIGURG = syscall.Signal(0x15)
+ SIGUSR1 = syscall.Signal(0x10)
+ SIGUSR2 = syscall.Signal(0x11)
+ SIGVTALRM = syscall.Signal(0x1c)
+ SIGWAITING = syscall.Signal(0x20)
+ SIGWINCH = syscall.Signal(0x14)
+ SIGXCPU = syscall.Signal(0x1e)
+ SIGXFSZ = syscall.Signal(0x1f)
+ SIGXRES = syscall.Signal(0x26)
+)
+
+// Error table
+var errors = [...]string{
+ 1: "not owner",
+ 2: "no such file or directory",
+ 3: "no such process",
+ 4: "interrupted system call",
+ 5: "I/O error",
+ 6: "no such device or address",
+ 7: "arg list too long",
+ 8: "exec format error",
+ 9: "bad file number",
+ 10: "no child processes",
+ 11: "resource temporarily unavailable",
+ 12: "not enough space",
+ 13: "permission denied",
+ 14: "bad address",
+ 15: "block device required",
+ 16: "device busy",
+ 17: "file exists",
+ 18: "cross-device link",
+ 19: "no such device",
+ 20: "not a directory",
+ 21: "is a directory",
+ 22: "invalid argument",
+ 23: "file table overflow",
+ 24: "too many open files",
+ 25: "inappropriate ioctl for device",
+ 26: "text file busy",
+ 27: "file too large",
+ 28: "no space left on device",
+ 29: "illegal seek",
+ 30: "read-only file system",
+ 31: "too many links",
+ 32: "broken pipe",
+ 33: "argument out of domain",
+ 34: "result too large",
+ 35: "no message of desired type",
+ 36: "identifier removed",
+ 37: "channel number out of range",
+ 38: "level 2 not synchronized",
+ 39: "level 3 halted",
+ 40: "level 3 reset",
+ 41: "link number out of range",
+ 42: "protocol driver not attached",
+ 43: "no CSI structure available",
+ 44: "level 2 halted",
+ 45: "deadlock situation detected/avoided",
+ 46: "no record locks available",
+ 47: "operation canceled",
+ 48: "operation not supported",
+ 49: "disc quota exceeded",
+ 50: "bad exchange descriptor",
+ 51: "bad request descriptor",
+ 52: "message tables full",
+ 53: "anode table overflow",
+ 54: "bad request code",
+ 55: "invalid slot",
+ 56: "file locking deadlock",
+ 57: "bad font file format",
+ 58: "owner of the lock died",
+ 59: "lock is not recoverable",
+ 60: "not a stream device",
+ 61: "no data available",
+ 62: "timer expired",
+ 63: "out of stream resources",
+ 64: "machine is not on the network",
+ 65: "package not installed",
+ 66: "object is remote",
+ 67: "link has been severed",
+ 68: "advertise error",
+ 69: "srmount error",
+ 70: "communication error on send",
+ 71: "protocol error",
+ 72: "locked lock was unmapped ",
+ 73: "facility is not active",
+ 74: "multihop attempted",
+ 77: "not a data message",
+ 78: "file name too long",
+ 79: "value too large for defined data type",
+ 80: "name not unique on network",
+ 81: "file descriptor in bad state",
+ 82: "remote address changed",
+ 83: "can not access a needed shared library",
+ 84: "accessing a corrupted shared library",
+ 85: ".lib section in a.out corrupted",
+ 86: "attempting to link in more shared libraries than system limit",
+ 87: "can not exec a shared library directly",
+ 88: "illegal byte sequence",
+ 89: "operation not applicable",
+ 90: "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS",
+ 91: "error 91",
+ 92: "error 92",
+ 93: "directory not empty",
+ 94: "too many users",
+ 95: "socket operation on non-socket",
+ 96: "destination address required",
+ 97: "message too long",
+ 98: "protocol wrong type for socket",
+ 99: "option not supported by protocol",
+ 120: "protocol not supported",
+ 121: "socket type not supported",
+ 122: "operation not supported on transport endpoint",
+ 123: "protocol family not supported",
+ 124: "address family not supported by protocol family",
+ 125: "address already in use",
+ 126: "cannot assign requested address",
+ 127: "network is down",
+ 128: "network is unreachable",
+ 129: "network dropped connection because of reset",
+ 130: "software caused connection abort",
+ 131: "connection reset by peer",
+ 132: "no buffer space available",
+ 133: "transport endpoint is already connected",
+ 134: "transport endpoint is not connected",
+ 143: "cannot send after socket shutdown",
+ 144: "too many references: cannot splice",
+ 145: "connection timed out",
+ 146: "connection refused",
+ 147: "host is down",
+ 148: "no route to host",
+ 149: "operation already in progress",
+ 150: "operation now in progress",
+ 151: "stale NFS file handle",
+}
+
+// Signal table
+var signals = [...]string{
+ 1: "hangup",
+ 2: "interrupt",
+ 3: "quit",
+ 4: "illegal Instruction",
+ 5: "trace/Breakpoint Trap",
+ 6: "abort",
+ 7: "emulation Trap",
+ 8: "arithmetic Exception",
+ 9: "killed",
+ 10: "bus Error",
+ 11: "segmentation Fault",
+ 12: "bad System Call",
+ 13: "broken Pipe",
+ 14: "alarm Clock",
+ 15: "terminated",
+ 16: "user Signal 1",
+ 17: "user Signal 2",
+ 18: "child Status Changed",
+ 19: "power-Fail/Restart",
+ 20: "window Size Change",
+ 21: "urgent Socket Condition",
+ 22: "pollable Event",
+ 23: "stopped (signal)",
+ 24: "stopped (user)",
+ 25: "continued",
+ 26: "stopped (tty input)",
+ 27: "stopped (tty output)",
+ 28: "virtual Timer Expired",
+ 29: "profiling Timer Expired",
+ 30: "cpu Limit Exceeded",
+ 31: "file Size Limit Exceeded",
+ 32: "no runnable lwp",
+ 33: "inter-lwp signal",
+ 34: "checkpoint Freeze",
+ 35: "checkpoint Thaw",
+ 36: "thread Cancellation",
+ 37: "resource Lost",
+ 38: "resource Control Exceeded",
+ 39: "reserved for JVM 1",
+ 40: "reserved for JVM 2",
+ 41: "information Request",
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go
new file mode 100644
index 000000000..a15aaf120
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_386.go
@@ -0,0 +1,1426 @@
+// mksyscall.pl -l32 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,darwin
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kill(pid int, signum int, posix int) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exchangedata(path1 string, path2 string, options int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path1)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(path2)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
+ newoffset = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setprivexec(flag int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
+ r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ sec = int32(r0)
+ usec = int32(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
new file mode 100644
index 000000000..74606b2f4
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
@@ -0,0 +1,1442 @@
+// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,darwin
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kill(pid int, signum int, posix int) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exchangedata(path1 string, path2 string, options int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path1)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(path2)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ newoffset = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setprivexec(flag int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
+ r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ sec = int64(r0)
+ usec = int32(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go
new file mode 100644
index 000000000..640e85426
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm.go
@@ -0,0 +1,1426 @@
+// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,darwin
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kill(pid int, signum int, posix int) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exchangedata(path1 string, path2 string, options int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path1)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(path2)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ newoffset = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setprivexec(flag int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
+ r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ sec = int32(r0)
+ usec = int32(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
new file mode 100644
index 000000000..933f67bbf
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
@@ -0,0 +1,1426 @@
+// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm64,darwin
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kill(pid int, signum int, posix int) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exchangedata(path1 string, path2 string, options int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path1)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(path2)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ newoffset = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setprivexec(flag int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
+ r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ sec = int64(r0)
+ usec = int32(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_386.go
new file mode 100644
index 000000000..32e46af60
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_386.go
@@ -0,0 +1,1412 @@
+// mksyscall.pl -l32 -dragonfly syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,dragonfly
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+ newoffset = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
new file mode 100644
index 000000000..3fa6ff796
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
@@ -0,0 +1,1412 @@
+// mksyscall.pl -dragonfly syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,dragonfly
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
+ newoffset = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go
new file mode 100644
index 000000000..1a0e528cd
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_386.go
@@ -0,0 +1,1664 @@
+// mksyscall.pl -l32 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,freebsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+ _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
+ newoffset = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
new file mode 100644
index 000000000..6e4cf1455
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
@@ -0,0 +1,1664 @@
+// mksyscall.pl syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,freebsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+ _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ newoffset = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
new file mode 100644
index 000000000..1872d3230
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
@@ -0,0 +1,1664 @@
+// mksyscall.pl -l32 -arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,freebsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ r = int(r0)
+ w = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(file)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attrname)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+ use(unsafe.Pointer(_p0))
+ ret = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+ _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+ r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+ size = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+ newoffset = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Undelete(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go
new file mode 100644
index 000000000..ff6c39dc2
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_386.go
@@ -0,0 +1,1628 @@
+// mksyscall.pl -l32 syscall_linux.go syscall_linux_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(oldfd int, newfd int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+ _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit() (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ioperm(from int, num int, on int) (err error) {
+ _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+ _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getrlimit(resource int, rlim *rlimit32) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setrlimit(resource int, rlim *rlimit32) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+ tt = Time_t(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go
new file mode 100644
index 000000000..c2438522d
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_amd64.go
@@ -0,0 +1,1822 @@
+// mksyscall.pl syscall_linux.go syscall_linux_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(oldfd int, newfd int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit() (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ioperm(from int, num int, on int) (err error) {
+ _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+ _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ off = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go
new file mode 100644
index 000000000..dd66c9758
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm.go
@@ -0,0 +1,1756 @@
+// mksyscall.pl -l32 -arm syscall_linux.go syscall_linux_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(oldfd int, newfd int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit() (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+ tt = Time_t(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getrlimit(resource int, rlim *rlimit32) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setrlimit(resource int, rlim *rlimit32) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go
new file mode 100644
index 000000000..d0a6ed829
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_arm64.go
@@ -0,0 +1,1750 @@
+// mksyscall.pl syscall_linux.go syscall_linux_arm64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm64,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ off = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+ tt = Time_t(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
new file mode 100644
index 000000000..f58a3ff2f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
@@ -0,0 +1,1792 @@
+// mksyscall.pl syscall_linux.go syscall_linux_ppc64x.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build ppc64,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ioperm(from int, num int, on int) (err error) {
+ _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+ _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ off = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+ tt = Time_t(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
new file mode 100644
index 000000000..22fc7a457
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
@@ -0,0 +1,1792 @@
+// mksyscall.pl syscall_linux.go syscall_linux_ppc64x.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build ppc64le,linux
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(arg)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(source)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ var _p2 *byte
+ _p2, err = BytePtrFromString(fstype)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ use(unsafe.Pointer(_p2))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+ r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+ state = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+ _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(events) > 0 {
+ _p0 = unsafe.Pointer(&events[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+ r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+ tid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(dest) > 0 {
+ _p2 = unsafe.Pointer(&dest[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(pathname)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+ use(unsafe.Pointer(_p0))
+ watchdesc = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+ r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+ success = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(dest) > 0 {
+ _p1 = unsafe.Pointer(&dest[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+ use(unsafe.Pointer(_p0))
+ sz = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(newroot)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(putold)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+ _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(attr)
+ if err != nil {
+ return
+ }
+ var _p2 unsafe.Pointer
+ if len(data) > 0 {
+ _p2 = unsafe.Pointer(&data[0])
+ } else {
+ _p2 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+ Syscall(SYS_SYNC, 0, 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+ _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+ _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ioperm(from int, num int, on int) (err error) {
+ _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+ _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+ off = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+ r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+ written = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+ _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+ n = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ nn = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+ xaddr = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+ r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+ tt = Time_t(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go
new file mode 100644
index 000000000..00ca1f9c1
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_386.go
@@ -0,0 +1,1326 @@
+// mksyscall.pl -l32 -netbsd syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,netbsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (fd1 int, fd2 int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ fd1 = int(r0)
+ fd2 = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+ newoffset = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
new file mode 100644
index 000000000..03f31b973
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
@@ -0,0 +1,1326 @@
+// mksyscall.pl -netbsd syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,netbsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (fd1 int, fd2 int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ fd1 = int(r0)
+ fd2 = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
+ newoffset = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
new file mode 100644
index 000000000..84dc61cfa
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
@@ -0,0 +1,1326 @@
+// mksyscall.pl -l32 -arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,netbsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (fd1 int, fd2 int, err error) {
+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+ fd1 = int(r0)
+ fd2 = int(r1)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+ newoffset = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go
new file mode 100644
index 000000000..02b3528a6
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_386.go
@@ -0,0 +1,1386 @@
+// mksyscall.pl -l32 -openbsd syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,openbsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+ newoffset = int64(int64(r1)<<32 | int64(r0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
new file mode 100644
index 000000000..7dc2b7eaf
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
@@ -0,0 +1,1386 @@
+// mksyscall.pl -openbsd syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,openbsd
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
+ r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+ wpid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+ r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
+ var _p0 unsafe.Pointer
+ if len(mib) > 0 {
+ _p0 = unsafe.Pointer(&mib[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(buf) > 0 {
+ _p0 = unsafe.Pointer(&buf[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+ _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+ Syscall(SYS_EXIT, uintptr(code), 0, 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+ _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+ r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+ r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+ r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+ pgrp = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+ r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+ r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, err error) {
+ r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+ prio = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+ sid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+ r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+ tainted = bool(r0 != 0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+ r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+ var _p0 unsafe.Pointer
+ if len(b) > 0 {
+ _p0 = unsafe.Pointer(&b[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 unsafe.Pointer
+ if len(buf) > 0 {
+ _p1 = unsafe.Pointer(&buf[0])
+ } else {
+ _p1 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
+ newoffset = int64(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
+ _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(name)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+ _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+ r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 unsafe.Pointer
+ if len(p) > 0 {
+ _p0 = unsafe.Pointer(&p[0])
+ } else {
+ _p0 = unsafe.Pointer(&_zero)
+ }
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+ r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+ n = int(r0)
+ if e1 != 0 {
+ err = errnoErr(e1)
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
new file mode 100644
index 000000000..432642781
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
@@ -0,0 +1,1559 @@
+// mksyscall_solaris.pl syscall_solaris.go syscall_solaris_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,solaris
+
+package unix
+
+import (
+ "syscall"
+ "unsafe"
+)
+
+//go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so"
+//go:cgo_import_dynamic libc_getcwd getcwd "libc.so"
+//go:cgo_import_dynamic libc_getgroups getgroups "libc.so"
+//go:cgo_import_dynamic libc_setgroups setgroups "libc.so"
+//go:cgo_import_dynamic libc_utimes utimes "libc.so"
+//go:cgo_import_dynamic libc_utimensat utimensat "libc.so"
+//go:cgo_import_dynamic libc_fcntl fcntl "libc.so"
+//go:cgo_import_dynamic libc_futimesat futimesat "libc.so"
+//go:cgo_import_dynamic libc_accept accept "libsocket.so"
+//go:cgo_import_dynamic libc_recvmsg recvmsg "libsocket.so"
+//go:cgo_import_dynamic libc_sendmsg sendmsg "libsocket.so"
+//go:cgo_import_dynamic libc_acct acct "libc.so"
+//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
+//go:cgo_import_dynamic libc_access access "libc.so"
+//go:cgo_import_dynamic libc_adjtime adjtime "libc.so"
+//go:cgo_import_dynamic libc_chdir chdir "libc.so"
+//go:cgo_import_dynamic libc_chmod chmod "libc.so"
+//go:cgo_import_dynamic libc_chown chown "libc.so"
+//go:cgo_import_dynamic libc_chroot chroot "libc.so"
+//go:cgo_import_dynamic libc_close close "libc.so"
+//go:cgo_import_dynamic libc_creat creat "libc.so"
+//go:cgo_import_dynamic libc_dup dup "libc.so"
+//go:cgo_import_dynamic libc_dup2 dup2 "libc.so"
+//go:cgo_import_dynamic libc_exit exit "libc.so"
+//go:cgo_import_dynamic libc_fchdir fchdir "libc.so"
+//go:cgo_import_dynamic libc_fchmod fchmod "libc.so"
+//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so"
+//go:cgo_import_dynamic libc_fchown fchown "libc.so"
+//go:cgo_import_dynamic libc_fchownat fchownat "libc.so"
+//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.so"
+//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so"
+//go:cgo_import_dynamic libc_fstat fstat "libc.so"
+//go:cgo_import_dynamic libc_getdents getdents "libc.so"
+//go:cgo_import_dynamic libc_getgid getgid "libc.so"
+//go:cgo_import_dynamic libc_getpid getpid "libc.so"
+//go:cgo_import_dynamic libc_getpgid getpgid "libc.so"
+//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so"
+//go:cgo_import_dynamic libc_geteuid geteuid "libc.so"
+//go:cgo_import_dynamic libc_getegid getegid "libc.so"
+//go:cgo_import_dynamic libc_getppid getppid "libc.so"
+//go:cgo_import_dynamic libc_getpriority getpriority "libc.so"
+//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so"
+//go:cgo_import_dynamic libc_getrusage getrusage "libc.so"
+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so"
+//go:cgo_import_dynamic libc_getuid getuid "libc.so"
+//go:cgo_import_dynamic libc_kill kill "libc.so"
+//go:cgo_import_dynamic libc_lchown lchown "libc.so"
+//go:cgo_import_dynamic libc_link link "libc.so"
+//go:cgo_import_dynamic libc_listen listen "libsocket.so"
+//go:cgo_import_dynamic libc_lstat lstat "libc.so"
+//go:cgo_import_dynamic libc_madvise madvise "libc.so"
+//go:cgo_import_dynamic libc_mkdir mkdir "libc.so"
+//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so"
+//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so"
+//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so"
+//go:cgo_import_dynamic libc_mknod mknod "libc.so"
+//go:cgo_import_dynamic libc_mknodat mknodat "libc.so"
+//go:cgo_import_dynamic libc_mlock mlock "libc.so"
+//go:cgo_import_dynamic libc_mlockall mlockall "libc.so"
+//go:cgo_import_dynamic libc_mprotect mprotect "libc.so"
+//go:cgo_import_dynamic libc_munlock munlock "libc.so"
+//go:cgo_import_dynamic libc_munlockall munlockall "libc.so"
+//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so"
+//go:cgo_import_dynamic libc_open open "libc.so"
+//go:cgo_import_dynamic libc_openat openat "libc.so"
+//go:cgo_import_dynamic libc_pathconf pathconf "libc.so"
+//go:cgo_import_dynamic libc_pause pause "libc.so"
+//go:cgo_import_dynamic libc_pread pread "libc.so"
+//go:cgo_import_dynamic libc_pwrite pwrite "libc.so"
+//go:cgo_import_dynamic libc_read read "libc.so"
+//go:cgo_import_dynamic libc_readlink readlink "libc.so"
+//go:cgo_import_dynamic libc_rename rename "libc.so"
+//go:cgo_import_dynamic libc_renameat renameat "libc.so"
+//go:cgo_import_dynamic libc_rmdir rmdir "libc.so"
+//go:cgo_import_dynamic libc_lseek lseek "libc.so"
+//go:cgo_import_dynamic libc_setegid setegid "libc.so"
+//go:cgo_import_dynamic libc_seteuid seteuid "libc.so"
+//go:cgo_import_dynamic libc_setgid setgid "libc.so"
+//go:cgo_import_dynamic libc_sethostname sethostname "libc.so"
+//go:cgo_import_dynamic libc_setpgid setpgid "libc.so"
+//go:cgo_import_dynamic libc_setpriority setpriority "libc.so"
+//go:cgo_import_dynamic libc_setregid setregid "libc.so"
+//go:cgo_import_dynamic libc_setreuid setreuid "libc.so"
+//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so"
+//go:cgo_import_dynamic libc_setsid setsid "libc.so"
+//go:cgo_import_dynamic libc_setuid setuid "libc.so"
+//go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so"
+//go:cgo_import_dynamic libc_stat stat "libc.so"
+//go:cgo_import_dynamic libc_symlink symlink "libc.so"
+//go:cgo_import_dynamic libc_sync sync "libc.so"
+//go:cgo_import_dynamic libc_times times "libc.so"
+//go:cgo_import_dynamic libc_truncate truncate "libc.so"
+//go:cgo_import_dynamic libc_fsync fsync "libc.so"
+//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so"
+//go:cgo_import_dynamic libc_umask umask "libc.so"
+//go:cgo_import_dynamic libc_uname uname "libc.so"
+//go:cgo_import_dynamic libc_umount umount "libc.so"
+//go:cgo_import_dynamic libc_unlink unlink "libc.so"
+//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so"
+//go:cgo_import_dynamic libc_ustat ustat "libc.so"
+//go:cgo_import_dynamic libc_utime utime "libc.so"
+//go:cgo_import_dynamic libc_bind bind "libsocket.so"
+//go:cgo_import_dynamic libc_connect connect "libsocket.so"
+//go:cgo_import_dynamic libc_mmap mmap "libc.so"
+//go:cgo_import_dynamic libc_munmap munmap "libc.so"
+//go:cgo_import_dynamic libc_sendto sendto "libsocket.so"
+//go:cgo_import_dynamic libc_socket socket "libsocket.so"
+//go:cgo_import_dynamic libc_socketpair socketpair "libsocket.so"
+//go:cgo_import_dynamic libc_write write "libc.so"
+//go:cgo_import_dynamic libc_getsockopt getsockopt "libsocket.so"
+//go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so"
+//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so"
+//go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so"
+//go:cgo_import_dynamic libc_sysconf sysconf "libc.so"
+
+//go:linkname procgetsockname libc_getsockname
+//go:linkname procGetcwd libc_getcwd
+//go:linkname procgetgroups libc_getgroups
+//go:linkname procsetgroups libc_setgroups
+//go:linkname procutimes libc_utimes
+//go:linkname procutimensat libc_utimensat
+//go:linkname procfcntl libc_fcntl
+//go:linkname procfutimesat libc_futimesat
+//go:linkname procaccept libc_accept
+//go:linkname procrecvmsg libc_recvmsg
+//go:linkname procsendmsg libc_sendmsg
+//go:linkname procacct libc_acct
+//go:linkname procioctl libc_ioctl
+//go:linkname procAccess libc_access
+//go:linkname procAdjtime libc_adjtime
+//go:linkname procChdir libc_chdir
+//go:linkname procChmod libc_chmod
+//go:linkname procChown libc_chown
+//go:linkname procChroot libc_chroot
+//go:linkname procClose libc_close
+//go:linkname procCreat libc_creat
+//go:linkname procDup libc_dup
+//go:linkname procDup2 libc_dup2
+//go:linkname procExit libc_exit
+//go:linkname procFchdir libc_fchdir
+//go:linkname procFchmod libc_fchmod
+//go:linkname procFchmodat libc_fchmodat
+//go:linkname procFchown libc_fchown
+//go:linkname procFchownat libc_fchownat
+//go:linkname procFdatasync libc_fdatasync
+//go:linkname procFpathconf libc_fpathconf
+//go:linkname procFstat libc_fstat
+//go:linkname procGetdents libc_getdents
+//go:linkname procGetgid libc_getgid
+//go:linkname procGetpid libc_getpid
+//go:linkname procGetpgid libc_getpgid
+//go:linkname procGetpgrp libc_getpgrp
+//go:linkname procGeteuid libc_geteuid
+//go:linkname procGetegid libc_getegid
+//go:linkname procGetppid libc_getppid
+//go:linkname procGetpriority libc_getpriority
+//go:linkname procGetrlimit libc_getrlimit
+//go:linkname procGetrusage libc_getrusage
+//go:linkname procGettimeofday libc_gettimeofday
+//go:linkname procGetuid libc_getuid
+//go:linkname procKill libc_kill
+//go:linkname procLchown libc_lchown
+//go:linkname procLink libc_link
+//go:linkname proclisten libc_listen
+//go:linkname procLstat libc_lstat
+//go:linkname procMadvise libc_madvise
+//go:linkname procMkdir libc_mkdir
+//go:linkname procMkdirat libc_mkdirat
+//go:linkname procMkfifo libc_mkfifo
+//go:linkname procMkfifoat libc_mkfifoat
+//go:linkname procMknod libc_mknod
+//go:linkname procMknodat libc_mknodat
+//go:linkname procMlock libc_mlock
+//go:linkname procMlockall libc_mlockall
+//go:linkname procMprotect libc_mprotect
+//go:linkname procMunlock libc_munlock
+//go:linkname procMunlockall libc_munlockall
+//go:linkname procNanosleep libc_nanosleep
+//go:linkname procOpen libc_open
+//go:linkname procOpenat libc_openat
+//go:linkname procPathconf libc_pathconf
+//go:linkname procPause libc_pause
+//go:linkname procPread libc_pread
+//go:linkname procPwrite libc_pwrite
+//go:linkname procread libc_read
+//go:linkname procReadlink libc_readlink
+//go:linkname procRename libc_rename
+//go:linkname procRenameat libc_renameat
+//go:linkname procRmdir libc_rmdir
+//go:linkname proclseek libc_lseek
+//go:linkname procSetegid libc_setegid
+//go:linkname procSeteuid libc_seteuid
+//go:linkname procSetgid libc_setgid
+//go:linkname procSethostname libc_sethostname
+//go:linkname procSetpgid libc_setpgid
+//go:linkname procSetpriority libc_setpriority
+//go:linkname procSetregid libc_setregid
+//go:linkname procSetreuid libc_setreuid
+//go:linkname procSetrlimit libc_setrlimit
+//go:linkname procSetsid libc_setsid
+//go:linkname procSetuid libc_setuid
+//go:linkname procshutdown libc_shutdown
+//go:linkname procStat libc_stat
+//go:linkname procSymlink libc_symlink
+//go:linkname procSync libc_sync
+//go:linkname procTimes libc_times
+//go:linkname procTruncate libc_truncate
+//go:linkname procFsync libc_fsync
+//go:linkname procFtruncate libc_ftruncate
+//go:linkname procUmask libc_umask
+//go:linkname procUname libc_uname
+//go:linkname procumount libc_umount
+//go:linkname procUnlink libc_unlink
+//go:linkname procUnlinkat libc_unlinkat
+//go:linkname procUstat libc_ustat
+//go:linkname procUtime libc_utime
+//go:linkname procbind libc_bind
+//go:linkname procconnect libc_connect
+//go:linkname procmmap libc_mmap
+//go:linkname procmunmap libc_munmap
+//go:linkname procsendto libc_sendto
+//go:linkname procsocket libc_socket
+//go:linkname procsocketpair libc_socketpair
+//go:linkname procwrite libc_write
+//go:linkname procgetsockopt libc_getsockopt
+//go:linkname procgetpeername libc_getpeername
+//go:linkname procsetsockopt libc_setsockopt
+//go:linkname procrecvfrom libc_recvfrom
+//go:linkname procsysconf libc_sysconf
+
+var (
+ procgetsockname,
+ procGetcwd,
+ procgetgroups,
+ procsetgroups,
+ procutimes,
+ procutimensat,
+ procfcntl,
+ procfutimesat,
+ procaccept,
+ procrecvmsg,
+ procsendmsg,
+ procacct,
+ procioctl,
+ procAccess,
+ procAdjtime,
+ procChdir,
+ procChmod,
+ procChown,
+ procChroot,
+ procClose,
+ procCreat,
+ procDup,
+ procDup2,
+ procExit,
+ procFchdir,
+ procFchmod,
+ procFchmodat,
+ procFchown,
+ procFchownat,
+ procFdatasync,
+ procFpathconf,
+ procFstat,
+ procGetdents,
+ procGetgid,
+ procGetpid,
+ procGetpgid,
+ procGetpgrp,
+ procGeteuid,
+ procGetegid,
+ procGetppid,
+ procGetpriority,
+ procGetrlimit,
+ procGetrusage,
+ procGettimeofday,
+ procGetuid,
+ procKill,
+ procLchown,
+ procLink,
+ proclisten,
+ procLstat,
+ procMadvise,
+ procMkdir,
+ procMkdirat,
+ procMkfifo,
+ procMkfifoat,
+ procMknod,
+ procMknodat,
+ procMlock,
+ procMlockall,
+ procMprotect,
+ procMunlock,
+ procMunlockall,
+ procNanosleep,
+ procOpen,
+ procOpenat,
+ procPathconf,
+ procPause,
+ procPread,
+ procPwrite,
+ procread,
+ procReadlink,
+ procRename,
+ procRenameat,
+ procRmdir,
+ proclseek,
+ procSetegid,
+ procSeteuid,
+ procSetgid,
+ procSethostname,
+ procSetpgid,
+ procSetpriority,
+ procSetregid,
+ procSetreuid,
+ procSetrlimit,
+ procSetsid,
+ procSetuid,
+ procshutdown,
+ procStat,
+ procSymlink,
+ procSync,
+ procTimes,
+ procTruncate,
+ procFsync,
+ procFtruncate,
+ procUmask,
+ procUname,
+ procumount,
+ procUnlink,
+ procUnlinkat,
+ procUstat,
+ procUtime,
+ procbind,
+ procconnect,
+ procmmap,
+ procmunmap,
+ procsendto,
+ procsocket,
+ procsocketpair,
+ procwrite,
+ procgetsockopt,
+ procgetpeername,
+ procsetsockopt,
+ procrecvfrom,
+ procsysconf syscallFunc
+)
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Getcwd(buf []byte) (n int, err error) {
+ var _p0 *byte
+ if len(buf) > 0 {
+ _p0 = &buf[0]
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+ r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func utimes(path string, times *[2]Timeval) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func acct(path *byte) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func ioctl(fd int, req int, arg uintptr) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Access(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Chdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Chmod(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Chown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Chroot(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Close(fd int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Creat(path string, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Dup(fd int) (nfd int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+ nfd = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Dup2(oldfd int, newfd int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Exit(code int) {
+ sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)
+ return
+}
+
+func Fchdir(fd int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Fchmod(fd int, mode uint32) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Fchown(fd int, uid int, gid int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Fdatasync(fd int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Fpathconf(fd int, name int) (val int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)
+ val = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {
+ var _p0 *byte
+ if len(buf) > 0 {
+ _p0 = &buf[0]
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Getgid() (gid int) {
+ r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)
+ gid = int(r0)
+ return
+}
+
+func Getpid() (pid int) {
+ r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)
+ pid = int(r0)
+ return
+}
+
+func Getpgid(pid int) (pgid int, err error) {
+ r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Getpgrp() (pgid int, err error) {
+ r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)
+ pgid = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Geteuid() (euid int) {
+ r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)
+ euid = int(r0)
+ return
+}
+
+func Getegid() (egid int) {
+ r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)
+ egid = int(r0)
+ return
+}
+
+func Getppid() (ppid int) {
+ r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)
+ ppid = int(r0)
+ return
+}
+
+func Getpriority(which int, who int) (n int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Gettimeofday(tv *Timeval) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Getuid() (uid int) {
+ r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)
+ uid = int(r0)
+ return
+}
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Lchown(path string, uid int, gid int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Link(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Listen(s int, backlog int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Lstat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Madvise(b []byte, advice int) (err error) {
+ var _p0 *byte
+ if len(b) > 0 {
+ _p0 = &b[0]
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mkdir(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mkfifo(path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mlock(b []byte) (err error) {
+ var _p0 *byte
+ if len(b) > 0 {
+ _p0 = &b[0]
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mlockall(flags int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Mprotect(b []byte, prot int) (err error) {
+ var _p0 *byte
+ if len(b) > 0 {
+ _p0 = &b[0]
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Munlock(b []byte) (err error) {
+ var _p0 *byte
+ if len(b) > 0 {
+ _p0 = &b[0]
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Munlockall() (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+ use(unsafe.Pointer(_p0))
+ fd = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Pathconf(path string, name int) (val int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ val = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Pause() (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 *byte
+ if len(p) > 0 {
+ _p0 = &p[0]
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+ var _p0 *byte
+ if len(p) > 0 {
+ _p0 = &p[0]
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func read(fd int, p []byte) (n int, err error) {
+ var _p0 *byte
+ if len(p) > 0 {
+ _p0 = &p[0]
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Readlink(path string, buf []byte) (n int, err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ if len(buf) > 0 {
+ _p1 = &buf[0]
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Rename(from string, to string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(from)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(to)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(oldpath)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(newpath)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Rmdir(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)
+ newoffset = int64(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setegid(egid int) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Seteuid(euid int) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setgid(gid int) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Sethostname(p []byte) (err error) {
+ var _p0 *byte
+ if len(p) > 0 {
+ _p0 = &p[0]
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setpgid(pid int, pgid int) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setpriority(which int, who int, prio int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setregid(rgid int, egid int) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setreuid(ruid int, euid int) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setsid() (pid int, err error) {
+ r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)
+ pid = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Setuid(uid int) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Shutdown(s int, how int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Stat(path string, stat *Stat_t) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Symlink(path string, link string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ var _p1 *byte
+ _p1, err = BytePtrFromString(link)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ use(unsafe.Pointer(_p1))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Sync() (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+ r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)
+ ticks = uintptr(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Truncate(path string, length int64) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Fsync(fd int) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Ftruncate(fd int, length int64) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Umask(mask int) (oldmask int) {
+ r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)
+ oldmask = int(r0)
+ return
+}
+
+func Uname(buf *Utsname) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Unmount(target string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(target)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Unlink(path string) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Unlinkat(dirfd int, path string, flags int) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func Utime(path string, buf *Utimbuf) (err error) {
+ var _p0 *byte
+ _p0, err = BytePtrFromString(path)
+ if err != nil {
+ return
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0)
+ use(unsafe.Pointer(_p0))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procbind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procconnect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+ ret = uintptr(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func munmap(addr uintptr, length uintptr) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+ var _p0 *byte
+ if len(buf) > 0 {
+ _p0 = &buf[0]
+ }
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsocket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
+ fd = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsocketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func write(fd int, p []byte) (n int, err error) {
+ var _p0 *byte
+ if len(p) > 0 {
+ _p0 = &p[0]
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+ _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+ var _p0 *byte
+ if len(p) > 0 {
+ _p0 = &p[0]
+ }
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+ n = int(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
+
+func sysconf(name int) (n int64, err error) {
+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsysconf)), 1, uintptr(name), 0, 0, 0, 0, 0)
+ n = int64(r0)
+ if e1 != 0 {
+ err = e1
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysctl_openbsd.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysctl_openbsd.go
new file mode 100644
index 000000000..83bb935b9
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysctl_openbsd.go
@@ -0,0 +1,270 @@
+// mksysctl_openbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package unix
+
+type mibentry struct {
+ ctlname string
+ ctloid []_C_int
+}
+
+var sysctlMib = []mibentry{
+ {"ddb.console", []_C_int{9, 6}},
+ {"ddb.log", []_C_int{9, 7}},
+ {"ddb.max_line", []_C_int{9, 3}},
+ {"ddb.max_width", []_C_int{9, 2}},
+ {"ddb.panic", []_C_int{9, 5}},
+ {"ddb.radix", []_C_int{9, 1}},
+ {"ddb.tab_stop_width", []_C_int{9, 4}},
+ {"ddb.trigger", []_C_int{9, 8}},
+ {"fs.posix.setuid", []_C_int{3, 1, 1}},
+ {"hw.allowpowerdown", []_C_int{6, 22}},
+ {"hw.byteorder", []_C_int{6, 4}},
+ {"hw.cpuspeed", []_C_int{6, 12}},
+ {"hw.diskcount", []_C_int{6, 10}},
+ {"hw.disknames", []_C_int{6, 8}},
+ {"hw.diskstats", []_C_int{6, 9}},
+ {"hw.machine", []_C_int{6, 1}},
+ {"hw.model", []_C_int{6, 2}},
+ {"hw.ncpu", []_C_int{6, 3}},
+ {"hw.ncpufound", []_C_int{6, 21}},
+ {"hw.pagesize", []_C_int{6, 7}},
+ {"hw.physmem", []_C_int{6, 19}},
+ {"hw.product", []_C_int{6, 15}},
+ {"hw.serialno", []_C_int{6, 17}},
+ {"hw.setperf", []_C_int{6, 13}},
+ {"hw.usermem", []_C_int{6, 20}},
+ {"hw.uuid", []_C_int{6, 18}},
+ {"hw.vendor", []_C_int{6, 14}},
+ {"hw.version", []_C_int{6, 16}},
+ {"kern.arandom", []_C_int{1, 37}},
+ {"kern.argmax", []_C_int{1, 8}},
+ {"kern.boottime", []_C_int{1, 21}},
+ {"kern.bufcachepercent", []_C_int{1, 72}},
+ {"kern.ccpu", []_C_int{1, 45}},
+ {"kern.clockrate", []_C_int{1, 12}},
+ {"kern.consdev", []_C_int{1, 75}},
+ {"kern.cp_time", []_C_int{1, 40}},
+ {"kern.cp_time2", []_C_int{1, 71}},
+ {"kern.cryptodevallowsoft", []_C_int{1, 53}},
+ {"kern.domainname", []_C_int{1, 22}},
+ {"kern.file", []_C_int{1, 73}},
+ {"kern.forkstat", []_C_int{1, 42}},
+ {"kern.fscale", []_C_int{1, 46}},
+ {"kern.fsync", []_C_int{1, 33}},
+ {"kern.hostid", []_C_int{1, 11}},
+ {"kern.hostname", []_C_int{1, 10}},
+ {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}},
+ {"kern.job_control", []_C_int{1, 19}},
+ {"kern.malloc.buckets", []_C_int{1, 39, 1}},
+ {"kern.malloc.kmemnames", []_C_int{1, 39, 3}},
+ {"kern.maxclusters", []_C_int{1, 67}},
+ {"kern.maxfiles", []_C_int{1, 7}},
+ {"kern.maxlocksperuid", []_C_int{1, 70}},
+ {"kern.maxpartitions", []_C_int{1, 23}},
+ {"kern.maxproc", []_C_int{1, 6}},
+ {"kern.maxthread", []_C_int{1, 25}},
+ {"kern.maxvnodes", []_C_int{1, 5}},
+ {"kern.mbstat", []_C_int{1, 59}},
+ {"kern.msgbuf", []_C_int{1, 48}},
+ {"kern.msgbufsize", []_C_int{1, 38}},
+ {"kern.nchstats", []_C_int{1, 41}},
+ {"kern.netlivelocks", []_C_int{1, 76}},
+ {"kern.nfiles", []_C_int{1, 56}},
+ {"kern.ngroups", []_C_int{1, 18}},
+ {"kern.nosuidcoredump", []_C_int{1, 32}},
+ {"kern.nprocs", []_C_int{1, 47}},
+ {"kern.nselcoll", []_C_int{1, 43}},
+ {"kern.nthreads", []_C_int{1, 26}},
+ {"kern.numvnodes", []_C_int{1, 58}},
+ {"kern.osrelease", []_C_int{1, 2}},
+ {"kern.osrevision", []_C_int{1, 3}},
+ {"kern.ostype", []_C_int{1, 1}},
+ {"kern.osversion", []_C_int{1, 27}},
+ {"kern.pool_debug", []_C_int{1, 77}},
+ {"kern.posix1version", []_C_int{1, 17}},
+ {"kern.proc", []_C_int{1, 66}},
+ {"kern.random", []_C_int{1, 31}},
+ {"kern.rawpartition", []_C_int{1, 24}},
+ {"kern.saved_ids", []_C_int{1, 20}},
+ {"kern.securelevel", []_C_int{1, 9}},
+ {"kern.seminfo", []_C_int{1, 61}},
+ {"kern.shminfo", []_C_int{1, 62}},
+ {"kern.somaxconn", []_C_int{1, 28}},
+ {"kern.sominconn", []_C_int{1, 29}},
+ {"kern.splassert", []_C_int{1, 54}},
+ {"kern.stackgap_random", []_C_int{1, 50}},
+ {"kern.sysvipc_info", []_C_int{1, 51}},
+ {"kern.sysvmsg", []_C_int{1, 34}},
+ {"kern.sysvsem", []_C_int{1, 35}},
+ {"kern.sysvshm", []_C_int{1, 36}},
+ {"kern.timecounter.choice", []_C_int{1, 69, 4}},
+ {"kern.timecounter.hardware", []_C_int{1, 69, 3}},
+ {"kern.timecounter.tick", []_C_int{1, 69, 1}},
+ {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}},
+ {"kern.tty.maxptys", []_C_int{1, 44, 6}},
+ {"kern.tty.nptys", []_C_int{1, 44, 7}},
+ {"kern.tty.tk_cancc", []_C_int{1, 44, 4}},
+ {"kern.tty.tk_nin", []_C_int{1, 44, 1}},
+ {"kern.tty.tk_nout", []_C_int{1, 44, 2}},
+ {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}},
+ {"kern.tty.ttyinfo", []_C_int{1, 44, 5}},
+ {"kern.ttycount", []_C_int{1, 57}},
+ {"kern.userasymcrypto", []_C_int{1, 60}},
+ {"kern.usercrypto", []_C_int{1, 52}},
+ {"kern.usermount", []_C_int{1, 30}},
+ {"kern.version", []_C_int{1, 4}},
+ {"kern.vnode", []_C_int{1, 13}},
+ {"kern.watchdog.auto", []_C_int{1, 64, 2}},
+ {"kern.watchdog.period", []_C_int{1, 64, 1}},
+ {"net.bpf.bufsize", []_C_int{4, 31, 1}},
+ {"net.bpf.maxbufsize", []_C_int{4, 31, 2}},
+ {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}},
+ {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}},
+ {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}},
+ {"net.inet.carp.log", []_C_int{4, 2, 112, 3}},
+ {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}},
+ {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}},
+ {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}},
+ {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}},
+ {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}},
+ {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}},
+ {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}},
+ {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}},
+ {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}},
+ {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}},
+ {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}},
+ {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}},
+ {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}},
+ {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}},
+ {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}},
+ {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}},
+ {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}},
+ {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}},
+ {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}},
+ {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}},
+ {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}},
+ {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}},
+ {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}},
+ {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}},
+ {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}},
+ {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}},
+ {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}},
+ {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}},
+ {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}},
+ {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}},
+ {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}},
+ {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}},
+ {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}},
+ {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}},
+ {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}},
+ {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}},
+ {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}},
+ {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}},
+ {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}},
+ {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}},
+ {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}},
+ {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}},
+ {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}},
+ {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}},
+ {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}},
+ {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}},
+ {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}},
+ {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}},
+ {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}},
+ {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}},
+ {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}},
+ {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}},
+ {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}},
+ {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}},
+ {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}},
+ {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}},
+ {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}},
+ {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}},
+ {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}},
+ {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}},
+ {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}},
+ {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}},
+ {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}},
+ {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}},
+ {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}},
+ {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}},
+ {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}},
+ {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}},
+ {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}},
+ {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}},
+ {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}},
+ {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}},
+ {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}},
+ {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}},
+ {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}},
+ {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}},
+ {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}},
+ {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}},
+ {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}},
+ {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}},
+ {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}},
+ {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}},
+ {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}},
+ {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}},
+ {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}},
+ {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}},
+ {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}},
+ {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}},
+ {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}},
+ {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}},
+ {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}},
+ {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}},
+ {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}},
+ {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}},
+ {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}},
+ {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}},
+ {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}},
+ {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}},
+ {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}},
+ {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}},
+ {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}},
+ {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}},
+ {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}},
+ {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}},
+ {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}},
+ {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}},
+ {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}},
+ {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}},
+ {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}},
+ {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}},
+ {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}},
+ {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}},
+ {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}},
+ {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}},
+ {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}},
+ {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}},
+ {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}},
+ {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}},
+ {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}},
+ {"net.key.sadb_dump", []_C_int{4, 30, 1}},
+ {"net.key.spd_dump", []_C_int{4, 30, 2}},
+ {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}},
+ {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}},
+ {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}},
+ {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}},
+ {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}},
+ {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}},
+ {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}},
+ {"net.mpls.ttl", []_C_int{4, 33, 2}},
+ {"net.pflow.stats", []_C_int{4, 34, 1}},
+ {"net.pipex.enable", []_C_int{4, 35, 1}},
+ {"vm.anonmin", []_C_int{2, 7}},
+ {"vm.loadavg", []_C_int{2, 2}},
+ {"vm.maxslp", []_C_int{2, 10}},
+ {"vm.nkmempages", []_C_int{2, 6}},
+ {"vm.psstrings", []_C_int{2, 3}},
+ {"vm.swapencrypt.enable", []_C_int{2, 5, 0}},
+ {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}},
+ {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}},
+ {"vm.uspace", []_C_int{2, 11}},
+ {"vm.uvmexp", []_C_int{2, 4}},
+ {"vm.vmmeter", []_C_int{2, 1}},
+ {"vm.vnodemin", []_C_int{2, 9}},
+ {"vm.vtextmin", []_C_int{2, 8}},
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_386.go
new file mode 100644
index 000000000..2786773ba
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_386.go
@@ -0,0 +1,398 @@
+// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,darwin
+
+package unix
+
+const (
+ SYS_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_WAIT4 = 7
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_CHDIR = 12
+ SYS_FCHDIR = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_CHOWN = 16
+ SYS_GETFSSTAT = 18
+ SYS_GETPID = 20
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_GETEUID = 25
+ SYS_PTRACE = 26
+ SYS_RECVMSG = 27
+ SYS_SENDMSG = 28
+ SYS_RECVFROM = 29
+ SYS_ACCEPT = 30
+ SYS_GETPEERNAME = 31
+ SYS_GETSOCKNAME = 32
+ SYS_ACCESS = 33
+ SYS_CHFLAGS = 34
+ SYS_FCHFLAGS = 35
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_GETPPID = 39
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_GETEGID = 43
+ SYS_SIGACTION = 46
+ SYS_GETGID = 47
+ SYS_SIGPROCMASK = 48
+ SYS_GETLOGIN = 49
+ SYS_SETLOGIN = 50
+ SYS_ACCT = 51
+ SYS_SIGPENDING = 52
+ SYS_SIGALTSTACK = 53
+ SYS_IOCTL = 54
+ SYS_REBOOT = 55
+ SYS_REVOKE = 56
+ SYS_SYMLINK = 57
+ SYS_READLINK = 58
+ SYS_EXECVE = 59
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_MSYNC = 65
+ SYS_VFORK = 66
+ SYS_MUNMAP = 73
+ SYS_MPROTECT = 74
+ SYS_MADVISE = 75
+ SYS_MINCORE = 78
+ SYS_GETGROUPS = 79
+ SYS_SETGROUPS = 80
+ SYS_GETPGRP = 81
+ SYS_SETPGID = 82
+ SYS_SETITIMER = 83
+ SYS_SWAPON = 85
+ SYS_GETITIMER = 86
+ SYS_GETDTABLESIZE = 89
+ SYS_DUP2 = 90
+ SYS_FCNTL = 92
+ SYS_SELECT = 93
+ SYS_FSYNC = 95
+ SYS_SETPRIORITY = 96
+ SYS_SOCKET = 97
+ SYS_CONNECT = 98
+ SYS_GETPRIORITY = 100
+ SYS_BIND = 104
+ SYS_SETSOCKOPT = 105
+ SYS_LISTEN = 106
+ SYS_SIGSUSPEND = 111
+ SYS_GETTIMEOFDAY = 116
+ SYS_GETRUSAGE = 117
+ SYS_GETSOCKOPT = 118
+ SYS_READV = 120
+ SYS_WRITEV = 121
+ SYS_SETTIMEOFDAY = 122
+ SYS_FCHOWN = 123
+ SYS_FCHMOD = 124
+ SYS_SETREUID = 126
+ SYS_SETREGID = 127
+ SYS_RENAME = 128
+ SYS_FLOCK = 131
+ SYS_MKFIFO = 132
+ SYS_SENDTO = 133
+ SYS_SHUTDOWN = 134
+ SYS_SOCKETPAIR = 135
+ SYS_MKDIR = 136
+ SYS_RMDIR = 137
+ SYS_UTIMES = 138
+ SYS_FUTIMES = 139
+ SYS_ADJTIME = 140
+ SYS_GETHOSTUUID = 142
+ SYS_SETSID = 147
+ SYS_GETPGID = 151
+ SYS_SETPRIVEXEC = 152
+ SYS_PREAD = 153
+ SYS_PWRITE = 154
+ SYS_NFSSVC = 155
+ SYS_STATFS = 157
+ SYS_FSTATFS = 158
+ SYS_UNMOUNT = 159
+ SYS_GETFH = 161
+ SYS_QUOTACTL = 165
+ SYS_MOUNT = 167
+ SYS_CSOPS = 169
+ SYS_CSOPS_AUDITTOKEN = 170
+ SYS_WAITID = 173
+ SYS_KDEBUG_TRACE64 = 179
+ SYS_KDEBUG_TRACE = 180
+ SYS_SETGID = 181
+ SYS_SETEGID = 182
+ SYS_SETEUID = 183
+ SYS_SIGRETURN = 184
+ SYS_CHUD = 185
+ SYS_FDATASYNC = 187
+ SYS_STAT = 188
+ SYS_FSTAT = 189
+ SYS_LSTAT = 190
+ SYS_PATHCONF = 191
+ SYS_FPATHCONF = 192
+ SYS_GETRLIMIT = 194
+ SYS_SETRLIMIT = 195
+ SYS_GETDIRENTRIES = 196
+ SYS_MMAP = 197
+ SYS_LSEEK = 199
+ SYS_TRUNCATE = 200
+ SYS_FTRUNCATE = 201
+ SYS_SYSCTL = 202
+ SYS_MLOCK = 203
+ SYS_MUNLOCK = 204
+ SYS_UNDELETE = 205
+ SYS_OPEN_DPROTECTED_NP = 216
+ SYS_GETATTRLIST = 220
+ SYS_SETATTRLIST = 221
+ SYS_GETDIRENTRIESATTR = 222
+ SYS_EXCHANGEDATA = 223
+ SYS_SEARCHFS = 225
+ SYS_DELETE = 226
+ SYS_COPYFILE = 227
+ SYS_FGETATTRLIST = 228
+ SYS_FSETATTRLIST = 229
+ SYS_POLL = 230
+ SYS_WATCHEVENT = 231
+ SYS_WAITEVENT = 232
+ SYS_MODWATCH = 233
+ SYS_GETXATTR = 234
+ SYS_FGETXATTR = 235
+ SYS_SETXATTR = 236
+ SYS_FSETXATTR = 237
+ SYS_REMOVEXATTR = 238
+ SYS_FREMOVEXATTR = 239
+ SYS_LISTXATTR = 240
+ SYS_FLISTXATTR = 241
+ SYS_FSCTL = 242
+ SYS_INITGROUPS = 243
+ SYS_POSIX_SPAWN = 244
+ SYS_FFSCTL = 245
+ SYS_NFSCLNT = 247
+ SYS_FHOPEN = 248
+ SYS_MINHERIT = 250
+ SYS_SEMSYS = 251
+ SYS_MSGSYS = 252
+ SYS_SHMSYS = 253
+ SYS_SEMCTL = 254
+ SYS_SEMGET = 255
+ SYS_SEMOP = 256
+ SYS_MSGCTL = 258
+ SYS_MSGGET = 259
+ SYS_MSGSND = 260
+ SYS_MSGRCV = 261
+ SYS_SHMAT = 262
+ SYS_SHMCTL = 263
+ SYS_SHMDT = 264
+ SYS_SHMGET = 265
+ SYS_SHM_OPEN = 266
+ SYS_SHM_UNLINK = 267
+ SYS_SEM_OPEN = 268
+ SYS_SEM_CLOSE = 269
+ SYS_SEM_UNLINK = 270
+ SYS_SEM_WAIT = 271
+ SYS_SEM_TRYWAIT = 272
+ SYS_SEM_POST = 273
+ SYS_SYSCTLBYNAME = 274
+ SYS_OPEN_EXTENDED = 277
+ SYS_UMASK_EXTENDED = 278
+ SYS_STAT_EXTENDED = 279
+ SYS_LSTAT_EXTENDED = 280
+ SYS_FSTAT_EXTENDED = 281
+ SYS_CHMOD_EXTENDED = 282
+ SYS_FCHMOD_EXTENDED = 283
+ SYS_ACCESS_EXTENDED = 284
+ SYS_SETTID = 285
+ SYS_GETTID = 286
+ SYS_SETSGROUPS = 287
+ SYS_GETSGROUPS = 288
+ SYS_SETWGROUPS = 289
+ SYS_GETWGROUPS = 290
+ SYS_MKFIFO_EXTENDED = 291
+ SYS_MKDIR_EXTENDED = 292
+ SYS_IDENTITYSVC = 293
+ SYS_SHARED_REGION_CHECK_NP = 294
+ SYS_VM_PRESSURE_MONITOR = 296
+ SYS_PSYNCH_RW_LONGRDLOCK = 297
+ SYS_PSYNCH_RW_YIELDWRLOCK = 298
+ SYS_PSYNCH_RW_DOWNGRADE = 299
+ SYS_PSYNCH_RW_UPGRADE = 300
+ SYS_PSYNCH_MUTEXWAIT = 301
+ SYS_PSYNCH_MUTEXDROP = 302
+ SYS_PSYNCH_CVBROAD = 303
+ SYS_PSYNCH_CVSIGNAL = 304
+ SYS_PSYNCH_CVWAIT = 305
+ SYS_PSYNCH_RW_RDLOCK = 306
+ SYS_PSYNCH_RW_WRLOCK = 307
+ SYS_PSYNCH_RW_UNLOCK = 308
+ SYS_PSYNCH_RW_UNLOCK2 = 309
+ SYS_GETSID = 310
+ SYS_SETTID_WITH_PID = 311
+ SYS_PSYNCH_CVCLRPREPOST = 312
+ SYS_AIO_FSYNC = 313
+ SYS_AIO_RETURN = 314
+ SYS_AIO_SUSPEND = 315
+ SYS_AIO_CANCEL = 316
+ SYS_AIO_ERROR = 317
+ SYS_AIO_READ = 318
+ SYS_AIO_WRITE = 319
+ SYS_LIO_LISTIO = 320
+ SYS_IOPOLICYSYS = 322
+ SYS_PROCESS_POLICY = 323
+ SYS_MLOCKALL = 324
+ SYS_MUNLOCKALL = 325
+ SYS_ISSETUGID = 327
+ SYS___PTHREAD_KILL = 328
+ SYS___PTHREAD_SIGMASK = 329
+ SYS___SIGWAIT = 330
+ SYS___DISABLE_THREADSIGNAL = 331
+ SYS___PTHREAD_MARKCANCEL = 332
+ SYS___PTHREAD_CANCELED = 333
+ SYS___SEMWAIT_SIGNAL = 334
+ SYS_PROC_INFO = 336
+ SYS_SENDFILE = 337
+ SYS_STAT64 = 338
+ SYS_FSTAT64 = 339
+ SYS_LSTAT64 = 340
+ SYS_STAT64_EXTENDED = 341
+ SYS_LSTAT64_EXTENDED = 342
+ SYS_FSTAT64_EXTENDED = 343
+ SYS_GETDIRENTRIES64 = 344
+ SYS_STATFS64 = 345
+ SYS_FSTATFS64 = 346
+ SYS_GETFSSTAT64 = 347
+ SYS___PTHREAD_CHDIR = 348
+ SYS___PTHREAD_FCHDIR = 349
+ SYS_AUDIT = 350
+ SYS_AUDITON = 351
+ SYS_GETAUID = 353
+ SYS_SETAUID = 354
+ SYS_GETAUDIT_ADDR = 357
+ SYS_SETAUDIT_ADDR = 358
+ SYS_AUDITCTL = 359
+ SYS_BSDTHREAD_CREATE = 360
+ SYS_BSDTHREAD_TERMINATE = 361
+ SYS_KQUEUE = 362
+ SYS_KEVENT = 363
+ SYS_LCHOWN = 364
+ SYS_STACK_SNAPSHOT = 365
+ SYS_BSDTHREAD_REGISTER = 366
+ SYS_WORKQ_OPEN = 367
+ SYS_WORKQ_KERNRETURN = 368
+ SYS_KEVENT64 = 369
+ SYS___OLD_SEMWAIT_SIGNAL = 370
+ SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
+ SYS_THREAD_SELFID = 372
+ SYS_LEDGER = 373
+ SYS___MAC_EXECVE = 380
+ SYS___MAC_SYSCALL = 381
+ SYS___MAC_GET_FILE = 382
+ SYS___MAC_SET_FILE = 383
+ SYS___MAC_GET_LINK = 384
+ SYS___MAC_SET_LINK = 385
+ SYS___MAC_GET_PROC = 386
+ SYS___MAC_SET_PROC = 387
+ SYS___MAC_GET_FD = 388
+ SYS___MAC_SET_FD = 389
+ SYS___MAC_GET_PID = 390
+ SYS___MAC_GET_LCID = 391
+ SYS___MAC_GET_LCTX = 392
+ SYS___MAC_SET_LCTX = 393
+ SYS_SETLCID = 394
+ SYS_GETLCID = 395
+ SYS_READ_NOCANCEL = 396
+ SYS_WRITE_NOCANCEL = 397
+ SYS_OPEN_NOCANCEL = 398
+ SYS_CLOSE_NOCANCEL = 399
+ SYS_WAIT4_NOCANCEL = 400
+ SYS_RECVMSG_NOCANCEL = 401
+ SYS_SENDMSG_NOCANCEL = 402
+ SYS_RECVFROM_NOCANCEL = 403
+ SYS_ACCEPT_NOCANCEL = 404
+ SYS_MSYNC_NOCANCEL = 405
+ SYS_FCNTL_NOCANCEL = 406
+ SYS_SELECT_NOCANCEL = 407
+ SYS_FSYNC_NOCANCEL = 408
+ SYS_CONNECT_NOCANCEL = 409
+ SYS_SIGSUSPEND_NOCANCEL = 410
+ SYS_READV_NOCANCEL = 411
+ SYS_WRITEV_NOCANCEL = 412
+ SYS_SENDTO_NOCANCEL = 413
+ SYS_PREAD_NOCANCEL = 414
+ SYS_PWRITE_NOCANCEL = 415
+ SYS_WAITID_NOCANCEL = 416
+ SYS_POLL_NOCANCEL = 417
+ SYS_MSGSND_NOCANCEL = 418
+ SYS_MSGRCV_NOCANCEL = 419
+ SYS_SEM_WAIT_NOCANCEL = 420
+ SYS_AIO_SUSPEND_NOCANCEL = 421
+ SYS___SIGWAIT_NOCANCEL = 422
+ SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
+ SYS___MAC_MOUNT = 424
+ SYS___MAC_GET_MOUNT = 425
+ SYS___MAC_GETFSSTAT = 426
+ SYS_FSGETPATH = 427
+ SYS_AUDIT_SESSION_SELF = 428
+ SYS_AUDIT_SESSION_JOIN = 429
+ SYS_FILEPORT_MAKEPORT = 430
+ SYS_FILEPORT_MAKEFD = 431
+ SYS_AUDIT_SESSION_PORT = 432
+ SYS_PID_SUSPEND = 433
+ SYS_PID_RESUME = 434
+ SYS_PID_HIBERNATE = 435
+ SYS_PID_SHUTDOWN_SOCKETS = 436
+ SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+ SYS_KAS_INFO = 439
+ SYS_MEMORYSTATUS_CONTROL = 440
+ SYS_GUARDED_OPEN_NP = 441
+ SYS_GUARDED_CLOSE_NP = 442
+ SYS_GUARDED_KQUEUE_NP = 443
+ SYS_CHANGE_FDGUARD_NP = 444
+ SYS_PROC_RLIMIT_CONTROL = 446
+ SYS_CONNECTX = 447
+ SYS_DISCONNECTX = 448
+ SYS_PEELOFF = 449
+ SYS_SOCKET_DELEGATE = 450
+ SYS_TELEMETRY = 451
+ SYS_PROC_UUID_POLICY = 452
+ SYS_MEMORYSTATUS_GET_LEVEL = 453
+ SYS_SYSTEM_OVERRIDE = 454
+ SYS_VFS_PURGE = 455
+ SYS_SFI_CTL = 456
+ SYS_SFI_PIDCTL = 457
+ SYS_COALITION = 458
+ SYS_COALITION_INFO = 459
+ SYS_NECP_MATCH_POLICY = 460
+ SYS_GETATTRLISTBULK = 461
+ SYS_OPENAT = 463
+ SYS_OPENAT_NOCANCEL = 464
+ SYS_RENAMEAT = 465
+ SYS_FACCESSAT = 466
+ SYS_FCHMODAT = 467
+ SYS_FCHOWNAT = 468
+ SYS_FSTATAT = 469
+ SYS_FSTATAT64 = 470
+ SYS_LINKAT = 471
+ SYS_UNLINKAT = 472
+ SYS_READLINKAT = 473
+ SYS_SYMLINKAT = 474
+ SYS_MKDIRAT = 475
+ SYS_GETATTRLISTAT = 476
+ SYS_PROC_TRACE_LOG = 477
+ SYS_BSDTHREAD_CTL = 478
+ SYS_OPENBYID_NP = 479
+ SYS_RECVMSG_X = 480
+ SYS_SENDMSG_X = 481
+ SYS_THREAD_SELFUSAGE = 482
+ SYS_CSRCTL = 483
+ SYS_GUARDED_OPEN_DPROTECTED_NP = 484
+ SYS_GUARDED_WRITE_NP = 485
+ SYS_GUARDED_PWRITE_NP = 486
+ SYS_GUARDED_WRITEV_NP = 487
+ SYS_RENAME_EXT = 488
+ SYS_MREMAP_ENCRYPTED = 489
+ SYS_MAXSYSCALL = 490
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
new file mode 100644
index 000000000..09de240c8
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
@@ -0,0 +1,398 @@
+// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,darwin
+
+package unix
+
+const (
+ SYS_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_WAIT4 = 7
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_CHDIR = 12
+ SYS_FCHDIR = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_CHOWN = 16
+ SYS_GETFSSTAT = 18
+ SYS_GETPID = 20
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_GETEUID = 25
+ SYS_PTRACE = 26
+ SYS_RECVMSG = 27
+ SYS_SENDMSG = 28
+ SYS_RECVFROM = 29
+ SYS_ACCEPT = 30
+ SYS_GETPEERNAME = 31
+ SYS_GETSOCKNAME = 32
+ SYS_ACCESS = 33
+ SYS_CHFLAGS = 34
+ SYS_FCHFLAGS = 35
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_GETPPID = 39
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_GETEGID = 43
+ SYS_SIGACTION = 46
+ SYS_GETGID = 47
+ SYS_SIGPROCMASK = 48
+ SYS_GETLOGIN = 49
+ SYS_SETLOGIN = 50
+ SYS_ACCT = 51
+ SYS_SIGPENDING = 52
+ SYS_SIGALTSTACK = 53
+ SYS_IOCTL = 54
+ SYS_REBOOT = 55
+ SYS_REVOKE = 56
+ SYS_SYMLINK = 57
+ SYS_READLINK = 58
+ SYS_EXECVE = 59
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_MSYNC = 65
+ SYS_VFORK = 66
+ SYS_MUNMAP = 73
+ SYS_MPROTECT = 74
+ SYS_MADVISE = 75
+ SYS_MINCORE = 78
+ SYS_GETGROUPS = 79
+ SYS_SETGROUPS = 80
+ SYS_GETPGRP = 81
+ SYS_SETPGID = 82
+ SYS_SETITIMER = 83
+ SYS_SWAPON = 85
+ SYS_GETITIMER = 86
+ SYS_GETDTABLESIZE = 89
+ SYS_DUP2 = 90
+ SYS_FCNTL = 92
+ SYS_SELECT = 93
+ SYS_FSYNC = 95
+ SYS_SETPRIORITY = 96
+ SYS_SOCKET = 97
+ SYS_CONNECT = 98
+ SYS_GETPRIORITY = 100
+ SYS_BIND = 104
+ SYS_SETSOCKOPT = 105
+ SYS_LISTEN = 106
+ SYS_SIGSUSPEND = 111
+ SYS_GETTIMEOFDAY = 116
+ SYS_GETRUSAGE = 117
+ SYS_GETSOCKOPT = 118
+ SYS_READV = 120
+ SYS_WRITEV = 121
+ SYS_SETTIMEOFDAY = 122
+ SYS_FCHOWN = 123
+ SYS_FCHMOD = 124
+ SYS_SETREUID = 126
+ SYS_SETREGID = 127
+ SYS_RENAME = 128
+ SYS_FLOCK = 131
+ SYS_MKFIFO = 132
+ SYS_SENDTO = 133
+ SYS_SHUTDOWN = 134
+ SYS_SOCKETPAIR = 135
+ SYS_MKDIR = 136
+ SYS_RMDIR = 137
+ SYS_UTIMES = 138
+ SYS_FUTIMES = 139
+ SYS_ADJTIME = 140
+ SYS_GETHOSTUUID = 142
+ SYS_SETSID = 147
+ SYS_GETPGID = 151
+ SYS_SETPRIVEXEC = 152
+ SYS_PREAD = 153
+ SYS_PWRITE = 154
+ SYS_NFSSVC = 155
+ SYS_STATFS = 157
+ SYS_FSTATFS = 158
+ SYS_UNMOUNT = 159
+ SYS_GETFH = 161
+ SYS_QUOTACTL = 165
+ SYS_MOUNT = 167
+ SYS_CSOPS = 169
+ SYS_CSOPS_AUDITTOKEN = 170
+ SYS_WAITID = 173
+ SYS_KDEBUG_TRACE64 = 179
+ SYS_KDEBUG_TRACE = 180
+ SYS_SETGID = 181
+ SYS_SETEGID = 182
+ SYS_SETEUID = 183
+ SYS_SIGRETURN = 184
+ SYS_CHUD = 185
+ SYS_FDATASYNC = 187
+ SYS_STAT = 188
+ SYS_FSTAT = 189
+ SYS_LSTAT = 190
+ SYS_PATHCONF = 191
+ SYS_FPATHCONF = 192
+ SYS_GETRLIMIT = 194
+ SYS_SETRLIMIT = 195
+ SYS_GETDIRENTRIES = 196
+ SYS_MMAP = 197
+ SYS_LSEEK = 199
+ SYS_TRUNCATE = 200
+ SYS_FTRUNCATE = 201
+ SYS_SYSCTL = 202
+ SYS_MLOCK = 203
+ SYS_MUNLOCK = 204
+ SYS_UNDELETE = 205
+ SYS_OPEN_DPROTECTED_NP = 216
+ SYS_GETATTRLIST = 220
+ SYS_SETATTRLIST = 221
+ SYS_GETDIRENTRIESATTR = 222
+ SYS_EXCHANGEDATA = 223
+ SYS_SEARCHFS = 225
+ SYS_DELETE = 226
+ SYS_COPYFILE = 227
+ SYS_FGETATTRLIST = 228
+ SYS_FSETATTRLIST = 229
+ SYS_POLL = 230
+ SYS_WATCHEVENT = 231
+ SYS_WAITEVENT = 232
+ SYS_MODWATCH = 233
+ SYS_GETXATTR = 234
+ SYS_FGETXATTR = 235
+ SYS_SETXATTR = 236
+ SYS_FSETXATTR = 237
+ SYS_REMOVEXATTR = 238
+ SYS_FREMOVEXATTR = 239
+ SYS_LISTXATTR = 240
+ SYS_FLISTXATTR = 241
+ SYS_FSCTL = 242
+ SYS_INITGROUPS = 243
+ SYS_POSIX_SPAWN = 244
+ SYS_FFSCTL = 245
+ SYS_NFSCLNT = 247
+ SYS_FHOPEN = 248
+ SYS_MINHERIT = 250
+ SYS_SEMSYS = 251
+ SYS_MSGSYS = 252
+ SYS_SHMSYS = 253
+ SYS_SEMCTL = 254
+ SYS_SEMGET = 255
+ SYS_SEMOP = 256
+ SYS_MSGCTL = 258
+ SYS_MSGGET = 259
+ SYS_MSGSND = 260
+ SYS_MSGRCV = 261
+ SYS_SHMAT = 262
+ SYS_SHMCTL = 263
+ SYS_SHMDT = 264
+ SYS_SHMGET = 265
+ SYS_SHM_OPEN = 266
+ SYS_SHM_UNLINK = 267
+ SYS_SEM_OPEN = 268
+ SYS_SEM_CLOSE = 269
+ SYS_SEM_UNLINK = 270
+ SYS_SEM_WAIT = 271
+ SYS_SEM_TRYWAIT = 272
+ SYS_SEM_POST = 273
+ SYS_SYSCTLBYNAME = 274
+ SYS_OPEN_EXTENDED = 277
+ SYS_UMASK_EXTENDED = 278
+ SYS_STAT_EXTENDED = 279
+ SYS_LSTAT_EXTENDED = 280
+ SYS_FSTAT_EXTENDED = 281
+ SYS_CHMOD_EXTENDED = 282
+ SYS_FCHMOD_EXTENDED = 283
+ SYS_ACCESS_EXTENDED = 284
+ SYS_SETTID = 285
+ SYS_GETTID = 286
+ SYS_SETSGROUPS = 287
+ SYS_GETSGROUPS = 288
+ SYS_SETWGROUPS = 289
+ SYS_GETWGROUPS = 290
+ SYS_MKFIFO_EXTENDED = 291
+ SYS_MKDIR_EXTENDED = 292
+ SYS_IDENTITYSVC = 293
+ SYS_SHARED_REGION_CHECK_NP = 294
+ SYS_VM_PRESSURE_MONITOR = 296
+ SYS_PSYNCH_RW_LONGRDLOCK = 297
+ SYS_PSYNCH_RW_YIELDWRLOCK = 298
+ SYS_PSYNCH_RW_DOWNGRADE = 299
+ SYS_PSYNCH_RW_UPGRADE = 300
+ SYS_PSYNCH_MUTEXWAIT = 301
+ SYS_PSYNCH_MUTEXDROP = 302
+ SYS_PSYNCH_CVBROAD = 303
+ SYS_PSYNCH_CVSIGNAL = 304
+ SYS_PSYNCH_CVWAIT = 305
+ SYS_PSYNCH_RW_RDLOCK = 306
+ SYS_PSYNCH_RW_WRLOCK = 307
+ SYS_PSYNCH_RW_UNLOCK = 308
+ SYS_PSYNCH_RW_UNLOCK2 = 309
+ SYS_GETSID = 310
+ SYS_SETTID_WITH_PID = 311
+ SYS_PSYNCH_CVCLRPREPOST = 312
+ SYS_AIO_FSYNC = 313
+ SYS_AIO_RETURN = 314
+ SYS_AIO_SUSPEND = 315
+ SYS_AIO_CANCEL = 316
+ SYS_AIO_ERROR = 317
+ SYS_AIO_READ = 318
+ SYS_AIO_WRITE = 319
+ SYS_LIO_LISTIO = 320
+ SYS_IOPOLICYSYS = 322
+ SYS_PROCESS_POLICY = 323
+ SYS_MLOCKALL = 324
+ SYS_MUNLOCKALL = 325
+ SYS_ISSETUGID = 327
+ SYS___PTHREAD_KILL = 328
+ SYS___PTHREAD_SIGMASK = 329
+ SYS___SIGWAIT = 330
+ SYS___DISABLE_THREADSIGNAL = 331
+ SYS___PTHREAD_MARKCANCEL = 332
+ SYS___PTHREAD_CANCELED = 333
+ SYS___SEMWAIT_SIGNAL = 334
+ SYS_PROC_INFO = 336
+ SYS_SENDFILE = 337
+ SYS_STAT64 = 338
+ SYS_FSTAT64 = 339
+ SYS_LSTAT64 = 340
+ SYS_STAT64_EXTENDED = 341
+ SYS_LSTAT64_EXTENDED = 342
+ SYS_FSTAT64_EXTENDED = 343
+ SYS_GETDIRENTRIES64 = 344
+ SYS_STATFS64 = 345
+ SYS_FSTATFS64 = 346
+ SYS_GETFSSTAT64 = 347
+ SYS___PTHREAD_CHDIR = 348
+ SYS___PTHREAD_FCHDIR = 349
+ SYS_AUDIT = 350
+ SYS_AUDITON = 351
+ SYS_GETAUID = 353
+ SYS_SETAUID = 354
+ SYS_GETAUDIT_ADDR = 357
+ SYS_SETAUDIT_ADDR = 358
+ SYS_AUDITCTL = 359
+ SYS_BSDTHREAD_CREATE = 360
+ SYS_BSDTHREAD_TERMINATE = 361
+ SYS_KQUEUE = 362
+ SYS_KEVENT = 363
+ SYS_LCHOWN = 364
+ SYS_STACK_SNAPSHOT = 365
+ SYS_BSDTHREAD_REGISTER = 366
+ SYS_WORKQ_OPEN = 367
+ SYS_WORKQ_KERNRETURN = 368
+ SYS_KEVENT64 = 369
+ SYS___OLD_SEMWAIT_SIGNAL = 370
+ SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
+ SYS_THREAD_SELFID = 372
+ SYS_LEDGER = 373
+ SYS___MAC_EXECVE = 380
+ SYS___MAC_SYSCALL = 381
+ SYS___MAC_GET_FILE = 382
+ SYS___MAC_SET_FILE = 383
+ SYS___MAC_GET_LINK = 384
+ SYS___MAC_SET_LINK = 385
+ SYS___MAC_GET_PROC = 386
+ SYS___MAC_SET_PROC = 387
+ SYS___MAC_GET_FD = 388
+ SYS___MAC_SET_FD = 389
+ SYS___MAC_GET_PID = 390
+ SYS___MAC_GET_LCID = 391
+ SYS___MAC_GET_LCTX = 392
+ SYS___MAC_SET_LCTX = 393
+ SYS_SETLCID = 394
+ SYS_GETLCID = 395
+ SYS_READ_NOCANCEL = 396
+ SYS_WRITE_NOCANCEL = 397
+ SYS_OPEN_NOCANCEL = 398
+ SYS_CLOSE_NOCANCEL = 399
+ SYS_WAIT4_NOCANCEL = 400
+ SYS_RECVMSG_NOCANCEL = 401
+ SYS_SENDMSG_NOCANCEL = 402
+ SYS_RECVFROM_NOCANCEL = 403
+ SYS_ACCEPT_NOCANCEL = 404
+ SYS_MSYNC_NOCANCEL = 405
+ SYS_FCNTL_NOCANCEL = 406
+ SYS_SELECT_NOCANCEL = 407
+ SYS_FSYNC_NOCANCEL = 408
+ SYS_CONNECT_NOCANCEL = 409
+ SYS_SIGSUSPEND_NOCANCEL = 410
+ SYS_READV_NOCANCEL = 411
+ SYS_WRITEV_NOCANCEL = 412
+ SYS_SENDTO_NOCANCEL = 413
+ SYS_PREAD_NOCANCEL = 414
+ SYS_PWRITE_NOCANCEL = 415
+ SYS_WAITID_NOCANCEL = 416
+ SYS_POLL_NOCANCEL = 417
+ SYS_MSGSND_NOCANCEL = 418
+ SYS_MSGRCV_NOCANCEL = 419
+ SYS_SEM_WAIT_NOCANCEL = 420
+ SYS_AIO_SUSPEND_NOCANCEL = 421
+ SYS___SIGWAIT_NOCANCEL = 422
+ SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
+ SYS___MAC_MOUNT = 424
+ SYS___MAC_GET_MOUNT = 425
+ SYS___MAC_GETFSSTAT = 426
+ SYS_FSGETPATH = 427
+ SYS_AUDIT_SESSION_SELF = 428
+ SYS_AUDIT_SESSION_JOIN = 429
+ SYS_FILEPORT_MAKEPORT = 430
+ SYS_FILEPORT_MAKEFD = 431
+ SYS_AUDIT_SESSION_PORT = 432
+ SYS_PID_SUSPEND = 433
+ SYS_PID_RESUME = 434
+ SYS_PID_HIBERNATE = 435
+ SYS_PID_SHUTDOWN_SOCKETS = 436
+ SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+ SYS_KAS_INFO = 439
+ SYS_MEMORYSTATUS_CONTROL = 440
+ SYS_GUARDED_OPEN_NP = 441
+ SYS_GUARDED_CLOSE_NP = 442
+ SYS_GUARDED_KQUEUE_NP = 443
+ SYS_CHANGE_FDGUARD_NP = 444
+ SYS_PROC_RLIMIT_CONTROL = 446
+ SYS_CONNECTX = 447
+ SYS_DISCONNECTX = 448
+ SYS_PEELOFF = 449
+ SYS_SOCKET_DELEGATE = 450
+ SYS_TELEMETRY = 451
+ SYS_PROC_UUID_POLICY = 452
+ SYS_MEMORYSTATUS_GET_LEVEL = 453
+ SYS_SYSTEM_OVERRIDE = 454
+ SYS_VFS_PURGE = 455
+ SYS_SFI_CTL = 456
+ SYS_SFI_PIDCTL = 457
+ SYS_COALITION = 458
+ SYS_COALITION_INFO = 459
+ SYS_NECP_MATCH_POLICY = 460
+ SYS_GETATTRLISTBULK = 461
+ SYS_OPENAT = 463
+ SYS_OPENAT_NOCANCEL = 464
+ SYS_RENAMEAT = 465
+ SYS_FACCESSAT = 466
+ SYS_FCHMODAT = 467
+ SYS_FCHOWNAT = 468
+ SYS_FSTATAT = 469
+ SYS_FSTATAT64 = 470
+ SYS_LINKAT = 471
+ SYS_UNLINKAT = 472
+ SYS_READLINKAT = 473
+ SYS_SYMLINKAT = 474
+ SYS_MKDIRAT = 475
+ SYS_GETATTRLISTAT = 476
+ SYS_PROC_TRACE_LOG = 477
+ SYS_BSDTHREAD_CTL = 478
+ SYS_OPENBYID_NP = 479
+ SYS_RECVMSG_X = 480
+ SYS_SENDMSG_X = 481
+ SYS_THREAD_SELFUSAGE = 482
+ SYS_CSRCTL = 483
+ SYS_GUARDED_OPEN_DPROTECTED_NP = 484
+ SYS_GUARDED_WRITE_NP = 485
+ SYS_GUARDED_PWRITE_NP = 486
+ SYS_GUARDED_WRITEV_NP = 487
+ SYS_RENAME_EXT = 488
+ SYS_MREMAP_ENCRYPTED = 489
+ SYS_MAXSYSCALL = 490
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_arm.go
new file mode 100644
index 000000000..b8c9aea85
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_arm.go
@@ -0,0 +1,358 @@
+// mksysnum_darwin.pl /usr/include/sys/syscall.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm,darwin
+
+package unix
+
+const (
+ SYS_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_WAIT4 = 7
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_CHDIR = 12
+ SYS_FCHDIR = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_CHOWN = 16
+ SYS_GETFSSTAT = 18
+ SYS_GETPID = 20
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_GETEUID = 25
+ SYS_PTRACE = 26
+ SYS_RECVMSG = 27
+ SYS_SENDMSG = 28
+ SYS_RECVFROM = 29
+ SYS_ACCEPT = 30
+ SYS_GETPEERNAME = 31
+ SYS_GETSOCKNAME = 32
+ SYS_ACCESS = 33
+ SYS_CHFLAGS = 34
+ SYS_FCHFLAGS = 35
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_GETPPID = 39
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_GETEGID = 43
+ SYS_SIGACTION = 46
+ SYS_GETGID = 47
+ SYS_SIGPROCMASK = 48
+ SYS_GETLOGIN = 49
+ SYS_SETLOGIN = 50
+ SYS_ACCT = 51
+ SYS_SIGPENDING = 52
+ SYS_SIGALTSTACK = 53
+ SYS_IOCTL = 54
+ SYS_REBOOT = 55
+ SYS_REVOKE = 56
+ SYS_SYMLINK = 57
+ SYS_READLINK = 58
+ SYS_EXECVE = 59
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_MSYNC = 65
+ SYS_VFORK = 66
+ SYS_MUNMAP = 73
+ SYS_MPROTECT = 74
+ SYS_MADVISE = 75
+ SYS_MINCORE = 78
+ SYS_GETGROUPS = 79
+ SYS_SETGROUPS = 80
+ SYS_GETPGRP = 81
+ SYS_SETPGID = 82
+ SYS_SETITIMER = 83
+ SYS_SWAPON = 85
+ SYS_GETITIMER = 86
+ SYS_GETDTABLESIZE = 89
+ SYS_DUP2 = 90
+ SYS_FCNTL = 92
+ SYS_SELECT = 93
+ SYS_FSYNC = 95
+ SYS_SETPRIORITY = 96
+ SYS_SOCKET = 97
+ SYS_CONNECT = 98
+ SYS_GETPRIORITY = 100
+ SYS_BIND = 104
+ SYS_SETSOCKOPT = 105
+ SYS_LISTEN = 106
+ SYS_SIGSUSPEND = 111
+ SYS_GETTIMEOFDAY = 116
+ SYS_GETRUSAGE = 117
+ SYS_GETSOCKOPT = 118
+ SYS_READV = 120
+ SYS_WRITEV = 121
+ SYS_SETTIMEOFDAY = 122
+ SYS_FCHOWN = 123
+ SYS_FCHMOD = 124
+ SYS_SETREUID = 126
+ SYS_SETREGID = 127
+ SYS_RENAME = 128
+ SYS_FLOCK = 131
+ SYS_MKFIFO = 132
+ SYS_SENDTO = 133
+ SYS_SHUTDOWN = 134
+ SYS_SOCKETPAIR = 135
+ SYS_MKDIR = 136
+ SYS_RMDIR = 137
+ SYS_UTIMES = 138
+ SYS_FUTIMES = 139
+ SYS_ADJTIME = 140
+ SYS_GETHOSTUUID = 142
+ SYS_SETSID = 147
+ SYS_GETPGID = 151
+ SYS_SETPRIVEXEC = 152
+ SYS_PREAD = 153
+ SYS_PWRITE = 154
+ SYS_NFSSVC = 155
+ SYS_STATFS = 157
+ SYS_FSTATFS = 158
+ SYS_UNMOUNT = 159
+ SYS_GETFH = 161
+ SYS_QUOTACTL = 165
+ SYS_MOUNT = 167
+ SYS_CSOPS = 169
+ SYS_CSOPS_AUDITTOKEN = 170
+ SYS_WAITID = 173
+ SYS_KDEBUG_TRACE = 180
+ SYS_SETGID = 181
+ SYS_SETEGID = 182
+ SYS_SETEUID = 183
+ SYS_SIGRETURN = 184
+ SYS_CHUD = 185
+ SYS_FDATASYNC = 187
+ SYS_STAT = 188
+ SYS_FSTAT = 189
+ SYS_LSTAT = 190
+ SYS_PATHCONF = 191
+ SYS_FPATHCONF = 192
+ SYS_GETRLIMIT = 194
+ SYS_SETRLIMIT = 195
+ SYS_GETDIRENTRIES = 196
+ SYS_MMAP = 197
+ SYS_LSEEK = 199
+ SYS_TRUNCATE = 200
+ SYS_FTRUNCATE = 201
+ SYS___SYSCTL = 202
+ SYS_MLOCK = 203
+ SYS_MUNLOCK = 204
+ SYS_UNDELETE = 205
+ SYS_ATSOCKET = 206
+ SYS_ATGETMSG = 207
+ SYS_ATPUTMSG = 208
+ SYS_ATPSNDREQ = 209
+ SYS_ATPSNDRSP = 210
+ SYS_ATPGETREQ = 211
+ SYS_ATPGETRSP = 212
+ SYS_OPEN_DPROTECTED_NP = 216
+ SYS_GETATTRLIST = 220
+ SYS_SETATTRLIST = 221
+ SYS_GETDIRENTRIESATTR = 222
+ SYS_EXCHANGEDATA = 223
+ SYS_SEARCHFS = 225
+ SYS_DELETE = 226
+ SYS_COPYFILE = 227
+ SYS_FGETATTRLIST = 228
+ SYS_FSETATTRLIST = 229
+ SYS_POLL = 230
+ SYS_WATCHEVENT = 231
+ SYS_WAITEVENT = 232
+ SYS_MODWATCH = 233
+ SYS_GETXATTR = 234
+ SYS_FGETXATTR = 235
+ SYS_SETXATTR = 236
+ SYS_FSETXATTR = 237
+ SYS_REMOVEXATTR = 238
+ SYS_FREMOVEXATTR = 239
+ SYS_LISTXATTR = 240
+ SYS_FLISTXATTR = 241
+ SYS_FSCTL = 242
+ SYS_INITGROUPS = 243
+ SYS_POSIX_SPAWN = 244
+ SYS_FFSCTL = 245
+ SYS_NFSCLNT = 247
+ SYS_FHOPEN = 248
+ SYS_MINHERIT = 250
+ SYS_SEMSYS = 251
+ SYS_MSGSYS = 252
+ SYS_SHMSYS = 253
+ SYS_SEMCTL = 254
+ SYS_SEMGET = 255
+ SYS_SEMOP = 256
+ SYS_MSGCTL = 258
+ SYS_MSGGET = 259
+ SYS_MSGSND = 260
+ SYS_MSGRCV = 261
+ SYS_SHMAT = 262
+ SYS_SHMCTL = 263
+ SYS_SHMDT = 264
+ SYS_SHMGET = 265
+ SYS_SHM_OPEN = 266
+ SYS_SHM_UNLINK = 267
+ SYS_SEM_OPEN = 268
+ SYS_SEM_CLOSE = 269
+ SYS_SEM_UNLINK = 270
+ SYS_SEM_WAIT = 271
+ SYS_SEM_TRYWAIT = 272
+ SYS_SEM_POST = 273
+ SYS_SEM_GETVALUE = 274
+ SYS_SEM_INIT = 275
+ SYS_SEM_DESTROY = 276
+ SYS_OPEN_EXTENDED = 277
+ SYS_UMASK_EXTENDED = 278
+ SYS_STAT_EXTENDED = 279
+ SYS_LSTAT_EXTENDED = 280
+ SYS_FSTAT_EXTENDED = 281
+ SYS_CHMOD_EXTENDED = 282
+ SYS_FCHMOD_EXTENDED = 283
+ SYS_ACCESS_EXTENDED = 284
+ SYS_SETTID = 285
+ SYS_GETTID = 286
+ SYS_SETSGROUPS = 287
+ SYS_GETSGROUPS = 288
+ SYS_SETWGROUPS = 289
+ SYS_GETWGROUPS = 290
+ SYS_MKFIFO_EXTENDED = 291
+ SYS_MKDIR_EXTENDED = 292
+ SYS_IDENTITYSVC = 293
+ SYS_SHARED_REGION_CHECK_NP = 294
+ SYS_VM_PRESSURE_MONITOR = 296
+ SYS_PSYNCH_RW_LONGRDLOCK = 297
+ SYS_PSYNCH_RW_YIELDWRLOCK = 298
+ SYS_PSYNCH_RW_DOWNGRADE = 299
+ SYS_PSYNCH_RW_UPGRADE = 300
+ SYS_PSYNCH_MUTEXWAIT = 301
+ SYS_PSYNCH_MUTEXDROP = 302
+ SYS_PSYNCH_CVBROAD = 303
+ SYS_PSYNCH_CVSIGNAL = 304
+ SYS_PSYNCH_CVWAIT = 305
+ SYS_PSYNCH_RW_RDLOCK = 306
+ SYS_PSYNCH_RW_WRLOCK = 307
+ SYS_PSYNCH_RW_UNLOCK = 308
+ SYS_PSYNCH_RW_UNLOCK2 = 309
+ SYS_GETSID = 310
+ SYS_SETTID_WITH_PID = 311
+ SYS_PSYNCH_CVCLRPREPOST = 312
+ SYS_AIO_FSYNC = 313
+ SYS_AIO_RETURN = 314
+ SYS_AIO_SUSPEND = 315
+ SYS_AIO_CANCEL = 316
+ SYS_AIO_ERROR = 317
+ SYS_AIO_READ = 318
+ SYS_AIO_WRITE = 319
+ SYS_LIO_LISTIO = 320
+ SYS_IOPOLICYSYS = 322
+ SYS_PROCESS_POLICY = 323
+ SYS_MLOCKALL = 324
+ SYS_MUNLOCKALL = 325
+ SYS_ISSETUGID = 327
+ SYS___PTHREAD_KILL = 328
+ SYS___PTHREAD_SIGMASK = 329
+ SYS___SIGWAIT = 330
+ SYS___DISABLE_THREADSIGNAL = 331
+ SYS___PTHREAD_MARKCANCEL = 332
+ SYS___PTHREAD_CANCELED = 333
+ SYS___SEMWAIT_SIGNAL = 334
+ SYS_PROC_INFO = 336
+ SYS_SENDFILE = 337
+ SYS_STAT64 = 338
+ SYS_FSTAT64 = 339
+ SYS_LSTAT64 = 340
+ SYS_STAT64_EXTENDED = 341
+ SYS_LSTAT64_EXTENDED = 342
+ SYS_FSTAT64_EXTENDED = 343
+ SYS_GETDIRENTRIES64 = 344
+ SYS_STATFS64 = 345
+ SYS_FSTATFS64 = 346
+ SYS_GETFSSTAT64 = 347
+ SYS___PTHREAD_CHDIR = 348
+ SYS___PTHREAD_FCHDIR = 349
+ SYS_AUDIT = 350
+ SYS_AUDITON = 351
+ SYS_GETAUID = 353
+ SYS_SETAUID = 354
+ SYS_GETAUDIT_ADDR = 357
+ SYS_SETAUDIT_ADDR = 358
+ SYS_AUDITCTL = 359
+ SYS_BSDTHREAD_CREATE = 360
+ SYS_BSDTHREAD_TERMINATE = 361
+ SYS_KQUEUE = 362
+ SYS_KEVENT = 363
+ SYS_LCHOWN = 364
+ SYS_STACK_SNAPSHOT = 365
+ SYS_BSDTHREAD_REGISTER = 366
+ SYS_WORKQ_OPEN = 367
+ SYS_WORKQ_KERNRETURN = 368
+ SYS_KEVENT64 = 369
+ SYS___OLD_SEMWAIT_SIGNAL = 370
+ SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
+ SYS_THREAD_SELFID = 372
+ SYS_LEDGER = 373
+ SYS___MAC_EXECVE = 380
+ SYS___MAC_SYSCALL = 381
+ SYS___MAC_GET_FILE = 382
+ SYS___MAC_SET_FILE = 383
+ SYS___MAC_GET_LINK = 384
+ SYS___MAC_SET_LINK = 385
+ SYS___MAC_GET_PROC = 386
+ SYS___MAC_SET_PROC = 387
+ SYS___MAC_GET_FD = 388
+ SYS___MAC_SET_FD = 389
+ SYS___MAC_GET_PID = 390
+ SYS___MAC_GET_LCID = 391
+ SYS___MAC_GET_LCTX = 392
+ SYS___MAC_SET_LCTX = 393
+ SYS_SETLCID = 394
+ SYS_GETLCID = 395
+ SYS_READ_NOCANCEL = 396
+ SYS_WRITE_NOCANCEL = 397
+ SYS_OPEN_NOCANCEL = 398
+ SYS_CLOSE_NOCANCEL = 399
+ SYS_WAIT4_NOCANCEL = 400
+ SYS_RECVMSG_NOCANCEL = 401
+ SYS_SENDMSG_NOCANCEL = 402
+ SYS_RECVFROM_NOCANCEL = 403
+ SYS_ACCEPT_NOCANCEL = 404
+ SYS_MSYNC_NOCANCEL = 405
+ SYS_FCNTL_NOCANCEL = 406
+ SYS_SELECT_NOCANCEL = 407
+ SYS_FSYNC_NOCANCEL = 408
+ SYS_CONNECT_NOCANCEL = 409
+ SYS_SIGSUSPEND_NOCANCEL = 410
+ SYS_READV_NOCANCEL = 411
+ SYS_WRITEV_NOCANCEL = 412
+ SYS_SENDTO_NOCANCEL = 413
+ SYS_PREAD_NOCANCEL = 414
+ SYS_PWRITE_NOCANCEL = 415
+ SYS_WAITID_NOCANCEL = 416
+ SYS_POLL_NOCANCEL = 417
+ SYS_MSGSND_NOCANCEL = 418
+ SYS_MSGRCV_NOCANCEL = 419
+ SYS_SEM_WAIT_NOCANCEL = 420
+ SYS_AIO_SUSPEND_NOCANCEL = 421
+ SYS___SIGWAIT_NOCANCEL = 422
+ SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
+ SYS___MAC_MOUNT = 424
+ SYS___MAC_GET_MOUNT = 425
+ SYS___MAC_GETFSSTAT = 426
+ SYS_FSGETPATH = 427
+ SYS_AUDIT_SESSION_SELF = 428
+ SYS_AUDIT_SESSION_JOIN = 429
+ SYS_FILEPORT_MAKEPORT = 430
+ SYS_FILEPORT_MAKEFD = 431
+ SYS_AUDIT_SESSION_PORT = 432
+ SYS_PID_SUSPEND = 433
+ SYS_PID_RESUME = 434
+ SYS_PID_HIBERNATE = 435
+ SYS_PID_SHUTDOWN_SOCKETS = 436
+ SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+ SYS_KAS_INFO = 439
+ SYS_MAXSYSCALL = 440
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
new file mode 100644
index 000000000..26677ebbf
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
@@ -0,0 +1,398 @@
+// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/sys/syscall.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm64,darwin
+
+package unix
+
+const (
+ SYS_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_WAIT4 = 7
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_CHDIR = 12
+ SYS_FCHDIR = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_CHOWN = 16
+ SYS_GETFSSTAT = 18
+ SYS_GETPID = 20
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_GETEUID = 25
+ SYS_PTRACE = 26
+ SYS_RECVMSG = 27
+ SYS_SENDMSG = 28
+ SYS_RECVFROM = 29
+ SYS_ACCEPT = 30
+ SYS_GETPEERNAME = 31
+ SYS_GETSOCKNAME = 32
+ SYS_ACCESS = 33
+ SYS_CHFLAGS = 34
+ SYS_FCHFLAGS = 35
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_GETPPID = 39
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_GETEGID = 43
+ SYS_SIGACTION = 46
+ SYS_GETGID = 47
+ SYS_SIGPROCMASK = 48
+ SYS_GETLOGIN = 49
+ SYS_SETLOGIN = 50
+ SYS_ACCT = 51
+ SYS_SIGPENDING = 52
+ SYS_SIGALTSTACK = 53
+ SYS_IOCTL = 54
+ SYS_REBOOT = 55
+ SYS_REVOKE = 56
+ SYS_SYMLINK = 57
+ SYS_READLINK = 58
+ SYS_EXECVE = 59
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_MSYNC = 65
+ SYS_VFORK = 66
+ SYS_MUNMAP = 73
+ SYS_MPROTECT = 74
+ SYS_MADVISE = 75
+ SYS_MINCORE = 78
+ SYS_GETGROUPS = 79
+ SYS_SETGROUPS = 80
+ SYS_GETPGRP = 81
+ SYS_SETPGID = 82
+ SYS_SETITIMER = 83
+ SYS_SWAPON = 85
+ SYS_GETITIMER = 86
+ SYS_GETDTABLESIZE = 89
+ SYS_DUP2 = 90
+ SYS_FCNTL = 92
+ SYS_SELECT = 93
+ SYS_FSYNC = 95
+ SYS_SETPRIORITY = 96
+ SYS_SOCKET = 97
+ SYS_CONNECT = 98
+ SYS_GETPRIORITY = 100
+ SYS_BIND = 104
+ SYS_SETSOCKOPT = 105
+ SYS_LISTEN = 106
+ SYS_SIGSUSPEND = 111
+ SYS_GETTIMEOFDAY = 116
+ SYS_GETRUSAGE = 117
+ SYS_GETSOCKOPT = 118
+ SYS_READV = 120
+ SYS_WRITEV = 121
+ SYS_SETTIMEOFDAY = 122
+ SYS_FCHOWN = 123
+ SYS_FCHMOD = 124
+ SYS_SETREUID = 126
+ SYS_SETREGID = 127
+ SYS_RENAME = 128
+ SYS_FLOCK = 131
+ SYS_MKFIFO = 132
+ SYS_SENDTO = 133
+ SYS_SHUTDOWN = 134
+ SYS_SOCKETPAIR = 135
+ SYS_MKDIR = 136
+ SYS_RMDIR = 137
+ SYS_UTIMES = 138
+ SYS_FUTIMES = 139
+ SYS_ADJTIME = 140
+ SYS_GETHOSTUUID = 142
+ SYS_SETSID = 147
+ SYS_GETPGID = 151
+ SYS_SETPRIVEXEC = 152
+ SYS_PREAD = 153
+ SYS_PWRITE = 154
+ SYS_NFSSVC = 155
+ SYS_STATFS = 157
+ SYS_FSTATFS = 158
+ SYS_UNMOUNT = 159
+ SYS_GETFH = 161
+ SYS_QUOTACTL = 165
+ SYS_MOUNT = 167
+ SYS_CSOPS = 169
+ SYS_CSOPS_AUDITTOKEN = 170
+ SYS_WAITID = 173
+ SYS_KDEBUG_TRACE64 = 179
+ SYS_KDEBUG_TRACE = 180
+ SYS_SETGID = 181
+ SYS_SETEGID = 182
+ SYS_SETEUID = 183
+ SYS_SIGRETURN = 184
+ SYS_CHUD = 185
+ SYS_FDATASYNC = 187
+ SYS_STAT = 188
+ SYS_FSTAT = 189
+ SYS_LSTAT = 190
+ SYS_PATHCONF = 191
+ SYS_FPATHCONF = 192
+ SYS_GETRLIMIT = 194
+ SYS_SETRLIMIT = 195
+ SYS_GETDIRENTRIES = 196
+ SYS_MMAP = 197
+ SYS_LSEEK = 199
+ SYS_TRUNCATE = 200
+ SYS_FTRUNCATE = 201
+ SYS_SYSCTL = 202
+ SYS_MLOCK = 203
+ SYS_MUNLOCK = 204
+ SYS_UNDELETE = 205
+ SYS_OPEN_DPROTECTED_NP = 216
+ SYS_GETATTRLIST = 220
+ SYS_SETATTRLIST = 221
+ SYS_GETDIRENTRIESATTR = 222
+ SYS_EXCHANGEDATA = 223
+ SYS_SEARCHFS = 225
+ SYS_DELETE = 226
+ SYS_COPYFILE = 227
+ SYS_FGETATTRLIST = 228
+ SYS_FSETATTRLIST = 229
+ SYS_POLL = 230
+ SYS_WATCHEVENT = 231
+ SYS_WAITEVENT = 232
+ SYS_MODWATCH = 233
+ SYS_GETXATTR = 234
+ SYS_FGETXATTR = 235
+ SYS_SETXATTR = 236
+ SYS_FSETXATTR = 237
+ SYS_REMOVEXATTR = 238
+ SYS_FREMOVEXATTR = 239
+ SYS_LISTXATTR = 240
+ SYS_FLISTXATTR = 241
+ SYS_FSCTL = 242
+ SYS_INITGROUPS = 243
+ SYS_POSIX_SPAWN = 244
+ SYS_FFSCTL = 245
+ SYS_NFSCLNT = 247
+ SYS_FHOPEN = 248
+ SYS_MINHERIT = 250
+ SYS_SEMSYS = 251
+ SYS_MSGSYS = 252
+ SYS_SHMSYS = 253
+ SYS_SEMCTL = 254
+ SYS_SEMGET = 255
+ SYS_SEMOP = 256
+ SYS_MSGCTL = 258
+ SYS_MSGGET = 259
+ SYS_MSGSND = 260
+ SYS_MSGRCV = 261
+ SYS_SHMAT = 262
+ SYS_SHMCTL = 263
+ SYS_SHMDT = 264
+ SYS_SHMGET = 265
+ SYS_SHM_OPEN = 266
+ SYS_SHM_UNLINK = 267
+ SYS_SEM_OPEN = 268
+ SYS_SEM_CLOSE = 269
+ SYS_SEM_UNLINK = 270
+ SYS_SEM_WAIT = 271
+ SYS_SEM_TRYWAIT = 272
+ SYS_SEM_POST = 273
+ SYS_SYSCTLBYNAME = 274
+ SYS_OPEN_EXTENDED = 277
+ SYS_UMASK_EXTENDED = 278
+ SYS_STAT_EXTENDED = 279
+ SYS_LSTAT_EXTENDED = 280
+ SYS_FSTAT_EXTENDED = 281
+ SYS_CHMOD_EXTENDED = 282
+ SYS_FCHMOD_EXTENDED = 283
+ SYS_ACCESS_EXTENDED = 284
+ SYS_SETTID = 285
+ SYS_GETTID = 286
+ SYS_SETSGROUPS = 287
+ SYS_GETSGROUPS = 288
+ SYS_SETWGROUPS = 289
+ SYS_GETWGROUPS = 290
+ SYS_MKFIFO_EXTENDED = 291
+ SYS_MKDIR_EXTENDED = 292
+ SYS_IDENTITYSVC = 293
+ SYS_SHARED_REGION_CHECK_NP = 294
+ SYS_VM_PRESSURE_MONITOR = 296
+ SYS_PSYNCH_RW_LONGRDLOCK = 297
+ SYS_PSYNCH_RW_YIELDWRLOCK = 298
+ SYS_PSYNCH_RW_DOWNGRADE = 299
+ SYS_PSYNCH_RW_UPGRADE = 300
+ SYS_PSYNCH_MUTEXWAIT = 301
+ SYS_PSYNCH_MUTEXDROP = 302
+ SYS_PSYNCH_CVBROAD = 303
+ SYS_PSYNCH_CVSIGNAL = 304
+ SYS_PSYNCH_CVWAIT = 305
+ SYS_PSYNCH_RW_RDLOCK = 306
+ SYS_PSYNCH_RW_WRLOCK = 307
+ SYS_PSYNCH_RW_UNLOCK = 308
+ SYS_PSYNCH_RW_UNLOCK2 = 309
+ SYS_GETSID = 310
+ SYS_SETTID_WITH_PID = 311
+ SYS_PSYNCH_CVCLRPREPOST = 312
+ SYS_AIO_FSYNC = 313
+ SYS_AIO_RETURN = 314
+ SYS_AIO_SUSPEND = 315
+ SYS_AIO_CANCEL = 316
+ SYS_AIO_ERROR = 317
+ SYS_AIO_READ = 318
+ SYS_AIO_WRITE = 319
+ SYS_LIO_LISTIO = 320
+ SYS_IOPOLICYSYS = 322
+ SYS_PROCESS_POLICY = 323
+ SYS_MLOCKALL = 324
+ SYS_MUNLOCKALL = 325
+ SYS_ISSETUGID = 327
+ SYS___PTHREAD_KILL = 328
+ SYS___PTHREAD_SIGMASK = 329
+ SYS___SIGWAIT = 330
+ SYS___DISABLE_THREADSIGNAL = 331
+ SYS___PTHREAD_MARKCANCEL = 332
+ SYS___PTHREAD_CANCELED = 333
+ SYS___SEMWAIT_SIGNAL = 334
+ SYS_PROC_INFO = 336
+ SYS_SENDFILE = 337
+ SYS_STAT64 = 338
+ SYS_FSTAT64 = 339
+ SYS_LSTAT64 = 340
+ SYS_STAT64_EXTENDED = 341
+ SYS_LSTAT64_EXTENDED = 342
+ SYS_FSTAT64_EXTENDED = 343
+ SYS_GETDIRENTRIES64 = 344
+ SYS_STATFS64 = 345
+ SYS_FSTATFS64 = 346
+ SYS_GETFSSTAT64 = 347
+ SYS___PTHREAD_CHDIR = 348
+ SYS___PTHREAD_FCHDIR = 349
+ SYS_AUDIT = 350
+ SYS_AUDITON = 351
+ SYS_GETAUID = 353
+ SYS_SETAUID = 354
+ SYS_GETAUDIT_ADDR = 357
+ SYS_SETAUDIT_ADDR = 358
+ SYS_AUDITCTL = 359
+ SYS_BSDTHREAD_CREATE = 360
+ SYS_BSDTHREAD_TERMINATE = 361
+ SYS_KQUEUE = 362
+ SYS_KEVENT = 363
+ SYS_LCHOWN = 364
+ SYS_STACK_SNAPSHOT = 365
+ SYS_BSDTHREAD_REGISTER = 366
+ SYS_WORKQ_OPEN = 367
+ SYS_WORKQ_KERNRETURN = 368
+ SYS_KEVENT64 = 369
+ SYS___OLD_SEMWAIT_SIGNAL = 370
+ SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
+ SYS_THREAD_SELFID = 372
+ SYS_LEDGER = 373
+ SYS___MAC_EXECVE = 380
+ SYS___MAC_SYSCALL = 381
+ SYS___MAC_GET_FILE = 382
+ SYS___MAC_SET_FILE = 383
+ SYS___MAC_GET_LINK = 384
+ SYS___MAC_SET_LINK = 385
+ SYS___MAC_GET_PROC = 386
+ SYS___MAC_SET_PROC = 387
+ SYS___MAC_GET_FD = 388
+ SYS___MAC_SET_FD = 389
+ SYS___MAC_GET_PID = 390
+ SYS___MAC_GET_LCID = 391
+ SYS___MAC_GET_LCTX = 392
+ SYS___MAC_SET_LCTX = 393
+ SYS_SETLCID = 394
+ SYS_GETLCID = 395
+ SYS_READ_NOCANCEL = 396
+ SYS_WRITE_NOCANCEL = 397
+ SYS_OPEN_NOCANCEL = 398
+ SYS_CLOSE_NOCANCEL = 399
+ SYS_WAIT4_NOCANCEL = 400
+ SYS_RECVMSG_NOCANCEL = 401
+ SYS_SENDMSG_NOCANCEL = 402
+ SYS_RECVFROM_NOCANCEL = 403
+ SYS_ACCEPT_NOCANCEL = 404
+ SYS_MSYNC_NOCANCEL = 405
+ SYS_FCNTL_NOCANCEL = 406
+ SYS_SELECT_NOCANCEL = 407
+ SYS_FSYNC_NOCANCEL = 408
+ SYS_CONNECT_NOCANCEL = 409
+ SYS_SIGSUSPEND_NOCANCEL = 410
+ SYS_READV_NOCANCEL = 411
+ SYS_WRITEV_NOCANCEL = 412
+ SYS_SENDTO_NOCANCEL = 413
+ SYS_PREAD_NOCANCEL = 414
+ SYS_PWRITE_NOCANCEL = 415
+ SYS_WAITID_NOCANCEL = 416
+ SYS_POLL_NOCANCEL = 417
+ SYS_MSGSND_NOCANCEL = 418
+ SYS_MSGRCV_NOCANCEL = 419
+ SYS_SEM_WAIT_NOCANCEL = 420
+ SYS_AIO_SUSPEND_NOCANCEL = 421
+ SYS___SIGWAIT_NOCANCEL = 422
+ SYS___SEMWAIT_SIGNAL_NOCANCEL = 423
+ SYS___MAC_MOUNT = 424
+ SYS___MAC_GET_MOUNT = 425
+ SYS___MAC_GETFSSTAT = 426
+ SYS_FSGETPATH = 427
+ SYS_AUDIT_SESSION_SELF = 428
+ SYS_AUDIT_SESSION_JOIN = 429
+ SYS_FILEPORT_MAKEPORT = 430
+ SYS_FILEPORT_MAKEFD = 431
+ SYS_AUDIT_SESSION_PORT = 432
+ SYS_PID_SUSPEND = 433
+ SYS_PID_RESUME = 434
+ SYS_PID_HIBERNATE = 435
+ SYS_PID_SHUTDOWN_SOCKETS = 436
+ SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+ SYS_KAS_INFO = 439
+ SYS_MEMORYSTATUS_CONTROL = 440
+ SYS_GUARDED_OPEN_NP = 441
+ SYS_GUARDED_CLOSE_NP = 442
+ SYS_GUARDED_KQUEUE_NP = 443
+ SYS_CHANGE_FDGUARD_NP = 444
+ SYS_PROC_RLIMIT_CONTROL = 446
+ SYS_CONNECTX = 447
+ SYS_DISCONNECTX = 448
+ SYS_PEELOFF = 449
+ SYS_SOCKET_DELEGATE = 450
+ SYS_TELEMETRY = 451
+ SYS_PROC_UUID_POLICY = 452
+ SYS_MEMORYSTATUS_GET_LEVEL = 453
+ SYS_SYSTEM_OVERRIDE = 454
+ SYS_VFS_PURGE = 455
+ SYS_SFI_CTL = 456
+ SYS_SFI_PIDCTL = 457
+ SYS_COALITION = 458
+ SYS_COALITION_INFO = 459
+ SYS_NECP_MATCH_POLICY = 460
+ SYS_GETATTRLISTBULK = 461
+ SYS_OPENAT = 463
+ SYS_OPENAT_NOCANCEL = 464
+ SYS_RENAMEAT = 465
+ SYS_FACCESSAT = 466
+ SYS_FCHMODAT = 467
+ SYS_FCHOWNAT = 468
+ SYS_FSTATAT = 469
+ SYS_FSTATAT64 = 470
+ SYS_LINKAT = 471
+ SYS_UNLINKAT = 472
+ SYS_READLINKAT = 473
+ SYS_SYMLINKAT = 474
+ SYS_MKDIRAT = 475
+ SYS_GETATTRLISTAT = 476
+ SYS_PROC_TRACE_LOG = 477
+ SYS_BSDTHREAD_CTL = 478
+ SYS_OPENBYID_NP = 479
+ SYS_RECVMSG_X = 480
+ SYS_SENDMSG_X = 481
+ SYS_THREAD_SELFUSAGE = 482
+ SYS_CSRCTL = 483
+ SYS_GUARDED_OPEN_DPROTECTED_NP = 484
+ SYS_GUARDED_WRITE_NP = 485
+ SYS_GUARDED_PWRITE_NP = 486
+ SYS_GUARDED_WRITEV_NP = 487
+ SYS_RENAME_EXT = 488
+ SYS_MREMAP_ENCRYPTED = 489
+ SYS_MAXSYSCALL = 490
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_386.go
new file mode 100644
index 000000000..785240a75
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_386.go
@@ -0,0 +1,304 @@
+// mksysnum_dragonfly.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,dragonfly
+
+package unix
+
+const (
+ // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
+ SYS_EXIT = 1 // { void exit(int rval); }
+ SYS_FORK = 2 // { int fork(void); }
+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
+ SYS_CLOSE = 6 // { int close(int fd); }
+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, \
+ SYS_LINK = 9 // { int link(char *path, char *link); }
+ SYS_UNLINK = 10 // { int unlink(char *path); }
+ SYS_CHDIR = 12 // { int chdir(char *path); }
+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
+ SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, \
+ SYS_GETPID = 20 // { pid_t getpid(void); }
+ SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, \
+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t getuid(void); }
+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, \
+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); }
+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, \
+ SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); }
+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); }
+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); }
+ SYS_ACCESS = 33 // { int access(char *path, int flags); }
+ SYS_CHFLAGS = 34 // { int chflags(char *path, int flags); }
+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, int flags); }
+ SYS_SYNC = 36 // { int sync(void); }
+ SYS_KILL = 37 // { int kill(int pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t getppid(void); }
+ SYS_DUP = 41 // { int dup(u_int fd); }
+ SYS_PIPE = 42 // { int pipe(void); }
+ SYS_GETEGID = 43 // { gid_t getegid(void); }
+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, \
+ SYS_GETGID = 47 // { gid_t getgid(void); }
+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
+ SYS_ACCT = 51 // { int acct(char *path); }
+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
+ SYS_REBOOT = 55 // { int reboot(int opt); }
+ SYS_REVOKE = 56 // { int revoke(char *path); }
+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
+ SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); }
+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
+ SYS_CHROOT = 61 // { int chroot(char *path); }
+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
+ SYS_VFORK = 66 // { pid_t vfork(void); }
+ SYS_SBRK = 69 // { int sbrk(int incr); }
+ SYS_SSTK = 70 // { int sstk(int incr); }
+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); }
+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_GETPGRP = 81 // { int getpgrp(void); }
+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, \
+ SYS_SWAPON = 85 // { int swapon(char *name); }
+ SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
+ SYS_FSYNC = 95 // { int fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
+ SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
+ SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
+ SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, \
+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
+ SYS_RMDIR = 137 // { int rmdir(char *path); }
+ SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
+ SYS_SETSID = 147 // { int setsid(void); }
+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
+ SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); }
+ SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); }
+ SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
+ SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }
+ SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
+ SYS_UNAME = 164 // { int uname(struct utsname *name); }
+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
+ SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, \
+ SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, \
+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
+ SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, \
+ // SYS_NOSYS = 198; // { int nosys(void); } __syscall __syscall_args int
+ SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, \
+ SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); }
+ SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); }
+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, \
+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
+ SYS_UNDELETE = 205 // { int undelete(char *path); }
+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+ SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, \
+ SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); }
+ SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \
+ SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, \
+ SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 226 // { int msgsnd(int msqid, void *msgp, size_t msgsz, \
+ SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \
+ SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \
+ SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, \
+ SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); }
+ SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); }
+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
+ SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, \
+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); }
+ SYS_RFORK = 251 // { int rfork(int flags); }
+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, \
+ SYS_ISSETUGID = 253 // { int issetugid(void); }
+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
+ SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
+ SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, \
+ SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,\
+ SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
+ SYS_MODNEXT = 300 // { int modnext(int modid); }
+ SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); }
+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
+ SYS_MODFIND = 303 // { int modfind(const char *name); }
+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
+ SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); }
+ SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
+ SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
+ SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); }
+ SYS_AIO_READ = 318 // { int aio_read(struct aiocb *aiocbp); }
+ SYS_AIO_WRITE = 319 // { int aio_write(struct aiocb *aiocbp); }
+ SYS_LIO_LISTIO = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
+ SYS_YIELD = 321 // { int yield(void); }
+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
+ SYS___GETCWD = 326 // { int __getcwd(u_char *buf, u_int buflen); }
+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); }
+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, \
+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
+ SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, \
+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
+ SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); }
+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,\
+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,\
+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, \
+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, \
+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, \
+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
+ SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, \
+ SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, \
+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
+ SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }
+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
+ SYS_KQUEUE = 362 // { int kqueue(void); }
+ SYS_KEVENT = 363 // { int kevent(int fd, \
+ SYS_SCTP_PEELOFF = 364 // { int sctp_peeloff(int sd, caddr_t name ); }
+ SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); }
+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \
+ SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); }
+ SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }
+ SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }
+ SYS_EXEC_SYS_REGISTER = 465 // { int exec_sys_register(void *entry); }
+ SYS_EXEC_SYS_UNREGISTER = 466 // { int exec_sys_unregister(int id); }
+ SYS_SYS_CHECKPOINT = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }
+ SYS_MOUNTCTL = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }
+ SYS_UMTX_SLEEP = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }
+ SYS_UMTX_WAKEUP = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }
+ SYS_JAIL_ATTACH = 471 // { int jail_attach(int jid); }
+ SYS_SET_TLS_AREA = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }
+ SYS_GET_TLS_AREA = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }
+ SYS_CLOSEFROM = 474 // { int closefrom(int fd); }
+ SYS_STAT = 475 // { int stat(const char *path, struct stat *ub); }
+ SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); }
+ SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); }
+ SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
+ SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, \
+ SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); }
+ SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, \
+ SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }
+ SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }
+ SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }
+ SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); }
+ SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); }
+ SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, \
+ SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, \
+ SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, \
+ SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, \
+ SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, \
+ SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, \
+ SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); }
+ SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); }
+ SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); }
+ SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }
+ SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }
+ SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, \
+ SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); }
+ SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); }
+ SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }
+ SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, \
+ SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); }
+ SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, \
+ SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, \
+ SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, \
+ SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); }
+ SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, \
+ SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, \
+ SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); }
+ SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); }
+ SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, \
+ SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, \
+ SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, \
+ SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, \
+ SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, \
+ SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, \
+ SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, \
+ SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); }
+ SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); }
+ SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); }
+ SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, \
+ SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); }
+ SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }
+ SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, \
+ SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, \
+ SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); }
+ SYS_SWAPOFF = 529 // { int swapoff(char *name); }
+ SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, \
+ SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, \
+ SYS_EACCESS = 532 // { int eaccess(char *path, int flags); }
+ SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); }
+ SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
+ SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
new file mode 100644
index 000000000..d6038fa9b
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
@@ -0,0 +1,304 @@
+// mksysnum_dragonfly.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,dragonfly
+
+package unix
+
+const (
+ // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
+ SYS_EXIT = 1 // { void exit(int rval); }
+ SYS_FORK = 2 // { int fork(void); }
+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
+ SYS_CLOSE = 6 // { int close(int fd); }
+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, \
+ SYS_LINK = 9 // { int link(char *path, char *link); }
+ SYS_UNLINK = 10 // { int unlink(char *path); }
+ SYS_CHDIR = 12 // { int chdir(char *path); }
+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
+ SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, \
+ SYS_GETPID = 20 // { pid_t getpid(void); }
+ SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, \
+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t getuid(void); }
+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, \
+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); }
+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, \
+ SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); }
+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); }
+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); }
+ SYS_ACCESS = 33 // { int access(char *path, int flags); }
+ SYS_CHFLAGS = 34 // { int chflags(char *path, int flags); }
+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, int flags); }
+ SYS_SYNC = 36 // { int sync(void); }
+ SYS_KILL = 37 // { int kill(int pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t getppid(void); }
+ SYS_DUP = 41 // { int dup(u_int fd); }
+ SYS_PIPE = 42 // { int pipe(void); }
+ SYS_GETEGID = 43 // { gid_t getegid(void); }
+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, \
+ SYS_GETGID = 47 // { gid_t getgid(void); }
+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
+ SYS_ACCT = 51 // { int acct(char *path); }
+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
+ SYS_REBOOT = 55 // { int reboot(int opt); }
+ SYS_REVOKE = 56 // { int revoke(char *path); }
+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
+ SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); }
+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
+ SYS_CHROOT = 61 // { int chroot(char *path); }
+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
+ SYS_VFORK = 66 // { pid_t vfork(void); }
+ SYS_SBRK = 69 // { int sbrk(int incr); }
+ SYS_SSTK = 70 // { int sstk(int incr); }
+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); }
+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
+ SYS_GETPGRP = 81 // { int getpgrp(void); }
+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, \
+ SYS_SWAPON = 85 // { int swapon(char *name); }
+ SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
+ SYS_FSYNC = 95 // { int fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
+ SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
+ SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
+ SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, \
+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
+ SYS_RMDIR = 137 // { int rmdir(char *path); }
+ SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
+ SYS_SETSID = 147 // { int setsid(void); }
+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
+ SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); }
+ SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); }
+ SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
+ SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }
+ SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
+ SYS_UNAME = 164 // { int uname(struct utsname *name); }
+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
+ SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, \
+ SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, \
+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
+ SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, \
+ // SYS_NOSYS = 198; // { int nosys(void); } __syscall __syscall_args int
+ SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, \
+ SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); }
+ SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); }
+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, \
+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
+ SYS_UNDELETE = 205 // { int undelete(char *path); }
+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+ SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, \
+ SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); }
+ SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \
+ SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, \
+ SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 226 // { int msgsnd(int msqid, void *msgp, size_t msgsz, \
+ SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \
+ SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \
+ SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, \
+ SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); }
+ SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); }
+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
+ SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, \
+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); }
+ SYS_RFORK = 251 // { int rfork(int flags); }
+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, \
+ SYS_ISSETUGID = 253 // { int issetugid(void); }
+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
+ SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
+ SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, \
+ SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,\
+ SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
+ SYS_MODNEXT = 300 // { int modnext(int modid); }
+ SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); }
+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
+ SYS_MODFIND = 303 // { int modfind(const char *name); }
+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
+ SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); }
+ SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
+ SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
+ SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); }
+ SYS_AIO_READ = 318 // { int aio_read(struct aiocb *aiocbp); }
+ SYS_AIO_WRITE = 319 // { int aio_write(struct aiocb *aiocbp); }
+ SYS_LIO_LISTIO = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
+ SYS_YIELD = 321 // { int yield(void); }
+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
+ SYS___GETCWD = 326 // { int __getcwd(u_char *buf, u_int buflen); }
+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); }
+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, \
+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
+ SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, \
+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
+ SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); }
+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,\
+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,\
+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, \
+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, \
+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, \
+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
+ SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, \
+ SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, \
+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
+ SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }
+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
+ SYS_KQUEUE = 362 // { int kqueue(void); }
+ SYS_KEVENT = 363 // { int kevent(int fd, \
+ SYS_SCTP_PEELOFF = 364 // { int sctp_peeloff(int sd, caddr_t name ); }
+ SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); }
+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \
+ SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); }
+ SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }
+ SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }
+ SYS_EXEC_SYS_REGISTER = 465 // { int exec_sys_register(void *entry); }
+ SYS_EXEC_SYS_UNREGISTER = 466 // { int exec_sys_unregister(int id); }
+ SYS_SYS_CHECKPOINT = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }
+ SYS_MOUNTCTL = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }
+ SYS_UMTX_SLEEP = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }
+ SYS_UMTX_WAKEUP = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }
+ SYS_JAIL_ATTACH = 471 // { int jail_attach(int jid); }
+ SYS_SET_TLS_AREA = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }
+ SYS_GET_TLS_AREA = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }
+ SYS_CLOSEFROM = 474 // { int closefrom(int fd); }
+ SYS_STAT = 475 // { int stat(const char *path, struct stat *ub); }
+ SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); }
+ SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); }
+ SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
+ SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, \
+ SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); }
+ SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, \
+ SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }
+ SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }
+ SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }
+ SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); }
+ SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); }
+ SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, \
+ SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, \
+ SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, \
+ SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, \
+ SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, \
+ SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, \
+ SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); }
+ SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); }
+ SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); }
+ SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }
+ SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }
+ SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, \
+ SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); }
+ SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); }
+ SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }
+ SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, \
+ SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); }
+ SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, \
+ SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, \
+ SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, \
+ SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); }
+ SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, \
+ SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, \
+ SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); }
+ SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); }
+ SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, \
+ SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, \
+ SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, \
+ SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, \
+ SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, \
+ SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, \
+ SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, \
+ SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); }
+ SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); }
+ SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); }
+ SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, \
+ SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); }
+ SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }
+ SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, \
+ SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, \
+ SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); }
+ SYS_SWAPOFF = 529 // { int swapoff(char *name); }
+ SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, \
+ SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, \
+ SYS_EACCESS = 532 // { int eaccess(char *path, int flags); }
+ SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); }
+ SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
+ SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_386.go
new file mode 100644
index 000000000..262a84536
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_386.go
@@ -0,0 +1,351 @@
+// mksysnum_freebsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,freebsd
+
+package unix
+
+const (
+ // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
+ SYS_EXIT = 1 // { void sys_exit(int rval); } exit \
+ SYS_FORK = 2 // { int fork(void); }
+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, \
+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \
+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
+ SYS_CLOSE = 6 // { int close(int fd); }
+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \
+ SYS_LINK = 9 // { int link(char *path, char *link); }
+ SYS_UNLINK = 10 // { int unlink(char *path); }
+ SYS_CHDIR = 12 // { int chdir(char *path); }
+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break \
+ SYS_GETPID = 20 // { pid_t getpid(void); }
+ SYS_MOUNT = 21 // { int mount(char *type, char *path, \
+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t getuid(void); }
+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \
+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \
+ SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \
+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \
+ SYS_ACCEPT = 30 // { int accept(int s, \
+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \
+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \
+ SYS_ACCESS = 33 // { int access(char *path, int amode); }
+ SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
+ SYS_SYNC = 36 // { int sync(void); }
+ SYS_KILL = 37 // { int kill(int pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t getppid(void); }
+ SYS_DUP = 41 // { int dup(u_int fd); }
+ SYS_PIPE = 42 // { int pipe(void); }
+ SYS_GETEGID = 43 // { gid_t getegid(void); }
+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \
+ SYS_GETGID = 47 // { gid_t getgid(void); }
+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \
+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
+ SYS_ACCT = 51 // { int acct(char *path); }
+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \
+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \
+ SYS_REBOOT = 55 // { int reboot(int opt); }
+ SYS_REVOKE = 56 // { int revoke(char *path); }
+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
+ SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \
+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \
+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \
+ SYS_CHROOT = 61 // { int chroot(char *path); }
+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \
+ SYS_VFORK = 66 // { int vfork(void); }
+ SYS_SBRK = 69 // { int sbrk(int incr); }
+ SYS_SSTK = 70 // { int sstk(int incr); }
+ SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \
+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \
+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \
+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \
+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \
+ SYS_GETPGRP = 81 // { int getpgrp(void); }
+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \
+ SYS_SWAPON = 85 // { int swapon(char *name); }
+ SYS_GETITIMER = 86 // { int getitimer(u_int which, \
+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
+ SYS_FSYNC = 95 // { int fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \
+ SYS_SOCKET = 97 // { int socket(int domain, int type, \
+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \
+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
+ SYS_BIND = 104 // { int bind(int s, caddr_t name, \
+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
+ SYS_GETRUSAGE = 117 // { int getrusage(int who, \
+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \
+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \
+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
+ SYS_RMDIR = 137 // { int rmdir(char *path); }
+ SYS_UTIMES = 138 // { int utimes(char *path, \
+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
+ SYS_SETSID = 147 // { int setsid(void); }
+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
+ SYS_LGETFH = 160 // { int lgetfh(char *fname, \
+ SYS_GETFH = 161 // { int getfh(char *fname, \
+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
+ SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
+ SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \
+ SYS_SETFIB = 175 // { int setfib(int fibnum); }
+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
+ SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
+ SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
+ SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
+ SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \
+ SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
+ SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \
+ SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \
+ SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \
+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \
+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
+ SYS_UNDELETE = 205 // { int undelete(char *path); }
+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
+ SYS_CLOCK_SETTIME = 233 // { int clock_settime( \
+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
+ SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \
+ SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
+ SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \
+ SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \
+ SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
+ SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
+ SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \
+ SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \
+ SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\
+ SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \
+ SYS_RFORK = 251 // { int rfork(int flags); }
+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \
+ SYS_ISSETUGID = 253 // { int issetugid(void); }
+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
+ SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \
+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
+ SYS_LUTIMES = 276 // { int lutimes(char *path, \
+ SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
+ SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
+ SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
+ SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
+ SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \
+ SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \
+ SYS_MODNEXT = 300 // { int modnext(int modid); }
+ SYS_MODSTAT = 301 // { int modstat(int modid, \
+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
+ SYS_MODFIND = 303 // { int modfind(const char *name); }
+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \
+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \
+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \
+ SYS_YIELD = 321 // { int yield(void); }
+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
+ SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \
+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \
+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \
+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \
+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \
+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \
+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \
+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \
+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \
+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \
+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \
+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \
+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
+ SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \
+ SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \
+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
+ SYS_KQUEUE = 362 // { int kqueue(void); }
+ SYS_KEVENT = 363 // { int kevent(int fd, \
+ SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \
+ SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \
+ SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \
+ SYS___SETUGID = 374 // { int __setugid(int flag); }
+ SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
+ SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \
+ SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
+ SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
+ SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \
+ SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \
+ SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \
+ SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \
+ SYS_KENV = 390 // { int kenv(int what, const char *name, \
+ SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \
+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \
+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \
+ SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \
+ SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \
+ SYS_STATFS = 396 // { int statfs(char *path, \
+ SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
+ SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
+ SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \
+ SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \
+ SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \
+ SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \
+ SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \
+ SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \
+ SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \
+ SYS_SIGACTION = 416 // { int sigaction(int sig, \
+ SYS_SIGRETURN = 417 // { int sigreturn( \
+ SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
+ SYS_SETCONTEXT = 422 // { int setcontext( \
+ SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \
+ SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
+ SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \
+ SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \
+ SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \
+ SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \
+ SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \
+ SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \
+ SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
+ SYS_THR_SELF = 432 // { int thr_self(long *id); }
+ SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
+ SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); }
+ SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); }
+ SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
+ SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \
+ SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \
+ SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \
+ SYS_THR_SUSPEND = 442 // { int thr_suspend( \
+ SYS_THR_WAKE = 443 // { int thr_wake(long id); }
+ SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
+ SYS_AUDIT = 445 // { int audit(const void *record, \
+ SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \
+ SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
+ SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
+ SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
+ SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
+ SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \
+ SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \
+ SYS_AUDITCTL = 453 // { int auditctl(char *path); }
+ SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \
+ SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \
+ SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
+ SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
+ SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
+ SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \
+ SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); }
+ SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \
+ SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \
+ SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \
+ SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \
+ SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \
+ SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
+ SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \
+ SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
+ SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
+ SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
+ SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \
+ SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
+ SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
+ SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
+ SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \
+ SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \
+ SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \
+ SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \
+ SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
+ SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \
+ SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \
+ SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \
+ SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \
+ SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \
+ SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
+ SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
+ SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \
+ SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \
+ SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \
+ SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \
+ SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \
+ SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
+ SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
+ SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \
+ SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \
+ SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
+ SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
+ SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
+ SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }
+ SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \
+ SYS_CAP_ENTER = 516 // { int cap_enter(void); }
+ SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
+ SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
+ SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
+ SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
+ SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \
+ SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \
+ SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
+ SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \
+ SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \
+ SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \
+ SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \
+ SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \
+ SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \
+ SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \
+ SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \
+ SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \
+ SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \
+ SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \
+ SYS_ACCEPT4 = 541 // { int accept4(int s, \
+ SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
+ SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \
+ SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
new file mode 100644
index 000000000..57a60ea12
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
@@ -0,0 +1,351 @@
+// mksysnum_freebsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,freebsd
+
+package unix
+
+const (
+ // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
+ SYS_EXIT = 1 // { void sys_exit(int rval); } exit \
+ SYS_FORK = 2 // { int fork(void); }
+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, \
+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \
+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
+ SYS_CLOSE = 6 // { int close(int fd); }
+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \
+ SYS_LINK = 9 // { int link(char *path, char *link); }
+ SYS_UNLINK = 10 // { int unlink(char *path); }
+ SYS_CHDIR = 12 // { int chdir(char *path); }
+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break \
+ SYS_GETPID = 20 // { pid_t getpid(void); }
+ SYS_MOUNT = 21 // { int mount(char *type, char *path, \
+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t getuid(void); }
+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \
+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \
+ SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \
+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \
+ SYS_ACCEPT = 30 // { int accept(int s, \
+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \
+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \
+ SYS_ACCESS = 33 // { int access(char *path, int amode); }
+ SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
+ SYS_SYNC = 36 // { int sync(void); }
+ SYS_KILL = 37 // { int kill(int pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t getppid(void); }
+ SYS_DUP = 41 // { int dup(u_int fd); }
+ SYS_PIPE = 42 // { int pipe(void); }
+ SYS_GETEGID = 43 // { gid_t getegid(void); }
+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \
+ SYS_GETGID = 47 // { gid_t getgid(void); }
+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \
+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
+ SYS_ACCT = 51 // { int acct(char *path); }
+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \
+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \
+ SYS_REBOOT = 55 // { int reboot(int opt); }
+ SYS_REVOKE = 56 // { int revoke(char *path); }
+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
+ SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \
+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \
+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \
+ SYS_CHROOT = 61 // { int chroot(char *path); }
+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \
+ SYS_VFORK = 66 // { int vfork(void); }
+ SYS_SBRK = 69 // { int sbrk(int incr); }
+ SYS_SSTK = 70 // { int sstk(int incr); }
+ SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \
+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \
+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \
+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \
+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \
+ SYS_GETPGRP = 81 // { int getpgrp(void); }
+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \
+ SYS_SWAPON = 85 // { int swapon(char *name); }
+ SYS_GETITIMER = 86 // { int getitimer(u_int which, \
+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
+ SYS_FSYNC = 95 // { int fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \
+ SYS_SOCKET = 97 // { int socket(int domain, int type, \
+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \
+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
+ SYS_BIND = 104 // { int bind(int s, caddr_t name, \
+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
+ SYS_GETRUSAGE = 117 // { int getrusage(int who, \
+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \
+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \
+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
+ SYS_RMDIR = 137 // { int rmdir(char *path); }
+ SYS_UTIMES = 138 // { int utimes(char *path, \
+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
+ SYS_SETSID = 147 // { int setsid(void); }
+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
+ SYS_LGETFH = 160 // { int lgetfh(char *fname, \
+ SYS_GETFH = 161 // { int getfh(char *fname, \
+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
+ SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
+ SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \
+ SYS_SETFIB = 175 // { int setfib(int fibnum); }
+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
+ SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
+ SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
+ SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
+ SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \
+ SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
+ SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \
+ SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \
+ SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \
+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \
+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
+ SYS_UNDELETE = 205 // { int undelete(char *path); }
+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
+ SYS_CLOCK_SETTIME = 233 // { int clock_settime( \
+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
+ SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \
+ SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
+ SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \
+ SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \
+ SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
+ SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
+ SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \
+ SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \
+ SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\
+ SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \
+ SYS_RFORK = 251 // { int rfork(int flags); }
+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \
+ SYS_ISSETUGID = 253 // { int issetugid(void); }
+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
+ SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \
+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
+ SYS_LUTIMES = 276 // { int lutimes(char *path, \
+ SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
+ SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
+ SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
+ SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
+ SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \
+ SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \
+ SYS_MODNEXT = 300 // { int modnext(int modid); }
+ SYS_MODSTAT = 301 // { int modstat(int modid, \
+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
+ SYS_MODFIND = 303 // { int modfind(const char *name); }
+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \
+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \
+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \
+ SYS_YIELD = 321 // { int yield(void); }
+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
+ SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \
+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \
+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \
+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \
+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \
+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \
+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \
+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \
+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \
+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \
+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \
+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \
+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
+ SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \
+ SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \
+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
+ SYS_KQUEUE = 362 // { int kqueue(void); }
+ SYS_KEVENT = 363 // { int kevent(int fd, \
+ SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \
+ SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \
+ SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \
+ SYS___SETUGID = 374 // { int __setugid(int flag); }
+ SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
+ SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \
+ SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
+ SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
+ SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \
+ SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \
+ SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \
+ SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \
+ SYS_KENV = 390 // { int kenv(int what, const char *name, \
+ SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \
+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \
+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \
+ SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \
+ SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \
+ SYS_STATFS = 396 // { int statfs(char *path, \
+ SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
+ SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
+ SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \
+ SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \
+ SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \
+ SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \
+ SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \
+ SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \
+ SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \
+ SYS_SIGACTION = 416 // { int sigaction(int sig, \
+ SYS_SIGRETURN = 417 // { int sigreturn( \
+ SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
+ SYS_SETCONTEXT = 422 // { int setcontext( \
+ SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \
+ SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
+ SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \
+ SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \
+ SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \
+ SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \
+ SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \
+ SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \
+ SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
+ SYS_THR_SELF = 432 // { int thr_self(long *id); }
+ SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
+ SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); }
+ SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); }
+ SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
+ SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \
+ SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \
+ SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \
+ SYS_THR_SUSPEND = 442 // { int thr_suspend( \
+ SYS_THR_WAKE = 443 // { int thr_wake(long id); }
+ SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
+ SYS_AUDIT = 445 // { int audit(const void *record, \
+ SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \
+ SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
+ SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
+ SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
+ SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
+ SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \
+ SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \
+ SYS_AUDITCTL = 453 // { int auditctl(char *path); }
+ SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \
+ SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \
+ SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
+ SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
+ SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
+ SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \
+ SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); }
+ SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \
+ SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \
+ SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \
+ SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \
+ SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \
+ SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
+ SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \
+ SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
+ SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
+ SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
+ SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \
+ SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
+ SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
+ SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
+ SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \
+ SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \
+ SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \
+ SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \
+ SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
+ SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \
+ SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \
+ SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \
+ SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \
+ SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \
+ SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
+ SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
+ SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \
+ SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \
+ SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \
+ SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \
+ SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \
+ SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
+ SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
+ SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \
+ SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \
+ SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
+ SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
+ SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
+ SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }
+ SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \
+ SYS_CAP_ENTER = 516 // { int cap_enter(void); }
+ SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
+ SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
+ SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
+ SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
+ SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \
+ SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \
+ SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
+ SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \
+ SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \
+ SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \
+ SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \
+ SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \
+ SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \
+ SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \
+ SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \
+ SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \
+ SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \
+ SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \
+ SYS_ACCEPT4 = 541 // { int accept4(int s, \
+ SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
+ SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \
+ SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
new file mode 100644
index 000000000..206b9f612
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
@@ -0,0 +1,351 @@
+// mksysnum_freebsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm,freebsd
+
+package unix
+
+const (
+ // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
+ SYS_EXIT = 1 // { void sys_exit(int rval); } exit \
+ SYS_FORK = 2 // { int fork(void); }
+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, \
+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \
+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
+ SYS_CLOSE = 6 // { int close(int fd); }
+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \
+ SYS_LINK = 9 // { int link(char *path, char *link); }
+ SYS_UNLINK = 10 // { int unlink(char *path); }
+ SYS_CHDIR = 12 // { int chdir(char *path); }
+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break \
+ SYS_GETPID = 20 // { pid_t getpid(void); }
+ SYS_MOUNT = 21 // { int mount(char *type, char *path, \
+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t getuid(void); }
+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \
+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \
+ SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \
+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \
+ SYS_ACCEPT = 30 // { int accept(int s, \
+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \
+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \
+ SYS_ACCESS = 33 // { int access(char *path, int amode); }
+ SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
+ SYS_SYNC = 36 // { int sync(void); }
+ SYS_KILL = 37 // { int kill(int pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t getppid(void); }
+ SYS_DUP = 41 // { int dup(u_int fd); }
+ SYS_PIPE = 42 // { int pipe(void); }
+ SYS_GETEGID = 43 // { gid_t getegid(void); }
+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \
+ SYS_GETGID = 47 // { gid_t getgid(void); }
+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \
+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
+ SYS_ACCT = 51 // { int acct(char *path); }
+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \
+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \
+ SYS_REBOOT = 55 // { int reboot(int opt); }
+ SYS_REVOKE = 56 // { int revoke(char *path); }
+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
+ SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \
+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \
+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \
+ SYS_CHROOT = 61 // { int chroot(char *path); }
+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \
+ SYS_VFORK = 66 // { int vfork(void); }
+ SYS_SBRK = 69 // { int sbrk(int incr); }
+ SYS_SSTK = 70 // { int sstk(int incr); }
+ SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \
+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \
+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \
+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \
+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \
+ SYS_GETPGRP = 81 // { int getpgrp(void); }
+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \
+ SYS_SWAPON = 85 // { int swapon(char *name); }
+ SYS_GETITIMER = 86 // { int getitimer(u_int which, \
+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
+ SYS_FSYNC = 95 // { int fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \
+ SYS_SOCKET = 97 // { int socket(int domain, int type, \
+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \
+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
+ SYS_BIND = 104 // { int bind(int s, caddr_t name, \
+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
+ SYS_GETRUSAGE = 117 // { int getrusage(int who, \
+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \
+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \
+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
+ SYS_RMDIR = 137 // { int rmdir(char *path); }
+ SYS_UTIMES = 138 // { int utimes(char *path, \
+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
+ SYS_SETSID = 147 // { int setsid(void); }
+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
+ SYS_LGETFH = 160 // { int lgetfh(char *fname, \
+ SYS_GETFH = 161 // { int getfh(char *fname, \
+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
+ SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
+ SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \
+ SYS_SETFIB = 175 // { int setfib(int fibnum); }
+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
+ SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
+ SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
+ SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
+ SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \
+ SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
+ SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \
+ SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \
+ SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \
+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \
+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
+ SYS_UNDELETE = 205 // { int undelete(char *path); }
+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
+ SYS_CLOCK_SETTIME = 233 // { int clock_settime( \
+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
+ SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \
+ SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
+ SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \
+ SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \
+ SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
+ SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
+ SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \
+ SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \
+ SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\
+ SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \
+ SYS_RFORK = 251 // { int rfork(int flags); }
+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \
+ SYS_ISSETUGID = 253 // { int issetugid(void); }
+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
+ SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \
+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
+ SYS_LUTIMES = 276 // { int lutimes(char *path, \
+ SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
+ SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
+ SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
+ SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
+ SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \
+ SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \
+ SYS_MODNEXT = 300 // { int modnext(int modid); }
+ SYS_MODSTAT = 301 // { int modstat(int modid, \
+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
+ SYS_MODFIND = 303 // { int modfind(const char *name); }
+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \
+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \
+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \
+ SYS_YIELD = 321 // { int yield(void); }
+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
+ SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \
+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \
+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \
+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \
+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \
+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \
+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \
+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \
+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \
+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \
+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \
+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \
+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
+ SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \
+ SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \
+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
+ SYS_KQUEUE = 362 // { int kqueue(void); }
+ SYS_KEVENT = 363 // { int kevent(int fd, \
+ SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \
+ SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \
+ SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \
+ SYS___SETUGID = 374 // { int __setugid(int flag); }
+ SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
+ SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \
+ SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
+ SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
+ SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \
+ SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \
+ SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \
+ SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \
+ SYS_KENV = 390 // { int kenv(int what, const char *name, \
+ SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \
+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \
+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \
+ SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \
+ SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \
+ SYS_STATFS = 396 // { int statfs(char *path, \
+ SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
+ SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
+ SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \
+ SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \
+ SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \
+ SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \
+ SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \
+ SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \
+ SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \
+ SYS_SIGACTION = 416 // { int sigaction(int sig, \
+ SYS_SIGRETURN = 417 // { int sigreturn( \
+ SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
+ SYS_SETCONTEXT = 422 // { int setcontext( \
+ SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \
+ SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
+ SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \
+ SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \
+ SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \
+ SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \
+ SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \
+ SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \
+ SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
+ SYS_THR_SELF = 432 // { int thr_self(long *id); }
+ SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
+ SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); }
+ SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); }
+ SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
+ SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \
+ SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \
+ SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \
+ SYS_THR_SUSPEND = 442 // { int thr_suspend( \
+ SYS_THR_WAKE = 443 // { int thr_wake(long id); }
+ SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
+ SYS_AUDIT = 445 // { int audit(const void *record, \
+ SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \
+ SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
+ SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
+ SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
+ SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
+ SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \
+ SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \
+ SYS_AUDITCTL = 453 // { int auditctl(char *path); }
+ SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \
+ SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \
+ SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
+ SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
+ SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
+ SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \
+ SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); }
+ SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \
+ SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \
+ SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \
+ SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \
+ SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \
+ SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
+ SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \
+ SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
+ SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
+ SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
+ SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \
+ SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
+ SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
+ SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
+ SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \
+ SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \
+ SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \
+ SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \
+ SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
+ SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \
+ SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \
+ SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \
+ SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \
+ SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \
+ SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
+ SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
+ SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \
+ SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \
+ SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \
+ SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \
+ SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \
+ SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
+ SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
+ SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \
+ SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \
+ SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
+ SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
+ SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
+ SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }
+ SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \
+ SYS_CAP_ENTER = 516 // { int cap_enter(void); }
+ SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
+ SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
+ SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
+ SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
+ SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \
+ SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \
+ SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
+ SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \
+ SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \
+ SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \
+ SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \
+ SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \
+ SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \
+ SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \
+ SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \
+ SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \
+ SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \
+ SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \
+ SYS_ACCEPT4 = 541 // { int accept4(int s, \
+ SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
+ SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \
+ SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_386.go
new file mode 100644
index 000000000..ba952c675
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_386.go
@@ -0,0 +1,355 @@
+// mksysnum_linux.pl /usr/include/asm/unistd_32.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,linux
+
+package unix
+
+const (
+ SYS_RESTART_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_WAITPID = 7
+ SYS_CREAT = 8
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_EXECVE = 11
+ SYS_CHDIR = 12
+ SYS_TIME = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_LCHOWN = 16
+ SYS_BREAK = 17
+ SYS_OLDSTAT = 18
+ SYS_LSEEK = 19
+ SYS_GETPID = 20
+ SYS_MOUNT = 21
+ SYS_UMOUNT = 22
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_STIME = 25
+ SYS_PTRACE = 26
+ SYS_ALARM = 27
+ SYS_OLDFSTAT = 28
+ SYS_PAUSE = 29
+ SYS_UTIME = 30
+ SYS_STTY = 31
+ SYS_GTTY = 32
+ SYS_ACCESS = 33
+ SYS_NICE = 34
+ SYS_FTIME = 35
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_RENAME = 38
+ SYS_MKDIR = 39
+ SYS_RMDIR = 40
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_TIMES = 43
+ SYS_PROF = 44
+ SYS_BRK = 45
+ SYS_SETGID = 46
+ SYS_GETGID = 47
+ SYS_SIGNAL = 48
+ SYS_GETEUID = 49
+ SYS_GETEGID = 50
+ SYS_ACCT = 51
+ SYS_UMOUNT2 = 52
+ SYS_LOCK = 53
+ SYS_IOCTL = 54
+ SYS_FCNTL = 55
+ SYS_MPX = 56
+ SYS_SETPGID = 57
+ SYS_ULIMIT = 58
+ SYS_OLDOLDUNAME = 59
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_USTAT = 62
+ SYS_DUP2 = 63
+ SYS_GETPPID = 64
+ SYS_GETPGRP = 65
+ SYS_SETSID = 66
+ SYS_SIGACTION = 67
+ SYS_SGETMASK = 68
+ SYS_SSETMASK = 69
+ SYS_SETREUID = 70
+ SYS_SETREGID = 71
+ SYS_SIGSUSPEND = 72
+ SYS_SIGPENDING = 73
+ SYS_SETHOSTNAME = 74
+ SYS_SETRLIMIT = 75
+ SYS_GETRLIMIT = 76
+ SYS_GETRUSAGE = 77
+ SYS_GETTIMEOFDAY = 78
+ SYS_SETTIMEOFDAY = 79
+ SYS_GETGROUPS = 80
+ SYS_SETGROUPS = 81
+ SYS_SELECT = 82
+ SYS_SYMLINK = 83
+ SYS_OLDLSTAT = 84
+ SYS_READLINK = 85
+ SYS_USELIB = 86
+ SYS_SWAPON = 87
+ SYS_REBOOT = 88
+ SYS_READDIR = 89
+ SYS_MMAP = 90
+ SYS_MUNMAP = 91
+ SYS_TRUNCATE = 92
+ SYS_FTRUNCATE = 93
+ SYS_FCHMOD = 94
+ SYS_FCHOWN = 95
+ SYS_GETPRIORITY = 96
+ SYS_SETPRIORITY = 97
+ SYS_PROFIL = 98
+ SYS_STATFS = 99
+ SYS_FSTATFS = 100
+ SYS_IOPERM = 101
+ SYS_SOCKETCALL = 102
+ SYS_SYSLOG = 103
+ SYS_SETITIMER = 104
+ SYS_GETITIMER = 105
+ SYS_STAT = 106
+ SYS_LSTAT = 107
+ SYS_FSTAT = 108
+ SYS_OLDUNAME = 109
+ SYS_IOPL = 110
+ SYS_VHANGUP = 111
+ SYS_IDLE = 112
+ SYS_VM86OLD = 113
+ SYS_WAIT4 = 114
+ SYS_SWAPOFF = 115
+ SYS_SYSINFO = 116
+ SYS_IPC = 117
+ SYS_FSYNC = 118
+ SYS_SIGRETURN = 119
+ SYS_CLONE = 120
+ SYS_SETDOMAINNAME = 121
+ SYS_UNAME = 122
+ SYS_MODIFY_LDT = 123
+ SYS_ADJTIMEX = 124
+ SYS_MPROTECT = 125
+ SYS_SIGPROCMASK = 126
+ SYS_CREATE_MODULE = 127
+ SYS_INIT_MODULE = 128
+ SYS_DELETE_MODULE = 129
+ SYS_GET_KERNEL_SYMS = 130
+ SYS_QUOTACTL = 131
+ SYS_GETPGID = 132
+ SYS_FCHDIR = 133
+ SYS_BDFLUSH = 134
+ SYS_SYSFS = 135
+ SYS_PERSONALITY = 136
+ SYS_AFS_SYSCALL = 137
+ SYS_SETFSUID = 138
+ SYS_SETFSGID = 139
+ SYS__LLSEEK = 140
+ SYS_GETDENTS = 141
+ SYS__NEWSELECT = 142
+ SYS_FLOCK = 143
+ SYS_MSYNC = 144
+ SYS_READV = 145
+ SYS_WRITEV = 146
+ SYS_GETSID = 147
+ SYS_FDATASYNC = 148
+ SYS__SYSCTL = 149
+ SYS_MLOCK = 150
+ SYS_MUNLOCK = 151
+ SYS_MLOCKALL = 152
+ SYS_MUNLOCKALL = 153
+ SYS_SCHED_SETPARAM = 154
+ SYS_SCHED_GETPARAM = 155
+ SYS_SCHED_SETSCHEDULER = 156
+ SYS_SCHED_GETSCHEDULER = 157
+ SYS_SCHED_YIELD = 158
+ SYS_SCHED_GET_PRIORITY_MAX = 159
+ SYS_SCHED_GET_PRIORITY_MIN = 160
+ SYS_SCHED_RR_GET_INTERVAL = 161
+ SYS_NANOSLEEP = 162
+ SYS_MREMAP = 163
+ SYS_SETRESUID = 164
+ SYS_GETRESUID = 165
+ SYS_VM86 = 166
+ SYS_QUERY_MODULE = 167
+ SYS_POLL = 168
+ SYS_NFSSERVCTL = 169
+ SYS_SETRESGID = 170
+ SYS_GETRESGID = 171
+ SYS_PRCTL = 172
+ SYS_RT_SIGRETURN = 173
+ SYS_RT_SIGACTION = 174
+ SYS_RT_SIGPROCMASK = 175
+ SYS_RT_SIGPENDING = 176
+ SYS_RT_SIGTIMEDWAIT = 177
+ SYS_RT_SIGQUEUEINFO = 178
+ SYS_RT_SIGSUSPEND = 179
+ SYS_PREAD64 = 180
+ SYS_PWRITE64 = 181
+ SYS_CHOWN = 182
+ SYS_GETCWD = 183
+ SYS_CAPGET = 184
+ SYS_CAPSET = 185
+ SYS_SIGALTSTACK = 186
+ SYS_SENDFILE = 187
+ SYS_GETPMSG = 188
+ SYS_PUTPMSG = 189
+ SYS_VFORK = 190
+ SYS_UGETRLIMIT = 191
+ SYS_MMAP2 = 192
+ SYS_TRUNCATE64 = 193
+ SYS_FTRUNCATE64 = 194
+ SYS_STAT64 = 195
+ SYS_LSTAT64 = 196
+ SYS_FSTAT64 = 197
+ SYS_LCHOWN32 = 198
+ SYS_GETUID32 = 199
+ SYS_GETGID32 = 200
+ SYS_GETEUID32 = 201
+ SYS_GETEGID32 = 202
+ SYS_SETREUID32 = 203
+ SYS_SETREGID32 = 204
+ SYS_GETGROUPS32 = 205
+ SYS_SETGROUPS32 = 206
+ SYS_FCHOWN32 = 207
+ SYS_SETRESUID32 = 208
+ SYS_GETRESUID32 = 209
+ SYS_SETRESGID32 = 210
+ SYS_GETRESGID32 = 211
+ SYS_CHOWN32 = 212
+ SYS_SETUID32 = 213
+ SYS_SETGID32 = 214
+ SYS_SETFSUID32 = 215
+ SYS_SETFSGID32 = 216
+ SYS_PIVOT_ROOT = 217
+ SYS_MINCORE = 218
+ SYS_MADVISE = 219
+ SYS_MADVISE1 = 219
+ SYS_GETDENTS64 = 220
+ SYS_FCNTL64 = 221
+ SYS_GETTID = 224
+ SYS_READAHEAD = 225
+ SYS_SETXATTR = 226
+ SYS_LSETXATTR = 227
+ SYS_FSETXATTR = 228
+ SYS_GETXATTR = 229
+ SYS_LGETXATTR = 230
+ SYS_FGETXATTR = 231
+ SYS_LISTXATTR = 232
+ SYS_LLISTXATTR = 233
+ SYS_FLISTXATTR = 234
+ SYS_REMOVEXATTR = 235
+ SYS_LREMOVEXATTR = 236
+ SYS_FREMOVEXATTR = 237
+ SYS_TKILL = 238
+ SYS_SENDFILE64 = 239
+ SYS_FUTEX = 240
+ SYS_SCHED_SETAFFINITY = 241
+ SYS_SCHED_GETAFFINITY = 242
+ SYS_SET_THREAD_AREA = 243
+ SYS_GET_THREAD_AREA = 244
+ SYS_IO_SETUP = 245
+ SYS_IO_DESTROY = 246
+ SYS_IO_GETEVENTS = 247
+ SYS_IO_SUBMIT = 248
+ SYS_IO_CANCEL = 249
+ SYS_FADVISE64 = 250
+ SYS_EXIT_GROUP = 252
+ SYS_LOOKUP_DCOOKIE = 253
+ SYS_EPOLL_CREATE = 254
+ SYS_EPOLL_CTL = 255
+ SYS_EPOLL_WAIT = 256
+ SYS_REMAP_FILE_PAGES = 257
+ SYS_SET_TID_ADDRESS = 258
+ SYS_TIMER_CREATE = 259
+ SYS_TIMER_SETTIME = 260
+ SYS_TIMER_GETTIME = 261
+ SYS_TIMER_GETOVERRUN = 262
+ SYS_TIMER_DELETE = 263
+ SYS_CLOCK_SETTIME = 264
+ SYS_CLOCK_GETTIME = 265
+ SYS_CLOCK_GETRES = 266
+ SYS_CLOCK_NANOSLEEP = 267
+ SYS_STATFS64 = 268
+ SYS_FSTATFS64 = 269
+ SYS_TGKILL = 270
+ SYS_UTIMES = 271
+ SYS_FADVISE64_64 = 272
+ SYS_VSERVER = 273
+ SYS_MBIND = 274
+ SYS_GET_MEMPOLICY = 275
+ SYS_SET_MEMPOLICY = 276
+ SYS_MQ_OPEN = 277
+ SYS_MQ_UNLINK = 278
+ SYS_MQ_TIMEDSEND = 279
+ SYS_MQ_TIMEDRECEIVE = 280
+ SYS_MQ_NOTIFY = 281
+ SYS_MQ_GETSETATTR = 282
+ SYS_KEXEC_LOAD = 283
+ SYS_WAITID = 284
+ SYS_ADD_KEY = 286
+ SYS_REQUEST_KEY = 287
+ SYS_KEYCTL = 288
+ SYS_IOPRIO_SET = 289
+ SYS_IOPRIO_GET = 290
+ SYS_INOTIFY_INIT = 291
+ SYS_INOTIFY_ADD_WATCH = 292
+ SYS_INOTIFY_RM_WATCH = 293
+ SYS_MIGRATE_PAGES = 294
+ SYS_OPENAT = 295
+ SYS_MKDIRAT = 296
+ SYS_MKNODAT = 297
+ SYS_FCHOWNAT = 298
+ SYS_FUTIMESAT = 299
+ SYS_FSTATAT64 = 300
+ SYS_UNLINKAT = 301
+ SYS_RENAMEAT = 302
+ SYS_LINKAT = 303
+ SYS_SYMLINKAT = 304
+ SYS_READLINKAT = 305
+ SYS_FCHMODAT = 306
+ SYS_FACCESSAT = 307
+ SYS_PSELECT6 = 308
+ SYS_PPOLL = 309
+ SYS_UNSHARE = 310
+ SYS_SET_ROBUST_LIST = 311
+ SYS_GET_ROBUST_LIST = 312
+ SYS_SPLICE = 313
+ SYS_SYNC_FILE_RANGE = 314
+ SYS_TEE = 315
+ SYS_VMSPLICE = 316
+ SYS_MOVE_PAGES = 317
+ SYS_GETCPU = 318
+ SYS_EPOLL_PWAIT = 319
+ SYS_UTIMENSAT = 320
+ SYS_SIGNALFD = 321
+ SYS_TIMERFD_CREATE = 322
+ SYS_EVENTFD = 323
+ SYS_FALLOCATE = 324
+ SYS_TIMERFD_SETTIME = 325
+ SYS_TIMERFD_GETTIME = 326
+ SYS_SIGNALFD4 = 327
+ SYS_EVENTFD2 = 328
+ SYS_EPOLL_CREATE1 = 329
+ SYS_DUP3 = 330
+ SYS_PIPE2 = 331
+ SYS_INOTIFY_INIT1 = 332
+ SYS_PREADV = 333
+ SYS_PWRITEV = 334
+ SYS_RT_TGSIGQUEUEINFO = 335
+ SYS_PERF_EVENT_OPEN = 336
+ SYS_RECVMMSG = 337
+ SYS_FANOTIFY_INIT = 338
+ SYS_FANOTIFY_MARK = 339
+ SYS_PRLIMIT64 = 340
+ SYS_NAME_TO_HANDLE_AT = 341
+ SYS_OPEN_BY_HANDLE_AT = 342
+ SYS_CLOCK_ADJTIME = 343
+ SYS_SYNCFS = 344
+ SYS_SENDMMSG = 345
+ SYS_SETNS = 346
+ SYS_PROCESS_VM_READV = 347
+ SYS_PROCESS_VM_WRITEV = 348
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_amd64.go
new file mode 100644
index 000000000..ddac31f58
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_amd64.go
@@ -0,0 +1,321 @@
+// mksysnum_linux.pl /usr/include/asm/unistd_64.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,linux
+
+package unix
+
+const (
+ SYS_READ = 0
+ SYS_WRITE = 1
+ SYS_OPEN = 2
+ SYS_CLOSE = 3
+ SYS_STAT = 4
+ SYS_FSTAT = 5
+ SYS_LSTAT = 6
+ SYS_POLL = 7
+ SYS_LSEEK = 8
+ SYS_MMAP = 9
+ SYS_MPROTECT = 10
+ SYS_MUNMAP = 11
+ SYS_BRK = 12
+ SYS_RT_SIGACTION = 13
+ SYS_RT_SIGPROCMASK = 14
+ SYS_RT_SIGRETURN = 15
+ SYS_IOCTL = 16
+ SYS_PREAD64 = 17
+ SYS_PWRITE64 = 18
+ SYS_READV = 19
+ SYS_WRITEV = 20
+ SYS_ACCESS = 21
+ SYS_PIPE = 22
+ SYS_SELECT = 23
+ SYS_SCHED_YIELD = 24
+ SYS_MREMAP = 25
+ SYS_MSYNC = 26
+ SYS_MINCORE = 27
+ SYS_MADVISE = 28
+ SYS_SHMGET = 29
+ SYS_SHMAT = 30
+ SYS_SHMCTL = 31
+ SYS_DUP = 32
+ SYS_DUP2 = 33
+ SYS_PAUSE = 34
+ SYS_NANOSLEEP = 35
+ SYS_GETITIMER = 36
+ SYS_ALARM = 37
+ SYS_SETITIMER = 38
+ SYS_GETPID = 39
+ SYS_SENDFILE = 40
+ SYS_SOCKET = 41
+ SYS_CONNECT = 42
+ SYS_ACCEPT = 43
+ SYS_SENDTO = 44
+ SYS_RECVFROM = 45
+ SYS_SENDMSG = 46
+ SYS_RECVMSG = 47
+ SYS_SHUTDOWN = 48
+ SYS_BIND = 49
+ SYS_LISTEN = 50
+ SYS_GETSOCKNAME = 51
+ SYS_GETPEERNAME = 52
+ SYS_SOCKETPAIR = 53
+ SYS_SETSOCKOPT = 54
+ SYS_GETSOCKOPT = 55
+ SYS_CLONE = 56
+ SYS_FORK = 57
+ SYS_VFORK = 58
+ SYS_EXECVE = 59
+ SYS_EXIT = 60
+ SYS_WAIT4 = 61
+ SYS_KILL = 62
+ SYS_UNAME = 63
+ SYS_SEMGET = 64
+ SYS_SEMOP = 65
+ SYS_SEMCTL = 66
+ SYS_SHMDT = 67
+ SYS_MSGGET = 68
+ SYS_MSGSND = 69
+ SYS_MSGRCV = 70
+ SYS_MSGCTL = 71
+ SYS_FCNTL = 72
+ SYS_FLOCK = 73
+ SYS_FSYNC = 74
+ SYS_FDATASYNC = 75
+ SYS_TRUNCATE = 76
+ SYS_FTRUNCATE = 77
+ SYS_GETDENTS = 78
+ SYS_GETCWD = 79
+ SYS_CHDIR = 80
+ SYS_FCHDIR = 81
+ SYS_RENAME = 82
+ SYS_MKDIR = 83
+ SYS_RMDIR = 84
+ SYS_CREAT = 85
+ SYS_LINK = 86
+ SYS_UNLINK = 87
+ SYS_SYMLINK = 88
+ SYS_READLINK = 89
+ SYS_CHMOD = 90
+ SYS_FCHMOD = 91
+ SYS_CHOWN = 92
+ SYS_FCHOWN = 93
+ SYS_LCHOWN = 94
+ SYS_UMASK = 95
+ SYS_GETTIMEOFDAY = 96
+ SYS_GETRLIMIT = 97
+ SYS_GETRUSAGE = 98
+ SYS_SYSINFO = 99
+ SYS_TIMES = 100
+ SYS_PTRACE = 101
+ SYS_GETUID = 102
+ SYS_SYSLOG = 103
+ SYS_GETGID = 104
+ SYS_SETUID = 105
+ SYS_SETGID = 106
+ SYS_GETEUID = 107
+ SYS_GETEGID = 108
+ SYS_SETPGID = 109
+ SYS_GETPPID = 110
+ SYS_GETPGRP = 111
+ SYS_SETSID = 112
+ SYS_SETREUID = 113
+ SYS_SETREGID = 114
+ SYS_GETGROUPS = 115
+ SYS_SETGROUPS = 116
+ SYS_SETRESUID = 117
+ SYS_GETRESUID = 118
+ SYS_SETRESGID = 119
+ SYS_GETRESGID = 120
+ SYS_GETPGID = 121
+ SYS_SETFSUID = 122
+ SYS_SETFSGID = 123
+ SYS_GETSID = 124
+ SYS_CAPGET = 125
+ SYS_CAPSET = 126
+ SYS_RT_SIGPENDING = 127
+ SYS_RT_SIGTIMEDWAIT = 128
+ SYS_RT_SIGQUEUEINFO = 129
+ SYS_RT_SIGSUSPEND = 130
+ SYS_SIGALTSTACK = 131
+ SYS_UTIME = 132
+ SYS_MKNOD = 133
+ SYS_USELIB = 134
+ SYS_PERSONALITY = 135
+ SYS_USTAT = 136
+ SYS_STATFS = 137
+ SYS_FSTATFS = 138
+ SYS_SYSFS = 139
+ SYS_GETPRIORITY = 140
+ SYS_SETPRIORITY = 141
+ SYS_SCHED_SETPARAM = 142
+ SYS_SCHED_GETPARAM = 143
+ SYS_SCHED_SETSCHEDULER = 144
+ SYS_SCHED_GETSCHEDULER = 145
+ SYS_SCHED_GET_PRIORITY_MAX = 146
+ SYS_SCHED_GET_PRIORITY_MIN = 147
+ SYS_SCHED_RR_GET_INTERVAL = 148
+ SYS_MLOCK = 149
+ SYS_MUNLOCK = 150
+ SYS_MLOCKALL = 151
+ SYS_MUNLOCKALL = 152
+ SYS_VHANGUP = 153
+ SYS_MODIFY_LDT = 154
+ SYS_PIVOT_ROOT = 155
+ SYS__SYSCTL = 156
+ SYS_PRCTL = 157
+ SYS_ARCH_PRCTL = 158
+ SYS_ADJTIMEX = 159
+ SYS_SETRLIMIT = 160
+ SYS_CHROOT = 161
+ SYS_SYNC = 162
+ SYS_ACCT = 163
+ SYS_SETTIMEOFDAY = 164
+ SYS_MOUNT = 165
+ SYS_UMOUNT2 = 166
+ SYS_SWAPON = 167
+ SYS_SWAPOFF = 168
+ SYS_REBOOT = 169
+ SYS_SETHOSTNAME = 170
+ SYS_SETDOMAINNAME = 171
+ SYS_IOPL = 172
+ SYS_IOPERM = 173
+ SYS_CREATE_MODULE = 174
+ SYS_INIT_MODULE = 175
+ SYS_DELETE_MODULE = 176
+ SYS_GET_KERNEL_SYMS = 177
+ SYS_QUERY_MODULE = 178
+ SYS_QUOTACTL = 179
+ SYS_NFSSERVCTL = 180
+ SYS_GETPMSG = 181
+ SYS_PUTPMSG = 182
+ SYS_AFS_SYSCALL = 183
+ SYS_TUXCALL = 184
+ SYS_SECURITY = 185
+ SYS_GETTID = 186
+ SYS_READAHEAD = 187
+ SYS_SETXATTR = 188
+ SYS_LSETXATTR = 189
+ SYS_FSETXATTR = 190
+ SYS_GETXATTR = 191
+ SYS_LGETXATTR = 192
+ SYS_FGETXATTR = 193
+ SYS_LISTXATTR = 194
+ SYS_LLISTXATTR = 195
+ SYS_FLISTXATTR = 196
+ SYS_REMOVEXATTR = 197
+ SYS_LREMOVEXATTR = 198
+ SYS_FREMOVEXATTR = 199
+ SYS_TKILL = 200
+ SYS_TIME = 201
+ SYS_FUTEX = 202
+ SYS_SCHED_SETAFFINITY = 203
+ SYS_SCHED_GETAFFINITY = 204
+ SYS_SET_THREAD_AREA = 205
+ SYS_IO_SETUP = 206
+ SYS_IO_DESTROY = 207
+ SYS_IO_GETEVENTS = 208
+ SYS_IO_SUBMIT = 209
+ SYS_IO_CANCEL = 210
+ SYS_GET_THREAD_AREA = 211
+ SYS_LOOKUP_DCOOKIE = 212
+ SYS_EPOLL_CREATE = 213
+ SYS_EPOLL_CTL_OLD = 214
+ SYS_EPOLL_WAIT_OLD = 215
+ SYS_REMAP_FILE_PAGES = 216
+ SYS_GETDENTS64 = 217
+ SYS_SET_TID_ADDRESS = 218
+ SYS_RESTART_SYSCALL = 219
+ SYS_SEMTIMEDOP = 220
+ SYS_FADVISE64 = 221
+ SYS_TIMER_CREATE = 222
+ SYS_TIMER_SETTIME = 223
+ SYS_TIMER_GETTIME = 224
+ SYS_TIMER_GETOVERRUN = 225
+ SYS_TIMER_DELETE = 226
+ SYS_CLOCK_SETTIME = 227
+ SYS_CLOCK_GETTIME = 228
+ SYS_CLOCK_GETRES = 229
+ SYS_CLOCK_NANOSLEEP = 230
+ SYS_EXIT_GROUP = 231
+ SYS_EPOLL_WAIT = 232
+ SYS_EPOLL_CTL = 233
+ SYS_TGKILL = 234
+ SYS_UTIMES = 235
+ SYS_VSERVER = 236
+ SYS_MBIND = 237
+ SYS_SET_MEMPOLICY = 238
+ SYS_GET_MEMPOLICY = 239
+ SYS_MQ_OPEN = 240
+ SYS_MQ_UNLINK = 241
+ SYS_MQ_TIMEDSEND = 242
+ SYS_MQ_TIMEDRECEIVE = 243
+ SYS_MQ_NOTIFY = 244
+ SYS_MQ_GETSETATTR = 245
+ SYS_KEXEC_LOAD = 246
+ SYS_WAITID = 247
+ SYS_ADD_KEY = 248
+ SYS_REQUEST_KEY = 249
+ SYS_KEYCTL = 250
+ SYS_IOPRIO_SET = 251
+ SYS_IOPRIO_GET = 252
+ SYS_INOTIFY_INIT = 253
+ SYS_INOTIFY_ADD_WATCH = 254
+ SYS_INOTIFY_RM_WATCH = 255
+ SYS_MIGRATE_PAGES = 256
+ SYS_OPENAT = 257
+ SYS_MKDIRAT = 258
+ SYS_MKNODAT = 259
+ SYS_FCHOWNAT = 260
+ SYS_FUTIMESAT = 261
+ SYS_NEWFSTATAT = 262
+ SYS_UNLINKAT = 263
+ SYS_RENAMEAT = 264
+ SYS_LINKAT = 265
+ SYS_SYMLINKAT = 266
+ SYS_READLINKAT = 267
+ SYS_FCHMODAT = 268
+ SYS_FACCESSAT = 269
+ SYS_PSELECT6 = 270
+ SYS_PPOLL = 271
+ SYS_UNSHARE = 272
+ SYS_SET_ROBUST_LIST = 273
+ SYS_GET_ROBUST_LIST = 274
+ SYS_SPLICE = 275
+ SYS_TEE = 276
+ SYS_SYNC_FILE_RANGE = 277
+ SYS_VMSPLICE = 278
+ SYS_MOVE_PAGES = 279
+ SYS_UTIMENSAT = 280
+ SYS_EPOLL_PWAIT = 281
+ SYS_SIGNALFD = 282
+ SYS_TIMERFD_CREATE = 283
+ SYS_EVENTFD = 284
+ SYS_FALLOCATE = 285
+ SYS_TIMERFD_SETTIME = 286
+ SYS_TIMERFD_GETTIME = 287
+ SYS_ACCEPT4 = 288
+ SYS_SIGNALFD4 = 289
+ SYS_EVENTFD2 = 290
+ SYS_EPOLL_CREATE1 = 291
+ SYS_DUP3 = 292
+ SYS_PIPE2 = 293
+ SYS_INOTIFY_INIT1 = 294
+ SYS_PREADV = 295
+ SYS_PWRITEV = 296
+ SYS_RT_TGSIGQUEUEINFO = 297
+ SYS_PERF_EVENT_OPEN = 298
+ SYS_RECVMMSG = 299
+ SYS_FANOTIFY_INIT = 300
+ SYS_FANOTIFY_MARK = 301
+ SYS_PRLIMIT64 = 302
+ SYS_NAME_TO_HANDLE_AT = 303
+ SYS_OPEN_BY_HANDLE_AT = 304
+ SYS_CLOCK_ADJTIME = 305
+ SYS_SYNCFS = 306
+ SYS_SENDMMSG = 307
+ SYS_SETNS = 308
+ SYS_GETCPU = 309
+ SYS_PROCESS_VM_READV = 310
+ SYS_PROCESS_VM_WRITEV = 311
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_arm.go
new file mode 100644
index 000000000..45ced17fc
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_arm.go
@@ -0,0 +1,356 @@
+// mksysnum_linux.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm,linux
+
+package unix
+
+const (
+ SYS_OABI_SYSCALL_BASE = 0
+ SYS_SYSCALL_BASE = 0
+ SYS_RESTART_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_CREAT = 8
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_EXECVE = 11
+ SYS_CHDIR = 12
+ SYS_TIME = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_LCHOWN = 16
+ SYS_LSEEK = 19
+ SYS_GETPID = 20
+ SYS_MOUNT = 21
+ SYS_UMOUNT = 22
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_STIME = 25
+ SYS_PTRACE = 26
+ SYS_ALARM = 27
+ SYS_PAUSE = 29
+ SYS_UTIME = 30
+ SYS_ACCESS = 33
+ SYS_NICE = 34
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_RENAME = 38
+ SYS_MKDIR = 39
+ SYS_RMDIR = 40
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_TIMES = 43
+ SYS_BRK = 45
+ SYS_SETGID = 46
+ SYS_GETGID = 47
+ SYS_GETEUID = 49
+ SYS_GETEGID = 50
+ SYS_ACCT = 51
+ SYS_UMOUNT2 = 52
+ SYS_IOCTL = 54
+ SYS_FCNTL = 55
+ SYS_SETPGID = 57
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_USTAT = 62
+ SYS_DUP2 = 63
+ SYS_GETPPID = 64
+ SYS_GETPGRP = 65
+ SYS_SETSID = 66
+ SYS_SIGACTION = 67
+ SYS_SETREUID = 70
+ SYS_SETREGID = 71
+ SYS_SIGSUSPEND = 72
+ SYS_SIGPENDING = 73
+ SYS_SETHOSTNAME = 74
+ SYS_SETRLIMIT = 75
+ SYS_GETRLIMIT = 76
+ SYS_GETRUSAGE = 77
+ SYS_GETTIMEOFDAY = 78
+ SYS_SETTIMEOFDAY = 79
+ SYS_GETGROUPS = 80
+ SYS_SETGROUPS = 81
+ SYS_SELECT = 82
+ SYS_SYMLINK = 83
+ SYS_READLINK = 85
+ SYS_USELIB = 86
+ SYS_SWAPON = 87
+ SYS_REBOOT = 88
+ SYS_READDIR = 89
+ SYS_MMAP = 90
+ SYS_MUNMAP = 91
+ SYS_TRUNCATE = 92
+ SYS_FTRUNCATE = 93
+ SYS_FCHMOD = 94
+ SYS_FCHOWN = 95
+ SYS_GETPRIORITY = 96
+ SYS_SETPRIORITY = 97
+ SYS_STATFS = 99
+ SYS_FSTATFS = 100
+ SYS_SOCKETCALL = 102
+ SYS_SYSLOG = 103
+ SYS_SETITIMER = 104
+ SYS_GETITIMER = 105
+ SYS_STAT = 106
+ SYS_LSTAT = 107
+ SYS_FSTAT = 108
+ SYS_VHANGUP = 111
+ SYS_SYSCALL = 113
+ SYS_WAIT4 = 114
+ SYS_SWAPOFF = 115
+ SYS_SYSINFO = 116
+ SYS_IPC = 117
+ SYS_FSYNC = 118
+ SYS_SIGRETURN = 119
+ SYS_CLONE = 120
+ SYS_SETDOMAINNAME = 121
+ SYS_UNAME = 122
+ SYS_ADJTIMEX = 124
+ SYS_MPROTECT = 125
+ SYS_SIGPROCMASK = 126
+ SYS_INIT_MODULE = 128
+ SYS_DELETE_MODULE = 129
+ SYS_QUOTACTL = 131
+ SYS_GETPGID = 132
+ SYS_FCHDIR = 133
+ SYS_BDFLUSH = 134
+ SYS_SYSFS = 135
+ SYS_PERSONALITY = 136
+ SYS_SETFSUID = 138
+ SYS_SETFSGID = 139
+ SYS__LLSEEK = 140
+ SYS_GETDENTS = 141
+ SYS__NEWSELECT = 142
+ SYS_FLOCK = 143
+ SYS_MSYNC = 144
+ SYS_READV = 145
+ SYS_WRITEV = 146
+ SYS_GETSID = 147
+ SYS_FDATASYNC = 148
+ SYS__SYSCTL = 149
+ SYS_MLOCK = 150
+ SYS_MUNLOCK = 151
+ SYS_MLOCKALL = 152
+ SYS_MUNLOCKALL = 153
+ SYS_SCHED_SETPARAM = 154
+ SYS_SCHED_GETPARAM = 155
+ SYS_SCHED_SETSCHEDULER = 156
+ SYS_SCHED_GETSCHEDULER = 157
+ SYS_SCHED_YIELD = 158
+ SYS_SCHED_GET_PRIORITY_MAX = 159
+ SYS_SCHED_GET_PRIORITY_MIN = 160
+ SYS_SCHED_RR_GET_INTERVAL = 161
+ SYS_NANOSLEEP = 162
+ SYS_MREMAP = 163
+ SYS_SETRESUID = 164
+ SYS_GETRESUID = 165
+ SYS_POLL = 168
+ SYS_NFSSERVCTL = 169
+ SYS_SETRESGID = 170
+ SYS_GETRESGID = 171
+ SYS_PRCTL = 172
+ SYS_RT_SIGRETURN = 173
+ SYS_RT_SIGACTION = 174
+ SYS_RT_SIGPROCMASK = 175
+ SYS_RT_SIGPENDING = 176
+ SYS_RT_SIGTIMEDWAIT = 177
+ SYS_RT_SIGQUEUEINFO = 178
+ SYS_RT_SIGSUSPEND = 179
+ SYS_PREAD64 = 180
+ SYS_PWRITE64 = 181
+ SYS_CHOWN = 182
+ SYS_GETCWD = 183
+ SYS_CAPGET = 184
+ SYS_CAPSET = 185
+ SYS_SIGALTSTACK = 186
+ SYS_SENDFILE = 187
+ SYS_VFORK = 190
+ SYS_UGETRLIMIT = 191
+ SYS_MMAP2 = 192
+ SYS_TRUNCATE64 = 193
+ SYS_FTRUNCATE64 = 194
+ SYS_STAT64 = 195
+ SYS_LSTAT64 = 196
+ SYS_FSTAT64 = 197
+ SYS_LCHOWN32 = 198
+ SYS_GETUID32 = 199
+ SYS_GETGID32 = 200
+ SYS_GETEUID32 = 201
+ SYS_GETEGID32 = 202
+ SYS_SETREUID32 = 203
+ SYS_SETREGID32 = 204
+ SYS_GETGROUPS32 = 205
+ SYS_SETGROUPS32 = 206
+ SYS_FCHOWN32 = 207
+ SYS_SETRESUID32 = 208
+ SYS_GETRESUID32 = 209
+ SYS_SETRESGID32 = 210
+ SYS_GETRESGID32 = 211
+ SYS_CHOWN32 = 212
+ SYS_SETUID32 = 213
+ SYS_SETGID32 = 214
+ SYS_SETFSUID32 = 215
+ SYS_SETFSGID32 = 216
+ SYS_GETDENTS64 = 217
+ SYS_PIVOT_ROOT = 218
+ SYS_MINCORE = 219
+ SYS_MADVISE = 220
+ SYS_FCNTL64 = 221
+ SYS_GETTID = 224
+ SYS_READAHEAD = 225
+ SYS_SETXATTR = 226
+ SYS_LSETXATTR = 227
+ SYS_FSETXATTR = 228
+ SYS_GETXATTR = 229
+ SYS_LGETXATTR = 230
+ SYS_FGETXATTR = 231
+ SYS_LISTXATTR = 232
+ SYS_LLISTXATTR = 233
+ SYS_FLISTXATTR = 234
+ SYS_REMOVEXATTR = 235
+ SYS_LREMOVEXATTR = 236
+ SYS_FREMOVEXATTR = 237
+ SYS_TKILL = 238
+ SYS_SENDFILE64 = 239
+ SYS_FUTEX = 240
+ SYS_SCHED_SETAFFINITY = 241
+ SYS_SCHED_GETAFFINITY = 242
+ SYS_IO_SETUP = 243
+ SYS_IO_DESTROY = 244
+ SYS_IO_GETEVENTS = 245
+ SYS_IO_SUBMIT = 246
+ SYS_IO_CANCEL = 247
+ SYS_EXIT_GROUP = 248
+ SYS_LOOKUP_DCOOKIE = 249
+ SYS_EPOLL_CREATE = 250
+ SYS_EPOLL_CTL = 251
+ SYS_EPOLL_WAIT = 252
+ SYS_REMAP_FILE_PAGES = 253
+ SYS_SET_TID_ADDRESS = 256
+ SYS_TIMER_CREATE = 257
+ SYS_TIMER_SETTIME = 258
+ SYS_TIMER_GETTIME = 259
+ SYS_TIMER_GETOVERRUN = 260
+ SYS_TIMER_DELETE = 261
+ SYS_CLOCK_SETTIME = 262
+ SYS_CLOCK_GETTIME = 263
+ SYS_CLOCK_GETRES = 264
+ SYS_CLOCK_NANOSLEEP = 265
+ SYS_STATFS64 = 266
+ SYS_FSTATFS64 = 267
+ SYS_TGKILL = 268
+ SYS_UTIMES = 269
+ SYS_ARM_FADVISE64_64 = 270
+ SYS_PCICONFIG_IOBASE = 271
+ SYS_PCICONFIG_READ = 272
+ SYS_PCICONFIG_WRITE = 273
+ SYS_MQ_OPEN = 274
+ SYS_MQ_UNLINK = 275
+ SYS_MQ_TIMEDSEND = 276
+ SYS_MQ_TIMEDRECEIVE = 277
+ SYS_MQ_NOTIFY = 278
+ SYS_MQ_GETSETATTR = 279
+ SYS_WAITID = 280
+ SYS_SOCKET = 281
+ SYS_BIND = 282
+ SYS_CONNECT = 283
+ SYS_LISTEN = 284
+ SYS_ACCEPT = 285
+ SYS_GETSOCKNAME = 286
+ SYS_GETPEERNAME = 287
+ SYS_SOCKETPAIR = 288
+ SYS_SEND = 289
+ SYS_SENDTO = 290
+ SYS_RECV = 291
+ SYS_RECVFROM = 292
+ SYS_SHUTDOWN = 293
+ SYS_SETSOCKOPT = 294
+ SYS_GETSOCKOPT = 295
+ SYS_SENDMSG = 296
+ SYS_RECVMSG = 297
+ SYS_SEMOP = 298
+ SYS_SEMGET = 299
+ SYS_SEMCTL = 300
+ SYS_MSGSND = 301
+ SYS_MSGRCV = 302
+ SYS_MSGGET = 303
+ SYS_MSGCTL = 304
+ SYS_SHMAT = 305
+ SYS_SHMDT = 306
+ SYS_SHMGET = 307
+ SYS_SHMCTL = 308
+ SYS_ADD_KEY = 309
+ SYS_REQUEST_KEY = 310
+ SYS_KEYCTL = 311
+ SYS_SEMTIMEDOP = 312
+ SYS_VSERVER = 313
+ SYS_IOPRIO_SET = 314
+ SYS_IOPRIO_GET = 315
+ SYS_INOTIFY_INIT = 316
+ SYS_INOTIFY_ADD_WATCH = 317
+ SYS_INOTIFY_RM_WATCH = 318
+ SYS_MBIND = 319
+ SYS_GET_MEMPOLICY = 320
+ SYS_SET_MEMPOLICY = 321
+ SYS_OPENAT = 322
+ SYS_MKDIRAT = 323
+ SYS_MKNODAT = 324
+ SYS_FCHOWNAT = 325
+ SYS_FUTIMESAT = 326
+ SYS_FSTATAT64 = 327
+ SYS_UNLINKAT = 328
+ SYS_RENAMEAT = 329
+ SYS_LINKAT = 330
+ SYS_SYMLINKAT = 331
+ SYS_READLINKAT = 332
+ SYS_FCHMODAT = 333
+ SYS_FACCESSAT = 334
+ SYS_PSELECT6 = 335
+ SYS_PPOLL = 336
+ SYS_UNSHARE = 337
+ SYS_SET_ROBUST_LIST = 338
+ SYS_GET_ROBUST_LIST = 339
+ SYS_SPLICE = 340
+ SYS_ARM_SYNC_FILE_RANGE = 341
+ SYS_TEE = 342
+ SYS_VMSPLICE = 343
+ SYS_MOVE_PAGES = 344
+ SYS_GETCPU = 345
+ SYS_EPOLL_PWAIT = 346
+ SYS_KEXEC_LOAD = 347
+ SYS_UTIMENSAT = 348
+ SYS_SIGNALFD = 349
+ SYS_TIMERFD_CREATE = 350
+ SYS_EVENTFD = 351
+ SYS_FALLOCATE = 352
+ SYS_TIMERFD_SETTIME = 353
+ SYS_TIMERFD_GETTIME = 354
+ SYS_SIGNALFD4 = 355
+ SYS_EVENTFD2 = 356
+ SYS_EPOLL_CREATE1 = 357
+ SYS_DUP3 = 358
+ SYS_PIPE2 = 359
+ SYS_INOTIFY_INIT1 = 360
+ SYS_PREADV = 361
+ SYS_PWRITEV = 362
+ SYS_RT_TGSIGQUEUEINFO = 363
+ SYS_PERF_EVENT_OPEN = 364
+ SYS_RECVMMSG = 365
+ SYS_ACCEPT4 = 366
+ SYS_FANOTIFY_INIT = 367
+ SYS_FANOTIFY_MARK = 368
+ SYS_PRLIMIT64 = 369
+ SYS_NAME_TO_HANDLE_AT = 370
+ SYS_OPEN_BY_HANDLE_AT = 371
+ SYS_CLOCK_ADJTIME = 372
+ SYS_SYNCFS = 373
+ SYS_SENDMMSG = 374
+ SYS_SETNS = 375
+ SYS_PROCESS_VM_READV = 376
+ SYS_PROCESS_VM_WRITEV = 377
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_arm64.go
new file mode 100644
index 000000000..2e9514f28
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_arm64.go
@@ -0,0 +1,272 @@
+// mksysnum_linux.pl /usr/include/asm-generic/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm64,linux
+
+package unix
+
+const (
+ SYS_IO_SETUP = 0
+ SYS_IO_DESTROY = 1
+ SYS_IO_SUBMIT = 2
+ SYS_IO_CANCEL = 3
+ SYS_IO_GETEVENTS = 4
+ SYS_SETXATTR = 5
+ SYS_LSETXATTR = 6
+ SYS_FSETXATTR = 7
+ SYS_GETXATTR = 8
+ SYS_LGETXATTR = 9
+ SYS_FGETXATTR = 10
+ SYS_LISTXATTR = 11
+ SYS_LLISTXATTR = 12
+ SYS_FLISTXATTR = 13
+ SYS_REMOVEXATTR = 14
+ SYS_LREMOVEXATTR = 15
+ SYS_FREMOVEXATTR = 16
+ SYS_GETCWD = 17
+ SYS_LOOKUP_DCOOKIE = 18
+ SYS_EVENTFD2 = 19
+ SYS_EPOLL_CREATE1 = 20
+ SYS_EPOLL_CTL = 21
+ SYS_EPOLL_PWAIT = 22
+ SYS_DUP = 23
+ SYS_DUP3 = 24
+ SYS_FCNTL = 25
+ SYS_INOTIFY_INIT1 = 26
+ SYS_INOTIFY_ADD_WATCH = 27
+ SYS_INOTIFY_RM_WATCH = 28
+ SYS_IOCTL = 29
+ SYS_IOPRIO_SET = 30
+ SYS_IOPRIO_GET = 31
+ SYS_FLOCK = 32
+ SYS_MKNODAT = 33
+ SYS_MKDIRAT = 34
+ SYS_UNLINKAT = 35
+ SYS_SYMLINKAT = 36
+ SYS_LINKAT = 37
+ SYS_RENAMEAT = 38
+ SYS_UMOUNT2 = 39
+ SYS_MOUNT = 40
+ SYS_PIVOT_ROOT = 41
+ SYS_NFSSERVCTL = 42
+ SYS_STATFS = 43
+ SYS_FSTATFS = 44
+ SYS_TRUNCATE = 45
+ SYS_FTRUNCATE = 46
+ SYS_FALLOCATE = 47
+ SYS_FACCESSAT = 48
+ SYS_CHDIR = 49
+ SYS_FCHDIR = 50
+ SYS_CHROOT = 51
+ SYS_FCHMOD = 52
+ SYS_FCHMODAT = 53
+ SYS_FCHOWNAT = 54
+ SYS_FCHOWN = 55
+ SYS_OPENAT = 56
+ SYS_CLOSE = 57
+ SYS_VHANGUP = 58
+ SYS_PIPE2 = 59
+ SYS_QUOTACTL = 60
+ SYS_GETDENTS64 = 61
+ SYS_LSEEK = 62
+ SYS_READ = 63
+ SYS_WRITE = 64
+ SYS_READV = 65
+ SYS_WRITEV = 66
+ SYS_PREAD64 = 67
+ SYS_PWRITE64 = 68
+ SYS_PREADV = 69
+ SYS_PWRITEV = 70
+ SYS_SENDFILE = 71
+ SYS_PSELECT6 = 72
+ SYS_PPOLL = 73
+ SYS_SIGNALFD4 = 74
+ SYS_VMSPLICE = 75
+ SYS_SPLICE = 76
+ SYS_TEE = 77
+ SYS_READLINKAT = 78
+ SYS_FSTATAT = 79
+ SYS_FSTAT = 80
+ SYS_SYNC = 81
+ SYS_FSYNC = 82
+ SYS_FDATASYNC = 83
+ SYS_SYNC_FILE_RANGE = 84
+ SYS_TIMERFD_CREATE = 85
+ SYS_TIMERFD_SETTIME = 86
+ SYS_TIMERFD_GETTIME = 87
+ SYS_UTIMENSAT = 88
+ SYS_ACCT = 89
+ SYS_CAPGET = 90
+ SYS_CAPSET = 91
+ SYS_PERSONALITY = 92
+ SYS_EXIT = 93
+ SYS_EXIT_GROUP = 94
+ SYS_WAITID = 95
+ SYS_SET_TID_ADDRESS = 96
+ SYS_UNSHARE = 97
+ SYS_FUTEX = 98
+ SYS_SET_ROBUST_LIST = 99
+ SYS_GET_ROBUST_LIST = 100
+ SYS_NANOSLEEP = 101
+ SYS_GETITIMER = 102
+ SYS_SETITIMER = 103
+ SYS_KEXEC_LOAD = 104
+ SYS_INIT_MODULE = 105
+ SYS_DELETE_MODULE = 106
+ SYS_TIMER_CREATE = 107
+ SYS_TIMER_GETTIME = 108
+ SYS_TIMER_GETOVERRUN = 109
+ SYS_TIMER_SETTIME = 110
+ SYS_TIMER_DELETE = 111
+ SYS_CLOCK_SETTIME = 112
+ SYS_CLOCK_GETTIME = 113
+ SYS_CLOCK_GETRES = 114
+ SYS_CLOCK_NANOSLEEP = 115
+ SYS_SYSLOG = 116
+ SYS_PTRACE = 117
+ SYS_SCHED_SETPARAM = 118
+ SYS_SCHED_SETSCHEDULER = 119
+ SYS_SCHED_GETSCHEDULER = 120
+ SYS_SCHED_GETPARAM = 121
+ SYS_SCHED_SETAFFINITY = 122
+ SYS_SCHED_GETAFFINITY = 123
+ SYS_SCHED_YIELD = 124
+ SYS_SCHED_GET_PRIORITY_MAX = 125
+ SYS_SCHED_GET_PRIORITY_MIN = 126
+ SYS_SCHED_RR_GET_INTERVAL = 127
+ SYS_RESTART_SYSCALL = 128
+ SYS_KILL = 129
+ SYS_TKILL = 130
+ SYS_TGKILL = 131
+ SYS_SIGALTSTACK = 132
+ SYS_RT_SIGSUSPEND = 133
+ SYS_RT_SIGACTION = 134
+ SYS_RT_SIGPROCMASK = 135
+ SYS_RT_SIGPENDING = 136
+ SYS_RT_SIGTIMEDWAIT = 137
+ SYS_RT_SIGQUEUEINFO = 138
+ SYS_RT_SIGRETURN = 139
+ SYS_SETPRIORITY = 140
+ SYS_GETPRIORITY = 141
+ SYS_REBOOT = 142
+ SYS_SETREGID = 143
+ SYS_SETGID = 144
+ SYS_SETREUID = 145
+ SYS_SETUID = 146
+ SYS_SETRESUID = 147
+ SYS_GETRESUID = 148
+ SYS_SETRESGID = 149
+ SYS_GETRESGID = 150
+ SYS_SETFSUID = 151
+ SYS_SETFSGID = 152
+ SYS_TIMES = 153
+ SYS_SETPGID = 154
+ SYS_GETPGID = 155
+ SYS_GETSID = 156
+ SYS_SETSID = 157
+ SYS_GETGROUPS = 158
+ SYS_SETGROUPS = 159
+ SYS_UNAME = 160
+ SYS_SETHOSTNAME = 161
+ SYS_SETDOMAINNAME = 162
+ SYS_GETRLIMIT = 163
+ SYS_SETRLIMIT = 164
+ SYS_GETRUSAGE = 165
+ SYS_UMASK = 166
+ SYS_PRCTL = 167
+ SYS_GETCPU = 168
+ SYS_GETTIMEOFDAY = 169
+ SYS_SETTIMEOFDAY = 170
+ SYS_ADJTIMEX = 171
+ SYS_GETPID = 172
+ SYS_GETPPID = 173
+ SYS_GETUID = 174
+ SYS_GETEUID = 175
+ SYS_GETGID = 176
+ SYS_GETEGID = 177
+ SYS_GETTID = 178
+ SYS_SYSINFO = 179
+ SYS_MQ_OPEN = 180
+ SYS_MQ_UNLINK = 181
+ SYS_MQ_TIMEDSEND = 182
+ SYS_MQ_TIMEDRECEIVE = 183
+ SYS_MQ_NOTIFY = 184
+ SYS_MQ_GETSETATTR = 185
+ SYS_MSGGET = 186
+ SYS_MSGCTL = 187
+ SYS_MSGRCV = 188
+ SYS_MSGSND = 189
+ SYS_SEMGET = 190
+ SYS_SEMCTL = 191
+ SYS_SEMTIMEDOP = 192
+ SYS_SEMOP = 193
+ SYS_SHMGET = 194
+ SYS_SHMCTL = 195
+ SYS_SHMAT = 196
+ SYS_SHMDT = 197
+ SYS_SOCKET = 198
+ SYS_SOCKETPAIR = 199
+ SYS_BIND = 200
+ SYS_LISTEN = 201
+ SYS_ACCEPT = 202
+ SYS_CONNECT = 203
+ SYS_GETSOCKNAME = 204
+ SYS_GETPEERNAME = 205
+ SYS_SENDTO = 206
+ SYS_RECVFROM = 207
+ SYS_SETSOCKOPT = 208
+ SYS_GETSOCKOPT = 209
+ SYS_SHUTDOWN = 210
+ SYS_SENDMSG = 211
+ SYS_RECVMSG = 212
+ SYS_READAHEAD = 213
+ SYS_BRK = 214
+ SYS_MUNMAP = 215
+ SYS_MREMAP = 216
+ SYS_ADD_KEY = 217
+ SYS_REQUEST_KEY = 218
+ SYS_KEYCTL = 219
+ SYS_CLONE = 220
+ SYS_EXECVE = 221
+ SYS_MMAP = 222
+ SYS_FADVISE64 = 223
+ SYS_SWAPON = 224
+ SYS_SWAPOFF = 225
+ SYS_MPROTECT = 226
+ SYS_MSYNC = 227
+ SYS_MLOCK = 228
+ SYS_MUNLOCK = 229
+ SYS_MLOCKALL = 230
+ SYS_MUNLOCKALL = 231
+ SYS_MINCORE = 232
+ SYS_MADVISE = 233
+ SYS_REMAP_FILE_PAGES = 234
+ SYS_MBIND = 235
+ SYS_GET_MEMPOLICY = 236
+ SYS_SET_MEMPOLICY = 237
+ SYS_MIGRATE_PAGES = 238
+ SYS_MOVE_PAGES = 239
+ SYS_RT_TGSIGQUEUEINFO = 240
+ SYS_PERF_EVENT_OPEN = 241
+ SYS_ACCEPT4 = 242
+ SYS_RECVMMSG = 243
+ SYS_ARCH_SPECIFIC_SYSCALL = 244
+ SYS_WAIT4 = 260
+ SYS_PRLIMIT64 = 261
+ SYS_FANOTIFY_INIT = 262
+ SYS_FANOTIFY_MARK = 263
+ SYS_NAME_TO_HANDLE_AT = 264
+ SYS_OPEN_BY_HANDLE_AT = 265
+ SYS_CLOCK_ADJTIME = 266
+ SYS_SYNCFS = 267
+ SYS_SETNS = 268
+ SYS_SENDMMSG = 269
+ SYS_PROCESS_VM_READV = 270
+ SYS_PROCESS_VM_WRITEV = 271
+ SYS_KCMP = 272
+ SYS_FINIT_MODULE = 273
+ SYS_SCHED_SETATTR = 274
+ SYS_SCHED_GETATTR = 275
+ SYS_RENAMEAT2 = 276
+ SYS_SECCOMP = 277
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
new file mode 100644
index 000000000..e1b08f00d
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
@@ -0,0 +1,360 @@
+// mksysnum_linux.pl /usr/include/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build ppc64,linux
+
+package unix
+
+const (
+ SYS_RESTART_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_WAITPID = 7
+ SYS_CREAT = 8
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_EXECVE = 11
+ SYS_CHDIR = 12
+ SYS_TIME = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_LCHOWN = 16
+ SYS_BREAK = 17
+ SYS_OLDSTAT = 18
+ SYS_LSEEK = 19
+ SYS_GETPID = 20
+ SYS_MOUNT = 21
+ SYS_UMOUNT = 22
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_STIME = 25
+ SYS_PTRACE = 26
+ SYS_ALARM = 27
+ SYS_OLDFSTAT = 28
+ SYS_PAUSE = 29
+ SYS_UTIME = 30
+ SYS_STTY = 31
+ SYS_GTTY = 32
+ SYS_ACCESS = 33
+ SYS_NICE = 34
+ SYS_FTIME = 35
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_RENAME = 38
+ SYS_MKDIR = 39
+ SYS_RMDIR = 40
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_TIMES = 43
+ SYS_PROF = 44
+ SYS_BRK = 45
+ SYS_SETGID = 46
+ SYS_GETGID = 47
+ SYS_SIGNAL = 48
+ SYS_GETEUID = 49
+ SYS_GETEGID = 50
+ SYS_ACCT = 51
+ SYS_UMOUNT2 = 52
+ SYS_LOCK = 53
+ SYS_IOCTL = 54
+ SYS_FCNTL = 55
+ SYS_MPX = 56
+ SYS_SETPGID = 57
+ SYS_ULIMIT = 58
+ SYS_OLDOLDUNAME = 59
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_USTAT = 62
+ SYS_DUP2 = 63
+ SYS_GETPPID = 64
+ SYS_GETPGRP = 65
+ SYS_SETSID = 66
+ SYS_SIGACTION = 67
+ SYS_SGETMASK = 68
+ SYS_SSETMASK = 69
+ SYS_SETREUID = 70
+ SYS_SETREGID = 71
+ SYS_SIGSUSPEND = 72
+ SYS_SIGPENDING = 73
+ SYS_SETHOSTNAME = 74
+ SYS_SETRLIMIT = 75
+ SYS_GETRLIMIT = 76
+ SYS_GETRUSAGE = 77
+ SYS_GETTIMEOFDAY = 78
+ SYS_SETTIMEOFDAY = 79
+ SYS_GETGROUPS = 80
+ SYS_SETGROUPS = 81
+ SYS_SELECT = 82
+ SYS_SYMLINK = 83
+ SYS_OLDLSTAT = 84
+ SYS_READLINK = 85
+ SYS_USELIB = 86
+ SYS_SWAPON = 87
+ SYS_REBOOT = 88
+ SYS_READDIR = 89
+ SYS_MMAP = 90
+ SYS_MUNMAP = 91
+ SYS_TRUNCATE = 92
+ SYS_FTRUNCATE = 93
+ SYS_FCHMOD = 94
+ SYS_FCHOWN = 95
+ SYS_GETPRIORITY = 96
+ SYS_SETPRIORITY = 97
+ SYS_PROFIL = 98
+ SYS_STATFS = 99
+ SYS_FSTATFS = 100
+ SYS_IOPERM = 101
+ SYS_SOCKETCALL = 102
+ SYS_SYSLOG = 103
+ SYS_SETITIMER = 104
+ SYS_GETITIMER = 105
+ SYS_STAT = 106
+ SYS_LSTAT = 107
+ SYS_FSTAT = 108
+ SYS_OLDUNAME = 109
+ SYS_IOPL = 110
+ SYS_VHANGUP = 111
+ SYS_IDLE = 112
+ SYS_VM86 = 113
+ SYS_WAIT4 = 114
+ SYS_SWAPOFF = 115
+ SYS_SYSINFO = 116
+ SYS_IPC = 117
+ SYS_FSYNC = 118
+ SYS_SIGRETURN = 119
+ SYS_CLONE = 120
+ SYS_SETDOMAINNAME = 121
+ SYS_UNAME = 122
+ SYS_MODIFY_LDT = 123
+ SYS_ADJTIMEX = 124
+ SYS_MPROTECT = 125
+ SYS_SIGPROCMASK = 126
+ SYS_CREATE_MODULE = 127
+ SYS_INIT_MODULE = 128
+ SYS_DELETE_MODULE = 129
+ SYS_GET_KERNEL_SYMS = 130
+ SYS_QUOTACTL = 131
+ SYS_GETPGID = 132
+ SYS_FCHDIR = 133
+ SYS_BDFLUSH = 134
+ SYS_SYSFS = 135
+ SYS_PERSONALITY = 136
+ SYS_AFS_SYSCALL = 137
+ SYS_SETFSUID = 138
+ SYS_SETFSGID = 139
+ SYS__LLSEEK = 140
+ SYS_GETDENTS = 141
+ SYS__NEWSELECT = 142
+ SYS_FLOCK = 143
+ SYS_MSYNC = 144
+ SYS_READV = 145
+ SYS_WRITEV = 146
+ SYS_GETSID = 147
+ SYS_FDATASYNC = 148
+ SYS__SYSCTL = 149
+ SYS_MLOCK = 150
+ SYS_MUNLOCK = 151
+ SYS_MLOCKALL = 152
+ SYS_MUNLOCKALL = 153
+ SYS_SCHED_SETPARAM = 154
+ SYS_SCHED_GETPARAM = 155
+ SYS_SCHED_SETSCHEDULER = 156
+ SYS_SCHED_GETSCHEDULER = 157
+ SYS_SCHED_YIELD = 158
+ SYS_SCHED_GET_PRIORITY_MAX = 159
+ SYS_SCHED_GET_PRIORITY_MIN = 160
+ SYS_SCHED_RR_GET_INTERVAL = 161
+ SYS_NANOSLEEP = 162
+ SYS_MREMAP = 163
+ SYS_SETRESUID = 164
+ SYS_GETRESUID = 165
+ SYS_QUERY_MODULE = 166
+ SYS_POLL = 167
+ SYS_NFSSERVCTL = 168
+ SYS_SETRESGID = 169
+ SYS_GETRESGID = 170
+ SYS_PRCTL = 171
+ SYS_RT_SIGRETURN = 172
+ SYS_RT_SIGACTION = 173
+ SYS_RT_SIGPROCMASK = 174
+ SYS_RT_SIGPENDING = 175
+ SYS_RT_SIGTIMEDWAIT = 176
+ SYS_RT_SIGQUEUEINFO = 177
+ SYS_RT_SIGSUSPEND = 178
+ SYS_PREAD64 = 179
+ SYS_PWRITE64 = 180
+ SYS_CHOWN = 181
+ SYS_GETCWD = 182
+ SYS_CAPGET = 183
+ SYS_CAPSET = 184
+ SYS_SIGALTSTACK = 185
+ SYS_SENDFILE = 186
+ SYS_GETPMSG = 187
+ SYS_PUTPMSG = 188
+ SYS_VFORK = 189
+ SYS_UGETRLIMIT = 190
+ SYS_READAHEAD = 191
+ SYS_PCICONFIG_READ = 198
+ SYS_PCICONFIG_WRITE = 199
+ SYS_PCICONFIG_IOBASE = 200
+ SYS_MULTIPLEXER = 201
+ SYS_GETDENTS64 = 202
+ SYS_PIVOT_ROOT = 203
+ SYS_MADVISE = 205
+ SYS_MINCORE = 206
+ SYS_GETTID = 207
+ SYS_TKILL = 208
+ SYS_SETXATTR = 209
+ SYS_LSETXATTR = 210
+ SYS_FSETXATTR = 211
+ SYS_GETXATTR = 212
+ SYS_LGETXATTR = 213
+ SYS_FGETXATTR = 214
+ SYS_LISTXATTR = 215
+ SYS_LLISTXATTR = 216
+ SYS_FLISTXATTR = 217
+ SYS_REMOVEXATTR = 218
+ SYS_LREMOVEXATTR = 219
+ SYS_FREMOVEXATTR = 220
+ SYS_FUTEX = 221
+ SYS_SCHED_SETAFFINITY = 222
+ SYS_SCHED_GETAFFINITY = 223
+ SYS_TUXCALL = 225
+ SYS_IO_SETUP = 227
+ SYS_IO_DESTROY = 228
+ SYS_IO_GETEVENTS = 229
+ SYS_IO_SUBMIT = 230
+ SYS_IO_CANCEL = 231
+ SYS_SET_TID_ADDRESS = 232
+ SYS_FADVISE64 = 233
+ SYS_EXIT_GROUP = 234
+ SYS_LOOKUP_DCOOKIE = 235
+ SYS_EPOLL_CREATE = 236
+ SYS_EPOLL_CTL = 237
+ SYS_EPOLL_WAIT = 238
+ SYS_REMAP_FILE_PAGES = 239
+ SYS_TIMER_CREATE = 240
+ SYS_TIMER_SETTIME = 241
+ SYS_TIMER_GETTIME = 242
+ SYS_TIMER_GETOVERRUN = 243
+ SYS_TIMER_DELETE = 244
+ SYS_CLOCK_SETTIME = 245
+ SYS_CLOCK_GETTIME = 246
+ SYS_CLOCK_GETRES = 247
+ SYS_CLOCK_NANOSLEEP = 248
+ SYS_SWAPCONTEXT = 249
+ SYS_TGKILL = 250
+ SYS_UTIMES = 251
+ SYS_STATFS64 = 252
+ SYS_FSTATFS64 = 253
+ SYS_RTAS = 255
+ SYS_SYS_DEBUG_SETCONTEXT = 256
+ SYS_MIGRATE_PAGES = 258
+ SYS_MBIND = 259
+ SYS_GET_MEMPOLICY = 260
+ SYS_SET_MEMPOLICY = 261
+ SYS_MQ_OPEN = 262
+ SYS_MQ_UNLINK = 263
+ SYS_MQ_TIMEDSEND = 264
+ SYS_MQ_TIMEDRECEIVE = 265
+ SYS_MQ_NOTIFY = 266
+ SYS_MQ_GETSETATTR = 267
+ SYS_KEXEC_LOAD = 268
+ SYS_ADD_KEY = 269
+ SYS_REQUEST_KEY = 270
+ SYS_KEYCTL = 271
+ SYS_WAITID = 272
+ SYS_IOPRIO_SET = 273
+ SYS_IOPRIO_GET = 274
+ SYS_INOTIFY_INIT = 275
+ SYS_INOTIFY_ADD_WATCH = 276
+ SYS_INOTIFY_RM_WATCH = 277
+ SYS_SPU_RUN = 278
+ SYS_SPU_CREATE = 279
+ SYS_PSELECT6 = 280
+ SYS_PPOLL = 281
+ SYS_UNSHARE = 282
+ SYS_SPLICE = 283
+ SYS_TEE = 284
+ SYS_VMSPLICE = 285
+ SYS_OPENAT = 286
+ SYS_MKDIRAT = 287
+ SYS_MKNODAT = 288
+ SYS_FCHOWNAT = 289
+ SYS_FUTIMESAT = 290
+ SYS_NEWFSTATAT = 291
+ SYS_UNLINKAT = 292
+ SYS_RENAMEAT = 293
+ SYS_LINKAT = 294
+ SYS_SYMLINKAT = 295
+ SYS_READLINKAT = 296
+ SYS_FCHMODAT = 297
+ SYS_FACCESSAT = 298
+ SYS_GET_ROBUST_LIST = 299
+ SYS_SET_ROBUST_LIST = 300
+ SYS_MOVE_PAGES = 301
+ SYS_GETCPU = 302
+ SYS_EPOLL_PWAIT = 303
+ SYS_UTIMENSAT = 304
+ SYS_SIGNALFD = 305
+ SYS_TIMERFD_CREATE = 306
+ SYS_EVENTFD = 307
+ SYS_SYNC_FILE_RANGE2 = 308
+ SYS_FALLOCATE = 309
+ SYS_SUBPAGE_PROT = 310
+ SYS_TIMERFD_SETTIME = 311
+ SYS_TIMERFD_GETTIME = 312
+ SYS_SIGNALFD4 = 313
+ SYS_EVENTFD2 = 314
+ SYS_EPOLL_CREATE1 = 315
+ SYS_DUP3 = 316
+ SYS_PIPE2 = 317
+ SYS_INOTIFY_INIT1 = 318
+ SYS_PERF_EVENT_OPEN = 319
+ SYS_PREADV = 320
+ SYS_PWRITEV = 321
+ SYS_RT_TGSIGQUEUEINFO = 322
+ SYS_FANOTIFY_INIT = 323
+ SYS_FANOTIFY_MARK = 324
+ SYS_PRLIMIT64 = 325
+ SYS_SOCKET = 326
+ SYS_BIND = 327
+ SYS_CONNECT = 328
+ SYS_LISTEN = 329
+ SYS_ACCEPT = 330
+ SYS_GETSOCKNAME = 331
+ SYS_GETPEERNAME = 332
+ SYS_SOCKETPAIR = 333
+ SYS_SEND = 334
+ SYS_SENDTO = 335
+ SYS_RECV = 336
+ SYS_RECVFROM = 337
+ SYS_SHUTDOWN = 338
+ SYS_SETSOCKOPT = 339
+ SYS_GETSOCKOPT = 340
+ SYS_SENDMSG = 341
+ SYS_RECVMSG = 342
+ SYS_RECVMMSG = 343
+ SYS_ACCEPT4 = 344
+ SYS_NAME_TO_HANDLE_AT = 345
+ SYS_OPEN_BY_HANDLE_AT = 346
+ SYS_CLOCK_ADJTIME = 347
+ SYS_SYNCFS = 348
+ SYS_SENDMMSG = 349
+ SYS_SETNS = 350
+ SYS_PROCESS_VM_READV = 351
+ SYS_PROCESS_VM_WRITEV = 352
+ SYS_FINIT_MODULE = 353
+ SYS_KCMP = 354
+ SYS_SCHED_SETATTR = 355
+ SYS_SCHED_GETATTR = 356
+ SYS_RENAMEAT2 = 357
+ SYS_SECCOMP = 358
+ SYS_GETRANDOM = 359
+ SYS_MEMFD_CREATE = 360
+ SYS_BPF = 361
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
new file mode 100644
index 000000000..45e63f51a
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
@@ -0,0 +1,353 @@
+// mksysnum_linux.pl /usr/include/powerpc64le-linux-gnu/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build ppc64le,linux
+
+package unix
+
+const (
+ SYS_RESTART_SYSCALL = 0
+ SYS_EXIT = 1
+ SYS_FORK = 2
+ SYS_READ = 3
+ SYS_WRITE = 4
+ SYS_OPEN = 5
+ SYS_CLOSE = 6
+ SYS_WAITPID = 7
+ SYS_CREAT = 8
+ SYS_LINK = 9
+ SYS_UNLINK = 10
+ SYS_EXECVE = 11
+ SYS_CHDIR = 12
+ SYS_TIME = 13
+ SYS_MKNOD = 14
+ SYS_CHMOD = 15
+ SYS_LCHOWN = 16
+ SYS_BREAK = 17
+ SYS_OLDSTAT = 18
+ SYS_LSEEK = 19
+ SYS_GETPID = 20
+ SYS_MOUNT = 21
+ SYS_UMOUNT = 22
+ SYS_SETUID = 23
+ SYS_GETUID = 24
+ SYS_STIME = 25
+ SYS_PTRACE = 26
+ SYS_ALARM = 27
+ SYS_OLDFSTAT = 28
+ SYS_PAUSE = 29
+ SYS_UTIME = 30
+ SYS_STTY = 31
+ SYS_GTTY = 32
+ SYS_ACCESS = 33
+ SYS_NICE = 34
+ SYS_FTIME = 35
+ SYS_SYNC = 36
+ SYS_KILL = 37
+ SYS_RENAME = 38
+ SYS_MKDIR = 39
+ SYS_RMDIR = 40
+ SYS_DUP = 41
+ SYS_PIPE = 42
+ SYS_TIMES = 43
+ SYS_PROF = 44
+ SYS_BRK = 45
+ SYS_SETGID = 46
+ SYS_GETGID = 47
+ SYS_SIGNAL = 48
+ SYS_GETEUID = 49
+ SYS_GETEGID = 50
+ SYS_ACCT = 51
+ SYS_UMOUNT2 = 52
+ SYS_LOCK = 53
+ SYS_IOCTL = 54
+ SYS_FCNTL = 55
+ SYS_MPX = 56
+ SYS_SETPGID = 57
+ SYS_ULIMIT = 58
+ SYS_OLDOLDUNAME = 59
+ SYS_UMASK = 60
+ SYS_CHROOT = 61
+ SYS_USTAT = 62
+ SYS_DUP2 = 63
+ SYS_GETPPID = 64
+ SYS_GETPGRP = 65
+ SYS_SETSID = 66
+ SYS_SIGACTION = 67
+ SYS_SGETMASK = 68
+ SYS_SSETMASK = 69
+ SYS_SETREUID = 70
+ SYS_SETREGID = 71
+ SYS_SIGSUSPEND = 72
+ SYS_SIGPENDING = 73
+ SYS_SETHOSTNAME = 74
+ SYS_SETRLIMIT = 75
+ SYS_GETRLIMIT = 76
+ SYS_GETRUSAGE = 77
+ SYS_GETTIMEOFDAY = 78
+ SYS_SETTIMEOFDAY = 79
+ SYS_GETGROUPS = 80
+ SYS_SETGROUPS = 81
+ SYS_SELECT = 82
+ SYS_SYMLINK = 83
+ SYS_OLDLSTAT = 84
+ SYS_READLINK = 85
+ SYS_USELIB = 86
+ SYS_SWAPON = 87
+ SYS_REBOOT = 88
+ SYS_READDIR = 89
+ SYS_MMAP = 90
+ SYS_MUNMAP = 91
+ SYS_TRUNCATE = 92
+ SYS_FTRUNCATE = 93
+ SYS_FCHMOD = 94
+ SYS_FCHOWN = 95
+ SYS_GETPRIORITY = 96
+ SYS_SETPRIORITY = 97
+ SYS_PROFIL = 98
+ SYS_STATFS = 99
+ SYS_FSTATFS = 100
+ SYS_IOPERM = 101
+ SYS_SOCKETCALL = 102
+ SYS_SYSLOG = 103
+ SYS_SETITIMER = 104
+ SYS_GETITIMER = 105
+ SYS_STAT = 106
+ SYS_LSTAT = 107
+ SYS_FSTAT = 108
+ SYS_OLDUNAME = 109
+ SYS_IOPL = 110
+ SYS_VHANGUP = 111
+ SYS_IDLE = 112
+ SYS_VM86 = 113
+ SYS_WAIT4 = 114
+ SYS_SWAPOFF = 115
+ SYS_SYSINFO = 116
+ SYS_IPC = 117
+ SYS_FSYNC = 118
+ SYS_SIGRETURN = 119
+ SYS_CLONE = 120
+ SYS_SETDOMAINNAME = 121
+ SYS_UNAME = 122
+ SYS_MODIFY_LDT = 123
+ SYS_ADJTIMEX = 124
+ SYS_MPROTECT = 125
+ SYS_SIGPROCMASK = 126
+ SYS_CREATE_MODULE = 127
+ SYS_INIT_MODULE = 128
+ SYS_DELETE_MODULE = 129
+ SYS_GET_KERNEL_SYMS = 130
+ SYS_QUOTACTL = 131
+ SYS_GETPGID = 132
+ SYS_FCHDIR = 133
+ SYS_BDFLUSH = 134
+ SYS_SYSFS = 135
+ SYS_PERSONALITY = 136
+ SYS_AFS_SYSCALL = 137
+ SYS_SETFSUID = 138
+ SYS_SETFSGID = 139
+ SYS__LLSEEK = 140
+ SYS_GETDENTS = 141
+ SYS__NEWSELECT = 142
+ SYS_FLOCK = 143
+ SYS_MSYNC = 144
+ SYS_READV = 145
+ SYS_WRITEV = 146
+ SYS_GETSID = 147
+ SYS_FDATASYNC = 148
+ SYS__SYSCTL = 149
+ SYS_MLOCK = 150
+ SYS_MUNLOCK = 151
+ SYS_MLOCKALL = 152
+ SYS_MUNLOCKALL = 153
+ SYS_SCHED_SETPARAM = 154
+ SYS_SCHED_GETPARAM = 155
+ SYS_SCHED_SETSCHEDULER = 156
+ SYS_SCHED_GETSCHEDULER = 157
+ SYS_SCHED_YIELD = 158
+ SYS_SCHED_GET_PRIORITY_MAX = 159
+ SYS_SCHED_GET_PRIORITY_MIN = 160
+ SYS_SCHED_RR_GET_INTERVAL = 161
+ SYS_NANOSLEEP = 162
+ SYS_MREMAP = 163
+ SYS_SETRESUID = 164
+ SYS_GETRESUID = 165
+ SYS_QUERY_MODULE = 166
+ SYS_POLL = 167
+ SYS_NFSSERVCTL = 168
+ SYS_SETRESGID = 169
+ SYS_GETRESGID = 170
+ SYS_PRCTL = 171
+ SYS_RT_SIGRETURN = 172
+ SYS_RT_SIGACTION = 173
+ SYS_RT_SIGPROCMASK = 174
+ SYS_RT_SIGPENDING = 175
+ SYS_RT_SIGTIMEDWAIT = 176
+ SYS_RT_SIGQUEUEINFO = 177
+ SYS_RT_SIGSUSPEND = 178
+ SYS_PREAD64 = 179
+ SYS_PWRITE64 = 180
+ SYS_CHOWN = 181
+ SYS_GETCWD = 182
+ SYS_CAPGET = 183
+ SYS_CAPSET = 184
+ SYS_SIGALTSTACK = 185
+ SYS_SENDFILE = 186
+ SYS_GETPMSG = 187
+ SYS_PUTPMSG = 188
+ SYS_VFORK = 189
+ SYS_UGETRLIMIT = 190
+ SYS_READAHEAD = 191
+ SYS_PCICONFIG_READ = 198
+ SYS_PCICONFIG_WRITE = 199
+ SYS_PCICONFIG_IOBASE = 200
+ SYS_MULTIPLEXER = 201
+ SYS_GETDENTS64 = 202
+ SYS_PIVOT_ROOT = 203
+ SYS_MADVISE = 205
+ SYS_MINCORE = 206
+ SYS_GETTID = 207
+ SYS_TKILL = 208
+ SYS_SETXATTR = 209
+ SYS_LSETXATTR = 210
+ SYS_FSETXATTR = 211
+ SYS_GETXATTR = 212
+ SYS_LGETXATTR = 213
+ SYS_FGETXATTR = 214
+ SYS_LISTXATTR = 215
+ SYS_LLISTXATTR = 216
+ SYS_FLISTXATTR = 217
+ SYS_REMOVEXATTR = 218
+ SYS_LREMOVEXATTR = 219
+ SYS_FREMOVEXATTR = 220
+ SYS_FUTEX = 221
+ SYS_SCHED_SETAFFINITY = 222
+ SYS_SCHED_GETAFFINITY = 223
+ SYS_TUXCALL = 225
+ SYS_IO_SETUP = 227
+ SYS_IO_DESTROY = 228
+ SYS_IO_GETEVENTS = 229
+ SYS_IO_SUBMIT = 230
+ SYS_IO_CANCEL = 231
+ SYS_SET_TID_ADDRESS = 232
+ SYS_FADVISE64 = 233
+ SYS_EXIT_GROUP = 234
+ SYS_LOOKUP_DCOOKIE = 235
+ SYS_EPOLL_CREATE = 236
+ SYS_EPOLL_CTL = 237
+ SYS_EPOLL_WAIT = 238
+ SYS_REMAP_FILE_PAGES = 239
+ SYS_TIMER_CREATE = 240
+ SYS_TIMER_SETTIME = 241
+ SYS_TIMER_GETTIME = 242
+ SYS_TIMER_GETOVERRUN = 243
+ SYS_TIMER_DELETE = 244
+ SYS_CLOCK_SETTIME = 245
+ SYS_CLOCK_GETTIME = 246
+ SYS_CLOCK_GETRES = 247
+ SYS_CLOCK_NANOSLEEP = 248
+ SYS_SWAPCONTEXT = 249
+ SYS_TGKILL = 250
+ SYS_UTIMES = 251
+ SYS_STATFS64 = 252
+ SYS_FSTATFS64 = 253
+ SYS_RTAS = 255
+ SYS_SYS_DEBUG_SETCONTEXT = 256
+ SYS_MIGRATE_PAGES = 258
+ SYS_MBIND = 259
+ SYS_GET_MEMPOLICY = 260
+ SYS_SET_MEMPOLICY = 261
+ SYS_MQ_OPEN = 262
+ SYS_MQ_UNLINK = 263
+ SYS_MQ_TIMEDSEND = 264
+ SYS_MQ_TIMEDRECEIVE = 265
+ SYS_MQ_NOTIFY = 266
+ SYS_MQ_GETSETATTR = 267
+ SYS_KEXEC_LOAD = 268
+ SYS_ADD_KEY = 269
+ SYS_REQUEST_KEY = 270
+ SYS_KEYCTL = 271
+ SYS_WAITID = 272
+ SYS_IOPRIO_SET = 273
+ SYS_IOPRIO_GET = 274
+ SYS_INOTIFY_INIT = 275
+ SYS_INOTIFY_ADD_WATCH = 276
+ SYS_INOTIFY_RM_WATCH = 277
+ SYS_SPU_RUN = 278
+ SYS_SPU_CREATE = 279
+ SYS_PSELECT6 = 280
+ SYS_PPOLL = 281
+ SYS_UNSHARE = 282
+ SYS_SPLICE = 283
+ SYS_TEE = 284
+ SYS_VMSPLICE = 285
+ SYS_OPENAT = 286
+ SYS_MKDIRAT = 287
+ SYS_MKNODAT = 288
+ SYS_FCHOWNAT = 289
+ SYS_FUTIMESAT = 290
+ SYS_NEWFSTATAT = 291
+ SYS_UNLINKAT = 292
+ SYS_RENAMEAT = 293
+ SYS_LINKAT = 294
+ SYS_SYMLINKAT = 295
+ SYS_READLINKAT = 296
+ SYS_FCHMODAT = 297
+ SYS_FACCESSAT = 298
+ SYS_GET_ROBUST_LIST = 299
+ SYS_SET_ROBUST_LIST = 300
+ SYS_MOVE_PAGES = 301
+ SYS_GETCPU = 302
+ SYS_EPOLL_PWAIT = 303
+ SYS_UTIMENSAT = 304
+ SYS_SIGNALFD = 305
+ SYS_TIMERFD_CREATE = 306
+ SYS_EVENTFD = 307
+ SYS_SYNC_FILE_RANGE2 = 308
+ SYS_FALLOCATE = 309
+ SYS_SUBPAGE_PROT = 310
+ SYS_TIMERFD_SETTIME = 311
+ SYS_TIMERFD_GETTIME = 312
+ SYS_SIGNALFD4 = 313
+ SYS_EVENTFD2 = 314
+ SYS_EPOLL_CREATE1 = 315
+ SYS_DUP3 = 316
+ SYS_PIPE2 = 317
+ SYS_INOTIFY_INIT1 = 318
+ SYS_PERF_EVENT_OPEN = 319
+ SYS_PREADV = 320
+ SYS_PWRITEV = 321
+ SYS_RT_TGSIGQUEUEINFO = 322
+ SYS_FANOTIFY_INIT = 323
+ SYS_FANOTIFY_MARK = 324
+ SYS_PRLIMIT64 = 325
+ SYS_SOCKET = 326
+ SYS_BIND = 327
+ SYS_CONNECT = 328
+ SYS_LISTEN = 329
+ SYS_ACCEPT = 330
+ SYS_GETSOCKNAME = 331
+ SYS_GETPEERNAME = 332
+ SYS_SOCKETPAIR = 333
+ SYS_SEND = 334
+ SYS_SENDTO = 335
+ SYS_RECV = 336
+ SYS_RECVFROM = 337
+ SYS_SHUTDOWN = 338
+ SYS_SETSOCKOPT = 339
+ SYS_GETSOCKOPT = 340
+ SYS_SENDMSG = 341
+ SYS_RECVMSG = 342
+ SYS_RECVMMSG = 343
+ SYS_ACCEPT4 = 344
+ SYS_NAME_TO_HANDLE_AT = 345
+ SYS_OPEN_BY_HANDLE_AT = 346
+ SYS_CLOCK_ADJTIME = 347
+ SYS_SYNCFS = 348
+ SYS_SENDMMSG = 349
+ SYS_SETNS = 350
+ SYS_PROCESS_VM_READV = 351
+ SYS_PROCESS_VM_WRITEV = 352
+ SYS_FINIT_MODULE = 353
+ SYS_KCMP = 354
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_386.go
new file mode 100644
index 000000000..f60d8f988
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_386.go
@@ -0,0 +1,273 @@
+// mksysnum_netbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,netbsd
+
+package unix
+
+const (
+ SYS_EXIT = 1 // { void|sys||exit(int rval); }
+ SYS_FORK = 2 // { int|sys||fork(void); }
+ SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }
+ SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); }
+ SYS_CLOSE = 6 // { int|sys||close(int fd); }
+ SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); }
+ SYS_UNLINK = 10 // { int|sys||unlink(const char *path); }
+ SYS_CHDIR = 12 // { int|sys||chdir(const char *path); }
+ SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); }
+ SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); }
+ SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }
+ SYS_BREAK = 17 // { int|sys||obreak(char *nsize); }
+ SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); }
+ SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); }
+ SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); }
+ SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); }
+ SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }
+ SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }
+ SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
+ SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }
+ SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
+ SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
+ SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); }
+ SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); }
+ SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); }
+ SYS_SYNC = 36 // { void|sys||sync(void); }
+ SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t|sys||getppid(void); }
+ SYS_DUP = 41 // { int|sys||dup(int fd); }
+ SYS_PIPE = 42 // { int|sys||pipe(void); }
+ SYS_GETEGID = 43 // { gid_t|sys||getegid(void); }
+ SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }
+ SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }
+ SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); }
+ SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); }
+ SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); }
+ SYS_ACCT = 51 // { int|sys||acct(const char *path); }
+ SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); }
+ SYS_REVOKE = 56 // { int|sys||revoke(const char *path); }
+ SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); }
+ SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }
+ SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }
+ SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); }
+ SYS_CHROOT = 61 // { int|sys||chroot(const char *path); }
+ SYS_VFORK = 66 // { int|sys||vfork(void); }
+ SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); }
+ SYS_SSTK = 70 // { int|sys||sstk(int incr); }
+ SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); }
+ SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); }
+ SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); }
+ SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); }
+ SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }
+ SYS_GETPGRP = 81 // { int|sys||getpgrp(void); }
+ SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); }
+ SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); }
+ SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); }
+ SYS_FSYNC = 95 // { int|sys||fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); }
+ SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }
+ SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); }
+ SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }
+ SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
+ SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); }
+ SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
+ SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }
+ SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }
+ SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }
+ SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); }
+ SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }
+ SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }
+ SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); }
+ SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }
+ SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
+ SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }
+ SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); }
+ SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); }
+ SYS_SETSID = 147 // { int|sys||setsid(void); }
+ SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); }
+ SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }
+ SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }
+ SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); }
+ SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }
+ SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }
+ SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }
+ SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }
+ SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }
+ SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }
+ SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }
+ SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); }
+ SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); }
+ SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); }
+ SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); }
+ SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }
+ SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }
+ SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }
+ SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); }
+ SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
+ SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+ SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }
+ SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); }
+ SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }
+ SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }
+ SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); }
+ SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); }
+ SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); }
+ SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); }
+ SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); }
+ SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }
+ SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); }
+ SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); }
+ SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }
+ SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }
+ SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); }
+ SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }
+ SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }
+ SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); }
+ SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); }
+ SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }
+ SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+ SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+ SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); }
+ SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); }
+ SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); }
+ SYS_ISSETUGID = 305 // { int|sys||issetugid(void); }
+ SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }
+ SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); }
+ SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }
+ SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }
+ SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); }
+ SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); }
+ SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }
+ SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); }
+ SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); }
+ SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }
+ SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); }
+ SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); }
+ SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }
+ SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); }
+ SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }
+ SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }
+ SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }
+ SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }
+ SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }
+ SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }
+ SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }
+ SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }
+ SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }
+ SYS_KQUEUE = 344 // { int|sys||kqueue(void); }
+ SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }
+ SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }
+ SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }
+ SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }
+ SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); }
+ SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }
+ SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); }
+ SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }
+ SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }
+ SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }
+ SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
+ SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }
+ SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }
+ SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+ SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+ SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }
+ SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }
+ SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }
+ SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }
+ SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }
+ SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }
+ SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }
+ SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); }
+ SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); }
+ SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); }
+ SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }
+ SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); }
+ SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }
+ SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }
+ SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }
+ SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); }
+ SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); }
+ SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }
+ SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }
+ SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }
+ SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+ SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }
+ SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }
+ SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }
+ SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }
+ SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }
+ SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }
+ SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
+ SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }
+ SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }
+ SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }
+ SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }
+ SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
+ SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }
+ SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }
+ SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }
+ SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
+ SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
+ SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }
+ SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }
+ SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }
+ SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }
+ SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+ SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+ SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }
+ SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
+ SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }
+ SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }
+ SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
+ SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }
+ SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }
+ SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); }
+ SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); }
+ SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); }
+ SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }
+ SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }
+ SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }
+ SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }
+ SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }
+ SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }
+ SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }
+ SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }
+ SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }
+ SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }
+ SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }
+ SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }
+ SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }
+ SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }
+ SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }
+ SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }
+ SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }
+ SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }
+ SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }
+ SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }
+ SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
new file mode 100644
index 000000000..48a91d464
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
@@ -0,0 +1,273 @@
+// mksysnum_netbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,netbsd
+
+package unix
+
+const (
+ SYS_EXIT = 1 // { void|sys||exit(int rval); }
+ SYS_FORK = 2 // { int|sys||fork(void); }
+ SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }
+ SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); }
+ SYS_CLOSE = 6 // { int|sys||close(int fd); }
+ SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); }
+ SYS_UNLINK = 10 // { int|sys||unlink(const char *path); }
+ SYS_CHDIR = 12 // { int|sys||chdir(const char *path); }
+ SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); }
+ SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); }
+ SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }
+ SYS_BREAK = 17 // { int|sys||obreak(char *nsize); }
+ SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); }
+ SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); }
+ SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); }
+ SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); }
+ SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }
+ SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }
+ SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
+ SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }
+ SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
+ SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
+ SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); }
+ SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); }
+ SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); }
+ SYS_SYNC = 36 // { void|sys||sync(void); }
+ SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t|sys||getppid(void); }
+ SYS_DUP = 41 // { int|sys||dup(int fd); }
+ SYS_PIPE = 42 // { int|sys||pipe(void); }
+ SYS_GETEGID = 43 // { gid_t|sys||getegid(void); }
+ SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }
+ SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }
+ SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); }
+ SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); }
+ SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); }
+ SYS_ACCT = 51 // { int|sys||acct(const char *path); }
+ SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); }
+ SYS_REVOKE = 56 // { int|sys||revoke(const char *path); }
+ SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); }
+ SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }
+ SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }
+ SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); }
+ SYS_CHROOT = 61 // { int|sys||chroot(const char *path); }
+ SYS_VFORK = 66 // { int|sys||vfork(void); }
+ SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); }
+ SYS_SSTK = 70 // { int|sys||sstk(int incr); }
+ SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); }
+ SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); }
+ SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); }
+ SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); }
+ SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }
+ SYS_GETPGRP = 81 // { int|sys||getpgrp(void); }
+ SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); }
+ SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); }
+ SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); }
+ SYS_FSYNC = 95 // { int|sys||fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); }
+ SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }
+ SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); }
+ SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }
+ SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
+ SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); }
+ SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
+ SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }
+ SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }
+ SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }
+ SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); }
+ SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }
+ SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }
+ SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); }
+ SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }
+ SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
+ SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }
+ SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); }
+ SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); }
+ SYS_SETSID = 147 // { int|sys||setsid(void); }
+ SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); }
+ SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }
+ SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }
+ SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); }
+ SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }
+ SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }
+ SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }
+ SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }
+ SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }
+ SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }
+ SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }
+ SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); }
+ SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); }
+ SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); }
+ SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); }
+ SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }
+ SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }
+ SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }
+ SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); }
+ SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
+ SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+ SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }
+ SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); }
+ SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }
+ SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }
+ SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); }
+ SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); }
+ SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); }
+ SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); }
+ SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); }
+ SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }
+ SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); }
+ SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); }
+ SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }
+ SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }
+ SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); }
+ SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }
+ SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }
+ SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); }
+ SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); }
+ SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }
+ SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+ SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+ SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); }
+ SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); }
+ SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); }
+ SYS_ISSETUGID = 305 // { int|sys||issetugid(void); }
+ SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }
+ SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); }
+ SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }
+ SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }
+ SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); }
+ SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); }
+ SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }
+ SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); }
+ SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); }
+ SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }
+ SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); }
+ SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); }
+ SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }
+ SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); }
+ SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }
+ SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }
+ SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }
+ SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }
+ SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }
+ SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }
+ SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }
+ SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }
+ SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }
+ SYS_KQUEUE = 344 // { int|sys||kqueue(void); }
+ SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }
+ SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }
+ SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }
+ SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }
+ SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); }
+ SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }
+ SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); }
+ SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }
+ SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }
+ SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }
+ SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
+ SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }
+ SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }
+ SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+ SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+ SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }
+ SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }
+ SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }
+ SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }
+ SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }
+ SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }
+ SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }
+ SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); }
+ SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); }
+ SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); }
+ SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }
+ SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); }
+ SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }
+ SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }
+ SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }
+ SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); }
+ SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); }
+ SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }
+ SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }
+ SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }
+ SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+ SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }
+ SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }
+ SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }
+ SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }
+ SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }
+ SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }
+ SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
+ SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }
+ SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }
+ SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }
+ SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }
+ SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
+ SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }
+ SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }
+ SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }
+ SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
+ SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
+ SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }
+ SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }
+ SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }
+ SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }
+ SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+ SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+ SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }
+ SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
+ SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }
+ SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }
+ SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
+ SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }
+ SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }
+ SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); }
+ SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); }
+ SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); }
+ SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }
+ SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }
+ SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }
+ SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }
+ SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }
+ SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }
+ SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }
+ SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }
+ SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }
+ SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }
+ SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }
+ SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }
+ SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }
+ SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }
+ SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }
+ SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }
+ SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }
+ SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }
+ SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }
+ SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }
+ SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
new file mode 100644
index 000000000..612ba662c
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
@@ -0,0 +1,273 @@
+// mksysnum_netbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm,netbsd
+
+package unix
+
+const (
+ SYS_EXIT = 1 // { void|sys||exit(int rval); }
+ SYS_FORK = 2 // { int|sys||fork(void); }
+ SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }
+ SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); }
+ SYS_CLOSE = 6 // { int|sys||close(int fd); }
+ SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); }
+ SYS_UNLINK = 10 // { int|sys||unlink(const char *path); }
+ SYS_CHDIR = 12 // { int|sys||chdir(const char *path); }
+ SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); }
+ SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); }
+ SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }
+ SYS_BREAK = 17 // { int|sys||obreak(char *nsize); }
+ SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); }
+ SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); }
+ SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); }
+ SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); }
+ SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }
+ SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }
+ SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }
+ SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
+ SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }
+ SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
+ SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
+ SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); }
+ SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); }
+ SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); }
+ SYS_SYNC = 36 // { void|sys||sync(void); }
+ SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); }
+ SYS_GETPPID = 39 // { pid_t|sys||getppid(void); }
+ SYS_DUP = 41 // { int|sys||dup(int fd); }
+ SYS_PIPE = 42 // { int|sys||pipe(void); }
+ SYS_GETEGID = 43 // { gid_t|sys||getegid(void); }
+ SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }
+ SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }
+ SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); }
+ SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); }
+ SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); }
+ SYS_ACCT = 51 // { int|sys||acct(const char *path); }
+ SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); }
+ SYS_REVOKE = 56 // { int|sys||revoke(const char *path); }
+ SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); }
+ SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }
+ SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }
+ SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); }
+ SYS_CHROOT = 61 // { int|sys||chroot(const char *path); }
+ SYS_VFORK = 66 // { int|sys||vfork(void); }
+ SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); }
+ SYS_SSTK = 70 // { int|sys||sstk(int incr); }
+ SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); }
+ SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); }
+ SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); }
+ SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); }
+ SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }
+ SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }
+ SYS_GETPGRP = 81 // { int|sys||getpgrp(void); }
+ SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); }
+ SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); }
+ SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); }
+ SYS_FSYNC = 95 // { int|sys||fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); }
+ SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }
+ SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); }
+ SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }
+ SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
+ SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); }
+ SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
+ SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }
+ SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }
+ SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }
+ SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); }
+ SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }
+ SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }
+ SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); }
+ SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }
+ SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
+ SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }
+ SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); }
+ SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); }
+ SYS_SETSID = 147 // { int|sys||setsid(void); }
+ SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); }
+ SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }
+ SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }
+ SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); }
+ SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); }
+ SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); }
+ SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }
+ SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }
+ SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }
+ SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }
+ SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }
+ SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }
+ SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }
+ SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); }
+ SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); }
+ SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); }
+ SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); }
+ SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }
+ SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }
+ SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }
+ SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); }
+ SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
+ SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+ SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }
+ SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); }
+ SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }
+ SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }
+ SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); }
+ SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); }
+ SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); }
+ SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); }
+ SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); }
+ SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }
+ SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); }
+ SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); }
+ SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }
+ SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }
+ SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); }
+ SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }
+ SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }
+ SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); }
+ SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); }
+ SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }
+ SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+ SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+ SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); }
+ SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); }
+ SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); }
+ SYS_ISSETUGID = 305 // { int|sys||issetugid(void); }
+ SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }
+ SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); }
+ SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }
+ SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }
+ SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); }
+ SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); }
+ SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }
+ SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); }
+ SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); }
+ SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }
+ SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); }
+ SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); }
+ SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }
+ SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); }
+ SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }
+ SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }
+ SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }
+ SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }
+ SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }
+ SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }
+ SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }
+ SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }
+ SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }
+ SYS_KQUEUE = 344 // { int|sys||kqueue(void); }
+ SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }
+ SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }
+ SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }
+ SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }
+ SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); }
+ SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }
+ SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); }
+ SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }
+ SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }
+ SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }
+ SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+ SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+ SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }
+ SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
+ SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }
+ SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }
+ SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+ SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+ SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }
+ SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }
+ SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }
+ SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }
+ SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }
+ SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }
+ SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }
+ SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); }
+ SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); }
+ SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); }
+ SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }
+ SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); }
+ SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }
+ SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }
+ SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }
+ SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); }
+ SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); }
+ SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }
+ SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }
+ SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }
+ SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+ SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }
+ SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }
+ SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }
+ SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }
+ SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }
+ SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }
+ SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
+ SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }
+ SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }
+ SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }
+ SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }
+ SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
+ SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }
+ SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }
+ SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }
+ SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
+ SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
+ SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }
+ SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }
+ SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }
+ SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }
+ SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+ SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+ SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }
+ SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
+ SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }
+ SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }
+ SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
+ SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }
+ SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }
+ SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); }
+ SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); }
+ SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); }
+ SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }
+ SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }
+ SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }
+ SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }
+ SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }
+ SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }
+ SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }
+ SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }
+ SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }
+ SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }
+ SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }
+ SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }
+ SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }
+ SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }
+ SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }
+ SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }
+ SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }
+ SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }
+ SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }
+ SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }
+ SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_openbsd_386.go
new file mode 100644
index 000000000..3e8ce2a1d
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_openbsd_386.go
@@ -0,0 +1,207 @@
+// mksysnum_openbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,openbsd
+
+package unix
+
+const (
+ SYS_EXIT = 1 // { void sys_exit(int rval); }
+ SYS_FORK = 2 // { int sys_fork(void); }
+ SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \
+ SYS_OPEN = 5 // { int sys_open(const char *path, \
+ SYS_CLOSE = 6 // { int sys_close(int fd); }
+ SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \
+ SYS_LINK = 9 // { int sys_link(const char *path, const char *link); }
+ SYS_UNLINK = 10 // { int sys_unlink(const char *path); }
+ SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, \
+ SYS_CHDIR = 12 // { int sys_chdir(const char *path); }
+ SYS_FCHDIR = 13 // { int sys_fchdir(int fd); }
+ SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, \
+ SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); }
+ SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, \
+ SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break
+ SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); }
+ SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, \
+ SYS_GETPID = 20 // { pid_t sys_getpid(void); }
+ SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, \
+ SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); }
+ SYS_SETUID = 23 // { int sys_setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t sys_getuid(void); }
+ SYS_GETEUID = 25 // { uid_t sys_geteuid(void); }
+ SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
+ SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
+ SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, \
+ SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
+ SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \
+ SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \
+ SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \
+ SYS_ACCESS = 33 // { int sys_access(const char *path, int flags); }
+ SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); }
+ SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); }
+ SYS_SYNC = 36 // { void sys_sync(void); }
+ SYS_KILL = 37 // { int sys_kill(int pid, int signum); }
+ SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); }
+ SYS_GETPPID = 39 // { pid_t sys_getppid(void); }
+ SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); }
+ SYS_DUP = 41 // { int sys_dup(int fd); }
+ SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, \
+ SYS_GETEGID = 43 // { gid_t sys_getegid(void); }
+ SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, \
+ SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, \
+ SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \
+ SYS_GETGID = 47 // { gid_t sys_getgid(void); }
+ SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); }
+ SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); }
+ SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); }
+ SYS_ACCT = 51 // { int sys_acct(const char *path); }
+ SYS_SIGPENDING = 52 // { int sys_sigpending(void); }
+ SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); }
+ SYS_IOCTL = 54 // { int sys_ioctl(int fd, \
+ SYS_REBOOT = 55 // { int sys_reboot(int opt); }
+ SYS_REVOKE = 56 // { int sys_revoke(const char *path); }
+ SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \
+ SYS_READLINK = 58 // { int sys_readlink(const char *path, char *buf, \
+ SYS_EXECVE = 59 // { int sys_execve(const char *path, \
+ SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); }
+ SYS_CHROOT = 61 // { int sys_chroot(const char *path); }
+ SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
+ SYS_STATFS = 63 // { int sys_statfs(const char *path, \
+ SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); }
+ SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, \
+ SYS_VFORK = 66 // { int sys_vfork(void); }
+ SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, \
+ SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, \
+ SYS_SETITIMER = 69 // { int sys_setitimer(int which, \
+ SYS_GETITIMER = 70 // { int sys_getitimer(int which, \
+ SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, \
+ SYS_KEVENT = 72 // { int sys_kevent(int fd, \
+ SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, \
+ SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, \
+ SYS_UTIMES = 76 // { int sys_utimes(const char *path, \
+ SYS_FUTIMES = 77 // { int sys_futimes(int fd, \
+ SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, \
+ SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \
+ SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \
+ SYS_GETPGRP = 81 // { int sys_getpgrp(void); }
+ SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, int pgid); }
+ SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \
+ SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \
+ SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \
+ SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \
+ SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \
+ SYS_DUP2 = 90 // { int sys_dup2(int from, int to); }
+ SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \
+ SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); }
+ SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \
+ SYS_FSYNC = 95 // { int sys_fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); }
+ SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); }
+ SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \
+ SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); }
+ SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); }
+ SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
+ SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \
+ SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \
+ SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); }
+ SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \
+ SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
+ SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); }
+ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \
+ SYS_READV = 120 // { ssize_t sys_readv(int fd, \
+ SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \
+ SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
+ SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); }
+ SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }
+ SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }
+ SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); }
+ SYS_FLOCK = 131 // { int sys_flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
+ SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, \
+ SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, \
+ SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); }
+ SYS_RMDIR = 137 // { int sys_rmdir(const char *path); }
+ SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \
+ SYS_SETSID = 147 // { int sys_setsid(void); }
+ SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \
+ SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); }
+ SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
+ SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); }
+ SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, \
+ SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
+ SYS_SETGID = 181 // { int sys_setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); }
+ SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); }
+ SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
+ SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, \
+ SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, \
+ SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
+ SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
+ SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \
+ SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
+ SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \
+ SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); }
+ SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); }
+ SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, \
+ SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
+ SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
+ SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
+ SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
+ SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); }
+ SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, \
+ SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, \
+ SYS_ISSETUGID = 253 // { int sys_issetugid(void); }
+ SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); }
+ SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); }
+ SYS_PIPE = 263 // { int sys_pipe(int *fdp); }
+ SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
+ SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, \
+ SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, \
+ SYS_KQUEUE = 269 // { int sys_kqueue(void); }
+ SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); }
+ SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); }
+ SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
+ SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
+ SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
+ SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
+ SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
+ SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); }
+ SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
+ SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
+ SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, \
+ SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, \
+ SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
+ SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, \
+ SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, \
+ SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); }
+ SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); }
+ SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, \
+ SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); }
+ SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
+ SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); }
+ SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, \
+ SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); }
+ SYS_GETRTABLE = 311 // { int sys_getrtable(void); }
+ SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, \
+ SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, \
+ SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, \
+ SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
+ SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, \
+ SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, \
+ SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, \
+ SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, \
+ SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
+ SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, \
+ SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, \
+ SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, \
+ SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); }
+ SYS___GET_TCB = 330 // { void *sys___get_tcb(void); }
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
new file mode 100644
index 000000000..bd28146dd
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
@@ -0,0 +1,207 @@
+// mksysnum_openbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,openbsd
+
+package unix
+
+const (
+ SYS_EXIT = 1 // { void sys_exit(int rval); }
+ SYS_FORK = 2 // { int sys_fork(void); }
+ SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
+ SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \
+ SYS_OPEN = 5 // { int sys_open(const char *path, \
+ SYS_CLOSE = 6 // { int sys_close(int fd); }
+ SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \
+ SYS_LINK = 9 // { int sys_link(const char *path, const char *link); }
+ SYS_UNLINK = 10 // { int sys_unlink(const char *path); }
+ SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, \
+ SYS_CHDIR = 12 // { int sys_chdir(const char *path); }
+ SYS_FCHDIR = 13 // { int sys_fchdir(int fd); }
+ SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, \
+ SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); }
+ SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, \
+ SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break
+ SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); }
+ SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, \
+ SYS_GETPID = 20 // { pid_t sys_getpid(void); }
+ SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, \
+ SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); }
+ SYS_SETUID = 23 // { int sys_setuid(uid_t uid); }
+ SYS_GETUID = 24 // { uid_t sys_getuid(void); }
+ SYS_GETEUID = 25 // { uid_t sys_geteuid(void); }
+ SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
+ SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
+ SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, \
+ SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
+ SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \
+ SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \
+ SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \
+ SYS_ACCESS = 33 // { int sys_access(const char *path, int flags); }
+ SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); }
+ SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); }
+ SYS_SYNC = 36 // { void sys_sync(void); }
+ SYS_KILL = 37 // { int sys_kill(int pid, int signum); }
+ SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); }
+ SYS_GETPPID = 39 // { pid_t sys_getppid(void); }
+ SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); }
+ SYS_DUP = 41 // { int sys_dup(int fd); }
+ SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, \
+ SYS_GETEGID = 43 // { gid_t sys_getegid(void); }
+ SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, \
+ SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, \
+ SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \
+ SYS_GETGID = 47 // { gid_t sys_getgid(void); }
+ SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); }
+ SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); }
+ SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); }
+ SYS_ACCT = 51 // { int sys_acct(const char *path); }
+ SYS_SIGPENDING = 52 // { int sys_sigpending(void); }
+ SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); }
+ SYS_IOCTL = 54 // { int sys_ioctl(int fd, \
+ SYS_REBOOT = 55 // { int sys_reboot(int opt); }
+ SYS_REVOKE = 56 // { int sys_revoke(const char *path); }
+ SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \
+ SYS_READLINK = 58 // { int sys_readlink(const char *path, char *buf, \
+ SYS_EXECVE = 59 // { int sys_execve(const char *path, \
+ SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); }
+ SYS_CHROOT = 61 // { int sys_chroot(const char *path); }
+ SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
+ SYS_STATFS = 63 // { int sys_statfs(const char *path, \
+ SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); }
+ SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, \
+ SYS_VFORK = 66 // { int sys_vfork(void); }
+ SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, \
+ SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, \
+ SYS_SETITIMER = 69 // { int sys_setitimer(int which, \
+ SYS_GETITIMER = 70 // { int sys_getitimer(int which, \
+ SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, \
+ SYS_KEVENT = 72 // { int sys_kevent(int fd, \
+ SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); }
+ SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, \
+ SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, \
+ SYS_UTIMES = 76 // { int sys_utimes(const char *path, \
+ SYS_FUTIMES = 77 // { int sys_futimes(int fd, \
+ SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, \
+ SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \
+ SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \
+ SYS_GETPGRP = 81 // { int sys_getpgrp(void); }
+ SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, int pgid); }
+ SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \
+ SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \
+ SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \
+ SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \
+ SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \
+ SYS_DUP2 = 90 // { int sys_dup2(int from, int to); }
+ SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \
+ SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); }
+ SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \
+ SYS_FSYNC = 95 // { int sys_fsync(int fd); }
+ SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); }
+ SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); }
+ SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \
+ SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); }
+ SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); }
+ SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
+ SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \
+ SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \
+ SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); }
+ SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \
+ SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
+ SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); }
+ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \
+ SYS_READV = 120 // { ssize_t sys_readv(int fd, \
+ SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \
+ SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
+ SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); }
+ SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }
+ SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }
+ SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); }
+ SYS_FLOCK = 131 // { int sys_flock(int fd, int how); }
+ SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
+ SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, \
+ SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); }
+ SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, \
+ SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); }
+ SYS_RMDIR = 137 // { int sys_rmdir(const char *path); }
+ SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \
+ SYS_SETSID = 147 // { int sys_setsid(void); }
+ SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \
+ SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); }
+ SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
+ SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); }
+ SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, \
+ SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
+ SYS_SETGID = 181 // { int sys_setgid(gid_t gid); }
+ SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); }
+ SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); }
+ SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); }
+ SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); }
+ SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
+ SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, \
+ SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, \
+ SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
+ SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
+ SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \
+ SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
+ SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \
+ SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); }
+ SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); }
+ SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); }
+ SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, \
+ SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
+ SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); }
+ SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
+ SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
+ SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
+ SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); }
+ SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, \
+ SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, \
+ SYS_ISSETUGID = 253 // { int sys_issetugid(void); }
+ SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
+ SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); }
+ SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); }
+ SYS_PIPE = 263 // { int sys_pipe(int *fdp); }
+ SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
+ SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, \
+ SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, \
+ SYS_KQUEUE = 269 // { int sys_kqueue(void); }
+ SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); }
+ SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); }
+ SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
+ SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
+ SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
+ SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
+ SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
+ SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); }
+ SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
+ SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
+ SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, \
+ SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, \
+ SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
+ SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, \
+ SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, \
+ SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); }
+ SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); }
+ SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, \
+ SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); }
+ SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
+ SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); }
+ SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, \
+ SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); }
+ SYS_GETRTABLE = 311 // { int sys_getrtable(void); }
+ SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, \
+ SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, \
+ SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, \
+ SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
+ SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, \
+ SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, \
+ SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, \
+ SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, \
+ SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
+ SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, \
+ SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, \
+ SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, \
+ SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); }
+ SYS___GET_TCB = 330 // { void *sys___get_tcb(void); }
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_solaris_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
new file mode 100644
index 000000000..c70865985
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
@@ -0,0 +1,13 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build amd64,solaris
+
+package unix
+
+// TODO(aram): remove these before Go 1.3.
+const (
+ SYS_EXECVE = 59
+ SYS_FCNTL = 62
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_386.go
new file mode 100644
index 000000000..2de1d44e2
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_386.go
@@ -0,0 +1,447 @@
+// +build 386,darwin
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_darwin.go
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int32
+ Nsec int32
+}
+
+type Timeval struct {
+ Sec int32
+ Usec int32
+}
+
+type Timeval32 struct{}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev int32
+ Mode uint16
+ Nlink uint16
+ Ino uint64
+ Uid uint32
+ Gid uint32
+ Rdev int32
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Birthtimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize int32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Qspare [2]int64
+}
+
+type Statfs_t struct {
+ Bsize uint32
+ Iosize int32
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Owner uint32
+ Type uint32
+ Flags uint32
+ Fssubtype uint32
+ Fstypename [16]int8
+ Mntonname [1024]int8
+ Mntfromname [1024]int8
+ Reserved [8]uint32
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Fstore_t struct {
+ Flags uint32
+ Posmode int32
+ Offset int64
+ Length int64
+ Bytesalloc int64
+}
+
+type Radvisory_t struct {
+ Offset int64
+ Count int32
+}
+
+type Fbootstraptransfer_t struct {
+ Offset int64
+ Length uint32
+ Buffer *byte
+}
+
+type Log2phys_t struct {
+ Flags uint32
+ Contigbytes int64
+ Devoffset int64
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type Dirent struct {
+ Ino uint64
+ Seekoff uint64
+ Reclen uint16
+ Namlen uint16
+ Type uint8
+ Name [1024]int8
+ Pad_cgo_0 [3]byte
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet4Pktinfo struct {
+ Ifindex uint32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x14
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint32
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int32
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [32]int32
+}
+
+const (
+ SizeofIfMsghdr = 0x70
+ SizeofIfData = 0x60
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfmaMsghdr2 = 0x14
+ SizeofRtMsghdr = 0x5c
+ SizeofRtMetrics = 0x38
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Typelen uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Recvquota uint8
+ Xmitquota uint8
+ Unused1 uint8
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Recvtiming uint32
+ Xmittiming uint32
+ Lastchange Timeval
+ Unused2 uint32
+ Hwassist uint32
+ Reserved1 uint32
+ Reserved2 uint32
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfmaMsghdr2 struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Refcount int32
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint32
+ Mtu uint32
+ Hopcount uint32
+ Expire int32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pksent uint32
+ Filler [4]uint32
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x8
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_amd64.go
new file mode 100644
index 000000000..044657878
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_amd64.go
@@ -0,0 +1,462 @@
+// +build amd64,darwin
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_darwin.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int32
+ Pad_cgo_0 [4]byte
+}
+
+type Timeval32 struct {
+ Sec int32
+ Usec int32
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev int32
+ Mode uint16
+ Nlink uint16
+ Ino uint64
+ Uid uint32
+ Gid uint32
+ Rdev int32
+ Pad_cgo_0 [4]byte
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Birthtimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize int32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Qspare [2]int64
+}
+
+type Statfs_t struct {
+ Bsize uint32
+ Iosize int32
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Owner uint32
+ Type uint32
+ Flags uint32
+ Fssubtype uint32
+ Fstypename [16]int8
+ Mntonname [1024]int8
+ Mntfromname [1024]int8
+ Reserved [8]uint32
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Fstore_t struct {
+ Flags uint32
+ Posmode int32
+ Offset int64
+ Length int64
+ Bytesalloc int64
+}
+
+type Radvisory_t struct {
+ Offset int64
+ Count int32
+ Pad_cgo_0 [4]byte
+}
+
+type Fbootstraptransfer_t struct {
+ Offset int64
+ Length uint64
+ Buffer *byte
+}
+
+type Log2phys_t struct {
+ Flags uint32
+ Pad_cgo_0 [8]byte
+ Pad_cgo_1 [8]byte
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type Dirent struct {
+ Ino uint64
+ Seekoff uint64
+ Reclen uint16
+ Namlen uint16
+ Type uint8
+ Name [1024]int8
+ Pad_cgo_0 [3]byte
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet4Pktinfo struct {
+ Ifindex uint32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x14
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x30
+ SizeofCmsghdr = 0xc
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint64
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int64
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [32]int32
+}
+
+const (
+ SizeofIfMsghdr = 0x70
+ SizeofIfData = 0x60
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfmaMsghdr2 = 0x14
+ SizeofRtMsghdr = 0x5c
+ SizeofRtMetrics = 0x38
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Typelen uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Recvquota uint8
+ Xmitquota uint8
+ Unused1 uint8
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Recvtiming uint32
+ Xmittiming uint32
+ Lastchange Timeval32
+ Unused2 uint32
+ Hwassist uint32
+ Reserved1 uint32
+ Reserved2 uint32
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfmaMsghdr2 struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Refcount int32
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint32
+ Mtu uint32
+ Hopcount uint32
+ Expire int32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pksent uint32
+ Filler [4]uint32
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x10
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Pad_cgo_0 [4]byte
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval32
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+ Iflag uint64
+ Oflag uint64
+ Cflag uint64
+ Lflag uint64
+ Cc [20]uint8
+ Pad_cgo_0 [4]byte
+ Ispeed uint64
+ Ospeed uint64
+}
+
+const (
+ AT_FDCWD = -0x2
+ AT_SYMLINK_NOFOLLOW = 0x20
+)
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_arm.go
new file mode 100644
index 000000000..66df363ce
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_arm.go
@@ -0,0 +1,449 @@
+// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_darwin.go
+
+// +build arm,darwin
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int32
+ Nsec int32
+}
+
+type Timeval struct {
+ Sec int32
+ Usec int32
+}
+
+type Timeval32 [0]byte
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev int32
+ Mode uint16
+ Nlink uint16
+ Ino uint64
+ Uid uint32
+ Gid uint32
+ Rdev int32
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Birthtimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize int32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Qspare [2]int64
+}
+
+type Statfs_t struct {
+ Bsize uint32
+ Iosize int32
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Owner uint32
+ Type uint32
+ Flags uint32
+ Fssubtype uint32
+ Fstypename [16]int8
+ Mntonname [1024]int8
+ Mntfromname [1024]int8
+ Reserved [8]uint32
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Fstore_t struct {
+ Flags uint32
+ Posmode int32
+ Offset int64
+ Length int64
+ Bytesalloc int64
+}
+
+type Radvisory_t struct {
+ Offset int64
+ Count int32
+}
+
+type Fbootstraptransfer_t struct {
+ Offset int64
+ Length uint32
+ Buffer *byte
+}
+
+type Log2phys_t struct {
+ Flags uint32
+ Contigbytes int64
+ Devoffset int64
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type Dirent struct {
+ Ino uint64
+ Seekoff uint64
+ Reclen uint16
+ Namlen uint16
+ Type uint8
+ Name [1024]int8
+ Pad_cgo_0 [3]byte
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet4Pktinfo struct {
+ Ifindex uint32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x14
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint32
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int32
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [32]int32
+}
+
+const (
+ SizeofIfMsghdr = 0x70
+ SizeofIfData = 0x60
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfmaMsghdr2 = 0x14
+ SizeofRtMsghdr = 0x5c
+ SizeofRtMetrics = 0x38
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Typelen uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Recvquota uint8
+ Xmitquota uint8
+ Unused1 uint8
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Recvtiming uint32
+ Xmittiming uint32
+ Lastchange Timeval
+ Unused2 uint32
+ Hwassist uint32
+ Reserved1 uint32
+ Reserved2 uint32
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfmaMsghdr2 struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Refcount int32
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint32
+ Mtu uint32
+ Hopcount uint32
+ Expire int32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pksent uint32
+ Filler [4]uint32
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x8
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_arm64.go
new file mode 100644
index 000000000..85d56eabd
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_darwin_arm64.go
@@ -0,0 +1,457 @@
+// +build arm64,darwin
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_darwin.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int32
+ Pad_cgo_0 [4]byte
+}
+
+type Timeval32 struct {
+ Sec int32
+ Usec int32
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev int32
+ Mode uint16
+ Nlink uint16
+ Ino uint64
+ Uid uint32
+ Gid uint32
+ Rdev int32
+ Pad_cgo_0 [4]byte
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Birthtimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize int32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Qspare [2]int64
+}
+
+type Statfs_t struct {
+ Bsize uint32
+ Iosize int32
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Owner uint32
+ Type uint32
+ Flags uint32
+ Fssubtype uint32
+ Fstypename [16]int8
+ Mntonname [1024]int8
+ Mntfromname [1024]int8
+ Reserved [8]uint32
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Fstore_t struct {
+ Flags uint32
+ Posmode int32
+ Offset int64
+ Length int64
+ Bytesalloc int64
+}
+
+type Radvisory_t struct {
+ Offset int64
+ Count int32
+ Pad_cgo_0 [4]byte
+}
+
+type Fbootstraptransfer_t struct {
+ Offset int64
+ Length uint64
+ Buffer *byte
+}
+
+type Log2phys_t struct {
+ Flags uint32
+ Pad_cgo_0 [8]byte
+ Pad_cgo_1 [8]byte
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type Dirent struct {
+ Ino uint64
+ Seekoff uint64
+ Reclen uint16
+ Namlen uint16
+ Type uint8
+ Name [1024]int8
+ Pad_cgo_0 [3]byte
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet4Pktinfo struct {
+ Ifindex uint32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x14
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x30
+ SizeofCmsghdr = 0xc
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint64
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int64
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [32]int32
+}
+
+const (
+ SizeofIfMsghdr = 0x70
+ SizeofIfData = 0x60
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfmaMsghdr2 = 0x14
+ SizeofRtMsghdr = 0x5c
+ SizeofRtMetrics = 0x38
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Typelen uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Recvquota uint8
+ Xmitquota uint8
+ Unused1 uint8
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Recvtiming uint32
+ Xmittiming uint32
+ Lastchange Timeval32
+ Unused2 uint32
+ Hwassist uint32
+ Reserved1 uint32
+ Reserved2 uint32
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfmaMsghdr2 struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Refcount int32
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint32
+ Mtu uint32
+ Hopcount uint32
+ Expire int32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pksent uint32
+ Filler [4]uint32
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x10
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Pad_cgo_0 [4]byte
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval32
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+ Iflag uint64
+ Oflag uint64
+ Cflag uint64
+ Lflag uint64
+ Cc [20]uint8
+ Pad_cgo_0 [4]byte
+ Ispeed uint64
+ Ospeed uint64
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_386.go
new file mode 100644
index 000000000..b7e7ff088
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_386.go
@@ -0,0 +1,437 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_dragonfly.go
+
+// +build 386,dragonfly
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int32
+ Nsec int32
+}
+
+type Timeval struct {
+ Sec int32
+ Usec int32
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur int64
+ Max int64
+}
+
+type _Gid_t uint32
+
+const (
+ S_IFMT = 0xf000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+type Stat_t struct {
+ Ino uint64
+ Nlink uint32
+ Dev uint32
+ Mode uint16
+ Padding1 uint16
+ Uid uint32
+ Gid uint32
+ Rdev uint32
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Qspare1 int64
+ Qspare2 int64
+}
+
+type Statfs_t struct {
+ Spare2 int32
+ Bsize int32
+ Iosize int32
+ Blocks int32
+ Bfree int32
+ Bavail int32
+ Files int32
+ Ffree int32
+ Fsid Fsid
+ Owner uint32
+ Type int32
+ Flags int32
+ Syncwrites int32
+ Asyncwrites int32
+ Fstypename [16]int8
+ Mntonname [80]int8
+ Syncreads int32
+ Asyncreads int32
+ Spares1 int16
+ Mntfromname [80]int8
+ Spares2 int16
+ Spare [2]int32
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Dirent struct {
+ Fileno uint64
+ Namlen uint16
+ Type uint8
+ Unused1 uint8
+ Unused2 uint32
+ Name [256]int8
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+ Rcf uint16
+ Route [16]uint16
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x36
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint32
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int32
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [32]uint32
+}
+
+const (
+ SizeofIfMsghdr = 0x68
+ SizeofIfData = 0x58
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfAnnounceMsghdr = 0x18
+ SizeofRtMsghdr = 0x5c
+ SizeofRtMetrics = 0x38
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Recvquota uint8
+ Xmitquota uint8
+ Pad_cgo_0 [2]byte
+ Mtu uint32
+ Metric uint32
+ Link_state uint32
+ Baudrate uint64
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Hwassist uint32
+ Unused uint32
+ Lastchange Timeval
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Name [16]int8
+ What uint16
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint32
+ Mtu uint32
+ Pksent uint32
+ Expire uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Recvpipe uint32
+ Hopcount uint32
+ Mssopt uint16
+ Pad uint16
+ Msl uint32
+ Iwmaxsegs uint32
+ Iwcapsegs uint32
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x8
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
new file mode 100644
index 000000000..8a6f4e1ce
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
@@ -0,0 +1,443 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_dragonfly.go
+
+// +build amd64,dragonfly
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur int64
+ Max int64
+}
+
+type _Gid_t uint32
+
+const (
+ S_IFMT = 0xf000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+type Stat_t struct {
+ Ino uint64
+ Nlink uint32
+ Dev uint32
+ Mode uint16
+ Padding1 uint16
+ Uid uint32
+ Gid uint32
+ Rdev uint32
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Qspare1 int64
+ Qspare2 int64
+}
+
+type Statfs_t struct {
+ Spare2 int64
+ Bsize int64
+ Iosize int64
+ Blocks int64
+ Bfree int64
+ Bavail int64
+ Files int64
+ Ffree int64
+ Fsid Fsid
+ Owner uint32
+ Type int32
+ Flags int32
+ Pad_cgo_0 [4]byte
+ Syncwrites int64
+ Asyncwrites int64
+ Fstypename [16]int8
+ Mntonname [80]int8
+ Syncreads int64
+ Asyncreads int64
+ Spares1 int16
+ Mntfromname [80]int8
+ Spares2 int16
+ Pad_cgo_1 [4]byte
+ Spare [2]int64
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Dirent struct {
+ Fileno uint64
+ Namlen uint16
+ Type uint8
+ Unused1 uint8
+ Unused2 uint32
+ Name [256]int8
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+ Rcf uint16
+ Route [16]uint16
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x36
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x30
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint64
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int64
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [16]uint64
+}
+
+const (
+ SizeofIfMsghdr = 0xb0
+ SizeofIfData = 0xa0
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfAnnounceMsghdr = 0x18
+ SizeofRtMsghdr = 0x98
+ SizeofRtMetrics = 0x70
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Recvquota uint8
+ Xmitquota uint8
+ Pad_cgo_0 [2]byte
+ Mtu uint64
+ Metric uint64
+ Link_state uint64
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Noproto uint64
+ Hwassist uint64
+ Unused uint64
+ Lastchange Timeval
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Name [16]int8
+ What uint16
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits uint64
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint64
+ Mtu uint64
+ Pksent uint64
+ Expire uint64
+ Sendpipe uint64
+ Ssthresh uint64
+ Rtt uint64
+ Rttvar uint64
+ Recvpipe uint64
+ Hopcount uint64
+ Mssopt uint16
+ Pad uint16
+ Pad_cgo_0 [4]byte
+ Msl uint64
+ Iwmaxsegs uint64
+ Iwcapsegs uint64
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x10
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x20
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Pad_cgo_0 [4]byte
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [6]byte
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_386.go
new file mode 100644
index 000000000..8cf30947b
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_386.go
@@ -0,0 +1,502 @@
+// +build 386,freebsd
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_freebsd.go
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int32
+ Nsec int32
+}
+
+type Timeval struct {
+ Sec int32
+ Usec int32
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur int64
+ Max int64
+}
+
+type _Gid_t uint32
+
+const (
+ S_IFMT = 0xf000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+type Stat_t struct {
+ Dev uint32
+ Ino uint32
+ Mode uint16
+ Nlink uint16
+ Uid uint32
+ Gid uint32
+ Rdev uint32
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Birthtimespec Timespec
+ Pad_cgo_0 [8]byte
+}
+
+type Statfs_t struct {
+ Version uint32
+ Type uint32
+ Flags uint64
+ Bsize uint64
+ Iosize uint64
+ Blocks uint64
+ Bfree uint64
+ Bavail int64
+ Files uint64
+ Ffree int64
+ Syncwrites uint64
+ Asyncwrites uint64
+ Syncreads uint64
+ Asyncreads uint64
+ Spare [10]uint64
+ Namemax uint32
+ Owner uint32
+ Fsid Fsid
+ Charspare [80]int8
+ Fstypename [16]int8
+ Mntfromname [88]int8
+ Mntonname [88]int8
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+ Sysid int32
+}
+
+type Dirent struct {
+ Fileno uint32
+ Reclen uint16
+ Type uint8
+ Namlen uint8
+ Name [256]int8
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [46]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x36
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint32
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int32
+ Udata *byte
+}
+
+type FdSet struct {
+ X__fds_bits [32]uint32
+}
+
+const (
+ sizeofIfMsghdr = 0x64
+ SizeofIfMsghdr = 0x60
+ sizeofIfData = 0x54
+ SizeofIfData = 0x50
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfAnnounceMsghdr = 0x18
+ SizeofRtMsghdr = 0x5c
+ SizeofRtMetrics = 0x38
+)
+
+type ifMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data ifData
+}
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type ifData struct {
+ Type uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Vhid uint8
+ Baudrate_pf uint8
+ Datalen uint8
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Hwassist uint64
+ Epoch int32
+ Lastchange Timeval
+}
+
+type IfData struct {
+ Type uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Spare_char1 uint8
+ Spare_char2 uint8
+ Datalen uint8
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Hwassist uint32
+ Epoch int32
+ Lastchange Timeval
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Name [16]int8
+ What uint16
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Fmask int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint32
+ Mtu uint32
+ Hopcount uint32
+ Expire uint32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pksent uint32
+ Weight uint32
+ Filler [3]uint32
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfZbuf = 0xc
+ SizeofBpfProgram = 0x8
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+ SizeofBpfZbufHeader = 0x20
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfZbuf struct {
+ Bufa *byte
+ Bufb *byte
+ Buflen uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type BpfZbufHeader struct {
+ Kernel_gen uint32
+ Kernel_len uint32
+ User_gen uint32
+ X_bzh_pad [5]uint32
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
new file mode 100644
index 000000000..e5feb207b
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
@@ -0,0 +1,505 @@
+// +build amd64,freebsd
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_freebsd.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur int64
+ Max int64
+}
+
+type _Gid_t uint32
+
+const (
+ S_IFMT = 0xf000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+type Stat_t struct {
+ Dev uint32
+ Ino uint32
+ Mode uint16
+ Nlink uint16
+ Uid uint32
+ Gid uint32
+ Rdev uint32
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Birthtimespec Timespec
+}
+
+type Statfs_t struct {
+ Version uint32
+ Type uint32
+ Flags uint64
+ Bsize uint64
+ Iosize uint64
+ Blocks uint64
+ Bfree uint64
+ Bavail int64
+ Files uint64
+ Ffree int64
+ Syncwrites uint64
+ Asyncwrites uint64
+ Syncreads uint64
+ Asyncreads uint64
+ Spare [10]uint64
+ Namemax uint32
+ Owner uint32
+ Fsid Fsid
+ Charspare [80]int8
+ Fstypename [16]int8
+ Mntfromname [88]int8
+ Mntonname [88]int8
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+ Sysid int32
+ Pad_cgo_0 [4]byte
+}
+
+type Dirent struct {
+ Fileno uint32
+ Reclen uint16
+ Type uint8
+ Namlen uint8
+ Name [256]int8
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [46]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x36
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x30
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint64
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int64
+ Udata *byte
+}
+
+type FdSet struct {
+ X__fds_bits [16]uint64
+}
+
+const (
+ sizeofIfMsghdr = 0xa8
+ SizeofIfMsghdr = 0xa8
+ sizeofIfData = 0x98
+ SizeofIfData = 0x98
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfAnnounceMsghdr = 0x18
+ SizeofRtMsghdr = 0x98
+ SizeofRtMetrics = 0x70
+)
+
+type ifMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data ifData
+}
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type ifData struct {
+ Type uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Vhid uint8
+ Baudrate_pf uint8
+ Datalen uint8
+ Mtu uint64
+ Metric uint64
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Noproto uint64
+ Hwassist uint64
+ Epoch int64
+ Lastchange Timeval
+}
+
+type IfData struct {
+ Type uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Spare_char1 uint8
+ Spare_char2 uint8
+ Datalen uint8
+ Mtu uint64
+ Metric uint64
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Noproto uint64
+ Hwassist uint64
+ Epoch int64
+ Lastchange Timeval
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Name [16]int8
+ What uint16
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Fmask int32
+ Inits uint64
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint64
+ Mtu uint64
+ Hopcount uint64
+ Expire uint64
+ Recvpipe uint64
+ Sendpipe uint64
+ Ssthresh uint64
+ Rtt uint64
+ Rttvar uint64
+ Pksent uint64
+ Weight uint64
+ Filler [3]uint64
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfZbuf = 0x18
+ SizeofBpfProgram = 0x10
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x20
+ SizeofBpfZbufHeader = 0x20
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfZbuf struct {
+ Bufa *byte
+ Bufb *byte
+ Buflen uint64
+}
+
+type BpfProgram struct {
+ Len uint32
+ Pad_cgo_0 [4]byte
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [6]byte
+}
+
+type BpfZbufHeader struct {
+ Kernel_gen uint32
+ Kernel_len uint32
+ User_gen uint32
+ X_bzh_pad [5]uint32
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_arm.go
new file mode 100644
index 000000000..5472b5428
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_freebsd_arm.go
@@ -0,0 +1,497 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -fsigned-char types_freebsd.go
+
+// +build arm,freebsd
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int32
+ Pad_cgo_0 [4]byte
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int32
+ Pad_cgo_0 [4]byte
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur int64
+ Max int64
+}
+
+type _Gid_t uint32
+
+const (
+ S_IFMT = 0xf000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+type Stat_t struct {
+ Dev uint32
+ Ino uint32
+ Mode uint16
+ Nlink uint16
+ Uid uint32
+ Gid uint32
+ Rdev uint32
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Lspare int32
+ Birthtimespec Timespec
+}
+
+type Statfs_t struct {
+ Version uint32
+ Type uint32
+ Flags uint64
+ Bsize uint64
+ Iosize uint64
+ Blocks uint64
+ Bfree uint64
+ Bavail int64
+ Files uint64
+ Ffree int64
+ Syncwrites uint64
+ Asyncwrites uint64
+ Syncreads uint64
+ Asyncreads uint64
+ Spare [10]uint64
+ Namemax uint32
+ Owner uint32
+ Fsid Fsid
+ Charspare [80]int8
+ Fstypename [16]int8
+ Mntfromname [88]int8
+ Mntonname [88]int8
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+ Sysid int32
+ Pad_cgo_0 [4]byte
+}
+
+type Dirent struct {
+ Fileno uint32
+ Reclen uint16
+ Type uint8
+ Namlen uint8
+ Name [256]int8
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [46]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x36
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint32
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int32
+ Udata *byte
+}
+
+type FdSet struct {
+ X__fds_bits [32]uint32
+}
+
+const (
+ sizeofIfMsghdr = 0x70
+ SizeofIfMsghdr = 0x70
+ sizeofIfData = 0x60
+ SizeofIfData = 0x60
+ SizeofIfaMsghdr = 0x14
+ SizeofIfmaMsghdr = 0x10
+ SizeofIfAnnounceMsghdr = 0x18
+ SizeofRtMsghdr = 0x5c
+ SizeofRtMetrics = 0x38
+)
+
+type ifMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data ifData
+}
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type ifData struct {
+ Type uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Vhid uint8
+ Baudrate_pf uint8
+ Datalen uint8
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Hwassist uint64
+ Epoch int64
+ Lastchange Timeval
+}
+
+type IfData struct {
+ Type uint8
+ Physical uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Spare_char1 uint8
+ Spare_char2 uint8
+ Datalen uint8
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Hwassist uint32
+ Pad_cgo_0 [4]byte
+ Epoch int64
+ Lastchange Timeval
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type IfmaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Name [16]int8
+ What uint16
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Fmask int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint32
+ Mtu uint32
+ Hopcount uint32
+ Expire uint32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pksent uint32
+ Weight uint32
+ Filler [3]uint32
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfZbuf = 0xc
+ SizeofBpfProgram = 0x8
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x20
+ SizeofBpfZbufHeader = 0x20
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfZbuf struct {
+ Bufa *byte
+ Bufb *byte
+ Buflen uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp Timeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [6]byte
+}
+
+type BpfZbufHeader struct {
+ Kernel_gen uint32
+ Kernel_len uint32
+ User_gen uint32
+ X_bzh_pad [5]uint32
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go
new file mode 100644
index 000000000..cf5db0e1b
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_386.go
@@ -0,0 +1,590 @@
+// +build 386,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int32
+ Nsec int32
+}
+
+type Timeval struct {
+ Sec int32
+ Usec int32
+}
+
+type Timex struct {
+ Modes uint32
+ Offset int32
+ Freq int32
+ Maxerror int32
+ Esterror int32
+ Status int32
+ Constant int32
+ Precision int32
+ Tolerance int32
+ Time Timeval
+ Tick int32
+ Ppsfreq int32
+ Jitter int32
+ Shift int32
+ Stabil int32
+ Jitcnt int32
+ Calcnt int32
+ Errcnt int32
+ Stbcnt int32
+ Tai int32
+ Pad_cgo_0 [44]byte
+}
+
+type Time_t int32
+
+type Tms struct {
+ Utime int32
+ Stime int32
+ Cutime int32
+ Cstime int32
+}
+
+type Utimbuf struct {
+ Actime int32
+ Modtime int32
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ X__pad1 uint16
+ Pad_cgo_0 [2]byte
+ X__st_ino uint32
+ Mode uint32
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev uint64
+ X__pad2 uint16
+ Pad_cgo_1 [2]byte
+ Size int64
+ Blksize int32
+ Blocks int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Ino uint64
+}
+
+type Statfs_t struct {
+ Type int32
+ Bsize int32
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Namelen int32
+ Frsize int32
+ Flags int32
+ Spare [4]int32
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]int8
+ Pad_cgo_0 [1]byte
+}
+
+type Fsid struct {
+ X__val [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Start int64
+ Len int64
+ Pid int32
+}
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+ X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ Pad_cgo_0 [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x1d
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ X__ifi_pad uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x8
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ Pad_cgo_0 [2]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+ Name [0]int8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ Ebx int32
+ Ecx int32
+ Edx int32
+ Esi int32
+ Edi int32
+ Ebp int32
+ Eax int32
+ Xds int32
+ Xes int32
+ Xfs int32
+ Xgs int32
+ Orig_eax int32
+ Eip int32
+ Xcs int32
+ Eflags int32
+ Esp int32
+ Xss int32
+}
+
+type FdSet struct {
+ Bits [32]int32
+}
+
+type Sysinfo_t struct {
+ Uptime int32
+ Loads [3]uint32
+ Totalram uint32
+ Freeram uint32
+ Sharedram uint32
+ Bufferram uint32
+ Totalswap uint32
+ Freeswap uint32
+ Procs uint16
+ Pad uint16
+ Totalhigh uint32
+ Freehigh uint32
+ Unit uint32
+ X_f [8]int8
+}
+
+type Utsname struct {
+ Sysname [65]int8
+ Nodename [65]int8
+ Release [65]int8
+ Version [65]int8
+ Machine [65]int8
+ Domainname [65]int8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ Tinode uint32
+ Fname [6]int8
+ Fpack [6]int8
+}
+
+type EpollEvent struct {
+ Events uint32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_SYMLINK_NOFOLLOW = 0x100
+ AT_REMOVEDIR = 0x200
+)
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Line uint8
+ Cc [19]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go
new file mode 100644
index 000000000..ac27784ab
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_amd64.go
@@ -0,0 +1,608 @@
+// +build amd64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Timex struct {
+ Modes uint32
+ Pad_cgo_0 [4]byte
+ Offset int64
+ Freq int64
+ Maxerror int64
+ Esterror int64
+ Status int32
+ Pad_cgo_1 [4]byte
+ Constant int64
+ Precision int64
+ Tolerance int64
+ Time Timeval
+ Tick int64
+ Ppsfreq int64
+ Jitter int64
+ Shift int32
+ Pad_cgo_2 [4]byte
+ Stabil int64
+ Jitcnt int64
+ Calcnt int64
+ Errcnt int64
+ Stbcnt int64
+ Tai int32
+ Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+ Utime int64
+ Stime int64
+ Cutime int64
+ Cstime int64
+}
+
+type Utimbuf struct {
+ Actime int64
+ Modtime int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ Ino uint64
+ Nlink uint64
+ Mode uint32
+ Uid uint32
+ Gid uint32
+ X__pad0 int32
+ Rdev uint64
+ Size int64
+ Blksize int64
+ Blocks int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ X__unused [3]int64
+}
+
+type Statfs_t struct {
+ Type int64
+ Bsize int64
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Namelen int64
+ Frsize int64
+ Flags int64
+ Spare [4]int64
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]int8
+ Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+ X__val [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Pad_cgo_0 [4]byte
+ Start int64
+ Len int64
+ Pid int32
+ Pad_cgo_1 [4]byte
+}
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type Cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+ X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ Pad_cgo_0 [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x38
+ SizeofCmsghdr = 0x10
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x1d
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ X__ifi_pad uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x10
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ Pad_cgo_0 [6]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+ Name [0]int8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ R15 uint64
+ R14 uint64
+ R13 uint64
+ R12 uint64
+ Rbp uint64
+ Rbx uint64
+ R11 uint64
+ R10 uint64
+ R9 uint64
+ R8 uint64
+ Rax uint64
+ Rcx uint64
+ Rdx uint64
+ Rsi uint64
+ Rdi uint64
+ Orig_rax uint64
+ Rip uint64
+ Cs uint64
+ Eflags uint64
+ Rsp uint64
+ Ss uint64
+ Fs_base uint64
+ Gs_base uint64
+ Ds uint64
+ Es uint64
+ Fs uint64
+ Gs uint64
+}
+
+type FdSet struct {
+ Bits [16]int64
+}
+
+type Sysinfo_t struct {
+ Uptime int64
+ Loads [3]uint64
+ Totalram uint64
+ Freeram uint64
+ Sharedram uint64
+ Bufferram uint64
+ Totalswap uint64
+ Freeswap uint64
+ Procs uint16
+ Pad uint16
+ Pad_cgo_0 [4]byte
+ Totalhigh uint64
+ Freehigh uint64
+ Unit uint32
+ X_f [0]int8
+ Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+ Sysname [65]int8
+ Nodename [65]int8
+ Release [65]int8
+ Version [65]int8
+ Machine [65]int8
+ Domainname [65]int8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ Pad_cgo_0 [4]byte
+ Tinode uint64
+ Fname [6]int8
+ Fpack [6]int8
+ Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+ Events uint32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_SYMLINK_NOFOLLOW = 0x100
+ AT_REMOVEDIR = 0x200
+)
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Line uint8
+ Cc [19]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go
new file mode 100644
index 000000000..b318bb851
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm.go
@@ -0,0 +1,579 @@
+// +build arm,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int32
+ Nsec int32
+}
+
+type Timeval struct {
+ Sec int32
+ Usec int32
+}
+
+type Timex struct {
+ Modes uint32
+ Offset int32
+ Freq int32
+ Maxerror int32
+ Esterror int32
+ Status int32
+ Constant int32
+ Precision int32
+ Tolerance int32
+ Time Timeval
+ Tick int32
+ Ppsfreq int32
+ Jitter int32
+ Shift int32
+ Stabil int32
+ Jitcnt int32
+ Calcnt int32
+ Errcnt int32
+ Stbcnt int32
+ Tai int32
+ Pad_cgo_0 [44]byte
+}
+
+type Time_t int32
+
+type Tms struct {
+ Utime int32
+ Stime int32
+ Cutime int32
+ Cstime int32
+}
+
+type Utimbuf struct {
+ Actime int32
+ Modtime int32
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ X__pad1 uint16
+ Pad_cgo_0 [2]byte
+ X__st_ino uint32
+ Mode uint32
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev uint64
+ X__pad2 uint16
+ Pad_cgo_1 [6]byte
+ Size int64
+ Blksize int32
+ Pad_cgo_2 [4]byte
+ Blocks int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Ino uint64
+}
+
+type Statfs_t struct {
+ Type int32
+ Bsize int32
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Namelen int32
+ Frsize int32
+ Flags int32
+ Spare [4]int32
+ Pad_cgo_0 [4]byte
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]uint8
+ Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+ X__val [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Pad_cgo_0 [4]byte
+ Start int64
+ Len int64
+ Pid int32
+ Pad_cgo_1 [4]byte
+}
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]uint8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]uint8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+ X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ Pad_cgo_0 [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x1d
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ X__ifi_pad uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x8
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ Pad_cgo_0 [2]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+ Name [0]uint8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ Uregs [18]uint32
+}
+
+type FdSet struct {
+ Bits [32]int32
+}
+
+type Sysinfo_t struct {
+ Uptime int32
+ Loads [3]uint32
+ Totalram uint32
+ Freeram uint32
+ Sharedram uint32
+ Bufferram uint32
+ Totalswap uint32
+ Freeswap uint32
+ Procs uint16
+ Pad uint16
+ Totalhigh uint32
+ Freehigh uint32
+ Unit uint32
+ X_f [8]uint8
+}
+
+type Utsname struct {
+ Sysname [65]uint8
+ Nodename [65]uint8
+ Release [65]uint8
+ Version [65]uint8
+ Machine [65]uint8
+ Domainname [65]uint8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ Tinode uint32
+ Fname [6]uint8
+ Fpack [6]uint8
+}
+
+type EpollEvent struct {
+ Events uint32
+ PadFd int32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_SYMLINK_NOFOLLOW = 0x100
+ AT_REMOVEDIR = 0x200
+)
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Line uint8
+ Cc [19]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go
new file mode 100644
index 000000000..a159aadab
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_arm64.go
@@ -0,0 +1,595 @@
+// +build arm64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -fsigned-char types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Timex struct {
+ Modes uint32
+ Pad_cgo_0 [4]byte
+ Offset int64
+ Freq int64
+ Maxerror int64
+ Esterror int64
+ Status int32
+ Pad_cgo_1 [4]byte
+ Constant int64
+ Precision int64
+ Tolerance int64
+ Time Timeval
+ Tick int64
+ Ppsfreq int64
+ Jitter int64
+ Shift int32
+ Pad_cgo_2 [4]byte
+ Stabil int64
+ Jitcnt int64
+ Calcnt int64
+ Errcnt int64
+ Stbcnt int64
+ Tai int32
+ Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+ Utime int64
+ Stime int64
+ Cutime int64
+ Cstime int64
+}
+
+type Utimbuf struct {
+ Actime int64
+ Modtime int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ Ino uint64
+ Mode uint32
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev uint64
+ X__pad1 uint64
+ Size int64
+ Blksize int32
+ X__pad2 int32
+ Blocks int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ X__glibc_reserved [2]int32
+}
+
+type Statfs_t struct {
+ Type int64
+ Bsize int64
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Namelen int64
+ Frsize int64
+ Flags int64
+ Spare [4]int64
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]int8
+ Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+ X__val [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Pad_cgo_0 [4]byte
+ Start int64
+ Len int64
+ Pid int32
+ Pad_cgo_1 [4]byte
+}
+
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type Cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+ X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ Pad_cgo_0 [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x38
+ SizeofCmsghdr = 0x10
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x22
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ X__ifi_pad uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x10
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ Pad_cgo_0 [6]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+ Name [0]int8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ Regs [31]uint64
+ Sp uint64
+ Pc uint64
+ Pstate uint64
+}
+
+type FdSet struct {
+ Bits [16]int64
+}
+
+type Sysinfo_t struct {
+ Uptime int64
+ Loads [3]uint64
+ Totalram uint64
+ Freeram uint64
+ Sharedram uint64
+ Bufferram uint64
+ Totalswap uint64
+ Freeswap uint64
+ Procs uint16
+ Pad uint16
+ Pad_cgo_0 [4]byte
+ Totalhigh uint64
+ Freehigh uint64
+ Unit uint32
+ X_f [0]int8
+ Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+ Sysname [65]int8
+ Nodename [65]int8
+ Release [65]int8
+ Version [65]int8
+ Machine [65]int8
+ Domainname [65]int8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ Pad_cgo_0 [4]byte
+ Tinode uint64
+ Fname [6]int8
+ Fpack [6]int8
+ Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+ Events uint32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_REMOVEDIR = 0x200
+ AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Line uint8
+ Cc [19]uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go
new file mode 100644
index 000000000..b14cbfef0
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64.go
@@ -0,0 +1,605 @@
+// +build ppc64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Timex struct {
+ Modes uint32
+ Pad_cgo_0 [4]byte
+ Offset int64
+ Freq int64
+ Maxerror int64
+ Esterror int64
+ Status int32
+ Pad_cgo_1 [4]byte
+ Constant int64
+ Precision int64
+ Tolerance int64
+ Time Timeval
+ Tick int64
+ Ppsfreq int64
+ Jitter int64
+ Shift int32
+ Pad_cgo_2 [4]byte
+ Stabil int64
+ Jitcnt int64
+ Calcnt int64
+ Errcnt int64
+ Stbcnt int64
+ Tai int32
+ Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+ Utime int64
+ Stime int64
+ Cutime int64
+ Cstime int64
+}
+
+type Utimbuf struct {
+ Actime int64
+ Modtime int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ Ino uint64
+ Nlink uint64
+ Mode uint32
+ Uid uint32
+ Gid uint32
+ X__pad2 int32
+ Rdev uint64
+ Size int64
+ Blksize int64
+ Blocks int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ X__glibc_reserved4 uint64
+ X__glibc_reserved5 uint64
+ X__glibc_reserved6 uint64
+}
+
+type Statfs_t struct {
+ Type int64
+ Bsize int64
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Namelen int64
+ Frsize int64
+ Flags int64
+ Spare [4]int64
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]uint8
+ Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+ X__val [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Pad_cgo_0 [4]byte
+ Start int64
+ Len int64
+ Pid int32
+ Pad_cgo_1 [4]byte
+}
+
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]uint8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]uint8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type Cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+ X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ Pad_cgo_0 [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x38
+ SizeofCmsghdr = 0x10
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x23
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ X__ifi_pad uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x10
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ Pad_cgo_0 [6]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+ Name [0]uint8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ Gpr [32]uint64
+ Nip uint64
+ Msr uint64
+ Orig_gpr3 uint64
+ Ctr uint64
+ Link uint64
+ Xer uint64
+ Ccr uint64
+ Softe uint64
+ Trap uint64
+ Dar uint64
+ Dsisr uint64
+ Result uint64
+}
+
+type FdSet struct {
+ Bits [16]int64
+}
+
+type Sysinfo_t struct {
+ Uptime int64
+ Loads [3]uint64
+ Totalram uint64
+ Freeram uint64
+ Sharedram uint64
+ Bufferram uint64
+ Totalswap uint64
+ Freeswap uint64
+ Procs uint16
+ Pad uint16
+ Pad_cgo_0 [4]byte
+ Totalhigh uint64
+ Freehigh uint64
+ Unit uint32
+ X_f [0]uint8
+ Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+ Sysname [65]uint8
+ Nodename [65]uint8
+ Release [65]uint8
+ Version [65]uint8
+ Machine [65]uint8
+ Domainname [65]uint8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ Pad_cgo_0 [4]byte
+ Tinode uint64
+ Fname [6]uint8
+ Fpack [6]uint8
+ Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+ Events uint32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_REMOVEDIR = 0x200
+ AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [19]uint8
+ Line uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
new file mode 100644
index 000000000..22c96a2f0
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
@@ -0,0 +1,605 @@
+// +build ppc64le,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+ PathMax = 0x1000
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Timex struct {
+ Modes uint32
+ Pad_cgo_0 [4]byte
+ Offset int64
+ Freq int64
+ Maxerror int64
+ Esterror int64
+ Status int32
+ Pad_cgo_1 [4]byte
+ Constant int64
+ Precision int64
+ Tolerance int64
+ Time Timeval
+ Tick int64
+ Ppsfreq int64
+ Jitter int64
+ Shift int32
+ Pad_cgo_2 [4]byte
+ Stabil int64
+ Jitcnt int64
+ Calcnt int64
+ Errcnt int64
+ Stbcnt int64
+ Tai int32
+ Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+ Utime int64
+ Stime int64
+ Cutime int64
+ Cstime int64
+}
+
+type Utimbuf struct {
+ Actime int64
+ Modtime int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ Ino uint64
+ Nlink uint64
+ Mode uint32
+ Uid uint32
+ Gid uint32
+ X__pad2 int32
+ Rdev uint64
+ Size int64
+ Blksize int64
+ Blocks int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ X__glibc_reserved4 uint64
+ X__glibc_reserved5 uint64
+ X__glibc_reserved6 uint64
+}
+
+type Statfs_t struct {
+ Type int64
+ Bsize int64
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid Fsid
+ Namelen int64
+ Frsize int64
+ Flags int64
+ Spare [4]int64
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Name [256]uint8
+ Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+ X__val [2]int32
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Pad_cgo_0 [4]byte
+ Start int64
+ Len int64
+ Pid int32
+ Pad_cgo_1 [4]byte
+}
+
+const (
+ FADV_NORMAL = 0x0
+ FADV_RANDOM = 0x1
+ FADV_SEQUENTIAL = 0x2
+ FADV_WILLNEED = 0x3
+ FADV_DONTNEED = 0x4
+ FADV_NOREUSE = 0x5
+)
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+ Family uint16
+ Protocol uint16
+ Ifindex int32
+ Hatype uint16
+ Pkttype uint8
+ Halen uint8
+ Addr [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+ Family uint16
+ Pad uint16
+ Pid uint32
+ Groups uint32
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]uint8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [96]uint8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+ Multiaddr [4]byte /* in_addr */
+ Address [4]byte /* in_addr */
+ Ifindex int32
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen uint64
+ Control *byte
+ Controllen uint64
+ Flags int32
+ Pad_cgo_1 [4]byte
+}
+
+type Cmsghdr struct {
+ Len uint64
+ Level int32
+ Type int32
+ X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+ Ifindex int32
+ Spec_dst [4]byte /* in_addr */
+ Addr [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Data [8]uint32
+}
+
+type Ucred struct {
+ Pid int32
+ Uid uint32
+ Gid uint32
+}
+
+type TCPInfo struct {
+ State uint8
+ Ca_state uint8
+ Retransmits uint8
+ Probes uint8
+ Backoff uint8
+ Options uint8
+ Pad_cgo_0 [2]byte
+ Rto uint32
+ Ato uint32
+ Snd_mss uint32
+ Rcv_mss uint32
+ Unacked uint32
+ Sacked uint32
+ Lost uint32
+ Retrans uint32
+ Fackets uint32
+ Last_data_sent uint32
+ Last_ack_sent uint32
+ Last_data_recv uint32
+ Last_ack_recv uint32
+ Pmtu uint32
+ Rcv_ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Snd_ssthresh uint32
+ Snd_cwnd uint32
+ Advmss uint32
+ Reordering uint32
+ Rcv_rtt uint32
+ Rcv_space uint32
+ Total_retrans uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x70
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrLinklayer = 0x14
+ SizeofSockaddrNetlink = 0xc
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPMreqn = 0xc
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x38
+ SizeofCmsghdr = 0x10
+ SizeofInet4Pktinfo = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+ SizeofUcred = 0xc
+ SizeofTCPInfo = 0x68
+)
+
+const (
+ IFA_UNSPEC = 0x0
+ IFA_ADDRESS = 0x1
+ IFA_LOCAL = 0x2
+ IFA_LABEL = 0x3
+ IFA_BROADCAST = 0x4
+ IFA_ANYCAST = 0x5
+ IFA_CACHEINFO = 0x6
+ IFA_MULTICAST = 0x7
+ IFLA_UNSPEC = 0x0
+ IFLA_ADDRESS = 0x1
+ IFLA_BROADCAST = 0x2
+ IFLA_IFNAME = 0x3
+ IFLA_MTU = 0x4
+ IFLA_LINK = 0x5
+ IFLA_QDISC = 0x6
+ IFLA_STATS = 0x7
+ IFLA_COST = 0x8
+ IFLA_PRIORITY = 0x9
+ IFLA_MASTER = 0xa
+ IFLA_WIRELESS = 0xb
+ IFLA_PROTINFO = 0xc
+ IFLA_TXQLEN = 0xd
+ IFLA_MAP = 0xe
+ IFLA_WEIGHT = 0xf
+ IFLA_OPERSTATE = 0x10
+ IFLA_LINKMODE = 0x11
+ IFLA_LINKINFO = 0x12
+ IFLA_NET_NS_PID = 0x13
+ IFLA_IFALIAS = 0x14
+ IFLA_MAX = 0x22
+ RT_SCOPE_UNIVERSE = 0x0
+ RT_SCOPE_SITE = 0xc8
+ RT_SCOPE_LINK = 0xfd
+ RT_SCOPE_HOST = 0xfe
+ RT_SCOPE_NOWHERE = 0xff
+ RT_TABLE_UNSPEC = 0x0
+ RT_TABLE_COMPAT = 0xfc
+ RT_TABLE_DEFAULT = 0xfd
+ RT_TABLE_MAIN = 0xfe
+ RT_TABLE_LOCAL = 0xff
+ RT_TABLE_MAX = 0xffffffff
+ RTA_UNSPEC = 0x0
+ RTA_DST = 0x1
+ RTA_SRC = 0x2
+ RTA_IIF = 0x3
+ RTA_OIF = 0x4
+ RTA_GATEWAY = 0x5
+ RTA_PRIORITY = 0x6
+ RTA_PREFSRC = 0x7
+ RTA_METRICS = 0x8
+ RTA_MULTIPATH = 0x9
+ RTA_FLOW = 0xb
+ RTA_CACHEINFO = 0xc
+ RTA_TABLE = 0xf
+ RTN_UNSPEC = 0x0
+ RTN_UNICAST = 0x1
+ RTN_LOCAL = 0x2
+ RTN_BROADCAST = 0x3
+ RTN_ANYCAST = 0x4
+ RTN_MULTICAST = 0x5
+ RTN_BLACKHOLE = 0x6
+ RTN_UNREACHABLE = 0x7
+ RTN_PROHIBIT = 0x8
+ RTN_THROW = 0x9
+ RTN_NAT = 0xa
+ RTN_XRESOLVE = 0xb
+ RTNLGRP_NONE = 0x0
+ RTNLGRP_LINK = 0x1
+ RTNLGRP_NOTIFY = 0x2
+ RTNLGRP_NEIGH = 0x3
+ RTNLGRP_TC = 0x4
+ RTNLGRP_IPV4_IFADDR = 0x5
+ RTNLGRP_IPV4_MROUTE = 0x6
+ RTNLGRP_IPV4_ROUTE = 0x7
+ RTNLGRP_IPV4_RULE = 0x8
+ RTNLGRP_IPV6_IFADDR = 0x9
+ RTNLGRP_IPV6_MROUTE = 0xa
+ RTNLGRP_IPV6_ROUTE = 0xb
+ RTNLGRP_IPV6_IFINFO = 0xc
+ RTNLGRP_IPV6_PREFIX = 0x12
+ RTNLGRP_IPV6_RULE = 0x13
+ RTNLGRP_ND_USEROPT = 0x14
+ SizeofNlMsghdr = 0x10
+ SizeofNlMsgerr = 0x14
+ SizeofRtGenmsg = 0x1
+ SizeofNlAttr = 0x4
+ SizeofRtAttr = 0x4
+ SizeofIfInfomsg = 0x10
+ SizeofIfAddrmsg = 0x8
+ SizeofRtMsg = 0xc
+ SizeofRtNexthop = 0x8
+)
+
+type NlMsghdr struct {
+ Len uint32
+ Type uint16
+ Flags uint16
+ Seq uint32
+ Pid uint32
+}
+
+type NlMsgerr struct {
+ Error int32
+ Msg NlMsghdr
+}
+
+type RtGenmsg struct {
+ Family uint8
+}
+
+type NlAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type RtAttr struct {
+ Len uint16
+ Type uint16
+}
+
+type IfInfomsg struct {
+ Family uint8
+ X__ifi_pad uint8
+ Type uint16
+ Index int32
+ Flags uint32
+ Change uint32
+}
+
+type IfAddrmsg struct {
+ Family uint8
+ Prefixlen uint8
+ Flags uint8
+ Scope uint8
+ Index uint32
+}
+
+type RtMsg struct {
+ Family uint8
+ Dst_len uint8
+ Src_len uint8
+ Tos uint8
+ Table uint8
+ Protocol uint8
+ Scope uint8
+ Type uint8
+ Flags uint32
+}
+
+type RtNexthop struct {
+ Len uint16
+ Flags uint8
+ Hops uint8
+ Ifindex int32
+}
+
+const (
+ SizeofSockFilter = 0x8
+ SizeofSockFprog = 0x10
+)
+
+type SockFilter struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type SockFprog struct {
+ Len uint16
+ Pad_cgo_0 [6]byte
+ Filter *SockFilter
+}
+
+type InotifyEvent struct {
+ Wd int32
+ Mask uint32
+ Cookie uint32
+ Len uint32
+ Name [0]uint8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+ Gpr [32]uint64
+ Nip uint64
+ Msr uint64
+ Orig_gpr3 uint64
+ Ctr uint64
+ Link uint64
+ Xer uint64
+ Ccr uint64
+ Softe uint64
+ Trap uint64
+ Dar uint64
+ Dsisr uint64
+ Result uint64
+}
+
+type FdSet struct {
+ Bits [16]int64
+}
+
+type Sysinfo_t struct {
+ Uptime int64
+ Loads [3]uint64
+ Totalram uint64
+ Freeram uint64
+ Sharedram uint64
+ Bufferram uint64
+ Totalswap uint64
+ Freeswap uint64
+ Procs uint16
+ Pad uint16
+ Pad_cgo_0 [4]byte
+ Totalhigh uint64
+ Freehigh uint64
+ Unit uint32
+ X_f [0]uint8
+ Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+ Sysname [65]uint8
+ Nodename [65]uint8
+ Release [65]uint8
+ Version [65]uint8
+ Machine [65]uint8
+ Domainname [65]uint8
+}
+
+type Ustat_t struct {
+ Tfree int32
+ Pad_cgo_0 [4]byte
+ Tinode uint64
+ Fname [6]uint8
+ Fpack [6]uint8
+ Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+ Events uint32
+ Fd int32
+ Pad int32
+}
+
+const (
+ AT_FDCWD = -0x64
+ AT_REMOVEDIR = 0x200
+ AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [19]uint8
+ Line uint8
+ Ispeed uint32
+ Ospeed uint32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_386.go
new file mode 100644
index 000000000..caf755fb8
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_386.go
@@ -0,0 +1,396 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_netbsd.go
+
+// +build 386,netbsd
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int32
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int32
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ Mode uint32
+ Ino uint64
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev uint64
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Birthtimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Spare [2]uint32
+}
+
+type Statfs_t [0]byte
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Dirent struct {
+ Fileno uint64
+ Reclen uint16
+ Namlen uint16
+ Type uint8
+ Name [512]int8
+ Pad_cgo_0 [3]byte
+}
+
+type Fsid struct {
+ X__fsid_val [2]int32
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x14
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint32
+ Filter uint32
+ Flags uint32
+ Fflags uint32
+ Data int64
+ Udata int32
+}
+
+type FdSet struct {
+ Bits [8]uint32
+}
+
+const (
+ SizeofIfMsghdr = 0x98
+ SizeofIfData = 0x84
+ SizeofIfaMsghdr = 0x18
+ SizeofIfAnnounceMsghdr = 0x18
+ SizeofRtMsghdr = 0x78
+ SizeofRtMetrics = 0x50
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+ Pad_cgo_1 [4]byte
+}
+
+type IfData struct {
+ Type uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Pad_cgo_0 [1]byte
+ Link_state int32
+ Mtu uint64
+ Metric uint64
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Noproto uint64
+ Lastchange Timespec
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Metric int32
+ Index uint16
+ Pad_cgo_0 [6]byte
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Name [16]int8
+ What uint16
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits int32
+ Pad_cgo_1 [4]byte
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint64
+ Mtu uint64
+ Hopcount uint64
+ Recvpipe uint64
+ Sendpipe uint64
+ Ssthresh uint64
+ Rtt uint64
+ Rttvar uint64
+ Expire int64
+ Pksent int64
+}
+
+type Mclpool [0]byte
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x80
+ SizeofBpfProgram = 0x8
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint64
+ Drop uint64
+ Capt uint64
+ Padding [13]uint64
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp BpfTimeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type BpfTimeval struct {
+ Sec int32
+ Usec int32
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed int32
+ Ospeed int32
+}
+
+type Sysctlnode struct {
+ Flags uint32
+ Num int32
+ Name [32]int8
+ Ver uint32
+ X__rsvd uint32
+ Un [16]byte
+ X_sysctl_size [8]byte
+ X_sysctl_func [8]byte
+ X_sysctl_parent [8]byte
+ X_sysctl_desc [8]byte
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
new file mode 100644
index 000000000..91b4a5305
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
@@ -0,0 +1,403 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_netbsd.go
+
+// +build amd64,netbsd
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int32
+ Pad_cgo_0 [4]byte
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ Mode uint32
+ Pad_cgo_0 [4]byte
+ Ino uint64
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Pad_cgo_1 [4]byte
+ Rdev uint64
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Birthtimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Spare [2]uint32
+ Pad_cgo_2 [4]byte
+}
+
+type Statfs_t [0]byte
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Dirent struct {
+ Fileno uint64
+ Reclen uint16
+ Namlen uint16
+ Type uint8
+ Name [512]int8
+ Pad_cgo_0 [3]byte
+}
+
+type Fsid struct {
+ X__fsid_val [2]int32
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x14
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x30
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint64
+ Filter uint32
+ Flags uint32
+ Fflags uint32
+ Pad_cgo_0 [4]byte
+ Data int64
+ Udata int64
+}
+
+type FdSet struct {
+ Bits [8]uint32
+}
+
+const (
+ SizeofIfMsghdr = 0x98
+ SizeofIfData = 0x88
+ SizeofIfaMsghdr = 0x18
+ SizeofIfAnnounceMsghdr = 0x18
+ SizeofRtMsghdr = 0x78
+ SizeofRtMetrics = 0x50
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Pad_cgo_0 [1]byte
+ Link_state int32
+ Mtu uint64
+ Metric uint64
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Noproto uint64
+ Lastchange Timespec
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Metric int32
+ Index uint16
+ Pad_cgo_0 [6]byte
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Name [16]int8
+ What uint16
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits int32
+ Pad_cgo_1 [4]byte
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint64
+ Mtu uint64
+ Hopcount uint64
+ Recvpipe uint64
+ Sendpipe uint64
+ Ssthresh uint64
+ Rtt uint64
+ Rttvar uint64
+ Expire int64
+ Pksent int64
+}
+
+type Mclpool [0]byte
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x80
+ SizeofBpfProgram = 0x10
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x20
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint64
+ Drop uint64
+ Capt uint64
+ Padding [13]uint64
+}
+
+type BpfProgram struct {
+ Len uint32
+ Pad_cgo_0 [4]byte
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp BpfTimeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [6]byte
+}
+
+type BpfTimeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed int32
+ Ospeed int32
+}
+
+type Sysctlnode struct {
+ Flags uint32
+ Num int32
+ Name [32]int8
+ Ver uint32
+ X__rsvd uint32
+ Un [16]byte
+ X_sysctl_size [8]byte
+ X_sysctl_func [8]byte
+ X_sysctl_parent [8]byte
+ X_sysctl_desc [8]byte
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_arm.go
new file mode 100644
index 000000000..c0758f9d3
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_netbsd_arm.go
@@ -0,0 +1,401 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_netbsd.go
+
+// +build arm,netbsd
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int32
+ Pad_cgo_0 [4]byte
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int32
+ Pad_cgo_0 [4]byte
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+ Dev uint64
+ Mode uint32
+ Pad_cgo_0 [4]byte
+ Ino uint64
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Pad_cgo_1 [4]byte
+ Rdev uint64
+ Atimespec Timespec
+ Mtimespec Timespec
+ Ctimespec Timespec
+ Birthtimespec Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Spare [2]uint32
+ Pad_cgo_2 [4]byte
+}
+
+type Statfs_t [0]byte
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Dirent struct {
+ Fileno uint64
+ Reclen uint16
+ Namlen uint16
+ Type uint8
+ Name [512]int8
+ Pad_cgo_0 [3]byte
+}
+
+type Fsid struct {
+ X__fsid_val [2]int32
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [12]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen int32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x14
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint32
+ Filter uint32
+ Flags uint32
+ Fflags uint32
+ Data int64
+ Udata int32
+ Pad_cgo_0 [4]byte
+}
+
+type FdSet struct {
+ Bits [8]uint32
+}
+
+const (
+ SizeofIfMsghdr = 0x98
+ SizeofIfData = 0x88
+ SizeofIfaMsghdr = 0x18
+ SizeofIfAnnounceMsghdr = 0x18
+ SizeofRtMsghdr = 0x78
+ SizeofRtMetrics = 0x50
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Pad_cgo_0 [1]byte
+ Link_state int32
+ Mtu uint64
+ Metric uint64
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Noproto uint64
+ Lastchange Timespec
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Metric int32
+ Index uint16
+ Pad_cgo_0 [6]byte
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Name [16]int8
+ What uint16
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits int32
+ Pad_cgo_1 [4]byte
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint64
+ Mtu uint64
+ Hopcount uint64
+ Recvpipe uint64
+ Sendpipe uint64
+ Ssthresh uint64
+ Rtt uint64
+ Rttvar uint64
+ Expire int64
+ Pksent int64
+}
+
+type Mclpool [0]byte
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x80
+ SizeofBpfProgram = 0x8
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint64
+ Drop uint64
+ Capt uint64
+ Padding [13]uint64
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp BpfTimeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type BpfTimeval struct {
+ Sec int32
+ Usec int32
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed int32
+ Ospeed int32
+}
+
+type Sysctlnode struct {
+ Flags uint32
+ Num int32
+ Name [32]int8
+ Ver uint32
+ X__rsvd uint32
+ Un [16]byte
+ X_sysctl_size [8]byte
+ X_sysctl_func [8]byte
+ X_sysctl_parent [8]byte
+ X_sysctl_desc [8]byte
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_openbsd_386.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_openbsd_386.go
new file mode 100644
index 000000000..860a46979
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_openbsd_386.go
@@ -0,0 +1,441 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_openbsd.go
+
+// +build 386,openbsd
+
+package unix
+
+const (
+ sizeofPtr = 0x4
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x4
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int32
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int32
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int32
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int32
+ Ixrss int32
+ Idrss int32
+ Isrss int32
+ Minflt int32
+ Majflt int32
+ Nswap int32
+ Inblock int32
+ Oublock int32
+ Msgsnd int32
+ Msgrcv int32
+ Nsignals int32
+ Nvcsw int32
+ Nivcsw int32
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+const (
+ S_IFMT = 0xf000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+type Stat_t struct {
+ Mode uint32
+ Dev int32
+ Ino uint64
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev int32
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ X__st_birthtim Timespec
+}
+
+type Statfs_t struct {
+ F_flags uint32
+ F_bsize uint32
+ F_iosize uint32
+ F_blocks uint64
+ F_bfree uint64
+ F_bavail int64
+ F_files uint64
+ F_ffree uint64
+ F_favail int64
+ F_syncwrites uint64
+ F_syncreads uint64
+ F_asyncwrites uint64
+ F_asyncreads uint64
+ F_fsid Fsid
+ F_namemax uint32
+ F_owner uint32
+ F_ctime uint64
+ F_fstypename [16]int8
+ F_mntonname [90]int8
+ F_mntfromname [90]int8
+ F_mntfromspec [90]int8
+ Pad_cgo_0 [2]byte
+ Mount_info [160]byte
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Dirent struct {
+ Fileno uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Namlen uint8
+ X__d_padding [4]uint8
+ Name [256]int8
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [24]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint32
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Iov *Iovec
+ Iovlen uint32
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x20
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x1c
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint32
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int64
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [32]uint32
+}
+
+const (
+ SizeofIfMsghdr = 0xec
+ SizeofIfData = 0xd4
+ SizeofIfaMsghdr = 0x18
+ SizeofIfAnnounceMsghdr = 0x1a
+ SizeofRtMsghdr = 0x60
+ SizeofRtMetrics = 0x38
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Pad1 uint8
+ Pad2 uint8
+ Addrs int32
+ Flags int32
+ Xflags int32
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Mtu uint32
+ Metric uint32
+ Pad uint32
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Noproto uint64
+ Capabilities uint32
+ Lastchange Timeval
+ Mclpool [7]Mclpool
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Pad1 uint8
+ Pad2 uint8
+ Addrs int32
+ Flags int32
+ Metric int32
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ What uint16
+ Name [16]int8
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Priority uint8
+ Mpls uint8
+ Addrs int32
+ Flags int32
+ Fmask int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Pksent uint64
+ Expire int64
+ Locks uint32
+ Mtu uint32
+ Refcnt uint32
+ Hopcount uint32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pad uint32
+}
+
+type Mclpool struct {
+ Grown int32
+ Alive uint16
+ Hwm uint16
+ Cwm uint16
+ Lwm uint16
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x8
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp BpfTimeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type BpfTimeval struct {
+ Sec uint32
+ Usec uint32
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed int32
+ Ospeed int32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
new file mode 100644
index 000000000..23c52727f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
@@ -0,0 +1,448 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_openbsd.go
+
+// +build amd64,openbsd
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+const (
+ S_IFMT = 0xf000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+type Stat_t struct {
+ Mode uint32
+ Dev int32
+ Ino uint64
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev int32
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Size int64
+ Blocks int64
+ Blksize uint32
+ Flags uint32
+ Gen uint32
+ Pad_cgo_0 [4]byte
+ X__st_birthtim Timespec
+}
+
+type Statfs_t struct {
+ F_flags uint32
+ F_bsize uint32
+ F_iosize uint32
+ Pad_cgo_0 [4]byte
+ F_blocks uint64
+ F_bfree uint64
+ F_bavail int64
+ F_files uint64
+ F_ffree uint64
+ F_favail int64
+ F_syncwrites uint64
+ F_syncreads uint64
+ F_asyncwrites uint64
+ F_asyncreads uint64
+ F_fsid Fsid
+ F_namemax uint32
+ F_owner uint32
+ F_ctime uint64
+ F_fstypename [16]int8
+ F_mntonname [90]int8
+ F_mntfromname [90]int8
+ F_mntfromspec [90]int8
+ Pad_cgo_1 [2]byte
+ Mount_info [160]byte
+}
+
+type Flock_t struct {
+ Start int64
+ Len int64
+ Pid int32
+ Type int16
+ Whence int16
+}
+
+type Dirent struct {
+ Fileno uint64
+ Off int64
+ Reclen uint16
+ Type uint8
+ Namlen uint8
+ X__d_padding [4]uint8
+ Name [256]int8
+}
+
+type Fsid struct {
+ Val [2]int32
+}
+
+type RawSockaddrInet4 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Len uint8
+ Family uint8
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Len uint8
+ Family uint8
+ Path [104]int8
+}
+
+type RawSockaddrDatalink struct {
+ Len uint8
+ Family uint8
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [24]int8
+}
+
+type RawSockaddr struct {
+ Len uint8
+ Family uint8
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *byte
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen uint32
+ Pad_cgo_1 [4]byte
+ Control *byte
+ Controllen uint32
+ Flags int32
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ Filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x1c
+ SizeofSockaddrAny = 0x6c
+ SizeofSockaddrUnix = 0x6a
+ SizeofSockaddrDatalink = 0x20
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x30
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x20
+ SizeofICMPv6Filter = 0x20
+)
+
+const (
+ PTRACE_TRACEME = 0x0
+ PTRACE_CONT = 0x7
+ PTRACE_KILL = 0x8
+)
+
+type Kevent_t struct {
+ Ident uint64
+ Filter int16
+ Flags uint16
+ Fflags uint32
+ Data int64
+ Udata *byte
+}
+
+type FdSet struct {
+ Bits [32]uint32
+}
+
+const (
+ SizeofIfMsghdr = 0xf8
+ SizeofIfData = 0xe0
+ SizeofIfaMsghdr = 0x18
+ SizeofIfAnnounceMsghdr = 0x1a
+ SizeofRtMsghdr = 0x60
+ SizeofRtMetrics = 0x38
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Pad1 uint8
+ Pad2 uint8
+ Addrs int32
+ Flags int32
+ Xflags int32
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Link_state uint8
+ Mtu uint32
+ Metric uint32
+ Pad uint32
+ Baudrate uint64
+ Ipackets uint64
+ Ierrors uint64
+ Opackets uint64
+ Oerrors uint64
+ Collisions uint64
+ Ibytes uint64
+ Obytes uint64
+ Imcasts uint64
+ Omcasts uint64
+ Iqdrops uint64
+ Noproto uint64
+ Capabilities uint32
+ Pad_cgo_0 [4]byte
+ Lastchange Timeval
+ Mclpool [7]Mclpool
+ Pad_cgo_1 [4]byte
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Pad1 uint8
+ Pad2 uint8
+ Addrs int32
+ Flags int32
+ Metric int32
+}
+
+type IfAnnounceMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ What uint16
+ Name [16]int8
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Hdrlen uint16
+ Index uint16
+ Tableid uint16
+ Priority uint8
+ Mpls uint8
+ Addrs int32
+ Flags int32
+ Fmask int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Pksent uint64
+ Expire int64
+ Locks uint32
+ Mtu uint32
+ Refcnt uint32
+ Hopcount uint32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pad uint32
+}
+
+type Mclpool struct {
+ Grown int32
+ Alive uint16
+ Hwm uint16
+ Cwm uint16
+ Lwm uint16
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x8
+ SizeofBpfProgram = 0x10
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint32
+ Drop uint32
+}
+
+type BpfProgram struct {
+ Len uint32
+ Pad_cgo_0 [4]byte
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfHdr struct {
+ Tstamp BpfTimeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+type BpfTimeval struct {
+ Sec uint32
+ Usec uint32
+}
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [20]uint8
+ Ispeed int32
+ Ospeed int32
+}
diff --git a/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_solaris_amd64.go
new file mode 100644
index 000000000..b3b928a51
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/sys/unix/ztypes_solaris_amd64.go
@@ -0,0 +1,422 @@
+// +build amd64,solaris
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_solaris.go
+
+package unix
+
+const (
+ sizeofPtr = 0x8
+ sizeofShort = 0x2
+ sizeofInt = 0x4
+ sizeofLong = 0x8
+ sizeofLongLong = 0x8
+ PathMax = 0x400
+)
+
+type (
+ _C_short int16
+ _C_int int32
+ _C_long int64
+ _C_long_long int64
+)
+
+type Timespec struct {
+ Sec int64
+ Nsec int64
+}
+
+type Timeval struct {
+ Sec int64
+ Usec int64
+}
+
+type Timeval32 struct {
+ Sec int32
+ Usec int32
+}
+
+type Tms struct {
+ Utime int64
+ Stime int64
+ Cutime int64
+ Cstime int64
+}
+
+type Utimbuf struct {
+ Actime int64
+ Modtime int64
+}
+
+type Rusage struct {
+ Utime Timeval
+ Stime Timeval
+ Maxrss int64
+ Ixrss int64
+ Idrss int64
+ Isrss int64
+ Minflt int64
+ Majflt int64
+ Nswap int64
+ Inblock int64
+ Oublock int64
+ Msgsnd int64
+ Msgrcv int64
+ Nsignals int64
+ Nvcsw int64
+ Nivcsw int64
+}
+
+type Rlimit struct {
+ Cur uint64
+ Max uint64
+}
+
+type _Gid_t uint32
+
+const (
+ S_IFMT = 0xf000
+ S_IFIFO = 0x1000
+ S_IFCHR = 0x2000
+ S_IFDIR = 0x4000
+ S_IFBLK = 0x6000
+ S_IFREG = 0x8000
+ S_IFLNK = 0xa000
+ S_IFSOCK = 0xc000
+ S_ISUID = 0x800
+ S_ISGID = 0x400
+ S_ISVTX = 0x200
+ S_IRUSR = 0x100
+ S_IWUSR = 0x80
+ S_IXUSR = 0x40
+)
+
+type Stat_t struct {
+ Dev uint64
+ Ino uint64
+ Mode uint32
+ Nlink uint32
+ Uid uint32
+ Gid uint32
+ Rdev uint64
+ Size int64
+ Atim Timespec
+ Mtim Timespec
+ Ctim Timespec
+ Blksize int32
+ Pad_cgo_0 [4]byte
+ Blocks int64
+ Fstype [16]int8
+}
+
+type Flock_t struct {
+ Type int16
+ Whence int16
+ Pad_cgo_0 [4]byte
+ Start int64
+ Len int64
+ Sysid int32
+ Pid int32
+ Pad [4]int64
+}
+
+type Dirent struct {
+ Ino uint64
+ Off int64
+ Reclen uint16
+ Name [1]int8
+ Pad_cgo_0 [5]byte
+}
+
+type RawSockaddrInet4 struct {
+ Family uint16
+ Port uint16
+ Addr [4]byte /* in_addr */
+ Zero [8]int8
+}
+
+type RawSockaddrInet6 struct {
+ Family uint16
+ Port uint16
+ Flowinfo uint32
+ Addr [16]byte /* in6_addr */
+ Scope_id uint32
+ X__sin6_src_id uint32
+}
+
+type RawSockaddrUnix struct {
+ Family uint16
+ Path [108]int8
+}
+
+type RawSockaddrDatalink struct {
+ Family uint16
+ Index uint16
+ Type uint8
+ Nlen uint8
+ Alen uint8
+ Slen uint8
+ Data [244]int8
+}
+
+type RawSockaddr struct {
+ Family uint16
+ Data [14]int8
+}
+
+type RawSockaddrAny struct {
+ Addr RawSockaddr
+ Pad [236]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+ Onoff int32
+ Linger int32
+}
+
+type Iovec struct {
+ Base *int8
+ Len uint64
+}
+
+type IPMreq struct {
+ Multiaddr [4]byte /* in_addr */
+ Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+ Multiaddr [16]byte /* in6_addr */
+ Interface uint32
+}
+
+type Msghdr struct {
+ Name *byte
+ Namelen uint32
+ Pad_cgo_0 [4]byte
+ Iov *Iovec
+ Iovlen int32
+ Pad_cgo_1 [4]byte
+ Accrights *int8
+ Accrightslen int32
+ Pad_cgo_2 [4]byte
+}
+
+type Cmsghdr struct {
+ Len uint32
+ Level int32
+ Type int32
+}
+
+type Inet6Pktinfo struct {
+ Addr [16]byte /* in6_addr */
+ Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+ Addr RawSockaddrInet6
+ Mtu uint32
+}
+
+type ICMPv6Filter struct {
+ X__icmp6_filt [8]uint32
+}
+
+const (
+ SizeofSockaddrInet4 = 0x10
+ SizeofSockaddrInet6 = 0x20
+ SizeofSockaddrAny = 0xfc
+ SizeofSockaddrUnix = 0x6e
+ SizeofSockaddrDatalink = 0xfc
+ SizeofLinger = 0x8
+ SizeofIPMreq = 0x8
+ SizeofIPv6Mreq = 0x14
+ SizeofMsghdr = 0x30
+ SizeofCmsghdr = 0xc
+ SizeofInet6Pktinfo = 0x14
+ SizeofIPv6MTUInfo = 0x24
+ SizeofICMPv6Filter = 0x20
+)
+
+type FdSet struct {
+ Bits [1024]int64
+}
+
+type Utsname struct {
+ Sysname [257]int8
+ Nodename [257]int8
+ Release [257]int8
+ Version [257]int8
+ Machine [257]int8
+}
+
+type Ustat_t struct {
+ Tfree int64
+ Tinode uint64
+ Fname [6]int8
+ Fpack [6]int8
+ Pad_cgo_0 [4]byte
+}
+
+const (
+ AT_FDCWD = 0xffd19553
+ AT_SYMLINK_NOFOLLOW = 0x1000
+ AT_SYMLINK_FOLLOW = 0x2000
+ AT_REMOVEDIR = 0x1
+ AT_EACCESS = 0x4
+)
+
+const (
+ SizeofIfMsghdr = 0x54
+ SizeofIfData = 0x44
+ SizeofIfaMsghdr = 0x14
+ SizeofRtMsghdr = 0x4c
+ SizeofRtMetrics = 0x28
+)
+
+type IfMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Data IfData
+}
+
+type IfData struct {
+ Type uint8
+ Addrlen uint8
+ Hdrlen uint8
+ Pad_cgo_0 [1]byte
+ Mtu uint32
+ Metric uint32
+ Baudrate uint32
+ Ipackets uint32
+ Ierrors uint32
+ Opackets uint32
+ Oerrors uint32
+ Collisions uint32
+ Ibytes uint32
+ Obytes uint32
+ Imcasts uint32
+ Omcasts uint32
+ Iqdrops uint32
+ Noproto uint32
+ Lastchange Timeval32
+}
+
+type IfaMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Addrs int32
+ Flags int32
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Metric int32
+}
+
+type RtMsghdr struct {
+ Msglen uint16
+ Version uint8
+ Type uint8
+ Index uint16
+ Pad_cgo_0 [2]byte
+ Flags int32
+ Addrs int32
+ Pid int32
+ Seq int32
+ Errno int32
+ Use int32
+ Inits uint32
+ Rmx RtMetrics
+}
+
+type RtMetrics struct {
+ Locks uint32
+ Mtu uint32
+ Hopcount uint32
+ Expire uint32
+ Recvpipe uint32
+ Sendpipe uint32
+ Ssthresh uint32
+ Rtt uint32
+ Rttvar uint32
+ Pksent uint32
+}
+
+const (
+ SizeofBpfVersion = 0x4
+ SizeofBpfStat = 0x80
+ SizeofBpfProgram = 0x10
+ SizeofBpfInsn = 0x8
+ SizeofBpfHdr = 0x14
+)
+
+type BpfVersion struct {
+ Major uint16
+ Minor uint16
+}
+
+type BpfStat struct {
+ Recv uint64
+ Drop uint64
+ Capt uint64
+ Padding [13]uint64
+}
+
+type BpfProgram struct {
+ Len uint32
+ Pad_cgo_0 [4]byte
+ Insns *BpfInsn
+}
+
+type BpfInsn struct {
+ Code uint16
+ Jt uint8
+ Jf uint8
+ K uint32
+}
+
+type BpfTimeval struct {
+ Sec int32
+ Usec int32
+}
+
+type BpfHdr struct {
+ Tstamp BpfTimeval
+ Caplen uint32
+ Datalen uint32
+ Hdrlen uint16
+ Pad_cgo_0 [2]byte
+}
+
+const _SC_PAGESIZE = 0xb
+
+type Termios struct {
+ Iflag uint32
+ Oflag uint32
+ Cflag uint32
+ Lflag uint32
+ Cc [19]uint8
+ Pad_cgo_0 [1]byte
+}
+
+type Termio struct {
+ Iflag uint16
+ Oflag uint16
+ Cflag uint16
+ Lflag uint16
+ Line int8
+ Cc [8]uint8
+ Pad_cgo_0 [1]byte
+}
+
+type Winsize struct {
+ Row uint16
+ Col uint16
+ Xpixel uint16
+ Ypixel uint16
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/LICENSE b/Godeps/_workspace/src/golang.org/x/text/LICENSE
new file mode 100644
index 000000000..6a66aea5e
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/golang.org/x/text/PATENTS b/Godeps/_workspace/src/golang.org/x/text/PATENTS
new file mode 100644
index 000000000..733099041
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/charmap.go b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/charmap.go
index 6c4937886..2a953075d 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/charmap.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/charmap.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:generate go run maketables.go
+
// Package charmap provides simple character encodings such as IBM Code Page 437
// and Windows 1252.
package charmap
@@ -89,12 +91,12 @@ type charmap struct {
encode [256]uint32
}
-func (m *charmap) NewDecoder() transform.Transformer {
- return charmapDecoder{charmap: m}
+func (m *charmap) NewDecoder() *encoding.Decoder {
+ return &encoding.Decoder{Transformer: charmapDecoder{charmap: m}}
}
-func (m *charmap) NewEncoder() transform.Transformer {
- return charmapEncoder{charmap: m}
+func (m *charmap) NewEncoder() *encoding.Encoder {
+ return &encoding.Encoder{Transformer: charmapEncoder{charmap: m}}
}
func (m *charmap) String() string {
@@ -148,6 +150,7 @@ type charmapEncoder struct {
func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
r, size := rune(0), 0
+loop:
for nSrc < len(src) {
if nDst >= len(dst) {
err = transform.ErrShortDst
@@ -157,12 +160,13 @@ func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int,
// Decode a 1-byte rune.
if r < utf8.RuneSelf {
- nSrc++
if m.charmap.asciiSuperset {
+ nSrc++
dst[nDst] = uint8(r)
nDst++
continue
}
+ size = 1
} else {
// Decode a multi-byte rune.
@@ -173,23 +177,18 @@ func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int,
// full character yet.
if !atEOF && !utf8.FullRune(src[nSrc:]) {
err = transform.ErrShortSrc
- break
+ } else {
+ err = internal.RepertoireError(m.charmap.replacement)
}
- }
- nSrc += size
- if r == utf8.RuneError {
- dst[nDst] = m.charmap.replacement
- nDst++
- continue
+ break
}
}
// Binary search in [low, high) for that rune in the m.charmap.encode table.
for low, high := int(m.charmap.low), 0x100; ; {
if low >= high {
- dst[nDst] = m.charmap.replacement
- nDst++
- break
+ err = internal.RepertoireError(m.charmap.replacement)
+ break loop
}
mid := (low + high) / 2
got := m.charmap.encode[mid]
@@ -204,6 +203,7 @@ func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int,
break
}
}
+ nSrc += size
}
return nDst, nSrc, err
}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go
index fc87c2103..8e1db0202 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/maketables.go
@@ -6,9 +6,6 @@
package main
-// This program generates tables.go:
-// go run maketables.go | gofmt > tables.go
-
import (
"bufio"
"fmt"
@@ -19,6 +16,7 @@ import (
"unicode/utf8"
"golang.org/x/text/encoding"
+ "golang.org/x/text/internal/gen"
)
const ascii = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" +
@@ -41,11 +39,47 @@ var encodings = []struct {
"",
"CodePage437",
encoding.ASCIISub,
- ascii +
- "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒ" +
- "áíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐" +
- "└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀" +
- "αßΓπΣσµτΦΘΩδ∞∅∈∩≡±≥≤⌠⌡÷≈°•·√ⁿ²∎\u00a0",
+ "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM437-2.1.2.ucm",
+ },
+ {
+ "IBM Code Page 850",
+ "PC850Multilingual",
+ "",
+ "CodePage850",
+ encoding.ASCIISub,
+ "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM850-2.1.2.ucm",
+ },
+ {
+ "IBM Code Page 852",
+ "PCp852",
+ "",
+ "CodePage852",
+ encoding.ASCIISub,
+ "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM852-2.1.2.ucm",
+ },
+ {
+ "IBM Code Page 855",
+ "IBM855",
+ "",
+ "CodePage855",
+ encoding.ASCIISub,
+ "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM855-2.1.2.ucm",
+ },
+ {
+ "Windows Code Page 858", // PC latin1 with Euro
+ "IBM00858",
+ "",
+ "CodePage858",
+ encoding.ASCIISub,
+ "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/windows-858-2000.ucm",
+ },
+ {
+ "IBM Code Page 862",
+ "PC862LatinHebrew",
+ "",
+ "CodePage862",
+ encoding.ASCIISub,
+ "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM862-2.1.2.ucm",
},
{
"IBM Code Page 866",
@@ -324,23 +358,63 @@ func getWHATWG(url string) string {
return ascii + string(mapping)
}
+func getUCM(url string) string {
+ res, err := http.Get(url)
+ if err != nil {
+ log.Fatalf("%q: Get: %v", url, err)
+ }
+ defer res.Body.Close()
+
+ mapping := make([]rune, 256)
+ for i := range mapping {
+ mapping[i] = '\ufffd'
+ }
+
+ charsFound := 0
+ scanner := bufio.NewScanner(res.Body)
+ for scanner.Scan() {
+ s := strings.TrimSpace(scanner.Text())
+ if s == "" || s[0] == '#' {
+ continue
+ }
+ var c byte
+ var r rune
+ if _, err := fmt.Sscanf(s, `<U%x> \x%x |0`, &r, &c); err != nil {
+ continue
+ }
+ mapping[c] = r
+ charsFound++
+ }
+
+ if charsFound < 200 {
+ log.Fatalf("%q: only %d characters found (wrong page format?)", url, charsFound)
+ }
+
+ return string(mapping)
+}
+
func main() {
mibs := map[string]bool{}
all := []string{}
- buf := make([]byte, 8)
- fmt.Printf("// generated by go run maketables.go; DO NOT EDIT\n\n")
- fmt.Printf("package charmap\n\n")
- fmt.Printf("import (\n")
- fmt.Printf("\t\"golang.org/x/text/encoding\"\n")
- fmt.Printf("\t\"golang.org/x/text/encoding/internal/identifier\"\n")
- fmt.Printf(")\n\n")
+ w := gen.NewCodeWriter()
+ defer w.WriteGoFile("tables.go", "charmap")
+
+ printf := func(s string, a ...interface{}) { fmt.Fprintf(w, s, a...) }
+
+ printf("import (\n")
+ printf("\t\"golang.org/x/text/encoding\"\n")
+ printf("\t\"golang.org/x/text/encoding/internal/identifier\"\n")
+ printf(")\n\n")
for _, e := range encodings {
varNames := strings.Split(e.varName, ",")
all = append(all, varNames...)
varName := varNames[0]
- if strings.HasPrefix(e.mapping, "http://encoding.spec.whatwg.org/") {
+ switch {
+ case strings.HasPrefix(e.mapping, "http://encoding.spec.whatwg.org/"):
e.mapping = getWHATWG(e.mapping)
+ case strings.HasPrefix(e.mapping, "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/"):
+ e.mapping = getUCM(e.mapping)
}
asciiSuperset, low := strings.HasPrefix(e.mapping, ascii), 0x00
@@ -352,42 +426,40 @@ func main() {
lvn = 3
}
lowerVarName := strings.ToLower(varName[:lvn]) + varName[lvn:]
- fmt.Printf("// %s is the %s encoding.\n", varName, e.name)
+ printf("// %s is the %s encoding.\n", varName, e.name)
if e.comment != "" {
- fmt.Printf("//\n// %s\n", e.comment)
+ printf("//\n// %s\n", e.comment)
}
- fmt.Printf("var %s encoding.Encoding = &%s\n\nvar %s = charmap{\nname: %q,\n",
+ printf("var %s encoding.Encoding = &%s\n\nvar %s = charmap{\nname: %q,\n",
varName, lowerVarName, lowerVarName, e.name)
if mibs[e.mib] {
log.Fatalf("MIB type %q declared multiple times.", e.mib)
}
- fmt.Printf("mib: identifier.%s,\n", e.mib)
- fmt.Printf("asciiSuperset: %t,\n", asciiSuperset)
- fmt.Printf("low: 0x%02x,\n", low)
- fmt.Printf("replacement: 0x%02x,\n", e.replacement)
+ printf("mib: identifier.%s,\n", e.mib)
+ printf("asciiSuperset: %t,\n", asciiSuperset)
+ printf("low: 0x%02x,\n", low)
+ printf("replacement: 0x%02x,\n", e.replacement)
- fmt.Printf("decode: [256]utf8Enc{\n")
+ printf("decode: [256]utf8Enc{\n")
i, backMapping := 0, map[rune]byte{}
for _, c := range e.mapping {
- if _, ok := backMapping[c]; !ok {
+ if _, ok := backMapping[c]; !ok && c != utf8.RuneError {
backMapping[c] = byte(i)
}
- for j := range buf {
- buf[j] = 0
- }
- n := utf8.EncodeRune(buf, c)
+ var buf [8]byte
+ n := utf8.EncodeRune(buf[:], c)
if n > 3 {
panic(fmt.Sprintf("rune %q (%U) is too long", c, c))
}
- fmt.Printf("{%d,[3]byte{0x%02x,0x%02x,0x%02x}},", n, buf[0], buf[1], buf[2])
+ printf("{%d,[3]byte{0x%02x,0x%02x,0x%02x}},", n, buf[0], buf[1], buf[2])
if i%2 == 1 {
- fmt.Printf("\n")
+ printf("\n")
}
i++
}
- fmt.Printf("},\n")
+ printf("},\n")
- fmt.Printf("encode: [256]uint32{\n")
+ printf("encode: [256]uint32{\n")
encode := make([]uint32, 0, 256)
for c, i := range backMapping {
encode = append(encode, uint32(i)<<24|uint32(c))
@@ -397,15 +469,20 @@ func main() {
encode = append(encode, encode[len(encode)-1])
}
for i, enc := range encode {
- fmt.Printf("0x%08x,", enc)
+ printf("0x%08x,", enc)
if i%8 == 7 {
- fmt.Printf("\n")
+ printf("\n")
}
}
- fmt.Printf("},\n}\n")
+ printf("},\n}\n")
+
+ // Add an estimate of the size of a single charmap{} struct value, which
+ // includes two 256 elem arrays of 4 bytes and some extra fields, which
+ // align to 3 uint64s on 64-bit architectures.
+ w.Size += 2*4*256 + 3*8
}
// TODO: add proper line breaking.
- fmt.Printf("var listAll = []encoding.Encoding{\n%s,\n}\n\n", strings.Join(all, ",\n"))
+ printf("var listAll = []encoding.Encoding{\n%s,\n}\n\n", strings.Join(all, ",\n"))
}
type byRune []uint32
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go
index 9500728e7..4143f0662 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/charmap/tables.go
@@ -1,4 +1,4 @@
-// generated by go run maketables.go; DO NOT EDIT
+// This file was generated by go generate; DO NOT EDIT
package charmap
@@ -134,17 +134,17 @@ var codePage437 = charmap{
{2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},
{2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}},
{2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}},
- {3, [3]byte{0xe2, 0x84, 0xa6}}, {2, [3]byte{0xce, 0xb4, 0x00}},
- {3, [3]byte{0xe2, 0x88, 0x9e}}, {3, [3]byte{0xe2, 0x88, 0x85}},
- {3, [3]byte{0xe2, 0x88, 0x88}}, {3, [3]byte{0xe2, 0x88, 0xa9}},
+ {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}},
+ {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}},
+ {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}},
{3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
{3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}},
{3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},
{2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},
- {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}},
+ {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}},
{2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},
{3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}},
- {3, [3]byte{0xe2, 0x88, 0x8e}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
},
encode: [256]uint32{
0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,
@@ -170,15 +170,890 @@ var codePage437 = charmap{
0x910000e6, 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed,
0x8c0000ee, 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7,
0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398,
- 0xe40003a3, 0xe80003a6, 0xe00003b1, 0xeb0003b4, 0xe30003c0, 0xe50003c3, 0xe70003c4, 0xf9002022,
- 0xfc00207f, 0x9e0020a7, 0xea002126, 0xed002205, 0xee002208, 0xfe00220e, 0xfb00221a, 0xec00221e,
- 0xef002229, 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321,
- 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524,
- 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554,
- 0xb8002555, 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c,
- 0xbc00255d, 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564,
- 0xd2002565, 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c,
- 0xdf002580, 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593,
+ 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3,
+ 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229,
+ 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500,
+ 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c,
+ 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555,
+ 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d,
+ 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565,
+ 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580,
+ 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,
+ },
+}
+
+// CodePage850 is the IBM Code Page 850 encoding.
+var CodePage850 encoding.Encoding = &codePage850
+
+var codePage850 = charmap{
+ name: "IBM Code Page 850",
+ mib: identifier.PC850Multilingual,
+ asciiSuperset: true,
+ low: 0x80,
+ replacement: 0x1a,
+ decode: [256]utf8Enc{
+ {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+ {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+ {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+ {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+ {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+ {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+ {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+ {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+ {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+ {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+ {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+ {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},
+ {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+ {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+ {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+ {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+ {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},
+ {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+ {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},
+ {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+ {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+ {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},
+ {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},
+ {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+ {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+ {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+ {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+ {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+ {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+ {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},
+ {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},
+ {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+ {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+ {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+ {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+ {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+ {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+ {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},
+ {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},
+ {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},
+ {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},
+ {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},
+ {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},
+ {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},
+ {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},
+ {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},
+ {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+ {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+ {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+ {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+ {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+ {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+ {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+ {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},
+ {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},
+ {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},
+ {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},
+ {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},
+ {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},
+ {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},
+ {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},
+ {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},
+ {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},
+ {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+ {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},
+ {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},
+ {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}},
+ {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},
+ {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
+ {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},
+ {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}},
+ {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},
+ {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}},
+ {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},
+ {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},
+ {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},
+ {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},
+ {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}},
+ {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}},
+ {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}},
+ {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+ {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},
+ {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
+ {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},
+ {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},
+ {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},
+ {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},
+ {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},
+ {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},
+ {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}},
+ {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}},
+ {2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},
+ {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},
+ {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}},
+ {2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}},
+ {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},
+ {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},
+ {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},
+ {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},
+ {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},
+ {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},
+ {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},
+ {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}},
+ {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}},
+ {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
+ {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}},
+ {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}},
+ {2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}},
+ {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},
+ {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}},
+ {2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}},
+ {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+ {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},
+ {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},
+ {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}},
+ {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}},
+ {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},
+ {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},
+ {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}},
+ {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
+ {3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}},
+ {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+ {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},
+ {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},
+ {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},
+ {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+ },
+ encode: [256]uint32{
+ 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,
+ 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+ 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,
+ 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+ 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,
+ 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,
+ 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,
+ 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,
+ 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,
+ 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,
+ 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,
+ 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,
+ 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,
+ 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,
+ 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,
+ 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,
+ 0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7,
+ 0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af,
+ 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7,
+ 0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf,
+ 0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7,
+ 0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf,
+ 0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7,
+ 0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df,
+ 0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7,
+ 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef,
+ 0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7,
+ 0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff,
+ 0xd5000131, 0x9f000192, 0xf2002017, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514,
+ 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551,
+ 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569,
+ 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,
+ },
+}
+
+// CodePage852 is the IBM Code Page 852 encoding.
+var CodePage852 encoding.Encoding = &codePage852
+
+var codePage852 = charmap{
+ name: "IBM Code Page 852",
+ mib: identifier.PCp852,
+ asciiSuperset: true,
+ low: 0x80,
+ replacement: 0x1a,
+ decode: [256]utf8Enc{
+ {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+ {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+ {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+ {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+ {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+ {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+ {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+ {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+ {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+ {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+ {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+ {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},
+ {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+ {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+ {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+ {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+ {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},
+ {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+ {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},
+ {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+ {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+ {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},
+ {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},
+ {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+ {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+ {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+ {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+ {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+ {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+ {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},
+ {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},
+ {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+ {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+ {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+ {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+ {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+ {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+ {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},
+ {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},
+ {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},
+ {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},
+ {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},
+ {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},
+ {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},
+ {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},
+ {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},
+ {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+ {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+ {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+ {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+ {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+ {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+ {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+ {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},
+ {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},
+ {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},
+ {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},
+ {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},
+ {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},
+ {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},
+ {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},
+ {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},
+ {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},
+ {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+ {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},
+ {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},
+ {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}},
+ {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},
+ {2, [3]byte{0xc5, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
+ {2, [3]byte{0xc5, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}},
+ {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}},
+ {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}},
+ {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}},
+ {2, [3]byte{0xc4, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},
+ {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}},
+ {2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}},
+ {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},
+ {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}},
+ {2, [3]byte{0xc5, 0xa5, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}},
+ {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}},
+ {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+ {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},
+ {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}},
+ {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbe, 0x00}},
+ {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}},
+ {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}},
+ {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x9f, 0x00}},
+ {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},
+ {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},
+ {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}},
+ {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x9a, 0x00}},
+ {2, [3]byte{0xc5, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},
+ {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},
+ {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc5, 0xbb, 0x00}},
+ {2, [3]byte{0xc5, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}},
+ {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},
+ {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},
+ {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},
+ {2, [3]byte{0xc4, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}},
+ {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},
+ {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},
+ {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},
+ {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}},
+ {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}},
+ {2, [3]byte{0xc4, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
+ {2, [3]byte{0xc4, 0x8f, 0x00}}, {2, [3]byte{0xc5, 0x87, 0x00}},
+ {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}},
+ {2, [3]byte{0xc4, 0x9b, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}},
+ {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},
+ {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc5, 0xa2, 0x00}},
+ {2, [3]byte{0xc5, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}},
+ {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+ {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}},
+ {2, [3]byte{0xc5, 0x84, 0x00}}, {2, [3]byte{0xc5, 0x88, 0x00}},
+ {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}},
+ {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}},
+ {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}},
+ {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},
+ {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}},
+ {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}},
+ {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}},
+ {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+ {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},
+ {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},
+ {2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}},
+ {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x99, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+ },
+ encode: [256]uint32{
+ 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,
+ 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+ 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,
+ 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+ 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,
+ 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,
+ 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,
+ 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,
+ 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,
+ 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,
+ 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,
+ 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,
+ 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,
+ 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,
+ 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,
+ 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,
+ 0xff0000a0, 0xcf0000a4, 0xf50000a7, 0xf90000a8, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xf80000b0,
+ 0xef0000b4, 0xf70000b8, 0xaf0000bb, 0xb50000c1, 0xb60000c2, 0x8e0000c4, 0x800000c7, 0x900000c9,
+ 0xd30000cb, 0xd60000cd, 0xd70000ce, 0xe00000d3, 0xe20000d4, 0x990000d6, 0x9e0000d7, 0xe90000da,
+ 0x9a0000dc, 0xed0000dd, 0xe10000df, 0xa00000e1, 0x830000e2, 0x840000e4, 0x870000e7, 0x820000e9,
+ 0x890000eb, 0xa10000ed, 0x8c0000ee, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0xa30000fa,
+ 0x810000fc, 0xec0000fd, 0xc6000102, 0xc7000103, 0xa4000104, 0xa5000105, 0x8f000106, 0x86000107,
+ 0xac00010c, 0x9f00010d, 0xd200010e, 0xd400010f, 0xd1000110, 0xd0000111, 0xa8000118, 0xa9000119,
+ 0xb700011a, 0xd800011b, 0x91000139, 0x9200013a, 0x9500013d, 0x9600013e, 0x9d000141, 0x88000142,
+ 0xe3000143, 0xe4000144, 0xd5000147, 0xe5000148, 0x8a000150, 0x8b000151, 0xe8000154, 0xea000155,
+ 0xfc000158, 0xfd000159, 0x9700015a, 0x9800015b, 0xb800015e, 0xad00015f, 0xe6000160, 0xe7000161,
+ 0xdd000162, 0xee000163, 0x9b000164, 0x9c000165, 0xde00016e, 0x8500016f, 0xeb000170, 0xfb000171,
+ 0x8d000179, 0xab00017a, 0xbd00017b, 0xbe00017c, 0xa600017d, 0xa700017e, 0xf30002c7, 0xf40002d8,
+ 0xfa0002d9, 0xf20002db, 0xf10002dd, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514,
+ 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551,
+ 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569,
+ 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,
+ },
+}
+
+// CodePage855 is the IBM Code Page 855 encoding.
+var CodePage855 encoding.Encoding = &codePage855
+
+var codePage855 = charmap{
+ name: "IBM Code Page 855",
+ mib: identifier.IBM855,
+ asciiSuperset: true,
+ low: 0x80,
+ replacement: 0x1a,
+ decode: [256]utf8Enc{
+ {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+ {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+ {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+ {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+ {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+ {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+ {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+ {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+ {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+ {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+ {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+ {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},
+ {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+ {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+ {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+ {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+ {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},
+ {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+ {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},
+ {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+ {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+ {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},
+ {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},
+ {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+ {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+ {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+ {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+ {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+ {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+ {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},
+ {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},
+ {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+ {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+ {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+ {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+ {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+ {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+ {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},
+ {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},
+ {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},
+ {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},
+ {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},
+ {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},
+ {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},
+ {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},
+ {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},
+ {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+ {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+ {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+ {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+ {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+ {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+ {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+ {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},
+ {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},
+ {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},
+ {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},
+ {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},
+ {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},
+ {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},
+ {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},
+ {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},
+ {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},
+ {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+ {2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x82, 0x00}},
+ {2, [3]byte{0xd1, 0x93, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}},
+ {2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}},
+ {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x84, 0x00}},
+ {2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}},
+ {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}},
+ {2, [3]byte{0xd1, 0x97, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}},
+ {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}},
+ {2, [3]byte{0xd1, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}},
+ {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x8a, 0x00}},
+ {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}},
+ {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}},
+ {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}},
+ {2, [3]byte{0xd1, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}},
+ {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xae, 0x00}},
+ {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}},
+ {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}},
+ {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}},
+ {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}},
+ {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0x94, 0x00}},
+ {2, [3]byte{0xd0, 0xb5, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}},
+ {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xa4, 0x00}},
+ {2, [3]byte{0xd0, 0xb3, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}},
+ {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},
+ {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},
+ {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xd1, 0x85, 0x00}},
+ {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}},
+ {2, [3]byte{0xd0, 0x98, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},
+ {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},
+ {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xd0, 0xb9, 0x00}},
+ {2, [3]byte{0xd0, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}},
+ {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},
+ {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},
+ {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},
+ {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}},
+ {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},
+ {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},
+ {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},
+ {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}},
+ {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}},
+ {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}},
+ {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}},
+ {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}},
+ {2, [3]byte{0xd0, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}},
+ {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},
+ {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xd0, 0x9f, 0x00}},
+ {2, [3]byte{0xd1, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}},
+ {2, [3]byte{0xd0, 0xaf, 0x00}}, {2, [3]byte{0xd1, 0x80, 0x00}},
+ {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}},
+ {2, [3]byte{0xd0, 0xa1, 0x00}}, {2, [3]byte{0xd1, 0x82, 0x00}},
+ {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}},
+ {2, [3]byte{0xd0, 0xa3, 0x00}}, {2, [3]byte{0xd0, 0xb6, 0x00}},
+ {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}},
+ {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x8c, 0x00}},
+ {2, [3]byte{0xd0, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}},
+ {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}},
+ {2, [3]byte{0xd0, 0xab, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}},
+ {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}},
+ {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}},
+ {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}},
+ {2, [3]byte{0xd0, 0xa9, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}},
+ {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+ },
+ encode: [256]uint32{
+ 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,
+ 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+ 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,
+ 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+ 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,
+ 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,
+ 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,
+ 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,
+ 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,
+ 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,
+ 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,
+ 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,
+ 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,
+ 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,
+ 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,
+ 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,
+ 0xff0000a0, 0xcf0000a4, 0xfd0000a7, 0xae0000ab, 0xf00000ad, 0xaf0000bb, 0x85000401, 0x81000402,
+ 0x83000403, 0x87000404, 0x89000405, 0x8b000406, 0x8d000407, 0x8f000408, 0x91000409, 0x9300040a,
+ 0x9500040b, 0x9700040c, 0x9900040e, 0x9b00040f, 0xa1000410, 0xa3000411, 0xec000412, 0xad000413,
+ 0xa7000414, 0xa9000415, 0xea000416, 0xf4000417, 0xb8000418, 0xbe000419, 0xc700041a, 0xd100041b,
+ 0xd300041c, 0xd500041d, 0xd700041e, 0xdd00041f, 0xe2000420, 0xe4000421, 0xe6000422, 0xe8000423,
+ 0xab000424, 0xb6000425, 0xa5000426, 0xfc000427, 0xf6000428, 0xfa000429, 0x9f00042a, 0xf200042b,
+ 0xee00042c, 0xf800042d, 0x9d00042e, 0xe000042f, 0xa0000430, 0xa2000431, 0xeb000432, 0xac000433,
+ 0xa6000434, 0xa8000435, 0xe9000436, 0xf3000437, 0xb7000438, 0xbd000439, 0xc600043a, 0xd000043b,
+ 0xd200043c, 0xd400043d, 0xd600043e, 0xd800043f, 0xe1000440, 0xe3000441, 0xe5000442, 0xe7000443,
+ 0xaa000444, 0xb5000445, 0xa4000446, 0xfb000447, 0xf5000448, 0xf9000449, 0x9e00044a, 0xf100044b,
+ 0xed00044c, 0xf700044d, 0x9c00044e, 0xde00044f, 0x84000451, 0x80000452, 0x82000453, 0x86000454,
+ 0x88000455, 0x8a000456, 0x8c000457, 0x8e000458, 0x90000459, 0x9200045a, 0x9400045b, 0x9600045c,
+ 0x9800045e, 0x9a00045f, 0xef002116, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514,
+ 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551,
+ 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569,
+ 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,
+ },
+}
+
+// CodePage858 is the Windows Code Page 858 encoding.
+var CodePage858 encoding.Encoding = &codePage858
+
+var codePage858 = charmap{
+ name: "Windows Code Page 858",
+ mib: identifier.IBM00858,
+ asciiSuperset: true,
+ low: 0x80,
+ replacement: 0x1a,
+ decode: [256]utf8Enc{
+ {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+ {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+ {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+ {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+ {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+ {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+ {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+ {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+ {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+ {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+ {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+ {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},
+ {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+ {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+ {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+ {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+ {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},
+ {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+ {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},
+ {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+ {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+ {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},
+ {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},
+ {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+ {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+ {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+ {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+ {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+ {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+ {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},
+ {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},
+ {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+ {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+ {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+ {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+ {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+ {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+ {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},
+ {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},
+ {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},
+ {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},
+ {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},
+ {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},
+ {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},
+ {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},
+ {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},
+ {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+ {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+ {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+ {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+ {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+ {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+ {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+ {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},
+ {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},
+ {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},
+ {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},
+ {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},
+ {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},
+ {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},
+ {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},
+ {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},
+ {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},
+ {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+ {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}},
+ {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}},
+ {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}},
+ {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},
+ {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
+ {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},
+ {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}},
+ {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},
+ {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}},
+ {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},
+ {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},
+ {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},
+ {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}},
+ {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}},
+ {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}},
+ {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}},
+ {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+ {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},
+ {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
+ {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},
+ {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},
+ {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},
+ {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},
+ {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},
+ {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},
+ {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}},
+ {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}},
+ {2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},
+ {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},
+ {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}},
+ {2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}},
+ {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},
+ {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},
+ {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},
+ {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},
+ {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},
+ {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},
+ {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},
+ {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}},
+ {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}},
+ {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
+ {2, [3]byte{0xc3, 0x88, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}},
+ {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}},
+ {2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}},
+ {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},
+ {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}},
+ {2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}},
+ {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+ {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},
+ {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},
+ {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}},
+ {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}},
+ {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},
+ {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},
+ {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}},
+ {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
+ {3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}},
+ {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+ {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},
+ {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},
+ {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},
+ {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+ },
+ encode: [256]uint32{
+ 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,
+ 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+ 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,
+ 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+ 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,
+ 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,
+ 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,
+ 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,
+ 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,
+ 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,
+ 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,
+ 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,
+ 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,
+ 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,
+ 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,
+ 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,
+ 0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7,
+ 0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af,
+ 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7,
+ 0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf,
+ 0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7,
+ 0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf,
+ 0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7,
+ 0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df,
+ 0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7,
+ 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef,
+ 0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7,
+ 0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff,
+ 0x9f000192, 0xf2002017, 0xd50020ac, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514,
+ 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551,
+ 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569,
+ 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,
+ },
+}
+
+// CodePage862 is the IBM Code Page 862 encoding.
+var CodePage862 encoding.Encoding = &codePage862
+
+var codePage862 = charmap{
+ name: "IBM Code Page 862",
+ mib: identifier.PC862LatinHebrew,
+ asciiSuperset: true,
+ low: 0x80,
+ replacement: 0x1a,
+ decode: [256]utf8Enc{
+ {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+ {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+ {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+ {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+ {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+ {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+ {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+ {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+ {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+ {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+ {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+ {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},
+ {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+ {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+ {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+ {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+ {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},
+ {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+ {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},
+ {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+ {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+ {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},
+ {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},
+ {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+ {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+ {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+ {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+ {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+ {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+ {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},
+ {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},
+ {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+ {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+ {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+ {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+ {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+ {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+ {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},
+ {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},
+ {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},
+ {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},
+ {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},
+ {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},
+ {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},
+ {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},
+ {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},
+ {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+ {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+ {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+ {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+ {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+ {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+ {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+ {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},
+ {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},
+ {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},
+ {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},
+ {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},
+ {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},
+ {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},
+ {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},
+ {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},
+ {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},
+ {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+ {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}},
+ {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}},
+ {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}},
+ {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}},
+ {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}},
+ {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}},
+ {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}},
+ {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}},
+ {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}},
+ {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}},
+ {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}},
+ {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}},
+ {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}},
+ {2, [3]byte{0xd7, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}},
+ {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},
+ {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}},
+ {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+ {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}},
+ {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
+ {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},
+ {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}},
+ {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},
+ {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},
+ {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}},
+ {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}},
+ {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}},
+ {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}},
+ {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}},
+ {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}},
+ {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}},
+ {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}},
+ {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}},
+ {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}},
+ {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}},
+ {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}},
+ {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}},
+ {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}},
+ {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}},
+ {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}},
+ {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}},
+ {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}},
+ {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}},
+ {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}},
+ {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}},
+ {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}},
+ {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}},
+ {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}},
+ {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+ {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}},
+ {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}},
+ {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}},
+ {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}},
+ {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}},
+ {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}},
+ {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}},
+ {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
+ {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}},
+ {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}},
+ {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}},
+ {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}},
+ {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}},
+ {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}},
+ {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+ },
+ encode: [256]uint32{
+ 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,
+ 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+ 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,
+ 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+ 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,
+ 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,
+ 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,
+ 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,
+ 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,
+ 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,
+ 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,
+ 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,
+ 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,
+ 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,
+ 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,
+ 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,
+ 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac,
+ 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc,
+ 0xab0000bd, 0xa80000bf, 0xa50000d1, 0xe10000df, 0xa00000e1, 0xa10000ed, 0xa40000f1, 0xa20000f3,
+ 0xf60000f7, 0xa30000fa, 0x9f000192, 0xe2000393, 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9,
+ 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, 0xe70003c4, 0xed0003c6, 0x800005d0,
+ 0x810005d1, 0x820005d2, 0x830005d3, 0x840005d4, 0x850005d5, 0x860005d6, 0x870005d7, 0x880005d8,
+ 0x890005d9, 0x8a0005da, 0x8b0005db, 0x8c0005dc, 0x8d0005dd, 0x8e0005de, 0x8f0005df, 0x900005e0,
+ 0x910005e1, 0x920005e2, 0x930005e3, 0x940005e4, 0x950005e5, 0x960005e6, 0x970005e7, 0x980005e8,
+ 0x990005e9, 0x9a0005ea, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229,
+ 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500,
+ 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c,
+ 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555,
+ 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d,
+ 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565,
+ 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580,
+ 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0,
},
}
@@ -525,10 +1400,10 @@ var iso8859_2 = charmap{
0xb600015b, 0xaa00015e, 0xba00015f, 0xa9000160, 0xb9000161, 0xde000162, 0xfe000163, 0xab000164,
0xbb000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0xac000179, 0xbc00017a, 0xaf00017b,
0xbf00017c, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xa20002d8, 0xff0002d9, 0xb20002db, 0xbd0002dd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd,
+ 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd,
+ 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd,
+ 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd,
},
}
@@ -699,11 +1574,11 @@ var iso8859_3 = charmap{
0xe500010b, 0xd800011c, 0xf800011d, 0xab00011e, 0xbb00011f, 0xd5000120, 0xf5000121, 0xa6000124,
0xb6000125, 0xa1000126, 0xb1000127, 0xa9000130, 0xb9000131, 0xac000134, 0xbc000135, 0xde00015c,
0xfe00015d, 0xaa00015e, 0xba00015f, 0xdd00016c, 0xfd00016d, 0xaf00017b, 0xbf00017c, 0xa20002d8,
- 0xff0002d9, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,
+ 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,
+ 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,
+ 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,
+ 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9,
},
}
@@ -875,10 +1750,10 @@ var iso8859_4 = charmap{
0xb600013c, 0xd1000145, 0xf1000146, 0xbd00014a, 0xbf00014b, 0xd200014c, 0xf200014d, 0xa3000156,
0xb3000157, 0xa9000160, 0xb9000161, 0xac000166, 0xbc000167, 0xdd000168, 0xfd000169, 0xde00016a,
0xfe00016b, 0xd9000172, 0xf9000173, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xff0002d9, 0xb20002db,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db,
+ 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db,
+ 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db,
+ 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db,
},
}
@@ -1050,10 +1925,10 @@ var iso8859_5 = charmap{
0xe7000447, 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e,
0xef00044f, 0xf1000451, 0xf2000452, 0xf3000453, 0xf4000454, 0xf5000455, 0xf6000456, 0xf7000457,
0xf8000458, 0xf9000459, 0xfa00045a, 0xfb00045b, 0xfc00045c, 0xfe00045e, 0xff00045f, 0xf0002116,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116,
+ 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116,
+ 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116,
+ 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116,
},
}
@@ -1219,16 +2094,16 @@ var iso8859_6 = charmap{
0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636, 0xd7000637, 0xd8000638, 0xd9000639, 0xda00063a,
0xe0000640, 0xe1000641, 0xe2000642, 0xe3000643, 0xe4000644, 0xe5000645, 0xe6000646, 0xe7000647,
0xe8000648, 0xe9000649, 0xea00064a, 0xeb00064b, 0xec00064c, 0xed00064d, 0xee00064e, 0xef00064f,
- 0xf0000650, 0xf1000651, 0xf2000652, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xf0000650, 0xf1000651, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
+ 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652,
},
}
@@ -1399,11 +2274,11 @@ var iso8859_7 = charmap{
0xe70003b7, 0xe80003b8, 0xe90003b9, 0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be,
0xef0003bf, 0xf00003c0, 0xf10003c1, 0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6,
0xf70003c7, 0xf80003c8, 0xf90003c9, 0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce,
- 0xaf002015, 0xa1002018, 0xa2002019, 0xa40020ac, 0xa50020af, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xaf002015, 0xa1002018, 0xa2002019, 0xa40020ac, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,
+ 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,
+ 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,
+ 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,
+ 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af,
},
}
@@ -1570,15 +2445,15 @@ var iso8859_8 = charmap{
0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9,
0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1,
0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9,
- 0xfa0005ea, 0xfd00200e, 0xfe00200f, 0xdf002017, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xfa0005ea, 0xfd00200e, 0xfe00200f, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
+ 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
+ 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
+ 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
+ 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
+ 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
+ 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
+ 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
+ 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017,
},
}
@@ -1750,10 +2625,10 @@ var iso8859_10 = charmap{
0xa6000136, 0xb6000137, 0xff000138, 0xa800013b, 0xb800013c, 0xd1000145, 0xf1000146, 0xaf00014a,
0xbf00014b, 0xd200014c, 0xf200014d, 0xaa000160, 0xba000161, 0xab000166, 0xbb000167, 0xd7000168,
0xf7000169, 0xae00016a, 0xbe00016b, 0xd9000172, 0xf9000173, 0xac00017d, 0xbc00017e, 0xbd002015,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015,
+ 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015,
+ 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015,
+ 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015,
},
}
@@ -1925,10 +2800,10 @@ var iso8859_13 = charmap{
0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d, 0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b,
0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b, 0xd8000172, 0xf8000173, 0xca000179, 0xea00017a,
0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e, 0xff002019, 0xb400201c, 0xa100201d, 0xa500201e,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e,
+ 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e,
+ 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e,
+ 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e,
},
}
@@ -2100,10 +2975,10 @@ var iso8859_14 = charmap{
0xfe000177, 0xaf000178, 0xa1001e02, 0xa2001e03, 0xa6001e0a, 0xab001e0b, 0xb0001e1e, 0xb1001e1f,
0xb4001e40, 0xb5001e41, 0xb7001e56, 0xb9001e57, 0xbb001e60, 0xbf001e61, 0xd7001e6a, 0xf7001e6b,
0xa8001e80, 0xb8001e81, 0xaa001e82, 0xba001e83, 0xbd001e84, 0xbe001e85, 0xac001ef2, 0xbc001ef3,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3,
+ 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3,
+ 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3,
+ 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3,
},
}
@@ -2275,10 +3150,10 @@ var iso8859_15 = charmap{
0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7,
0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff,
0xbc000152, 0xbd000153, 0xa6000160, 0xa8000161, 0xbe000178, 0xb400017d, 0xb800017e, 0xa40020ac,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,
+ 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,
+ 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,
+ 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,
},
}
@@ -2450,10 +3325,10 @@ var iso8859_16 = charmap{
0xd5000150, 0xf5000151, 0xbc000152, 0xbd000153, 0xd700015a, 0xf700015b, 0xa6000160, 0xa8000161,
0xd8000170, 0xf8000171, 0xbe000178, 0xac000179, 0xae00017a, 0xaf00017b, 0xbf00017c, 0xb400017d,
0xb800017e, 0xaa000218, 0xba000219, 0xde00021a, 0xfe00021b, 0xb500201d, 0xa500201e, 0xa40020ac,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
- 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd, 0x8000fffd,
+ 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,
+ 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,
+ 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,
+ 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac,
},
}
@@ -2729,7 +3604,7 @@ var koi8U = charmap{
{3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}},
{3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}},
{3, [3]byte{0xe2, 0x95, 0x9b}}, {2, [3]byte{0xd2, 0x91, 0x00}},
- {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9e}},
+ {2, [3]byte{0xd1, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x9e}},
{3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}},
{3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}},
{2, [3]byte{0xd0, 0x84, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}},
@@ -2737,7 +3612,7 @@ var koi8U = charmap{
{3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}},
{3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}},
{3, [3]byte{0xe2, 0x95, 0xaa}}, {2, [3]byte{0xd2, 0x90, 0x00}},
- {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa9, 0x00}},
+ {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},
{2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}},
{2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}},
{2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}},
@@ -2789,20 +3664,20 @@ var koi8U = charmap{
0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,
0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,
0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xb4000404,
- 0xb6000406, 0xb7000407, 0xe1000410, 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414, 0xe5000415,
- 0xf6000416, 0xfa000417, 0xe9000418, 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c, 0xee00041d,
- 0xef00041e, 0xf000041f, 0xf2000420, 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424, 0xe8000425,
- 0xe3000426, 0xfe000427, 0xfb000428, 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c, 0xfc00042d,
- 0xe000042e, 0xf100042f, 0xc1000430, 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434, 0xc5000435,
- 0xd6000436, 0xda000437, 0xc9000438, 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c, 0xce00043d,
- 0xcf00043e, 0xd000043f, 0xd2000440, 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444, 0xc8000445,
- 0xc3000446, 0xde000447, 0xdb000448, 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c, 0xdc00044d,
- 0xc000044e, 0xd100044f, 0xa3000451, 0xa4000454, 0xa6000456, 0xa7000457, 0xbd000490, 0xad000491,
- 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320, 0x9b002321, 0x80002500,
- 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c, 0x87002524, 0x8800252c,
- 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa5002554, 0xa8002557, 0xa9002558,
- 0xaa002559, 0xab00255a, 0xac00255b, 0xae00255d, 0xaf00255e, 0xb000255f, 0xb1002560, 0xb2002561,
- 0xb5002563, 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0xbe00256c, 0x8b002580,
+ 0xb6000406, 0xb7000407, 0xbe00040e, 0xe1000410, 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414,
+ 0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418, 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c,
+ 0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420, 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424,
+ 0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428, 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c,
+ 0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430, 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434,
+ 0xc5000435, 0xd6000436, 0xda000437, 0xc9000438, 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c,
+ 0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440, 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444,
+ 0xc8000445, 0xc3000446, 0xde000447, 0xdb000448, 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c,
+ 0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451, 0xa4000454, 0xa6000456, 0xa7000457, 0xae00045e,
+ 0xbd000490, 0xad000491, 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320,
+ 0x9b002321, 0x80002500, 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c,
+ 0x87002524, 0x8800252c, 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa5002554,
+ 0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xaf00255e, 0xb000255f, 0xb1002560,
+ 0xb2002561, 0xb5002563, 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0x8b002580,
0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0,
},
}
@@ -3325,10 +4200,10 @@ var windows874 = charmap{
0xec000e4c, 0xed000e4d, 0xee000e4e, 0xef000e4f, 0xf0000e50, 0xf1000e51, 0xf2000e52, 0xf3000e53,
0xf4000e54, 0xf5000e55, 0xf6000e56, 0xf7000e57, 0xf8000e58, 0xf9000e59, 0xfa000e5a, 0xfb000e5b,
0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x9300201c, 0x9400201d, 0x95002022, 0x85002026,
- 0x800020ac, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
+ 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac,
+ 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac,
+ 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac,
+ 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac,
},
}
@@ -3503,7 +4378,7 @@ var windows1250 = charmap{
0x9f00017a, 0xaf00017b, 0xbf00017c, 0x8e00017d, 0x9e00017e, 0xa10002c7, 0xa20002d8, 0xff0002d9,
0xb20002db, 0xbd0002dd, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c,
0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039,
- 0x9b00203a, 0x800020ac, 0x99002122, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
+ 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
},
}
@@ -3678,7 +4553,7 @@ var windows1251 = charmap{
0xba000454, 0xbe000455, 0xb3000456, 0xbf000457, 0xbc000458, 0x9a000459, 0x9c00045a, 0x9e00045b,
0x9d00045c, 0xa200045e, 0x9f00045f, 0xa5000490, 0xb4000491, 0x96002013, 0x97002014, 0x91002018,
0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022,
- 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x880020ac, 0xb9002116, 0x99002122, 0x9800fffd,
+ 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x880020ac, 0xb9002116, 0x99002122, 0x99002122,
},
}
@@ -3853,7 +4728,7 @@ var windows1252 = charmap{
0x8c000152, 0x9c000153, 0x8a000160, 0x9a000161, 0x9f000178, 0x8e00017d, 0x9e00017e, 0x83000192,
0x880002c6, 0x980002dc, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c,
0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039,
- 0x9b00203a, 0x800020ac, 0x99002122, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
+ 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
},
}
@@ -4026,9 +4901,9 @@ var windows1253 = charmap{
0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6, 0xf70003c7, 0xf80003c8, 0xf90003c9,
0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce, 0x96002013, 0x97002014, 0xaf002015,
0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021,
- 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
+ 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
},
}
@@ -4203,7 +5078,7 @@ var windows1254 = charmap{
0xde00015e, 0xfe00015f, 0x8a000160, 0x9a000161, 0x9f000178, 0x83000192, 0x880002c6, 0x980002dc,
0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e,
0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac,
- 0x99002122, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
},
}
@@ -4376,9 +5251,9 @@ var windows1255 = charmap{
0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f, 0x96002013,
0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020,
0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa, 0x800020ac,
- 0x99002122, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
},
}
@@ -4727,8 +5602,8 @@ var windows1257 = charmap{
0xd8000172, 0xf8000173, 0xca000179, 0xea00017a, 0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e,
0x8e0002c7, 0xff0002d9, 0x9e0002db, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a,
0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030,
- 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
+ 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
},
}
@@ -4902,8 +5777,8 @@ var windows1258 = charmap{
0x9f000178, 0x83000192, 0xd50001a0, 0xf50001a1, 0xdd0001af, 0xfd0001b0, 0x880002c6, 0x980002dc,
0xcc000300, 0xec000301, 0xde000303, 0xd2000309, 0xf2000323, 0x96002013, 0x97002014, 0x91002018,
0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022,
- 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xfe0020ab, 0x800020ac, 0x99002122, 0x8100fffd,
- 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd, 0x8100fffd,
+ 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xfe0020ab, 0x800020ac, 0x99002122, 0x99002122,
+ 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
},
}
@@ -5085,14 +5960,23 @@ var xUserDefined = charmap{
}
var listAll = []encoding.Encoding{
CodePage437,
+ CodePage850,
+ CodePage852,
+ CodePage855,
+ CodePage858,
+ CodePage862,
CodePage866,
ISO8859_2,
ISO8859_3,
ISO8859_4,
ISO8859_5,
- ISO8859_6, ISO8859_6E, ISO8859_6I,
+ ISO8859_6,
+ ISO8859_6E,
+ ISO8859_6I,
ISO8859_7,
- ISO8859_8, ISO8859_8E, ISO8859_8I,
+ ISO8859_8,
+ ISO8859_8E,
+ ISO8859_8I,
ISO8859_10,
ISO8859_13,
ISO8859_14,
@@ -5114,3 +5998,5 @@ var listAll = []encoding.Encoding{
Windows1258,
XUserDefined,
}
+
+// Total table size 70448 bytes (68KiB); checksum: 811C9DC5
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go b/Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go
index 2f99a02ac..47fcd1fb1 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/encoding.go
@@ -5,12 +5,6 @@
// Package encoding defines an interface for character encodings, such as Shift
// JIS and Windows 1252, that can convert to and from UTF-8.
//
-// To convert the bytes of an io.Reader r from the encoding e to UTF-8:
-// rInUTF8 := transform.NewReader(r, e.NewDecoder())
-// and to convert from UTF-8 to the encoding e:
-// wInUTF8 := transform.NewWriter(w, e.NewEncoder())
-// In both cases, import "golang.org/x/text/transform".
-//
// Encoding implementations are provided in other packages, such as
// golang.org/x/text/encoding/charmap and
// golang.org/x/text/encoding/japanese.
@@ -18,31 +12,115 @@ package encoding
import (
"errors"
+ "io"
+ "strconv"
"unicode/utf8"
+ "golang.org/x/text/encoding/internal/identifier"
"golang.org/x/text/transform"
)
+// TODO:
+// - There seems to be some inconsistency in when decoders return errors
+// and when not. Also documentation seems to suggest they shouldn't return
+// errors at all (except for UTF-16).
+// - Encoders seem to rely on or at least benefit from the input being in NFC
+// normal form. Perhaps add an example how users could prepare their output.
+
// Encoding is a character set encoding that can be transformed to and from
// UTF-8.
type Encoding interface {
- // NewDecoder returns a transformer that converts to UTF-8.
- //
- // Transforming source bytes that are not of that encoding will not
- // result in an error per se. Each byte that cannot be transcoded will
- // be represented in the output by the UTF-8 encoding of '\uFFFD', the
- // replacement rune.
- NewDecoder() transform.Transformer
-
- // NewEncoder returns a transformer that converts from UTF-8.
- //
- // Transforming source bytes that are not valid UTF-8 will not result in
- // an error per se. Each rune that cannot be transcoded will be
- // represented in the output by an encoding-specific replacement such as
- // "\x1a" (the ASCII substitute character) or "\xff\xfd". To return
- // early with error instead, use transform.Chain to preprocess the data
- // with a UTF8Validator.
- NewEncoder() transform.Transformer
+ // NewDecoder returns a Decoder.
+ NewDecoder() *Decoder
+
+ // NewEncoder returns an Encoder.
+ NewEncoder() *Encoder
+}
+
+// A Decoder converts bytes to UTF-8. It implements transform.Transformer.
+//
+// Transforming source bytes that are not of that encoding will not result in an
+// error per se. Each byte that cannot be transcoded will be represented in the
+// output by the UTF-8 encoding of '\uFFFD', the replacement rune.
+type Decoder struct {
+ transform.Transformer
+
+ // This forces external creators of Decoders to use names in struct
+ // initializers, allowing for future extendibility without having to break
+ // code.
+ _ struct{}
+}
+
+// Bytes converts the given encoded bytes to UTF-8. It returns the converted
+// bytes or 0, err if any error occurred.
+func (d *Decoder) Bytes(b []byte) ([]byte, error) {
+ b, _, err := transform.Bytes(d, b)
+ if err != nil {
+ return nil, err
+ }
+ return b, nil
+}
+
+// String converts the given encoded string to UTF-8. It returns the converted
+// string or 0, err if any error occurred.
+func (d *Decoder) String(s string) (string, error) {
+ s, _, err := transform.String(d, s)
+ if err != nil {
+ return "", err
+ }
+ return s, nil
+}
+
+// Reader wraps another Reader to decode its bytes.
+//
+// The Decoder may not be used for any other operation as long as the returned
+// Reader is in use.
+func (d *Decoder) Reader(r io.Reader) io.Reader {
+ return transform.NewReader(r, d)
+}
+
+// An Encoder converts bytes from UTF-8. It implements transform.Transformer.
+//
+// Each rune that cannot be transcoded will result in an error. In this case,
+// the transform will consume all source byte up to, not including the offending
+// rune. Transforming source bytes that are not valid UTF-8 will be replaced by
+// `\uFFFD`. To return early with an error instead, use transform.Chain to
+// preprocess the data with a UTF8Validator.
+type Encoder struct {
+ transform.Transformer
+
+ // This forces external creators of Encoders to use names in struct
+ // initializers, allowing for future extendibility without having to break
+ // code.
+ _ struct{}
+}
+
+// Bytes converts bytes from UTF-8. It returns the converted bytes or 0, err if
+// any error occurred.
+func (e *Encoder) Bytes(b []byte) ([]byte, error) {
+ b, _, err := transform.Bytes(e, b)
+ if err != nil {
+ return nil, err
+ }
+ return b, nil
+}
+
+// String converts a string from UTF-8. It returns the converted string or
+// 0, err if any error occurred.
+func (e *Encoder) String(s string) (string, error) {
+ s, _, err := transform.String(e, s)
+ if err != nil {
+ return "", err
+ }
+ return s, nil
+}
+
+// Writer wraps another Writer to encode its UTF-8 output.
+//
+// The Encoder may not be used for any other operation as long as the returned
+// Writer is in use.
+func (e *Encoder) Writer(w io.Writer) io.Writer {
+ return transform.NewWriter(w, e)
}
// ASCIISub is the ASCII substitute character, as recommended by
@@ -55,12 +133,11 @@ var Nop Encoding = nop{}
type nop struct{}
-func (nop) NewDecoder() transform.Transformer {
- return transform.Nop
+func (nop) NewDecoder() *Decoder {
+ return &Decoder{Transformer: transform.Nop}
}
-
-func (nop) NewEncoder() transform.Transformer {
- return transform.Nop
+func (nop) NewEncoder() *Encoder {
+ return &Encoder{Transformer: transform.Nop}
}
// Replacement is the replacement encoding. Decoding from the replacement
@@ -73,12 +150,16 @@ var Replacement Encoding = replacement{}
type replacement struct{}
-func (replacement) NewDecoder() transform.Transformer {
- return replacementDecoder{}
+func (replacement) NewDecoder() *Decoder {
+ return &Decoder{Transformer: replacementDecoder{}}
+}
+
+func (replacement) NewEncoder() *Encoder {
+ return &Encoder{Transformer: replacementEncoder{}}
}
-func (replacement) NewEncoder() transform.Transformer {
- return replacementEncoder{}
+func (replacement) ID() (mib identifier.MIB, other string) {
+ return identifier.Replacement, ""
}
type replacementDecoder struct{ transform.NopResetter }
@@ -133,6 +214,81 @@ func (replacementEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int
return nDst, nSrc, err
}
+// HTMLEscapeUnsupported wraps encoders to replace source runes outside the
+// repertoire of the destination encoding with HTML escape sequences.
+//
+// This wrapper exists to comply to URL and HTML forms requiring a
+// non-terminating legacy encoder. The produced sequences may lead to data
+// loss as they are indistinguishable from legitimate input. To avoid this
+// issue, use UTF-8 encodings whenever possible.
+func HTMLEscapeUnsupported(e *Encoder) *Encoder {
+ return &Encoder{Transformer: &errorHandler{e, errorToHTML}}
+}
+
+// ReplaceUnsupported wraps encoders to replace source runes outside the
+// repertoire of the destination encoding with an encoding-specific
+// replacement.
+//
+// This wrapper is only provided for backwards compatibility and legacy
+// handling. Its use is strongly discouraged. Use UTF-8 whenever possible.
+func ReplaceUnsupported(e *Encoder) *Encoder {
+ return &Encoder{Transformer: &errorHandler{e, errorToReplacement}}
+}
+
+type errorHandler struct {
+ *Encoder
+ handler func(dst []byte, r rune, err repertoireError) (n int, ok bool)
+}
+
+// TODO: consider making this error public in some form.
+type repertoireError interface {
+ Replacement() byte
+}
+
+func (h errorHandler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+ nDst, nSrc, err = h.Transformer.Transform(dst, src, atEOF)
+ for err != nil {
+ rerr, ok := err.(repertoireError)
+ if !ok {
+ return nDst, nSrc, err
+ }
+ r, sz := utf8.DecodeRune(src[nSrc:])
+ n, ok := h.handler(dst[nDst:], r, rerr)
+ if !ok {
+ return nDst, nSrc, transform.ErrShortDst
+ }
+ err = nil
+ nDst += n
+ if nSrc += sz; nSrc < len(src) {
+ var dn, sn int
+ dn, sn, err = h.Transformer.Transform(dst[nDst:], src[nSrc:], atEOF)
+ nDst += dn
+ nSrc += sn
+ }
+ }
+ return nDst, nSrc, err
+}
+
+func errorToHTML(dst []byte, r rune, err repertoireError) (n int, ok bool) {
+ buf := [8]byte{}
+ b := strconv.AppendUint(buf[:0], uint64(r), 10)
+ if n = len(b) + len("&#;"); n >= len(dst) {
+ return 0, false
+ }
+ dst[0] = '&'
+ dst[1] = '#'
+ dst[copy(dst[2:], b)+2] = ';'
+ return n, true
+}
+
+func errorToReplacement(dst []byte, r rune, err repertoireError) (n int, ok bool) {
+ if len(dst) == 0 {
+ return 0, false
+ }
+ dst[0] = err.Replacement()
+ return 1, true
+}
+
// ErrInvalidUTF8 means that a transformer encountered invalid UTF-8.
var ErrInvalidUTF8 = errors.New("encoding: invalid UTF-8")
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/encoding_test.go b/Godeps/_workspace/src/golang.org/x/text/encoding/encoding_test.go
deleted file mode 100644
index a5a96d104..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/encoding_test.go
+++ /dev/null
@@ -1,1033 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package encoding_test
-
-import (
- "bytes"
- "fmt"
- "io"
- "io/ioutil"
- "strings"
- "testing"
-
- "golang.org/x/text/encoding"
- "golang.org/x/text/encoding/charmap"
- "golang.org/x/text/encoding/japanese"
- "golang.org/x/text/encoding/korean"
- "golang.org/x/text/encoding/simplifiedchinese"
- "golang.org/x/text/encoding/traditionalchinese"
- "golang.org/x/text/encoding/unicode"
- "golang.org/x/text/transform"
-)
-
-func trim(s string) string {
- if len(s) < 120 {
- return s
- }
- return s[:50] + "..." + s[len(s)-50:]
-}
-
-var basicTestCases = []struct {
- e encoding.Encoding
- encPrefix string
- encoded string
- utf8 string
-}{
- // The encoded forms can be verified by the iconv program:
- // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd
-
- // Charmap tests.
- {
- e: charmap.CodePage437,
- encoded: "H\x82ll\x93 \x9d\xa7\xf4\x9c\xbe",
- utf8: "Héllô ¥º⌠£╛",
- },
- {
- e: charmap.CodePage866,
- encoded: "H\xf3\xd3o \x98\xfd\x9f\xdd\xa1",
- utf8: "Hє╙o Ш¤Я▌б",
- },
- {
- e: charmap.ISO8859_2,
- encoded: "Hel\xe5\xf5",
- utf8: "Helĺő",
- },
- {
- e: charmap.ISO8859_3,
- encoded: "He\xbd\xd4",
- utf8: "He½Ô",
- },
- {
- e: charmap.ISO8859_4,
- encoded: "Hel\xb6\xf8",
- utf8: "Helļø",
- },
- {
- e: charmap.ISO8859_5,
- encoded: "H\xd7\xc6o",
- utf8: "HзЦo",
- },
- {
- e: charmap.ISO8859_6,
- encoded: "Hel\xc2\xc9",
- utf8: "Helآة",
- },
- {
- e: charmap.ISO8859_7,
- encoded: "H\xeel\xebo",
- utf8: "Hξlλo",
- },
- {
- e: charmap.ISO8859_8,
- encoded: "Hel\xf5\xed",
- utf8: "Helץם",
- },
- {
- e: charmap.ISO8859_10,
- encoded: "H\xea\xbfo",
- utf8: "Hęŋo",
- },
- {
- e: charmap.ISO8859_13,
- encoded: "H\xe6l\xf9o",
- utf8: "Hęlło",
- },
- {
- e: charmap.ISO8859_14,
- encoded: "He\xfe\xd0o",
- utf8: "HeŷŴo",
- },
- {
- e: charmap.ISO8859_15,
- encoded: "H\xa4ll\xd8",
- utf8: "H€llØ",
- },
- {
- e: charmap.ISO8859_16,
- encoded: "H\xe6ll\xbd",
- utf8: "Hællœ",
- },
- {
- e: charmap.KOI8R,
- encoded: "He\x93\xad\x9c",
- utf8: "He⌠╜°",
- },
- {
- e: charmap.KOI8U,
- encoded: "He\x93\xad\x9c",
- utf8: "He⌠ґ°",
- },
- {
- e: charmap.Macintosh,
- encoded: "He\xdf\xd7",
- utf8: "Hefl◊",
- },
- {
- e: charmap.MacintoshCyrillic,
- encoded: "He\xbe\x94",
- utf8: "HeЊФ",
- },
- {
- e: charmap.Windows874,
- encoded: "He\xb7\xf0",
- utf8: "Heท๐",
- },
- {
- e: charmap.Windows1250,
- encoded: "He\xe5\xe5o",
- utf8: "Heĺĺo",
- },
- {
- e: charmap.Windows1251,
- encoded: "H\xball\xfe",
- utf8: "Hєllю",
- },
- {
- e: charmap.Windows1252,
- encoded: "H\xe9ll\xf4 \xa5\xbA\xae\xa3\xd0",
- utf8: "Héllô ¥º®£Ð",
- },
- {
- e: charmap.Windows1253,
- encoded: "H\xe5ll\xd6",
- utf8: "HεllΦ",
- },
- {
- e: charmap.Windows1254,
- encoded: "\xd0ello",
- utf8: "Ğello",
- },
- {
- e: charmap.Windows1255,
- encoded: "He\xd4o",
- utf8: "Heװo",
- },
- {
- e: charmap.Windows1256,
- encoded: "H\xdbllo",
- utf8: "Hغllo",
- },
- {
- e: charmap.Windows1257,
- encoded: "He\xeflo",
- utf8: "Heļlo",
- },
- {
- e: charmap.Windows1258,
- encoded: "Hell\xf5",
- utf8: "Hellơ",
- },
- {
- e: charmap.XUserDefined,
- encoded: "\x00\x40\x7f\x80\xab\xff",
- utf8: "\u0000\u0040\u007f\uf780\uf7ab\uf7ff",
- },
-
- // UTF-16 tests.
- {
- e: unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM),
- encoded: "\x00\x57\x00\xe4\xd8\x35\xdd\x65",
- utf8: "\x57\u00e4\U0001d565",
- },
- {
- e: utf16BEEB,
- encPrefix: "\xfe\xff",
- encoded: "\x00\x57\x00\xe4\xd8\x35\xdd\x65",
- utf8: "\x57\u00e4\U0001d565",
- },
- {
- e: unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM),
- encoded: "\x57\x00\xe4\x00\x35\xd8\x65\xdd",
- utf8: "\x57\u00e4\U0001d565",
- },
- {
- e: utf16LEEB,
- encPrefix: "\xff\xfe",
- encoded: "\x57\x00\xe4\x00\x35\xd8\x65\xdd",
- utf8: "\x57\u00e4\U0001d565",
- },
-
- // Chinese tests.
- //
- // "\u0081\u00de\u00df\u00e0\u00e1\u00e2\u00e3\uffff\U00010000" is a
- // nonsense string that contains GB18030 encodable codepoints of which
- // only U+00E0 and U+00E1 are GBK encodable.
- //
- // "A\u3000\u554a\u4e02\u4e90\u72dc\u7349\u02ca\u2588Z€" is a nonsense
- // string that contains ASCII and GBK encodable codepoints from Levels
- // 1-5 as well as the Euro sign.
- //
- // "A\u43f0\u4c32\U00027267\u3000\U0002910d\u79d4Z€" is a nonsense string
- // that contains ASCII and Big5 encodable codepoints from the Basic
- // Multilingual Plane and the Supplementary Ideographic Plane as well as
- // the Euro sign.
- //
- // "花间一壶酒,独酌无相亲。" (simplified) and
- // "花間一壺酒,獨酌無相親。" (traditional)
- // are from the 8th century poem "Yuè Xià Dú Zhuó".
- {
- e: simplifiedchinese.GB18030,
- encoded: "\x81\x30\x81\x31\x81\x30\x89\x37\x81\x30\x89\x38\xa8\xa4\xa8\xa2" +
- "\x81\x30\x89\x39\x81\x30\x8a\x30\x84\x31\xa4\x39\x90\x30\x81\x30",
- utf8: "\u0081\u00de\u00df\u00e0\u00e1\u00e2\u00e3\uffff\U00010000",
- },
- {
- e: simplifiedchinese.GB18030,
- encoded: "\xbb\xa8\xbc\xe4\xd2\xbb\xba\xf8\xbe\xc6\xa3\xac\xb6\xc0\xd7\xc3" +
- "\xce\xde\xcf\xe0\xc7\xd7\xa1\xa3",
- utf8: "花间一壶酒,独酌无相亲。",
- },
- {
- e: simplifiedchinese.GBK,
- encoded: "A\xa1\xa1\xb0\xa1\x81\x40\x81\x80\xaa\x40\xaa\x80\xa8\x40\xa8\x80Z\x80",
- utf8: "A\u3000\u554a\u4e02\u4e90\u72dc\u7349\u02ca\u2588Z€",
- },
- {
- e: simplifiedchinese.GBK,
- encoded: "\xbb\xa8\xbc\xe4\xd2\xbb\xba\xf8\xbe\xc6\xa3\xac\xb6\xc0\xd7\xc3" +
- "\xce\xde\xcf\xe0\xc7\xd7\xa1\xa3",
- utf8: "花间一壶酒,独酌无相亲。",
- },
- {
- e: simplifiedchinese.HZGB2312,
- encoded: "A~{\x21\x21~~\x30\x21~}Z~~",
- utf8: "A\u3000~\u554aZ~",
- },
- {
- e: simplifiedchinese.HZGB2312,
- encPrefix: "~{",
- encoded: ";(<dR;:x>F#,6@WCN^O`GW!#",
- utf8: "花间一壶酒,独酌无相亲。",
- },
- {
- e: traditionalchinese.Big5,
- encoded: "A\x87\x40\x87\x41\x87\x45\xa1\x40\xfe\xfd\xfe\xfeZ\xa3\xe1",
- utf8: "A\u43f0\u4c32\U00027267\u3000\U0002910d\u79d4Z€",
- },
- {
- e: traditionalchinese.Big5,
- encoded: "\xaa\xe1\xb6\xa1\xa4\x40\xb3\xfd\xb0\x73\xa1\x41\xbf\x57\xb0\x75" +
- "\xb5\x4c\xac\xdb\xbf\xcb\xa1\x43",
- utf8: "花間一壺酒,獨酌無相親。",
- },
-
- // Japanese tests.
- //
- // "A。カ゚ 0208: etc 0212: etc" is a nonsense string that contains ASCII, half-width
- // kana, JIS X 0208 (including two near the kink in the Shift JIS second byte
- // encoding) and JIS X 0212 encodable codepoints.
- //
- // "月日は百代の過客にして、行かふ年も又旅人也。" is from the 17th century poem
- // "Oku no Hosomichi" and contains both hiragana and kanji.
- {
- e: japanese.EUCJP,
- encoded: "A\x8e\xa1\x8e\xb6\x8e\xdf " +
- "0208: \xa1\xa1\xa1\xa2\xa1\xdf\xa1\xe0\xa1\xfd\xa1\xfe\xa2\xa1\xa2\xa2\xf4\xa6 " +
- "0212: \x8f\xa2\xaf\x8f\xed\xe3",
- utf8: "A。カ゚ " +
- "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199 " +
- "0212: \u02d8\u9fa5",
- },
- {
- e: japanese.EUCJP,
- encoded: "\xb7\xee\xc6\xfc\xa4\xcf\xc9\xb4\xc2\xe5\xa4\xce\xb2\xe1\xb5\xd2" +
- "\xa4\xcb\xa4\xb7\xa4\xc6\xa1\xa2\xb9\xd4\xa4\xab\xa4\xd5\xc7\xaf" +
- "\xa4\xe2\xcb\xf4\xce\xb9\xbf\xcd\xcc\xe9\xa1\xa3",
- utf8: "月日は百代の過客にして、行かふ年も又旅人也。",
- },
- {
- e: japanese.ISO2022JP,
- encoded: "\x1b(I\x21\x36\x5f\x1b(B " +
- "0208: \x1b$B\x21\x21\x21\x22\x21\x5f\x21\x60\x21\x7d\x21\x7e\x22\x21\x22\x22\x74\x26",
- utf8: "。カ゚ " +
- "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199",
- },
- {
- e: japanese.ISO2022JP,
- encPrefix: "\x1b\x24\x42",
- encoded: "\x37\x6e\x46\x7c\x24\x4f\x49\x34\x42\x65\x24\x4e\x32\x61\x35\x52" +
- "\x24\x4b\x24\x37\x24\x46\x21\x22\x39\x54\x24\x2b\x24\x55\x47\x2f" +
- "\x24\x62\x4b\x74\x4e\x39\x3f\x4d\x4c\x69\x21\x23",
- utf8: "月日は百代の過客にして、行かふ年も又旅人也。",
- },
- {
- e: japanese.ShiftJIS,
- encoded: "A\xa1\xb6\xdf " +
- "0208: \x81\x40\x81\x41\x81\x7e\x81\x80\x81\x9d\x81\x9e\x81\x9f\x81\xa0\xea\xa4",
- utf8: "A。カ゚ " +
- "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199",
- },
- {
- e: japanese.ShiftJIS,
- encoded: "\x8c\x8e\x93\xfa\x82\xcd\x95\x53\x91\xe3\x82\xcc\x89\xdf\x8b\x71" +
- "\x82\xc9\x82\xb5\x82\xc4\x81\x41\x8d\x73\x82\xa9\x82\xd3\x94\x4e" +
- "\x82\xe0\x96\x94\x97\xb7\x90\x6c\x96\xe7\x81\x42",
- utf8: "月日は百代の過客にして、行かふ年も又旅人也。",
- },
-
- // Korean tests.
- //
- // "A\uac02\uac35\uac56\ud401B\ud408\ud620\ud624C\u4f3d\u8a70D" is a
- // nonsense string that contains ASCII, Hangul and CJK ideographs.
- //
- // "세계야, 안녕" translates as "Hello, world".
- {
- e: korean.EUCKR,
- encoded: "A\x81\x41\x81\x61\x81\x81\xc6\xfeB\xc7\xa1\xc7\xfe\xc8\xa1C\xca\xa1\xfd\xfeD",
- utf8: "A\uac02\uac35\uac56\ud401B\ud408\ud620\ud624C\u4f3d\u8a70D",
- },
- {
- e: korean.EUCKR,
- encoded: "\xbc\xbc\xb0\xe8\xbe\xdf\x2c\x20\xbe\xc8\xb3\xe7",
- utf8: "세계야, 안녕",
- },
-}
-
-func TestBasics(t *testing.T) {
- for _, tc := range basicTestCases {
- for _, direction := range []string{"Decode", "Encode"} {
- newTransformer, want, src := (func() transform.Transformer)(nil), "", ""
- wPrefix, sPrefix := "", ""
- if direction == "Decode" {
- newTransformer, want, src = tc.e.NewDecoder, tc.utf8, tc.encoded
- wPrefix, sPrefix = "", tc.encPrefix
- } else {
- newTransformer, want, src = tc.e.NewEncoder, tc.encoded, tc.utf8
- wPrefix, sPrefix = tc.encPrefix, ""
- }
-
- dst := make([]byte, len(wPrefix)+len(want))
- nDst, nSrc, err := newTransformer().Transform(dst, []byte(sPrefix+src), true)
- if err != nil {
- t.Errorf("%v: %s: %v", tc.e, direction, err)
- continue
- }
- if nDst != len(wPrefix)+len(want) {
- t.Errorf("%v: %s: nDst got %d, want %d",
- tc.e, direction, nDst, len(wPrefix)+len(want))
- continue
- }
- if nSrc != len(sPrefix)+len(src) {
- t.Errorf("%v: %s: nSrc got %d, want %d",
- tc.e, direction, nSrc, len(sPrefix)+len(src))
- continue
- }
- if got := string(dst); got != wPrefix+want {
- t.Errorf("%v: %s:\ngot %q\nwant %q",
- tc.e, direction, got, wPrefix+want)
- continue
- }
-
- for _, n := range []int{0, 1, 2, 10, 123, 4567} {
- input := sPrefix + strings.Repeat(src, n)
- sr := strings.NewReader(input)
- g, err := ioutil.ReadAll(transform.NewReader(sr, newTransformer()))
- if err != nil {
- t.Errorf("%v: %s: ReadAll: n=%d: %v", tc.e, direction, n, err)
- continue
- }
- if len(g) == 0 && len(input) == 0 {
- // If the input is empty then the output can be empty,
- // regardless of whatever wPrefix is.
- continue
- }
- got1, want1 := string(g), wPrefix+strings.Repeat(want, n)
- if got1 != want1 {
- t.Errorf("%v: %s: ReadAll: n=%d\ngot %q\nwant %q",
- tc.e, direction, n, trim(got1), trim(want1))
- continue
- }
- }
- }
- }
-}
-
-// TestNonRepertoire tests that codes outside of an Encoding's repertoire are
-// converted:
-// - to the Unicode replacement character '\ufffd' when decoding to UTF-8,
-// - to the ASCII substitute character '\x1a' when encoding from UTF-8.
-func TestNonRepertoire(t *testing.T) {
- testCases := []struct {
- e encoding.Encoding
- dSrc, eSrc string
- }{
- {charmap.Windows1252, "\x81", "갂"},
- {japanese.EUCJP, "\xfe\xfc", "갂"},
- {japanese.ISO2022JP, "\x1b$B\x7e\x7e", "갂"},
- {japanese.ShiftJIS, "\xef\xfc", "갂"},
- {korean.EUCKR, "\xfe\xfe", "א"},
- {simplifiedchinese.GBK, "\xfe\xfe", "갂"},
- {simplifiedchinese.HZGB2312, "~{z~", "갂"},
- {traditionalchinese.Big5, "\x81\x40", "갂"},
- }
- for _, tc := range testCases {
- for _, direction := range []string{"Decode", "Encode"} {
- enc, want, src := (transform.Transformer)(nil), "", ""
- if direction == "Decode" {
- enc, want, src = tc.e.NewDecoder(), "\ufffd", tc.dSrc
- } else {
- enc, want, src = tc.e.NewEncoder(), "\x1a", tc.eSrc
- }
-
- dst, err := ioutil.ReadAll(transform.NewReader(strings.NewReader(src), enc))
- if err != nil {
- t.Errorf("%s %v: %v", direction, tc.e, err)
- continue
- }
- if got := string(dst); got != want {
- t.Errorf("%s %v:\ngot %q\nwant %q", direction, tc.e, got, want)
- continue
- }
- }
- }
-}
-
-// TestBig5CircumflexAndMacron tests the special cases listed in
-// http://encoding.spec.whatwg.org/#big5
-// Note that these special cases aren't preserved by round-tripping through
-// decoding and encoding (since
-// http://encoding.spec.whatwg.org/index-big5.txt does not have an entry for
-// U+0304 or U+030C), so we can't test this in TestBasics.
-func TestBig5CircumflexAndMacron(t *testing.T) {
- src := "\x88\x5f\x88\x60\x88\x61\x88\x62\x88\x63\x88\x64\x88\x65\x88\x66 " +
- "\x88\xa2\x88\xa3\x88\xa4\x88\xa5\x88\xa6"
- want := "ÓǑÒ\u00ca\u0304Ế\u00ca\u030cỀÊ " +
- "ü\u00ea\u0304ế\u00ea\u030cề"
- dst, err := ioutil.ReadAll(transform.NewReader(
- strings.NewReader(src), traditionalchinese.Big5.NewDecoder()))
- if err != nil {
- t.Fatal(err)
- }
- if got := string(dst); got != want {
- t.Fatalf("\ngot %q\nwant %q", got, want)
- }
-}
-
-func TestEncodeInvalidUTF8(t *testing.T) {
- inputs := []string{
- "hello.",
- "wo\ufffdld.",
- "ABC\xff\x80\x80", // Invalid UTF-8.
- "\x80\x80\x80\x80\x80",
- "\x80\x80D\x80\x80", // Valid rune at "D".
- "E\xed\xa0\x80\xed\xbf\xbfF", // Two invalid UTF-8 runes (surrogates).
- "G",
- "H\xe2\x82", // U+20AC in UTF-8 is "\xe2\x82\xac", which we split over two
- "\xacI\xe2\x82", // input lines. It maps to 0x80 in the Windows-1252 encoding.
- }
- // Each invalid source byte becomes '\x1a'.
- want := strings.Replace("hello.wo?ld.ABC??????????D??E??????FGH\x80I??", "?", "\x1a", -1)
-
- transformer := charmap.Windows1252.NewEncoder()
- gotBuf := make([]byte, 0, 1024)
- src := make([]byte, 0, 1024)
- for i, input := range inputs {
- dst := make([]byte, 1024)
- src = append(src, input...)
- atEOF := i == len(inputs)-1
- nDst, nSrc, err := transformer.Transform(dst, src, atEOF)
- gotBuf = append(gotBuf, dst[:nDst]...)
- src = src[nSrc:]
- if err != nil && err != transform.ErrShortSrc {
- t.Fatalf("i=%d: %v", i, err)
- }
- if atEOF && err != nil {
- t.Fatalf("i=%d: atEOF: %v", i, err)
- }
- }
- if got := string(gotBuf); got != want {
- t.Fatalf("\ngot %+q\nwant %+q", got, want)
- }
-}
-
-func TestReplacement(t *testing.T) {
- for _, direction := range []string{"Decode", "Encode"} {
- enc, want := (transform.Transformer)(nil), ""
- if direction == "Decode" {
- enc = encoding.Replacement.NewDecoder()
- want = "\ufffd"
- } else {
- enc = encoding.Replacement.NewEncoder()
- want = "AB\x00CD\ufffdYZ"
- }
- sr := strings.NewReader("AB\x00CD\x80YZ")
- g, err := ioutil.ReadAll(transform.NewReader(sr, enc))
- if err != nil {
- t.Errorf("%s: ReadAll: %v", direction, err)
- continue
- }
- if got := string(g); got != want {
- t.Errorf("%s:\ngot %q\nwant %q", direction, got, want)
- continue
- }
- }
-}
-
-func TestUTF8Validator(t *testing.T) {
- testCases := []struct {
- desc string
- dstSize int
- src string
- atEOF bool
- want string
- wantErr error
- }{
- {
- "empty input",
- 100,
- "",
- false,
- "",
- nil,
- },
- {
- "valid 1-byte 1-rune input",
- 100,
- "a",
- false,
- "a",
- nil,
- },
- {
- "valid 3-byte 1-rune input",
- 100,
- "\u1234",
- false,
- "\u1234",
- nil,
- },
- {
- "valid 5-byte 3-rune input",
- 100,
- "a\u0100\u0101",
- false,
- "a\u0100\u0101",
- nil,
- },
- {
- "perfectly sized dst (non-ASCII)",
- 5,
- "a\u0100\u0101",
- false,
- "a\u0100\u0101",
- nil,
- },
- {
- "short dst (non-ASCII)",
- 4,
- "a\u0100\u0101",
- false,
- "a\u0100",
- transform.ErrShortDst,
- },
- {
- "perfectly sized dst (ASCII)",
- 5,
- "abcde",
- false,
- "abcde",
- nil,
- },
- {
- "short dst (ASCII)",
- 4,
- "abcde",
- false,
- "abcd",
- transform.ErrShortDst,
- },
- {
- "partial input (!EOF)",
- 100,
- "a\u0100\xf1",
- false,
- "a\u0100",
- transform.ErrShortSrc,
- },
- {
- "invalid input (EOF)",
- 100,
- "a\u0100\xf1",
- true,
- "a\u0100",
- encoding.ErrInvalidUTF8,
- },
- {
- "invalid input (!EOF)",
- 100,
- "a\u0100\x80",
- false,
- "a\u0100",
- encoding.ErrInvalidUTF8,
- },
- {
- "invalid input (above U+10FFFF)",
- 100,
- "a\u0100\xf7\xbf\xbf\xbf",
- false,
- "a\u0100",
- encoding.ErrInvalidUTF8,
- },
- {
- "invalid input (surrogate half)",
- 100,
- "a\u0100\xed\xa0\x80",
- false,
- "a\u0100",
- encoding.ErrInvalidUTF8,
- },
- }
- for _, tc := range testCases {
- dst := make([]byte, tc.dstSize)
- nDst, nSrc, err := encoding.UTF8Validator.Transform(dst, []byte(tc.src), tc.atEOF)
- if nDst < 0 || len(dst) < nDst {
- t.Errorf("%s: nDst=%d out of range", tc.desc, nDst)
- continue
- }
- got := string(dst[:nDst])
- if got != tc.want || nSrc != len(tc.want) || err != tc.wantErr {
- t.Errorf("%s:\ngot %+q, %d, %v\nwant %+q, %d, %v",
- tc.desc, got, nSrc, err, tc.want, len(tc.want), tc.wantErr)
- continue
- }
- }
-}
-
-var (
- utf16LEIB = unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM) // UTF-16LE (atypical interpretation)
- utf16LEUB = unicode.UTF16(unicode.LittleEndian, unicode.UseBOM) // UTF-16, LE
- utf16LEEB = unicode.UTF16(unicode.LittleEndian, unicode.ExpectBOM) // UTF-16, LE, Expect
- utf16BEIB = unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM) // UTF-16BE (atypical interpretation)
- utf16BEUB = unicode.UTF16(unicode.BigEndian, unicode.UseBOM) // UTF-16 default
- utf16BEEB = unicode.UTF16(unicode.BigEndian, unicode.ExpectBOM) // UTF-16 Expect
-)
-
-func TestUTF16(t *testing.T) {
- testCases := []struct {
- desc string
- src string
- notEOF bool // the inverse of atEOF
- sizeDst int
- want string
- nSrc int
- err error
- t transform.Transformer
- }{{
- desc: "utf-16 dec: BOM determines encoding BE (RFC 2781:3.3)",
- src: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
- sizeDst: 100,
- want: "\U00012345=Ra",
- nSrc: 12,
- t: utf16BEUB.NewDecoder(),
- }, {
- desc: "utf-16 dec: BOM determines encoding LE (RFC 2781:3.3)",
- src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
- sizeDst: 100,
- want: "\U00012345=Ra",
- nSrc: 12,
- t: utf16LEUB.NewDecoder(),
- }, {
- desc: "utf-16 dec: BOM determines encoding LE, change default (RFC 2781:3.3)",
- src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
- sizeDst: 100,
- want: "\U00012345=Ra",
- nSrc: 12,
- t: utf16BEUB.NewDecoder(),
- }, {
- desc: "utf-16 dec: Fail on missing BOM when required",
- src: "\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x00\x52\x00\x61",
- sizeDst: 100,
- want: "",
- nSrc: 0,
- err: unicode.ErrMissingBOM,
- t: utf16BEEB.NewDecoder(),
- }, {
- desc: "utf-16 dec: SHOULD interpret text as big-endian when BOM not present (RFC 2781:4.3)",
- src: "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
- sizeDst: 100,
- want: "\U00012345=Ra",
- nSrc: 10,
- t: utf16BEUB.NewDecoder(),
- }, {
- // This is an error according to RFC 2781. But errors in RFC 2781 are
- // open to interpretations, so I guess this is fine.
- desc: "utf-16le dec: incorrect BOM is an error (RFC 2781:4.1)",
- src: "\xFE\xFF\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
- sizeDst: 100,
- want: "\uFFFE\U00012345=Ra",
- nSrc: 12,
- t: utf16LEIB.NewDecoder(),
- }, {
- desc: "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)",
- src: "\U00012345=Ra",
- sizeDst: 100,
- want: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
- nSrc: 7,
- t: utf16LEUB.NewEncoder(),
- }, {
- desc: "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)",
- src: "\U00012345=Ra",
- sizeDst: 100,
- want: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
- nSrc: 7,
- t: utf16BEUB.NewEncoder(),
- }, {
- desc: "utf-16le enc: MUST NOT write BOM (RFC 2781:3.3)",
- src: "\U00012345=Ra",
- sizeDst: 100,
- want: "\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00",
- nSrc: 7,
- t: utf16LEIB.NewEncoder(),
- }, {
- desc: "utf-16be dec: incorrect UTF-16: odd bytes",
- src: "\x00",
- sizeDst: 100,
- want: "\uFFFD",
- nSrc: 1,
- t: utf16BEIB.NewDecoder(),
- }, {
- desc: "utf-16be dec: unpaired surrogate, odd bytes",
- src: "\xD8\x45\x00",
- sizeDst: 100,
- want: "\uFFFD\uFFFD",
- nSrc: 3,
- t: utf16BEIB.NewDecoder(),
- }, {
- desc: "utf-16be dec: unpaired low surrogate + valid text",
- src: "\xD8\x45\x00a",
- sizeDst: 100,
- want: "\uFFFDa",
- nSrc: 4,
- t: utf16BEIB.NewDecoder(),
- }, {
- desc: "utf-16be dec: unpaired low surrogate + valid text + single byte",
- src: "\xD8\x45\x00ab",
- sizeDst: 100,
- want: "\uFFFDa\uFFFD",
- nSrc: 5,
- t: utf16BEIB.NewDecoder(),
- }, {
- desc: "utf-16le dec: unpaired high surrogate",
- src: "\x00\x00\x00\xDC\x12\xD8",
- sizeDst: 100,
- want: "\x00\uFFFD\uFFFD",
- nSrc: 6,
- t: utf16LEIB.NewDecoder(),
- }, {
- desc: "utf-16be dec: two unpaired low surrogates",
- src: "\xD8\x45\xD8\x12",
- sizeDst: 100,
- want: "\uFFFD\uFFFD",
- nSrc: 4,
- t: utf16BEIB.NewDecoder(),
- }, {
- desc: "utf-16be dec: short dst",
- src: "\x00a",
- sizeDst: 0,
- want: "",
- nSrc: 0,
- t: utf16BEIB.NewDecoder(),
- err: transform.ErrShortDst,
- }, {
- desc: "utf-16be dec: short dst surrogate",
- src: "\xD8\xF5\xDC\x12",
- sizeDst: 3,
- want: "",
- nSrc: 0,
- t: utf16BEIB.NewDecoder(),
- err: transform.ErrShortDst,
- }, {
- desc: "utf-16be dec: short dst trailing byte",
- src: "\x00",
- sizeDst: 2,
- want: "",
- nSrc: 0,
- t: utf16BEIB.NewDecoder(),
- err: transform.ErrShortDst,
- }, {
- desc: "utf-16be dec: short src",
- src: "\x00",
- notEOF: true,
- sizeDst: 3,
- want: "",
- nSrc: 0,
- t: utf16BEIB.NewDecoder(),
- err: transform.ErrShortSrc,
- }, {
- desc: "utf-16 enc",
- src: "\U00012345=Ra",
- sizeDst: 100,
- want: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
- nSrc: 7,
- t: utf16BEUB.NewEncoder(),
- }, {
- desc: "utf-16 enc: short dst normal",
- src: "\U00012345=Ra",
- sizeDst: 9,
- want: "\xD8\x08\xDF\x45\x00\x3D\x00\x52",
- nSrc: 6,
- t: utf16BEIB.NewEncoder(),
- err: transform.ErrShortDst,
- }, {
- desc: "utf-16 enc: short dst surrogate",
- src: "\U00012345=Ra",
- sizeDst: 3,
- want: "",
- nSrc: 0,
- t: utf16BEIB.NewEncoder(),
- err: transform.ErrShortDst,
- }, {
- desc: "utf-16 enc: short src",
- src: "\U00012345=Ra\xC1",
- notEOF: true,
- sizeDst: 100,
- want: "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61",
- nSrc: 7,
- t: utf16BEIB.NewEncoder(),
- err: transform.ErrShortSrc,
- }, {
- desc: "utf-16be dec: don't change byte order mid-stream",
- src: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\xFF\xFE\x00\x52\x00\x61",
- sizeDst: 100,
- want: "\U00012345=\ufffeRa",
- nSrc: 14,
- t: utf16BEUB.NewDecoder(),
- }, {
- desc: "utf-16le dec: don't change byte order mid-stream",
- src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x52\x00\x61\x00",
- sizeDst: 100,
- want: "\U00012345=\ufeff\ufffeRa",
- nSrc: 16,
- t: utf16LEUB.NewDecoder(),
- }}
- for i, tc := range testCases {
- b := make([]byte, tc.sizeDst)
- nDst, nSrc, err := tc.t.Transform(b, []byte(tc.src), !tc.notEOF)
- if err != tc.err {
- t.Errorf("%d:%s: error was %v; want %v", i, tc.desc, err, tc.err)
- }
- if got := string(b[:nDst]); got != tc.want {
- t.Errorf("%d:%s: result was %q: want %q", i, tc.desc, got, tc.want)
- }
- if nSrc != tc.nSrc {
- t.Errorf("%d:%s: nSrc was %d; want %d", i, tc.desc, nSrc, tc.nSrc)
- }
- }
-}
-
-func TestBOMOverride(t *testing.T) {
- dec := unicode.BOMOverride(charmap.CodePage437.NewDecoder())
- dst := make([]byte, 100)
- for i, tc := range []struct {
- src string
- atEOF bool
- dst string
- nSrc int
- err error
- }{
- 0: {"H\x82ll\x93", true, "Héllô", 5, nil},
- 1: {"\uFEFFHéllö", true, "Héllö", 10, nil},
- 2: {"\xFE\xFF\x00H\x00e\x00l\x00l\x00o", true, "Hello", 12, nil},
- 3: {"\xFF\xFEH\x00e\x00l\x00l\x00o\x00", true, "Hello", 12, nil},
- 4: {"\uFEFF", true, "", 3, nil},
- 5: {"\xFE\xFF", true, "", 2, nil},
- 6: {"\xFF\xFE", true, "", 2, nil},
- 7: {"\xEF\xBB", true, "\u2229\u2557", 2, nil},
- 8: {"\xEF", true, "\u2229", 1, nil},
- 9: {"", true, "", 0, nil},
- 10: {"\xFE", true, "\u220e", 1, nil},
- 11: {"\xFF", true, "\u00a0", 1, nil},
- 12: {"\xEF\xBB", false, "", 0, transform.ErrShortSrc},
- 13: {"\xEF", false, "", 0, transform.ErrShortSrc},
- 14: {"", false, "", 0, transform.ErrShortSrc},
- 15: {"\xFE", false, "", 0, transform.ErrShortSrc},
- 16: {"\xFF", false, "", 0, transform.ErrShortSrc},
- 17: {"\xFF\xFE", false, "", 0, transform.ErrShortSrc},
- } {
- dec.Reset()
- nDst, nSrc, err := dec.Transform(dst, []byte(tc.src), tc.atEOF)
- got := string(dst[:nDst])
- if nSrc != tc.nSrc {
- t.Errorf("%d: nSrc: got %d; want %d", i, nSrc, tc.nSrc)
- }
- if got != tc.dst {
- t.Errorf("%d: got %+q; want %+q", i, got, tc.dst)
- }
- if err != tc.err {
- t.Errorf("%d: error: got %v; want %v", i, err, tc.err)
- }
- }
-}
-
-// testdataFiles are files in testdata/*.txt.
-var testdataFiles = []struct {
- enc encoding.Encoding
- basename, ext string
-}{
- {charmap.Windows1252, "candide", "windows-1252"},
- {japanese.EUCJP, "rashomon", "euc-jp"},
- {japanese.ISO2022JP, "rashomon", "iso-2022-jp"},
- {japanese.ShiftJIS, "rashomon", "shift-jis"},
- {korean.EUCKR, "unsu-joh-eun-nal", "euc-kr"},
- {simplifiedchinese.GBK, "sunzi-bingfa-simplified", "gbk"},
- {simplifiedchinese.HZGB2312, "sunzi-bingfa-gb-levels-1-and-2", "hz-gb2312"},
- {traditionalchinese.Big5, "sunzi-bingfa-traditional", "big5"},
- {utf16LEIB, "candide", "utf-16le"},
-
- // GB18030 is a superset of GBK and is nominally a Simplified Chinese
- // encoding, but it can also represent the entire Basic Multilingual
- // Plane, including codepoints like 'â' that aren't encodable by GBK.
- // GB18030 on Simplified Chinese should perform similarly to GBK on
- // Simplified Chinese. GB18030 on "candide" is more interesting.
- {simplifiedchinese.GB18030, "candide", "gb18030"},
-}
-
-func load(direction string, enc encoding.Encoding) ([]byte, []byte, func() transform.Transformer, error) {
- basename, ext, count := "", "", 0
- for _, tf := range testdataFiles {
- if tf.enc == enc {
- basename, ext = tf.basename, tf.ext
- count++
- }
- }
- if count != 1 {
- if count == 0 {
- return nil, nil, nil, fmt.Errorf("no testdataFiles for %s", enc)
- }
- return nil, nil, nil, fmt.Errorf("too many testdataFiles for %s", enc)
- }
- dstFile := fmt.Sprintf("testdata/%s-%s.txt", basename, ext)
- srcFile := fmt.Sprintf("testdata/%s-utf-8.txt", basename)
- newTransformer := enc.NewEncoder
- if direction == "Decode" {
- dstFile, srcFile = srcFile, dstFile
- newTransformer = enc.NewDecoder
- }
- dst, err := ioutil.ReadFile(dstFile)
- if err != nil {
- return nil, nil, nil, err
- }
- src, err := ioutil.ReadFile(srcFile)
- if err != nil {
- return nil, nil, nil, err
- }
- return dst, src, newTransformer, nil
-}
-
-func TestFiles(t *testing.T) {
- for _, dir := range []string{"Decode", "Encode"} {
- for _, tf := range testdataFiles {
- dst, src, newTransformer, err := load(dir, tf.enc)
- if err != nil {
- t.Errorf("%s, %s: load: %v", dir, tf.enc, err)
- continue
- }
- buf := bytes.NewBuffer(nil)
- r := transform.NewReader(bytes.NewReader(src), newTransformer())
- if _, err := io.Copy(buf, r); err != nil {
- t.Errorf("%s, %s: copy: %v", dir, tf.enc, err)
- continue
- }
- if !bytes.Equal(buf.Bytes(), dst) {
- t.Errorf("%s, %s: transformed bytes did not match golden file", dir, tf.enc)
- continue
- }
- }
- }
-}
-
-func benchmark(b *testing.B, direction string, enc encoding.Encoding) {
- _, src, newTransformer, err := load(direction, enc)
- if err != nil {
- b.Fatal(err)
- }
- b.SetBytes(int64(len(src)))
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- r := transform.NewReader(bytes.NewReader(src), newTransformer())
- io.Copy(ioutil.Discard, r)
- }
-}
-
-func BenchmarkBig5Decoder(b *testing.B) { benchmark(b, "Decode", traditionalchinese.Big5) }
-func BenchmarkBig5Encoder(b *testing.B) { benchmark(b, "Encode", traditionalchinese.Big5) }
-func BenchmarkCharmapDecoder(b *testing.B) { benchmark(b, "Decode", charmap.Windows1252) }
-func BenchmarkCharmapEncoder(b *testing.B) { benchmark(b, "Encode", charmap.Windows1252) }
-func BenchmarkEUCJPDecoder(b *testing.B) { benchmark(b, "Decode", japanese.EUCJP) }
-func BenchmarkEUCJPEncoder(b *testing.B) { benchmark(b, "Encode", japanese.EUCJP) }
-func BenchmarkEUCKRDecoder(b *testing.B) { benchmark(b, "Decode", korean.EUCKR) }
-func BenchmarkEUCKREncoder(b *testing.B) { benchmark(b, "Encode", korean.EUCKR) }
-func BenchmarkGB18030Decoder(b *testing.B) { benchmark(b, "Decode", simplifiedchinese.GB18030) }
-func BenchmarkGB18030Encoder(b *testing.B) { benchmark(b, "Encode", simplifiedchinese.GB18030) }
-func BenchmarkGBKDecoder(b *testing.B) { benchmark(b, "Decode", simplifiedchinese.GBK) }
-func BenchmarkGBKEncoder(b *testing.B) { benchmark(b, "Encode", simplifiedchinese.GBK) }
-func BenchmarkHZGB2312Decoder(b *testing.B) { benchmark(b, "Decode", simplifiedchinese.HZGB2312) }
-func BenchmarkHZGB2312Encoder(b *testing.B) { benchmark(b, "Encode", simplifiedchinese.HZGB2312) }
-func BenchmarkISO2022JPDecoder(b *testing.B) { benchmark(b, "Decode", japanese.ISO2022JP) }
-func BenchmarkISO2022JPEncoder(b *testing.B) { benchmark(b, "Encode", japanese.ISO2022JP) }
-func BenchmarkShiftJISDecoder(b *testing.B) { benchmark(b, "Decode", japanese.ShiftJIS) }
-func BenchmarkShiftJISEncoder(b *testing.B) { benchmark(b, "Encode", japanese.ShiftJIS) }
-func BenchmarkUTF16Decoder(b *testing.B) { benchmark(b, "Decode", utf16LEIB) }
-func BenchmarkUTF16Encoder(b *testing.B) { benchmark(b, "Encode", utf16LEIB) }
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/example_test.go b/Godeps/_workspace/src/golang.org/x/text/encoding/example_test.go
deleted file mode 100644
index 8dc26c613..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/example_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package encoding_test
-
-import (
- "fmt"
- "io"
- "os"
- "strings"
-
- "golang.org/x/text/encoding"
- "golang.org/x/text/encoding/charmap"
- "golang.org/x/text/transform"
-)
-
-func ExampleDecodeWindows1252() {
- sr := strings.NewReader("Gar\xe7on !")
- tr := transform.NewReader(sr, charmap.Windows1252.NewDecoder())
- io.Copy(os.Stdout, tr)
- // Output: Garçon !
-}
-
-func ExampleUTF8Validator() {
- for i := 0; i < 2; i++ {
- transformer := charmap.Windows1252.NewEncoder()
- if i == 1 {
- transformer = transform.Chain(encoding.UTF8Validator, transformer)
- }
- dst := make([]byte, 256)
- src := []byte("abc\xffxyz") // src is invalid UTF-8.
- nDst, nSrc, err := transformer.Transform(dst, src, true)
- fmt.Printf("i=%d: produced %q, consumed %q, error %v\n",
- i, dst[:nDst], src[:nSrc], err)
- }
- // Output:
- // i=0: produced "abc\x1axyz", consumed "abc\xffxyz", error <nil>
- // i=1: produced "abc", consumed "abc", error encoding: invalid UTF-8
-}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/gen.go b/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/gen.go
new file mode 100644
index 000000000..d10e5e09f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/gen.go
@@ -0,0 +1,167 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+package main
+
+import (
+ "bytes"
+ "encoding/json"
+ "fmt"
+ "log"
+ "strings"
+
+ "golang.org/x/text/internal/gen"
+)
+
+type group struct {
+ Encodings []struct {
+ Labels []string
+ Name string
+ }
+}
+
+func main() {
+ gen.Init()
+
+ r := gen.Open("http://www.w3.org/TR", "w3", "encoding/indexes/encodings.json")
+ var groups []group
+ if err := json.NewDecoder(r).Decode(&groups); err != nil {
+ log.Fatalf("Error reading encodings.json: %v", err)
+ }
+
+ w := &bytes.Buffer{}
+ fmt.Fprintln(w, "type htmlEncoding byte")
+ fmt.Fprintln(w, "const (")
+ for i, g := range groups {
+ for _, e := range g.Encodings {
+ name := consts[e.Name]
+ if name == "" {
+ log.Fatalf("No const defined for %s.", e.Name)
+ }
+ if i == 0 {
+ fmt.Fprintf(w, "%s htmlEncoding = iota\n", name)
+ } else {
+ fmt.Fprintf(w, "%s\n", name)
+ }
+ }
+ }
+ fmt.Fprintln(w, "numEncodings")
+ fmt.Fprint(w, ")\n\n")
+
+ fmt.Fprintln(w, "var canonical = [numEncodings]string{")
+ for _, g := range groups {
+ for _, e := range g.Encodings {
+ fmt.Fprintf(w, "%q,\n", e.Name)
+ }
+ }
+ fmt.Fprint(w, "}\n\n")
+
+ fmt.Fprintln(w, "var nameMap = map[string]htmlEncoding{")
+ for _, g := range groups {
+ for _, e := range g.Encodings {
+ for _, l := range e.Labels {
+ fmt.Fprintf(w, "%q: %s,\n", l, consts[e.Name])
+ }
+ }
+ }
+ fmt.Fprint(w, "}\n\n")
+
+ var tags []string
+ fmt.Fprintln(w, "var localeMap = []htmlEncoding{")
+ for _, loc := range locales {
+ tags = append(tags, loc.tag)
+ fmt.Fprintf(w, "%s, // %s \n", consts[loc.name], loc.tag)
+ }
+ fmt.Fprint(w, "}\n\n")
+
+ fmt.Fprintf(w, "const locales = %q\n", strings.Join(tags, " "))
+
+ gen.WriteGoFile("tables.go", "htmlindex", w.Bytes())
+}
+
+// consts maps canonical encoding name to internal constant.
+var consts = map[string]string{
+ "utf-8": "utf8",
+ "ibm866": "ibm866",
+ "iso-8859-2": "iso8859_2",
+ "iso-8859-3": "iso8859_3",
+ "iso-8859-4": "iso8859_4",
+ "iso-8859-5": "iso8859_5",
+ "iso-8859-6": "iso8859_6",
+ "iso-8859-7": "iso8859_7",
+ "iso-8859-8": "iso8859_8",
+ "iso-8859-8-i": "iso8859_8I",
+ "iso-8859-10": "iso8859_10",
+ "iso-8859-13": "iso8859_13",
+ "iso-8859-14": "iso8859_14",
+ "iso-8859-15": "iso8859_15",
+ "iso-8859-16": "iso8859_16",
+ "koi8-r": "koi8r",
+ "koi8-u": "koi8u",
+ "macintosh": "macintosh",
+ "windows-874": "windows874",
+ "windows-1250": "windows1250",
+ "windows-1251": "windows1251",
+ "windows-1252": "windows1252",
+ "windows-1253": "windows1253",
+ "windows-1254": "windows1254",
+ "windows-1255": "windows1255",
+ "windows-1256": "windows1256",
+ "windows-1257": "windows1257",
+ "windows-1258": "windows1258",
+ "x-mac-cyrillic": "macintoshCyrillic",
+ "gbk": "gbk",
+ "gb18030": "gb18030",
+ // "hz-gb-2312": "hzgb2312", // Was removed from WhatWG
+ "big5": "big5",
+ "euc-jp": "eucjp",
+ "iso-2022-jp": "iso2022jp",
+ "shift_jis": "shiftJIS",
+ "euc-kr": "euckr",
+ "replacement": "replacement",
+ "utf-16be": "utf16be",
+ "utf-16le": "utf16le",
+ "x-user-defined": "xUserDefined",
+}
+
+// locales is taken from
+// https://html.spec.whatwg.org/multipage/syntax.html#encoding-sniffing-algorithm.
+var locales = []struct{ tag, name string }{
+ {"und", "windows-1252"}, // The default value.
+ {"ar", "windows-1256"},
+ {"ba", "windows-1251"},
+ {"be", "windows-1251"},
+ {"bg", "windows-1251"},
+ {"cs", "windows-1250"},
+ {"el", "iso-8859-7"},
+ {"et", "windows-1257"},
+ {"fa", "windows-1256"},
+ {"he", "windows-1255"},
+ {"hr", "windows-1250"},
+ {"hu", "iso-8859-2"},
+ {"ja", "shift_jis"},
+ {"kk", "windows-1251"},
+ {"ko", "euc-kr"},
+ {"ku", "windows-1254"},
+ {"ky", "windows-1251"},
+ {"lt", "windows-1257"},
+ {"lv", "windows-1257"},
+ {"mk", "windows-1251"},
+ {"pl", "iso-8859-2"},
+ {"ru", "windows-1251"},
+ {"sah", "windows-1251"},
+ {"sk", "windows-1250"},
+ {"sl", "iso-8859-2"},
+ {"sr", "windows-1251"},
+ {"tg", "windows-1251"},
+ {"th", "windows-874"},
+ {"tr", "windows-1254"},
+ {"tt", "windows-1251"},
+ {"uk", "windows-1251"},
+ {"vi", "windows-1258"},
+ {"zh-hans", "gb18030"},
+ {"zh-hant", "big5"},
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/htmlindex.go b/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/htmlindex.go
index 0d75987f5..70f2ac4bc 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/htmlindex.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/htmlindex.go
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:generate go run gen.go
+
// Package htmlindex maps character set encoding names to Encodings as
// recommended by the W3C for use in HTML 5. See http://www.w3.org/TR/encoding.
package htmlindex
@@ -20,26 +22,65 @@ package htmlindex
// TODO: allow canonicalizing names
import (
+ "errors"
+ "strings"
+ "sync"
+
"golang.org/x/text/encoding"
+ "golang.org/x/text/encoding/internal/identifier"
"golang.org/x/text/language"
)
+var (
+ errInvalidName = errors.New("htmlindex: invalid encoding name")
+ errUnknown = errors.New("htmlindex: unknown Encoding")
+ errUnsupported = errors.New("htmlindex: this encoding is not supported")
+)
+
+var (
+ matcherOnce sync.Once
+ matcher language.Matcher
+)
+
// LanguageDefault returns the canonical name of the default encoding for a
// given language.
func LanguageDefault(tag language.Tag) string {
- // Note: we'll use the map defined in the W3C spec.
- panic("TODO: implement")
+ matcherOnce.Do(func() {
+ tags := []language.Tag{}
+ for _, t := range strings.Split(locales, " ") {
+ tags = append(tags, language.MustParse(t))
+ }
+ matcher = language.NewMatcher(tags)
+ })
+ _, i, _ := matcher.Match(tag)
+ return canonical[localeMap[i]] // Default is Windows-1252.
}
// Get returns an Encoding for one of the names listed in
// http://www.w3.org/TR/encoding using the Default Index. Matching is case-
// insensitive.
func Get(name string) (encoding.Encoding, error) {
- panic("TODO: implement")
+ x, ok := nameMap[strings.ToLower(strings.TrimSpace(name))]
+ if !ok {
+ return nil, errInvalidName
+ }
+ return encodings[x], nil
}
// Name reports the canonical name of the given Encoding. It will return
// an error if e is not associated with a supported encoding scheme.
func Name(e encoding.Encoding) (string, error) {
- panic("TODO: implement")
+ id, ok := e.(identifier.Interface)
+ if !ok {
+ return "", errUnknown
+ }
+ mib, _ := id.ID()
+ if mib == 0 {
+ return "", errUnknown
+ }
+ v, ok := mibMap[mib]
+ if !ok {
+ return "", errUnsupported
+ }
+ return canonical[v], nil
}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/map.go b/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/map.go
new file mode 100644
index 000000000..c61439045
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/map.go
@@ -0,0 +1,105 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package htmlindex
+
+import (
+ "golang.org/x/text/encoding"
+ "golang.org/x/text/encoding/charmap"
+ "golang.org/x/text/encoding/internal/identifier"
+ "golang.org/x/text/encoding/japanese"
+ "golang.org/x/text/encoding/korean"
+ "golang.org/x/text/encoding/simplifiedchinese"
+ "golang.org/x/text/encoding/traditionalchinese"
+ "golang.org/x/text/encoding/unicode"
+)
+
+// mibMap maps a MIB identifier to an htmlEncoding index.
+var mibMap = map[identifier.MIB]htmlEncoding{
+ identifier.UTF8: utf8,
+ identifier.UTF16BE: utf16be,
+ identifier.UTF16LE: utf16le,
+ identifier.IBM866: ibm866,
+ identifier.ISOLatin2: iso8859_2,
+ identifier.ISOLatin3: iso8859_3,
+ identifier.ISOLatin4: iso8859_4,
+ identifier.ISOLatinCyrillic: iso8859_5,
+ identifier.ISOLatinArabic: iso8859_6,
+ identifier.ISOLatinGreek: iso8859_7,
+ identifier.ISOLatinHebrew: iso8859_8,
+ identifier.ISO88598I: iso8859_8I,
+ identifier.ISOLatin6: iso8859_10,
+ identifier.ISO885913: iso8859_13,
+ identifier.ISO885914: iso8859_14,
+ identifier.ISO885915: iso8859_15,
+ identifier.ISO885916: iso8859_16,
+ identifier.KOI8R: koi8r,
+ identifier.KOI8U: koi8u,
+ identifier.Macintosh: macintosh,
+ identifier.MacintoshCyrillic: macintoshCyrillic,
+ identifier.Windows874: windows874,
+ identifier.Windows1250: windows1250,
+ identifier.Windows1251: windows1251,
+ identifier.Windows1252: windows1252,
+ identifier.Windows1253: windows1253,
+ identifier.Windows1254: windows1254,
+ identifier.Windows1255: windows1255,
+ identifier.Windows1256: windows1256,
+ identifier.Windows1257: windows1257,
+ identifier.Windows1258: windows1258,
+ identifier.XUserDefined: xUserDefined,
+ identifier.GBK: gbk,
+ identifier.GB18030: gb18030,
+ identifier.Big5: big5,
+ identifier.EUCPkdFmtJapanese: eucjp,
+ identifier.ISO2022JP: iso2022jp,
+ identifier.ShiftJIS: shiftJIS,
+ identifier.EUCKR: euckr,
+ identifier.Replacement: replacement,
+}
+
+// encodings maps the internal htmlEncoding to an Encoding.
+// TODO: consider using a reusable index in encoding/internal.
+var encodings = [numEncodings]encoding.Encoding{
+ utf8: unicode.UTF8,
+ ibm866: charmap.CodePage866,
+ iso8859_2: charmap.ISO8859_2,
+ iso8859_3: charmap.ISO8859_3,
+ iso8859_4: charmap.ISO8859_4,
+ iso8859_5: charmap.ISO8859_5,
+ iso8859_6: charmap.ISO8859_6,
+ iso8859_7: charmap.ISO8859_7,
+ iso8859_8: charmap.ISO8859_8,
+ iso8859_8I: charmap.ISO8859_8I,
+ iso8859_10: charmap.ISO8859_10,
+ iso8859_13: charmap.ISO8859_13,
+ iso8859_14: charmap.ISO8859_14,
+ iso8859_15: charmap.ISO8859_15,
+ iso8859_16: charmap.ISO8859_16,
+ koi8r: charmap.KOI8R,
+ koi8u: charmap.KOI8U,
+ macintosh: charmap.Macintosh,
+ windows874: charmap.Windows874,
+ windows1250: charmap.Windows1250,
+ windows1251: charmap.Windows1251,
+ windows1252: charmap.Windows1252,
+ windows1253: charmap.Windows1253,
+ windows1254: charmap.Windows1254,
+ windows1255: charmap.Windows1255,
+ windows1256: charmap.Windows1256,
+ windows1257: charmap.Windows1257,
+ windows1258: charmap.Windows1258,
+ macintoshCyrillic: charmap.MacintoshCyrillic,
+ gbk: simplifiedchinese.GBK,
+ gb18030: simplifiedchinese.GB18030,
+ big5: traditionalchinese.Big5,
+ eucjp: japanese.EUCJP,
+ iso2022jp: japanese.ISO2022JP,
+ shiftJIS: japanese.ShiftJIS,
+ euckr: korean.EUCKR,
+ replacement: encoding.Replacement,
+ utf16be: unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM),
+ utf16le: unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM),
+ xUserDefined: charmap.XUserDefined,
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/tables.go b/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/tables.go
new file mode 100644
index 000000000..78950d3c3
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/htmlindex/tables.go
@@ -0,0 +1,352 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package htmlindex
+
+type htmlEncoding byte
+
+const (
+ utf8 htmlEncoding = iota
+ ibm866
+ iso8859_2
+ iso8859_3
+ iso8859_4
+ iso8859_5
+ iso8859_6
+ iso8859_7
+ iso8859_8
+ iso8859_8I
+ iso8859_10
+ iso8859_13
+ iso8859_14
+ iso8859_15
+ iso8859_16
+ koi8r
+ koi8u
+ macintosh
+ windows874
+ windows1250
+ windows1251
+ windows1252
+ windows1253
+ windows1254
+ windows1255
+ windows1256
+ windows1257
+ windows1258
+ macintoshCyrillic
+ gbk
+ gb18030
+ big5
+ eucjp
+ iso2022jp
+ shiftJIS
+ euckr
+ replacement
+ utf16be
+ utf16le
+ xUserDefined
+ numEncodings
+)
+
+var canonical = [numEncodings]string{
+ "utf-8",
+ "ibm866",
+ "iso-8859-2",
+ "iso-8859-3",
+ "iso-8859-4",
+ "iso-8859-5",
+ "iso-8859-6",
+ "iso-8859-7",
+ "iso-8859-8",
+ "iso-8859-8-i",
+ "iso-8859-10",
+ "iso-8859-13",
+ "iso-8859-14",
+ "iso-8859-15",
+ "iso-8859-16",
+ "koi8-r",
+ "koi8-u",
+ "macintosh",
+ "windows-874",
+ "windows-1250",
+ "windows-1251",
+ "windows-1252",
+ "windows-1253",
+ "windows-1254",
+ "windows-1255",
+ "windows-1256",
+ "windows-1257",
+ "windows-1258",
+ "x-mac-cyrillic",
+ "gbk",
+ "gb18030",
+ "big5",
+ "euc-jp",
+ "iso-2022-jp",
+ "shift_jis",
+ "euc-kr",
+ "replacement",
+ "utf-16be",
+ "utf-16le",
+ "x-user-defined",
+}
+
+var nameMap = map[string]htmlEncoding{
+ "unicode-1-1-utf-8": utf8,
+ "utf-8": utf8,
+ "utf8": utf8,
+ "866": ibm866,
+ "cp866": ibm866,
+ "csibm866": ibm866,
+ "ibm866": ibm866,
+ "csisolatin2": iso8859_2,
+ "iso-8859-2": iso8859_2,
+ "iso-ir-101": iso8859_2,
+ "iso8859-2": iso8859_2,
+ "iso88592": iso8859_2,
+ "iso_8859-2": iso8859_2,
+ "iso_8859-2:1987": iso8859_2,
+ "l2": iso8859_2,
+ "latin2": iso8859_2,
+ "csisolatin3": iso8859_3,
+ "iso-8859-3": iso8859_3,
+ "iso-ir-109": iso8859_3,
+ "iso8859-3": iso8859_3,
+ "iso88593": iso8859_3,
+ "iso_8859-3": iso8859_3,
+ "iso_8859-3:1988": iso8859_3,
+ "l3": iso8859_3,
+ "latin3": iso8859_3,
+ "csisolatin4": iso8859_4,
+ "iso-8859-4": iso8859_4,
+ "iso-ir-110": iso8859_4,
+ "iso8859-4": iso8859_4,
+ "iso88594": iso8859_4,
+ "iso_8859-4": iso8859_4,
+ "iso_8859-4:1988": iso8859_4,
+ "l4": iso8859_4,
+ "latin4": iso8859_4,
+ "csisolatincyrillic": iso8859_5,
+ "cyrillic": iso8859_5,
+ "iso-8859-5": iso8859_5,
+ "iso-ir-144": iso8859_5,
+ "iso8859-5": iso8859_5,
+ "iso88595": iso8859_5,
+ "iso_8859-5": iso8859_5,
+ "iso_8859-5:1988": iso8859_5,
+ "arabic": iso8859_6,
+ "asmo-708": iso8859_6,
+ "csiso88596e": iso8859_6,
+ "csiso88596i": iso8859_6,
+ "csisolatinarabic": iso8859_6,
+ "ecma-114": iso8859_6,
+ "iso-8859-6": iso8859_6,
+ "iso-8859-6-e": iso8859_6,
+ "iso-8859-6-i": iso8859_6,
+ "iso-ir-127": iso8859_6,
+ "iso8859-6": iso8859_6,
+ "iso88596": iso8859_6,
+ "iso_8859-6": iso8859_6,
+ "iso_8859-6:1987": iso8859_6,
+ "csisolatingreek": iso8859_7,
+ "ecma-118": iso8859_7,
+ "elot_928": iso8859_7,
+ "greek": iso8859_7,
+ "greek8": iso8859_7,
+ "iso-8859-7": iso8859_7,
+ "iso-ir-126": iso8859_7,
+ "iso8859-7": iso8859_7,
+ "iso88597": iso8859_7,
+ "iso_8859-7": iso8859_7,
+ "iso_8859-7:1987": iso8859_7,
+ "sun_eu_greek": iso8859_7,
+ "csiso88598e": iso8859_8,
+ "csisolatinhebrew": iso8859_8,
+ "hebrew": iso8859_8,
+ "iso-8859-8": iso8859_8,
+ "iso-8859-8-e": iso8859_8,
+ "iso-ir-138": iso8859_8,
+ "iso8859-8": iso8859_8,
+ "iso88598": iso8859_8,
+ "iso_8859-8": iso8859_8,
+ "iso_8859-8:1988": iso8859_8,
+ "visual": iso8859_8,
+ "csiso88598i": iso8859_8I,
+ "iso-8859-8-i": iso8859_8I,
+ "logical": iso8859_8I,
+ "csisolatin6": iso8859_10,
+ "iso-8859-10": iso8859_10,
+ "iso-ir-157": iso8859_10,
+ "iso8859-10": iso8859_10,
+ "iso885910": iso8859_10,
+ "l6": iso8859_10,
+ "latin6": iso8859_10,
+ "iso-8859-13": iso8859_13,
+ "iso8859-13": iso8859_13,
+ "iso885913": iso8859_13,
+ "iso-8859-14": iso8859_14,
+ "iso8859-14": iso8859_14,
+ "iso885914": iso8859_14,
+ "csisolatin9": iso8859_15,
+ "iso-8859-15": iso8859_15,
+ "iso8859-15": iso8859_15,
+ "iso885915": iso8859_15,
+ "iso_8859-15": iso8859_15,
+ "l9": iso8859_15,
+ "iso-8859-16": iso8859_16,
+ "cskoi8r": koi8r,
+ "koi": koi8r,
+ "koi8": koi8r,
+ "koi8-r": koi8r,
+ "koi8_r": koi8r,
+ "koi8-ru": koi8u,
+ "koi8-u": koi8u,
+ "csmacintosh": macintosh,
+ "mac": macintosh,
+ "macintosh": macintosh,
+ "x-mac-roman": macintosh,
+ "dos-874": windows874,
+ "iso-8859-11": windows874,
+ "iso8859-11": windows874,
+ "iso885911": windows874,
+ "tis-620": windows874,
+ "windows-874": windows874,
+ "cp1250": windows1250,
+ "windows-1250": windows1250,
+ "x-cp1250": windows1250,
+ "cp1251": windows1251,
+ "windows-1251": windows1251,
+ "x-cp1251": windows1251,
+ "ansi_x3.4-1968": windows1252,
+ "ascii": windows1252,
+ "cp1252": windows1252,
+ "cp819": windows1252,
+ "csisolatin1": windows1252,
+ "ibm819": windows1252,
+ "iso-8859-1": windows1252,
+ "iso-ir-100": windows1252,
+ "iso8859-1": windows1252,
+ "iso88591": windows1252,
+ "iso_8859-1": windows1252,
+ "iso_8859-1:1987": windows1252,
+ "l1": windows1252,
+ "latin1": windows1252,
+ "us-ascii": windows1252,
+ "windows-1252": windows1252,
+ "x-cp1252": windows1252,
+ "cp1253": windows1253,
+ "windows-1253": windows1253,
+ "x-cp1253": windows1253,
+ "cp1254": windows1254,
+ "csisolatin5": windows1254,
+ "iso-8859-9": windows1254,
+ "iso-ir-148": windows1254,
+ "iso8859-9": windows1254,
+ "iso88599": windows1254,
+ "iso_8859-9": windows1254,
+ "iso_8859-9:1989": windows1254,
+ "l5": windows1254,
+ "latin5": windows1254,
+ "windows-1254": windows1254,
+ "x-cp1254": windows1254,
+ "cp1255": windows1255,
+ "windows-1255": windows1255,
+ "x-cp1255": windows1255,
+ "cp1256": windows1256,
+ "windows-1256": windows1256,
+ "x-cp1256": windows1256,
+ "cp1257": windows1257,
+ "windows-1257": windows1257,
+ "x-cp1257": windows1257,
+ "cp1258": windows1258,
+ "windows-1258": windows1258,
+ "x-cp1258": windows1258,
+ "x-mac-cyrillic": macintoshCyrillic,
+ "x-mac-ukrainian": macintoshCyrillic,
+ "chinese": gbk,
+ "csgb2312": gbk,
+ "csiso58gb231280": gbk,
+ "gb2312": gbk,
+ "gb_2312": gbk,
+ "gb_2312-80": gbk,
+ "gbk": gbk,
+ "iso-ir-58": gbk,
+ "x-gbk": gbk,
+ "gb18030": gb18030,
+ "big5": big5,
+ "big5-hkscs": big5,
+ "cn-big5": big5,
+ "csbig5": big5,
+ "x-x-big5": big5,
+ "cseucpkdfmtjapanese": eucjp,
+ "euc-jp": eucjp,
+ "x-euc-jp": eucjp,
+ "csiso2022jp": iso2022jp,
+ "iso-2022-jp": iso2022jp,
+ "csshiftjis": shiftJIS,
+ "ms932": shiftJIS,
+ "ms_kanji": shiftJIS,
+ "shift-jis": shiftJIS,
+ "shift_jis": shiftJIS,
+ "sjis": shiftJIS,
+ "windows-31j": shiftJIS,
+ "x-sjis": shiftJIS,
+ "cseuckr": euckr,
+ "csksc56011987": euckr,
+ "euc-kr": euckr,
+ "iso-ir-149": euckr,
+ "korean": euckr,
+ "ks_c_5601-1987": euckr,
+ "ks_c_5601-1989": euckr,
+ "ksc5601": euckr,
+ "ksc_5601": euckr,
+ "windows-949": euckr,
+ "csiso2022kr": replacement,
+ "hz-gb-2312": replacement,
+ "iso-2022-cn": replacement,
+ "iso-2022-cn-ext": replacement,
+ "iso-2022-kr": replacement,
+ "utf-16be": utf16be,
+ "utf-16": utf16le,
+ "utf-16le": utf16le,
+ "x-user-defined": xUserDefined,
+}
+
+var localeMap = []htmlEncoding{
+ windows1252, // und
+ windows1256, // ar
+ windows1251, // ba
+ windows1251, // be
+ windows1251, // bg
+ windows1250, // cs
+ iso8859_7, // el
+ windows1257, // et
+ windows1256, // fa
+ windows1255, // he
+ windows1250, // hr
+ iso8859_2, // hu
+ shiftJIS, // ja
+ windows1251, // kk
+ euckr, // ko
+ windows1254, // ku
+ windows1251, // ky
+ windows1257, // lt
+ windows1257, // lv
+ windows1251, // mk
+ iso8859_2, // pl
+ windows1251, // ru
+ windows1251, // sah
+ windows1250, // sk
+ iso8859_2, // sl
+ windows1251, // sr
+ windows1251, // tg
+ windows874, // th
+ windows1254, // tr
+ windows1251, // tt
+ windows1251, // uk
+ windows1258, // vi
+ gb18030, // zh-hans
+ big5, // zh-hant
+}
+
+const locales = "und ar ba be bg cs el et fa he hr hu ja kk ko ku ky lt lv mk pl ru sah sk sl sr tg th tr tt uk vi zh-hans zh-hant"
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/ianaindex/example_test.go b/Godeps/_workspace/src/golang.org/x/text/encoding/ianaindex/example_test.go
deleted file mode 100644
index b30573216..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/ianaindex/example_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ianaindex_test
-
-import (
- "fmt"
-
- "golang.org/x/text/encoding/charmap"
- "golang.org/x/text/encoding/ianaindex"
-)
-
-func ExampleIndex() {
- fmt.Println(ianaindex.MIME.Name(charmap.ISO8859_7))
-
- fmt.Println(ianaindex.IANA.Name(charmap.ISO8859_7))
-
- e, _ := ianaindex.IANA.Get("cp437")
- fmt.Println(ianaindex.IANA.Name(e))
-
- // TODO: Output:
- // ISO-8859-7
- // ISO8859_7:1987
- // IBM437
-}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/internal/identifier/identifier.go b/Godeps/_workspace/src/golang.org/x/text/encoding/internal/identifier/identifier.go
index cfb13547c..2a2da0ef2 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/internal/identifier/identifier.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/internal/identifier/identifier.go
@@ -70,7 +70,8 @@ const (
// Unofficial marks the start of encodings not registered by IANA.
Unofficial MIB = 10000 + iota
- // TODO: add Replacement?
+ // Replacement is the WhatWG replacement encoding.
+ Replacement
// XUserDefined is the code for x-user-defined.
XUserDefined
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/internal/internal.go b/Godeps/_workspace/src/golang.org/x/text/encoding/internal/internal.go
index 63bf16cdd..75a5fd165 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/internal/internal.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/internal/internal.go
@@ -36,12 +36,12 @@ type SimpleEncoding struct {
Encoder transform.Transformer
}
-func (e *SimpleEncoding) NewDecoder() transform.Transformer {
- return e.Decoder
+func (e *SimpleEncoding) NewDecoder() *encoding.Decoder {
+ return &encoding.Decoder{Transformer: e.Decoder}
}
-func (e *SimpleEncoding) NewEncoder() transform.Transformer {
- return e.Encoder
+func (e *SimpleEncoding) NewEncoder() *encoding.Encoder {
+ return &encoding.Encoder{Transformer: e.Encoder}
}
// FuncEncoding is an Encoding that combines two functions returning a new
@@ -51,10 +51,25 @@ type FuncEncoding struct {
Encoder func() transform.Transformer
}
-func (e FuncEncoding) NewDecoder() transform.Transformer {
- return e.Decoder()
+func (e FuncEncoding) NewDecoder() *encoding.Decoder {
+ return &encoding.Decoder{Transformer: e.Decoder()}
}
-func (e FuncEncoding) NewEncoder() transform.Transformer {
- return e.Encoder()
+func (e FuncEncoding) NewEncoder() *encoding.Encoder {
+ return &encoding.Encoder{Transformer: e.Encoder()}
}
+
+// A RepertoireError indicates a rune is not in the repertoire of a destination
+// encoding. It is associated with an encoding-specific suggested replacement
+// byte.
+type RepertoireError byte
+
+// Error implements the error interrface.
+func (r RepertoireError) Error() string {
+ return "encoding: rune not supported by encoding."
+}
+
+// Replacement returns the replacement string associated with this error.
+func (r RepertoireError) Replacement() byte { return byte(r) }
+
+var ErrASCIIReplacement = RepertoireError(encoding.ASCIISub)
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/eucjp.go b/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/eucjp.go
index c2d5f19ec..40f9b05f3 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/eucjp.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/eucjp.go
@@ -159,7 +159,8 @@ func (eucJPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err
goto write2or3
}
}
- r = encoding.ASCIISub
+ err = internal.ErrASCIIReplacement
+ break
}
if nDst >= len(dst) {
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/iso2022jp.go b/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/iso2022jp.go
index eb2bc1946..b63e7d5d8 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/iso2022jp.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/iso2022jp.go
@@ -154,9 +154,6 @@ func (e *iso2022JPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc in
// Decode a 1-byte rune.
if r < utf8.RuneSelf {
size = 1
- if r == asciiEsc {
- r = encoding.ASCIISub
- }
} else {
// Decode a multi-byte rune.
@@ -209,7 +206,22 @@ func (e *iso2022JPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc in
goto writeJIS
}
}
- r = encoding.ASCIISub
+
+ // Switch back to ASCII state in case of error so that an ASCII
+ // replacement character can be written in the correct state.
+ if *e != asciiState {
+ if nDst+3 > len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ *e = asciiState
+ dst[nDst+0] = asciiEsc
+ dst[nDst+1] = '('
+ dst[nDst+2] = 'B'
+ nDst += 3
+ }
+ err = internal.ErrASCIIReplacement
+ break
}
if *e != asciiState {
@@ -269,5 +281,16 @@ func (e *iso2022JPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc in
nDst++
continue
}
+ if atEOF && err == nil && *e != asciiState {
+ if nDst+3 > len(dst) {
+ err = transform.ErrShortDst
+ } else {
+ *e = asciiState
+ dst[nDst+0] = asciiEsc
+ dst[nDst+1] = '('
+ dst[nDst+2] = 'B'
+ nDst += 3
+ }
+ }
return nDst, nSrc, err
}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go b/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go
index 70022bda1..424cb8be0 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/japanese/shiftjis.go
@@ -152,7 +152,8 @@ loop:
goto write2
}
}
- r = encoding.ASCIISub
+ err = internal.ErrASCIIReplacement
+ break
}
write1:
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/korean/euckr.go b/Godeps/_workspace/src/golang.org/x/text/encoding/korean/euckr.go
index ebed63cdc..a4b9ff178 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/korean/euckr.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/korean/euckr.go
@@ -101,6 +101,14 @@ func (eucKREncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err
if r < utf8.RuneSelf {
size = 1
+ if nDst >= len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ dst[nDst] = uint8(r)
+ nDst++
+ continue
+
} else {
// Decode a multi-byte rune.
r, size = utf8.DecodeRune(src[nSrc:])
@@ -145,16 +153,9 @@ func (eucKREncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err
goto write2
}
}
- r = encoding.ASCIISub
- }
-
- if nDst >= len(dst) {
- err = transform.ErrShortDst
+ err = internal.ErrASCIIReplacement
break
}
- dst[nDst] = uint8(r)
- nDst++
- continue
write2:
if nDst+2 > len(dst) {
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go b/Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go
index bff57144a..e0b15bbcc 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/gbk.go
@@ -232,7 +232,8 @@ func (e gbkEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err
goto write4
}
}
- r = encoding.ASCIISub
+ err = internal.ErrASCIIReplacement
+ break
}
write1:
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
index e42af960c..85de6b1e6 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
@@ -140,71 +140,81 @@ func (e *hzGB2312Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int
dst[nDst+1] = '~'
nDst += 2
continue
- }
-
- } else {
- // Decode a multi-byte rune.
- r, size = utf8.DecodeRune(src[nSrc:])
- if size == 1 {
- // All valid runes of size 1 (those below utf8.RuneSelf) were
- // handled above. We have invalid UTF-8 or we haven't seen the
- // full character yet.
- if !atEOF && !utf8.FullRune(src[nSrc:]) {
- err = transform.ErrShortSrc
+ } else if *e != asciiState {
+ if nDst+3 > len(dst) {
+ err = transform.ErrShortDst
break
}
+ *e = asciiState
+ dst[nDst+0] = '~'
+ dst[nDst+1] = '}'
+ nDst += 2
+ } else if nDst >= len(dst) {
+ err = transform.ErrShortDst
+ break
}
+ dst[nDst] = uint8(r)
+ nDst += 1
+ continue
- // func init checks that the switch covers all tables.
- switch {
- case encode0Low <= r && r < encode0High:
- if r = rune(encode0[r-encode0Low]); r != 0 {
- goto writeGB
- }
- case encode1Low <= r && r < encode1High:
- if r = rune(encode1[r-encode1Low]); r != 0 {
- goto writeGB
- }
- case encode2Low <= r && r < encode2High:
- if r = rune(encode2[r-encode2Low]); r != 0 {
- goto writeGB
- }
- case encode3Low <= r && r < encode3High:
- if r = rune(encode3[r-encode3Low]); r != 0 {
- goto writeGB
- }
- case encode4Low <= r && r < encode4High:
- if r = rune(encode4[r-encode4Low]); r != 0 {
- goto writeGB
- }
+ }
+
+ // Decode a multi-byte rune.
+ r, size = utf8.DecodeRune(src[nSrc:])
+ if size == 1 {
+ // All valid runes of size 1 (those below utf8.RuneSelf) were
+ // handled above. We have invalid UTF-8 or we haven't seen the
+ // full character yet.
+ if !atEOF && !utf8.FullRune(src[nSrc:]) {
+ err = transform.ErrShortSrc
+ break
}
- r = encoding.ASCIISub
}
- writeASCII:
+ // func init checks that the switch covers all tables.
+ switch {
+ case encode0Low <= r && r < encode0High:
+ if r = rune(encode0[r-encode0Low]); r != 0 {
+ goto writeGB
+ }
+ case encode1Low <= r && r < encode1High:
+ if r = rune(encode1[r-encode1Low]); r != 0 {
+ goto writeGB
+ }
+ case encode2Low <= r && r < encode2High:
+ if r = rune(encode2[r-encode2Low]); r != 0 {
+ goto writeGB
+ }
+ case encode3Low <= r && r < encode3High:
+ if r = rune(encode3[r-encode3Low]); r != 0 {
+ goto writeGB
+ }
+ case encode4Low <= r && r < encode4High:
+ if r = rune(encode4[r-encode4Low]); r != 0 {
+ goto writeGB
+ }
+ }
+
+ terminateInASCIIState:
+ // Switch back to ASCII state in case of error so that an ASCII
+ // replacement character can be written in the correct state.
if *e != asciiState {
- if nDst+3 > len(dst) {
+ if nDst+2 > len(dst) {
err = transform.ErrShortDst
break
}
- *e = asciiState
dst[nDst+0] = '~'
dst[nDst+1] = '}'
nDst += 2
- } else if nDst >= len(dst) {
- err = transform.ErrShortDst
- break
}
- dst[nDst] = uint8(r)
- nDst++
- continue
+ err = internal.ErrASCIIReplacement
+ break
writeGB:
c0 := uint8(r>>8) - 0x80
c1 := uint8(r) - 0x80
if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 {
- r = encoding.ASCIISub
- goto writeASCII
+ goto terminateInASCIIState
}
if *e == asciiState {
if nDst+4 > len(dst) {
@@ -224,5 +234,7 @@ func (e *hzGB2312Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int
nDst += 2
continue
}
+ // TODO: should one always terminate in ASCII state to make it safe to
+ // concatenate two HZ-GB2312-encoded strings?
return nDst, nSrc, err
}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-gb18030.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-gb18030.txt
deleted file mode 100644
index bd7a57227..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-gb18030.txt
+++ /dev/null
@@ -1,510 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/cache/epub/4650/pg4650.txt
---------
-
- CANDIDE,
-
- ou
-
- L'OPTIMISME,
-
- TRADUIT DE L'ALLEMAND
-
- DE M. LE DOCTEUR RALPH,
-
- AVEC LES ADDITIONS
-
- QU'ON A TROUV07ES DANS LA POCHE DU DOCTEUR, LORSQU'IL MOURUT
-
- 08 MINDEN, L'AN DE GR00CE 1759
-
- 1759
-
-
-
-CHAPITRE I.
-
-Comment Candide fut lev dans un beau ch09teau, et comment il fut
-chass d'icelui.
-
-Il y avait en Vestphalie, dans le ch09teau de M. le baron de
-Thunder-ten-tronckh, un jeune gar04on qui la nature avait donn
-les moeurs les plus douces. Sa physionomie annon04ait son 09me.
-Il avait le jugement assez droit, avec l'esprit le plus simple;
-c'est, je crois, pour cette raison qu'on le nommait Candide. Les
-anciens domestiques de la maison soup04onnaient qu'il tait fils
-de la soeur de monsieur le baron et d'un bon et honnte
-gentilhomme du voisinage, que cette demoiselle ne voulut jamais
-pouser parce qu'il n'avait pu prouver que soixante et onze
-quartiers, et que le reste de son arbre gnalogique avait t
-perdu par l'injure du temps.
-
-Monsieur le baron tait un des plus puissants seigneurs de la
-Westphalie, car son ch09teau avait une porte et des fentres. Sa
-grande salle mme tait orne d'une tapisserie. Tous les chiens
-de ses basses-cours composaient une meute dans le besoin; ses
-palefreniers taient ses piqueurs; le vicaire du village tait
-son grand-aum00nier. Ils l'appelaient tous monseigneur, et ils
-riaient quand il fesait des contes.
-
-Madame la baronne, qui pesait environ trois cent cinquante
-livres, s'attirait par l une trs grande considration, et
-fesait les honneurs de la maison avec une dignit qui la rendait
-encore plus respectable. Sa fille Cungonde, 09ge de dix-sept
-ans, tait haute en couleur, fra06che, grasse, apptissante. Le
-fils du baron paraissait en tout digne de son pre. Le
-prcepteur Pangloss[1] tait l'oracle de la maison, et le petit
-Candide coutait ses le04ons avec toute la bonne foi de son 09ge et
-de son caractre.
-
- [1] De _pan_, tout, et _glossa_, langue. B.
-
-
-Pangloss enseignait la mtaphysico-thologo-cosmolonigologie. Il
-prouvait admirablement qu'il n'y a point d'effet sans cause, et
-que, dans ce meilleur des mondes possibles, le ch09teau de
-monseigneur le baron tait le plus beau des ch09teaux, et madame
-la meilleure des baronnes possibles.
-
-Il est dmontr, disait-il, que les choses ne peuvent tre
-autrement; car tout tant fait pour une fin, tout est
-ncessairement pour la meilleure fin. Remarquez bien que les nez
-ont t faits pour porter des lunettes; aussi avons-nous des
-lunettes[2]. Les jambes sont visiblement institues pour tre
-chausses, et nous avons des chausses. Les pierres ont t
-formes pour tre tailles et pour en faire des ch09teaux; aussi
-monseigneur a un trs beau ch09teau: le plus grand baron de la
-province doit tre le mieux log; et les cochons tant faits pour
-tre mangs, nous mangeons du porc toute l'anne: par consquent,
-ceux qui ont avanc que tout est bien ont dit une sottise; il
-fallait dire que tout est au mieux.
-
- [2] Voyez tome XXVII, page 528; et dans les _Mlanges_, anne
- 1738, le chapitre XI de la troisime partie des _07lments de la
- philosophie de Newton_; et anne 1768, le chapitre X des
- _Singularits de la nature_. B.
-
-
-Candide coutait attentivement, et croyait innocemment; car il
-trouvait mademoiselle Cungonde extrmement belle, quoiqu'il ne
-pr06t jamais la hardiesse de le lui dire. Il concluait qu'aprs
-le bonheur d'tre n baron de Thunder-ten-tronckh, le second
-degr de bonheur tait d'tre mademoiselle Cungonde; le
-troisime, de la voir tous les jours; et le quatrime, d'entendre
-ma06tre Pangloss, le plus grand philosophe de la province, et par
-consquent de toute la terre.
-
-Un jour Cungonde, en se promenant auprs du ch09teau, dans le
-petit bois qu'on appelait parc, vit entre des broussailles le
-docteur Pangloss qui donnait une le04on de physique exprimentale
- la femme de chambre de sa mre, petite brune trs jolie et trs
-docile. Comme mademoiselle Cungonde avait beaucoup de
-disposition pour les sciences, elle observa, sans souffler, les
-expriences ritres dont elle fut tmoin; elle vit clairement
-la raison suffisante du docteur, les effets et les causes, et
-s'en retourna tout agite, toute pensive, toute remplie du dsir
-d'tre savante, songeant qu'elle pourrait bien tre la raison
-suffisante du jeune Candide, qui pouvait aussi tre la sienne.
-
-Elle rencontra Candide en revenant au ch09teau, et rougit: Candide
-rougit aussi . Elle lui dit bonjour d'une voix entrecoupe; et
-Candide lui parla sans savoir ce qu'il disait. Le lendemain,
-aprs le d06ner, comme on sortait de table, Cungonde et Candide
-se trouvrent derrire un paravent; Cungonde laissa tomber son
-mouchoir, Candide le ramassa; elle lui prit innocemment la main;
-le jeune homme baisa innocemment la main de la jeune demoiselle
-avec une vivacit, une sensibilit, une gr09ce toute particulire;
-leurs bouches se rencontrrent, leurs yeux s'enflammrent, leurs
-genoux tremblrent, leurs mains s'garrent. M. le baron de
-Thunder-ten-tronckh passa auprs du paravent, et voyant cette
-cause et cet effet, chassa Candide du ch09teau grands coups de
-pied dans le derrire. Cungonde s'vanouit: elle fut soufflete
-par madame la baronne ds qu'elle fut revenue elle-mme; et
-tout fut constern dans le plus beau et le plus agrable des
-ch09teaux possibles.
-
-
-
-CHAPITRE II
-
-Ce que devint Candide parmi les Bulgares.
-
-
-Candide, chass du paradis terrestre, marcha longtemps sans
-savoir o, pleurant, levant les yeux au ciel, les tournant
-souvent vers le plus beau des ch09teaux qui renfermait la plus
-belle des baronnettes; il se coucha sans souper au milieu des
-champs entre deux sillons; la neige tombait gros flocons.
-Candide, tout transi, se tra06na le lendemain vers la ville
-voisine, qui s'appelle _Valdberghoff-trarbk-dikdorff_, n'ayant
-point d'argent, mourant de faim et de lassitude. Il s'arrta
-tristement la porte d'un cabaret. Deux hommes habills de bleu
-le remarqurent: Camarade, dit l'un, voil un jeune homme trs
-bien fait, et qui a la taille requise; ils s'avancrent vers
-Candide et le prirent d06ner trs civilement.--Messieurs, leur
-dit Candide avec une modestie charmante, vous me faites beaucoup
-d'honneur, mais je n'ai pas de quoi payer mon cot.--Ah!
-monsieur, lui dit un des bleus, les personnes de votre figure et
-de votre mrite ne paient jamais rien: n'avez-vous pas cinq pieds
-cinq pouces de haut?--Oui, messieurs, c'est ma taille, dit-il en
-fesant la rvrence.--Ah! monsieur, mettez-vous table; non
-seulement nous vous dfraierons, mais nous ne souffrirons jamais
-qu'un homme comme vous manque d'argent; les hommes ne sont faits
-que pour se secourir les uns les autres.--Vous avez raison, dit
-Candide; c'est ce que M. Pangloss m'a toujours dit, et je vois
-bien que tout est au mieux. On le prie d'accepter quelques cus,
-il les prend et veut faire son billet; on n'en veut point, on se
-met table. N'aimez-vous pas tendrement?....--Oh! oui,
-rpond-il, j'aime tendrement mademoiselle Cungonde.--Non, dit
-l'un de ces messieurs, nous vous demandons si vous n'aimez pas
-tendrement le roi des Bulgares?--Point du tout, dit-il, car je ne
-l'ai jamais vu.--Comment! c'est le plus charmant des rois, et il
-faut boire sa sant.--Oh! trs volontiers, messieurs. Et il
-boit. C'en est assez, lui dit-on, vous voil l'appui, le
-soutien, le dfenseur, le hros des Bulgares; votre fortune est
-faite, et votre gloire est assure. On lui met sur-le-champ les
-fers aux pieds, et on le mne au rgiment. On le fait tourner
-droite, gauche, hausser la baguette, remettre la baguette,
-coucher en joue, tirer, doubler le pas, et on lui donne trente
-coups de b09ton; le lendemain, il fait l'exercice un peu moins
-mal, et il ne re04oit que vingt coups; le surlendemain, on ne lui
-en donne que dix, et il est regard par ses camarades comme un
-prodige.
-
-Candide, tout stupfait, ne dmlait pas encore trop bien comment
-il tait un hros. Il s'avisa un beau jour de printemps de
-s'aller promener, marchant tout droit devant lui, croyant que
-c'tait un privilge de l'espce humaine, comme de l'espce
-animale, de se servir de ses jambes son plaisir. Il n'eut pas
-fait deux lieues que voil quatre autres hros de six pieds qui
-l'atteignent, qui le lient, qui le mnent dans un cachot. On lui
-demanda juridiquement ce qu'il aimait le mieux d'tre fustig
-trente-six fois par tout le rgiment, ou de recevoir -la-fois
-douze balles de plomb dans la cervelle. Il eut beau dire que les
-volonts sont libres, et qu'il ne voulait ni l'un ni l'autre, il
-fallut faire un choix; il se dtermina, en vertu du don de Dieu
-qu'on nomme _libert_, passer trente-six fois par les
-baguettes; il essuya deux promenades. Le rgiment tait compos
-de deux mille hommes; cela lui composa quatre mille coups de
-baguette, qui, depuis la nuque du cou jusqu'au cul, lui
-dcouvrirent les muscles et les nerfs. Comme on allait procder
- la troisime course, Candide, n'en pouvant plus, demanda en
-gr09ce qu'on voul04t bien avoir la bont de lui casser la tte; il
-obtint cette faveur; on lui bande les yeux; on le fait mettre
-genoux. Le roi des Bulgares passe dans ce moment, s'informe du
-crime du patient; et comme ce roi avait un grand gnie, il
-comprit, par tout ce qu'il apprit de Candide, que c'tait un
-jeune mtaphysicien fort ignorant des choses de ce monde, et il
-lui accorda sa gr09ce avec une clmence qui sera loue dans tous
-les journaux et dans tous les sicles. Un brave chirurgien
-gurit Candide en trois semaines avec les mollients enseigns
-par Dioscoride. Il avait dj un peu de peau et pouvait marcher,
-quand le roi des Bulgares livra bataille au roi des Abares.
-
-
-
-CHAPITRE III.
-
-Comment Candide se sauva d'entre les Bulgares, et ce qu'il
-devint.
-
-
-Rien n'tait si beau, si leste, si brillant, si bien ordonn que
-les deux armes. Les trompettes, les fifres, les hautbois, les
-tambours, les canons; formaient une harmonie telle qu'il n'y en
-eut jamais en enfer. Les canons renversrent d'abord peu prs
-six mille hommes de chaque c00t; ensuite la mousqueterie 00ta du
-meilleur des mondes environ neuf dix mille coquins qui en
-infectaient la surface. La ba07onnette fut aussi la raison
-suffisante de la mort de quelques milliers d'hommes. Le tout
-pouvait bien se monter une trentaine de mille 09mes. Candide,
-qui tremblait comme un philosophe, se cacha du mieux qu'il put
-pendant cette boucherie hro07que.
-
-Enfin, tandis que les deux rois fesaient chanter des _Te Deum_,
-chacun dans son camp, il prit le parti d'aller raisonner ailleurs
-des effets et des causes. Il passa par-dessus des tas de morts
-et de mourants, et gagna d'abord un village voisin; il tait en
-cendres: c'tait un village abare que les Bulgares avaient br04l,
-selon les lois du droit public. Ici des vieillards cribls de
-coups regardaient mourir leurs femmes gorges, qui tenaient
-leurs enfants leurs mamelles sanglantes; l des filles
-ventres aprs avoir assouvi les besoins naturels de quelques
-hros, rendaient les derniers soupirs; d'autres demi br04les
-criaient qu'on achev09t de leur donner la mort. Des cervelles
-taient rpandues sur la terre c00t de bras et de jambes
-coups.
-
-Candide s'enfuit au plus vite dans un autre village: il
-appartenait des Bulgares, et les hros abares l'avaient trait
-de mme. Candide, toujours marchant sur des membres palpitants
-ou travers des ruines, arriva enfin hors du th09tre de la
-guerre, portant quelques petites provisions dans son bissac, et
-n'oubliant jamais mademoiselle Cungonde. Ses provisions lui
-manqurent quand il fut en Hollande; mais ayant entendu dire que
-tout le monde tait riche dans ce pays-l, et qu'on y tait
-chrtien, il ne douta pas qu'on ne le trait09t aussi bien qu'il
-l'avait t dans le ch09teau de M. le baron, avant qu'il en e04t
-t chass pour les beaux yeux de mademoiselle Cungonde.
-
-Il demanda l'aum00ne plusieurs graves personnages, qui lui
-rpondirent tous que, s'il continuait faire ce mtier, on
-l'enfermerait dans une maison de correction pour lui apprendre
-vivre.
-
-Il s'adressa ensuite un homme qui venait de parler tout seul
-une heure de suite sur la charit dans une grande assemble. Cet
-orateur le regardant de travers lui dit: Que venez-vous faire
-ici? y tes-vous pour la bonne cause? Il n'y a point d'effet sans
-cause, rpondit modestement Candide; tout est encha06n
-ncessairement et arrang pour le mieux. Il a fallu que je fusse
-chass d'auprs de mademoiselle Cungonde, que j'aie pass par
-les baguettes, et il faut que je demande mon pain, jusqu' ce que
-je puisse en gagner; tout cela ne pouvait tre autrement. Mon
-ami, lui dit l'orateur, croyez-vous que le pape soit
-l'antechrist? Je ne l'avais pas encore entendu dire, rpondit
-Candide: mais qu'il le soit, ou qu'il ne le soit pas, je manque
-de pain. Tu ne mrites pas d'en manger, dit l'autre: va, coquin,
-va, misrable, ne m'approche de ta vie. La femme de l'orateur
-ayant mis la tte la fentre, et avisant un homme qui doutait
-que le pape f04t antechrist, lui rpandit sur le chef un
-plein..... O ciel! quel excs se porte le zle de la religion
-dans les dames!
-
-Un homme qui n'avait point t baptis, un bon anabaptiste, nomm
-Jacques, vit la manire cruelle et ignominieuse dont on traitait
-ainsi un de ses frres, un tre deux pieds sans plumes, qui
-avait une 09me; il l'amena chez lui, le nettoya, lui donna du pain
-et de la bire, lui fit prsent de deux florins, et voulut mme
-lui apprendre travailler dans ses manufactures aux toffes de
-Perse qu'on fabrique en Hollande. Candide se prosternant presque
-devant lui, s'criait: Ma06tre Pangloss me l'avait bien dit que
-tout est au mieux dans ce monde, car je suis infiniment plus
-touch de votre extrme gnrosit que de la duret de ce
-monsieur manteau noir, et de madame son pouse.
-
-Le lendemain, en se promenant, il rencontra un gueux tout couvert
-de pustules, les yeux morts, le bout du nez rong, la bouche de
-travers, les dents noires, et parlant de la gorge, tourment
-d'une toux violente, et crachant une dent chaque effort.
-
-
-
-CHAPITRE IV.
-
-Comment Candide rencontra son ancien ma06tre de philosophie, le
-docteur Pangloss, et ce qui en advint.
-
-
-Candide, plus mu encore de compassion que d'horreur, donna cet
-pouvantable gueux les deux florins qu'il avait re04us de son
-honnte anabaptiste Jacques. Le fant00me le regarda fixement,
-versa des larmes, et sauta son cou. Candide effray recule.
-Hlas! dit le misrable l'autre misrable, ne reconnaissez-vous
-plus votre cher Pangloss? Qu'entends-je? vous, mon cher ma06tre!
-vous, dans cet tat horrible! quel malheur vous est-il donc
-arriv? pourquoi n'tes-vous plus dans le plus beau des ch09teaux?
-qu'est devenue mademoiselle Cungonde, la perle des filles, le
-chef-d'oeuvre de la nature? Je n'en peux plus, dit Pangloss.
-Aussit00t Candide le mena dans l'table de l'anabaptiste, o il
-lui fit manger un peu de pain; et quand Pangloss fut refait: Eh
-bien! lui dit-il, Cungonde? Elle est morte, reprit l'autre.
-Candide s'vanouit ce mot: son ami rappela ses sens avec un peu
-de mauvais vinaigre qui se trouva par hasard dans l'table.
-Candide rouvre les yeux. Cungonde est morte! Ah! meilleur des
-mondes, o tes-vous? Mais de quelle maladie est-elle morte? ne
-serait-ce point de m'avoir vu chasser du beau ch09teau de monsieur
-son pre grands coups de pied? Non, dit Pangloss, elle a t
-ventre par des soldats bulgares, aprs avoir t viole autant
-qu'on peut l'tre; ils ont cass la tte monsieur le baron qui
-voulait la dfendre; madame la baronne a t coupe en morceaux;
-mon pauvre pupille trait prcisment comme sa soeur; et quant au
-ch09teau, il n'est pas rest pierre sur pierre, pas une grange,
-pas un mouton, pas un canard, pas un arbre; mais nous avons t
-bien vengs, car les Abares en ont fait autant dans une baronnie
-voisine qui appartenait un seigneur bulgare.
-
-A ce discours, Candide s'vanouit encore; mais revenu soi, et
-ayant dit tout ce qu'il devait dire, il s'enquit de la cause et
-de l'effet, et de la raison suffisante qui avait mis Pangloss
-dans un si piteux tat. Hlas! dit l'autre, c'est l'amour:
-l'amour, le consolateur du genre humain, le conservateur de
-l'univers, l'09me de tous les tres sensibles, le tendre amour.
-Hlas! dit Candide, je l'ai connu cet amour, ce souverain des
-coeurs, cette 09me de notre 09me; il ne m'a jamais valu qu'un
-baiser et vingt coups de pied au cul. Comment cette belle cause
-a-t-elle pu produire en vous un effet si abominable?
-
-Pangloss rpondit en ces termes: O mon cher Candide! vous avez
-connu Paquette, cette jolie suivante de notre auguste baronne:
-j'ai go04t dans ses bras les dlices du paradis, qui ont produit
-ces tourments d'enfer dont vous me voyez dvor; elle en tait
-infecte, elle en est peut-tre morte. Paquette tenait ce
-prsent d'un cordelier trs savant qui avait remont la source,
-car il l'avait eu d'une vieille comtesse, qui l'avait re04u d'un
-capitaine de cavalerie, qui le devait une marquise, qui le
-tenait d'un page, qui l'avait re04u d'un jsuite, qui, tant
-novice, l'avait eu en droite ligne d'un des compagnons de
-Christophe Colomb. Pour moi, je ne le donnerai personne, car
-je me meurs.
-
-O Pangloss! s'cria Candide, voil une trange gnalogie!
-n'est-ce pas le diable qui en fut la souche? Point du tout,
-rpliqua ce grand homme; c'tait une chose indispensable dans le
-meilleur des mondes, un ingrdient ncessaire; car si Colomb
-n'avait pas attrap dans une 06le de l'Amrique cette maladie[1]
-qui empoisonne la source de la gnration, qui souvent mme
-empche la gnration, et qui est videmment l'oppos du grand
-but de la nature, nous n'aurions ni le chocolat ni la cochenille;
-il faut encore observer que jusqu'aujourd'hui, dans notre
-continent, cette maladie nous est particulire, comme la
-controverse. Les Turcs, les Indiens, les Persans, les Chinois,
-les Siamois, les Japonais, ne la connaissent pas encore; mais il
-y a une raison suffisante pour qu'ils la connaissent leur tour
-dans quelques sicles. En attendant elle a fait un merveilleux
-progrs parmi nous, et surtout dans ces grandes armes composes
-d'honntes stipendiaires bien levs, qui dcident du destin des
-tats; on peut assurer que, quand trente mille hommes combattent
-en bataille range contre des troupes gales en nombre, il y a
-environ vingt mille vrols de chaque c00t.
-
- [1] Voyez tome XXXI, page 7. B.
-
-
-Voil qui est admirable, dit Candide; mais il faut vous faire
-gurir. Et comment le puis-je? dit Pangloss; je n'ai pas le sou,
-mon ami, et dans toute l'tendue de ce globe on ne peut ni se
-faire saigner, ni prendre un lavement sans payer, ou sans qu'il y
-ait quelqu'un qui paie pour nous.
-
-Ce dernier discours dtermina Candide; il alla se jeter aux pieds
-de son charitable anabaptiste Jacques, et lui fit une peinture si
-touchante de l'tat o son ami tait rduit, que le bon-homme
-n'hsita pas recueillir le docteur Pangloss; il le fit gurir
-ses dpens. Pangloss, dans la cure, ne perdit qu'un oeil et une
-oreille. Il crivait bien, et savait parfaitement
-l'arithmtique. L'anabaptiste Jacques en fit son teneur de
-livres. Au bout de deux mois, tant oblig d'aller Lisbonne
-pour les affaires de son commerce, il mena dans son vaisseau ses
-deux philosophes. Pangloss lui expliqua comment tout tait on ne
-peut mieux. Jacques n'tait pas de cet avis. Il faut bien,
-disait-il, que les hommes aient un peu corrompu la nature, car
-ils ne sont point ns loups, et ils sont devenus loups. Dieu ne
-leur a donn ni canons de vingt-quatre, ni ba07onnettes, et ils se
-sont fait des ba07onnettes et des canons pour se dtruire. Je
-pourrais mettre en ligne de compte les banqueroutes, et la
-justice qui s'empare des biens des banqueroutiers pour en
-frustrer les cranciers. Tout cela tait indispensable,
-rpliquait le docteur borgne, et les malheurs particuliers font
-le bien gnral; de sorte que plus il y a de malheurs
-particuliers, et plus tout est bien. Tandis qu'il raisonnait,
-l'air s'obscurcit, les vents soufflrent des quatre coins du
-monde, et le vaisseau fut assailli de la plus horrible tempte,
-la vue du port de Lisbonne.
-
-
-CHAPITRE V.
-
-Tempte, naufrage, tremblement de terre, et ce qui advint du
-docteur Pangloss, de Candide, et de l'anabaptiste Jacques.
-
-La moiti des passagers affaiblis, expirants de ces angoisses
-inconcevables que le roulis d'un vaisseau porte dans les nerfs et
-dans toutes les humeurs du corps agites en sens contraires,
-n'avait pas mme la force de s'inquiter du danger. L'autre
-moiti jetait des cris et fesait des prires; les voiles taient
-dchires, les m09ts briss, le vaisseau entr'ouvert. Travaillait
-qui pouvait, personne ne s'entendait, personne ne commandait.
-L'anabaptiste aidait un peu la manoeuvre; il tait sur le
-tillac; un matelot furieux le frappe rudement et l'tend sur les
-planches; mais du coup qu'il lui donna, il eut lui-mme une si
-violente secousse, qu'il tomba hors du vaisseau, la tte la
-premire. Il restait suspendu et accroch une partie de m09t
-rompu. Le bon Jacques court son secours, l'aide remonter, et
-de l'effort qu'il fait, il est prcipit dans la mer la vue du
-matelot, qui le laissa prir sans daigner seulement le regarder.
-Candide approche, voit son bienfaiteur qui repara06t un moment, et
-qui est englouti pour jamais. Il veut se jeter aprs lui dans la
-mer: le philosophe Pangloss l'en empche, en lui prouvant que la
-rade de Lisbonne avait t forme exprs pour que cet anabaptiste
-s'y noy09t. Tandis qu'il le prouvait _ priori_, le vaisseau
-s'entr'ouvre, tout prit la rserve de Pangloss, de Candide, et
-de ce brutal de matelot qui avait noy le vertueux anabaptiste;
-le coquin nagea heureusement jusqu'au rivage, o Pangloss et
-Candide furent ports sur une planche.
-
-Quand ils furent revenus un peu eux, ils marchrent vers
-Lisbonne; il leur restait quelque argent, avec lequel ils
-espraient se sauver de la faim aprs avoir chapp la tempte.
-
-A peine ont-ils mis le pied dans la ville, en pleurant la mort de
-leur bienfaiteur, qu'ils sentent la terre trembler sous leurs
-pas[1]; la mer s'lve en bouillonnant dans le port, et brise les
-vaisseaux qui sont l'ancre. Des tourbillons de flammes et de
-cendres couvrent les rues et les places publiques; les maisons
-s'croulent, les toits sont renverss sur les fondements, et les
-fondements se dispersent; trente mille habitants de tout 09ge et
-de tout sexe sont crass sous des ruines. Le matelot disait en
-sifflant et en jurant: il y aura quelque chose gagner ici.
-Quelle peut tre la raison suffisante de ce phnomne? disait
-Pangloss. Voici le dernier jour du monde! s'criait Candide.
-Le matelot court incontinent au milieu des dbris, affronte la
-mort pour trouver de l'argent, en trouve, s'en empare, s'enivre,
-et ayant cuv son vin, achte les faveurs de la premire fille de
-bonne volont qu'il rencontre sur les ruines des maisons
-dtruites, et au milieu des mourants et des morts. Pangloss le
-tirait cependant par la manche: Mon ami, lui disait-il, cela
-n'est pas bien, vous manquez la raison universelle, vous prenez
-mal votre temps. Tte et sang, rpondit l'autre, je suis matelot
-et n Batavia; j'ai march quatre fois sur le crucifix dans
-quatre voyages au Japon[2]; tu as bien trouv ton homme avec ta
-raison universelle!
-
-
- [1] Le tremblement de terre de Lisbonne est du 1er novembre 1755.
- B.
-
- [2] Voyez tome XVIII, page 470. B.
-
-
-Quelques clats de pierre avaient bless Candide; il tait tendu
-dans la rue et couvert de dbris. Il disait Pangloss: Hlas!
-procure-moi un peu de vin et d'huile; je me meurs. Ce
-tremblement de terre n'est pas une chose nouvelle, rpondit
-Pangloss; la ville de Lima prouva les mmes secousses en
-Amrique l'anne passe; mmes causes, mmes effets; il y a
-certainement une tra06ne de soufre sous terre depuis Lima jusqu'
-Lisbonne. Rien n'est plus probable, dit Candide; mais, pour
-Dieu, un peu d'huile et de vin. Comment probable? rpliqua le
-philosophe, je soutiens que la chose est dmontre. Candide
-perdit connaissance, et Pangloss lui apporta un peu d'eau d'une
-fontaine voisine.
-
-Le lendemain, ayant trouv quelques provisions de bouche en se
-glissant travers des dcombres, ils rparrent un peu leurs
-forces. Ensuite ils travaillrent comme les autres soulager
-les habitants chapps la mort. Quelques citoyens, secourus
-par eux, leur donnrent un aussi bon d06ner qu'on le pouvait dans
-un tel dsastre: il est vrai que le repas tait triste; les
-convives arrosaient leur pain de leurs larmes; mais Pangloss les
-consola, en les assurant que les choses ne pouvaient tre
-autrement: Car, dit-il, tout ceci est ce qu'il y a de mieux; car
-s'il y a un volcan Lisbonne, il ne pouvait tre ailleurs; car
-il est impossible que les choses ne soient pas o elles sont, car
-tout est bien.
-
-Un petit homme noir, familier de l'inquisition, lequel tait
-c00t de lui, prit poliment la parole et dit: Apparemment que
-monsieur ne croit pas au pch originel; car si tout est au
-mieux, il n'y a donc eu ni chute ni punition.
-
-Je demande trs humblement pardon votre excellence, rpondit
-Pangloss encore plus poliment, car la chute de l'homme et la
-maldiction entraient ncessairement dans le meilleur des mondes
-possibles. Monsieur ne croit donc pas la libert? dit le
-familier. Votre excellence m'excusera, dit Pangloss; la libert
-peut subsister avec la ncessit absolue; car il tait ncessaire
-que nous fussions libres; car enfin la volont dtermine......
-Pangloss tait au milieu de sa phrase, quand Je familier fit un
-signe de tte son estafier qui lui servait boire du vin de
-Porto ou d'Oporto.
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-utf-16le.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-utf-16le.txt
deleted file mode 100644
index 820608bf1..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-utf-16le.txt
+++ /dev/null
Binary files differ
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-utf-8.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-utf-8.txt
deleted file mode 100644
index a4fd62993..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-utf-8.txt
+++ /dev/null
@@ -1,510 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/cache/epub/4650/pg4650.txt
---------
-
- CANDIDE,
-
- ou
-
- L'OPTIMISME,
-
- TRADUIT DE L'ALLEMAND
-
- DE M. LE DOCTEUR RALPH,
-
- AVEC LES ADDITIONS
-
- QU'ON A TROUVÉES DANS LA POCHE DU DOCTEUR, LORSQU'IL MOURUT
-
- À MINDEN, L'AN DE GRÂCE 1759
-
- 1759
-
-
-
-CHAPITRE I.
-
-Comment Candide fut élevé dans un beau château, et comment il fut
-chassé d'icelui.
-
-Il y avait en Vestphalie, dans le château de M. le baron de
-Thunder-ten-tronckh, un jeune garçon à qui la nature avait donné
-les moeurs les plus douces. Sa physionomie annonçait son âme.
-Il avait le jugement assez droit, avec l'esprit le plus simple;
-c'est, je crois, pour cette raison qu'on le nommait Candide. Les
-anciens domestiques de la maison soupçonnaient qu'il était fils
-de la soeur de monsieur le baron et d'un bon et honnête
-gentilhomme du voisinage, que cette demoiselle ne voulut jamais
-épouser parce qu'il n'avait pu prouver que soixante et onze
-quartiers, et que le reste de son arbre généalogique avait été
-perdu par l'injure du temps.
-
-Monsieur le baron était un des plus puissants seigneurs de la
-Westphalie, car son château avait une porte et des fenêtres. Sa
-grande salle même était ornée d'une tapisserie. Tous les chiens
-de ses basses-cours composaient une meute dans le besoin; ses
-palefreniers étaient ses piqueurs; le vicaire du village était
-son grand-aumônier. Ils l'appelaient tous monseigneur, et ils
-riaient quand il fesait des contes.
-
-Madame la baronne, qui pesait environ trois cent cinquante
-livres, s'attirait par là une très grande considération, et
-fesait les honneurs de la maison avec une dignité qui la rendait
-encore plus respectable. Sa fille Cunégonde, âgée de dix-sept
-ans, était haute en couleur, fraîche, grasse, appétissante. Le
-fils du baron paraissait en tout digne de son père. Le
-précepteur Pangloss[1] était l'oracle de la maison, et le petit
-Candide écoutait ses leçons avec toute la bonne foi de son âge et
-de son caractère.
-
- [1] De _pan_, tout, et _glossa_, langue. B.
-
-
-Pangloss enseignait la métaphysico-théologo-cosmolonigologie. Il
-prouvait admirablement qu'il n'y a point d'effet sans cause, et
-que, dans ce meilleur des mondes possibles, le château de
-monseigneur le baron était le plus beau des châteaux, et madame
-la meilleure des baronnes possibles.
-
-Il est démontré, disait-il, que les choses ne peuvent être
-autrement; car tout étant fait pour une fin, tout est
-nécessairement pour la meilleure fin. Remarquez bien que les nez
-ont été faits pour porter des lunettes; aussi avons-nous des
-lunettes[2]. Les jambes sont visiblement instituées pour être
-chaussées, et nous avons des chausses. Les pierres ont été
-formées pour être taillées et pour en faire des châteaux; aussi
-monseigneur a un très beau château: le plus grand baron de la
-province doit être le mieux logé; et les cochons étant faits pour
-être mangés, nous mangeons du porc toute l'année: par conséquent,
-ceux qui ont avancé que tout est bien ont dit une sottise; il
-fallait dire que tout est au mieux.
-
- [2] Voyez tome XXVII, page 528; et dans les _Mélanges_, année
- 1738, le chapitre XI de la troisième partie des _Éléments de la
- philosophie de Newton_; et année 1768, le chapitre X des
- _Singularités de la nature_. B.
-
-
-Candide écoutait attentivement, et croyait innocemment; car il
-trouvait mademoiselle Cunégonde extrêmement belle, quoiqu'il ne
-prît jamais la hardiesse de le lui dire. Il concluait qu'après
-le bonheur d'être né baron de Thunder-ten-tronckh, le second
-degré de bonheur était d'être mademoiselle Cunégonde; le
-troisième, de la voir tous les jours; et le quatrième, d'entendre
-maître Pangloss, le plus grand philosophe de la province, et par
-conséquent de toute la terre.
-
-Un jour Cunégonde, en se promenant auprès du château, dans le
-petit bois qu'on appelait parc, vit entre des broussailles le
-docteur Pangloss qui donnait une leçon de physique expérimentale
-à la femme de chambre de sa mère, petite brune très jolie et très
-docile. Comme mademoiselle Cunégonde avait beaucoup de
-disposition pour les sciences, elle observa, sans souffler, les
-expériences réitérées dont elle fut témoin; elle vit clairement
-la raison suffisante du docteur, les effets et les causes, et
-s'en retourna tout agitée, toute pensive, toute remplie du désir
-d'être savante, songeant qu'elle pourrait bien être la raison
-suffisante du jeune Candide, qui pouvait aussi être la sienne.
-
-Elle rencontra Candide en revenant au château, et rougit: Candide
-rougit aussi . Elle lui dit bonjour d'une voix entrecoupée; et
-Candide lui parla sans savoir ce qu'il disait. Le lendemain,
-après le dîner, comme on sortait de table, Cunégonde et Candide
-se trouvèrent derrière un paravent; Cunégonde laissa tomber son
-mouchoir, Candide le ramassa; elle lui prit innocemment la main;
-le jeune homme baisa innocemment la main de la jeune demoiselle
-avec une vivacité, une sensibilité, une grâce toute particulière;
-leurs bouches se rencontrèrent, leurs yeux s'enflammèrent, leurs
-genoux tremblèrent, leurs mains s'égarèrent. M. le baron de
-Thunder-ten-tronckh passa auprès du paravent, et voyant cette
-cause et cet effet, chassa Candide du château à grands coups de
-pied dans le derrière. Cunégonde s'évanouit: elle fut souffletée
-par madame la baronne dès qu'elle fut revenue à elle-même; et
-tout fut consterné dans le plus beau et le plus agréable des
-châteaux possibles.
-
-
-
-CHAPITRE II
-
-Ce que devint Candide parmi les Bulgares.
-
-
-Candide, chassé du paradis terrestre, marcha longtemps sans
-savoir où, pleurant, levant les yeux au ciel, les tournant
-souvent vers le plus beau des châteaux qui renfermait la plus
-belle des baronnettes; il se coucha sans souper au milieu des
-champs entre deux sillons; la neige tombait à gros flocons.
-Candide, tout transi, se traîna le lendemain vers la ville
-voisine, qui s'appelle _Valdberghoff-trarbk-dikdorff_, n'ayant
-point d'argent, mourant de faim et de lassitude. Il s'arrêta
-tristement à la porte d'un cabaret. Deux hommes habillés de bleu
-le remarquèrent: Camarade, dit l'un, voilà un jeune homme très
-bien fait, et qui a la taille requise; ils s'avancèrent vers
-Candide et le prièrent à dîner très civilement.--Messieurs, leur
-dit Candide avec une modestie charmante, vous me faites beaucoup
-d'honneur, mais je n'ai pas de quoi payer mon écot.--Ah!
-monsieur, lui dit un des bleus, les personnes de votre figure et
-de votre mérite ne paient jamais rien: n'avez-vous pas cinq pieds
-cinq pouces de haut?--Oui, messieurs, c'est ma taille, dit-il en
-fesant la révérence.--Ah! monsieur, mettez-vous à table; non
-seulement nous vous défraierons, mais nous ne souffrirons jamais
-qu'un homme comme vous manque d'argent; les hommes ne sont faits
-que pour se secourir les uns les autres.--Vous avez raison, dit
-Candide; c'est ce que M. Pangloss m'a toujours dit, et je vois
-bien que tout est au mieux. On le prie d'accepter quelques écus,
-il les prend et veut faire son billet; on n'en veut point, on se
-met à table. N'aimez-vous pas tendrement?....--Oh! oui,
-répond-il, j'aime tendrement mademoiselle Cunégonde.--Non, dit
-l'un de ces messieurs, nous vous demandons si vous n'aimez pas
-tendrement le roi des Bulgares?--Point du tout, dit-il, car je ne
-l'ai jamais vu.--Comment! c'est le plus charmant des rois, et il
-faut boire à sa santé.--Oh! très volontiers, messieurs. Et il
-boit. C'en est assez, lui dit-on, vous voilà l'appui, le
-soutien, le défenseur, le héros des Bulgares; votre fortune est
-faite, et votre gloire est assurée. On lui met sur-le-champ les
-fers aux pieds, et on le mène au régiment. On le fait tourner à
-droite, à gauche, hausser la baguette, remettre la baguette,
-coucher en joue, tirer, doubler le pas, et on lui donne trente
-coups de bâton; le lendemain, il fait l'exercice un peu moins
-mal, et il ne reçoit que vingt coups; le surlendemain, on ne lui
-en donne que dix, et il est regardé par ses camarades comme un
-prodige.
-
-Candide, tout stupéfait, ne démêlait pas encore trop bien comment
-il était un héros. Il s'avisa un beau jour de printemps de
-s'aller promener, marchant tout droit devant lui, croyant que
-c'était un privilège de l'espèce humaine, comme de l'espèce
-animale, de se servir de ses jambes à son plaisir. Il n'eut pas
-fait deux lieues que voilà quatre autres héros de six pieds qui
-l'atteignent, qui le lient, qui le mènent dans un cachot. On lui
-demanda juridiquement ce qu'il aimait le mieux d'être fustigé
-trente-six fois par tout le régiment, ou de recevoir à-la-fois
-douze balles de plomb dans la cervelle. Il eut beau dire que les
-volontés sont libres, et qu'il ne voulait ni l'un ni l'autre, il
-fallut faire un choix; il se détermina, en vertu du don de Dieu
-qu'on nomme _liberté_, à passer trente-six fois par les
-baguettes; il essuya deux promenades. Le régiment était composé
-de deux mille hommes; cela lui composa quatre mille coups de
-baguette, qui, depuis la nuque du cou jusqu'au cul, lui
-découvrirent les muscles et les nerfs. Comme on allait procéder
-à la troisième course, Candide, n'en pouvant plus, demanda en
-grâce qu'on voulût bien avoir la bonté de lui casser la tête; il
-obtint cette faveur; on lui bande les yeux; on le fait mettre à
-genoux. Le roi des Bulgares passe dans ce moment, s'informe du
-crime du patient; et comme ce roi avait un grand génie, il
-comprit, par tout ce qu'il apprit de Candide, que c'était un
-jeune métaphysicien fort ignorant des choses de ce monde, et il
-lui accorda sa grâce avec une clémence qui sera louée dans tous
-les journaux et dans tous les siècles. Un brave chirurgien
-guérit Candide en trois semaines avec les émollients enseignés
-par Dioscoride. Il avait déjà un peu de peau et pouvait marcher,
-quand le roi des Bulgares livra bataille au roi des Abares.
-
-
-
-CHAPITRE III.
-
-Comment Candide se sauva d'entre les Bulgares, et ce qu'il
-devint.
-
-
-Rien n'était si beau, si leste, si brillant, si bien ordonné que
-les deux armées. Les trompettes, les fifres, les hautbois, les
-tambours, les canons; formaient une harmonie telle qu'il n'y en
-eut jamais en enfer. Les canons renversèrent d'abord à peu près
-six mille hommes de chaque côté; ensuite la mousqueterie ôta du
-meilleur des mondes environ neuf à dix mille coquins qui en
-infectaient la surface. La baïonnette fut aussi la raison
-suffisante de la mort de quelques milliers d'hommes. Le tout
-pouvait bien se monter à une trentaine de mille âmes. Candide,
-qui tremblait comme un philosophe, se cacha du mieux qu'il put
-pendant cette boucherie héroïque.
-
-Enfin, tandis que les deux rois fesaient chanter des _Te Deum_,
-chacun dans son camp, il prit le parti d'aller raisonner ailleurs
-des effets et des causes. Il passa par-dessus des tas de morts
-et de mourants, et gagna d'abord un village voisin; il était en
-cendres: c'était un village abare que les Bulgares avaient brûlé,
-selon les lois du droit public. Ici des vieillards criblés de
-coups regardaient mourir leurs femmes égorgées, qui tenaient
-leurs enfants à leurs mamelles sanglantes; là des filles
-éventrées après avoir assouvi les besoins naturels de quelques
-héros, rendaient les derniers soupirs; d'autres à demi brûlées
-criaient qu'on achevât de leur donner la mort. Des cervelles
-étaient répandues sur la terre à côté de bras et de jambes
-coupés.
-
-Candide s'enfuit au plus vite dans un autre village: il
-appartenait à des Bulgares, et les héros abares l'avaient traité
-de même. Candide, toujours marchant sur des membres palpitants
-ou à travers des ruines, arriva enfin hors du théâtre de la
-guerre, portant quelques petites provisions dans son bissac, et
-n'oubliant jamais mademoiselle Cunégonde. Ses provisions lui
-manquèrent quand il fut en Hollande; mais ayant entendu dire que
-tout le monde était riche dans ce pays-là, et qu'on y était
-chrétien, il ne douta pas qu'on ne le traitât aussi bien qu'il
-l'avait été dans le château de M. le baron, avant qu'il en eût
-été chassé pour les beaux yeux de mademoiselle Cunégonde.
-
-Il demanda l'aumône à plusieurs graves personnages, qui lui
-répondirent tous que, s'il continuait à faire ce métier, on
-l'enfermerait dans une maison de correction pour lui apprendre à
-vivre.
-
-Il s'adressa ensuite à un homme qui venait de parler tout seul
-une heure de suite sur la charité dans une grande assemblée. Cet
-orateur le regardant de travers lui dit: Que venez-vous faire
-ici? y êtes-vous pour la bonne cause? Il n'y a point d'effet sans
-cause, répondit modestement Candide; tout est enchaîné
-nécessairement et arrangé pour le mieux. Il a fallu que je fusse
-chassé d'auprès de mademoiselle Cunégonde, que j'aie passé par
-les baguettes, et il faut que je demande mon pain, jusqu'à ce que
-je puisse en gagner; tout cela ne pouvait être autrement. Mon
-ami, lui dit l'orateur, croyez-vous que le pape soit
-l'antechrist? Je ne l'avais pas encore entendu dire, répondit
-Candide: mais qu'il le soit, ou qu'il ne le soit pas, je manque
-de pain. Tu ne mérites pas d'en manger, dit l'autre: va, coquin,
-va, misérable, ne m'approche de ta vie. La femme de l'orateur
-ayant mis la tête à la fenêtre, et avisant un homme qui doutait
-que le pape fût antechrist, lui répandit sur le chef un
-plein..... O ciel! à quel excès se porte le zèle de la religion
-dans les dames!
-
-Un homme qui n'avait point été baptisé, un bon anabaptiste, nommé
-Jacques, vit la manière cruelle et ignominieuse dont on traitait
-ainsi un de ses frères, un être à deux pieds sans plumes, qui
-avait une âme; il l'amena chez lui, le nettoya, lui donna du pain
-et de la bière, lui fit présent de deux florins, et voulut même
-lui apprendre à travailler dans ses manufactures aux étoffes de
-Perse qu'on fabrique en Hollande. Candide se prosternant presque
-devant lui, s'écriait: Maître Pangloss me l'avait bien dit que
-tout est au mieux dans ce monde, car je suis infiniment plus
-touché de votre extrême générosité que de la dureté de ce
-monsieur à manteau noir, et de madame son épouse.
-
-Le lendemain, en se promenant, il rencontra un gueux tout couvert
-de pustules, les yeux morts, le bout du nez rongé, la bouche de
-travers, les dents noires, et parlant de la gorge, tourmenté
-d'une toux violente, et crachant une dent à chaque effort.
-
-
-
-CHAPITRE IV.
-
-Comment Candide rencontra son ancien maître de philosophie, le
-docteur Pangloss, et ce qui en advint.
-
-
-Candide, plus ému encore de compassion que d'horreur, donna à cet
-épouvantable gueux les deux florins qu'il avait reçus de son
-honnête anabaptiste Jacques. Le fantôme le regarda fixement,
-versa des larmes, et sauta à son cou. Candide effrayé recule.
-Hélas! dit le misérable à l'autre misérable, ne reconnaissez-vous
-plus votre cher Pangloss? Qu'entends-je? vous, mon cher maître!
-vous, dans cet état horrible! quel malheur vous est-il donc
-arrivé? pourquoi n'êtes-vous plus dans le plus beau des châteaux?
-qu'est devenue mademoiselle Cunégonde, la perle des filles, le
-chef-d'oeuvre de la nature? Je n'en peux plus, dit Pangloss.
-Aussitôt Candide le mena dans l'étable de l'anabaptiste, où il
-lui fit manger un peu de pain; et quand Pangloss fut refait: Eh
-bien! lui dit-il, Cunégonde? Elle est morte, reprit l'autre.
-Candide s'évanouit à ce mot: son ami rappela ses sens avec un peu
-de mauvais vinaigre qui se trouva par hasard dans l'étable.
-Candide rouvre les yeux. Cunégonde est morte! Ah! meilleur des
-mondes, où êtes-vous? Mais de quelle maladie est-elle morte? ne
-serait-ce point de m'avoir vu chasser du beau château de monsieur
-son père à grands coups de pied? Non, dit Pangloss, elle a été
-éventrée par des soldats bulgares, après avoir été violée autant
-qu'on peut l'être; ils ont cassé la tête à monsieur le baron qui
-voulait la défendre; madame la baronne a été coupée en morceaux;
-mon pauvre pupille traité précisément comme sa soeur; et quant au
-château, il n'est pas resté pierre sur pierre, pas une grange,
-pas un mouton, pas un canard, pas un arbre; mais nous avons été
-bien vengés, car les Abares en ont fait autant dans une baronnie
-voisine qui appartenait à un seigneur bulgare.
-
-A ce discours, Candide s'évanouit encore; mais revenu à soi, et
-ayant dit tout ce qu'il devait dire, il s'enquit de la cause et
-de l'effet, et de la raison suffisante qui avait mis Pangloss
-dans un si piteux état. Hélas! dit l'autre, c'est l'amour:
-l'amour, le consolateur du genre humain, le conservateur de
-l'univers, l'âme de tous les êtres sensibles, le tendre amour.
-Hélas! dit Candide, je l'ai connu cet amour, ce souverain des
-coeurs, cette âme de notre âme; il ne m'a jamais valu qu'un
-baiser et vingt coups de pied au cul. Comment cette belle cause
-a-t-elle pu produire en vous un effet si abominable?
-
-Pangloss répondit en ces termes: O mon cher Candide! vous avez
-connu Paquette, cette jolie suivante de notre auguste baronne:
-j'ai goûté dans ses bras les délices du paradis, qui ont produit
-ces tourments d'enfer dont vous me voyez dévoré; elle en était
-infectée, elle en est peut-être morte. Paquette tenait ce
-présent d'un cordelier très savant qui avait remonté à la source,
-car il l'avait eu d'une vieille comtesse, qui l'avait reçu d'un
-capitaine de cavalerie, qui le devait à une marquise, qui le
-tenait d'un page, qui l'avait reçu d'un jésuite, qui, étant
-novice, l'avait eu en droite ligne d'un des compagnons de
-Christophe Colomb. Pour moi, je ne le donnerai à personne, car
-je me meurs.
-
-O Pangloss! s'écria Candide, voilà une étrange généalogie!
-n'est-ce pas le diable qui en fut la souche? Point du tout,
-répliqua ce grand homme; c'était une chose indispensable dans le
-meilleur des mondes, un ingrédient nécessaire; car si Colomb
-n'avait pas attrapé dans une île de l'Amérique cette maladie[1]
-qui empoisonne la source de la génération, qui souvent même
-empêche la génération, et qui est évidemment l'opposé du grand
-but de la nature, nous n'aurions ni le chocolat ni la cochenille;
-il faut encore observer que jusqu'aujourd'hui, dans notre
-continent, cette maladie nous est particulière, comme la
-controverse. Les Turcs, les Indiens, les Persans, les Chinois,
-les Siamois, les Japonais, ne la connaissent pas encore; mais il
-y a une raison suffisante pour qu'ils la connaissent à leur tour
-dans quelques siècles. En attendant elle a fait un merveilleux
-progrès parmi nous, et surtout dans ces grandes armées composées
-d'honnêtes stipendiaires bien élevés, qui décident du destin des
-états; on peut assurer que, quand trente mille hommes combattent
-en bataille rangée contre des troupes égales en nombre, il y a
-environ vingt mille vérolés de chaque côté.
-
- [1] Voyez tome XXXI, page 7. B.
-
-
-Voilà qui est admirable, dit Candide; mais il faut vous faire
-guérir. Et comment le puis-je? dit Pangloss; je n'ai pas le sou,
-mon ami, et dans toute l'étendue de ce globe on ne peut ni se
-faire saigner, ni prendre un lavement sans payer, ou sans qu'il y
-ait quelqu'un qui paie pour nous.
-
-Ce dernier discours détermina Candide; il alla se jeter aux pieds
-de son charitable anabaptiste Jacques, et lui fit une peinture si
-touchante de l'état où son ami était réduit, que le bon-homme
-n'hésita pas à recueillir le docteur Pangloss; il le fit guérir à
-ses dépens. Pangloss, dans la cure, ne perdit qu'un oeil et une
-oreille. Il écrivait bien, et savait parfaitement
-l'arithmétique. L'anabaptiste Jacques en fit son teneur de
-livres. Au bout de deux mois, étant obligé d'aller à Lisbonne
-pour les affaires de son commerce, il mena dans son vaisseau ses
-deux philosophes. Pangloss lui expliqua comment tout était on ne
-peut mieux. Jacques n'était pas de cet avis. Il faut bien,
-disait-il, que les hommes aient un peu corrompu la nature, car
-ils ne sont point nés loups, et ils sont devenus loups. Dieu ne
-leur a donné ni canons de vingt-quatre, ni baïonnettes, et ils se
-sont fait des baïonnettes et des canons pour se détruire. Je
-pourrais mettre en ligne de compte les banqueroutes, et la
-justice qui s'empare des biens des banqueroutiers pour en
-frustrer les créanciers. Tout cela était indispensable,
-répliquait le docteur borgne, et les malheurs particuliers font
-le bien général; de sorte que plus il y a de malheurs
-particuliers, et plus tout est bien. Tandis qu'il raisonnait,
-l'air s'obscurcit, les vents soufflèrent des quatre coins du
-monde, et le vaisseau fut assailli de la plus horrible tempête, à
-la vue du port de Lisbonne.
-
-
-CHAPITRE V.
-
-Tempête, naufrage, tremblement de terre, et ce qui advint du
-docteur Pangloss, de Candide, et de l'anabaptiste Jacques.
-
-La moitié des passagers affaiblis, expirants de ces angoisses
-inconcevables que le roulis d'un vaisseau porte dans les nerfs et
-dans toutes les humeurs du corps agitées en sens contraires,
-n'avait pas même la force de s'inquiéter du danger. L'autre
-moitié jetait des cris et fesait des prières; les voiles étaient
-déchirées, les mâts brisés, le vaisseau entr'ouvert. Travaillait
-qui pouvait, personne ne s'entendait, personne ne commandait.
-L'anabaptiste aidait un peu à la manoeuvre; il était sur le
-tillac; un matelot furieux le frappe rudement et l'étend sur les
-planches; mais du coup qu'il lui donna, il eut lui-même une si
-violente secousse, qu'il tomba hors du vaisseau, la tête la
-première. Il restait suspendu et accroché à une partie de mât
-rompu. Le bon Jacques court à son secours, l'aide à remonter, et
-de l'effort qu'il fait, il est précipité dans la mer à la vue du
-matelot, qui le laissa périr sans daigner seulement le regarder.
-Candide approche, voit son bienfaiteur qui reparaît un moment, et
-qui est englouti pour jamais. Il veut se jeter après lui dans la
-mer: le philosophe Pangloss l'en empêche, en lui prouvant que la
-rade de Lisbonne avait été formée exprès pour que cet anabaptiste
-s'y noyât. Tandis qu'il le prouvait _à priori_, le vaisseau
-s'entr'ouvre, tout périt à la réserve de Pangloss, de Candide, et
-de ce brutal de matelot qui avait noyé le vertueux anabaptiste;
-le coquin nagea heureusement jusqu'au rivage, où Pangloss et
-Candide furent portés sur une planche.
-
-Quand ils furent revenus un peu à eux, ils marchèrent vers
-Lisbonne; il leur restait quelque argent, avec lequel ils
-espéraient se sauver de la faim après avoir échappé à la tempête.
-
-A peine ont-ils mis le pied dans la ville, en pleurant la mort de
-leur bienfaiteur, qu'ils sentent la terre trembler sous leurs
-pas[1]; la mer s'élève en bouillonnant dans le port, et brise les
-vaisseaux qui sont à l'ancre. Des tourbillons de flammes et de
-cendres couvrent les rues et les places publiques; les maisons
-s'écroulent, les toits sont renversés sur les fondements, et les
-fondements se dispersent; trente mille habitants de tout âge et
-de tout sexe sont écrasés sous des ruines. Le matelot disait en
-sifflant et en jurant: il y aura quelque chose à gagner ici.
-Quelle peut être la raison suffisante de ce phénomène? disait
-Pangloss. Voici le dernier jour du monde! s'écriait Candide.
-Le matelot court incontinent au milieu des débris, affronte la
-mort pour trouver de l'argent, en trouve, s'en empare, s'enivre,
-et ayant cuvé son vin, achète les faveurs de la première fille de
-bonne volonté qu'il rencontre sur les ruines des maisons
-détruites, et au milieu des mourants et des morts. Pangloss le
-tirait cependant par la manche: Mon ami, lui disait-il, cela
-n'est pas bien, vous manquez à la raison universelle, vous prenez
-mal votre temps. Tête et sang, répondit l'autre, je suis matelot
-et né à Batavia; j'ai marché quatre fois sur le crucifix dans
-quatre voyages au Japon[2]; tu as bien trouvé ton homme avec ta
-raison universelle!
-
-
- [1] Le tremblement de terre de Lisbonne est du 1er novembre 1755.
- B.
-
- [2] Voyez tome XVIII, page 470. B.
-
-
-Quelques éclats de pierre avaient blessé Candide; il était étendu
-dans la rue et couvert de débris. Il disait à Pangloss: Hélas!
-procure-moi un peu de vin et d'huile; je me meurs. Ce
-tremblement de terre n'est pas une chose nouvelle, répondit
-Pangloss; la ville de Lima éprouva les mêmes secousses en
-Amérique l'année passée; mêmes causes, mêmes effets; il y a
-certainement une traînée de soufre sous terre depuis Lima jusqu'à
-Lisbonne. Rien n'est plus probable, dit Candide; mais, pour
-Dieu, un peu d'huile et de vin. Comment probable? répliqua le
-philosophe, je soutiens que la chose est démontrée. Candide
-perdit connaissance, et Pangloss lui apporta un peu d'eau d'une
-fontaine voisine.
-
-Le lendemain, ayant trouvé quelques provisions de bouche en se
-glissant à travers des décombres, ils réparèrent un peu leurs
-forces. Ensuite ils travaillèrent comme les autres à soulager
-les habitants échappés à la mort. Quelques citoyens, secourus
-par eux, leur donnèrent un aussi bon dîner qu'on le pouvait dans
-un tel désastre: il est vrai que le repas était triste; les
-convives arrosaient leur pain de leurs larmes; mais Pangloss les
-consola, en les assurant que les choses ne pouvaient être
-autrement: Car, dit-il, tout ceci est ce qu'il y a de mieux; car
-s'il y a un volcan à Lisbonne, il ne pouvait être ailleurs; car
-il est impossible que les choses ne soient pas où elles sont, car
-tout est bien.
-
-Un petit homme noir, familier de l'inquisition, lequel était à
-côté de lui, prit poliment la parole et dit: Apparemment que
-monsieur ne croit pas au péché originel; car si tout est au
-mieux, il n'y a donc eu ni chute ni punition.
-
-Je demande très humblement pardon à votre excellence, répondit
-Pangloss encore plus poliment, car la chute de l'homme et la
-malédiction entraient nécessairement dans le meilleur des mondes
-possibles. Monsieur ne croit donc pas à la liberté? dit le
-familier. Votre excellence m'excusera, dit Pangloss; la liberté
-peut subsister avec la nécessité absolue; car il était nécessaire
-que nous fussions libres; car enfin la volonté déterminée......
-Pangloss était au milieu de sa phrase, quand Je familier fit un
-signe de tête à son estafier qui lui servait à boire du vin de
-Porto ou d'Oporto.
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-windows-1252.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-windows-1252.txt
deleted file mode 100644
index 1f8f9eaaf..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/candide-windows-1252.txt
+++ /dev/null
@@ -1,510 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/cache/epub/4650/pg4650.txt
---------
-
- CANDIDE,
-
- ou
-
- L'OPTIMISME,
-
- TRADUIT DE L'ALLEMAND
-
- DE M. LE DOCTEUR RALPH,
-
- AVEC LES ADDITIONS
-
- QU'ON A TROUVES DANS LA POCHE DU DOCTEUR, LORSQU'IL MOURUT
-
- MINDEN, L'AN DE GRCE 1759
-
- 1759
-
-
-
-CHAPITRE I.
-
-Comment Candide fut lev dans un beau chteau, et comment il fut
-chass d'icelui.
-
-Il y avait en Vestphalie, dans le chteau de M. le baron de
-Thunder-ten-tronckh, un jeune garon qui la nature avait donn
-les moeurs les plus douces. Sa physionomie annonait son me.
-Il avait le jugement assez droit, avec l'esprit le plus simple;
-c'est, je crois, pour cette raison qu'on le nommait Candide. Les
-anciens domestiques de la maison souponnaient qu'il tait fils
-de la soeur de monsieur le baron et d'un bon et honnte
-gentilhomme du voisinage, que cette demoiselle ne voulut jamais
-pouser parce qu'il n'avait pu prouver que soixante et onze
-quartiers, et que le reste de son arbre gnalogique avait t
-perdu par l'injure du temps.
-
-Monsieur le baron tait un des plus puissants seigneurs de la
-Westphalie, car son chteau avait une porte et des fentres. Sa
-grande salle mme tait orne d'une tapisserie. Tous les chiens
-de ses basses-cours composaient une meute dans le besoin; ses
-palefreniers taient ses piqueurs; le vicaire du village tait
-son grand-aumnier. Ils l'appelaient tous monseigneur, et ils
-riaient quand il fesait des contes.
-
-Madame la baronne, qui pesait environ trois cent cinquante
-livres, s'attirait par l une trs grande considration, et
-fesait les honneurs de la maison avec une dignit qui la rendait
-encore plus respectable. Sa fille Cungonde, ge de dix-sept
-ans, tait haute en couleur, frache, grasse, apptissante. Le
-fils du baron paraissait en tout digne de son pre. Le
-prcepteur Pangloss[1] tait l'oracle de la maison, et le petit
-Candide coutait ses leons avec toute la bonne foi de son ge et
-de son caractre.
-
- [1] De _pan_, tout, et _glossa_, langue. B.
-
-
-Pangloss enseignait la mtaphysico-thologo-cosmolonigologie. Il
-prouvait admirablement qu'il n'y a point d'effet sans cause, et
-que, dans ce meilleur des mondes possibles, le chteau de
-monseigneur le baron tait le plus beau des chteaux, et madame
-la meilleure des baronnes possibles.
-
-Il est dmontr, disait-il, que les choses ne peuvent tre
-autrement; car tout tant fait pour une fin, tout est
-ncessairement pour la meilleure fin. Remarquez bien que les nez
-ont t faits pour porter des lunettes; aussi avons-nous des
-lunettes[2]. Les jambes sont visiblement institues pour tre
-chausses, et nous avons des chausses. Les pierres ont t
-formes pour tre tailles et pour en faire des chteaux; aussi
-monseigneur a un trs beau chteau: le plus grand baron de la
-province doit tre le mieux log; et les cochons tant faits pour
-tre mangs, nous mangeons du porc toute l'anne: par consquent,
-ceux qui ont avanc que tout est bien ont dit une sottise; il
-fallait dire que tout est au mieux.
-
- [2] Voyez tome XXVII, page 528; et dans les _Mlanges_, anne
- 1738, le chapitre XI de la troisime partie des _lments de la
- philosophie de Newton_; et anne 1768, le chapitre X des
- _Singularits de la nature_. B.
-
-
-Candide coutait attentivement, et croyait innocemment; car il
-trouvait mademoiselle Cungonde extrmement belle, quoiqu'il ne
-prt jamais la hardiesse de le lui dire. Il concluait qu'aprs
-le bonheur d'tre n baron de Thunder-ten-tronckh, le second
-degr de bonheur tait d'tre mademoiselle Cungonde; le
-troisime, de la voir tous les jours; et le quatrime, d'entendre
-matre Pangloss, le plus grand philosophe de la province, et par
-consquent de toute la terre.
-
-Un jour Cungonde, en se promenant auprs du chteau, dans le
-petit bois qu'on appelait parc, vit entre des broussailles le
-docteur Pangloss qui donnait une leon de physique exprimentale
- la femme de chambre de sa mre, petite brune trs jolie et trs
-docile. Comme mademoiselle Cungonde avait beaucoup de
-disposition pour les sciences, elle observa, sans souffler, les
-expriences ritres dont elle fut tmoin; elle vit clairement
-la raison suffisante du docteur, les effets et les causes, et
-s'en retourna tout agite, toute pensive, toute remplie du dsir
-d'tre savante, songeant qu'elle pourrait bien tre la raison
-suffisante du jeune Candide, qui pouvait aussi tre la sienne.
-
-Elle rencontra Candide en revenant au chteau, et rougit: Candide
-rougit aussi . Elle lui dit bonjour d'une voix entrecoupe; et
-Candide lui parla sans savoir ce qu'il disait. Le lendemain,
-aprs le dner, comme on sortait de table, Cungonde et Candide
-se trouvrent derrire un paravent; Cungonde laissa tomber son
-mouchoir, Candide le ramassa; elle lui prit innocemment la main;
-le jeune homme baisa innocemment la main de la jeune demoiselle
-avec une vivacit, une sensibilit, une grce toute particulire;
-leurs bouches se rencontrrent, leurs yeux s'enflammrent, leurs
-genoux tremblrent, leurs mains s'garrent. M. le baron de
-Thunder-ten-tronckh passa auprs du paravent, et voyant cette
-cause et cet effet, chassa Candide du chteau grands coups de
-pied dans le derrire. Cungonde s'vanouit: elle fut soufflete
-par madame la baronne ds qu'elle fut revenue elle-mme; et
-tout fut constern dans le plus beau et le plus agrable des
-chteaux possibles.
-
-
-
-CHAPITRE II
-
-Ce que devint Candide parmi les Bulgares.
-
-
-Candide, chass du paradis terrestre, marcha longtemps sans
-savoir o, pleurant, levant les yeux au ciel, les tournant
-souvent vers le plus beau des chteaux qui renfermait la plus
-belle des baronnettes; il se coucha sans souper au milieu des
-champs entre deux sillons; la neige tombait gros flocons.
-Candide, tout transi, se trana le lendemain vers la ville
-voisine, qui s'appelle _Valdberghoff-trarbk-dikdorff_, n'ayant
-point d'argent, mourant de faim et de lassitude. Il s'arrta
-tristement la porte d'un cabaret. Deux hommes habills de bleu
-le remarqurent: Camarade, dit l'un, voil un jeune homme trs
-bien fait, et qui a la taille requise; ils s'avancrent vers
-Candide et le prirent dner trs civilement.--Messieurs, leur
-dit Candide avec une modestie charmante, vous me faites beaucoup
-d'honneur, mais je n'ai pas de quoi payer mon cot.--Ah!
-monsieur, lui dit un des bleus, les personnes de votre figure et
-de votre mrite ne paient jamais rien: n'avez-vous pas cinq pieds
-cinq pouces de haut?--Oui, messieurs, c'est ma taille, dit-il en
-fesant la rvrence.--Ah! monsieur, mettez-vous table; non
-seulement nous vous dfraierons, mais nous ne souffrirons jamais
-qu'un homme comme vous manque d'argent; les hommes ne sont faits
-que pour se secourir les uns les autres.--Vous avez raison, dit
-Candide; c'est ce que M. Pangloss m'a toujours dit, et je vois
-bien que tout est au mieux. On le prie d'accepter quelques cus,
-il les prend et veut faire son billet; on n'en veut point, on se
-met table. N'aimez-vous pas tendrement?....--Oh! oui,
-rpond-il, j'aime tendrement mademoiselle Cungonde.--Non, dit
-l'un de ces messieurs, nous vous demandons si vous n'aimez pas
-tendrement le roi des Bulgares?--Point du tout, dit-il, car je ne
-l'ai jamais vu.--Comment! c'est le plus charmant des rois, et il
-faut boire sa sant.--Oh! trs volontiers, messieurs. Et il
-boit. C'en est assez, lui dit-on, vous voil l'appui, le
-soutien, le dfenseur, le hros des Bulgares; votre fortune est
-faite, et votre gloire est assure. On lui met sur-le-champ les
-fers aux pieds, et on le mne au rgiment. On le fait tourner
-droite, gauche, hausser la baguette, remettre la baguette,
-coucher en joue, tirer, doubler le pas, et on lui donne trente
-coups de bton; le lendemain, il fait l'exercice un peu moins
-mal, et il ne reoit que vingt coups; le surlendemain, on ne lui
-en donne que dix, et il est regard par ses camarades comme un
-prodige.
-
-Candide, tout stupfait, ne dmlait pas encore trop bien comment
-il tait un hros. Il s'avisa un beau jour de printemps de
-s'aller promener, marchant tout droit devant lui, croyant que
-c'tait un privilge de l'espce humaine, comme de l'espce
-animale, de se servir de ses jambes son plaisir. Il n'eut pas
-fait deux lieues que voil quatre autres hros de six pieds qui
-l'atteignent, qui le lient, qui le mnent dans un cachot. On lui
-demanda juridiquement ce qu'il aimait le mieux d'tre fustig
-trente-six fois par tout le rgiment, ou de recevoir -la-fois
-douze balles de plomb dans la cervelle. Il eut beau dire que les
-volonts sont libres, et qu'il ne voulait ni l'un ni l'autre, il
-fallut faire un choix; il se dtermina, en vertu du don de Dieu
-qu'on nomme _libert_, passer trente-six fois par les
-baguettes; il essuya deux promenades. Le rgiment tait compos
-de deux mille hommes; cela lui composa quatre mille coups de
-baguette, qui, depuis la nuque du cou jusqu'au cul, lui
-dcouvrirent les muscles et les nerfs. Comme on allait procder
- la troisime course, Candide, n'en pouvant plus, demanda en
-grce qu'on voult bien avoir la bont de lui casser la tte; il
-obtint cette faveur; on lui bande les yeux; on le fait mettre
-genoux. Le roi des Bulgares passe dans ce moment, s'informe du
-crime du patient; et comme ce roi avait un grand gnie, il
-comprit, par tout ce qu'il apprit de Candide, que c'tait un
-jeune mtaphysicien fort ignorant des choses de ce monde, et il
-lui accorda sa grce avec une clmence qui sera loue dans tous
-les journaux et dans tous les sicles. Un brave chirurgien
-gurit Candide en trois semaines avec les mollients enseigns
-par Dioscoride. Il avait dj un peu de peau et pouvait marcher,
-quand le roi des Bulgares livra bataille au roi des Abares.
-
-
-
-CHAPITRE III.
-
-Comment Candide se sauva d'entre les Bulgares, et ce qu'il
-devint.
-
-
-Rien n'tait si beau, si leste, si brillant, si bien ordonn que
-les deux armes. Les trompettes, les fifres, les hautbois, les
-tambours, les canons; formaient une harmonie telle qu'il n'y en
-eut jamais en enfer. Les canons renversrent d'abord peu prs
-six mille hommes de chaque ct; ensuite la mousqueterie ta du
-meilleur des mondes environ neuf dix mille coquins qui en
-infectaient la surface. La baonnette fut aussi la raison
-suffisante de la mort de quelques milliers d'hommes. Le tout
-pouvait bien se monter une trentaine de mille mes. Candide,
-qui tremblait comme un philosophe, se cacha du mieux qu'il put
-pendant cette boucherie hroque.
-
-Enfin, tandis que les deux rois fesaient chanter des _Te Deum_,
-chacun dans son camp, il prit le parti d'aller raisonner ailleurs
-des effets et des causes. Il passa par-dessus des tas de morts
-et de mourants, et gagna d'abord un village voisin; il tait en
-cendres: c'tait un village abare que les Bulgares avaient brl,
-selon les lois du droit public. Ici des vieillards cribls de
-coups regardaient mourir leurs femmes gorges, qui tenaient
-leurs enfants leurs mamelles sanglantes; l des filles
-ventres aprs avoir assouvi les besoins naturels de quelques
-hros, rendaient les derniers soupirs; d'autres demi brles
-criaient qu'on achevt de leur donner la mort. Des cervelles
-taient rpandues sur la terre ct de bras et de jambes
-coups.
-
-Candide s'enfuit au plus vite dans un autre village: il
-appartenait des Bulgares, et les hros abares l'avaient trait
-de mme. Candide, toujours marchant sur des membres palpitants
-ou travers des ruines, arriva enfin hors du thtre de la
-guerre, portant quelques petites provisions dans son bissac, et
-n'oubliant jamais mademoiselle Cungonde. Ses provisions lui
-manqurent quand il fut en Hollande; mais ayant entendu dire que
-tout le monde tait riche dans ce pays-l, et qu'on y tait
-chrtien, il ne douta pas qu'on ne le traitt aussi bien qu'il
-l'avait t dans le chteau de M. le baron, avant qu'il en et
-t chass pour les beaux yeux de mademoiselle Cungonde.
-
-Il demanda l'aumne plusieurs graves personnages, qui lui
-rpondirent tous que, s'il continuait faire ce mtier, on
-l'enfermerait dans une maison de correction pour lui apprendre
-vivre.
-
-Il s'adressa ensuite un homme qui venait de parler tout seul
-une heure de suite sur la charit dans une grande assemble. Cet
-orateur le regardant de travers lui dit: Que venez-vous faire
-ici? y tes-vous pour la bonne cause? Il n'y a point d'effet sans
-cause, rpondit modestement Candide; tout est enchan
-ncessairement et arrang pour le mieux. Il a fallu que je fusse
-chass d'auprs de mademoiselle Cungonde, que j'aie pass par
-les baguettes, et il faut que je demande mon pain, jusqu' ce que
-je puisse en gagner; tout cela ne pouvait tre autrement. Mon
-ami, lui dit l'orateur, croyez-vous que le pape soit
-l'antechrist? Je ne l'avais pas encore entendu dire, rpondit
-Candide: mais qu'il le soit, ou qu'il ne le soit pas, je manque
-de pain. Tu ne mrites pas d'en manger, dit l'autre: va, coquin,
-va, misrable, ne m'approche de ta vie. La femme de l'orateur
-ayant mis la tte la fentre, et avisant un homme qui doutait
-que le pape ft antechrist, lui rpandit sur le chef un
-plein..... O ciel! quel excs se porte le zle de la religion
-dans les dames!
-
-Un homme qui n'avait point t baptis, un bon anabaptiste, nomm
-Jacques, vit la manire cruelle et ignominieuse dont on traitait
-ainsi un de ses frres, un tre deux pieds sans plumes, qui
-avait une me; il l'amena chez lui, le nettoya, lui donna du pain
-et de la bire, lui fit prsent de deux florins, et voulut mme
-lui apprendre travailler dans ses manufactures aux toffes de
-Perse qu'on fabrique en Hollande. Candide se prosternant presque
-devant lui, s'criait: Matre Pangloss me l'avait bien dit que
-tout est au mieux dans ce monde, car je suis infiniment plus
-touch de votre extrme gnrosit que de la duret de ce
-monsieur manteau noir, et de madame son pouse.
-
-Le lendemain, en se promenant, il rencontra un gueux tout couvert
-de pustules, les yeux morts, le bout du nez rong, la bouche de
-travers, les dents noires, et parlant de la gorge, tourment
-d'une toux violente, et crachant une dent chaque effort.
-
-
-
-CHAPITRE IV.
-
-Comment Candide rencontra son ancien matre de philosophie, le
-docteur Pangloss, et ce qui en advint.
-
-
-Candide, plus mu encore de compassion que d'horreur, donna cet
-pouvantable gueux les deux florins qu'il avait reus de son
-honnte anabaptiste Jacques. Le fantme le regarda fixement,
-versa des larmes, et sauta son cou. Candide effray recule.
-Hlas! dit le misrable l'autre misrable, ne reconnaissez-vous
-plus votre cher Pangloss? Qu'entends-je? vous, mon cher matre!
-vous, dans cet tat horrible! quel malheur vous est-il donc
-arriv? pourquoi n'tes-vous plus dans le plus beau des chteaux?
-qu'est devenue mademoiselle Cungonde, la perle des filles, le
-chef-d'oeuvre de la nature? Je n'en peux plus, dit Pangloss.
-Aussitt Candide le mena dans l'table de l'anabaptiste, o il
-lui fit manger un peu de pain; et quand Pangloss fut refait: Eh
-bien! lui dit-il, Cungonde? Elle est morte, reprit l'autre.
-Candide s'vanouit ce mot: son ami rappela ses sens avec un peu
-de mauvais vinaigre qui se trouva par hasard dans l'table.
-Candide rouvre les yeux. Cungonde est morte! Ah! meilleur des
-mondes, o tes-vous? Mais de quelle maladie est-elle morte? ne
-serait-ce point de m'avoir vu chasser du beau chteau de monsieur
-son pre grands coups de pied? Non, dit Pangloss, elle a t
-ventre par des soldats bulgares, aprs avoir t viole autant
-qu'on peut l'tre; ils ont cass la tte monsieur le baron qui
-voulait la dfendre; madame la baronne a t coupe en morceaux;
-mon pauvre pupille trait prcisment comme sa soeur; et quant au
-chteau, il n'est pas rest pierre sur pierre, pas une grange,
-pas un mouton, pas un canard, pas un arbre; mais nous avons t
-bien vengs, car les Abares en ont fait autant dans une baronnie
-voisine qui appartenait un seigneur bulgare.
-
-A ce discours, Candide s'vanouit encore; mais revenu soi, et
-ayant dit tout ce qu'il devait dire, il s'enquit de la cause et
-de l'effet, et de la raison suffisante qui avait mis Pangloss
-dans un si piteux tat. Hlas! dit l'autre, c'est l'amour:
-l'amour, le consolateur du genre humain, le conservateur de
-l'univers, l'me de tous les tres sensibles, le tendre amour.
-Hlas! dit Candide, je l'ai connu cet amour, ce souverain des
-coeurs, cette me de notre me; il ne m'a jamais valu qu'un
-baiser et vingt coups de pied au cul. Comment cette belle cause
-a-t-elle pu produire en vous un effet si abominable?
-
-Pangloss rpondit en ces termes: O mon cher Candide! vous avez
-connu Paquette, cette jolie suivante de notre auguste baronne:
-j'ai got dans ses bras les dlices du paradis, qui ont produit
-ces tourments d'enfer dont vous me voyez dvor; elle en tait
-infecte, elle en est peut-tre morte. Paquette tenait ce
-prsent d'un cordelier trs savant qui avait remont la source,
-car il l'avait eu d'une vieille comtesse, qui l'avait reu d'un
-capitaine de cavalerie, qui le devait une marquise, qui le
-tenait d'un page, qui l'avait reu d'un jsuite, qui, tant
-novice, l'avait eu en droite ligne d'un des compagnons de
-Christophe Colomb. Pour moi, je ne le donnerai personne, car
-je me meurs.
-
-O Pangloss! s'cria Candide, voil une trange gnalogie!
-n'est-ce pas le diable qui en fut la souche? Point du tout,
-rpliqua ce grand homme; c'tait une chose indispensable dans le
-meilleur des mondes, un ingrdient ncessaire; car si Colomb
-n'avait pas attrap dans une le de l'Amrique cette maladie[1]
-qui empoisonne la source de la gnration, qui souvent mme
-empche la gnration, et qui est videmment l'oppos du grand
-but de la nature, nous n'aurions ni le chocolat ni la cochenille;
-il faut encore observer que jusqu'aujourd'hui, dans notre
-continent, cette maladie nous est particulire, comme la
-controverse. Les Turcs, les Indiens, les Persans, les Chinois,
-les Siamois, les Japonais, ne la connaissent pas encore; mais il
-y a une raison suffisante pour qu'ils la connaissent leur tour
-dans quelques sicles. En attendant elle a fait un merveilleux
-progrs parmi nous, et surtout dans ces grandes armes composes
-d'honntes stipendiaires bien levs, qui dcident du destin des
-tats; on peut assurer que, quand trente mille hommes combattent
-en bataille range contre des troupes gales en nombre, il y a
-environ vingt mille vrols de chaque ct.
-
- [1] Voyez tome XXXI, page 7. B.
-
-
-Voil qui est admirable, dit Candide; mais il faut vous faire
-gurir. Et comment le puis-je? dit Pangloss; je n'ai pas le sou,
-mon ami, et dans toute l'tendue de ce globe on ne peut ni se
-faire saigner, ni prendre un lavement sans payer, ou sans qu'il y
-ait quelqu'un qui paie pour nous.
-
-Ce dernier discours dtermina Candide; il alla se jeter aux pieds
-de son charitable anabaptiste Jacques, et lui fit une peinture si
-touchante de l'tat o son ami tait rduit, que le bon-homme
-n'hsita pas recueillir le docteur Pangloss; il le fit gurir
-ses dpens. Pangloss, dans la cure, ne perdit qu'un oeil et une
-oreille. Il crivait bien, et savait parfaitement
-l'arithmtique. L'anabaptiste Jacques en fit son teneur de
-livres. Au bout de deux mois, tant oblig d'aller Lisbonne
-pour les affaires de son commerce, il mena dans son vaisseau ses
-deux philosophes. Pangloss lui expliqua comment tout tait on ne
-peut mieux. Jacques n'tait pas de cet avis. Il faut bien,
-disait-il, que les hommes aient un peu corrompu la nature, car
-ils ne sont point ns loups, et ils sont devenus loups. Dieu ne
-leur a donn ni canons de vingt-quatre, ni baonnettes, et ils se
-sont fait des baonnettes et des canons pour se dtruire. Je
-pourrais mettre en ligne de compte les banqueroutes, et la
-justice qui s'empare des biens des banqueroutiers pour en
-frustrer les cranciers. Tout cela tait indispensable,
-rpliquait le docteur borgne, et les malheurs particuliers font
-le bien gnral; de sorte que plus il y a de malheurs
-particuliers, et plus tout est bien. Tandis qu'il raisonnait,
-l'air s'obscurcit, les vents soufflrent des quatre coins du
-monde, et le vaisseau fut assailli de la plus horrible tempte,
-la vue du port de Lisbonne.
-
-
-CHAPITRE V.
-
-Tempte, naufrage, tremblement de terre, et ce qui advint du
-docteur Pangloss, de Candide, et de l'anabaptiste Jacques.
-
-La moiti des passagers affaiblis, expirants de ces angoisses
-inconcevables que le roulis d'un vaisseau porte dans les nerfs et
-dans toutes les humeurs du corps agites en sens contraires,
-n'avait pas mme la force de s'inquiter du danger. L'autre
-moiti jetait des cris et fesait des prires; les voiles taient
-dchires, les mts briss, le vaisseau entr'ouvert. Travaillait
-qui pouvait, personne ne s'entendait, personne ne commandait.
-L'anabaptiste aidait un peu la manoeuvre; il tait sur le
-tillac; un matelot furieux le frappe rudement et l'tend sur les
-planches; mais du coup qu'il lui donna, il eut lui-mme une si
-violente secousse, qu'il tomba hors du vaisseau, la tte la
-premire. Il restait suspendu et accroch une partie de mt
-rompu. Le bon Jacques court son secours, l'aide remonter, et
-de l'effort qu'il fait, il est prcipit dans la mer la vue du
-matelot, qui le laissa prir sans daigner seulement le regarder.
-Candide approche, voit son bienfaiteur qui reparat un moment, et
-qui est englouti pour jamais. Il veut se jeter aprs lui dans la
-mer: le philosophe Pangloss l'en empche, en lui prouvant que la
-rade de Lisbonne avait t forme exprs pour que cet anabaptiste
-s'y noyt. Tandis qu'il le prouvait _ priori_, le vaisseau
-s'entr'ouvre, tout prit la rserve de Pangloss, de Candide, et
-de ce brutal de matelot qui avait noy le vertueux anabaptiste;
-le coquin nagea heureusement jusqu'au rivage, o Pangloss et
-Candide furent ports sur une planche.
-
-Quand ils furent revenus un peu eux, ils marchrent vers
-Lisbonne; il leur restait quelque argent, avec lequel ils
-espraient se sauver de la faim aprs avoir chapp la tempte.
-
-A peine ont-ils mis le pied dans la ville, en pleurant la mort de
-leur bienfaiteur, qu'ils sentent la terre trembler sous leurs
-pas[1]; la mer s'lve en bouillonnant dans le port, et brise les
-vaisseaux qui sont l'ancre. Des tourbillons de flammes et de
-cendres couvrent les rues et les places publiques; les maisons
-s'croulent, les toits sont renverss sur les fondements, et les
-fondements se dispersent; trente mille habitants de tout ge et
-de tout sexe sont crass sous des ruines. Le matelot disait en
-sifflant et en jurant: il y aura quelque chose gagner ici.
-Quelle peut tre la raison suffisante de ce phnomne? disait
-Pangloss. Voici le dernier jour du monde! s'criait Candide.
-Le matelot court incontinent au milieu des dbris, affronte la
-mort pour trouver de l'argent, en trouve, s'en empare, s'enivre,
-et ayant cuv son vin, achte les faveurs de la premire fille de
-bonne volont qu'il rencontre sur les ruines des maisons
-dtruites, et au milieu des mourants et des morts. Pangloss le
-tirait cependant par la manche: Mon ami, lui disait-il, cela
-n'est pas bien, vous manquez la raison universelle, vous prenez
-mal votre temps. Tte et sang, rpondit l'autre, je suis matelot
-et n Batavia; j'ai march quatre fois sur le crucifix dans
-quatre voyages au Japon[2]; tu as bien trouv ton homme avec ta
-raison universelle!
-
-
- [1] Le tremblement de terre de Lisbonne est du 1er novembre 1755.
- B.
-
- [2] Voyez tome XVIII, page 470. B.
-
-
-Quelques clats de pierre avaient bless Candide; il tait tendu
-dans la rue et couvert de dbris. Il disait Pangloss: Hlas!
-procure-moi un peu de vin et d'huile; je me meurs. Ce
-tremblement de terre n'est pas une chose nouvelle, rpondit
-Pangloss; la ville de Lima prouva les mmes secousses en
-Amrique l'anne passe; mmes causes, mmes effets; il y a
-certainement une trane de soufre sous terre depuis Lima jusqu'
-Lisbonne. Rien n'est plus probable, dit Candide; mais, pour
-Dieu, un peu d'huile et de vin. Comment probable? rpliqua le
-philosophe, je soutiens que la chose est dmontre. Candide
-perdit connaissance, et Pangloss lui apporta un peu d'eau d'une
-fontaine voisine.
-
-Le lendemain, ayant trouv quelques provisions de bouche en se
-glissant travers des dcombres, ils rparrent un peu leurs
-forces. Ensuite ils travaillrent comme les autres soulager
-les habitants chapps la mort. Quelques citoyens, secourus
-par eux, leur donnrent un aussi bon dner qu'on le pouvait dans
-un tel dsastre: il est vrai que le repas tait triste; les
-convives arrosaient leur pain de leurs larmes; mais Pangloss les
-consola, en les assurant que les choses ne pouvaient tre
-autrement: Car, dit-il, tout ceci est ce qu'il y a de mieux; car
-s'il y a un volcan Lisbonne, il ne pouvait tre ailleurs; car
-il est impossible que les choses ne soient pas o elles sont, car
-tout est bien.
-
-Un petit homme noir, familier de l'inquisition, lequel tait
-ct de lui, prit poliment la parole et dit: Apparemment que
-monsieur ne croit pas au pch originel; car si tout est au
-mieux, il n'y a donc eu ni chute ni punition.
-
-Je demande trs humblement pardon votre excellence, rpondit
-Pangloss encore plus poliment, car la chute de l'homme et la
-maldiction entraient ncessairement dans le meilleur des mondes
-possibles. Monsieur ne croit donc pas la libert? dit le
-familier. Votre excellence m'excusera, dit Pangloss; la libert
-peut subsister avec la ncessit absolue; car il tait ncessaire
-que nous fussions libres; car enfin la volont dtermine......
-Pangloss tait au milieu de sa phrase, quand Je familier fit un
-signe de tte son estafier qui lui servait boire du vin de
-Porto ou d'Oporto.
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt
deleted file mode 100644
index 7b03a9906..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt
+++ /dev/null
@@ -1,178 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/cache/epub/1982/pg1982.txt
---------
-
-
-ζǷ
-
-λǤ롣ͤβͤβDZߤԤäƤ
-βˤϡˤγï⤤ʤ꡹ðɤ礭ʱˡ꤮
-ꤹɤȤޤäƤ롣礬ϩˤʾϡˤγˤ⡢
-򤹤Խޤ汨˹Ҥ⤦󻰿ͤϤꤽʤΤǤ롣줬ˤγ
-ï⤤ʤ
-ΤȱȡǯԤˤϡϿ̤ȤȤлȤȤ
-ĤŤƵäΤӤϰ̤Ǥʤ쵭ˤȡʩ
-ʩǺդơðĤꡢʤϤˤĤꤷڤϩФ
-Ĥ߽ŤͤƿŤʤˤäƤȱȤǤ롣椬λǤ뤫顢
-νʤɤϡïΤƤƸܤߤԤʤäȤιӤ̤Ƥ
-褤ˤơìʤˤࡣͤࡣȤȤޤˤϡ
-ʤͤ򡢤ػäơΤƤƹԤȱ褿ǡ
-ʤʤȡïǤⵤ̣򰭤äơζؤ­֤ߤ򤷤ʤˤʤ
-ƤޤäΤǤ롣
-褫餫󽸤ޤä褿ָȡȤ
-ؤơ⤤ʤӡˤΤޤƤʤ顢ӤޤäƤ롣
-ζͼƤǤʤˤϡ줬ޤ褦ˤϤä긫
-ϡξˤͤߤΤǤ롣⺣ϡ¤
-챩⸫ʤͣ꡹줫äƤܤĹ
-Ϥʤξˡʵʤˤ򤯤ӤĤƤΤ롣
-ϼʤʤΰ־ʤ餷βʤˤοơˤ˽
-褿礭⮡ʤˤӡˤ򵤤ˤʤ顢ܤꡢΤդΤįƤΤ
-롣
-ԤϤäֲͤߤԤäƤפȽ񤤤ͤϡ
-Ǥ̤ɤ褦ȱƤϤʤդʤ顢ͤβȤصĤȦǤ
-롣꤬μͤϡ͸˲ˤФ줿ˤ񤤤褦ˡԤ
-Įϰ̤ʤ餺ƤβͤǯȤƤͤˤФ
-줿Τ⡢οξ;Ȥ˳ʤʤ顢ֲͤߤԤäƤ
-ȱ⡢ֱˤդꤳ줿ͤԤ꤬ʤơˤƤפ
-ŬǤ롣ξ塢ζͤ⾯ʤ餺ʿīβͤ
-Sentimentalisme˱ƶʤˤιﲼ꤫դФϡ̤˾
-뤱ʤǡͤϡƤ⺹뤷ɤˤ
-ȤơФɤˤʤʤ򡢤ɤˤ褦ȤơȤȤʤ
-򤿤ɤʤ顢äϩˤդ뱫βʹȤʤʹƤ
-ĤĤǡ󤯤顢äȱ򤢤ĤƤ롣ͼǤϼ˶
-㤯ơ夲ȡβФˤĤФᰡʤ餫ˤˡŤ
-Ť٤Ƥ롣
-ɤˤʤʤ򡢤ɤˤ٤ˤϡʤǤʤȤޡˤϤʤ
-ǤСϡʤĤˤβƻФڤξǡʤˡˤ򤹤
-Ǥ롣ơξػäơΤ褦˼ΤƤƤޤФ
-Ǥ롣ФʤȤСͤιͤϡ٤Ʊƻˤȶˡä
-ζɽذ夷Ρ֤СפϡĤǤäƤ⡢ɡ֤Сפ
-äͤϡʤФʤȤꤷʤ⡢Ρ֤СפΤ
-Ĥ٤ˡθĤͤˤʤ곰˻ʤפȱ
-ѶŪ˹ꤹΡͦФˤΤǤ롣
-ͤ礭ʤˤ򤷤ơ줫顢絷Ω夬äͼ䤨Τ
-Ԥϡ⤦вߤδǤ롣Ȥδ֤ͼǤȶ˱θ
-ʤ᤭̤롣ðɤˤȤޤäƤ꤮ꤹ⡢⤦ɤعԤäƤޤ
-
-ͤϡ¤ʤ顢δΡʤߡˤ˽Ťͤβθ⤯
-Τޤ򸫤ޤ路δΤʤܤˤΤʤճڤˤͤ줽
-ʽ꤬СǤȤ⤫⡢ȻפäǤ롣ȡ
-ξϰؾ롢ιǷðɤäҤˤĤʤ顢ͤˤ
-Ƥ⡢ɤͤФǤ롣ͤϡǹˤʤҤŤˤ
-ʤ褦˵Ĥʤ顢Ϥ­򡢤Ҥΰֲʤؤ
-줫顢ʬθǤ롣ϰξؽФ롢ιҤʤˡ
-ˤǭΤ褦˿Ȥ¤ơ©򻦤ʤ顢ƻҤ򱮤äƤϰξ夫
-餵Фθˡˤαˤ̤餷Ƥ롣ûʤҤˤˡ
-֤ǿä⮤ΤˤǤ롣ͤϡϤᤫ顢ξˤԤϡͤФ
-ȹäƤ줬ҤʾäƸȡǤïФȤܤơ
-⤽βФ¶躡ưƤ餷ϡä
-򤫤ŷ΢ˡʤǤäΤǡˤΤ줿ΤǤ
-롣αˡξǡФȤ⤷Ƥ뤫ϡɤͣμԤǤϤ
-
-ͤϡܼʤˤΤ褦­̤ǡäȵޤҤ򡢰־ʤ
-礦褦ˤƾĤ᤿Τʿˤʤ顢
-ؽФơ붲롢ϰƸ
-ȡϰˤϡʹ̤ꡢĤλӳʤˤ̵¤˴Ƥ
-뤬ФθεڤϰϤפä궹ΤǡϴĤȤ狼ʤͣ
-ܤʤ顢ΤΤϡλӳȡʪ夿ӳȤȱ
-롣ˤϽˤޤäƤ餷ơλӳϳ줬
-ʤĤơˡƤʹ֤ȱ¤ڤԤͤ¤äͷ
-褦ˡ򳫤ꡢФꤷơξˤäƤ
-⡢ȤȤι⤯ʤäƤʬˡܤꤷФθ򤦤ơ㤯ʤä
-ʬαƤذŤʤ顢ʵפ˰ʤˤǡۤäƤ
-ͤϡλӳ।˻פ鷺ɡäʤäˡ
-μϡνִ֤ˤϡ⤦ɡ椦˺Ƥ붯ؼʤۤȤ
-ɤȤȤˤˤ̳ФåäƤޤäǤ롣
-ͤδϡλϤơ¶ӳäƤʤޤäƤ˿ʹ
-򸫤ȩʤҤϤˤʪؤ㤤餻ȱƬΡΤ褦
-Ϸ̤Ǥ롣Ϸ̤ϡμ˲ФȤ⤷Ҥäơλӳΰ
-δ褦įƤȱӤĹ򸫤ȡ¿ʬλӳǤ
-ͤϡϻʬζݤȻʬι񿴤ȤươûϸƵۡʤˤ򤹤Τ
-˺Ƥ쵭εԤθڤСƬȡʤȤˤӤפ褦˴
-ΤǤ롣ȡϷ̤ϡҤ򡢾Ĥδ֤ޤơ줫顢ޤį
-Ƥӳμξ򤫤ȡ١οƤλҤ͡ʤߡˤȤ褦
-ˡĹȱӤܤȴϤ᤿ȱϼ˽äȴ餷
-ȱӤܤȴΤ˽äƲͤοϡݤľäƹԤ
-ơƱˡϷ̤ФϤư褿
-䡢Ϸ̤ФȱäƤϡ뤫Τʤǫʤषˡ
-밭Фȿʬ˶褿ΤǤ롣λïβͤˡ
-äβǤˤͤƤʤˡˤ򤹤뤫ͤˤʤ뤫ȱ
-򡢲ƻФ顢餯ͤϡ̤ʤǤ
-ۤɡˤΰ࿴ϡϷ̤ξޤҤΤ褦ˡ褯dz
-ƤΤǤ롣
-ͤˤϡϷ̤ͤȱӤȴ狼ʤääơŪ
-ˤϡβҤŤƤ褤ΤʤäͤˤȤäƤϡ
-ˡξǡͤȱӤȴȱǴ˵
-餶밭Ǥäͤϡäʬͤˤʤ뵤Ǥʤϡ
-˺ƤΤǤ롣
-ǡͤϡξ­ϤơʤꡢҤӾ夬ä
-ʤҤŤˤ˼򤫤ʤ顢ԤϷ̤ߤäϷ̤
-äΤϡʤ
-Ϸ̤ϡܲͤ򸫤ȡޤ׸ʤߡˤˤǤƤ줿褦ˡӾ夬
-
-֤Τ졢ɤعԤ
-ͤϡϷ̤ӳˤĤޤŤʤ顢Ƥդᤤƨ褦ȤԼɤǡ
-ͤäϷ̤ϡǤⲼͤĤΤƹԤȤ롣ͤԤ
-ޤȤơɤͤϻӳǡá̵ΤޤޡĤ߹ä
-ϡϤᤫ顢狼äƤ롣ͤϤȤȤϷ̤ӤĤǡ̵
-ؤͤݤ١ܡʤȤˤεӤΤ褦ʡФӤǤ롣
-ֲ򤷤Ƥ򤷤Ƥ̤ȡ衣
-ͤϡϷ̤Ĥȡʤꡢξʧäơ򤤹ݡʤϤ͡ˤο
-δؤĤĤɤ⡢Ϸ̤ۤäƤ롣ξʤʤդ碌ơ
-©ڤʤ顢򡢴夬ޤ֤γؽФˤʤơΤ褦
-˼ٹʤ夦͡ˤۤäƤ롣򸫤ȡͤϻϤˤϷ̤
-ʬΰջ֤˻ۤƤȱռơΰռϡ
-ޤǤϤdzƤο򲿻ʤġˤδ֤ˤޤƤޤä˻Ĥ
-ΤϡͣŻ򤷤ơ줬Ρ¤餫դ­Ȥ
-ФǤ롣ǡͤϡϷ̤򡢸ʤ顢Ƥä
-ָʤϸȡʤӤˤģͤʤɤǤϤʤβ̤꤫
-ιμԤ餪򤫤ơɤ褦ȱ褦ʻϤʤͣʬ
-ξǡ򤷤ƤΤʤäФΤ
-ȡϷ̤ϡ򡢰礭ơäȤβͤδ򸫼ä
-ޤ֤֤ʤäĻΤ褦ʡԤǸΤǤ롣줫顢Ⲥǡء
-ɡȰĤˤʤä򲿤ʪǤǤ褦ư٤ǡäʩ
-ưƤΤ롣λι顢ʤ餹ˤƤ褦ä
-ͤμä褿
-֤ȱȴƤʡνȱȴƤʡʤĤˤˤ褦Ȼפ
-㡣
-ͤϡϷ̤¸ʿޤʤΤ˼˾Ƽ˾Ʊˡ
-ΤȰ줷ˡؤϤä褿ȡεʤˤ
-ؤ̤ΤǤϷ̤ϡҼˡޤӳƬåʤȡˤäĹȴ
-Ӥäʤꡢ걡ʤҤˤΤĤ֤䤯褦ǡʤ顢ʻ򱾤
-
-ͤȱӤȴȱϡΤ̡ͤ
-¿ϡΰ̤ʻ򡢤Ƥ⤤ʹ֤ФǤ롣ˡʬȱȴ
-ʤɤϡؤФꤺĤڤäƴΤ򡢴ʤۤˤȱäơ
-ӡʤϤˤοؤ˹Ԥä¤ˤäƻʤʤäʤ顢Ǥ
-˹ԤäƤ⤷ʤ⡢ν봳ϡ̣褤ȱΤǡ
-Ӥ礫äƤΤǤ롣ʬϡνΤȤ
-פʤʤСʤˡˤ򤹤ΤǡʤǤ롣
-顢ʬΤƤⰭȤϻפʤϤꤷʤС
-򤹤ΤǡʤǤ롣ơλʤ򡢤褯
-ΤäƤνϡʬΤƤΤˤʤȻפǤ
-롣Ϸ̤ϡΤʰ̣λ򱾤ä
-ͤϡˤơ򺸤μǤʤ顢Ȥơ
-äʹƤμǤϡ֤ˤǿ礭⮡ʤˤӡˤ
-ˤʤ顢ʹƤΤǤ롣ǷʹƤˡͤοˤϡ
-ͦޤ褿ϡäβǤˤ˷礱ƤͦǤ롣
-ơäξؾʤˤäơϷ̤ᤨͦȤϡ
-ȿФưȤͦǤ롣ͤϡ򤹤뤫ͤˤʤ뤫¤ʤ
-ФǤϤʤλΤˤο鱾Сʤɤȱϡء
-ʤռγɤФƤ
-֤äȡ
-Ϸ̤äȡͤޡʤˤ褦ǰ򲡤ơ­
-ؽФȡ԰դˡμ⮤ΥơϷ̤ζ߾ʤ꤬ߡˤĤߤʤ顢
-֤ǤϡʤʤҤϤˤ򤷤褦Ⱥޤʡʤ⤽ʤС
-ΤʤΤ
-ͤϡФ䤯Ϸ̤ʪȤä줫顢­ˤߤĤȤϷ
-̤򡢼ӤӳξؽݤҤθޤǤϡϤ˸ФǤ롣
-ͤϡȤäɰȩʪ來ˤơޤ֤˵ޤҤ
-ꤿ
-á褦ݤƤϷ̤ӳ椫顢Τ򵯤Τϡ
-줫֤ʤλǤ롣Ϸ̤ϡĤ֤䤯褦ʡ᤯褦ΩƤʤ顢
-ޤdzƤФθ򤿤ˡҤθޤǡäƹԤäơ顢
-ûȱݡʤޡˤˤơβˤϡͣƶʤ
-Ȥˤ뤬ФǤ롣
-ͤϡˡơԤĮضƯ˵ޤǤ
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt
deleted file mode 100644
index 0bc24bc1b..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt
+++ /dev/null
@@ -1,178 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/cache/epub/1982/pg1982.txt
---------
-$BMe@8Lg(B
-
-$B3)@nN6G72p(B
-
-$B!!0?F|$NJkJ}$N;v$G$"$k!#0l?M$N2<?M$,!"Me@8Lg$N2<$G1+$d$_$rBT$C$F$$$?!#!!9-$$Lg(B
-$B$N2<$K$O!"$3$NCK$N30$KC/$b$$$J$$!#$?$@!"=j!9C0EI$NGm$2$?!"Bg$-$J1_Cl$K!"$-$j$.(B
-$B$j$9$,0lI$$H$^$C$F$$$k!#Me@8Lg$,!"<k?}BgO)$K$"$k0J>e$O!"$3$NCK$N30$K$b!"1+$d$_(B
-$B$r$9$k;T=w3^$dYf1(K9;R$,!"$b$&Fs;0?M$O$"$j$=$&$J$b$N$G$"$k!#$=$l$,!"$3$NCK$N30(B
-$B$KC/$b$$$J$$!#(B
-$B!!2?8N$+$H1>$&$H!"$3$NFs;0G/!"5~ET$K$O!"CO?L$H$+DTIw$H$+2P;v$H$+q@q<$H$+1>$&:R(B
-$B$$$,$D$E$$$F5/$3$C$?!#$=$3$GMlCf$N$5$S$lJ}$O0lDL$j$G$J$$!#5l5-$K$h$k$H!"J)A|$d(B
-$BJ)6q$rBG:U$$$F!"$=$NC0$,$D$$$?$j!"6b6d$NGs!J$O$/!K$,$D$$$?$j$7$?LZ$r!"O)$P$?$K(B
-$B$D$_=E$M$F?E$NNA!J$7$m!K$KGd$C$F$$$?$H1>$&$3$H$G$"$k!#MlCf$,$=$N;OKv$G$"$k$+$i!"(B
-$BMe@8Lg$N=$M}$J$I$O!"85$h$jC/$b<N$F$F8\$_$k<T$,$J$+$C$?!#$9$k$H$=$N9S$l2L$F$?$N(B
-$B$r$h$$;v$K$7$F!"8QC,!J$3$j!K$,@3$`!#Ep?M$,@3$`!#$H$&$H$&$7$^$$$K$O!"0z<h$j<j$N(B
-$B$J$$;`?M$r!"$3$NLg$X;}$C$FMh$F!"<N$F$F9T$/$H1>$&=,47$5$(=PMh$?!#$=$3$G!"F|$NL\(B
-$B$,8+$($J$/$J$k$H!"C/$G$b5$L#$r0-$,$C$F!"$3$NLg$N6a=j$X$OB-$V$_$r$7$J$$;v$K$J$C(B
-$B$F$7$^$C$?$N$G$"$k!#(B
-$B!!$=$NBe$jKtrm$,2?=h$+$i$+!"$?$/$5$s=8$^$C$FMh$?!#Ck4V8+$k$H!"$=$Nrm$,2?1)$H$J(B
-$B$/NX$rIA$$$F!"9b$$rvHx!J$7$S!K$N$^$o$j$rSF$-$J$,$i!"Ht$S$^$o$C$F$$$k!#<l$KLg$N(B
-$B>e$N6u$,!"M<>F$1$G$"$+$/$J$k;~$K$O!"$=$l$,8UKc$r$^$$$?$h$&$K$O$C$-$j8+$($?!#rm(B
-$B$O!"L^O@!"Lg$N>e$K$"$k;`?M$NFy$r!"Bo$_$KMh$k$N$G$"$k!#!<!<L`$b:#F|$O!"9o8B$,CY(B
-$B$$$;$$$+!"0l1)$b8+$($J$$!#M#!"=j!9!"Jx$l$+$+$C$?!"$=$&$7$F$=$NJx$lL\$KD9$$Ap$N(B
-$B$O$($?@PCJ$N>e$K!"rm$NJ5!J$/$=!K$,!"E@!9$HGr$/$3$S$j$D$$$F$$$k$N$,8+$($k!#2<?M(B
-$B$O<7CJ$"$k@PCJ$N0lHV>e$NCJ$K@v$$$6$i$7$?:0$N2(!J$"$*!K$N?,$r?x$($F!"1&$NKK$K=P(B
-$BMh$?!"Bg$-$JLLb.!J$K$-$S!K$r5$$K$7$J$,$i!"$\$s$d$j!"1+$N$U$k$N$rD/$a$F$$$k$N$G(B
-$B$"$k!#(B
-$B!!:n<T$O$5$C$-!"!V2<?M$,1+$d$_$rBT$C$F$$$?!W$H=q$$$?!#$7$+$7!"2<?M$O!"1+$,$d$s(B
-$B$G$b3JJL$I$&$7$h$&$H1>$&Ev$F$O$J$$!#$U$@$s$J$i!"L^O@!"<g?M$N2H$X5"$k2D$-H&$G$"(B
-$B$k!#=j$,$=$N<g?M$+$i$O!";M8^F|A0$K2K$r=P$5$l$?!#A0$K$b=q$$$?$h$&$K!"Ev;~5~ET$N(B
-$BD.$O0lDL$j$J$i$:?jHy$7$F$$$?!#:#$3$N2<?M$,!"1JG/!";H$o$l$F$$$?<g?M$+$i2K$r=P$5(B
-$B$l$?$N$b!"$3$N?jHy$N>.$5$JM>GH$K30$J$i$J$$!#$@$+$i!"!V2<?M$,1+$d$_$rBT$C$F$$$?!W(B
-$B$H1>$&$h$j$b!"!V1+$K$U$j$3$a$i$l$?2<?M$,!"9T$-=j$,$J$/$F!"ESJ}$K$/$l$F$$$?!W$H(B
-$B1>$&J}$,!"E,Ev$G$"$k!#$=$N>e!":#F|$N6uLOMM$b>/$J$+$i$:$3$NJ?0BD+$N2<?M$N(B
-Sentimentalisme$B$K1F6A$7$?!#?=!J$5$k!K$N9o2<$,$j$+$i$U$j=P$7$?1+$O!"L$$@$K>e(B
-$B$,$k$1$7$-$,$J$$!#$=$3$G!"2<?M$O!"2?$rA<$$$F$b:9Ev$?$jL@F|$NJk$7$r$I$&$K$+$7$h(B
-$B$&$H$7$F!<!<1>$o$P$I$&$K$b$J$i$J$$;v$r!"$I$&$K$+$7$h$&$H$7$F!"$H$j$H$a$b$J$$9M(B
-$B$($r$?$I$j$J$,$i!"$5$C$-$+$i<k?}BgO)$K$U$k1+$N2;$rJ9$/$H$b$J$/J9$$$F$$$?!#(B
-$B!!1+$OMe@8Lg$r$D$D$s$G!"1s$/$+$i!"$6$"$C$H1>$&2;$r$"$D$a$F$/$k!#M<0G$O<!Bh$K6u(B
-$B$rDc$/$7$F!"8+>e$2$k$H!"Lg$N20:,$,!"<P$a$K$D$-=P$7$?a0!J$$$i$+!K$N@h$K!"=E$?$/(B
-$B$&$90E$$1@$r;Y$($F$$$k!#(B
-$B!!$I$&$K$b$J$i$J$$;v$r!"$I$&$K$+$9$k0Y$K$O!"<jCJ$rA*$s$G$$$kn#!J$$$H$^!K$O$J$$!#(B
-$BA*$s$G$$$l$P!"C[CO!J$D$$$8!K$N2<$+!"F;$P$?$NEZ$N>e$G!"q@;`!J$&$($8$K!K$r$9$k$P(B
-$B$+$j$G$"$k!#$=$&$7$F!"$3$NLg$N>e$X;}$C$FMh$F!"8$$N$h$&$K<N$F$i$l$F$7$^$&$P$+$j(B
-$B$G$"$k!#A*$P$J$$$H$9$l$P!<!<2<?M$N9M$($O!"2?EY$bF1$8F;$rDcWK$7$?MH6g$K!"$d$C$H(B
-$B$3$N6I=j$X0)Ce$7$?!#$7$+$7$3$N!V$9$l$P!W$O!"$$$D$b$G$?$C$F$b!"7k6I!V$9$l$P!W$G(B
-$B$"$C$?!#2<?M$O!"<jCJ$rA*$P$J$$$H$$$&;v$r9NDj$7$J$,$i$b!"$3$N!V$9$l$P!W$N$+$?$r(B
-$B$D$1$k0Y$K!"EvA3!"$3$N8e$KMh$k2D$-!VEp?M$K$J$k$h$j30$K;EJ}$,$J$$!W$H1>$&;v$r!"(B
-$B@Q6KE*$K9NDj$9$k$@$1$N!"M&5$$,=P$:$K$$$?$N$G$"$k!#(B
-$B!!2<?M$OBg$-$JSj!J$/$5$a!K$r$7$F!"$=$l$+$i!"Bg57$=$&$KN)>e$,$C$?!#M<Nd$($N$9$k(B
-$B5~ET$O!"$b$&2P23$,M_$7$$Dx$N4($5$G$"$k!#Iw$OLg$NCl$HCl$H$N4V$r!"M<0G$H6&$K1sN8(B
-$B$J$/!"?a$-$L$1$k!#C0EI$NCl$K$H$^$C$F$$$?$-$j$.$j$9$b!"$b$&$I$3$+$X9T$C$F$7$^$C(B
-$B$?!#(B
-$B!!2<?M$O!"pt$r$A$B$a$J$,$i!";3?a$N4@jN!J$+$6$_!K$K=E$M$?!":0$N2($N8*$r9b$/$7$F(B
-$BLg$N$^$o$j$r8+$^$o$7$?!#1+Iw$N45$N$J$$!"?ML\$K$+$+$kW|$N$J$$!"0lHU3Z$K$M$i$l$=(B
-$B$&$J=j$,$"$l$P!"$=$3$G$H$b$+$/$b!"Lk$rL@$+$=$&$H;W$C$?$+$i$G$"$k!#$9$k$H!"9,Lg(B
-$B$N>e$NO0$X>e$k!"I}$N9-$$!"G7$bC0$rEI$C$?Dt;R$,4c$K$D$$$?!#>e$J$i!"?M$,$$$?$K$7(B
-$B$F$b!"$I$&$;;`?M$P$+$j$G$"$k!#2<?M$O!"$=$3$G9x$K$5$2$?@;JA!J$R$8$j$E$+!K$NB@Ea(B
-$B$,>dAv$i$J$$$h$&$K5$$r$D$1$J$,$i!"ONApMz$r$O$$$?B-$r!"$=$NDt;R$N0lHV2<$NCJ$X$U(B
-$B$_$+$1$?!#(B
-$B!!$=$l$+$i!"2?J,$+$N8e$G$"$k!#Me@8Lg$NO0$N>e$X=P$k!"I}$N9-$$Dt;R$NCfCJ$K!"0l?M(B
-$B$NCK$,!"G-$N$h$&$K?H$r$A$B$a$F!"B)$r;&$7$J$,$i!">e$NMF;R$r1.$C$F$$$?!#O0$N>e$+(B
-$B$i$5$92P$N8w$,!"$+$9$+$K!"$=$NCK$N1&$NKK$r$L$i$7$F$$$k!#C;$$r$!J$R$2!K$NCf$K!"(B
-$B@V$/G?$r;}$C$?LLb.$N$"$kKK$G$"$k!#2<?M$O!";O$a$+$i!"$3$N>e$K$$$k<T$O!";`?M$P$+(B
-$B$j$@$H9b$r3g$C$F$$$?!#$=$l$,!"Dt;R$rFs;0CJ>e$C$F8+$k$H!">e$G$OC/$+2P$r$H$\$7$F!"(B
-$B$7$+$b$=$N2P$rB6=h:!=h$HF0$+$7$F$$$k$i$7$$!#$3$l$O!"$=$NBy$C$?!"2+$$$m$$8w$,!"(B
-$B6y!9$KCXia$NAc$r$+$1$?E70fN"$K!"$f$l$J$,$i1G$C$?$N$G!"$9$0$K$=$l$HCN$l$?$N$G$"(B
-$B$k!#$3$N1+$NLk$K!"$3$NMe@8Lg$N>e$G!"2P$r$H$b$7$F$$$k$+$i$O!"$I$&$;M#$N<T$G$O$J(B
-$B$$!#(B
-$B!!2<?M$O!"5\<i!J$d$b$j!K$N$h$&$KB-2;$r$L$9$s$G!"$d$C$H5^$JDt;R$r!"0lHV>e$NCJ$^(B
-$B$GGg$&$h$&$K$7$F>e$j$D$a$?!#$=$&$7$FBN$r=PMh$k$@$1!"J?$K$7$J$,$i!"pt$r=PMh$k$@(B
-$B$1!"A0$X=P$7$F!"62$k62$k!"O0$NFb$rGA$$$F8+$?!#(B
-$B!!8+$k$H!"O0$NFb$K$O!"1=$KJ9$$$?DL$j!"4v$D$+$N;S3<!J$7$,$$!K$,!"L5B$:n$K4~$F$F(B
-$B$"$k$,!"2P$N8w$N5Z$VHO0O$,!";W$C$?$h$j69$$$N$G!"?t$O4v$D$H$b$o$+$i$J$$!#M#!"$*(B
-$B$\$m$2$J$,$i!"CN$l$k$N$O!"$=$NCf$KMg$N;S3<$H!"CeJ*$rCe$?;S3<$H$,$"$k$H1>$&;v$G(B
-$B$"$k!#L^O@!"Cf$K$O=w$bCK$b$^$8$C$F$$$k$i$7$$!#$=$&$7$F!"$=$N;S3<$O3'!"$=$l$,!"(B
-$B>(!J$+$D$F!K!"@8$-$F$$$??M4V$@$H1>$&;v<B$5$(5?$o$l$kDx!"EZ$rYT$M$FB$$C$??M7A$N(B
-$B$h$&$K!"8}$r3+$$$?$j!"<j$r1d$P$7$?$j$7$F!"$4$m$4$m>2$N>e$K$3$m$,$C$F$$$?!#$7$+(B
-$B$b!"8*$H$+6;$H$+$N9b$/$J$C$F$$$kItJ,$K!"$\$s$d$j$7$?2P$N8w$r$&$1$F!"Dc$/$J$C$F(B
-$B$$$kItJ,$N1F$r0lAX0E$/$7$J$,$i!"1J5W$K0"!J$*$7!K$NG!$/L[$C$F$$$?!#(B
-$B!!2<?M$O!"$=$l$i$N;S3<$NIe`%$7$?=-5$$K;W$o$:!"I!$r1f$C$?!J$*$*$C$?!K!#$7$+$7!"(B
-$B$=$N<j$O!"<!$N=V4V$K$O!"$b$&I!$r1f$&;v$rK:$l$F$$$?!#0?$k6/$$46>p$,KX<=!J$[$H$s(B
-$B$I$3$H$4$H$/!K$3$NCK$NSL3P$rC%$C$F$7$^$C$?$+$i$G$"$k!#(B
-$B!!2<?M$N4c$O!"$=$N;~!"$O$8$a$F!"B6;S3<$NCf$Km-$C$F$$$k!J$&$:$/$^$C$F$$$k!K?M4V(B
-$B$r8+$?!#[XH)?'!J$R$O$@$$$m!K$NCeJ*$rCx$?!"GX$NDc$$!"Ai$;$?!"GrH1F,$N!"1n$N$h$&(B
-$B$JO7GL$G$"$k!#$=$NO7GL$O!"1&$N<j$K2P$r$H$b$7$?>>$NLZJR$r;}$C$F!"$=$N;S3<$N0l$D(B
-$B$N4i$rGA$-$3$`$h$&$KD/$a$F$$$?!#H1$NLS$ND9$$=j$r8+$k$H!"B?J,=w$N;S3<$G$"$m$&!#(B
-$B!!2<?M$O!"O;J,$N62I]$H;MJ,$N9%4q?4$H$KF0$+$5$l$F!";C;~$O8F5[!J$$$-!K$r$9$k$N$5(B
-$B$(K:$l$F$$$?!#5l5-$N5-<T$N8l$r<Z$j$l$P!"!VF,?H!J$H$&$7$s!K$NLS$bB@$k!W$h$&$K46(B
-$B$8$?$N$G$"$k!#$9$k$H!"O7GL$O!">>$NLZJR$r!">2HD$N4V$KA^$7$F!"$=$l$+$i!":#$^$GD/(B
-$B$a$F$$$?;S3<$N<s$KN><j$r$+$1$k$H!"CzEY!"1n$N?F$,1n$N;R$NiM!J$7$i$_!K$r$H$k$h$&(B
-$B$K!"$=$ND9$$H1$NLS$r0lK\$:$DH4$-$O$8$a$?!#H1$O<j$K=>$C$FH4$1$k$i$7$$!#(B
-$B!!$=$NH1$NLS$,!"0lK\$:$DH4$1$k$N$K=>$C$F2<?M$N?4$+$i$O!"62I]$,>/$7$:$D>C$($F9T$C(B
-$B$?!#$=$&$7$F!"$=$l$HF1;~$K!"$=$NO7GL$KBP$9$k$O$2$7$$A~0-$,!">/$7$:$DF0$$$FMh$?!#(B
-$B$$$d!"$3$NO7GL$KBP$9$k$H1>$C$F$O!"8lJ@$,$"$k$+$bCN$l$J$$!#G+!J$`$7$m!K!"$"$i$f(B
-$B$k0-$KBP$9$kH?46$,!"0lJ,Kh$K6/$5$rA}$7$FMh$?$N$G$"$k!#$3$N;~!"C/$+$,$3$N2<?M$K!"(B
-$B$5$C$-Lg$N2<$G$3$NCK$,9M$($F$$$?!"q@;`!J$&$($8$K!K$r$9$k$+Ep?M$K$J$k$+$H1>$&Ld(B
-$BBj$r!"2~$a$F;}=P$7$?$i!"62$i$/2<?M$O!"2?$NL$N}$b$J$/!"q@;`$rA*$s$@;v$G$"$m$&!#(B
-$B$=$l$[$I!"$3$NCK$N0-$rA~$`?4$O!"O7GL$N>2$KA^$7$?>>$NLZJR$N$h$&$K!"@*$h$/G3$(>e(B
-$B$,$j$@$7$F$$$?$N$G$"$k!#(B
-$B!!2<?M$K$O!"L^O@!"2?8NO7GL$,;`?M$NH1$NLS$rH4$/$+$o$+$i$J$+$C$?!#=>$C$F!"9gM}E*(B
-$B$K$O!"$=$l$rA10-$N2?$l$KJR$E$1$F$h$$$+CN$i$J$+$C$?!#$7$+$72<?M$K$H$C$F$O!"$3$N(B
-$B1+$NLk$K!"$3$NMe@8Lg$N>e$G!";`?M$NH1$NLS$rH4$/$H1>$&;v$,!"$=$l$@$1$G4{$K5v$92D(B
-$B$i$6$k0-$G$"$C$?!#L^O@!!2<?M$O!!$5$C$-Kx<+J,$,!"Ep?M$K$J$k5$$G$$$?;v$J$>$O!!$H(B
-$B$&$KK:$l$F$$$k$N$G$"$k!#(B
-$B!!$=$3$G!"2<?M$O!"N>B-$KNO$rF~$l$F!"$$$+$J$j!"Dt;R$+$i>e$XHt$S>e$,$C$?!!$=$&$7(B
-$B$F@;JA!J$R$8$j$E$+!K$NB@Ea$K<j$r$+$1$J$,$i!"Bg8T$KO7GL$NA0$XJb$_$h$C$?!#O7GL$,(B
-$B6C$$$?$N$O!!1>$&Kx$b$J$$!#(B
-$B!!O7GL$O!"0lL\2<?M$r8+$k$H!"$^$k$GW8!J$$$7$f$_!K$K$G$bCF$+$l$?$h$&$K!!Ht$S>e$,$C(B
-$B$?!#(B
-$B!!!V$*$N$l!"$I$3$X9T$/!#!W(B
-$B!!2<?M$O!"O7GL$,;S3<$K$D$^$E$-$J$,$i!"92$F$U$?$a$$$FF($2$h$&$H$9$k9T<j$r:I$$$G!"(B
-$B$3$&GM$C$?!#O7GL$O!"$=$l$G$b2<?M$r$D$-$N$1$F9T$3$&$H$9$k!#2<?M$OKt!"$=$l$r9T$+(B
-$B$9$^$$$H$7$F!"2!$7$b$I$9!#Fs?M$O;S3<$NCf$G!";C!"L58@$N$^$^!"$D$+$_9g$C$?!#$7$+(B
-$B$7>!Ii$O!"$O$8$a$+$i!"$o$+$C$F$$$k!#2<?M$O$H$&$H$&!"O7GL$NOS$r$D$+$s$G!"L5M}$K(B
-$B$=$3$X$M$8E]$7$?!#CzEY!"7\!J$H$j!K$N5S$N$h$&$J!"9|$HHi$P$+$j$NOS$G$"$k!#(B
-$B!!!V2?$r$7$F$$$?!#$5$"2?$r$7$F$$$?!#1>$(!#1>$o$L$H!!$3$l$@$>$h!#!W(B
-$B!!2<?M$O!"O7GL$r$D$-J|$9$H!"$$$-$J$j!"B@Ea$N>d$rJ'$C$F!"Gr$$9]!J$O$,$M!K$N?'$r(B
-$B$=$N4c$NA0$X$D$-$D$1$?!#$1$l$I$b!"O7GL$OL[$C$F$$$k!#N><j$r$o$J$o$J$U$k$o$;$F!"(B
-$B8*$GB)$r@Z$j$J$,$i!"4c$r!"4c5e$,$^$V$?$N30$X=P$=$&$K$J$kDx!"8+3+$$$F!"0"$N$h$&(B
-$B$K<9Y9!J$7$e$&$M!K$/L[$C$F$$$k!#$3$l$r8+$k$H!"2<?M$O;O$a$FL@Gr$K$3$NO7GL$N@8;`(B
-$B$,!"A4A3!"<+J,$N0U;V$K;YG[$5$l$F$$$k$H1>$&;v$r0U<1$7$?!#$=$&$7$F!"$3$N0U<1$O!"(B
-$B:#$^$G$O$2$7$/G3$($F$$$?A~0-$N?4$r2?;~!J$$$D!K$N4V$K$+Nd$^$7$F$7$^$C$?!#8e$K;D$C(B
-$B$?$N$O!"M#!"0?;E;v$r$7$F!"$=$l$,1_K~$K@.="$7$?;~$N!"0B$i$+$JF@0U$HK~B-$H$,$"$k(B
-$B$P$+$j$G$"$k!#$=$3$G!"2<?M$O!"O7GL$r!"8+2<$2$J$,$i!">/$7@<$r=@$2$F$3$&1>$C$?!#(B
-$B!!!V8J$O8!Hs0c;H!J$1$S$$$7!K$ND#$NLr?M$J$I$G$O$J$$!#:#$7J}$3$NLg$N2<$rDL$j$+$+$C(B
-$B$?N9$N<T$@!#$@$+$i$*A0$KFl$r$+$1$F!"$I$&$7$h$&$H1>$&$h$&$J;v$O$J$$!#M#:#;~J,!"(B
-$B$3$NLg$N>e$G!"2?$r$7$F$$$?$N$@$+!"$=$l$r8J$KOC$5$($9$l$P$$$$$N$@!#!W(B
-$B!!$9$k$H!"O7GL$O!"8+3+$$$?4c$r!"0lAXBg$-$/$7$F!"$8$C$H$=$N2<?M$N4i$r8+<i$C$?!#(B
-$B$^$V$?$N@V$/$J$C$?!"Fy?)D;$N$h$&$J!"1T$$4c$G8+$?$N$G$"$k!#$=$l$+$i!"b2$G!"KX!"(B
-$BI!$H0l$D$K$J$C$??0$r2?$+J*$G$b3z$s$G$$$k$h$&$KF0$+$7$?!#:Y$$9"$G!"@m$C$?9"J)$N(B
-$BF0$$$F$$$k$N$,8+$($k!#$=$N;~!"$=$N9"$+$i!"rm!J$+$i$9!K$NSF$/$h$&$J@<$,!"SC$.SC(B
-$B$.!"2<?M$N<*$XEA$o$C$FMh$?!#(B
-$B!!!V$3$NH1$rH4$$$F$J!"$3$N=w$NH1$rH4$$$F$J!"r#!J$+$D$i!K$K$7$h$&$H;W$&$?$N(B
-$B$8$c!#!W(B
-$B!!2<?M$O!"O7GL$NEz$,B830!"J?K^$J$N$K<:K>$7$?!#$=$&$7$F<:K>$9$k$HF1;~$K!"KtA0$N(B
-$BA~0-$,!"Nd$JInJN$H0l$7$g$K!"?4$NCf$X$O$$$C$FMh$?!#$9$k$H!!$=$N5$?'!J$1$7$-!K$,!"(B
-$B@hJ}$X$bDL$8$?$N$G$"$m$&!#O7GL$O!"JR<j$K!"$^$@;S3<$NF,$+$iC%!J$H!K$C$?D9$$H4$1(B
-$BLS$r;}$C$?$J$j!"j1!J$R$-!K$N$D$V$d$/$h$&$J@<$G!"8}$4$b$j$J$,$i!"$3$s$J;v$r1>$C(B
-$B$?!#(B
-$B!!@.Dx!";`?M$NH1$NLS$rH4$/$H1>$&;v$O!"0-$$;v$+$MCN$l$L!#$7$+$7!"$3$&1>$&;`?M$N(B
-$BB?$/$O!"3'!!$=$N0L$J;v$r!"$5$l$F$b$$$$?M4V$P$+$j$G$"$k!#8=$K!"<+J,$,:#!"H1$rH4(B
-$B$$$?=w$J$I$O!"<X$r;M@#$P$+$j$:$D$K@Z$C$F43$7$?$N$r!"435{!J$[$7$&$*!K$@$H1>$C$F!"(B
-$BB@EaBS!J$?$A$O$-!K$N?X$XGd$j$K9T$C$?!#1VIB$K$+$+$C$F;`$J$J$+$C$?$J$i!":#$G$bGd(B
-$B$j$K9T$C$F$$$?$+$b$7$l$J$$!#$7$+$b!"$3$N=w$NGd$k435{$O!"L#$,$h$$$H1>$&$N$G!"B@(B
-$BEaBS$?$A$,!"7g$+$5$::ZNA$KGc$C$F$$$?$N$G$"$k!#<+J,$O!"$3$N=w$N$7$?;v$,0-$$$H$O(B
-$B;W$o$J$$!#$7$J$1$l$P!"q@;`!J$($&$8$K!K$r$9$k$N$G!";EJ}$,$J$/$7$?;v$@$+$i$G$"$k!#(B
-$B$@$+$i!"Kt:#!"<+J,$N$7$F$$$?;v$b0-$$;v$H$O;W$o$J$$!#$3$l$b$d$O$j$7$J$1$l$P!"q@(B
-$B;`$r$9$k$N$G!";EJ}$,$J$/$9$k;v$@$+$i$G$"$k!#$=$&$7$F!"$=$N;EJ}$,$J$$;v$r!"$h$/(B
-$BCN$C$F$$$?$3$N=w$O!"<+J,$N$9$k;v$r5v$7$F$/$l$k$N$K$A$,$$$J$$$H;W$&$+$i$G$"(B
-$B$k!#!<!<O7GL$O!"BgBN$3$s$J0UL#$N;v$r1>$C$?!#(B
-$B!!2<?M$O!"B@Ea$r>d$K$*$5$a$F!"$=$NB@Ea$NJA$r:8$N<j$G$*$5$($J$,$i!"NdA3$H$7$F!"(B
-$B$3$NOC$rJ9$$$F$$$?!#L^O@!"!!1&$N<j$G$O!"@V$/KK$KG?$r;}$?Bg$-$JLLb.!J$K$-$S!K$r(B
-$B5$$K$7$J$,$i!"J9$$$F$$$k$N$G$"$k!#$7$+$7!"G7$rJ9$$$F$$$kCf$K!"2<?M$N?4$K$O!"0?(B
-$BM&5$$,@8$^$l$FMh$?!#$=$l$O!!$5$C$-!"Lg$N2<$G$3$NCK$K7g$1$F$$$?M&5$$G$"$k!#$=$&(B
-$B$7$F!"Kt$5$C$-!"$3$NLg$N>e$X>e!J$"$,!K$C$F!"$=$NO7GL$rJa$($?;~$NM&5$$H$O!"A4A3!"(B
-$BH?BP$JJ}8~$KF0$3$&$H$9$kM&5$$G$"$k!#2<?M$O!"q@;`$r$9$k$+Ep?M$K$J$k$+$KLB$o$J$+$C(B
-$B$?$P$+$j$G$O$J$$!#$=$N;~$N$3$NCK$N?4$b$A$+$i1>$($P!"q@;`$J$I$H1>$&;v$O!"KX!"9M(B
-$B$($k;v$5$(=PMh$J$$Dx!"0U<1$N30$KDI$$=P$5$l$F$$$?!#(B
-$B!!!V$-$C$H!"$=$&$+!#!W(B
-$B!!O7GL$NOC$,40$k$H!"2<?M$OS^!J$"$6$1!K$k$h$&$J@<$GG0$r2!$7$?!#$=$&$7$F!"0lB-A0(B
-$B$X=P$k$H!"IT0U$K!"1&$N<j$rLLb.$+$iN%$7$F!"O7GL$N6_>e!J$($j$,$_!K$r$D$+$_$J$,$i!"(B
-$B$3$&1>$C$?!#(B
-$B!!!V$G$O!"8J$,0zGm!J$R$O$.!K$r$7$h$&$H:($`$^$$$J!#8J$b$=$&$7$J$1$l$P!"q@;`$r$9(B
-$B$kBN$J$N$@!#!W(B
-$B!!2<?M$O!"$9$P$d$/!"O7GL$NCeJ*$rGm$.$H$C$?!#$=$l$+$i!"B-$K$7$,$_$D$3$&$H$9$kO7(B
-$BGL$r!"<j9S$/;S3<$N>e$X=3E]$7$?!#Dt;R$N8}$^$G$O!"6O$K8^Jb$r?t$($k$P$+$j$G$"$k!#(B
-$B2<?M$O!"Gm$.$H$C$?I0H)?'$NCeJ*$r$o$-$K$+$+$($F!"$^$?$?$/4V$K5^$JDt;R$rLk$NDl$X(B
-$B$+$12<$j$?!#(B
-$B!!;C!";`$s$@$h$&$KE]$l$F$$$?O7GL$,!";S3<$NCf$+$i!"$=$NMg$NBN$r5/$3$7$?$N$O!"$=(B
-$B$l$+$i4V$b$J$/$N;v$G$"$k!#O7GL$O!"$D$V$d$/$h$&$J!"$&$a$/$h$&$J@<$rN)$F$J$,$i!"(B
-$B$^$@G3$($F$$$k2P$N8w$r$?$h$j$K!"Dt;R$N8}$^$G!"Gg$C$F9T$C$?!#$=$&$7$F!"$=$3$+$i!"(B
-$BC;$$GrH1$rE]!J$5$+$5$^!K$K$7$F!"Lg$N2<$rGA$-$3$s$@!#30$K$O!"M#!"9uF6!9!J$3$/$H(B
-$B$&$H$&!K$?$kLk$,$"$k$P$+$j$G$"$k!#(B
-$B!!2<?M$O!"4{$K!"1+$rKA$7$F!"5~ET$ND.$X6/Ep$rF/$-$K5^$$$G$$$?!#(B
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt
deleted file mode 100644
index 7a54b957f..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt
+++ /dev/null
@@ -1,178 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/cache/epub/1982/pg1982.txt
---------
-
-
-H열V
-
-@̎̕łBl̉lẢʼnJ݂҂ĂB@L
-̉ɂ́A̒j̊OɒNȂBAXOh̔A傫ȉ~ɁA肬
-肷CƂ܂ĂB傪A鐝Hɂȏ́A̒j̊OɂAJ
-s}❆GXqAOl͂肻Ȃ̂łBꂪA̒j̊O
-ɒNȂB
-@̂Ɖ]ƁA̓ONAsɂ́AnkƂҕƂΎƂ_[Ƃ]
-‚ÂċNBŗ̂т͈ʂłȂBLɂƁA
-ōӂāA̒O‚A̔i͂j‚肵؂AH΂
-‚ݏd˂Đd̗ijɔĂƉ]ƂłB̎nł邩A
-̏CȂǂ́AN̂ĂČڂ݂҂ȂBƂ̍rʂĂ
-悢ɂāAϒKijށBlށBƂƂ܂ɂ́A
-ȂlA̖֎ėāÂĂčsƉ]KoBŁA̖
-ȂȂƁANłCāA̖̋ߏւ͑Ԃ݂ȂɂȂ
-Ă܂̂łB
-@̑薔낪炩AW܂ėBԌƁA낪HƂ
-ւ`āAiсĵ܂eȂAт܂ĂBɖ
-̋󂪁A[ĂłȂ鎞ɂ́AꂪӖ܂悤ɂ͂茩B
-́Aܘ_Ȁɂ鎀l̓A݂ɗ̂łB[[ނ́Ax
-AHȂBBAXAꂩAĂ̕ڂɒ
-͂ΒȉɁA̕ijA_XƔт‚Ă̂Bl
-͎iΒïԏ̒iɐ􂢂炵̉ij̐K𐘂āAE̖jɏo
-A傫ȖᬁiɂсjCɂȂAڂAĴӂ̂𒭂߂Ă̂
-B
-@҂͂AulJ݂҂ĂvƏBAĺAJ
-łiʂǂ悤Ɖ]Ă͂ȂBӂȂAܘ_Al̉Ƃ֋A‚ł
-B̎ĺAlܓOɉɂoꂽBOɂ悤ɁAs
-͈ʂȂ炸ĂB̉lAiNAgĂlɂo
-ꂽ̂A̐̏ȗ]gɊOȂȂBAulJ݂҂Ăv
-Ɖ]AuJɂӂ肱߂ꂽlAsȂāArɂĂv
-]AKłB̏A̋͗lȂ炸̉̕l
-SentimentalismeɉeB\ij̍肩ӂoJ́Aɏ
-邯ȂBŁAĺA[Ă薾̕邵ǂɂ
-Ƃā[[]΂ǂɂȂȂAǂɂ悤ƂāAƂƂ߂Ȃl
-ǂȂA鐝HɂӂJ̉𕷂ƂȂĂB
-@J͗‚‚ŁAAƉ]‚߂ĂB[ł͎ɋ
-ႭāAグƁẢA΂߂ɂ‚oOi炩j̐ɁAd
-Â_xĂB
-@ǂɂȂȂAǂɂׂɂ́AiIł硁iƂ܁j͂ȂB
-Ił΁Azni‚j̉A΂̓y̏ŁA_iɁj
-łBāȀ̖֎ėāÂ悤Ɏ̂ĂĂ܂΂
-łBI΂ȂƂ΁[[l̍ĺAxjgɁA
-̋ǏֈB́u΁v́A‚łĂAǁu΁v
-BĺAiI΂ȂƂm肵ȂÁu΁v̂
-‚ׂɁARǍɗ‚ulɂȂOɎdȂvƉ]A
-ϋɓIɍm肷邾́AECoɂ̂łB
-@l͑傫Ți߁jāAꂩAVɗオB[₦̂
-śAΉ~̊łB͖̒ƒƂ̊ԂA[łƋɉ
-ȂAʂBOh̒ɂƂ܂Ă肬肷Aǂ֍sĂ܂
-B
-@ĺA߂ȂAR̊́i݁jɏd˂Ả̌
-̂܂܂킵BJ̊̂ȂAlڂɂ霜̂ȂAӊyɂ˂ꂻ
-ȏ΁AłƂA𖾂ƎvłBƁAK
-̘̏O֏A̍LAVOhqɂ‚BȂAlɂ
-ĂAǂl΂łBĺAōɂiЂÂj̑
-⑖Ȃ悤ɋC‚ȂAm͂A̒q̈ԉ̒iւ
-݂B
-@ꂩǍłB̘Ȍ֏oA̍Lq̒iɁAl
-̒jAL̂悤ɐg߂āAEȂA̗eqMĂBȌォ
-炳΂̌AɁA̒j̉E̖jʂ炵ĂBZ颁iЂj̒ɁA
-Ԃ^ᬂ̂jłBĺAn߂Ȁɂ҂́Al΂
-肾ƍĂBꂪAqOiČƁAł͒N΂ƂڂāA
-̉΂𑴏ƓĂ炵B́ȂA낢A
-Xɒw偂̑V䗠ɁAȂf̂ŁAɂƒmꂽ̂ł
-B̉J̖ɁȀ̗ŁA΂ƂĂ邩́AǂB̎҂ł͂
-B
-@ĺA{iĵ悤ɑʂŁAƋ}ȒqAԏ̒i
-Ŕ悤ɂď‚߂Bđ̂o邾AɂȂAo邾
-AO֏oāA鋰AO̓`ČB
-@ƁAO̓ɂ́A\ɕʂA‚̎r[ijAɊĂ
-邪A΂̌̋yԔ͈͂Av苷̂ŁA͊‚Ƃ킩ȂBBA
-ڂ낰ȂAm̂́A̒ɗ̎r[ƁA𒅂r[ƂƉ]
-Bܘ_Aɂ͏j܂Ă炵BāA̎r[͊FAꂪA
-i‚ājAĂlԂƉ]^Ays˂đl`
-悤ɁAJA΂肵āA낲돰̏ɂ낪ĂB
-AƂƂ̍ȂĂ镔ɁAڂ肵΂̌āAႭȂ
-镔̉ewÂȂAivɈij̔@قĂB
-@ĺA̎r[̕ࣂLCɎv킸A@ijBA
-̎́ȀuԂɂ́A@YĂB鋭wiقƂ
-ǂƂƂj̒j̚koDĂ܂łB
-@l̊́A̎A͂߂āAr[̒LĂi܂Ăjl
-BwFiЂ͂j̒𒘂Aw̒ႢAÁÂ悤
-ȘVkłB̘VḱAE̎ɉ΂Ƃ̖ؕЂāA̎r[̈
-̊`ނ悤ɒ߂ĂB̖т̒ƁA̎r[ł낤B
-@ĺAZ̋|Ǝl̍DSƂɓāAb͌ċziĵ
-YĂBL̋L҂̌؂΁AugiƂj̖тv悤Ɋ
-̂łBƁAVḱA̖ؕЂA‚̊Ԃɑ}āAꂩA܂Œ
-߂Ăr[̎ɗƁAxA̐e̎qli݁jƂ悤
-ɁA̖̒т{”͂߂B͎ɏ]Ĕ炵B
-@̖̔тA{”̂ɏ]ĉl̐ŚA|čs
-BāAƓɁA̘Vkɑ΂͂A“ėB
-A̘Vkɑ΂Ɖ]ẮAꕾ邩mȂBJiނjA
-鈫ɑ΂锽Aꕪɋ𑝂ė̂łB̎AN̉lɁA
-̉ł̒jlĂA_iɁj邩lɂȂ邩Ɖ]
-A߂ĎoA炭ĺA̖ȂA_I񂾎ł낤B
-قǁA̒j̈𑞂ސŚAVk̏ɑ}̖ؕЂ̂悤ɁA悭R
-肾Ă̂łB
-@lɂ́Aܘ_A̘Vkl̖̔т𔲂킩ȂB]āAI
-ɂ́AP̉ɕЂÂĂ悢mȂBlɂƂẮA
-J̖ɁȀ̗ŁAl̖̔т𔲂Ɖ]AꂾŊɋ
-炴鈫łBܘ_@ĺ@AlɂȂCłȂ́@
-ɖYĂ̂łB
-@ŁAĺAɗ͂āAȂAq֔яオ@
-ĐiЂÂj̑ɎȂA҂ɘVk̑O݂֕BVk
-̂́@]ȂB
-@VḱAډlƁA܂ŜWi݁jɂłeꂽ悤Ɂ@яオ
-B
-@ûAǂ֍sBv
-@ĺAVkr[ɂ‚܂ÂȂAQĂӂ߂ē悤ƂsǂŁA
-lBVḱAłl‚̂čsƂBl͖As
-܂ƂāAǂBl͎r[̒ŁAbÂ܂܁A‚ݍB
-́A͂߂A킩ĂBl͂ƂƂAVk̘r‚ŁA
-ւ˂|BxA{iƂj̋r̂悤ȁAƔ΂̘rłB
-@uĂBĂB]B]ʂƁ@ꂾBv
-@ĺAVk‚ƁAȂȀ𕥂āA|i͂ˁj̐F
-̊̑Oւ‚‚BǂAVk͖قĂBȂȂӂ킹āA
-ő؂ȂAAዅ܂Ԃ̊O֏oɂȂAJāÂ悤
-ɎXiイˁjقĂBƁAl͎n߂Ėɂ̘Vk̐
-ASRÄӎuɎxzĂƉ]ӎBāÄӎ́A
-܂ł͂RĂ̐Sij̊Ԃɂ܂Ă܂BɎc
-̂́ABAdāAꂪ~ɐÁA炩ȓӂƖƂ
-΂łBŁAĺAVkAȂA_Ă]B
-@uȂ͌giтj̖̒lȂǂł͂ȂB̖̉ʂ肩
-̎҂B炨OɓāAǂ悤Ɖ]悤Ȏ͂ȂBBA
-̖̏ŁAĂ̂AȂɘb΂̂Bv
-@ƁAVḱAJAw傫āAƂ̉l̊B
-܂Ԃ̐ԂȂAĤ悤ȁAsŌ̂łBꂩAᰂŁAwA
-@ƈ‚ɂȂOłł悤ɓBׂAŁAA
-Ă̂B̎A̍AAi炷j̚e悤ȐAbb
-Al̎֓`ėB
-@u̔𔲂ĂȁȀ̔𔲂ĂȁA顁i‚jɂ悤Ǝv
-Bv
-@ĺAVk̓OA}Ȃ̂Ɏ]BĎ]ƓɁAO
-Aȕ̂ƈꂵɁAS̒ւ͂ėBƁ@̋CFijA
-ւʂ̂ł낤BVḱAЎɁA܂r[̓DiƁj
-тȂA寁iЂĵ‚Ԃ₭悤ȐŁAȂAȎ]
-B
-@Al̖̔т𔲂Ɖ]́A˒mʁBA]l
-́AF@̈ʂȎAĂlԂ΂łBɁAA
-Ȃǂ́Aւl΂肸‚ɐ؂Ċ̂AiقjƉ]āA
-сi͂j̐w֔ɍsBuaɂĎȂȂȂAł
-ɍsĂȂBȀ̔銱́A悢Ɖ]̂ŁA
-тAؗɔĂ̂łB́Ȁ̂Ƃ
-vȂBȂ΁A_iɁĵŁAdȂłB
-AÂĂƂ͎vȂB͂肵Ȃ΁A_
-̂ŁAdȂ鎖łBāA̎dȂA悭
-mĂ̏́Â鎖Ă̂ɂȂƎvł
-B[[VḱÂȈӖ̎]B
-@ĺAɂ߂āȂ̎̕łȂARƂāA
-̘b𕷂ĂBܘ_A@E̎ł́AԂjɔ^傫Ȗᬁiɂсj
-CɂȂAĂ̂łBAV𕷂Ă钆ɁAl̐Sɂ́A
-EC܂ėB́@Ảł̒jɌĂECłB
-āAȀ̖֏ijāA̘Vk߂̗ECƂ́ASRA
-΂ȕɓƂECłBĺA_邩lɂȂ邩ɖȂ
-΂ł͂ȂB̎̂̒j̐S]΁A_ȂǂƉ]́AwAl
-鎖oȂAӎ̊OɒǂoĂB
-@uƁABv
-@Vk̘bƁAl͚}ij悤ȐŔOBāAꑫO
-֏oƁAsӂɁAE̎ᬂ痣āAVk̋ݏi肪݁j‚݂ȂA
-]B
-@uł́AȂiЂ͂j悤ƍނ܂ȁBȂȂ΁A_
-̂Ȃ̂Bv
-@ĺA΂₭AVk̒𔍂ƂBꂩAɂ݂‚ƂV
-kArr[̏֏R|Bq̌܂ł́A͂Ɍܕ𐔂΂łB
-ĺAƂOF̒킫ɂāA܂Ԃɋ}Ȓq̒
-肽B
-@bA񂾂悤ɓ|ĂVkAr[̒Ȃ̗̂N̂́A
-ꂩԂȂ̎łBVḱA‚Ԃ₭悤ȁA߂悤Ȑ𗧂ĂȂA
-܂RĂ΂̌ɁAq̌܂ŁAčsBāAA
-Z|i܁jɂāẢ`񂾁BOɂ́ABAXi
-Ƃj邪΂łB
-@ĺAɁAJ`āAs̒֋𓭂ɋ}łB
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt
deleted file mode 100644
index a89032832..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt
+++ /dev/null
@@ -1,178 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/cache/epub/1982/pg1982.txt
---------
-羅生門
-
-芥川龍之介
-
- 或日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。 広い門
-の下には、この男の外に誰もいない。ただ、所々丹塗の剥げた、大きな円柱に、きりぎ
-りすが一匹とまっている。羅生門が、朱雀大路にある以上は、この男の外にも、雨やみ
-をする市女笠や揉烏帽子が、もう二三人はありそうなものである。それが、この男の外
-に誰もいない。
- 何故かと云うと、この二三年、京都には、地震とか辻風とか火事とか饑饉とか云う災
-いがつづいて起こった。そこで洛中のさびれ方は一通りでない。旧記によると、仏像や
-仏具を打砕いて、その丹がついたり、金銀の箔(はく)がついたりした木を、路ばたに
-つみ重ねて薪の料(しろ)に売っていたと云うことである。洛中がその始末であるから、
-羅生門の修理などは、元より誰も捨てて顧みる者がなかった。するとその荒れ果てたの
-をよい事にして、狐狸(こり)が棲む。盗人が棲む。とうとうしまいには、引取り手の
-ない死人を、この門へ持って来て、捨てて行くと云う習慣さえ出来た。そこで、日の目
-が見えなくなると、誰でも気味を悪がって、この門の近所へは足ぶみをしない事になっ
-てしまったのである。
- その代り又鴉が何処からか、たくさん集まって来た。昼間見ると、その鴉が何羽とな
-く輪を描いて、高い鴟尾(しび)のまわりを啼きながら、飛びまわっている。殊に門の
-上の空が、夕焼けであかくなる時には、それが胡麻をまいたようにはっきり見えた。鴉
-は、勿論、門の上にある死人の肉を、啄みに来るのである。ーー尤も今日は、刻限が遅
-いせいか、一羽も見えない。唯、所々、崩れかかった、そうしてその崩れ目に長い草の
-はえた石段の上に、鴉の糞(くそ)が、点々と白くこびりついているのが見える。下人
-は七段ある石段の一番上の段に洗いざらした紺の襖(あお)の尻を据えて、右の頬に出
-来た、大きな面皰(にきび)を気にしながら、ぼんやり、雨のふるのを眺めているので
-ある。
- 作者はさっき、「下人が雨やみを待っていた」と書いた。しかし、下人は、雨がやん
-でも格別どうしようと云う当てはない。ふだんなら、勿論、主人の家へ帰る可き筈であ
-る。所がその主人からは、四五日前に暇を出された。前にも書いたように、当時京都の
-町は一通りならず衰微していた。今この下人が、永年、使われていた主人から暇を出さ
-れたのも、この衰微の小さな余波に外ならない。だから、「下人が雨やみを待っていた」
-と云うよりも、「雨にふりこめられた下人が、行き所がなくて、途方にくれていた」と
-云う方が、適当である。その上、今日の空模様も少なからずこの平安朝の下人の
-Sentimentalismeに影響した。申(さる)の刻下がりからふり出した雨は、未だに上
-がるけしきがない。そこで、下人は、何を措いても差当たり明日の暮しをどうにかしよ
-うとしてーー云わばどうにもならない事を、どうにかしようとして、とりとめもない考
-えをたどりながら、さっきから朱雀大路にふる雨の音を聞くともなく聞いていた。
- 雨は羅生門をつつんで、遠くから、ざあっと云う音をあつめてくる。夕闇は次第に空
-を低くして、見上げると、門の屋根が、斜めにつき出した甍(いらか)の先に、重たく
-うす暗い雲を支えている。
- どうにもならない事を、どうにかする為には、手段を選んでいる遑(いとま)はない。
-選んでいれば、築地(ついじ)の下か、道ばたの土の上で、饑死(うえじに)をするば
-かりである。そうして、この門の上へ持って来て、犬のように捨てられてしまうばかり
-である。選ばないとすればーー下人の考えは、何度も同じ道を低徊した揚句に、やっと
-この局所へ逢着した。しかしこの「すれば」は、いつもでたっても、結局「すれば」で
-あった。下人は、手段を選ばないという事を肯定しながらも、この「すれば」のかたを
-つける為に、当然、この後に来る可き「盗人になるより外に仕方がない」と云う事を、
-積極的に肯定するだけの、勇気が出ずにいたのである。
- 下人は大きな嚏(くさめ)をして、それから、大儀そうに立上がった。夕冷えのする
-京都は、もう火桶が欲しい程の寒さである。風は門の柱と柱との間を、夕闇と共に遠慮
-なく、吹きぬける。丹塗の柱にとまっていたきりぎりすも、もうどこかへ行ってしまっ
-た。
- 下人は、頸をちぢめながら、山吹の汗衫(かざみ)に重ねた、紺の襖の肩を高くして
-門のまわりを見まわした。雨風の患のない、人目にかかる惧のない、一晩楽にねられそ
-うな所があれば、そこでともかくも、夜を明かそうと思ったからである。すると、幸門
-の上の楼へ上る、幅の広い、之も丹を塗った梯子が眼についた。上なら、人がいたにし
-ても、どうせ死人ばかりである。下人は、そこで腰にさげた聖柄(ひじりづか)の太刀
-が鞘走らないように気をつけながら、藁草履をはいた足を、その梯子の一番下の段へふ
-みかけた。
- それから、何分かの後である。羅生門の楼の上へ出る、幅の広い梯子の中段に、一人
-の男が、猫のように身をちぢめて、息を殺しながら、上の容子を窺っていた。楼の上か
-らさす火の光が、かすかに、その男の右の頬をぬらしている。短い鬚(ひげ)の中に、
-赤く膿を持った面皰のある頬である。下人は、始めから、この上にいる者は、死人ばか
-りだと高を括っていた。それが、梯子を二三段上って見ると、上では誰か火をとぼして、
-しかもその火を其処此処と動かしているらしい。これは、その濁った、黄いろい光が、
-隅々に蜘蛛の巣をかけた天井裏に、ゆれながら映ったので、すぐにそれと知れたのであ
-る。この雨の夜に、この羅生門の上で、火をともしているからは、どうせ唯の者ではな
-い。
- 下人は、宮守(やもり)のように足音をぬすんで、やっと急な梯子を、一番上の段ま
-で這うようにして上りつめた。そうして体を出来るだけ、平にしながら、頸を出来るだ
-け、前へ出して、恐る恐る、楼の内を覗いて見た。
- 見ると、楼の内には、噂に聞いた通り、幾つかの屍骸(しがい)が、無造作に棄てて
-あるが、火の光の及ぶ範囲が、思ったより狭いので、数は幾つともわからない。唯、お
-ぼろげながら、知れるのは、その中に裸の屍骸と、着物を着た屍骸とがあると云う事で
-ある。勿論、中には女も男もまじっているらしい。そうして、その屍骸は皆、それが、
-嘗(かつて)、生きていた人間だと云う事実さえ疑われる程、土を捏ねて造った人形の
-ように、口を開いたり、手を延ばしたりして、ごろごろ床の上にころがっていた。しか
-も、肩とか胸とかの高くなっている部分に、ぼんやりした火の光をうけて、低くなって
-いる部分の影を一層暗くしながら、永久に唖(おし)の如く黙っていた。
- 下人は、それらの屍骸の腐爛した臭気に思わず、鼻を掩った(おおった)。しかし、
-その手は、次の瞬間には、もう鼻を掩う事を忘れていた。或る強い感情が殆悉(ほとん
-どことごとく)この男の嗅覚を奪ってしまったからである。
- 下人の眼は、その時、はじめて、其屍骸の中に蹲っている(うずくまっている)人間
-を見た。檜肌色(ひはだいろ)の着物を著た、背の低い、痩せた、白髪頭の、猿のよう
-な老婆である。その老婆は、右の手に火をともした松の木片を持って、その屍骸の一つ
-の顔を覗きこむように眺めていた。髪の毛の長い所を見ると、多分女の屍骸であろう。
- 下人は、六分の恐怖と四分の好奇心とに動かされて、暫時は呼吸(いき)をするのさ
-え忘れていた。旧記の記者の語を借りれば、「頭身(とうしん)の毛も太る」ように感
-じたのである。すると、老婆は、松の木片を、床板の間に挿して、それから、今まで眺
-めていた屍骸の首に両手をかけると、丁度、猿の親が猿の子の虱(しらみ)をとるよう
-に、その長い髪の毛を一本ずつ抜きはじめた。髪は手に従って抜けるらしい。
- その髪の毛が、一本ずつ抜けるのに従って下人の心からは、恐怖が少しずつ消えて行っ
-た。そうして、それと同時に、その老婆に対するはげしい憎悪が、少しずつ動いて来た。
-いや、この老婆に対すると云っては、語弊があるかも知れない。寧(むしろ)、あらゆ
-る悪に対する反感が、一分毎に強さを増して来たのである。この時、誰かがこの下人に、
-さっき門の下でこの男が考えていた、饑死(うえじに)をするか盗人になるかと云う問
-題を、改めて持出したら、恐らく下人は、何の未練もなく、饑死を選んだ事であろう。
-それほど、この男の悪を憎む心は、老婆の床に挿した松の木片のように、勢よく燃え上
-がりだしていたのである。
- 下人には、勿論、何故老婆が死人の髪の毛を抜くかわからなかった。従って、合理的
-には、それを善悪の何れに片づけてよいか知らなかった。しかし下人にとっては、この
-雨の夜に、この羅生門の上で、死人の髪の毛を抜くと云う事が、それだけで既に許す可
-らざる悪であった。勿論 下人は さっき迄自分が、盗人になる気でいた事なぞは と
-うに忘れているのである。
- そこで、下人は、両足に力を入れて、いかなり、梯子から上へ飛び上がった そうし
-て聖柄(ひじりづか)の太刀に手をかけながら、大股に老婆の前へ歩みよった。老婆が
-驚いたのは 云う迄もない。
- 老婆は、一目下人を見ると、まるで弩(いしゆみ)にでも弾かれたように 飛び上がっ
-た。
- 「おのれ、どこへ行く。」
- 下人は、老婆が屍骸につまづきながら、慌てふためいて逃げようとする行手を塞いで、
-こう罵った。老婆は、それでも下人をつきのけて行こうとする。下人は又、それを行か
-すまいとして、押しもどす。二人は屍骸の中で、暫、無言のまま、つかみ合った。しか
-し勝負は、はじめから、わかっている。下人はとうとう、老婆の腕をつかんで、無理に
-そこへねじ倒した。丁度、鶏(とり)の脚のような、骨と皮ばかりの腕である。
- 「何をしていた。さあ何をしていた。云え。云わぬと これだぞよ。」
- 下人は、老婆をつき放すと、いきなり、太刀の鞘を払って、白い鋼(はがね)の色を
-その眼の前へつきつけた。けれども、老婆は黙っている。両手をわなわなふるわせて、
-肩で息を切りながら、眼を、眼球がまぶたの外へ出そうになる程、見開いて、唖のよう
-に執拗(しゅうね)く黙っている。これを見ると、下人は始めて明白にこの老婆の生死
-が、全然、自分の意志に支配されていると云う事を意識した。そうして、この意識は、
-今まではげしく燃えていた憎悪の心を何時(いつ)の間にか冷ましてしまった。後に残っ
-たのは、唯、或仕事をして、それが円満に成就した時の、安らかな得意と満足とがある
-ばかりである。そこで、下人は、老婆を、見下げながら、少し声を柔げてこう云った。
- 「己は検非違使(けびいし)の庁の役人などではない。今し方この門の下を通りかかっ
-た旅の者だ。だからお前に縄をかけて、どうしようと云うような事はない。唯今時分、
-この門の上で、何をしていたのだか、それを己に話さえすればいいのだ。」
- すると、老婆は、見開いた眼を、一層大きくして、じっとその下人の顔を見守った。
-まぶたの赤くなった、肉食鳥のような、鋭い眼で見たのである。それから、皺で、殆、
-鼻と一つになった唇を何か物でも噛んでいるように動かした。細い喉で、尖った喉仏の
-動いているのが見える。その時、その喉から、鴉(からす)の啼くような声が、喘ぎ喘
-ぎ、下人の耳へ伝わって来た。
- 「この髪を抜いてな、この女の髪を抜いてな、鬘(かつら)にしようと思うたの
-じゃ。」
- 下人は、老婆の答が存外、平凡なのに失望した。そうして失望すると同時に、又前の
-憎悪が、冷な侮蔑と一しょに、心の中へはいって来た。すると その気色(けしき)が、
-先方へも通じたのであろう。老婆は、片手に、まだ屍骸の頭から奪(と)った長い抜け
-毛を持ったなり、蟇(ひき)のつぶやくような声で、口ごもりながら、こんな事を云っ
-た。
- 成程、死人の髪の毛を抜くと云う事は、悪い事かね知れぬ。しかし、こう云う死人の
-多くは、皆 その位な事を、されてもいい人間ばかりである。現に、自分が今、髪を抜
-いた女などは、蛇を四寸ばかりずつに切って干したのを、干魚(ほしうお)だと云って、
-太刀帯(たちはき)の陣へ売りに行った。疫病にかかって死ななかったなら、今でも売
-りに行っていたかもしれない。しかも、この女の売る干魚は、味がよいと云うので、太
-刀帯たちが、欠かさず菜料に買っていたのである。自分は、この女のした事が悪いとは
-思わない。しなければ、饑死(えうじに)をするので、仕方がなくした事だからである。
-だから、又今、自分のしていた事も悪い事とは思わない。これもやはりしなければ、饑
-死をするので、仕方がなくする事だからである。そうして、その仕方がない事を、よく
-知っていたこの女は、自分のする事を許してくれるのにちがいないと思うからであ
-る。ーー老婆は、大体こんな意味の事を云った。
- 下人は、太刀を鞘におさめて、その太刀の柄を左の手でおさえながら、冷然として、
-この話を聞いていた。勿論、 右の手では、赤く頬に膿を持た大きな面皰(にきび)を
-気にしながら、聞いているのである。しかし、之を聞いている中に、下人の心には、或
-勇気が生まれて来た。それは さっき、門の下でこの男に欠けていた勇気である。そう
-して、又さっき、この門の上へ上(あが)って、その老婆を捕えた時の勇気とは、全然、
-反対な方向に動こうとする勇気である。下人は、饑死をするか盗人になるかに迷わなかっ
-たばかりではない。その時のこの男の心もちから云えば、饑死などと云う事は、殆、考
-える事さえ出来ない程、意識の外に追い出されていた。
- 「きっと、そうか。」
- 老婆の話が完ると、下人は嘲(あざけ)るような声で念を押した。そうして、一足前
-へ出ると、不意に、右の手を面皰から離して、老婆の襟上(えりがみ)をつかみながら、
-こう云った。
- 「では、己が引剥(ひはぎ)をしようと恨むまいな。己もそうしなければ、饑死をす
-る体なのだ。」
- 下人は、すばやく、老婆の着物を剥ぎとった。それから、足にしがみつこうとする老
-婆を、手荒く屍骸の上へ蹴倒した。梯子の口までは、僅に五歩を数えるばかりである。
-下人は、剥ぎとった桧肌色の着物をわきにかかえて、またたく間に急な梯子を夜の底へ
-かけ下りた。
- 暫、死んだように倒れていた老婆が、屍骸の中から、その裸の体を起こしたのは、そ
-れから間もなくの事である。老婆は、つぶやくような、うめくような声を立てながら、
-まだ燃えている火の光をたよりに、梯子の口まで、這って行った。そうして、そこから、
-短い白髪を倒(さかさま)にして、門の下を覗きこんだ。外には、唯、黒洞々(こくと
-うとう)たる夜があるばかりである。
- 下人は、既に、雨を冒して、京都の町へ強盗を働きに急いでいた。
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt
deleted file mode 100644
index 5a142ce38..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/files/23864/23864-0.txt
-after converting from Traditional Chinese to Simplified Chinese.
---------
-~{J<<F5ZR;~}
-
-~{KoWST;#:1xU_#,9zV.4sJB#,K@IzV.5X#,4fMvV.5@#,2;?I2;2lR2!#~}
-
-~{9J>-V.RTNeJB#,P#V.RT<F#,6xKwFdGi#:R;T;5@#,6~T;Ll#,H}T;5X#,KDT;=+#,NeT;7(!#~}
-
-~{5@U_#,AnCqSkIOM,Rb#,?ISkV.K@#,?ISkV.Iz#,6x2;N7N#R2#;LlU_#,RuQt!":.Jn!"J1VFR2#;5XU_#,T6=|!"OURW!"9cOA!"K@IzR2#;=+U_#,VG!"PE!"HJ!"SB!"QOR2#;7(U_#,GzVF!"9Y5@!"VwSCR2!#724KNeU_#,=+D*2;NE#,V*V.U_J$#,2;V*U_2;J$!#~}
-
-~{9JP#V.RT<F#,6xKwFdGi#,T;#:VwJkSP5@#?=+JkSPD\#?Ll5XJk5C#?7(AnJkPP#?1x~}?~{JkG?#?J?WdJkA7#?IM7#JkCw#?NaRT4KV*J$8:RS!#~}
-
-~{=+L}Na<F#,SCV.1XJ$#,AtV.#;=+2;L}Na<F#,SCV.1X0\#,H%V.!#~}
-
-~{<F@{RTL}#,DK~}?~{V.JF#,RTWtFdMb!#JFU_#,Rr@{6xVFH(R2!#~}
-
-~{1xU_#,9n5@R2!#9JD\6xJ>V.2;D\#,SC6xJ>V.2;SC#,=|6xJ>V.T6#,T66xJ>V.=|!#@{6xSUV.#,BR6xH!V.#,J56x18V.#,G?6x1\V.#,E-6xDSV.#,106x=>V.#,X}6x@MV.#,GW6x@kV.#,9%FdN^18#,3vFd2;Rb!#4K1x<RV.J$#,2;?IOH4+R2!#~}
-
-~{7rN4U=6xCmKcJ$U_#,5CKc6`R2#;N4U=6xCmKc2;J$U_#,5CKcIYR2!#6`KcJ$#,IYKc2;J$#,6x?vN^Kc:u#!NaRT4K9[V.#,J$8:<{RS!#~}
-
-~{WwU=5Z6~~}
-
-~{KoWST;#:72SC1xV.7(#,3[35G'~}?~{#,8o35G'3K#,4x<WJ.Mr#,G'@o@!A8!#TrDZMbV.7Q#,1v?MV.SC#,=:FaV.2D#,35<WV.7n#,HU7QG'=p#,H;:sJ.MrV.J&>YRS!#~}
-
-~{FdSCU=R2#,9sJ$#,>CTr6[1x4lHq#,9%3GTrA&G|#,>C1)J&Tr9zSC2;Wc!#7r6[1x4lHq#,G|A&~}?~{;u#,TrVn:n3KFd1W6xFp#,KdSPVGU_#,2;D\IFFd:sRS!#9J1xNEW>KY#,N46CGIV.>CR2!#7r1x>C6x9z@{U_#,N4V.SPR2!#9J2;>!V*SC1xV.:&U_#,Tr2;D\>!V*SC1xV.@{R2!#~}
-
-~{IFSC1xU_#,R[2;TY<.#,A82;H}TX#,H!SCl69z#,RrA8l65P#,9J>|J3?IWcR2!#9zV.F6l6J&U_T6Jd#,T6JdTr0YPUF6#;=|l6J&U_9sBt#,9sBtTr0YPU=_#,2F=_Tr<1l6GpR[!#A&G|2F~}?~{#,VPT-DZPil6<R#,0YPUV.7Q#,J.H%FdF_#;9+<RV.7Q#,FF>|0UBm#,<WkPJ8es#,j*~}?~{C,~}?~{#,GpE#4s35#,J.H%FdAy!#~}
-
-~{9JVG=+NqJ3l65P#,J35PR;VS#,51Na6~J.VS#;]=8QR;J/#,51Na6~J.J/!#9JI15PU_#,E-R2#;H!5PV.@{U_#,;uR2!#9J35U=#,5C35J.3KRTIO#,IMFdOH5CU_#,6x8|Fdl:Fl!#35TS6x3KV.#,WdIF6xQxV.#,JGN=J$5P6xRfG?!#~}
-
-~{9J1x9sJ$#,2;9s>C!#9JV*1xV.=+#,CqV.K>C|!#9z<R02N#V.VwR2!#~}
-
-~{D19%5ZH}~}
-
-~{KoWST;#:72SC1xV.7(#,H+9z~}?~{IO#,FF9z4NV.#;H+>|~}?~{IO#,FF>|4NV.#;H+BC~}?~{IO#,FFBC4NV.#;H+Wd~}?~{IO#,FFWd4NV.#;H+Ni~}?~{IO#,FFNi4NV.!#JG9J0YU=0YJ$#,7GIFV.IFU_R2#;2;U=6xG|HKV.1x#,IFV.IFU_R2!#~}
-
-~{9JIO1x7%D1#,Fd4N7%=;#,Fd4N7%1x#,FdOB9%3G!#9%3GV.7(#,~}?~{2;5CRQ!#P^~}???~{#,>_FwP5#,H}TB6x:s3I#;>`~}?~{#,SVH}TB6x:sRQ!#=+2;J$Fd7^#,6xRO8=V.#,I1J?H}7VV.R;#,6x3G2;0NU_#,4K9%V.TVR2!#~}
-
-~{9JIFSC1xU_#,G|HKV.1x#,6x7GU=R2#,0NHKV.3G6x7G9%R2#,;YHKV.9z6x7G>CR2#,1XRTH+Uyl6LlOB#,9J1x2;6Y6x@{?IH+#,4KD19%V.7(R2!#~}
-
-~{9JSC1xV.7(#,J.TrN'V.#,NeTr9%V.#,16Tr7VV.#,5PTrD\U=V.#,IYTrD\LSV.#,2;HtTrD\1\V.!#9JP!5PV.<a#,4s5PV.G\R2!#~}
-
-~{7r=+U_#,9zV.8(R2!#8(V\Tr9z1XG?#,8(O6Tr9z1XHu!#9J>}V.KyRT;<l6>|U_H}#:2;V*>|V.2;?IRT=x6xN=V.=x#,2;V*>|V.2;?IRTMK6xN=V.MK#,JGN=wc>|#;2;V*H}>|V.JB#,6xM,H}>|V.U~#,Tr>|J?;sRS#;2;V*H}>|V.H(#,6xM,H}>|V.HN#,Tr>|J?RIRS!#H}>|<H;sGRRI#,TrVn:nV.DQVARS!#JGN=BR>|R}J$!#~}
-
-~{9JV*J$SPNe#:V*?IRTU=Sk2;?IRTU=U_#,J$!#J6~}?~{9QV.SCU_#,J$!#IOOBM,S{U_#,J$!#RTS]4}2;S]U_#,J$!#=+D\6x>}2;SyU_#,J$!#4KNeU_#,V*J$V.5@R2!#~}
-
-~{9JT;#:V*<:V*1K#,0YU=2;~}?~{#;2;V*1K6xV*<:#,R;J$R;8:#;2;V*1K2;V*<:#,C?U=1X0\!#~}
-
-~{>|PN5ZKD~}
-
-~{KoWST;#:NtV.IFU=U_#,OH~}?~{2;?IJ$#,RT4}5PV.?IJ$!#2;?IJ$TZ<:#,?IJ$TZ5P!#9JIFU=U_#,D\~}?~{2;?IJ$#,2;D\J95P1X?IJ$!#9JT;#:J$?IV*#,6x2;?I~}?~{!#~}
-
-~{2;?IJ$U_#,JXR2#;?IJ$U_#,9%R2!#JXTr2;Wc#,9%TrSP~}?~{!#IFJXU_#,2Xl6>E5XV.OB#,IF9%U_#,6/l6>ELlV.IO#,9JD\WT1#6xH+J$R2!#~}
-
-~{<{J$2;9}~}?~{HKV.KyV*#,7GIFV.IFU_R2#;U=J$6xLlOBT;IF#,7GIFV.IFU_R2!#9J>YGo:A2;~}?~{6`A&#,<{HUTB2;~}?~{CwD?#,NE@Wv*2;~}?~{4O6z!#9EV.IFU=U_#,J$l6RWJ$U_R2!#9JIFU=U_V.J$R2#,N^VGC{#,N^SB9&#,9JFdU=J$2;_/!#2;_/U_#,FdKy4k1XJ$#,J$RQ0\U_R2!#9JIFU=U_#,OHA"l62;0\V.5X#,6x2;J'5PV.0\R2!#JG9JJ$1xOHJ$#,6x:sGsU=#,0\1xOHU=6x:sGsJ$!#IFSC1xU_#,P^5@6x1#7(#,9JD\~}?~{J$0\V.U~!#~}
-
-~{1x7(#:R;T;6H#,6~T;A?#,H}T;J}#,KDT;3F#,NeT;J$!#5XIz6H#,6HIzA?#,A?IzJ}#,J}Iz3F#,3FIzJ$!#9JJ$1xHtRT~}?~{3F~}?~{#,0\1xHtRT~}?~{3F~}?~{!#J$U_V.U=#,Ht>v;}K.l6G'XpV.~}?~{U_#,PNR2!#~}
-
-~{1xJF5ZNe~}
-
-~{KoWST;#:72VN~}?~{HgVN9Q#,7VJ}JGR2#;67~}?~{Hg679Q#,PNC{JGR2#;H}>|V.~}?~{#,?IJ91XJ\5P6xN^0\U_#,FfU}JGR2#;1xV.Ky<S#,HgRT~}?~{M6BQU_#,PiJ5JGR2!#~}
-
-~{72U=U_#,RTU}:O#,RTFfJ$!#9JIF3vFfU_#,N^GnHgLl5X#,2;=_Hg=-:#!#VU6x84J<#,HUTBJGR2!#K@6x~}?~{Iz#,KDJ1JGR2!#Iy2;9}Ne#,NeIyV.1d#,2;?IJ$L}R2#;I+2;9}Ne#,NeI+V.1d#,2;?IJ$9[R2#;N62;9}Ne#,NeN6V.1d#,2;?IJ$3"R2#;U=JF#,2;9}FfU}#,FfU}V.1d#,2;?IJ$GnR2!#FfU}O`Iz#,HgQ-;7V.N^6K#,JlD\GnV.TU#?~}
-
-~{<$K.V.<2#,VAl6F/J/U_#,JFR2#;~}?~{DqV.<2#,VAl6;YU[U_#,=ZR2!#JG9JIFU=U_#,FdJFOU#,Fd=Z6L!#JFHgUEes#,=ZHg7";z!#~}
-
-~{7W7W~}??~{#,67BR6x2;?IBRR2#;;k;kcgcg#,PNT26x2;?I0\R2!#BRIzl6VN#,GSIzl6SB#,HuIzl6G?!#VNBR#,J}R2#;SBGS#,JFR2#;G?Hu#,PNR2!#9JIF6/5PU_#,PNV.#,5P1X4SV.#;ShV.#,5P1XH!V.!#RT@{6/V.#,RTWd4}V.!#~}
-
-~{9JIFU=U_#,GsV.l6JF#,2;Tpl6HK#;9JD\TqHK6xHNJF!#HNJFU_#,FdU=HKR2#,HgW*D>J/!#D>J/V.PT#,02Tr>2#,N#Tr6/#,7=TrV9#,T2TrPP!#9JIFU=HKV.JF#,HgW*T2J/l6G'XpV.I=U_#,JFR2!#~}
-
-~{PiJ55ZAy~}
-
-~{KoWST;#:72OH4&U=5X6x4}5PU_X}#,:s4&U=5X6xGwU=U_@M!#~}
-
-~{9JIFU=U_#,VBHK6x2;VBl6HK!#D\J95PHKWTVAU_#,@{V.R2#;D\J95PHK2;5CVAU_#,:&V.R2!#9J5PX}D\@MV.#,1%D\<"V.#,02D\6/V.!#3vFdKy1XGw#,GwFdKy2;Rb!#PPG'@o6x2;@MU_#,PPl6N^HKV.5XR2#;9%6x1XH!U_#,9%FdKy2;JXR2!#JX6x1X9LU_#,JXFdKy2;9%R2!#~}
-
-~{9JIF9%U_#,5P2;V*FdKyJX#;IFJXU_#,5P2;V*FdKy9%!#N":uN":u#,VAl6N^PN#;Iq:uIq:u#,VAl6N^Iy#,9JD\~}?~{5PV.K>C|!#=x6x2;?ISyU_#,3eFdPiR2#;MK6x2;?IW7U_#,KY6x2;?I<0R2!#9JNRS{U=#,5PKd8_@]In95#,2;5C2;SkNRU=U_#,9%FdKy1X>HR2#;NR2;S{U=#,Kd;-5X6xJXV.#,5P2;5CSkNRU=U_#,9TFdKyV.R2!#9JPNHK6xNRN^PN#,TrNRW(6x5P7V!#NRW(~}?~{R;#,5P7V~}?~{J.#,JGRTJ.9%FdR;R2!#TrNR~}?~{5P9Q#,D\RT~}?~{;w9QU_#,TrNaV.KySkU=U_T<RS!#NaKySkU=V.5X2;?IV*#,2;?IV*Tr5PKy18U_6`#,5PKy18U_6`#,TrNaKySkU=U_9QRS!#9J18G0Tr:s9Q#,18:sTrG09Q#,18WsTrSR9Q#,18SRTrWs9Q#,N^Ky2;18#,TrN^Ky2;9Q!#9QU_#,18HKU_R2#;~}?~{U_#,J9HK18<:U_R2!#9JV*U=V.5X#,V*U=V.HU#,Tr?IG'@o6x;aU=#;2;V*U=V.5X#,2;V*U=HU#,TrWs2;D\>HSR#,SR2;D\>HWs#,G02;D\>H:s#,:s2;D\>HG0#,6x?vT6U_J}J.@o#,=|U_J}@o:u#!RTNa6HV.#,T=HKV.1xKd6`#,R`^IRfl6J$TU#!9JT;#:J$?I~}?~{R2!#5PKd~}?~{#,?IJ9N^67!#9J2_V.6xV*5CJ'V.<F#,:rV.6xV*6/>2V.@m#,PNV.6xV*K@IzV.5X#,=GV.6xV*SP~}?~{2;WcV.4&!#9JPN1xV.<+#,VAl6N^PN!#N^PNTrIn<d2;D\?z#,VGU_2;D\D1!#RrPN6x4kJ$l6~}?~{#,~}?~{2;D\V*!#HK=TV*NRKyRTJ$V.PN#,6xD*V*NaKyRTVFJ$V.PN!#9JFdU=J$2;~}?~{#,6xS&PNl6N^Gn!#7r1xPNOsK.#,K.V.PP1\8_6xGwOB#,1xV.PN1\J56x;wPi#;K.Rr5X6xVFAw#,1xRr5P6xVFJ$!#9J1xN^3#JF#,K.N^3#PN!#D\Rr5P1d;/6xH!J$U_#,N=V.Iq!#9JNePPN^3#J$#,KDJ1N^3#N;#,HUSP6L3$#,TBSPK@Iz!#~}
-
-~{>|Uy5ZF_~}
-
-~{KoWST;#:~} ~{72SC1xV.7(#,=+J\C|l6>}#,:O>|>[~}?~{#,=;:M6xIa#,D*DQl6>|Uy!#>|UyV.DQU_#,RTSX~}?~{V1#,RT;<~}?~{@{!#9JSXFdM>#,6xSUV.RT@{#,:sHK7"#,OHHKVA#,4KV*SXV1V.<FU_R2!#>|Uy~}?~{@{#,>|Uy~}?~{N#!#>Y>|6xUy@{Tr2;<0#,N/>|6xUy@{Tr~}?~{VX>h!#JG9J~}?~{<W6xGw#,HUR92;4&#,165@<fPP#,0Y~}?~{6xUy@{#,TrG\H}=+>|#,>"U_OH#,F#U_:s#,Fd7(J.R;6xVA#;NeJ.@o6xUy@{#,TrujIO=+>|#,Fd7(0kVA#;H}J.@o6xUy@{#,TrH}7VV.6~VA!#JG9J>|N^~}?~{VXTrMv#,N^A8J3TrMv#,N^N/;}TrMv!#9J2;V*Vn:nV.D1U_#,2;D\T%=;#;2;V*I=AV!"OUWh!">ZTsV.PNU_#,2;D\PP>|#;2;SCOg5<U_#,2;D\5C5X@{!#9J1xRTU)A"#,RT@{6/#,RT7V:M~}?~{1dU_R2!#9JFd<2Hg7g#,FdPlHgAV#,GVBSHg;p#,2;6/HgI=#,DQV*HgRu#,6/Hg@WUp!#BSOg7V~}?~{#,@*5X7V@{#,P|H(6x6/!#OHV*SXV1V.<FU_J$#,4K>|UyV.7(R2!#!6>|U~!7T;#:!0QT2;O`NE#,9J~}?~{V.=p9D#;JS2;O`<{#,9J~}?~{V.l:Fl!#!17r=p9Dl:FlU_#,KyRTR;CqV.6zD?R2!#Cq<HW(R;#,TrSBU_2;5C6@=x#,GSU_2;5C6@MK#,4KSC~}?~{V.7(R2!#9JR9U=6`=p9D#,VgU=6`l:Fl#,KyRT1dHKV.6zD?R2!#H}>|?I6aFx#,=+>|?I6aPD!#JG9J3/FxHq#,VgFx6h#,D:Fx9i!#IFSC1xU_#,1\FdHqFx#,;wFd6h9i#,4KVNFxU_R2!#RTVN4}BR#,RT>24};)#,4KVNPDU_R2!#RT=|4}T6#,RTX}4}@M#,RT1%4}<"#,4KVNA&U_R2!#N^Q{U}U}V.Fl#,N^;wLCLCV.3B#,4KVN1dU_R2!#9JSC1xV.7(#,8_AjNpOr#,13GpNpDf#,Qp11Np4S#,HqWdNp9%#,6|1xNpJ3#,9iJ&Np6t#,N'J&RE~}?~{#,Gn?\NpFH#,4KSC1xV.7(R2!#~}
-
-~{>E1d5Z0K~}
-
-~{KoWST;#:~} ~{72SC1xV.7(#,=+J\C|l6>}#,:O>|>[:O!#7:5XN^Ia#,ai5X:O=;#,>x5XN^At#,N'5XTrD1#,K@5XTrU=#,M>SPKy2;SI#,>|SPKy2;;w#,3GSPKy2;9%#,5XSPKy2;Uy#,>}C|SPKy2;J\!#9J=+M(l6>E1dV.@{U_#,V*SC1xRS#;=+2;M(>E1dV.@{#,KdV*5XPN#,2;D\5C5XV.@{RS#;VN1x2;V*>E1dV.Ju#,KdV*Ne@{#,2;D\5CHKV.SCRS!#JG9JVGU_V.BG#,1XTSl6@{:&#,TSl6@{6xNq?IPER2#,TSl6:&6x;<?I=bR2!#JG9JG|Vn:nU_RT:&#,R[Vn:nU_RTR5#,GwVn:nU_RT@{!#9JSC1xV.7(#,N^JQFd2;@4#,JQNaSPRT4}V.#;N^JQFd2;9%#,JQNaSPKy2;?I9%R2!#9J=+SPNeN##,1XK@?II1#,1XIz?IB2#,7^KY?INj#,A.=`?IHh#,0.Cq?I73!#724KNeU_#,=+V.9}R2#,SC1xV.TVR2!#82>|I1=+#,1XRTNeN##,2;?I2;2lR2!#~}
-
-~{PP>|5Z>E~}
-
-~{KoWST;#:724&>|O`5P#,>xI=R@~}?~{#,JSIz4&8_#,U=B!N^5G#,4K4&I=V.>|R2!#>xK.1XT6K.#,?M>xK.6x@4#,NpS-V.l6K.DZ#,An0k6I6x;wV.@{#,S{U=U_#,N^8=l6K.6xS-?M#,JSIz4&8_#,N^S-K.Aw#,4K4&K.IOV.>|R2!#>x3bTs#,N(X=H%N^At#,Ht=;>|l63bTsV.VP#,1XR@K.2]6x13~}?~{Jw#,4K4&3bTsV.>|R2!#F=B=4&RW#,SR138_#,G0K@:sIz#,4K4&F=B=V.>|R2!#724KKD>|V.@{#,;F5[V.KyRTJ$KD5[R2!#72>|:C8_6x6qOB#,9sQt6x<zRu#,QxIz6x4&J5#,>|N^0Y<2#,JGN=1XJ$!#GpAj5L7@#,1X4&FdQt6xSR13V.#,4K1xV.@{#,5XV.VzR2!#IOSjK.AwVA#,S{IfU_#,4}Fd6(R2!#725XSP>x='!"Ll>.!"Ll@N!"LlB^!"LlO]!"LlO6#,1XX=H%V.#,Np=|R2!#NaT6V.#,5P=|V.#;NaS-V.#,5P13V.!#>|ETSPOUWh!"dj>.!"]s]g!"P!AV!"~}??~{U_#,1X=w82KwV.#,4K7|~}?~{V.Ky4&R2!#5P=|6x>2U_#,JQFdOUR2#;T66xLtU=U_#,S{HKV.=xR2#;FdKy>SRWU_#,@{R2#;~}?~{Jw6/U_#,@4R2#;~}?~{2]6`UOU_#,RIR2#;DqFpU_#,7|R2#;J^:'U_#,82R2#;3>8_6xHqU_#,35@4R2#;106x9cU_#,M=@4R2#;I"6xLu4oU_#,iT~}?~{R2#;IY6xMy@4U_#,S*>|R2#;4G106x18U_#,=xR2#;4GG?6x=xG}U_#,MKR2#;Ga35OH3v>SFd2`U_#,3BR2#;N^T<6xGk:MU_#,D1R2#;1<W_6x3B1xU_#,FZR2#;0k=x0kMKU_#,SUR2#;UH6xA"U_#,<"R2#;<36xOHR{U_#,?JR2#;<{@{6x2;=xU_#,@MR2#;Dq</U_#,PiR2#;R9:tU_#,?VR2#;>|HEU_#,=+2;VXR2#;l:Fl6/U_#,BRR2#;@tE-U_#,>kR2#;I1BmHbJ3U_#,>|N^A8R2#;P|~}?~{2;75FdIaU_#,Gn?\R2#;W;W;tbtb#,PlSkHKQTU_#,J'~}?~{R2#;J}IMU_#,>=R2#;J}7#U_#,@'R2#;OH1)6x:sN7Fd~}?~{U_#,2;>+V.VAR2#;@4N/P;U_#,S{P]O"R2!#1xE-6xO`S-#,>C6x2;:O#,SV2;O`H%#,1X=w2lV.!#1x7G9sRf6`R2#,N)N^Nd=x#,WcRT2"A&AO5PH!HK6xRQ!#7rN)N^BG6xRW5PU_#,1XG\l6HK!#WdN4GW6x7#V.#,Tr2;7~#,2;7~TrDQSC!#WdRQGW8=6x7#2;PP#,Tr2;?ISC!#9J:OV.RTND#,FkV.RTNd#,JGN=1XH!!#AnKXPPRT=LFdCq#,TrCq7~#;AnKX2;PPRT=LFdCq#,TrCq2;7~!#AnKXPPU_#,Sk~}?~{O`5CR2!#~}
-
-~{5XPN5ZJ.~}
-
-~{KoWST;#:5XPNSPM(U_!"SP~}?~{U_!"SPV'U_!"SP0/U_!"SPOUU_!"SPT6U_!#NR?IRTMy#,1K?IRT@4#,T;M(!#M(PNU_#,OH>S8_Qt#,@{A85@#,RTU=Tr@{!#?IRTMy#,DQRT75#,T;~}?~{!#~}?~{PNU_#,5PN^18#,3v6xJ$V.#,5PHtSP18#,3v6x2;J$#,DQRT75#,2;@{!#NR3v6x2;@{#,1K3v6x2;@{#,T;V'!#V'PNU_#,5PKd@{NR#,NRN^3vR2#,R}6xH%V.#,An5P0k3v6x;wV.@{!#0/PNU_#,NROH>SV.#,1XS/V.RT4}5P!#Ht5POH>SV.#,S/6xNp4S#,2;S/6x4SV.!#OUPNU_#,NROH>SV.#,1X>S8_QtRT4}5P#;Ht5POH>SV.#,R}6xH%V.#,Np4SR2!#T6PNU_#,JF>yDQRTLtU=#,U=6x2;@{!#724KAyU_#,5XV.5@R2#,=+V.VAHN#,2;?I2;2lR2!#721xSPW_U_!"SP3[U_!"SPO]U_!"SP1@U_!"SPBRU_!"SP11U_!#724KAyU_#,7GLl5XV.TV#,=+V.9}R2!#7rJF>y#,RTR;;wJ.#,T;W_#;WdG?@tHu#,T;3[#;@tG?WdHu#,T;O]#;4s@tE-6x2;7~#,Sv5P~}?~{6xWTU=#,=+2;V*FdD\#,T;1@#;=+Hu2;QO#,=L5@2;Cw#,@tWdN^3##,3B1xW]:a#,T;BR#;=+2;D\AO5P#,RTIY:O~}?~{#,RTHu;wG?#,1xN^Q!7f#,T;11!#724KAyU_#,0\V.5@R2#,=+V.VAHN#,2;?I2;2lR2!#7r5XPNU_#,1xV.VzR2!#AO5PVFJ$#,<FOU0/T6=|#,IO=+V.5@R2!#V*4K6xSCU=U_1XJ$#,2;V*4K6xSCU=U_1X0\!#9JU=5@1XJ$#,VwT;N^U=#,1XU=?IR2#;U=5@2;J$#,VwT;1XU=#,N^U=?IR2!#9J=x2;GsC{#,MK2;1\Wo#,N(CqJG1##,6x@{l6Vw#,9zV.1&R2!#JSWdHgS$6y#,9J?IRTSkV.80InO*#;JSWdHg0.WS#,9J?ISkV.>cK@!#:q6x2;D\J9#,0.6x2;D\An#,BR6x2;D\VN#,F)Ht=>WS#,2;?ISCR2!#V*NaWdV.?IRT;w#,6x2;V*5PV.2;?I;w#,J$V.0kR2#;V*5PV.?I;w#,6x2;V*NaWdV.2;?IRT;w#,J$V.0kR2#;V*5PV.?I;w#,V*NaWdV.?IRT;w#,6x2;V*5XPNV.2;?IRTU=#,J$V.0kR2!#9JV*1xU_#,6/6x2;CT#,>Y6x2;Gn!#9JT;#:V*1KV*<:#,J$DK2;4y#;V*LlV*5X#,J$DK?IH+!#~}
-
-~{>E5X5ZJ.R;~}
-
-~{KoWST;#:SC1xV.7(#,SPI"5X#,SPGa5X#,SPUy5X#,SP=;5X#,SPai5X#,SPVX5X#,SP7:5X#,SPN'5X#,SPK@5X!#Vn:nWTU=Fd5XU_#,~}?~{I"5X#;HkHKV.5X2;InU_#,~}?~{Ga5X#;NR5CR`@{#,1K5CR`@{U_#,~}?~{Uy5X#;NR?IRTMy#,1K?IRT@4U_#,~}?~{=;5X#;Vn:nV.5XH}Jt#,OHVA6x5CLlOB~}?~{U_#,~}?~{ai5X#;HkHKV.5XIn#,133GRX6`U_#,~}?~{VX5X#;I=AV!"OUWh!">ZTs#,72DQPPV.5@U_#,~}?~{7:5X#;KySIHkU_0/#,Ky4S9iU_SX#,1K9Q?IRT;wNaV.~}?~{U_#,~}?~{N'5X#;<2U=Tr4f#,2;<2U=TrMvU_#,~}?~{K@5X!#JG9JI"5XTrN^U=#,Ga5XTrN^V9#,Uy5XTrN^9%#,=;5XTrN^>x#,ai5XTr:O=;#,VX5XTrBS#,7:5XTrPP#,N'5XTrD1#,K@5XTrU=!#9EV.IFSC1xU_#,D\J95PHKG0:s2;O`<0#,~}?~{9Q2;O`JQ#,9s<z2;O`>H#,IOOB2;O`JU#,Wd@k6x2;</#,1x:O6x2;Fk!#:Ol6@{6x6/#,2;:Ol6@{6xV9!#8RNJ5P~}?~{6xU{=+@4#,4}V.Ht:NT;#:OH6aFdKy0.TrL}RS!#1xV.GiVwKY#,3KHKV.2;<0!#SI2;S]V.5@#,9%FdKy2;=dR2!#72~}?~{?MV.5@#,InHkTrW(!#VwHK2;?K#,BSl6HDR0#,H}>|WcJ3!#=wQx6xNp@M#,2"Fx;}A&#,TK1x<FD1#,~}?~{2;?I2b!#M6V.N^KyMy#,K@GR2;11!#K@QI2;5C#,J?HK>!A&!#1xJ?IuO]Tr2;>e#,N^KyMyTr9L#,InHkTr>P#,2;5CRQTr67!#JG9JFd1x2;P^6x=d#,2;Gs6x5C#,2;T<6xGW#,2;An6xPE#,={OiH%RI#,VAK@N^KyV.!#NaJ?N^~}?~{2F#,7G6q;uR2#;N^~}?~{C|#,7G6qJYR2!#An7"V.HU#,J?WdWxU_LiU4=s#,YHNTU_Li=;RC#,M6V.N^KyMy#,Vn!"~}?~{V.SBR2!#9JIFSC1xU_#,F)HgBJH;!#BJH;U_#,3#I=V.I_R2!#;wFdJWTrN2VA#,;wFdN2TrJWVA#,;wFdVPTrJWN2>cVA!#8RNJ1x?IJ9HgBJH;:u#?T;?I!#7rNbHKSkT=HKO`6qR2#,51FdM,V[6x<C6xSv7g#,FdO`>HR2HgWsSRJV!#JG9J7=BmBqBV#,N4WcJQR2#;FkSBHgR;#,U~V.5@R2#;8UHa=T5C#,5XV.@mR2!#9JIFSC1xU_#,P/JVHtJ9R;HK#,2;5CRQR2!#=+>|V.JB#,>2RTSD#,U}RTVN#,D\S^J?WdV.6zD?#,J9V.N^V*#;RWFdJB#,8oFdD1#,J9HKN^J6#;RWFd>S#,SXFdM>#,J9Cq2;5CBG!#K'SkV.FZ#,Hg5G8_6xH%FdL]#;K'SkV.InHkVn:nV.5X#,6x7"Fd;z!#HtG}H:Qr#,G}6xMy#,G}6x@4#,D*V*KyV.!#>[H}>|V.~}?~{#,M6V.l6OU#,4KN==+>|V.JBR2!#>E5XV.1d#,G|IlV.A&#,HKGiV.@m#,2;?I2;2lR2!#72~}?~{?MV.5@#,InTrW(#,G3TrI"!#H%9zT=>36xJ&U_#,>x5XR2#;KD39U_#,ai5XR2#;HkInU_#,VX5XR2#;HkG3U_#,Ga5XR2#;139LG00/U_#,N'5XR2#;N^KyMyU_#,K@5XR2!#JG9JI"5XNa=+R;FdV>#,Ga5XNa=+J9V.Jt#,Uy5XNa=+GwFd:s#,=;5XNa=+=wFdJX#,=;5XNa=+9LFd=a#,ai5XNa=+=wFdJQ#,VX5XNa=+<LFdJ3#,7:5XNa=+=xFdM>#,N'5XNa=+H{Fd~}?~{#,K@5XNa=+J>V.RT2;;n!#9J1xV.Gi#:N'TrSy#,2;5CRQTr67#,9}Tr4S!#JG9J2;V*Vn:nV.D1U_#,2;D\T$=;#;2;V*I=AV!"OUWh!">ZTsV.PNU_#,2;D\PP>|#;2;SCOg5<#,2;D\5C5X@{!#KDNeU_#,R;2;V*#,7G0TMuV.1xR2!#7r0TMuV.1x#,7%4s9z#,TrFd~}?~{2;5C>[#;M~<Sl65P#,TrFd=;2;5C:O!#JG9J2;UyLlOBV.=;#,2;QxLlOBV.H(#,PE<:V.K=#,M~<Sl65P#,TrFd3G?I0N#,Fd9z?IcD!#J)N^7(V.IM#,P|N^U~V.An!#78H}>|V.~}?~{#,HtJ9R;HK!#78V.RTJB#,Np8fRTQT#;78V.RT:&#,Np8fRT@{!#M6V.Mv5XH;:s4f#,O]V.K@5XH;:sIz!#7r~}?~{O]l6:&#,H;:sD\~}?~{J$0\!#9J~}?~{1xV.JB#,TZK3Oj5PV.Rb#,2"5PR;Or#,G'@oI1=+#,JGN=GID\3IJB!#JG9JU~>YV.HU#,RD9XU[7{#,N^M(FdJ9#,@wl6@HCmV.IO#,RTVoFdJB!#5PHK?*~}?~{#,1XX=HkV.#,OHFdKy0.#,N"SkV.FZ#,<yD+Kf5P#,RT>vU=JB!#JG9JJ<Hg4&E.#,5PHK?*;'#;:sHgMQMC#,5P2;<0>\!#~}
-
-~{;p9%5ZJ.6~~}
-
-~{KoWST;#:72;p9%SPNe#:R;T;;pHK#,6~T;;p;}#,H}T;;p~}?~{#,KDT;;p?b#,NeT;;p6S!#PP;p1XSPRr#,Rr1XKX>_!#7";pSPJ1#,Fp;pSPHU!#J1U_#,LlV.ToR2!#HUU_#,TBTZ;~!"1Z!"Rm!"~}?~{R2!#724KKDK^U_#,7gFpV.HUR2!#72;p9%#,1XRrNe;pV.1d6xS&V.#:;p7"l6DZ#,TrTgS&V.l6Mb#;;p7"6xFd1x>2U_#,4}6xNp9%#,<+Fd;pA&#,?I4S6x4SV.#,2;?I4STrIO!#;p?I7"l6Mb#,N^4}l6DZ#,RTJ17"V.#,;p7"IO7g#,N^9%OB7g#,Vg7g>C#,R97gV9!#72>|1XV*Ne;pV.1d#,RTJ}JXV.!#9JRT;pWt9%U_Cw#,RTK.Wt9%U_G?!#K.?IRT>x#,2;?IRT6a!#7rU=J$9%H!6x2;6hFd9&U_PW#,C|T;!07QAt!1!#9JT;#:CwVwBGV.#,A<=+6hV.#,7G@{2;6/#,7G5C2;SC#,7GN#2;U=!#Vw2;?IRTE-6xPKJ&#,=+2;?IRT~}?~{6x9%U=!#:Ol6@{6x6/#,2;:Ol6@{6xIO!#E-?IRT84O2#,~}?~{?IRT84K5#,Mv9z2;?IRT844f#,K@U_2;?IRT84Iz!#9JCwVwIwV.#,A<=+>/V.!#4K029zH+>|V.5@R2!#~}
-
-~{SC<d5ZJ.H}~}
-
-~{KoWST;#:~} ~{72PKJ&J.Mr#,3vUwG'@o#,0YPUV.7Q#,9+<RV.7n#,HU7QG'=p#,DZMbI'6/#,5!l65@B7#,2;5C2YJBU_#,F_J.Mr<R!#O`JXJ}Dj#,RTUyR;HUV.J$#,6x0.>tB;0Y=p#,2;V*5PV.GiU_#,2;HJV.VAR2#,7GCqV.=+R2#,7GVwV.WtR2#,7GJ$V.VwR2!#9JCw>}OM=+KyRT6/6xJ$HK#,3I9&3vl6~}?~{U_#,OHV*R2!#OHV*U_#,2;?IH!l69mIq#,2;?IOsl6JB#,2;?IQil66H#,1XH!l6HK#,V*5PV.GiU_R2!#9JSC<dSPNe#:SPRr<d#,SPDZ<d#,SP74<d#,SPK@<d#,SPIz<d!#Ne<d>cFp#,D*V*Fd5@#,JGN=Iq<M#,HK>}V.1&R2!#Og<dU_#,RrFdOgHK6xSCV.#;DZ<dU_#,RrFd9YHK6xSCV.#;74<dU_#,RrFd5P<d6xSCV.#;K@<dU_#,~}??~{JBl6Mb#,AnNaNEV*V.6x4+l65P<dR2#;Iz<dU_#,741(R2!#9JH}>|V.JB#,D*GWl6<d#,IMD*:ql6<d#,JBD*C\l6<d#,7GJ%OM2;D\SC<d#,7GHJRe2;D\J9<d#,7GN"Cn2;D\5C<dV.J5!#N"TUN"TU#!N^Ky2;SC<dR2!#<dJBN47"6xOHNEU_#,<dSkKy8fU_<fK@!#72>|V.KyS{;w#,3GV.KyS{9%#,HKV.KyS{I1#,1XOHV*FdJX=+!"WsSR!"~}?~{U_!"CEU_!"IaHKV.PUC{#,AnNa<d1XKwV*V.!#5P<dV.@4<dNRU_#,Rr6x@{V.#,5<6xIaV.#,9J74<d?I5C6xSCR2#;RrJG6xV*V.#,9JOg<d!"DZ<d?I5C6xJ9R2#;RrJG6xV*V.#,9JK@<d~}??~{JB#,?IJ98f5P#;RrJG6xV*V.#,9JIz<d?IJ9HgFZ!#Ne<dV.JB#,Vw1XV*V.#,V*V.1XTZl674<d#,9J74<d2;?I2;:qR2!#NtRsV.PKR2#,RAV?TZOD#;V\V.PKR2#,B@Q@TZRs!#9JCw>}OM=+#,D\RTIOVG~}?~{<dU_#,1X3I4s9&!#4K1xV.R*#,H}>|V.KyJQ6x6/R2!#~}
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt
deleted file mode 100644
index e15fe5c19..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/files/23864/23864-0.txt
-after converting from Traditional Chinese to Simplified Chinese.
---------
-始计第一
-
-孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。
-
-故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。
-
-道者,令民与上同意,可与之死,可与之生,而不畏危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知者不胜。
-
-故校之以计,而索其情,曰:主孰有道?将孰有能?天地孰得?法令孰行?兵?孰强?士卒孰练?赏罚孰明?吾以此知胜负矣。
-
-将听吾计,用之必胜,留之;将不听吾计,用之必败,去之。
-
-计利以听,乃?之势,以佐其外。势者,因利而制权也。
-
-兵者,诡道也。故能而示之不能,用而示之不用,近而示之远,远而示之近。利而诱之,乱而取之,实而备之,强而避之,怒而挠之,卑而骄之,佚而劳之,亲而离之,攻其无备,出其不意。此兵家之胜,不可先传也。
-
-夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜,少算不胜,而况无算乎!吾以此观之,胜负见矣。
-
-作战第二
-
-孙子曰:凡用兵之法,驰车千?,革车千乘,带甲十万,千里馈粮。则内外之费,宾客之用,胶漆之材,车甲之奉,日费千金,然后十万之师举矣。
-
-其用战也,贵胜,久则钝兵挫锐,攻城则力屈,久暴师则国用不足。夫钝兵挫锐,屈力?货,则诸侯乘其弊而起,虽有智者,不能善其后矣。故兵闻拙速,未睹巧之久也。夫兵久而国利者,未之有也。故不尽知用兵之害者,则不能尽知用兵之利也。
-
-善用兵者,役不再籍,粮不三载,取用於国,因粮於敌,故军食可足也。国之贫於师者远输,远输则百姓贫;近於师者贵卖,贵卖则百姓竭,财竭则急於丘役。力屈财?,中原内虚於家,百姓之费,十去其七;公家之费,破军罢马,甲胄矢弩,戟?矛?,丘牛大车,十去其六。
-
-故智将务食於敌,食敌一钟,当吾二十钟;萁秆一石,当吾二十石。故杀敌者,怒也;取敌之利者,货也。故车战,得车十乘以上,赏其先得者,而更其旌旗。车杂而乘之,卒善而养之,是谓胜敌而益强。
-
-故兵贵胜,不贵久。故知兵之将,民之司命。国家安危之主也。
-
-谋攻第三
-
-孙子曰:凡用兵之法,全国?上,破国次之;全军?上,破军次之;全旅?上,破旅次之;全卒?上,破卒次之;全伍?上,破伍次之。是故百战百胜,非善之善者也;不战而屈人之兵,善之善者也。
-
-故上兵伐谋,其次伐交,其次伐兵,其下攻城。攻城之法,?不得已。修???,具器械,三月而后成;距?,又三月而后已。将不胜其忿,而蚁附之,杀士三分之一,而城不拔者,此攻之灾也。
-
-故善用兵者,屈人之兵,而非战也,拔人之城而非攻也,毁人之国而非久也,必以全争於天下,故兵不顿而利可全,此谋攻之法也。
-
-故用兵之法,十则围之,五则攻之,倍则分之,敌则能战之,少则能逃之,不若则能避之。故小敌之坚,大敌之擒也。
-
-夫将者,国之辅也。辅周则国必强,辅隙则国必弱。故君之所以患於军者三:不知军之不可以进而谓之进,不知军之不可以退而谓之退,是谓縻军;不知三军之事,而同三军之政,则军士惑矣;不知三军之权,而同三军之任,则军士疑矣。三军既惑且疑,则诸侯之难至矣。是谓乱军引胜。
-
-故知胜有五:知可以战与不可以战者,胜。识?寡之用者,胜。上下同欲者,胜。以虞待不虞者,胜。将能而君不御者,胜。此五者,知胜之道也。
-
-故曰:知己知彼,百战不?;不知彼而知己,一胜一负;不知彼不知己,每战必败。
-
-军形第四
-
-孙子曰:昔之善战者,先?不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能?不可胜,不能使敌必可胜。故曰:胜可知,而不可?。
-
-不可胜者,守也;可胜者,攻也。守则不足,攻则有?。善守者,藏於九地之下,善攻者,动於九天之上,故能自保而全胜也。
-
-见胜不过?人之所知,非善之善者也;战胜而天下曰善,非善之善者也。故举秋毫不?多力,见日月不?明目,闻雷霆不?聪耳。古之善战者,胜於易胜者也。故善战者之胜也,无智名,无勇功,故其战胜不忒。不忒者,其所措必胜,胜已败者也。故善战者,先立於不败之地,而不失敌之败也。是故胜兵先胜,而后求战,败兵先战而后求胜。善用兵者,修道而保法,故能?胜败之政。
-
-兵法:一曰度,二曰量,三曰数,四曰称,五曰胜。地生度,度生量,量生数,数生称,称生胜。故胜兵若以?称?,败兵若以?称?。胜者之战,若决积水於千仞之?者,形也。
-
-兵势第五
-
-孙子曰:凡治?如治寡,分数是也;斗?如斗寡,形名是也;三军之?,可使必受敌而无败者,奇正是也;兵之所加,如以?投卵者,虚实是也。
-
-凡战者,以正合,以奇胜。故善出奇者,无穷如天地,不竭如江海。终而复始,日月是也。死而?生,四时是也。声不过五,五声之变,不可胜听也;色不过五,五色之变,不可胜观也;味不过五,五味之变,不可胜尝也;战势,不过奇正,奇正之变,不可胜穷也。奇正相生,如循环之无端,熟能穷之哉?
-
-激水之疾,至於漂石者,势也;?鸟之疾,至於毁折者,节也。是故善战者,其势险,其节短。势如张弩,节如发机。
-
-纷纷??,斗乱而不可乱也;浑浑沌沌,形圆而不可败也。乱生於治,怯生於勇,弱生於强。治乱,数也;勇怯,势也;强弱,形也。故善动敌者,形之,敌必从之;予之,敌必取之。以利动之,以卒待之。
-
-故善战者,求之於势,不责於人;故能择人而任势。任势者,其战人也,如转木石。木石之性,安则静,危则动,方则止,圆则行。故善战人之势,如转圆石於千仞之山者,势也。
-
-虚实第六
-
-孙子曰:凡先处战地而待敌者佚,后处战地而趋战者劳。
-
-故善战者,致人而不致於人。能使敌人自至者,利之也;能使敌人不得至者,害之也。故敌佚能劳之,饱能饥之,安能动之。出其所必趋,趋其所不意。行千里而不劳者,行於无人之地也;攻而必取者,攻其所不守也。守而必固者,守其所不攻也。
-
-故善攻者,敌不知其所守;善守者,敌不知其所攻。微乎微乎,至於无形;神乎神乎,至於无声,故能?敌之司命。进而不可御者,冲其虚也;退而不可追者,速而不可及也。故我欲战,敌虽高垒深沟,不得不与我战者,攻其所必救也;我不欲战,虽画地而守之,敌不得与我战者,乖其所之也。故形人而我无形,则我专而敌分。我专?一,敌分?十,是以十攻其一也。则我?敌寡,能以?击寡者,则吾之所与战者约矣。吾所与战之地不可知,不可知则敌所备者多,敌所备者多,则吾所与战者寡矣。故备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。寡者,备人者也;?者,使人备己者也。故知战之地,知战之日,则可千里而会战;不知战之地,不知战日,则左不能救右,右不能救左,前不能救后,后不能救前,而况远者数十里,近者数里乎!以吾度之,越人之兵虽多,亦奚益於胜哉!故曰:胜可?也。敌虽?,可使无斗。故策之而知得失之计,候之而知动静之理,形之而知死生之地,角之而知有?不足之处。故形兵之极,至於无形。无形则深间不能窥,智者不能谋。因形而措胜於?,?不能知。人皆知我所以胜之形,而莫知吾所以制胜之形。故其战胜不?,而应形於无穷。夫兵形象水,水之行避高而趋下,兵之形避实而击虚;水因地而制流,兵因敌而制胜。故兵无常势,水无常形。能因敌变化而取胜者,谓之神。故五行无常胜,四时无常位,日有短长,月有死生。
-
-军争第七
-
-孙子曰: 凡用兵之法,将受命於君,合军聚?,交和而舍,莫难於军争。军争之难者,以迂?直,以患?利。故迂其途,而诱之以利,后人发,先人至,此知迂直之计者也。军争?利,军争?危。举军而争利则不及,委军而争利则?重捐。是故?甲而趋,日夜不处,倍道兼行,百?而争利,则擒三将军,劲者先,疲者后,其法十一而至;五十里而争利,则蹶上将军,其法半至;三十里而争利,则三分之二至。是故军无?重则亡,无粮食则亡,无委积则亡。故不知诸侯之谋者,不能豫交;不知山林、险阻、沮泽之形者,不能行军;不用乡导者,不能得地利。故兵以诈立,以利动,以分和?变者也。故其疾如风,其徐如林,侵掠如火,不动如山,难知如阴,动如雷震。掠乡分?,廓地分利,悬权而动。先知迂直之计者胜,此军争之法也。《军政》曰:“言不相闻,故?之金鼓;视不相见,故?之旌旗。”夫金鼓旌旗者,所以一民之耳目也。民既专一,则勇者不得独进,怯者不得独退,此用?之法也。故夜战多金鼓,昼战多旌旗,所以变人之耳目也。三军可夺气,将军可夺心。是故朝气锐,昼气惰,暮气归。善用兵者,避其锐气,击其惰归,此治气者也。以治待乱,以静待哗,此治心者也。以近待远,以佚待劳,以饱待饥,此治力者也。无邀正正之旗,无击堂堂之陈,此治变者也。故用兵之法,高陵勿向,背丘勿逆,佯北勿从,锐卒勿攻,饵兵勿食,归师勿遏,围师遗?,穷寇勿迫,此用兵之法也。
-
-九变第八
-
-孙子曰: 凡用兵之法,将受命於君,合军聚合。泛地无舍,衢地合交,绝地无留,围地则谋,死地则战,途有所不由,军有所不击,城有所不攻,地有所不争,君命有所不受。故将通於九变之利者,知用兵矣;将不通九变之利,虽知地形,不能得地之利矣;治兵不知九变之术,虽知五利,不能得人之用矣。是故智者之虑,必杂於利害,杂於利而务可信也,杂於害而患可解也。是故屈诸侯者以害,役诸侯者以业,趋诸侯者以利。故用兵之法,无恃其不来,恃吾有以待之;无恃其不攻,恃吾有所不可攻也。故将有五危,必死可杀,必生可虏,忿速可侮,廉洁可辱,爱民可烦。凡此五者,将之过也,用兵之灾也。覆军杀将,必以五危,不可不察也。
-
-行军第九
-
-孙子曰:凡处军相敌,绝山依?,视生处高,战隆无登,此处山之军也。绝水必远水,客绝水而来,勿迎之於水内,令半渡而击之利,欲战者,无附於水而迎客,视生处高,无迎水流,此处水上之军也。绝斥泽,唯亟去无留,若交军於斥泽之中,必依水草而背?树,此处斥泽之军也。平陆处易,右背高,前死后生,此处平陆之军也。凡此四军之利,黄帝之所以胜四帝也。凡军好高而恶下,贵阳而贱阴,养生而处实,军无百疾,是谓必胜。丘陵堤防,必处其阳而右背之,此兵之利,地之助也。上雨水流至,欲涉者,待其定也。凡地有绝涧、天井、天牢、天罗、天陷、天隙,必亟去之,勿近也。吾远之,敌近之;吾迎之,敌背之。军旁有险阻、潢井、蒹葭、小林、??者,必谨覆索之,此伏?之所处也。敌近而静者,恃其险也;远而挑战者,欲人之进也;其所居易者,利也;?树动者,来也;?草多障者,疑也;鸟起者,伏也;兽骇者,覆也;尘高而锐者,车来也;卑而广者,徒来也;散而条达者,樵?也;少而往来者,营军也;辞卑而备者,进也;辞强而进驱者,退也;轻车先出居其侧者,陈也;无约而请和者,谋也;奔走而陈兵者,期也;半进半退者,诱也;杖而立者,饥也;汲而先饮者,渴也;见利而不进者,劳也;鸟集者,虚也;夜呼者,恐也;军扰者,将不重也;旌旗动者,乱也;吏怒者,倦也;杀马肉食者,军无粮也;悬?不返其舍者,穷寇也;谆谆翕翕,徐与人言者,失?也;数赏者,窘也;数罚者,困也;先暴而后畏其?者,不精之至也;来委谢者,欲休息也。兵怒而相迎,久而不合,又不相去,必谨察之。兵非贵益多也,惟无武进,足以并力料敌取人而已。夫惟无虑而易敌者,必擒於人。卒未亲而罚之,则不服,不服则难用。卒已亲附而罚不行,则不可用。故合之以文,齐之以武,是谓必取。令素行以教其民,则民服;令素不行以教其民,则民不服。令素行者,与?相得也。
-
-地形第十
-
-孙子曰:地形有通者、有?者、有支者、有隘者、有险者、有远者。我可以往,彼可以来,曰通。通形者,先居高阳,利粮道,以战则利。可以往,难以返,曰?。?形者,敌无备,出而胜之,敌若有备,出而不胜,难以返,不利。我出而不利,彼出而不利,曰支。支形者,敌虽利我,我无出也,引而去之,令敌半出而击之利。隘形者,我先居之,必盈之以待敌。若敌先居之,盈而勿从,不盈而从之。险形者,我先居之,必居高阳以待敌;若敌先居之,引而去之,勿从也。远形者,势均难以挑战,战而不利。凡此六者,地之道也,将之至任,不可不察也。凡兵有走者、有驰者、有陷者、有崩者、有乱者、有北者。凡此六者,非天地之灾,将之过也。夫势均,以一击十,曰走;卒强吏弱,曰驰;吏强卒弱,曰陷;大吏怒而不服,遇敌?而自战,将不知其能,曰崩;将弱不严,教道不明,吏卒无常,陈兵纵横,曰乱;将不能料敌,以少合?,以弱击强,兵无选锋,曰北。凡此六者,败之道也,将之至任,不可不察也。夫地形者,兵之助也。料敌制胜,计险隘远近,上将之道也。知此而用战者必胜,不知此而用战者必败。故战道必胜,主曰无战,必战可也;战道不胜,主曰必战,无战可也。故进不求名,退不避罪,唯民是保,而利於主,国之宝也。视卒如婴儿,故可以与之赴深溪;视卒如爱子,故可与之俱死。厚而不能使,爱而不能令,乱而不能治,譬若骄子,不可用也。知吾卒之可以击,而不知敌之不可击,胜之半也;知敌之可击,而不知吾卒之不可以击,胜之半也;知敌之可击,知吾卒之可以击,而不知地形之不可以战,胜之半也。故知兵者,动而不迷,举而不穷。故曰:知彼知己,胜乃不殆;知天知地,胜乃可全。
-
-九地第十一
-
-孙子曰:用兵之法,有散地,有轻地,有争地,有交地,有衢地,有重地,有泛地,有围地,有死地。诸侯自战其地者,?散地;入人之地不深者,?轻地;我得亦利,彼得亦利者,?争地;我可以往,彼可以来者,?交地;诸侯之地三属,先至而得天下?者,?衢地;入人之地深,背城邑多者,?重地;山林、险阻、沮泽,凡难行之道者,?泛地;所由入者隘,所从归者迂,彼寡可以击吾之?者,?围地;疾战则存,不疾战则亡者,?死地。是故散地则无战,轻地则无止,争地则无攻,交地则无绝,衢地则合交,重地则掠,泛地则行,围地则谋,死地则战。古之善用兵者,能使敌人前后不相及,?寡不相恃,贵贱不相救,上下不相收,卒离而不集,兵合而不齐。合於利而动,不合於利而止。敢问敌?而整将来,待之若何曰:先夺其所爱则听矣。兵之情主速,乘人之不及。由不虞之道,攻其所不戒也。凡?客之道,深入则专。主人不克,掠於饶野,三军足食。谨养而勿劳,并气积力,运兵计谋,?不可测。投之无所往,死且不北。死焉不得,士人尽力。兵士甚陷则不惧,无所往则固,深入则拘,不得已则斗。是故其兵不修而戒,不求而得,不约而亲,不令而信,禁祥去疑,至死无所之。吾士无?财,非恶货也;无?命,非恶寿也。令发之日,士卒坐者涕沾襟,偃卧者涕交颐,投之无所往,诸、?之勇也。故善用兵者,譬如率然。率然者,常山之蛇也。击其首则尾至,击其尾则首至,击其中则首尾俱至。敢问兵可使如率然乎?曰可。夫吴人与越人相恶也,当其同舟而济而遇风,其相救也如左右手。是故方马埋轮,未足恃也;齐勇如一,政之道也;刚柔皆得,地之理也。故善用兵者,携手若使一人,不得已也。将军之事,静以幽,正以治,能愚士卒之耳目,使之无知;易其事,革其谋,使人无识;易其居,迂其途,使民不得虑。帅与之期,如登高而去其梯;帅与之深入诸侯之地,而发其机。若驱群羊,驱而往,驱而来,莫知所之。聚三军之?,投之於险,此谓将军之事也。九地之变,屈伸之力,人情之理,不可不察也。凡?客之道,深则专,浅则散。去国越境而师者,绝地也;四彻者,衢地也;入深者,重地也;入浅者,轻地也;背固前隘者,围地也;无所往者,死地也。是故散地吾将一其志,轻地吾将使之属,争地吾将趋其后,交地吾将谨其守,交地吾将固其结,衢地吾将谨其恃,重地吾将继其食,泛地吾将进其途,围地吾将塞其?,死地吾将示之以不活。故兵之情:围则御,不得已则斗,过则从。是故不知诸侯之谋者,不能预交;不知山林、险阻、沮泽之形者,不能行军;不用乡导,不能得地利。四五者,一不知,非霸王之兵也。夫霸王之兵,伐大国,则其?不得聚;威加於敌,则其交不得合。是故不争天下之交,不养天下之权,信己之私,威加於敌,则其城可拔,其国可隳。施无法之赏,悬无政之令。犯三军之?,若使一人。犯之以事,勿告以言;犯之以害,勿告以利。投之亡地然后存,陷之死地然后生。夫?陷於害,然后能?胜败。故?兵之事,在顺详敌之意,并敌一向,千里杀将,是谓巧能成事。是故政举之日,夷关折符,无通其使,厉於廊庙之上,以诛其事。敌人开?,必亟入之,先其所爱,微与之期,践墨随敌,以决战事。是故始如处女,敌人开户;后如脱兔,敌不及拒。
-
-火攻第十二
-
-孙子曰:凡火攻有五:一曰火人,二曰火积,三曰火?,四曰火库,五曰火队。行火必有因,因必素具。发火有时,起火有日。时者,天之燥也。日者,月在箕、壁、翼、?也。凡此四宿者,风起之日也。凡火攻,必因五火之变而应之:火发於内,则早应之於外;火发而其兵静者,待而勿攻,极其火力,可从而从之,不可从则上。火可发於外,无待於内,以时发之,火发上风,无攻下风,昼风久,夜风止。凡军必知五火之变,以数守之。故以火佐攻者明,以水佐攻者强。水可以绝,不可以夺。夫战胜攻取而不惰其功者凶,命曰“费留”。故曰:明主虑之,良将惰之,非利不动,非得不用,非危不战。主不可以怒而兴师,将不可以?而攻战。合於利而动,不合於利而上。怒可以复喜,?可以复说,亡国不可以复存,死者不可以复生。故明主慎之,良将警之。此安国全军之道也。
-
-用间第十三
-
-孙子曰: 凡兴师十万,出征千里,百姓之费,公家之奉,日费千金,内外骚动,怠於道路,不得操事者,七十万家。相守数年,以争一日之胜,而爱爵禄百金,不知敌之情者,不仁之至也,非民之将也,非主之佐也,非胜之主也。故明君贤将所以动而胜人,成功出於?者,先知也。先知者,不可取於鬼神,不可象於事,不可验於度,必取於人,知敌之情者也。故用间有五:有因间,有内间,有反间,有死间,有生间。五间俱起,莫知其道,是谓神纪,人君之宝也。乡间者,因其乡人而用之;内间者,因其官人而用之;反间者,因其敌间而用之;死间者,??事於外,令吾闻知之而传於敌间也;生间者,反报也。故三军之事,莫亲於间,赏莫厚於间,事莫密於间,非圣贤不能用间,非仁义不能使间,非微妙不能得间之实。微哉微哉!无所不用间也。间事未发而先闻者,间与所告者兼死。凡军之所欲击,城之所欲攻,人之所欲杀,必先知其守将、左右、?者、门者、舍人之姓名,令吾间必索知之。敌间之来间我者,因而利之,导而舍之,故反间可得而用也;因是而知之,故乡间、内间可得而使也;因是而知之,故死间??事,可使告敌;因是而知之,故生间可使如期。五间之事,主必知之,知之必在於反间,故反间不可不厚也。昔殷之兴也,伊挚在夏;周之兴也,吕牙在殷。故明君贤将,能以上智?间者,必成大功。此兵之要,三军之所恃而动也。
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt
deleted file mode 100644
index ef38e4b64..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/files/23864/23864-0.txt
-after converting from Traditional Chinese to Simplified Chinese.
---------
-ʼƵһ
-
-Իߣ֮£֮أ֮ɲҲ
-
-ʾ֮£У֮Լƣ飺һԻԻ죬ԻأԻԻ
-
-ߣͬ⣬֮֮ηΣҲߣʱҲߣԶסҲߣǡšʡ¡ҲߣơٵҲߣĪţ֪֮ʤ֪߲ʤ
-
-У֮Լƣ飬ԻеܣãУǿʿͷԴ֪ʤӡ
-
-ƣ֮ʤ֮ƣ֮ذܣȥ֮
-
-˞֮ƣ⡣ߣȨҲ
-
-ߣҲܶʾ֮ܣöʾ֮ãʾ֮ԶԶʾ֮֮Ҷȡ֮ʵ֮ǿ֮ŭ֮֮֮׶֮ޱ䲻⡣˱֮ʤȴҲ
-
-δսʤߣҲδս㲻ʤߣҲʤ㲻ʤԴ˹֮ʤӡ
-
-սڶ
-
-Իñ֮۳ǧ񆣬ﳵǧˣʮǧ֮ѣ֮ã֮ģ֮շǧȻʮ֮ʦӡ
-
-սҲʤ۱񣬹ñʦò㡣۱׶ߣӡʱ׾٣δ֮Ҳöߣδ֮Ҳʲ֪ñ֮ߣܾ֪ñ֮Ҳ
-
-ñߣ۲ټأȡ춹춵УʾʳҲ֮ƶʦԶ䣬Զƶʦ߹սߣƽۡƚԭ춼ң֮ѣʮȥߣ֮ѣƾʸꪘJìţ󳵣ʮȥ
-
-ǽʳ춵УʳһӣʮӣݽһʯʮʯɱߣŭҲȡ֮ߣҲʳսóʮϣȵߣ졣Ӷ֮ƶ֮νʤжǿ
-
-ʱʤá֪֮֮˾ҰΣ֮Ҳ
-
-
-Իñ֮ȫϣƹ֮ȫϣƾ֮ȫÞϣô֮ȫϣ֮ȫϣ֮ǹʰսʤ֮Ҳս֮֮Ҳ
-
-ϱıηη¹ǡ֮鲻ѡޙMݜе¶ɣ鞣¶ѡʤޣϸ֮ɱʿ֮һDzߣ˹֮Ҳ
-
-ñߣ֮սҲ֮ǶǹҲ֮ǾҲȫ£ʱٶȫı֮Ҳ
-
-ñ֮ʮΧ֮֮֮սܱ֮֮֮С֮ᣬ֮Ҳ
-
-ߣ֮Ҳǿ϶ʾ֮Ի춾֪֮Խν֪֮֮˶ν֮ˣν֪֮£֮ͬʿӣ֪֮Ȩ֮ͬΣʿӡȻɣ֮ӡνҾʤ
-
-֪ʤ壺֪ս벻սߣʤʶ֮ߣʤͬߣʤݴߣʤܶߣʤߣ֪ʤ֮Ҳ
-
-Ի֪֪ˣսO֪˶֪һʤһ֪˲֪ÿսذܡ
-
-
-Ի֮սߣȞ鲻ʤԴ֮ʤʤڼʤڵСսߣܞ鲻ʤʹбؿʤԻʤ֪ɞ顣
-
-ʤߣҲʤߣҲ㣬Nߣ춾ŵ֮£ƹߣ춾֮ϣԱȫʤҲ
-
-ʤ֪֮֮ҲսʤԻƣ֮Ҳʾ²Ŀ϶֮սߣʤʤҲս֮ʤҲ¹սʤ߯߯ߣʤʤѰҲսߣ춲֮أʧ֮Ҳǹʤʤսܱսʤñߣ޵ܞʤ֮
-
-һԻȣԻԻԻƣԻʤȣƣʤʤ愳㏣ܱ㏳愡ʤ֮սˮǧ֮GߣҲ
-
-
-ԻαιѣҲ綷ѣҲ֮ʹܵжްߣҲ֮ӣԴVͶߣʵҲ
-
-սߣϣʤƳߣأ罭նʼҲʱҲ壬֮䣬ʤҲɫ壬ɫ֮䣬ʤҲζ壬ζ֮䣬ʤҲսƣ֮䣬ʤҲѭ֮޶ˣ֮գ
-
-ˮ֮ƯʯߣҲv֮춻ߣҲǹսߣգڶ̡󣬽緢
-
-׷׼ҶҲ磬ԲɰҲΣ£ǿңҲӣҲǿҲƶߣ֮бش֮֮бȡ֮֮֮
-
-սߣ֮ƣˣ˶ơߣսҲתľʯľʯ֮ԣ򾲣Σ򶯣ֹԲСս֮ƣתԲʯǧ֮ɽߣҲ
-
-
-Իȴսضսضս͡
-
-սߣ˶ˡʹߣ֮Ҳʹ˲ߣ֮Ҳʵܼ֮֮֮ܶ⡣ǧߣ֮ҲȡߣҲضعߣҲ
-
-ƹߣв֪أߣв֪΢΢Σܞ֮˾ߣҲ˶׷ߣٶɼҲսòսߣؾҲҲս仭ض֮вսߣ֮Ҳ˶Σרз֡רһз֞ʮʮһҲұйѣԱߣ֮սԼӡս֮ز֪֪߶࣬߶࣬ս߹ӡʱǰѣǰѣҹѣѣѡߣҲߣʹ˱Ҳ֪ս֮أ֪ս֮գǧս֪ս֮أ֪սգܾңҲܾǰܾȺ󣬺ܾǰԶʮ֮Խ֮࣬ʤգԻʤɞҲ䱊ʹ޶ʲ֪֮ʧ֮ƣ֪֪֮֮֮֮أ֪֮N֮α֮Ρ䲻߲ܿıζʤ춱֪˽֪ʤ֮ΣĪ֪ʤ֮ΡսʤͣӦˮˮ֮бܸ߶£֮αʵ飻ˮضжʤʱ޳ƣˮ޳Ρб仯ȡʤߣν֮񡣹޳ʤʱ޳λж̳
-
-
-
-Ի ñ֮춾Ͼ۱ͶᣬĪ춾֮ߣ؞ֱԻ;֮˷ֱ֪֮ҲΣپ򲻼ίwؾ衣ǹʒԼ׶ҹУeȣƣߺ䷨ʮһʮϽ䷨ʮ֮ǹʾwʳίʲ֪֮ıߣԥ֪ɽ֡衢֮ߣо絼ߣܵõʱթԷֺ͞Ҳ伲磬֣𣬲ɽֱ֪طȨֱ֪֮ʤ˾֮ҲԻԲţʞ֮ģӲʞ֮졣ߣһ֮ĿҲרһ߲ö߲öˣñ֮Ҳҹսģս죬Ա֮ĿҲɶɶġǹʳ裬ĺ顣ñߣ飬ҲδңԾҲԽԶͣԱҲ֮죬޻֮£αҲñ֮򣬱棬ӣ𹥣ʳʦΧʦIȣñ֮Ҳ
-
-űڰ
-
-Ի ñ֮춾ϾۺϡᣬغϽΧıս;ɣܡʽͨ춾ű֮ߣ֪ñӣͨű֪֮Σܵõ֮ӣα֪ű֪֮֮ܵӡǹ֮ǣҲ춺ɽҲǹԺҵñ֮䲻Դ֮䲻ɹҲʽΣɱ²ٿ꣬裬ɷߣ֮Ҳñ֮ҲɱΣɲҲ
-
-оھ
-
-ԻУɽYߣս¡޵ǣ˴ɽ֮ҲˮԶˮ;ˮӭ֮ˮڣɶ֮սߣ޸ˮӭͣߣӭˮ˴ˮ֮ҲΨؽȥ춳֮Уˮݶ˴֮Ҳƽ½ףұߣǰ˴ƽ½֮Ҳľ֮Ƶ֮ʤĵҲø߶£ʵްټνʤ̷شұ֮˱֮֮Ҳˮߣ䶨Ҳо쾮Ρޡݡ϶ؽȥ֮ҲԶ֮н֮ӭ֮б֮衢꾮硢С֡[Cߣؽ֮˷֮ҲнߣҲԶսߣ֮ҲߣҲߣҲݶߣҲߣҲ޺ߣҲ߶ߣҲߣͽҲɢߣԒҲٶߣӪҲDZߣҲǿߣҲᳵȳߣҲԼߣıҲ߶±ߣҲߣҲȶߣҲߣҲߣҲߣҲҹߣҲߣҲ춯ߣҲŭߣҲɱʳߣҲIߣҲ׻׻⣬ߣʧҲߣҲߣҲȱη䱊ߣ֮ҲίлߣϢҲŭӭöϣֲȥؽ֮ǹҲΩԲϵȡ˶ѡΩǶ׵ߣˡδ׶֮򲻷á׸У򲻿áʺ֮ģ֮䣬νȡԽزԽ񲻷ߣ뱊Ҳ
-
-εʮ
-
-ԻͨߡВߡ֧ߡаߡߡԶߡҿ˿ԻͨͨߣȾӸսԷԻ졣ߣޱʤ֮бʤԷҳ˳Ի֧֧ߣң޳Ҳȥ֮а֮ߣȾ֮ӯ֮ԴСȾ֮ӯӣӯ֮ߣȾ֮ؾӸԴУȾ֮ȥ֮ҲԶߣƾսսߣ֮Ҳ֮ΣɲҲߡгߡߡбߡߡбߡߣ֣֮֮ҲƾһʮԻߣǿԻۣǿԻݣŭБս֪ܣԻϣ̵޳±ݺᣬԻңϵУٺϱǿѡ棬Իߣ֮Ҳ֮ΣɲҲߣ֮ҲϵʤհԶϽ֮Ҳ֪˶ս߱ʤ֪˶ս߱ذܡսʤԻսսҲսʤԻսսҲʽ˲ΨDZ֮ҲӤʿ֮Ϫ簮ӣʿ֮ʹҶΣƩӣҲ֪֮Ի֪֮ɻʤ֮Ҳ֪֮ɻ֪֮Իʤ֮Ҳ֪֮ɻ֪֮Ի֪֮սʤ֮Ҳ֪ߣԣٶԻ֪֪ʤ˲֪֪أʤ˿ȫ
-
-ŵصʮһ
-
-Իñ֮ɢأأأнأأصأзأΧأءսߣɢأ֮زߣأҵ˵ߣأҿ˿ߣ齻أ֮±ߣأ֮ضߣصأɽ֡衢󣬷֮ߣ鷺أ߰ӹأ˹ѿԻ֮ߣΧأս棬սߣءǹɢսֹ޹޾ϽصӣУΧıս֮ñߣʹǰ༰Ѳѣȣ²գ϶롣ֹʵб֮Իȶӡ֮٣֮ɲ֮Ҳ֮ר˲ˣҰʳͣ˱ı鲻ɲ⡣Ͷ֮Ҳɲãʿ˾ʿ򲻾壬̣У򶷡ǹ޶䣬ãԼףţȥɣ֮ʿNƣǶҲNǶҲ֮գʿմ齻ãͶ֮֮ҲñߣƩȻȻߣɽ֮ҲβββʱʹȻԻɡԽҲͬ۶ö磬Ҳ֡ǹʷ֣δҲһ֮ҲԵã֮ҲñߣЯʹһˣҲ֮£ģΣʿ֮Ŀʹ֪֮£ıʹʶӣ;ʹ񲻵ǡ˧֮ڣǸ߶ȥݣ˧֮֮أȺĪ֪֮֮Ͷ֮գν֮Ҳŵ֮䣬֮֮ɲҲ֮רdzɢȥԽʦߣҲijߣҲߣصҲdzߣҲǰߣΧҲߣҲǹɢὫһ־Ὣʹ֮Ὣ󣬽ὫأὫᣬὫѣصὫʳὫ;ΧὫIὫʾ֮Բʱ֮飺Χ򶷣ӡǹʲ֪֮ıߣԤ֪ɽ֡衢֮ߣо絼ܵõߣһ֪ǰ֮Ҳ֮䱊þۣ춵У佻úϡǹʲ֮֮Ȩż֮˽춵УǿɰΣġʩ޷֮֮ͣ֮ʹһˡ֮£ԣ֮ԺͶ֮Ȼ棬֮Ȼ춺Ȼܞʤܡʞ֮£˳֮⣬һǧɱνܳ¡ǹ֮գĹ۷ͨʹ֮ϣ¡˿Hؽ֮΢֮ڣīУԾս¡ǹʼ紦Ů˿ãвܡ
-
-𹥵ʮ
-
-Ի壺һԻˣԻԻwԻ⣬Իӡлؾߡʱաʱߣ֮ҲߣڻڡFҲߣ֮Ҳ𹥣֮Ӧ֮ڣӦ֮⣻𷢶ߣ𹥣ɴӶ֮ɴϡɷ⣬޴ڣʱ֮Ϸ磬޹·磬ãҹֹ֪֮䣬֮ԻˮǿˮԾԶᡣսʤȡ书ףԻԻ֮֮ǵòãΣսŭʦԑCսϡŭԸϲCԸ˵Ը棬߲Ը֮֮˰ȫ֮Ҳ
-
-üʮ
-
-Ի ʦʮ򣬳ǧ֮ѣ֮շǧɧ춵·òߣʮҡ꣬һ֮ʤ»ٽ𣬲֪֮ߣ֮Ҳ֮Ҳ֮Ҳʤ֮ҲͽԶʤˣɹ춱ߣ֪Ҳ֪ߣȡ춹񣬲£춶ȣȡˣ֪֮Ҳü壺䣬ڼ䣬з䣬䣬䡣Ī֪νͣ˾֮Ҳߣ˶֮ڼߣ˶֮ߣм֮ߣN⣬֪֮춵мҲߣҲ֮£Ī춼䣬Ī춼䣬Ī춼䣬ʥͲü䣬岻ʹ䣬΢ܵü֮ʵ΢΢գüҲδߣ߼֮֮֮ɱ֪ؽҡ]ߡߡ֪֮֮м֮ߣ֮֮ʷɵöҲǶ֪֮䡢ڼɵöʹҲǶ֪֮N£ʹУǶ֪֮ʹڡ֮£֪֪֮֮춷䣬ʷ䲻ɲҲ֮Ҳֿģ֮Ҳ󡣹ͽǞߣسɴ󹦡˱֮Ҫ֮ѶҲ
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt
deleted file mode 100644
index 375e1adb1..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt
+++ /dev/null
@@ -1,107 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/files/23864/23864-0.txt
-after converting from Traditional Chinese to Simplified Chinese.
---------
-始计第一
-
-孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。
-
-故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。
-
-道者,令民与上同意,可与之死,可与之生,而不畏危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知者不胜。
-
-故校之以计,而索其情,曰:主孰有道?将孰有能?天地孰得?法令孰行?兵眾孰强?士卒孰练?赏罚孰明?吾以此知胜负矣。
-
-将听吾计,用之必胜,留之;将不听吾计,用之必败,去之。
-
-计利以听,乃為之势,以佐其外。势者,因利而制权也。
-
-兵者,诡道也。故能而示之不能,用而示之不用,近而示之远,远而示之近。利而诱之,乱而取之,实而备之,强而避之,怒而挠之,卑而骄之,佚而劳之,亲而离之,攻其无备,出其不意。此兵家之胜,不可先传也。
-
-夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜,少算不胜,而况无算乎!吾以此观之,胜负见矣。
-
-作战第二
-
-孙子曰:凡用兵之法,驰车千駟,革车千乘,带甲十万,千里馈粮。则内外之费,宾客之用,胶漆之材,车甲之奉,日费千金,然后十万之师举矣。
-
-其用战也,贵胜,久则钝兵挫锐,攻城则力屈,久暴师则国用不足。夫钝兵挫锐,屈力殫货,则诸侯乘其弊而起,虽有智者,不能善其后矣。故兵闻拙速,未睹巧之久也。夫兵久而国利者,未之有也。故不尽知用兵之害者,则不能尽知用兵之利也。
-
-善用兵者,役不再籍,粮不三载,取用於国,因粮於敌,故军食可足也。国之贫於师者远输,远输则百姓贫;近於师者贵卖,贵卖则百姓竭,财竭则急於丘役。力屈财殫,中原内虚於家,百姓之费,十去其七;公家之费,破军罢马,甲胄矢弩,戟楯矛櫓,丘牛大车,十去其六。
-
-故智将务食於敌,食敌一钟,当吾二十钟;萁秆一石,当吾二十石。故杀敌者,怒也;取敌之利者,货也。故车战,得车十乘以上,赏其先得者,而更其旌旗。车杂而乘之,卒善而养之,是谓胜敌而益强。
-
-故兵贵胜,不贵久。故知兵之将,民之司命。国家安危之主也。
-
-谋攻第三
-
-孙子曰:凡用兵之法,全国為上,破国次之;全军為上,破军次之;全旅為上,破旅次之;全卒為上,破卒次之;全伍為上,破伍次之。是故百战百胜,非善之善者也;不战而屈人之兵,善之善者也。
-
-故上兵伐谋,其次伐交,其次伐兵,其下攻城。攻城之法,為不得已。修櫓轒轀,具器械,三月而后成;距闉,又三月而后已。将不胜其忿,而蚁附之,杀士三分之一,而城不拔者,此攻之灾也。
-
-故善用兵者,屈人之兵,而非战也,拔人之城而非攻也,毁人之国而非久也,必以全争於天下,故兵不顿而利可全,此谋攻之法也。
-
-故用兵之法,十则围之,五则攻之,倍则分之,敌则能战之,少则能逃之,不若则能避之。故小敌之坚,大敌之擒也。
-
-夫将者,国之辅也。辅周则国必强,辅隙则国必弱。故君之所以患於军者三:不知军之不可以进而谓之进,不知军之不可以退而谓之退,是谓縻军;不知三军之事,而同三军之政,则军士惑矣;不知三军之权,而同三军之任,则军士疑矣。三军既惑且疑,则诸侯之难至矣。是谓乱军引胜。
-
-故知胜有五:知可以战与不可以战者,胜。识眾寡之用者,胜。上下同欲者,胜。以虞待不虞者,胜。将能而君不御者,胜。此五者,知胜之道也。
-
-故曰:知己知彼,百战不貽;不知彼而知己,一胜一负;不知彼不知己,每战必败。
-
-军形第四
-
-孙子曰:昔之善战者,先為不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能為不可胜,不能使敌必可胜。故曰:胜可知,而不可為。
-
-不可胜者,守也;可胜者,攻也。守则不足,攻则有餘。善守者,藏於九地之下,善攻者,动於九天之上,故能自保而全胜也。
-
-见胜不过眾人之所知,非善之善者也;战胜而天下曰善,非善之善者也。故举秋毫不為多力,见日月不為明目,闻雷霆不為聪耳。古之善战者,胜於易胜者也。故善战者之胜也,无智名,无勇功,故其战胜不忒。不忒者,其所措必胜,胜已败者也。故善战者,先立於不败之地,而不失敌之败也。是故胜兵先胜,而后求战,败兵先战而后求胜。善用兵者,修道而保法,故能為胜败之政。
-
-兵法:一曰度,二曰量,三曰数,四曰称,五曰胜。地生度,度生量,量生数,数生称,称生胜。故胜兵若以鎰称銖,败兵若以銖称鎰。胜者之战,若决积水於千仞之谿者,形也。
-
-兵势第五
-
-孙子曰:凡治眾如治寡,分数是也;斗眾如斗寡,形名是也;三军之眾,可使必受敌而无败者,奇正是也;兵之所加,如以碫投卵者,虚实是也。
-
-凡战者,以正合,以奇胜。故善出奇者,无穷如天地,不竭如江海。终而复始,日月是也。死而復生,四时是也。声不过五,五声之变,不可胜听也;色不过五,五色之变,不可胜观也;味不过五,五味之变,不可胜尝也;战势,不过奇正,奇正之变,不可胜穷也。奇正相生,如循环之无端,熟能穷之哉?
-
-激水之疾,至於漂石者,势也;鷙鸟之疾,至於毁折者,节也。是故善战者,其势险,其节短。势如张弩,节如发机。
-
-纷纷紜紜,斗乱而不可乱也;浑浑沌沌,形圆而不可败也。乱生於治,怯生於勇,弱生於强。治乱,数也;勇怯,势也;强弱,形也。故善动敌者,形之,敌必从之;予之,敌必取之。以利动之,以卒待之。
-
-故善战者,求之於势,不责於人;故能择人而任势。任势者,其战人也,如转木石。木石之性,安则静,危则动,方则止,圆则行。故善战人之势,如转圆石於千仞之山者,势也。
-
-虚实第六
-
-孙子曰:凡先处战地而待敌者佚,后处战地而趋战者劳。
-
-故善战者,致人而不致於人。能使敌人自至者,利之也;能使敌人不得至者,害之也。故敌佚能劳之,饱能饥之,安能动之。出其所必趋,趋其所不意。行千里而不劳者,行於无人之地也;攻而必取者,攻其所不守也。守而必固者,守其所不攻也。
-
-故善攻者,敌不知其所守;善守者,敌不知其所攻。微乎微乎,至於无形;神乎神乎,至於无声,故能為敌之司命。进而不可御者,冲其虚也;退而不可追者,速而不可及也。故我欲战,敌虽高垒深沟,不得不与我战者,攻其所必救也;我不欲战,虽画地而守之,敌不得与我战者,乖其所之也。故形人而我无形,则我专而敌分。我专為一,敌分為十,是以十攻其一也。则我眾敌寡,能以眾击寡者,则吾之所与战者约矣。吾所与战之地不可知,不可知则敌所备者多,敌所备者多,则吾所与战者寡矣。故备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。寡者,备人者也;眾者,使人备己者也。故知战之地,知战之日,则可千里而会战;不知战之地,不知战日,则左不能救右,右不能救左,前不能救后,后不能救前,而况远者数十里,近者数里乎!以吾度之,越人之兵虽多,亦奚益於胜哉!故曰:胜可為也。敌虽眾,可使无斗。故策之而知得失之计,候之而知动静之理,形之而知死生之地,角之而知有餘不足之处。故形兵之极,至於无形。无形则深间不能窥,智者不能谋。因形而措胜於眾,眾不能知。人皆知我所以胜之形,而莫知吾所以制胜之形。故其战胜不復,而应形於无穷。夫兵形象水,水之行避高而趋下,兵之形避实而击虚;水因地而制流,兵因敌而制胜。故兵无常势,水无常形。能因敌变化而取胜者,谓之神。故五行无常胜,四时无常位,日有短长,月有死生。
-
-军争第七
-
-孙子曰: 凡用兵之法,将受命於君,合军聚眾,交和而舍,莫难於军争。军争之难者,以迂為直,以患為利。故迂其途,而诱之以利,后人发,先人至,此知迂直之计者也。军争為利,军争為危。举军而争利则不及,委军而争利则輜重捐。是故捲甲而趋,日夜不处,倍道兼行,百裡而争利,则擒三将军,劲者先,疲者后,其法十一而至;五十里而争利,则蹶上将军,其法半至;三十里而争利,则三分之二至。是故军无輜重则亡,无粮食则亡,无委积则亡。故不知诸侯之谋者,不能豫交;不知山林、险阻、沮泽之形者,不能行军;不用乡导者,不能得地利。故兵以诈立,以利动,以分和為变者也。故其疾如风,其徐如林,侵掠如火,不动如山,难知如阴,动如雷震。掠乡分眾,廓地分利,悬权而动。先知迂直之计者胜,此军争之法也。《军政》曰:“言不相闻,故為之金鼓;视不相见,故為之旌旗。”夫金鼓旌旗者,所以一民之耳目也。民既专一,则勇者不得独进,怯者不得独退,此用眾之法也。故夜战多金鼓,昼战多旌旗,所以变人之耳目也。三军可夺气,将军可夺心。是故朝气锐,昼气惰,暮气归。善用兵者,避其锐气,击其惰归,此治气者也。以治待乱,以静待哗,此治心者也。以近待远,以佚待劳,以饱待饥,此治力者也。无邀正正之旗,无击堂堂之陈,此治变者也。故用兵之法,高陵勿向,背丘勿逆,佯北勿从,锐卒勿攻,饵兵勿食,归师勿遏,围师遗闕,穷寇勿迫,此用兵之法也。
-
-九变第八
-
-孙子曰: 凡用兵之法,将受命於君,合军聚合。泛地无舍,衢地合交,绝地无留,围地则谋,死地则战,途有所不由,军有所不击,城有所不攻,地有所不争,君命有所不受。故将通於九变之利者,知用兵矣;将不通九变之利,虽知地形,不能得地之利矣;治兵不知九变之术,虽知五利,不能得人之用矣。是故智者之虑,必杂於利害,杂於利而务可信也,杂於害而患可解也。是故屈诸侯者以害,役诸侯者以业,趋诸侯者以利。故用兵之法,无恃其不来,恃吾有以待之;无恃其不攻,恃吾有所不可攻也。故将有五危,必死可杀,必生可虏,忿速可侮,廉洁可辱,爱民可烦。凡此五者,将之过也,用兵之灾也。覆军杀将,必以五危,不可不察也。
-
-行军第九
-
-孙子曰:凡处军相敌,绝山依穀,视生处高,战隆无登,此处山之军也。绝水必远水,客绝水而来,勿迎之於水内,令半渡而击之利,欲战者,无附於水而迎客,视生处高,无迎水流,此处水上之军也。绝斥泽,唯亟去无留,若交军於斥泽之中,必依水草而背眾树,此处斥泽之军也。平陆处易,右背高,前死后生,此处平陆之军也。凡此四军之利,黄帝之所以胜四帝也。凡军好高而恶下,贵阳而贱阴,养生而处实,军无百疾,是谓必胜。丘陵堤防,必处其阳而右背之,此兵之利,地之助也。上雨水流至,欲涉者,待其定也。凡地有绝涧、天井、天牢、天罗、天陷、天隙,必亟去之,勿近也。吾远之,敌近之;吾迎之,敌背之。军旁有险阻、潢井、蒹葭、小林、蘙薈者,必谨覆索之,此伏姦之所处也。敌近而静者,恃其险也;远而挑战者,欲人之进也;其所居易者,利也;眾树动者,来也;眾草多障者,疑也;鸟起者,伏也;兽骇者,覆也;尘高而锐者,车来也;卑而广者,徒来也;散而条达者,樵採也;少而往来者,营军也;辞卑而备者,进也;辞强而进驱者,退也;轻车先出居其侧者,陈也;无约而请和者,谋也;奔走而陈兵者,期也;半进半退者,诱也;杖而立者,饥也;汲而先饮者,渴也;见利而不进者,劳也;鸟集者,虚也;夜呼者,恐也;军扰者,将不重也;旌旗动者,乱也;吏怒者,倦也;杀马肉食者,军无粮也;悬甀不返其舍者,穷寇也;谆谆翕翕,徐与人言者,失眾也;数赏者,窘也;数罚者,困也;先暴而后畏其眾者,不精之至也;来委谢者,欲休息也。兵怒而相迎,久而不合,又不相去,必谨察之。兵非贵益多也,惟无武进,足以并力料敌取人而已。夫惟无虑而易敌者,必擒於人。卒未亲而罚之,则不服,不服则难用。卒已亲附而罚不行,则不可用。故合之以文,齐之以武,是谓必取。令素行以教其民,则民服;令素不行以教其民,则民不服。令素行者,与眾相得也。
-
-地形第十
-
-孙子曰:地形有通者、有掛者、有支者、有隘者、有险者、有远者。我可以往,彼可以来,曰通。通形者,先居高阳,利粮道,以战则利。可以往,难以返,曰掛。掛形者,敌无备,出而胜之,敌若有备,出而不胜,难以返,不利。我出而不利,彼出而不利,曰支。支形者,敌虽利我,我无出也,引而去之,令敌半出而击之利。隘形者,我先居之,必盈之以待敌。若敌先居之,盈而勿从,不盈而从之。险形者,我先居之,必居高阳以待敌;若敌先居之,引而去之,勿从也。远形者,势均难以挑战,战而不利。凡此六者,地之道也,将之至任,不可不察也。凡兵有走者、有驰者、有陷者、有崩者、有乱者、有北者。凡此六者,非天地之灾,将之过也。夫势均,以一击十,曰走;卒强吏弱,曰驰;吏强卒弱,曰陷;大吏怒而不服,遇敌懟而自战,将不知其能,曰崩;将弱不严,教道不明,吏卒无常,陈兵纵横,曰乱;将不能料敌,以少合眾,以弱击强,兵无选锋,曰北。凡此六者,败之道也,将之至任,不可不察也。夫地形者,兵之助也。料敌制胜,计险隘远近,上将之道也。知此而用战者必胜,不知此而用战者必败。故战道必胜,主曰无战,必战可也;战道不胜,主曰必战,无战可也。故进不求名,退不避罪,唯民是保,而利於主,国之宝也。视卒如婴儿,故可以与之赴深溪;视卒如爱子,故可与之俱死。厚而不能使,爱而不能令,乱而不能治,譬若骄子,不可用也。知吾卒之可以击,而不知敌之不可击,胜之半也;知敌之可击,而不知吾卒之不可以击,胜之半也;知敌之可击,知吾卒之可以击,而不知地形之不可以战,胜之半也。故知兵者,动而不迷,举而不穷。故曰:知彼知己,胜乃不殆;知天知地,胜乃可全。
-
-九地第十一
-
-孙子曰:用兵之法,有散地,有轻地,有争地,有交地,有衢地,有重地,有泛地,有围地,有死地。诸侯自战其地者,為散地;入人之地不深者,為轻地;我得亦利,彼得亦利者,為争地;我可以往,彼可以来者,為交地;诸侯之地三属,先至而得天下眾者,為衢地;入人之地深,背城邑多者,為重地;山林、险阻、沮泽,凡难行之道者,為泛地;所由入者隘,所从归者迂,彼寡可以击吾之眾者,為围地;疾战则存,不疾战则亡者,為死地。是故散地则无战,轻地则无止,争地则无攻,交地则无绝,衢地则合交,重地则掠,泛地则行,围地则谋,死地则战。古之善用兵者,能使敌人前后不相及,眾寡不相恃,贵贱不相救,上下不相收,卒离而不集,兵合而不齐。合於利而动,不合於利而止。敢问敌眾而整将来,待之若何曰:先夺其所爱则听矣。兵之情主速,乘人之不及。由不虞之道,攻其所不戒也。凡為客之道,深入则专。主人不克,掠於饶野,三军足食。谨养而勿劳,并气积力,运兵计谋,為不可测。投之无所往,死且不北。死焉不得,士人尽力。兵士甚陷则不惧,无所往则固,深入则拘,不得已则斗。是故其兵不修而戒,不求而得,不约而亲,不令而信,禁祥去疑,至死无所之。吾士无餘财,非恶货也;无餘命,非恶寿也。令发之日,士卒坐者涕沾襟,偃卧者涕交颐,投之无所往,诸、劌之勇也。故善用兵者,譬如率然。率然者,常山之蛇也。击其首则尾至,击其尾则首至,击其中则首尾俱至。敢问兵可使如率然乎?曰可。夫吴人与越人相恶也,当其同舟而济而遇风,其相救也如左右手。是故方马埋轮,未足恃也;齐勇如一,政之道也;刚柔皆得,地之理也。故善用兵者,携手若使一人,不得已也。将军之事,静以幽,正以治,能愚士卒之耳目,使之无知;易其事,革其谋,使人无识;易其居,迂其途,使民不得虑。帅与之期,如登高而去其梯;帅与之深入诸侯之地,而发其机。若驱群羊,驱而往,驱而来,莫知所之。聚三军之眾,投之於险,此谓将军之事也。九地之变,屈伸之力,人情之理,不可不察也。凡為客之道,深则专,浅则散。去国越境而师者,绝地也;四彻者,衢地也;入深者,重地也;入浅者,轻地也;背固前隘者,围地也;无所往者,死地也。是故散地吾将一其志,轻地吾将使之属,争地吾将趋其后,交地吾将谨其守,交地吾将固其结,衢地吾将谨其恃,重地吾将继其食,泛地吾将进其途,围地吾将塞其闕,死地吾将示之以不活。故兵之情:围则御,不得已则斗,过则从。是故不知诸侯之谋者,不能预交;不知山林、险阻、沮泽之形者,不能行军;不用乡导,不能得地利。四五者,一不知,非霸王之兵也。夫霸王之兵,伐大国,则其眾不得聚;威加於敌,则其交不得合。是故不争天下之交,不养天下之权,信己之私,威加於敌,则其城可拔,其国可隳。施无法之赏,悬无政之令。犯三军之眾,若使一人。犯之以事,勿告以言;犯之以害,勿告以利。投之亡地然后存,陷之死地然后生。夫眾陷於害,然后能為胜败。故為兵之事,在顺详敌之意,并敌一向,千里杀将,是谓巧能成事。是故政举之日,夷关折符,无通其使,厉於廊庙之上,以诛其事。敌人开闔,必亟入之,先其所爱,微与之期,践墨随敌,以决战事。是故始如处女,敌人开户;后如脱兔,敌不及拒。
-
-火攻第十二
-
-孙子曰:凡火攻有五:一曰火人,二曰火积,三曰火輜,四曰火库,五曰火队。行火必有因,因必素具。发火有时,起火有日。时者,天之燥也。日者,月在箕、壁、翼、軫也。凡此四宿者,风起之日也。凡火攻,必因五火之变而应之:火发於内,则早应之於外;火发而其兵静者,待而勿攻,极其火力,可从而从之,不可从则上。火可发於外,无待於内,以时发之,火发上风,无攻下风,昼风久,夜风止。凡军必知五火之变,以数守之。故以火佐攻者明,以水佐攻者强。水可以绝,不可以夺。夫战胜攻取而不惰其功者凶,命曰“费留”。故曰:明主虑之,良将惰之,非利不动,非得不用,非危不战。主不可以怒而兴师,将不可以慍而攻战。合於利而动,不合於利而上。怒可以复喜,慍可以复说,亡国不可以复存,死者不可以复生。故明主慎之,良将警之。此安国全军之道也。
-
-用间第十三
-
-孙子曰: 凡兴师十万,出征千里,百姓之费,公家之奉,日费千金,内外骚动,怠於道路,不得操事者,七十万家。相守数年,以争一日之胜,而爱爵禄百金,不知敌之情者,不仁之至也,非民之将也,非主之佐也,非胜之主也。故明君贤将所以动而胜人,成功出於眾者,先知也。先知者,不可取於鬼神,不可象於事,不可验於度,必取於人,知敌之情者也。故用间有五:有因间,有内间,有反间,有死间,有生间。五间俱起,莫知其道,是谓神纪,人君之宝也。乡间者,因其乡人而用之;内间者,因其官人而用之;反间者,因其敌间而用之;死间者,為誑事於外,令吾闻知之而传於敌间也;生间者,反报也。故三军之事,莫亲於间,赏莫厚於间,事莫密於间,非圣贤不能用间,非仁义不能使间,非微妙不能得间之实。微哉微哉!无所不用间也。间事未发而先闻者,间与所告者兼死。凡军之所欲击,城之所欲攻,人之所欲杀,必先知其守将、左右、謁者、门者、舍人之姓名,令吾间必索知之。敌间之来间我者,因而利之,导而舍之,故反间可得而用也;因是而知之,故乡间、内间可得而使也;因是而知之,故死间為誑事,可使告敌;因是而知之,故生间可使如期。五间之事,主必知之,知之必在於反间,故反间不可不厚也。昔殷之兴也,伊挚在夏;周之兴也,吕牙在殷。故明君贤将,能以上智為间者,必成大功。此兵之要,三军之所恃而动也。
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt
deleted file mode 100644
index 1918c8fa9..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt
+++ /dev/null
@@ -1,106 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/files/23864/23864-0.txt
---------
-lpĤ@
-
-]lGL̡AꤧjơAͤaAs`DAi]C
-
-GgHơAդHpAӯ䱡G@DAGѡATaA|NAkC
-
-D̡AOPWPNAiPAiP͡AӤȦM]FѪ̡ABHBɨ]Fa̡ABIBsUBͤ]FN̡ABHBBiBY]Fk̡ABxDBDΤ]CZ̡ANDA̳ӡA̤ӡC
-
-GդHpAӯ䱡AGDEDHNEHѦaEoHkOEHLEjHhEmH@EH^HӭtoC
-
-Nť^pAΤӡAdFNť^pAΤѡAhC
-
-pQHťADաAH~Cժ̡A]QӨv]C
-
-L̡A޹D]CGӥܤAΦӥܤΡAӥܤAӥܤCQӻAæӨAӳƤAjפAӼAźAHӳҤA˦ALơAX䤣NCLaӡAiǤ]C
-
-ҥԦӼqӪ̡Aoh]FԦӼq⤣Ӫ̡Ao֤]ChӡAֺ⤣ӡAӪpLGI^H[AӭtoC
-
-@ԲĤG
-
-]lGZΧLkAdoAdAaҤQUAdX³Ch~OAȤΡAAҤ^AOdAMQUv|oC
-
-ξԤ]AQӡA[hwLUA𫰫hO}A[ɮvhΤCҶwLUA}OfAhѫJӰ_A̡AൽoCGLDtA@[]CҧL[ӰQ̡A]CGɪΧL`̡AhɪΧLQ]C
-
-ΧL̡AФAyA³TAΩA]³ġAGxi]Cꤧhv̻AhʩmhFv̶QAQhʩmܡA]ܫhCСCO}]A줺aAʩmOAQhCFaOA}x}AҭHکAurACjAQh䤻C
-
-GNȭġAĤ@A^GQFmz@ۡA^GQۡCGĪ̡A]FĤQ̡Af]CGԡAoQHWAo̡AӧܺXCӭA򵽦ӾiAO׳ӼĦӯqjC
-
-GLQӡAQ[CGLNAqRCawMD]C
-
-ѧĤT
-
-]lGZΧLkAꬰWA}ꦸFxWA}xFȬWA}ȦF򬰤WA}򦸤FWA}COGʾԦʳӡAD̤]FԦө}HLA̤]C
-
-GWLѡA䦸A䦸LAU𫰡C𫰤kAowCrVA㾹ATӫᦨFZASTӫwCNӨAƪAhT@Aӫު̡A𤧨a]C
-
-GΧL̡A}HLAӫDԤ]AޤHӫD]AHӫD[]AHѤUAGLyӧQiAѧ𤧪k]C
-
-GΧLkAQh򤧡Ah𤧡AhAīhԤA֫hkAYhפCGpĤAjĤ]C
-
-ұN̡Aꤧ]CPhꥲjAثhꥲzCGgҥHwx̤TGxiHiӿפiAxiHhӿפhAOݭxFTxơAӦPTxFAhxhboFTxvAӦPTxAhxhèoCTxJbBáAhѫJܨoCO׶íx޳ӡC
-
-GӦGiHԻPiHԪ̡AӡCѲ褧Ϊ̡AӡCWUP̡AӡCHݤ̡AӡCNӧgs̡AӡC̡AӤD]C
-
-GGvAʾԤMFӪvA@Ӥ@tFvACԥѡC
-
-xβĥ|
-
-]lGԪ̡AiӡAHݼĤiӡCiӦbvAiӦbġCGԪ̡AରiӡAϼĥiӡCGGӥiAӤiC
-
-iӪ̡Au]FiӪ̡A]CuhAhlCu̡AéEaUA̡AʩEѤWAG۫OӥӤ]C
-
-ӤLHҪAD̤]FԳӦӤѤU굽AD̤]CG|@hOA뤣ءADp^oաCjԪ̡AөӪ̤]CGԪ̤Ӥ]ALWALi\AGԳӤ֡C̡֪AұӡAӤwѪ̤]CGԪ̡Aߩ󤣱ѤaAӤĤѤ]COGӧLӡAӫDԡAѧLԦӫDӡCΧL̡A׹DӫOkAGରӱѤFC
-
-LkG@סAGqATơA|١AӡCaͫסAץͶqAqͼơAƥͺ١A٥ͳӡCGӧLYHٻˡAѧLYH˺CӪ̤ԡAYMndQƪ̡AΤ]C
-
-LղĤ
-
-]lGZvpvAƬO]FpAΦWO]FTxAiϥĦӵLѪ̡A_O]FLҥ[ApHZ̡AO]C
-
-ZԪ̡AHXAH_ӡCGX_̡ALapѦaAܦpCצӽƩlAO]CӴ_͡A|ɬO]CnLAnܡAiť]F⤣LA⤧ܡAi[]FLAܡAiӹ]FԶաAL_A_ܡAiӽa]C_ۥ͡Ap`LݡAavH
-
-EeAܩ}̡۪Aդ]FeAܩ󷴧̡A`]COGԪ̡AIA`uCզpiA`poC
-
-ɯɯƯơAæӤiä]FPPAζӤiѤ]CåͩvAĥͩiAzͩjCváAƤ]FiġAդ]FjzAΤ]CGʼĪ̡AΤAĥqFAĥCHQʤAHݤC
-
-GԪ̡ADաAdHFGܤHӥաCժ̡AԤH]ApۡCۤʡAwhRAMhʡAhAhCGԤHաAp۩dQs̡Aդ]C
-
-
-]lGZBԦaӫݼĪ̧HABԦa;Ԫ̳ҡC
-
-GԪ̡APHӤPHCϼĤHۦܪ̡AQ]FϼĤHoܪ̡A`]CGħHҤAȤAwʤCXҥ͡AͨҤNCdӤҪ̡ALHa]Fӥ̡AҤu]CuӥT̡AuҤ]C
-
-G̡AĤҦuFu̡AĤҧCLGLGAܩLΡFGGAܩLnAGରĤqRCiӤim̡AR]FhӤil̡AtӤiΤ]CGڱԡAS`AoPھԪ̡AҥϤ]FڤԡAeaӦuAĤoPھԪ̡AĨҤ]CGΤHӧڵLΡAhڱMӼĤCڱM@AĤQAOHQ@]ChڲĹAH̡Ah^һPԪ̬oC^һPԤaiAihĩҳƪ̦hAĩҳƪ̦hAh^һPԪ̹oCGƫehAƫheAƥhkAƥkhALҤơAhLҤC̡AƤH̤]F̡AϤHƤv̤]CGԤaAԤAhidӷ|ԡFԤaAԤAhϥkAkϥAeϫAᤣϫeAӪp̼ƤQءA̼إGIH^פAVHLhAOqӫvIGGӥi]CAiϵLCGӪopAԤӪRzAΤӪͤaAӪlBCGΧLAܩLΡCLΫh`sA̤ѡC]Φӱө󲳡AાCHҪکҥHӤΡAӲ^ҥHӤΡCGԳӤ_AΩLaCҧLζHAװͤUAL׹F]aӨyAL]ĦӨӡCGLL`աAL`ΡC]ܤƦӨӪ̡AפCGL`ӡA|ɵL`A馳uA릳͡C
-
-xĤC
-
-]lG ZΧLkANRgAXxEAMӪ١AxCx̡AHAHwQCG~AӻHQAHoAHܡAp̤]CxQAxMC|xӪQhΡAexӪQhCOGҦ͡A]BADݦAʸ̦ӪQAhTNxAl̥Ah̫AkQ@ӦܡFQئӪQAhݤWNxAkbܡFTQئӪQAhTGܡCOGxLh`AL³h`ALenh`CGѫJѪ̡AݥFsLBIBqAΪ̡AxFζmɪ̡AoaQCGLHBߡAHQʡAHMܪ̤]CGepA}pLAIpAʦpsApAʦpp_CmAaQAavӰʡCp̳ӡAxk]CmxFnGۻDAGFۨAGܺXCҪܺX̡AҥH@եؤ]CJM@Ahi̤oWiAĪ̤oWhAβk]CG]ԦhA޾ԦhܺXAҥHܤHեؤ]CTxiܮANxiܤߡCOG®UAޮkAǮkCΧL̡AרUAkkAv̤]CHvݶáAHRݼMAvߪ̤]CHݻAHHݳҡAHȡAvO̤]CLܥXAL󤧳Avܪ̤]CGΧLkAŦVAICŰfA˥_űqAUŧALŭAkvŹKAvAaFŭAΧLk]C
-
-EܲĤK
-
-]lG ZΧLkANRgAXxEXCxaL١AaXAaLdAahѡAahԡA~ҤѡAxҤAҤAaҤAgRҤCGNqEܤQ̡AΧLoFNqEܤQAaΡAoaQoFvLEܤNAQAoHΨoCOG̤{AQ`AQӰȥiH]A`ӱwiѤ]COG}ѫJ̥H`AнѫJ̥H~AͽѫJ̥HQCGΧLkAL䤣ӡA^HݤFL䤣A^Ҥi]CGNMAiAͥiAtiVAGidARiСCZ̡ANL]AΧLa]CЭxNAHMAi]C
-
-xĤE
-
-]lGZBxۼġAs̽\AͳBAԶLnABsx]CAȵӨӡAŪ蠟AObQAԪ̡ALӪȡAͳBALyABWx]CAA߫EhLdAYx󥸿AA̤ӭIABAx]CBAkIAe͡ABx]CZ|xQAҤҥHӥ|Ҥ]CZxnӴcUAQӽ⳱AiͦӳBAxLʯeAOץӡCCAB䶧ӥkIALQAaU]CWByܡAA̡Aݨw]CZaBѤBѨcBùBѳBѻءAEhAŪ]C^AĪ񤧡F^蠟AĭICxǦIBCB㶸BpLBP̡AЯAҳB]CĪR̡AI]FӬDԪ̡AHi]Fҩ~̡AQ]Fʪ̡AӤ]Fh٪̡Aä]F_̡A]F~b̡AФ]FаӾU̡AӤ]FӼs̡A{Ӥ]FӱF̡AĤ]F֦өӪ̡Ax]Fӳƪ̡Ai]FjӶiX̡Ah]FX~䰼̡A]FLӽЩM̡AѤ]FbӳL̡A]Fbibh̡A]Fӥߪ̡AȤ]FVӥ̡A]FQӤi̡AҤ]F̡A]F]I̡A]FxZ̡AN]FܺXʪ̡Aä]FO̡A¤]F׭̡AxL³]Faդ٪̡AaF]FνεA}PH̡A]Fƽ̡A~]Fƻ@̡Ax]FɦӫȨ䲳̡A뤧ܤ]Fөeª̡A𮧤]CLӬ۪A[ӤXASۥhAԹCLDQqh]ALZiAHäOƼĨHӤwCұL{өĪ̡AHC򥼿˦ӻ@AhAAAhΡCw˪ӻ@AhiΡCGXHAHZAOץCOHШAhAFOHШAhACO̡AP۱o]C
-
-aβĤQ
-
-]lGaΦq̡B̡B̡Bi̡BI̡B̡CڥiHAiHӡAqCqΪ̡A~AQ³DAHԫhQCiHAHA걾CΪ̡AĵLơAXӳӤAĭYơAXӤӡAHAQCڥXӤQAXӤQACΪ̡AQڡAڵLX]AަӥhAOĥbXQCiΪ̡Aڥ~AդHݼġCYĥ~AզӤűqAզӱqCIΪ̡Aڥ~A~HݼġFYĥ~AަӥhAűq]CΪ̡AէHDԡAԦӤQCZ̡AaD]ANܥAi]CZL̡B̡B̡BY̡Bê̡B_̡CZ̡ADѦaaANL]CҶէAH@QAꨫFjOzA깣FOjzA곴FjOӤAAJȦӦ۾ԡANAYFNzYAйDAOL`ALaAáFNƼġAH֦XAHzjALLWA_CZ̡AѤD]ANܥAi]CҦaΪ̡ALU]CƼĨӡApIiAWND]CӥξԪ̥ӡAӥξԪ̥ѡCGԹDӡADLԡAԥi]FԹDӡADꥲԡALԥi]CGiDWAh׸oAߥOOAӧQDAꤧ_]CpAGiHPu`ˡFpRlAGiPѦCpӤϡARӤOAæӤvAĴYźlAiΤ]C^򤧥iHAӤĤiAӤb]FĤiAӤ^򤧤iHAӤb]FĤiA^򤧥iHAӤaΤiHԡAӤb]CGL̡AʦӤgA|ӤaCGGvAӤDpFѪaAӤDiC
-
-EaĤQ@
-
-]lGΧLkAaAaAaAaAaAaAxaAaAaCѫJ۾Ԩa̡AaFJHa`̡AaFڱoQAoQ̡AaFڥiHAiHӪ̡AaFѫJaTݡAܦӱoѤU̡AaFJHa`AIh̡AaFsLBIBqAAZ椧D̡AxaFҥѤJ̹iAұqk̨AiH^̡AaFeԫhsAeԫh`̡AaCOGahLԡAahLAahLAahLAahXAahAxahAahѡAahԡCjΧL̡AϼĤHeᤣۤΡA褣۫AQ⤣۱ϡAWUۦAӤALXӤCXQӰʡAXQӤCݼIJӾNӡAݤYGܨҷRhťoCLDtAHΡCѤDAҤ٤]CZȤDA`JhMCDHJAdzATxCԾiӤųҡAînOABLpѡAiC뤧LҩAB_CjoAhHɤOCLhƳhߡALҩhTA`JhAowhCOGLצӧ١ADӱoAӿˡAOӫHATháAܦLҤC^hLl]ADcf]FLlRADcؤ]COoAh򧤪̮g̡Aת̮[A뤧LҩAѡB󤧫i]CGΧL̡AĴpvMCvM̡A`sD]C䭺hܡAhܡA䤤hѦܡCݧLiϦpvMGHiCҧdHPVH۴c]AP٦ӹJA۱Ϥ]pkCOG谨IA]Fip@AFD]FXұoAaz]CGΧL̡AYϤ@HAow]CNxơARHաAHvAMh򤧦եءAϤLFơAѡAϤHLѡF~A~Aϥo{CӻPApnӥhFӻP`JѫJaAӵoCYXsϡAXөAXӨӡAҤCETxA뤧IAױNxƤ]CEaܡA}OAHzAi]CZȤDA`hMALhChVҦӮv̡Aa]F|̡Aa]FJ`̡Aa]FJL̡Aa]FITei̡Aa]FLҩ̡Aa]COGa^N@ӡAa^NϤݡAa^NͨAa^NԨuAa^NT䵲Aa^NԨAa^N~䭹Axa^Ni~Aa^NAa^NܤHCGLGhmAowhALhqCOGѫJѪ̡AwFsLBIBqAΪ̡AxFζmɡAoaQC|̡A@ADQL]CQLAjAh䲳oEF¥[ġAh椣oXCOGѤUAiѤUvAHvpA¥[ġAh䫰iޡAioCILkAaLFOCǤTxAYϤ@HCǤHơAŧiHFǤH`AŧiHQC뤧`aMsAaM͡CҲ`AMରӱѡCGLơAbԼĤNAüĤ@VAdNAOץনơCOGF|AišALqϡAFYqWAHݨơCĤH}AEJAҷRALPAHġAHMԨơCOGlpBkAĤH}FpߡAĤΩڡC
-
-ĤQG
-
-]lGZ𦳤G@HAGnATA|wAC]A]CoɡA_Cɪ̡AѤ]C̡AbߡBBlBH]CZ|J̡A_]CZA]ܦGo󤺡Ah~FoӨLR̡AݦӤŧAOAiqӱqAiqhWCio~ALݩ󤺡AHɵoAoWALUAޭ[A]CZxܡAHƦuCGH̩AH̱jCiHAiHܡCҾԳӧӤk\̤ARꡧOdCGGD{A}NkADQʡADoΡADMԡCDiHӿvANiHYӧԡCXQӰʡAXQӤWCiHƳߡAYiHƻA`ꤣiHƦsA̤iHƥ͡CGDVA}NĵCwxD]C
-
-ζĤQT
-
-]lG ZvQUAXdAʩmOAa^AOdA~̰ʡADAoިƪ̡ACQUaCۦuƦ~AH@餧ӡAӷRSʪAĤ̡Aܤ]ADN]ADD]ADӤD]CGgNҥHʦӳӤHA\X󲳪̡A]C̡Ai󰭯AiHơAiסAHAĤ̤]CGζG]AA϶AAͶCѰ_ADAOׯAHg_]Cm̡A]mHӥΤF̡A]xHӥΤF϶̡A]ĶӥΤF̡AƩ~AO^DӶǩĶ]FͶ̡Aϳ]CGTxơA˩󶡡Ap󶡡AƲK󶡡ADt夣ζADq϶ADLoCLvLvILҤζ]CƥoӥD̡APҧi̭ݦCZxұAұAHұAuNBkB̡֪B̡B٤HmWAO^CĶӶڪ̡A]ӧQAɦӪ٤AG϶ioӥΤ]F]OӪAGmBioӨϤ]F]OӪAGơAiϧiġF]OӪAGͶiϦpCơADAb϶AG϶ip]C蠟]A켰bLFP]AfbCGgNAHW̡Aj\CLnATxҫӰʤ]C
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt
deleted file mode 100644
index 5797b374a..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt
+++ /dev/null
@@ -1,106 +0,0 @@
-This file was derived from
-http://www.gutenberg.org/files/23864/23864-0.txt
---------
-始計第一
-
-孫子曰:兵者,國之大事,死生之地,存亡之道,不可不察也。
-
-故經之以五事,校之以計,而索其情:一曰道,二曰天,三曰地,四曰將,五曰法。
-
-道者,令民與上同意,可與之死,可與之生,而不畏危也;天者,陰陽、寒暑、時制也;地者,遠近、險易、廣狹、死生也;將者,智、信、仁、勇、嚴也;法者,曲制、官道、主用也。凡此五者,將莫不聞,知之者勝,不知者不勝。
-
-故校之以計,而索其情,曰:主孰有道?將孰有能?天地孰得?法令孰行?兵眾孰強?士卒孰練?賞罰孰明?吾以此知勝負矣。
-
-將聽吾計,用之必勝,留之;將不聽吾計,用之必敗,去之。
-
-計利以聽,乃為之勢,以佐其外。勢者,因利而制權也。
-
-兵者,詭道也。故能而示之不能,用而示之不用,近而示之遠,遠而示之近。利而誘之,亂而取之,實而備之,強而避之,怒而撓之,卑而驕之,佚而勞之,親而離之,攻其無備,出其不意。此兵家之勝,不可先傳也。
-
-夫未戰而廟算勝者,得算多也;未戰而廟算不勝者,得算少也。多算勝,少算不勝,而況無算乎!吾以此觀之,勝負見矣。
-
-作戰第二
-
-孫子曰:凡用兵之法,馳車千駟,革車千乘,帶甲十萬,千里饋糧。則內外之費,賓客之用,膠漆之材,車甲之奉,日費千金,然後十萬之師舉矣。
-
-其用戰也,貴勝,久則鈍兵挫銳,攻城則力屈,久暴師則國用不足。夫鈍兵挫銳,屈力殫貨,則諸侯乘其弊而起,雖有智者,不能善其後矣。故兵聞拙速,未睹巧之久也。夫兵久而國利者,未之有也。故不盡知用兵之害者,則不能盡知用兵之利也。
-
-善用兵者,役不再籍,糧不三載,取用於國,因糧於敵,故軍食可足也。國之貧於師者遠輸,遠輸則百姓貧;近於師者貴賣,貴賣則百姓竭,財竭則急於丘役。力屈財殫,中原內虛於家,百姓之費,十去其七;公家之費,破軍罷馬,甲胄矢弩,戟楯矛櫓,丘牛大車,十去其六。
-
-故智將務食於敵,食敵一鍾,當吾二十鍾;萁稈一石,當吾二十石。故殺敵者,怒也;取敵之利者,貨也。故車戰,得車十乘以上,賞其先得者,而更其旌旗。車雜而乘之,卒善而養之,是謂勝敵而益強。
-
-故兵貴勝,不貴久。故知兵之將,民之司命。國家安危之主也。
-
-謀攻第三
-
-孫子曰:凡用兵之法,全國為上,破國次之;全軍為上,破軍次之;全旅為上,破旅次之;全卒為上,破卒次之;全伍為上,破伍次之。是故百戰百勝,非善之善者也;不戰而屈人之兵,善之善者也。
-
-故上兵伐謀,其次伐交,其次伐兵,其下攻城。攻城之法,為不得已。修櫓轒轀,具器械,三月而後成;距闉,又三月而後已。將不勝其忿,而蟻附之,殺士三分之一,而城不拔者,此攻之災也。
-
-故善用兵者,屈人之兵,而非戰也,拔人之城而非攻也,毀人之國而非久也,必以全爭於天下,故兵不頓而利可全,此謀攻之法也。
-
-故用兵之法,十則圍之,五則攻之,倍則分之,敵則能戰之,少則能逃之,不若則能避之。故小敵之堅,大敵之擒也。
-
-夫將者,國之輔也。輔周則國必強,輔隙則國必弱。故君之所以患於軍者三:不知軍之不可以進而謂之進,不知軍之不可以退而謂之退,是謂縻軍;不知三軍之事,而同三軍之政,則軍士惑矣;不知三軍之權,而同三軍之任,則軍士疑矣。三軍既惑且疑,則諸侯之難至矣。是謂亂軍引勝。
-
-故知勝有五:知可以戰與不可以戰者,勝。識眾寡之用者,勝。上下同欲者,勝。以虞待不虞者,勝。將能而君不御者,勝。此五者,知勝之道也。
-
-故曰:知己知彼,百戰不貽;不知彼而知己,一勝一負;不知彼不知己,每戰必敗。
-
-軍形第四
-
-孫子曰:昔之善戰者,先為不可勝,以待敵之可勝。不可勝在己,可勝在敵。故善戰者,能為不可勝,不能使敵必可勝。故曰:勝可知,而不可為。
-
-不可勝者,守也;可勝者,攻也。守則不足,攻則有餘。善守者,藏於九地之下,善攻者,動於九天之上,故能自保而全勝也。
-
-見勝不過眾人之所知,非善之善者也;戰勝而天下曰善,非善之善者也。故舉秋毫不為多力,見日月不為明目,聞雷霆不為聰耳。古之善戰者,勝於易勝者也。故善戰者之勝也,無智名,無勇功,故其戰勝不忒。不忒者,其所措必勝,勝已敗者也。故善戰者,先立於不敗之地,而不失敵之敗也。是故勝兵先勝,而後求戰,敗兵先戰而後求勝。善用兵者,修道而保法,故能為勝敗之政。
-
-兵法:一曰度,二曰量,三曰數,四曰稱,五曰勝。地生度,度生量,量生數,數生稱,稱生勝。故勝兵若以鎰稱銖,敗兵若以銖稱鎰。勝者之戰,若決積水於千仞之谿者,形也。
-
-兵勢第五
-
-孫子曰:凡治眾如治寡,分數是也;鬥眾如鬥寡,形名是也;三軍之眾,可使必受敵而無敗者,奇正是也;兵之所加,如以碫投卵者,虛實是也。
-
-凡戰者,以正合,以奇勝。故善出奇者,無窮如天地,不竭如江海。終而複始,日月是也。死而復生,四時是也。聲不過五,五聲之變,不可勝聽也;色不過五,五色之變,不可勝觀也;味不過五,五味之變,不可勝嘗也;戰勢,不過奇正,奇正之變,不可勝窮也。奇正相生,如循環之無端,熟能窮之哉?
-
-激水之疾,至於漂石者,勢也;鷙鳥之疾,至於毀折者,節也。是故善戰者,其勢險,其節短。勢如張弩,節如發機。
-
-紛紛紜紜,鬥亂而不可亂也;渾渾沌沌,形圓而不可敗也。亂生於治,怯生於勇,弱生於強。治亂,數也;勇怯,勢也;強弱,形也。故善動敵者,形之,敵必從之;予之,敵必取之。以利動之,以卒待之。
-
-故善戰者,求之於勢,不責於人;故能擇人而任勢。任勢者,其戰人也,如轉木石。木石之性,安則靜,危則動,方則止,圓則行。故善戰人之勢,如轉圓石於千仞之山者,勢也。
-
-虛實第六
-
-孫子曰:凡先處戰地而待敵者佚,後處戰地而趨戰者勞。
-
-故善戰者,致人而不致於人。能使敵人自至者,利之也;能使敵人不得至者,害之也。故敵佚能勞之,飽能饑之,安能動之。出其所必趨,趨其所不意。行千里而不勞者,行於無人之地也;攻而必取者,攻其所不守也。守而必固者,守其所不攻也。
-
-故善攻者,敵不知其所守;善守者,敵不知其所攻。微乎微乎,至於無形;神乎神乎,至於無聲,故能為敵之司命。進而不可禦者,沖其虛也;退而不可追者,速而不可及也。故我欲戰,敵雖高壘深溝,不得不與我戰者,攻其所必救也;我不欲戰,雖畫地而守之,敵不得與我戰者,乖其所之也。故形人而我無形,則我專而敵分。我專為一,敵分為十,是以十攻其一也。則我眾敵寡,能以眾擊寡者,則吾之所與戰者約矣。吾所與戰之地不可知,不可知則敵所備者多,敵所備者多,則吾所與戰者寡矣。故備前則後寡,備後則前寡,備左則右寡,備右則左寡,無所不備,則無所不寡。寡者,備人者也;眾者,使人備己者也。故知戰之地,知戰之日,則可千里而會戰;不知戰之地,不知戰日,則左不能救右,右不能救左,前不能救後,後不能救前,而況遠者數十裏,近者數裏乎!以吾度之,越人之兵雖多,亦奚益於勝哉!故曰:勝可為也。敵雖眾,可使無鬥。故策之而知得失之計,候之而知動靜之理,形之而知死生之地,角之而知有餘不足之處。故形兵之極,至於無形。無形則深間不能窺,智者不能謀。因形而措勝於眾,眾不能知。人皆知我所以勝之形,而莫知吾所以制勝之形。故其戰勝不復,而應形於無窮。夫兵形象水,水之行避高而趨下,兵之形避實而擊虛;水因地而制流,兵因敵而制勝。故兵無常勢,水無常形。能因敵變化而取勝者,謂之神。故五行無常勝,四時無常位,日有短長,月有死生。
-
-軍爭第七
-
-孫子曰: 凡用兵之法,將受命於君,合軍聚眾,交和而舍,莫難於軍爭。軍爭之難者,以迂為直,以患為利。故迂其途,而誘之以利,後人發,先人至,此知迂直之計者也。軍爭為利,軍爭為危。舉軍而爭利則不及,委軍而爭利則輜重捐。是故捲甲而趨,日夜不處,倍道兼行,百裡而爭利,則擒三將軍,勁者先,疲者後,其法十一而至;五十裏而爭利,則蹶上將軍,其法半至;三十裏而爭利,則三分之二至。是故軍無輜重則亡,無糧食則亡,無委積則亡。故不知諸侯之謀者,不能豫交;不知山林、險阻、沮澤之形者,不能行軍;不用鄉導者,不能得地利。故兵以詐立,以利動,以分和為變者也。故其疾如風,其徐如林,侵掠如火,不動如山,難知如陰,動如雷震。掠鄉分眾,廓地分利,懸權而動。先知迂直之計者勝,此軍爭之法也。《軍政》曰:“言不相聞,故為之金鼓;視不相見,故為之旌旗。”夫金鼓旌旗者,所以一民之耳目也。民既專一,則勇者不得獨進,怯者不得獨退,此用眾之法也。故夜戰多金鼓,晝戰多旌旗,所以變人之耳目也。三軍可奪氣,將軍可奪心。是故朝氣銳,晝氣惰,暮氣歸。善用兵者,避其銳氣,擊其惰歸,此治氣者也。以治待亂,以靜待嘩,此治心者也。以近待遠,以佚待勞,以飽待饑,此治力者也。無邀正正之旗,無擊堂堂之陳,此治變者也。故用兵之法,高陵勿向,背丘勿逆,佯北勿從,銳卒勿攻,餌兵勿食,歸師勿遏,圍師遺闕,窮寇勿迫,此用兵之法也。
-
-九變第八
-
-孫子曰: 凡用兵之法,將受命於君,合軍聚合。泛地無舍,衢地合交,絕地無留,圍地則謀,死地則戰,途有所不由,軍有所不擊,城有所不攻,地有所不爭,君命有所不受。故將通於九變之利者,知用兵矣;將不通九變之利,雖知地形,不能得地之利矣;治兵不知九變之術,雖知五利,不能得人之用矣。是故智者之慮,必雜於利害,雜於利而務可信也,雜於害而患可解也。是故屈諸侯者以害,役諸侯者以業,趨諸侯者以利。故用兵之法,無恃其不來,恃吾有以待之;無恃其不攻,恃吾有所不可攻也。故將有五危,必死可殺,必生可虜,忿速可侮,廉潔可辱,愛民可煩。凡此五者,將之過也,用兵之災也。覆軍殺將,必以五危,不可不察也。
-
-行軍第九
-
-孫子曰:凡處軍相敵,絕山依穀,視生處高,戰隆無登,此處山之軍也。絕水必遠水,客絕水而來,勿迎之於水內,令半渡而擊之利,欲戰者,無附於水而迎客,視生處高,無迎水流,此處水上之軍也。絕斥澤,唯亟去無留,若交軍於斥澤之中,必依水草而背眾樹,此處斥澤之軍也。平陸處易,右背高,前死後生,此處平陸之軍也。凡此四軍之利,黃帝之所以勝四帝也。凡軍好高而惡下,貴陽而賤陰,養生而處實,軍無百疾,是謂必勝。丘陵堤防,必處其陽而右背之,此兵之利,地之助也。上雨水流至,欲涉者,待其定也。凡地有絕澗、天井、天牢、天羅、天陷、天隙,必亟去之,勿近也。吾遠之,敵近之;吾迎之,敵背之。軍旁有險阻、潢井、蒹葭、小林、蘙薈者,必謹覆索之,此伏姦之所處也。敵近而靜者,恃其險也;遠而挑戰者,欲人之進也;其所居易者,利也;眾樹動者,來也;眾草多障者,疑也;鳥起者,伏也;獸駭者,覆也;塵高而銳者,車來也;卑而廣者,徒來也;散而條達者,樵採也;少而往來者,營軍也;辭卑而備者,進也;辭強而進驅者,退也;輕車先出居其側者,陳也;無約而請和者,謀也;奔走而陳兵者,期也;半進半退者,誘也;杖而立者,饑也;汲而先飲者,渴也;見利而不進者,勞也;鳥集者,虛也;夜呼者,恐也;軍擾者,將不重也;旌旗動者,亂也;吏怒者,倦也;殺馬肉食者,軍無糧也;懸甀不返其舍者,窮寇也;諄諄翕翕,徐與人言者,失眾也;數賞者,窘也;數罰者,困也;先暴而後畏其眾者,不精之至也;來委謝者,欲休息也。兵怒而相迎,久而不合,又不相去,必謹察之。兵非貴益多也,惟無武進,足以並力料敵取人而已。夫惟無慮而易敵者,必擒於人。卒未親而罰之,則不服,不服則難用。卒已親附而罰不行,則不可用。故合之以文,齊之以武,是謂必取。令素行以教其民,則民服;令素不行以教其民,則民不服。令素行者,與眾相得也。
-
-地形第十
-
-孫子曰:地形有通者、有掛者、有支者、有隘者、有險者、有遠者。我可以往,彼可以來,曰通。通形者,先居高陽,利糧道,以戰則利。可以往,難以返,曰掛。掛形者,敵無備,出而勝之,敵若有備,出而不勝,難以返,不利。我出而不利,彼出而不利,曰支。支形者,敵雖利我,我無出也,引而去之,令敵半出而擊之利。隘形者,我先居之,必盈之以待敵。若敵先居之,盈而勿從,不盈而從之。險形者,我先居之,必居高陽以待敵;若敵先居之,引而去之,勿從也。遠形者,勢均難以挑戰,戰而不利。凡此六者,地之道也,將之至任,不可不察也。凡兵有走者、有馳者、有陷者、有崩者、有亂者、有北者。凡此六者,非天地之災,將之過也。夫勢均,以一擊十,曰走;卒強吏弱,曰馳;吏強卒弱,曰陷;大吏怒而不服,遇敵懟而自戰,將不知其能,曰崩;將弱不嚴,教道不明,吏卒無常,陳兵縱橫,曰亂;將不能料敵,以少合眾,以弱擊強,兵無選鋒,曰北。凡此六者,敗之道也,將之至任,不可不察也。夫地形者,兵之助也。料敵制勝,計險隘遠近,上將之道也。知此而用戰者必勝,不知此而用戰者必敗。故戰道必勝,主曰無戰,必戰可也;戰道不勝,主曰必戰,無戰可也。故進不求名,退不避罪,唯民是保,而利於主,國之寶也。視卒如嬰兒,故可以與之赴深溪;視卒如愛子,故可與之俱死。厚而不能使,愛而不能令,亂而不能治,譬若驕子,不可用也。知吾卒之可以擊,而不知敵之不可擊,勝之半也;知敵之可擊,而不知吾卒之不可以擊,勝之半也;知敵之可擊,知吾卒之可以擊,而不知地形之不可以戰,勝之半也。故知兵者,動而不迷,舉而不窮。故曰:知彼知己,勝乃不殆;知天知地,勝乃可全。
-
-九地第十一
-
-孫子曰:用兵之法,有散地,有輕地,有爭地,有交地,有衢地,有重地,有泛地,有圍地,有死地。諸侯自戰其地者,為散地;入人之地不深者,為輕地;我得亦利,彼得亦利者,為爭地;我可以往,彼可以來者,為交地;諸侯之地三屬,先至而得天下眾者,為衢地;入人之地深,背城邑多者,為重地;山林、險阻、沮澤,凡難行之道者,為泛地;所由入者隘,所從歸者迂,彼寡可以擊吾之眾者,為圍地;疾戰則存,不疾戰則亡者,為死地。是故散地則無戰,輕地則無止,爭地則無攻,交地則無絕,衢地則合交,重地則掠,泛地則行,圍地則謀,死地則戰。古之善用兵者,能使敵人前後不相及,眾寡不相恃,貴賤不相救,上下不相收,卒離而不集,兵合而不齊。合於利而動,不合於利而止。敢問敵眾而整將來,待之若何曰:先奪其所愛則聽矣。兵之情主速,乘人之不及。由不虞之道,攻其所不戒也。凡為客之道,深入則專。主人不克,掠於饒野,三軍足食。謹養而勿勞,並氣積力,運兵計謀,為不可測。投之無所往,死且不北。死焉不得,士人盡力。兵士甚陷則不懼,無所往則固,深入則拘,不得已則鬥。是故其兵不修而戒,不求而得,不約而親,不令而信,禁祥去疑,至死無所之。吾士無餘財,非惡貨也;無餘命,非惡壽也。令發之日,士卒坐者涕沾襟,偃臥者涕交頤,投之無所往,諸、劌之勇也。故善用兵者,譬如率然。率然者,常山之蛇也。擊其首則尾至,擊其尾則首至,擊其中則首尾俱至。敢問兵可使如率然乎?曰可。夫吳人與越人相惡也,當其同舟而濟而遇風,其相救也如左右手。是故方馬埋輪,未足恃也;齊勇如一,政之道也;剛柔皆得,地之理也。故善用兵者,攜手若使一人,不得已也。將軍之事,靜以幽,正以治,能愚士卒之耳目,使之無知;易其事,革其謀,使人無識;易其居,迂其途,使民不得慮。帥與之期,如登高而去其梯;帥與之深入諸侯之地,而發其機。若驅群羊,驅而往,驅而來,莫知所之。聚三軍之眾,投之於險,此謂將軍之事也。九地之變,屈伸之力,人情之理,不可不察也。凡為客之道,深則專,淺則散。去國越境而師者,絕地也;四徹者,衢地也;入深者,重地也;入淺者,輕地也;背固前隘者,圍地也;無所往者,死地也。是故散地吾將一其志,輕地吾將使之屬,爭地吾將趨其後,交地吾將謹其守,交地吾將固其結,衢地吾將謹其恃,重地吾將繼其食,泛地吾將進其途,圍地吾將塞其闕,死地吾將示之以不活。故兵之情:圍則禦,不得已則鬥,過則從。是故不知諸侯之謀者,不能預交;不知山林、險阻、沮澤之形者,不能行軍;不用鄉導,不能得地利。四五者,一不知,非霸王之兵也。夫霸王之兵,伐大國,則其眾不得聚;威加於敵,則其交不得合。是故不爭天下之交,不養天下之權,信己之私,威加於敵,則其城可拔,其國可隳。施無法之賞,懸無政之令。犯三軍之眾,若使一人。犯之以事,勿告以言;犯之以害,勿告以利。投之亡地然後存,陷之死地然後生。夫眾陷於害,然後能為勝敗。故為兵之事,在順詳敵之意,並敵一向,千里殺將,是謂巧能成事。是故政舉之日,夷關折符,無通其使,厲於廊廟之上,以誅其事。敵人開闔,必亟入之,先其所愛,微與之期,踐墨隨敵,以決戰事。是故始如處女,敵人開戶;後如脫兔,敵不及拒。
-
-火攻第十二
-
-孫子曰:凡火攻有五:一曰火人,二曰火積,三曰火輜,四曰火庫,五曰火隊。行火必有因,因必素具。發火有時,起火有日。時者,天之燥也。日者,月在箕、壁、翼、軫也。凡此四宿者,風起之日也。凡火攻,必因五火之變而應之:火發於內,則早應之於外;火發而其兵靜者,待而勿攻,極其火力,可從而從之,不可從則上。火可發於外,無待於內,以時發之,火發上風,無攻下風,晝風久,夜風止。凡軍必知五火之變,以數守之。故以火佐攻者明,以水佐攻者強。水可以絕,不可以奪。夫戰勝攻取而不惰其功者凶,命曰“費留”。故曰:明主慮之,良將惰之,非利不動,非得不用,非危不戰。主不可以怒而興師,將不可以慍而攻戰。合於利而動,不合於利而上。怒可以複喜,慍可以複說,亡國不可以複存,死者不可以複生。故明主慎之,良將警之。此安國全軍之道也。
-
-用間第十三
-
-孫子曰: 凡興師十萬,出征千里,百姓之費,公家之奉,日費千金,內外騷動,怠於道路,不得操事者,七十萬家。相守數年,以爭一日之勝,而愛爵祿百金,不知敵之情者,不仁之至也,非民之將也,非主之佐也,非勝之主也。故明君賢將所以動而勝人,成功出於眾者,先知也。先知者,不可取於鬼神,不可象於事,不可驗於度,必取於人,知敵之情者也。故用間有五:有因間,有內間,有反間,有死間,有生間。五間俱起,莫知其道,是謂神紀,人君之寶也。鄉間者,因其鄉人而用之;內間者,因其官人而用之;反間者,因其敵間而用之;死間者,為誑事於外,令吾聞知之而傳於敵間也;生間者,反報也。故三軍之事,莫親於間,賞莫厚於間,事莫密於間,非聖賢不能用間,非仁義不能使間,非微妙不能得間之實。微哉微哉!無所不用間也。間事未發而先聞者,間與所告者兼死。凡軍之所欲擊,城之所欲攻,人之所欲殺,必先知其守將、左右、謁者、門者、舍人之姓名,令吾間必索知之。敵間之來間我者,因而利之,導而舍之,故反間可得而用也;因是而知之,故鄉間、內間可得而使也;因是而知之,故死間為誑事,可使告敵;因是而知之,故生間可使如期。五間之事,主必知之,知之必在於反間,故反間不可不厚也。昔殷之興也,伊摯在夏;周之興也,呂牙在殷。故明君賢將,能以上智為間者,必成大功。此兵之要,三軍之所恃而動也。
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt
deleted file mode 100644
index c9ba04c4c..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt
+++ /dev/null
@@ -1,175 +0,0 @@
-This file was derived from
-http://www.ibrary.co.kr/index.php/book-list/short-stories/34-short-stories-korean/150-2008-04-20-13-22-32
---------
-[Ұ]
- ̷ ΰ ϰ Ѵ. 츮 ִ ̶ 巯 . ϱ ̷ , ¦ 츮 ķ ̷ 츮 տ 𸥴. յ 鿡Դ ڽ ü ٽ δٴ ׷ ⵵ ִ...
-
-ٽ о . Ĺ ô Ͽ , . 21⸦ 츮鿡 ׷ ƿ ο ó ̴. ׷ ׷? ̷ 𸣰 ְ, ƴ ̴. 쿬 ̴. Ƴ ڴϴ ÷ ... Ƣ ڰ, ׷ ִ.
-
-[۰ Ұ]
- (, 1900-1943) : Ҽ. ѱ Ҽ Ʋ ۰̴. (). ȣ (޻). 1920 ݱ⿡ Ұ üҼ <ó> < ϴ ȸ>, () ٷ <B簨 극> < > 1920 ߹ Ŀ <ǾƳ> <> <> <> ¿ ɰ Ĺ Ȳ ν ε巯 ǰ ǥߴ. < > ̷ 迭 ϴ ǰ̴. 1930 Ŀ ǽİ а ٰ Ҽ ߽ <ž> <ġ()> <ȭ> Ҽ ǥߴ.
-
-ħϰ 帰 ǰ ϴ ƴ ٰ .
-
-̳̾߸ ҹ ȿ η°Ų 븩 ϴ ÷Դ ģ ̾. ȿ(ű⵵ ƴ) ô Ŵ 帰 ࿩ մ ϰ 忡 ϸ ϳϳ ִٰ ħ 纹̸ б() ¿ ֱ Ǿ.
-
-ù , ° - ħ ٶ ׸ ġ ̾. ׾߸ Ⱥپ 浵 ÷ ¥ ȭ Ǭ, Ǵ ټ Ǭ ϰ չٴڿ 긱 ŭ ⻼. ̳ ̶ Ƚ ̶ ׿ 󸶳 . ܵ ְŴϿ ׺ٵ δ Ƴ ׸ ̴.
-
- Ƴ ħ 𷰰Ÿ Ѿ. 䵵 ⸦ Դٽ ϴ ̴ ø . ¿ ٵ ƴϷε ״ ̶ 𿡰 ־ ̸ ٿ ڲ ´ٴ ڱ () Ͽ. ǻ翡 ݵ , Ͼ ε ° . ̴뵵 ԰ ü ̴.
-
-׶ ÷  ǿ ¥ ־ ÷ ϸ õ(۰) . ϰ ұ ʾ ä ΰ Ѽ ָԵ Ȥ Ұ ó ϴϸ ׳ , 谡 бٰ ȩ߰ Ͽ. ׶ ÷ ȭ ,
-
-, , պ , Ծ , Ծ , ¼ ̾! ٷ !ϰ ÷ δ ķ. ȩ ٷǸ ̽ . ÷ ÿﵵ ߲߲Ͽ.
-
- ȯڰ ׷ Դ ʾҴ. ð ʹٰ .
-
-̷ ! 䵵 Դ , ó԰ ϰ., ߴ ĺҰǸ, ִ ÿġ ʾҴ.
-
- ִ. δ 翡 ä ( ) ִ. - Ƚ տ ÷ ǬǬϿ. ׷ װɷ ġ ʾҴ. 帣 ̸ ⸧ָӴϰ ָ , б Ƴ . ڿ <η°!> ϰ θ Ҹ . ڱ⸦ ҷ б л ÷ ־. л ¥¥, 빮 󸶿?, .
-
-Ƹ б 翡 ִ ̷ ̿Ͽ Ϸ ̸. ϿǸ , ְ ؼ 𸣴ٰ ħ ÷ پ̸. ׷ θ ä ؼ , <> 纹ϸ ̷ ÷ Ѿ .
-
-빮 Դϱ.ϰ ÷ Ͽ. ״ ߿ 嵵 öŸ Ⱑ Ⱦϱ? ó , ° ׸ Ͽϱ? ƴϴ, ƴϴ. ̻ϰԵ ¹ տ ̴.׸ Ƴ Ź б. - ׼ θ 󱼿 ޸ ũ ְϴ , ƿ. п پ־. ̷ µ, Ҹ ߾Ÿ ɱ׷ɱ׷ Ͽ.
-
-׶ ÷ , д, , Ҹ ϳ. ºٵ ɾ Կ 츱 ˾.ϰ, ½ پϱ ȯڴ , ׷, ׷ Ϳ.ϰ, Ҹ ڸ .
-
- , ޸ ŭ , Ƴ ÷ տ Ͽ. ׷ 빮 󸶶 ̿?ϰ л η°Ų ٶ󺸸 ȥ㸻, õ ְ, ̵簡., ߾Ÿ.
-
- ݽÿ. ̿ Ҿ ÷ Կ . θ û ׼ . Ѳ ̷ ݾ ҷ 󸶸ΰ! ׷ Ⱑ ڿ 縣 Ҵ.  ;. ִ ģ ͺٵ ĥ Ͽ.
-
- ʹ ѵ. ̷ ϸ л Ͽ.
-
-ƴϿýô. ռ ġ ⼭ űⰡ ÿ Ѵ´ϴ. ̷ ּž.ϰ ۺ 󱼿 귶.
-
-׷ ޶ ̴ .  մ ׷ ʵ ԰ ìⷯ .
-
- л ¿ ÷ ٸ ̻ϰ ŻϿ. ѴٴϺ Ͽ.  ٴϺ ġ ij <Ʈ> ̲ Ͽ. ̲⵵ Ͽ.
-
- ٸ ſ. ڱ ٴٸ ̴. コ . < ƿ. ̷ µ!> ̷ Ϳ ȴ. ׸  ϴ ڱ⸦ 븮 Ͽ. ׷ ϰ  ʹ. ϰ Ҹ ʹ. ̸, ġڱ.ϰ ź θ¢ Ϳ Դ. ÷ η°Ÿ ä Ѻǿ .
-
-, .ϰ, ÷ Ǵٽ Ͽ. ־ ÷ ٽñ Ͽ. ٸ ߸ ڱ Ӹ ٽɰ .
-
- ְ ¦ տ 翡, Ǵ ¾ ܰŸ ƴϰ, Դ. γ ⻼. ڽ ۿ ȵǴ  մԿ 㸮 , ȳ ٳɽÿ. ƴ.
-
-׷ η°Ÿ аŸ ߿ ư ޹̾. 뵿 Ͽ 帥 ľ ָ âڿ, 帣 ʿ  ѱⰡ ھƳ ϸ ̶ 󸶳 ο . ߱ ϳ . ¸ ˼۱׷ ڸ Ͼ Ҵ.
-
- ! η°Ÿ аŸ Ƹ . ̷ , ҹ̸ !
-
-״ ȱ ̳ ϴ ԰ɰŷȴ. ׷ Ӹ ο Ƴ װ <̷ ƴ϶ ó ⸦ ٸ մ ¿ ɴ > ̾. ϰԵ ϱ ׷ ѹ Ϸ. ڱ⸦ ٸ ִٰ ⸦ ص Ǿ. ׷ٰ η°Ų տ .
-
-׷ ״ غ ̶ ٷ 忡 , ٴϴ ƴ η°Ÿ ڱ ó ϱ Ͽ. 󸶸 ԰, ̳ Ǵ Դ. ߿ մ ϴ ÷ Ӹ θ Ű <> θ , л . ״ ٽ ٰ.
-
-ƾ, η° ƴ Ÿöÿ?
-
- л ſ Ȱ Լ ٹ ä ÷ ŵ鶰 ʾҴ. ÷ ϴ ؿ Ǹ, ƾ, ֵ麸 ΰ Ŵ 帮ϴ. Ű.ϰ, ߱߱ϰԵ ִ Ϻ ¦ .
-
- ̷, ġʰ. Ҹ ° Ƽ. ÷ ÿ ϰ .
-
- Դ. ÷ Ÿ ̸ 븮 ־. ׷ () Ʋ ʾҴ. ϰ ư ̱ Ͽ Ÿ ϳ ־. ϰ ū ִ° Ƹ պ ȿ ũ Ͽ 忡 з ġ. ÷ .
-
-η°Ÿ Ÿöÿ.
-
-ѵ °̸ ϴٰ λ絿 ¿ֱ Ͽ. η°Ű ſ ̻ϰԵ ׸ η°Ű ٽñ ſǸ ̹ ´. ڲ տ Ÿ ٶ . ̳ ٸ ¢ ٴ ۿ .
-
- η°ű ذ , ϸŭ ȲϿ. 帮 ϴ ħħϰ Ȳȥ ϴ. â ձ ٴ޾Ƽ ״ ο Ҵ. Ϳü ϰ ׷. ׷ ׷ Ƚɿ ƴϿ, ڱ⸦ ģ ƴ ˰ ڵ ηϴ ̴.
-
-״ ࿡ ٴġ ð ̶ ø ŷȴ. () ̸ Ͽٴ ϰ ;. ״ θθ Ǿ. ġ ڱ - ϰ ޷ ٸ δ ٰ, ٰ ϴ Ͽ.
-
-׷ ħ 氡 ģ ġ̰ ´. ۿ 󱼿 ȫ , ΰ Ŀݰ Ŵ, 븣 ¦ а, ִ ιؿ ġ ̸ Ųٷ ٿ ÷ dzäϰ ־.
-
- ÷, ڳ  ϼ׷. ״ .
-
-׶׺ ̸ ÿ θ¢. Ҹ ϰ ϽϿ. ÷ ģ  ݰ . ڱ⸦ ̳ ⵵ Ͽ.
-
-ڳ״ ϼ׷. ڳ׵ ̰ ƺ.ϰ, ÷ 켭 .
-
-д, ٰ . ׷ , ڳ ޸ ° ?  ̸ .
-
- ϰ ߶Ͽ. ߾ ̴ ܶѲ Թ , 迡 ʺƴ ̸ ̸ ̸ ̸ Ͼ 붱 ϰ þ Źڿ ÷ ڱ ߵ . ̸ ű ִ ̸ ׸ ѵ ÿġ ʾҴ. ϵ ̴ з 붱 ̱⵵ ϰ ߾ ׸ ûϿ.
-
-ָ âڴ ĸ ڲڲ ̶̶ Ͽ. İ κο ̲ٸ ׸ ׳ Ű Ҵ. ° ׸ ޾Ƶ . ġ̿ ̶ ϰ âڿ ȭϿ. ̴.
-
- ÷ Ǯ Ͽ. 迡  ҷŸ ξ Ͽ.
-
-ġ Ǿ ÷ , ״ٴ, 츮 ܾ Ծ, ϼ. ǽ״.
-
-Ƶ ̳, ׸ ϳ. . Ҵ.
-
-׷ 󸶸 ΰ?
-
- , ! ̷ Ⱥξ , Ծ . ̰ µ.
-
-, ߱, ׸μ.
-
-̳, ̰ ԰ ,  Ծ.ϰ ġ ͸ ä ̴ θ¢. ׸ ״ ټ ߴ밡Է ޷, ̳, , ʾ. ߴ ƴ. ߴ밡 ġ ϴ Ͽ. ġ ˾ƺ ȭ , ̸ , ̳ ˰.ڸ 㸮 ĩĩ ϴ ¥ ߴ밡 տ ½ . ǰ Ǭ ߱׶ ϸ .
-
- , . ̷ ϸ Ϻ ݴ´. ÷ ߿ ó Ǵ ũ ٺٰ ҽÿ ϴ ʹ ٴ ҽġ , ! , , ٸٱ .ϰ ġ ִֿ ޾, ! ø !ϸ鼭, Ǯ ģ. ¾ ٽ ̴ Ǭ Ÿ ´´ٴ ¸ϰ .
-
- ξ ܸ Ҵ. ÷ Լ Ƶ̰ ſ ٵ, ξ, ξ., ƴ.
-
- ԰ ÷ ġ ġ ´. Ҹ  Ǵ ִ ÷Է . ̴ , ġ, 콺 ̾߱ ϳ ұ. ° 忡 ʾҰڳ.
-
-׷.
-
-ٰ Ⱑ Ƶ׷. ׷ 忡 ϸ մ ϳ ¿ ø ʾҳ. ű ħ ̽ л̽ - ٴϿ ư ִ - <> θ ° ְ. ٽ η° Ÿöÿ ϰ հ ϱ Ź Ѹġ ȴ Ƽϸ < ̷ !> Ҹ߸ Ҳ Ҹ, !
-
- ÷ ϰԵ Ҳ Ҹ . Ͻÿ .
-
- , ¼, < !> ̱ Ҹ óŵ , .
-
- Ҹ . ׷ Ҹ ÷ ½½ Ͽ.
-
-ġ ̾ ̸ ٶ󺸸, ݹ ϴ ΰ.
-
- ÷ ڸ 鿩ø, 츮 ׾ٳ.
-
-, ״ٴ, ?
-
-̳ . .
-
- ģ , .
-
- , ׾, ... ü ij Դٴ, ̾, ̾.ϰ ÷ Ҹ .
-
-ġ 󱼷, , ϳ ϳ. ׷ , .ϰ ƴ.
-
-ġ Ѹġ ÷ ۽۽ ̱׷ ´.
-
-ױ ׾.ϰ ǰ .
-
-ױ ׾, Ƹ ִܴ. . ӾҴ.ϰ  ջ ġ ´.
-
- ƴ ΰ. ָճװ δ´ µ.ϰ, ġ̵ Ҿ ÷ ư Ͽ.
-
- ׾, ׾뵵׷.
-
- ÷ ȱ Ȯְ Ҹ Ҹ ־ ־. ġ ä ܾ ԰ Դ. ǿ .
-
- ÷ ߿ 簡 ٴ޾Ҵ. ̶ ص ̿, ü ƴ϶ Ȱ Ҷ ε ޿ ̴. ÷ ֱ⸦ ʾҴ 빮 鿩 װ ϴ ù () - dz찡 ٴ ٸ .
-
-Ÿ ħ Ҹ . ׸Ÿ Ҹ . ٸ ħ ߸ - ߸ٴϺ ħ ϰ ұϰ ϴ ϴ Ҹ,  Ҹ ̴. û() Ҹ ̿, ܶܶ ϰ Ѿ Ҹ ٴ ͵ Ҵ 𸣸.
-
-Ȥ ÷ ұ ħ ߴ 𸥴. ׷ 빮 ڸ , , µ ͺ ʾ, .̶ ģ ϴ. ̾߸ ؿ ù Ѿƹ 强() ̴.
-
-Ͽ ÷ 湮 Ĭ . ϴ ߱ - ڸ ؿ , Ϳ ˳ ܳ, ʳ, ߱Ⱑ ÷ ڸ 񷶴.
-
-ȿ  ѱ ̵ û ִ ȣ ƴ.
-
-̷ , ־õ() ̾! ͵ Ͼ . Ҹ Բ ߱ ٸ á. ׷ ߱濡 ä̴ ƴϰ ɰ ־. ̶ Ҹ Ҹ Ͽ. ̰ . 뵵 ׷ ٿ, ٴ ǥ ̴. Ҹ Կ ƴϰ ġ ӿ Ͽ. ٰ ٰ .
-
-߷ Ƴ Ӹ ޷ ׾߸ ġ ȯ Ӹ , , , ! پ, !
-
-
-
-, ̰ , ƹ .
-
-
-̳, ׾ ̳, .
-
-
-
-. , ׾.
-
-̷ٰ â , ġ ˾ƺڸ, ! ! ٶ ϰ õ , .ϴ ޾. ׷ þ. ÷ ĥ 󱼿 ߾ŷȴ.
-
- ٳҴµ ϴ, ϴ... ϰԵ ! ϸ...
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt b/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt
deleted file mode 100644
index e10a3d46b..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt
+++ /dev/null
@@ -1,175 +0,0 @@
-This file was derived from
-http://www.ibrary.co.kr/index.php/book-list/short-stories/34-short-stories-korean/150-2008-04-20-13-22-32
---------
-[소개]
-잔인한 운명은 이렇게 인간을 조롱하곤 한다. 우리가 평소 마음 속 저 깊은 곳에 움켜쥐고 있던 자존심 따위는 어느 한 순간 전혀 무용지물이란 것이 드러나고 만다. 하기야 이렇게 삶의 한 순간, 눈 깜짝할 새에 우리를 후려 갈기고 지나가는 그 진실이 미래의 어느날에는 또 남김없이 우리 눈 앞에 펼쳐질지도 모른다. 죽음을 앞둔 사람들에게는 자신의 삶 전체가 한 순간에 다시 보인다는 그런 얘기도 있던데...
-
-다시 읽어보니 끔찍한 생각도 든다. 식민지 시대의 암울한 삶, 그 끈끈한 냄새를 피할 수 없다. 21세기를 사는 우리들에겐 그런 냄새는 아예 인연이 없는 것처럼 느껴질 수도 있을 것이다. 그러나 과연 그럴까? 이런 냄새를 모르고 평생 사는 사람도 있겠지만, 전혀 관련이 없는 것은 아닐 것이다. 그저 우연일 뿐이다. 아내를 박대하는 김 첨지의 모습... 요새 같으면 간이 배 밖으로 튀어나온 남자겠지만, 그래도 그 애정은 더 진한 것일 수도 있다.
-
-[작가 소개]
-현 진 건(玄鎭健, 1900-1943) : 소설가. 한국 사실주의 단편소설의 기틀을 다진 작가이다. 본관은 연주(延州). 아호는 빙허(憑虛). 1920년대 전반기에는 자전적 요소가 강한 개인적 체험소설인 <빈처> <술 권하는 사회>, 성(性)의 문제와 애정문제를 다룬 <B사감과 러브레터> <새빨간 웃음> 등이 있으며 1920년대 중반 이후에는 <피아노> <우편국에서> <불> <고향> 등 세태에의 관심과 식민지 상황하의 현실인식이 두드러진 작품을 많이 발표했다. <운수 좋은 날>도 이러한 계열에 속하는 작품이다. 1930년대 이후에는 역사의식과 예언주의적 문학관에 근거한 역사소설 중심의 <무영탑> <흑치상지(黑齒常之)> <선화공주> 등 장편소설을 발표했다.
-
-새침하게 흐린 품이 눈이 올 듯하더니 눈은 아니 오고 얼다가 만 비가 추적추적 내리었다.
-
-이날이야말로 동소문 안에서 인력거꾼 노릇을 하는 김 첨지에게는 오래간만에도 닥친 운수 좋은 날이었다. 문안에(거기도 문밖은 아니지만) 들어간답시는 앞집 마나님을 전찻길까지 모셔다 드린 것을 비롯으로 행여나 손님이 있을까 하고 정류장에서 어정어정하며 내리는 사람 하나하나에게 거의 비는 듯한 눈결을 보내고 있다가 마침내 교원인 듯한 양복장이를 동광학교(東光學校)까지 태워다 주기로 되었다.
-
-첫번에 삼십 전, 둘째 번에 오십 전 - 아침 댓바람에 그리 흔치 않은 일이었다. 그야말로 재수가 옴붙어서 근 열흘 동안 돈 구경도 못한 김 첨지는 십 전짜리 백통화 서 푼, 또는 다섯 푼이 찰깍하고 손바닥에 떨어질 제 거의 눈물을 흘릴 만큼 기뻤었다. 더구나 이날 이때에 이 팔십 전이라는 돈이 그에게 얼마나 유용한지 몰랐다. 컬컬한 목에 모주 한 잔도 적실 수 있거니와 그보다도 앓는 아내에게 설렁탕 한 그릇도 사다줄 수 있음이다.
-
-그의 아내가 기침으로 쿨럭거리기는 벌써 달포가 넘었다. 조밥도 굶기를 먹다시피 하는 형편이니 물론 약 한 첩 써 본 일이 없다. 구태여 쓰려면 못 쓸 바도 아니로되 그는 병이란 놈에게 약을 주어 보내면 재미를 붙여서 자꾸 온다는 자기의 신조(信條)에 어디까지 충실하였다. 따라서 의사에게 보인 적이 없으니 무슨 병인지는 알 수 없으되 반듯이 누워 가지고, 일어나기는 새로 모로도 못 눕는걸 보면 중증은 중증인 듯. 병이 이대도록 심해지기는 열흘 전에 조밥을 먹고 체한 때문이다.
-
-그때도 김 첨지가 오래간만에 돈을 얻어서 좁쌀 한 되와 십 전짜리 나무 한 단을 사다 주었더니 김 첨지의 말에 의지하면 그 오라질 년이 천방지축(天方地軸)으로 남비에 대고 끓였다. 마음은 급하고 불길은 달지 않아 채 익지도 않은 것을 그 오라질 년이 숟가락은 고만두고 손으로 움켜서 두 뺨에 주먹덩이 같은 혹이 불거지도록 누가 빼앗을 듯이 처박질 하더니만 그날 저녁부터 가슴이 땅긴다, 배가 켕긴다고 눈을 홉뜨고 지랄병을 하였다. 그때 김 첨지는 열화와 같이 성을 내며,
-
-“에이, 오라질 년, 조롱복은 할 수가 없어, 못 먹어 병, 먹어서 병, 어쩌란 말이야! 왜 눈을 바루 뜨지 못해!”하고 김 첨지는 앓는 이의 뺨을 한 번 후려갈겼다. 홉뜬 눈은 조금 바루어졌건만 이슬이 맺히었다. 김 첨지의 눈시울도 뜨끈뜨끈하였다.
-
-이 환자가 그러고도 먹는 데는 물리지 않았다. 사흘 전부터 설렁탕 국물이 마시고 싶다고 남편을 졸랐다.
-
-“이런 오라질 년! 조밥도 못 먹는 년이 설렁탕은, 또 처먹고 지랄병을 하게.”라고, 야단을 쳐보았건만, 못 사주는 마음이 시원치는 않았다.
-
-인제 설렁탕을 사줄 수도 있다. 앓는 어미 곁에서 배고파 보채는 개똥이(세 살먹이)에게 죽을 사줄 수도 있다. - 팔십 전을 손에 쥔 김 첨지의 마음은 푼푼하였다. 그러나 그의 행운은 그걸로 그치지 않았다. 땀과 빗물이 섞여 흐르는 목덜미를 기름주머니가 다 된 왜목 수건으로 닦으며, 그 학교 문을 돌아나올 때였다. 뒤에서 <인력거!> 하고 부르는 소리가 난다. 자기를 불러 멈춘 사람이 그 학교 학생인 줄 김 첨지는 한 번 보고 짐작할 수 있었다. 그 학생은 다짜고짜로, “남대문 정거장까지 얼마요?”라고, 물었다.
-
-아마도 그 학교 기숙사에 있는 이로 동기방학을 이용하여 귀향하려 함이리라. 오늘 가기로 작정은 하였건만 비는 오고, 짐은 있고 해서 어찌할 줄 모르다가 마침 김 첨지를 보고 뛰어나왔음이리라. 그렇지 않으면 왜 구두를 채 신지 못해서 질질 끌고, 비록 <고구라> 양복일망정 노박이로 비를 맞으며 김첨지를 뒤쫓아 나왔으랴.
-
-“남대문 정거장까지 말씀입니까.”하고 김 첨지는 잠깐 주저하였다. 그는 이 우중에 우장도 없이 그 먼 곳을 철벅거리고 가기가 싫었음일까? 처음 것, 둘째 것으로 그만 만족하였음일까? 아니다, 결코 아니다. 이상하게도 꼬리를 맞물고 덤비는 이 행운 앞에 조금 겁이 났음이다.그리고 집을 나올 제 아내의 부탁이 마음에 켕기었다. - 앞집 마나님한테서 부르러 왔을 제 병인은 그 뼈만 남은 얼굴에 유일의 생물 같은 유달리 크고 움폭한 눈에 애걸하는 빛을 띠우며, “오늘은 나가지 말아요. 제발 덕분에 집에 붙어있어요. 내가 이렇게 아픈데……”라고, 모기 소리같이 중얼거리고 숨을 걸그렁걸그렁 하였다.
-
-그때에 김 첨지는 대수롭지 않은 듯이, “압다, 젠장맞을 년, 별 빌어먹을 소리를 다 하네. 맞붙들고 앉았으면 누가 먹여 살릴 줄 알아.”하고, 훌쩍 뛰어나오려니까 환자는 붙잡을 듯이 팔을 내저으며, “나가지 말라도 그래, 그러면 일찌기 들어와요.”하고, 목메인 소리가 뒤를 따랐다.
-
-정거장까지 가잔 말을 들은 순간에 경련적으로 떠는 손, 유달리 큼직한 눈, 울 듯한 아내의 얼굴이 김 첨지의 눈앞에 어른어른하였다. “그래 남대문 정거장까지 얼마란 말이요?”하고 학생은 초조한 듯이 인력거꾼의 얼굴을 바라보며 혼잣말같이, “인천 차가 열 한 점에 있고, 그 다음에는 새로 두 점이든가.”라고, 중얼거린다.
-
-“일 원 오십 전만 줍시요.” 이 말이 저도 모를 사이에 불쑥 김 첨지의 입에서 떨어졌다. 제 입으로 부르고도 스스로 그 엄청난 돈 액수에 놀래었다. 한꺼번에 이런 금액을 불러라도 본 지가 그 얼마만인가! 그러자 그 돈 벌 용기가 병자에 대한 염려를 사르고 말았다. 설마 오늘 내로 어떠랴 싶었다. 무슨 일이 있더라도 제일 제이의 행운을 곱친 것보다도 오히려 갑절이 많은 이 행운을 놓칠 수 없다 하였다.
-
-“일 원 오십 전은 너무 과한데.” 이런 말을 하며 학생은 고개를 기웃하였다.
-
-“아니올시다. 잇수로 치면 여기서 거기가 시오리가 넘는답니다. 또 이런 진 날에 좀더 주셔야지요.”하고 빙글빙글 웃는 차부의 얼굴에는 숨길 수 없는 기쁨이 넘쳐 흘렀다.
-
-“그러면 달라는 대로 줄 터이니 빨리 가요.” 관대한 어린 손님은 그런 말을 남기고 총총히 옷도 입고 짐도 챙기러 갈 데로 갔다.
-
-그 학생을 태우고 나선 김 첨지의 다리는 이상하게 거뿐하였다. 달음질을 한다느니보다 거의 나는 듯하였다. 바퀴도 어떻게 속히 도는지 군다느니보다 마치 얼음을 지쳐나가는 <스케이트> 모양으로 미끄러져 가는 듯하였다. 얼은 땅에 비가 내려 미끄럽기도 하였지만.
-
-이윽고 끄는 이의 다리는 무거워졌다. 자기 집 가까이 다다른 까닭이다. 새삼스러운 염려가 그의 가슴을 눌렀다. <오늘은 나가지 말아요. 내가 이렇게 아픈데!> 이런 말이 잉잉 그의 귀에 울렸다. 그리고 병자의 움쑥 들어간 눈이 원망하는 듯이 자기를 노리는 듯하였다. 그러자 엉엉하고 우는 개똥이의 곡성을 들은 듯싶다. 딸국딸국 하고 숨 모으는 소리도 나는 듯싶다.“왜 이리우, 기차 놓치겠구먼.”하고 탄 이의 초조한 부르짖음이 간신히 그의 귀에 들어왔다. 언뜻 깨달으니 김 첨지는 인력거를 쥔 채 길 한복판에 엉거주춤 멈춰있지 않은가.
-
-“예, 예.”하고, 김 첨지는 또다시 달음질하였다. 집이 차차 멀어갈수록 김 첨지의 걸음에는 다시금 신이 나기 시작하였다. 다리를 재게 놀려야만 쉴새없이 자기의 머리에 떠오르는 모든 근심과 걱정을 잊을 듯이.
-
-정거장까지 끌어다주고 그 깜짝 놀란 일 원 오십 전을 정말 제 손에 쥠에, 제 말마따나 십 리나 되는 길을 비를 맞아 가며 질퍽거리고 온 생각은 아니하고, 거저나 얻은 듯이 고마왔다. 졸부나 된 듯이 기뻤다. 제자식 뻘밖에 안되는 어린 손님에게 몇 번 허리를 굽히며, “안녕히 다녀옵시요.”라고 깍듯이 재우쳤다.
-
-그러나 빈 인력거를 털털거리며 이 우중에 돌아갈 일이 꿈밖이었다. 노동으로 하여 흐른 땀이 식어지자 굶주린 창자에서, 물 흐르는 옷에서 어슬어슬 한기가 솟아나기 비롯하매 일 원 오십 전이란 돈이 얼마나 괜찮고 괴로운 것인 줄 절절히 느끼었다. 정거장을 떠나는 그의 발길은 힘 하나 없었다. 온몸이 옹송그려지며 당장 그 자리에 엎어져 못 일어날 것 같았다.
-
-“젠장맞을 것! 이 비를 맞으며 빈 인력거를 털털거리고 돌아를 간담. 이런 빌어먹을, 제 할미를 붙을 비가 왜 남의 상판을 딱딱 때려!”
-
-그는 몹시 홧증을 내며 누구에게 반항이나 하는 듯이 게걸거렸다. 그럴 즈음에 그의 머리엔 또 새로운 광명이 비쳤나니 그것은 <이러구 갈 게 아니라 이 근처를 빙빙 돌며 차 오기를 기다리면 또 손님을 태우게 될는지도 몰라>란 생각이었다. 오늘 운수가 괴상하게도 좋으니까 그런 요행이 또한번 없으리라고 누가 보증하랴. 꼬리를 굴리는 행운이 꼭 자기를 기다리고 있다고 내기를 해도 좋을 만한 믿음을 얻게 되었다. 그렇다고 정거장 인력거꾼의 등살이 무서우니 정거장 앞에 섰을 수는 없었다.
-
-그래 그는 이전에도 여러 번 해본 일이라 바로 정거장 앞 전차 정류장에서 조금 떨어지게, 사람 다니는 길과 전찻길 틈에 인력거를 세워놓고 자기는 그 근처를 빙빙 돌며 형세를 관망하기로 하였다. 얼마만에 기차는 왔고, 수십 명이나 되는 손이 정류장으로 쏟아져 나왔다. 그 중에서 손님을 물색하는 김 첨지의 눈엔 양머리에 뒤축 높은 구두를 신고 <망토>까지 두른 기생 퇴물인 듯, 난봉 여학생인 듯한 여편네의 모양이 띄었다. 그는 슬근슬근 그 여자의 곁으로 다가들었다.
-
-“아씨, 인력거 아니 타시랍시요?”
-
-그 여학생인지 뭔지가 한참은 매우 탯갈을 빼며 입술을 꼭 다문 채 김 첨지를 거들떠보지도 않았다. 김 첨지는 구걸하는 거지나 무엇같이 연해연방 그의 기색을 살피며, “아씨, 정거장 애들보담 아주 싸게 모셔다 드리겠읍니다. 댁이 어디신가요.”하고, 추근추근하게도 그 여자의 들고 있는 일본식 버들고리짝에 제 손을 대었다.
-
-“왜 이래, 남 귀치않게.” 소리를 벽력같이 지르고는 돌아선다. 김 첨지는 어랍시요 하고 물러섰다.
-
-전차는 왔다. 김 첨지는 원망스럽게 전차 타는 이를 노리고 있었다. 그러나 그의 예감(豫感)은 틀리지 않았다. 전차가 빡빡하게 사람을 싣고 움직이기 시작하였을 때 타고 남은 손 하나이 있었다. 굉장하게 큰 가방을 들고 있는걸 보면 아마 붐비는 차 안에 짐이 크다 하여 차장에게 밀려내려온 눈치였다. 김 첨지는 대어섰다.
-
-“인력거를 타시랍시요.”
-
-한동안 값으로 승강이를 하다가 육십 전에 인사동까지 태워다주기로 하였다. 인력거가 무거워지매 그의 몸은 이상하게도 가벼워졌고 그리고 또 인력거가 가벼워지니 몸은 다시금 무거워졌건만 이번에는 마음조차 초조해 온다. 집의 광경이 자꾸 눈앞에 어른거리어 인제 요행을 바랄 여유도 없었다. 나무 등걸이나 무엇 같고 제 것 같지도 않은 다리를 연해 꾸짖으며 갈팡질팡 뛰는 수밖에 없었다.
-
-저놈의 인력거군이 저렇게 술이 취해가지고 이 진 땅에 어찌 가노, 라고 길 가는 사람이 걱정을 하리만큼 그의 걸음은 황급하였다. 흐리고 비오는 하늘은 어둠침침하게 벌써 황혼에 가까운 듯하다. 창경원 앞까지 다달아서야 그는 턱에 닿은 숨을 돌리고 걸음도 늦추잡았다. 한 걸음 두 걸음 집이 가까와올수록 그의 마음조차 괴상하게 누그러웠다. 그런데 이 누그러움은 안심에서 오는 게 아니요, 자기를 덮친 무서운 불행을 빈틈없이 알게 될 때가 박두한 것을 두려워하는 마음에서 오는 것이다.
-
-그는 불행에 다닥치기 전 시간을 얼마쯤이라도 늘리려고 버르적거렸다. 기적(奇蹟)에 가까운 벌이를 하였다는 기쁨을 할 수 있으면 오래 지니고 싶었다. 그는 두리번두리번 사면을 살피었다. 그 모양은 마치 자기 집 - 곧 불행을 향하고 달려가는 제 다리를 제 힘으로는 도저히 어찌할 수 없으니 누구든지 나를 좀 잡아 다고, 구해 다고 하는 듯하였다.
-
-그럴 즈음에 마침 길가 선술집에서 그의 친구 치삼이가 나온다. 그의 우글우글 살찐 얼굴에 주홍이 돋는 듯, 온 턱과 뺨을 시커멓게 구레나룻이 덮였거늘, 노르탱탱한 얼굴이 바짝 말라서 여기저기 고랑이 패고, 수염도 있대야 턱밑에만 마치 솔잎 송이를 거꾸로 붙여놓은 듯한 김 첨지의 풍채하고는 기이한 대상을 짓고 있었다.
-
-“여보게 김 첨지, 자네 문안 들어갔다 오는 모양일세그려. 돈 많이 벌었을 테니 한 잔 빨리게.”
-
-뚱뚱보는 말라깽이를 보든 맡에 부르짖었다. 그 목소리는 몸짓과 딴판으로 연하고 싹싹하였다. 김 첨지는 이 친구를 만난 게 어떻게 반가운지 몰랐다. 자기를 살려준 은인이나 무엇같이 고맙기도 하였다.
-
-“자네는 벌써 한잔 한 모양일세그려. 자네도 오늘 재미가 좋아보이.”하고, 김 첨지는 얼굴을 펴서 웃었다.
-
-“압다, 재미 안 좋다고 술 못 먹을 낸가. 그런데 여보게, 자네 왼몸이 어째 물독에 빠진 새앙쥐 같은가? 어서 이리 들어와 말리게.”
-
-선술집은 훈훈하고 뜨뜻하였다. 추어탕을 끓이는 솥뚜껑을 열 적마다 뭉게뭉게 떠오르는 흰 김, 석쇠에서 뻐지짓뻐지짓 구워지는 너비아니 구이며 제육이며 간이며 콩팥이며 북어며 빈대떡……이 너저분하게 늘어놓인 안주 탁자에 김 첨지는 갑자기 속이 쓰려서 견딜 수 없었다. 마음대로 할 양이면 거기 있는 모든 먹음 먹이를 모조리 깡그리 집어삼켜도 시원치 않았다. 하되 배고픈 이는 위선 분량 많은 빈대떡 두 개를 쪼이기도 하고 추어탕을 한 그릇 청하였다.
-
-주린 창자는 음식맛을 보더니 더욱더욱 비어지며 자꾸자꾸 들이라들이라 하였다. 순식간에 두부와 미꾸리 든 국 한 그릇을 그냥 물같이 들이키고 말았다. 세째 그릇을 받아들었을 제 데우던 막걸이 곱배기 두 잔이 더웠다. 치삼이와 같이 마시자 원원히 비었던 속이라 찌르르하고 창자에 퍼지며 얼굴이 화끈하였다. 눌러 곱배기 한 잔을 또 마셨다.
-
-김 첨지의 눈은 벌써 개개 풀리기 시작하였다. 석쇠에 얹힌 떡 두 개를 숭덩숭덩 썰어서 볼을 불룩거리며 또 곱배기 두 잔을 부어라 하였다.
-
-치삼은 의아한 듯이 김 첨지를 보며, “여보게 또 붓다니, 벌써 우리가 넉 잔씩 먹었네, 돈이 사십 전일세.”라고 주의시켰다.
-
-“아따 이놈아, 사십 전이 그리 끔찍하냐. 오늘 내가 돈을 막 벌었어. 참 오늘 운수가 좋았느니.”
-
-“그래 얼마를 벌었단 말인가?”
-
-“삼십 원을 벌었어, 삼십 원을! 이런 젠장맞을 술을 왜 안부어……괜찮다 괜찮다, 막 먹어도 상관이 없어. 오늘 돈 산더미같이 벌었는데.”
-
-“어, 이 사람 취했군, 그만두세.”
-
-“이놈아, 이걸 먹고 취할 내냐, 어서 더 먹어.”하고는 치삼의 귀를 잡아채며 취한 이는 부르짖었다. 그리고 술을 붓는 열 다섯 살 됨직한 중대가리에게로 달려들며, “이놈, 오라질 놈, 왜 술을 붓지 않어.”라고 야단을 쳤다. 중대가리는 히히 웃고 치삼을 보며 문의하는 듯이 눈짓을 하였다. 주정꾼이 눈치를 알아보고 화를 버럭내며, “에미를 붙을 이 오라질 놈들 같으니, 이놈 내가 돈이 없을 줄 알고.”하자마자 허리춤을 훔칫훔칫 하더니 일 원짜리 한 장을 꺼내어 중대가리 앞에 펄쩍 집어던졌다. 그 사품에 몇 푼 은전이 잘그랑 하며 떨어진다.
-
-“여보게 돈 떨어졌네, 왜 돈을 막 끼얹나.” 이런 말을 하며 일변 돈을 줍는다. 김 첨지는 취한 중에도 돈의 거처를 살피는 듯이 눈을 크게 떠서 땅을 내려다보다가 불시에 제 하는 짓이 너무 더럽다는 듯이 고개를 소스라치자 더욱 성을 내며, “봐라 봐! 이 더러운 놈들아, 내가 돈이 없나, 다리뼉다구를 꺾어놓을 놈들 같으니.”하고 치삼의 주워주는 돈을 받아, “이 원수엣 돈! 이 육시를 할 돈!”하면서, 풀매질을 친다. 벽에 맞아 떨어진 돈은 다시 술 끓이는 양푼에 떨어지며 정당한 매를 맞는다는 듯이 쨍하고 울었다.
-
-곱배기 두 잔은 또 부어질 겨를도 없이 말려가고 말았다. 김 첨지는 입술과 수염에 붙은 술을 빨아들이고 나서 매우 만족한 듯이 그 솔잎 송이 수염을 쓰다듬으며, “또 부어, 또 부어.”라고, 외쳤다.
-
-또 한 잔 먹고 나서 김 첨지는 치삼의 어깨를 치며 문득 껄껄 웃는다. 그 웃음 소리가 어떻게 컸는지 술집에 있는 이의 눈은 모두 김 첨지에게로 몰리었다. 웃는 이는 더욱 웃으며, “여보게 치삼이, 내 우스운 이야기 하나 할까. 오늘 손을 태고 정거장에까지 가지 않았겠나.”
-
-“그래서.”
-
-“갔다가 그저 오기가 안 됐데그려. 그래 전차 정류장에서 어름어름하며 손님 하나를 태울 궁리를 하지 않았나. 거기 마침 마나님이신지 여학생님이신지 - 요새야 어디 논다니와 아가씨를 구별할 수가 있던가 - <망토>를 두르고 비를 맞고 서 있겠지. 슬근슬근 가까이 가서 인력거 타시랍시요 하고 손가방을 받으랴니까 내 손을 탁 뿌리치고 홱 돌아서더니만 <왜 남을 이렇게 귀찮게 굴어!> 그 소리야말로 꾀꼬리 소리지, 허허!”
-
-김 첨지는 교묘하게도 정말 꾀꼬리 같은 소리를 내었다. 모든 사람은 일시에 웃었다.
-
-“빌어먹을 깍쟁이 같은 년, 누가 저를 어쩌나, <왜 남을 귀찮게 굴어!> 어이구 소리가 처신도 없지, 허허.”
-
-웃음 소리들은 높아졌다. 그러나 그 웃음 소리들이 사라지기 전에 김 첨지는 훌쩍훌쩍 울기 시작하였다.
-
-치삼은 어이없이 주정뱅이를 바라보며, “금방 웃고 지랄을 하더니 우는 건 또 무슨 일인가.”
-
-김 첨지는 연해 코를 들여마시며, “우리 마누라가 죽었다네.”
-
-“뭐, 마누라가 죽다니, 언제?”
-
-“이놈아 언제는. 오늘이지.”
-
-“엑기 미친 놈, 거짓말 말아.”
-
-“거짓말은 왜, 참말로 죽었어, 참말로... 마누라 시체를 집어 뻐들쳐놓고 내가 술을 먹다니, 내가 죽일 놈이야, 죽일 놈이야.”하고 김 첨지는 엉엉 소리를 내어 운다.
-
-치삼은 흥이 조금 깨어지는 얼굴로, “원 이 사람이, 참말을 하나 거짓말을 하나. 그러면 집으로 가세, 가.”하고 우는 이의 팔을 잡아당기었다.
-
-치삼의 끄는 손을 뿌리치더니 김 첨지는 눈물이 글썽글썽한 눈으로 싱그레 웃는다.
-
-“죽기는 누가 죽어.”하고 득의가 양양.
-
-“죽기는 왜 죽어, 생때같이 살아만 있단다. 그 오라질 년이 밥을 죽이지. 인제 나한테 속았다.”하고 어린애 모양으로 손뼉을 치며 웃는다.
-
-“이 사람이 정말 미쳤단 말인가. 나도 아주먼네가 앓는단 말은 들었는데.”하고, 치삼이도 어느 불안을 느끼는 듯이 김 첨지에게 또 돌아가라고 권하였다.
-
-“안 죽었어, 안 죽었대도그래.”
-
-김 첨지는 홧증을 내며 확신있게 소리를 질렀으되 그 소리엔 안 죽은 것을 믿으려고 애쓰는 가락이 있었다. 기어이 일 원어치를 채워서 곱배기 한 잔씩 더 먹고 나왔다. 궂은 비는 의연히 추적추적 내린다.
-
-김 첨지는 취중에도 설렁탕을 사가지고 집에 다달았다. 집이라 해도 물론 셋집이요, 또 집 전체를 세든 게 아니라 안과 뚝떨어진 행랑방 한 간을 빌려 든 것인데 물을 길어대고 한 달에 일 원씩 내는 터이다. 만일 김 첨지가 주기를 띠지 않았던들 한 발을 대문에 들여놓았을 제 그곳을 지배하는 무시무시한 정적(靜寂) - 폭풍우가 지나간 뒤의 바다 같은 정적에 다리가 떨렸으리라.
-
-쿨룩거리는 기침 소리도 들을 수 없다. 그르렁거리는 숨소리조차 들을 수 없다. 다만 이 무덤같은 침묵을 깨뜨리는 - 깨뜨린다느니보다 한층 더 침묵을 깊게 하고 불길하게 하는 빡빡하는 그윽한 소리, 어린애의 젖 빠는 소리가 날 뿐이다. 만일 청각(聽覺)이 예민한 이 같으면 그 빡빡 소리는 빨 따름이요, 꿀떡꿀떡 하고 젖 넘어가는 소리가 없으니 빈 젖을 빤다는 것도 짐작할는지 모르리라.
-
-혹은 김 첨지도 이 불길한 침묵을 짐작했는지도 모른다. 그렇지 않으면 대문에 들어서자마자 전에 없이, “이 난장 맞을 년, 남편이 들어오는데 나와보지도 않아, 이 오라질 년.”이라고 고함을 친 게 수상하다. 이 고함이야말로 제 몸을 엄습해오는 무시무시한 증을 쫓아버리려는 허장성세(虛張聲勢)인 까닭이다.
-
-하여간 김 첨지는 방문을 왈칵 열었다. 구역을 나게 하는 추기 - 떨어진 삿자리 밑에서 나온 먼지내, 빨지 않은 기저귀에서 나는 똥내와 오줌내, 가지각색 때가 케케히 앉은 옷내, 병인의 땀 썩은 내가 섞인 추기가 무딘 김 첨지의 코를 찔렀다.
-
-방안에 들어서며 설렁탕을 한구석에 놓을 사이도 없이 주정군은 목청을 있는 대로 다 내어 호통을 쳤다.
-
-“이런 오라질 년, 주야장천(晝夜長川) 누워만 있으면 제일이야! 남편이 와도 일어나지를 못해.”라는 소리와 함께 발길로 누운 이의 다리를 몹시 찼다. 그러나 발길에 채이는 건 사람의 살이 아니고 나무등걸과 같은 느낌이 있었다. 이때에 빽빽 소리가 응아 소리로 변하였다. 개똥이가 물었던 젖을 빼어놓고 운다. 운대도 온 얼굴을 찡그려 붙여서, 운다는 표정을 할 뿐이다. 응아 소리도 입에서 나는 게 아니고 마치 뱃속에서 나는 듯하였다. 울다가 울다가 목도 잠겼고 또 울 기운조차 시진한 것 같다.
-
-발로 차도 그 보람이 없는 걸 보자 남편은 아내의 머리맡으로 달려들어 그야말로 까치집 같은 환자의 머리를 꺼들어 흔들며, “이 년아, 말을 해, 말을! 입이 붙었어, 이 오라질 년!”
-
-“…”
-
-“으응, 이것 봐, 아무 말이 없네.”
-“…”
-
-“이년아, 죽었단 말이냐, 왜 말이 없어.”
-
-“…”
-
-“으응. 또 대답이 없네, 정말 죽었나버이.”
-
-이러다가 누운 이의 흰 창을 덮은, 위로 치뜬 눈을 알아보자마자, “이 눈깔! 이 눈깔! 왜 나를 바라보지 못하고 천정만 보느냐, 응.”하는 말 끝엔 목이 메었다. 그러자 산 사람의 눈에서 떨어진 닭의 똥 같은 눈물이 죽은 이의 뻣뻣한 얼굴을 어룽어룽 적시었다. 문득 김 첨지는 미칠 듯이 제 얼굴을 죽은 이의 얼굴에 한테 비비대며 중얼거렸다.
-
-“설렁탕을 사다놓았는데 왜 먹지를 못하니, 왜 먹지를 못하니... 괴상하게도 오늘은! 운수가 좋더니만... ”
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/traditionalchinese/big5.go b/Godeps/_workspace/src/golang.org/x/text/encoding/traditionalchinese/big5.go
index d184cfb5e..275821f5d 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/traditionalchinese/big5.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/traditionalchinese/big5.go
@@ -115,6 +115,13 @@ func (big5Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err e
// Decode a 1-byte rune.
if r < utf8.RuneSelf {
size = 1
+ if nDst >= len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ dst[nDst] = uint8(r)
+ nDst++
+ continue
} else {
// Decode a multi-byte rune.
@@ -166,16 +173,9 @@ func (big5Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err e
goto write2
}
}
- r = encoding.ASCIISub
- }
-
- if nDst >= len(dst) {
- err = transform.ErrShortDst
+ err = internal.ErrASCIIReplacement
break
}
- dst[nDst] = uint8(r)
- nDst++
- continue
write2:
if nDst+2 > len(dst) {
diff --git a/Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go b/Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go
index 2c5ea8311..46622013c 100644
--- a/Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go
+++ b/Godeps/_workspace/src/golang.org/x/text/encoding/unicode/unicode.go
@@ -11,7 +11,10 @@ import (
"unicode/utf8"
"golang.org/x/text/encoding"
+ "golang.org/x/text/encoding/internal"
"golang.org/x/text/encoding/internal/identifier"
+ "golang.org/x/text/internal/utf8internal"
+ "golang.org/x/text/runes"
"golang.org/x/text/transform"
)
@@ -23,9 +26,105 @@ import (
// point.
// TODO:
-// - Define UTF-8 (mostly for BOM handling.)
// - Define UTF-32?
+// UTF8 is the UTF-8 encoding.
+var UTF8 encoding.Encoding = utf8enc
+
+var utf8enc = &internal.Encoding{
+ &internal.SimpleEncoding{utf8Decoder{}, runes.ReplaceIllFormed()},
+ "UTF-8",
+ identifier.UTF8,
+}
+
+type utf8Decoder struct{ transform.NopResetter }
+
+func (utf8Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+ var pSrc int // point from which to start copy in src
+ var accept utf8internal.AcceptRange
+
+ // The decoder can only make the input larger, not smaller.
+ n := len(src)
+ if len(dst) < n {
+ err = transform.ErrShortDst
+ n = len(dst)
+ atEOF = false
+ }
+ for nSrc < n {
+ c := src[nSrc]
+ if c < utf8.RuneSelf {
+ nSrc++
+ continue
+ }
+ first := utf8internal.First[c]
+ size := int(first & utf8internal.SizeMask)
+ if first == utf8internal.FirstInvalid {
+ goto handleInvalid // invalid starter byte
+ }
+ accept = utf8internal.AcceptRanges[first>>utf8internal.AcceptShift]
+ if nSrc+size > n {
+ if !atEOF {
+ // We may stop earlier than necessary here if the short sequence
+ // has invalid bytes. Not checking for this simplifies the code
+ // and may avoid duplicate computations in certain conditions.
+ if err == nil {
+ err = transform.ErrShortSrc
+ }
+ break
+ }
+ // Determine the maximal subpart of an ill-formed subsequence.
+ switch {
+ case nSrc+1 >= n || src[nSrc+1] < accept.Lo || accept.Hi < src[nSrc+1]:
+ size = 1
+ case nSrc+2 >= n || src[nSrc+2] < utf8internal.LoCB || utf8internal.HiCB < src[nSrc+2]:
+ size = 2
+ default:
+ size = 3 // As we are short, the maximum is 3.
+ }
+ goto handleInvalid
+ }
+ if c = src[nSrc+1]; c < accept.Lo || accept.Hi < c {
+ size = 1
+ goto handleInvalid // invalid continuation byte
+ } else if size == 2 {
+ } else if c = src[nSrc+2]; c < utf8internal.LoCB || utf8internal.HiCB < c {
+ size = 2
+ goto handleInvalid // invalid continuation byte
+ } else if size == 3 {
+ } else if c = src[nSrc+3]; c < utf8internal.LoCB || utf8internal.HiCB < c {
+ size = 3
+ goto handleInvalid // invalid continuation byte
+ }
+ nSrc += size
+ continue
+
+ handleInvalid:
+ // Copy the scanned input so far.
+ nDst += copy(dst[nDst:], src[pSrc:nSrc])
+
+ // Append RuneError to the destination.
+ const runeError = "\ufffd"
+ if nDst+len(runeError) > len(dst) {
+ return nDst, nSrc, transform.ErrShortDst
+ }
+ nDst += copy(dst[nDst:], runeError)
+
+ // Skip the maximal subpart of an ill-formed subsequence according to
+ // the W3C standard way instead of the Go way. This Transform is
+ // probably the only place in the text repo where it is warranted.
+ nSrc += size
+ pSrc = nSrc
+
+ // Recompute the maximum source length.
+ if sz := len(dst) - nDst; sz < len(src)-nSrc {
+ err = transform.ErrShortDst
+ n = nSrc + sz
+ atEOF = false
+ }
+ }
+ return nDst + copy(dst[nDst:], src[pSrc:nSrc]), nSrc, err
+}
+
// UTF16 returns a UTF-16 Encoding for the given default endianness and byte
// order mark (BOM) policy.
//
@@ -77,22 +176,27 @@ var mibValue = map[Endianness][numBOMValues]identifier.MIB{
// All lists a configuration for each IANA-defined UTF-16 variant.
var All = []encoding.Encoding{
+ UTF8,
UTF16(BigEndian, UseBOM),
UTF16(BigEndian, IgnoreBOM),
UTF16(LittleEndian, IgnoreBOM),
}
-// TODO: also include UTF-8
-
// BOMPolicy is a UTF-16 encoding's byte order mark policy.
type BOMPolicy uint8
const (
- writeBOM BOMPolicy = 0x01
- acceptBOM BOMPolicy = 0x02
- requireBOM BOMPolicy = 0x04
- bomMask BOMPolicy = 0x07
- numBOMValues = 8
+ writeBOM BOMPolicy = 0x01
+ acceptBOM BOMPolicy = 0x02
+ requireBOM BOMPolicy = 0x04
+ bomMask BOMPolicy = 0x07
+
+ // HACK: numBOMValues == 8 triggers a bug in the 1.4 compiler (cannot have a
+ // map of an array of length 8 of a type that is also used as a key or value
+ // in another map). See golang.org/issue/11354.
+ // TODO: consider changing this value back to 8 if the use of 1.4.* has
+ // been minimized.
+ numBOMValues = 8 + 1
// IgnoreBOM means to ignore any byte order marks.
IgnoreBOM BOMPolicy = 0
@@ -141,19 +245,19 @@ type config struct {
bomPolicy BOMPolicy
}
-func (u utf16Encoding) NewDecoder() transform.Transformer {
- return &utf16Decoder{
+func (u utf16Encoding) NewDecoder() *encoding.Decoder {
+ return &encoding.Decoder{Transformer: &utf16Decoder{
initial: u.config,
current: u.config,
- }
+ }}
}
-func (u utf16Encoding) NewEncoder() transform.Transformer {
- return &utf16Encoder{
+func (u utf16Encoding) NewEncoder() *encoding.Encoder {
+ return &encoding.Encoder{Transformer: &utf16Encoder{
endianness: u.endianness,
initialBOMPolicy: u.bomPolicy,
currentBOMPolicy: u.bomPolicy,
- }
+ }}
}
func (u utf16Encoding) ID() (mib identifier.MIB, other string) {
diff --git a/Godeps/_workspace/src/golang.org/x/text/internal/tag/tag.go b/Godeps/_workspace/src/golang.org/x/text/internal/tag/tag.go
new file mode 100644
index 000000000..2cf4ecd29
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/internal/tag/tag.go
@@ -0,0 +1,100 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package tag contains functionality handling tags and related data.
+package tag
+
+import "sort"
+
+// An Index converts tags to a compact numeric value.
+//
+// All elements are of size 4. Tags may be up to 4 bytes long. Excess bytes can
+// be used to store additional information about the tag.
+type Index string
+
+// Elem returns the element data at the given index.
+func (s Index) Elem(x int) string {
+ return string(s[x*4 : x*4+4])
+}
+
+// Index reports the index of the given key or -1 if it could not be found.
+// Only the first len(key) bytes from the start of the 4-byte entries will be
+// considered for the search and the first match in Index will be returned.
+func (s Index) Index(key []byte) int {
+ n := len(key)
+ // search the index of the first entry with an equal or higher value than
+ // key in s.
+ index := sort.Search(len(s)/4, func(i int) bool {
+ return cmp(s[i*4:i*4+n], key) != -1
+ })
+ i := index * 4
+ if cmp(s[i:i+len(key)], key) != 0 {
+ return -1
+ }
+ return index
+}
+
+// Next finds the next occurrence of key after index x, which must have been
+// obtained from a call to Index using the same key. It returns x+1 or -1.
+func (s Index) Next(key []byte, x int) int {
+ if x++; x*4 < len(s) && cmp(s[x*4:x*4+len(key)], key) == 0 {
+ return x
+ }
+ return -1
+}
+
+// cmp returns an integer comparing a and b lexicographically.
+func cmp(a Index, b []byte) int {
+ n := len(a)
+ if len(b) < n {
+ n = len(b)
+ }
+ for i, c := range b[:n] {
+ switch {
+ case a[i] > c:
+ return 1
+ case a[i] < c:
+ return -1
+ }
+ }
+ switch {
+ case len(a) < len(b):
+ return -1
+ case len(a) > len(b):
+ return 1
+ }
+ return 0
+}
+
+// Compare returns an integer comparing a and b lexicographically.
+func Compare(a string, b []byte) int {
+ return cmp(Index(a), b)
+}
+
+// FixCase reformats b to the same pattern of cases as form.
+// If returns false if string b is malformed.
+func FixCase(form string, b []byte) bool {
+ if len(form) != len(b) {
+ return false
+ }
+ for i, c := range b {
+ if form[i] <= 'Z' {
+ if c >= 'a' {
+ c -= 'z' - 'Z'
+ }
+ if c < 'A' || 'Z' < c {
+ return false
+ }
+ } else {
+ if c <= 'Z' {
+ c += 'z' - 'Z'
+ }
+ if c < 'a' || 'z' < c {
+ return false
+ }
+ }
+ b[i] = c
+ }
+ return true
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/internal/utf8internal/utf8internal.go b/Godeps/_workspace/src/golang.org/x/text/internal/utf8internal/utf8internal.go
new file mode 100644
index 000000000..575cea870
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/internal/utf8internal/utf8internal.go
@@ -0,0 +1,87 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package utf8internal contains low-level utf8-related constants, tables, etc.
+// that are used internally by the text package.
+package utf8internal
+
+// The default lowest and highest continuation byte.
+const (
+ LoCB = 0x80 // 1000 0000
+ HiCB = 0xBF // 1011 1111
+)
+
+// Constants related to getting information of first bytes of UTF-8 sequences.
+const (
+ // ASCII identifies a UTF-8 byte as ASCII.
+ ASCII = as
+
+ // FirstInvalid indicates a byte is invalid as a first byte of a UTF-8
+ // sequence.
+ FirstInvalid = xx
+
+ // SizeMask is a mask for the size bits. Use use x&SizeMask to get the size.
+ SizeMask = 7
+
+ // AcceptShift is the right-shift count for the first byte info byte to get
+ // the index into the AcceptRanges table. See AcceptRanges.
+ AcceptShift = 4
+
+ // The names of these constants are chosen to give nice alignment in the
+ // table below. The first nibble is an index into acceptRanges or F for
+ // special one-byte cases. The second nibble is the Rune length or the
+ // Status for the special one-byte case.
+ xx = 0xF1 // invalid: size 1
+ as = 0xF0 // ASCII: size 1
+ s1 = 0x02 // accept 0, size 2
+ s2 = 0x13 // accept 1, size 3
+ s3 = 0x03 // accept 0, size 3
+ s4 = 0x23 // accept 2, size 3
+ s5 = 0x34 // accept 3, size 4
+ s6 = 0x04 // accept 0, size 4
+ s7 = 0x44 // accept 4, size 4
+)
+
+// First is information about the first byte in a UTF-8 sequence.
+var First = [256]uint8{
+ // 1 2 3 4 5 6 7 8 9 A B C D E F
+ as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x00-0x0F
+ as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x10-0x1F
+ as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x20-0x2F
+ as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x30-0x3F
+ as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x40-0x4F
+ as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x50-0x5F
+ as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x60-0x6F
+ as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x70-0x7F
+ // 1 2 3 4 5 6 7 8 9 A B C D E F
+ xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x80-0x8F
+ xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x90-0x9F
+ xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xA0-0xAF
+ xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xB0-0xBF
+ xx, xx, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xC0-0xCF
+ s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xD0-0xDF
+ s2, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s4, s3, s3, // 0xE0-0xEF
+ s5, s6, s6, s6, s7, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xF0-0xFF
+}
+
+// AcceptRange gives the range of valid values for the second byte in a UTF-8
+// sequence for any value for First that is not ASCII or FirstInvalid.
+type AcceptRange struct {
+ Lo uint8 // lowest value for second byte.
+ Hi uint8 // highest value for second byte.
+}
+
+// AcceptRanges is a slice of AcceptRange values. For a given byte sequence b
+//
+// AcceptRanges[First[b[0]]>>AcceptShift]
+//
+// will give the value of AcceptRange for the multi-byte UTF-8 sequence starting
+// at b[0].
+var AcceptRanges = [...]AcceptRange{
+ 0: {LoCB, HiCB},
+ 1: {0xA0, HiCB},
+ 2: {LoCB, 0x9F},
+ 3: {0x90, HiCB},
+ 4: {LoCB, 0x8F},
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/Makefile b/Godeps/_workspace/src/golang.org/x/text/language/Makefile
new file mode 100644
index 000000000..79f005784
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/Makefile
@@ -0,0 +1,16 @@
+# Copyright 2013 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+CLEANFILES+=maketables
+
+maketables: maketables.go
+ go build $^
+
+tables: maketables
+ ./maketables > tables.go
+ gofmt -w -s tables.go
+
+# Build (but do not run) maketables during testing,
+# just to make sure it still compiles.
+testshort: maketables
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/common.go b/Godeps/_workspace/src/golang.org/x/text/language/common.go
new file mode 100644
index 000000000..a255bb0a5
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/common.go
@@ -0,0 +1,16 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package language
+
+// This file contains code common to the maketables.go and the package code.
+
+// langAliasType is the type of an alias in langAliasMap.
+type langAliasType int8
+
+const (
+ langDeprecated langAliasType = iota
+ langMacro
+ langLegacy
+
+ langAliasTypeUnknown langAliasType = -1
+)
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/coverage.go b/Godeps/_workspace/src/golang.org/x/text/language/coverage.go
new file mode 100644
index 000000000..101fd23c1
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/coverage.go
@@ -0,0 +1,197 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package language
+
+import (
+ "fmt"
+ "sort"
+)
+
+// The Coverage interface is used to define the level of coverage of an
+// internationalization service. Note that not all types are supported by all
+// services. As lists may be generated on the fly, it is recommended that users
+// of a Coverage cache the results.
+type Coverage interface {
+ // Tags returns the list of supported tags.
+ Tags() []Tag
+
+ // BaseLanguages returns the list of supported base languages.
+ BaseLanguages() []Base
+
+ // Scripts returns the list of supported scripts.
+ Scripts() []Script
+
+ // Regions returns the list of supported regions.
+ Regions() []Region
+}
+
+var (
+ // Supported defines a Coverage that lists all supported subtags. Tags
+ // always returns nil.
+ Supported Coverage = allSubtags{}
+)
+
+// TODO:
+// - Support Variants, numbering systems.
+// - CLDR coverage levels.
+// - Set of common tags defined in this package.
+
+type allSubtags struct{}
+
+// Regions returns the list of supported regions. As all regions are in a
+// consecutive range, it simply returns a slice of numbers in increasing order.
+// The "undefined" region is not returned.
+func (s allSubtags) Regions() []Region {
+ reg := make([]Region, numRegions)
+ for i := range reg {
+ reg[i] = Region{regionID(i + 1)}
+ }
+ return reg
+}
+
+// Scripts returns the list of supported scripts. As all scripts are in a
+// consecutive range, it simply returns a slice of numbers in increasing order.
+// The "undefined" script is not returned.
+func (s allSubtags) Scripts() []Script {
+ scr := make([]Script, numScripts)
+ for i := range scr {
+ scr[i] = Script{scriptID(i + 1)}
+ }
+ return scr
+}
+
+// BaseLanguages returns the list of all supported base languages. It generates
+// the list by traversing the internal structures.
+func (s allSubtags) BaseLanguages() []Base {
+ base := make([]Base, 0, numLanguages)
+ for i := 0; i < langNoIndexOffset; i++ {
+ // We included "und" already for the value 0.
+ if i != nonCanonicalUnd {
+ base = append(base, Base{langID(i)})
+ }
+ }
+ i := langNoIndexOffset
+ for _, v := range langNoIndex {
+ for k := 0; k < 8; k++ {
+ if v&1 == 1 {
+ base = append(base, Base{langID(i)})
+ }
+ v >>= 1
+ i++
+ }
+ }
+ return base
+}
+
+// Tags always returns nil.
+func (s allSubtags) Tags() []Tag {
+ return nil
+}
+
+// coverage is used used by NewCoverage which is used as a convenient way for
+// creating Coverage implementations for partially defined data. Very often a
+// package will only need to define a subset of slices. coverage provides a
+// convenient way to do this. Moreover, packages using NewCoverage, instead of
+// their own implementation, will not break if later new slice types are added.
+type coverage struct {
+ tags func() []Tag
+ bases func() []Base
+ scripts func() []Script
+ regions func() []Region
+}
+
+func (s *coverage) Tags() []Tag {
+ if s.tags == nil {
+ return nil
+ }
+ return s.tags()
+}
+
+// bases implements sort.Interface and is used to sort base languages.
+type bases []Base
+
+func (b bases) Len() int {
+ return len(b)
+}
+
+func (b bases) Swap(i, j int) {
+ b[i], b[j] = b[j], b[i]
+}
+
+func (b bases) Less(i, j int) bool {
+ return b[i].langID < b[j].langID
+}
+
+// BaseLanguages returns the result from calling s.bases if it is specified or
+// otherwise derives the set of supported base languages from tags.
+func (s *coverage) BaseLanguages() []Base {
+ if s.bases == nil {
+ tags := s.Tags()
+ if len(tags) == 0 {
+ return nil
+ }
+ a := make([]Base, len(tags))
+ for i, t := range tags {
+ a[i] = Base{langID(t.lang)}
+ }
+ sort.Sort(bases(a))
+ k := 0
+ for i := 1; i < len(a); i++ {
+ if a[k] != a[i] {
+ k++
+ a[k] = a[i]
+ }
+ }
+ return a[:k+1]
+ }
+ return s.bases()
+}
+
+func (s *coverage) Scripts() []Script {
+ if s.scripts == nil {
+ return nil
+ }
+ return s.scripts()
+}
+
+func (s *coverage) Regions() []Region {
+ if s.regions == nil {
+ return nil
+ }
+ return s.regions()
+}
+
+// NewCoverage returns a Coverage for the given lists. It is typically used by
+// packages providing internationalization services to define their level of
+// coverage. A list may be of type []T or func() []T, where T is either Tag,
+// Base, Script or Region. The returned Coverage derives the value for Bases
+// from Tags if no func or slice for []Base is specified. For other unspecified
+// types the returned Coverage will return nil for the respective methods.
+func NewCoverage(list ...interface{}) Coverage {
+ s := &coverage{}
+ for _, x := range list {
+ switch v := x.(type) {
+ case func() []Base:
+ s.bases = v
+ case func() []Script:
+ s.scripts = v
+ case func() []Region:
+ s.regions = v
+ case func() []Tag:
+ s.tags = v
+ case []Base:
+ s.bases = func() []Base { return v }
+ case []Script:
+ s.scripts = func() []Script { return v }
+ case []Region:
+ s.regions = func() []Region { return v }
+ case []Tag:
+ s.tags = func() []Tag { return v }
+ default:
+ panic(fmt.Sprintf("language: unsupported set type %T", v))
+ }
+ }
+ return s
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/dict.go b/Godeps/_workspace/src/golang.org/x/text/language/display/dict.go
new file mode 100644
index 000000000..52c11a932
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/display/dict.go
@@ -0,0 +1,92 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package display
+
+// This file contains sets of data for specific languages. Users can use these
+// to create smaller collections of supported languages and reduce total table
+// size.
+
+// The variable names defined here correspond to those in package language.
+
+var (
+ Afrikaans *Dictionary = &af // af
+ Amharic *Dictionary = &am // am
+ Arabic *Dictionary = &ar // ar
+ ModernStandardArabic *Dictionary = Arabic // ar-001
+ Azerbaijani *Dictionary = &az // az
+ Bulgarian *Dictionary = &bg // bg
+ Bengali *Dictionary = &bn // bn
+ Catalan *Dictionary = &ca // ca
+ Czech *Dictionary = &cs // cs
+ Danish *Dictionary = &da // da
+ German *Dictionary = &de // de
+ Greek *Dictionary = &el // el
+ English *Dictionary = &en // en
+ AmericanEnglish *Dictionary = English // en-US
+ BritishEnglish *Dictionary = English // en-GB
+ Spanish *Dictionary = &es // es
+ EuropeanSpanish *Dictionary = Spanish // es-ES
+ LatinAmericanSpanish *Dictionary = Spanish // es-419
+ Estonian *Dictionary = &et // et
+ Persian *Dictionary = &fa // fa
+ Finnish *Dictionary = &fi // fi
+ Filipino *Dictionary = &fil // fil
+ French *Dictionary = &fr // fr
+ Gujarati *Dictionary = &gu // gu
+ Hebrew *Dictionary = &he // he
+ Hindi *Dictionary = &hi // hi
+ Croatian *Dictionary = &hr // hr
+ Hungarian *Dictionary = &hu // hu
+ Armenian *Dictionary = &hy // hy
+ Indonesian *Dictionary = &id // id
+ Icelandic *Dictionary = &is // is
+ Italian *Dictionary = &it // it
+ Japanese *Dictionary = &ja // ja
+ Georgian *Dictionary = &ka // ka
+ Kazakh *Dictionary = &kk // kk
+ Khmer *Dictionary = &km // km
+ Kannada *Dictionary = &kn // kn
+ Korean *Dictionary = &ko // ko
+ Kirghiz *Dictionary = &ky // ky
+ Lao *Dictionary = &lo // lo
+ Lithuanian *Dictionary = &lt // lt
+ Latvian *Dictionary = &lv // lv
+ Macedonian *Dictionary = &mk // mk
+ Malayalam *Dictionary = &ml // ml
+ Mongolian *Dictionary = &mn // mn
+ Marathi *Dictionary = &mr // mr
+ Malay *Dictionary = &ms // ms
+ Burmese *Dictionary = &my // my
+ Nepali *Dictionary = &ne // ne
+ Dutch *Dictionary = &nl // nl
+ Norwegian *Dictionary = &no // no
+ Punjabi *Dictionary = &pa // pa
+ Polish *Dictionary = &pl // pl
+ Portuguese *Dictionary = &pt // pt
+ BrazilianPortuguese *Dictionary = Portuguese // pt-BR
+ EuropeanPortuguese *Dictionary = &ptPT // pt-PT
+ Romanian *Dictionary = &ro // ro
+ Russian *Dictionary = &ru // ru
+ Sinhala *Dictionary = &si // si
+ Slovak *Dictionary = &sk // sk
+ Slovenian *Dictionary = &sl // sl
+ Albanian *Dictionary = &sq // sq
+ Serbian *Dictionary = &sr // sr
+ SerbianLatin *Dictionary = &srLatn // sr
+ Swedish *Dictionary = &sv // sv
+ Swahili *Dictionary = &sw // sw
+ Tamil *Dictionary = &ta // ta
+ Telugu *Dictionary = &te // te
+ Thai *Dictionary = &th // th
+ Turkish *Dictionary = &tr // tr
+ Ukrainian *Dictionary = &uk // uk
+ Urdu *Dictionary = &ur // ur
+ Uzbek *Dictionary = &uz // uz
+ Vietnamese *Dictionary = &vi // vi
+ Chinese *Dictionary = &zh // zh
+ SimplifiedChinese *Dictionary = Chinese // zh-Hans
+ TraditionalChinese *Dictionary = &zhHant // zh-Hant
+ Zulu *Dictionary = &zu // zu
+)
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/display.go b/Godeps/_workspace/src/golang.org/x/text/language/display/display.go
new file mode 100644
index 000000000..6091cc500
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/display/display.go
@@ -0,0 +1,343 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:generate go run maketables.go -output tables.go
+
+// Package display provides display names for languages, scripts and regions in
+// a requested language.
+//
+// The data is based on CLDR's localeDisplayNames. It includes the names of the
+// draft level "contributed" or "approved". The resulting tables are quite
+// large. The display package is designed so that users can reduce the linked-in
+// table sizes by cherry picking the languages one wishes to support. There is a
+// Dictionary defined for a selected set of common languages for this purpose.
+package display
+
+import (
+ "strings"
+
+ "golang.org/x/text/language"
+)
+
+/*
+TODO:
+All fairly low priority at the moment:
+ - Include alternative and variants as an option (using func options).
+ - Option for returning the empty string for undefined values.
+ - Support variants, currencies, time zones, option names and other data
+ provided in CLDR.
+ - Do various optimizations:
+ - Reduce size of offset tables.
+ - Consider compressing infrequently used languages and decompress on demand.
+*/
+
+// A Namer is used to get the name for a given value, such as a Tag, Language,
+// Script or Region.
+type Namer interface {
+ // Name returns a display string for the given value. A Namer returns an
+ // empty string for values it does not support. A Namer may support naming
+ // an unspecified value. For example, when getting the name for a region for
+ // a tag that does not have a defined Region, it may return the name for an
+ // unknown region. It is up to the user to filter calls to Name for values
+ // for which one does not want to have a name string.
+ Name(x interface{}) string
+}
+
+var (
+ // Supported lists the languages for which names are defined.
+ Supported language.Coverage
+
+ // The set of all possible values for which names are defined. Note that not
+ // all Namer implementations will cover all the values of a given type.
+ // A Namer will return the empty string for unsupported values.
+ Values language.Coverage
+
+ matcher language.Matcher
+)
+
+func init() {
+ tags := make([]language.Tag, numSupported)
+ s := supported
+ for i := range tags {
+ p := strings.IndexByte(s, '|')
+ tags[i] = language.Raw.Make(s[:p])
+ s = s[p+1:]
+ }
+ matcher = language.NewMatcher(tags)
+ Supported = language.NewCoverage(tags)
+
+ Values = language.NewCoverage(langTagSet.Tags, supportedScripts, supportedRegions)
+}
+
+// Languages returns a Namer for naming languages. It returns nil if there is no
+// data for the given tag. The type passed to Name must be either language.Base
+// or language.Tag. Note that the result may differ between passing a tag or its
+// base language. For example, for English, passing "nl-BE" would return Flemish
+// whereas passing "nl" returns "Dutch".
+func Languages(t language.Tag) Namer {
+ if _, index, conf := matcher.Match(t); conf != language.No {
+ return languageNamer(index)
+ }
+ return nil
+}
+
+type languageNamer int
+
+func (n languageNamer) name(i int) string {
+ return lookup(langHeaders[:], int(n), i)
+}
+
+// Name implements the Namer interface for language names.
+func (n languageNamer) Name(x interface{}) string {
+ return nameLanguage(n, x)
+}
+
+// nonEmptyIndex walks up the parent chain until a non-empty header is found.
+// It returns -1 if no index could be found.
+func nonEmptyIndex(h []header, index int) int {
+ for ; index != -1 && h[index].data == ""; index = int(parents[index]) {
+ }
+ return index
+}
+
+// Scripts returns a Namer for naming scripts. It returns nil if there is no
+// data for the given tag. The type passed to Name must be either a
+// language.Script or a language.Tag. It will not attempt to infer a script for
+// tags with an unspecified script.
+func Scripts(t language.Tag) Namer {
+ if _, index, conf := matcher.Match(t); conf != language.No {
+ if index = nonEmptyIndex(scriptHeaders[:], index); index != -1 {
+ return scriptNamer(index)
+ }
+ }
+ return nil
+}
+
+type scriptNamer int
+
+func (n scriptNamer) name(i int) string {
+ return lookup(scriptHeaders[:], int(n), i)
+}
+
+// Name implements the Namer interface for script names.
+func (n scriptNamer) Name(x interface{}) string {
+ return nameScript(n, x)
+}
+
+// Regions returns a Namer for naming regions. It returns nil if there is no
+// data for the given tag. The type passed to Name must be either a
+// language.Region or a language.Tag. It will not attempt to infer a region for
+// tags with an unspecified region.
+func Regions(t language.Tag) Namer {
+ if _, index, conf := matcher.Match(t); conf != language.No {
+ if index = nonEmptyIndex(regionHeaders[:], index); index != -1 {
+ return regionNamer(index)
+ }
+ }
+ return nil
+}
+
+type regionNamer int
+
+func (n regionNamer) name(i int) string {
+ return lookup(regionHeaders[:], int(n), i)
+}
+
+// Name implements the Namer interface for region names.
+func (n regionNamer) Name(x interface{}) string {
+ return nameRegion(n, x)
+}
+
+// Tags returns a Namer for giving a full description of a tag. The names of
+// scripts and regions that are not already implied by the language name will
+// in appended within parentheses. It returns nil if there is not data for the
+// given tag. The type passed to Name must be a tag.
+func Tags(t language.Tag) Namer {
+ if _, index, conf := matcher.Match(t); conf != language.No {
+ return tagNamer(index)
+ }
+ return nil
+}
+
+type tagNamer int
+
+// Name implements the Namer interface for tag names.
+func (n tagNamer) Name(x interface{}) string {
+ return nameTag(languageNamer(n), scriptNamer(n), regionNamer(n), x)
+}
+
+// lookup finds the name for an entry in a global table, traversing the
+// inheritance hierarchy if needed.
+func lookup(table []header, dict, want int) string {
+ for dict != -1 {
+ if s := table[dict].name(want); s != "" {
+ return s
+ }
+ dict = int(parents[dict])
+ }
+ return ""
+}
+
+// A Dictionary holds a collection of Namers for a single language. One can
+// reduce the amount of data linked in to a binary by only referencing
+// Dictionaries for the languages one needs to support instead of using the
+// generic Namer factories.
+type Dictionary struct {
+ parent *Dictionary
+ lang header
+ script header
+ region header
+}
+
+// Tags returns a Namer for giving a full description of a tag. The names of
+// scripts and regions that are not already implied by the language name will
+// in appended within parentheses. It returns nil if there is not data for the
+// given tag. The type passed to Name must be a tag.
+func (d *Dictionary) Tags() Namer {
+ return dictTags{d}
+}
+
+type dictTags struct {
+ d *Dictionary
+}
+
+// Name implements the Namer interface for tag names.
+func (n dictTags) Name(x interface{}) string {
+ return nameTag(dictLanguages{n.d}, dictScripts{n.d}, dictRegions{n.d}, x)
+}
+
+// Languages returns a Namer for naming languages. It returns nil if there is no
+// data for the given tag. The type passed to Name must be either language.Base
+// or language.Tag. Note that the result may differ between passing a tag or its
+// base language. For example, for English, passing "nl-BE" would return Flemish
+// whereas passing "nl" returns "Dutch".
+func (d *Dictionary) Languages() Namer {
+ return dictLanguages{d}
+}
+
+type dictLanguages struct {
+ d *Dictionary
+}
+
+func (n dictLanguages) name(i int) string {
+ for d := n.d; d != nil; d = d.parent {
+ if s := d.lang.name(i); s != "" {
+ return s
+ }
+ }
+ return ""
+}
+
+// Name implements the Namer interface for language names.
+func (n dictLanguages) Name(x interface{}) string {
+ return nameLanguage(n, x)
+}
+
+// Scripts returns a Namer for naming scripts. It returns nil if there is no
+// data for the given tag. The type passed to Name must be either a
+// language.Script or a language.Tag. It will not attempt to infer a script for
+// tags with an unspecified script.
+func (d *Dictionary) Scripts() Namer {
+ return dictScripts{d}
+}
+
+type dictScripts struct {
+ d *Dictionary
+}
+
+func (n dictScripts) name(i int) string {
+ for d := n.d; d != nil; d = d.parent {
+ if s := d.script.name(i); s != "" {
+ return s
+ }
+ }
+ return ""
+}
+
+// Name implements the Namer interface for script names.
+func (n dictScripts) Name(x interface{}) string {
+ return nameScript(n, x)
+}
+
+// Regions returns a Namer for naming regions. It returns nil if there is no
+// data for the given tag. The type passed to Name must be either a
+// language.Region or a language.Tag. It will not attempt to infer a region for
+// tags with an unspecified region.
+func (d *Dictionary) Regions() Namer {
+ return dictRegions{d}
+}
+
+type dictRegions struct {
+ d *Dictionary
+}
+
+func (n dictRegions) name(i int) string {
+ for d := n.d; d != nil; d = d.parent {
+ if s := d.region.name(i); s != "" {
+ return s
+ }
+ }
+ return ""
+}
+
+// Name implements the Namer interface for region names.
+func (n dictRegions) Name(x interface{}) string {
+ return nameRegion(n, x)
+}
+
+// A SelfNamer implements a Namer that returns the name of language in this same
+// language. It provides a very compact mechanism to provide a comprehensive
+// list of languages to users in their native language.
+type SelfNamer struct {
+ // Supported defines the values supported by this Namer.
+ Supported language.Coverage
+}
+
+var (
+ // Self is a shared instance of a SelfNamer.
+ Self *SelfNamer = &self
+
+ self = SelfNamer{language.NewCoverage(selfTagSet.Tags)}
+)
+
+// Name returns the name of a given language tag in the language identified by
+// this tag. It supports both the language.Base and language.Tag types.
+func (n SelfNamer) Name(x interface{}) string {
+ t, _ := language.All.Compose(x)
+ base, scr, reg := t.Raw()
+ baseScript := language.Script{}
+ if (scr == language.Script{} && reg != language.Region{}) {
+ // For looking up in the self dictionary, we need to select the
+ // maximized script. This is even the case if the script isn't
+ // specified.
+ s1, _ := t.Script()
+ if baseScript = getScript(base); baseScript != s1 {
+ scr = s1
+ }
+ }
+
+ i, scr, reg := selfTagSet.index(base, scr, reg)
+ if i == -1 {
+ return ""
+ }
+
+ // Only return the display name if the script matches the expected script.
+ if (scr != language.Script{}) {
+ if (baseScript == language.Script{}) {
+ baseScript = getScript(base)
+ }
+ if baseScript != scr {
+ return ""
+ }
+ }
+
+ return selfHeaders[0].name(i)
+}
+
+// getScript returns the maximized script for a base language.
+func getScript(b language.Base) language.Script {
+ tag, _ := language.Raw.Compose(b)
+ scr, _ := tag.Script()
+ return scr
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/lookup.go b/Godeps/_workspace/src/golang.org/x/text/language/display/lookup.go
new file mode 100644
index 000000000..794098ad7
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/display/lookup.go
@@ -0,0 +1,238 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package display
+
+// This file contains common lookup code that is shared between the various
+// implementations of Namer and Dictionaries.
+
+import (
+ "fmt"
+ "sort"
+ "strings"
+
+ "golang.org/x/text/language"
+)
+
+type namer interface {
+ // name gets the string for the given index. It should walk the
+ // inheritance chain if a value is not present in the base index.
+ name(idx int) string
+}
+
+func nameLanguage(n namer, x interface{}) string {
+ t, _ := language.All.Compose(x)
+ i, _, _ := langTagSet.index(t.Raw())
+ return n.name(i)
+}
+
+func nameScript(n namer, x interface{}) string {
+ t, _ := language.DeprecatedScript.Compose(x)
+ _, s, _ := t.Raw()
+ return n.name(scriptIndex.index(s.String()))
+}
+
+func nameRegion(n namer, x interface{}) string {
+ t, _ := language.DeprecatedRegion.Compose(x)
+ _, _, r := t.Raw()
+ return n.name(regionIndex.index(r.String()))
+}
+
+func nameTag(langN, scrN, regN namer, x interface{}) string {
+ t, ok := x.(language.Tag)
+ if !ok {
+ return ""
+ }
+ const form = language.All &^ language.SuppressScript
+ if c, err := form.Canonicalize(t); err == nil {
+ t = c
+ }
+ i, scr, reg := langTagSet.index(t.Raw())
+ if i == -1 {
+ return ""
+ }
+
+ str := langN.name(i)
+ if hasS, hasR := (scr != language.Script{}), (reg != language.Region{}); hasS || hasR {
+ ss, sr := "", ""
+ if hasS {
+ ss = scrN.name(scriptIndex.index(scr.String()))
+ }
+ if hasR {
+ sr = regN.name(regionIndex.index(reg.String()))
+ }
+ // TODO: use patterns in CLDR or at least confirm they are the same for
+ // all languages.
+ if ss != "" && sr != "" {
+ return fmt.Sprintf("%s (%s, %s)", str, ss, sr)
+ }
+ if ss != "" || sr != "" {
+ return fmt.Sprintf("%s (%s%s)", str, ss, sr)
+ }
+ }
+ return str
+}
+
+// header contains the data and indexes for a single namer.
+// data contains a series of strings concatenated into one. index contains the
+// offsets for a string in data. For example, consider a header that defines
+// strings for the languages de, el, en, fi, and nl:
+//
+// header{
+// data: "GermanGreekEnglishDutch",
+// index: []uint16{ 0, 6, 11, 18, 18, 23 },
+// }
+//
+// For a language with index i, the string is defined by
+// data[index[i]:index[i+1]]. So the number of elements in index is always one
+// greater than the number of languages for which header defines a value.
+// A string for a language may be empty, which means the name is undefined. In
+// the above example, the name for fi (Finnish) is undefined.
+type header struct {
+ data string
+ index []uint16
+}
+
+// name looks up the name for a tag in the dictionary, given its index.
+func (h *header) name(i int) string {
+ if 0 <= i && i < len(h.index)-1 {
+ return h.data[h.index[i]:h.index[i+1]]
+ }
+ return ""
+}
+
+// tagSet is used to find the index of a language in a set of tags.
+type tagSet struct {
+ single tagIndex
+ long []string
+}
+
+var (
+ langTagSet = tagSet{
+ single: langIndex,
+ long: langTagsLong,
+ }
+
+ // selfTagSet is used for indexing the language strings in their own
+ // language.
+ selfTagSet = tagSet{
+ single: selfIndex,
+ long: selfTagsLong,
+ }
+
+ zzzz = language.MustParseScript("Zzzz")
+ zz = language.MustParseRegion("ZZ")
+)
+
+// index returns the index of the tag for the given base, script and region or
+// its parent if the tag is not available. If the match is for a parent entry,
+// the excess script and region are returned.
+func (ts *tagSet) index(base language.Base, scr language.Script, reg language.Region) (int, language.Script, language.Region) {
+ lang := base.String()
+ index := -1
+ if (scr != language.Script{} || reg != language.Region{}) {
+ if scr == zzzz {
+ scr = language.Script{}
+ }
+ if reg == zz {
+ reg = language.Region{}
+ }
+
+ i := sort.SearchStrings(ts.long, lang)
+ // All entries have either a script or a region and not both.
+ scrStr, regStr := scr.String(), reg.String()
+ for ; i < len(ts.long) && strings.HasPrefix(ts.long[i], lang); i++ {
+ if s := ts.long[i][len(lang)+1:]; s == scrStr {
+ scr = language.Script{}
+ index = i + ts.single.len()
+ break
+ } else if s == regStr {
+ reg = language.Region{}
+ index = i + ts.single.len()
+ break
+ }
+ }
+ }
+ if index == -1 {
+ index = ts.single.index(lang)
+ }
+ return index, scr, reg
+}
+
+func (ts *tagSet) Tags() []language.Tag {
+ tags := make([]language.Tag, 0, ts.single.len()+len(ts.long))
+ ts.single.keys(func(s string) {
+ tags = append(tags, language.Raw.MustParse(s))
+ })
+ for _, s := range ts.long {
+ tags = append(tags, language.Raw.MustParse(s))
+ }
+ return tags
+}
+
+func supportedScripts() []language.Script {
+ scr := make([]language.Script, 0, scriptIndex.len())
+ scriptIndex.keys(func(s string) {
+ scr = append(scr, language.MustParseScript(s))
+ })
+ return scr
+}
+
+func supportedRegions() []language.Region {
+ reg := make([]language.Region, 0, regionIndex.len())
+ regionIndex.keys(func(s string) {
+ reg = append(reg, language.MustParseRegion(s))
+ })
+ return reg
+}
+
+// tagIndex holds a concatenated lists of subtags of length 2 to 4, one string
+// for each length, which can be used in combination with binary search to get
+// the index associated with a tag.
+// For example, a tagIndex{
+// "arenesfrruzh", // 6 2-byte tags.
+// "barwae", // 2 3-byte tags.
+// "",
+// }
+// would mean that the 2-byte tag "fr" had an index of 3, and the 3-byte tag
+// "wae" had an index of 7.
+type tagIndex [3]string
+
+func (t *tagIndex) index(s string) int {
+ sz := len(s)
+ if sz < 2 || 4 < sz {
+ return -1
+ }
+ a := t[sz-2]
+ index := sort.Search(len(a)/sz, func(i int) bool {
+ p := i * sz
+ return a[p:p+sz] >= s
+ })
+ p := index * sz
+ if end := p + sz; end > len(a) || a[p:end] != s {
+ return -1
+ }
+ // Add the number of tags for smaller sizes.
+ for i := 0; i < sz-2; i++ {
+ index += len(t[i]) / (i + 2)
+ }
+ return index
+}
+
+// len returns the number of tags that are contained in the tagIndex.
+func (t *tagIndex) len() (n int) {
+ for i, s := range t {
+ n += len(s) / (i + 2)
+ }
+ return n
+}
+
+// keys calls f for each tag.
+func (t *tagIndex) keys(f func(key string)) {
+ for i, s := range *t {
+ for ; s != ""; s = s[i+2:] {
+ f(s[:i+2])
+ }
+ }
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/maketables.go b/Godeps/_workspace/src/golang.org/x/text/language/display/maketables.go
new file mode 100644
index 000000000..3fcd9c87d
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/display/maketables.go
@@ -0,0 +1,596 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// Generator for display name tables.
+
+package main
+
+import (
+ "bytes"
+ "flag"
+ "fmt"
+ "log"
+ "reflect"
+ "sort"
+ "strings"
+
+ "golang.org/x/text/internal/gen"
+ "golang.org/x/text/language"
+ "golang.org/x/text/unicode/cldr"
+)
+
+var (
+ test = flag.Bool("test", false,
+ "test existing tables; can be used to compare web data with package data.")
+ outputFile = flag.String("output", "tables.go", "output file")
+
+ stats = flag.Bool("stats", false, "prints statistics to stderr")
+
+ short = flag.Bool("short", false, `Use "short" alternatives, when available.`)
+ draft = flag.String("draft",
+ "contributed",
+ `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`)
+ pkg = flag.String("package",
+ "display",
+ "the name of the package in which the generated file is to be included")
+
+ tags = newTagSet("tags",
+ []language.Tag{},
+ "space-separated list of tags to include or empty for all")
+ dict = newTagSet("dict",
+ dictTags(),
+ "space-separated list or tags for which to include a Dictionary. "+
+ `"" means the common list from go.text/language.`)
+)
+
+func dictTags() (tag []language.Tag) {
+ // TODO: replace with language.Common.Tags() once supported.
+ const str = "af am ar ar-001 az bg bn ca cs da de el en en-US en-GB " +
+ "es es-ES es-419 et fa fi fil fr fr-CA gu he hi hr hu hy id is it ja " +
+ "ka kk km kn ko ky lo lt lv mk ml mn mr ms my ne nl no pa pl pt pt-BR " +
+ "pt-PT ro ru si sk sl sq sr sr-Latn sv sw ta te th tr uk ur uz vi " +
+ "zh zh-Hans zh-Hant zu"
+
+ for _, s := range strings.Split(str, " ") {
+ tag = append(tag, language.MustParse(s))
+ }
+ return tag
+}
+
+func main() {
+ gen.Init()
+
+ // Read the CLDR zip file.
+ r := gen.OpenCLDRCoreZip()
+ defer r.Close()
+
+ d := &cldr.Decoder{}
+ d.SetDirFilter("main", "supplemental")
+ d.SetSectionFilter("localeDisplayNames")
+ data, err := d.DecodeZip(r)
+ if err != nil {
+ log.Fatalf("DecodeZip: %v", err)
+ }
+
+ w := gen.NewCodeWriter()
+ defer w.WriteGoFile(*outputFile, "display")
+
+ gen.WriteCLDRVersion(w)
+
+ b := builder{
+ w: w,
+ data: data,
+ group: make(map[string]*group),
+ }
+ b.generate()
+}
+
+const tagForm = language.All
+
+// tagSet is used to parse command line flags of tags. It implements the
+// flag.Value interface.
+type tagSet map[language.Tag]bool
+
+func newTagSet(name string, tags []language.Tag, usage string) tagSet {
+ f := tagSet(make(map[language.Tag]bool))
+ for _, t := range tags {
+ f[t] = true
+ }
+ flag.Var(f, name, usage)
+ return f
+}
+
+// String implements the String method of the flag.Value interface.
+func (f tagSet) String() string {
+ tags := []string{}
+ for t := range f {
+ tags = append(tags, t.String())
+ }
+ sort.Strings(tags)
+ return strings.Join(tags, " ")
+}
+
+// Set implements Set from the flag.Value interface.
+func (f tagSet) Set(s string) error {
+ if s != "" {
+ for _, s := range strings.Split(s, " ") {
+ if s != "" {
+ tag, err := tagForm.Parse(s)
+ if err != nil {
+ return err
+ }
+ f[tag] = true
+ }
+ }
+ }
+ return nil
+}
+
+func (f tagSet) contains(t language.Tag) bool {
+ if len(f) == 0 {
+ return true
+ }
+ return f[t]
+}
+
+// builder is used to create all tables with display name information.
+type builder struct {
+ w *gen.CodeWriter
+
+ data *cldr.CLDR
+
+ fromLocs []string
+
+ // destination tags for the current locale.
+ toTags []string
+ toTagIndex map[string]int
+
+ // list of supported tags
+ supported []language.Tag
+
+ // key-value pairs per group
+ group map[string]*group
+
+ // statistics
+ sizeIndex int // total size of all indexes of headers
+ sizeData int // total size of all data of headers
+ totalSize int
+}
+
+type group struct {
+ // Maps from a given language to the Namer data for this language.
+ lang map[language.Tag]keyValues
+ headers []header
+
+ toTags []string
+ threeStart int
+ fourPlusStart int
+}
+
+// set sets the typ to the name for locale loc.
+func (g *group) set(t language.Tag, typ, name string) {
+ kv := g.lang[t]
+ if kv == nil {
+ kv = make(keyValues)
+ g.lang[t] = kv
+ }
+ if kv[typ] == "" {
+ kv[typ] = name
+ }
+}
+
+type keyValues map[string]string
+
+type header struct {
+ tag language.Tag
+ data string
+ index []uint16
+}
+
+var versionInfo = `// Version is deprecated. Use CLDRVersion.
+const Version = %#v
+
+`
+
+var self = language.MustParse("mul")
+
+// generate builds and writes all tables.
+func (b *builder) generate() {
+ fmt.Fprintf(b.w, versionInfo, cldr.Version)
+
+ b.filter()
+ b.setData("lang", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) {
+ if ldn.Languages != nil {
+ for _, v := range ldn.Languages.Language {
+ tag := tagForm.MustParse(v.Type)
+ if tags.contains(tag) {
+ g.set(loc, tag.String(), v.Data())
+ }
+ }
+ }
+ })
+ b.setData("script", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) {
+ if ldn.Scripts != nil {
+ for _, v := range ldn.Scripts.Script {
+ code := language.MustParseScript(v.Type)
+ if code.IsPrivateUse() { // Qaaa..Qabx
+ // TODO: data currently appears to be very meager.
+ // Reconsider if we have data for English.
+ if loc == language.English {
+ log.Fatal("Consider including data for private use scripts.")
+ }
+ continue
+ }
+ g.set(loc, code.String(), v.Data())
+ }
+ }
+ })
+ b.setData("region", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) {
+ if ldn.Territories != nil {
+ for _, v := range ldn.Territories.Territory {
+ g.set(loc, language.MustParseRegion(v.Type).String(), v.Data())
+ }
+ }
+ })
+
+ b.makeSupported()
+
+ b.writeParents()
+
+ b.writeGroup("lang")
+ b.writeGroup("script")
+ b.writeGroup("region")
+
+ b.w.WriteConst("numSupported", len(b.supported))
+ buf := bytes.Buffer{}
+ for _, tag := range b.supported {
+ fmt.Fprint(&buf, tag.String(), "|")
+ }
+ b.w.WriteConst("supported", buf.String())
+
+ b.writeDictionaries()
+
+ b.supported = []language.Tag{self}
+
+ // Compute the names of locales in their own language. Some of these names
+ // may be specified in their parent locales. We iterate the maximum depth
+ // of the parent three times to match successive parents of tags until a
+ // possible match is found.
+ for i := 0; i < 4; i++ {
+ b.setData("self", func(g *group, tag language.Tag, ldn *cldr.LocaleDisplayNames) {
+ parent := tag
+ if b, s, r := tag.Raw(); i > 0 && (s != language.Script{} && r == language.Region{}) {
+ parent, _ = language.Raw.Compose(b)
+ }
+ if ldn.Languages != nil {
+ for _, v := range ldn.Languages.Language {
+ key := tagForm.MustParse(v.Type)
+ saved := key
+ if key == parent {
+ g.set(self, tag.String(), v.Data())
+ }
+ for k := 0; k < i; k++ {
+ key = key.Parent()
+ }
+ if key == tag {
+ g.set(self, saved.String(), v.Data()) // set does not overwrite a value.
+ }
+ }
+ }
+ })
+ }
+
+ b.writeGroup("self")
+}
+
+func (b *builder) setData(name string, f func(*group, language.Tag, *cldr.LocaleDisplayNames)) {
+ b.sizeIndex = 0
+ b.sizeData = 0
+ b.toTags = nil
+ b.fromLocs = nil
+ b.toTagIndex = make(map[string]int)
+
+ g := b.group[name]
+ if g == nil {
+ g = &group{lang: make(map[language.Tag]keyValues)}
+ b.group[name] = g
+ }
+ for _, loc := range b.data.Locales() {
+ // We use RawLDML instead of LDML as we are managing our own inheritance
+ // in this implementation.
+ ldml := b.data.RawLDML(loc)
+
+ // We do not support the POSIX variant (it is not a supported BCP 47
+ // variant). This locale also doesn't happen to contain any data, so
+ // we'll skip it by checking for this.
+ tag, err := tagForm.Parse(loc)
+ if err != nil {
+ if ldml.LocaleDisplayNames != nil {
+ log.Fatalf("setData: %v", err)
+ }
+ continue
+ }
+ if ldml.LocaleDisplayNames != nil && tags.contains(tag) {
+ f(g, tag, ldml.LocaleDisplayNames)
+ }
+ }
+}
+
+func (b *builder) filter() {
+ filter := func(s *cldr.Slice) {
+ if *short {
+ s.SelectOnePerGroup("alt", []string{"short", ""})
+ } else {
+ s.SelectOnePerGroup("alt", []string{"stand-alone", ""})
+ }
+ d, err := cldr.ParseDraft(*draft)
+ if err != nil {
+ log.Fatalf("filter: %v", err)
+ }
+ s.SelectDraft(d)
+ }
+ for _, loc := range b.data.Locales() {
+ if ldn := b.data.RawLDML(loc).LocaleDisplayNames; ldn != nil {
+ if ldn.Languages != nil {
+ s := cldr.MakeSlice(&ldn.Languages.Language)
+ if filter(&s); len(ldn.Languages.Language) == 0 {
+ ldn.Languages = nil
+ }
+ }
+ if ldn.Scripts != nil {
+ s := cldr.MakeSlice(&ldn.Scripts.Script)
+ if filter(&s); len(ldn.Scripts.Script) == 0 {
+ ldn.Scripts = nil
+ }
+ }
+ if ldn.Territories != nil {
+ s := cldr.MakeSlice(&ldn.Territories.Territory)
+ if filter(&s); len(ldn.Territories.Territory) == 0 {
+ ldn.Territories = nil
+ }
+ }
+ }
+ }
+}
+
+// makeSupported creates a list of all supported locales.
+func (b *builder) makeSupported() {
+ // tags across groups
+ for _, g := range b.group {
+ for t, _ := range g.lang {
+ b.supported = append(b.supported, t)
+ }
+ }
+ b.supported = b.supported[:unique(tagsSorter(b.supported))]
+
+}
+
+type tagsSorter []language.Tag
+
+func (a tagsSorter) Len() int { return len(a) }
+func (a tagsSorter) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
+func (a tagsSorter) Less(i, j int) bool { return a[i].String() < a[j].String() }
+
+func (b *builder) writeGroup(name string) {
+ g := b.group[name]
+
+ for _, kv := range g.lang {
+ for t, _ := range kv {
+ g.toTags = append(g.toTags, t)
+ }
+ }
+ g.toTags = g.toTags[:unique(tagsBySize(g.toTags))]
+
+ // Allocate header per supported value.
+ g.headers = make([]header, len(b.supported))
+ for i, sup := range b.supported {
+ kv, ok := g.lang[sup]
+ if !ok {
+ g.headers[i].tag = sup
+ continue
+ }
+ data := []byte{}
+ index := make([]uint16, len(g.toTags), len(g.toTags)+1)
+ for j, t := range g.toTags {
+ index[j] = uint16(len(data))
+ data = append(data, kv[t]...)
+ }
+ index = append(index, uint16(len(data)))
+
+ // Trim the tail of the index.
+ // TODO: indexes can be reduced in size quite a bit more.
+ n := len(index)
+ for ; n >= 2 && index[n-2] == index[n-1]; n-- {
+ }
+ index = index[:n]
+
+ // Workaround for a bug in CLDR 26.
+ // See http://unicode.org/cldr/trac/ticket/8042.
+ if cldr.Version == "26" && sup.String() == "hsb" {
+ data = bytes.Replace(data, []byte{'"'}, nil, 1)
+ }
+ g.headers[i] = header{sup, string(data), index}
+ }
+ g.writeTable(b.w, name)
+}
+
+type tagsBySize []string
+
+func (l tagsBySize) Len() int { return len(l) }
+func (l tagsBySize) Swap(i, j int) { l[i], l[j] = l[j], l[i] }
+func (l tagsBySize) Less(i, j int) bool {
+ a, b := l[i], l[j]
+ // Sort single-tag entries based on size first. Otherwise alphabetic.
+ if len(a) != len(b) && (len(a) <= 4 || len(b) <= 4) {
+ return len(a) < len(b)
+ }
+ return a < b
+}
+
+// parentIndices returns slice a of len(tags) where tags[a[i]] is the parent
+// of tags[i].
+func parentIndices(tags []language.Tag) []int16 {
+ index := make(map[language.Tag]int16)
+ for i, t := range tags {
+ index[t] = int16(i)
+ }
+
+ // Construct default parents.
+ parents := make([]int16, len(tags))
+ for i, t := range tags {
+ parents[i] = -1
+ for t = t.Parent(); t != language.Und; t = t.Parent() {
+ if j, ok := index[t]; ok {
+ parents[i] = j
+ break
+ }
+ }
+ }
+ return parents
+}
+
+func (b *builder) writeParents() {
+ parents := parentIndices(b.supported)
+ fmt.Fprintf(b.w, "var parents = ")
+ b.w.WriteArray(parents)
+}
+
+// writeKeys writes keys to a special index used by the display package.
+// tags are assumed to be sorted by length.
+func writeKeys(w *gen.CodeWriter, name string, keys []string) {
+ w.Size += int(3 * reflect.TypeOf("").Size())
+ w.WriteComment("Number of keys: %d", len(keys))
+ fmt.Fprintf(w, "var (\n\t%sIndex = tagIndex{\n", name)
+ for i := 2; i <= 4; i++ {
+ sub := []string{}
+ for _, t := range keys {
+ if len(t) != i {
+ break
+ }
+ sub = append(sub, t)
+ }
+ s := strings.Join(sub, "")
+ w.WriteString(s)
+ fmt.Fprintf(w, ",\n")
+ keys = keys[len(sub):]
+ }
+ fmt.Fprintln(w, "\t}")
+ if len(keys) > 0 {
+ w.Size += int(reflect.TypeOf([]string{}).Size())
+ fmt.Fprintf(w, "\t%sTagsLong = ", name)
+ w.WriteSlice(keys)
+ }
+ fmt.Fprintln(w, ")\n")
+}
+
+// identifier creates an identifier from the given tag.
+func identifier(t language.Tag) string {
+ return strings.Replace(t.String(), "-", "", -1)
+}
+
+func (h *header) writeEntry(w *gen.CodeWriter, name string) {
+ if len(dict) > 0 && dict.contains(h.tag) {
+ fmt.Fprintf(w, "\t{ // %s\n", h.tag)
+ fmt.Fprintf(w, "\t\t%[1]s%[2]sStr,\n\t\t%[1]s%[2]sIdx,\n", identifier(h.tag), name)
+ fmt.Fprintln(w, "\t},")
+ } else if len(h.data) == 0 {
+ fmt.Fprintln(w, "\t\t{}, //", h.tag)
+ } else {
+ fmt.Fprintf(w, "\t{ // %s\n", h.tag)
+ w.WriteString(h.data)
+ fmt.Fprintln(w, ",")
+ w.WriteSlice(h.index)
+ fmt.Fprintln(w, ",\n\t},")
+ }
+}
+
+// write the data for the given header as single entries. The size for this data
+// was already accounted for in writeEntry.
+func (h *header) writeSingle(w *gen.CodeWriter, name string) {
+ if len(dict) > 0 && dict.contains(h.tag) {
+ tag := identifier(h.tag)
+ w.WriteConst(tag+name+"Str", h.data)
+
+ // Note that we create a slice instead of an array. If we use an array
+ // we need to refer to it as a[:] in other tables, which will cause the
+ // array to always be included by the linker. See Issue 7651.
+ w.WriteVar(tag+name+"Idx", h.index)
+ }
+}
+
+// WriteTable writes an entry for a single Namer.
+func (g *group) writeTable(w *gen.CodeWriter, name string) {
+ start := w.Size
+ writeKeys(w, name, g.toTags)
+ w.Size += len(g.headers) * int(reflect.ValueOf(g.headers[0]).Type().Size())
+
+ fmt.Fprintf(w, "var %sHeaders = [%d]header{\n", name, len(g.headers))
+
+ title := strings.Title(name)
+ for _, h := range g.headers {
+ h.writeEntry(w, title)
+ }
+ fmt.Fprintln(w, "}\n")
+
+ for _, h := range g.headers {
+ h.writeSingle(w, title)
+ }
+ n := w.Size - start
+ fmt.Fprintf(w, "// Total size for %s: %d bytes (%d KB)\n\n", name, n, n/1000)
+}
+
+func (b *builder) writeDictionaries() {
+ fmt.Fprintln(b.w, "// Dictionary entries of frequent languages")
+ fmt.Fprintln(b.w, "var (")
+ parents := parentIndices(b.supported)
+
+ for i, t := range b.supported {
+ if dict.contains(t) {
+ ident := identifier(t)
+ fmt.Fprintf(b.w, "\t%s = Dictionary{ // %s\n", ident, t)
+ if p := parents[i]; p == -1 {
+ fmt.Fprintln(b.w, "\t\tnil,")
+ } else {
+ fmt.Fprintf(b.w, "\t\t&%s,\n", identifier(b.supported[p]))
+ }
+ fmt.Fprintf(b.w, "\t\theader{%[1]sLangStr, %[1]sLangIdx},\n", ident)
+ fmt.Fprintf(b.w, "\t\theader{%[1]sScriptStr, %[1]sScriptIdx},\n", ident)
+ fmt.Fprintf(b.w, "\t\theader{%[1]sRegionStr, %[1]sRegionIdx},\n", ident)
+ fmt.Fprintln(b.w, "\t}")
+ }
+ }
+ fmt.Fprintln(b.w, ")")
+
+ var s string
+ var a []uint16
+ sz := reflect.TypeOf(s).Size()
+ sz += reflect.TypeOf(a).Size()
+ sz *= 3
+ sz += reflect.TypeOf(&a).Size()
+ n := int(sz) * len(dict)
+ fmt.Fprintf(b.w, "// Total size for %d entries: %d bytes (%d KB)\n\n", len(dict), n, n/1000)
+
+ b.w.Size += n
+}
+
+// unique sorts the given lists and removes duplicate entries by swapping them
+// past position k, where k is the number of unique values. It returns k.
+func unique(a sort.Interface) int {
+ if a.Len() == 0 {
+ return 0
+ }
+ sort.Sort(a)
+ k := 1
+ for i := 1; i < a.Len(); i++ {
+ if a.Less(k-1, i) {
+ if k != i {
+ a.Swap(k, i)
+ }
+ k++
+ }
+ }
+ return k
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/display/tables.go b/Godeps/_workspace/src/golang.org/x/text/language/display/tables.go
new file mode 100644
index 000000000..d67f517bc
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/display/tables.go
@@ -0,0 +1,44965 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package display
+
+// CLDRVersion is the CLDR version from which the tables in this package are derived.
+const CLDRVersion = "28"
+
+// Version is deprecated. Use CLDRVersion.
+const Version = "28"
+
+var parents = [218]int16{
+ // Entry 0 - 3F
+ -1, -1, -1, -1, -1, 4, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 18, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 33, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 43, 43, -1, -1,
+ 47, 48, 48, -1, -1, -1, -1, 54,
+ -1, -1, -1, -1, -1, 60, 60, -1,
+ // Entry 40 - 7F
+ -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, -1, -1, -1, -1,
+ // Entry 80 - BF
+ -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, 154, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 167, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 183, -1, 185, -1, -1, -1, -1, -1,
+ // Entry C0 - FF
+ -1, -1, -1, -1, -1, -1, -1, 198,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 211, -1, -1, -1,
+ 215, -1,
+}
+
+// Number of keys: 609
+var (
+ langIndex = tagIndex{
+ "aaabaeafakamanarasavayazbabebgbibmbnbobrbscacechcocrcscucvcydadedvdzeeel" +
+ "eneoeseteufafffifjfofrfygagdglgngugvhahehihohrhthuhyhziaidieigiiikio" +
+ "isitiujajvkakgkikjkkklkmknkokrkskukvkwkylalblglilnloltlulvmgmhmimkml" +
+ "mnmrmsmtmynandnengnlnnnonrnvnyocojomorospapiplpsptqurmrnrorurwsascsd" +
+ "sesgsiskslsmsnsosqsrssstsusvswtatetgthtitktntotrtstttyugukuruzvevivo" +
+ "wawoxhyiyozazhzu",
+ "aceachadaadyaebafhagqainakkakzalealnaltanganparcarnaroarparqarwaryarzasa" +
+ "aseastavkawabalbanbarbasbaxbbcbbjbejbembewbezbfdbfqbgnbhobikbinbjnbk" +
+ "mblabpybqibrabrhbrxbssbuabugbumbynbyvcadcarcaycchcebcggchbchgchkchmc" +
+ "hnchochpchrchyckbcopcpscrhcsbdakdardavdeldendgrdindjedoidsbdtpduadum" +
+ "dyodyudzgebuefieglegyekaelxenmesuewoextfanfilfitfonfrcfrmfrofrpfrrfr" +
+ "sfurgaagaggangaygbagbzgezgilglkgmhgohgomgongorgotgrbgrcgswgucgurguzg" +
+ "wihaihakhawhifhilhithmnhsbhsnhupibaibbiloinhizhjamjbojgojmcjprjrbjut" +
+ "kaakabkackajkamkawkbdkblkcgkdekeakenkfokgpkhakhokhqkhwkiukkjklnkmbko" +
+ "ikokkoskpekrckrikrjkrlkruksbksfkshkumkutladlaglahlamlezlfnlijlivlktl" +
+ "molollozlrcltglualuilunluolusluylzhlzzmadmafmagmaimakmanmasmdemdfmdr" +
+ "menmermfemgamghmgomicminmncmnimohmosmrjmuamulmusmwlmwrmwvmyemyvmznna" +
+ "nnapnaqndsnewnianiunjonmgnnhnognonnovnqonsonusnwcnymnynnyonziosaotap" +
+ "agpalpampappaupcdpdcpdtpeopflphnpmspntponprgproqucqugrajraprarrgnrif" +
+ "rofromrtmruerugruprwksadsahsamsaqsassatsazsbasbpscnscosdcsdhseesehse" +
+ "iselsessgasgsshishnshusidslislysmasmjsmnsmssnksogsrnsrrssystqsuksuss" +
+ "uxswbswcsycsyrszltcytemteotertettigtivtkltkrtlhtlitlytmhtogtpitrutrv" +
+ "tsdtsittttumtvltwqtyvtzmudmugaumbundvaivecvepvlsvmfvotvrovunwaewalwa" +
+ "rwaswbpwuuxalxmfxogyaoyapyavybbyrlyuezapzblzeazenzghzunzxxzza",
+ "",
+ }
+ langTagsLong = []string{ // 22 elements
+ "ar-001",
+ "az-Arab",
+ "de-AT",
+ "de-CH",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-US",
+ "es-419",
+ "es-ES",
+ "es-MX",
+ "fa-AF",
+ "fr-CA",
+ "fr-CH",
+ "nds-NL",
+ "nl-BE",
+ "pt-BR",
+ "pt-PT",
+ "ro-MD",
+ "sr-Latn",
+ "zh-Hans",
+ "zh-Hant",
+ }
+)
+
+var langHeaders = [218]header{
+ { // af
+ afLangStr,
+ afLangIdx,
+ },
+ { // agq
+ "AkanÀmalìÀlabìBɛ̀làlusànBùugɨlìaBɨ̀ŋgalìChɛ̂Dzamɛ̀Gɨ̀lêʔKɨŋgeleSɨ̀kpanìs" +
+ "KpɛɛshìaKɨ̀fàlàŋsiKɨtsɔŋkaŋEndìHɔŋgalìaÈndònɛshìaEgbòÈtalìaDzàkpànêD" +
+ "zàbvànêKɨmɛ̀kùulîaMàlaeBùumɛsɛ̀Nɛ̀kpalìDɔ̂sKpuwndzabìKpɔlìsKpotùwgîi" +
+ "LùmanyìaLushìaLùwandàSòmalìSuedìsTamìTàeTʉʉkìsÙkɛlɛnìaUudùwVìyɛtnàmê" +
+ "YulùbaChàenêZulùAghem",
+ []uint16{ // 188 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0020, 0x002b,
+ 0x002b, 0x002b, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
+ 0x0037, 0x0037, 0x0037, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x004f, 0x0058, 0x0058, 0x0064,
+ 0x0064, 0x0064, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x007e,
+ 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x008b,
+ 0x008b, 0x0090, 0x0090, 0x0090, 0x0090, 0x009b, 0x009b, 0x009b,
+ // Entry 40 - 7F
+ 0x009b, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00b6, 0x00b6, 0x00c1, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
+ 0x00cc, 0x00cc, 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ 0x00dc, 0x00dc, 0x00dc, 0x00e2, 0x00e2, 0x00ee, 0x00ee, 0x00ee,
+ 0x00f9, 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
+ 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x010a, 0x0112,
+ // Entry 80 - BF
+ 0x0112, 0x011d, 0x011d, 0x011d, 0x011d, 0x0127, 0x012e, 0x0137,
+ 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137,
+ 0x0137, 0x0137, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x0146, 0x0146, 0x014b, 0x014b, 0x014b, 0x014f, 0x014f, 0x014f,
+ 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0164,
+ 0x016a, 0x016a, 0x016a, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177,
+ 0x0177, 0x017e, 0x017e, 0x0186, 0x018b, 0x018b, 0x018b, 0x018b,
+ 0x018b, 0x018b, 0x018b, 0x0190,
+ },
+ },
+ { // ak
+ "AkanAmarikArabikBelarus kasaBɔlgeria kasaBengali kasaKyɛk kasaGyaamanGre" +
+ "ek kasaBorɔfoSpain kasaPɛɛhyia kasaFrɛnkyeHausaHindiHangri kasaIndon" +
+ "ihyia kasaIgboItaly kasaGyapan kasaGyabanis kasaKambodia kasaKorea k" +
+ "asaMalay kasaBɛɛmis kasaNɛpal kasaDɛɛkyePungyabi kasaPɔland kasaPɔɔt" +
+ "ugal kasaRomenia kasaRahyia kasaRewanda kasaSomalia kasaSweden kasaT" +
+ "amil kasaTaeland kasaTɛɛki kasaUkren kasaUrdu kasaViɛtnam kasaYoruba" +
+ "Kyaena kasaZulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001c, 0x002a,
+ 0x002a, 0x002a, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0051, 0x0058, 0x0058, 0x0062,
+ 0x0062, 0x0062, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x007d,
+ 0x007d, 0x0082, 0x0082, 0x0082, 0x0082, 0x008d, 0x008d, 0x008d,
+ // Entry 40 - 7F
+ 0x008d, 0x009c, 0x009c, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
+ 0x00aa, 0x00aa, 0x00b5, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
+ 0x00c2, 0x00c2, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00f0, 0x00f0, 0x00f0,
+ 0x00fb, 0x00fb, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
+ 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0110, 0x0110, 0x011c,
+ // Entry 80 - BF
+ 0x011c, 0x012b, 0x012b, 0x012b, 0x012b, 0x0137, 0x0142, 0x014e,
+ 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e,
+ 0x014e, 0x014e, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
+ 0x0165, 0x0165, 0x016f, 0x016f, 0x016f, 0x017b, 0x017b, 0x017b,
+ 0x017b, 0x017b, 0x0187, 0x0187, 0x0187, 0x0187, 0x0187, 0x0191,
+ 0x019a, 0x019a, 0x019a, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01ad, 0x01ad, 0x01b8, 0x01bc,
+ },
+ },
+ { // am
+ amLangStr,
+ amLangIdx,
+ },
+ { // ar
+ arLangStr,
+ arLangIdx,
+ },
+ { // ar-EG
+ "الدنماركية",
+ []uint16{ // 32 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014,
+ },
+ },
+ { // as
+ "অসমীয়া",
+ []uint16{ // 10 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0015,
+ },
+ },
+ { // asa
+ "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKichekiKijerumaniKigiri" +
+ "kiKiingeredhaKihithpaniaKiajemiKifaranthaKihauthaKihindiKihungariKii" +
+ "ndonethiaKiigboKiitaliaanoKijapaniKijavaKikambodiaKikoreaKimalesiaKi" +
+ "burmaKinepaliKiholandhiKipunjabiKipolandiKirenoKiromaniaKiruthiKinya" +
+ "randwaKithomaliKithwidiKitamilKitailandiKiturukiKiukraniaKiurduKivie" +
+ "tinamuKiyorubaKichinaKidhuluKipare",
+ []uint16{ // 205 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x004a, 0x0055, 0x0055, 0x0060,
+ 0x0060, 0x0060, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0079,
+ 0x0079, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, 0x0089, 0x0089,
+ // Entry 40 - 7F
+ 0x0089, 0x0095, 0x0095, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x00a6, 0x00a6, 0x00ae, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00b4, 0x00b4, 0x00be, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
+ 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
+ 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
+ 0x00c5, 0x00c5, 0x00c5, 0x00ce, 0x00ce, 0x00d5, 0x00d5, 0x00d5,
+ 0x00dd, 0x00dd, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
+ 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f9,
+ // Entry 80 - BF
+ 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0108, 0x010f, 0x011a,
+ 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x011a, 0x011a, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
+ 0x012b, 0x012b, 0x0132, 0x0132, 0x0132, 0x013c, 0x013c, 0x013c,
+ 0x013c, 0x013c, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x014d,
+ 0x0153, 0x0153, 0x0153, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e,
+ 0x015e, 0x0166, 0x0166, 0x016d, 0x0174, 0x0174, 0x0174, 0x0174,
+ 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174,
+ // Entry C0 - FF
+ 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174,
+ 0x0174, 0x0174, 0x0174, 0x0174, 0x017a,
+ },
+ },
+ { // ast
+ "afarabkhazianuavestanínafrikaansakanamháricuaragonésárabeasamésaváricuay" +
+ "maraazerbaixanubashkirbielorrusubúlgarubislamabambarabengalíntibetan" +
+ "ubretónbosniucatalánchechenuchamorrocorsucreechecueslávicu eclesiást" +
+ "icuchuvashgalésdanésalemándivehidzongkhaewegrieguinglésesperantoespa" +
+ "ñolestoniuvascupersafulahfinlandésfixanuferoésfrancésfrisón occiden" +
+ "talirlandésgaélicu escocésgalleguguaraníguyaratímanésḥausahebréuhind" +
+ "ihiri motucroatahaitianuhúngaruarmeniuhererointerlinguaindonesiuinte" +
+ "rlingueigboyi de Sichuáninupiaqidoislandésitalianuinuktitutxaponésxa" +
+ "vanésxeorxanukongokikuyukuanyamakazaquistanínkalaallisutḥemercanarés" +
+ "coreanukanuricachemiréscurdukomicórnicukirguistanínllatínluxemburgué" +
+ "sgandalimburguéslingalalaosianulituanuluba-katangaletónmalgaxemarsha" +
+ "llésmaorímacedoniumalayalammongolmarathimalayumaltésbirmanunaurundeb" +
+ "ele del nortenepalésndonganeerlandésnoruegu Nynorsknoruegu Bokmålnde" +
+ "bele del surnavajonyanjaoccitanuojibwaoromooriyaoséticupunyabípalipo" +
+ "lacupashtuportuguésquechuaromancherundirumanurusukinyarwandasánscrit" +
+ "usardusindhisami del nortesangocingaléseslovacueslovenusamoanushonas" +
+ "omalínalbanuserbiuswatisotho del sursondanéssuecusuaḥilitamiltelugut" +
+ "axiquistaníntailandéstigrinyaturcomanutswanatonganuturcutsongatártar" +
+ "utahitianuuigurucraínurduuzbequistanínvendavietnamínvolapükvalónwolo" +
+ "fxhosayiddishyorubazhuangchinuzulúachinésacoliadangmeadygheárabe de " +
+ "Túnezafrihiliaghemainuacadianualabamaaleutgheg d’Albaniaaltai del su" +
+ "ringlés antiguuangikaaraméumapuchearaonaarapahoárabe d’Arxeliaarawak" +
+ "árabe de Marruecosárabe d’Exiptuasullingua de signos americanaastur" +
+ "ianukotavaawadhibaluchibalinésbávarubasaabamunbatak tobaghomalabejab" +
+ "embabetawibenabafutbadagabalochi occidentalbhojpuribikolbinibanjarko" +
+ "msiksikabishnupriyabakhtiaribrajbrahuibodoakooseburiatbuginésbulubli" +
+ "nmedumbacaddocaribecayugaatsamcebuanuchigachibchachagataichuukésmari" +
+ "xíriga chinookchoctawchipewyanucheroquicheyennekurdu centralcópticuc" +
+ "apiznonturcu de Crimeakashubianudakotadargwataitadelawareslavedogrib" +
+ "dinkazarmadogribaxu sorbiudusun centraldualaneerlandés mediujola-fon" +
+ "yidyuladazagaembúefikemilianuexipciu antiguuekajukelamitainglés medi" +
+ "uyupik centralewondoestremeñufangfilipínfinlandés de Tornedalenfonfr" +
+ "ancés cajunfrancés mediufrancés antiguuarpitanufrisón del nortefrisó" +
+ "n orientalfriulianugagagauzchinu gangayogbayadari zoroastrianugeezgi" +
+ "lbertésgilakialtualemán mediualtualemán antiguugoan konkanigondigoro" +
+ "ntalogóticugrebogriegu antiguualemán de Suizawayuufrafragusiigwichʼi" +
+ "nhaidachinu hakkahawaianuhindi de Fijihiligaynonhititahmongaltu sorb" +
+ "iuchinu xianghupaibanibibioilokoingushingrianuinglés criollu xamaica" +
+ "nulojbanngombamachamexudeo-persaxudeo-árabejutlandéskara-kalpakkabil" +
+ "eñukachinjjukambakawikabardianukanembutyapmakondecabuverdianukenyang" +
+ "korokaingangkhasikhotanéskoyra chiinikhowarkirmanjkikakokalenjinkimb" +
+ "undukomi-permyakkonkanikosraeanukpellekarachay-balkarkriokinaray-aka" +
+ "relianukurukhshambalabafiacolonianukumykkutenailadinolangilahndalamb" +
+ "alezghianulingua franca novaligurianulivonianulakotalombardumongoloz" +
+ "iluri del nortelatgalianuluba-lulualuisenolundaluomizoluyiachinu lli" +
+ "terariulazmadurésmafamagahimaithilimakasarmandingomasáimabamokshaman" +
+ "darmendemerumorisyenírlandés mediumakhuwa-meettometa’micmacminangkab" +
+ "aumanchúmanipurimohawkmossimari occidentalmundangmúltiples llingüesc" +
+ "reekmirandésmarwarimentawaimyeneerzyamazanderanichinu min nannapolit" +
+ "anunamabaxu alemánnewariniasniueanuao nagakwasiongiemboonnogainorueg" +
+ "u antiguunovialn’kosotho del nortenuernewari clásicunyamwezinyankole" +
+ "nyoronzimaOsageturcu otomanupangasinanpahlavipampangapapiamentopalau" +
+ "anupícarualemán de Pennsylvaniaplautdietschpersa antiguualemán palat" +
+ "inufeniciupiamontéspónticupohnpeianuprusianuprovenzal antiguukʼicheʼ" +
+ "quichua del altiplanu de Chimborazorajasthanínrapanuirarotonganuroma" +
+ "ñolrifianuromboromanírotumanurusynrovianaaromanianurwasandavéssakha" +
+ "araméu samaritanusamburusasaksantalisaurashtrangambaysangusicilianus" +
+ "cotssardu sassarésKurdu del sursénecasenaseriselkupkoyraboro senniir" +
+ "landés antiguusamogitianutachelhitshanárabe chadianusidamobaxu siles" +
+ "ianuselayaréssami del surlule samiinari samiskolt samisoninkesogdian" +
+ "usranan tongoserersahofrisón de Saterlandsukumasususumeriucomorianus" +
+ "wahili del Congusiriacu clásicusiriacusilesianutulutimnetesoterenate" +
+ "tumtigretivtokelautsakhurklingontlingittalixíntamashektonga nyasatok" +
+ " pisinturoyotarokotsakoniutsimshiantati musulmántumbukatuvalutasawaq" +
+ "tuvinianutamazight del Atles centraludmurtugaríticuumbundurootvaiven" +
+ "ecianuvepsiuflamencu occidentalfranconianu del Mainvóticuvorovunjowa" +
+ "lserwolayttawaraywashowarlpirichinu wucalmucomingrelianusogayaoyapés" +
+ "yangbenyembanheengatucantonészapotecasimbólicu Blisszeelandészenagat" +
+ "amazight estándar de Marruecoszuniensin conteníu llingüísticuzazaára" +
+ "be estándar modernualemán d’Austriaaltualemán de Suizainglés d’Austr" +
+ "aliainglés de Canadáinglés de Gran Bretañainglés d’Estaos Xuníosespa" +
+ "ñol d’América Llatinaespañol européuespañol de Méxicufrancés de Can" +
+ "adáfrancés de Suizabaxu saxónflamencuportugués del Brasilportugués e" +
+ "uropéumoldavuserbo-croatachinu simplificáuchinu tradicional",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000e, 0x0018, 0x0021, 0x0025, 0x002e, 0x0037,
+ 0x003d, 0x0044, 0x004c, 0x0052, 0x005d, 0x0064, 0x006e, 0x0076,
+ 0x007d, 0x0084, 0x008d, 0x0095, 0x009c, 0x00a2, 0x00aa, 0x00b2,
+ 0x00ba, 0x00bf, 0x00c3, 0x00c8, 0x00df, 0x00e6, 0x00ec, 0x00f2,
+ 0x00f9, 0x00ff, 0x0107, 0x010a, 0x0110, 0x0117, 0x0120, 0x0128,
+ 0x012f, 0x0134, 0x0139, 0x013e, 0x0148, 0x014e, 0x0155, 0x015d,
+ 0x016f, 0x0178, 0x0189, 0x0190, 0x0198, 0x01a1, 0x01a7, 0x01ae,
+ 0x01b5, 0x01ba, 0x01c3, 0x01c9, 0x01d1, 0x01d9, 0x01e0, 0x01e6,
+ // Entry 40 - 7F
+ 0x01f1, 0x01fa, 0x0205, 0x0209, 0x0217, 0x021e, 0x0221, 0x022a,
+ 0x0232, 0x023b, 0x0243, 0x024b, 0x0253, 0x0258, 0x025e, 0x0266,
+ 0x0274, 0x027f, 0x0286, 0x028e, 0x0295, 0x029b, 0x02a6, 0x02ab,
+ 0x02af, 0x02b7, 0x02c4, 0x02cb, 0x02d8, 0x02dd, 0x02e8, 0x02ef,
+ 0x02f7, 0x02fe, 0x030a, 0x0310, 0x0317, 0x0322, 0x0328, 0x0331,
+ 0x033a, 0x0340, 0x0347, 0x034d, 0x0354, 0x035b, 0x0360, 0x0371,
+ 0x0379, 0x037f, 0x038a, 0x0399, 0x03a8, 0x03b7, 0x03bd, 0x03c3,
+ 0x03cb, 0x03d1, 0x03d6, 0x03db, 0x03e3, 0x03eb, 0x03ef, 0x03f5,
+ // Entry 80 - BF
+ 0x03fb, 0x0405, 0x040c, 0x0414, 0x0419, 0x041f, 0x0423, 0x042e,
+ 0x0438, 0x043d, 0x0443, 0x0451, 0x0456, 0x045f, 0x0467, 0x046f,
+ 0x0476, 0x047b, 0x0483, 0x0489, 0x048f, 0x0494, 0x04a1, 0x04aa,
+ 0x04af, 0x04b8, 0x04bd, 0x04c3, 0x04d1, 0x04db, 0x04e3, 0x04ec,
+ 0x04f2, 0x04f9, 0x04fe, 0x0504, 0x050c, 0x0515, 0x051a, 0x0521,
+ 0x0525, 0x0533, 0x0538, 0x0542, 0x054a, 0x0550, 0x0555, 0x055a,
+ 0x0561, 0x0567, 0x056d, 0x0572, 0x0577, 0x057f, 0x0584, 0x058b,
+ 0x0591, 0x05a1, 0x05a9, 0x05ae, 0x05b2, 0x05ba, 0x05c1, 0x05c6,
+ // Entry C0 - FF
+ 0x05d6, 0x05e3, 0x05f2, 0x05f8, 0x05ff, 0x0606, 0x060c, 0x0613,
+ 0x0625, 0x062b, 0x063e, 0x064f, 0x0652, 0x066d, 0x0676, 0x067c,
+ 0x0682, 0x0689, 0x0691, 0x0698, 0x069d, 0x06a2, 0x06ac, 0x06b3,
+ 0x06b7, 0x06bc, 0x06c2, 0x06c6, 0x06cb, 0x06d1, 0x06e3, 0x06eb,
+ 0x06f0, 0x06f4, 0x06fa, 0x06fd, 0x0704, 0x070f, 0x0718, 0x071c,
+ 0x0722, 0x0726, 0x072c, 0x0732, 0x073a, 0x073e, 0x0742, 0x0749,
+ 0x074e, 0x0754, 0x075a, 0x075f, 0x0766, 0x076b, 0x0772, 0x077a,
+ 0x0782, 0x0786, 0x0795, 0x079c, 0x07a6, 0x07ae, 0x07b6, 0x07c3,
+ // Entry 100 - 13F
+ 0x07cb, 0x07d3, 0x07e2, 0x07ec, 0x07f2, 0x07f8, 0x07fd, 0x0805,
+ 0x080a, 0x0810, 0x0815, 0x081a, 0x081f, 0x082a, 0x0837, 0x083c,
+ 0x084d, 0x0857, 0x085c, 0x0862, 0x0867, 0x086b, 0x0873, 0x0882,
+ 0x0888, 0x088f, 0x089c, 0x08a9, 0x08af, 0x08b9, 0x08bd, 0x08c5,
+ 0x08dd, 0x08e0, 0x08ee, 0x08fc, 0x090c, 0x0914, 0x0925, 0x0935,
+ 0x093e, 0x0940, 0x0946, 0x094f, 0x0953, 0x0958, 0x0969, 0x096d,
+ 0x0977, 0x097d, 0x098e, 0x09a1, 0x09ad, 0x09b2, 0x09bb, 0x09c2,
+ 0x09c7, 0x09d5, 0x09e5, 0x09ea, 0x09f0, 0x09f5, 0x09fe, 0x0a03,
+ // Entry 140 - 17F
+ 0x0a0e, 0x0a16, 0x0a23, 0x0a2d, 0x0a33, 0x0a38, 0x0a43, 0x0a4e,
+ 0x0a52, 0x0a56, 0x0a5c, 0x0a61, 0x0a67, 0x0a6f, 0x0a88, 0x0a8e,
+ 0x0a94, 0x0a9b, 0x0aa6, 0x0ab2, 0x0abc, 0x0ac7, 0x0ad0, 0x0ad6,
+ 0x0ad9, 0x0ade, 0x0ae2, 0x0aec, 0x0af3, 0x0af7, 0x0afe, 0x0b0a,
+ 0x0b11, 0x0b15, 0x0b1d, 0x0b22, 0x0b2b, 0x0b37, 0x0b3d, 0x0b46,
+ 0x0b4a, 0x0b52, 0x0b5a, 0x0b66, 0x0b6d, 0x0b76, 0x0b7c, 0x0b8b,
+ 0x0b8f, 0x0b98, 0x0ba1, 0x0ba7, 0x0baf, 0x0bb4, 0x0bbd, 0x0bc2,
+ 0x0bc9, 0x0bcf, 0x0bd4, 0x0bda, 0x0bdf, 0x0be8, 0x0bfa, 0x0c03,
+ // Entry 180 - 1BF
+ 0x0c0c, 0x0c12, 0x0c1a, 0x0c1f, 0x0c23, 0x0c31, 0x0c3b, 0x0c45,
+ 0x0c4c, 0x0c51, 0x0c54, 0x0c58, 0x0c5d, 0x0c6d, 0x0c70, 0x0c78,
+ 0x0c7c, 0x0c82, 0x0c8a, 0x0c91, 0x0c99, 0x0c9f, 0x0ca3, 0x0ca9,
+ 0x0caf, 0x0cb4, 0x0cb8, 0x0cc0, 0x0cd0, 0x0cde, 0x0ce5, 0x0ceb,
+ 0x0cf6, 0x0cfd, 0x0d05, 0x0d0b, 0x0d10, 0x0d1f, 0x0d26, 0x0d3a,
+ 0x0d3f, 0x0d48, 0x0d4f, 0x0d57, 0x0d5c, 0x0d61, 0x0d6c, 0x0d79,
+ 0x0d83, 0x0d87, 0x0d93, 0x0d99, 0x0d9d, 0x0da4, 0x0dab, 0x0db1,
+ 0x0dba, 0x0dbf, 0x0dce, 0x0dd4, 0x0dda, 0x0de9, 0x0ded, 0x0dfc,
+ // Entry 1C0 - 1FF
+ 0x0e04, 0x0e0c, 0x0e11, 0x0e16, 0x0e1b, 0x0e28, 0x0e32, 0x0e39,
+ 0x0e41, 0x0e4b, 0x0e53, 0x0e5a, 0x0e71, 0x0e7d, 0x0e8a, 0x0e9a,
+ 0x0ea1, 0x0eab, 0x0eb3, 0x0ebd, 0x0ec5, 0x0ed6, 0x0edf, 0x0f02,
+ 0x0f0e, 0x0f15, 0x0f20, 0x0f28, 0x0f2f, 0x0f34, 0x0f3b, 0x0f43,
+ 0x0f48, 0x0f4f, 0x0f59, 0x0f5c, 0x0f65, 0x0f6a, 0x0f7c, 0x0f83,
+ 0x0f88, 0x0f8f, 0x0f99, 0x0fa0, 0x0fa5, 0x0fae, 0x0fb3, 0x0fc2,
+ 0x0fcf, 0x0fd6, 0x0fda, 0x0fde, 0x0fe4, 0x0ff3, 0x1004, 0x100f,
+ 0x1018, 0x101c, 0x102b, 0x1031, 0x103f, 0x1049, 0x1055, 0x105e,
+ // Entry 200 - 23F
+ 0x1068, 0x1072, 0x1079, 0x1081, 0x108d, 0x1092, 0x1096, 0x10aa,
+ 0x10b0, 0x10b4, 0x10bb, 0x10c4, 0x10d5, 0x10e5, 0x10ec, 0x10f5,
+ 0x10f9, 0x10fe, 0x1102, 0x1108, 0x110d, 0x1112, 0x1115, 0x111c,
+ 0x1123, 0x112a, 0x1131, 0x1139, 0x1141, 0x114c, 0x1155, 0x115b,
+ 0x1161, 0x1169, 0x1172, 0x1180, 0x1187, 0x118d, 0x1194, 0x119d,
+ 0x11b8, 0x11be, 0x11c8, 0x11cf, 0x11d3, 0x11d6, 0x11df, 0x11e5,
+ 0x11f8, 0x120c, 0x1213, 0x1217, 0x121c, 0x1222, 0x122a, 0x122f,
+ 0x1234, 0x123c, 0x1244, 0x124b, 0x1256, 0x125a, 0x125d, 0x1263,
+ // Entry 240 - 27F
+ 0x126a, 0x126f, 0x1278, 0x1281, 0x1289, 0x1299, 0x12a3, 0x12a9,
+ 0x12c9, 0x12cd, 0x12eb, 0x12ef, 0x1307, 0x1307, 0x131a, 0x132e,
+ 0x1343, 0x1355, 0x136d, 0x1387, 0x13a4, 0x13b5, 0x13c8, 0x13c8,
+ 0x13db, 0x13ec, 0x13f7, 0x13ff, 0x1414, 0x1427, 0x142e, 0x143a,
+ 0x144c, 0x145d,
+ },
+ },
+ { // az
+ azLangStr,
+ azLangIdx,
+ },
+ { // az-Cyrl
+ "азәрбајҹан дилиалман дилиинҝилис дилииспан дилифрансыз дилииталјан дилиј" +
+ "апон дилипортугал дилирус диличин дили",
+ []uint16{ // 180 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0047, 0x0047, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
+ // Entry 40 - 7F
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
+ 0x0088, 0x0088, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ // Entry 80 - BF
+ 0x009b, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00d2,
+ },
+ },
+ { // bas
+ "Hɔp u akanHɔp u amhārìkHɔp u arâbHɔp u bièlòrûsHɔp u bûlgârHɔp u bɛŋgàli" +
+ "Hɔp u cɛ̂kHɔp u jamânHɔp u gri ᷇kyàHɔp u ŋgisìHɔp u panyāHɔp u pɛrsì" +
+ "àHɔp u pulàsiHɔp u ɓausaHɔp u hindìHɔp u hɔŋgrìiHɔp u indònesìàHɔp " +
+ "u iɓòHɔp u italìàHɔp u yapànHɔp u yavàHɔp u kmɛ̂rHɔp u kɔrēàHɔp u ma" +
+ "kɛ᷆Hɔp u birmànHɔp u nepa᷆lHɔp u nlɛ̀ndiHɔp u pɛnjàbiHɔp u pɔlɔ̄nàHɔ" +
+ "p u pɔtɔ̄kìHɔp u rùmanìàHɔp u ruslàndHɔp u ruāndàHɔp u somàlîHɔp u s" +
+ "uɛ᷆dHɔp u tamu᷆lHɔp u tâyHɔp u tûrkHɔp u ukrǎnìàHɔp u urdùHɔp u vyɛ̄" +
+ "dnàmHɔp u yorūbàHɔp u kinàHɔp u zulùƁàsàa",
+ []uint16{ // 213 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001b, 0x001b,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0039, 0x0048,
+ 0x0048, 0x0048, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059,
+ 0x0059, 0x0059, 0x0059, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0073, 0x0073, 0x0073, 0x0073, 0x0085, 0x0093, 0x0093, 0x00a0,
+ 0x00a0, 0x00a0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00be,
+ 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00cb,
+ 0x00cb, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e9, 0x00e9, 0x00e9,
+ // Entry 40 - 7F
+ 0x00e9, 0x00fc, 0x00fc, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108,
+ 0x0117, 0x0117, 0x0124, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130,
+ 0x0130, 0x0130, 0x013e, 0x013e, 0x014d, 0x014d, 0x014d, 0x014d,
+ 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d,
+ 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d,
+ 0x014d, 0x014d, 0x014d, 0x015c, 0x015c, 0x016a, 0x016a, 0x016a,
+ 0x0179, 0x0179, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
+ 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0199, 0x0199, 0x01ab,
+ // Entry 80 - BF
+ 0x01ab, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01ce, 0x01dd, 0x01ec,
+ 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec,
+ 0x01ec, 0x01ec, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
+ 0x020a, 0x020a, 0x0219, 0x0219, 0x0219, 0x0224, 0x0224, 0x0224,
+ 0x0224, 0x0224, 0x0230, 0x0230, 0x0230, 0x0230, 0x0230, 0x0241,
+ 0x024d, 0x024d, 0x024d, 0x025f, 0x025f, 0x025f, 0x025f, 0x025f,
+ 0x025f, 0x026e, 0x026e, 0x027a, 0x0286, 0x0286, 0x0286, 0x0286,
+ 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286,
+ // Entry C0 - FF
+ 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286,
+ 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286,
+ 0x0286, 0x0286, 0x0286, 0x0286, 0x028e,
+ },
+ },
+ { // be
+ "абхазскаяафрыкаансаканамхарскаяарагонскаяарабскаяасамскаяаварскаяаймараа" +
+ "зербайджанскаябашкірскаябеларускаябалгарскаябамбарабенгальскаятыбец" +
+ "каябрэтонскаябаснійскаякаталанскаячачэнскаякарсіканскаячэшскаячуваш" +
+ "скаявалійскаядацкаянямецкаядзонгкхаэвегрэчаскаяанглійскаяэсперантаі" +
+ "спанскаяэстонскаябаскскаяфарсіфінскаяфіджыйскаяфарэрскаяфранцузская" +
+ "фрызскаяірландскаяшатландская гэльскаягалісійскаягуаранігуджарацімэ" +
+ "нскаяхаўсаіўрытхіндзіхарвацкаягаіцянскаявенгерскаяармянскаяінтэрлін" +
+ "гваінданезійскаяінтэрлінгвеігбаСычуань Іісландскаяітальянскаяінукты" +
+ "тутяпонскаяяванскаягрузінскаякікуюказахскаягрэнландскаякхмерскаякан" +
+ "адакарэйскаякашмірскаякурдскаякорнскаякіргізскаялацінскаялюксембург" +
+ "скаягандалінгалалаоскаялітоўскаялуба-катангалатышскаямалагасійскаям" +
+ "аарымакедонскаямалаяламмангольскаямаратхімалайскаямальтыйскаябірман" +
+ "скаяпаўночная ндэбеленепальскаягаландскаянарвежская (нюнорск)нарвеж" +
+ "ская (букмал)правансальскаяаромаорыяпанджабіпольскаяпуштупартугальс" +
+ "каякечуарэтараманскаярундзірумынскаярускаякіньяруандасанскрытсіндхі" +
+ "паўночнасаамскаясангасінгальскаяславацкаяславенскаяшонасамалійскаяа" +
+ "лбанскаясербскаясундскаяшведскаясуахілітамільскаятэлугутаджыкскаята" +
+ "йскаятыгрыньятуркменскаятанганскаятурэцкаятатарскаяуйгурскаяукраінс" +
+ "каяурдуузбекскаяв’етнамскаявалофкосаідышёрубакітайскаязулуадыгейска" +
+ "яагемакадзкаяалеуцкаястараанглійскаяарамейскаямапучэасуастурыйскаяб" +
+ "ембабеназаходняя белуджскаябодабурацкаячыгачэрокіцэнтральнакурдская" +
+ "копцкаятайтазарманіжнелужыцкаядуаладыёла-фон’іэмбустараэгіпецкаятаг" +
+ "альскаястарафранцузскаягагаузскаястарагрэцкаяшвейцарская нямецкаягу" +
+ "сіігавайскаяверхнелужыцкаянгомбэмачамэкабільскаякамбамакондэкабувер" +
+ "дзьянукойра чыінікаленджынкомі-пярмяцкаяконканішамбалабафіялангалак" +
+ "отапаўночны лурылуалуямасаімерумаўрыкійскаямакуа-меетаметамагаўкска" +
+ "ямундангмазандэранскаянаманіжненямецкаяквасіанконуэрньянколекічэром" +
+ "барваякуцкаясамбурусангупаўднёвакурдскаясенакойрабара сеннітачалхіт" +
+ "паўднёвасаамскаялуле-саамскаяінары-саамскаяколта-саамскаясуахілі Ко" +
+ "нгатэсоклінгонтасавакмовы тамазігхтаўневядомая моваваівуньёвальбіры" +
+ "согастандартны мараканскі тамазігхтняма моўнага матэрыялусучасная с" +
+ "тандартная арабскаянямецкая (аўстр.)нямецкая (швейц.)англійская (аў" +
+ "страл.)англійская (канад.)англійская (ЗША)іспанская (лацінаамер.)іс" +
+ "панская (еўрап.)іспанская (мексікан.)французская (канад.)французска" +
+ "я (швейц.)ніжнесаксонскаяфламандскаяпартугальская (бразіл.)партугал" +
+ "ьская (еўрап.)малдаўскаясербска-харвацкаяспрошчаная кітайскаятрадыц" +
+ "ыйная кітайская",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0012, 0x0012, 0x0024, 0x002c, 0x003e, 0x0052,
+ 0x0062, 0x0072, 0x0082, 0x008e, 0x00ac, 0x00c0, 0x00d4, 0x00e8,
+ 0x00e8, 0x00f6, 0x010c, 0x011c, 0x0130, 0x0144, 0x015a, 0x016c,
+ 0x016c, 0x0184, 0x0184, 0x0192, 0x0192, 0x01a4, 0x01b6, 0x01c2,
+ 0x01d2, 0x01d2, 0x01e2, 0x01e8, 0x01fa, 0x020e, 0x0220, 0x0232,
+ 0x0244, 0x0254, 0x025e, 0x025e, 0x026c, 0x0280, 0x0292, 0x02a8,
+ 0x02b8, 0x02cc, 0x02f3, 0x0309, 0x0317, 0x0329, 0x0337, 0x0341,
+ 0x034b, 0x0357, 0x0357, 0x0369, 0x037d, 0x0391, 0x03a3, 0x03a3,
+ // Entry 40 - 7F
+ 0x03b9, 0x03d3, 0x03e9, 0x03f1, 0x0402, 0x0402, 0x0402, 0x0416,
+ 0x042c, 0x043e, 0x044e, 0x045e, 0x0472, 0x0472, 0x047c, 0x047c,
+ 0x048e, 0x04a6, 0x04b8, 0x04c4, 0x04d6, 0x04d6, 0x04ea, 0x04fa,
+ 0x04fa, 0x050a, 0x051e, 0x0530, 0x054c, 0x0556, 0x0556, 0x0564,
+ 0x0572, 0x0584, 0x059b, 0x05ad, 0x05c7, 0x05c7, 0x05d1, 0x05e7,
+ 0x05f7, 0x060d, 0x061b, 0x062d, 0x0643, 0x0657, 0x0657, 0x0678,
+ 0x068c, 0x068c, 0x06a0, 0x06c5, 0x06e8, 0x06e8, 0x06e8, 0x06e8,
+ 0x0704, 0x0704, 0x070e, 0x0716, 0x0716, 0x0726, 0x0726, 0x0736,
+ // Entry 80 - BF
+ 0x0740, 0x075a, 0x0764, 0x077e, 0x078a, 0x079c, 0x07a8, 0x07be,
+ 0x07ce, 0x07ce, 0x07da, 0x07fa, 0x0804, 0x081a, 0x082c, 0x0840,
+ 0x0840, 0x0848, 0x085e, 0x0870, 0x0880, 0x0880, 0x0880, 0x0890,
+ 0x08a0, 0x08ae, 0x08c2, 0x08ce, 0x08e2, 0x08f0, 0x0900, 0x0916,
+ 0x0916, 0x092a, 0x093a, 0x093a, 0x094c, 0x094c, 0x095e, 0x0972,
+ 0x097a, 0x098c, 0x098c, 0x09a3, 0x09a3, 0x09a3, 0x09ad, 0x09b5,
+ 0x09bd, 0x09c7, 0x09c7, 0x09d9, 0x09e1, 0x09e1, 0x09e1, 0x09e1,
+ 0x09f5, 0x09f5, 0x09f5, 0x09fd, 0x09fd, 0x0a0d, 0x0a0d, 0x0a1d,
+ // Entry C0 - FF
+ 0x0a1d, 0x0a1d, 0x0a3b, 0x0a3b, 0x0a4f, 0x0a5b, 0x0a5b, 0x0a5b,
+ 0x0a5b, 0x0a5b, 0x0a5b, 0x0a5b, 0x0a61, 0x0a61, 0x0a77, 0x0a77,
+ 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77, 0x0a77,
+ 0x0a77, 0x0a81, 0x0a81, 0x0a89, 0x0a89, 0x0a89, 0x0aae, 0x0aae,
+ 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae,
+ 0x0aae, 0x0ab6, 0x0ab6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6,
+ 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ace, 0x0ace, 0x0ace,
+ 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ada, 0x0ada, 0x0afe,
+ // Entry 100 - 13F
+ 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b16, 0x0b16,
+ 0x0b16, 0x0b16, 0x0b16, 0x0b20, 0x0b20, 0x0b3a, 0x0b3a, 0x0b44,
+ 0x0b44, 0x0b5a, 0x0b5a, 0x0b5a, 0x0b62, 0x0b62, 0x0b62, 0x0b7e,
+ 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b7e, 0x0b92,
+ 0x0b92, 0x0b92, 0x0b92, 0x0b92, 0x0bb2, 0x0bb2, 0x0bb2, 0x0bb2,
+ 0x0bb2, 0x0bb2, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6,
+ 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6, 0x0bc6,
+ 0x0bc6, 0x0bde, 0x0c05, 0x0c05, 0x0c05, 0x0c0f, 0x0c0f, 0x0c0f,
+ // Entry 140 - 17F
+ 0x0c0f, 0x0c21, 0x0c21, 0x0c21, 0x0c21, 0x0c21, 0x0c3d, 0x0c3d,
+ 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c3d,
+ 0x0c49, 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c55, 0x0c69, 0x0c69,
+ 0x0c69, 0x0c73, 0x0c73, 0x0c73, 0x0c73, 0x0c73, 0x0c81, 0x0c9b,
+ 0x0c9b, 0x0c9b, 0x0c9b, 0x0c9b, 0x0c9b, 0x0cb0, 0x0cb0, 0x0cb0,
+ 0x0cb0, 0x0cc2, 0x0cc2, 0x0cdd, 0x0ceb, 0x0ceb, 0x0ceb, 0x0ceb,
+ 0x0ceb, 0x0ceb, 0x0ceb, 0x0ceb, 0x0cf9, 0x0d03, 0x0d03, 0x0d03,
+ 0x0d03, 0x0d03, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d, 0x0d0d,
+ // Entry 180 - 1BF
+ 0x0d0d, 0x0d19, 0x0d19, 0x0d19, 0x0d19, 0x0d32, 0x0d32, 0x0d32,
+ 0x0d32, 0x0d32, 0x0d38, 0x0d38, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e,
+ 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d48, 0x0d48, 0x0d48,
+ 0x0d48, 0x0d48, 0x0d50, 0x0d68, 0x0d68, 0x0d7d, 0x0d85, 0x0d85,
+ 0x0d85, 0x0d85, 0x0d85, 0x0d99, 0x0d99, 0x0d99, 0x0da7, 0x0da7,
+ 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0da7, 0x0dc3, 0x0dc3,
+ 0x0dc3, 0x0dcb, 0x0de5, 0x0de5, 0x0de5, 0x0de5, 0x0de5, 0x0df1,
+ 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0df7, 0x0df7, 0x0dff, 0x0dff,
+ // Entry 1C0 - 1FF
+ 0x0dff, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f,
+ 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f,
+ 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e17, 0x0e17,
+ 0x0e17, 0x0e17, 0x0e17, 0x0e17, 0x0e17, 0x0e21, 0x0e21, 0x0e21,
+ 0x0e21, 0x0e21, 0x0e21, 0x0e27, 0x0e27, 0x0e35, 0x0e35, 0x0e43,
+ 0x0e43, 0x0e43, 0x0e43, 0x0e43, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d,
+ 0x0e6d, 0x0e6d, 0x0e75, 0x0e75, 0x0e75, 0x0e92, 0x0e92, 0x0e92,
+ 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ec2, 0x0edb,
+ // Entry 200 - 23F
+ 0x0ef6, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11,
+ 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f2a, 0x0f2a, 0x0f2a, 0x0f2a,
+ 0x0f2a, 0x0f2a, 0x0f32, 0x0f32, 0x0f32, 0x0f32, 0x0f32, 0x0f32,
+ 0x0f32, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40,
+ 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f4e, 0x0f4e,
+ 0x0f6d, 0x0f6d, 0x0f6d, 0x0f6d, 0x0f88, 0x0f8e, 0x0f8e, 0x0f8e,
+ 0x0f8e, 0x0f8e, 0x0f8e, 0x0f8e, 0x0f98, 0x0f98, 0x0f98, 0x0f98,
+ 0x0f98, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fa8, 0x0fb0, 0x0fb0, 0x0fb0,
+ // Entry 240 - 27F
+ 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0, 0x0fb0,
+ 0x0fec, 0x0fec, 0x1016, 0x1016, 0x104e, 0x104e, 0x106c, 0x108a,
+ 0x10b0, 0x10d2, 0x10d2, 0x10ef, 0x1119, 0x1139, 0x115f, 0x115f,
+ 0x1183, 0x11a7, 0x11c5, 0x11db, 0x1205, 0x122d, 0x1241, 0x1262,
+ 0x1289, 0x12b2,
+ },
+ },
+ { // bem
+ "Ichi AkanIchi AmhariIchi ArabIchi BelarusIchi BulgarianiIchi BengaliIchi" +
+ " ChekiIchi JemaniIchi GrikiIchi SunguIchi SpanishiIchi PesiaIchi Fre" +
+ "nchiIchi HausaIchi HinduIchi HangarianIchi IndonesianiIchi IboIchi I" +
+ "talianiIchi JapanisiIchi JavanisiIchi KhmerIchi KorianiIchi Maleshan" +
+ "iIchi BurmaIchi NepaliIchi DachiIchi PunjabiIchi PolishiIchi Potogis" +
+ "iIchi RomanianiIchi RusianiIchi RwandaIchi SomaliaIchi SwideniIchi T" +
+ "amilIchi ThaiIchi TakishiIchi UkranianiIchi UruduIchi VietinamuIchi " +
+ "YorubaIchi ChainisiIchi ZuluIchibemba",
+ []uint16{ // 218 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0029, 0x0038,
+ 0x0038, 0x0038, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
+ 0x0059, 0x0059, 0x0059, 0x0059, 0x0063, 0x006d, 0x006d, 0x007a,
+ 0x007a, 0x007a, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0090,
+ 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009a,
+ 0x009a, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00b2, 0x00b2, 0x00b2,
+ // Entry 40 - 7F
+ 0x00b2, 0x00c2, 0x00c2, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
+ 0x00d7, 0x00d7, 0x00e4, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1,
+ 0x00f1, 0x00f1, 0x00fb, 0x00fb, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x0107, 0x0107, 0x0107, 0x0115, 0x0115, 0x011f, 0x011f, 0x011f,
+ 0x012a, 0x012a, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0140, 0x0140, 0x014c,
+ // Entry 80 - BF
+ 0x014c, 0x0159, 0x0159, 0x0159, 0x0159, 0x0167, 0x0173, 0x017e,
+ 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e,
+ 0x017e, 0x017e, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a,
+ 0x0196, 0x0196, 0x01a0, 0x01a0, 0x01a0, 0x01a9, 0x01a9, 0x01a9,
+ 0x01a9, 0x01a9, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01c3,
+ 0x01cd, 0x01cd, 0x01cd, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db,
+ 0x01db, 0x01e6, 0x01e6, 0x01f3, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
+ 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
+ // Entry C0 - FF
+ 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
+ 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
+ 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc,
+ 0x01fc, 0x0205,
+ },
+ },
+ { // bez
+ "HiakanHiamhariHiharabuHibelarusiHibulgariaHibanglaHichekiHijerumaniHigir" +
+ "ikiHiingerezaHihispaniaHiajemiHifaransaHihausaHihindiHihungariHiindo" +
+ "nesiaHiiboHiitalianoHijapaniHijavaHikambodiaHikoreaHimalesiaHiburmaH" +
+ "inepaliHiholanziHipunjabiHipolandiHilenoHilomaniaHilusiHinyarwandaHi" +
+ "somaliHiswidiHitamilHitailandHitulukiHiukraniaHiurduHivietinamuHiyor" +
+ "ubaHichinaHizuluHibena",
+ []uint16{ // 220 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a,
+ 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0055, 0x0055, 0x005f,
+ 0x005f, 0x005f, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x006f,
+ 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0076,
+ 0x0076, 0x007d, 0x007d, 0x007d, 0x007d, 0x0086, 0x0086, 0x0086,
+ // Entry 40 - 7F
+ 0x0086, 0x0091, 0x0091, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
+ 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
+ // Entry 80 - BF
+ 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
+ 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0131, 0x0131, 0x0131,
+ 0x0131, 0x0131, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0142,
+ 0x0148, 0x0148, 0x0148, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153,
+ 0x0153, 0x015b, 0x015b, 0x0162, 0x0168, 0x0168, 0x0168, 0x0168,
+ 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
+ // Entry C0 - FF
+ 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
+ 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
+ 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
+ 0x0168, 0x0168, 0x0168, 0x016e,
+ },
+ },
+ { // bg
+ bgLangStr,
+ bgLangIdx,
+ },
+ { // bm
+ "akankanamarikikanlarabukanbiyelorisikanbuligarikanbamanakanbɛngalikancɛk" +
+ "ikanalimaɲikangɛrɛsikanangilɛkanesipaɲolkanperisanikantubabukanawusa" +
+ "kaninidikanoŋirikanƐndonezikanigibokanitalikanzapɔnekanjavanekankamb" +
+ "ojikankorekanmalɛzikanbirimanikannepalekanolandekanpɛnijabikanpolone" +
+ "kanpɔritigalikanrumanikanirisikanruwandakansomalikansuwɛdikantamulik" +
+ "antayikanturikikanukɛrɛnikanurudukanwiyɛtinamukanyorubakansiniwakanz" +
+ "ulukan",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0011, 0x0011,
+ 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0027, 0x0032,
+ 0x0032, 0x003b, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
+ 0x0046, 0x0046, 0x0046, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
+ 0x0059, 0x0059, 0x0059, 0x0059, 0x0064, 0x006e, 0x006e, 0x007a,
+ 0x007a, 0x007a, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x0096,
+ 0x0096, 0x009e, 0x009e, 0x009e, 0x009e, 0x00a7, 0x00a7, 0x00a7,
+ // Entry 40 - 7F
+ 0x00a7, 0x00b3, 0x00b3, 0x00bb, 0x00bb, 0x00bb, 0x00bb, 0x00bb,
+ 0x00c3, 0x00c3, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
+ 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
+ 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
+ 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
+ 0x00e7, 0x00e7, 0x00e7, 0x00f1, 0x00f1, 0x00fc, 0x00fc, 0x00fc,
+ 0x0105, 0x0105, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e,
+ 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x011a, 0x011a, 0x0123,
+ // Entry 80 - BF
+ 0x0123, 0x0131, 0x0131, 0x0131, 0x0131, 0x013a, 0x0142, 0x014c,
+ 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c,
+ 0x014c, 0x014c, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155,
+ 0x015f, 0x015f, 0x0168, 0x0168, 0x0168, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0184,
+ 0x018c, 0x018c, 0x018c, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a,
+ 0x019a, 0x01a3, 0x01a3, 0x01ac, 0x01b3,
+ },
+ },
+ { // bn
+ bnLangStr,
+ bnLangIdx,
+ },
+ { // bo
+ "བོད་སྐད་རྫོང་ཁདབྱིན་ཇིའི་སྐད།ཧིན་དིཉི་ཧོང་སྐད་ནེ་པ་ལིཨུ་རུ་སུ་སྐད་རྒྱ་སྐ" +
+ "ད་ཟ་ཟའ་སྐད།དབྱིན་ཇིའི་སྐད། (ཁེ་ན་ཌ་)དབྱིན་ཇིའི་སྐད། (དབྱིན་ལན་)དབྱ" +
+ "ིན་ཇིའི་སྐད། (ཨ་རི་)",
+ []uint16{ // 596 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
+ 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
+ 0x0018, 0x0018, 0x002a, 0x002a, 0x002a, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
+ // Entry 40 - 7F
+ 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
+ 0x0069, 0x0069, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
+ 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
+ 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
+ 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
+ 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
+ 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f,
+ 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f,
+ // Entry 80 - BF
+ 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry C0 - FF
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry 100 - 13F
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry 140 - 17F
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry 180 - 1BF
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry 1C0 - 1FF
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry 200 - 23F
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry 240 - 27F
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9,
+ 0x00f9, 0x013e, 0x0189, 0x01c8,
+ },
+ },
+ {}, // bo-IN
+ { // br
+ "afarabkhazegavestegafrikaansakanamharegaragonegarabegasamegavaraymaraaze" +
+ "rbaidjanegbachkirbelarusegbulgaregbislamabambarabengalitibetanegbrez" +
+ "honegbosnegkatalanegtchetchenegchamorrukorsegkritchekegslavoneg iliz" +
+ "tchouvatchkembraegdanegalamanegdivehidzongkhaewegresianegsaoznegespe" +
+ "rantegspagnolegestonegeuskaregpersegfinnegfidjiegfaeroeggallegfrizeg" +
+ " ar Cʼhornôgiwerzhonegskoseggalizegguaranigujaratimanaveghaousahebra" +
+ "eghindihiri motukroateghaitieghungaregarmenianeghererointerlinguaind" +
+ "onezeginterlingueigboyieg Sichuaninupiaqidoislandegitalianeginuktitu" +
+ "tjapanegjavanegjorjianegkongokikuyukwanyamakazakkhmerkanaregkoreaneg" +
+ "kanourikashmirikurdegkerneveuregkirgizlatinluksembourgeggandalimbour" +
+ "geglingalalaoseglituanegluba-katangalatviegmalgachegmarshallmaorimak" +
+ "edonegmalayalammongolegmarathimalaysegmaltegbirmanegnauruegndebele a" +
+ "n Norzhnepalegndonganederlandegnorvegeg nynorsknorvegeg bokmålndebel" +
+ "e ar Sunavacʼhonyanjaokitanegojibwaoriyaosetegpunjabipalipolonegpach" +
+ "toportugalegkechuaegromañchegrundiroumanegrusianegkinyarwandasanskri" +
+ "tegsardegsindhisámi an Norzhsangosinghalegslovakegslovenegsamoanshon" +
+ "asomalialbanegserbegswatisotho ar Susundanegsvedegswahilitamilegtelo" +
+ "ugoutadjikthaitigrignaturkmenegtswanatongaturkegtsongatatartahitiane" +
+ "gouigouregukrainegourdououzbekegvendavietnamegvolapükwallonegwolofxh" +
+ "osayiddishyoroubazhuangsinaegzoulouegachinegacoliadangmeadygeiegarab" +
+ "eg Tuniziaafrihiliaghemainouegakadegalabamaegaleouteggegegaltaieg ar" +
+ " Suhensaoznegangikaarameegaraoukanegaraonaarapahoarabeg Aljeriaarawa" +
+ "kegarabeg Marokoarabeg Egiptasuyezh sinoù Amerikaasturianegawadhibal" +
+ "outchibalinegbavariegbasaabedawiegbembabenabaloutchi ar Cʼhornôgbhoj" +
+ "puribikolbinibrajbrahwegbodoakoosebouriatbugiblincaddokaribegatsamce" +
+ "buanochibchamariegchoktawchipewyancherokeecheyennekurdeg soranikopte" +
+ "gturkeg Krimeakachoubegdakotadargwadelawaredogribdinkadogriizelsorab" +
+ "egnederlandeg krenndyulaembuefikhenegiptegekajukelamegkrennsaoznegew" +
+ "ondofangfilipinegfinneg traoñienn an Tornefongalleg cajunkrenncʼhall" +
+ "eghencʼhallegarpitanegfrizeg an Norzhfrizeg ar Reterfrioulaneggagaga" +
+ "ouzegsinaeg Gangayogbayagezeggilbertegkrennalamaneg uhelhenalamaneg " +
+ "uhelgorontalogoteggrebohencʼhresianegalamaneg Suishaidasinaeg Hakkah" +
+ "awaieghiligaynonhmonguhelsorabegsinaeg Xianhupaibanibibioingouchegkr" +
+ "eoleg Jamaikayuzev-persegyuzev-arabegkarakalpakkabilegkachinkambakab" +
+ "ardegkabuverdianukhasikhotanegkimbundukonkanikosraekpellekaratchay-b" +
+ "alkarkareliegkurukhkolunegkutenailadinolahndalambalezgilingua franca" +
+ " novaliguriegmongoloziluba-lulualuisenolundaluolushailuyiasinaeg len" +
+ "negelmagahimaithilimasaimokshamandarmendemorisegkrenniwerzhonegmanch" +
+ "oumanipurimohawkmarieg ar Cʼhornôgyezhoù liesmuskogimirandegerzasina" +
+ "eg Min Nannapolitanegalamaneg izelnewariniasniueaoegnogayhennorsegno" +
+ "vialsotho an Norzhnewari klaselnyamwezinyankolenyoroosageturkeg otom" +
+ "anpangasinanpahlavipampangapapiamentopalaupikardegalamaneg Pennsylva" +
+ "niahenbersegfenikianegpiemontegpontegpohnpeihenbruseghenbrovañsegkic" +
+ "huaeg Chimborazorajasthanirapanuirarotongaromagnolegromboromaniegaro" +
+ "umanegrwasandaweyakoutegarameeg ar Samaritanedsasaksantalisikiliegsk" +
+ "otegsasaresegheniwerzhonegtachelitegshanarabeg Tchadsidamosámi ar Su" +
+ "sámi Luleåsámi Inarisámi Skoltsoninkesogdiegserersumeregkomoregswahi" +
+ "li Kongosirieg klaselsiriegsileziegtoulouegterenotetumtigreanegtivto" +
+ "kelauklingontinglittamachegnyasa tongatok pisinturoyoegtsimshiantumb" +
+ "ukatuvalutouvatamazigteg Kreizatlasoudmourtegougaritegumbunduyezh di" +
+ "anavvaiveneziegvepsegflandrezeg ar c’hornôgvotyakegvoroegwalserwalam" +
+ "owaraywashosinaeg WukalmoukmegrelegyaoyapegkantonegzapotegBlisszelan" +
+ "degzenagatamacheg Maroko standartzunidiyezharabeg modernalamaneg Aos" +
+ "triaalamaneg uhel Suissaozneg Aostraliasaozneg Kanadasaozneg Breizh-" +
+ "Veursaozneg Amerikaspagnoleg Amerika latinspagnoleg Europaspagnoleg " +
+ "Mecʼhikogalleg Kanadagalleg Suissaksoneg izelflandrezegportugaleg Br" +
+ "azilportugaleg Europamoldovegserb-kroategsinaeg eeunaetsinaeg hengou" +
+ "nel",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x0020, 0x0027, 0x002f,
+ 0x0035, 0x003b, 0x003f, 0x0045, 0x0052, 0x0059, 0x0062, 0x006a,
+ 0x0071, 0x0078, 0x007f, 0x0088, 0x0091, 0x0097, 0x00a0, 0x00ab,
+ 0x00b3, 0x00b9, 0x00bc, 0x00c3, 0x00d0, 0x00da, 0x00e2, 0x00e7,
+ 0x00ef, 0x00f5, 0x00fd, 0x0100, 0x0109, 0x0110, 0x011a, 0x0123,
+ 0x012a, 0x0132, 0x0138, 0x0138, 0x013e, 0x0145, 0x014c, 0x0152,
+ 0x0166, 0x0170, 0x0176, 0x017d, 0x0184, 0x018c, 0x0193, 0x0199,
+ 0x01a0, 0x01a5, 0x01ae, 0x01b5, 0x01bc, 0x01c4, 0x01ce, 0x01d4,
+ // Entry 40 - 7F
+ 0x01df, 0x01e8, 0x01f3, 0x01f7, 0x0203, 0x020a, 0x020d, 0x0215,
+ 0x021e, 0x0227, 0x022e, 0x0235, 0x023e, 0x0243, 0x0249, 0x0251,
+ 0x0256, 0x0256, 0x025b, 0x0262, 0x026a, 0x0271, 0x0279, 0x027f,
+ 0x027f, 0x028a, 0x0290, 0x0295, 0x02a2, 0x02a7, 0x02b1, 0x02b8,
+ 0x02be, 0x02c6, 0x02d2, 0x02d9, 0x02e2, 0x02ea, 0x02ef, 0x02f8,
+ 0x0301, 0x0309, 0x0310, 0x0318, 0x031e, 0x0326, 0x032d, 0x033d,
+ 0x0344, 0x034a, 0x0355, 0x0365, 0x0375, 0x0382, 0x038b, 0x0391,
+ 0x0399, 0x039f, 0x039f, 0x03a4, 0x03aa, 0x03b1, 0x03b5, 0x03bc,
+ // Entry 80 - BF
+ 0x03c2, 0x03cc, 0x03d4, 0x03de, 0x03e3, 0x03eb, 0x03f3, 0x03fe,
+ 0x0408, 0x040e, 0x0414, 0x0422, 0x0427, 0x0430, 0x0438, 0x0440,
+ 0x0446, 0x044b, 0x0451, 0x0458, 0x045e, 0x0463, 0x046e, 0x0476,
+ 0x047c, 0x0483, 0x048a, 0x0492, 0x0498, 0x049c, 0x04a4, 0x04ad,
+ 0x04b3, 0x04b8, 0x04be, 0x04c4, 0x04c9, 0x04d3, 0x04dc, 0x04e4,
+ 0x04ea, 0x04f2, 0x04f7, 0x0500, 0x0508, 0x0510, 0x0515, 0x051a,
+ 0x0521, 0x0528, 0x052e, 0x0534, 0x053c, 0x0543, 0x0548, 0x054f,
+ 0x0557, 0x0565, 0x056d, 0x0572, 0x0579, 0x057f, 0x0588, 0x0590,
+ // Entry C0 - FF
+ 0x0595, 0x05a2, 0x05ac, 0x05b2, 0x05b9, 0x05c3, 0x05c9, 0x05d0,
+ 0x05de, 0x05e6, 0x05f3, 0x05ff, 0x0602, 0x0615, 0x061f, 0x061f,
+ 0x0625, 0x062e, 0x0635, 0x063d, 0x0642, 0x0642, 0x0642, 0x0642,
+ 0x064a, 0x064f, 0x064f, 0x0653, 0x0653, 0x0653, 0x066a, 0x0672,
+ 0x0677, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, 0x067f,
+ 0x0686, 0x068a, 0x0690, 0x0697, 0x069b, 0x069b, 0x069f, 0x069f,
+ 0x06a4, 0x06ab, 0x06ab, 0x06b0, 0x06b7, 0x06b7, 0x06be, 0x06be,
+ 0x06be, 0x06c4, 0x06c4, 0x06cb, 0x06d4, 0x06dc, 0x06e4, 0x06f1,
+ // Entry 100 - 13F
+ 0x06f7, 0x06f7, 0x0704, 0x070d, 0x0713, 0x0719, 0x0719, 0x0721,
+ 0x0721, 0x0727, 0x072c, 0x072c, 0x0731, 0x073c, 0x073c, 0x073c,
+ 0x074d, 0x074d, 0x0752, 0x0752, 0x0756, 0x075a, 0x075a, 0x0764,
+ 0x076a, 0x0770, 0x077c, 0x077c, 0x0782, 0x0782, 0x0786, 0x078f,
+ 0x07a9, 0x07ac, 0x07b8, 0x07c6, 0x07d2, 0x07db, 0x07ea, 0x07f9,
+ 0x0803, 0x0805, 0x080e, 0x0818, 0x081c, 0x0821, 0x0821, 0x0826,
+ 0x082f, 0x082f, 0x0841, 0x0851, 0x0851, 0x0851, 0x085a, 0x085f,
+ 0x0864, 0x0873, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0885,
+ // Entry 140 - 17F
+ 0x0891, 0x0898, 0x0898, 0x08a2, 0x08a2, 0x08a7, 0x08b2, 0x08bd,
+ 0x08c1, 0x08c5, 0x08cb, 0x08cb, 0x08d4, 0x08d4, 0x08e3, 0x08e3,
+ 0x08e3, 0x08e3, 0x08ef, 0x08fb, 0x08fb, 0x0905, 0x090c, 0x0912,
+ 0x0912, 0x0917, 0x0917, 0x091f, 0x091f, 0x091f, 0x091f, 0x092b,
+ 0x092b, 0x092b, 0x092b, 0x0930, 0x0938, 0x0938, 0x0938, 0x0938,
+ 0x0938, 0x0938, 0x0940, 0x0940, 0x0947, 0x094d, 0x0953, 0x0963,
+ 0x0963, 0x0963, 0x096b, 0x0971, 0x0971, 0x0971, 0x0978, 0x0978,
+ 0x097f, 0x0985, 0x0985, 0x098b, 0x0990, 0x0995, 0x09a7, 0x09af,
+ // Entry 180 - 1BF
+ 0x09af, 0x09af, 0x09af, 0x09b4, 0x09b8, 0x09b8, 0x09b8, 0x09c2,
+ 0x09c9, 0x09ce, 0x09d1, 0x09d7, 0x09dc, 0x09eb, 0x09eb, 0x09eb,
+ 0x09eb, 0x09f1, 0x09f9, 0x09f9, 0x09f9, 0x09fe, 0x09fe, 0x0a04,
+ 0x0a0a, 0x0a0f, 0x0a0f, 0x0a16, 0x0a25, 0x0a25, 0x0a25, 0x0a25,
+ 0x0a25, 0x0a2c, 0x0a34, 0x0a3a, 0x0a3a, 0x0a4e, 0x0a4e, 0x0a5a,
+ 0x0a61, 0x0a69, 0x0a69, 0x0a69, 0x0a69, 0x0a6d, 0x0a6d, 0x0a7b,
+ 0x0a86, 0x0a86, 0x0a93, 0x0a99, 0x0a9d, 0x0aa1, 0x0aa5, 0x0aa5,
+ 0x0aa5, 0x0aaa, 0x0ab3, 0x0ab9, 0x0ab9, 0x0ac7, 0x0ac7, 0x0ad4,
+ // Entry 1C0 - 1FF
+ 0x0adc, 0x0ae4, 0x0ae9, 0x0ae9, 0x0aee, 0x0afb, 0x0b05, 0x0b0c,
+ 0x0b14, 0x0b1e, 0x0b23, 0x0b2b, 0x0b40, 0x0b40, 0x0b49, 0x0b49,
+ 0x0b53, 0x0b5c, 0x0b62, 0x0b69, 0x0b72, 0x0b7f, 0x0b7f, 0x0b92,
+ 0x0b9c, 0x0ba3, 0x0bac, 0x0bb6, 0x0bb6, 0x0bbb, 0x0bc3, 0x0bc3,
+ 0x0bc3, 0x0bc3, 0x0bcc, 0x0bcf, 0x0bd6, 0x0bde, 0x0bf4, 0x0bf4,
+ 0x0bf9, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c08, 0x0c0e, 0x0c17,
+ 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c17, 0x0c24, 0x0c24,
+ 0x0c2e, 0x0c32, 0x0c3e, 0x0c44, 0x0c44, 0x0c44, 0x0c4f, 0x0c5b,
+ // Entry 200 - 23F
+ 0x0c66, 0x0c71, 0x0c78, 0x0c7f, 0x0c7f, 0x0c84, 0x0c84, 0x0c84,
+ 0x0c84, 0x0c84, 0x0c8b, 0x0c92, 0x0c9f, 0x0cac, 0x0cb2, 0x0cba,
+ 0x0cc2, 0x0cc2, 0x0cc2, 0x0cc8, 0x0ccd, 0x0cd6, 0x0cd9, 0x0ce0,
+ 0x0ce0, 0x0ce7, 0x0cee, 0x0cee, 0x0cf6, 0x0d01, 0x0d0a, 0x0d12,
+ 0x0d12, 0x0d12, 0x0d1b, 0x0d1b, 0x0d22, 0x0d28, 0x0d28, 0x0d2d,
+ 0x0d42, 0x0d4c, 0x0d55, 0x0d5c, 0x0d67, 0x0d6a, 0x0d72, 0x0d78,
+ 0x0d91, 0x0d91, 0x0d99, 0x0d9f, 0x0d9f, 0x0da5, 0x0dab, 0x0db0,
+ 0x0db5, 0x0db5, 0x0dbe, 0x0dc5, 0x0dcd, 0x0dcd, 0x0dd0, 0x0dd5,
+ // Entry 240 - 27F
+ 0x0dd5, 0x0dd5, 0x0dd5, 0x0ddd, 0x0de4, 0x0de9, 0x0df1, 0x0df7,
+ 0x0e0f, 0x0e13, 0x0e19, 0x0e19, 0x0e26, 0x0e26, 0x0e36, 0x0e48,
+ 0x0e59, 0x0e67, 0x0e7a, 0x0e89, 0x0ea0, 0x0eb0, 0x0ec3, 0x0ec3,
+ 0x0ed0, 0x0edb, 0x0ee8, 0x0ef2, 0x0f03, 0x0f14, 0x0f1c, 0x0f28,
+ 0x0f36, 0x0f46,
+ },
+ },
+ { // brx
+ "अब्खाज़ियन्अवस्तन्अफ्रीकीअकनअम्हारिक्आर्गोनीअरबीअसामीअवारिक्आयमाराअज़रबै" +
+ "जानीबशख़िर्बैलोरूसियन्बल्गैरियन्बिस्लामाबांबाराबंगलातिब्बतीब्रटोंब" +
+ "ोस्नियाईकातालान्चेचेन्चामोरोकोर्सीकन्क्रीचेक्चर्च स्लाविक्चुवाश्वै" +
+ "ल्श्डैनीश्ज़र्मनदीवेहीभुटानीएवेग्रीकअंग्रेज़ीएस्पेरान्तोस्पैनिशऐस्" +
+ "टोनियन्बास्क्फार्सीफुलाह्फिनिश्फ़ीजीफिरोज़ीफ्रांसीसीपश्चीमी फ्रीज़" +
+ "ियन्आईरिशस्कॉट्स् गैलिक्गैलिशियन्गुआरानीगुजरातीमैंक्सहउसाहिब्रुहिं" +
+ "दीहीरी मोटुक्रोएशन्हाईशीयन्हंगैरीयन्अरमेनियन्हेरेरोईन्टरलिंग्वाइन्" +
+ "डोनेशियन्ईन्टरलिंग्वेईग्बोसीचुआन् यीइनुपियाक़्ईडोआईस्लैंडिक्ईटालिय" +
+ "न्इनूक्टीटूत्जापानीजावानीसजॉर्जियन्कॉंगोकिकुयुकुआनयामाक़ज़ाख़्कलाल" +
+ "ीसुतख्मेरकन्नड्कोरीयन्कनुरीकश्मिरीकुर्दीकोमीकौर्नवॉलीकिरग़ीज़्लैटी" +
+ "न्लुक्समबुर्गीगांडालींबुर्गीलिंगालालाओसीयन्लिथुआनियन्लुबा कटांगाला" +
+ "टवियन् (लैट्टीश)मालागासीमार्शलीमाओरीमैसेडोनियन्मलयालममोंगोलियनमराठ" +
+ "ीमलायमालटीज़्बर्मीनाऊरूउत्तर न्दबेलेनेपालीन्डोंगाडच्नॉर्वेजियन् नी" +
+ "नॉर्स्क्नोर्वेगी बोकमालदक्षिणी न्दबेलेनावाहोन्यानजाओक्सीतानओहीबवाओ" +
+ "रोमो (अफ़ान)उड़ियाओस्सेटीपंजाबीपालीपोलिशपख़्तुपुर्तगालीक्वेचुआरेह्" +
+ "टो-रोमान्सकिरून्दीरूमानीयन्रुसीकिन्यारुआण्डासंस्कृत्सार्दीनीसिंधीउ" +
+ "त्तरी सामीसांग्रोसींहालास्लोवाक्स्लोवेनियन्सामोअनशोनासोमालीआल्बेनि" +
+ "यन्सर्बियन्स्वाटिसुन्दानीस्वीडिशस्वाहिलीतमिळतेलुगुताजिक्थाईतिग्रीन" +
+ "्यातुर्कमेनत्स्वानाटॉंगातुर्कीसोंगाटाटर्टाहिटिउईग़ुरयूक्रेनियन्ऊर्" +
+ "दुउज़बेक्वेंडावियेतनामीवोलापोकवालुनवोलोफख़ोसायीद्दीशयोरूबाज़ुआंगची" +
+ "नीज़ुलूअचेहनीअकोलीअडांगमेअडीगेअफ्रीहीलीऐनूअकाडिनीअलुटपुरानी अंग्रे" +
+ "ज़ीअंगीकाअरामाईकअरापाहोअरावाकअवधीबलूचीबालिनीबास्क़्बेजाबेंबाभोजपुर" +
+ "ीबिकोल्बिनीसीकसीकाब्रजबड़ोबुरियातबुगीनीब्लीनकाद्दौकारीब्आत्समचेबुआ" +
+ "नोचीबचाचगताईचुकेसेमारीचीनूक् जार्गन्चौक्टोचिपेवियान्चीरोकीशायान्कॉ" +
+ "प्टीक्तुर्की क्रिमियाकाशुबियान्डकौटादर्गवादलावार्स्लेव्डोगरीब्डींग" +
+ "काडोगरीसोर्बियन्डुआलामध्य डचद्युआलाएफीक्प्राचीन मिस्रीएकाजुकएलामीम" +
+ "ध्य अंग्रेज़ीएवौंडोफाँग्फिलिपिनोफोनमध्य फ्रांसीसीपुरानी फ्रांसीसीउ" +
+ "त्तरी फ्रीज़ियन्पूर्वी फ्रीज़ियन्फ्रीउलीअन्गागायोग्बायागीज़्गीलबर्" +
+ "टीमध्य उच्चस्तरी जर्मनपुरानी उच्चस्तरी जर्मनगाँडीगोरंटालोगॉथिकग्रे" +
+ "बोप्राचीन यूनानीस्वीस जर्मनग्वीचलीनहईडाहवाईअनहीलीगैनोनहीत्तीह्मौंग" +
+ "ऊपरी सौर्बियनहूपाईबान्ईलोकोईंगुषलोजबानयहुदी फ़ारसीयहुदी अरबीकारा क" +
+ "लपककाबील्कचीन्जुकंबाकावीकबार्डी भाषात्याप्कोरोख़ासीख़ोतानीकींबुंडु" +
+ "कोंकणीकोस्राईयन्क्पेलेकराचय् बलकार्करेलियन्कुरुख़्कुमीक्कुतेनाईलाड" +
+ "़ीनोलाह्डांलांबालेज़गीयानमोंगोलोज़ीलुबा लुलुआलुईसेनोलुंडालुओलुशाईम" +
+ "ादुरीमघीमैथीलीमक्सरमांडींगोमसाईमोक्षामंदारमेंदेमध्य आईरीश भाषामीकम" +
+ "ाकमिनंगकाबाउमांचुमणीपुरीमोहोकमोस्सीक्रीकमीरांडीमारवाड़ीऐर्ज़ियानेआ" +
+ "पोलिटननीजी स्तरिय जर्मननेवारीनियासनियुइआननोगाईपुरानी नॉर्स्न्गकोपु" +
+ "रानी नेवारीन्यामवेज़ीन्यानकोलेन्यौरोन्ज़ीमाओसेजतुर्की ओटोमानपांगास" +
+ "ीननपहलवीपंपंगापापीआमेन्तोपालाऊपुरानी फ़ारसीफीनीसीपोहनपीपुरानी प्रो" +
+ "वाँसालराजस्थानीरापानुईरारोटोंगारुमानीआरोमानीसंडावेयकुट्समारीती आरा" +
+ "माईक़सासकसंतालीसीसीलीअनस्कॉटसेलकुपपुरानी आईरीशशानसीदामोपश्चीमी साम" +
+ "ीलुले सामीईनारी सामीस्कोल्ट् सामीसोनिंगकेसोगडीयनस्रनान् टॉंगोसेरेर" +
+ "सुकुमासुसुसुमेरिअनपारंपरीक सिरिआकसिरिआकतीमनेतेरेनोतेतुमटीग्रेटीव्ट" +
+ "ोकेलौक्लींगदनट्लिंगीततमाशेकन्यासा टॉंगातोक पिसीनत्सीमशीआन्टुँबुकाट" +
+ "ुवालुटुवीउड़मुर्तउगारितीउंबुंडुरुटवाईवोटीकवालामोवारयवाशोकालमीकयाओय" +
+ "ापीज़ज़ापोतेकब्लीस चिन्हज़ेनागाज़ुनीरिक्तज़ाज़ाजर्मन (ऑस्ट्रिया)उच" +
+ "्च स्तरिय स्वीस जर्मनअंग्रेज़ी (ऑस्ट्रेलिया का)अंग्रेज़ी (कनाडाई)अ" +
+ "ंग्रेजी (ब्रिटिश)अंग्रेज़ी (अमरिकी)लैटिन अमरिकी स्पैनिशईवेरियाई स्" +
+ "पैनिशफ्रांसीसी (कनाडाई)फ्रांसीसी (स्वीस)फ्लेमीमोल्डेवियन्सर्बो-क्र" +
+ "ोएशन्चीनी (सरलीकृत)चीनी (पारम्परिक)",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0021, 0x0036, 0x004b, 0x0054, 0x006f, 0x0084,
+ 0x0090, 0x009f, 0x00b4, 0x00c6, 0x00e4, 0x00f9, 0x011a, 0x0138,
+ 0x0150, 0x0165, 0x0174, 0x0189, 0x019b, 0x01b6, 0x01ce, 0x01e0,
+ 0x01f2, 0x020d, 0x0219, 0x0225, 0x024a, 0x025c, 0x026e, 0x0280,
+ 0x0292, 0x02a4, 0x02b6, 0x02bf, 0x02ce, 0x02e9, 0x030a, 0x031f,
+ 0x033d, 0x034f, 0x0361, 0x0373, 0x0385, 0x0394, 0x03a9, 0x03c4,
+ 0x03f8, 0x0407, 0x0432, 0x044d, 0x0462, 0x0477, 0x0489, 0x0495,
+ 0x04a7, 0x04b6, 0x04cf, 0x04e7, 0x04ff, 0x051a, 0x0535, 0x0547,
+ // Entry 40 - 7F
+ 0x056b, 0x058f, 0x05b3, 0x05c2, 0x05de, 0x05fc, 0x0605, 0x0626,
+ 0x063e, 0x065f, 0x0671, 0x0686, 0x06a1, 0x06b0, 0x06c2, 0x06da,
+ 0x06f2, 0x070a, 0x0719, 0x072b, 0x0740, 0x074f, 0x0764, 0x0776,
+ 0x0782, 0x079d, 0x07b8, 0x07ca, 0x07ee, 0x07fd, 0x0818, 0x082d,
+ 0x0845, 0x0863, 0x0882, 0x08b2, 0x08ca, 0x08df, 0x08ee, 0x090f,
+ 0x0921, 0x093c, 0x094b, 0x0957, 0x096f, 0x097e, 0x098d, 0x09b2,
+ 0x09c4, 0x09d9, 0x09e2, 0x0a22, 0x0a4d, 0x0a78, 0x0a8a, 0x0a9f,
+ 0x0ab7, 0x0ac9, 0x0aea, 0x0afc, 0x0b11, 0x0b23, 0x0b2f, 0x0b3e,
+ // Entry 80 - BF
+ 0x0b50, 0x0b6b, 0x0b80, 0x0ba8, 0x0bc0, 0x0bdb, 0x0be7, 0x0c0e,
+ 0x0c26, 0x0c3e, 0x0c4d, 0x0c6c, 0x0c81, 0x0c96, 0x0cae, 0x0ccf,
+ 0x0ce1, 0x0ced, 0x0cff, 0x0d1d, 0x0d35, 0x0d47, 0x0d47, 0x0d5f,
+ 0x0d74, 0x0d8c, 0x0d98, 0x0daa, 0x0dbc, 0x0dc5, 0x0de3, 0x0dfb,
+ 0x0e13, 0x0e22, 0x0e34, 0x0e43, 0x0e52, 0x0e64, 0x0e76, 0x0e97,
+ 0x0ea6, 0x0ebb, 0x0eca, 0x0ee5, 0x0efa, 0x0f09, 0x0f18, 0x0f27,
+ 0x0f3c, 0x0f4e, 0x0f60, 0x0f6c, 0x0f7b, 0x0f8d, 0x0f9c, 0x0fb1,
+ 0x0fc0, 0x0fc0, 0x0fdb, 0x0fdb, 0x0fe4, 0x0ff9, 0x0ff9, 0x1005,
+ // Entry C0 - FF
+ 0x1005, 0x1005, 0x1033, 0x1045, 0x105a, 0x105a, 0x105a, 0x106f,
+ 0x106f, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081,
+ 0x108d, 0x109c, 0x10ae, 0x10ae, 0x10c3, 0x10c3, 0x10c3, 0x10c3,
+ 0x10cf, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, 0x10f3,
+ 0x1105, 0x1111, 0x1111, 0x1111, 0x1126, 0x1126, 0x1126, 0x1132,
+ 0x1132, 0x113e, 0x113e, 0x1153, 0x1165, 0x1165, 0x1174, 0x1174,
+ 0x1186, 0x1198, 0x1198, 0x11a7, 0x11bc, 0x11bc, 0x11cb, 0x11da,
+ 0x11ec, 0x11f8, 0x1220, 0x1232, 0x1250, 0x1262, 0x1274, 0x1274,
+ // Entry 100 - 13F
+ 0x128c, 0x128c, 0x12b7, 0x12d5, 0x12e4, 0x12f6, 0x12f6, 0x130b,
+ 0x131d, 0x1332, 0x1344, 0x1344, 0x1353, 0x136e, 0x136e, 0x137d,
+ 0x1390, 0x1390, 0x13a5, 0x13a5, 0x13a5, 0x13b4, 0x13b4, 0x13dc,
+ 0x13ee, 0x13fd, 0x1425, 0x1425, 0x1437, 0x1437, 0x1446, 0x145e,
+ 0x145e, 0x1467, 0x1467, 0x148f, 0x14bd, 0x14bd, 0x14ee, 0x151f,
+ 0x153d, 0x1543, 0x1543, 0x1543, 0x154f, 0x1561, 0x1561, 0x1570,
+ 0x1588, 0x1588, 0x15c0, 0x15fe, 0x15fe, 0x160d, 0x1625, 0x1634,
+ 0x1646, 0x166e, 0x168d, 0x168d, 0x168d, 0x168d, 0x16a5, 0x16b1,
+ // Entry 140 - 17F
+ 0x16b1, 0x16c3, 0x16c3, 0x16de, 0x16f0, 0x1702, 0x1727, 0x1727,
+ 0x1733, 0x1742, 0x1742, 0x1751, 0x1760, 0x1760, 0x1760, 0x1772,
+ 0x1772, 0x1772, 0x1794, 0x17b0, 0x17b0, 0x17c9, 0x17db, 0x17ea,
+ 0x17f0, 0x17fc, 0x1808, 0x182a, 0x182a, 0x183c, 0x183c, 0x183c,
+ 0x183c, 0x1848, 0x1848, 0x1857, 0x186c, 0x186c, 0x186c, 0x186c,
+ 0x186c, 0x186c, 0x1884, 0x1884, 0x1896, 0x18b4, 0x18c6, 0x18eb,
+ 0x18eb, 0x18eb, 0x1903, 0x1918, 0x1918, 0x1918, 0x1918, 0x192a,
+ 0x193f, 0x1954, 0x1954, 0x1969, 0x1978, 0x1993, 0x1993, 0x1993,
+ // Entry 180 - 1BF
+ 0x1993, 0x1993, 0x1993, 0x19a2, 0x19b1, 0x19b1, 0x19b1, 0x19cd,
+ 0x19e2, 0x19f1, 0x19fa, 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a1b,
+ 0x1a1b, 0x1a24, 0x1a36, 0x1a45, 0x1a5d, 0x1a69, 0x1a69, 0x1a7b,
+ 0x1a8a, 0x1a99, 0x1a99, 0x1a99, 0x1ac2, 0x1ac2, 0x1ac2, 0x1ad4,
+ 0x1af2, 0x1b01, 0x1b16, 0x1b25, 0x1b37, 0x1b37, 0x1b37, 0x1b37,
+ 0x1b46, 0x1b5b, 0x1b73, 0x1b73, 0x1b73, 0x1b8b, 0x1b8b, 0x1b8b,
+ 0x1ba6, 0x1ba6, 0x1bd5, 0x1be7, 0x1bf6, 0x1c0b, 0x1c0b, 0x1c0b,
+ 0x1c0b, 0x1c1a, 0x1c3f, 0x1c3f, 0x1c4e, 0x1c4e, 0x1c4e, 0x1c73,
+ // Entry 1C0 - 1FF
+ 0x1c91, 0x1cac, 0x1cbe, 0x1cd3, 0x1cdf, 0x1d04, 0x1d1f, 0x1d2e,
+ 0x1d40, 0x1d61, 0x1d70, 0x1d70, 0x1d70, 0x1d70, 0x1d95, 0x1d95,
+ 0x1da7, 0x1da7, 0x1da7, 0x1db9, 0x1db9, 0x1dea, 0x1dea, 0x1dea,
+ 0x1e05, 0x1e1a, 0x1e35, 0x1e35, 0x1e35, 0x1e35, 0x1e47, 0x1e47,
+ 0x1e47, 0x1e47, 0x1e5c, 0x1e5c, 0x1e6e, 0x1e7d, 0x1eab, 0x1eab,
+ 0x1eb7, 0x1ec9, 0x1ec9, 0x1ec9, 0x1ec9, 0x1ee1, 0x1ef0, 0x1ef0,
+ 0x1ef0, 0x1ef0, 0x1ef0, 0x1ef0, 0x1f02, 0x1f02, 0x1f24, 0x1f24,
+ 0x1f24, 0x1f2d, 0x1f2d, 0x1f3f, 0x1f3f, 0x1f3f, 0x1f61, 0x1f7a,
+ // Entry 200 - 23F
+ 0x1f96, 0x1fbb, 0x1fd3, 0x1fe8, 0x200d, 0x201c, 0x201c, 0x201c,
+ 0x202e, 0x203a, 0x2052, 0x2052, 0x2052, 0x207d, 0x208f, 0x208f,
+ 0x208f, 0x209e, 0x209e, 0x20b0, 0x20bf, 0x20d1, 0x20dd, 0x20ef,
+ 0x20ef, 0x2107, 0x211f, 0x211f, 0x2131, 0x2153, 0x216c, 0x216c,
+ 0x216c, 0x216c, 0x218a, 0x218a, 0x219f, 0x21b1, 0x21b1, 0x21bd,
+ 0x21bd, 0x21d5, 0x21ea, 0x21ff, 0x2208, 0x2211, 0x2211, 0x2211,
+ 0x2211, 0x2211, 0x2220, 0x2220, 0x2220, 0x2220, 0x2232, 0x223e,
+ 0x224a, 0x224a, 0x224a, 0x225c, 0x225c, 0x225c, 0x2265, 0x2277,
+ // Entry 240 - 27F
+ 0x2277, 0x2277, 0x2277, 0x2277, 0x228f, 0x22ae, 0x22ae, 0x22c3,
+ 0x22c3, 0x22d2, 0x22e1, 0x22f3, 0x22f3, 0x22f3, 0x2320, 0x235f,
+ 0x23a5, 0x23d5, 0x2405, 0x2435, 0x246d, 0x249b, 0x249b, 0x249b,
+ 0x24cb, 0x24f8, 0x24f8, 0x250a, 0x250a, 0x250a, 0x252b, 0x2553,
+ 0x2577, 0x25a1,
+ },
+ },
+ { // bs
+ "afarskiabhazijskiavestanskiafrikanerskiakanamharskiaragonežanskiarapskia" +
+ "semijskiavarskiajmaraazerbejdžanskibaškirskibjeloruskibugarskibislam" +
+ "abambarabengalskitibetanskibretonskibosanskikatalonskičečenskičamoro" +
+ "korzikanskikričeškistaroslovenskičuvaškivelškidanskinjemačkidivehijs" +
+ "kidžongaevegrčkiengleskiesperantošpanskiestonskibaskijskiperzijskifu" +
+ "lahfinskifidžijskifarskifrancuskifrizijskiirskiškotski galskigalskig" +
+ "varanigudžaratimankshausahebrejskihindihiri motuhrvatskihaićanskimađ" +
+ "arskijermenskihererointerlingvaindonezijskiinterlingveigbosičuan jii" +
+ "nupiakidoislandskiitalijanskiinuktitutjapanskijavanskigruzijskikongo" +
+ "kikujukuanjamakazačkikalalisutskikmerskikanadakorejskikanurikašmirik" +
+ "urdskikomikorniškikirgiskilatinskiluksemburškigandalimburgišlingalal" +
+ "aoškilitvanskiluba-katangaletonskimalagazijskimaršalskimaorskimakedo" +
+ "nskimalajalammongolskimaratimalajskimalteškiburmanskinaurusjeverni n" +
+ "debelenepalskindongaholandskinorveški njorsknorveški bokmaljužni nde" +
+ "belenavahonjanjaprovansalskiojibvaoromoorijskiosetskipandžabskipalip" +
+ "oljskipaštunskiportugalskikvenčareto-romanskirundirumunskiruskikinja" +
+ "rvandasanskritsardinijskisindisjeverni samisangosingaleskislovačkisl" +
+ "ovenačkisamoanskišonasomalskialbanskisrpskisvatisesotosundanskišveds" +
+ "kisvahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskitsvanaton" +
+ "ganskiturskitsongatatarskitahićanskiujgurskiukrajinskiurduuzbečkiven" +
+ "davijetnamskivolapükvalunvolofkosajidišjorubanskizuangkineskizuluači" +
+ "neskiakoliadangmejskiadigejskiafrihiliaghemainuakadijskialjutjužni a" +
+ "ltaistaroengleskiangikaarmajskiaraukanskiarapahoaravakasuasturijskia" +
+ "vadhibalučibalinezijskibasabejabembabenazapadni belučkibojpuribikolb" +
+ "inisiksikabrajbodoburiatbuginežanskiiblinkadokaripskiatsamcebuanočig" +
+ "ačibčačagataičukeskimaričinukskičoktavskičipvijanskičirokičejenskiso" +
+ "ranski kurdskikoptskikrimeanski turskikašubijanskidakotadargvataitad" +
+ "elaverslavskidogribdinkazarmadogridonjolužičkosrpskidualasrednji hol" +
+ "andskijola-fonyiđulaembuefikskistaroegipatskiekajukelamitskisrednji " +
+ "engleskievondofangfilipinskifonsrednji francuskistarofrancuskisevern" +
+ "o-frizijskiistočni frizijskifriulijskigagagauškigajogbajadžizgilbert" +
+ "škisrednji visoki nemačkistaronemačkigondigorontalogotskigrebostaro" +
+ "grčkišvajcarski njemačkigusiihaidahavajskihiligajnonhititehmonggornj" +
+ "olužičkosrpskihupaibanilokoingušetskilojbanngombamachamejudeo-persij" +
+ "skijudeo-arapskikara-kalpaškikabilekačinžjukambakavikabardijskitjapm" +
+ "akondezelenortskikorokasikotanizijskikoyra chiinikalenjinkimbundukom" +
+ "i-permjačkikonkanikosreanskikpelekaračaj-balkarkarelijskikurukhshamb" +
+ "alabafiakumikkutenailadinolangilandalambalezgianlakotamongolozisjeve" +
+ "rni luriluba-lulualuisenolundaluolušailuyiamadureškimagahimaitilimak" +
+ "asarmandingomasaimokšamandarmendemerumauricijski kreolskisrednji irs" +
+ "kimakhuwa-meettometa’mikmakminangkabaumančumanipurimahavskimosimunda" +
+ "ngviše jezikakriškimirandeškimarvarierzijamazanderanskineapolitanski" +
+ "namaniski nemačkinevariniasniueankwasionogaistari norskinkoseverni s" +
+ "otonuerklasični nevarinjamvezinjankolenjoronzimaosageotomanski tursk" +
+ "ipangasinskipahlavipampangapapiamentopalauanskistaropersijskifeničan" +
+ "skiponpejskistaroprovansalskikičerađastanirapanuirarotonganromboroma" +
+ "niaromanijskiruasandavejakutsamaritanski aramejskisamburusasaksantal" +
+ "isangusicilijanskiškotskijužnokurdskisenaselkapkojraboro senistaroir" +
+ "skitahelhitšansidamojužni samilule samiinari samiskoltski jeziksonin" +
+ "kesodžijenskisrananski tongoserersukumasususumerskikongoanski swahil" +
+ "iklasični sirijskisirijskitimnetesoterenotetumtigretivtokelauklingon" +
+ "skitlingittamašeknjasa tongatok pisintsimšiantumbukatuvalutasavaktuv" +
+ "inijskimarokanski tamazigtudmurtugaritskiumbundurunvaivotskivunjoval" +
+ "amovarejvašovarlpirikalmiksogajaojapeškizapotečkiblisimbolizenagasta" +
+ "ndardni marokanski tamazigtzunibez lingvističkog sadržajazazamoderni" +
+ " standardni arapskiaustrijski njemačkigornjonjemački (švicarski)aust" +
+ "ralski engleskikanadski engleskibritanski engleskiamerički engleskil" +
+ "atinoamerički španskievropski španskimeksički španskikanadski francu" +
+ "skišvajcarski francuskiniskosaksonskiflamanskimoldavskisrpskohrvatsk" +
+ "ikineski (pojednostavljeni)kineski (tradicionalni)",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0007, 0x0011, 0x001b, 0x0027, 0x002b, 0x0033, 0x0041,
+ 0x0048, 0x0051, 0x0058, 0x005e, 0x006d, 0x0077, 0x0081, 0x0089,
+ 0x0090, 0x0097, 0x00a0, 0x00aa, 0x00b3, 0x00bb, 0x00c5, 0x00cf,
+ 0x00d6, 0x00e1, 0x00e4, 0x00eb, 0x00f9, 0x0102, 0x0109, 0x010f,
+ 0x0118, 0x0122, 0x0129, 0x012c, 0x0132, 0x013a, 0x0143, 0x014b,
+ 0x0153, 0x015c, 0x0165, 0x016a, 0x0170, 0x017a, 0x0180, 0x0189,
+ 0x0192, 0x0197, 0x01a6, 0x01ac, 0x01b3, 0x01bd, 0x01c2, 0x01c7,
+ 0x01d0, 0x01d5, 0x01de, 0x01e6, 0x01f0, 0x01f9, 0x0202, 0x0208,
+ // Entry 40 - 7F
+ 0x0213, 0x021f, 0x022a, 0x022e, 0x0238, 0x023f, 0x0242, 0x024b,
+ 0x0256, 0x025f, 0x0267, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b,
+ 0x0293, 0x029f, 0x02a6, 0x02ac, 0x02b4, 0x02ba, 0x02c2, 0x02c9,
+ 0x02cd, 0x02d6, 0x02de, 0x02e6, 0x02f3, 0x02f8, 0x0302, 0x0309,
+ 0x0310, 0x0319, 0x0325, 0x032d, 0x0339, 0x0343, 0x034a, 0x0354,
+ 0x035d, 0x0366, 0x036c, 0x0374, 0x037d, 0x0386, 0x038b, 0x039b,
+ 0x03a3, 0x03a9, 0x03b2, 0x03c2, 0x03d2, 0x03e0, 0x03e6, 0x03ec,
+ 0x03f8, 0x03fe, 0x0403, 0x040a, 0x0411, 0x041c, 0x0420, 0x0427,
+ // Entry 80 - BF
+ 0x0431, 0x043c, 0x0443, 0x0450, 0x0455, 0x045d, 0x0462, 0x046d,
+ 0x0475, 0x0480, 0x0485, 0x0492, 0x0497, 0x04a1, 0x04aa, 0x04b5,
+ 0x04be, 0x04c3, 0x04cb, 0x04d3, 0x04d9, 0x04de, 0x04e4, 0x04ed,
+ 0x04f5, 0x04fc, 0x0504, 0x050a, 0x0514, 0x051e, 0x0526, 0x0530,
+ 0x0536, 0x053f, 0x0545, 0x054b, 0x0553, 0x055e, 0x0566, 0x0570,
+ 0x0574, 0x057c, 0x0581, 0x058c, 0x0594, 0x0599, 0x059e, 0x05a2,
+ 0x05a8, 0x05b2, 0x05b7, 0x05be, 0x05c2, 0x05cb, 0x05d0, 0x05db,
+ 0x05e4, 0x05e4, 0x05ec, 0x05f1, 0x05f5, 0x05fe, 0x05fe, 0x0603,
+ // Entry C0 - FF
+ 0x0603, 0x060f, 0x061c, 0x0622, 0x062a, 0x0634, 0x0634, 0x063b,
+ 0x063b, 0x0641, 0x0641, 0x0641, 0x0644, 0x0644, 0x064e, 0x064e,
+ 0x0654, 0x065b, 0x0667, 0x0667, 0x066b, 0x066b, 0x066b, 0x066b,
+ 0x066f, 0x0674, 0x0674, 0x0678, 0x0678, 0x0678, 0x0688, 0x068f,
+ 0x0694, 0x0698, 0x0698, 0x0698, 0x069f, 0x069f, 0x069f, 0x06a3,
+ 0x06a3, 0x06a7, 0x06a7, 0x06ad, 0x06bb, 0x06bb, 0x06bf, 0x06bf,
+ 0x06c3, 0x06cb, 0x06cb, 0x06d0, 0x06d7, 0x06dc, 0x06e3, 0x06eb,
+ 0x06f3, 0x06f7, 0x0700, 0x070a, 0x0716, 0x071d, 0x0726, 0x0736,
+ // Entry 100 - 13F
+ 0x073d, 0x073d, 0x074e, 0x075b, 0x0761, 0x0767, 0x076c, 0x0773,
+ 0x077a, 0x0780, 0x0785, 0x078a, 0x078f, 0x07a3, 0x07a3, 0x07a8,
+ 0x07b9, 0x07c3, 0x07c8, 0x07c8, 0x07cc, 0x07d3, 0x07d3, 0x07e1,
+ 0x07e7, 0x07f0, 0x0800, 0x0800, 0x0806, 0x0806, 0x080a, 0x0814,
+ 0x0814, 0x0817, 0x0817, 0x0828, 0x0836, 0x0836, 0x0847, 0x0859,
+ 0x0863, 0x0865, 0x086e, 0x086e, 0x0872, 0x0877, 0x0877, 0x087c,
+ 0x0887, 0x0887, 0x089e, 0x08ab, 0x08ab, 0x08b0, 0x08b9, 0x08bf,
+ 0x08c4, 0x08cf, 0x08e4, 0x08e4, 0x08e4, 0x08e9, 0x08e9, 0x08ee,
+ // Entry 140 - 17F
+ 0x08ee, 0x08f6, 0x08f6, 0x0900, 0x0906, 0x090b, 0x0920, 0x0920,
+ 0x0924, 0x0928, 0x0928, 0x092d, 0x0938, 0x0938, 0x0938, 0x093e,
+ 0x0944, 0x094b, 0x095a, 0x0967, 0x0967, 0x0975, 0x097b, 0x0981,
+ 0x0985, 0x098a, 0x098e, 0x0999, 0x0999, 0x099d, 0x09a4, 0x09af,
+ 0x09af, 0x09b3, 0x09b3, 0x09b7, 0x09c3, 0x09cf, 0x09cf, 0x09cf,
+ 0x09cf, 0x09d7, 0x09df, 0x09ee, 0x09f5, 0x09ff, 0x0a04, 0x0a13,
+ 0x0a13, 0x0a13, 0x0a1d, 0x0a23, 0x0a2b, 0x0a30, 0x0a30, 0x0a35,
+ 0x0a3c, 0x0a42, 0x0a47, 0x0a4c, 0x0a51, 0x0a58, 0x0a58, 0x0a58,
+ // Entry 180 - 1BF
+ 0x0a58, 0x0a5e, 0x0a5e, 0x0a63, 0x0a67, 0x0a74, 0x0a74, 0x0a7e,
+ 0x0a85, 0x0a8a, 0x0a8d, 0x0a93, 0x0a98, 0x0a98, 0x0a98, 0x0aa2,
+ 0x0aa2, 0x0aa8, 0x0aaf, 0x0ab6, 0x0abe, 0x0ac3, 0x0ac3, 0x0ac9,
+ 0x0acf, 0x0ad4, 0x0ad8, 0x0aec, 0x0af9, 0x0b07, 0x0b0e, 0x0b14,
+ 0x0b1f, 0x0b25, 0x0b2d, 0x0b35, 0x0b39, 0x0b39, 0x0b40, 0x0b4c,
+ 0x0b53, 0x0b5e, 0x0b65, 0x0b65, 0x0b65, 0x0b6b, 0x0b78, 0x0b78,
+ 0x0b85, 0x0b89, 0x0b97, 0x0b9d, 0x0ba1, 0x0ba7, 0x0ba7, 0x0bad,
+ 0x0bad, 0x0bb2, 0x0bbe, 0x0bbe, 0x0bc1, 0x0bcd, 0x0bd1, 0x0be1,
+ // Entry 1C0 - 1FF
+ 0x0be9, 0x0bf1, 0x0bf6, 0x0bfb, 0x0c00, 0x0c10, 0x0c1b, 0x0c22,
+ 0x0c2a, 0x0c34, 0x0c3e, 0x0c3e, 0x0c3e, 0x0c3e, 0x0c4c, 0x0c4c,
+ 0x0c57, 0x0c57, 0x0c57, 0x0c60, 0x0c60, 0x0c71, 0x0c76, 0x0c76,
+ 0x0c80, 0x0c87, 0x0c91, 0x0c91, 0x0c91, 0x0c96, 0x0c9c, 0x0c9c,
+ 0x0c9c, 0x0c9c, 0x0ca7, 0x0caa, 0x0cb1, 0x0cb6, 0x0ccc, 0x0cd3,
+ 0x0cd8, 0x0cdf, 0x0cdf, 0x0cdf, 0x0ce4, 0x0cf0, 0x0cf8, 0x0cf8,
+ 0x0d05, 0x0d05, 0x0d09, 0x0d09, 0x0d0f, 0x0d1d, 0x0d27, 0x0d27,
+ 0x0d2f, 0x0d33, 0x0d33, 0x0d39, 0x0d39, 0x0d39, 0x0d44, 0x0d4d,
+ // Entry 200 - 23F
+ 0x0d57, 0x0d65, 0x0d6c, 0x0d78, 0x0d87, 0x0d8c, 0x0d8c, 0x0d8c,
+ 0x0d92, 0x0d96, 0x0d9e, 0x0d9e, 0x0db0, 0x0dc2, 0x0dca, 0x0dca,
+ 0x0dca, 0x0dcf, 0x0dd3, 0x0dd9, 0x0dde, 0x0de3, 0x0de6, 0x0ded,
+ 0x0ded, 0x0df7, 0x0dfe, 0x0dfe, 0x0e06, 0x0e11, 0x0e1a, 0x0e1a,
+ 0x0e1a, 0x0e1a, 0x0e23, 0x0e23, 0x0e2a, 0x0e30, 0x0e37, 0x0e41,
+ 0x0e54, 0x0e5a, 0x0e63, 0x0e6a, 0x0e6d, 0x0e70, 0x0e70, 0x0e70,
+ 0x0e70, 0x0e70, 0x0e76, 0x0e76, 0x0e7b, 0x0e7b, 0x0e81, 0x0e86,
+ 0x0e8b, 0x0e93, 0x0e93, 0x0e99, 0x0e99, 0x0e9d, 0x0ea0, 0x0ea8,
+ // Entry 240 - 27F
+ 0x0ea8, 0x0ea8, 0x0ea8, 0x0ea8, 0x0eb2, 0x0ebc, 0x0ebc, 0x0ec2,
+ 0x0ee0, 0x0ee4, 0x0f00, 0x0f04, 0x0f1e, 0x0f1e, 0x0f32, 0x0f4e,
+ 0x0f61, 0x0f72, 0x0f84, 0x0f96, 0x0fae, 0x0fbf, 0x0fd1, 0x0fd1,
+ 0x0fe3, 0x0ff8, 0x1006, 0x100f, 0x100f, 0x100f, 0x1018, 0x1026,
+ 0x1040, 0x1057,
+ },
+ },
+ { // bs-Cyrl
+ "афарскиабказијскиавестанскиафриканерскиаканамхарскиарагонежанскиарапскиа" +
+ "семијскиаварскиајмараазербејџанскибашкирбелорускибугарскибисламабам" +
+ "барабенгласкитибетанскибретонскибосанскикаталонскичеченскичаморокор" +
+ "зиканскикричешкистарословенскичувашкивелшкиданскинемачкидивехијскиџ" +
+ "онгаевегрчкиенглескиесперантошпанскиестонскибаскијскиперсијскифулах" +
+ "финскифиджијскифарскифранцускифризијскиирскишкотски галскигалскигва" +
+ "ранигуџаратиманксхаусахебрејскихиндихири мотухрватскихаитскимађарск" +
+ "ијерменскихерероинтерлингваиндонежанскимеђујезичкиигбосичуан јиунуп" +
+ "иакидоисландскииталијанскиинуктитутјапанскијаванскигрузијскиконгоки" +
+ "кујукуањамакозачкикалалисуткмерскиканадакорејскиканурикашмирскикурд" +
+ "скикомикорнишкикиргискилатинскилуксембуршкигандалимбургишлингалалао" +
+ "скилитванскилуба-катангалетонскималагасијскимаршалскимаорскимакедон" +
+ "скималајаламмонголскимаратималајскимелтешкибурманскинаурусеверни нд" +
+ "ебеленепалскиндонгахоландскинорвешки њорскнорвешки бокмалјужни ндеб" +
+ "еленавахоњањапровансалскиојибваоромооријскиосетскипанџабскипалипољс" +
+ "кипаштунскипортугалскиквенчарето-романскирундирумунскирускикинјаруа" +
+ "ндасанскритсардињаскисиндисеверни самисангосингалескисловачкисловен" +
+ "ачкисамоанскишонасомалскиалбанскисрпскисватисесотосунданскишведскис" +
+ "вахилитамилскителугутађиктајландскитигрињатуркменскитсванатонгатурс" +
+ "китсонгататарскитахићанскиујгурскиукрајинскиурдуузбечкивендавијетна" +
+ "мскиволапуквалунволофксхосајидишјорубажуангкинескизулуачинескиаколи" +
+ "адангмејскиадигејскиафрихилиаинуакадијскиаљутјужни алтаистароенглес" +
+ "киангикаармајскиароканијскиарапахоаравакастуријскиавадхибалучибалин" +
+ "езијскибасабејабембабојпурибиколбинисисикабрајбуриатбугинежанскибли" +
+ "нкадокарипскиатсамскицебуаночибчачагатаичукескимаричинукскичоктавск" +
+ "ичипвијанскичерокичејенскикоптскикримеански турскикашубијанскидакот" +
+ "адаргваделаверславскидогрибдинкадогриниски сорбијанскидуаласредњи х" +
+ "оландскиђулаефикскистароегипатскиекајукеламитскисредњи енглескиевон" +
+ "дофангтагалогфонсредњи францускистарофранцускисеверно-фризијскиисто" +
+ "чни фризијскифриулијскигагајогбајаџизгилбертшкисредњи високи немачк" +
+ "истаронемачкигондигоронталоготскигребостарогрчкишвајцарски немачкиг" +
+ "вич’инхаидахавајскихилигајнонхититехмонггорњи сорбијскихупаибанилок" +
+ "оингвишкилојбанјудео-персијскијудео-арапскикара-калпашкикабилекачин" +
+ "ђукамбакавикабардијскитјапкорокасикотанешкикимбундуконканикосреанск" +
+ "икпелекарачај-балкаркарелијскикурукхкумиккутенаиладиноландаламбалез" +
+ "гианмонголозилуба-лулуалуисенолундалуолушаимадурешкимагахимаитилима" +
+ "касармандингомасаимокшамандармендесредњи ирскимикмакминангкабауманч" +
+ "уманипуримахавскимосивише језикакришкимирандешкимарвариерзијанеапол" +
+ "итанскиниски немачкиневариниасниуеанногаистари норскин’косеверни со" +
+ "токласични неварињамвезињанколењоронзимаосагеотомански турскипангас" +
+ "инскипахлавипампангапапиаментопалауанскистароперсијскифеничанскипон" +
+ "пејскистаропровансалскирађастанирапануираротонганроманиароманијскис" +
+ "андавејакутсамаритански арамејскисасаксанталисицилијанскишкотскисел" +
+ "капстароирскишансидамојужни самилуле самиинари самисколтски језиксо" +
+ "нинкесоџијенскисранански тонгосерерсукумасусусумерскикоморскикласич" +
+ "ни сиријскисиријскитимнетеренотетумтигретивтокелауклингонскитлингит" +
+ "тамашекњаса тонгаток писинтсимшиантумбукатувалутувинијскиудмуртугар" +
+ "итскиумбундурутваивотскиваламоварајвашокалмикјаојапешкикантонскизап" +
+ "отечкиблисимболизенагазунибез лингвистичког садржајазазаАустријски " +
+ "немачкиШвајцарски високи немачкиАустралијски енглескиКанадски енгле" +
+ "скиБритански енглескиСАД енглескиЛатино-амерички шпанскиИберијски ш" +
+ "панскиКанадски францускиШвајцарски францускифламанскиБразилски порт" +
+ "угалскиИберијски португалскимолдавскисрпскохрватскикинески (поједно" +
+ "стављен)кинески (традиционални)",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x0022, 0x0036, 0x004e, 0x0056, 0x0066, 0x0080,
+ 0x008e, 0x00a0, 0x00ae, 0x00ba, 0x00d4, 0x00e0, 0x00f2, 0x0102,
+ 0x0110, 0x011e, 0x0130, 0x0144, 0x0156, 0x0166, 0x017a, 0x018a,
+ 0x0196, 0x01ac, 0x01b2, 0x01bc, 0x01d8, 0x01e6, 0x01f2, 0x01fe,
+ 0x020c, 0x0220, 0x022a, 0x0230, 0x023a, 0x024a, 0x025c, 0x026a,
+ 0x027a, 0x028c, 0x029e, 0x02a8, 0x02b4, 0x02c6, 0x02d2, 0x02e4,
+ 0x02f6, 0x0300, 0x031b, 0x0327, 0x0335, 0x0345, 0x034f, 0x0359,
+ 0x036b, 0x0375, 0x0386, 0x0396, 0x03a4, 0x03b4, 0x03c6, 0x03d2,
+ // Entry 40 - 7F
+ 0x03e8, 0x0400, 0x0416, 0x041e, 0x042f, 0x043d, 0x0443, 0x0455,
+ 0x046b, 0x047d, 0x048d, 0x049d, 0x04af, 0x04b9, 0x04c5, 0x04d3,
+ 0x04e1, 0x04f3, 0x0501, 0x050d, 0x051d, 0x0529, 0x053b, 0x0549,
+ 0x0551, 0x0561, 0x0571, 0x0581, 0x0599, 0x05a3, 0x05b5, 0x05c3,
+ 0x05cf, 0x05e1, 0x05f8, 0x0608, 0x0620, 0x0632, 0x0640, 0x0654,
+ 0x0666, 0x0678, 0x0684, 0x0694, 0x06a4, 0x06b6, 0x06c0, 0x06dd,
+ 0x06ed, 0x06f9, 0x070b, 0x0726, 0x0743, 0x075c, 0x0768, 0x0770,
+ 0x0788, 0x0794, 0x079e, 0x07ac, 0x07ba, 0x07cc, 0x07d4, 0x07e0,
+ // Entry 80 - BF
+ 0x07f2, 0x0808, 0x0814, 0x082d, 0x0837, 0x0847, 0x0851, 0x0867,
+ 0x0877, 0x088b, 0x0895, 0x08ac, 0x08b6, 0x08ca, 0x08da, 0x08ee,
+ 0x0900, 0x0908, 0x0918, 0x0928, 0x0934, 0x093e, 0x094a, 0x095c,
+ 0x096a, 0x0978, 0x0988, 0x0994, 0x099e, 0x09b2, 0x09c0, 0x09d4,
+ 0x09e0, 0x09ea, 0x09f6, 0x0a02, 0x0a12, 0x0a26, 0x0a36, 0x0a4a,
+ 0x0a52, 0x0a60, 0x0a6a, 0x0a80, 0x0a8e, 0x0a98, 0x0aa2, 0x0aae,
+ 0x0ab8, 0x0ac4, 0x0ace, 0x0adc, 0x0ae4, 0x0af4, 0x0afe, 0x0b14,
+ 0x0b26, 0x0b26, 0x0b36, 0x0b36, 0x0b3e, 0x0b50, 0x0b50, 0x0b58,
+ // Entry C0 - FF
+ 0x0b58, 0x0b6d, 0x0b87, 0x0b93, 0x0ba3, 0x0bb9, 0x0bb9, 0x0bc7,
+ 0x0bc7, 0x0bd3, 0x0bd3, 0x0bd3, 0x0bd3, 0x0bd3, 0x0be7, 0x0be7,
+ 0x0bf3, 0x0bff, 0x0c17, 0x0c17, 0x0c1f, 0x0c1f, 0x0c1f, 0x0c1f,
+ 0x0c27, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c31, 0x0c3f,
+ 0x0c49, 0x0c51, 0x0c51, 0x0c51, 0x0c5d, 0x0c5d, 0x0c5d, 0x0c65,
+ 0x0c65, 0x0c65, 0x0c65, 0x0c71, 0x0c89, 0x0c89, 0x0c91, 0x0c91,
+ 0x0c99, 0x0ca9, 0x0ca9, 0x0cb9, 0x0cc7, 0x0cc7, 0x0cd1, 0x0cdf,
+ 0x0ced, 0x0cf5, 0x0d05, 0x0d17, 0x0d2d, 0x0d39, 0x0d49, 0x0d49,
+ // Entry 100 - 13F
+ 0x0d57, 0x0d57, 0x0d78, 0x0d90, 0x0d9c, 0x0da8, 0x0da8, 0x0db6,
+ 0x0dc4, 0x0dd0, 0x0dda, 0x0dda, 0x0de4, 0x0e05, 0x0e05, 0x0e0f,
+ 0x0e2e, 0x0e2e, 0x0e36, 0x0e36, 0x0e36, 0x0e44, 0x0e44, 0x0e60,
+ 0x0e6c, 0x0e7e, 0x0e9b, 0x0e9b, 0x0ea7, 0x0ea7, 0x0eaf, 0x0ebd,
+ 0x0ebd, 0x0ec3, 0x0ec3, 0x0ee2, 0x0efe, 0x0efe, 0x0f1f, 0x0f40,
+ 0x0f54, 0x0f58, 0x0f58, 0x0f58, 0x0f60, 0x0f6a, 0x0f6a, 0x0f70,
+ 0x0f84, 0x0f84, 0x0fac, 0x0fc4, 0x0fc4, 0x0fce, 0x0fe0, 0x0fec,
+ 0x0ff6, 0x100a, 0x102d, 0x102d, 0x102d, 0x102d, 0x103c, 0x1046,
+ // Entry 140 - 17F
+ 0x1046, 0x1056, 0x1056, 0x106a, 0x1076, 0x1080, 0x109d, 0x109d,
+ 0x10a5, 0x10ad, 0x10ad, 0x10b7, 0x10c7, 0x10c7, 0x10c7, 0x10d3,
+ 0x10d3, 0x10d3, 0x10f0, 0x1109, 0x1109, 0x1122, 0x112e, 0x1138,
+ 0x113c, 0x1146, 0x114e, 0x1164, 0x1164, 0x116c, 0x116c, 0x116c,
+ 0x116c, 0x1174, 0x1174, 0x117c, 0x118e, 0x118e, 0x118e, 0x118e,
+ 0x118e, 0x118e, 0x119e, 0x119e, 0x11ac, 0x11c0, 0x11ca, 0x11e5,
+ 0x11e5, 0x11e5, 0x11f9, 0x1205, 0x1205, 0x1205, 0x1205, 0x120f,
+ 0x121d, 0x1229, 0x1229, 0x1233, 0x123d, 0x124b, 0x124b, 0x124b,
+ // Entry 180 - 1BF
+ 0x124b, 0x124b, 0x124b, 0x1255, 0x125d, 0x125d, 0x125d, 0x1270,
+ 0x127e, 0x1288, 0x128e, 0x1298, 0x1298, 0x1298, 0x1298, 0x12aa,
+ 0x12aa, 0x12b6, 0x12c4, 0x12d2, 0x12e2, 0x12ec, 0x12ec, 0x12f6,
+ 0x1302, 0x130c, 0x130c, 0x130c, 0x1323, 0x1323, 0x1323, 0x132f,
+ 0x1345, 0x134f, 0x135f, 0x136f, 0x1377, 0x1377, 0x1377, 0x138c,
+ 0x1398, 0x13ac, 0x13ba, 0x13ba, 0x13ba, 0x13c6, 0x13c6, 0x13c6,
+ 0x13e0, 0x13e0, 0x13f9, 0x1405, 0x140d, 0x1419, 0x1419, 0x1419,
+ 0x1419, 0x1423, 0x143a, 0x143a, 0x1443, 0x145a, 0x145a, 0x1477,
+ // Entry 1C0 - 1FF
+ 0x1485, 0x1493, 0x149b, 0x14a5, 0x14af, 0x14ce, 0x14e4, 0x14f2,
+ 0x1502, 0x1516, 0x152a, 0x152a, 0x152a, 0x152a, 0x1546, 0x1546,
+ 0x155a, 0x155a, 0x155a, 0x156c, 0x156c, 0x158e, 0x158e, 0x158e,
+ 0x15a0, 0x15ae, 0x15c2, 0x15c2, 0x15c2, 0x15c2, 0x15ce, 0x15ce,
+ 0x15ce, 0x15ce, 0x15e4, 0x15e4, 0x15f2, 0x15fc, 0x1627, 0x1627,
+ 0x1631, 0x163f, 0x163f, 0x163f, 0x163f, 0x1657, 0x1665, 0x1665,
+ 0x1665, 0x1665, 0x1665, 0x1665, 0x1671, 0x1671, 0x1685, 0x1685,
+ 0x1685, 0x168b, 0x168b, 0x1697, 0x1697, 0x1697, 0x16aa, 0x16bb,
+ // Entry 200 - 23F
+ 0x16ce, 0x16e9, 0x16f7, 0x170b, 0x1728, 0x1732, 0x1732, 0x1732,
+ 0x173e, 0x1746, 0x1756, 0x1766, 0x1766, 0x1787, 0x1797, 0x1797,
+ 0x1797, 0x17a1, 0x17a1, 0x17ad, 0x17b7, 0x17c1, 0x17c7, 0x17d5,
+ 0x17d5, 0x17e9, 0x17f7, 0x17f7, 0x1805, 0x1818, 0x1829, 0x1829,
+ 0x1829, 0x1829, 0x1839, 0x1839, 0x1847, 0x1853, 0x1853, 0x1867,
+ 0x1867, 0x1873, 0x1885, 0x1893, 0x1899, 0x189f, 0x189f, 0x189f,
+ 0x189f, 0x189f, 0x18ab, 0x18ab, 0x18ab, 0x18ab, 0x18b7, 0x18c1,
+ 0x18c9, 0x18c9, 0x18c9, 0x18d5, 0x18d5, 0x18d5, 0x18db, 0x18e9,
+ // Entry 240 - 27F
+ 0x18e9, 0x18e9, 0x18e9, 0x18fb, 0x190d, 0x1921, 0x1921, 0x192d,
+ 0x192d, 0x1935, 0x1967, 0x196f, 0x196f, 0x196f, 0x1992, 0x19c2,
+ 0x19eb, 0x1a0c, 0x1a2f, 0x1a46, 0x1a72, 0x1a93, 0x1a93, 0x1a93,
+ 0x1ab6, 0x1add, 0x1add, 0x1aef, 0x1b18, 0x1b41, 0x1b53, 0x1b6f,
+ 0x1b9c, 0x1bc7,
+ },
+ },
+ { // ca
+ caLangStr,
+ caLangIdx,
+ },
+ { // ce
+ "абхазхойнафрикаансаканамхаройнӀаьрбийнассамийназербайджанийнбашкирийнбел" +
+ "орусийнболгарийнбамбарабенгалийнтибетхойнбретонийнбоснийнкаталонийн" +
+ "нохчийнкорсиканийнчехийнчувашийнваллийндатхойннемцойндзонг-кээвегре" +
+ "кийнингалсанэсперантоиспанхойнэстонийнбаскийнгӀажарийнфиннийнфиджиф" +
+ "арерийнфранцузийнмалхбузен-фризийнирландхойнгалисийнгуаранигуджарат" +
+ "имэнийнхаусажугтийнхиндихорватийнгаитийнвенгрийнэрмалойниндонезихой" +
+ "нигбосычуаньисландхойнитальянийнинуктитутяпонийняванийнгуьржийнкику" +
+ "йюказахийнгренландхойнкхмерийнканнадакорейнкашмирикурдийнкорнуоллий" +
+ "нгӀиргӀизойнлатинанлюксембургхойнгандалингалалаоссийнлитвахойнлуба-" +
+ "катангалатышийнмалагасийнмаоримакедонхойнмалаяламмонголийнмаратхима" +
+ "лайнмальтойнбирманийнкъилбаседа ндебелинепалхойнголландхойннорвегий" +
+ "н нюнорскнорвегийн букмолоромоорипанджабиполякийнпуштупортугалихойн" +
+ "кечуароманшийнрундирумынийноьрсийнкиньяруандасанскритсиндхикъилбасе" +
+ "да саамийнсангосингалхойнсловакийнсловенийншонасомалиалбанойнсербий" +
+ "нсунданхойншведийнсуахилитамилхойнтелугутаджикийнтайнтигриньятуркме" +
+ "нийнтонганийнтуркойнгӀезалойнуйгурийнукраинийнурдуузбекийнвьетнамхо" +
+ "йнволофкосайорубакитайнзулуагхӀемарауканхойнасубембабенамалхбузен-б" +
+ "елуджийнбодочигачерокиюккъерчу курдийнтаитазармасорбийндуаладьола-ф" +
+ "оньиэмбуфилиппинийнгагаузийншвейцарин немцойнгусиигавайнлакхара сер" +
+ "бийннгомбамачамекабилийнкамбамакондекабувердьянукойра чииникаленджи" +
+ "нкоми-пермякийнконканишамбалабафиалангилакотакъилбаседа лурилуо (Ке" +
+ "ни а, Танзани а)лухьямасаимерумаврикин креолийнмакуа-мееттометамоха" +
+ "укмундангмазандеранхойннамалахара германхойнквасионконуэрньянколеки" +
+ "черомборуандасамбурусангусенакойраборо сеннитахелхитсаамийн (къилба" +
+ ")луле-саамийнинари-саамийнскольт-саамийнсуахили (Конго)тесотасавакта" +
+ "мазигхтийнбоьвзуш боцу моттваивунджоварлпирисогамороккон стандартан" +
+ " тамазигхтийнметтан чулацам боцушХӀинца болу стандартан Ӏаьрбийнавст" +
+ "рин немцойншвейцарин лакхара немцойнАвстралин ингалсанканадан ингал" +
+ "санбританин ингалсанамерикан ингалсанлатинан американ испанхойневро" +
+ "пан испанхойнмексикан испанхойнканадан французийншвейцарин французи" +
+ "йнлахара саксонийнфламандийнбразилин португалихойневропан португали" +
+ "хойнмолдавийнатта китайнламастан китайн",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0012, 0x0012, 0x0024, 0x002c, 0x003c, 0x003c,
+ 0x004c, 0x005c, 0x005c, 0x005c, 0x0078, 0x008a, 0x009e, 0x00b0,
+ 0x00b0, 0x00be, 0x00d0, 0x00e2, 0x00f4, 0x0102, 0x0116, 0x0124,
+ 0x0124, 0x013a, 0x013a, 0x0146, 0x0146, 0x0156, 0x0164, 0x0172,
+ 0x0180, 0x0180, 0x018f, 0x0195, 0x01a3, 0x01b3, 0x01c5, 0x01d7,
+ 0x01e7, 0x01f5, 0x0207, 0x0207, 0x0215, 0x021f, 0x022f, 0x0243,
+ 0x0264, 0x0278, 0x0278, 0x0288, 0x0296, 0x02a8, 0x02b4, 0x02be,
+ 0x02cc, 0x02d6, 0x02d6, 0x02e8, 0x02f6, 0x0306, 0x0316, 0x0316,
+ // Entry 40 - 7F
+ 0x0316, 0x032e, 0x032e, 0x0336, 0x0344, 0x0344, 0x0344, 0x0358,
+ 0x036c, 0x037e, 0x038c, 0x039a, 0x03aa, 0x03aa, 0x03b6, 0x03b6,
+ 0x03c6, 0x03de, 0x03ee, 0x03fc, 0x0408, 0x0408, 0x0416, 0x0424,
+ 0x0424, 0x043a, 0x0450, 0x045e, 0x047a, 0x0484, 0x0484, 0x0492,
+ 0x04a2, 0x04b4, 0x04cb, 0x04db, 0x04ef, 0x04ef, 0x04f9, 0x050f,
+ 0x051f, 0x0531, 0x053f, 0x054b, 0x055b, 0x056d, 0x056d, 0x0590,
+ 0x05a2, 0x05a2, 0x05b8, 0x05d9, 0x05f8, 0x05f8, 0x05f8, 0x05f8,
+ 0x05f8, 0x05f8, 0x0602, 0x0608, 0x0608, 0x0618, 0x0618, 0x0628,
+ // Entry 80 - BF
+ 0x0632, 0x064c, 0x0656, 0x0668, 0x0672, 0x0682, 0x0690, 0x06a6,
+ 0x06b6, 0x06b6, 0x06c2, 0x06e5, 0x06ef, 0x0703, 0x0715, 0x0727,
+ 0x0727, 0x072f, 0x073b, 0x074b, 0x0759, 0x0759, 0x0759, 0x076d,
+ 0x077b, 0x0789, 0x079b, 0x07a7, 0x07b9, 0x07c1, 0x07d1, 0x07e5,
+ 0x07e5, 0x07f7, 0x0805, 0x0805, 0x0817, 0x0817, 0x0827, 0x0839,
+ 0x0841, 0x0851, 0x0851, 0x0867, 0x0867, 0x0867, 0x0871, 0x0879,
+ 0x0879, 0x0885, 0x0885, 0x0891, 0x0899, 0x0899, 0x0899, 0x0899,
+ 0x0899, 0x0899, 0x0899, 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08a5,
+ // Entry C0 - FF
+ 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08bb, 0x08bb, 0x08bb,
+ 0x08bb, 0x08bb, 0x08bb, 0x08bb, 0x08c1, 0x08c1, 0x08c1, 0x08c1,
+ 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1, 0x08c1,
+ 0x08c1, 0x08cb, 0x08cb, 0x08d3, 0x08d3, 0x08d3, 0x08f8, 0x08f8,
+ 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8,
+ 0x08f8, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900,
+ 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, 0x0908, 0x0908, 0x0908,
+ 0x0908, 0x0908, 0x0908, 0x0908, 0x0908, 0x0914, 0x0914, 0x0933,
+ // Entry 100 - 13F
+ 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x0933, 0x093d, 0x093d,
+ 0x093d, 0x093d, 0x093d, 0x0947, 0x0947, 0x0955, 0x0955, 0x095f,
+ 0x095f, 0x0974, 0x0974, 0x0974, 0x097c, 0x097c, 0x097c, 0x097c,
+ 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x097c, 0x0992,
+ 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992, 0x0992,
+ 0x0992, 0x0992, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4,
+ 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09a4,
+ 0x09a4, 0x09a4, 0x09c5, 0x09c5, 0x09c5, 0x09cf, 0x09cf, 0x09cf,
+ // Entry 140 - 17F
+ 0x09cf, 0x09db, 0x09db, 0x09db, 0x09db, 0x09db, 0x09f8, 0x09f8,
+ 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8, 0x09f8,
+ 0x0a04, 0x0a10, 0x0a10, 0x0a10, 0x0a10, 0x0a10, 0x0a20, 0x0a20,
+ 0x0a20, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a38, 0x0a50,
+ 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a50, 0x0a65, 0x0a65, 0x0a65,
+ 0x0a65, 0x0a77, 0x0a77, 0x0a92, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0,
+ 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aae, 0x0ab8, 0x0ab8, 0x0ab8,
+ 0x0ab8, 0x0ab8, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac2,
+ // Entry 180 - 1BF
+ 0x0ac2, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0aeb, 0x0aeb, 0x0aeb,
+ 0x0aeb, 0x0aeb, 0x0b12, 0x0b12, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c,
+ 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b1c, 0x0b26, 0x0b26, 0x0b26,
+ 0x0b26, 0x0b26, 0x0b2e, 0x0b4f, 0x0b4f, 0x0b66, 0x0b6e, 0x0b6e,
+ 0x0b6e, 0x0b6e, 0x0b6e, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b88, 0x0b88,
+ 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0b88, 0x0ba4, 0x0ba4,
+ 0x0ba4, 0x0bac, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bd9,
+ 0x0bd9, 0x0bd9, 0x0bd9, 0x0bd9, 0x0bdf, 0x0bdf, 0x0be7, 0x0be7,
+ // Entry 1C0 - 1FF
+ 0x0be7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7,
+ 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7,
+ 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bf7, 0x0bff, 0x0bff,
+ 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0c09, 0x0c09, 0x0c09,
+ 0x0c09, 0x0c09, 0x0c09, 0x0c15, 0x0c15, 0x0c15, 0x0c15, 0x0c23,
+ 0x0c23, 0x0c23, 0x0c23, 0x0c23, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c2d,
+ 0x0c2d, 0x0c2d, 0x0c35, 0x0c35, 0x0c35, 0x0c52, 0x0c52, 0x0c52,
+ 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c62, 0x0c7f, 0x0c96,
+ // Entry 200 - 23F
+ 0x0caf, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0cca,
+ 0x0cca, 0x0cca, 0x0cca, 0x0cca, 0x0ce5, 0x0ce5, 0x0ce5, 0x0ce5,
+ 0x0ce5, 0x0ce5, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced,
+ 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced,
+ 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0ced, 0x0cfb, 0x0cfb,
+ 0x0d13, 0x0d13, 0x0d13, 0x0d13, 0x0d33, 0x0d39, 0x0d39, 0x0d39,
+ 0x0d39, 0x0d39, 0x0d39, 0x0d39, 0x0d45, 0x0d45, 0x0d45, 0x0d45,
+ 0x0d45, 0x0d55, 0x0d55, 0x0d55, 0x0d55, 0x0d5d, 0x0d5d, 0x0d5d,
+ // Entry 240 - 27F
+ 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d, 0x0d5d,
+ 0x0d9b, 0x0d9b, 0x0dc1, 0x0dc1, 0x0dfc, 0x0dfc, 0x0e19, 0x0e49,
+ 0x0e6c, 0x0e8b, 0x0eac, 0x0ecd, 0x0eff, 0x0f20, 0x0f43, 0x0f43,
+ 0x0f66, 0x0f8d, 0x0fac, 0x0fc0, 0x0feb, 0x1014, 0x1026, 0x1026,
+ 0x103b, 0x1058,
+ },
+ },
+ { // cgg
+ "OrukaniOrumarikiOruharabuOruberarusiOruburugariyaOrubengariOruceekiOrugi" +
+ "rimaaniOruguriikiOrungyerezaOrusupaaniOrupaasiyaOrufaransaOruhausaOr" +
+ "uhindiOruhangareOruindoneziaOruiboOruyitareOrujapaaniOrujavaOrukambo" +
+ "diyaOrukoreyaOrumalesiyaOruburumaOrunepaliOrudaakiOrupungyabiOrupoor" +
+ "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" +
+ "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" +
+ "inaOruzuruRukiga",
+ []uint16{ // 246 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010,
+ 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031,
+ 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
+ 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0064, 0x0064, 0x006e,
+ 0x006e, 0x006e, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0082,
+ 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008a,
+ 0x008a, 0x0092, 0x0092, 0x0092, 0x0092, 0x009c, 0x009c, 0x009c,
+ // Entry 40 - 7F
+ 0x009c, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00b7, 0x00b7, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
+ 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00e8, 0x00f1, 0x00f1, 0x00f1,
+ 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
+ 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x010d, 0x010d, 0x0115,
+ // Entry 80 - BF
+ 0x0115, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013d,
+ 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d,
+ 0x013d, 0x013d, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0163, 0x0163, 0x0163,
+ 0x0163, 0x0163, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0176,
+ 0x017f, 0x017f, 0x017f, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d,
+ 0x018d, 0x0196, 0x0196, 0x019f, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ // Entry C0 - FF
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01ac,
+ },
+ },
+ { // chr
+ "ᎠᏂᏓᏥᎩᎵᏏᏍᏆᏂᎦᎸᏥᎬᏩᎵᏲᏥᎢᏣᏩᏂᏏᏉᏧᎦᎵᏲᏂᎢᏓᎶᏂᎨᎦᏳᎦᎠᏣᏗᏣᎳᎩᎼᎻᎦᎠᎫᏌᏏᏂᎦᏄᏬᎵᏍᏛᎾ ᎦᏬᏂᎯᏍᏗ",
+ []uint16{ // 557 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, 0x0015, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ // Entry 40 - 7F
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ 0x0039, 0x0039, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ // Entry 80 - BF
+ 0x0045, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ // Entry C0 - FF
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f,
+ 0x006f, 0x006f, 0x006f, 0x0078, 0x0078, 0x0081, 0x0081, 0x0081,
+ // Entry 100 - 13F
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ // Entry 140 - 17F
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ // Entry 180 - 1BF
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ // Entry 1C0 - 1FF
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ // Entry 200 - 23F
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x00c1,
+ },
+ },
+ { // ckb
+ "ئەمهەرینجیعەرەبیئاسامیئازەربایجانیبێلاڕووسیبۆلگاریبەنگلادێشیبرێتونیبۆسنی" +
+ "كاتالۆنیچەكیوێلزیدانماركیئاڵمانییۆنانیئینگلیزیئێسپیرانتۆئیسپانیئیست" +
+ "ۆنیباسکیفارسیفینلەندیفەرانسیفریسیی ڕۆژاوائیرلەندیگالیسیگووارانیگوجا" +
+ "راتیهیبرێهیندیكرواتیهەنگاری (مەجاری)ئەرمەنیئێەندونیزیئیسلەندیئیتالی" +
+ "ژاپۆنیجاڤانیگۆرجستانیکوردیكرگیزیلاتینیلينگالالاویلیتوانیلێتۆنیماكێد" +
+ "ۆنیمەنگۆلیماراتینیپالیهۆڵەندیئۆرییاپەنجابیپۆڵۆنیایی (لەهستانی)پەشتو" +
+ "وپورتوگالیڕۆمانیڕووسیسانسکريتسيندیسینهەلیسلۆڤاكیسلۆڤێنیسۆمالیئاڵبان" +
+ "یسەربیسودانیسویدیتامیلیتەلۆگویتاجیکیتایلەندیتیگرینیایتورکمانیتورکیئ" +
+ "ويخووریئۆكراینیئۆردووئوزبەکیڤیەتنامیچینیزولوکوردیی ناوەندیمازەندەرا" +
+ "نیکوردیی باشووریسامی باشووریزمانی نەناسراوئازەربایجانی باشووریئینگل" +
+ "یزیی ئۆسترالیاییئینگلیزیی کەنەداییئینگلیزیی بریتانیاییئینگلیزیی ئەم" +
+ "ەریکاییپورتوگاڵی برازیلپورتوگاڵی (پورتوگاڵ)",
+ []uint16{ // 606 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014,
+ 0x0020, 0x002c, 0x002c, 0x002c, 0x0044, 0x0044, 0x0056, 0x0064,
+ 0x0064, 0x0064, 0x0078, 0x0078, 0x0086, 0x0090, 0x00a0, 0x00a0,
+ 0x00a0, 0x00a0, 0x00a0, 0x00a8, 0x00a8, 0x00a8, 0x00b2, 0x00c2,
+ 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00dc, 0x00ec, 0x0100, 0x010e,
+ 0x011c, 0x0126, 0x0130, 0x0130, 0x0140, 0x0140, 0x0140, 0x014e,
+ 0x0167, 0x0177, 0x0177, 0x0183, 0x0193, 0x01a3, 0x01a3, 0x01a3,
+ 0x01ad, 0x01b7, 0x01b7, 0x01c3, 0x01c3, 0x01e0, 0x01ee, 0x01ee,
+ // Entry 40 - 7F
+ 0x01ee, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0212,
+ 0x021e, 0x021e, 0x022a, 0x0236, 0x0248, 0x0248, 0x0248, 0x0248,
+ 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0248, 0x0252,
+ 0x0252, 0x0252, 0x025e, 0x026a, 0x026a, 0x026a, 0x026a, 0x0278,
+ 0x0280, 0x028e, 0x028e, 0x029a, 0x029a, 0x029a, 0x029a, 0x02aa,
+ 0x02aa, 0x02b8, 0x02c4, 0x02c4, 0x02c4, 0x02c4, 0x02c4, 0x02c4,
+ 0x02d0, 0x02d0, 0x02de, 0x02de, 0x02de, 0x02de, 0x02de, 0x02de,
+ 0x02de, 0x02de, 0x02de, 0x02ea, 0x02ea, 0x02f8, 0x02f8, 0x031d,
+ // Entry 80 - BF
+ 0x0329, 0x033b, 0x033b, 0x033b, 0x033b, 0x0347, 0x0351, 0x0351,
+ 0x0361, 0x0361, 0x036b, 0x036b, 0x036b, 0x0379, 0x0387, 0x0395,
+ 0x0395, 0x0395, 0x03a1, 0x03af, 0x03b9, 0x03b9, 0x03b9, 0x03c5,
+ 0x03cf, 0x03cf, 0x03db, 0x03e9, 0x03f5, 0x0405, 0x0417, 0x0427,
+ 0x0427, 0x0427, 0x0431, 0x0431, 0x0431, 0x0431, 0x0441, 0x0451,
+ 0x045d, 0x046b, 0x046b, 0x047b, 0x047b, 0x047b, 0x047b, 0x047b,
+ 0x047b, 0x047b, 0x047b, 0x0483, 0x048b, 0x048b, 0x048b, 0x048b,
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ // Entry C0 - FF
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b, 0x04a6,
+ // Entry 100 - 13F
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ // Entry 140 - 17F
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ // Entry 180 - 1BF
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6,
+ 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04a6, 0x04bc, 0x04bc,
+ 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
+ 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
+ // Entry 1C0 - 1FF
+ 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
+ 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
+ 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
+ 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
+ 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
+ 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc, 0x04bc,
+ 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7,
+ 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04ee, 0x04ee,
+ // Entry 200 - 23F
+ 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
+ 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
+ 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
+ 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
+ 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x04ee,
+ 0x04ee, 0x04ee, 0x04ee, 0x04ee, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ // Entry 240 - 27F
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0530, 0x0530, 0x0530,
+ 0x0559, 0x057c, 0x05a3, 0x05ca, 0x05ca, 0x05ca, 0x05ca, 0x05ca,
+ 0x05ca, 0x05ca, 0x05ca, 0x05ca, 0x05e9, 0x060e,
+ },
+ },
+ { // cs
+ csLangStr,
+ csLangIdx,
+ },
+ { // cy
+ "AffaregAbchasegAfestanegAffricânegAcanegAmharegAragonegArabegAsamegAfare" +
+ "gAymaregAserbaijanegBashcortegBelarwsegBwlgaregBislamaBambaregBengal" +
+ "egTibetegLlydawegBosniegCatalanegTsietsienegTsiamorroCorsegCriTsiece" +
+ "gHen SlafonegTshwfashegCymraegDanegAlmaenegDifehiDzongkhaEweGroegSae" +
+ "snegEsperantoSbaenegEstonegBasgegPersegFfwlaFfinnegFfijïegFfaröegFfr" +
+ "angegFfriseg y GorllewinGwyddelegGaeleg yr AlbanGalisiegGuaraníGwjar" +
+ "atiManawegHawsaHebraegHindiCroategCreol HaitiHwngaregArmenegHereroIn" +
+ "terlinguaIndonesegInterlingueIgboNwoswInwpiacegIslandegEidalegInwcti" +
+ "twtJapaneegJafanaegGeorgegCongoKikuyuCasachegKalaallisutChmeregKanna" +
+ "daCoreegCanwriCashmiregCwrdegComiCernywegCirgisegLladinLwcsembwrgegG" +
+ "andaLimbwrgegLingalaLaoegLithwanegLuba-KatangaLatfiegMalagasegMarsia" +
+ "legMaoriMacedonegMalayalamMongolegMarathiMaleiegMaltegByrmanegNawrŵe" +
+ "gNdebele GogleddolNepalegNdongaIseldiregNorwyeg NynorskNorwyeg Bokmå" +
+ "lNdebele DeheuolNafahoNianjaOcsitanegOjibwaOromoOriyaOsetegPwnjabegP" +
+ "aliPwylegPashtoPortiwgeegQuechuaRománshRwndiRwmanegRwsegCiniarŵandeg" +
+ "SansgritSardegSindhiSami GogleddolSangoSinhalegSlofacegSlofenegSamöe" +
+ "gShonaSomalegAlbanegSerbegSwatiSesothegSwndanegSwedegSwahiliTamilegT" +
+ "eluguTajicegThaiTigrinyaTwrcmenegTswanaTongegTyrcegTsongaegTataregUi" +
+ "ghurWcreinegWrdwWsbecegFendegFietnamegWalwnegWoloffXhosaIddew-Almaen" +
+ "egIorwbaTsieineegSwlwAcehnegAcoliAdangmegCircaseg GorllewinolArabeg " +
+ "TunisiaAffrihiliAghemegAinŵegAcadegAlabamäegAlewtegGhegeg AlbaniaAlt" +
+ "äeg DeheuolHen SaesnegAngikaAramaegArawcanegAraonaegArapahoArabeg A" +
+ "lgeriaArawacegArabeg MorocoArabeg yr AifftAswIaith Arwyddion America" +
+ "AstwrianegAwadhiBalwtsiBalïegBasâegBamwmegBejäegBembegBenaBaffwtegBa" +
+ "dagaBalochi GorllewinolComegSiksikaBrahuiBodoAcwsegBwriategBwlwCadoC" +
+ "aribegAtsamegTsigaMariegSioctoTsierocîCheyenneCwrdeg SoraniCoptegTyr" +
+ "ceg y CrimeaDacotaegDargwaTaitaDincaZarmaegDogriSorbeg IsafDiwalegIs" +
+ "eldireg CanolJola-FonyiEmbwHen EifftegElamegSaesneg CanolEwondoExtre" +
+ "maduregFfilipinegFfinneg TornedalFfrangeg CajwnFfrangeg CanolHen Ffr" +
+ "angegArpitanegFfriseg y GogleddFfriseg y DwyrainFfriwlegGagauzGaioGb" +
+ "aiaDareg y ZoroastriaidGilbertegUchel Almaeneg CanolHen Uchel Almaen" +
+ "egGothegHen RoegAlmaeneg y SwistirGusiiHaidaHawäiegHethegHmongegSorb" +
+ "eg UchafIbanegIbibioIlocanegIngwsiegNgombaMatsiameIddew-BersiegIddew" +
+ "-ArabegCara-CalpacegCabilegCambaCircaseg DwyreiniolTyapegMacondegCab" +
+ "oferdianegCàsegKoyra ChiiniChowaregKalenjinKomi-PermyakConcaniCarele" +
+ "gShambalaBaffiaCwlenegCwmicegIddew-SbaenegLangiLahndaLambaLezghegLak" +
+ "otaLombardegMongoLoziLuri GogleddolLatgalegLwndaLŵoLwshaiegLwyiaMadw" +
+ "regMagahiMaithiliMacasaregMandingoMasaiMocsiaMandaregMendegMêrwMoris" +
+ "yenGwyddeleg CanolMakhuwa-MeettoMetaMicmacegManshwManipwriMohocegMos" +
+ "iMari GorllewinolMundangmwy nag un iaithMirandegMarwariMasanderaniNa" +
+ "pliegNamaIsel AlmaenegNewaegAo NagaKwasioHen NorsegN’KoSotho Gogledd" +
+ "olNŵeregHen NewariNiamweziNiancoleNioroNzimegOsagegTyrceg OtomanPang" +
+ "asinegPahlafiPampangaPicardegAlmaeneg PensylfaniaHen BersiegAlmaeneg" +
+ " PalatinPhoenicegPiedmontegPontegPohnpeianegPrwsegHen BrofensalegK’i" +
+ "che’RajasthanegRapanŵiRaratongegRomboRomaniRotumanegAromanegRwaSandä" +
+ "wegAramaeg SamariaSambŵrwSasacegSantaliNgambeiegSangwSisilegSgotegSa" +
+ "sareseg SardiniaCwrdeg DeheuolSenecaSenaSeriSelcypegKoyraboro SenniH" +
+ "en WyddelegSamogitegTachelhitArabeg ChadSidamoIs-silesiegSami Deheuo" +
+ "lSami LwleSami InariSami ScoltSonincegSogdegSereregFfriseg Saterland" +
+ "SwcwmaSwsŵegSwmeregComoregSwahili’r CongoHen SyriegSyriegSilesiegTul" +
+ "uTimnegTesoTerenaTetumegTigregTifegTocelawegTsakhuregKlingonLlingitT" +
+ "alyshegTamashecegTok PisinTarokoTsaconegTwmbwcaTwfalwegTasawaqTamase" +
+ "it Canolbarth MorocoFotiacegWgaritegUmbunduy GwraiddFaiegFenisegFeps" +
+ "Fflemeg GorllewinolFotegFunjoWalseregWalamoWinarayegWashoWarlpiriCal" +
+ "mycegSogaIembaegCantoneegZapotecegBlisssymbolsZêlandegTamaseit Safon" +
+ "olZuniDim cynnwys ieithyddolZazäegArabeg Modern SafonolAserbaijaneg " +
+ "DeheuolAlmaeneg AwstriaAlmaeneg Safonol y SwistirSaesneg AwstraliaSa" +
+ "esneg CanadaSaesneg PrydainSaesneg AmericaSbaeneg America LadinSbaen" +
+ "eg EwropSbaeneg MecsicoFfrangeg CanadaFfrangeg y SwistirSacsoneg Ise" +
+ "lFflemegPortiwgeeg BrasilPortiwgeeg EwropMoldofegSerbo-CroategTsiein" +
+ "eeg SymledigTsieineeg Traddodiadol",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0007, 0x000f, 0x0018, 0x0023, 0x0029, 0x0030, 0x0038,
+ 0x003e, 0x0044, 0x004a, 0x0051, 0x005d, 0x0067, 0x0070, 0x0078,
+ 0x007f, 0x0087, 0x008f, 0x0096, 0x009e, 0x00a5, 0x00ae, 0x00b9,
+ 0x00c2, 0x00c8, 0x00cb, 0x00d2, 0x00de, 0x00e8, 0x00ef, 0x00f4,
+ 0x00fc, 0x0102, 0x010a, 0x010d, 0x0112, 0x0119, 0x0122, 0x0129,
+ 0x0130, 0x0136, 0x013c, 0x0141, 0x0148, 0x0150, 0x0158, 0x0160,
+ 0x0173, 0x017c, 0x018b, 0x0193, 0x019b, 0x01a3, 0x01aa, 0x01af,
+ 0x01b6, 0x01bb, 0x01bb, 0x01c2, 0x01cd, 0x01d5, 0x01dc, 0x01e2,
+ // Entry 40 - 7F
+ 0x01ed, 0x01f6, 0x0201, 0x0205, 0x020a, 0x0213, 0x0213, 0x021b,
+ 0x0222, 0x022b, 0x0233, 0x023b, 0x0242, 0x0247, 0x024d, 0x024d,
+ 0x0255, 0x0260, 0x0267, 0x026e, 0x0274, 0x027a, 0x0283, 0x0289,
+ 0x028d, 0x0295, 0x029d, 0x02a3, 0x02af, 0x02b4, 0x02bd, 0x02c4,
+ 0x02c9, 0x02d2, 0x02de, 0x02e5, 0x02ee, 0x02f7, 0x02fc, 0x0305,
+ 0x030e, 0x0316, 0x031d, 0x0324, 0x032a, 0x0332, 0x033a, 0x034b,
+ 0x0352, 0x0358, 0x0361, 0x0370, 0x037f, 0x038e, 0x0394, 0x039a,
+ 0x03a3, 0x03a9, 0x03ae, 0x03b3, 0x03b9, 0x03c1, 0x03c5, 0x03cb,
+ // Entry 80 - BF
+ 0x03d1, 0x03db, 0x03e2, 0x03ea, 0x03ef, 0x03f6, 0x03fb, 0x0408,
+ 0x0410, 0x0416, 0x041c, 0x042a, 0x042f, 0x0437, 0x043f, 0x0447,
+ 0x044e, 0x0453, 0x045a, 0x0461, 0x0467, 0x046c, 0x0474, 0x047c,
+ 0x0482, 0x0489, 0x0490, 0x0496, 0x049d, 0x04a1, 0x04a9, 0x04b2,
+ 0x04b8, 0x04be, 0x04c4, 0x04cc, 0x04d3, 0x04d3, 0x04d9, 0x04e1,
+ 0x04e5, 0x04ec, 0x04f2, 0x04fb, 0x04fb, 0x0502, 0x0508, 0x050d,
+ 0x051b, 0x0521, 0x0521, 0x052a, 0x052e, 0x0535, 0x053a, 0x0542,
+ 0x0556, 0x0564, 0x056d, 0x0574, 0x057b, 0x0581, 0x058b, 0x0592,
+ // Entry C0 - FF
+ 0x05a0, 0x05af, 0x05ba, 0x05c0, 0x05c7, 0x05d0, 0x05d8, 0x05df,
+ 0x05ed, 0x05f5, 0x0602, 0x0611, 0x0614, 0x062b, 0x0635, 0x0635,
+ 0x063b, 0x0642, 0x0649, 0x0649, 0x0650, 0x0657, 0x0657, 0x0657,
+ 0x065e, 0x0664, 0x0664, 0x0668, 0x0670, 0x0676, 0x0689, 0x0689,
+ 0x0689, 0x0689, 0x0689, 0x068e, 0x0695, 0x0695, 0x0695, 0x0695,
+ 0x069b, 0x069f, 0x06a5, 0x06ad, 0x06ad, 0x06b1, 0x06b1, 0x06b1,
+ 0x06b5, 0x06bc, 0x06bc, 0x06c3, 0x06c3, 0x06c8, 0x06c8, 0x06c8,
+ 0x06c8, 0x06ce, 0x06ce, 0x06d4, 0x06d4, 0x06dd, 0x06e5, 0x06f2,
+ // Entry 100 - 13F
+ 0x06f8, 0x06f8, 0x0707, 0x0707, 0x070f, 0x0715, 0x071a, 0x071a,
+ 0x071a, 0x071a, 0x071f, 0x0726, 0x072b, 0x0736, 0x0736, 0x073d,
+ 0x074c, 0x0756, 0x0756, 0x0756, 0x075a, 0x075a, 0x075a, 0x0765,
+ 0x0765, 0x076b, 0x0778, 0x0778, 0x077e, 0x078a, 0x078a, 0x0794,
+ 0x07a4, 0x07a4, 0x07b2, 0x07c0, 0x07cc, 0x07d5, 0x07e6, 0x07f7,
+ 0x07ff, 0x07ff, 0x0805, 0x0805, 0x0809, 0x080e, 0x0822, 0x0822,
+ 0x082b, 0x082b, 0x083f, 0x0851, 0x0851, 0x0851, 0x0851, 0x0857,
+ 0x0857, 0x085f, 0x0871, 0x0871, 0x0871, 0x0876, 0x0876, 0x087b,
+ // Entry 140 - 17F
+ 0x087b, 0x0883, 0x0883, 0x0883, 0x0889, 0x0890, 0x089c, 0x089c,
+ 0x089c, 0x08a2, 0x08a8, 0x08b0, 0x08b8, 0x08b8, 0x08b8, 0x08b8,
+ 0x08be, 0x08c6, 0x08d3, 0x08df, 0x08df, 0x08ec, 0x08f3, 0x08f3,
+ 0x08f3, 0x08f8, 0x08f8, 0x090b, 0x090b, 0x0911, 0x0919, 0x0926,
+ 0x0926, 0x0926, 0x0926, 0x092c, 0x092c, 0x0938, 0x0940, 0x0940,
+ 0x0940, 0x0948, 0x0948, 0x0954, 0x095b, 0x095b, 0x095b, 0x095b,
+ 0x095b, 0x095b, 0x0962, 0x0962, 0x096a, 0x0970, 0x0977, 0x097e,
+ 0x097e, 0x098b, 0x0990, 0x0996, 0x099b, 0x09a2, 0x09a2, 0x09a2,
+ // Entry 180 - 1BF
+ 0x09a2, 0x09a8, 0x09b1, 0x09b6, 0x09ba, 0x09c8, 0x09d0, 0x09d0,
+ 0x09d0, 0x09d5, 0x09d9, 0x09e1, 0x09e6, 0x09e6, 0x09e6, 0x09ed,
+ 0x09ed, 0x09f3, 0x09fb, 0x0a04, 0x0a0c, 0x0a11, 0x0a11, 0x0a17,
+ 0x0a1f, 0x0a25, 0x0a2a, 0x0a32, 0x0a41, 0x0a4f, 0x0a53, 0x0a5b,
+ 0x0a5b, 0x0a61, 0x0a69, 0x0a70, 0x0a74, 0x0a84, 0x0a8b, 0x0a9b,
+ 0x0a9b, 0x0aa3, 0x0aaa, 0x0aaa, 0x0aaa, 0x0aaa, 0x0ab5, 0x0ab5,
+ 0x0abc, 0x0ac0, 0x0acd, 0x0ad3, 0x0ad3, 0x0ad3, 0x0ada, 0x0ae0,
+ 0x0ae0, 0x0ae0, 0x0aea, 0x0aea, 0x0af0, 0x0aff, 0x0b06, 0x0b10,
+ // Entry 1C0 - 1FF
+ 0x0b18, 0x0b20, 0x0b25, 0x0b2b, 0x0b31, 0x0b3e, 0x0b48, 0x0b4f,
+ 0x0b57, 0x0b57, 0x0b57, 0x0b5f, 0x0b73, 0x0b73, 0x0b7e, 0x0b8e,
+ 0x0b97, 0x0ba1, 0x0ba7, 0x0bb2, 0x0bb8, 0x0bc7, 0x0bd2, 0x0bd2,
+ 0x0bdd, 0x0be5, 0x0bef, 0x0bef, 0x0bef, 0x0bf4, 0x0bfa, 0x0c03,
+ 0x0c03, 0x0c03, 0x0c0b, 0x0c0e, 0x0c17, 0x0c17, 0x0c26, 0x0c2e,
+ 0x0c35, 0x0c3c, 0x0c3c, 0x0c45, 0x0c4a, 0x0c51, 0x0c57, 0x0c69,
+ 0x0c77, 0x0c7d, 0x0c81, 0x0c85, 0x0c8d, 0x0c9c, 0x0ca8, 0x0cb1,
+ 0x0cba, 0x0cba, 0x0cc5, 0x0ccb, 0x0cd6, 0x0cd6, 0x0ce2, 0x0ceb,
+ // Entry 200 - 23F
+ 0x0cf5, 0x0cff, 0x0d07, 0x0d0d, 0x0d0d, 0x0d14, 0x0d14, 0x0d25,
+ 0x0d2b, 0x0d32, 0x0d39, 0x0d40, 0x0d51, 0x0d5b, 0x0d61, 0x0d69,
+ 0x0d6d, 0x0d73, 0x0d77, 0x0d7d, 0x0d84, 0x0d8a, 0x0d8f, 0x0d98,
+ 0x0da1, 0x0da8, 0x0daf, 0x0db7, 0x0dc1, 0x0dc1, 0x0dca, 0x0dca,
+ 0x0dd0, 0x0dd8, 0x0dd8, 0x0dd8, 0x0ddf, 0x0de7, 0x0dee, 0x0dee,
+ 0x0e08, 0x0e10, 0x0e18, 0x0e1f, 0x0e28, 0x0e2d, 0x0e34, 0x0e38,
+ 0x0e4b, 0x0e4b, 0x0e50, 0x0e50, 0x0e55, 0x0e5d, 0x0e63, 0x0e6c,
+ 0x0e71, 0x0e79, 0x0e79, 0x0e81, 0x0e81, 0x0e85, 0x0e85, 0x0e85,
+ // Entry 240 - 27F
+ 0x0e85, 0x0e8c, 0x0e8c, 0x0e95, 0x0e9e, 0x0eaa, 0x0eb3, 0x0eb3,
+ 0x0ec3, 0x0ec7, 0x0edd, 0x0ee4, 0x0ef9, 0x0f0d, 0x0f1d, 0x0f37,
+ 0x0f48, 0x0f56, 0x0f65, 0x0f74, 0x0f89, 0x0f96, 0x0fa5, 0x0fa5,
+ 0x0fb4, 0x0fc6, 0x0fd3, 0x0fda, 0x0feb, 0x0ffb, 0x1003, 0x1010,
+ 0x1022, 0x1038,
+ },
+ },
+ { // da
+ daLangStr,
+ daLangIdx,
+ },
+ { // dav
+ "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
+ "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
+ "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
+ "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
+ "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
+ "rubaKichinaKizuluKitaita",
+ []uint16{ // 263 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
+ 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
+ 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
+ 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
+ // Entry 40 - 7F
+ 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
+ 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
+ // Entry 80 - BF
+ 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
+ 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
+ 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
+ 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry C0 - FF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 100 - 13F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0170,
+ },
+ },
+ { // de
+ deLangStr,
+ deLangIdx,
+ },
+ { // de-CH
+ "WeissrussischAltpreussisch",
+ []uint16{ // 469 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ // Entry 40 - 7F
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ // Entry 80 - BF
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ // Entry C0 - FF
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ // Entry 100 - 13F
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ // Entry 140 - 17F
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ // Entry 180 - 1BF
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ // Entry 1C0 - 1FF
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x001a,
+ },
+ },
+ { // dje
+ "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" +
+ " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " +
+ "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" +
+ "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senniKoree" +
+ " senniMaleezi senniBurme senniNeepal senniHolandee senniPunjaabi sen" +
+ "niiPolonee senniPortugee senniRumaani senniRuusi senniRwanda senniSo" +
+ "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " +
+ "senniUrdu senniVietnaam senniYorbance senniSinuwa senniZulu senniZar" +
+ "maciine",
+ []uint16{ // 268 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041,
+ 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
+ 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088,
+ 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0,
+ 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae,
+ 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7,
+ // Entry 40 - 7F
+ 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0111, 0x0111, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x011c, 0x011c, 0x011c, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134,
+ 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e,
+ 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x015d, 0x015d, 0x016a,
+ // Entry 80 - BF
+ 0x016a, 0x0178, 0x0178, 0x0178, 0x0178, 0x0185, 0x0190, 0x019c,
+ 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c,
+ 0x019c, 0x019c, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9,
+ 0x01b6, 0x01b6, 0x01c1, 0x01c1, 0x01c1, 0x01d0, 0x01d0, 0x01d0,
+ 0x01d0, 0x01d0, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01e7,
+ 0x01f1, 0x01f1, 0x01f1, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff,
+ 0x01ff, 0x020d, 0x020d, 0x0219, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ // Entry C0 - FF
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ // Entry 100 - 13F
+ 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223,
+ 0x0223, 0x0223, 0x0223, 0x022d,
+ },
+ },
+ { // dsb
+ "afaršćinaabchazšćinaafrikansakanšćinaamharšćinaaragonšćinaarabšćinaasamš" +
+ "ćinaawaršćinaaymaršćinaazerbajdžanšćinabaškiršćinaběłorušćinabulgar" +
+ "šćinabislamšćinabambarabengalšćinatibetšćinabretonšćinabosnišćinaka" +
+ "tanlanšćinačamoršćinakorsišćinakričešćinawalizišćinadanšćinanimšćina" +
+ "divehidzongkhaewegrichišćinaengelšćinaesperantošpańšćinaestišćinabas" +
+ "kišćinapersišćinafinšćinafidžišćinaferejšćinafrancojšćinafrizišćinai" +
+ "ršćinašotišćinagalicišćinaguaranigudžaratšćinamanšćinahausahebrejšći" +
+ "nahindišćinachorwatšćinahaitišćinahungoršćinaarmeńšćinainterlinguain" +
+ "donešćinaigbosichuan yiinupiakidoislandšćinaitalšćinainuitšćinajapań" +
+ "šćinajavašćinageorgišćinakikuyukazachšćinagrönlandšćinakambodžanšći" +
+ "nakannadšćinakorejańšćinakašmiršćinakurdišćinakornišćinakirgišćinała" +
+ "tyńšćinaluxemburgšćinagandšćinalimburšćinalingalalaošćinalitawšćinal" +
+ "uba-katangaletišćinamalgašćinamaorišćinamakedońšćinamalajamšćinamong" +
+ "olšćinamaratišćinamalajšćinamaltašćinaburmašćinanaurušćinapódpołnocn" +
+ "e ndebelenepalšćinanižozemšćinanorwegske nynorsknorwegske bokmålnava" +
+ "hookcitanšćinaoromoorojišćinapandžabšćinapólšćinapaštunšćinaportugal" +
+ "šćinakečuaretoromańšćinakirundišćinarumunšćinarušćinakinjarwandasan" +
+ "skritsardinšćinasindšćinalapšćinasangosingalšćinasłowakšćinasłowjeńš" +
+ "ćinasamošćinašonšćinasomališćinaalbanšćinaserbišćinasiswatipódpołdn" +
+ "jowa sotšćina (Sesotho)sundanšćinašwedšćinaswahilišćinatamilšćinatel" +
+ "ugšćinatadžikišćinathailandšćinatigrinjaturkmeńšćinatswanatonganšćin" +
+ "aturkojšćinatsongatataršćinatahitišćinaujguršćinaukrainšćinaurdušćin" +
+ "ausbekšćinavietnamšćinavolapükwalonšćinawolofxhosajidišćinajorubšćin" +
+ "azhuangchinšćinazuluaghemanglosaksojšćinaarawkašćinapareasturšćinabe" +
+ "mbabenabodobugišćinachigachoctawšćinacherokeesoranitaitazarmadolnose" +
+ "rbšćinadualajola-fonyiembufilipinšćinagagauzšćinagotišćinašwicarska " +
+ "nimšćinagusiihawaiišćinagórnoserbšćinangombamachamekabylšćinakambama" +
+ "kondekapverdšćinakoyra chiinikalenjinkomi-permyakkonkanišambalabafia" +
+ "langilakotšćinaluoluhyamasaišćinamerumauriciska kreolšćinamakhuwa-me" +
+ "ettometa’mohawkšćinamundangkriknamadolnonimšćinakwasion’konuernyanko" +
+ "leprusčinakʼicheʼromborwasamburusangusicilianišćinasenakoyra sennita" +
+ "šelhitpódpołdnjowa samišćinalule-samišćinainari-samišćinaskolt-sami" +
+ "šćinasaterfrizišćinakongojska swahilišćinatesotasawaqcentralnoatlas" +
+ "ki tamazightnjeznata rěcvaivunjosogastandardny marokkański tamazight" +
+ "žedno rěcne wopśimjeśemoderna wusokoarabšćinaawstriska nimšćinašwic" +
+ "arska wusokonimšćinaawstralska engelšćinakanadiska engelšćinabritisk" +
+ "a engelšćinaameriska engelšćinałatyńskoamerikańska špańšćinaeuropejs" +
+ "ka špańšćinamexikańska špańšćinakanadiska francojšćinašwicarska fran" +
+ "cojšćinaflamšćinabrazilska portugalšćinaeuropejska portugalšćinamold" +
+ "awišćinaserbochorwatšćinachinšćina (zjadnorjona)chinšćina (tradicion" +
+ "alna)",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000b, 0x0018, 0x0018, 0x0020, 0x002b, 0x0037, 0x0044,
+ 0x004f, 0x005a, 0x0065, 0x0071, 0x0084, 0x0092, 0x00a1, 0x00ae,
+ 0x00bb, 0x00c2, 0x00cf, 0x00db, 0x00e8, 0x00f4, 0x0103, 0x0103,
+ 0x0110, 0x011c, 0x011f, 0x0129, 0x0129, 0x0129, 0x0136, 0x0140,
+ 0x014a, 0x0150, 0x0158, 0x015b, 0x0168, 0x0174, 0x017d, 0x018a,
+ 0x0195, 0x01a1, 0x01ad, 0x01ad, 0x01b7, 0x01c4, 0x01d0, 0x01de,
+ 0x01ea, 0x01f3, 0x01ff, 0x020c, 0x0213, 0x0223, 0x022d, 0x0232,
+ 0x023f, 0x024b, 0x024b, 0x0259, 0x0265, 0x0272, 0x027f, 0x027f,
+ // Entry 40 - 7F
+ 0x028a, 0x0297, 0x0297, 0x029b, 0x02a5, 0x02ac, 0x02af, 0x02bc,
+ 0x02c7, 0x02d3, 0x02e0, 0x02eb, 0x02f8, 0x02f8, 0x02fe, 0x02fe,
+ 0x030b, 0x031b, 0x032c, 0x0339, 0x0348, 0x0348, 0x0356, 0x0362,
+ 0x0362, 0x036e, 0x037a, 0x0388, 0x0398, 0x03a3, 0x03b0, 0x03b7,
+ 0x03c1, 0x03cd, 0x03d9, 0x03e4, 0x03f0, 0x03f0, 0x03fc, 0x040b,
+ 0x0419, 0x0426, 0x0433, 0x043f, 0x044b, 0x0457, 0x0463, 0x0478,
+ 0x0484, 0x0484, 0x0493, 0x04a4, 0x04b5, 0x04b5, 0x04bb, 0x04bb,
+ 0x04c9, 0x04c9, 0x04ce, 0x04da, 0x04da, 0x04e9, 0x04e9, 0x04f4,
+ // Entry 80 - BF
+ 0x0502, 0x0511, 0x0517, 0x0528, 0x0536, 0x0542, 0x054b, 0x0556,
+ 0x055e, 0x056b, 0x0576, 0x0580, 0x0585, 0x0592, 0x05a0, 0x05b0,
+ 0x05bb, 0x05c6, 0x05d3, 0x05df, 0x05eb, 0x05f2, 0x0615, 0x0622,
+ 0x062e, 0x063c, 0x0648, 0x0654, 0x0663, 0x0672, 0x067a, 0x0689,
+ 0x068f, 0x069c, 0x06a9, 0x06af, 0x06bb, 0x06c8, 0x06d4, 0x06e1,
+ 0x06ec, 0x06f8, 0x06f8, 0x0706, 0x070e, 0x071a, 0x071f, 0x0724,
+ 0x072f, 0x073b, 0x0741, 0x074c, 0x0750, 0x0750, 0x0750, 0x0750,
+ 0x0750, 0x0750, 0x0750, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755,
+ // Entry C0 - FF
+ 0x0755, 0x0755, 0x0767, 0x0767, 0x0767, 0x0774, 0x0774, 0x0774,
+ 0x0774, 0x0774, 0x0774, 0x0774, 0x0778, 0x0778, 0x0784, 0x0784,
+ 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784,
+ 0x0784, 0x0789, 0x0789, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d,
+ 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d,
+ 0x078d, 0x0791, 0x0791, 0x0791, 0x079c, 0x079c, 0x079c, 0x079c,
+ 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, 0x07a1, 0x07a1, 0x07a1,
+ 0x07a1, 0x07a1, 0x07a1, 0x07af, 0x07af, 0x07b7, 0x07b7, 0x07bd,
+ // Entry 100 - 13F
+ 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07c2, 0x07c2,
+ 0x07c2, 0x07c2, 0x07c2, 0x07c7, 0x07c7, 0x07d7, 0x07d7, 0x07dc,
+ 0x07dc, 0x07e6, 0x07e6, 0x07e6, 0x07ea, 0x07ea, 0x07ea, 0x07ea,
+ 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07f8,
+ 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8,
+ 0x07f8, 0x07f8, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805,
+ 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0810,
+ 0x0810, 0x0810, 0x0825, 0x0825, 0x0825, 0x082a, 0x082a, 0x082a,
+ // Entry 140 - 17F
+ 0x082a, 0x0837, 0x0837, 0x0837, 0x0837, 0x0837, 0x0848, 0x0848,
+ 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848,
+ 0x084e, 0x0855, 0x0855, 0x0855, 0x0855, 0x0855, 0x0861, 0x0861,
+ 0x0861, 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x086d, 0x087b,
+ 0x087b, 0x087b, 0x087b, 0x087b, 0x087b, 0x0887, 0x0887, 0x0887,
+ 0x0887, 0x088f, 0x088f, 0x089b, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
+ 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08aa, 0x08af, 0x08af, 0x08af,
+ 0x08af, 0x08af, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08b4,
+ // Entry 180 - 1BF
+ 0x08b4, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0,
+ 0x08c0, 0x08c0, 0x08c3, 0x08c3, 0x08c8, 0x08c8, 0x08c8, 0x08c8,
+ 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d4, 0x08d4, 0x08d4,
+ 0x08d4, 0x08d4, 0x08d8, 0x08ef, 0x08ef, 0x08fd, 0x0904, 0x0904,
+ 0x0904, 0x0904, 0x0904, 0x0911, 0x0911, 0x0911, 0x0918, 0x0918,
+ 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x091c,
+ 0x091c, 0x0920, 0x092f, 0x092f, 0x092f, 0x092f, 0x092f, 0x0935,
+ 0x0935, 0x0935, 0x0935, 0x0935, 0x093b, 0x093b, 0x093f, 0x093f,
+ // Entry 1C0 - 1FF
+ 0x093f, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947,
+ 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947,
+ 0x0947, 0x0947, 0x0947, 0x0947, 0x0950, 0x0950, 0x0959, 0x0959,
+ 0x0959, 0x0959, 0x0959, 0x0959, 0x0959, 0x095e, 0x095e, 0x095e,
+ 0x095e, 0x095e, 0x095e, 0x0961, 0x0961, 0x0961, 0x0961, 0x0968,
+ 0x0968, 0x0968, 0x0968, 0x0968, 0x096d, 0x097d, 0x097d, 0x097d,
+ 0x097d, 0x097d, 0x0981, 0x0981, 0x0981, 0x098c, 0x098c, 0x098c,
+ 0x0995, 0x0995, 0x0995, 0x0995, 0x0995, 0x0995, 0x09af, 0x09bf,
+ // Entry 200 - 23F
+ 0x09d0, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09f2,
+ 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x0a0a, 0x0a0a, 0x0a0a, 0x0a0a,
+ 0x0a0a, 0x0a0a, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e,
+ 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e,
+ 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a15, 0x0a15,
+ 0x0a2f, 0x0a2f, 0x0a2f, 0x0a2f, 0x0a3c, 0x0a3f, 0x0a3f, 0x0a3f,
+ 0x0a3f, 0x0a3f, 0x0a3f, 0x0a3f, 0x0a44, 0x0a44, 0x0a44, 0x0a44,
+ 0x0a44, 0x0a44, 0x0a44, 0x0a44, 0x0a44, 0x0a48, 0x0a48, 0x0a48,
+ // Entry 240 - 27F
+ 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a48,
+ 0x0a69, 0x0a69, 0x0a83, 0x0a83, 0x0a9c, 0x0a9c, 0x0ab0, 0x0acb,
+ 0x0ae2, 0x0af8, 0x0b0d, 0x0b22, 0x0b46, 0x0b5e, 0x0b77, 0x0b77,
+ 0x0b8f, 0x0ba8, 0x0ba8, 0x0bb3, 0x0bcc, 0x0be6, 0x0bf4, 0x0c07,
+ 0x0c20, 0x0c3b,
+ },
+ },
+ { // dua
+ "duálá",
+ []uint16{ // 272 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 100 - 13F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007,
+ },
+ },
+ { // dyo
+ "akanamharikarabbelarusbulgaaribengalisekalmangreekangleespañolpersanfran" +
+ "sehausaenduongruaindoneesiigboitaliensaponeesavaneekmeerkoreemaleesi" +
+ "birmaninepaleesneerlandepenjabipoloneesportugeesrumeenrusruandasomal" +
+ "isueditamiltayturkiukrainurduvietnamyorubasinuasulujoola",
+ []uint16{ // 274 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x001e,
+ 0x001e, 0x001e, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x002d, 0x002d, 0x002d, 0x002d, 0x0032, 0x0037, 0x0037, 0x003f,
+ 0x003f, 0x003f, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x004b,
+ 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0050,
+ 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x005a, 0x005a, 0x005a,
+ // Entry 40 - 7F
+ 0x005a, 0x0063, 0x0063, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067,
+ 0x006e, 0x006e, 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c,
+ 0x007c, 0x007c, 0x0081, 0x0081, 0x0086, 0x0086, 0x0086, 0x0086,
+ 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,
+ 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,
+ 0x0086, 0x0086, 0x0086, 0x008d, 0x008d, 0x0094, 0x0094, 0x0094,
+ 0x009c, 0x009c, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5,
+ 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00ac, 0x00ac, 0x00b4,
+ // Entry 80 - BF
+ 0x00b4, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00c3, 0x00c6, 0x00cc,
+ 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
+ 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2,
+ 0x00d7, 0x00d7, 0x00dc, 0x00dc, 0x00dc, 0x00df, 0x00df, 0x00df,
+ 0x00df, 0x00df, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00ea,
+ 0x00ee, 0x00ee, 0x00ee, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5,
+ 0x00f5, 0x00fb, 0x00fb, 0x0100, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ // Entry C0 - FF
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ // Entry 100 - 13F
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0109,
+ },
+ },
+ { // dz
+ "ཨ་ཕར་ཁཨཱབ་ཁ་ཟི་ཡ་ཁཨཕ་རི་ཀཱནས་ཁཨམ་ཧ་རིཀ་ཁཨེ་ར་བིཀ་ཁཨ་ས་མིས་ཁཨ་ཛར་བྷའི་ཇཱན" +
+ "་ཁབེལ་ཨ་རུས་ཁབཱལ་གེ་རི་ཡཱན་ཁབངྒ་ལ་ཁབོད་ཁབྷོས་ནི་ཡཱན་ཁཀེ་ཊ་ལཱན་ཁཅེཀ" +
+ "་ཁཝེལཤ་ཁཌེ་ནིཤ་ཁཇཱར་མཱན་ཁདི་བེ་ཧི་ཁརྫོང་ཁགྲིཀ་ཁཨིང་ལིཤ་ཁཨེས་པ་རཱན་" +
+ "ཏོ་ཁཨིས་པེ་ནིཤ་ཁཨེས་ཊོ་ནི་ཡཱན་ཁབཱསཀ་ཁཔར་ཤི་ཡཱན་ཁཕི་ནིཤ་ཁཕི་ཇི་ཡཱན་" +
+ "ཁཕཱ་རོ་ཨིས་ཁཕྲནཅ་ཁནུབ་ཕྼི་སི་ཡན་ཁཨཱའི་རིཤ་ཁགལ་ཨིས་ཨི་ཡན་ཁགུ་ཝ་ར་ནི" +
+ "་ཁགུ་ཇ་ར་ཏི་ཁཧཝ་ས་ཁཧེ་བྲུ་ཁཧིན་དི་ཁཀྲོ་ཨེ་ཤི་ཡཱན་ཁཧེ་ཏི་ཡཱན་ཁཧཱང་ག" +
+ "ྷ་རི་ཡཱན་ཁཨར་མི་ནི་ཡཱན་ཁཨིན་ཌོ་ནེ་ཤི་ཡཱན་ཁཨིག་བོ་ཁཨ་ཡིས་ལེན་ཌིཀ་ཁཨ" +
+ "ི་ཊ་ལི་ཡཱན་ཁཇཱ་པཱ་ནིས་ཁཇཱ་བ་ནིས་ཁཇཽ་ཇི་ཡཱན་ཁཀ་ཛགས་ཁཁེ་མེར་ཁཀ་ན་ཌ་ཁ" +
+ "ཀོ་རི་ཡཱན་ཁཀཱཤ་མི་རི་ཁཀར་ཌིཤ་ཁཀིར་གིས་ཁལེ་ཊིན་ཁལག་ཛམ་བོརྒ་ཁལཱ་ཝོས་" +
+ "ཁལི་ཐུ་ཝེ་ནི་ཡཱན་ཁལཊ་བི་ཡཱན་ཁམ་ལ་ག་སི་ཁམ་ཨོ་རི་ཁམ་སེ་ཌོ་ནི་ཡཱན་ཁམ་" +
+ "ལ་ཡ་ལམ་ཁམ་ར་ཐི་ཁམ་ལེ་ཁམཱལ་ཊ་ཁབར་མིས་ཁནེ་པཱལི་ཁཌཆ་ཁནོར་ཝེ་ཇི་ཡཱན་ནོ" +
+ "རསཀ་ཁནོར་ཝེ་ཇི་ཡཱན་བོཀ་མཱལ་ཁཨོ་རི་ཡ་ཁཔཱན་ཇ་བི་ཁཔོ་ལིཤ་ཁཔཱཤ་ཏོ་ཁཔོར" +
+ "་ཅུ་གིས་ཁཀྭེ་ཆུ་ཨ་ཁརོ་མེ་ནིཤ་ཁརོ་མེ་ནི་ཡཱན་ཁཨུ་རུ་སུའི་ཁསཾསྐྲྀཏ་ཁས" +
+ "ིན་དཱི་ཁསིང་ཧ་ལ་ཁསུ་ལོ་བཱཀ་ཁསུ་ལོ་བི་ནི་ཡཱན་ཁསོ་མ་ལི་ཁཨཱལ་བེ་ནི་ཡཱ" +
+ "ན་ཁསཱར་བྷི་ཡཱན་ཁསཱུན་ད་ནིས་ཁསུའི་ཌིཤ་ཁསྭཱ་ཧི་ལི་ཁཏ་མིལ་ཁཏེ་ལུ་གུ་ཁ" +
+ "ཏ་ཇིཀ་ཁཐཱའི་ཁཏིག་རི་ཉ་ཁཊཱརཀ་མེན་ཁཊོང་གྷན་ཁཊཱར་ཀིཤ་ཁཊ་ཊར་ཁཝི་གུར་ཁཡ" +
+ "ུ་ཀེ་རེ་ནི་ཡཱན་ཁཨུར་དུ་ཁཨུས་བེཀ་ཁབེཊ་ནཱ་མིས་ཁཝོ་ལོཕ་ཁཞོ་ས་ཁཡོ་རུ་བ" +
+ "་ཁརྒྱ་མི་ཁཟུ་ལུ་ཁད་ཀོ་ཏ་ཁཕི་ལི་པི་ནོ་ཁསུ་ཡིས་ཇཱར་མཱན་ཁཧ་ཝ་ཡིའི་ཁཀ་" +
+ "ཆིན་ཁཀོ་རོ་ཁམན་ཇུ་ཁཤཱན་ཁཁ་ངོ་མ་ཤེསཔསྐད་རིག་ནང་དོན་མེདཔཨཱོས་ཊྲི་ཡཱན" +
+ "་ཇཱར་མཱན་ཁསུ་ཡིས་གི་མཐོ་སའི་ཇཱར་མཱན་ཁཨཱོས་ཊྲེ་ལི་ཡཱན་ཨིང་ལིཤ་ཁཀེ་ན" +
+ "་ཌི་ཡཱན་ཨིང་ལིཤ་ཁབྲི་ཊིཤ་ཨིང་ལིཤ་ཁཡུ་ཨེས་ཨིང་ལིཤ་ཁལེ་ཊིན་ཨ་མེ་རི་ཀ" +
+ "ཱན་གི་ཨིས་པེ་ནིཤ་ཁཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་ཁསུ་ཡིས་" +
+ "ཕྲནཅ་ཁཕྷེལེ་མིཤ་ཁབྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་" +
+ "ཁརྒྱ་མི་ཁ་འཇམ་སངམསྔ་དུས་ཀྱི་རྒྱ་མི་ཁ",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0012, 0x0036, 0x0036, 0x005a, 0x005a, 0x0078, 0x0078,
+ 0x0096, 0x00b1, 0x00b1, 0x00b1, 0x00de, 0x00de, 0x00ff, 0x012c,
+ 0x012c, 0x012c, 0x0141, 0x0150, 0x0150, 0x0177, 0x0195, 0x0195,
+ 0x0195, 0x0195, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01b6, 0x01ce,
+ 0x01e9, 0x0207, 0x0219, 0x0219, 0x022b, 0x0246, 0x0270, 0x0294,
+ 0x02c1, 0x02d3, 0x02f4, 0x02f4, 0x030c, 0x032d, 0x034e, 0x0360,
+ 0x038d, 0x03ab, 0x03ab, 0x03d5, 0x03f6, 0x0417, 0x0417, 0x0429,
+ 0x0441, 0x0459, 0x0459, 0x0486, 0x04a7, 0x04d4, 0x04fe, 0x04fe,
+ // Entry 40 - 7F
+ 0x04fe, 0x0534, 0x0534, 0x054c, 0x054c, 0x054c, 0x054c, 0x0579,
+ 0x05a0, 0x05a0, 0x05c1, 0x05df, 0x0600, 0x0600, 0x0600, 0x0600,
+ 0x0615, 0x0615, 0x062d, 0x0642, 0x0663, 0x0663, 0x0684, 0x069c,
+ 0x069c, 0x069c, 0x06b7, 0x06cf, 0x06f3, 0x06f3, 0x06f3, 0x06f3,
+ 0x070b, 0x073e, 0x073e, 0x075f, 0x077d, 0x077d, 0x0798, 0x07c8,
+ 0x07e6, 0x07e6, 0x07fe, 0x0810, 0x0825, 0x083d, 0x083d, 0x083d,
+ 0x0858, 0x0858, 0x0864, 0x08a3, 0x08e8, 0x08e8, 0x08e8, 0x08e8,
+ 0x08e8, 0x08e8, 0x08e8, 0x0903, 0x0903, 0x0921, 0x0921, 0x0939,
+ // Entry 80 - BF
+ 0x0951, 0x0975, 0x0993, 0x09b4, 0x09b4, 0x09de, 0x0a02, 0x0a02,
+ 0x0a1d, 0x0a1d, 0x0a38, 0x0a38, 0x0a38, 0x0a53, 0x0a74, 0x0aa7,
+ 0x0aa7, 0x0aa7, 0x0ac2, 0x0aef, 0x0b16, 0x0b16, 0x0b16, 0x0b3a,
+ 0x0b58, 0x0b79, 0x0b8e, 0x0bac, 0x0bc1, 0x0bd3, 0x0bf1, 0x0c0f,
+ 0x0c0f, 0x0c2a, 0x0c45, 0x0c45, 0x0c57, 0x0c57, 0x0c6f, 0x0ca2,
+ 0x0cba, 0x0cd5, 0x0cd5, 0x0cf9, 0x0cf9, 0x0cf9, 0x0d11, 0x0d23,
+ 0x0d23, 0x0d3e, 0x0d3e, 0x0d56, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ // Entry C0 - FF
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b,
+ // Entry 100 - 13F
+ 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d83, 0x0d83, 0x0d83, 0x0d83,
+ 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83,
+ 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83,
+ 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0daa,
+ 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa,
+ 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa,
+ 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa,
+ 0x0daa, 0x0daa, 0x0dda, 0x0dda, 0x0dda, 0x0dda, 0x0dda, 0x0dda,
+ // Entry 140 - 17F
+ 0x0dda, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8,
+ 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8,
+ 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0e0d,
+ 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d,
+ 0x0e0d, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
+ 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
+ 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
+ 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
+ // Entry 180 - 1BF
+ 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
+ 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
+ 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
+ 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22,
+ 0x0e22, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ // Entry 1C0 - 1FF
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37,
+ 0x0e37, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
+ // Entry 200 - 23F
+ 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
+ 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
+ 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
+ 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
+ 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46,
+ 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e67, 0x0e67, 0x0e67, 0x0e67,
+ 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67,
+ 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67,
+ // Entry 240 - 27F
+ 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67,
+ 0x0e67, 0x0e67, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ee2, 0x0f33,
+ 0x0f7e, 0x0fbd, 0x0ff0, 0x1020, 0x1086, 0x10cb, 0x10cb, 0x10cb,
+ 0x1101, 0x1128, 0x1128, 0x1149, 0x1194, 0x11df, 0x11df, 0x11df,
+ 0x120f, 0x1248,
+ },
+ },
+ { // ebu
+ "KĩakanKĩamhariKĩarabuKĩmbelarusiKĩbulgariaKĩbanglaKĩchekiKĩnjeremaniKĩng" +
+ "rikiKĩthunguKĩhispaniaKĩanjemiKĩfaransaKĩhausaKĩhindĩKĩhungariKĩindo" +
+ "nesiaKĩigboKĩitalianoKĩnjapaniKĩjavaKĩkambodiaKĩkoreaKĩmalesiaKĩburm" +
+ "aKĩnepaliKĩholanziKĩpunjabiKĩpolandiKĩrenoKĩromaniaKĩrusiKĩnyarwanda" +
+ "KĩsomaliKĩswidiKĩtamilKĩtailandiKĩturukiKĩukraniaKĩurduKĩvietinamuKĩ" +
+ "yorubaKĩchinaKĩzuluKĩembu",
+ []uint16{ // 277 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010,
+ 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0024, 0x002f,
+ 0x002f, 0x002f, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x004c, 0x004c, 0x004c, 0x004c, 0x0055, 0x005e, 0x005e, 0x0069,
+ 0x0069, 0x0069, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x007c,
+ 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0084,
+ 0x0084, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097,
+ // Entry 40 - 7F
+ 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5, 0x00bf, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb,
+ 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe,
+ 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0112,
+ // Entry 80 - BF
+ 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0123, 0x012a, 0x0136,
+ 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136,
+ 0x0136, 0x0136, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x016d,
+ 0x0174, 0x0174, 0x0174, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0189, 0x0189, 0x0191, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ // Entry C0 - FF
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ // Entry 100 - 13F
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x0198, 0x0198, 0x019f,
+ },
+ },
+ { // ee
+ "abkhaziagbeafrikaangbeblugbeamhariagbeArabiagbeassamegbeaymargbeazerbaij" +
+ "angbebelarusiagbebulgariagbebambaragbeBengaligbetibetagbebretongbebo" +
+ "sniagbekatalagbetsɛkgbewalesgbedenmarkgbeGermaniagbedivehgbedzongkha" +
+ "gbeEʋegbegrisigbeYevugbeesperantogbeSpanishgbeestoniagbebasqugbepers" +
+ "iagbefinlanɖgbefidzigbeFransegbeirelanɖgbegalatagbeguarangbegujarati" +
+ "hausagbehebrigbeHindigbekroatiagbehaitigbehungarigbearmeniagbeIndone" +
+ "siagbeigbogbeicelanɖgbeItaliagbeJapangbedzavangbegɔgiagbekazakhstang" +
+ "bekhmergbekannadagbeKoreagbekashmirgbekurdiagbekirghistangbelatinlak" +
+ "sembɔggbelingalalaogbelithuaniagbelatviagbemalagasegbemaorgbemakedon" +
+ "iagbemalayagbemongoliagbemarathiagbemalaygbemaltagbeburmagbedziehe n" +
+ "debelegbenepalgbeHollandgbenɔweigbe ninɔsknɔweigbe bokmålnyanjagbeor" +
+ "iyagbeossetiagbepundzabgbePolishgbepashtogbePortuguesegbekwetsuagber" +
+ "omanshgberundigberomaniagbeRussiagberuwandagbesanskrigbesindhgbedzie" +
+ "he samigbesangogbesinhalgbeslovakiagbesloveniagbesamoagbeshonagbesom" +
+ "aliagbealbaniagbeserbiagbeswatgbeanyiehe sothogbeswedengbeswahilitam" +
+ "ilgbetelegugbetadzikistangbeThailandgbetigrinyagbetɛkmengbetswanagbe" +
+ "tongagbeTurkishgbetsongagbetahitigbeuighurgbeukraingbeurdugbeuzbekis" +
+ "tangbevendagbevietnamgbewolofgbexhosagbeyorubagbeChinagbezulugbeaghe" +
+ "mgbeasagbebembagbebenagbebodogbeembugbeefigbefilipingbeswizerlanɖtɔw" +
+ "o ƒe germaniagbehawaigbecape verdegbelahndagbeluyiagbegbegbɔgblɔ sɔg" +
+ "bɔwodziehe sothogberombogberwagbesakagbekomorogbetetumgbetok pisigbe" +
+ "gbegbɔgblɔ manyawalsegbecantongbegbegbɔgblɔ manɔmeeGermaniagbe (Aust" +
+ "ria)Germaniagbe (Switzerland)Yevugbe (Australia)Yevugbe (Canada)Yevu" +
+ "gbe (Britain)Yevugbe (America)Spanishgbe (Latin America)Spanishgbe (" +
+ "Europe)Spanishgbe (Mexico)Fransegbe (Canada)Fransegbe (Switzerland)F" +
+ "lemishgbePortuguesegbe (Brazil)Portuguesegbe (Europe)serbo-croatiagb" +
+ "etsainagbeblema tsainagbe",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000b, 0x000b, 0x0016, 0x001c, 0x0026, 0x0026,
+ 0x002f, 0x0038, 0x0038, 0x0040, 0x004d, 0x004d, 0x0059, 0x0064,
+ 0x0064, 0x006e, 0x0078, 0x0081, 0x008a, 0x0093, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x00a4, 0x00a4, 0x00a4, 0x00ac, 0x00b6,
+ 0x00c1, 0x00c9, 0x00d4, 0x00db, 0x00e3, 0x00ea, 0x00f6, 0x0100,
+ 0x010a, 0x0112, 0x011b, 0x011b, 0x0126, 0x012e, 0x012e, 0x0137,
+ 0x0137, 0x0142, 0x0142, 0x014b, 0x0154, 0x015c, 0x015c, 0x0164,
+ 0x016c, 0x0174, 0x0174, 0x017e, 0x0186, 0x0190, 0x019a, 0x019a,
+ // Entry 40 - 7F
+ 0x019a, 0x01a6, 0x01a6, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b8,
+ 0x01c1, 0x01c1, 0x01c9, 0x01d2, 0x01db, 0x01db, 0x01db, 0x01db,
+ 0x01e8, 0x01e8, 0x01f0, 0x01fa, 0x0202, 0x0202, 0x020c, 0x0215,
+ 0x0215, 0x0215, 0x0222, 0x0227, 0x0234, 0x0234, 0x0234, 0x023b,
+ 0x0241, 0x024d, 0x024d, 0x0256, 0x0261, 0x0261, 0x0268, 0x0274,
+ 0x027d, 0x0288, 0x0293, 0x029b, 0x02a3, 0x02ab, 0x02ab, 0x02bc,
+ 0x02c4, 0x02c4, 0x02ce, 0x02df, 0x02f0, 0x02f0, 0x02f0, 0x02f9,
+ 0x02f9, 0x02f9, 0x02f9, 0x0301, 0x030b, 0x0315, 0x0315, 0x031e,
+ // Entry 80 - BF
+ 0x0327, 0x0334, 0x033e, 0x0348, 0x0350, 0x035a, 0x0363, 0x036d,
+ 0x0377, 0x0377, 0x037f, 0x038d, 0x0395, 0x039e, 0x03a9, 0x03b4,
+ 0x03bc, 0x03c4, 0x03ce, 0x03d8, 0x03e1, 0x03e8, 0x03f8, 0x03f8,
+ 0x0401, 0x0408, 0x0410, 0x0419, 0x0427, 0x0432, 0x043d, 0x0447,
+ 0x0450, 0x0458, 0x0462, 0x046b, 0x046b, 0x0474, 0x047d, 0x0486,
+ 0x048d, 0x049a, 0x04a2, 0x04ac, 0x04ac, 0x04ac, 0x04b4, 0x04bc,
+ 0x04bc, 0x04c5, 0x04c5, 0x04cd, 0x04d4, 0x04d4, 0x04d4, 0x04d4,
+ 0x04d4, 0x04d4, 0x04d4, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc,
+ // Entry C0 - FF
+ 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc,
+ 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e2, 0x04e2, 0x04e2, 0x04e2,
+ 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2,
+ 0x04e2, 0x04ea, 0x04ea, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1,
+ 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1,
+ 0x04f1, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
+ 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
+ 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
+ // Entry 100 - 13F
+ 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
+ 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8,
+ 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04ff, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x050f,
+ 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f,
+ 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f,
+ 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f,
+ 0x050f, 0x050f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f,
+ // Entry 140 - 17F
+ 0x052f, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537,
+ 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537,
+ 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537,
+ 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0544,
+ 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544,
+ 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544,
+ 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544,
+ 0x0544, 0x0544, 0x0544, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d,
+ // Entry 180 - 1BF
+ 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d,
+ 0x054d, 0x054d, 0x054d, 0x054d, 0x0555, 0x0555, 0x0555, 0x0555,
+ 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555,
+ 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555,
+ 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x056b,
+ 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b,
+ 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b,
+ 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x057a, 0x057a, 0x057a,
+ // Entry 1C0 - 1FF
+ 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a,
+ 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a,
+ 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a,
+ 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x0582, 0x0582, 0x0582,
+ 0x0582, 0x0582, 0x0582, 0x0588, 0x0588, 0x058f, 0x058f, 0x058f,
+ 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f,
+ 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f,
+ 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f,
+ // Entry 200 - 23F
+ 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f,
+ 0x058f, 0x058f, 0x058f, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598,
+ 0x0598, 0x0598, 0x0598, 0x0598, 0x05a0, 0x05a0, 0x05a0, 0x05a0,
+ 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05ab, 0x05ab,
+ 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab,
+ 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05bd, 0x05bd, 0x05bd, 0x05bd,
+ 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05c5, 0x05c5, 0x05c5,
+ 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5,
+ // Entry 240 - 27F
+ 0x05c5, 0x05c5, 0x05c5, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce,
+ 0x05ce, 0x05ce, 0x05e3, 0x05e3, 0x05e3, 0x05e3, 0x05f8, 0x0611,
+ 0x0624, 0x0634, 0x0645, 0x0656, 0x0670, 0x0683, 0x0696, 0x0696,
+ 0x06a8, 0x06bf, 0x06bf, 0x06c9, 0x06df, 0x06f5, 0x06f5, 0x0705,
+ 0x070e, 0x071d,
+ },
+ },
+ { // el
+ elLangStr,
+ elLangIdx,
+ },
+ { // en
+ enLangStr,
+ enLangIdx,
+ },
+ { // en-AU
+ "BamumUnited States EnglishMoldovan",
+ []uint16{ // 607 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ // Entry 100 - 13F
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ // Entry 140 - 17F
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ // Entry 180 - 1BF
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ // Entry 1C0 - 1FF
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ // Entry 200 - 23F
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ // Entry 240 - 27F
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
+ 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0022,
+ },
+ },
+ { // en-GB
+ enGBLangStr,
+ enGBLangIdx,
+ },
+ { // eo
+ "afaraabĥazaafrikansatwamharaarabaasamaajmaraazerbajĝanabaŝkirabelorusabu" +
+ "lgarabislamobengalatibetabretonabosniakatalunakorsikaĉeĥakimradanage" +
+ "rmanamahladzonkogrekaanglaesperantohispanaestonaeŭskapersafinnafiĝia" +
+ "feroafrancafrisairlandagaelagalegagvaraniaguĝaratahaŭsahebreahindakr" +
+ "oatahaitia kreolahungaraarmenainterlingvaoindoneziaokcidentaloeskima" +
+ "islandaitalainuitajapanajavakartvelakazaĥagronlandakmerakanarakoreak" +
+ "aŝmirakurdakirgizalatinoluksemburgalingalalaŭalitovalatvamalagasamao" +
+ "riamakedonamalajalamamongolamaratamalajamaltabirmanauranepalanederla" +
+ "ndanovnorvegadannorvegaokcitanaoromaorijopanĝabapolapaŝtoaportugalak" +
+ "eĉuaromanĉaburundarumanarusaruandasanskritosindasangoasinhalaslovaka" +
+ "slovenasamoaŝonasomalaalbanaserbasvaziasotasundasvedasvahilatamilate" +
+ "luguataĝikatajatigrajaturkmenacvanatongaaturkacongatataraujguraukrai" +
+ "naurduouzbekavjetnamavolapukovolofaksosajidajorubaĝuangaĉinazuluaibi" +
+ "bioefikafilipinahavajaklingonanekonata lingvonelingvaĵobrazilportuga" +
+ "laeŭropportugalaserbo-Kroataĉina simpligitaĉina tradicia",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x000c, 0x000c, 0x0015, 0x0017, 0x001d, 0x001d,
+ 0x0022, 0x0027, 0x0027, 0x002d, 0x0039, 0x0041, 0x0049, 0x0050,
+ 0x0057, 0x0057, 0x005e, 0x0064, 0x006b, 0x0071, 0x0079, 0x0079,
+ 0x0079, 0x0080, 0x0080, 0x0086, 0x0086, 0x0086, 0x008b, 0x008f,
+ 0x0096, 0x009b, 0x00a1, 0x00a1, 0x00a6, 0x00ab, 0x00b4, 0x00bb,
+ 0x00c1, 0x00c7, 0x00cc, 0x00cc, 0x00d1, 0x00d7, 0x00dc, 0x00e2,
+ 0x00e7, 0x00ee, 0x00f3, 0x00f9, 0x0101, 0x010a, 0x010a, 0x0110,
+ 0x0116, 0x011b, 0x011b, 0x0121, 0x012e, 0x0135, 0x013b, 0x013b,
+ // Entry 40 - 7F
+ 0x0147, 0x0150, 0x015b, 0x015b, 0x015b, 0x0161, 0x0161, 0x0168,
+ 0x016d, 0x0173, 0x0179, 0x017d, 0x0185, 0x0185, 0x0185, 0x0185,
+ 0x018c, 0x0195, 0x019a, 0x01a0, 0x01a5, 0x01a5, 0x01ad, 0x01b2,
+ 0x01b2, 0x01b2, 0x01b9, 0x01bf, 0x01ca, 0x01ca, 0x01ca, 0x01d1,
+ 0x01d6, 0x01dc, 0x01dc, 0x01e1, 0x01e9, 0x01e9, 0x01ef, 0x01f7,
+ 0x0201, 0x0208, 0x020e, 0x0214, 0x0219, 0x021e, 0x0223, 0x0223,
+ 0x0229, 0x0229, 0x0233, 0x023d, 0x0247, 0x0247, 0x0247, 0x0247,
+ 0x024f, 0x024f, 0x0254, 0x0259, 0x0259, 0x0261, 0x0261, 0x0265,
+ // Entry 80 - BF
+ 0x026c, 0x0275, 0x027b, 0x0283, 0x028a, 0x0290, 0x0294, 0x029a,
+ 0x02a3, 0x02a3, 0x02a8, 0x02a8, 0x02ae, 0x02b5, 0x02bc, 0x02c3,
+ 0x02c8, 0x02cd, 0x02d3, 0x02d9, 0x02de, 0x02e4, 0x02e8, 0x02ed,
+ 0x02f2, 0x02f9, 0x02ff, 0x0306, 0x030d, 0x0311, 0x0318, 0x0320,
+ 0x0325, 0x032b, 0x0330, 0x0335, 0x033b, 0x033b, 0x0341, 0x0348,
+ 0x034d, 0x0353, 0x0353, 0x035b, 0x0363, 0x0363, 0x0369, 0x036e,
+ 0x0372, 0x0378, 0x037f, 0x0384, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ // Entry C0 - FF
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ // Entry 100 - 13F
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0394, 0x0394, 0x0394,
+ 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x039c,
+ 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
+ 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
+ 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
+ 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
+ // Entry 140 - 17F
+ 0x039c, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ // Entry 180 - 1BF
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ // Entry 1C0 - 1FF
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ // Entry 200 - 23F
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2,
+ 0x03a2, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa,
+ 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa,
+ 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03b9, 0x03b9, 0x03b9, 0x03b9,
+ 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9,
+ 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9,
+ // Entry 240 - 27F
+ 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9,
+ 0x03b9, 0x03b9, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4,
+ 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4,
+ 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03d3, 0x03e2, 0x03e2, 0x03ee,
+ 0x03fe, 0x040c,
+ },
+ },
+ { // es
+ esLangStr,
+ esLangIdx,
+ },
+ { // es-419
+ es419LangStr,
+ es419LangIdx,
+ },
+ {}, // es-CL
+ { // es-MX
+ "bashkir",
+ []uint16{ // 14 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007,
+ },
+ },
+ { // et
+ etLangStr,
+ etLangIdx,
+ },
+ { // eu
+ "abkhazeraafrikaansaakaneraamhareraarabieraassameraaimaraazerbaijanerabas" +
+ "hkirrerabielorrusierabulgarierabambarerabengaleratibeterabretoierabo" +
+ "snierakatalanakorsikeratxekieragaleseradanieraalemanadivehieradzongk" +
+ "haeweeragrezieraingelesaesperantoaespainieraestonieraeuskarapersiera" +
+ "finlandierafijierafaroerafrantsesafrisieragaelikoaeskoziako gaelikoa" +
+ "galizieraguaranieragujarateramanxerahausahebreerahindiakroazierahait" +
+ "ierahungarieraarmenieraInterlinguaindonesierainterlingueigboerasichu" +
+ "an yiaislandieraitalierainuiterajaponierajaverageorgieraKikongoakiku" +
+ "yuerakazakherakalaallisuterakhemererakannaderakoreerakashmirerakurdu" +
+ "erakornubierakirgizeralatinaluxenburgeraganderalingalalaoseralituani" +
+ "eraluba-katangeraletonieramalagasyeramaorieramazedonieramalayalamera" +
+ "mongolieramaratheramalaysieramalteraburmatarraiparraldeko ndebeleera" +
+ "nepaleranederlanderanynorsk norvegierabokmala (Norvegia)nyanjaOkzita" +
+ "nieraoromoeraoriyeraosetierapunjaberapolonierapaxtueraportugesaquech" +
+ "ueraerromantxerarundieraerrumanieraerrusierakinyaruandasanskritoasin" +
+ "dhiaiparraldeko samierasangoerasinhalaeslovakieraeslovenierasamoeras" +
+ "honerasomalieraalbanieraserbieraswatierahegoaldeko sothoerasundanera" +
+ "suedieraswahilitamileratelugueratajikistanerathailandieratigriñeratu" +
+ "rkmenieratswaneratongeraturkieratsongeratatareratahitierauigurrerauk" +
+ "raineraurduauzbekeravenderavietnamerawoloferaxhoseraJiddishayorubera" +
+ "txinerazulueraAcholieraaghemeramaputxeaasuabemberabenerabodoerachige" +
+ "ratxerokierasoranierataiterazarmerabehe-sorabieradualerafonyi jolera" +
+ "embuaefikeratagalogaGagagauzeraalemana (Suitza)gusiierahawaiieragoi-" +
+ "sorabierangombamachamerakabilerakamberamakonderaCabo Verdeko kreolak" +
+ "oyra chiinierakalenjinerakomi-permyakerakonkanierashambalerabafieral" +
+ "angieralakoteraLozieraLuba-lulualuoeraluhyeramasaieramerueraMauritan" +
+ "iako kreoleramakhuwa-meettoerameteramohawkeramudangerahizkuntza anit" +
+ "zaknamerakwasieran’koerapedieranuereraankolerak’iche’raromboerarwaer" +
+ "asamburuerasanguerasenerakoyraboro senniatachelhitahegoaldeko samier" +
+ "aLule samieraInari samieraSkolt samieraKongoko swahiliatesoeratetuma" +
+ "Klingoneratok pisinaTumbukeratasawaqaMaroko erdialdeko tamazightahiz" +
+ "kuntza ezezagunavaieravunjoasogeratamazight estandarraez dago eduki " +
+ "linguistikorikarabiera moderno estandarraaleman garaia (Suitza)ingel" +
+ "esa (AEB)espainiera (Europa)flandrieraportugesa (Europa)serbokroazie" +
+ "ratxinera soilduatxinera tradizionala",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x001a, 0x0022, 0x0022,
+ 0x002a, 0x0032, 0x0032, 0x0038, 0x0045, 0x0050, 0x005d, 0x0067,
+ 0x0067, 0x0070, 0x0079, 0x0081, 0x008a, 0x0092, 0x009a, 0x009a,
+ 0x009a, 0x00a3, 0x00a3, 0x00ab, 0x00ab, 0x00ab, 0x00b3, 0x00ba,
+ 0x00c1, 0x00ca, 0x00d2, 0x00d8, 0x00e0, 0x00e8, 0x00f2, 0x00fc,
+ 0x0105, 0x010c, 0x0114, 0x0114, 0x011f, 0x0126, 0x012d, 0x0136,
+ 0x013e, 0x0146, 0x0158, 0x0161, 0x016b, 0x0175, 0x017c, 0x0181,
+ 0x0189, 0x018f, 0x018f, 0x0198, 0x01a0, 0x01aa, 0x01b3, 0x01b3,
+ // Entry 40 - 7F
+ 0x01be, 0x01c9, 0x01d4, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01f0,
+ 0x01f8, 0x0200, 0x0209, 0x020f, 0x0218, 0x0220, 0x0229, 0x0229,
+ 0x0232, 0x0240, 0x0249, 0x0252, 0x0259, 0x0259, 0x0263, 0x026b,
+ 0x026b, 0x0275, 0x027e, 0x0284, 0x0290, 0x0297, 0x0297, 0x029e,
+ 0x02a5, 0x02af, 0x02bd, 0x02c6, 0x02d1, 0x02d1, 0x02d9, 0x02e4,
+ 0x02f0, 0x02fa, 0x0303, 0x030d, 0x0314, 0x031e, 0x031e, 0x0334,
+ 0x033c, 0x033c, 0x0348, 0x035a, 0x036c, 0x036c, 0x036c, 0x0372,
+ 0x037d, 0x037d, 0x0385, 0x038c, 0x0394, 0x039d, 0x039d, 0x03a6,
+ // Entry 80 - BF
+ 0x03ae, 0x03b7, 0x03c0, 0x03cc, 0x03d4, 0x03df, 0x03e8, 0x03f3,
+ 0x03fd, 0x03fd, 0x0404, 0x0417, 0x041f, 0x0426, 0x0431, 0x043c,
+ 0x0443, 0x044a, 0x0453, 0x045c, 0x0464, 0x046c, 0x047f, 0x0488,
+ 0x0490, 0x0497, 0x049f, 0x04a8, 0x04b5, 0x04c1, 0x04cb, 0x04d6,
+ 0x04de, 0x04e5, 0x04ed, 0x04f5, 0x04fd, 0x0506, 0x050f, 0x0518,
+ 0x051d, 0x0525, 0x052c, 0x0536, 0x0536, 0x0536, 0x053e, 0x0545,
+ 0x054d, 0x0555, 0x0555, 0x055c, 0x0563, 0x0563, 0x056c, 0x056c,
+ 0x056c, 0x056c, 0x056c, 0x0574, 0x0574, 0x0574, 0x0574, 0x0574,
+ // Entry C0 - FF
+ 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, 0x057c, 0x057c, 0x057c,
+ 0x057c, 0x057c, 0x057c, 0x057c, 0x0580, 0x0580, 0x0580, 0x0580,
+ 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0580,
+ 0x0580, 0x0587, 0x0587, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d,
+ 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d, 0x058d,
+ 0x058d, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594,
+ 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x059b, 0x059b, 0x059b,
+ 0x059b, 0x059b, 0x059b, 0x059b, 0x059b, 0x05a5, 0x05a5, 0x05ae,
+ // Entry 100 - 13F
+ 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05b5, 0x05b5,
+ 0x05b5, 0x05b5, 0x05b5, 0x05bc, 0x05bc, 0x05ca, 0x05ca, 0x05d1,
+ 0x05d1, 0x05dd, 0x05dd, 0x05dd, 0x05e2, 0x05e9, 0x05e9, 0x05e9,
+ 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05f1,
+ 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1, 0x05f1,
+ 0x05f1, 0x05f3, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc,
+ 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x05fc,
+ 0x05fc, 0x05fc, 0x060c, 0x060c, 0x060c, 0x0614, 0x0614, 0x0614,
+ // Entry 140 - 17F
+ 0x0614, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x062a, 0x062a,
+ 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a, 0x062a,
+ 0x0630, 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x0641, 0x0641,
+ 0x0641, 0x0648, 0x0648, 0x0648, 0x0648, 0x0648, 0x0651, 0x0664,
+ 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0673, 0x0673, 0x0673,
+ 0x0673, 0x067e, 0x067e, 0x068d, 0x0697, 0x0697, 0x0697, 0x0697,
+ 0x0697, 0x0697, 0x0697, 0x0697, 0x06a1, 0x06a8, 0x06a8, 0x06a8,
+ 0x06a8, 0x06a8, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0,
+ // Entry 180 - 1BF
+ 0x06b0, 0x06b8, 0x06b8, 0x06b8, 0x06bf, 0x06bf, 0x06bf, 0x06c9,
+ 0x06c9, 0x06c9, 0x06cf, 0x06cf, 0x06d6, 0x06d6, 0x06d6, 0x06d6,
+ 0x06d6, 0x06d6, 0x06d6, 0x06d6, 0x06d6, 0x06de, 0x06de, 0x06de,
+ 0x06de, 0x06de, 0x06e5, 0x06fa, 0x06fa, 0x070b, 0x0711, 0x0711,
+ 0x0711, 0x0711, 0x0711, 0x071a, 0x071a, 0x071a, 0x0723, 0x0734,
+ 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734, 0x0734,
+ 0x0734, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x0742,
+ 0x0742, 0x0742, 0x0742, 0x0742, 0x074b, 0x0752, 0x0759, 0x0759,
+ // Entry 1C0 - 1FF
+ 0x0759, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761,
+ 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761,
+ 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x0761, 0x076e, 0x076e,
+ 0x076e, 0x076e, 0x076e, 0x076e, 0x076e, 0x0776, 0x0776, 0x0776,
+ 0x0776, 0x0776, 0x0776, 0x077c, 0x077c, 0x077c, 0x077c, 0x0786,
+ 0x0786, 0x0786, 0x0786, 0x0786, 0x078e, 0x078e, 0x078e, 0x078e,
+ 0x078e, 0x078e, 0x0794, 0x0794, 0x0794, 0x07a4, 0x07a4, 0x07a4,
+ 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07c0, 0x07cc,
+ // Entry 200 - 23F
+ 0x07d9, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07e6,
+ 0x07e6, 0x07e6, 0x07e6, 0x07e6, 0x07f6, 0x07f6, 0x07f6, 0x07f6,
+ 0x07f6, 0x07f6, 0x07fd, 0x07fd, 0x0803, 0x0803, 0x0803, 0x0803,
+ 0x0803, 0x080d, 0x080d, 0x080d, 0x080d, 0x080d, 0x0817, 0x0817,
+ 0x0817, 0x0817, 0x0817, 0x0817, 0x0820, 0x0820, 0x0828, 0x0828,
+ 0x0844, 0x0844, 0x0844, 0x0844, 0x0857, 0x085d, 0x085d, 0x085d,
+ 0x085d, 0x085d, 0x085d, 0x085d, 0x0863, 0x0863, 0x0863, 0x0863,
+ 0x0863, 0x0863, 0x0863, 0x0863, 0x0863, 0x0869, 0x0869, 0x0869,
+ // Entry 240 - 27F
+ 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0869,
+ 0x087d, 0x087d, 0x0899, 0x0899, 0x08b4, 0x08b4, 0x08b4, 0x08ca,
+ 0x08ca, 0x08ca, 0x08ca, 0x08d8, 0x08d8, 0x08eb, 0x08eb, 0x08eb,
+ 0x08eb, 0x08eb, 0x08eb, 0x08f5, 0x08f5, 0x0907, 0x0907, 0x0915,
+ 0x0924, 0x0938,
+ },
+ },
+ { // ewo
+ "Ǹkɔ́bɔ akánǸkɔ́bɔ amáriaǸkɔ́bɔ arábiaǸkɔ́bɔ belarúsianǸkɔ́bɔ buləgárianǸ" +
+ "kɔ́bɔ bɛngalíǸkɔ́bɔ tsɛ́gǸkɔ́bɔ ndzámanǸkɔ́bɔ gəlɛ́gǸkɔ́bɔ éngəlísǹk" +
+ "ɔ́bɔ kpənyáǹkɔ́bɔ fɛ́rəsianǸkɔ́bɔ fulɛnsíǸkɔ́bɔ aúsáǸkɔ́bɔ hindíǸkɔ" +
+ "́bɔ ungáríanǸkɔ́bɔ ɛndonésianǸkɔ́bɔ ibóǸkɔ́bɔ etáliɛnǸkɔ́bɔ hapɔ́nǸ" +
+ "kɔ́bɔ havanísǸkɔ́bɔ kəmɛ́rǸkɔ́bɔ koréanǸkɔ́bɔ malɛ́sianǸkɔ́bɔ birəmá" +
+ "nǹkɔ́bɔ nefálianǸkɔ́bɔ nɛrəlándíaǹkɔ́bɔ funəhábiaǹkɔ́bɔ fólisǹkɔ́bɔ " +
+ "fɔtugɛ́sńkɔ́bɔ románíaǹkɔ́bɔ rúsianǹkɔ́bɔ ruwandáǹkɔ́bɔ somáliaǹkɔ́b" +
+ "ɔ suwɛ́dǹkɔ́bɔ tamílǹkɔ́bɔ táilanǹkɔ́bɔ túrəkiǹkɔ́bɔ ukeléniaǹkɔ́bɔ" +
+ " urudúǹkɔ́bɔ hiɛdənámǹkɔ́bɔ yorúbaǸkɔ́bɔ tsainísǹkɔ́bɔ zulúewondo",
+ []uint16{ // 285 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0022, 0x0022,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x004a, 0x0061,
+ 0x0061, 0x0061, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x00ae, 0x00c3, 0x00c3, 0x00d6,
+ 0x00d6, 0x00d6, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x0101,
+ 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0112,
+ 0x0112, 0x0123, 0x0123, 0x0123, 0x0123, 0x0138, 0x0138, 0x0138,
+ // Entry 40 - 7F
+ 0x0138, 0x014f, 0x014f, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e,
+ 0x0172, 0x0172, 0x0185, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198,
+ 0x0198, 0x0198, 0x01ac, 0x01ac, 0x01be, 0x01be, 0x01be, 0x01be,
+ 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be,
+ 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be,
+ 0x01be, 0x01be, 0x01be, 0x01d4, 0x01d4, 0x01e8, 0x01e8, 0x01e8,
+ 0x01fc, 0x01fc, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
+ 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x022b, 0x022b, 0x023c,
+ // Entry 80 - BF
+ 0x023c, 0x0252, 0x0252, 0x0252, 0x0252, 0x0266, 0x0278, 0x028b,
+ 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b,
+ 0x028b, 0x028b, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e,
+ 0x02b1, 0x02b1, 0x02c2, 0x02c2, 0x02c2, 0x02d4, 0x02d4, 0x02d4,
+ 0x02d4, 0x02d4, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02fb,
+ 0x030c, 0x030c, 0x030c, 0x0322, 0x0322, 0x0322, 0x0322, 0x0322,
+ 0x0322, 0x0334, 0x0334, 0x0347, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ // Entry C0 - FF
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ // Entry 100 - 13F
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357,
+ 0x0357, 0x0357, 0x0357, 0x0357, 0x035d,
+ },
+ },
+ { // fa
+ faLangStr,
+ faLangIdx,
+ },
+ { // fa-AF
+ "هسپانویفنلندیآیرلندیکروشیاییاندونیزیاییآیسلندیایتالویجاپانیکوریاییقرغزیم" +
+ "غلینیپالیهالندینارویژیپولندیپرتگالیسویدنیتاجکی",
+ []uint16{ // 157 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x001a, 0x001a, 0x001a, 0x001a,
+ 0x001a, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ // Entry 40 - 7F
+ 0x0038, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x005c,
+ 0x006a, 0x006a, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076,
+ 0x0076, 0x0076, 0x0076, 0x0076, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0084, 0x0084, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x00a2, 0x00a2, 0x00ae, 0x00ae, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
+ 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c8,
+ // Entry 80 - BF
+ 0x00c8, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
+ 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
+ 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
+ 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00ec,
+ },
+ },
+ { // ff
+ "AkaanAmarikAarabeereBelaruuseBulgariireBengaliCekkereDocceereGerkeEngele" +
+ "ereEspañolPerseerePulaarFarayseereHawsaŋkooreHinndiHongariireEndones" +
+ "iireIgibooreItaliyeereSaponeereSawaneereKemeereKoreereMalayeereBurme" +
+ "eseNepaaleereDacceerePunjabeerePoloneerePurtugeereRomaneereRiisRuwaa" +
+ "nndeereSomaliiSweedeereTamilTaayTurkeereUkereneereUrduWiyetnameereYo" +
+ "rrubaaSinuwaareSuluŋkoore",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000b, 0x000b,
+ 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001d, 0x0027,
+ 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x003d, 0x003d, 0x003d, 0x003d, 0x0042, 0x004b, 0x004b, 0x0053,
+ 0x0053, 0x0053, 0x005b, 0x0061, 0x0061, 0x0061, 0x0061, 0x006b,
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0077,
+ 0x0077, 0x007d, 0x007d, 0x007d, 0x007d, 0x0087, 0x0087, 0x0087,
+ // Entry 40 - 7F
+ 0x0087, 0x0092, 0x0092, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x00a4, 0x00a4, 0x00ad, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6,
+ 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00c4, 0x00c4, 0x00c4, 0x00c4,
+ 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4,
+ 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4,
+ 0x00c4, 0x00c4, 0x00c4, 0x00cd, 0x00cd, 0x00d5, 0x00d5, 0x00d5,
+ 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
+ 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f1, 0x00f1, 0x00fa,
+ // Entry 80 - BF
+ 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104, 0x010d, 0x0111, 0x011d,
+ 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d,
+ 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124,
+ 0x012d, 0x012d, 0x0132, 0x0132, 0x0132, 0x0136, 0x0136, 0x0136,
+ 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x0148,
+ 0x014c, 0x014c, 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
+ 0x0158, 0x0160, 0x0160, 0x0169, 0x0174,
+ },
+ },
+ { // fi
+ fiLangStr,
+ fiLangIdx,
+ },
+ { // fil
+ filLangStr,
+ filLangIdx,
+ },
+ { // fo
+ "abkhasisktafrikaansakanamharisktarabisktassamesisktaymaraaserbajdsjanskt" +
+ "bashkirhvitarussisktbulgarsktbambarabengalskttibetsktbretonsktbosnis" +
+ "ktkatalanitjetjensktkorsikansktkekkisktchuvashwalisisktdanskttýsktdi" +
+ "vehidzongkhaewegriksktensktesperantospansktestisktbaskisktpersisktfi" +
+ "nsktfijimálføroysktfransktvestur frísisktírsktskotskt gælisktgalisis" +
+ "ktguaranigujaratimanxhausahebraiskthindikroatiskthaitisktungarsktarm" +
+ "ensktinterlinguaindonesisktinterlingueigbosichuan yiíslendsktitalskt" +
+ "inuktitutjapansktjavansktgeorgisktkikuyukazakhkalaallisutkhmerkannad" +
+ "akoreansktkashmirikurdisktcornisktkyrgyzlatínluksemborgsktgandalinga" +
+ "lalaosktlitavisktluba-katangalettisktmalagassisktmaorimakedónsktmala" +
+ "yalammongolsktmarathimalaiisktmaltisktburmesisktnorður ndebelenepals" +
+ "kthálendsktnýnorsktnorskt bókmálnyanjaoccitanoromooriyaossetisktpunj" +
+ "abipólsktpashtoportugiskisktquechuaretoromansktrundirumensktrussiskt" +
+ "kinyarwandasanskritsindhinorður sámisktsangosingalesisktslovakisktsl" +
+ "ovensktsamoisktshonasomalisktalbansktserbisktswatisktsesothosundanes" +
+ "isktsvensktswahilitamilskttelugutajiktailendskttigrinyaturkmenskttsw" +
+ "anatongansktturkiskttsongatatartahitisktuyghurukrainskturduusbekiskt" +
+ "vendavjetnamesisktwolofxhosajiddisktyorubakinesisktsuluaghemmapuchea" +
+ "subembabenavestur balochibodobakossichigacherokeemiðkurdiskttaitasar" +
+ "malágt sorbiandualajola-fonyiembuefikfilipinisktgagauztýskt (Sveis)g" +
+ "usiihawaiiansktovara sorbianngombamachamekabylekambamakondegrønhøvda" +
+ "oyggjarsktkoyra chiinikalenjinkomi-permyakkonkanishambalabafialangil" +
+ "ahndalakotanorður luriluoluyiamasaimerumorisyenmakhuwa-meettometaʼmo" +
+ "hawkmundangmazanderaninamalágt týsktkwasionʼkonuernyankolekʼicheʼrom" +
+ "borwasamburusangusuður kurdisktsenakoyraboro sennitachelhitsuður sám" +
+ "isktlule sámisktinari samiskolt sámisktshimaorékongo svahilitesotetu" +
+ "mklingonskttok pisintasawaqmiðatlasfjøll tamazightókent málvaivunjow" +
+ "arlpirisogakantonesísktvanligt marokanskt tamazighteinki málsligt in" +
+ "nihaldhøgt týskt (Sveis)lágt saksisktflamsktportugiskiskt (Brasilia)" +
+ "portugiskiskt (Evropa)moldavisktserbokroatiskteinkult kinesisktvanli" +
+ "gt kinesiskt",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000a, 0x000a, 0x0013, 0x0017, 0x0020, 0x0020,
+ 0x0028, 0x0033, 0x0033, 0x0039, 0x0048, 0x004f, 0x005c, 0x0065,
+ 0x0065, 0x006c, 0x0075, 0x007d, 0x0086, 0x008e, 0x0096, 0x00a0,
+ 0x00a0, 0x00ab, 0x00ab, 0x00b3, 0x00b3, 0x00ba, 0x00c3, 0x00c9,
+ 0x00cf, 0x00d5, 0x00dd, 0x00e0, 0x00e7, 0x00ec, 0x00f5, 0x00fc,
+ 0x0103, 0x010b, 0x0113, 0x0113, 0x0119, 0x0121, 0x012a, 0x0131,
+ 0x0141, 0x0147, 0x0157, 0x0160, 0x0167, 0x016f, 0x0173, 0x0178,
+ 0x0181, 0x0186, 0x0186, 0x018f, 0x0197, 0x019f, 0x01a7, 0x01a7,
+ // Entry 40 - 7F
+ 0x01b2, 0x01bd, 0x01c8, 0x01cc, 0x01d6, 0x01d6, 0x01d6, 0x01e0,
+ 0x01e7, 0x01f0, 0x01f8, 0x0200, 0x0209, 0x0209, 0x020f, 0x020f,
+ 0x0215, 0x0220, 0x0225, 0x022c, 0x0235, 0x0235, 0x023d, 0x0245,
+ 0x0245, 0x024d, 0x0253, 0x0259, 0x0266, 0x026b, 0x026b, 0x0272,
+ 0x0278, 0x0281, 0x028d, 0x0295, 0x02a1, 0x02a1, 0x02a6, 0x02b1,
+ 0x02ba, 0x02c3, 0x02ca, 0x02d3, 0x02db, 0x02e5, 0x02e5, 0x02f4,
+ 0x02fc, 0x02fc, 0x0306, 0x030f, 0x031e, 0x031e, 0x031e, 0x0324,
+ 0x032b, 0x032b, 0x0330, 0x0335, 0x033e, 0x0345, 0x0345, 0x034c,
+ // Entry 80 - BF
+ 0x0352, 0x035f, 0x0366, 0x0372, 0x0377, 0x037f, 0x0387, 0x0392,
+ 0x039a, 0x039a, 0x03a0, 0x03b0, 0x03b5, 0x03c1, 0x03cb, 0x03d4,
+ 0x03dc, 0x03e1, 0x03ea, 0x03f2, 0x03fa, 0x0402, 0x0409, 0x0415,
+ 0x041c, 0x0423, 0x042b, 0x0431, 0x0436, 0x0440, 0x0448, 0x0452,
+ 0x0458, 0x0461, 0x0469, 0x046f, 0x0474, 0x047d, 0x0483, 0x048c,
+ 0x0490, 0x0499, 0x049e, 0x04ab, 0x04ab, 0x04ab, 0x04b0, 0x04b5,
+ 0x04bd, 0x04c3, 0x04c3, 0x04cc, 0x04d0, 0x04d0, 0x04d0, 0x04d0,
+ 0x04d0, 0x04d0, 0x04d0, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5,
+ // Entry C0 - FF
+ 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04dc, 0x04dc, 0x04dc,
+ 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04df, 0x04df, 0x04df, 0x04df,
+ 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df, 0x04df,
+ 0x04df, 0x04e4, 0x04e4, 0x04e8, 0x04e8, 0x04e8, 0x04f6, 0x04f6,
+ 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6,
+ 0x04f6, 0x04fa, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501,
+ 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0506, 0x0506, 0x0506,
+ 0x0506, 0x0506, 0x0506, 0x0506, 0x0506, 0x050e, 0x050e, 0x051a,
+ // Entry 100 - 13F
+ 0x051a, 0x051a, 0x051a, 0x051a, 0x051a, 0x051a, 0x051f, 0x051f,
+ 0x051f, 0x051f, 0x051f, 0x0524, 0x0524, 0x0531, 0x0531, 0x0536,
+ 0x0536, 0x0540, 0x0540, 0x0540, 0x0544, 0x0548, 0x0548, 0x0548,
+ 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0548, 0x0553,
+ 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553, 0x0553,
+ 0x0553, 0x0553, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559,
+ 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559, 0x0559,
+ 0x0559, 0x0559, 0x0567, 0x0567, 0x0567, 0x056c, 0x056c, 0x056c,
+ // Entry 140 - 17F
+ 0x056c, 0x0577, 0x0577, 0x0577, 0x0577, 0x0577, 0x0584, 0x0584,
+ 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584, 0x0584,
+ 0x058a, 0x0591, 0x0591, 0x0591, 0x0591, 0x0591, 0x0597, 0x0597,
+ 0x0597, 0x059c, 0x059c, 0x059c, 0x059c, 0x059c, 0x05a3, 0x05b8,
+ 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05c4, 0x05c4, 0x05c4,
+ 0x05c4, 0x05cc, 0x05cc, 0x05d8, 0x05df, 0x05df, 0x05df, 0x05df,
+ 0x05df, 0x05df, 0x05df, 0x05df, 0x05e7, 0x05ec, 0x05ec, 0x05ec,
+ 0x05ec, 0x05ec, 0x05f1, 0x05f7, 0x05f7, 0x05f7, 0x05f7, 0x05f7,
+ // Entry 180 - 1BF
+ 0x05f7, 0x05fd, 0x05fd, 0x05fd, 0x05fd, 0x0609, 0x0609, 0x0609,
+ 0x0609, 0x0609, 0x060c, 0x060c, 0x0611, 0x0611, 0x0611, 0x0611,
+ 0x0611, 0x0611, 0x0611, 0x0611, 0x0611, 0x0616, 0x0616, 0x0616,
+ 0x0616, 0x0616, 0x061a, 0x0622, 0x0622, 0x0630, 0x0636, 0x0636,
+ 0x0636, 0x0636, 0x0636, 0x063c, 0x063c, 0x063c, 0x0643, 0x0643,
+ 0x0643, 0x0643, 0x0643, 0x0643, 0x0643, 0x0643, 0x064e, 0x064e,
+ 0x064e, 0x0652, 0x065e, 0x065e, 0x065e, 0x065e, 0x065e, 0x0664,
+ 0x0664, 0x0664, 0x0664, 0x0664, 0x0669, 0x0669, 0x066d, 0x066d,
+ // Entry 1C0 - 1FF
+ 0x066d, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675,
+ 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675,
+ 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x0675, 0x067e, 0x067e,
+ 0x067e, 0x067e, 0x067e, 0x067e, 0x067e, 0x0683, 0x0683, 0x0683,
+ 0x0683, 0x0683, 0x0683, 0x0686, 0x0686, 0x0686, 0x0686, 0x068d,
+ 0x068d, 0x068d, 0x068d, 0x068d, 0x0692, 0x0692, 0x0692, 0x0692,
+ 0x06a1, 0x06a1, 0x06a5, 0x06a5, 0x06a5, 0x06b4, 0x06b4, 0x06b4,
+ 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06bd, 0x06cc, 0x06d9,
+ // Entry 200 - 23F
+ 0x06e3, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1,
+ 0x06f1, 0x06f1, 0x06f1, 0x06fa, 0x0707, 0x0707, 0x0707, 0x0707,
+ 0x0707, 0x0707, 0x070b, 0x070b, 0x0710, 0x0710, 0x0710, 0x0710,
+ 0x0710, 0x071a, 0x071a, 0x071a, 0x071a, 0x071a, 0x0723, 0x0723,
+ 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x072a, 0x072a,
+ 0x0743, 0x0743, 0x0743, 0x0743, 0x074e, 0x0751, 0x0751, 0x0751,
+ 0x0751, 0x0751, 0x0751, 0x0751, 0x0756, 0x0756, 0x0756, 0x0756,
+ 0x0756, 0x075e, 0x075e, 0x075e, 0x075e, 0x0762, 0x0762, 0x0762,
+ // Entry 240 - 27F
+ 0x0762, 0x0762, 0x0762, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f,
+ 0x078b, 0x078b, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07b7,
+ 0x07b7, 0x07b7, 0x07b7, 0x07b7, 0x07b7, 0x07b7, 0x07b7, 0x07b7,
+ 0x07b7, 0x07b7, 0x07c5, 0x07cc, 0x07e4, 0x07fa, 0x0804, 0x0812,
+ 0x0823, 0x0834,
+ },
+ },
+ { // fr
+ frLangStr,
+ frLangIdx,
+ },
+ { // fr-CA
+ frCALangStr,
+ frCALangIdx,
+ },
+ { // fr-CH
+ "kurde méridional",
+ []uint16{ // 497 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 100 - 13F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 140 - 17F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 180 - 1BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 1C0 - 1FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0011,
+ },
+ },
+ { // fur
+ "afarabcazianavestanafrikaansamaricaragonêsarapassamêsavaraymaràazerbaija" +
+ "nibielorùsbulgarbengalêstibetanbretonbosniaccatalancecenchamorrocors" +
+ "creececsclâf de glesiegalêsdanêstodescgrêcinglêsesperantospagnûlesto" +
+ "nbascpersianfulahfinlandêsfizianfaroêsfrancêsfrisiangaelic irlandêsg" +
+ "aelic scozêsgalizianguaranìgujaratimanxebraichindicravuathaitianongj" +
+ "arêsarmenindonesianigboinupiaqidoislandêstalianinuktitutgjaponêsgjeo" +
+ "rgjiankazackalaallisutkhmerkannadacoreancurdcornualiêslatinlussembur" +
+ "ghêslimburghêslingalalaolituanletonmalagasymaorimacedonmalayalammong" +
+ "ulmarathimalêsmaltêsndebele setentrionâlnepalêsolandêsnorvegjês nyno" +
+ "rsknorvegjês bokmålnavajoocitanoriyaoseticpunjabipolacpashtoportughê" +
+ "squechuarumançromenrussanscritsardegnûlsindhisami setentrionâlsangos" +
+ "inalêsslovacslovensamoansomalalbanêsserpswatisotho meridionâlsundanê" +
+ "ssvedêsswahilitamiltelegutagicthaiturcmenturctartartahitianuigurucra" +
+ "inurduuzbecvendavietnamitevalonwolofxhosayiddishyorubacinêszuluvieri" +
+ " inglêsaramaicasturiancopticsclâfvieri egjizianfilipinvieri francêsf" +
+ "urlangoticvieri grêcladinlenghis multiplismirandêsnapoletanbas todes" +
+ "cvieri norvegjêssotho setentrionâlturc otomanpapiamentovieri persian" +
+ "vieri provenzâlsicilianscozêsvieri irlandêssumerictetumindeterminade" +
+ "todesc de Austriealt todesc de Svuizareinglês australianinglês canad" +
+ "êsinglês britanicingles merecanspagnûl de Americhe Latinespagnûl ib" +
+ "ericfrancês dal Canadefrancês de Svuizareflamantportughês brasilianp" +
+ "ortughês ibericmoldâfcinês semplificâtcinês tradizionâl",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x001c, 0x0022, 0x002b,
+ 0x002f, 0x0037, 0x003b, 0x0042, 0x004d, 0x004d, 0x0056, 0x005c,
+ 0x005c, 0x005c, 0x0065, 0x006c, 0x0072, 0x0079, 0x0080, 0x0085,
+ 0x008d, 0x0091, 0x0095, 0x0098, 0x00a8, 0x00a8, 0x00ae, 0x00b4,
+ 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00bf, 0x00c6, 0x00cf, 0x00d7,
+ 0x00dc, 0x00e0, 0x00e7, 0x00ec, 0x00f6, 0x00fc, 0x0103, 0x010b,
+ 0x0112, 0x0122, 0x0130, 0x0138, 0x0140, 0x0148, 0x014c, 0x014c,
+ 0x0152, 0x0157, 0x0157, 0x015e, 0x0165, 0x016e, 0x0173, 0x0173,
+ // Entry 40 - 7F
+ 0x0173, 0x017d, 0x017d, 0x0181, 0x0181, 0x0188, 0x018b, 0x0194,
+ 0x019a, 0x01a3, 0x01ac, 0x01ac, 0x01b6, 0x01b6, 0x01b6, 0x01b6,
+ 0x01bb, 0x01c6, 0x01cb, 0x01d2, 0x01d8, 0x01d8, 0x01d8, 0x01dc,
+ 0x01dc, 0x01e7, 0x01e7, 0x01ec, 0x01fa, 0x01fa, 0x0205, 0x020c,
+ 0x020f, 0x0215, 0x0215, 0x021a, 0x0222, 0x0222, 0x0227, 0x022e,
+ 0x0237, 0x023d, 0x0244, 0x024a, 0x0251, 0x0251, 0x0251, 0x0266,
+ 0x026e, 0x026e, 0x0276, 0x0288, 0x029a, 0x029a, 0x02a0, 0x02a0,
+ 0x02a6, 0x02a6, 0x02a6, 0x02ab, 0x02b1, 0x02b8, 0x02b8, 0x02bd,
+ // Entry 80 - BF
+ 0x02c3, 0x02cd, 0x02d4, 0x02db, 0x02db, 0x02e0, 0x02e3, 0x02e3,
+ 0x02eb, 0x02f5, 0x02fb, 0x030d, 0x0312, 0x031a, 0x0320, 0x0326,
+ 0x032c, 0x032c, 0x0331, 0x0339, 0x033d, 0x0342, 0x0353, 0x035c,
+ 0x0363, 0x036a, 0x036f, 0x0375, 0x037a, 0x037e, 0x037e, 0x0385,
+ 0x0385, 0x0385, 0x0389, 0x0389, 0x038f, 0x0397, 0x039c, 0x03a2,
+ 0x03a6, 0x03ab, 0x03b0, 0x03ba, 0x03ba, 0x03bf, 0x03c4, 0x03c9,
+ 0x03d0, 0x03d6, 0x03d6, 0x03dc, 0x03e0, 0x03e0, 0x03e0, 0x03e0,
+ 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0,
+ // Entry C0 - FF
+ 0x03e0, 0x03e0, 0x03ed, 0x03ed, 0x03f4, 0x03f4, 0x03f4, 0x03f4,
+ 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03fc, 0x03fc,
+ 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
+ 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
+ 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
+ 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
+ 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
+ 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc,
+ // Entry 100 - 13F
+ 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402,
+ 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408,
+ 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0416,
+ 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x041d,
+ 0x041d, 0x041d, 0x041d, 0x041d, 0x042b, 0x042b, 0x042b, 0x042b,
+ 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431,
+ 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0436,
+ 0x0436, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
+ // Entry 140 - 17F
+ 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
+ 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
+ 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
+ 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
+ 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
+ 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
+ 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441,
+ 0x0441, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
+ // Entry 180 - 1BF
+ 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
+ 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
+ 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
+ 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
+ 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0457,
+ 0x0457, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460,
+ 0x0469, 0x0469, 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, 0x0473,
+ 0x0473, 0x0473, 0x0483, 0x0483, 0x0483, 0x0496, 0x0496, 0x0496,
+ // Entry 1C0 - 1FF
+ 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, 0x04a1, 0x04a1, 0x04a1,
+ 0x04a1, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04b8, 0x04b8,
+ 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04c8, 0x04c8, 0x04c8,
+ 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8,
+ 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8,
+ 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04d0, 0x04d7, 0x04d7,
+ 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04e6, 0x04e6,
+ 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6,
+ // Entry 200 - 23F
+ 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6,
+ 0x04e6, 0x04e6, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed,
+ 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04f2, 0x04f2, 0x04f2, 0x04f2,
+ 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2,
+ 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2,
+ 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04ff, 0x04ff, 0x04ff, 0x04ff,
+ 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff,
+ 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff,
+ // Entry 240 - 27F
+ 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff,
+ 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x0510, 0x0526,
+ 0x0538, 0x0548, 0x0558, 0x0566, 0x0581, 0x0590, 0x0590, 0x0590,
+ 0x05a3, 0x05b7, 0x05b7, 0x05be, 0x05d2, 0x05e3, 0x05ea, 0x05ea,
+ 0x05fd, 0x0610,
+ },
+ },
+ { // fy
+ "AfarAbchazyskAvestyskAfrikaanskAkanAmhaarskAragoneeskArabyskAssameeskAva" +
+ "ryskAymaraAzerbeidzjaanskBasjkierskWyt-RussyskBulgaarskBislamaBambar" +
+ "aBengaalskTibetaanskBretonskBosnyskKatalaanskTsjetsjeenskChamorroKor" +
+ "sikaanskCreeTsjechyskKerkslavyskTsjoevasjyskWelskDeenskDútskDivehiDz" +
+ "ongkhaEweGryksIngelskEsperantoSpaanskEstlânskBaskyskPerzyskFulahFins" +
+ "kFijyskFaeröerskFrânskWest-FryskIerskSchotsk GaelicGalisyskGuaraníGu" +
+ "jaratiManksHausaHebreeuwskHindiHiri MotuKroatyskHaïtiaanskHongaarskA" +
+ "rmeenskHereroInterlinguaYndonezyskInterlingueIgboSichuan YiInupiaqId" +
+ "oYslânsItaliaanskInuktitutJapansJavaanskGeorgyskKongoKikuyuKuanyamaK" +
+ "azachsGrienlânsKhmerKannadaKoreaanskKanuriKasjmiriKoerdyskKomiCornis" +
+ "hKirgizyskLatynLuxemburgsGandaLimburgsLingalaLaotiaanskLitouwsLuba-K" +
+ "atangaLetlânsMalagasyskMarshalleesMaoriMacedonyskMalayalamMongoolsMa" +
+ "rathiMaleisMalteesBirmeesNauruaanskNoard-NdbeleNepaleesNdongaNederlâ" +
+ "nskNoors - NynorskNoors - BokmålSûd-NdbeleNavajoNyanjaOccitaanskOjib" +
+ "waOromoOdiaOssetyskPunjabiPaliPoalskPasjtoePortugeeskQuechuaReto-Rom" +
+ "aanskKirundiRoemeenskRussyskKinyarwandaSanskrietSardinyskSindhiNoard" +
+ "-SamyskSangoSingaleesSlowaaksSloveenskSamoaanskShonaSomalyskAlbanees" +
+ "kServyskSwaziSûd-SothoSoendaneeskZweedsSwahiliTamilTeluguTadzjieksTh" +
+ "aisTigrinyaTurkmeensTswanaTongaanskTurksTsongaTataarsTahityskOeigoer" +
+ "sOekraïensUrduOezbeeksVendaVietnameesVolapükWaalsWolofXhosaJiddyskYo" +
+ "rubaZhuangSineeskZuluAtjeeskAkoliAdangmeAdygheAfrihiliAghemAinuAkkad" +
+ "yskAleutSûd-AltaïskâldingelskAngikaArameeskAraukaanskArapahoArawakAs" +
+ "uAsturyskAwadhiBaloetsjyskBalineeskBasaBamounGhomala’BejaBembaBenaBa" +
+ "futBhojpuriBikolBiniKomSiksikaBrajBodoAkooseBuriatBugineeskBuluBlinM" +
+ "edumbaKaddoKaribyskCayugaAtsamCebuanoChigaChibchaChagataiChuukeeskMa" +
+ "riChinook-jargonChoctawChipewyanCherokeeCheyenneSoranîKoptyskKrim-Ta" +
+ "taarskKasjoebyskDakotaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriN" +
+ "edersorbyskDualaMiddelnederlânskJola-FonyiDyulaDazagaEmbuEfikAldegyp" +
+ "tyskEkajukElamityskMiddelingelskEwondoFangFilipynskFonMiddelfrânskAl" +
+ "dfrânskNoard-FryskEast-FryskFriulyskGaGayoGbayaGeezGilberteeskMiddel" +
+ "heechdútskAlsheechdútskGondiGorontaloGothyskGreboAldgryksSwitsers Dú" +
+ "tskGusiiGwichʼinHaidaHawaïaanskHiligaynonHettityskHmongOppersorbyskH" +
+ "upaIbanIbibioIlokoIngoesjLojbanNgombaMachameJudeo-PerzyskJudeo-Araby" +
+ "skKarakalpaksKabyleKachinJjuKambaKawiKabardyskKanembuTyapMakondeKaap" +
+ "verdysk CreoolsKoroKhasiKhotaneeskKoyra ChiiniKakoKalenjinKimbunduKo" +
+ "nkaniKosraeaanskKpelleKarachay-BalkarKarelyskKurukhShambalaBafiaKöls" +
+ "chKoemuksKutenaiLadinoLangiLahndaLambaLezgyskLakotaMongoLoziLuba-Lul" +
+ "uaLuisenoLundaLuoLushaiLuyiaMadureesMafaMagahiMaithiliMakassaarsMand" +
+ "ingoMasaiMabaMokshaMandarMendeMeruMorisyenMiddeliersMakhuwa-MeettoMe" +
+ "ta’Mi’kmaqMinangkabauMantsjoeManipoeriMohawkMossiMundangMeardere tal" +
+ "enCreekMirandeesMarwariMyeneErzjaNapolitaanskNamaLaagduitsNewariNias" +
+ "NiueaanskNgumbaNgiemboonNogaiAldnoarskN’koNoard-SothoNuerKlassiek Ne" +
+ "wariNyamweziNyankoleNyoroNzimaOsageOttomaansk-TurksPangasinanPahlavi" +
+ "PampangaPapiamentsPalauaanskAldperzyskFoenisyskPohnpeiaanskAldproven" +
+ "çaalsRajasthaniRapanuiRarotonganRomboRomaniAromaniaanskRwaSandaweJa" +
+ "koetsSamaritaansk-ArameeskSamburuSasakSantaliNgambaySanguSiciliaansk" +
+ "SchotsSenecaSenaSelkupKoyraboro SenniAldyrskTashelhiytShanTsjadysk A" +
+ "rabyskSidamoSûd-SamyskLule SamiInari SamiSkolt SamiSoninkeSogdyskSra" +
+ "nantongoSererSahoSukumaSoesoeSoemeryskShimaoreCongo SwahiliKlassiek " +
+ "SyryskSyryskTimneTesoTerenoTetunTigreTivTokelausKlingonTlingitTamash" +
+ "ekNyasa TongaTok PisinTarokoTsimshianToemboekaTuvaluaanskTasawaqTuvi" +
+ "nyskTamazight (Sintraal-Marokko)OedmoertsOegarityskUmbunduRootVaiVot" +
+ "yskVunjoWalserWalamoWarayWashoKalmykSogaYaoYapeesYangbenYembaKantone" +
+ "eskZapotecBlissymbolenZenagaStandert Marokkaanske TamazightZuniGjin " +
+ "linguïstyske ynhâldZazaModern standert ArabyskEastenryks DútskSwitse" +
+ "rsk HeechdútskAustralysk IngelskKanadeesk IngelskBritsk IngelskAmeri" +
+ "kaansk IngelskLatynsk-Amerikaansk SpaanskEuropeesk SpaanskMeksikaans" +
+ "k SpaanskKanadeesk FrânskSwitserse FrânskVlaamsBrazyljaansk Portugee" +
+ "sEuropees PortugeesMoldavyskServokroatyskFerienfâldich SineeskTradis" +
+ "joneel Sineesk",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000d, 0x0015, 0x001f, 0x0023, 0x002b, 0x0035,
+ 0x003c, 0x0045, 0x004c, 0x0052, 0x0061, 0x006b, 0x0076, 0x007f,
+ 0x0086, 0x008d, 0x0096, 0x00a0, 0x00a8, 0x00af, 0x00b9, 0x00c5,
+ 0x00cd, 0x00d8, 0x00dc, 0x00e5, 0x00f0, 0x00fc, 0x0101, 0x0107,
+ 0x010d, 0x0113, 0x011b, 0x011e, 0x0123, 0x012a, 0x0133, 0x013a,
+ 0x0143, 0x014a, 0x0151, 0x0156, 0x015b, 0x0161, 0x016b, 0x0172,
+ 0x017c, 0x0181, 0x018f, 0x0197, 0x019f, 0x01a7, 0x01ac, 0x01b1,
+ 0x01bb, 0x01c0, 0x01c9, 0x01d1, 0x01dc, 0x01e5, 0x01ed, 0x01f3,
+ // Entry 40 - 7F
+ 0x01fe, 0x0208, 0x0213, 0x0217, 0x0221, 0x0228, 0x022b, 0x0232,
+ 0x023c, 0x0245, 0x024b, 0x0253, 0x025b, 0x0260, 0x0266, 0x026e,
+ 0x0275, 0x027f, 0x0284, 0x028b, 0x0294, 0x029a, 0x02a2, 0x02aa,
+ 0x02ae, 0x02b5, 0x02be, 0x02c3, 0x02cd, 0x02d2, 0x02da, 0x02e1,
+ 0x02eb, 0x02f2, 0x02fe, 0x0306, 0x0310, 0x031b, 0x0320, 0x032a,
+ 0x0333, 0x033b, 0x0342, 0x0348, 0x034f, 0x0356, 0x0360, 0x036c,
+ 0x0374, 0x037a, 0x0385, 0x0394, 0x03a3, 0x03ae, 0x03b4, 0x03ba,
+ 0x03c4, 0x03ca, 0x03cf, 0x03d3, 0x03db, 0x03e2, 0x03e6, 0x03ec,
+ // Entry 80 - BF
+ 0x03f3, 0x03fd, 0x0404, 0x0411, 0x0418, 0x0421, 0x0428, 0x0433,
+ 0x043c, 0x0445, 0x044b, 0x0457, 0x045c, 0x0465, 0x046d, 0x0476,
+ 0x047f, 0x0484, 0x048c, 0x0495, 0x049c, 0x04a1, 0x04ab, 0x04b6,
+ 0x04bc, 0x04c3, 0x04c8, 0x04ce, 0x04d7, 0x04dc, 0x04e4, 0x04ed,
+ 0x04f3, 0x04fc, 0x0501, 0x0507, 0x050e, 0x0516, 0x051e, 0x0528,
+ 0x052c, 0x0534, 0x0539, 0x0543, 0x054b, 0x0550, 0x0555, 0x055a,
+ 0x0561, 0x0567, 0x056d, 0x0574, 0x0578, 0x057f, 0x0584, 0x058b,
+ 0x0591, 0x0591, 0x0599, 0x059e, 0x05a2, 0x05aa, 0x05aa, 0x05af,
+ // Entry C0 - FF
+ 0x05af, 0x05bc, 0x05c7, 0x05cd, 0x05d5, 0x05df, 0x05df, 0x05e6,
+ 0x05e6, 0x05ec, 0x05ec, 0x05ec, 0x05ef, 0x05ef, 0x05f7, 0x05f7,
+ 0x05fd, 0x0608, 0x0611, 0x0611, 0x0615, 0x061b, 0x061b, 0x0625,
+ 0x0629, 0x062e, 0x062e, 0x0632, 0x0637, 0x0637, 0x0637, 0x063f,
+ 0x0644, 0x0648, 0x0648, 0x064b, 0x0652, 0x0652, 0x0652, 0x0656,
+ 0x0656, 0x065a, 0x0660, 0x0666, 0x066f, 0x0673, 0x0677, 0x067e,
+ 0x0683, 0x068b, 0x0691, 0x0696, 0x069d, 0x06a2, 0x06a9, 0x06b1,
+ 0x06ba, 0x06be, 0x06cc, 0x06d3, 0x06dc, 0x06e4, 0x06ec, 0x06f3,
+ // Entry 100 - 13F
+ 0x06fa, 0x06fa, 0x0707, 0x0711, 0x0717, 0x071d, 0x0722, 0x072a,
+ 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x0750, 0x0750, 0x0755,
+ 0x0766, 0x0770, 0x0775, 0x077b, 0x077f, 0x0783, 0x0783, 0x078e,
+ 0x0794, 0x079d, 0x07aa, 0x07aa, 0x07b0, 0x07b0, 0x07b4, 0x07bd,
+ 0x07bd, 0x07c0, 0x07c0, 0x07cd, 0x07d7, 0x07d7, 0x07e2, 0x07ec,
+ 0x07f4, 0x07f6, 0x07f6, 0x07f6, 0x07fa, 0x07ff, 0x07ff, 0x0803,
+ 0x080e, 0x080e, 0x081f, 0x082d, 0x082d, 0x0832, 0x083b, 0x0842,
+ 0x0847, 0x084f, 0x085e, 0x085e, 0x085e, 0x0863, 0x086c, 0x0871,
+ // Entry 140 - 17F
+ 0x0871, 0x087c, 0x087c, 0x0886, 0x088f, 0x0894, 0x08a0, 0x08a0,
+ 0x08a4, 0x08a8, 0x08ae, 0x08b3, 0x08ba, 0x08ba, 0x08ba, 0x08c0,
+ 0x08c6, 0x08cd, 0x08da, 0x08e7, 0x08e7, 0x08f2, 0x08f8, 0x08fe,
+ 0x0901, 0x0906, 0x090a, 0x0913, 0x091a, 0x091e, 0x0925, 0x0938,
+ 0x0938, 0x093c, 0x093c, 0x0941, 0x094b, 0x0957, 0x0957, 0x0957,
+ 0x095b, 0x0963, 0x096b, 0x096b, 0x0972, 0x097d, 0x0983, 0x0992,
+ 0x0992, 0x0992, 0x099a, 0x09a0, 0x09a8, 0x09ad, 0x09b4, 0x09bb,
+ 0x09c2, 0x09c8, 0x09cd, 0x09d3, 0x09d8, 0x09df, 0x09df, 0x09df,
+ // Entry 180 - 1BF
+ 0x09df, 0x09e5, 0x09e5, 0x09ea, 0x09ee, 0x09ee, 0x09ee, 0x09f8,
+ 0x09ff, 0x0a04, 0x0a07, 0x0a0d, 0x0a12, 0x0a12, 0x0a12, 0x0a1a,
+ 0x0a1e, 0x0a24, 0x0a2c, 0x0a36, 0x0a3e, 0x0a43, 0x0a47, 0x0a4d,
+ 0x0a53, 0x0a58, 0x0a5c, 0x0a64, 0x0a6e, 0x0a7c, 0x0a83, 0x0a8c,
+ 0x0a97, 0x0a9f, 0x0aa8, 0x0aae, 0x0ab3, 0x0ab3, 0x0aba, 0x0ac8,
+ 0x0acd, 0x0ad6, 0x0add, 0x0add, 0x0ae2, 0x0ae7, 0x0ae7, 0x0ae7,
+ 0x0af3, 0x0af7, 0x0b00, 0x0b06, 0x0b0a, 0x0b13, 0x0b13, 0x0b19,
+ 0x0b22, 0x0b27, 0x0b30, 0x0b30, 0x0b36, 0x0b41, 0x0b45, 0x0b54,
+ // Entry 1C0 - 1FF
+ 0x0b5c, 0x0b64, 0x0b69, 0x0b6e, 0x0b73, 0x0b83, 0x0b8d, 0x0b94,
+ 0x0b9c, 0x0ba6, 0x0bb0, 0x0bb0, 0x0bb0, 0x0bb0, 0x0bba, 0x0bba,
+ 0x0bc3, 0x0bc3, 0x0bc3, 0x0bcf, 0x0bcf, 0x0bde, 0x0bde, 0x0bde,
+ 0x0be8, 0x0bef, 0x0bf9, 0x0bf9, 0x0bf9, 0x0bfe, 0x0c04, 0x0c04,
+ 0x0c04, 0x0c04, 0x0c10, 0x0c13, 0x0c1a, 0x0c21, 0x0c36, 0x0c3d,
+ 0x0c42, 0x0c49, 0x0c49, 0x0c50, 0x0c55, 0x0c60, 0x0c66, 0x0c66,
+ 0x0c66, 0x0c6c, 0x0c70, 0x0c70, 0x0c76, 0x0c85, 0x0c8c, 0x0c8c,
+ 0x0c96, 0x0c9a, 0x0caa, 0x0cb0, 0x0cb0, 0x0cb0, 0x0cbb, 0x0cc4,
+ // Entry 200 - 23F
+ 0x0cce, 0x0cd8, 0x0cdf, 0x0ce6, 0x0cf1, 0x0cf6, 0x0cfa, 0x0cfa,
+ 0x0d00, 0x0d06, 0x0d0f, 0x0d17, 0x0d24, 0x0d33, 0x0d39, 0x0d39,
+ 0x0d39, 0x0d3e, 0x0d42, 0x0d48, 0x0d4d, 0x0d52, 0x0d55, 0x0d5d,
+ 0x0d5d, 0x0d64, 0x0d6b, 0x0d6b, 0x0d73, 0x0d7e, 0x0d87, 0x0d87,
+ 0x0d8d, 0x0d8d, 0x0d96, 0x0d96, 0x0d9f, 0x0daa, 0x0db1, 0x0db9,
+ 0x0dd5, 0x0dde, 0x0de8, 0x0def, 0x0df3, 0x0df6, 0x0df6, 0x0df6,
+ 0x0df6, 0x0df6, 0x0dfc, 0x0dfc, 0x0e01, 0x0e07, 0x0e0d, 0x0e12,
+ 0x0e17, 0x0e17, 0x0e17, 0x0e1d, 0x0e1d, 0x0e21, 0x0e24, 0x0e2a,
+ // Entry 240 - 27F
+ 0x0e31, 0x0e36, 0x0e36, 0x0e40, 0x0e47, 0x0e53, 0x0e53, 0x0e59,
+ 0x0e78, 0x0e7c, 0x0e96, 0x0e9a, 0x0eb1, 0x0eb1, 0x0ec2, 0x0ed7,
+ 0x0ee9, 0x0efa, 0x0f08, 0x0f1b, 0x0f36, 0x0f47, 0x0f5a, 0x0f5a,
+ 0x0f6b, 0x0f7c, 0x0f7c, 0x0f82, 0x0f98, 0x0faa, 0x0fb3, 0x0fc0,
+ 0x0fd6, 0x0fea,
+ },
+ },
+ { // ga
+ "AfáirisAbcáisisAivéistisAfracáinisAcáinisAmáirisAragóinisAraibisAsaimisA" +
+ "váirisAidhmirisAsarbaiseáinisBaiscírisBealarúisisBulgáirisBioslaimis" +
+ "BeangáilisTibéidisBriotáinisBoisnisCatalóinisSeisnisSeamóirisCorsaic" +
+ "isCraísSeicisSlavais na hEaglaiseSuvaisisBreatnaisDanmhairgisGearmái" +
+ "nisDivéihisSeoinicisGréigisBéarlaEsperantoSpáinnisEastóinisBascaisPe" +
+ "irsisFuláinisFionlainnisFidsisFaróisFraincisFreaslainnis IartharachG" +
+ "aeilgeGaeilge na hAlbanGailísisGuaráinisGúisearáitisManainnisHásaisE" +
+ "abhraisHiondúisMotúis HíríCróitisCriól HáítíochUngáirisAirméinisHeir" +
+ "éirisInterlinguaIndinéisisInterlingueÍogbóisIniúipiaicisIdoÍoslainn" +
+ "isIodáilisIonúitisSeapáinisIáivisSeoirsisCongóisCiocúisCuainiáimisCa" +
+ "saicisKalaallisutCiméirisCannadaisCóiréisCanúirisCaismírisCoirdisCoi" +
+ "misCoirnisCirgisisLaidinLucsambuirgisLugandaisLiongáilisLaoisisLiotu" +
+ "áinisLúba-CataingisLaitvisMalagáisisMairsillisMaoraisMacadóinisMail" +
+ "éalaimisMongóilisMaraitisMalaeisMáltaisBurmaisNárúisNdeibéilis an T" +
+ "uaiscirtNeipeailisNdongaisOllainnisNua-IoruaisIoruais BokmålNdeibéil" +
+ "is an DeiscirtNavachóisSiséivisOcsatáinisÓisibisOraimisOirísisOiséit" +
+ "isPuinseáibisPáilisPolainnisPaistisPortaingéilisCeatsuaisRómainisRúi" +
+ "ndisRómáinisRúisisCiniaruaindisSanscraitSairdínisSindisSáimis Thuaid" +
+ "hSangóisSiolóinisSlóvaicisSlóivéinisSamóisSeoinisSomáilisAlbáinisSei" +
+ "rbisSuaisisSeasóitisSundaisSualainnisSvahaílisTamailisTeileagúisTáid" +
+ "sícisTéalainnisTigrinisTuircméinisSuáinisTongaisTuircisSongaisTatair" +
+ "isTaihítisUigiúirisÚcráinisUrdúisÚisbéiceastáinisVeindisVítneaimisVo" +
+ "lapükVallúnaisVolaifisCóisisGiúdaisIarúibisSiuáingisSínisSúlúisAidhn" +
+ "iúisAcáidisSean-BhéarlaAramaisMapúitsisAstúirisBailísBaváirisBeimbis" +
+ "BuiriáitisBuiginisSeabúáinisMairisSeiricisCoptaisCaisiúibisZarmaisSo" +
+ "rbais ÍochtarachMeán-OllainnisSean-ÉigiptisMeán-BhéarlaFilipínisMeán" +
+ "-FhraincisSean-FhraincisFreaslainnis an TuaiscirtFriúilisAetóipisMeá" +
+ "n-Ard-GhearmáinisSean-Ard-GhearmáinisSean-GhréigisGearmáinis Eilvéis" +
+ "eachUaúisHaicéisHaváisHiondúis FhidsíHilgeanóinisHitisMongaisSorbais" +
+ " UachtarachHúipisIbibisIongúisIútlainnisCara-ChalpáisConcáinisCairéi" +
+ "lisCurúicisLaidínisPuinseáibis IartharachLiogúirisLiovóinisLombairdi" +
+ "sMeindisMeán-GhaeilgeManapúirisMóháicisMairis IartharachMioraindéisM" +
+ "armhairisGearmáinis ÍochtarachNíobhaisSean-LochlainnisSútúis an Tuai" +
+ "scirtSean-PheirsisPrúisisRomainisArómáinisSachaisAramais ShamárachSa" +
+ "ntáilisSicilisAlbainisSean-GhaeilgeSáimis LuleSogdánaisSuiméirisSvah" +
+ "aílis an ChongóSiricisSiléisisKlingonUdmairtisTeanga AnaithnidVeinéi" +
+ "sisPléimeannais IartharachCailmícisCantainisSéalainnisZúinisGan ábha" +
+ "r teangeolaíochAraibis ChaighdeánachGearmáinis OstarachArd-Ghearmáin" +
+ "is EilvéiseachBéarla AstrálachBéarla CeanadachBéarla BriotanachBéarl" +
+ "a MeiriceánachSpáinnis Mheiriceá LaidinighSpáinnis EorpachSpáinnis M" +
+ "heicsiceachFraincis CheanadachFraincis EilvéiseachSacsainis Íochtara" +
+ "chPléimeannaisPortaingéilis na BrasaílePortaingéilis IbéarachMoldáiv" +
+ "isSeirbea-ChróitisSínis ShimplitheSínis Thraidisiúnta",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0008, 0x0011, 0x001b, 0x0026, 0x002e, 0x0036, 0x0040,
+ 0x0047, 0x004e, 0x0056, 0x005f, 0x006e, 0x0078, 0x0084, 0x008e,
+ 0x0098, 0x0098, 0x00a3, 0x00ac, 0x00b7, 0x00be, 0x00c9, 0x00d0,
+ 0x00da, 0x00e3, 0x00e9, 0x00ef, 0x0103, 0x010b, 0x0114, 0x011f,
+ 0x012a, 0x0133, 0x013c, 0x013c, 0x0144, 0x014b, 0x0154, 0x015d,
+ 0x0167, 0x016e, 0x0175, 0x017e, 0x0189, 0x018f, 0x0196, 0x019e,
+ 0x01b5, 0x01bc, 0x01cd, 0x01d6, 0x01e0, 0x01ee, 0x01f7, 0x01fe,
+ 0x0206, 0x020f, 0x021d, 0x0225, 0x0237, 0x0240, 0x024a, 0x0254,
+ // Entry 40 - 7F
+ 0x025f, 0x026a, 0x0275, 0x027e, 0x027e, 0x028b, 0x028e, 0x0299,
+ 0x02a2, 0x02ab, 0x02b5, 0x02bc, 0x02c4, 0x02cc, 0x02d4, 0x02e0,
+ 0x02e8, 0x02f3, 0x02fc, 0x0305, 0x030e, 0x0317, 0x0321, 0x0328,
+ 0x032e, 0x0335, 0x033d, 0x0343, 0x0350, 0x0359, 0x0359, 0x0364,
+ 0x036b, 0x0376, 0x0385, 0x038c, 0x0397, 0x03a1, 0x03a8, 0x03b3,
+ 0x03c0, 0x03ca, 0x03d2, 0x03d9, 0x03e1, 0x03e8, 0x03f0, 0x0408,
+ 0x0412, 0x041a, 0x0423, 0x042e, 0x043d, 0x0454, 0x045e, 0x0467,
+ 0x0472, 0x047a, 0x0481, 0x0489, 0x0492, 0x049e, 0x04a5, 0x04ae,
+ // Entry 80 - BF
+ 0x04b5, 0x04c3, 0x04cc, 0x04d5, 0x04dd, 0x04e7, 0x04ee, 0x04fb,
+ 0x0504, 0x050e, 0x0514, 0x0523, 0x052b, 0x0535, 0x053f, 0x054b,
+ 0x0552, 0x0559, 0x0562, 0x056b, 0x0572, 0x0579, 0x0583, 0x058a,
+ 0x0594, 0x059e, 0x05a6, 0x05b1, 0x05bc, 0x05c7, 0x05cf, 0x05db,
+ 0x05e3, 0x05ea, 0x05f1, 0x05f8, 0x0600, 0x0609, 0x0613, 0x061d,
+ 0x0624, 0x0637, 0x063e, 0x0649, 0x0651, 0x065b, 0x0663, 0x066a,
+ 0x0672, 0x067b, 0x0685, 0x068b, 0x0693, 0x0693, 0x0693, 0x0693,
+ 0x0693, 0x0693, 0x0693, 0x0693, 0x069d, 0x06a5, 0x06a5, 0x06a5,
+ // Entry C0 - FF
+ 0x06a5, 0x06a5, 0x06b2, 0x06b2, 0x06b9, 0x06c3, 0x06c3, 0x06c3,
+ 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06c3, 0x06cc, 0x06cc,
+ 0x06cc, 0x06cc, 0x06d3, 0x06dc, 0x06dc, 0x06dc, 0x06dc, 0x06dc,
+ 0x06dc, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3,
+ 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3,
+ 0x06e3, 0x06e3, 0x06e3, 0x06ee, 0x06f6, 0x06f6, 0x06f6, 0x06f6,
+ 0x06f6, 0x06f6, 0x06f6, 0x06f6, 0x0702, 0x0702, 0x0702, 0x0702,
+ 0x0702, 0x0708, 0x0708, 0x0708, 0x0708, 0x0710, 0x0710, 0x0710,
+ // Entry 100 - 13F
+ 0x0717, 0x0717, 0x0717, 0x0722, 0x0722, 0x0722, 0x0722, 0x0722,
+ 0x0722, 0x0722, 0x0722, 0x0729, 0x0729, 0x073c, 0x073c, 0x073c,
+ 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x074b, 0x0759,
+ 0x0759, 0x0759, 0x0767, 0x0767, 0x0767, 0x0767, 0x0767, 0x0771,
+ 0x0771, 0x0771, 0x0771, 0x0780, 0x078e, 0x078e, 0x07a7, 0x07a7,
+ 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b0, 0x07b9,
+ 0x07b9, 0x07b9, 0x07cf, 0x07e4, 0x07e4, 0x07e4, 0x07e4, 0x07e4,
+ 0x07e4, 0x07f2, 0x080a, 0x0810, 0x0810, 0x0810, 0x0810, 0x0810,
+ // Entry 140 - 17F
+ 0x0818, 0x081f, 0x0830, 0x083d, 0x0842, 0x0849, 0x085b, 0x085b,
+ 0x0862, 0x0862, 0x0868, 0x0868, 0x0870, 0x0870, 0x0870, 0x0870,
+ 0x0870, 0x0870, 0x0870, 0x0870, 0x087b, 0x0889, 0x0889, 0x0889,
+ 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889,
+ 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889,
+ 0x0889, 0x0889, 0x0889, 0x0889, 0x0893, 0x0893, 0x0893, 0x0893,
+ 0x0893, 0x0893, 0x089d, 0x08a6, 0x08a6, 0x08a6, 0x08a6, 0x08a6,
+ 0x08a6, 0x08af, 0x08af, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08d0,
+ // Entry 180 - 1BF
+ 0x08da, 0x08da, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4,
+ 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4,
+ 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08e4,
+ 0x08e4, 0x08eb, 0x08eb, 0x08eb, 0x08f9, 0x08f9, 0x08f9, 0x08f9,
+ 0x08f9, 0x08f9, 0x0904, 0x090e, 0x090e, 0x091f, 0x091f, 0x091f,
+ 0x091f, 0x092b, 0x0935, 0x0935, 0x0935, 0x0935, 0x0935, 0x0935,
+ 0x0935, 0x0935, 0x094c, 0x094c, 0x094c, 0x0955, 0x0955, 0x0955,
+ 0x0955, 0x0955, 0x0965, 0x0965, 0x0965, 0x097a, 0x097a, 0x097a,
+ // Entry 1C0 - 1FF
+ 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a,
+ 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x097a, 0x0987, 0x0987,
+ 0x0987, 0x0987, 0x0987, 0x0987, 0x098f, 0x098f, 0x098f, 0x098f,
+ 0x098f, 0x098f, 0x098f, 0x098f, 0x098f, 0x098f, 0x0997, 0x0997,
+ 0x0997, 0x0997, 0x09a2, 0x09a2, 0x09a2, 0x09a9, 0x09bb, 0x09bb,
+ 0x09bb, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09cc, 0x09d4, 0x09d4,
+ 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09d4, 0x09e1, 0x09e1,
+ 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09ed,
+ // Entry 200 - 23F
+ 0x09ed, 0x09ed, 0x09ed, 0x09f7, 0x09f7, 0x09f7, 0x09f7, 0x09f7,
+ 0x09f7, 0x09f7, 0x0a01, 0x0a01, 0x0a16, 0x0a16, 0x0a1d, 0x0a26,
+ 0x0a26, 0x0a26, 0x0a26, 0x0a26, 0x0a26, 0x0a26, 0x0a26, 0x0a26,
+ 0x0a26, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d,
+ 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d, 0x0a2d,
+ 0x0a2d, 0x0a36, 0x0a36, 0x0a36, 0x0a46, 0x0a46, 0x0a50, 0x0a50,
+ 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68,
+ 0x0a68, 0x0a68, 0x0a68, 0x0a72, 0x0a72, 0x0a72, 0x0a72, 0x0a72,
+ // Entry 240 - 27F
+ 0x0a72, 0x0a72, 0x0a72, 0x0a7b, 0x0a7b, 0x0a7b, 0x0a86, 0x0a86,
+ 0x0a86, 0x0a8d, 0x0aa6, 0x0aa6, 0x0abc, 0x0abc, 0x0ad0, 0x0aed,
+ 0x0aff, 0x0b10, 0x0b22, 0x0b37, 0x0b55, 0x0b66, 0x0b7c, 0x0b7c,
+ 0x0b8f, 0x0ba4, 0x0bb9, 0x0bc6, 0x0be1, 0x0bf9, 0x0c03, 0x0c14,
+ 0x0c25, 0x0c3a,
+ },
+ },
+ { // gd
+ "AfarAbchasaisAvestanaisAfraganaisAkanAmtharaisAragonaisArabaisAsamaisAva" +
+ "raisAymaraAsarbaideànaisBashkirBealaruisisBulgaraisBislamaBambaraBea" +
+ "ngailisTibeitisBreatnaisBosnaisCatalanaisDeideanaisChamorroCorsaisCr" +
+ "eeSeacaisSlàbhais na h-EaglaiseChuvashCuimrisDanmhairgisGearmailtisD" +
+ "ivehiDzongkhaEweGreugaisBeurlaEsperantoSpàinntisEastoinisBasgaisPeir" +
+ "sisFulahFionnlannaisFìdisFàrothaisFraingisFrìoslannais ShiarachGaeil" +
+ "geGàidhligGailìsisGuaraníGujaratiGaelgHausaEabhraHindisHiri MotuCròt" +
+ "haisisCrìtheol HaidhtiUngairisAirmeinisHereroInterlinguaInnd-InnsisI" +
+ "nterlingueIgboYi SichuanInupiaqIdoInnis TìlisEadailtisInuktitutSeapa" +
+ "naisDeàbhanaisCairtbheilisKongoKikuyuKuanyamaCasachaisKalaallisutCmè" +
+ "arKannadaCoirèanaisKanuriCaismirisCùrdaisKomiCòrnaisCìorgasaisLaidea" +
+ "nnLugsamburgaisGandaCànan LimburgLingalaLàthoLiotuainisLuba-KatangaL" +
+ "aitbheisMalagasaisMarshallaisMāoriMasadonaisMalayalamMongolaisMarath" +
+ "iMalaidhisMaltaisBurmaisNabhruNdebele ThuathachNeapàlaisNdongaDuitsi" +
+ "sNynorsk na NirribhidhBokmål na NirribhidhNdebele DheasachNavajoChic" +
+ "hewaOgsatanaisOjibwaOromoOdiaOsseticPanjabiPaliPòlainnisPashtoPortag" +
+ "ailisCeatsuaRumainsKirundiRomàinisRuisisKinyarwandaSanskritSàrdaisSi" +
+ "ndhiSàmais ThuathachSangoSinhalaSlòbhacaisSlòbhainisSamothaisShonaSo" +
+ "màilisAlbàinisSèirbisSwatiLeasotach DheasachCànan SundaSuainisKiswah" +
+ "iliTaimilisTeluguTaidigisTàidhTigrinyaTurcmanaisTswanaTongaisTurcais" +
+ "TsongaTataraisCànan TahitiÙigiuraisUcràinisÙrduUsbagaisVendaBhiet-Na" +
+ "maisVolapükWalloonWolofXhosaIùdhaisIorubaZhuangSìnisZuluBasa AcèhAco" +
+ "liAdangmeAdygheArabais ThuiniseachAfrihiliAghemAinuAcadaisAlabamaAle" +
+ "utaisAlbàinis GhegeachSeann-BheurlaAngikaAramaisMapucheAraonaArapaho" +
+ "Arabais AildireachArawakArabais MhorocachArabais ÈipheiteachAsuCainn" +
+ "t-shanais na h-AimeireagaAstùraisKotavaAwadhiBaluchìCànan BaliBasaaB" +
+ "amunBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaBalochi ShiarachB" +
+ "hojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrahuiBodoAk" +
+ "ooseBuriatCànan nam BugisBuluBlinMedumbaCaddoCaribCayugaAtsamCebuano" +
+ "ChigaChibchaChagataiCànan ChuukMariChinuk WawaChoctawChipewyanCherok" +
+ "eeCheyenneCùrdais SoranîCoptaisCapiznonTurcais ChriomachCaisiubaisDa" +
+ "kotaDargwaTaitaDelawareSlaveyDogribDinkaZarmaDogriSòrbais Ìochdarach" +
+ "Dusun MheadhanachDualaMeadhan-DhuitsisJola-FonyiDyulaDazagaEmbuEfikÈ" +
+ "ipheitis ÀrsaidhEkajukElamaisMeadhan-BheurlaYupik MheadhanachEwondoC" +
+ "ànan na h-ExtremaduraFangFilipinisMeänkieliFonFraingis nan CajunMea" +
+ "dhan-FhraingisSeann-FhraingisArpitanFrìoslannais ThuathachFrìoslanna" +
+ "is EarachFriùilisGaGagauzGanGayoGbayaDari ZoroastrachGe’ezCiribeasai" +
+ "sGilakiMeadhan-Àrd-GearmailtisSeann-Àrd-GearmailtisKonkani GoaGondiG" +
+ "orontaloGotaisGreboGreugais ÀrsaidhGearmailtis EilbheiseachWayuuFraf" +
+ "raGusiiGwichʼinHaidaHakkaCànan Hawai’iHindis FhìditheachHiligaynonCà" +
+ "nan HetHmongSòrbais UachdarachXiangHupaIbanIbibioIlokoIngushBeurla C" +
+ "rìtheolach DiameugaLojbanNgombaMachamePeirsis IùdhachArabais Iùdhach" +
+ "Kara-KalpakKabyleKachinJjuKambaKawiKanembuTyapMakondeKabuverdianuKen" +
+ "yangKoroKaingangKhasiCànan KhotanKoyra ChiiniKhowarKirmanjkiKakoKale" +
+ "njinKimbunduKomi-PermyakKonkaniKpelleKarachay-BalkarKrioKinaray-aKur" +
+ "ukhShambalaBafiaKumykKutenaiLadinoLangiLahndaLambaLingua Franca Nova" +
+ "LiogùraisLakhótaLombardaisMongoLoziLuri ThuathachLuba-LuluaLuiseñoLu" +
+ "ndaLuoMizoLuyiaSìnis an LitreachaisLazCànan MadhuraMafaMagahiMaithil" +
+ "iMakasarMandingoMaasaiMabaMokshaMandarMendeMeruMorisyenMeadhan-Ghaei" +
+ "lgeMakhuwa-MeettoMeta’Mi’kmaqMinangkabauManchuManipuriMohawkMossiMar" +
+ "i ShiarachMundangIomadh cànanCreekMarwariMentawaiMyeneErzyaMazandera" +
+ "niMin NanNamaGearmailtis ÌochdarachNewariNiasCànan NiueAo NagaKwasio" +
+ "NgiemboonNogaiSeann-LochlannaisNovialN’KoLeasotais ThuathachNuerNewa" +
+ "ri ChlasaigeachNyamweziNyankoleNyoroNzimaOsageTurcais OtomanachPanga" +
+ "sinanPahlaviPampangaPapiamentoPalabhaisPicardGearmailtis Phennsylvan" +
+ "iaPlautdietschSeann-PheirsisPhenicisPiedmonteseCànan PohnpeiPruisisS" +
+ "eann-PhrovençalK’iche’Quichua Àrd-tìr ChimborazoRajasthaniRapa NuiCà" +
+ "nan RarotongaRomagnolRomboRomanaisRusynRovianaRwaSandaweSachaisArama" +
+ "is ShamaritanachSamburuSasakSantaliSaurashtraNgambaySanguSisilisAlba" +
+ "isSassareseCùrdais DheasachSenecaSenaSeriSelkupKoyraboro SenniSeann-" +
+ "GhaeilgeTachelhitShanArabais SeàdachSidamoSelayarSàmais DheasachSàma" +
+ "is LuleSàmais InariSàmais SkoltSoninkeSranan TongoSererSahoSukumaSus" +
+ "uCànan SumerComoraisKiswahili na CongoSuraidheac ChlasaigeachSuraidh" +
+ "eacTuluTimneTesoTerênaTetumTigreTivTokelauTsakhurKlingonTlingitTalys" +
+ "hTamashekNyasa TongaTok PisinTuroyoTarokoTsimshianTatiTumbukaTubhalu" +
+ "TasawaqCànan TuvaTamazight Meadhan na h-AtlasUdmurtUmbunduRootVaiVep" +
+ "sFlannrais SiarachVõroVunjoGearmailtis WallisWolayttaWarayWashoWarlp" +
+ "iriWuKalmykSogaYaoCànan YapYangbenYembaNheengatuCantonaisZapotecComh" +
+ "arran BlissCànan ZeelandZenagaTamazight Stannardach MorocoZuñiSusbai" +
+ "nt nach eil ’na chànanZazakiNuadh-Arabais StannardachGearmailtis na " +
+ "h-OstaireÀrd-Ghearmailtis na h-EilbheiseBeurla AstràiliaBeurla Chana" +
+ "daBeurla BhreatainnBeurla na h-AimeireagaSpàinntis na h-Aimeireaga L" +
+ "aidinneachSpàinntis EòrpachSpàinntis MheagsagachFraingis ChanadaFrai" +
+ "ngis EilbheiseachSagsannais ÌochdarachFlannraisPortagailis Bhraisile" +
+ "achPortagailis EòrpachMoldobhaisSèirb-ChròthaisisSìnis ShimplichteSì" +
+ "nis Thradaiseanta",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000d, 0x0017, 0x0021, 0x0025, 0x002e, 0x0037,
+ 0x003e, 0x0045, 0x004c, 0x0052, 0x0061, 0x0068, 0x0073, 0x007c,
+ 0x0083, 0x008a, 0x0094, 0x009c, 0x00a5, 0x00ac, 0x00b6, 0x00c0,
+ 0x00c8, 0x00cf, 0x00d3, 0x00da, 0x00f1, 0x00f8, 0x00ff, 0x010a,
+ 0x0115, 0x011b, 0x0123, 0x0126, 0x012e, 0x0134, 0x013d, 0x0147,
+ 0x0150, 0x0157, 0x015e, 0x0163, 0x016f, 0x0175, 0x017f, 0x0187,
+ 0x019d, 0x01a4, 0x01ad, 0x01b6, 0x01be, 0x01c6, 0x01cb, 0x01d0,
+ 0x01d6, 0x01dc, 0x01e5, 0x01f0, 0x0201, 0x0209, 0x0212, 0x0218,
+ // Entry 40 - 7F
+ 0x0223, 0x022e, 0x0239, 0x023d, 0x0247, 0x024e, 0x0251, 0x025d,
+ 0x0266, 0x026f, 0x0278, 0x0283, 0x028f, 0x0294, 0x029a, 0x02a2,
+ 0x02ab, 0x02b6, 0x02bc, 0x02c3, 0x02ce, 0x02d4, 0x02dd, 0x02e5,
+ 0x02e9, 0x02f1, 0x02fc, 0x0304, 0x0311, 0x0316, 0x0324, 0x032b,
+ 0x0331, 0x033b, 0x0347, 0x0350, 0x035a, 0x0365, 0x036b, 0x0375,
+ 0x037e, 0x0387, 0x038e, 0x0397, 0x039e, 0x03a5, 0x03ab, 0x03bc,
+ 0x03c6, 0x03cc, 0x03d3, 0x03e8, 0x03fd, 0x040d, 0x0413, 0x041b,
+ 0x0425, 0x042b, 0x0430, 0x0434, 0x043b, 0x0442, 0x0446, 0x0450,
+ // Entry 80 - BF
+ 0x0456, 0x0461, 0x0468, 0x046f, 0x0476, 0x047f, 0x0485, 0x0490,
+ 0x0498, 0x04a0, 0x04a6, 0x04b7, 0x04bc, 0x04c3, 0x04ce, 0x04d9,
+ 0x04e2, 0x04e7, 0x04f0, 0x04f9, 0x0501, 0x0506, 0x0518, 0x0524,
+ 0x052b, 0x0534, 0x053c, 0x0542, 0x054a, 0x0550, 0x0558, 0x0562,
+ 0x0568, 0x056f, 0x0576, 0x057c, 0x0584, 0x0591, 0x059b, 0x05a4,
+ 0x05a9, 0x05b1, 0x05b6, 0x05c2, 0x05ca, 0x05d1, 0x05d6, 0x05db,
+ 0x05e3, 0x05e9, 0x05ef, 0x05f5, 0x05f9, 0x0603, 0x0608, 0x060f,
+ 0x0615, 0x0628, 0x0630, 0x0635, 0x0639, 0x0640, 0x0647, 0x064f,
+ // Entry C0 - FF
+ 0x0661, 0x0661, 0x066e, 0x0674, 0x067b, 0x0682, 0x0688, 0x068f,
+ 0x06a1, 0x06a7, 0x06b8, 0x06cc, 0x06cf, 0x06ed, 0x06f6, 0x06fc,
+ 0x0702, 0x070a, 0x0715, 0x0715, 0x071a, 0x071f, 0x0729, 0x0730,
+ 0x0734, 0x0739, 0x073f, 0x0743, 0x0748, 0x074e, 0x075e, 0x0766,
+ 0x076b, 0x076f, 0x0775, 0x0778, 0x077f, 0x078a, 0x0793, 0x0797,
+ 0x079d, 0x07a1, 0x07a7, 0x07ad, 0x07bd, 0x07c1, 0x07c5, 0x07cc,
+ 0x07d1, 0x07d6, 0x07dc, 0x07e1, 0x07e8, 0x07ed, 0x07f4, 0x07fc,
+ 0x0808, 0x080c, 0x0817, 0x081e, 0x0827, 0x082f, 0x0837, 0x0847,
+ // Entry 100 - 13F
+ 0x084e, 0x0856, 0x0867, 0x0871, 0x0877, 0x087d, 0x0882, 0x088a,
+ 0x0890, 0x0896, 0x089b, 0x08a0, 0x08a5, 0x08b9, 0x08ca, 0x08cf,
+ 0x08df, 0x08e9, 0x08ee, 0x08f4, 0x08f8, 0x08fc, 0x08fc, 0x090f,
+ 0x0915, 0x091c, 0x092b, 0x093c, 0x0942, 0x0959, 0x095d, 0x0966,
+ 0x0970, 0x0973, 0x0985, 0x0996, 0x09a5, 0x09ac, 0x09c3, 0x09d7,
+ 0x09e0, 0x09e2, 0x09e8, 0x09eb, 0x09ef, 0x09f4, 0x0a04, 0x0a0b,
+ 0x0a16, 0x0a1c, 0x0a34, 0x0a4a, 0x0a55, 0x0a5a, 0x0a63, 0x0a69,
+ 0x0a6e, 0x0a7f, 0x0a97, 0x0a9c, 0x0aa2, 0x0aa7, 0x0ab0, 0x0ab5,
+ // Entry 140 - 17F
+ 0x0aba, 0x0aca, 0x0add, 0x0ae7, 0x0af1, 0x0af6, 0x0b09, 0x0b0e,
+ 0x0b12, 0x0b16, 0x0b1c, 0x0b21, 0x0b27, 0x0b27, 0x0b43, 0x0b49,
+ 0x0b4f, 0x0b56, 0x0b66, 0x0b76, 0x0b76, 0x0b81, 0x0b87, 0x0b8d,
+ 0x0b90, 0x0b95, 0x0b99, 0x0b99, 0x0ba0, 0x0ba4, 0x0bab, 0x0bb7,
+ 0x0bbe, 0x0bc2, 0x0bca, 0x0bcf, 0x0bdc, 0x0be8, 0x0bee, 0x0bf7,
+ 0x0bfb, 0x0c03, 0x0c0b, 0x0c17, 0x0c1e, 0x0c1e, 0x0c24, 0x0c33,
+ 0x0c37, 0x0c40, 0x0c40, 0x0c46, 0x0c4e, 0x0c53, 0x0c53, 0x0c58,
+ 0x0c5f, 0x0c65, 0x0c6a, 0x0c70, 0x0c75, 0x0c75, 0x0c87, 0x0c91,
+ // Entry 180 - 1BF
+ 0x0c91, 0x0c99, 0x0ca3, 0x0ca8, 0x0cac, 0x0cba, 0x0cba, 0x0cc4,
+ 0x0ccc, 0x0cd1, 0x0cd4, 0x0cd8, 0x0cdd, 0x0cf2, 0x0cf5, 0x0d03,
+ 0x0d07, 0x0d0d, 0x0d15, 0x0d1c, 0x0d24, 0x0d2a, 0x0d2e, 0x0d34,
+ 0x0d3a, 0x0d3f, 0x0d43, 0x0d4b, 0x0d5b, 0x0d69, 0x0d70, 0x0d79,
+ 0x0d84, 0x0d8a, 0x0d92, 0x0d98, 0x0d9d, 0x0daa, 0x0db1, 0x0dbe,
+ 0x0dc3, 0x0dc3, 0x0dca, 0x0dd2, 0x0dd7, 0x0ddc, 0x0de7, 0x0dee,
+ 0x0dee, 0x0df2, 0x0e09, 0x0e0f, 0x0e13, 0x0e1e, 0x0e25, 0x0e2b,
+ 0x0e34, 0x0e39, 0x0e4a, 0x0e50, 0x0e56, 0x0e69, 0x0e6d, 0x0e80,
+ // Entry 1C0 - 1FF
+ 0x0e88, 0x0e90, 0x0e95, 0x0e9a, 0x0e9f, 0x0eb0, 0x0eba, 0x0ec1,
+ 0x0ec9, 0x0ed3, 0x0edc, 0x0ee2, 0x0efb, 0x0f07, 0x0f15, 0x0f15,
+ 0x0f1d, 0x0f28, 0x0f28, 0x0f36, 0x0f3d, 0x0f4e, 0x0f59, 0x0f75,
+ 0x0f7f, 0x0f87, 0x0f97, 0x0f9f, 0x0f9f, 0x0fa4, 0x0fac, 0x0fac,
+ 0x0fb1, 0x0fb8, 0x0fb8, 0x0fbb, 0x0fc2, 0x0fc9, 0x0fde, 0x0fe5,
+ 0x0fea, 0x0ff1, 0x0ffb, 0x1002, 0x1007, 0x100e, 0x1014, 0x101d,
+ 0x102e, 0x1034, 0x1038, 0x103c, 0x1042, 0x1051, 0x105f, 0x105f,
+ 0x1068, 0x106c, 0x107c, 0x1082, 0x1082, 0x1089, 0x1099, 0x10a5,
+ // Entry 200 - 23F
+ 0x10b2, 0x10bf, 0x10c6, 0x10c6, 0x10d2, 0x10d7, 0x10db, 0x10db,
+ 0x10e1, 0x10e5, 0x10f1, 0x10f9, 0x110b, 0x1122, 0x112c, 0x112c,
+ 0x1130, 0x1135, 0x1139, 0x1140, 0x1145, 0x114a, 0x114d, 0x1154,
+ 0x115b, 0x1162, 0x1169, 0x116f, 0x1177, 0x1182, 0x118b, 0x1191,
+ 0x1197, 0x1197, 0x11a0, 0x11a4, 0x11ab, 0x11b2, 0x11b9, 0x11c4,
+ 0x11e0, 0x11e6, 0x11e6, 0x11ed, 0x11f1, 0x11f4, 0x11f4, 0x11f8,
+ 0x1209, 0x1209, 0x1209, 0x120e, 0x1213, 0x1225, 0x122d, 0x1232,
+ 0x1237, 0x123f, 0x1241, 0x1247, 0x1247, 0x124b, 0x124e, 0x1258,
+ // Entry 240 - 27F
+ 0x125f, 0x1264, 0x126d, 0x1276, 0x127d, 0x128c, 0x129a, 0x12a0,
+ 0x12bc, 0x12c1, 0x12e0, 0x12e6, 0x12ff, 0x12ff, 0x1317, 0x1337,
+ 0x1348, 0x1356, 0x1367, 0x137d, 0x13a3, 0x13b6, 0x13cc, 0x13cc,
+ 0x13dc, 0x13f1, 0x1407, 0x1410, 0x1428, 0x143c, 0x1446, 0x1459,
+ 0x146b, 0x147f,
+ },
+ },
+ { // gl
+ "abkhazoafrikaansakánamáricoaragonésárabeassamésaimaráacerbaixanobaskirbi" +
+ "elorrusobúlgarobmbengalítibetanobretónbosniocatalánChechenocorsochec" +
+ "oeslavo eclesiásticoChuvashgalésdinamarquésalemándivehidzongkhaewégr" +
+ "egoinglésesperantoespañolestonianoéuscaropersafinésfixianofaroésfran" +
+ "césfrisónirlandésgaélico escocésgalegoguaraníguxaratianomanxhausaheb" +
+ "reohindicroatahaitianohúngaroarmeniointerlinguaindonesioiboyi sichua" +
+ "nésislandésitalianoiuxaponésxavanésxeorxianokongokikuyucasacoklcambo" +
+ "dianokannadacoreanocachemirkurdokwquirguizlatínluxemburguésgandaling" +
+ "alalaotianolituanoluba-Katangaletónmalgaxemaorímacedoniomalabarmongo" +
+ "lmarathimalaiomaltésbirmanondebele do nortenepalíholandésnoruegués n" +
+ "ynorsknoruegués bokmalchewaoccitanooromooriyaosetiopunjabipolacopaxt" +
+ "únportuguésquechuaromancherundiromanésrusoruandéssánscritosindhisam" +
+ "i do nortesangocingaléseslovacoeslovenosamoanoshonasomalíalbanésserb" +
+ "ioswatisesotosondanéssuecoswahilitamiltelugutaxicotailandéstigriñatu" +
+ "rcomanotswanatonganésturcoxitsongatártarotahitianouigurucraínourdúuz" +
+ "becovendavietnamitawólofxhosayiddishiorubachinészulúacoliagqarameoma" +
+ "pucheasuasturianobembabezBaluchi occidentalbrxkigacheroquicurdo sora" +
+ "nítaitazarmadsbdualajola-fonyiembuibibioexipcio antigofilipinogagaga" +
+ "uzgrego antigoalemán suízogusiihawaianohsbngombamapachekabilekambama" +
+ "kondecaboverdianokoyra Chiiniklnkomi permiokonkanishambalabafiaLangi" +
+ "LakotaloziLurí do norteluba-lulualuoluyiamasaimerucrioulo mauritanom" +
+ "ghmgomohawkmundangvarias linguasMazandaranínaqBaixo alemánnmgnqoseso" +
+ "tho sa leboanusnyankolequichéromborwksaqsbpKurdo meridionalsenasesta" +
+ "chelhitsmasmjsmnsmsswctesotetúnklingontok pisintumbukatwqtzmLingua d" +
+ "escoñecidavaivunjoWarlpirisogatamazight de Marrocos estándarsen cont" +
+ "ido lingüísticoárabe estándar modernoalemán de austriaalto alemán su" +
+ "ízoinglés australianoinglés canadianoinglés británicoinglés dos Est" +
+ "ados Unidosespañol latinoamericanocastelánespañol de Méxicofrancés c" +
+ "anadianofrancés suízoBaixo saxónflamencoportugués brasileiroportugué" +
+ "s europeoserbocroatachinés simplificadochinés tradicional",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0015, 0x001d, 0x0026,
+ 0x002c, 0x0034, 0x0034, 0x003b, 0x0046, 0x004c, 0x0056, 0x005e,
+ 0x005e, 0x0060, 0x0068, 0x0070, 0x0077, 0x007d, 0x0085, 0x008d,
+ 0x008d, 0x0092, 0x0092, 0x0097, 0x00ab, 0x00b2, 0x00b8, 0x00c4,
+ 0x00cb, 0x00d1, 0x00d9, 0x00dd, 0x00e2, 0x00e9, 0x00f2, 0x00fa,
+ 0x0103, 0x010b, 0x0110, 0x0110, 0x0116, 0x011d, 0x0124, 0x012c,
+ 0x0133, 0x013c, 0x014d, 0x0153, 0x015b, 0x0166, 0x016a, 0x016f,
+ 0x0175, 0x017a, 0x017a, 0x0180, 0x0188, 0x0190, 0x0197, 0x0197,
+ // Entry 40 - 7F
+ 0x01a2, 0x01ab, 0x01ab, 0x01ae, 0x01bb, 0x01bb, 0x01bb, 0x01c4,
+ 0x01cc, 0x01ce, 0x01d6, 0x01de, 0x01e7, 0x01ec, 0x01f2, 0x01f2,
+ 0x01f8, 0x01fa, 0x0204, 0x020b, 0x0212, 0x0212, 0x021a, 0x021f,
+ 0x021f, 0x0221, 0x0229, 0x022f, 0x023c, 0x0241, 0x0241, 0x0248,
+ 0x0250, 0x0257, 0x0263, 0x0269, 0x0270, 0x0270, 0x0276, 0x027f,
+ 0x0286, 0x028c, 0x0293, 0x0299, 0x02a0, 0x02a7, 0x02a7, 0x02b7,
+ 0x02be, 0x02be, 0x02c7, 0x02d9, 0x02ea, 0x02ea, 0x02ea, 0x02ef,
+ 0x02f7, 0x02f7, 0x02fc, 0x0301, 0x0307, 0x030e, 0x030e, 0x0314,
+ // Entry 80 - BF
+ 0x031b, 0x0325, 0x032c, 0x0334, 0x0339, 0x0341, 0x0345, 0x034d,
+ 0x0357, 0x0357, 0x035d, 0x036a, 0x036f, 0x0378, 0x0380, 0x0388,
+ 0x038f, 0x0394, 0x039b, 0x03a3, 0x03a9, 0x03ae, 0x03b4, 0x03bd,
+ 0x03c2, 0x03c9, 0x03ce, 0x03d4, 0x03da, 0x03e4, 0x03ec, 0x03f5,
+ 0x03fb, 0x0404, 0x0409, 0x0411, 0x0419, 0x0422, 0x0427, 0x042f,
+ 0x0434, 0x043a, 0x043f, 0x0449, 0x0449, 0x0449, 0x044f, 0x0454,
+ 0x045b, 0x0461, 0x0461, 0x0468, 0x046d, 0x046d, 0x0472, 0x0472,
+ 0x0472, 0x0472, 0x0472, 0x0475, 0x0475, 0x0475, 0x0475, 0x0475,
+ // Entry C0 - FF
+ 0x0475, 0x0475, 0x0475, 0x0475, 0x047b, 0x0482, 0x0482, 0x0482,
+ 0x0482, 0x0482, 0x0482, 0x0482, 0x0485, 0x0485, 0x048e, 0x048e,
+ 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e,
+ 0x048e, 0x0493, 0x0493, 0x0496, 0x0496, 0x0496, 0x04a8, 0x04a8,
+ 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8, 0x04a8,
+ 0x04a8, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab,
+ 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04ab, 0x04af, 0x04af, 0x04af,
+ 0x04af, 0x04af, 0x04af, 0x04af, 0x04af, 0x04b7, 0x04b7, 0x04c4,
+ // Entry 100 - 13F
+ 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c4, 0x04c9, 0x04c9,
+ 0x04c9, 0x04c9, 0x04c9, 0x04ce, 0x04ce, 0x04d1, 0x04d1, 0x04d6,
+ 0x04d6, 0x04e0, 0x04e0, 0x04e0, 0x04e4, 0x04ea, 0x04ea, 0x04f8,
+ 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x0500,
+ 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500,
+ 0x0500, 0x0502, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0514, 0x0522, 0x0522, 0x0522, 0x0527, 0x0527, 0x0527,
+ // Entry 140 - 17F
+ 0x0527, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x0532, 0x0532,
+ 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532, 0x0532,
+ 0x0538, 0x053f, 0x053f, 0x053f, 0x053f, 0x053f, 0x0545, 0x0545,
+ 0x0545, 0x054a, 0x054a, 0x054a, 0x054a, 0x054a, 0x0551, 0x055d,
+ 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x0569, 0x0569, 0x0569,
+ 0x0569, 0x056c, 0x056c, 0x0577, 0x057e, 0x057e, 0x057e, 0x057e,
+ 0x057e, 0x057e, 0x057e, 0x057e, 0x0586, 0x058b, 0x058b, 0x058b,
+ 0x058b, 0x058b, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0590,
+ // Entry 180 - 1BF
+ 0x0590, 0x0596, 0x0596, 0x0596, 0x059a, 0x05a8, 0x05a8, 0x05b2,
+ 0x05b2, 0x05b2, 0x05b5, 0x05b5, 0x05ba, 0x05ba, 0x05ba, 0x05ba,
+ 0x05ba, 0x05ba, 0x05ba, 0x05ba, 0x05ba, 0x05bf, 0x05bf, 0x05bf,
+ 0x05bf, 0x05bf, 0x05c3, 0x05d4, 0x05d4, 0x05d7, 0x05da, 0x05da,
+ 0x05da, 0x05da, 0x05da, 0x05e0, 0x05e0, 0x05e0, 0x05e7, 0x05f5,
+ 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x05f5, 0x0601, 0x0601,
+ 0x0601, 0x0604, 0x0611, 0x0611, 0x0611, 0x0611, 0x0611, 0x0614,
+ 0x0614, 0x0614, 0x0614, 0x0614, 0x0617, 0x0627, 0x062a, 0x062a,
+ // Entry 1C0 - 1FF
+ 0x062a, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632,
+ 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632,
+ 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0639, 0x0639,
+ 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x063e, 0x063e, 0x063e,
+ 0x063e, 0x063e, 0x063e, 0x0641, 0x0641, 0x0641, 0x0641, 0x0644,
+ 0x0644, 0x0644, 0x0644, 0x0644, 0x0647, 0x0647, 0x0647, 0x0647,
+ 0x0657, 0x0657, 0x065b, 0x065b, 0x065b, 0x065e, 0x065e, 0x065e,
+ 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x066a, 0x066d,
+ // Entry 200 - 23F
+ 0x0670, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673, 0x0673,
+ 0x0673, 0x0673, 0x0673, 0x0673, 0x0676, 0x0676, 0x0676, 0x0676,
+ 0x0676, 0x0676, 0x067a, 0x067a, 0x0680, 0x0680, 0x0680, 0x0680,
+ 0x0680, 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, 0x0690, 0x0690,
+ 0x0690, 0x0690, 0x0690, 0x0690, 0x0697, 0x0697, 0x069a, 0x069a,
+ 0x069d, 0x069d, 0x069d, 0x069d, 0x06b0, 0x06b3, 0x06b3, 0x06b3,
+ 0x06b3, 0x06b3, 0x06b3, 0x06b3, 0x06b8, 0x06b8, 0x06b8, 0x06b8,
+ 0x06b8, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c4, 0x06c4, 0x06c4,
+ // Entry 240 - 27F
+ 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4,
+ 0x06e3, 0x06e3, 0x06fc, 0x06fc, 0x0714, 0x0714, 0x0726, 0x0739,
+ 0x074c, 0x075d, 0x076f, 0x0789, 0x07a1, 0x07aa, 0x07bd, 0x07bd,
+ 0x07cf, 0x07de, 0x07ea, 0x07f2, 0x0807, 0x0819, 0x0819, 0x0824,
+ 0x0838, 0x084b,
+ },
+ },
+ { // gsw
+ "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" +
+ "ischAwarischAymaraAserbaidschanischBaschkirischWiissrussischBulgaari" +
+ "schBislamaBambaraBengalischTibeetischBrötoonischBosnischKatalaanisch" +
+ "TschetscheenischChamorroKorsischCreeTschechischChileslawischTschuwas" +
+ "chischWalisischTänischTüütschMalediivischDschongkhaEweGriechischÄngl" +
+ "ischEschperantoSchpanischEestnischBaskischPersischFulFinnischFidschi" +
+ "anischFäröischFranzösischFriesischIirischSchottisch-GäälischGalizisc" +
+ "hGuaraniGujaratiManx-GäälischHaussaHebräischHindiHiri-MotuKroazischH" +
+ "aitischUngarischArmenischHereroInterlinguaIndonesischInterlingueIgbo" +
+ "Sezuanischs YiInupiakIdoIisländischItaliänischInukitutJapanischJavan" +
+ "ischGeorgischKongolesischKikuyu-SchpraachKwanyamaKasachischGröönländ" +
+ "ischKambodschanischKannadaKoreaanischKanuri-SchpraachKaschmirischKur" +
+ "dischKomi-SchpraachKornischKirgiisischLatiinLuxemburgischGanda-Schpr" +
+ "aachLimburgischLingalaLaozischLitauischLubaLettischMadagassischMarsc" +
+ "hallesischMaoriMazedonischMalayalamMongolischMarathiMalaiischMaltesi" +
+ "schBirmanischNauruischNord-Ndebele-SchpraachNepalesischNdongaNiderlä" +
+ "ndischNorwegisch NynorskNorwegisch BokmålSüüd-Ndebele-SchpraachNavaj" +
+ "o-SchpraachChewa-SchpraachOkzitanischOjibwa-SchpraachOromoOrijaOssez" +
+ "ischPandschabischPaliPolnischPaschtuPortugiisischQuechuaRätoromanisc" +
+ "hRundi-SchpraachRumänischRussischRuandischSanschkritSardischSindhiNo" +
+ "rd-SamischSangoSinghalesischSlowakischSlowenischSamoanischSchhonaSom" +
+ "aliAlbanischSerbischSwaziSüüd-Sotho-SchpraachSundanesischSchwedischS" +
+ "uaheliTamilischTeluguTadschikischThailändischTigrinjaTurkmenischTswa" +
+ "na-SchpraachTongaischTürkischTsongaTatarischTahitischUigurischUkrain" +
+ "ischUrduUsbekischVenda-SchpraachVietnamesischVolapükWallonischWolofX" +
+ "hosaJiddischYorubaZhuangChineesischZuluAcehAcholiAdangmeAdygaiAfrihi" +
+ "liAinuAkkadischAleutischSüüd-AltaischAltänglischAngikaAramääischArau" +
+ "kanischArapahoArawakAschturianischAwadhiBelutschischBalinesischBasaa" +
+ "BedauyeBembaBhodschpuriBikolischBiniBlackfoot-SchpraachBraj-BhakhaBu" +
+ "rjatischBugineesischBlinCaddoKariibischAtsamCebuanoTschibtschaTschag" +
+ "ataischTrukesischTscheremissischChinookChoctawChipewyanCherokeeCheye" +
+ "nneKoptischKrimtatarischKaschubischTakotaTargiinischDelaware-Schpraa" +
+ "chSlaveyTogribTinkaTogriNidersorbischTualaMittelniderländischTiulaEf" +
+ "ikischAltägyptischEkajukElamischMittelänglischEwondoPangwe-Schpraach" +
+ "FilipinoFonMittelfranzösischAltfranzösischNordfriesischOschtfriesisc" +
+ "hFriulischGaGayoGbayaGeezGilbertesischMittelhochtüütschAlthochtüütsc" +
+ "hGondiMongondouGotischGreboAltgriechischSchwiizertüütschKutchinischH" +
+ "aidaHawaiianischHiligaynonischHethitischMiaoObersorbischHupaIbanisch" +
+ "IlokanoInguschischLojbanischJüüdisch-PersischJüüdisch-ArabischKaraka" +
+ "lpakischKabylischKachin-SchpraachJjuKambaKawiKabardinischTyapKoroKha" +
+ "sischSakischKimbundu-SchpraachKonkaniKosraeanischKpelle-SchpraachKar" +
+ "atschaiisch-BalkarischKarelischOraon-SchpraachKumükischKutenai-Schpr" +
+ "aachLadinoLahndanischLambanischLesgischMongoRotse-SchpraachLuba-Lulu" +
+ "aLuiseno-SchpraachLunda-SchpraachLuo-SchpraachLushai-SchpraachMadure" +
+ "sischKhottaMaithiliMakassarischManding-SchpraachMassai-SchpraachMoks" +
+ "chamordwinischMandaresischMende-SchpraachMittelirischMicmac-Schpraac" +
+ "hMinangkabau-SchpraachMandschurischMeithei-SchpraachMohawk-Schpraach" +
+ "Mossi-SchpraachMehrschpraachigMuskogee-SchpraachMirandesischMarwaris" +
+ "chErzyaNeapolitanischNidertüütschNewarischNias-SchpraachNiue-Schpraa" +
+ "chNogaischAltnordischN’KoNord-Sotho-SchpraachAlt-NewariNyamwezi-Schp" +
+ "raachNyankoleNyoroNzimaOsage-SchpraachOsmanischPangasinanischMittelp" +
+ "ersischPampanggan-SchpraachPapiamentoPalauAltpersischPhönikischPonap" +
+ "eanischAltprovenzalischRajasthaniOschterinsel-SchpraachRarotonganisc" +
+ "hZigüünerschpraachAromunischSandawe-SchpraachJakutischSamaritanischS" +
+ "asakSantaliSizilianischSchottischSelkupischAltirischSchan-SchpraachS" +
+ "idamoSüüd-SamischLule-SamischInari-SamischSkolt-SamischSoninke-Schpr" +
+ "aachSogdischSrananischSerer-SchpraachSukuma-SchpraachSusuSumerischAl" +
+ "tsyrischSyrischTemneTereno-SchpraachTetum-SchpraachTigreTiv-Schpraac" +
+ "hTokelauanischKlingonischTlingit-SchpraachTamaseqTsonga-SchpraachNeu" +
+ "melanesischTsimshian-SchpraachTumbuka-SchpraachElliceanischTuwinisch" +
+ "UdmurtischUgaritischMbundu-SchpraachRootVai-SchpraachWotischWalamo-S" +
+ "chpraachWarayWasho-SchpraachKalmückischYao-SchpraachYapesischZapotek" +
+ "ischBliss-SymboolZenagaZuni-SchpraachKän schpraachliche InhaltZazaÖs" +
+ "chtriichischs TüütschSchwiizer HochtüütschAuschtralischs ÄnglischKan" +
+ "adischs ÄnglischBritischs ÄnglischAmerikanischs ÄnglischLatiinamerik" +
+ "anischs SchpanischIbeerischs SchpanischKanadischs FranzösischSchwiiz" +
+ "er FranzösischFläämischBrasilianischs PortugiisischIberischs Portugi" +
+ "isischMoldawischSerbo-KroatischVeräifachts ChineesischTradizionells " +
+ "Chineesisch",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039,
+ 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008f,
+ 0x0096, 0x009d, 0x00a7, 0x00b1, 0x00bd, 0x00c5, 0x00d1, 0x00e1,
+ 0x00e9, 0x00f1, 0x00f5, 0x0100, 0x010d, 0x011b, 0x0124, 0x012c,
+ 0x0135, 0x0141, 0x014b, 0x014e, 0x0158, 0x0161, 0x016c, 0x0176,
+ 0x017f, 0x0187, 0x018f, 0x0192, 0x019a, 0x01a7, 0x01b1, 0x01bd,
+ 0x01c6, 0x01cd, 0x01e2, 0x01eb, 0x01f2, 0x01fa, 0x0209, 0x020f,
+ 0x0219, 0x021e, 0x0227, 0x0230, 0x0238, 0x0241, 0x024a, 0x0250,
+ // Entry 40 - 7F
+ 0x025b, 0x0266, 0x0271, 0x0275, 0x0283, 0x028a, 0x028d, 0x0299,
+ 0x02a5, 0x02ad, 0x02b6, 0x02bf, 0x02c8, 0x02d4, 0x02e4, 0x02ec,
+ 0x02f6, 0x0306, 0x0315, 0x031c, 0x0327, 0x0337, 0x0343, 0x034b,
+ 0x0359, 0x0361, 0x036c, 0x0372, 0x037f, 0x038e, 0x0399, 0x03a0,
+ 0x03a8, 0x03b1, 0x03b5, 0x03bd, 0x03c9, 0x03d8, 0x03dd, 0x03e8,
+ 0x03f1, 0x03fb, 0x0402, 0x040b, 0x0415, 0x041f, 0x0428, 0x043e,
+ 0x0449, 0x044f, 0x045d, 0x046f, 0x0481, 0x0499, 0x04a9, 0x04b8,
+ 0x04c3, 0x04d3, 0x04d8, 0x04dd, 0x04e6, 0x04f3, 0x04f7, 0x04ff,
+ // Entry 80 - BF
+ 0x0506, 0x0513, 0x051a, 0x0528, 0x0537, 0x0541, 0x0549, 0x0552,
+ 0x055c, 0x0564, 0x056a, 0x0576, 0x057b, 0x0588, 0x0592, 0x059c,
+ 0x05a6, 0x05ad, 0x05b3, 0x05bc, 0x05c4, 0x05c9, 0x05df, 0x05eb,
+ 0x05f5, 0x05fc, 0x0605, 0x060b, 0x0617, 0x0624, 0x062c, 0x0637,
+ 0x0647, 0x0650, 0x0659, 0x065f, 0x0668, 0x0671, 0x067a, 0x0684,
+ 0x0688, 0x0691, 0x06a0, 0x06ad, 0x06b5, 0x06bf, 0x06c4, 0x06c9,
+ 0x06d1, 0x06d7, 0x06dd, 0x06e8, 0x06ec, 0x06f0, 0x06f6, 0x06fd,
+ 0x0703, 0x0703, 0x070b, 0x070b, 0x070f, 0x0718, 0x0718, 0x0721,
+ // Entry C0 - FF
+ 0x0721, 0x0730, 0x073c, 0x0742, 0x074e, 0x0759, 0x0759, 0x0760,
+ 0x0760, 0x0766, 0x0766, 0x0766, 0x0766, 0x0766, 0x0774, 0x0774,
+ 0x077a, 0x0786, 0x0791, 0x0791, 0x0796, 0x0796, 0x0796, 0x0796,
+ 0x079d, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07ad,
+ 0x07b6, 0x07ba, 0x07ba, 0x07ba, 0x07cd, 0x07cd, 0x07cd, 0x07d8,
+ 0x07d8, 0x07d8, 0x07d8, 0x07e2, 0x07ee, 0x07ee, 0x07f2, 0x07f2,
+ 0x07f7, 0x0801, 0x0801, 0x0806, 0x080d, 0x080d, 0x0818, 0x0825,
+ 0x082f, 0x083e, 0x0845, 0x084c, 0x0855, 0x085d, 0x0865, 0x0865,
+ // Entry 100 - 13F
+ 0x086d, 0x086d, 0x087a, 0x0885, 0x088b, 0x0896, 0x0896, 0x08a8,
+ 0x08ae, 0x08b4, 0x08b9, 0x08b9, 0x08be, 0x08cb, 0x08cb, 0x08d0,
+ 0x08e4, 0x08e4, 0x08e9, 0x08e9, 0x08e9, 0x08f1, 0x08f1, 0x08fe,
+ 0x0904, 0x090c, 0x091b, 0x091b, 0x0921, 0x0921, 0x0931, 0x0939,
+ 0x0939, 0x093c, 0x093c, 0x094e, 0x095d, 0x095d, 0x096a, 0x0978,
+ 0x0981, 0x0983, 0x0983, 0x0983, 0x0987, 0x098c, 0x098c, 0x0990,
+ 0x099d, 0x099d, 0x09b0, 0x09c0, 0x09c0, 0x09c5, 0x09ce, 0x09d5,
+ 0x09da, 0x09e7, 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x0a04, 0x0a09,
+ // Entry 140 - 17F
+ 0x0a09, 0x0a15, 0x0a15, 0x0a23, 0x0a2d, 0x0a31, 0x0a3d, 0x0a3d,
+ 0x0a41, 0x0a49, 0x0a49, 0x0a50, 0x0a5b, 0x0a5b, 0x0a5b, 0x0a65,
+ 0x0a65, 0x0a65, 0x0a78, 0x0a8b, 0x0a8b, 0x0a99, 0x0aa2, 0x0ab2,
+ 0x0ab5, 0x0aba, 0x0abe, 0x0aca, 0x0aca, 0x0ace, 0x0ace, 0x0ace,
+ 0x0ace, 0x0ad2, 0x0ad2, 0x0ada, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1,
+ 0x0ae1, 0x0ae1, 0x0af3, 0x0af3, 0x0afa, 0x0b06, 0x0b16, 0x0b2f,
+ 0x0b2f, 0x0b2f, 0x0b38, 0x0b47, 0x0b47, 0x0b47, 0x0b47, 0x0b51,
+ 0x0b62, 0x0b68, 0x0b68, 0x0b73, 0x0b7d, 0x0b85, 0x0b85, 0x0b85,
+ // Entry 180 - 1BF
+ 0x0b85, 0x0b85, 0x0b85, 0x0b8a, 0x0b99, 0x0b99, 0x0b99, 0x0ba3,
+ 0x0bb4, 0x0bc3, 0x0bd0, 0x0be0, 0x0be0, 0x0be0, 0x0be0, 0x0beb,
+ 0x0beb, 0x0bf1, 0x0bf9, 0x0c05, 0x0c16, 0x0c26, 0x0c26, 0x0c38,
+ 0x0c44, 0x0c53, 0x0c53, 0x0c53, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c6f,
+ 0x0c84, 0x0c91, 0x0ca2, 0x0cb2, 0x0cc1, 0x0cc1, 0x0cc1, 0x0cd0,
+ 0x0ce2, 0x0cee, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cfd, 0x0cfd, 0x0cfd,
+ 0x0d0b, 0x0d0b, 0x0d19, 0x0d22, 0x0d30, 0x0d3e, 0x0d3e, 0x0d3e,
+ 0x0d3e, 0x0d46, 0x0d51, 0x0d51, 0x0d57, 0x0d6b, 0x0d6b, 0x0d75,
+ // Entry 1C0 - 1FF
+ 0x0d87, 0x0d8f, 0x0d94, 0x0d99, 0x0da8, 0x0db1, 0x0dbf, 0x0dcd,
+ 0x0de1, 0x0deb, 0x0df0, 0x0df0, 0x0df0, 0x0df0, 0x0dfb, 0x0dfb,
+ 0x0e06, 0x0e06, 0x0e06, 0x0e12, 0x0e12, 0x0e22, 0x0e22, 0x0e22,
+ 0x0e2c, 0x0e42, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e63, 0x0e63,
+ 0x0e63, 0x0e63, 0x0e6d, 0x0e6d, 0x0e7e, 0x0e87, 0x0e94, 0x0e94,
+ 0x0e99, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0eac, 0x0eb6, 0x0eb6,
+ 0x0eb6, 0x0eb6, 0x0eb6, 0x0eb6, 0x0ec0, 0x0ec0, 0x0ec9, 0x0ec9,
+ 0x0ec9, 0x0ed8, 0x0ed8, 0x0ede, 0x0ede, 0x0ede, 0x0eec, 0x0ef8,
+ // Entry 200 - 23F
+ 0x0f05, 0x0f12, 0x0f23, 0x0f2b, 0x0f35, 0x0f44, 0x0f44, 0x0f44,
+ 0x0f54, 0x0f58, 0x0f61, 0x0f61, 0x0f61, 0x0f6b, 0x0f72, 0x0f72,
+ 0x0f72, 0x0f77, 0x0f77, 0x0f87, 0x0f96, 0x0f9b, 0x0fa8, 0x0fb5,
+ 0x0fb5, 0x0fc0, 0x0fd1, 0x0fd1, 0x0fd8, 0x0fe8, 0x0ff6, 0x0ff6,
+ 0x0ff6, 0x0ff6, 0x1009, 0x1009, 0x101a, 0x1026, 0x1026, 0x102f,
+ 0x102f, 0x1039, 0x1043, 0x1053, 0x1057, 0x1064, 0x1064, 0x1064,
+ 0x1064, 0x1064, 0x106b, 0x106b, 0x106b, 0x106b, 0x107b, 0x1080,
+ 0x108f, 0x108f, 0x108f, 0x109b, 0x109b, 0x109b, 0x10a8, 0x10b1,
+ // Entry 240 - 27F
+ 0x10b1, 0x10b1, 0x10b1, 0x10b1, 0x10bc, 0x10c9, 0x10c9, 0x10cf,
+ 0x10cf, 0x10dd, 0x10f7, 0x10fb, 0x10fb, 0x10fb, 0x1115, 0x112c,
+ 0x1144, 0x1158, 0x116b, 0x1182, 0x11a0, 0x11b5, 0x11b5, 0x11b5,
+ 0x11cc, 0x11e2, 0x11e2, 0x11ed, 0x1209, 0x1220, 0x122a, 0x1239,
+ 0x1251, 0x126a,
+ },
+ },
+ { // gu
+ guLangStr,
+ guLangIdx,
+ },
+ { // guz
+ "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
+ "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
+ "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
+ "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
+ "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
+ "rubaKichinaKizuluEkegusii",
+ []uint16{ // 318 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
+ 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
+ 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
+ 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
+ // Entry 40 - 7F
+ 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
+ 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
+ // Entry 80 - BF
+ 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
+ 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
+ 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
+ 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry C0 - FF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 100 - 13F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0171,
+ },
+ },
+ { // gv
+ "Gaelg",
+ []uint16{ // 55 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005,
+ },
+ },
+ { // ha
+ "AkanAmharikLarabciBelarusanciBulgaranciBengaliHarshen CakJamusanciGirkan" +
+ "ciTuranciIspaniyanciParisanciFaransanciHausaHarshen HindiHarshen Hun" +
+ "gariHarshen IndunusiyaInyamuranciItaliyanciJapananciJabananciHarshen" +
+ " KimarHarshen KoreyaHarshen MalaiBurmanciNepaliHolanciPunjabiHarshen" +
+ " PolanHarshen PortugalRomaniyanciRashanciKiniyaruwandaSomaliHarshen " +
+ "SuwedanTamilThaiHarshen TurkiyyaHarshen YukurenHarshen UrduHarshen B" +
+ "iyetinamYarbanciHarshen SinHarshen Zulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0027,
+ 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x004a, 0x0051, 0x0051, 0x005c,
+ 0x005c, 0x005c, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006f,
+ 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0074,
+ 0x0074, 0x0081, 0x0081, 0x0081, 0x0081, 0x0090, 0x0090, 0x0090,
+ // Entry 40 - 7F
+ 0x0090, 0x00a2, 0x00a2, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
+ 0x00b7, 0x00b7, 0x00c0, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9,
+ 0x00c9, 0x00c9, 0x00d6, 0x00d6, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
+ 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
+ 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
+ 0x00e4, 0x00e4, 0x00e4, 0x00f1, 0x00f1, 0x00f9, 0x00f9, 0x00f9,
+ 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x011a,
+ // Entry 80 - BF
+ 0x011a, 0x012a, 0x012a, 0x012a, 0x012a, 0x0135, 0x013d, 0x014a,
+ 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a,
+ 0x014a, 0x014a, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150,
+ 0x015f, 0x015f, 0x0164, 0x0164, 0x0164, 0x0168, 0x0168, 0x0168,
+ 0x0168, 0x0168, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0187,
+ 0x0193, 0x0193, 0x0193, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
+ 0x01a4, 0x01ac, 0x01ac, 0x01b7, 0x01c3,
+ },
+ },
+ { // haw
+ "ʻAlapiaWaleKenemakaKelemāniaHelenePelekāniaPanioloPīkīPalaniʻAilikiHeber" +
+ "aʻĪkāliaKepanīKōleaLākinaMāoriHōlaniPukikīLūkiaKāmoaKuekeneTongaPola" +
+ "polaWiekanamaPākēKuikilani KelemāniaʻŌlelo HawaiʻiʻIke ʻole ‘ia a kū" +
+ "pono ʻole paha ka ʻōleloPelekāne Nū HōlaniPelekāne KanakāPelekānia P" +
+ "ekekānePelekānia ʻAmelikaPalani KanakāKuikilaniPukikī PalakilaPākē H" +
+ "oʻomaʻalahi ʻiaPākē Kuʻuna",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x000c, 0x0014,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x0024, 0x002e, 0x002e, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003b, 0x003b, 0x0041,
+ 0x0041, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049,
+ 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
+ // Entry 40 - 7F
+ 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
+ 0x0059, 0x0059, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060,
+ 0x0060, 0x0060, 0x0060, 0x0060, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d,
+ 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x0073, 0x0073,
+ 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073,
+ 0x0073, 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a,
+ 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a,
+ // Entry 80 - BF
+ 0x007a, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0087, 0x0087,
+ 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
+ 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d,
+ 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094,
+ 0x0094, 0x0099, 0x0099, 0x0099, 0x0099, 0x00a1, 0x00a1, 0x00a1,
+ 0x00a1, 0x00a1, 0x00a1, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
+ 0x00aa, 0x00aa, 0x00aa, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ // Entry C0 - FF
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ // Entry 100 - 13F
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4,
+ // Entry 140 - 17F
+ 0x00c4, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ // Entry 180 - 1BF
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ // Entry 1C0 - 1FF
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ // Entry 200 - 23F
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5,
+ 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
+ // Entry 240 - 27F
+ 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x011c, 0x012d, 0x0141, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155,
+ 0x0163, 0x016c, 0x016c, 0x016c, 0x017c, 0x017c, 0x017c, 0x017c,
+ 0x0196, 0x01a4,
+ },
+ },
+ { // he
+ heLangStr,
+ heLangIdx,
+ },
+ { // hi
+ hiLangStr,
+ hiLangIdx,
+ },
+ { // hr
+ hrLangStr,
+ hrLangIdx,
+ },
+ { // hsb
+ "afaršćinaabchazišćinaafrikaanšćinaakanšćinaamharšćinaaragonšćinaarabšćin" +
+ "aasamšćinaawaršćinaaymaršćinaazerbajdźanšćinabaškiršćinaběłorušćinab" +
+ "ołharšćinabislamšćinabambarabengalšćinatibetšćinabretonšćinabosnišći" +
+ "nakatalanšćinačamoršćinakorsišćinakričěšćinawalizišćinadanšćinaněmči" +
+ "nadivehidzongkhaewegrjekšćinajendźelšćinaesperantošpanišćinaestišćin" +
+ "abaskišćinapersišćinafinšćinafidźišćinafäröšćinafrancošćinafrizišćin" +
+ "airšćinašotiska gelšćinagalicišćinaguaranigujaratimanšćinahausahebre" +
+ "jšćinahindišćinachorwatšćinahaitišćinamadźaršćinaarmenšćinainterling" +
+ "uaindonešćinaigbosichuan yiinupiakidoislandšćinaitalšćinainuitšćinaj" +
+ "apanšćinajavašćinageorgišćinakikuyukazachšćinagröndlandšćinakhmeršći" +
+ "nakannadšćinakorejšćinakašmiršćinakurdišćinakornišćinakirgišćinałaćo" +
+ "nšćinaluxemburgšćinagandšćinalimburšćinalingalalaošćinalitawšćinalub" +
+ "a-katangaletišćinamalagassišćinamaoršćinamakedonšćinamalajamšćinamon" +
+ "golšćinamaratišćinamalajšćinamaltašćinaburmašćinanaurušćinasewjero-n" +
+ "debelenepalšćinanižozemšćinanorwegšćina (nynorsk)norwegšćina (bokmål" +
+ ")navahookcitanšćinaoromoorijšćinapandźabšćinapólšćinapaštunšćinaport" +
+ "ugalšćinakečuaretoromanšćinakirundišćinarumunšćinarušćinakinjarwanda" +
+ "sanskritsardinšćinasindhišćinasewjerosamišćinasangosinghalšćinasłowa" +
+ "kšćinasłowjenšćinasamoašćinašonašćinasomališćinaalbanšćinaserbišćina" +
+ "siswatijužnosotšćina (Sesotho)sundanezišćinašwedšćinasuahelšćinatami" +
+ "lšćinatelugutadźikšćinathailandšćinatigrinšćinaturkmenšćinatswanaton" +
+ "gašćinaturkowšćinatsongatataršćinatahitišćinaujguršćinaukrainšćinaur" +
+ "dušćinauzbekšćinavietnamšćinavolapükwalonšćinawolofxhosajidišćinajor" +
+ "ubašćinazhuangchinšćinazulušćinaaghemšćinaanglosakšćinaarawkanšćinap" +
+ "areasturšćinabembabenabodobuginezišćinachigachoctawšćinacherokeesora" +
+ "nitaitazarmadelnjoserbšćinadualajola-fonyiembufilipinšćinagagauzišći" +
+ "nagotšćinašwicarska němčinagusiihawaiišćinahornjoserbšćinangombamach" +
+ "amekabylšćinakambamakondekapverdšćinakoyra chiinikalenjinpermska kom" +
+ "išćinakonkanišambalabafialangilakotaluoluhyamasaišćinamerumauriciska" +
+ " kreolšćinamakhuwa-meettometa’mohawkšćinamundangkriknamadelnjoněmčin" +
+ "akwasion’konuernyankoleprušćinakʼicheʼromborwasamburusangusicilšćina" +
+ "senakoyra sennitašelhitjužnosamišćinalule-samišćinainari-samišćinask" +
+ "olt-samišćinasaterfrizišćinakongoska suahelšćinatesotasawaqtamazight" +
+ " (srjedźny Marokko)njeznata rěčvaivunjosogatamazightžadyn rěčny wobs" +
+ "ahmoderna wysokoarabšćinaawstriska němčinašwicarska wysokoněmčinaaws" +
+ "tralska jendźelšćinakanadiska jendźelšćinabritiska jendźelšćinaameri" +
+ "ska jendźelšćinałaćonskoameriska španišćinaeuropska španišćinamexisk" +
+ "a španišćinakanadiska francošćinašwicarska francošćinaflamšćinabrazi" +
+ "lska portugalšćinaeuropska portugalšćinamoldawšćinaserbochorwatšćina" +
+ "chinšćina (zjednorjena)chinšćina (tradicionalna)",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000b, 0x0019, 0x0019, 0x0028, 0x0033, 0x003f, 0x004c,
+ 0x0057, 0x0062, 0x006d, 0x0079, 0x008c, 0x009a, 0x00a9, 0x00b7,
+ 0x00c4, 0x00cb, 0x00d8, 0x00e4, 0x00f1, 0x00fd, 0x010b, 0x010b,
+ 0x0118, 0x0124, 0x0127, 0x0132, 0x0132, 0x0132, 0x013f, 0x0149,
+ 0x0152, 0x0158, 0x0160, 0x0163, 0x016f, 0x017e, 0x0187, 0x0194,
+ 0x019f, 0x01ab, 0x01b7, 0x01b7, 0x01c1, 0x01ce, 0x01db, 0x01e8,
+ 0x01f4, 0x01fd, 0x0210, 0x021d, 0x0224, 0x022c, 0x0236, 0x023b,
+ 0x0248, 0x0254, 0x0254, 0x0262, 0x026e, 0x027c, 0x0288, 0x0288,
+ // Entry 40 - 7F
+ 0x0293, 0x02a0, 0x02a0, 0x02a4, 0x02ae, 0x02b5, 0x02b8, 0x02c5,
+ 0x02d0, 0x02dc, 0x02e8, 0x02f3, 0x0300, 0x0300, 0x0306, 0x0306,
+ 0x0313, 0x0324, 0x0330, 0x033d, 0x0349, 0x0349, 0x0357, 0x0363,
+ 0x0363, 0x036f, 0x037b, 0x0389, 0x0399, 0x03a4, 0x03b1, 0x03b8,
+ 0x03c2, 0x03ce, 0x03da, 0x03e5, 0x03f5, 0x03f5, 0x0400, 0x040e,
+ 0x041c, 0x0429, 0x0436, 0x0442, 0x044e, 0x045a, 0x0466, 0x0475,
+ 0x0481, 0x0481, 0x0490, 0x04a7, 0x04be, 0x04be, 0x04c4, 0x04c4,
+ 0x04d2, 0x04d2, 0x04d7, 0x04e2, 0x04e2, 0x04f1, 0x04f1, 0x04fc,
+ // Entry 80 - BF
+ 0x050a, 0x0519, 0x051f, 0x052f, 0x053d, 0x0549, 0x0552, 0x055d,
+ 0x0565, 0x0572, 0x057f, 0x0591, 0x0596, 0x05a4, 0x05b2, 0x05c1,
+ 0x05cd, 0x05d9, 0x05e6, 0x05f2, 0x05fe, 0x0605, 0x061f, 0x062f,
+ 0x063b, 0x0648, 0x0654, 0x065a, 0x0668, 0x0677, 0x0684, 0x0692,
+ 0x0698, 0x06a4, 0x06b1, 0x06b7, 0x06c3, 0x06d0, 0x06dc, 0x06e9,
+ 0x06f4, 0x0700, 0x0700, 0x070e, 0x0716, 0x0722, 0x0727, 0x072c,
+ 0x0737, 0x0744, 0x074a, 0x0755, 0x0760, 0x0760, 0x0760, 0x0760,
+ 0x0760, 0x0760, 0x0760, 0x076c, 0x076c, 0x076c, 0x076c, 0x076c,
+ // Entry C0 - FF
+ 0x076c, 0x076c, 0x077b, 0x077b, 0x077b, 0x0789, 0x0789, 0x0789,
+ 0x0789, 0x0789, 0x0789, 0x0789, 0x078d, 0x078d, 0x0799, 0x0799,
+ 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799,
+ 0x0799, 0x079e, 0x079e, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2,
+ 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2,
+ 0x07a2, 0x07a6, 0x07a6, 0x07a6, 0x07b5, 0x07b5, 0x07b5, 0x07b5,
+ 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07ba, 0x07ba, 0x07ba,
+ 0x07ba, 0x07ba, 0x07ba, 0x07c8, 0x07c8, 0x07d0, 0x07d0, 0x07d6,
+ // Entry 100 - 13F
+ 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07db, 0x07db,
+ 0x07db, 0x07db, 0x07db, 0x07e0, 0x07e0, 0x07f1, 0x07f1, 0x07f6,
+ 0x07f6, 0x0800, 0x0800, 0x0800, 0x0804, 0x0804, 0x0804, 0x0804,
+ 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0812,
+ 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812,
+ 0x0812, 0x0812, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820,
+ 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x082a,
+ 0x082a, 0x082a, 0x083e, 0x083e, 0x083e, 0x0843, 0x0843, 0x0843,
+ // Entry 140 - 17F
+ 0x0843, 0x0850, 0x0850, 0x0850, 0x0850, 0x0850, 0x0861, 0x0861,
+ 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861,
+ 0x0867, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x087a, 0x087a,
+ 0x087a, 0x087f, 0x087f, 0x087f, 0x087f, 0x087f, 0x0886, 0x0894,
+ 0x0894, 0x0894, 0x0894, 0x0894, 0x0894, 0x08a0, 0x08a0, 0x08a0,
+ 0x08a0, 0x08a8, 0x08a8, 0x08bb, 0x08c2, 0x08c2, 0x08c2, 0x08c2,
+ 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08ca, 0x08cf, 0x08cf, 0x08cf,
+ 0x08cf, 0x08cf, 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d4,
+ // Entry 180 - 1BF
+ 0x08d4, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da,
+ 0x08da, 0x08da, 0x08dd, 0x08dd, 0x08e2, 0x08e2, 0x08e2, 0x08e2,
+ 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08ee, 0x08ee, 0x08ee,
+ 0x08ee, 0x08ee, 0x08f2, 0x0909, 0x0909, 0x0917, 0x091e, 0x091e,
+ 0x091e, 0x091e, 0x091e, 0x092b, 0x092b, 0x092b, 0x0932, 0x0932,
+ 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x0936,
+ 0x0936, 0x093a, 0x0949, 0x0949, 0x0949, 0x0949, 0x0949, 0x094f,
+ 0x094f, 0x094f, 0x094f, 0x094f, 0x0955, 0x0955, 0x0959, 0x0959,
+ // Entry 1C0 - 1FF
+ 0x0959, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961,
+ 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961,
+ 0x0961, 0x0961, 0x0961, 0x0961, 0x096b, 0x096b, 0x0974, 0x0974,
+ 0x0974, 0x0974, 0x0974, 0x0974, 0x0974, 0x0979, 0x0979, 0x0979,
+ 0x0979, 0x0979, 0x0979, 0x097c, 0x097c, 0x097c, 0x097c, 0x0983,
+ 0x0983, 0x0983, 0x0983, 0x0983, 0x0988, 0x0994, 0x0994, 0x0994,
+ 0x0994, 0x0994, 0x0998, 0x0998, 0x0998, 0x09a3, 0x09a3, 0x09a3,
+ 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09ac, 0x09bd, 0x09cd,
+ // Entry 200 - 23F
+ 0x09de, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x0a00,
+ 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a16, 0x0a16, 0x0a16, 0x0a16,
+ 0x0a16, 0x0a16, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a,
+ 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a,
+ 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a1a, 0x0a21, 0x0a21,
+ 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a4c, 0x0a4f, 0x0a4f, 0x0a4f,
+ 0x0a4f, 0x0a4f, 0x0a4f, 0x0a4f, 0x0a54, 0x0a54, 0x0a54, 0x0a54,
+ 0x0a54, 0x0a54, 0x0a54, 0x0a54, 0x0a54, 0x0a58, 0x0a58, 0x0a58,
+ // Entry 240 - 27F
+ 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58,
+ 0x0a61, 0x0a61, 0x0a76, 0x0a76, 0x0a8f, 0x0a8f, 0x0aa2, 0x0abc,
+ 0x0ad6, 0x0aef, 0x0b07, 0x0b1f, 0x0b3f, 0x0b55, 0x0b6a, 0x0b6a,
+ 0x0b81, 0x0b99, 0x0b99, 0x0ba4, 0x0bbd, 0x0bd5, 0x0be2, 0x0bf5,
+ 0x0c0e, 0x0c29,
+ },
+ },
+ { // hu
+ huLangStr,
+ huLangIdx,
+ },
+ { // hy
+ hyLangStr,
+ hyLangIdx,
+ },
+ { // id
+ idLangStr,
+ idLangIdx,
+ },
+ { // ig
+ "AkanAmariikịArabiikịBelaruusuBọlụgarịaBengaliCheekịJamaanGiriikịOyiboPan" +
+ "yaPeshanFụrenchAwụsaHindiMagịyaIndonisiaIgboItaloJapaneseJavaKeme, E" +
+ "titiKoriaMaleyiMịanmaNepaliDọọchPunjabiPoliishiPotokiRumeniaRọshanRụ" +
+ "wandaSomaliSụwidiishiTamụlụTaịTọkiishiUkureenịUruduViyetịnaamụYoruba" +
+ "MandarịịnịZulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000e, 0x000e,
+ 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0021, 0x0030,
+ 0x0030, 0x0030, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
+ 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x004e, 0x0053, 0x0053, 0x0058,
+ 0x0058, 0x0058, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0067,
+ 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x006e,
+ 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007b, 0x007b, 0x007b,
+ // Entry 40 - 7F
+ 0x007b, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088,
+ 0x008d, 0x008d, 0x0095, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099,
+ 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
+ 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
+ 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
+ 0x00a9, 0x00a9, 0x00a9, 0x00af, 0x00af, 0x00b7, 0x00b7, 0x00b7,
+ 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d5,
+ // Entry 80 - BF
+ 0x00d5, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e2, 0x00ea, 0x00f3,
+ 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3,
+ 0x00f3, 0x00f3, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9,
+ 0x0105, 0x0105, 0x010f, 0x010f, 0x010f, 0x0114, 0x0114, 0x0114,
+ 0x0114, 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128,
+ 0x012d, 0x012d, 0x012d, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c,
+ 0x013c, 0x0142, 0x0142, 0x0152, 0x0156,
+ },
+ },
+ { // ii
+ "ꄓꇩꉙꑱꇩꉙꑭꀠꑸꉙꃔꇩꉙꆈꌠꉙꑴꄊꆺꉙꏝꀪꉙꁍꄨꑸꉙꊉꇩꉙꍏꇩꉙꅉꀋꌠꅇꂷꀠꑟꁍꄨꑸꉙꈝꐯꍏꇩꉙꀎꋏꍏꇩꉙ",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0012, 0x0012, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ // Entry 40 - 7F
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0030, 0x0030, 0x0030, 0x0030,
+ 0x003c, 0x003c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ // Entry 80 - BF
+ 0x0045, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ // Entry C0 - FF
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ // Entry 100 - 13F
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ // Entry 140 - 17F
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ // Entry 180 - 1BF
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ // Entry 1C0 - 1FF
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ // Entry 200 - 23F
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0072, 0x0072, 0x0072, 0x0072,
+ 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
+ 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
+ // Entry 240 - 27F
+ 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
+ 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
+ 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
+ 0x0072, 0x0072, 0x0072, 0x0072, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0093, 0x00a2,
+ },
+ },
+ { // is
+ isLangStr,
+ isLangIdx,
+ },
+ { // it
+ itLangStr,
+ itLangIdx,
+ },
+ { // ja
+ jaLangStr,
+ jaLangIdx,
+ },
+ { // jgo
+ "AlâbɛNjámanŊgɛlɛ̂kAŋgɛlúshiFɛlánciShinwâNdaꞌacú-pʉɔ yi pɛ́ ká kɛ́ jí",
+ []uint16{ // 557 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x0019, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ // Entry 40 - 7F
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ // Entry 80 - BF
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ // Entry C0 - FF
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ // Entry 100 - 13F
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ // Entry 140 - 17F
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ // Entry 180 - 1BF
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ // Entry 1C0 - 1FF
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ // Entry 200 - 23F
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x005c,
+ },
+ },
+ { // jmc
+ "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" +
+ "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" +
+ "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" +
+ "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" +
+ "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" +
+ "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKim" +
+ "achame",
+ []uint16{ // 338 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011,
+ 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030,
+ 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b,
+ 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d,
+ 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085,
+ 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097,
+ // Entry 40 - 7F
+ 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
+ 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea,
+ 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd,
+ 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111,
+ // Entry 80 - BF
+ 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135,
+ 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135,
+ 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
+ 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
+ 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry C0 - FF
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 100 - 13F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 140 - 17F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x01a2,
+ },
+ },
+ { // ka
+ kaLangStr,
+ kaLangIdx,
+ },
+ { // kab
+ "TakanitTamahrictTaɛrabtTabilarusitTabulgaritTabengalitTačikitTalmantTagr" +
+ "ikitTaglizitTaspenyulitTafarisitTafransistTahwasitTahenditTahungarit" +
+ "TandunisitTigbutTaṭalyanitTajapunitTajavanitTakemritTakuritTamalawit" +
+ "TaburmisitTanipalitTadučitTapunjabitTapulunitTapurtugalitTarumanitTa" +
+ "rusitTaruwanditTaṣumalitTaswiditTaṭamulitTaṭaylunditTaṭurkitTukranit" +
+ "TurdutTabyiṭnamitTayurubitTacinwat, TamundarintTazulutTaqbaylit",
+ []uint16{ // 343 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010,
+ 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0023, 0x002d,
+ 0x002d, 0x002d, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
+ 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+ 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0056, 0x0056, 0x0061,
+ 0x0061, 0x0061, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x0074,
+ 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x007c,
+ 0x007c, 0x0084, 0x0084, 0x0084, 0x0084, 0x008e, 0x008e, 0x008e,
+ // Entry 40 - 7F
+ 0x008e, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e,
+ 0x00aa, 0x00aa, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
+ 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00d4, 0x00d4, 0x00de, 0x00de, 0x00de,
+ 0x00e7, 0x00e7, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef,
+ 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00f9, 0x00f9, 0x0102,
+ // Entry 80 - BF
+ 0x0102, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x011e, 0x0128,
+ 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128,
+ 0x0128, 0x0128, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133,
+ 0x013b, 0x013b, 0x0146, 0x0146, 0x0146, 0x0153, 0x0153, 0x0153,
+ 0x0153, 0x0153, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d, 0x0165,
+ 0x016b, 0x016b, 0x016b, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,
+ 0x0178, 0x0181, 0x0181, 0x0196, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ // Entry C0 - FF
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ // Entry 100 - 13F
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ // Entry 140 - 17F
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x01a6,
+ },
+ },
+ { // kam
+ "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
+ "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
+ "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
+ "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
+ "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
+ "rubaKichinaKizuluKikamba",
+ []uint16{ // 346 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
+ 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
+ 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
+ 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
+ // Entry 40 - 7F
+ 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
+ 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
+ // Entry 80 - BF
+ 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
+ 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
+ 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
+ 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry C0 - FF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 100 - 13F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 140 - 17F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0170,
+ },
+ },
+ { // kde
+ "ChakanChamhaliChalabuChibelalusiChibulgaliaChibanglaChichechiChidyeluman" +
+ "iChigilichiChiingelezaChihispaniaChiajemiChifalansaChihausaChihindiC" +
+ "hihungaliChiiongonesiaChiigboChiitalianoChidyapaniChidyavaChikambodi" +
+ "aChikoleaChimalesiaChibulmaChinepaliChiholanziChipunjabiChipolandiCh" +
+ "ilenoChilomaniaChilusiChinyalwandaChisomaliChiswidiChitamilChitailan" +
+ "diChituluchiChiuklaniaChiulduChivietinamuChiyolubaChichinaChizuluChi" +
+ "makonde",
+ []uint16{ // 351 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0020, 0x002b,
+ 0x002b, 0x002b, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d,
+ 0x0049, 0x0049, 0x0049, 0x0049, 0x0053, 0x005e, 0x005e, 0x0069,
+ 0x0069, 0x0069, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b,
+ 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0083,
+ 0x0083, 0x008b, 0x008b, 0x008b, 0x008b, 0x0095, 0x0095, 0x0095,
+ // Entry 40 - 7F
+ 0x0095, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
+ 0x00b4, 0x00b4, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb,
+ 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe,
+ 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0112,
+ // Entry 80 - BF
+ 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0123, 0x012a, 0x0136,
+ 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136,
+ 0x0136, 0x0136, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
+ 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
+ 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry C0 - FF
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 100 - 13F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 140 - 17F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x01a3,
+ },
+ },
+ { // kea
+ "abkaziuafrikanerakanamarikuarabiasamesaimaraazerbaijanubaxkirbielorusubú" +
+ "lgarubambarabengalitibetanubretãubosniukatalãutxetxenukórsikutxekutx" +
+ "uvaxigalesdinamarkesalimãudzonkaevegreguinglessperantuspanholstonian" +
+ "ubaskupersafinlandesfijianufaroesfransesfrisiu osidentalirlandesgale" +
+ "guguaranigujaratimanksauzaebraikuindikroataaitianuúngaruarméniuindon" +
+ "éziuibonuosuislandesitalianuinuktitutjaponesjavanesjorjianukikuiuka" +
+ "zakgroenlandeskmerkanareskorianukaxmirakurdukórnikukirgizlatinluxemb" +
+ "urgeslugandalausianulituanesletãumalgaximaorimasedoniumalaialammarat" +
+ "imalaiumaltesbirmanesnepalesolandesnorueges nynorsknorueges bokmålor" +
+ "omooriyapandjabipulakupaxtopurtugeskexuaromanxirumenurusukiniaruanda" +
+ "sanskritusindisingalesslovakusloveniusomalialbanessérviusundanessuek" +
+ "usuaílitamiltelugutajiktailandestigriniaturkmenutonganesturkutatarui" +
+ "gurukranianuurduuzbekivietnamitauolofkozaiorubaxineszuluaghemaraukan" +
+ "uasubembabenabodoxigaxerokikurdu sentraltaitazarmasórbiu baxudualajo" +
+ "la-fonyiembufilipinugagauzalimãu di Suisagusiiavaianusórbiu altuñomb" +
+ "amatxamekabilakambakabuverdianukoira txiinikalenjinkomi-permiakkonka" +
+ "nibafiakuaziokitxekoiraboro seniinari samisuaíli kongolestamazait di" +
+ " Atlas Sentrallingua diskonxedusem konteudo linguistikuarabi mudernu" +
+ "alimãu austriakualtu alimãu suisuingles australianuingles kanadianui" +
+ "ngles britanikuingles merkanuspanhol latinu-merkanuspanhol europeusp" +
+ "anhol mexikanufranses kanadianufranses suisuflamengupurtuges brazile" +
+ "rupurtuges europeuxines simplifikaduxines tradisional",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0014, 0x001b, 0x001b,
+ 0x0020, 0x0026, 0x0026, 0x002c, 0x0037, 0x003d, 0x0046, 0x004e,
+ 0x004e, 0x0055, 0x005c, 0x0064, 0x006b, 0x0071, 0x0079, 0x0081,
+ 0x0081, 0x0089, 0x0089, 0x008e, 0x008e, 0x0095, 0x009a, 0x00a4,
+ 0x00ab, 0x00ab, 0x00b1, 0x00b4, 0x00b9, 0x00bf, 0x00c7, 0x00ce,
+ 0x00d6, 0x00db, 0x00e0, 0x00e0, 0x00e9, 0x00f0, 0x00f6, 0x00fd,
+ 0x010d, 0x0115, 0x0115, 0x011b, 0x0122, 0x012a, 0x012f, 0x0133,
+ 0x013a, 0x013e, 0x013e, 0x0144, 0x014b, 0x0152, 0x015a, 0x015a,
+ // Entry 40 - 7F
+ 0x015a, 0x0164, 0x0164, 0x0167, 0x016c, 0x016c, 0x016c, 0x0174,
+ 0x017c, 0x0185, 0x018c, 0x0193, 0x019b, 0x019b, 0x01a1, 0x01a1,
+ 0x01a6, 0x01b1, 0x01b5, 0x01bc, 0x01c3, 0x01c3, 0x01ca, 0x01cf,
+ 0x01cf, 0x01d7, 0x01dd, 0x01e2, 0x01ed, 0x01f4, 0x01f4, 0x01f4,
+ 0x01fc, 0x0204, 0x0204, 0x020a, 0x0211, 0x0211, 0x0216, 0x021f,
+ 0x0228, 0x0228, 0x022e, 0x0234, 0x023a, 0x0242, 0x0242, 0x0242,
+ 0x0249, 0x0249, 0x0250, 0x0260, 0x0270, 0x0270, 0x0270, 0x0270,
+ 0x0270, 0x0270, 0x0275, 0x027a, 0x027a, 0x0282, 0x0282, 0x0288,
+ // Entry 80 - BF
+ 0x028d, 0x0295, 0x029a, 0x02a1, 0x02a1, 0x02a7, 0x02ab, 0x02b6,
+ 0x02bf, 0x02bf, 0x02c4, 0x02c4, 0x02c4, 0x02cc, 0x02d3, 0x02db,
+ 0x02db, 0x02db, 0x02e1, 0x02e8, 0x02ef, 0x02ef, 0x02ef, 0x02f7,
+ 0x02fc, 0x0303, 0x0308, 0x030e, 0x0313, 0x031c, 0x0324, 0x032c,
+ 0x032c, 0x0334, 0x0339, 0x0339, 0x033e, 0x033e, 0x0343, 0x034c,
+ 0x0350, 0x0356, 0x0356, 0x0360, 0x0360, 0x0360, 0x0365, 0x0369,
+ 0x0369, 0x036f, 0x036f, 0x0374, 0x0378, 0x0378, 0x0378, 0x0378,
+ 0x0378, 0x0378, 0x0378, 0x037d, 0x037d, 0x037d, 0x037d, 0x037d,
+ // Entry C0 - FF
+ 0x037d, 0x037d, 0x037d, 0x037d, 0x037d, 0x0385, 0x0385, 0x0385,
+ 0x0385, 0x0385, 0x0385, 0x0385, 0x0388, 0x0388, 0x0388, 0x0388,
+ 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388, 0x0388,
+ 0x0388, 0x038d, 0x038d, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391,
+ 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391,
+ 0x0391, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395,
+ 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0399, 0x0399, 0x0399,
+ 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x039f, 0x039f, 0x03ac,
+ // Entry 100 - 13F
+ 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03b1, 0x03b1,
+ 0x03b1, 0x03b1, 0x03b1, 0x03b6, 0x03b6, 0x03c2, 0x03c2, 0x03c7,
+ 0x03c7, 0x03d1, 0x03d1, 0x03d1, 0x03d5, 0x03d5, 0x03d5, 0x03d5,
+ 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03dd,
+ 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd, 0x03dd,
+ 0x03dd, 0x03dd, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3,
+ 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3,
+ 0x03e3, 0x03e3, 0x03f3, 0x03f3, 0x03f3, 0x03f8, 0x03f8, 0x03f8,
+ // Entry 140 - 17F
+ 0x03f8, 0x03ff, 0x03ff, 0x03ff, 0x03ff, 0x03ff, 0x040b, 0x040b,
+ 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b, 0x040b,
+ 0x0411, 0x0418, 0x0418, 0x0418, 0x0418, 0x0418, 0x041e, 0x041e,
+ 0x041e, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x042f,
+ 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x0443, 0x0443, 0x044f, 0x0456, 0x0456, 0x0456, 0x0456,
+ 0x0456, 0x0456, 0x0456, 0x0456, 0x0456, 0x045b, 0x045b, 0x045b,
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
+ // Entry 180 - 1BF
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0461,
+ 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461,
+ // Entry 1C0 - 1FF
+ 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461,
+ 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461,
+ 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0461, 0x0466, 0x0466,
+ 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466,
+ 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466,
+ 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0466,
+ 0x0466, 0x0466, 0x0466, 0x0466, 0x0466, 0x0474, 0x0474, 0x0474,
+ 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474, 0x0474,
+ // Entry 200 - 23F
+ 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e, 0x047e,
+ 0x047e, 0x047e, 0x047e, 0x047e, 0x048e, 0x048e, 0x048e, 0x048e,
+ 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e,
+ 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e,
+ 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e, 0x048e,
+ 0x04a7, 0x04a7, 0x04a7, 0x04a7, 0x04b8, 0x04b8, 0x04b8, 0x04b8,
+ 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8,
+ 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8,
+ // Entry 240 - 27F
+ 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8,
+ 0x04b8, 0x04b8, 0x04d0, 0x04d0, 0x04dd, 0x04dd, 0x04ee, 0x0500,
+ 0x0512, 0x0522, 0x0532, 0x0540, 0x0556, 0x0565, 0x0575, 0x0575,
+ 0x0586, 0x0593, 0x0593, 0x059b, 0x05ad, 0x05bd, 0x05bd, 0x05bd,
+ 0x05cf, 0x05e0,
+ },
+ },
+ { // khq
+ "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" +
+ " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " +
+ "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" +
+ "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" +
+ "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" +
+ "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" +
+ "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" +
+ "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " +
+ "MandareŋJulu senniKoyra ciini",
+ []uint16{ // 358 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041,
+ 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
+ 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088,
+ 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0,
+ 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae,
+ 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7,
+ // Entry 40 - 7F
+ 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127,
+ 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
+ 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
+ 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f,
+ 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159,
+ 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175,
+ // Entry 80 - BF
+ 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4,
+ 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db,
+ 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2,
+ 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a,
+ 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry C0 - FF
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry 100 - 13F
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry 140 - 17F
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0244,
+ },
+ },
+ { // ki
+ "KiakanKiamhariKĩarabuKibelarusiKibulgariaKibanglaKicheckiKĩnjeremaniKigi" +
+ "rikiGĩthungũKihispaniaKiajemiKĩbaranjaKihausaKĩhĩndĩKihungariKiindon" +
+ "esiaKiigboKĩtalianoKĩnjabaniKijavaGikuyuKikambodiaKikoreaKimalesiaKi" +
+ "burmaKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKĩraciaKinyar" +
+ "wandaKĩcumarĩKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietin" +
+ "amuKiyorubaKĩcainaKizulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a,
+ 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0058, 0x0058, 0x0062,
+ 0x0062, 0x0062, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0073,
+ 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a,
+ 0x007a, 0x0084, 0x0084, 0x0084, 0x0084, 0x008d, 0x008d, 0x008d,
+ // Entry 40 - 7F
+ 0x008d, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e,
+ 0x00a8, 0x00a8, 0x00b2, 0x00b8, 0x00b8, 0x00b8, 0x00be, 0x00be,
+ 0x00be, 0x00be, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, 0x00cf,
+ 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf,
+ 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf,
+ 0x00cf, 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00df, 0x00df, 0x00df,
+ 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0,
+ 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f9, 0x00f9, 0x0102,
+ // Entry 80 - BF
+ 0x0102, 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, 0x0119, 0x0124,
+ 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124,
+ 0x0124, 0x0124, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x0135, 0x0135, 0x013c, 0x013c, 0x013c, 0x0146, 0x0146, 0x0146,
+ 0x0146, 0x0146, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x0157,
+ 0x015d, 0x015d, 0x015d, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
+ 0x0168, 0x0170, 0x0170, 0x0178, 0x017e,
+ },
+ },
+ { // kk
+ kkLangStr,
+ kkLangIdx,
+ },
+ { // kkj
+ "yamannumbu buykakɔ",
+ []uint16{ // 361 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ // Entry 40 - 7F
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ // Entry 80 - BF
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ // Entry C0 - FF
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ // Entry 100 - 13F
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ // Entry 140 - 17F
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x0013,
+ },
+ },
+ { // kl
+ "kalaallisut",
+ []uint16{ // 82 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x000b,
+ },
+ },
+ { // kln
+ "kutitab Akakutitab Amariekkutitab Arabukkutitab Belarusakutitab Bulgaria" +
+ "kutitab Bengalikutitab Chekkutitab Chermanikutitab Greecekutitab Uin" +
+ "geresakutitab Espianikkutitab Persiakutitab Kifaransakutitab Hausaku" +
+ "titab Maindiikkutitab Hangarikutitab Indonesiakutitab Igbokutitab Ta" +
+ "lianekkutitap Japankutitap Javanesekutitab Kher nebo Kwenkutitab Kor" +
+ "eakutitab Malaykutitab Burmakutitab Nepalikutitab Boakutitab Punjabk" +
+ "utitap Polandkutitab Portugalkutitab Romaniekkutitab Russiakutitab K" +
+ "inyarwandakutitab Somaliekkutitab Swedenkutitab Tamilkutitab Thailan" +
+ "dkutitab Turkeykutitab Ukrainekutitab Urdukutitab Vietnamkutitab Yor" +
+ "ubakutitab Chinakutitab ZuluKalenjin",
+ []uint16{ // 362 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001a, 0x001a,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0038, 0x0048,
+ 0x0048, 0x0048, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0073, 0x0073, 0x0073, 0x0073, 0x0081, 0x0092, 0x0092, 0x00a2,
+ 0x00a2, 0x00a2, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00c1,
+ 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00ce,
+ 0x00ce, 0x00de, 0x00de, 0x00de, 0x00de, 0x00ed, 0x00ed, 0x00ed,
+ // Entry 40 - 7F
+ 0x00ed, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a,
+ 0x011a, 0x011a, 0x0127, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137,
+ 0x0137, 0x0137, 0x014d, 0x014d, 0x015a, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x015a, 0x0167, 0x0167, 0x0174, 0x0174, 0x0174,
+ 0x0182, 0x0182, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d,
+ 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x019b, 0x019b, 0x01a9,
+ // Entry 80 - BF
+ 0x01a9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01d7, 0x01ea,
+ 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea,
+ 0x01ea, 0x01ea, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa,
+ 0x0208, 0x0208, 0x0215, 0x0215, 0x0215, 0x0225, 0x0225, 0x0225,
+ 0x0225, 0x0225, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0242,
+ 0x024e, 0x024e, 0x024e, 0x025d, 0x025d, 0x025d, 0x025d, 0x025d,
+ 0x025d, 0x026b, 0x026b, 0x0278, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ // Entry C0 - FF
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ // Entry 100 - 13F
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ // Entry 140 - 17F
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x028c,
+ },
+ },
+ { // km
+ kmLangStr,
+ kmLangIdx,
+ },
+ { // kn
+ knLangStr,
+ knLangIdx,
+ },
+ { // ko
+ koLangStr,
+ koLangIdx,
+ },
+ { // kok
+ "अफारअबखेज़ियनअफ्रिकान्सत्विअमहारिक्अरेबिक्असामीऐमराअज़रबैजानीबष्किरबैलोर" +
+ "ुसियन्बल्गेरियनबिसलमाबंगालीतिबेतियनब्रेटनकटलानकोर्शियनज़ेक्वेळ्ष्ड" +
+ "ानिषजर्मनभूटानीग्रीक्आंग्लइस्परान्टोस्पानिषइस्टोनियन्बास्कपर्षियन्" +
+ "फिन्निष्फिजीफेरोस्फ्रेन्चफ्रिशियन्ऐरिषस्काटस् गेलिक्गेलीशियनगौरानी" +
+ "गुजरातीहौसाहेब्रुहिन्दीक्रोयेषियन्हंगेरियन्आर्मीनियन्इन्टरलिंग्वाइ" +
+ "न्डोनेषियनइन्टरलिंग्इनूपेयाक्आईस्लान्डिकइटालियनइन्युकट्टजापनीस्जाव" +
+ "नीस्जार्जियन्कज़ख्ग्रीनलान्डिककंबोडियनकन्नडाकोरियन्कश्मीरीकुर्दिषक" +
+ "िर्गिज़लाटिनलिंगालालाओतियन्लिथुआनियन्लाट्वियन् (लेट्टिष्)मलागसीमाओ" +
+ "रीमसीडोनियन्मळियाळममंगोलियन्मराठीमलयमालतीस्बर्मीज़्नौरोनेपाळीडच्नो" +
+ "र्वेजियनओसिटान्ओरोमो (अफान)ओरियापंजाबीपोलिषपाष्टो (पुष्टो)पोर्चुगी" +
+ "ज़्क्वेच्वारहटो-रोमान्स्किरुन्दीरोमानियन्रष्यन्किन्यार्वान्डासंस्क" +
+ "ृतसिंधीसांग्रोसिन्हलीस्स्लोवाकस्लोवेनियन्समोनशोनासोमाळीआल्बेनियन्स" +
+ "ेर्बियन्सिस्वातीसेसोथोसुंदनीसस्वीदीषस्वाहिलीतमिळतेलुगूतजिकथाईतिग्र" +
+ "िन्यातुर्कमनसेत्स्वानातोंगातुर्किषत्सोगातटारउधूरयुक्रेनियन्उर्दूउज" +
+ "़बेकवियत्नामीज़ओलापुकउलोफ़झ़ौसाइद्दिष्यूरुबाझ्हुन्गचीनीस्जुलूतगालो" +
+ "गकोंकणीमोल्डावियन्सेर्बो-क्रोयेषियन्",
+ []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x0027, 0x0027, 0x0045, 0x0051, 0x0069, 0x0069,
+ 0x007e, 0x008d, 0x008d, 0x0099, 0x00b7, 0x00c9, 0x00ea, 0x0105,
+ 0x0117, 0x0117, 0x0129, 0x0141, 0x0153, 0x0153, 0x0162, 0x0162,
+ 0x0162, 0x017a, 0x017a, 0x0189, 0x0189, 0x0189, 0x019b, 0x01aa,
+ 0x01b9, 0x01b9, 0x01cb, 0x01cb, 0x01dd, 0x01ec, 0x020a, 0x021f,
+ 0x023d, 0x024c, 0x0264, 0x0264, 0x027c, 0x0288, 0x029a, 0x02af,
+ 0x02ca, 0x02d6, 0x02fe, 0x0316, 0x0328, 0x033d, 0x033d, 0x0349,
+ 0x035b, 0x036d, 0x036d, 0x038e, 0x038e, 0x03a9, 0x03c7, 0x03c7,
+ // Entry 40 - 7F
+ 0x03eb, 0x040c, 0x042a, 0x042a, 0x042a, 0x0445, 0x0445, 0x0466,
+ 0x047b, 0x0496, 0x04ab, 0x04c0, 0x04db, 0x04db, 0x04db, 0x04db,
+ 0x04ea, 0x050e, 0x0526, 0x0538, 0x054d, 0x054d, 0x0562, 0x0577,
+ 0x0577, 0x0577, 0x058f, 0x059e, 0x059e, 0x059e, 0x059e, 0x05b3,
+ 0x05cb, 0x05e9, 0x05e9, 0x061f, 0x0631, 0x0631, 0x0640, 0x065e,
+ 0x0673, 0x068e, 0x069d, 0x06a6, 0x06bb, 0x06d3, 0x06df, 0x06df,
+ 0x06f1, 0x06f1, 0x06fa, 0x06fa, 0x0718, 0x0718, 0x0718, 0x0718,
+ 0x072d, 0x072d, 0x074b, 0x075a, 0x075a, 0x076c, 0x076c, 0x077b,
+ // Entry 80 - BF
+ 0x07a2, 0x07c3, 0x07db, 0x0800, 0x0818, 0x0833, 0x0845, 0x086f,
+ 0x0884, 0x0884, 0x0893, 0x0893, 0x08a8, 0x08c3, 0x08d8, 0x08f9,
+ 0x0905, 0x0911, 0x0923, 0x0941, 0x095c, 0x0974, 0x0986, 0x099b,
+ 0x09b0, 0x09c8, 0x09d4, 0x09e6, 0x09f2, 0x09fb, 0x0a19, 0x0a2e,
+ 0x0a4c, 0x0a5b, 0x0a70, 0x0a82, 0x0a8e, 0x0a8e, 0x0a9a, 0x0abb,
+ 0x0aca, 0x0adc, 0x0adc, 0x0afd, 0x0b0f, 0x0b0f, 0x0b1e, 0x0b2d,
+ 0x0b42, 0x0b54, 0x0b69, 0x0b7b, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ // Entry C0 - FF
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ // Entry 100 - 13F
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87,
+ 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b87, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ // Entry 140 - 17F
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0b99,
+ 0x0b99, 0x0b99, 0x0b99, 0x0b99, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ // Entry 180 - 1BF
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ // Entry 1C0 - 1FF
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ // Entry 200 - 23F
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ // Entry 240 - 27F
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab,
+ 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bcc, 0x0c00,
+ },
+ },
+ { // ks
+ "اَفاراَبخازِیاناَویستَناَفریٖکانٛزاَکاناَمہاریاَراگونیعربیاسٲمۍاَوارِکای" +
+ "مارااَزَربیجانیبَشکیٖربیلَروٗشیَنبینابِسلامابَمبارابَنٛگٲلۍتِبتیبری" +
+ "ٹَنبوسنِیَنکَتلانچیچَنکَموروکارسِکَنکریچیٚکچٔرچ سلاوِکچُواشویٚلشڈین" +
+ "ِشجٔرمَندِویہیزونٛگکھاایٖویوٗنٲنیاَنٛگیٖزۍایٚسپَرینٹوسپینِشایٚسٹونی" +
+ "َنباسکفارسیفُلاہفِنِشفِجیَنفَروسفریٚنچمغربی فرِشیَناَیرِشسکوٹِش گیے" +
+ "لِکگیلِشِیَنگُوارَنیگُجرٲتیمینٛکسہاوساعبرٲنۍہِندیہِری موتوٗکروشِیَن" +
+ "ہیتِیاںہَنٛگیریَناَرمینیَنہیٚریٖرواِنٹَرلِنٛگوااِنڈونیشیااِنٹَر لِن" +
+ "ٛنگویےاِگبوسِچوان یٖیاِنُپِیاکاِڈوآیِسلینڈِکاِٹیلیَناِنُکتِتوٗجاپٲن" +
+ "ۍجَوَنیٖزجارجِیَنکونٛگوکِکُیوٗکُوانیاماکازَخکَلالِسُتخَمیرکَنَڑکوری" +
+ "َنکَنوٗریکٲشُرکُردِشکومیکورنِشکِرگِزلاتیٖنیلُکھزیمبورگِشگاندالِمبٔر" +
+ "گِشلِنگالالاولِتھوانِیَنلوُبا کَتَنٛگالَتوِیَنمَلاگَسیمارشَلیٖزماور" +
+ "یمیکَڈونیَنمٔلیالَممَنٛگولیمَرٲٹھۍمَلَےمَلتیٖسبٔمیٖزناورُشُمال ڈَبی" +
+ "لنیٚپٲلۍڈونٛگاڈَچناروییَن نَے نورسکناروییَن بوکمالجنوب ڈیٚبیلنَواجو" +
+ "نِیَنجااوکسیٖٹَناوجِبوااوٚرومواوٚرِیااوٚسیٚٹِکپَنجٲبۍپالیپالِشپَشتو" +
+ "ٗپُرتَگیٖزکُویشُوارومانشرُندیرومٲنیروٗسیکِنیاوِنداسَنسکرٕتسراڈیٖنیس" +
+ "ِندیشُمٲلی سَمیسَنگوسِنہالاسلووَکسلووینیَنسَمواَنشوناسومٲلیالبانِیَ" +
+ "نسٔربِیَنسواتیجنوبی ستھوسَنڈَنیٖزسویٖڈِشسواہِلیتَمِلتیلگوٗتاجِکتھاے" +
+ "ٹِگرِنیاتُرکمینسواناٹونٛگاتُرکِشژونٛگاتَتارتاہیشِیَنیوٗکرینیٲییاُرد" +
+ "وٗاُزبیکوینداوِیَتنَمیٖزوولَپُکوَلوٗنوولوفکھوسایِدِشیورُبازُہانٛگچی" +
+ "ٖنیزُلوٗاَچَےنیٖزاَکولیاَدَنٛگمیےاَدَیٖگیےاَفرِہِلیاینوٗاَکادِیَناَ" +
+ "لویتیجنوٗبی اَلتاییپرون اَنٛگریٖزیاَنٛگِکااَرَمیکایرو کونِیَناَراپا" +
+ "ہواَراوَکایسٹوٗریَناَوَدیبَلوٗچیبالِنیٖزباسابیجابیٚمبابوجپوٗریبِکول" +
+ "بِنیسِکسِکابرٛجبُرِیَتبَگنیٖزبٕلِنکاڈوکارِباتسَمسیباونوچیٖبچاچھَگتا" +
+ "ےچُکیٖزماریچِنوٗک جارگَنچوکتَوشیپویانچیٚروکیشییونکاپٹِککرٕمیٖن تُرک" +
+ "یکَشوٗبِیَنڈکوٹادَرگواڈیٚلوییَرسلیوڈاگرِبڈِنکاڈوگریبوٚنِم ساربِیَند" +
+ "ُوالاوَستی پُرتُگالیڈِیوٗلاایٚفِکقدیٖمی مِصریایٚکاجُکایٚلامایِٹوَسط" +
+ "ی اَنٛگریٖزۍایٚوونڈوفینٛگفِلِپیٖنوفونوسطی فریٚنچپرون فریٚنچشُمٲلی ف" +
+ "رِشیَنمشرِقی فرِشیَنفروٗلِیَنگاگیےیوگبایاگیٖزگِلبٔرٹیٖزوَسطی ہاے جٔ" +
+ "رمَنپرون ہاے جٔرمَنگوندیگورینٹیلوگوتھِکگرِبوقدیٖم یوٗنٲنیسٕوِس جٔرم" +
+ "َنگُوِچ اِنہَیداہوایِیَنہِلیٖگینَنہِتایِتہمونٛگہیٚرِم ساربِیَنہُپاا" +
+ "ِباناِلوکواِنٛگُشلوجبانجوڈیو فارسیجوڈیو عربیکارا کَلپَککَبایِلکاچِن" +
+ "جُوٗکامباکَویکَبارڈِیَنتَیَپکوروکھاسیکھوتَنیٖزکِمبُندوٗکونکَنیکوسری" +
+ "یَنکَپیلیکراچیے بَلکارکَریلِیَنکُرُکھکُمِککُتینَےلیڈِنولَہَندالَمبا" +
+ "لیزگِیَنمونٛگولوزیلوٗبا لوٗلُوالویِسینولُندالُوولُسہاےمَدُریٖزمَگاے" +
+ "میتَھلیمَکَسارمَندِنٛگومَساےموکشامَندَرمیندیےوَستی ایرِشمِکمیکمِنَن" +
+ "ٛگکَباومانٛچوٗمَنیپوٗریموہاکموسیواریاہ زبانکریٖکمِراندیٖزمارواڑیایٚ" +
+ "رزِیانیٖپالیٹَنبوٚنِم جٔرمَننیٚوارینِیاسنِیویَننوگاےپرون نارسیایٚن " +
+ "کوشمالی ستھوکلاسِکَل نیوارینِیَمویٚزینِیَنکولنِیورونَظیٖمااوٚسیجاوٹ" +
+ "ومَن تُرکِشپَنٛگاسِنَنپَہلَویپَمپَنٛگاپَپِیامیٚنٹوپَلااُواںپرون فار" +
+ "سیفونیٖشیَنپانپیٚیَنپرون پروویٚنچَلراجِستھٲنۍرَپانویرَروٹونٛگَنرومَ" +
+ "نیاَرومانیسَندَویےیاکُتسَمارِتَن اَرامیکسَسَکسَنتالیسِچِلِیَنسکاٹسس" +
+ "یٚلکُپپرون ایرِششانسِداموجنوٗبی سَمیلولیے سَمیاِناری سَمیسکولٹ سَمی" +
+ "سونِنکیےسوگڈِیَنسرٛانَن ٹونٛگوسیٚریرسُکُماسُسوٗسُمیریَنسیٖریٲییٹِمن" +
+ "یےٹیٚریٚنوٹیٹَمٹاےگریےتیٖوٹوکیٖلاوکِلِنگونٹِلِنگِتتاماشیکنیاسا ٹونٛ" +
+ "گاٹاک پِسِنژھِمشِیانتُمبُکاتُوالوٗتُویٖنیَناُدمُرتاُگارتِکیُمبُندوٗ" +
+ "روٗٹواےووتِکوالامووَریےواشوکالمِکیاویَپیٖززَپوتیٚکزیناگازوٗنیکانٛہہ" +
+ " تہِ لِسانیاتی مواد نہٕزازاآسٹرِیَن جٔرمَنسٕوِس ہاےجٔرمَنآسٹریلیَن ا" +
+ "َنٛگریٖزۍکینَڈِیٲیی اَنٛگریٖزۍبَرطانوی اَنٛگریٖزۍیوٗ ایٚس اَنٛگریٖز" +
+ "ۍلیٹٕن امریٖکی سپینِشلِبیریَن سپینِشکَنیڈیَن فریٚنچسٕوٕس فریٚنچفلیٚ" +
+ "مِشبرازیٖلی پُتَگیٖزلِبیریَن پُرتَگیٖزمولداوِیَنسیٚربو کروشِیَنسیٚو" +
+ "د چیٖنیرِوٲجی چیٖنی",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000a, 0x001e, 0x002e, 0x0044, 0x004e, 0x005c, 0x006c,
+ 0x0074, 0x007e, 0x008c, 0x0098, 0x00ae, 0x00bc, 0x00d2, 0x00da,
+ 0x00e8, 0x00f6, 0x0106, 0x0110, 0x011c, 0x012c, 0x0138, 0x0142,
+ 0x014e, 0x015e, 0x0164, 0x016c, 0x0181, 0x018b, 0x0195, 0x019f,
+ 0x01ab, 0x01b7, 0x01c7, 0x01cf, 0x01dd, 0x01ef, 0x0205, 0x0211,
+ 0x0225, 0x022d, 0x0237, 0x0241, 0x024b, 0x0257, 0x0261, 0x026d,
+ 0x0286, 0x0292, 0x02ab, 0x02bd, 0x02cd, 0x02db, 0x02e7, 0x02f1,
+ 0x02fd, 0x0307, 0x031a, 0x032a, 0x0338, 0x034c, 0x035e, 0x036e,
+ // Entry 40 - 7F
+ 0x0388, 0x039c, 0x03bb, 0x03c5, 0x03d8, 0x03ea, 0x03f2, 0x0406,
+ 0x0416, 0x042a, 0x0436, 0x0446, 0x0456, 0x0462, 0x0470, 0x0482,
+ 0x048c, 0x049e, 0x04a8, 0x04b2, 0x04be, 0x04cc, 0x04d6, 0x04e2,
+ 0x04ea, 0x04f6, 0x0502, 0x0510, 0x052a, 0x0534, 0x0546, 0x0554,
+ 0x055a, 0x0570, 0x058b, 0x059b, 0x05ab, 0x05bd, 0x05c7, 0x05db,
+ 0x05eb, 0x05fb, 0x0609, 0x0613, 0x0621, 0x062d, 0x0637, 0x064c,
+ 0x065a, 0x0666, 0x066c, 0x068e, 0x06ab, 0x06c0, 0x06cc, 0x06da,
+ 0x06ec, 0x06fa, 0x0708, 0x0716, 0x0728, 0x0736, 0x073e, 0x0748,
+ // Entry 80 - BF
+ 0x0754, 0x0766, 0x0776, 0x0782, 0x078c, 0x0798, 0x07a2, 0x07b6,
+ 0x07c6, 0x07d6, 0x07e0, 0x07f5, 0x07ff, 0x080d, 0x0819, 0x082b,
+ 0x0839, 0x0841, 0x084d, 0x085f, 0x086f, 0x0879, 0x088c, 0x089e,
+ 0x08ac, 0x08ba, 0x08c4, 0x08d0, 0x08da, 0x08e2, 0x08f2, 0x0900,
+ 0x090a, 0x0916, 0x0922, 0x092e, 0x0938, 0x094a, 0x094a, 0x0960,
+ 0x096c, 0x0978, 0x0982, 0x0998, 0x09a6, 0x09b2, 0x09bc, 0x09c6,
+ 0x09d0, 0x09dc, 0x09ea, 0x09f4, 0x09fe, 0x0a10, 0x0a1c, 0x0a30,
+ 0x0a42, 0x0a42, 0x0a54, 0x0a54, 0x0a5e, 0x0a70, 0x0a70, 0x0a7e,
+ // Entry C0 - FF
+ 0x0a7e, 0x0a99, 0x0ab6, 0x0ac6, 0x0ad4, 0x0aeb, 0x0aeb, 0x0afb,
+ 0x0afb, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b1d, 0x0b1d,
+ 0x0b29, 0x0b37, 0x0b47, 0x0b47, 0x0b4f, 0x0b4f, 0x0b4f, 0x0b4f,
+ 0x0b57, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b73,
+ 0x0b7d, 0x0b85, 0x0b85, 0x0b85, 0x0b93, 0x0b93, 0x0b93, 0x0b9b,
+ 0x0b9b, 0x0b9b, 0x0b9b, 0x0ba9, 0x0bb7, 0x0bb7, 0x0bc1, 0x0bc1,
+ 0x0bc9, 0x0bd3, 0x0bd3, 0x0bdd, 0x0beb, 0x0beb, 0x0bf7, 0x0c05,
+ 0x0c11, 0x0c19, 0x0c32, 0x0c3e, 0x0c4c, 0x0c5a, 0x0c64, 0x0c64,
+ // Entry 100 - 13F
+ 0x0c70, 0x0c70, 0x0c89, 0x0c9d, 0x0ca7, 0x0cb3, 0x0cb3, 0x0cc5,
+ 0x0ccd, 0x0cd9, 0x0ce3, 0x0ce3, 0x0ced, 0x0d0a, 0x0d0a, 0x0d16,
+ 0x0d33, 0x0d33, 0x0d41, 0x0d41, 0x0d41, 0x0d4d, 0x0d4d, 0x0d64,
+ 0x0d74, 0x0d88, 0x0da7, 0x0da7, 0x0db7, 0x0db7, 0x0dc1, 0x0dd3,
+ 0x0dd3, 0x0dd9, 0x0dd9, 0x0dee, 0x0e03, 0x0e03, 0x0e1e, 0x0e39,
+ 0x0e4b, 0x0e4f, 0x0e4f, 0x0e4f, 0x0e59, 0x0e63, 0x0e63, 0x0e6b,
+ 0x0e7f, 0x0e7f, 0x0e9d, 0x0eb9, 0x0eb9, 0x0ec3, 0x0ed5, 0x0ee1,
+ 0x0eeb, 0x0f04, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f2c, 0x0f36,
+ // Entry 140 - 17F
+ 0x0f36, 0x0f46, 0x0f46, 0x0f5a, 0x0f68, 0x0f74, 0x0f91, 0x0f91,
+ 0x0f99, 0x0fa3, 0x0fa3, 0x0faf, 0x0fbd, 0x0fbd, 0x0fbd, 0x0fc9,
+ 0x0fc9, 0x0fc9, 0x0fde, 0x0ff1, 0x0ff1, 0x1006, 0x1014, 0x101e,
+ 0x1026, 0x1030, 0x1038, 0x104c, 0x104c, 0x1056, 0x1056, 0x1056,
+ 0x1056, 0x105e, 0x105e, 0x1068, 0x107a, 0x107a, 0x107a, 0x107a,
+ 0x107a, 0x107a, 0x108c, 0x108c, 0x109a, 0x10aa, 0x10b6, 0x10cf,
+ 0x10cf, 0x10cf, 0x10e1, 0x10ed, 0x10ed, 0x10ed, 0x10ed, 0x10f7,
+ 0x1105, 0x1111, 0x1111, 0x111f, 0x1129, 0x1139, 0x1139, 0x1139,
+ // Entry 180 - 1BF
+ 0x1139, 0x1139, 0x1139, 0x1145, 0x114d, 0x114d, 0x114d, 0x1166,
+ 0x1176, 0x1180, 0x1188, 0x1194, 0x1194, 0x1194, 0x1194, 0x11a4,
+ 0x11a4, 0x11ae, 0x11bc, 0x11ca, 0x11dc, 0x11e6, 0x11e6, 0x11f0,
+ 0x11fc, 0x1208, 0x1208, 0x1208, 0x121d, 0x121d, 0x121d, 0x1229,
+ 0x1241, 0x124f, 0x1261, 0x126b, 0x1273, 0x1273, 0x1273, 0x1288,
+ 0x1292, 0x12a4, 0x12b2, 0x12b2, 0x12b2, 0x12c2, 0x12c2, 0x12c2,
+ 0x12d6, 0x12d6, 0x12ef, 0x12fd, 0x1307, 0x1315, 0x1315, 0x1315,
+ 0x1315, 0x131f, 0x1332, 0x1332, 0x133f, 0x1352, 0x1352, 0x136f,
+ // Entry 1C0 - 1FF
+ 0x1383, 0x1393, 0x139f, 0x13ad, 0x13b9, 0x13d4, 0x13ea, 0x13f8,
+ 0x140a, 0x1422, 0x1434, 0x1434, 0x1434, 0x1434, 0x1447, 0x1447,
+ 0x1459, 0x1459, 0x1459, 0x146b, 0x146b, 0x1488, 0x1488, 0x1488,
+ 0x149c, 0x14aa, 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14cc, 0x14cc,
+ 0x14cc, 0x14cc, 0x14dc, 0x14dc, 0x14ec, 0x14f6, 0x1517, 0x1517,
+ 0x1521, 0x152f, 0x152f, 0x152f, 0x152f, 0x1541, 0x154b, 0x154b,
+ 0x154b, 0x154b, 0x154b, 0x154b, 0x1559, 0x1559, 0x156c, 0x156c,
+ 0x156c, 0x1572, 0x1572, 0x157e, 0x157e, 0x157e, 0x1593, 0x15a6,
+ // Entry 200 - 23F
+ 0x15bb, 0x15ce, 0x15de, 0x15ee, 0x1609, 0x1615, 0x1615, 0x1615,
+ 0x1621, 0x162b, 0x163b, 0x163b, 0x163b, 0x163b, 0x164b, 0x164b,
+ 0x164b, 0x1657, 0x1657, 0x1667, 0x1671, 0x167f, 0x1687, 0x1697,
+ 0x1697, 0x16a7, 0x16b7, 0x16b7, 0x16c5, 0x16dc, 0x16ed, 0x16ed,
+ 0x16ed, 0x16ed, 0x16ff, 0x16ff, 0x170d, 0x171b, 0x171b, 0x172d,
+ 0x172d, 0x173b, 0x174b, 0x175d, 0x1765, 0x176b, 0x176b, 0x176b,
+ 0x176b, 0x176b, 0x1775, 0x1775, 0x1775, 0x1775, 0x1781, 0x178b,
+ 0x1793, 0x1793, 0x1793, 0x179f, 0x179f, 0x179f, 0x17a5, 0x17b1,
+ // Entry 240 - 27F
+ 0x17b1, 0x17b1, 0x17b1, 0x17b1, 0x17c1, 0x17c1, 0x17c1, 0x17cd,
+ 0x17cd, 0x17d7, 0x180d, 0x1815, 0x1815, 0x1815, 0x1832, 0x184f,
+ 0x1876, 0x189f, 0x18c4, 0x18e8, 0x190e, 0x192b, 0x192b, 0x192b,
+ 0x1948, 0x195f, 0x195f, 0x196d, 0x198e, 0x19b1, 0x19c5, 0x19e2,
+ 0x19f7, 0x1a0e,
+ },
+ },
+ { // ksb
+ "KiakanKiamhaliKialabuKibelaausiKibulgaliaKibanglaKicheckiKijeumaniKigiik" +
+ "iKiingeezaKihispaniaKiajemiKifalansaKihausaKihindiKihungaiKiindonesi" +
+ "aKiigboKiitalianoKijapaniKijavaKikambodiaKikoleaKimalesiaKibulmaKine" +
+ "paliKiholanziKipunjabiKipolandiKilenoKiomaniaKilusiKinyalwandaKisoma" +
+ "liKiswidiKitamilKitailandiKituukiKiuklaniaKiulduKivietinamuKiyolubaK" +
+ "ichinaKizuluKishambaa",
+ []uint16{ // 373 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x0049, 0x0052, 0x0052, 0x005c,
+ 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c,
+ 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073,
+ 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0082, 0x0082, 0x0082,
+ // Entry 40 - 7F
+ 0x0082, 0x008d, 0x008d, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x009d, 0x009d, 0x00a5, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
+ 0x00ab, 0x00ab, 0x00b5, 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
+ 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
+ 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
+ 0x00bc, 0x00bc, 0x00bc, 0x00c5, 0x00c5, 0x00cc, 0x00cc, 0x00cc,
+ 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e6, 0x00e6, 0x00ef,
+ // Entry 80 - BF
+ 0x00ef, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00fd, 0x0103, 0x010e,
+ 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e,
+ 0x010e, 0x010e, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116,
+ 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x013e,
+ 0x0144, 0x0144, 0x0144, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f,
+ 0x014f, 0x0157, 0x0157, 0x015e, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ // Entry C0 - FF
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ // Entry 100 - 13F
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ // Entry 140 - 17F
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x0164, 0x016d,
+ },
+ },
+ { // ksf
+ "riakanriamarikriarabribɛlɔrísribulgaríribɛngáliricɛ́kridjɛrmanrigrɛ́krii" +
+ "ngɛrísrikpanyáripɛrsánripɛrɛsǝ́rikaksariíndíriɔngrɔáriindonɛsíriigbo" +
+ "riitalyɛ́nrijapɔ́ŋrijawanɛ́rikmɛrrikɔrɛɛ́rimalaíribirmánrinepalɛ́riɔ" +
+ "lándɛ́ripɛnjabíripɔlɔ́nripɔrtugɛ́rirɔmánrirísrirwandarisomalíriswɛ́d" +
+ "ǝritamúlritaíriturkriukrɛ́nriurdúriwyɛtnámriyúubaricinɔárizúlurikpa",
+ []uint16{ // 374 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a,
+ 0x002a, 0x002a, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x005b, 0x005b, 0x0064,
+ 0x0064, 0x0064, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007b,
+ 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0082,
+ 0x0082, 0x008a, 0x008a, 0x008a, 0x008a, 0x0095, 0x0095, 0x0095,
+ // Entry 40 - 7F
+ 0x0095, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
+ 0x00b3, 0x00b3, 0x00be, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9,
+ 0x00c9, 0x00c9, 0x00d0, 0x00d0, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ 0x00dc, 0x00dc, 0x00dc, 0x00e4, 0x00e4, 0x00ed, 0x00ed, 0x00ed,
+ 0x00f8, 0x00f8, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105,
+ 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0110, 0x0110, 0x011b,
+ // Entry 80 - BF
+ 0x011b, 0x0128, 0x0128, 0x0128, 0x0128, 0x0131, 0x0137, 0x013f,
+ 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x013f, 0x013f, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148,
+ 0x0153, 0x0153, 0x015b, 0x015b, 0x015b, 0x0161, 0x0161, 0x0161,
+ 0x0161, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0171,
+ 0x0178, 0x0178, 0x0178, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
+ 0x0183, 0x018b, 0x018b, 0x0194, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ // Entry C0 - FF
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ // Entry 100 - 13F
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ // Entry 140 - 17F
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b,
+ 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x01a0,
+ },
+ },
+ { // ksh
+ "AfahreschAbchahseschAvästahneschAfrikaansAkahneschAmhahreschArrajonehses" +
+ "chArahbeschAßamehseschAvahreschAimahreschAsserbaidschahneschBaschkih" +
+ "reschWiißrußeschBulljaareschBambaraBängjaaleschTibehteschBettohnesch" +
+ "BoßneschKattalahneschKorseschTschäscheschKerscheßlahweschTschowasche" +
+ "schWallihseschDähneschDeutschDivehjeschButahneschEweJrihscheschÄngle" +
+ "schEsperantoSchpahneschÄßneschBaskeschPärseschFinneschFidscheschFärr" +
+ "öereschFranzüüseschWäßfriiseschIereschJalliizeschJuwaraaneschGutsch" +
+ "arateschHaußaHebräjeschHindiKrowateschHa’iiteschUnjarreschArmeenesch" +
+ "IndoneeseschIgboIdoIßländeschEtalljäneschInuktitutJapaaneschJavahnes" +
+ "chJe’orjeschKassakeschKhmerKannadaKorrejaaneschKaschmiereschKurdesch" +
+ "KirjihseschLateijneschLuxemborjeschLingjallaLahooteschLittoueschLätt" +
+ "eschMadajaßkeschMaahoriMazedooneschMallajalamMongjoleschMarraateschM" +
+ "allaijeschMalteeseschBurmesseschNood-NdebeleNepallesseschHolländesch" +
+ "Neu-NorrweejeschNorrweejesch BokmålSchi-SchewaOriijaOßeeteschPanscha" +
+ "abeschPollneschPaschtuuneschPochtojeseschKättschowaRätoromaaneschK-R" +
+ "undeschRumäneschRußßeschKinja-RuandeschSanskritSinndiNood-Lappländes" +
+ "chSangjoSingjaleeseschẞlovakeschẞloveeneschSammohaneschSchi-SchonaSo" +
+ "maaleschAlbaaneschSärbeschSi-SwateschSöd-SootoSindaneeseschSchweedes" +
+ "chSuaheeleschTamiileschTelluujuTadschiikeschTailändeschTijrenejaanes" +
+ "chTörkmeeneschSe-ZwaaneschTongjaaneschTörkeschXi-ZongjaneschTattaare" +
+ "schTahiteschUj’juuerschUkraineschUrdu/HindiUßbeekeschWendaVijätnamme" +
+ "eseschWoloffIsi-KhoosaJoruubaSchineeseschSuuluAschenehseschTonehsesc" +
+ "h ArahbeschAfrehihleschAkahdeschAle’uhteschAhl ÄngleschAljehresch Ar" +
+ "ahbeschMarokahnesch ArahbeschÄjiptesch ArahbeschPareAmärrekahnesche " +
+ "BlendeschprohchAstuhrejahneschBeluhtscheschBalinehseschBaireschBemba" +
+ "BenaBischnuprejahneschBrajeschBrahuijeschBoddoBurejahteschBujinehses" +
+ "chKopteschKaschuhbeschNiddersorbeschMeddelnehderlängschDassajahnesch" +
+ "EmbuEfikEmilijahneschAhl ÄjipteschMeddelängleschZätrahl-JupikfilSchw" +
+ "itzerdütschHauajaaneschEngjuscheschIngjrijahneschJamaikahnesch-Ängle" +
+ "schLodschbahnJühdesch-PärseschJüteschKapvärdeschKölschde Landa-Schpr" +
+ "oocheLuyjanesch-ongerscheidlijje Schprooche-Nood-SootoKiromboJackute" +
+ "schKommooreschTetumschTook Pisin-onbikannte-Schprooch-WalserdütschKa" +
+ "nton-Schineeseschkein SchproochSchtandatt ArahbeschSödasserbaidschah" +
+ "neschDeutsch uß ÖßterichDeutsch uß de SchweijzÄnglesch uß Außtraalij" +
+ "eÄnglesch uß KanadaÄnglesch uß JruußbrettannijeAmärrekaanesch Ängles" +
+ "chSchpaanesch uß Latting-AmmärrikaSchpahnesch en SchpahnejeSchpahnes" +
+ "ch en MäxikohFranzüüsesch uß KanadaFranzüüsesch uß de SchweijzFlämes" +
+ "chBrasilljaanesch PochtojeseschPochtojesesch uß PochtojallSärbokowat" +
+ "eschSchineesesch en de eijfacher SchreffSchineesesch en de tradizjon" +
+ "älle Schreff",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0014, 0x0021, 0x002a, 0x0033, 0x003d, 0x004b,
+ 0x0054, 0x0060, 0x0069, 0x0073, 0x0086, 0x0093, 0x00a0, 0x00ac,
+ 0x00ac, 0x00b3, 0x00c0, 0x00ca, 0x00d5, 0x00de, 0x00eb, 0x00eb,
+ 0x00eb, 0x00f3, 0x00f3, 0x0100, 0x0111, 0x011f, 0x012a, 0x0133,
+ 0x013a, 0x0144, 0x014e, 0x0151, 0x015c, 0x0165, 0x016e, 0x0179,
+ 0x0182, 0x018a, 0x0193, 0x0193, 0x019b, 0x01a5, 0x01b2, 0x01c0,
+ 0x01ce, 0x01d5, 0x01d5, 0x01e0, 0x01ec, 0x01fa, 0x01fa, 0x0200,
+ 0x020b, 0x0210, 0x0210, 0x021a, 0x0226, 0x0230, 0x023a, 0x023a,
+ // Entry 40 - 7F
+ 0x023a, 0x0246, 0x0246, 0x024a, 0x024a, 0x024a, 0x024d, 0x0259,
+ 0x0266, 0x026f, 0x0279, 0x0283, 0x028f, 0x028f, 0x028f, 0x028f,
+ 0x0299, 0x0299, 0x029e, 0x02a5, 0x02b2, 0x02b2, 0x02bf, 0x02c7,
+ 0x02c7, 0x02c7, 0x02d2, 0x02dd, 0x02ea, 0x02ea, 0x02ea, 0x02f3,
+ 0x02fd, 0x0307, 0x0307, 0x0310, 0x031d, 0x031d, 0x0324, 0x0330,
+ 0x033a, 0x0345, 0x0350, 0x035b, 0x0366, 0x0371, 0x0371, 0x037d,
+ 0x038a, 0x038a, 0x0396, 0x03a6, 0x03ba, 0x03ba, 0x03ba, 0x03c5,
+ 0x03c5, 0x03c5, 0x03c5, 0x03cb, 0x03d5, 0x03e2, 0x03e2, 0x03eb,
+ // Entry 80 - BF
+ 0x03f8, 0x0405, 0x0410, 0x041f, 0x0429, 0x0433, 0x043d, 0x044c,
+ 0x0454, 0x0454, 0x045a, 0x046c, 0x0472, 0x0480, 0x048c, 0x0499,
+ 0x04a5, 0x04b0, 0x04ba, 0x04c4, 0x04cd, 0x04d8, 0x04e2, 0x04ef,
+ 0x04fa, 0x0505, 0x050f, 0x0517, 0x0524, 0x0530, 0x053f, 0x054c,
+ 0x0558, 0x0564, 0x056d, 0x057b, 0x0586, 0x058f, 0x059c, 0x05a6,
+ 0x05b0, 0x05bb, 0x05c0, 0x05d1, 0x05d1, 0x05d1, 0x05d7, 0x05e1,
+ 0x05e1, 0x05e8, 0x05e8, 0x05f4, 0x05f9, 0x0606, 0x0606, 0x0606,
+ 0x0606, 0x061a, 0x0626, 0x0626, 0x0626, 0x062f, 0x062f, 0x063c,
+ // Entry C0 - FF
+ 0x063c, 0x063c, 0x0649, 0x0649, 0x0649, 0x0649, 0x0649, 0x0649,
+ 0x065d, 0x065d, 0x0673, 0x0687, 0x068b, 0x06ab, 0x06ba, 0x06ba,
+ 0x06ba, 0x06c7, 0x06d3, 0x06db, 0x06db, 0x06db, 0x06db, 0x06db,
+ 0x06db, 0x06e0, 0x06e0, 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06e4,
+ 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0x06f6, 0x06f6, 0x06fe,
+ 0x0709, 0x070e, 0x070e, 0x071a, 0x0726, 0x0726, 0x0726, 0x0726,
+ 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726,
+ 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726, 0x0726,
+ // Entry 100 - 13F
+ 0x072e, 0x072e, 0x072e, 0x073a, 0x073a, 0x073a, 0x073a, 0x073a,
+ 0x073a, 0x073a, 0x073a, 0x073a, 0x073a, 0x0748, 0x0748, 0x0748,
+ 0x075c, 0x075c, 0x075c, 0x0769, 0x076d, 0x0771, 0x077e, 0x078c,
+ 0x078c, 0x078c, 0x079b, 0x07a9, 0x07a9, 0x07a9, 0x07a9, 0x07ac,
+ 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac,
+ 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac,
+ 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac,
+ 0x07ac, 0x07ac, 0x07bc, 0x07bc, 0x07bc, 0x07bc, 0x07bc, 0x07bc,
+ // Entry 140 - 17F
+ 0x07bc, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8,
+ 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07d4, 0x07e2, 0x07f9, 0x0803,
+ 0x0803, 0x0803, 0x0816, 0x0816, 0x081e, 0x081e, 0x081e, 0x081e,
+ 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x082a,
+ 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a,
+ 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a,
+ 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x082a, 0x0831, 0x0831,
+ 0x0831, 0x0831, 0x0831, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844,
+ // Entry 180 - 1BF
+ 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844, 0x0844,
+ 0x0844, 0x0844, 0x0844, 0x0844, 0x084e, 0x084e, 0x084e, 0x084e,
+ 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e,
+ 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e,
+ 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x086b,
+ 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b,
+ 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x086b,
+ 0x086b, 0x086b, 0x086b, 0x086b, 0x086b, 0x0875, 0x0875, 0x0875,
+ // Entry 1C0 - 1FF
+ 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875,
+ 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875,
+ 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875,
+ 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x087c, 0x087c, 0x087c,
+ 0x087c, 0x087c, 0x087c, 0x087c, 0x087c, 0x0886, 0x0886, 0x0886,
+ 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886,
+ 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886,
+ 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886,
+ // Entry 200 - 23F
+ 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886, 0x0886,
+ 0x0886, 0x0886, 0x0886, 0x0891, 0x0891, 0x0891, 0x0891, 0x0891,
+ 0x0891, 0x0891, 0x0891, 0x0891, 0x0899, 0x0899, 0x0899, 0x0899,
+ 0x0899, 0x0899, 0x0899, 0x0899, 0x0899, 0x0899, 0x08a3, 0x08a3,
+ 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08a3,
+ 0x08a3, 0x08a3, 0x08a3, 0x08a3, 0x08b9, 0x08b9, 0x08b9, 0x08b9,
+ 0x08b9, 0x08b9, 0x08b9, 0x08b9, 0x08b9, 0x08c6, 0x08c6, 0x08c6,
+ 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6, 0x08c6,
+ // Entry 240 - 27F
+ 0x08c6, 0x08c6, 0x08c6, 0x08d9, 0x08d9, 0x08d9, 0x08d9, 0x08d9,
+ 0x08d9, 0x08d9, 0x08e7, 0x08e7, 0x08fb, 0x0912, 0x0928, 0x093f,
+ 0x0959, 0x096d, 0x098c, 0x09a5, 0x09c7, 0x09e0, 0x09f7, 0x09f7,
+ 0x0a10, 0x0a2e, 0x0a2e, 0x0a37, 0x0a54, 0x0a70, 0x0a70, 0x0a7f,
+ 0x0aa3, 0x0acc,
+ },
+ },
+ { // kw
+ "kernewek",
+ []uint16{ // 90 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0008,
+ },
+ },
+ { // ky
+ kyLangStr,
+ kyLangIdx,
+ },
+ { // lag
+ "KɨakáaniKɨmʉháariKɨaráabuKɨberalúusiKɨbulugáriaKɨbangálaKɨchéekiKɨjerʉmá" +
+ "aniKɨgiríkiKɨɨngeréesaKɨhispániaKɨajéemiKɨfaráansaKɨhaúusaKɨhíindiKɨ" +
+ "hungáriKɨɨndonésiaKiígiboKɨtaliáanoKɨjapáaniKɨjáavaKɨkambódiaKɨkoréa" +
+ "KɨmelésiaKɨbáamaKɨnepáaliKɨholáanziKɨpúnjabiKɨpólandiKɨréenoKɨromaní" +
+ "aKɨrúusiKɨnyarwáandaKɨsómáaliKɨswíidiKɨtamíiliKɨtáilandiKɨturúukiKɨu" +
+ "kɨraníaKɨúrduKɨvietináamuKɨyorúubaKɨchíinaKɨzúuluKɨlaangi",
+ []uint16{ // 379 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002d, 0x003a,
+ 0x003a, 0x003a, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
+ 0x005d, 0x005d, 0x005d, 0x005d, 0x0067, 0x0075, 0x0075, 0x0081,
+ 0x0081, 0x0081, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x0097,
+ 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x00a1,
+ 0x00a1, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b6, 0x00b6, 0x00b6,
+ // Entry 40 - 7F
+ 0x00b6, 0x00c4, 0x00c4, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
+ 0x00d8, 0x00d8, 0x00e3, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec,
+ 0x00ec, 0x00ec, 0x00f8, 0x00f8, 0x0101, 0x0101, 0x0101, 0x0101,
+ 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101,
+ 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101,
+ 0x0101, 0x0101, 0x0101, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115,
+ 0x0120, 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c,
+ 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x0137, 0x0137, 0x0142,
+ // Entry 80 - BF
+ 0x0142, 0x014b, 0x014b, 0x014b, 0x014b, 0x0156, 0x015f, 0x016d,
+ 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d,
+ 0x016d, 0x016d, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179,
+ 0x0183, 0x0183, 0x018e, 0x018e, 0x018e, 0x019a, 0x019a, 0x019a,
+ 0x019a, 0x019a, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01b2,
+ 0x01ba, 0x01ba, 0x01ba, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8,
+ 0x01c8, 0x01d3, 0x01d3, 0x01dd, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ // Entry C0 - FF
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ // Entry 100 - 13F
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ // Entry 140 - 17F
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01ef,
+ },
+ },
+ { // lb
+ "AfarAbchaseschAvesteschAfrikaansAkanAmhareschAragoneseschArabeschAssames" +
+ "eschAwareschAymaraAserbaidschaneschBaschkireschWäissrusseschBulgares" +
+ "chBislamaBambara-SproochBengaleschTibeteschBretoneschBosneschKatalan" +
+ "eschTschetscheneschChamorro-SproochKorseschCreeTschecheschKierchesla" +
+ "weschTschuwascheschWaliseschDäneschDäitschMaldiveschBhutaneschEwe-Sp" +
+ "roochGriicheschEngleschEsperantoSpueneschEstneschBaskeschPerseschFul" +
+ "FinneschFidschianeschFäröeschFranséischWestfrieseschIreschSchottesch" +
+ "t GälleschGalizeschGuaraniGujaratiManxHausaHebräeschHindiHiri-MotuKr" +
+ "oateschHaitianeschUngareschArmeneschHerero-SproochInterlinguaIndones" +
+ "eschInterlingueIgbo-SproochSichuan YiInupiakIdo-SproochIslänneschIta" +
+ "lieneschInukitutJapaneschJavaneschGeorgeschKongoleseschKikuyu-Sprooc" +
+ "hKwanyamaKasacheschGrönlänneschKambodschaneschKannadaKoreaneschKanur" +
+ "i-SproochKaschmireschKurdeschKomi-SproochKorneschKirgiseschLatäinLët" +
+ "zebuergeschGanda-SproochLimburgeschLingalaLaoteschLitaueschLuba-Kata" +
+ "ngaLetteschMalagassi-SproochMarschalleseschMaoriMazedoneschMalayalam" +
+ "MongoleschMarathiMalaieschMalteseschBirmaneschNaurueschNord-Ndebele-" +
+ "SproochNepaleseschNdongaHollänneschNorwegesch NynorskNorwegesch Bokm" +
+ "ålSüd-Ndebele-SproochNavajoNyanja-SproochOkzitaneschOjibwa-SproochO" +
+ "romoOrijaOsseteschPandschabeschPaliPolneschPaschtuPortugiseschQuechu" +
+ "aRätoromaneschRundi-SproochRumäneschRusseschRuandeschSanskritSardesc" +
+ "hSindhiNordsameschSangoSinghaleseschSlowakeschSloweneschSamoaneschSh" +
+ "onaSomaliAlbaneschSerbeschSwaziSüd-Sotho-SproochSundaneseschSchwedes" +
+ "chSuaheliTamileschTeluguTadschikeschThailänneschTigrinjaTurkmeneschT" +
+ "swana-SproochTongaeschTierkeschTsongaTatareschTahiteschUigureschUkra" +
+ "ineschUrduUsbekeschVenda-SproochVietnameseschVolapükWallouneschWolof" +
+ "XhosaJiddeschYorubaZhuangChineseschZuluAceh-SproochAcholi-SproochAda" +
+ "ngmeAdygéieschTunesescht ArabeschAfrihiliAghemAinu-SproochAkkadeschA" +
+ "labamaAleuteschGegeschSüd-AlaeschAlengleschAngikaAramäeschMapudungun" +
+ "AraonaArapaho-SproochAlgerescht ArabeschArawak-SproochMarokkanescht " +
+ "ArabeschEgyptescht ArabeschAsu (Tanzania)Amerikanesch ZeechesproochA" +
+ "sturianeschKotavaAwadhiBelutscheschBalineseschBaireschBasaa-SproochB" +
+ "amunBatak TobaGhomálá’BedauyeBemba-SproochBetawiBenaBafutBadagaBhods" +
+ "chpuriBikol-SproochBini-SproochBanjareseschKomBlackfoot-SproochBishn" +
+ "upriyaBachtiareschBraj-BhakhaBrahuiBodoAkooseBurjateschBugineseschBu" +
+ "luBlinMedumbaCaddoKaribeschCayugaAtsamCebuanoKigaChibcha-SproochTsch" +
+ "agataeschTrukeseschMariChinookChoctawChipewyanCherokeeCheyenneSorani" +
+ "KopteschCapiznonKrimtatareschKaschubeschDakota-SproochDargineschTait" +
+ "aDelaware-SproochSlaveDogribDinka-SproochZarmaDogriNiddersorbeschZen" +
+ "tral-DusunDualaMëttelhollänneschJola-FonyiDyula-SproochDazagaKiembuE" +
+ "fikEmilianeschEgypteschEkajukElameschMëttelengleschYup’ikEwondoExtre" +
+ "madureschPangwe-SproochFilipinoMeänkieliFon-SproochCajunMëttelfransé" +
+ "ischAlfranséischFrankoprovenzaleschNordfrieseschOstfrieseschFriulesc" +
+ "hGa-SproochGagauseschGan-ChineseschGayoGbaya-SproochZoroastrianescht" +
+ " DariGeezGilberteseschGilakiMëttelhéichdäitschAlhéichdäitschGoan-Kon" +
+ "kaniGondi-SproochMongondouGoteschGrebo-SproochAlgriicheschSchwäizerd" +
+ "äitschWayuuFarefareGusii-SproochKutchin-SproochHaida-SproochHakka-C" +
+ "hineseschHawaieschFidschi-HindiHiligaynon-SproochHethiteschMiao-Spro" +
+ "ochUewersorbeschXiang-ChineseschHupaIbanIbibioIlokano-SproochIngusch" +
+ "eschIschoreschJamaikanesch-KreoleschLojbanNgombaMachameJiddesch-Pers" +
+ "eschJiddesch-ArabeschJüteschKarakalpakeschKabyleschKachin-SproochJju" +
+ "KambaKawiKabardineschKanembuTyapMakondeKabuverdianuKenyangKoroKainga" +
+ "ngKhasi-SproochSakeschKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbund" +
+ "u-SproochKomi-PermiakKonkaniKosraeaneschKpelle-SproochKaratschaiesch" +
+ "-BalkareschKrioKinaray-aKareleschOraon-SproochShambalaBafiaKölschKum" +
+ "ükeschKutenai-SproochLadinoLangiLahndaLamba-SproochLesgeschLingua F" +
+ "ranca NovaLigureschLiveschLakota-SproochLombardeschMongoRotse-Sprooc" +
+ "hLettgalleschLuba-LuluaLuiseno-SproochLunda-SproochLuo-SproochLushai" +
+ "-SproochOlulujiaKlassescht ChineseschLasesch SproochMadureseschMafaK" +
+ "hottaMaithiliMakassareschManding-SproochMassai-SproochMabaMokshaMand" +
+ "areseschMende-SproochMeru-SproochMorisyenMëttelireschMakhuwa-MeettoM" +
+ "eta’Micmac-SproochMinangkabau-SproochMandschureschMeithei-SproochMoh" +
+ "awk-SproochMossi-SproochWest-MariMundangMéisproochegMuskogee-Sprooch" +
+ "MirandeseschMarwariMentawaiMyeneErsja-MordwineschMazandaraniMin-Nan-" +
+ "ChineseschNeapolitaneschNamaNidderdäitschNewariNias-SproochNiue-Spro" +
+ "ochAo NagaKwasioNgiemboonNogaiAlnordeschNovialN’KoNord-Sotho-Sprooch" +
+ "NuerAl-NewariNyamwezi-SproochNyankoleNyoroNzimaOsage-SproochOsmanesc" +
+ "hPangasinan-SproochMëttelperseschPampanggan-SproochPapiamentoPalauPi" +
+ "cardeschPennsylvaniadäitschPlattdäitschAlperseschPfälzesch DäitschPh" +
+ "önikeschPiemonteseschPonteschPonapeaneschPreiseschAlprovenzaleschQu" +
+ "iché-SproochKichwa (Chimborazo-Gebidder)RajasthaniOuschterinsel-Spro" +
+ "ochRarotonganeschRomagnolTarifitRomboRomaniRotumaneschRussineschRovi" +
+ "anaAromuneschRwaSandawe-SproochJakuteschSamaritaneschSamburuSasakSan" +
+ "taliSaurashtraNgambaySanguSizilianeschSchotteschSassareseschSenecaSe" +
+ "naSeriSelkupeschKoyra SenniAlireschSamogiteschTaschelhitSchan-Sprooc" +
+ "hTschadesch-ArabeschSidamoNidderschleseschSelayarSüdsameschLule-Lapp" +
+ "eschInari-LappeschSkolt-LappeschSoninke-SproochSogdeschSrananeschSer" +
+ "er-SproochSahoSaterfrieseschSukuma-SproochSusuSumereschKomoreschKong" +
+ "o-SwahiliAlsyreschSyreschSchleseschTuluTemneTesoTereno-SproochTetum-" +
+ "SproochTigreTiv-SproochTokelauaneschTsachureschKlingoneschTlingit-Sp" +
+ "roochTaleschTamaseqTsonga-SproochNeimelaneseschTuroyoSeediqTsakonesc" +
+ "hTsimshian-SproochTateschTumbuka-SproochElliceaneschTasawaqTuwinesch" +
+ "Mëttlert-Atlas-TamazightUdmurteschUgariteschMbundu-SproochRootVai-Sp" +
+ "roochVenezeschWepseschWestflämeschMainfränkeschWoteschVoroVunjoWalli" +
+ "serdäitschWalamo-SproochWarayWasho-SproochWu-ChineseschKalmückeschMi" +
+ "ngrelesch SproochSogaYao-SproochYapeseschYangbenYembaNheengatuKanton" +
+ "eseschZapotekeschBliss-SymbolerSeelänneschZenagaMarokkanescht Standa" +
+ "rd-TamazightZuni-SproochKeng SproochinhalterZazaModernt Héicharabesc" +
+ "hÉisträichescht DäitschSchwäizer HéichdäitschAustralescht EngleschKa" +
+ "nadescht EngleschBritescht EngleschAmerikanescht EngleschLatäinameri" +
+ "kanescht SpueneschEuropäescht SpueneschMexikanescht SpueneschKanades" +
+ "cht FranséischSchwäizer FranséischFlämeschBrasilianescht Portugisesc" +
+ "hEuropäescht PortugiseschMoldaweschSerbo-KroateschChinesesch (verein" +
+ "facht)Chinesesch (traditionell)",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039,
+ 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0085, 0x008f,
+ 0x0096, 0x00a5, 0x00af, 0x00b8, 0x00c2, 0x00ca, 0x00d5, 0x00e4,
+ 0x00f4, 0x00fc, 0x0100, 0x010b, 0x011a, 0x0128, 0x0131, 0x0139,
+ 0x0141, 0x014b, 0x0155, 0x0160, 0x016a, 0x0172, 0x017b, 0x0184,
+ 0x018c, 0x0194, 0x019c, 0x019f, 0x01a7, 0x01b4, 0x01be, 0x01c9,
+ 0x01d6, 0x01dc, 0x01f1, 0x01fa, 0x0201, 0x0209, 0x020d, 0x0212,
+ 0x021c, 0x0221, 0x022a, 0x0233, 0x023e, 0x0247, 0x0250, 0x025e,
+ // Entry 40 - 7F
+ 0x0269, 0x0274, 0x027f, 0x028b, 0x0295, 0x029c, 0x02a7, 0x02b2,
+ 0x02bd, 0x02c5, 0x02ce, 0x02d7, 0x02e0, 0x02ec, 0x02fa, 0x0302,
+ 0x030c, 0x031a, 0x0329, 0x0330, 0x033a, 0x0348, 0x0354, 0x035c,
+ 0x0368, 0x0370, 0x037a, 0x0381, 0x0390, 0x039d, 0x03a8, 0x03af,
+ 0x03b7, 0x03c0, 0x03cc, 0x03d4, 0x03e5, 0x03f4, 0x03f9, 0x0404,
+ 0x040d, 0x0417, 0x041e, 0x0427, 0x0431, 0x043b, 0x0444, 0x0458,
+ 0x0463, 0x0469, 0x0475, 0x0487, 0x0499, 0x04ad, 0x04b3, 0x04c1,
+ 0x04cc, 0x04da, 0x04df, 0x04e4, 0x04ed, 0x04fa, 0x04fe, 0x0506,
+ // Entry 80 - BF
+ 0x050d, 0x0519, 0x0520, 0x052e, 0x053b, 0x0545, 0x054d, 0x0556,
+ 0x055e, 0x0566, 0x056c, 0x0577, 0x057c, 0x0589, 0x0593, 0x059d,
+ 0x05a7, 0x05ac, 0x05b2, 0x05bb, 0x05c3, 0x05c8, 0x05da, 0x05e6,
+ 0x05f0, 0x05f7, 0x0600, 0x0606, 0x0612, 0x061f, 0x0627, 0x0632,
+ 0x0640, 0x0649, 0x0652, 0x0658, 0x0661, 0x066a, 0x0673, 0x067d,
+ 0x0681, 0x068a, 0x0697, 0x06a4, 0x06ac, 0x06b7, 0x06bc, 0x06c1,
+ 0x06c9, 0x06cf, 0x06d5, 0x06df, 0x06e3, 0x06ef, 0x06fd, 0x0704,
+ 0x070f, 0x0722, 0x072a, 0x072f, 0x073b, 0x0744, 0x074b, 0x0754,
+ // Entry C0 - FF
+ 0x075b, 0x0767, 0x0771, 0x0777, 0x0781, 0x078b, 0x0791, 0x07a0,
+ 0x07b3, 0x07c1, 0x07d7, 0x07ea, 0x07f8, 0x0812, 0x081e, 0x0824,
+ 0x082a, 0x0836, 0x0841, 0x0849, 0x0856, 0x085b, 0x0865, 0x0871,
+ 0x0878, 0x0885, 0x088b, 0x088f, 0x0894, 0x089a, 0x089a, 0x08a5,
+ 0x08b2, 0x08be, 0x08ca, 0x08cd, 0x08de, 0x08e9, 0x08f5, 0x0900,
+ 0x0906, 0x090a, 0x0910, 0x091a, 0x0925, 0x0929, 0x092d, 0x0934,
+ 0x0939, 0x0942, 0x0948, 0x094d, 0x0954, 0x0958, 0x0967, 0x0974,
+ 0x097e, 0x0982, 0x0989, 0x0990, 0x0999, 0x09a1, 0x09a9, 0x09af,
+ // Entry 100 - 13F
+ 0x09b7, 0x09bf, 0x09cc, 0x09d7, 0x09e5, 0x09ef, 0x09f4, 0x0a04,
+ 0x0a09, 0x0a0f, 0x0a1c, 0x0a21, 0x0a26, 0x0a34, 0x0a41, 0x0a46,
+ 0x0a59, 0x0a63, 0x0a70, 0x0a76, 0x0a7c, 0x0a80, 0x0a8b, 0x0a94,
+ 0x0a9a, 0x0aa2, 0x0ab1, 0x0ab9, 0x0abf, 0x0acd, 0x0adb, 0x0ae3,
+ 0x0aed, 0x0af8, 0x0afd, 0x0b0f, 0x0b1c, 0x0b2f, 0x0b3c, 0x0b48,
+ 0x0b51, 0x0b5b, 0x0b65, 0x0b73, 0x0b77, 0x0b84, 0x0b99, 0x0b9d,
+ 0x0baa, 0x0bb0, 0x0bc5, 0x0bd5, 0x0be1, 0x0bee, 0x0bf7, 0x0bfe,
+ 0x0c0b, 0x0c17, 0x0c29, 0x0c2e, 0x0c36, 0x0c43, 0x0c52, 0x0c5f,
+ // Entry 140 - 17F
+ 0x0c6f, 0x0c78, 0x0c85, 0x0c97, 0x0ca1, 0x0cad, 0x0cba, 0x0cca,
+ 0x0cce, 0x0cd2, 0x0cd8, 0x0ce7, 0x0cf2, 0x0cfc, 0x0d12, 0x0d18,
+ 0x0d1e, 0x0d25, 0x0d36, 0x0d47, 0x0d4f, 0x0d5d, 0x0d66, 0x0d74,
+ 0x0d77, 0x0d7c, 0x0d80, 0x0d8c, 0x0d93, 0x0d97, 0x0d9e, 0x0daa,
+ 0x0db1, 0x0db5, 0x0dbd, 0x0dca, 0x0dd1, 0x0ddd, 0x0de3, 0x0dec,
+ 0x0df0, 0x0df8, 0x0e08, 0x0e14, 0x0e1b, 0x0e27, 0x0e35, 0x0e4e,
+ 0x0e52, 0x0e5b, 0x0e64, 0x0e71, 0x0e79, 0x0e7e, 0x0e85, 0x0e8f,
+ 0x0e9e, 0x0ea4, 0x0ea9, 0x0eaf, 0x0ebc, 0x0ec4, 0x0ed6, 0x0edf,
+ // Entry 180 - 1BF
+ 0x0ee6, 0x0ef4, 0x0eff, 0x0f04, 0x0f11, 0x0f11, 0x0f1d, 0x0f27,
+ 0x0f36, 0x0f43, 0x0f4e, 0x0f5c, 0x0f64, 0x0f79, 0x0f88, 0x0f93,
+ 0x0f97, 0x0f9d, 0x0fa5, 0x0fb1, 0x0fc0, 0x0fce, 0x0fd2, 0x0fd8,
+ 0x0fe4, 0x0ff1, 0x0ffd, 0x1005, 0x1012, 0x1020, 0x1027, 0x1035,
+ 0x1048, 0x1055, 0x1064, 0x1072, 0x107f, 0x1088, 0x108f, 0x109c,
+ 0x10ac, 0x10b8, 0x10bf, 0x10c7, 0x10cc, 0x10dd, 0x10e8, 0x10fa,
+ 0x1108, 0x110c, 0x111a, 0x1120, 0x112c, 0x1138, 0x113f, 0x1145,
+ 0x114e, 0x1153, 0x115d, 0x1163, 0x1169, 0x117b, 0x117f, 0x1188,
+ // Entry 1C0 - 1FF
+ 0x1198, 0x11a0, 0x11a5, 0x11aa, 0x11b7, 0x11c0, 0x11d2, 0x11e1,
+ 0x11f3, 0x11fd, 0x1202, 0x120c, 0x1220, 0x122d, 0x1237, 0x124a,
+ 0x1255, 0x1262, 0x126a, 0x1276, 0x127f, 0x128e, 0x129d, 0x12b9,
+ 0x12c3, 0x12d8, 0x12e6, 0x12ee, 0x12f5, 0x12fa, 0x1300, 0x130b,
+ 0x1315, 0x131c, 0x1326, 0x1329, 0x1338, 0x1341, 0x134e, 0x1355,
+ 0x135a, 0x1361, 0x136b, 0x1372, 0x1377, 0x1383, 0x138d, 0x1399,
+ 0x1399, 0x139f, 0x13a3, 0x13a7, 0x13b1, 0x13bc, 0x13c4, 0x13cf,
+ 0x13d9, 0x13e6, 0x13f9, 0x13ff, 0x140f, 0x1416, 0x1421, 0x142e,
+ // Entry 200 - 23F
+ 0x143c, 0x144a, 0x1459, 0x1461, 0x146b, 0x1478, 0x147c, 0x148a,
+ 0x1498, 0x149c, 0x14a5, 0x14ae, 0x14bb, 0x14c4, 0x14cb, 0x14d5,
+ 0x14d9, 0x14de, 0x14e2, 0x14f0, 0x14fd, 0x1502, 0x150d, 0x151a,
+ 0x1525, 0x1530, 0x153f, 0x1546, 0x154d, 0x155b, 0x1569, 0x156f,
+ 0x1575, 0x157f, 0x1590, 0x1597, 0x15a6, 0x15b2, 0x15b9, 0x15c2,
+ 0x15db, 0x15e5, 0x15ef, 0x15fd, 0x1601, 0x160c, 0x1615, 0x161d,
+ 0x162a, 0x1638, 0x163f, 0x1643, 0x1648, 0x1658, 0x1666, 0x166b,
+ 0x1678, 0x1678, 0x1685, 0x1691, 0x16a4, 0x16a8, 0x16b3, 0x16bc,
+ // Entry 240 - 27F
+ 0x16c3, 0x16c8, 0x16d1, 0x16dd, 0x16e8, 0x16f6, 0x1702, 0x1708,
+ 0x1728, 0x1734, 0x1748, 0x174c, 0x1762, 0x1762, 0x177b, 0x1794,
+ 0x17a9, 0x17bc, 0x17ce, 0x17e4, 0x1802, 0x1818, 0x182e, 0x182e,
+ 0x1844, 0x185a, 0x185a, 0x1863, 0x187e, 0x1897, 0x18a1, 0x18b0,
+ 0x18c8, 0x18e1,
+ },
+ },
+ { // lg
+ "Lu-akaaniLu-amharikiLuwarabuLubelarusiLubulugariyaLubengaliLuceekeLudaak" +
+ "iLugereeki/LuyonaaniLungerezaLusipanyaLuperusiLufalansaLuhawuzaLuhin" +
+ "duLuhangareLuyindonezyaLuyiboLuyitaleLujapaniLunnajjavaLukmeLukoreya" +
+ "LugandaLumalayiLubbamaLunepaliLuholandiLupunjabiLupolandiLupotugiizi" +
+ "LulomaniyaLulasaLunarwandaLusomaliyaLuswideniLutamiiruLuttaayiLutake" +
+ "LuyukurayineLu-uruduLuvyetinaamuLuyorubaLucayinaLuzzulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x0026, 0x0032,
+ 0x0032, 0x0032, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x0049, 0x0049, 0x0049, 0x0049, 0x005c, 0x0065, 0x0065, 0x006e,
+ 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f,
+ 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x0087,
+ 0x0087, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097,
+ // Entry 40 - 7F
+ 0x0097, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
+ 0x00b1, 0x00b1, 0x00b9, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c8, 0x00c8, 0x00d0, 0x00d0, 0x00d0, 0x00d0,
+ 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d7, 0x00d7, 0x00d7,
+ 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7,
+ 0x00d7, 0x00d7, 0x00d7, 0x00df, 0x00df, 0x00e6, 0x00e6, 0x00e6,
+ 0x00ee, 0x00ee, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
+ 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x0100, 0x0100, 0x0109,
+ // Entry 80 - BF
+ 0x0109, 0x0114, 0x0114, 0x0114, 0x0114, 0x011e, 0x0124, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138,
+ 0x0141, 0x0141, 0x014a, 0x014a, 0x014a, 0x0152, 0x0152, 0x0152,
+ 0x0152, 0x0152, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0164,
+ 0x016c, 0x016c, 0x016c, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,
+ 0x0178, 0x0180, 0x0180, 0x0188, 0x018f,
+ },
+ },
+ { // lkt
+ "Abkhaz IyápiAvestan IyápiAfrikaans IyápiAmharic IyápiArab IyápiAssamese " +
+ "IyápiAvaric IyápiAzerbaijani IyápiBashkir IyápiBelarus IyápiBulgar I" +
+ "yápiBengali IyápiTibetan IyápiBosnia IyápiCatalan IyápiChechen Iyápi" +
+ "Maštíŋča Oyáte IyápiCzech IyápiChuvash IyápiWales IyápiDane IyápiIyá" +
+ "šiča IyápiGreece IyápiWašíčuiyapiEsperanto IyápiSpayóla IyápiEstoni" +
+ "a IyápiBasque IyápiPersian IyápiFinnish IyápiFiji IyápiFaroese Iyápi" +
+ "Wašíču Ikčéka IyápiIrish IyápiGalician IyápiGuarani IyápiGujarati Iy" +
+ "ápiHausa IyápiHebrew IyápiHindi IyápiCroatian IyápiHaiti IyápiHunga" +
+ "ry IyápiArmenia IyápiIndonesia IyápiIgbo IyápiIceland IyápiItalia Iy" +
+ "ápiKisúŋla IyápiJava IyápiGeoria IyápiKazakh IyápiKhmer IyápiKannad" +
+ "a IyápiKorea IyápiKashmir IyápiKurd IyápiKirghiz IyápiLatin IyápiLux" +
+ "embourg IyápiLao IyápiLithuania IyápiltLatvia IyápiMalagasy IyápiMao" +
+ "ri IyápiMacedonia IyápiMalayalam IyápiMarathi IyápiMalay IyápiMaltes" +
+ "e IyápiBurmese IyápiNepal IyápiDutch IyápiŠináglegleǧa IyápiȞaȟátȟuŋ" +
+ "waŋ IyápiOriya IyápiPunjabi IyápiPolish IyápiPashto IyápiPortuguese " +
+ "IyápiQuechua IyápiRomansh IyápiRomanian IyápiRussia IyápiSanskrit Iy" +
+ "ápiSindhi IyápiSinhala IyápiSlovak IyápiSlovenian IyápiSomali Iyápi" +
+ "Albanian IyápiSerbia IyápiSundanese IyápiSwedish IyápiSwahili IyápiT" +
+ "amil IyápiTelugu IyápiTajik IyápiThai IyápiTigrinya IyápiTurkmen Iyá" +
+ "piTongan IyápiTurkish IyápiTatar IyápiUyghur IyápiUkrain IyápiUrdu I" +
+ "yápiUzbek IyápiVietnamese IyápiWolof IyápiXhosa IyápiYoruba IyápiPȟe" +
+ "čhókaŋ Háŋska IyápiZulu IyápiAdyghe IyápiItóǧata Altai IyápiMaȟpíya" +
+ " Tȟó IyápiBaluchi IyápiBamun IyápiBeja IyápiBuriat IyápiMari IyápiCh" +
+ "erokee IyápiŠahíyela IyápiCoptic IyápiCrimean Turkish IyápiDakȟótiya" +
+ "piDargwa IyápiDogri IyápiFilipino IyápiGbaya IyápiHawaiian IyápiIngu" +
+ "sh IyápiKara-Kalpak IyápiKabardian IyápiLahnda IyápiLakȟólʼiyapiMizo" +
+ " IyápiNamipuri IyápiComonian IyápiTukté iyápi tȟaŋíŋ šniZaza IyápiŠa" +
+ "gláša WašíčuiyapiMílahaŋska WašíčuiyapiWiyóȟpeyata Spayóla IyápiSpay" +
+ "ólaȟča IyápiFlemish IyápiPȟečhókaŋ Háŋska Iyápi IkčékaPȟečhókaŋ Háŋ" +
+ "ska Iyápi Ȟče",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000d, 0x001b, 0x002b, 0x002b, 0x0039, 0x0039,
+ 0x0044, 0x0053, 0x0060, 0x0060, 0x0072, 0x0080, 0x008e, 0x009b,
+ 0x009b, 0x009b, 0x00a9, 0x00b7, 0x00b7, 0x00c4, 0x00d2, 0x00e0,
+ 0x00e0, 0x00e0, 0x00fa, 0x0106, 0x0106, 0x0114, 0x0120, 0x012b,
+ 0x013c, 0x013c, 0x013c, 0x013c, 0x0149, 0x0157, 0x0167, 0x0176,
+ 0x0184, 0x0191, 0x019f, 0x019f, 0x01ad, 0x01b8, 0x01c6, 0x01df,
+ 0x01df, 0x01eb, 0x01eb, 0x01fa, 0x0208, 0x0217, 0x0217, 0x0223,
+ 0x0230, 0x023c, 0x023c, 0x024b, 0x0257, 0x0265, 0x0273, 0x0273,
+ // Entry 40 - 7F
+ 0x0273, 0x0283, 0x0283, 0x028e, 0x028e, 0x028e, 0x028e, 0x029c,
+ 0x02a9, 0x02a9, 0x02b9, 0x02c4, 0x02d1, 0x02d1, 0x02d1, 0x02d1,
+ 0x02de, 0x02de, 0x02ea, 0x02f8, 0x0304, 0x0304, 0x0312, 0x031d,
+ 0x031d, 0x031d, 0x032b, 0x0337, 0x0348, 0x0348, 0x0348, 0x0348,
+ 0x0352, 0x0364, 0x0364, 0x0371, 0x0380, 0x0380, 0x038c, 0x039c,
+ 0x03ac, 0x03ac, 0x03ba, 0x03c6, 0x03d4, 0x03e2, 0x03e2, 0x03e2,
+ 0x03ee, 0x03ee, 0x03fa, 0x03fa, 0x03fa, 0x03fa, 0x0410, 0x0410,
+ 0x0410, 0x0428, 0x0428, 0x0434, 0x0434, 0x0442, 0x0442, 0x044f,
+ // Entry 80 - BF
+ 0x045c, 0x046d, 0x047b, 0x0489, 0x0489, 0x0498, 0x04a5, 0x04a5,
+ 0x04b4, 0x04b4, 0x04c1, 0x04c1, 0x04c1, 0x04cf, 0x04dc, 0x04ec,
+ 0x04ec, 0x04ec, 0x04f9, 0x0508, 0x0515, 0x0515, 0x0515, 0x0525,
+ 0x0533, 0x0541, 0x054d, 0x055a, 0x0566, 0x0571, 0x0580, 0x058e,
+ 0x058e, 0x059b, 0x05a9, 0x05a9, 0x05b5, 0x05b5, 0x05c2, 0x05cf,
+ 0x05da, 0x05e6, 0x05e6, 0x05f7, 0x05f7, 0x05f7, 0x0603, 0x060f,
+ 0x060f, 0x061c, 0x061c, 0x0639, 0x0644, 0x0644, 0x0644, 0x0644,
+ 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651,
+ // Entry C0 - FF
+ 0x0651, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x067d,
+ 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d,
+ 0x067d, 0x068b, 0x068b, 0x068b, 0x068b, 0x0697, 0x0697, 0x0697,
+ 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2,
+ 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2,
+ 0x06a2, 0x06a2, 0x06a2, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af,
+ 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af,
+ 0x06af, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06c9, 0x06da, 0x06da,
+ // Entry 100 - 13F
+ 0x06e7, 0x06e7, 0x06fd, 0x06fd, 0x070a, 0x0717, 0x0717, 0x0717,
+ 0x0717, 0x0717, 0x0717, 0x0717, 0x0723, 0x0723, 0x0723, 0x0723,
+ 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723,
+ 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0732,
+ 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732,
+ 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x073e, 0x073e, 0x073e,
+ 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e,
+ 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e,
+ // Entry 140 - 17F
+ 0x073e, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d,
+ 0x074d, 0x074d, 0x074d, 0x074d, 0x075a, 0x075a, 0x075a, 0x075a,
+ 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x076c, 0x076c, 0x076c,
+ 0x076c, 0x076c, 0x076c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c,
+ 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c,
+ 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c,
+ 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c,
+ 0x077c, 0x077c, 0x077c, 0x0789, 0x0789, 0x0789, 0x0789, 0x0789,
+ // Entry 180 - 1BF
+ 0x0789, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798,
+ 0x0798, 0x0798, 0x0798, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3,
+ 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3,
+ 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3,
+ 0x07a3, 0x07a3, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ // Entry 1C0 - 1FF
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ // Entry 200 - 23F
+ 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2,
+ 0x07b2, 0x07b2, 0x07b2, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1,
+ 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1,
+ 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1,
+ 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1,
+ 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07de, 0x07de, 0x07de, 0x07de,
+ 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de,
+ 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de,
+ // Entry 240 - 27F
+ 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de,
+ 0x07de, 0x07de, 0x07de, 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07e9,
+ 0x07e9, 0x07e9, 0x0802, 0x081d, 0x083a, 0x084e, 0x084e, 0x084e,
+ 0x084e, 0x084e, 0x084e, 0x085c, 0x085c, 0x085c, 0x085c, 0x085c,
+ 0x0882, 0x08a5,
+ },
+ },
+ { // ln
+ "akanliamarikilialabolibyelorisílibiligalilibengalilitshekɛlialemáligelek" +
+ "ilingɛlɛ́salisipanyelipelésanɛlifalansɛ́hausalihindiliongililindonez" +
+ "iigbolitalianolizapɔlizavalikambodzalikoreyalingálalimalezilibilimál" +
+ "inepalɛlifalamálipendzabilipolonɛlipulutugɛ́siliromanilirisíkinyarwa" +
+ "ndalisomalilisuwedɛlitamulilitayelitilikilikrɛniliurduliviyetinámiyo" +
+ "rubalisinwazulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000d, 0x000d,
+ 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a,
+ 0x002a, 0x002a, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0059, 0x0059, 0x0062,
+ 0x0062, 0x0062, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007a,
+ 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007f,
+ 0x007f, 0x0086, 0x0086, 0x0086, 0x0086, 0x008e, 0x008e, 0x008e,
+ // Entry 40 - 7F
+ 0x008e, 0x0097, 0x0097, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x00a4, 0x00a4, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
+ 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00dc, 0x00dc, 0x00dc,
+ 0x00e5, 0x00e5, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee,
+ 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f8, 0x00f8, 0x0101,
+ // Entry 80 - BF
+ 0x0101, 0x0110, 0x0110, 0x0110, 0x0110, 0x0118, 0x011f, 0x012a,
+ 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a,
+ 0x012a, 0x012a, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132,
+ 0x013b, 0x013b, 0x0143, 0x0143, 0x0143, 0x0149, 0x0149, 0x0149,
+ 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159,
+ 0x015f, 0x015f, 0x015f, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x0172, 0x0172, 0x0179, 0x017d,
+ },
+ },
+ { // lo
+ loLangStr,
+ loLangIdx,
+ },
+ { // lrc
+ "آذأربایئجانیآفریکانسآکانأمھأریأرأڤیآسامیآذأربایئجانی ھارگەباشکیریبئلاروٙ" +
+ "سیبولغاریبامبارابأنگالیتأبأتیبئرئتونبوسنیاییکاتالانچئچئنیکوریسکانچو" +
+ "اشیڤئلزیدانمارکیآلمانیزوٙنگخائڤئیوٙنانیئینگیلیسیئسپئرانتوئسپانیاییئ" +
+ "ستونیاییباسکیفارسیفأنلاندیفیجیفاروٙسیفآرانسئ ئیفئریسی أفتونئشینئیرل" +
+ "أندیگالیسیگوٙآرانیگوجأراتیمانکسھائوساعئبریھئنیکوروڤاتیھاییتیمأجاریأ" +
+ "رمأنیأندونئزیاییئیگبوسی چوان ییئیسلأندیئیتالیاییئینوکتیتوٙتجاپوٙنیج" +
+ "اڤئ ییگورجیکیکیوٙقأزاقکالالیسوٙتخئمئرکانادکورئ ییکأشمیریکوردی کورما" +
+ "نجیکورنیشقئرقیزیلاتینلوٙکزامبوٙرگیگاندالینگالالاولیتوڤانیاییلوٙبا ک" +
+ "اتانگالاتوڤیاییمالاگاشیمائوریمأقدوٙنیمالایامموغولیمأراتیمالاییمالتی" +
+ "بئرمئ یینئدئبئلئ شومالینئپالیھولأندینورڤئجی نینورسکنورڤئجی بوٙکمالئ" +
+ "وروموٙئوریاپأنجابیلأھئستانیپأشتوٙپورتئغالیکوچوٙارومانشراندیرومانیای" +
+ "یروٙسیکینیاروآنداسانسکئریتسئندیسامی شومالیسانگوسینھالائسلوڤاکیئسلوڤ" +
+ "ئنیاییشوناسوٙمالیآلبانیسئربیسوٙدانیسوٙئدیسأڤاحیلیتامیلتئلئگوتاجیکیت" +
+ "ایلأندیتیگرینیاتورکأمأنیتوٙنگانتورکیتاتارئویغوٙرئوکراینیئوردوٙئوزبأ" +
+ "کیڤییئتنامیڤولوفخوٙسایوروباچینیزولوآقئمماپوٙچئآسوٙبیمابئنابألوٙچی أ" +
+ "قتوٙنئشینبودوچیگاچوروٙکیکوردی سوٙرانیتایتازارماسوربی ھاریدوٙالاجولا" +
+ " فوٙنییئمبوفیلیپینیگاگائوزآلمانی سوٙئیسیگوٙسیھاڤاییسوربی ڤارونئگوٙمب" +
+ "اماچامئکابیلئکامباماکوٙندئکاباردینوکی یورا چینیکالئجینکومی پئرمیاکک" +
+ "وٙنکانیشامبالابافیالانگیلاکوٙتالۊری شومالیلوٙلوٙئیاماساییمئروموٙریس" +
+ "یماخوڤا میتومئتاٛموٙھاڤکموٙندانگمازأندأرانیناماآلمانی ھاریکئڤاسیوٙن" +
+ "ئکوٙنیوٙئرنیان کوٙلئکیچیرومبورئڤاسامبوٙروٙسانگوٙکوردی ھارگەسئناکیار" +
+ "ابورو سئنیتاچئلھیتسامی ھارگەلۉلئ سامیئیناری سامیئسکولت سامیسأڤاحیلی" +
+ " کونگوتئسوتاساڤاقتامازیغ مینجاییزوٙن نادیارڤایڤوٙنجوٙڤارلپیریسوٙگاتا" +
+ "مازیغ مأراکئشیبی نئشوٙعروی مدرنآذأری ھارگەآلمانی ئوتریشیآلمانی سوٙی" +
+ "یسیئینگیلیسی ئوستارالیاییئینگیلیسی کاناداییئینگیلیسی بئریتانیاییئین" +
+ "گیلیسی ئمریکاییئسپانیایی ئمریکا لاتینئسپانیایی ئوروٙپائسپانیایی مئک" +
+ "زیکفآرانسئ ئی کانادافآرانسئ ئی سوٙییسآلمانی ھارگە جافئلاماندیپورتئغ" +
+ "الی بئرئزیلپورتئغالی ئوروٙپاییرومانیایی مولداڤیچینی سادە بیەچینی سو" +
+ "نأتی",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0018, 0x0018, 0x0028, 0x0030, 0x003c, 0x003c,
+ 0x0046, 0x0050, 0x0050, 0x0050, 0x0073, 0x0081, 0x0093, 0x00a1,
+ 0x00a1, 0x00af, 0x00bd, 0x00c9, 0x00d7, 0x00e7, 0x00f5, 0x0101,
+ 0x0101, 0x0111, 0x0111, 0x0111, 0x0111, 0x011b, 0x0125, 0x0135,
+ 0x0141, 0x0141, 0x014f, 0x0155, 0x0163, 0x0175, 0x0187, 0x0199,
+ 0x01ab, 0x01b5, 0x01bf, 0x01bf, 0x01cf, 0x01d7, 0x01e5, 0x01f8,
+ 0x0217, 0x0227, 0x0227, 0x0233, 0x0243, 0x0253, 0x025d, 0x0269,
+ 0x0273, 0x027b, 0x027b, 0x028b, 0x0297, 0x02a3, 0x02af, 0x02af,
+ // Entry 40 - 7F
+ 0x02af, 0x02c5, 0x02c5, 0x02cf, 0x02e1, 0x02e1, 0x02e1, 0x02f1,
+ 0x0303, 0x0319, 0x0327, 0x0334, 0x033e, 0x033e, 0x034a, 0x034a,
+ 0x0354, 0x0368, 0x0372, 0x037c, 0x0389, 0x0389, 0x0397, 0x03b2,
+ 0x03b2, 0x03be, 0x03cc, 0x03d6, 0x03f0, 0x03fa, 0x03fa, 0x0408,
+ 0x040e, 0x0424, 0x043d, 0x044f, 0x045f, 0x045f, 0x046b, 0x047b,
+ 0x0489, 0x0495, 0x04a1, 0x04ad, 0x04b7, 0x04c6, 0x04c6, 0x04e3,
+ 0x04ef, 0x04ef, 0x04fd, 0x051a, 0x0537, 0x0537, 0x0537, 0x0537,
+ 0x0537, 0x0537, 0x0545, 0x054f, 0x054f, 0x055d, 0x055d, 0x056f,
+ // Entry 80 - BF
+ 0x057b, 0x058d, 0x0599, 0x05a5, 0x05af, 0x05c1, 0x05cb, 0x05e1,
+ 0x05f3, 0x05f3, 0x05fd, 0x0612, 0x061c, 0x062a, 0x063a, 0x0650,
+ 0x0650, 0x0658, 0x0666, 0x0672, 0x067c, 0x067c, 0x067c, 0x068a,
+ 0x0696, 0x06a6, 0x06b0, 0x06bc, 0x06c8, 0x06d8, 0x06e8, 0x06fa,
+ 0x06fa, 0x0708, 0x0712, 0x0712, 0x071c, 0x071c, 0x072a, 0x073a,
+ 0x0746, 0x0754, 0x0754, 0x0766, 0x0766, 0x0766, 0x0770, 0x077a,
+ 0x077a, 0x0786, 0x0786, 0x078e, 0x0796, 0x0796, 0x0796, 0x0796,
+ 0x0796, 0x0796, 0x0796, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e,
+ // Entry C0 - FF
+ 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x07ac, 0x07ac, 0x07ac,
+ 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07b4, 0x07b4, 0x07b4, 0x07b4,
+ 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4,
+ 0x07b4, 0x07bc, 0x07bc, 0x07c4, 0x07c4, 0x07c4, 0x07e7, 0x07e7,
+ 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7,
+ 0x07e7, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef,
+ 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07f7, 0x07f7, 0x07f7,
+ 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x0805, 0x0805, 0x081e,
+ // Entry 100 - 13F
+ 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x0828, 0x0828,
+ 0x0828, 0x0828, 0x0828, 0x0832, 0x0832, 0x0845, 0x0845, 0x0851,
+ 0x0851, 0x0866, 0x0866, 0x0866, 0x086e, 0x086e, 0x086e, 0x086e,
+ 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x087e,
+ 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e,
+ 0x087e, 0x087e, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c,
+ 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c,
+ 0x088c, 0x088c, 0x08a7, 0x08a7, 0x08a7, 0x08b1, 0x08b1, 0x08b1,
+ // Entry 140 - 17F
+ 0x08b1, 0x08bd, 0x08bd, 0x08bd, 0x08bd, 0x08bd, 0x08d0, 0x08d0,
+ 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0,
+ 0x08e0, 0x08ec, 0x08ec, 0x08ec, 0x08ec, 0x08ec, 0x08f8, 0x08f8,
+ 0x08f8, 0x0902, 0x0902, 0x0902, 0x0902, 0x0902, 0x0912, 0x0924,
+ 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x093a, 0x093a, 0x093a,
+ 0x093a, 0x0948, 0x0948, 0x095f, 0x096f, 0x096f, 0x096f, 0x096f,
+ 0x096f, 0x096f, 0x096f, 0x096f, 0x097d, 0x0987, 0x0987, 0x0987,
+ 0x0987, 0x0987, 0x0991, 0x0991, 0x0991, 0x0991, 0x0991, 0x0991,
+ // Entry 180 - 1BF
+ 0x0991, 0x099f, 0x099f, 0x099f, 0x099f, 0x09b4, 0x09b4, 0x09b4,
+ 0x09b4, 0x09b4, 0x09ba, 0x09ba, 0x09c6, 0x09c6, 0x09c6, 0x09c6,
+ 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09d2, 0x09d2, 0x09d2,
+ 0x09d2, 0x09d2, 0x09da, 0x09e8, 0x09e8, 0x09fd, 0x0a07, 0x0a07,
+ 0x0a07, 0x0a07, 0x0a07, 0x0a15, 0x0a15, 0x0a15, 0x0a25, 0x0a25,
+ 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a3b, 0x0a3b,
+ 0x0a3b, 0x0a43, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a58, 0x0a68,
+ 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a72, 0x0a72, 0x0a7e, 0x0a7e,
+ // Entry 1C0 - 1FF
+ 0x0a7e, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91,
+ 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91,
+ 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a99, 0x0a99,
+ 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0aa3, 0x0aa3, 0x0aa3,
+ 0x0aa3, 0x0aa3, 0x0aa3, 0x0aab, 0x0aab, 0x0aab, 0x0aab, 0x0abd,
+ 0x0abd, 0x0abd, 0x0abd, 0x0abd, 0x0ac9, 0x0ac9, 0x0ac9, 0x0ac9,
+ 0x0ade, 0x0ade, 0x0ae6, 0x0ae6, 0x0ae6, 0x0b01, 0x0b01, 0x0b01,
+ 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b11, 0x0b24, 0x0b35,
+ // Entry 200 - 23F
+ 0x0b4a, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f,
+ 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b7a, 0x0b7a, 0x0b7a, 0x0b7a,
+ 0x0b7a, 0x0b7a, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82,
+ 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82,
+ 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b82, 0x0b90, 0x0b90,
+ 0x0bad, 0x0bad, 0x0bad, 0x0bad, 0x0bc2, 0x0bc8, 0x0bc8, 0x0bc8,
+ 0x0bc8, 0x0bc8, 0x0bc8, 0x0bc8, 0x0bd6, 0x0bd6, 0x0bd6, 0x0bd6,
+ 0x0bd6, 0x0be6, 0x0be6, 0x0be6, 0x0be6, 0x0bf0, 0x0bf0, 0x0bf0,
+ // Entry 240 - 27F
+ 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0, 0x0bf0,
+ 0x0c0f, 0x0c0f, 0x0c1e, 0x0c1e, 0x0c2f, 0x0c44, 0x0c5f, 0x0c7a,
+ 0x0ca5, 0x0cc8, 0x0cf1, 0x0d14, 0x0d3e, 0x0d5f, 0x0d7e, 0x0d7e,
+ 0x0d9e, 0x0dbe, 0x0dda, 0x0dec, 0x0e0d, 0x0e32, 0x0e53, 0x0e53,
+ 0x0e6b, 0x0e80,
+ },
+ },
+ { // lt
+ ltLangStr,
+ ltLangIdx,
+ },
+ { // lu
+ "LiakanLiamharikiArabiBelarusiBulegariBengaliTshekiLizelumaniGilikiLingel" +
+ "esaLihispaniaMpepajemiMfwàlànsaHausaHindiHongiliLindoneziaIgboLitali" +
+ "LiyapaniJavaLikoreyaTshilubaLimalezianepaliolandiLipunjabiMpoloniMpu" +
+ "tulugɛsiLiromaniLirisikinyarwandaLisomaliLisuwidiMtamuiliNtailandiNt" +
+ "ulukiNkraniUrduLiviyetinamuNyorubashinɛNzulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0010, 0x0010,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x0025,
+ 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0055,
+ 0x0055, 0x0055, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0069,
+ 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x006e,
+ 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a, 0x007a, 0x007a,
+ // Entry 40 - 7F
+ 0x007a, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088,
+ 0x008e, 0x008e, 0x0096, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x00a2, 0x00a2, 0x00a2, 0x00a2,
+ 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2,
+ 0x00a2, 0x00a2, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
+ 0x00aa, 0x00aa, 0x00aa, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3,
+ 0x00b9, 0x00b9, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf,
+ // Entry 80 - BF
+ 0x00cf, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e3, 0x00e9, 0x00f4,
+ 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4,
+ 0x00f4, 0x00f4, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
+ 0x0104, 0x0104, 0x010c, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115,
+ 0x0115, 0x0115, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0122,
+ 0x0126, 0x0126, 0x0126, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0139, 0x0139, 0x013f, 0x0144,
+ },
+ },
+ { // luo
+ "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
+ "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
+ "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
+ "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
+ "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
+ "rubaKichinaKizuluDholuo",
+ []uint16{ // 395 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
+ 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
+ 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
+ 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
+ // Entry 40 - 7F
+ 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
+ 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
+ // Entry 80 - BF
+ 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
+ 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
+ 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
+ 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry C0 - FF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 100 - 13F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 140 - 17F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 180 - 1BF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x016f,
+ },
+ },
+ { // luy
+ "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
+ "ikiLusunguKihispaniaKiajemiKifaransaKihausaLuhindiKihungariKiindones" +
+ "iaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaKin" +
+ "epaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKiso" +
+ "maliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyoru" +
+ "baKichinaKizuluLuluhia",
+ []uint16{ // 397 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0052, 0x0052, 0x005c,
+ 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c,
+ 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073,
+ 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083, 0x0083, 0x0083,
+ // Entry 40 - 7F
+ 0x0083, 0x008e, 0x008e, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094,
+ 0x009e, 0x009e, 0x00a6, 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x00ac,
+ 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00bd, 0x00bd,
+ 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd,
+ 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd,
+ 0x00bd, 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00cd,
+ 0x00d5, 0x00d5, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e7, 0x00e7, 0x00f0,
+ // Entry 80 - BF
+ 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x0105, 0x0110,
+ 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
+ 0x0110, 0x0110, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118,
+ 0x011f, 0x011f, 0x0126, 0x0126, 0x0126, 0x0130, 0x0130, 0x0130,
+ 0x0130, 0x0130, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0141,
+ 0x0147, 0x0147, 0x0147, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
+ 0x0152, 0x015a, 0x015a, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ // Entry C0 - FF
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ // Entry 100 - 13F
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ // Entry 140 - 17F
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ // Entry 180 - 1BF
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x016e,
+ },
+ },
+ { // lv
+ lvLangStr,
+ lvLangIdx,
+ },
+ { // mas
+ "nkʉtʉ́k ɔ́ɔ̄ lAkannkʉtʉ́k ɔ́ɔ̄ lAmharinkʉtʉ́k ɔ́ɔ̄ lmarabunkʉtʉ́k ɔ́ɔ̄ l" +
+ "Belarusinkʉtʉ́k ɔ́ɔ̄ lBulgarialnkʉtʉ́k ɔ́ɔ̄ lBengalinkʉtʉ́k ɔ́ɔ̄ lch" +
+ "ekinkʉtʉ́k ɔ́ɔ̄ ljerumaninkʉtʉ́k ɔ́ɔ̄ lgirikinkʉtʉ́k ɔ́ɔ̄ nkɨ́resank" +
+ "ʉtʉ́k ɔ́ɔ̄ lspaniankʉtʉ́k ɔ́ɔ̄ lpersiankʉtʉ́k ɔ́ɔ̄ faransankʉtʉ́k ɔ" +
+ "́ɔ̄ hausankʉtʉ́k ɔ́ɔ̄ lmoindinkʉtʉ́k ɔ́ɔ̄ lhungarinkʉtʉ́k ɔ́ɔ̄ Indo" +
+ "nesiankʉtʉ́k ɔ́ɔ̄ Igbonkʉtʉ́k ɔ́ɔ̄ ltaliannkʉtʉ́k ɔ́ɔ̄ japaninkʉtʉ́k" +
+ " ɔ́ɔ̄ ljanankʉtʉ́k ɔ́ɔ̄ lkambodiankʉtʉ́k ɔ́ɔ̄ lkoreankʉtʉ́k ɔ́ɔ̄ mal" +
+ "aynkʉtʉ́k ɔ́ɔ̄ lBurmankʉtʉ́k ɔ́ɔ̄ lnepalinkʉtʉ́k ɔ́ɔ̄ lduchinkʉtʉ́k " +
+ "ɔ́ɔ̄ lpunjabinkʉtʉ́k ɔ́ɔ̄ lpolandnkʉtʉ́k ɔ́ɔ̄ lportuguesenkʉtʉ́k ɔ́" +
+ "ɔ̄ lromaniankʉtʉ́k ɔ́ɔ̄ lrusinkʉtʉ́k ɔ́ɔ̄ lruwandankʉtʉ́k ɔ́ɔ̄ lchu" +
+ "marinkʉtʉ́k ɔ́ɔ̄ lswidinkʉtʉ́k ɔ́ɔ̄ ltamilnkʉtʉ́k ɔ́ɔ̄ ltainkʉtʉ́k ɔ" +
+ "́ɔ̄ lturukinkʉtʉ́k ɔ́ɔ̄ lkraniankʉtʉ́k ɔ́ɔ̄ lurdunkʉtʉ́k ɔ́ɔ̄ lviet" +
+ "inamunkʉtʉ́k ɔ́ɔ̄ lyorubankʉtʉ́k ɔ́ɔ̄ lchinankʉtʉ́k ɔ́ɔ̄ lzuluMaa",
+ []uint16{ // 406 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0034, 0x0034,
+ 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x006c, 0x0089,
+ 0x0089, 0x0089, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6,
+ 0x00a6, 0x00a6, 0x00a6, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0,
+ 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00f8, 0x0116, 0x0116, 0x0131,
+ 0x0131, 0x0131, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0180,
+ 0x0180, 0x019b, 0x019b, 0x019b, 0x019b, 0x01b7, 0x01b7, 0x01b7,
+ // Entry 40 - 7F
+ 0x01b7, 0x01d4, 0x01d4, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec,
+ 0x0207, 0x0207, 0x0221, 0x023a, 0x023a, 0x023a, 0x023a, 0x023a,
+ 0x023a, 0x023a, 0x0257, 0x0257, 0x0271, 0x0271, 0x0271, 0x0271,
+ 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271,
+ 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271,
+ 0x0271, 0x0271, 0x0271, 0x028a, 0x028a, 0x02a4, 0x02a4, 0x02a4,
+ 0x02bf, 0x02bf, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9,
+ 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02f5, 0x02f5, 0x0310,
+ // Entry 80 - BF
+ 0x0310, 0x032f, 0x032f, 0x032f, 0x032f, 0x034b, 0x0364, 0x0380,
+ 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380,
+ 0x0380, 0x0380, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c,
+ 0x03b6, 0x03b6, 0x03d0, 0x03d0, 0x03d0, 0x03e8, 0x03e8, 0x03e8,
+ 0x03e8, 0x03e8, 0x0403, 0x0403, 0x0403, 0x0403, 0x0403, 0x041e,
+ 0x0437, 0x0437, 0x0437, 0x0455, 0x0455, 0x0455, 0x0455, 0x0455,
+ 0x0455, 0x0470, 0x0470, 0x048a, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ // Entry C0 - FF
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ // Entry 100 - 13F
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ // Entry 140 - 17F
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ // Entry 180 - 1BF
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a6,
+ },
+ },
+ { // mer
+ "KĩakaniKĩamarĩkiKĩarabuKĩbelarusiKĩbulugĩriaKĩbangiraKĩchekiKĩnjamanĩKĩn" +
+ "girikiKĩngerethaKĩspĩniKĩpasiaKĩfuransiKĩhausaKĩhĩndiKĩhangarĩKĩindo" +
+ "nesiaKĩigboKĩitalĩKĩjapaniKĩjavaKĩkambodiaKĩkoreaKĩmalesiaKĩburmaKĩn" +
+ "epaliKĩholandiKĩpunjabuKĩpolandiKĩpochogoKĩromaniaKĩrashiaKĩrwandaKĩ" +
+ "somaliKĩswideniKĩtamiluKĩthailandiKĩtakĩKĩukirĩniKĩurduKĩvietinamuKĩ" +
+ "yorubaKĩchinaKĩzuluKĩmĩrũ",
+ []uint16{ // 411 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0013, 0x0013,
+ 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0026, 0x0033,
+ 0x0033, 0x0033, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d,
+ 0x003d, 0x003d, 0x003d, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0050, 0x0050, 0x0050, 0x0050, 0x005a, 0x0065, 0x0065, 0x006e,
+ 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0088,
+ 0x0088, 0x0091, 0x0091, 0x0091, 0x0091, 0x009c, 0x009c, 0x009c,
+ // Entry 40 - 7F
+ 0x009c, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af,
+ 0x00b8, 0x00b8, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
+ 0x00c8, 0x00c8, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00db, 0x00db,
+ 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
+ 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
+ 0x00db, 0x00db, 0x00db, 0x00e5, 0x00e5, 0x00ed, 0x00ed, 0x00ed,
+ 0x00f6, 0x00f6, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
+ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x010a, 0x010a, 0x0114,
+ // Entry 80 - BF
+ 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013a,
+ 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a,
+ 0x013a, 0x013a, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143,
+ 0x014d, 0x014d, 0x0156, 0x0156, 0x0156, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0175,
+ 0x017c, 0x017c, 0x017c, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188,
+ 0x0188, 0x0191, 0x0191, 0x0199, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ // Entry C0 - FF
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ // Entry 100 - 13F
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ // Entry 140 - 17F
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ // Entry 180 - 1BF
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01a0, 0x01a0, 0x01a9,
+ },
+ },
+ { // mfe
+ "akanamarikarabbielorisbilgarbengalitchekalmangrekangleespagnolpersanfran" +
+ "sehaoussahindihongrwaindonezienigboitalienzaponezavanekhmer, santral" +
+ "koreenmalebirmannepaleolandepenjabipoloneportigerouminrisrwandasomal" +
+ "iswedwatamoulthaïtirkikrenienourdouvietnamienyorubasinwa, mandarinzo" +
+ "uloukreol morisien",
+ []uint16{ // 412 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x001c,
+ 0x001c, 0x001c, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
+ 0x0023, 0x0023, 0x0023, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x002d, 0x002d, 0x002d, 0x002d, 0x0031, 0x0036, 0x0036, 0x003e,
+ 0x003e, 0x003e, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004a,
+ 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0051,
+ 0x0051, 0x0056, 0x0056, 0x0056, 0x0056, 0x005d, 0x005d, 0x005d,
+ // Entry 40 - 7F
+ 0x005d, 0x0067, 0x0067, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
+ 0x0072, 0x0072, 0x0078, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e,
+ 0x007e, 0x007e, 0x008c, 0x008c, 0x0092, 0x0092, 0x0092, 0x0092,
+ 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
+ 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
+ 0x0092, 0x0092, 0x0092, 0x0096, 0x0096, 0x009c, 0x009c, 0x009c,
+ 0x00a2, 0x00a2, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8,
+ 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b5,
+ // Entry 80 - BF
+ 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c2, 0x00c5, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
+ 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1,
+ 0x00d7, 0x00d7, 0x00dd, 0x00dd, 0x00dd, 0x00e2, 0x00e2, 0x00e2,
+ 0x00e2, 0x00e2, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00ee,
+ 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe,
+ 0x00fe, 0x0104, 0x0104, 0x0113, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ // Entry C0 - FF
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ // Entry 100 - 13F
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ // Entry 140 - 17F
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ // Entry 180 - 1BF
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0127,
+ },
+ },
+ { // mg
+ "AkanAmharikaAraboBielorosyBiolgaraBengaliTsekyAlemaninaGrikaAnglisyEspan" +
+ "iolaPersaFrantsayhaoussahindihongroàIndonezianinaigboItalianinaJapon" +
+ "eyJavaneykhmerKoreaninaMalagasyMalayBirmanaNepaleHolandeyPenjabiPolo" +
+ "neyPortiogeyRomanianinaRosianinaRoandeSomalianinaSoisaTamoilaTaioane" +
+ "yTiorkaOkrainianinaOrdòVietnamianinaYôrobàSinoa, MandarinZolò",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x0022,
+ 0x0022, 0x0022, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x0037, 0x0037, 0x0037, 0x0037, 0x003c, 0x0043, 0x0043, 0x004c,
+ 0x004c, 0x004c, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0059,
+ 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0060,
+ 0x0060, 0x0065, 0x0065, 0x0065, 0x0065, 0x006d, 0x006d, 0x006d,
+ // Entry 40 - 7F
+ 0x006d, 0x007a, 0x007a, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e,
+ 0x0088, 0x0088, 0x008f, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x0096, 0x0096, 0x009b, 0x009b, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
+ 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
+ 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ac, 0x00ac, 0x00ac, 0x00ac,
+ 0x00ac, 0x00ac, 0x00ac, 0x00b1, 0x00b1, 0x00b8, 0x00b8, 0x00b8,
+ 0x00be, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d4,
+ // Entry 80 - BF
+ 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f1, 0x00f7,
+ 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
+ 0x00f7, 0x00f7, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
+ 0x0107, 0x0107, 0x010e, 0x010e, 0x010e, 0x0116, 0x0116, 0x0116,
+ 0x0116, 0x0116, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0128,
+ 0x012d, 0x012d, 0x012d, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a,
+ 0x013a, 0x0142, 0x0142, 0x0151, 0x0156,
+ },
+ },
+ { // mgh
+ "IkanImhariIarabuIbelausiIbulgariaIbanglaIchekiIjerimaniIgirikiIngilishiI" +
+ "hispaniolaIajemiIfaransaIhausaIhindiIhungariIgboItalianoIjapaniIjava" +
+ "IkambodiaIkoreaImalesiaIburmaInepaliIholanziIpunjabiIpolandiNrenoIro" +
+ "maniaIrisiInyarandaIsomaliIswidiItamilItailandiIturukiIukranIhurduIv" +
+ "yetinamuIyorubaIchinaIzuluMakua",
+ []uint16{ // 414 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0018, 0x0021,
+ 0x0021, 0x0021, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x0037, 0x0037, 0x0037, 0x0037, 0x003e, 0x0047, 0x0047, 0x0052,
+ 0x0052, 0x0052, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0060,
+ 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0066,
+ 0x0066, 0x006c, 0x006c, 0x006c, 0x006c, 0x0074, 0x0074, 0x0074,
+ // Entry 40 - 7F
+ 0x0074, 0x0074, 0x0074, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ 0x0080, 0x0080, 0x0087, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c,
+ 0x008c, 0x008c, 0x0095, 0x0095, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9,
+ 0x00b0, 0x00b0, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
+ 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c0, 0x00c0, 0x00c8,
+ // Entry 80 - BF
+ 0x00c8, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d5, 0x00da, 0x00e3,
+ 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3,
+ 0x00e3, 0x00e3, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ 0x00f0, 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff,
+ 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010c,
+ 0x0112, 0x0112, 0x0112, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x011c, 0x0123, 0x0123, 0x0129, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ // Entry C0 - FF
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ // Entry 100 - 13F
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ // Entry 140 - 17F
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ // Entry 180 - 1BF
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x0133,
+ },
+ },
+ { // mgo
+ "metaʼngam tisɔʼ",
+ []uint16{ // 557 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 100 - 13F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 140 - 17F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 180 - 1BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ // Entry 1C0 - 1FF
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ // Entry 200 - 23F
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0012,
+ },
+ },
+ { // mk
+ mkLangStr,
+ mkLangIdx,
+ },
+ { // ml
+ mlLangStr,
+ mlLangIdx,
+ },
+ { // mn
+ mnLangStr,
+ mnLangIdx,
+ },
+ { // mr
+ mrLangStr,
+ mrLangIdx,
+ },
+ { // ms
+ msLangStr,
+ msLangIdx,
+ },
+ { // mt
+ "AfarAbkażjanAvestanAfrikansAkanAmħarikuAragoneseGħarbiAssameseAvarikAjma" +
+ "raAżerbajġaniBaxkirBelarussuBulgaruBislamaBambaraBengaliTibetjanBren" +
+ "tonBosnijanKatalanĊeċenĊamorroKorsikuKrijĊekSlaviku tal-KnisjaĊuvaxW" +
+ "elxDaniżĠermaniżDiveħiDżongkaEweGriegIngliżEsperantoSpanjolEstonjanB" +
+ "askPersjanFulaħFinlandiżFiġiFawriżFranċiżFriżjanIrlandiżGalliku Skoċ" +
+ "ċiżGallegjanGwaraniGuġaratiManksĦawsaEbrajkĦindiĦiri MotuKroatHaiti" +
+ "anUngeriżArmenjanĦereroInterlinguaIndoneżjanInterlingueIgboSichuan Y" +
+ "iInupjakIdoIżlandiżTaljanInukitutĠappuniżĠavaniżĠorġjanKongoKikujuKu" +
+ "anyamaKażakKalallisutKmerKannadaKorejanKanuriKaxmiriKurdiżKomiKornik" +
+ "uKirgiżLatinLetżburgiżGandaLimburgishLingaljanLaoLitwanjanLuba-Katan" +
+ "gaLatvjanMalagażiMarxallMaoriMaċedonjanMalajalamMongoljanMaratiMalaj" +
+ "anMaltiBurmiżNawuruNdebele, ta’ FuqNepaliżNdongaOlandiżNinorsk Norve" +
+ "ġiżBokmahal NorveġiżNdebele, t’IsfelNavaħoĊiċewa; NjanġaOċċitanOġib" +
+ "waOromo (Afan)OrijaOssettikuPunġabiPaliPollakkPaxtunPortugiżKeċwaRet" +
+ "o-RomanzRundiRumenRussuKinjarwandaSanskritSardinjanSindiSami ta’ Fuq" +
+ "SangoSinħaliżSlovakkSlovenSamojanXonaSomaliAlbaniżSerbSwatiSoto, t’I" +
+ "sfelSundaniżSvediżSwaħiliTamilTeluguTaġikTajlandiżTigrinjaTurkmeniZw" +
+ "anaTonganTorkTsongaTatarTaħitjanWigurUkranjanUrduUżbekVendaVjetnamiż" +
+ "VolapukWalloonWolofĦożaJiddixJorubaŻwangĊiniżŻuluAċiniżAkoliAdangmeA" +
+ "dygheAfriħiliAjnuAkkadjenAleutIngliż, AntikAngikaAramajkArawkanjanAr" +
+ "apaħoArawakAsturianAwadħiBaluċiBaliniżBasaBejaBembaBojpuriBikolBiniS" +
+ "iksikaBrajBurjatBuginiżBlinKaddoKaribAtsamSibwanoĊibċaĊagatajĊukeseM" +
+ "ariĠargon taċ-ĊinukĊostawĊipewjanĊerokijXajennKoptikuCrimean Turkish" +
+ "; Crimean TatarKashubianDakotaDargwaDelawerjanSlavDogribDinkaDogriLo" +
+ "wer SorbianDwalaOlandiż, MedjevaliDjulaEfikEġizzjan (Antik)EkajukEla" +
+ "mitIngliż, MedjevaliEwondoFangFilippinoFonFranċiż, MedjevaliFranċiż," +
+ " AntikFrijuljanGaGajoGbajaGeezGilbertjanĠermaniku, Medjevali PulitĠe" +
+ "rmaniku, Antik PulitGondiGorontaloGotikuĠerboGrieg, AntikGwiċinĦajda" +
+ "ĦawajjanHiligaynonĦittitĦmongUpper SorbianĦupaIbanIlokoIngushLojban" +
+ "Lhudi-PersjanLhudi-GħarbiKara-KalpakKabuljanKaċinKambaKawiKabardianK" +
+ "asiKotaniżKimbunduKonkaniKosrejanKpelleKarachay-BalkarKuruskKumikuKu" +
+ "tenajLadinoLandaLambaLeżgjanMongoLożiLuba-LuluwaLuwisinużLundaLuwaLu" +
+ "xajMaduriżMagaħiMajtiliMakasarMandingwanMasajMokshaMandarMendeIrland" +
+ "iż, MedjevaliMikmekMinangkabawManċurjanManipuriMoħakMossiLingwi Dive" +
+ "rsiKriekMirandiżMarwariErzyaNeapolitanĠermaniż Komuni; Sassonu Komun" +
+ "iNewariNijasNijuwejanNogaiSkandinav, AntikSoto, ta’ FuqClassical New" +
+ "ariNjamweżiNyankoleNjoroNżimaOsaġjanTork (Imperu Ottoman)Pangasinjan" +
+ "PaħlaviPampamgaPapjamentoPalawjanPersjan AntikFeniċjuPonpejanProvenz" +
+ "al, AntikRaġastaniRapanwiRarotonganiŻingaruAromanijanSandaweJakutSam" +
+ "ritanSaskaSantaliSkoċċiżSelkupIrlandiż, AntikXanSidamoSouthern SamiL" +
+ "ule SamiInari SamiSkolt SamiSoninkeSogdienSererSukumaSusuSumerjanSir" +
+ "janTimneTerenoTetumTigreTivTokelauKlingonTlingitTamaxekTonga (Njasa)" +
+ "Tok PisinZimxjanTumbukaTuvaluTuvinjanUdmurtUgaritikuUmbunduGħerqVaiV" +
+ "otikWalamoWarajWaxoKalmykJaoJapeseŻapotekŻenagaŻuniGħarbi Standard M" +
+ "odernIngliż AwstraljanIngliż BrittanikuIngliż AmerikanFranċiż Kanadi" +
+ "żFranċiż ŻvizzeruMoldavjanSerbo-KroatĊiniż Simplifikat",
+ []uint16{ // 609 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000d, 0x0014, 0x001c, 0x0020, 0x0029, 0x0032,
+ 0x0039, 0x0041, 0x0047, 0x004d, 0x005a, 0x0060, 0x0069, 0x0070,
+ 0x0077, 0x007e, 0x0085, 0x008d, 0x0094, 0x009c, 0x00a3, 0x00aa,
+ 0x00b2, 0x00b9, 0x00bd, 0x00c1, 0x00d3, 0x00d9, 0x00dd, 0x00e3,
+ 0x00ed, 0x00f4, 0x00fc, 0x00ff, 0x0104, 0x010b, 0x0114, 0x011b,
+ 0x0123, 0x0127, 0x012e, 0x0134, 0x013e, 0x0143, 0x014a, 0x0153,
+ 0x015b, 0x0164, 0x0176, 0x017f, 0x0186, 0x018f, 0x0194, 0x019a,
+ 0x01a0, 0x01a6, 0x01b0, 0x01b5, 0x01bc, 0x01c4, 0x01cc, 0x01d3,
+ // Entry 40 - 7F
+ 0x01de, 0x01e9, 0x01f4, 0x01f8, 0x0202, 0x0209, 0x020c, 0x0216,
+ 0x021c, 0x0224, 0x022e, 0x0237, 0x0240, 0x0245, 0x024b, 0x0253,
+ 0x0259, 0x0263, 0x0267, 0x026e, 0x0275, 0x027b, 0x0282, 0x0289,
+ 0x028d, 0x0294, 0x029b, 0x02a0, 0x02ac, 0x02b1, 0x02bb, 0x02c4,
+ 0x02c7, 0x02d0, 0x02dc, 0x02e3, 0x02ec, 0x02f3, 0x02f8, 0x0303,
+ 0x030c, 0x0315, 0x031b, 0x0322, 0x0327, 0x032e, 0x0334, 0x0346,
+ 0x034e, 0x0354, 0x035c, 0x036e, 0x0381, 0x0393, 0x039a, 0x03ab,
+ 0x03b4, 0x03bb, 0x03c7, 0x03cc, 0x03d5, 0x03dd, 0x03e1, 0x03e8,
+ // Entry 80 - BF
+ 0x03ee, 0x03f7, 0x03fd, 0x0408, 0x040d, 0x0412, 0x0417, 0x0422,
+ 0x042a, 0x0433, 0x0438, 0x0446, 0x044b, 0x0455, 0x045c, 0x0462,
+ 0x0469, 0x046d, 0x0473, 0x047b, 0x047f, 0x0484, 0x0493, 0x049c,
+ 0x04a3, 0x04ab, 0x04b0, 0x04b6, 0x04bc, 0x04c6, 0x04ce, 0x04d6,
+ 0x04db, 0x04e1, 0x04e5, 0x04eb, 0x04f0, 0x04f9, 0x04fe, 0x0506,
+ 0x050a, 0x0510, 0x0515, 0x051f, 0x0526, 0x052d, 0x0532, 0x0538,
+ 0x053e, 0x0544, 0x054a, 0x0551, 0x0556, 0x055e, 0x0563, 0x056a,
+ 0x0570, 0x0570, 0x0579, 0x0579, 0x057d, 0x0585, 0x0585, 0x058a,
+ // Entry C0 - FF
+ 0x058a, 0x058a, 0x0598, 0x059e, 0x05a5, 0x05af, 0x05af, 0x05b7,
+ 0x05b7, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05c5, 0x05c5,
+ 0x05cc, 0x05d3, 0x05db, 0x05db, 0x05df, 0x05df, 0x05df, 0x05df,
+ 0x05e3, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05e8, 0x05ef,
+ 0x05f4, 0x05f8, 0x05f8, 0x05f8, 0x05ff, 0x05ff, 0x05ff, 0x0603,
+ 0x0603, 0x0603, 0x0603, 0x0609, 0x0611, 0x0611, 0x0615, 0x0615,
+ 0x061a, 0x061f, 0x061f, 0x0624, 0x062b, 0x062b, 0x0632, 0x063a,
+ 0x0641, 0x0645, 0x0658, 0x065f, 0x0668, 0x0670, 0x0676, 0x0676,
+ // Entry 100 - 13F
+ 0x067d, 0x067d, 0x069b, 0x06a4, 0x06aa, 0x06b0, 0x06b0, 0x06ba,
+ 0x06be, 0x06c4, 0x06c9, 0x06c9, 0x06ce, 0x06db, 0x06db, 0x06e0,
+ 0x06f3, 0x06f3, 0x06f8, 0x06f8, 0x06f8, 0x06fc, 0x06fc, 0x070d,
+ 0x0713, 0x0719, 0x072b, 0x072b, 0x0731, 0x0731, 0x0735, 0x073e,
+ 0x073e, 0x0741, 0x0741, 0x0755, 0x0765, 0x0765, 0x0765, 0x0765,
+ 0x076e, 0x0770, 0x0770, 0x0770, 0x0774, 0x0779, 0x0779, 0x077d,
+ 0x0787, 0x0787, 0x07a2, 0x07b9, 0x07b9, 0x07be, 0x07c7, 0x07cd,
+ 0x07d3, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07e6, 0x07ec,
+ // Entry 140 - 17F
+ 0x07ec, 0x07f5, 0x07f5, 0x07ff, 0x0806, 0x080c, 0x0819, 0x0819,
+ 0x081e, 0x0822, 0x0822, 0x0827, 0x082d, 0x082d, 0x082d, 0x0833,
+ 0x0833, 0x0833, 0x0840, 0x084d, 0x084d, 0x0858, 0x0860, 0x0866,
+ 0x0866, 0x086b, 0x086f, 0x0878, 0x0878, 0x0878, 0x0878, 0x0878,
+ 0x0878, 0x0878, 0x0878, 0x087c, 0x0884, 0x0884, 0x0884, 0x0884,
+ 0x0884, 0x0884, 0x088c, 0x088c, 0x0893, 0x089b, 0x08a1, 0x08b0,
+ 0x08b0, 0x08b0, 0x08b0, 0x08b6, 0x08b6, 0x08b6, 0x08b6, 0x08bc,
+ 0x08c3, 0x08c9, 0x08c9, 0x08ce, 0x08d3, 0x08db, 0x08db, 0x08db,
+ // Entry 180 - 1BF
+ 0x08db, 0x08db, 0x08db, 0x08e0, 0x08e5, 0x08e5, 0x08e5, 0x08f0,
+ 0x08fa, 0x08ff, 0x0903, 0x0908, 0x0908, 0x0908, 0x0908, 0x0910,
+ 0x0910, 0x0917, 0x091e, 0x0925, 0x092f, 0x0934, 0x0934, 0x093a,
+ 0x0940, 0x0945, 0x0945, 0x0945, 0x0959, 0x0959, 0x0959, 0x095f,
+ 0x096a, 0x0974, 0x097c, 0x0982, 0x0987, 0x0987, 0x0987, 0x0995,
+ 0x099a, 0x09a3, 0x09aa, 0x09aa, 0x09aa, 0x09af, 0x09af, 0x09af,
+ 0x09b9, 0x09b9, 0x09da, 0x09e0, 0x09e5, 0x09ee, 0x09ee, 0x09ee,
+ 0x09ee, 0x09f3, 0x0a03, 0x0a03, 0x0a03, 0x0a12, 0x0a12, 0x0a22,
+ // Entry 1C0 - 1FF
+ 0x0a2b, 0x0a33, 0x0a38, 0x0a3e, 0x0a46, 0x0a5b, 0x0a66, 0x0a6e,
+ 0x0a76, 0x0a80, 0x0a88, 0x0a88, 0x0a88, 0x0a88, 0x0a95, 0x0a95,
+ 0x0a9d, 0x0a9d, 0x0a9d, 0x0aa5, 0x0aa5, 0x0ab5, 0x0ab5, 0x0ab5,
+ 0x0abf, 0x0ac6, 0x0ad1, 0x0ad1, 0x0ad1, 0x0ad1, 0x0ad9, 0x0ad9,
+ 0x0ad9, 0x0ad9, 0x0ae3, 0x0ae3, 0x0aea, 0x0aef, 0x0af7, 0x0af7,
+ 0x0afc, 0x0b03, 0x0b03, 0x0b03, 0x0b03, 0x0b03, 0x0b0d, 0x0b0d,
+ 0x0b0d, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b13, 0x0b13, 0x0b23, 0x0b23,
+ 0x0b23, 0x0b26, 0x0b26, 0x0b2c, 0x0b2c, 0x0b2c, 0x0b39, 0x0b42,
+ // Entry 200 - 23F
+ 0x0b4c, 0x0b56, 0x0b5d, 0x0b64, 0x0b64, 0x0b69, 0x0b69, 0x0b69,
+ 0x0b6f, 0x0b73, 0x0b7b, 0x0b7b, 0x0b7b, 0x0b7b, 0x0b81, 0x0b81,
+ 0x0b81, 0x0b86, 0x0b86, 0x0b8c, 0x0b91, 0x0b96, 0x0b99, 0x0ba0,
+ 0x0ba0, 0x0ba7, 0x0bae, 0x0bae, 0x0bb5, 0x0bc2, 0x0bcb, 0x0bcb,
+ 0x0bcb, 0x0bcb, 0x0bd2, 0x0bd2, 0x0bd9, 0x0bdf, 0x0bdf, 0x0be7,
+ 0x0be7, 0x0bed, 0x0bf6, 0x0bfd, 0x0c03, 0x0c06, 0x0c06, 0x0c06,
+ 0x0c06, 0x0c06, 0x0c0b, 0x0c0b, 0x0c0b, 0x0c0b, 0x0c11, 0x0c16,
+ 0x0c1a, 0x0c1a, 0x0c1a, 0x0c20, 0x0c20, 0x0c20, 0x0c23, 0x0c29,
+ // Entry 240 - 27F
+ 0x0c29, 0x0c29, 0x0c29, 0x0c29, 0x0c31, 0x0c31, 0x0c31, 0x0c38,
+ 0x0c38, 0x0c3d, 0x0c3d, 0x0c3d, 0x0c54, 0x0c54, 0x0c54, 0x0c54,
+ 0x0c66, 0x0c66, 0x0c78, 0x0c88, 0x0c88, 0x0c88, 0x0c88, 0x0c88,
+ 0x0c9a, 0x0cad, 0x0cad, 0x0cad, 0x0cad, 0x0cad, 0x0cb6, 0x0cc1,
+ 0x0cd4,
+ },
+ },
+ { // mua
+ "akaŋamharikarabiyabelarussiyabulgariabengaliasyekyagermaŋgrekzah Anglofo" +
+ "ŋEspaniyaPersiazah sǝr Franssǝhaussahindihungariyaindonesiyaigboita" +
+ "liyazah sǝr JapoŋjavaniyakmerkoreamalasiyabirmaniaNepaliyazah sǝr ma" +
+ " kasǝŋPǝnjabiPoloniyaZah sǝr PortugalRomaniyaRussiyaZah sǝr RwandaSo" +
+ "maliyaSwediaTamulthTurkUkrainiaUrduVietnamiyaYorubazah SyiŋZuluMUNDA" +
+ "Ŋ",
+ []uint16{ // 423 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000c, 0x000c,
+ 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0026,
+ 0x0026, 0x0026, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003f, 0x004c, 0x004c, 0x0054,
+ 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006b,
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0071,
+ 0x0071, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f, 0x007f, 0x007f,
+ // Entry 40 - 7F
+ 0x007f, 0x0089, 0x0089, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d,
+ 0x0094, 0x0094, 0x00a3, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
+ 0x00ab, 0x00ab, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00b4, 0x00b4, 0x00b4, 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00c4,
+ 0x00cc, 0x00cc, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df,
+ 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00ef,
+ // Entry 80 - BF
+ 0x00ef, 0x0100, 0x0100, 0x0100, 0x0100, 0x0108, 0x010f, 0x011e,
+ 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e,
+ 0x011e, 0x011e, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,
+ 0x012c, 0x012c, 0x0131, 0x0131, 0x0131, 0x0133, 0x0133, 0x0133,
+ 0x0133, 0x0133, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x013f,
+ 0x0143, 0x0143, 0x0143, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d,
+ 0x014d, 0x0153, 0x0153, 0x015c, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ // Entry C0 - FF
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ // Entry 100 - 13F
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ // Entry 140 - 17F
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ // Entry 180 - 1BF
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0167,
+ },
+ },
+ { // my
+ myLangStr,
+ myLangIdx,
+ },
+ { // mzn
+ "آبخازیآفریکانسآکانامهریعربیآسامیآذری ِترکیباشقیریبلاروسیبلغاریبامباراییب" +
+ "نگالیتبتیبرِتونیبوسنیاییکاتالونیچچنیکورسیکانچکیچوواشیولزیدانمارکیآل" +
+ "مانیدزونگخااوه\u200cیییونانیانگلیسیاسپرانتوایسپانیولیاستونیاییباسکی" +
+ "فارسیفینیشفیجیاییفاروییفرانسویغربی فیریزیایریشگالیکگورانیگجراتیمانک" +
+ "سهوساعبریهندیکرواتیهائتیاییمجاریارمنیاندونزیاییایگبوسیچوئان ییایسلن" +
+ "دیایتالیاییانوکتیتوتجاپونیجاواییگرجیکیکویوقزاقیکالائلیسوتخمریکانّاد" +
+ "اکُره\u200cییکشمیریکوردیکورنیشقرقیزیلاتینلوکزامبورگیگاندالینگالالائ" +
+ "وییلتونیاییلوبا-کاتانگالاتویاییمالاگاسیمائوریمقدونیمالایالاممغولیما" +
+ "راتیمالاییمالتیبرمه\u200cییشمالی ندبلهنپالیهلندینروژی نینورسکنروژی " +
+ "بوکمالاورومواوریاپنجابیلهستونیپشتوپرتغالیقوئچوئارومانشروندیرومانیای" +
+ "یروسیکنیاروآنداییسانسکریتسندیشمالی سامیسانگوسینهالااسلواکیاسلوونیای" +
+ "یشوناسومالیاییآلبانیاییصربیسوندانسیسوئدیسواحیلیتامیلیتلوگوییتاجیکیت" +
+ "اییتیگرینیاییترکمونیتونگانیترکیتاتاریئوغوریاوکراینیاردوازبکیویتنامی" +
+ "وولفیخوسایوروباچینیزولوآقمماپوچهآسوبمباییبناییغربی بلوچیبدوییچیگاچر" +
+ "وکیاییمیونی کوردیتایتازارماییپایین صربیدوئالاییجولا-فونیامبوفیلیپین" +
+ "وگاگائوزیسوییس آلمانیگوسیهاواییاییبالایی صربینگومباماچامهقبایلیکامب" +
+ "اییماکوندهکیپ وُردیکویرا چیینیکالنجینکومی-پرمیاککونکانیشامبالابافیا" +
+ "ییلانگیلاکوتاشمالی لُریلوئولوییاماساییمِروییموریسینماخوئا-میتومِتاء" +
+ "موهاکموندانگمازرونیناماپایین آلمانیکوئاسیونئکونوئرنیانکولهکئیچه" +
+ "\u200cئیرومبوروآییسامبوروسانگووجنوبی کردیسِناییکویرابورا سنیتاچلهیتج" +
+ "نوبی سامیلوله سامیایناری سامیسکولت سامیکنگو سواحیلیتسوییتاساواقیمیو" +
+ "نی اطلس تامزیقینشناسی\u200cیه زوونواییوونجوییوالرپیریسوگامراکش ِاست" +
+ "اندارد ِتامازیقتیاین زوون بشناسی\u200cیه نیّهمدرن استاندارد عربیجنو" +
+ "بی آذری ترکیاتریش ِآلمانیسوییس ِآلمانیاسترالیای ِانگلیسیکانادای ِان" +
+ "گلیسیبریتیش انگلیسیامریکن انگلیسیجنوبی آمریکای ِایسپانیولیاروپای ِا" +
+ "یسپانیولیمکزیک ِایسپانیولیکانادای ِفرانسویسوییس ِفرانسویپایین ساکسو" +
+ "نیفلمیشبرزیل ِپرتغالیاروپای ِپرتغالیمولداویساده چینیسنتی چینی",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000c, 0x000c, 0x001c, 0x0024, 0x002e, 0x002e,
+ 0x0036, 0x0040, 0x0040, 0x0040, 0x0053, 0x0061, 0x006f, 0x007b,
+ 0x007b, 0x008d, 0x0099, 0x00a1, 0x00af, 0x00bf, 0x00cf, 0x00d7,
+ 0x00d7, 0x00e7, 0x00e7, 0x00ed, 0x00ed, 0x00f9, 0x0101, 0x0111,
+ 0x011d, 0x011d, 0x012b, 0x0138, 0x0144, 0x0152, 0x0162, 0x0176,
+ 0x0188, 0x0192, 0x019c, 0x019c, 0x01a6, 0x01b4, 0x01c0, 0x01ce,
+ 0x01e3, 0x01ed, 0x01ed, 0x01f7, 0x0203, 0x020f, 0x0219, 0x0221,
+ 0x0229, 0x0231, 0x0231, 0x023d, 0x024d, 0x0257, 0x0261, 0x0261,
+ // Entry 40 - 7F
+ 0x0261, 0x0275, 0x0275, 0x027f, 0x0292, 0x0292, 0x0292, 0x02a0,
+ 0x02b2, 0x02c4, 0x02d0, 0x02dc, 0x02e4, 0x02e4, 0x02f0, 0x02f0,
+ 0x02fa, 0x030e, 0x0316, 0x0324, 0x0333, 0x0333, 0x033f, 0x0349,
+ 0x0349, 0x0355, 0x0361, 0x036b, 0x0381, 0x038b, 0x038b, 0x0399,
+ 0x03a5, 0x03b5, 0x03cc, 0x03dc, 0x03ec, 0x03ec, 0x03f8, 0x0404,
+ 0x0416, 0x0420, 0x042c, 0x0438, 0x0442, 0x0451, 0x0451, 0x0466,
+ 0x0470, 0x0470, 0x047a, 0x0493, 0x04aa, 0x04aa, 0x04aa, 0x04aa,
+ 0x04aa, 0x04aa, 0x04b6, 0x04c0, 0x04c0, 0x04cc, 0x04cc, 0x04da,
+ // Entry 80 - BF
+ 0x04e2, 0x04f0, 0x04fe, 0x050a, 0x0514, 0x0526, 0x052e, 0x0546,
+ 0x0556, 0x0556, 0x055e, 0x0571, 0x057b, 0x0589, 0x0597, 0x05ab,
+ 0x05ab, 0x05b3, 0x05c5, 0x05d7, 0x05df, 0x05df, 0x05df, 0x05ef,
+ 0x05f9, 0x0607, 0x0613, 0x0621, 0x062d, 0x0635, 0x0649, 0x0657,
+ 0x0657, 0x0665, 0x066d, 0x066d, 0x0679, 0x0679, 0x0685, 0x0695,
+ 0x069d, 0x06a7, 0x06a7, 0x06b5, 0x06b5, 0x06b5, 0x06bf, 0x06c7,
+ 0x06c7, 0x06d3, 0x06d3, 0x06db, 0x06e3, 0x06e3, 0x06e3, 0x06e3,
+ 0x06e3, 0x06e3, 0x06e3, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9,
+ // Entry C0 - FF
+ 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06f5, 0x06f5, 0x06f5,
+ 0x06f5, 0x06f5, 0x06f5, 0x06f5, 0x06fb, 0x06fb, 0x06fb, 0x06fb,
+ 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb,
+ 0x06fb, 0x0707, 0x0707, 0x0711, 0x0711, 0x0711, 0x0724, 0x0724,
+ 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724,
+ 0x0724, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e,
+ 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x0736, 0x0736, 0x0736,
+ 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0746, 0x0746, 0x075b,
+ // Entry 100 - 13F
+ 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x0765, 0x0765,
+ 0x0765, 0x0765, 0x0765, 0x0773, 0x0773, 0x0786, 0x0786, 0x0796,
+ 0x0796, 0x07a7, 0x07a7, 0x07a7, 0x07af, 0x07af, 0x07af, 0x07af,
+ 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07bf,
+ 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf,
+ 0x07bf, 0x07bf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf,
+ 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf,
+ 0x07cf, 0x07cf, 0x07e6, 0x07e6, 0x07e6, 0x07ee, 0x07ee, 0x07ee,
+ // Entry 140 - 17F
+ 0x07ee, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0815, 0x0815,
+ 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815,
+ 0x0821, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x0839, 0x0839,
+ 0x0839, 0x0847, 0x0847, 0x0847, 0x0847, 0x0847, 0x0855, 0x0866,
+ 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x087b, 0x087b, 0x087b,
+ 0x087b, 0x0889, 0x0889, 0x089e, 0x08ac, 0x08ac, 0x08ac, 0x08ac,
+ 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ba, 0x08c8, 0x08c8, 0x08c8,
+ 0x08c8, 0x08c8, 0x08d2, 0x08d2, 0x08d2, 0x08d2, 0x08d2, 0x08d2,
+ // Entry 180 - 1BF
+ 0x08d2, 0x08de, 0x08de, 0x08de, 0x08de, 0x08f1, 0x08f1, 0x08f1,
+ 0x08f1, 0x08f1, 0x08f9, 0x08f9, 0x0903, 0x0903, 0x0903, 0x0903,
+ 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x090f, 0x090f, 0x090f,
+ 0x090f, 0x090f, 0x091b, 0x0929, 0x0929, 0x093e, 0x0948, 0x0948,
+ 0x0948, 0x0948, 0x0948, 0x0952, 0x0952, 0x0952, 0x0960, 0x0960,
+ 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x096e, 0x096e,
+ 0x096e, 0x0976, 0x098d, 0x098d, 0x098d, 0x098d, 0x098d, 0x099b,
+ 0x099b, 0x099b, 0x099b, 0x099b, 0x09a3, 0x09a3, 0x09ab, 0x09ab,
+ // Entry 1C0 - 1FF
+ 0x09ab, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb,
+ 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb,
+ 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09cc, 0x09cc,
+ 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09d6, 0x09d6, 0x09d6,
+ 0x09d6, 0x09d6, 0x09d6, 0x09e0, 0x09e0, 0x09e0, 0x09e0, 0x09ee,
+ 0x09ee, 0x09ee, 0x09ee, 0x09ee, 0x09fa, 0x09fa, 0x09fa, 0x09fa,
+ 0x0a0d, 0x0a0d, 0x0a19, 0x0a19, 0x0a19, 0x0a32, 0x0a32, 0x0a32,
+ 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a53, 0x0a64,
+ // Entry 200 - 23F
+ 0x0a79, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c,
+ 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa3,
+ 0x0aa3, 0x0aa3, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad,
+ 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad,
+ 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0aad, 0x0abd, 0x0abd,
+ 0x0adf, 0x0adf, 0x0adf, 0x0adf, 0x0afb, 0x0b03, 0x0b03, 0x0b03,
+ 0x0b03, 0x0b03, 0x0b03, 0x0b03, 0x0b11, 0x0b11, 0x0b11, 0x0b11,
+ 0x0b11, 0x0b21, 0x0b21, 0x0b21, 0x0b21, 0x0b29, 0x0b29, 0x0b29,
+ // Entry 240 - 27F
+ 0x0b29, 0x0b29, 0x0b29, 0x0b29, 0x0b29, 0x0b29, 0x0b29, 0x0b29,
+ 0x0b5d, 0x0b5d, 0x0b89, 0x0b89, 0x0bad, 0x0bc9, 0x0be2, 0x0bfb,
+ 0x0c1e, 0x0c3d, 0x0c58, 0x0c73, 0x0ca3, 0x0cc6, 0x0ce7, 0x0ce7,
+ 0x0d06, 0x0d21, 0x0d3a, 0x0d44, 0x0d5f, 0x0d7c, 0x0d8a, 0x0d8a,
+ 0x0d9b, 0x0dac,
+ },
+ },
+ { // naq
+ "AkangowabAmharicgowabArabiǁî gowabBelarusanǁî gowabBulgariaǁî gowabBenga" +
+ "liǁî gowabCzechǁî gowabDuitsXriksEngelsSpaansPersiaǁî gowabFransHaus" +
+ "agowabHindigowabHungariaǁî gowabIndonesiaǁî gowabIgbogowabItaliansJa" +
+ "paneesJavaneseKhmerǁî gowab, CentralKoreaǁî gowabMalayǁî gowabBurmes" +
+ "ǁî gowabNepalǁî gowabHollandsPunjabigowabPoleǁî gowabPortugeesRoman" +
+ "iaǁî gowabRussiaǁî gowabRwandaǁî gowabSomaliǁî gowabSwedeǁî gowabTam" +
+ "ilǁî gowabThaiǁî gowabTurkeǁî gowabUkrainiaǁî gowabUrduǁî gowabVietn" +
+ "amǁî gowabYorubabChineesǁî gowab, MandarinniZulubKhoekhoegowab",
+ []uint16{ // 434 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0037, 0x0049,
+ 0x0049, 0x0049, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
+ 0x006e, 0x006e, 0x006e, 0x006e, 0x0073, 0x0079, 0x0079, 0x007f,
+ 0x007f, 0x007f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x0094,
+ 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x009e,
+ 0x009e, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00ba, 0x00ba, 0x00ba,
+ // Entry 40 - 7F
+ 0x00ba, 0x00cd, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
+ 0x00de, 0x00de, 0x00e6, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee,
+ 0x00ee, 0x00ee, 0x0106, 0x0106, 0x0115, 0x0115, 0x0115, 0x0115,
+ 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
+ 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
+ 0x0115, 0x0115, 0x0115, 0x0124, 0x0124, 0x0134, 0x0134, 0x0134,
+ 0x0143, 0x0143, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b,
+ 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x0157, 0x0157, 0x0165,
+ // Entry 80 - BF
+ 0x0165, 0x016e, 0x016e, 0x016e, 0x016e, 0x017f, 0x018f, 0x019f,
+ 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f,
+ 0x019f, 0x019f, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af,
+ 0x01be, 0x01be, 0x01cd, 0x01cd, 0x01cd, 0x01db, 0x01db, 0x01db,
+ 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01fc,
+ 0x020a, 0x020a, 0x020a, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b,
+ 0x021b, 0x0222, 0x0222, 0x023f, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ // Entry C0 - FF
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ // Entry 100 - 13F
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ // Entry 140 - 17F
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ // Entry 180 - 1BF
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244,
+ 0x0244, 0x0251,
+ },
+ },
+ { // nd
+ "isi-Akhaniisi-Amaharikhiisi-Alabhuisi-Bhelarashiyaniisi-Bulgariaisi-Bhen" +
+ "galiisi-Czechisi-Jalimaniisi-Gilikiisi-Ngisiisi-Sipeyiniisi-Pheshiya" +
+ "niisi-Fulentshiisi-Hausaisi-Hindiisi-Hangariisi-Indonesiaisi-Igboisi" +
+ "-Italianoisi-Japhaniisi-Javaisi-Khambodiyaisi-Koriyaisi-Malayiisi-Bu" +
+ "rmaisiNdebeleisi-Nepaliisi-Dutchisi-Phunjabiisi-Pholoshiisi-Potukezi" +
+ "isi-Romaniisi-Rashiyaisi-Ruwandaisi-Somaliisi-Swidishiisi-Thamilisi-" +
+ "Thayiisi-Thekishiisi-Ukrainisi-Uduisi-Vietnameseisi-Yorubhaisi-China" +
+ "isi-Zulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
+ 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0034, 0x0040,
+ 0x0040, 0x0040, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c,
+ 0x004c, 0x004c, 0x004c, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
+ 0x0061, 0x0061, 0x0061, 0x0061, 0x006b, 0x0074, 0x0074, 0x0080,
+ 0x0080, 0x0080, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x00a4,
+ 0x00a4, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b8, 0x00b8, 0x00b8,
+ // Entry 40 - 7F
+ 0x00b8, 0x00c5, 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ 0x00d9, 0x00d9, 0x00e4, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec,
+ 0x00ec, 0x00ec, 0x00fa, 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
+ 0x0104, 0x0104, 0x0104, 0x010e, 0x010e, 0x0117, 0x0117, 0x0121,
+ 0x012b, 0x012b, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0140, 0x0140, 0x014c,
+ // Entry 80 - BF
+ 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0162, 0x016d, 0x0178,
+ 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,
+ 0x0178, 0x0178, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182,
+ 0x018e, 0x018e, 0x0198, 0x0198, 0x0198, 0x01a1, 0x01a1, 0x01a1,
+ 0x01a1, 0x01a1, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b7,
+ 0x01be, 0x01be, 0x01be, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc,
+ 0x01cc, 0x01d7, 0x01d7, 0x01e0, 0x01e8,
+ },
+ },
+ { // ne
+ neLangStr,
+ neLangIdx,
+ },
+ { // nl
+ nlLangStr,
+ nlLangIdx,
+ },
+ { // nmg
+ "Kiɛl akanKiɛl amariaKiɛl b’árabeKiɛl belarussieKiɛl bulgariaKiɛl bengali" +
+ "aKiɛl bó tchɛkJámanKiɛl bó grɛkNgɛ̄lɛ̄nPaŋáKiɛl pɛrsiaFalaKiɛl máwús" +
+ "áKiɛl b’indienKiɛl b’ɔ́ngroisKiɛl indonesieKiɛl ikboKiɛl italiaKiɛl" +
+ " bó japonɛ̌Kiɛl bó javanɛ̌Kiɛl bó mɛrKiɛl koréKiɛl Malɛ̌siāKiɛl birm" +
+ "aniaKiɛl nepalKiɛl bóllandaisKiɛl pɛndjabiKiɛl pɔlɔŋeKiɛl bó pɔ̄rtug" +
+ "ɛ̂Kiɛl bó rumɛ̂nKiɛl russiaKiɛl rwandāKiɛl somaliāKiɛl bó suedoisKi" +
+ "ɛl tamulKiɛl thaïKiɛl bó turkKiɛl b’ukrɛ̄nienKiɛl úrduKiɛl viɛtnamY" +
+ "orúbâKiɛl bó chinoisZulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016,
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0036, 0x0044,
+ 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x0052, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
+ 0x0068, 0x0068, 0x0068, 0x0068, 0x0077, 0x0083, 0x0083, 0x0089,
+ 0x0089, 0x0089, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x00a9,
+ 0x00a9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00cd, 0x00cd, 0x00cd,
+ // Entry 40 - 7F
+ 0x00cd, 0x00dc, 0x00dc, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
+ 0x00f2, 0x00f2, 0x0105, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118,
+ 0x0118, 0x0118, 0x0126, 0x0126, 0x0131, 0x0131, 0x0131, 0x0131,
+ 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131,
+ 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131,
+ 0x0131, 0x0131, 0x0131, 0x0142, 0x0142, 0x0150, 0x0150, 0x0150,
+ 0x015b, 0x015b, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x017b, 0x017b, 0x018a,
+ // Entry 80 - BF
+ 0x018a, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01b3, 0x01bf, 0x01cc,
+ 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc,
+ 0x01cc, 0x01cc, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01eb, 0x01eb, 0x01f6, 0x01f6, 0x01f6, 0x0201, 0x0201, 0x0201,
+ 0x0201, 0x0201, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0224,
+ 0x022f, 0x022f, 0x022f, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d,
+ 0x023d, 0x0245, 0x0245, 0x0256, 0x025a,
+ },
+ },
+ { // nn
+ "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamiskavarisk" +
+ "aymaraaserbajdsjanskbasjkirskkviterussiskbulgarskbislamabambarabenga" +
+ "litibetanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcree" +
+ "tsjekkiskkyrkjeslavisktsjuvanskwalisiskdansktyskdivehidzongkhaewegre" +
+ "skengelskesperantospanskestiskbaskiskpersiskfulanifinskfijianskfærøy" +
+ "skfranskvestfrisiskirskskotsk-gæliskgaliciskguaranigujaratimanxhausa" +
+ "hebraiskhindihiri motukroatiskhaitiskungarskarmenskhererointerlingua" +
+ "indonesiskinterlingueibosichuan-yiinupiakidoislandskitalienskinuktit" +
+ "utjapanskjavanesiskgeorgiskkikongokikuyukuanyamakasakhiskkalaallisut" +
+ "; grønlandskkhmerkannadakoreanskkanurikasjmirikurdiskkomikorniskkirg" +
+ "isisklatinluxemburgskgandalimburgisklingalalaotisklitauiskluba-katan" +
+ "galatviskmadagassiskmarshallesiskmaorimakedonskmalayalammongolskmara" +
+ "thimalayiskmaltesiskburmesisknaurunord-ndebelenepalskndonganederland" +
+ "sknynorskbokmålsør-ndebelenavajonyanjaoksitanskojibwaoromooriyaosset" +
+ "iskpanjabipalipolskpashtoportugisiskquechuaretoromanskrundirumenskru" +
+ "ssiskkinjarwandasanskritsardinsksindhinordsamisksangosingalesiskslov" +
+ "akiskslovensksamoanskshonasomalialbanskserbiskswatisørsothosundanesi" +
+ "sksvenskswahilitamiltelugutatsjikiskthaitigrinjaturkmensktswanatonga" +
+ " (Tonga-øyane)tyrkisktsongatatarisktahitiskuiguriskukrainskurduusbek" +
+ "iskvendavietnamesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkine" +
+ "siskzuluachinesiskacoliadangmeadygheafrihiliaghemainuakkadiskaleutis" +
+ "ksør-altaigammalengelskangikaarameiskaraukanskarapahoarawakasu (Tanz" +
+ "ania)asturiskawadhibaluchibalinesiskbasabejabembabena (Tanzania)bhoj" +
+ "puribikolbinisiksikabrajbodoburjatiskbuginesiskblincaddokaribiskatsa" +
+ "mcebuanskchibchachagataichuukesiskmarichinookchoctawchipewianskchero" +
+ "keecheyennekoptiskkrimtatariskkasjubiskdakotadargwadelawareslavejdog" +
+ "ribdinkazarmadogrilågsorbiskdualamellumnederlandskjola-fonyidyulakie" +
+ "mbuefikgammalegyptiskekajukelamittiskmellomengelskewondofangfilippin" +
+ "skfonmellomfranskgammalfransknordfrisiskaustfrisiskfriulianskgagayog" +
+ "bayageskiribatiskmellomhøgtyskgammalhøgtyskgondigorontalogotiskgrebo" +
+ "gammalgresksveitsertyskgwichinhaidahawaiiskhiligaynonhettittiskhmong" +
+ "høgsorbiskhupaibanilokoingusjisklojbanjødepersiskjødearabiskkarakalp" +
+ "akiskkabylskkachinjjukambakawikabardisktyapkapverdiskkorokhasikhotan" +
+ "esiskkimbundukonkanikosraeanskkpellekarachay-balkarkarelskkurukhbafi" +
+ "akumykkutenailadinsklahndalambalezghianmongoloziluba-lulualuisenolun" +
+ "daluolushaimaduresiskmagahimaithilimakasarmandingomasaimokshamandarm" +
+ "endemellomirskmicmacminangkabaumandsjumanipurimohawkmossimundangflei" +
+ "re språkcreekmirandesiskmarwarierzyanapolitansklågtysknewariniasniue" +
+ "anskkwasionogaigammalnorskn’konordsothonuerklassisk newarisknyamwezi" +
+ "nyankolenyoronzimaosageottomansk tyrkiskpangasinanpahlavipampangapap" +
+ "iamentopalauiskgammalpersiskfønikiskponapiskgammalprovençalskrajasth" +
+ "anirapanuirarotonganskromboromaniaromanskrwasandawejakutsksamaritans" +
+ "k arameisksasaksantalisangusicilianskskotskselkupiskgammalirskshansi" +
+ "damosørsamisklulesamiskenaresamiskskoltesamisksoninkesogdisksranan t" +
+ "ongoserersukumasususumeriskshimaoreklassisk syrisksyrisktemneterenot" +
+ "etumtigrétivitokelauklingontlingittamasjektonga (Nyasa)tok pisintsim" +
+ "shiantumbukatuvalutasawaqtuviniskudmurtugaritiskumbundurotvaivotiskw" +
+ "alamowaraywashokalmykyaoyapesiskyangbenkantonesiskzapotecblissymbolz" +
+ "enagazuniutan språkleg innhaldzazaausterriksk tysksveitsisk høgtyska" +
+ "ustralisk engelskkanadisk engelskbritisk engelskengelsk (amerikansk)" +
+ "latinamerikansk spanskiberisk spanskkanadisk fransksveitsisk franskf" +
+ "lamskbrasiliansk portugisiskeuropeisk portugisiskmoldaviskserbokroat" +
+ "iskforenkla kinesisktradisjonell kinesisk",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032,
+ 0x0039, 0x0041, 0x0048, 0x004e, 0x005c, 0x0065, 0x0071, 0x0079,
+ 0x0080, 0x0087, 0x008e, 0x0097, 0x009f, 0x00a6, 0x00af, 0x00ba,
+ 0x00c2, 0x00cc, 0x00d0, 0x00d9, 0x00e6, 0x00ef, 0x00f7, 0x00fc,
+ 0x0100, 0x0106, 0x010e, 0x0111, 0x0116, 0x011d, 0x0126, 0x012c,
+ 0x0132, 0x0139, 0x0140, 0x0146, 0x014b, 0x0153, 0x015c, 0x0162,
+ 0x016d, 0x0171, 0x017f, 0x0187, 0x018e, 0x0196, 0x019a, 0x019f,
+ 0x01a7, 0x01ac, 0x01b5, 0x01bd, 0x01c4, 0x01cb, 0x01d2, 0x01d8,
+ // Entry 40 - 7F
+ 0x01e3, 0x01ed, 0x01f8, 0x01fb, 0x0205, 0x020c, 0x020f, 0x0217,
+ 0x0220, 0x0229, 0x0230, 0x023a, 0x0242, 0x0249, 0x024f, 0x0257,
+ 0x0260, 0x0278, 0x027d, 0x0284, 0x028c, 0x0292, 0x029a, 0x02a1,
+ 0x02a5, 0x02ac, 0x02b5, 0x02ba, 0x02c5, 0x02ca, 0x02d4, 0x02db,
+ 0x02e2, 0x02ea, 0x02f6, 0x02fd, 0x0308, 0x0315, 0x031a, 0x0323,
+ 0x032c, 0x0334, 0x033b, 0x0343, 0x034c, 0x0355, 0x035a, 0x0366,
+ 0x036d, 0x0373, 0x037e, 0x0385, 0x038c, 0x0398, 0x039e, 0x03a4,
+ 0x03ad, 0x03b3, 0x03b8, 0x03bd, 0x03c5, 0x03cc, 0x03d0, 0x03d5,
+ // Entry 80 - BF
+ 0x03db, 0x03e6, 0x03ed, 0x03f8, 0x03fd, 0x0404, 0x040b, 0x0416,
+ 0x041e, 0x0426, 0x042c, 0x0436, 0x043b, 0x0446, 0x044f, 0x0457,
+ 0x045f, 0x0464, 0x046a, 0x0471, 0x0478, 0x047d, 0x0486, 0x0491,
+ 0x0497, 0x049e, 0x04a3, 0x04a9, 0x04b3, 0x04b7, 0x04bf, 0x04c8,
+ 0x04ce, 0x04e2, 0x04e9, 0x04ef, 0x04f7, 0x04ff, 0x0507, 0x050f,
+ 0x0513, 0x051b, 0x0520, 0x052c, 0x0533, 0x053b, 0x0540, 0x0545,
+ 0x054c, 0x0552, 0x0558, 0x0560, 0x0564, 0x056e, 0x0573, 0x057a,
+ 0x0580, 0x0580, 0x0588, 0x058d, 0x0591, 0x0599, 0x0599, 0x05a1,
+ // Entry C0 - FF
+ 0x05a1, 0x05ab, 0x05b8, 0x05be, 0x05c6, 0x05cf, 0x05cf, 0x05d6,
+ 0x05d6, 0x05dc, 0x05dc, 0x05dc, 0x05ea, 0x05ea, 0x05f2, 0x05f2,
+ 0x05f8, 0x05ff, 0x0609, 0x0609, 0x060d, 0x060d, 0x060d, 0x060d,
+ 0x0611, 0x0616, 0x0616, 0x0625, 0x0625, 0x0625, 0x0625, 0x062d,
+ 0x0632, 0x0636, 0x0636, 0x0636, 0x063d, 0x063d, 0x063d, 0x0641,
+ 0x0641, 0x0645, 0x0645, 0x064e, 0x0658, 0x0658, 0x065c, 0x065c,
+ 0x0661, 0x0669, 0x0669, 0x066e, 0x0676, 0x0676, 0x067d, 0x0685,
+ 0x068f, 0x0693, 0x069a, 0x06a1, 0x06ac, 0x06b4, 0x06bc, 0x06bc,
+ // Entry 100 - 13F
+ 0x06c3, 0x06c3, 0x06cf, 0x06d8, 0x06de, 0x06e4, 0x06e4, 0x06ec,
+ 0x06f2, 0x06f8, 0x06fd, 0x0702, 0x0707, 0x0712, 0x0712, 0x0717,
+ 0x0728, 0x0732, 0x0737, 0x0737, 0x073d, 0x0741, 0x0741, 0x074f,
+ 0x0755, 0x075f, 0x076c, 0x076c, 0x0772, 0x0772, 0x0776, 0x0780,
+ 0x0780, 0x0783, 0x0783, 0x078f, 0x079b, 0x079b, 0x07a6, 0x07b1,
+ 0x07bb, 0x07bd, 0x07bd, 0x07bd, 0x07c1, 0x07c6, 0x07c6, 0x07c9,
+ 0x07d3, 0x07d3, 0x07e1, 0x07ef, 0x07ef, 0x07f4, 0x07fd, 0x0803,
+ 0x0808, 0x0813, 0x081f, 0x081f, 0x081f, 0x081f, 0x0826, 0x082b,
+ // Entry 140 - 17F
+ 0x082b, 0x0833, 0x0833, 0x083d, 0x0847, 0x084c, 0x0857, 0x0857,
+ 0x085b, 0x085f, 0x085f, 0x0864, 0x086d, 0x086d, 0x086d, 0x0873,
+ 0x0873, 0x0873, 0x087f, 0x088b, 0x088b, 0x0898, 0x089f, 0x08a5,
+ 0x08a8, 0x08ad, 0x08b1, 0x08ba, 0x08ba, 0x08be, 0x08be, 0x08c8,
+ 0x08c8, 0x08cc, 0x08cc, 0x08d1, 0x08dc, 0x08dc, 0x08dc, 0x08dc,
+ 0x08dc, 0x08dc, 0x08e4, 0x08e4, 0x08eb, 0x08f5, 0x08fb, 0x090a,
+ 0x090a, 0x090a, 0x0911, 0x0917, 0x0917, 0x091c, 0x091c, 0x0921,
+ 0x0928, 0x092f, 0x092f, 0x0935, 0x093a, 0x0942, 0x0942, 0x0942,
+ // Entry 180 - 1BF
+ 0x0942, 0x0942, 0x0942, 0x0947, 0x094b, 0x094b, 0x094b, 0x0955,
+ 0x095c, 0x0961, 0x0964, 0x096a, 0x096a, 0x096a, 0x096a, 0x0974,
+ 0x0974, 0x097a, 0x0982, 0x0989, 0x0991, 0x0996, 0x0996, 0x099c,
+ 0x09a2, 0x09a7, 0x09a7, 0x09a7, 0x09b1, 0x09b1, 0x09b1, 0x09b7,
+ 0x09c2, 0x09c9, 0x09d1, 0x09d7, 0x09dc, 0x09dc, 0x09e3, 0x09f0,
+ 0x09f5, 0x0a00, 0x0a07, 0x0a07, 0x0a07, 0x0a0c, 0x0a0c, 0x0a0c,
+ 0x0a17, 0x0a17, 0x0a1f, 0x0a25, 0x0a29, 0x0a31, 0x0a31, 0x0a37,
+ 0x0a37, 0x0a3c, 0x0a47, 0x0a47, 0x0a4d, 0x0a56, 0x0a5a, 0x0a6b,
+ // Entry 1C0 - 1FF
+ 0x0a73, 0x0a7b, 0x0a80, 0x0a85, 0x0a8a, 0x0a9b, 0x0aa5, 0x0aac,
+ 0x0ab4, 0x0abe, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ac6, 0x0ad3, 0x0ad3,
+ 0x0adc, 0x0adc, 0x0adc, 0x0ae4, 0x0ae4, 0x0af6, 0x0af6, 0x0af6,
+ 0x0b00, 0x0b07, 0x0b13, 0x0b13, 0x0b13, 0x0b18, 0x0b1e, 0x0b1e,
+ 0x0b1e, 0x0b1e, 0x0b26, 0x0b29, 0x0b30, 0x0b37, 0x0b4b, 0x0b4b,
+ 0x0b50, 0x0b57, 0x0b57, 0x0b57, 0x0b5c, 0x0b66, 0x0b6c, 0x0b6c,
+ 0x0b6c, 0x0b6c, 0x0b6c, 0x0b6c, 0x0b75, 0x0b75, 0x0b7f, 0x0b7f,
+ 0x0b7f, 0x0b83, 0x0b83, 0x0b89, 0x0b89, 0x0b89, 0x0b93, 0x0b9d,
+ // Entry 200 - 23F
+ 0x0ba8, 0x0bb4, 0x0bbb, 0x0bc2, 0x0bce, 0x0bd3, 0x0bd3, 0x0bd3,
+ 0x0bd9, 0x0bdd, 0x0be5, 0x0bed, 0x0bed, 0x0bfc, 0x0c02, 0x0c02,
+ 0x0c02, 0x0c07, 0x0c07, 0x0c0d, 0x0c12, 0x0c18, 0x0c1c, 0x0c23,
+ 0x0c23, 0x0c2a, 0x0c31, 0x0c31, 0x0c39, 0x0c46, 0x0c4f, 0x0c4f,
+ 0x0c4f, 0x0c4f, 0x0c58, 0x0c58, 0x0c5f, 0x0c65, 0x0c6c, 0x0c74,
+ 0x0c74, 0x0c7a, 0x0c83, 0x0c8a, 0x0c8d, 0x0c90, 0x0c90, 0x0c90,
+ 0x0c90, 0x0c90, 0x0c96, 0x0c96, 0x0c96, 0x0c96, 0x0c9c, 0x0ca1,
+ 0x0ca6, 0x0ca6, 0x0ca6, 0x0cac, 0x0cac, 0x0cac, 0x0caf, 0x0cb7,
+ // Entry 240 - 27F
+ 0x0cbe, 0x0cbe, 0x0cbe, 0x0cc9, 0x0cd0, 0x0cda, 0x0cda, 0x0ce0,
+ 0x0ce0, 0x0ce4, 0x0cfa, 0x0cfe, 0x0cfe, 0x0cfe, 0x0d0e, 0x0d20,
+ 0x0d32, 0x0d42, 0x0d51, 0x0d65, 0x0d7b, 0x0d89, 0x0d89, 0x0d89,
+ 0x0d98, 0x0da8, 0x0da8, 0x0dae, 0x0dc5, 0x0dda, 0x0de3, 0x0df0,
+ 0x0e01, 0x0e16,
+ },
+ },
+ { // nnh
+ "nzǎmɔ̂ɔnngilísèShwóŋò menkesaŋfelaŋséeShwóŋò pʉa mbasǎShwóŋò pamomShwóŋò" +
+ " pʉa nzsekàʼaShwóŋò pafudShwóŋò pʉ̀a njinikomShwóŋò pakɔsiShwóŋò mbu" +
+ "luShwóŋò ngáŋtÿɔʼShwóŋò pʉa YɔɔnmendiShwóŋò pʉa shÿó BɛgtùaShwóŋò ng" +
+ "iembɔɔnShwóŋò pʉa shÿó MbafìaShwóŋò Tsaŋ",
+ []uint16{ // 578 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0028, 0x0028, 0x0028, 0x0028, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ // Entry 40 - 7F
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ // Entry 80 - BF
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ // Entry C0 - FF
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0032, 0x0047, 0x0056, 0x0056, 0x006f,
+ 0x006f, 0x006f, 0x006f, 0x006f, 0x007e, 0x007e, 0x007e, 0x007e,
+ 0x007e, 0x007e, 0x007e, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,
+ 0x0097, 0x0097, 0x00a8, 0x00a8, 0x00a8, 0x00b7, 0x00b7, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ // Entry 100 - 13F
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ // Entry 140 - 17F
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ // Entry 180 - 1BF
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ // Entry 1C0 - 1FF
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ // Entry 200 - 23F
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ // Entry 240 - 27F
+ 0x0138, 0x0147,
+ },
+ },
+ { // no
+ noLangStr,
+ noLangIdx,
+ },
+ { // nus
+ "Thok aka̱niThok bunyniThok JalabniThok bäläruthaThok bälga̱a̱rianiThok b" +
+ "ängaliThok cikThok jarmaniThok girikniThok liŋli̱thniThok i̱thpaani" +
+ "aniThok perthianiThok pɔrɔthaniThok ɣowthaniThok ɣändiniThok ɣänga̱a" +
+ "̱riɛniThok indunithianiThok i̱gboniThok i̱talianiThok japanniThok j" +
+ "abanithniThok kameeriThok kurianiThok mayɛyniThok bormi̱thniThok nap" +
+ "alniThok da̱cThok puɔnjabaniThok pölicniThok puɔtigaliThok ji̱ römTh" +
+ "ok ra̱ciaaniThok ruaandaniThok thomaalianiThok i̱thwidicniThok tamil" +
+ "niThok tayniThok turkicniThok ukeraaniniThok udoniThok betnaamniThok" +
+ " yurubaniThok caynaThok dhuluniThok Nath",
+ []uint16{ // 447 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0017, 0x0017,
+ 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0033, 0x0048,
+ 0x0048, 0x0048, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
+ 0x0055, 0x0055, 0x0055, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
+ 0x0069, 0x0069, 0x0069, 0x0069, 0x0075, 0x0086, 0x0086, 0x0098,
+ 0x0098, 0x0098, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00b6,
+ 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c4,
+ 0x00c4, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00e9, 0x00e9, 0x00e9,
+ // Entry 40 - 7F
+ 0x00e9, 0x00fa, 0x00fa, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x0116, 0x0116, 0x0122, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131,
+ 0x0131, 0x0131, 0x013d, 0x013d, 0x0149, 0x0149, 0x0149, 0x0149,
+ 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149,
+ 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149,
+ 0x0149, 0x0149, 0x0149, 0x0156, 0x0156, 0x0166, 0x0166, 0x0166,
+ 0x0172, 0x0172, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c,
+ 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x018c, 0x018c, 0x0199,
+ // Entry 80 - BF
+ 0x0199, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01b6, 0x01c5, 0x01d3,
+ 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3,
+ 0x01d3, 0x01d3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3,
+ 0x01f4, 0x01f4, 0x0200, 0x0200, 0x0200, 0x020a, 0x020a, 0x020a,
+ 0x020a, 0x020a, 0x0217, 0x0217, 0x0217, 0x0217, 0x0217, 0x0226,
+ 0x0230, 0x0230, 0x0230, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e,
+ 0x023e, 0x024b, 0x024b, 0x0255, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ // Entry C0 - FF
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ // Entry 100 - 13F
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ // Entry 140 - 17F
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ // Entry 180 - 1BF
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261,
+ 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x026a,
+ },
+ },
+ { // nyn
+ "OrukaniOrumarikiOruharabuOruberarusiOruburugariyaOrubengariOruceekiOrugi" +
+ "rimaaniOruguriikiOrungyerezaOrusupaaniOrupaasiyaOrufaransaOruhausaOr" +
+ "uhindiOruhangareOruindoneziaOruiboOruyitareOrujapaaniOrujavaOrukambo" +
+ "diyaOrukoreyaOrumalesiyaOruburumaOrunepaliOrudaakiOrupungyabiOrupoor" +
+ "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" +
+ "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" +
+ "inaOruzuruRunyankore",
+ []uint16{ // 450 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010,
+ 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031,
+ 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
+ 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0064, 0x0064, 0x006e,
+ 0x006e, 0x006e, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0082,
+ 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008a,
+ 0x008a, 0x0092, 0x0092, 0x0092, 0x0092, 0x009c, 0x009c, 0x009c,
+ // Entry 40 - 7F
+ 0x009c, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00b7, 0x00b7, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
+ 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00e8, 0x00f1, 0x00f1, 0x00f1,
+ 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
+ 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x010d, 0x010d, 0x0115,
+ // Entry 80 - BF
+ 0x0115, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013d,
+ 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d,
+ 0x013d, 0x013d, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0163, 0x0163, 0x0163,
+ 0x0163, 0x0163, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0176,
+ 0x017f, 0x017f, 0x017f, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d,
+ 0x018d, 0x0196, 0x0196, 0x019f, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ // Entry C0 - FF
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ // Entry 100 - 13F
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ // Entry 140 - 17F
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ // Entry 180 - 1BF
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ // Entry 1C0 - 1FF
+ 0x01a6, 0x01b0,
+ },
+ },
+ { // om
+ "AfrikootaAfaan SidaamaaArabiffaaAfaan AzerbaijaniAfaan BelarusiaAfaan Bu" +
+ "lgariyaAfaan BaangladeshiAfaan BosniyaaAfaan KatalaaAfaan CzechWelis" +
+ "hiffaaAfaan DeenmaarkAfaan JarmaniiAfaan GiriikiIngliffaAfaan Espera" +
+ "ntooAfaan IspeenAfaan IstooniyaAfaan BaskuuAfaan PersiaAfaan Fiilaan" +
+ "diAfaan FaroeseAfaan FaransaayiiAfaan FirisiyaaniAfaan AyirishiiScot" +
+ "s GaelicAfaan GalishiiAfaan GuaraniAfaan GujaratiAfaan HebrewAfaan H" +
+ "indiiAfaan CroatianAfaan HangaariInterlinguaAfaan IndoneziyaAyiislan" +
+ "diffaaAfaan XaaliyaaniAfaan JapaniiAfaan JavaAfaan GeorgianAfaan Kan" +
+ "nadaAfaan KoreaAfaan LaatiniAfaan LiituniyaaAfaan LativiyaaAfaan Mac" +
+ "edooniyaaMalayaalamiffaaAfaan MaratiiMalaayiffaaAfaan MaltesiiAfaan " +
+ "NepaliiAfaan DachiiAfaan NorwegianAfaan NorweyiiAfaan OccitOromooAfa" +
+ "an PunjabiiAfaan PolandiiAfaan PorchugaalAfaan RomaniyaaAfaan Rushiy" +
+ "aaAfaan SinhaleseAfaan SlovakAfaan IslovaniyaaAfaan AlbaniyaaAfaan S" +
+ "erbiyaAfaan SudaaniiAfaan SuwidiinSuwahiliiAfaan TamiliiAfaan Telugu" +
+ "Afaan TayiiAfaan TigireeLammii TurkiiAfaan TurkiiAfaan UkreeniiAfaan" +
+ " UrduAfaan UzbekAfaan VeetinamAfaan XhosaChineseAfaan ZuuluAfaan Fil" +
+ "ippiniiAfaan KilingonAfaan Portugali (Braazil)Afaan Protuguese",
+ []uint16{ // 606 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0017, 0x0017,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0031, 0x0031, 0x0040, 0x004f,
+ 0x004f, 0x004f, 0x0061, 0x0061, 0x0061, 0x006f, 0x007c, 0x007c,
+ 0x007c, 0x007c, 0x007c, 0x0087, 0x0087, 0x0087, 0x0092, 0x00a1,
+ 0x00af, 0x00af, 0x00af, 0x00af, 0x00bc, 0x00c4, 0x00d4, 0x00e0,
+ 0x00ef, 0x00fb, 0x0107, 0x0107, 0x0116, 0x0116, 0x0123, 0x0134,
+ 0x0145, 0x0154, 0x0160, 0x016e, 0x017b, 0x0189, 0x0189, 0x0189,
+ 0x0195, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01bd, 0x01bd, 0x01bd,
+ // Entry 40 - 7F
+ 0x01c8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01e6,
+ 0x01f6, 0x01f6, 0x0203, 0x020d, 0x021b, 0x021b, 0x021b, 0x021b,
+ 0x021b, 0x021b, 0x021b, 0x0228, 0x0233, 0x0233, 0x0233, 0x0233,
+ 0x0233, 0x0233, 0x0233, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
+ 0x0240, 0x0250, 0x0250, 0x025f, 0x025f, 0x025f, 0x025f, 0x0271,
+ 0x0280, 0x0280, 0x028d, 0x0298, 0x02a6, 0x02a6, 0x02a6, 0x02a6,
+ 0x02b3, 0x02b3, 0x02bf, 0x02ce, 0x02dc, 0x02dc, 0x02dc, 0x02dc,
+ 0x02e7, 0x02e7, 0x02ed, 0x02ed, 0x02ed, 0x02fb, 0x02fb, 0x0309,
+ // Entry 80 - BF
+ 0x0309, 0x0319, 0x0319, 0x0319, 0x0319, 0x0328, 0x0336, 0x0336,
+ 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0345, 0x0351, 0x0362,
+ 0x0362, 0x0362, 0x0362, 0x0371, 0x037e, 0x037e, 0x037e, 0x038c,
+ 0x039a, 0x03a3, 0x03b0, 0x03bc, 0x03bc, 0x03c7, 0x03d4, 0x03e1,
+ 0x03e1, 0x03e1, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03fb,
+ 0x0405, 0x0410, 0x0410, 0x041e, 0x041e, 0x041e, 0x041e, 0x0429,
+ 0x0429, 0x0429, 0x0429, 0x0430, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ // Entry C0 - FF
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ // Entry 100 - 13F
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b,
+ 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ // Entry 140 - 17F
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ // Entry 180 - 1BF
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ // Entry 1C0 - 1FF
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ // Entry 200 - 23F
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b,
+ 0x044b, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
+ 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
+ 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
+ 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
+ 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
+ // Entry 240 - 27F
+ 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
+ 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
+ 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459,
+ 0x0459, 0x0459, 0x0459, 0x0459, 0x0472, 0x0482,
+ },
+ },
+ { // or
+ "ଅଫାର୍ଆବ୍ଖାଜିଆନ୍ଅବେସ୍ତନଆଫ୍ରିକାନସ୍ଅକନ୍ଆମହାରକିଆର୍ଗୋନୀଆରବିକ୍ଆସାମୀଆଭାରିକ୍ଆୟମା" +
+ "ରାଆଜେରବାଇଜାନିବଶଖିର୍ବେଲାରୁଷିଆନ୍ବୁଲଗେରିଆନ୍ବିସଲାମାବାମ୍ବାରାବଙ୍ଗାଳୀତିବେ" +
+ "ତାନ୍ବ୍ରେଟନ୍କାଟଲାନ୍କାଟାଲାନ୍ଚେଚନ୍ଚାମୋରୋକୋର୍ସିକାନ୍କ୍ରୀଚେକ୍ଚର୍ଚ୍ଚ ସ୍ଲା" +
+ "ଭିକ୍ଚୁଭାଶ୍ୱେଲ୍ସଡାନ୍ନିସ୍ଜର୍ମାନ୍ଡିଭେହୀଭୂଟାନୀଇୱେଗ୍ରୀକ୍ଇଂରାଜୀଏସ୍ପାରେଣ୍" +
+ "ଟୋସ୍ପାନିସ୍ଏସ୍ତୋନିଆନ୍ବାସ୍କ୍ୱିପର୍ସିଆନ୍ଫୁଲାହଫିନ୍ନିସ୍ଫିଜିଫାରୋଏସେଫ୍ରେଞ୍" +
+ "ଚପଶ୍ଚିମ ଫ୍ରିସିୟନ୍ଇରିସ୍ସ୍କଟିସ୍ ଗାଏଲିକ୍ଗାଲସିଆନ୍ଗୁଆରାନୀଗୁଜୁରାଟୀମାଁକ୍ସ" +
+ "ହୌସାହେବ୍ର୍ୟୁହିନ୍ଦୀହିରି ମୋଟୁକ୍ରୋଆଟିଆନ୍ହୈତାୟିନ୍ହଙ୍ଗେରିଆନ୍ଆର୍ମେନିଆନ୍ହ" +
+ "େରେରୋଇର୍ଣ୍ଟଲିଙ୍ଗୁଆଇଣ୍ଡୋନେସିଆନ୍ଇର୍ଣ୍ଟରଲିଙ୍ଗୁଇଇଗ୍ବୋସିଚୁଆନ୍ ୟୀଇନୁପିୟା" +
+ "କ୍ଇଡୋଆଇସଲାଣ୍ଡିକ୍ଇଟାଲିଆନ୍ଇନକୀଟୁତ୍ଜାପାନୀଜ୍ଜାଭାନୀଜ୍ଜର୍ଜିଆନ୍କଙ୍ଗୋକୀକୁୟ" +
+ "ୁକ୍ୱାନ୍ୟାମ୍କାଜାକ୍ଗ୍ରୀନଲାଣ୍ଡିକ୍ଖ୍ମେର୍କନ୍ନଡକୋରିଆନ୍କନୁରୀକାଶ୍ମିରୀକୁର୍ଦ" +
+ "୍ଦିଶ୍କୋମିକୋର୍ନିସ୍କିରଗିଜ୍ଲାଟିନ୍ଲକ୍ସେମବର୍ଗିସ୍ଗନ୍ଦାଲିମ୍ବୁର୍ଗିସ୍ଲିଙ୍ଗା" +
+ "ଲାଲାଓଲିଥୁଆନିଆନ୍ଲ୍ୟୁବା-କାଟାଙ୍ଗାଲାଟଭିଆନ୍ମାଲାଗାସୀମାର୍ଶାଲୀଜ୍ମାଓରୀମାକଡୋ" +
+ "ନିଆନ୍ମାଲାୟଲମ୍ମଙ୍ଗୋଲିଆନ୍ମରାଠୀମାଲୟମାଲଟୀଜ୍ବର୍ମୀଜ୍ନାଉରୁଉତ୍ତର ନେଡବେଲେନେ" +
+ "ପାଳୀଡୋଙ୍ଗାଡଚ୍ନରୱେଜିଆନ୍ ନିୟୋର୍ସ୍କନରୱେଜିଆନ୍ ବୋକମଲ୍ଦକ୍ଷିଣ ନେଡବେଲେନାଭା" +
+ "ଜୋନିୟାଞ୍ଜଓସିଟାନ୍ଓଜିୱାଓରୋମୋଓଡ଼ିଆଓସେଟିକ୍ପଞ୍ଜାବୀପାଲିପୋଲିଶ୍ପାସ୍ତୋପର୍ତ୍" +
+ "ତୁଗ୍ରୀଜ୍କ୍ୱେଚୁଆରେହେଟୋ-ରୋମାନ୍ସରୁଣ୍ଡିରୋମାନିଆନ୍ରଷିଆନ୍କିନ୍ୟାରୱାଣ୍ଡାସଂସ" +
+ "୍କୃତସର୍ଦିନିଆନ୍ସିନ୍ଧୀଉତ୍ତର ସାମିସାଙ୍ଗୋସିଂହଳସ୍ଲୋଭାକ୍ସ୍ଲୋଭେନିଆନ୍ସାମୋଆନ" +
+ "୍ଶୋନାସୋମାଲିଆଆଲବାନିଆନ୍ସର୍ବିଆନ୍ସ୍ବାତୀସେସୋଥୋସୁଦାନୀଜ୍ସ୍ୱେଡିସ୍ସ୍ୱାହିଲ୍ତ" +
+ "ାମିଲ୍ତେଲୁଗୁତାଜିକ୍ଥାଇଟ୍ରିଗିନିଆତୁର୍କମେନ୍ସେସ୍ବାନାଟୋଙ୍ଗାତୁର୍କିସ୍ସୋଂଗାତ" +
+ "ାତାର୍ତାହିତିଆନ୍ୟୁଘୁର୍ୟୁକ୍ରାନିଆନ୍ଉର୍ଦ୍ଦୁଉଜବେକ୍ଭେଣ୍ଡାଭିଏତନାମିଜ୍ବୋଲାପୁ" +
+ "କୱାଲୁନ୍ୱୋଲଫ୍ଖୋସାୟିଡିସ୍ୟୋରୁବାଜୁଆଙ୍ଗଚାଇନୀଜ୍ଜୁଲୁଆଚାଇନୀଜ୍ଆକୋଲିଆଦାଙ୍ଗେମ" +
+ "୍ଅଦ୍ୟଘେଆଫ୍ରିହିଲିଆଇନୁଆକାଡିଆନ୍ଆଲେଇଟୁଦକ୍ଷିଣ ଆଲ୍ଟାଇପୁରୁଣା ଇଁରାଜୀଅଁଗୀକା" +
+ "ଆରାମାଇକ୍ଆରାଉକାନିଆନ୍ଆରାପାହୋଆରୱକଆଷ୍ଟୁରିଆନ୍ଆୱାଧିବାଲୁଚିବାଲିନୀଜ୍ବାସାବେଜ" +
+ "ାବେମ୍ବାଭୋଜପୁରୀବିକୋଲ୍ବିନିବିକ୍ସିକାବ୍ରାଜ୍ବୁରିଆଟ୍ବୁଗୀନୀଜ୍ବ୍ଲିନ୍କାଡୋକାର" +
+ "ିବ୍ଆତ୍ସମ୍ସୀବୁଆନୋଚିବ୍ଚାଛଗତାଇଚୁକୀସେମାରୀଚିନୁକ୍ ଜାରଗାଁନ୍ଚୋଟୱାଚିପେୱାନ୍ଚ" +
+ "େରୋକୀଚେଚେନାକପ୍ଟିକ୍କ୍ରୀମିନ୍ ତୁର୍କୀସ୍କାଶୁବିଆନ୍ଡାକୋଟାଡାରାଗ୍ୱାଡେଲାୱେର୍" +
+ "ସ୍ଲେଭ୍ଡୋଗ୍ରିବ୍ଦିଙ୍କାଡୋଗ୍ରୀନିଚଳା ସର୍ବିଆନ୍ଡୁଆନାମଧ୍ୟ ପର୍ତ୍ତୁଗାଲୀଡୁଆଲା" +
+ "ଏଫିକ୍ପ୍ରାଚୀନ୍ ମିଶିରିଏକାଜୁକ୍ଏଲାମାଇଟ୍ମଧ୍ୟ ଇଁରାଜୀଇୱୋଣ୍ଡୋଫାଙ୍ଗଫିଲିପିନୋ" +
+ "ଫନ୍ମଧ୍ୟ ଫ୍ରେଞ୍ଚପୁରୁଣା ଫ୍ରେଞ୍ଚଉତ୍ତର ଫ୍ରିସିୟାନ୍ପୂର୍ବ ଫ୍ରିସିୟାନ୍ଫ୍ରିୟ" +
+ "ୁଲୀୟାନ୍ଗାଗାୟୋଗବାୟାଗୀଜ୍ଜିବ୍ରାଟୀଜ୍ମିଡିଲ୍ ହାଇ ଜର୍ମାନ୍ପୁରୁଣା ହାଇ ଜର୍ମା" +
+ "ନ୍ଗୋଣ୍ଡିଗୋରୋଣ୍ଟାଲୋଗୋଥିକ୍ଗ୍ରେବୋପ୍ରାଚୀନ୍ ୟୁନାନୀସ୍ବିସ୍ ଜର୍ମାନ୍ସ୍ବିଚ୍ " +
+ "ଇନ୍ହାଇଡାହାୱାଇନ୍ହିଲିଗୈନନ୍ହିତୀତେହଁଙ୍ଗଉପର ସର୍ବିଆନ୍ହୁପାଇବାନ୍ଇଲୋକୋଇଁଙ୍ଗ" +
+ "ୁଶ୍ଲୋଜବାନ୍ଜୁଡେଓ-ପର୍ସିଆନ୍ଜୁଡେଓ-ଆରବୀକ୍କାରା-କଲ୍ପକ୍କବାଇଲ୍କଚିନ୍ଜ୍ଜୁକମ୍ବ" +
+ "ାକାୱିକାବାର୍ଡିଆନ୍ତ୍ୟାପ୍କୋରୋଖାସୀଖୋତାନୀଜ୍କିମ୍ବୁଣ୍ଡୁକୋନକାନୀକୋସରୈନ୍କୈପେ" +
+ "ଲେକରାଚୟ-ବଲ୍କାରକାରେଲିୟାନ୍କୁରୁଖକୁମୀକ୍କୁତେନାଉଲାଦିନୋଲାହାଣ୍ଡାଲାମ୍ବାଲେଜଗ" +
+ "ିୟାନ୍ମଙ୍ଗୋଲୋଜିଲୁବା-ଲୁଲୁଆଲୁଇସେନୋଲୁଣ୍ଡାଲୁଓଲୁସାଉମାଦୁରୀସ୍ମାଗାହୀମୈଥିଳୀମ" +
+ "କାସର୍ମାଣ୍ଡିଙ୍ଗୋମାସାଇମୋକ୍ଷମନ୍ଦାରମେଣ୍ଡେମଧ୍ୟ ଇରିଶ୍ମିକମୌକ୍ମିନାଙ୍ଗାବାଉମ" +
+ "ାଞ୍ଚୁମଣିପୁରୀମୋହୌକମୋସିବିବିଧ ଭାଷାମାନକ୍ରୀକ୍ମିରାଣ୍ଡିଜ୍ମାରୱାରୀଏର୍ଜୟାନୀପ" +
+ "ୋଲିଟାନ୍ଲୋ ଜର୍ମାନ୍ନେୱାରୀନୀୟାସ୍ନିୟୁଆନ୍ନୋଗାଇପୁରୁଣା ନର୍ସଏନ୍କୋଉତ୍ତରୀ ସୋ" +
+ "ଥୋପାରମ୍ପରିକ ନେୱାରୀନ୍ୟାମୱେଜୀନ୍ୟାନକୋଲ୍ନ୍ୟାରୋଞ୍ଜିମାୱୌସେଜ୍ଓଟ୍ଟୋମନ୍ ତୁର" +
+ "୍କିସ୍ପାଙ୍ଗାସିନିଆନ୍ପାହ୍ଲାଭିପାମ୍ପାଙ୍ଗାପାପିୟାମିଣ୍ଟୋପାଲାଉଆନ୍ପୁରୁଣା ପର୍" +
+ "ସିଆନ୍ଫୋନେସିଆନ୍ପୋହପିଏନ୍ପୁରୁଣା ପ୍ରେଭେନେସିଆଲ୍ରାଜସ୍ଥାନୀରାପାନୁଇରାରୋତୋଙ୍" +
+ "ଗନ୍ରୋମାନିଆରୋମାନିଆନ୍ସଣ୍ଡାୱେୟାକୁଟ୍ସାମୌରିଟନ୍ ଆରମାଇକ୍ସାସାକ୍ସାନ୍ତାଳିସିଶ" +
+ "ିଲିଆନ୍ସ୍କଟସ୍ସେଲ୍କପ୍ପୁରୁଣା ଇରିଶ୍ଶାନ୍ସିଦାମୋଦକ୍ଷିଣ ସାମିଲୁଲେ ସାମିଇନାରୀ" +
+ " ସାମିସ୍କୋଲ୍ଟ ସାମୀସୋନିଙ୍କେସୋଗଡିଏନ୍ଶାରାନା ଟୋଙ୍ଗୋଶେରେର୍ସୁକୁମାଶୁଶୁସୁମେରି" +
+ "ଆନ୍କ୍ଲାସିକାଲ୍ ସିରିକ୍ସିରିକ୍ତିମନେତେରେନୋତେତୁମ୍ଟାଇଗ୍ରେତୀଭ୍ଟୋକେଲାଉକ୍ଲିଙ" +
+ "୍ଗନ୍ତ୍ଲିଙ୍ଗିଟ୍ତାମାଶେକ୍ନ୍ୟାସା ଟୋଙ୍ଗୋଟୋକ୍ ପିସିନ୍ତିସିମିସିଆନ୍ଟୁମ୍ବୁକାତ" +
+ "ୁଭାଲୁତୁଭିନିଆନ୍ଉଦମୂର୍ତ୍ତୟୁଗୋରଟିକ୍ଉମ୍ବୁଣ୍ଡୁମୂଳଭାଇଭୋଟିକ୍ୱାଲମୋୱାରୈୱାସୋ" +
+ "କାଲ୍ମୀକ୍ୟାଓୟାପୀସ୍ଜାପୋଟେକ୍ବ୍ଲିସିମ୍ବଲସ୍ଜେନାଗାଜୁନୀକୌଣସି ଲିଙ୍ଗୁଇଷ୍ଟ ସା" +
+ "ମଗ୍ରୀ ନାହିଁଜାଜାଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନସ୍ବିସ୍ ହାଇ ଜର୍ମାନ୍ଅଷ୍ଟ୍ରେଲିଆନ୍ ଇଁର" +
+ "ାଜୀକାନାଡିଆନ୍ ଇଁରାଜୀବ୍ରିଟିଶ୍ ଇଁରାଜୀୟୁ.ଏସ୍. ଇଁରାଜୀଲାଟିନ୍ ଆମେରିକାନ୍ ସ" +
+ "୍ପାନିଶ୍ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚସ୍ବିସ୍ ଫ୍ରେଞ୍ଚ୍ଫ୍ଲେମିଶ୍ବ" +
+ "୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ମୋଲଡୋଭିଆନ୍ସର୍ବୋ-କ୍ରୋଆଟି" +
+ "ଆନ୍ସରଳିକରଣ ଚାଇନୀଜ୍ପାରମ୍ପରିକ ଚାଇନୀଜ୍",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x002d, 0x0042, 0x0060, 0x006c, 0x0081, 0x0096,
+ 0x00a8, 0x00b7, 0x00cc, 0x00de, 0x00ff, 0x0111, 0x0132, 0x0150,
+ 0x0165, 0x017d, 0x0192, 0x01aa, 0x01bf, 0x01d4, 0x01ec, 0x01fb,
+ 0x020d, 0x022b, 0x0237, 0x0243, 0x026e, 0x0280, 0x028f, 0x02a7,
+ 0x02bc, 0x02ce, 0x02e0, 0x02e9, 0x02fb, 0x030d, 0x032e, 0x0346,
+ 0x0364, 0x037c, 0x0394, 0x03a3, 0x03bb, 0x03c7, 0x03dc, 0x03f1,
+ 0x041f, 0x042e, 0x0459, 0x0471, 0x0486, 0x049e, 0x04b0, 0x04bc,
+ 0x04d4, 0x04e6, 0x04ff, 0x051d, 0x0535, 0x0553, 0x0571, 0x0583,
+ // Entry 40 - 7F
+ 0x05aa, 0x05ce, 0x05f8, 0x0607, 0x0623, 0x063e, 0x0647, 0x0668,
+ 0x0680, 0x0698, 0x06b0, 0x06c8, 0x06e0, 0x06ef, 0x0701, 0x071f,
+ 0x0731, 0x0758, 0x076a, 0x0779, 0x078e, 0x079d, 0x07b5, 0x07d3,
+ 0x07df, 0x07f7, 0x080c, 0x081e, 0x0845, 0x0854, 0x0878, 0x0890,
+ 0x0899, 0x08b7, 0x08e2, 0x08fa, 0x0912, 0x0930, 0x093f, 0x095d,
+ 0x0975, 0x0993, 0x09a2, 0x09ae, 0x09c3, 0x09d8, 0x09e7, 0x0a0c,
+ 0x0a1e, 0x0a30, 0x0a39, 0x0a70, 0x0a9e, 0x0ac6, 0x0ad8, 0x0aed,
+ 0x0b02, 0x0b11, 0x0b20, 0x0b2f, 0x0b44, 0x0b59, 0x0b65, 0x0b77,
+ // Entry 80 - BF
+ 0x0b89, 0x0bb0, 0x0bc5, 0x0bed, 0x0bff, 0x0c1a, 0x0c2c, 0x0c53,
+ 0x0c68, 0x0c86, 0x0c98, 0x0cb4, 0x0cc6, 0x0cd5, 0x0ced, 0x0d0e,
+ 0x0d23, 0x0d2f, 0x0d44, 0x0d5f, 0x0d77, 0x0d89, 0x0d9b, 0x0db3,
+ 0x0dcb, 0x0de3, 0x0df5, 0x0e07, 0x0e19, 0x0e22, 0x0e3d, 0x0e58,
+ 0x0e70, 0x0e82, 0x0e9a, 0x0ea9, 0x0ebb, 0x0ed6, 0x0ee8, 0x0f09,
+ 0x0f1e, 0x0f30, 0x0f42, 0x0f60, 0x0f75, 0x0f87, 0x0f96, 0x0fa2,
+ 0x0fb4, 0x0fc6, 0x0fd8, 0x0fed, 0x0ff9, 0x1011, 0x1020, 0x103b,
+ 0x104d, 0x104d, 0x1068, 0x1068, 0x1074, 0x108c, 0x108c, 0x109e,
+ // Entry C0 - FF
+ 0x109e, 0x10c3, 0x10e8, 0x10fa, 0x1112, 0x1133, 0x1133, 0x1148,
+ 0x1148, 0x1154, 0x1154, 0x1154, 0x1154, 0x1154, 0x1172, 0x1172,
+ 0x1181, 0x1193, 0x11ab, 0x11ab, 0x11b7, 0x11b7, 0x11b7, 0x11b7,
+ 0x11c3, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11d5, 0x11ea,
+ 0x11fc, 0x1208, 0x1208, 0x1208, 0x1220, 0x1220, 0x1220, 0x1232,
+ 0x1232, 0x1232, 0x1232, 0x1247, 0x125f, 0x125f, 0x1271, 0x1271,
+ 0x127d, 0x128f, 0x128f, 0x12a1, 0x12b6, 0x12b6, 0x12c8, 0x12d7,
+ 0x12e9, 0x12f5, 0x1320, 0x132f, 0x1347, 0x1359, 0x136b, 0x136b,
+ // Entry 100 - 13F
+ 0x1380, 0x1380, 0x13b1, 0x13cc, 0x13de, 0x13f6, 0x13f6, 0x140e,
+ 0x1420, 0x1438, 0x144a, 0x144a, 0x145c, 0x1484, 0x1484, 0x1493,
+ 0x14c1, 0x14c1, 0x14d0, 0x14d0, 0x14d0, 0x14df, 0x14df, 0x150a,
+ 0x151f, 0x1537, 0x1556, 0x1556, 0x156b, 0x156b, 0x157a, 0x1592,
+ 0x1592, 0x159b, 0x159b, 0x15bd, 0x15e5, 0x15e5, 0x1613, 0x1641,
+ 0x1665, 0x166b, 0x166b, 0x166b, 0x1677, 0x1686, 0x1686, 0x1692,
+ 0x16b0, 0x16b0, 0x16e2, 0x1714, 0x1714, 0x1726, 0x1744, 0x1756,
+ 0x1768, 0x1793, 0x17bb, 0x17bb, 0x17bb, 0x17bb, 0x17d7, 0x17e6,
+ // Entry 140 - 17F
+ 0x17e6, 0x17fb, 0x17fb, 0x1816, 0x1828, 0x1837, 0x1859, 0x1859,
+ 0x1865, 0x1874, 0x1874, 0x1883, 0x189b, 0x189b, 0x189b, 0x18b0,
+ 0x18b0, 0x18b0, 0x18d8, 0x18fa, 0x18fa, 0x1919, 0x192b, 0x193a,
+ 0x1946, 0x1955, 0x1961, 0x1982, 0x1982, 0x1994, 0x1994, 0x1994,
+ 0x1994, 0x19a0, 0x19a0, 0x19ac, 0x19c4, 0x19c4, 0x19c4, 0x19c4,
+ 0x19c4, 0x19c4, 0x19e2, 0x19e2, 0x19f7, 0x1a0c, 0x1a1e, 0x1a40,
+ 0x1a40, 0x1a40, 0x1a5e, 0x1a6d, 0x1a6d, 0x1a6d, 0x1a6d, 0x1a7f,
+ 0x1a94, 0x1aa6, 0x1aa6, 0x1abe, 0x1ad0, 0x1aeb, 0x1aeb, 0x1aeb,
+ // Entry 180 - 1BF
+ 0x1aeb, 0x1aeb, 0x1aeb, 0x1afa, 0x1b06, 0x1b06, 0x1b06, 0x1b22,
+ 0x1b37, 0x1b49, 0x1b52, 0x1b61, 0x1b61, 0x1b61, 0x1b61, 0x1b79,
+ 0x1b79, 0x1b8b, 0x1b9d, 0x1baf, 0x1bcd, 0x1bdc, 0x1bdc, 0x1beb,
+ 0x1bfd, 0x1c0f, 0x1c0f, 0x1c0f, 0x1c2b, 0x1c2b, 0x1c2b, 0x1c40,
+ 0x1c61, 0x1c73, 0x1c88, 0x1c97, 0x1ca3, 0x1ca3, 0x1ca3, 0x1cc8,
+ 0x1cda, 0x1cf8, 0x1d0d, 0x1d0d, 0x1d0d, 0x1d1f, 0x1d1f, 0x1d1f,
+ 0x1d3d, 0x1d3d, 0x1d59, 0x1d6b, 0x1d7d, 0x1d92, 0x1d92, 0x1d92,
+ 0x1d92, 0x1da1, 0x1dc0, 0x1dc0, 0x1dcf, 0x1dee, 0x1dee, 0x1e1c,
+ // Entry 1C0 - 1FF
+ 0x1e37, 0x1e52, 0x1e64, 0x1e76, 0x1e88, 0x1eb9, 0x1ee0, 0x1ef8,
+ 0x1f16, 0x1f3a, 0x1f52, 0x1f52, 0x1f52, 0x1f52, 0x1f7d, 0x1f7d,
+ 0x1f98, 0x1f98, 0x1f98, 0x1fb0, 0x1fb0, 0x1fea, 0x1fea, 0x1fea,
+ 0x2005, 0x201a, 0x203b, 0x203b, 0x203b, 0x203b, 0x204d, 0x204d,
+ 0x204d, 0x204d, 0x206b, 0x206b, 0x2080, 0x2092, 0x20c3, 0x20c3,
+ 0x20d5, 0x20ed, 0x20ed, 0x20ed, 0x20ed, 0x2108, 0x211a, 0x211a,
+ 0x211a, 0x211a, 0x211a, 0x211a, 0x212f, 0x212f, 0x2151, 0x2151,
+ 0x2151, 0x215d, 0x215d, 0x216f, 0x216f, 0x216f, 0x218e, 0x21a7,
+ // Entry 200 - 23F
+ 0x21c3, 0x21e5, 0x21fd, 0x2215, 0x223a, 0x224c, 0x224c, 0x224c,
+ 0x225e, 0x226a, 0x2285, 0x2285, 0x2285, 0x22b6, 0x22c8, 0x22c8,
+ 0x22c8, 0x22d7, 0x22d7, 0x22e9, 0x22fb, 0x2310, 0x231c, 0x2331,
+ 0x2331, 0x234c, 0x236a, 0x236a, 0x2382, 0x23a7, 0x23c6, 0x23c6,
+ 0x23c6, 0x23c6, 0x23e7, 0x23e7, 0x23ff, 0x2411, 0x2411, 0x242c,
+ 0x242c, 0x2447, 0x2462, 0x247d, 0x2486, 0x248f, 0x248f, 0x248f,
+ 0x248f, 0x248f, 0x24a1, 0x24a1, 0x24a1, 0x24a1, 0x24b0, 0x24bc,
+ 0x24c8, 0x24c8, 0x24c8, 0x24e0, 0x24e0, 0x24e0, 0x24e9, 0x24fb,
+ // Entry 240 - 27F
+ 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x2513, 0x2537, 0x2537, 0x2549,
+ 0x2549, 0x2555, 0x25a9, 0x25b5, 0x25b5, 0x25b5, 0x25e6, 0x2618,
+ 0x264f, 0x267d, 0x26a8, 0x26cc, 0x2713, 0x2747, 0x2747, 0x2747,
+ 0x2778, 0x27a3, 0x27a3, 0x27bb, 0x27fe, 0x283b, 0x2859, 0x2887,
+ 0x28b2, 0x28e3,
+ },
+ },
+ { // os
+ "абхазагавестӕафрикаансараббагавайрагтӕтӕйрагбашкирагболгайрагбосниагката" +
+ "лайнагцӕцӕйнагчехагчувашагданиагнемыцагбердзейнаганглисагесперантои" +
+ "спайнагестойнагбаскагперсайнагфиннагфиджифарерагфранцагирландиагуир" +
+ "агхорватагвенгериагсомихагиталиагяпойнаггуырдзиагкурдаглатинагмӕчъи" +
+ "дониронпортугалиагуырыссагкитайагадыгейаграгон англисагбурятагкопта" +
+ "грагон египтагфилиппинаграгон францаграгон бердзейнагмӕхъӕлонкӕсгон" +
+ "бӕлхъӕронхъуымыхъхъаглекъагцигайнагнӕзонгӕ ӕвзагавстралиаг немыцагш" +
+ "вйецариаг немыцагавстралиаг англисагканадӕйаг англисагбритайнаг анг" +
+ "лисагамерикаг англисаглатинаг америкаг англисагевропӕйаг англисагка" +
+ "надӕйаг францагшвейцариаг францагбразилиаг португалиагевропӕйаг пол" +
+ "тугалиагӕнцонгонд китайагтрадицион китайаг",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000e, 0x001a, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x003a, 0x003a, 0x0048, 0x0048, 0x0058, 0x0068, 0x0068, 0x007a,
+ 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0088, 0x009c, 0x00ac,
+ 0x00ac, 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00c4, 0x00c4, 0x00d0,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00f2, 0x0102, 0x0114, 0x0124,
+ 0x0134, 0x0140, 0x0152, 0x0152, 0x015e, 0x0168, 0x0176, 0x0184,
+ 0x0184, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196,
+ 0x01a0, 0x01a0, 0x01a0, 0x01b0, 0x01b0, 0x01c2, 0x01d0, 0x01d0,
+ // Entry 40 - 7F
+ 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
+ 0x01de, 0x01de, 0x01ec, 0x01ec, 0x01fe, 0x01fe, 0x01fe, 0x01fe,
+ 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x020a,
+ 0x020a, 0x020a, 0x020a, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218,
+ 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0228,
+ 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228,
+ 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228,
+ 0x0228, 0x0228, 0x0228, 0x0228, 0x0230, 0x0230, 0x0230, 0x0230,
+ // Entry 80 - BF
+ 0x0230, 0x0246, 0x0246, 0x0246, 0x0246, 0x0246, 0x0256, 0x0256,
+ 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
+ 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
+ 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
+ 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
+ 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
+ 0x0256, 0x0256, 0x0256, 0x0264, 0x0264, 0x0264, 0x0264, 0x0264,
+ 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274,
+ // Entry C0 - FF
+ 0x0274, 0x0274, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
+ 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
+ 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
+ 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
+ 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f,
+ 0x028f, 0x028f, 0x028f, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
+ 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
+ 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
+ // Entry 100 - 13F
+ 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9,
+ 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9,
+ 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02c2,
+ 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02d6,
+ 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02ef, 0x02ef, 0x02ef, 0x02ef,
+ 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef,
+ 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef,
+ 0x02ef, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e,
+ // Entry 140 - 17F
+ 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e,
+ 0x030e, 0x030e, 0x030e, 0x030e, 0x031e, 0x031e, 0x031e, 0x031e,
+ 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e,
+ 0x031e, 0x031e, 0x031e, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a,
+ 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a,
+ 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x033c,
+ 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x0354,
+ 0x0354, 0x0354, 0x0354, 0x0354, 0x0354, 0x0360, 0x0360, 0x0360,
+ // Entry 180 - 1BF
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ // Entry 1C0 - 1FF
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ // Entry 200 - 23F
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0370, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ // Entry 240 - 27F
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389,
+ 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x03ac, 0x03cf,
+ 0x03f4, 0x0417, 0x043a, 0x045b, 0x048b, 0x04ae, 0x04ae, 0x04ae,
+ 0x04cf, 0x04f2, 0x04f2, 0x04f2, 0x051b, 0x0544, 0x0544, 0x0544,
+ 0x0565, 0x0586,
+ },
+ },
+ { // pa
+ paLangStr,
+ paLangIdx,
+ },
+ { // pa-Arab
+ "پنجابی",
+ []uint16{ // 126 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c,
+ },
+ },
+ { // pl
+ plLangStr,
+ plLangIdx,
+ },
+ { // prg
+ "prūsiskan",
+ []uint16{ // 469 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 100 - 13F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 140 - 17F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 180 - 1BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 1C0 - 1FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000a,
+ },
+ },
+ { // ps
+ "امهاريعربيآساميبېلاروسيبلغاريبوسنيالمانيیونانيانګلیسيحبشيباسکيفارسيفینلن" +
+ "ډيفرانسويعبريهنديارمنيایټالويجاپانیکرديلاتینيملغاسيمقدونيمغوليملایا" +
+ "هالېنډيپولنډيپښتوپورتګاليروسيسنسکریټالبانيسویډنیتاجکترکمنيتاتارازبک" +
+ "يچینيبلوڅي",
+ []uint16{ // 210 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c,
+ 0x0014, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002e, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0050, 0x0050, 0x0050, 0x0050, 0x005c, 0x006a, 0x006a, 0x006a,
+ 0x0072, 0x007c, 0x0086, 0x0086, 0x0094, 0x0094, 0x0094, 0x00a2,
+ 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2,
+ 0x00aa, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00b2, 0x00bc, 0x00bc,
+ // Entry 40 - 7F
+ 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
+ 0x00ca, 0x00ca, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6,
+ 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00f6, 0x00f6, 0x00f6, 0x0102,
+ 0x0102, 0x010c, 0x010c, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116,
+ 0x0116, 0x0116, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124,
+ 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0130,
+ // Entry 80 - BF
+ 0x0138, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0150, 0x0150,
+ 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e,
+ 0x015e, 0x015e, 0x015e, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a,
+ 0x0176, 0x0176, 0x0176, 0x0176, 0x017e, 0x017e, 0x017e, 0x018a,
+ 0x018a, 0x018a, 0x018a, 0x018a, 0x0194, 0x0194, 0x0194, 0x0194,
+ 0x0194, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e,
+ 0x019e, 0x019e, 0x019e, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ // Entry C0 - FF
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6,
+ 0x01a6, 0x01b0,
+ },
+ },
+ { // pt
+ ptLangStr,
+ ptLangIdx,
+ },
+ { // pt-PT
+ ptPTLangStr,
+ ptPTLangIdx,
+ },
+ { // qu
+ "Afrikaans SimiAmarico SimiArabe SimiAsames SimiAzerbaiyano SimiBaskir Si" +
+ "miBielorruso SimiBulgaro SimiBangla SimiTibetano SimiBreton SimiBosn" +
+ "io SimiCatalan SimiCorso SimiCheco SimiGales SimiDanes SimiAleman Si" +
+ "miDivehi SimiGriego SimiIngles SimiEspañol SimiEstonio SimiEuskera S" +
+ "imiPersa SimiFulah SimiFines SimiFeroes SimiFrances SimiFrison SimiI" +
+ "rlandes SimiGaelico Escoces SimiGallego SimiGujarati SimiHausa SimiH" +
+ "ebreo SimiHindi SimiCroata SimiHaitiano Criollo SimiHungaro SimiArme" +
+ "nio SimiIndonesio SimiIgbo SimiYi SimiIslandes SimiItaliano SimiInuk" +
+ "titut SimiJapones SimiGeorgiano SimiKazajo SimiGroenlandes SimiKhmer" +
+ " SimiKannada SimiCoreano SimiKirghiz SimiLuxemburgues SimiLao SimiLi" +
+ "tuano SimiLeton SimiMaori SimiMacedonio SimiMalayalam SimiMongol Sim" +
+ "iMarathi SimiMalayo SimiMaltes SimiNepali SimiNeerlandes SimiNoruego" +
+ " SimiOccitano SimiOdia SimiPunyabi SimiPolaco SimiPashto SimiPortugu" +
+ "es SimiRunasimiRomanche SimiRumano SimiRuso SimiKinyarwanda SimiSans" +
+ "crito SimiSindhi SimiChincha Sami SimiCingales SimiEslovaco SimiEslo" +
+ "veno SimiAlbanes SimiSerbio SimiSueco SimiSuajili SimiTamil SimiTelu" +
+ "gu SimiTayiko SimiTailandes SimiTigriña SimiTurcomano SimiSetsuana S" +
+ "imiTurco SimiTartaro SimiUigur SimiUcraniano SimiUrdu SimiUzbeko Sim" +
+ "iVietnamita SimiWolof SimiIsixhosa SimiYoruba SimiChino SimiIsizulu " +
+ "SimiMapuche SimiCheroqui SimiChawpi Kurdo SimiBajo Sorbio SimiFilipi" +
+ "no SimiAlsaciano SimiHmong Daw SimiAlto Sorbio SimiKonkani SimiMohaw" +
+ "k SimiSesotho Sa Leboa SimiPapiamento SimiKʼicheʼ SimiSakha SimiQull" +
+ "a Sami SimiSami Lule SimiSami Inari SimiSami Skolt SimiSiriaco Simi",
+ []uint16{ // 527 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x001a, 0x001a,
+ 0x0024, 0x002f, 0x002f, 0x002f, 0x003f, 0x004a, 0x0059, 0x0065,
+ 0x0065, 0x0065, 0x0070, 0x007d, 0x0088, 0x0093, 0x009f, 0x009f,
+ 0x009f, 0x00a9, 0x00a9, 0x00b3, 0x00b3, 0x00b3, 0x00bd, 0x00c7,
+ 0x00d2, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f3, 0x00f3, 0x0100,
+ 0x010c, 0x0118, 0x0122, 0x012c, 0x0136, 0x0136, 0x0141, 0x014d,
+ 0x0158, 0x0165, 0x0179, 0x0185, 0x0185, 0x0192, 0x0192, 0x019c,
+ 0x01a7, 0x01b1, 0x01b1, 0x01bc, 0x01d1, 0x01dd, 0x01e9, 0x01e9,
+ // Entry 40 - 7F
+ 0x01e9, 0x01f7, 0x01f7, 0x0200, 0x0207, 0x0207, 0x0207, 0x0214,
+ 0x0221, 0x022f, 0x023b, 0x023b, 0x0249, 0x0249, 0x0249, 0x0249,
+ 0x0254, 0x0264, 0x026e, 0x027a, 0x0286, 0x0286, 0x0286, 0x0286,
+ 0x0286, 0x0286, 0x0292, 0x0292, 0x02a3, 0x02a3, 0x02a3, 0x02a3,
+ 0x02ab, 0x02b7, 0x02b7, 0x02c1, 0x02c1, 0x02c1, 0x02cb, 0x02d9,
+ 0x02e7, 0x02f2, 0x02fe, 0x0309, 0x0314, 0x0314, 0x0314, 0x0314,
+ 0x031f, 0x031f, 0x032e, 0x032e, 0x033a, 0x033a, 0x033a, 0x033a,
+ 0x0347, 0x0347, 0x0347, 0x0350, 0x0350, 0x035c, 0x035c, 0x0367,
+ // Entry 80 - BF
+ 0x0372, 0x0380, 0x0388, 0x0395, 0x0395, 0x03a0, 0x03a9, 0x03b9,
+ 0x03c7, 0x03c7, 0x03d2, 0x03e3, 0x03e3, 0x03f0, 0x03fd, 0x040a,
+ 0x040a, 0x040a, 0x040a, 0x0416, 0x0421, 0x0421, 0x0421, 0x0421,
+ 0x042b, 0x0437, 0x0441, 0x044c, 0x0457, 0x0465, 0x0472, 0x0480,
+ 0x048d, 0x048d, 0x0497, 0x0497, 0x04a3, 0x04a3, 0x04ad, 0x04bb,
+ 0x04c4, 0x04cf, 0x04cf, 0x04de, 0x04de, 0x04de, 0x04e8, 0x04f5,
+ 0x04f5, 0x0500, 0x0500, 0x050a, 0x0516, 0x0516, 0x0516, 0x0516,
+ 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516,
+ // Entry C0 - FF
+ 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0522, 0x0522, 0x0522,
+ 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
+ 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
+ 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
+ 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
+ 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
+ 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
+ 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x052f, 0x052f, 0x0540,
+ // Entry 100 - 13F
+ 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540,
+ 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0550, 0x0550, 0x0550,
+ 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550,
+ 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x055d,
+ 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d,
+ 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d,
+ 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d,
+ 0x055d, 0x055d, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b,
+ // Entry 140 - 17F
+ 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0579, 0x0589, 0x0589,
+ 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589,
+ 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589,
+ 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589,
+ 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589,
+ 0x0589, 0x0589, 0x0589, 0x0589, 0x0595, 0x0595, 0x0595, 0x0595,
+ 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
+ 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
+ // Entry 180 - 1BF
+ 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
+ 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
+ 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
+ 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595,
+ 0x0595, 0x0595, 0x0595, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0,
+ 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0,
+ 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0,
+ 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05b5, 0x05b5, 0x05b5,
+ // Entry 1C0 - 1FF
+ 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5,
+ 0x05b5, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4,
+ 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05d2, 0x05d2,
+ 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2,
+ 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05dc, 0x05dc, 0x05dc,
+ 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc,
+ 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc,
+ 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05eb, 0x05f9,
+ // Entry 200 - 23F
+ 0x0608, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617,
+ 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0623,
+ },
+ },
+ { // rm
+ "afarabchasianavesticafrikaansakanamaricaragonaisarabassamiavaricaymaraas" +
+ "erbeidschanicbaschkirbielorussbulgarbislamabambarabengaltibetanbreto" +
+ "nbosniaccatalantschetschenchamorrocorscreetschecslav da baselgiatsch" +
+ "uvaschkimricdanaistudestgmaledivicdzongkhaewegrecenglaisesperantospa" +
+ "gnolestonbascpersianfulahfinlandaisfidschianferraisfranzosfrisirland" +
+ "aisgaelic scotgalicianguaranigujaratimanxhaussaebraichindihiri motuc" +
+ "roathaitianungaraisarmenhererointerlinguaindonaisinterlingueigbosich" +
+ "uan yiinupiakidoislandaistalianinuktitutgiapunaisjavanaisgeorgiankon" +
+ "gokikuyukuanyamacasacgrönlandaiscambodschankannadacoreankanurikashmi" +
+ "ricurdkomicornickirghislatinluxemburgaisgandalimburgaislingalalaotli" +
+ "tuanluba-katangalettonmalagassimarschallaismaorimacedonmalayalammong" +
+ "olicmarathimalaicmaltaisbirmannaurundebele dal nordnepalaisndongaoll" +
+ "andaisnorvegiais nynorsknorvegais bokmålndebele dal sidnavajonyanjao" +
+ "ccitanojibwaoromooriyaosseticpunjabipalipolacpaschtoportugaisquechua" +
+ "rumantschrundirumenrusskinyarwandasanscritsardsindhisami dal nordsan" +
+ "gosingalaisslovacslovensamoanshonasomalialbanaisserbswazisotho dal s" +
+ "idsundanaissvedaissuahilitamiltelugutadjiktailandaistigrinyaturkment" +
+ "swanatongatirctsongatatartahitianuiguricucranaisurduusbecvendavietna" +
+ "maisvolapukvallonwolofxhosajiddicyorubazhuangchinaiszuluacehacoliand" +
+ "angmeadygaiafrihiliainuaccadicaleuticaltaic dal sidenglais veglangik" +
+ "aarameicaraucanicarapahoarawakasturianawadhibelutschibalinaisbasaabe" +
+ "dschabembabhojpuribikolbinisiksikabrajburiatbugiblincaddocaribicatsa" +
+ "mcebuanochibchatschagataicchuukaismaripatuà chinookchoctawchipewyanc" +
+ "herokeecheyennecoptictirc crimeankaschubicdakotadargwadelawareslavey" +
+ "dogribdinkadogribass sorbdualaollandais mesaundiulaefikegipzian vegl" +
+ "ekajukelamiticenglais mesaunewondofangfilippinofonfranzos mesaunfran" +
+ "zos veglfris dal nordfris da l’ostfriulangagayogbayageezgilbertaistu" +
+ "destg mesaunvegl tudestg da scrittiragondigorontalogoticgrebogrec ve" +
+ "gltudestg svizzergwichʼinhaidahawaianhiligaynonettitichmongaut sorbh" +
+ "upaibanilocanoingushlojbangiudaic-persiangiudaic-arabkarakalpakkabyl" +
+ "ekachinjjukambakawikabardictyapkorokhasikhotanaiskimbundukonkanikosr" +
+ "aeankpellekarachay-balkarcareliankurukhkumukkutenailadinolahndalamba" +
+ "lezghianlomongoloziluba-lulualuisenolundaluolushaimaduraismagahimait" +
+ "hilimakassarmandingomasaimokshamandarmendeirlandais mesaunmicmacmina" +
+ "ngkabaumanchumanipurimohawkmossiplurilingcreekmirandaismarwarierzyan" +
+ "eapolitanbass tudestgnewariniasniuenogainordic vegln’kosotho dal nor" +
+ "dnewari classicnyamwezinyankolenyoronzimaosagetirc ottomanpangasinan" +
+ "pahlavipampangapapiamentopalaupersian veglfenizianponapeanprovenzal " +
+ "veglrajasthanirapanuirarotongaromaniaromunicsandawejakutarameic sama" +
+ "ritansasaksantalisicilianscotselkupirlandais veglshansidamosami dal " +
+ "sidsami lulesami inarisami skoltsoninkesogdiansranan tongoserersukum" +
+ "asususumericsiric classicsirictemneterenotetumtigretivtokelauklingon" +
+ "ictlingittamasheqlingua tsongatok pisintsimshiantumbukatuvalutuvinia" +
+ "nudmurtugariticmbundulinguas betg determinadasvaivoticwalamowaraywas" +
+ "hokalmukyaoyapaiszapotecsimbols da Blisszenagazuninagins cuntegns li" +
+ "nguisticszazatudestg austriacenglais australianenglais canadaisengla" +
+ "is britannicenglais americanspagnol latinamericanspagnol ibericfranz" +
+ "os canadaisfranzos svizzerflamportugais brasilianportugais iberianmo" +
+ "ldavserbo-croatchinais simplifitgàchinais tradiziunal",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0027, 0x0030,
+ 0x0034, 0x003a, 0x0040, 0x0046, 0x0055, 0x005d, 0x0066, 0x006c,
+ 0x0073, 0x007a, 0x0080, 0x0087, 0x008d, 0x0094, 0x009b, 0x00a6,
+ 0x00ae, 0x00b2, 0x00b6, 0x00bc, 0x00cc, 0x00d6, 0x00dc, 0x00e2,
+ 0x00e9, 0x00f2, 0x00fa, 0x00fd, 0x0101, 0x0108, 0x0111, 0x0118,
+ 0x011d, 0x0121, 0x0128, 0x012d, 0x0137, 0x0140, 0x0147, 0x014e,
+ 0x0152, 0x015b, 0x0166, 0x016e, 0x0175, 0x017d, 0x0181, 0x0187,
+ 0x018d, 0x0192, 0x019b, 0x01a0, 0x01a7, 0x01af, 0x01b4, 0x01ba,
+ // Entry 40 - 7F
+ 0x01c5, 0x01cd, 0x01d8, 0x01dc, 0x01e6, 0x01ed, 0x01f0, 0x01f9,
+ 0x01ff, 0x0208, 0x0211, 0x0219, 0x0221, 0x0226, 0x022c, 0x0234,
+ 0x0239, 0x0245, 0x0250, 0x0257, 0x025d, 0x0263, 0x026b, 0x026f,
+ 0x0273, 0x0279, 0x0280, 0x0285, 0x0291, 0x0296, 0x02a0, 0x02a7,
+ 0x02ab, 0x02b1, 0x02bd, 0x02c3, 0x02cc, 0x02d8, 0x02dd, 0x02e4,
+ 0x02ed, 0x02f5, 0x02fc, 0x0302, 0x0309, 0x030f, 0x0314, 0x0324,
+ 0x032c, 0x0332, 0x033b, 0x034d, 0x035e, 0x036d, 0x0373, 0x0379,
+ 0x0380, 0x0386, 0x038b, 0x0390, 0x0397, 0x039e, 0x03a2, 0x03a7,
+ // Entry 80 - BF
+ 0x03ae, 0x03b7, 0x03be, 0x03c7, 0x03cc, 0x03d1, 0x03d5, 0x03e0,
+ 0x03e8, 0x03ec, 0x03f2, 0x03ff, 0x0404, 0x040d, 0x0413, 0x0419,
+ 0x041f, 0x0424, 0x042a, 0x0432, 0x0436, 0x043b, 0x0448, 0x0451,
+ 0x0458, 0x045f, 0x0464, 0x046a, 0x0470, 0x047a, 0x0482, 0x0489,
+ 0x048f, 0x0494, 0x0498, 0x049e, 0x04a3, 0x04ab, 0x04b2, 0x04ba,
+ 0x04be, 0x04c3, 0x04c8, 0x04d2, 0x04d9, 0x04df, 0x04e4, 0x04e9,
+ 0x04ef, 0x04f5, 0x04fb, 0x0502, 0x0506, 0x050a, 0x050f, 0x0517,
+ 0x051d, 0x051d, 0x0525, 0x0525, 0x0529, 0x0530, 0x0530, 0x0537,
+ // Entry C0 - FF
+ 0x0537, 0x0545, 0x0551, 0x0557, 0x055e, 0x0567, 0x0567, 0x056e,
+ 0x056e, 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, 0x057c, 0x057c,
+ 0x0582, 0x058b, 0x0593, 0x0593, 0x0598, 0x0598, 0x0598, 0x0598,
+ 0x059f, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05ac,
+ 0x05b1, 0x05b5, 0x05b5, 0x05b5, 0x05bc, 0x05bc, 0x05bc, 0x05c0,
+ 0x05c0, 0x05c0, 0x05c0, 0x05c6, 0x05ca, 0x05ca, 0x05ce, 0x05ce,
+ 0x05d3, 0x05da, 0x05da, 0x05df, 0x05e6, 0x05e6, 0x05ed, 0x05f8,
+ 0x0600, 0x0604, 0x0612, 0x0619, 0x0622, 0x062a, 0x0632, 0x0632,
+ // Entry 100 - 13F
+ 0x0638, 0x0638, 0x0644, 0x064d, 0x0653, 0x0659, 0x0659, 0x0661,
+ 0x0667, 0x066d, 0x0672, 0x0672, 0x0677, 0x0680, 0x0680, 0x0685,
+ 0x0695, 0x0695, 0x069a, 0x069a, 0x069a, 0x069e, 0x069e, 0x06ab,
+ 0x06b1, 0x06b9, 0x06c7, 0x06c7, 0x06cd, 0x06cd, 0x06d1, 0x06da,
+ 0x06da, 0x06dd, 0x06dd, 0x06eb, 0x06f7, 0x06f7, 0x0704, 0x0713,
+ 0x071a, 0x071c, 0x071c, 0x071c, 0x0720, 0x0725, 0x0725, 0x0729,
+ 0x0733, 0x0733, 0x0741, 0x075a, 0x075a, 0x075f, 0x0768, 0x076d,
+ 0x0772, 0x077b, 0x078a, 0x078a, 0x078a, 0x078a, 0x0793, 0x0798,
+ // Entry 140 - 17F
+ 0x0798, 0x079f, 0x079f, 0x07a9, 0x07b0, 0x07b5, 0x07bd, 0x07bd,
+ 0x07c1, 0x07c5, 0x07c5, 0x07cc, 0x07d2, 0x07d2, 0x07d2, 0x07d8,
+ 0x07d8, 0x07d8, 0x07e7, 0x07f3, 0x07f3, 0x07fd, 0x0803, 0x0809,
+ 0x080c, 0x0811, 0x0815, 0x081d, 0x081d, 0x0821, 0x0821, 0x0821,
+ 0x0821, 0x0825, 0x0825, 0x082a, 0x0833, 0x0833, 0x0833, 0x0833,
+ 0x0833, 0x0833, 0x083b, 0x083b, 0x0842, 0x084a, 0x0850, 0x085f,
+ 0x085f, 0x085f, 0x0867, 0x086d, 0x086d, 0x086d, 0x086d, 0x0872,
+ 0x0879, 0x087f, 0x087f, 0x0885, 0x088a, 0x0892, 0x0892, 0x0892,
+ // Entry 180 - 1BF
+ 0x0892, 0x0892, 0x0892, 0x0899, 0x089d, 0x089d, 0x089d, 0x08a7,
+ 0x08ae, 0x08b3, 0x08b6, 0x08bc, 0x08bc, 0x08bc, 0x08bc, 0x08c4,
+ 0x08c4, 0x08ca, 0x08d2, 0x08da, 0x08e2, 0x08e7, 0x08e7, 0x08ed,
+ 0x08f3, 0x08f8, 0x08f8, 0x08f8, 0x0908, 0x0908, 0x0908, 0x090e,
+ 0x0919, 0x091f, 0x0927, 0x092d, 0x0932, 0x0932, 0x0932, 0x093b,
+ 0x0940, 0x0949, 0x0950, 0x0950, 0x0950, 0x0955, 0x0955, 0x0955,
+ 0x095f, 0x095f, 0x096b, 0x0971, 0x0975, 0x0979, 0x0979, 0x0979,
+ 0x0979, 0x097e, 0x0989, 0x0989, 0x098f, 0x099d, 0x099d, 0x09ab,
+ // Entry 1C0 - 1FF
+ 0x09b3, 0x09bb, 0x09c0, 0x09c5, 0x09ca, 0x09d6, 0x09e0, 0x09e7,
+ 0x09ef, 0x09f9, 0x09fe, 0x09fe, 0x09fe, 0x09fe, 0x0a0a, 0x0a0a,
+ 0x0a12, 0x0a12, 0x0a12, 0x0a1a, 0x0a1a, 0x0a28, 0x0a28, 0x0a28,
+ 0x0a32, 0x0a39, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a48, 0x0a48,
+ 0x0a48, 0x0a48, 0x0a50, 0x0a50, 0x0a57, 0x0a5c, 0x0a6d, 0x0a6d,
+ 0x0a72, 0x0a79, 0x0a79, 0x0a79, 0x0a79, 0x0a81, 0x0a85, 0x0a85,
+ 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a8b, 0x0a8b, 0x0a99, 0x0a99,
+ 0x0a99, 0x0a9d, 0x0a9d, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aaf, 0x0ab8,
+ // Entry 200 - 23F
+ 0x0ac2, 0x0acc, 0x0ad3, 0x0ada, 0x0ae6, 0x0aeb, 0x0aeb, 0x0aeb,
+ 0x0af1, 0x0af5, 0x0afc, 0x0afc, 0x0afc, 0x0b09, 0x0b0e, 0x0b0e,
+ 0x0b0e, 0x0b13, 0x0b13, 0x0b19, 0x0b1e, 0x0b23, 0x0b26, 0x0b2d,
+ 0x0b2d, 0x0b36, 0x0b3d, 0x0b3d, 0x0b45, 0x0b52, 0x0b5b, 0x0b5b,
+ 0x0b5b, 0x0b5b, 0x0b64, 0x0b64, 0x0b6b, 0x0b71, 0x0b71, 0x0b79,
+ 0x0b79, 0x0b7f, 0x0b87, 0x0b8d, 0x0ba6, 0x0ba9, 0x0ba9, 0x0ba9,
+ 0x0ba9, 0x0ba9, 0x0bae, 0x0bae, 0x0bae, 0x0bae, 0x0bb4, 0x0bb9,
+ 0x0bbe, 0x0bbe, 0x0bbe, 0x0bc4, 0x0bc4, 0x0bc4, 0x0bc7, 0x0bcd,
+ // Entry 240 - 27F
+ 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bd4, 0x0be4, 0x0be4, 0x0bea,
+ 0x0bea, 0x0bee, 0x0c09, 0x0c0d, 0x0c0d, 0x0c0d, 0x0c1d, 0x0c1d,
+ 0x0c2f, 0x0c3f, 0x0c50, 0x0c60, 0x0c75, 0x0c83, 0x0c83, 0x0c83,
+ 0x0c93, 0x0ca2, 0x0ca2, 0x0ca6, 0x0cb9, 0x0cca, 0x0cd0, 0x0cdb,
+ 0x0cef, 0x0d02,
+ },
+ },
+ { // rn
+ "IgikaniIkimuharikiIcarabuIkibelarusiyaIkinyabuligariyaIkibengaliIgicekeI" +
+ "kidageIkigerekiIcongerezaIcesipanyoloIgiperisiIgifaransaIgihawusaIgi" +
+ "hindiIkinyahongiriyaIkinyendoziyaIkiguboIgitaliyaniIkiyapaniIkinyeja" +
+ "vaIgikambodiyaIkinyakoreyaIkinyamaleziyaIkinyabirimaniyaIkinepaliIgi" +
+ "holandiIgipunjabiIkinyapolonyeIgiporutugariIkirundiIkinyarumaniyaIki" +
+ "rusiyaIkinyarwandaIgisomaliIgisuweduwaIgitamiliIkinyatayilandiIgitur" +
+ "ukiyaIkinyayukereniInyeyuruduIkinyaviyetinamuIkiyorubaIgishinwaIkizu" +
+ "lu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0012, 0x0012,
+ 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0026, 0x0036,
+ 0x0036, 0x0036, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x0061, 0x0061, 0x006d,
+ 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089,
+ 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x00a0, 0x00a0, 0x00a0,
+ // Entry 40 - 7F
+ 0x00a0, 0x00ad, 0x00ad, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00bf, 0x00bf, 0x00c8, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2,
+ 0x00d2, 0x00d2, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ 0x00ea, 0x00ea, 0x00ea, 0x00f8, 0x00f8, 0x0108, 0x0108, 0x0108,
+ 0x0111, 0x0111, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x0125, 0x0125, 0x0132,
+ // Entry 80 - BF
+ 0x0132, 0x013f, 0x013f, 0x013f, 0x0147, 0x0155, 0x015e, 0x016a,
+ 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a,
+ 0x016a, 0x016a, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173,
+ 0x017e, 0x017e, 0x0187, 0x0187, 0x0187, 0x0196, 0x0196, 0x0196,
+ 0x0196, 0x0196, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01af,
+ 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01c9,
+ 0x01c9, 0x01d2, 0x01d2, 0x01db, 0x01e2,
+ },
+ },
+ { // ro
+ roLangStr,
+ roLangIdx,
+ },
+ { // rof
+ "KiakaniKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigi" +
+ "rikiKiingerezaKihispaniaKiajemiKyifaransaKihausaKihindiKihungariKiin" +
+ "donesiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKibur" +
+ "maKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwand" +
+ "aKisomaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuK" +
+ "iyorubaKichinaKizuluKihorombo",
+ []uint16{ // 478 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f,
+ 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a,
+ 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0056, 0x0056, 0x0060,
+ 0x0060, 0x0060, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0078,
+ 0x0078, 0x007f, 0x007f, 0x007f, 0x007f, 0x0088, 0x0088, 0x0088,
+ // Entry 40 - 7F
+ 0x0088, 0x0093, 0x0093, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099,
+ 0x00a3, 0x00a3, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
+ 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
+ 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
+ 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
+ 0x00c2, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00d2, 0x00d2, 0x00d2,
+ 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3,
+ 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f5,
+ // Entry 80 - BF
+ 0x00f5, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x0104, 0x010a, 0x0115,
+ 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
+ 0x0115, 0x0115, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d,
+ 0x0124, 0x0124, 0x012b, 0x012b, 0x012b, 0x0135, 0x0135, 0x0135,
+ 0x0135, 0x0135, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x0146,
+ 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157,
+ 0x0157, 0x015f, 0x015f, 0x0166, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ // Entry C0 - FF
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ // Entry 100 - 13F
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ // Entry 140 - 17F
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ // Entry 180 - 1BF
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ // Entry 1C0 - 1FF
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0175,
+ },
+ },
+ { // ru
+ ruLangStr,
+ ruLangIdx,
+ },
+ { // rw
+ "IkinyafurikaneriInyetuwiInyamuharikiIcyarabuIcyasamiziInyazeribayijaniIk" +
+ "ibelarusiyaUrunyabuligariyaIkibengaliInyebiritoniInyebosiniyaIgikata" +
+ "laniIgicekeIkigaluwaIkidaninwaIkidageIkigerekiIcyongerezaIcyesiperan" +
+ "toIcyesipanyoloIcyesitoniyaIkibasikiInyeperisiIgifinilandeInyefaroyi" +
+ "ziIgifaransaIgifiriziyaniIkirilandiIkigaluwa cy’IgisweduwaIkigalisiy" +
+ "aInyaguwaraniInyegujaratiIgiheburayoIgihindiIgikorowasiyaIgihongiriy" +
+ "aIkinyarumeniyaUrurimi GahuzamiryangoIkinyendoziyaUruhuzandimiIgisil" +
+ "andeIgitaliyaniIkiyapaniInyejavaInyejeworujiyaIgikambodiyaIgikanadaI" +
+ "gikoreyaInyekuridishiInkerigiziIkilatiniIlingalaIkilawotiyaniIkilitu" +
+ "waniyaIkinyaletoviyaniIkimasedoniyaniIkimalayalamiIkimongoliIkimarat" +
+ "iIkimalayiIkimalitezeIkinepaliIkinerilandeInyenoruveji (Nyonorusiki)" +
+ "IkinoruvejiInyogusitaniInyoriyaIgipunjabiIgipoloneImpashitoIgiporutu" +
+ "galiIkinyarumaniyaIkirusiyaKinyarwandaIgisansikiriIgisindiInyesimpal" +
+ "ezeIgisilovakiIkinyasiloveniyaIgisomaliIcyalubaniyaIgiseribeInyeseso" +
+ "toInyesudaniIgisuweduwaIgiswahiliIgitamiliIgiteluguIgitayiInyatigiri" +
+ "nyaInyeturukimeniIgiturukiyaIkiwiguriIkinyayukereniInyeyuruduInyeyuz" +
+ "ubekiIkinyaviyetinamuInyehawusaInyeyidishiInyezuluIkinyafilipineInye" +
+ "kilingoniInyeporutigali (Brezili)Inyeporutigali (Igiporutigali)Inyes" +
+ "eribiya na Korowasiya",
+ []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0018, 0x0024, 0x0024,
+ 0x002c, 0x0036, 0x0036, 0x0036, 0x0046, 0x0046, 0x0053, 0x0063,
+ 0x0063, 0x0063, 0x006d, 0x006d, 0x0079, 0x0085, 0x0090, 0x0090,
+ 0x0090, 0x0090, 0x0090, 0x0097, 0x0097, 0x0097, 0x00a0, 0x00aa,
+ 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00ba, 0x00c5, 0x00d2, 0x00df,
+ 0x00eb, 0x00f4, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x0116, 0x0120,
+ 0x012d, 0x0137, 0x0150, 0x015b, 0x0167, 0x0173, 0x0173, 0x0173,
+ 0x017e, 0x0186, 0x0186, 0x0193, 0x0193, 0x019f, 0x01ad, 0x01ad,
+ // Entry 40 - 7F
+ 0x01c3, 0x01d0, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01e6,
+ 0x01f1, 0x01f1, 0x01fa, 0x0202, 0x0210, 0x0210, 0x0210, 0x0210,
+ 0x0210, 0x0210, 0x021c, 0x0225, 0x022e, 0x022e, 0x022e, 0x023b,
+ 0x023b, 0x023b, 0x0245, 0x024e, 0x024e, 0x024e, 0x024e, 0x0256,
+ 0x0263, 0x0270, 0x0270, 0x0280, 0x0280, 0x0280, 0x0280, 0x028f,
+ 0x029c, 0x02a6, 0x02af, 0x02b8, 0x02c3, 0x02c3, 0x02c3, 0x02c3,
+ 0x02cc, 0x02cc, 0x02d8, 0x02f2, 0x02fd, 0x02fd, 0x02fd, 0x02fd,
+ 0x0309, 0x0309, 0x0309, 0x0311, 0x0311, 0x031b, 0x031b, 0x0324,
+ // Entry 80 - BF
+ 0x032d, 0x033a, 0x033a, 0x033a, 0x033a, 0x0348, 0x0351, 0x035c,
+ 0x0368, 0x0368, 0x0370, 0x0370, 0x0370, 0x037d, 0x0388, 0x0398,
+ 0x0398, 0x0398, 0x03a1, 0x03ad, 0x03b6, 0x03b6, 0x03c0, 0x03ca,
+ 0x03d5, 0x03df, 0x03e8, 0x03f1, 0x03f1, 0x03f8, 0x0405, 0x0413,
+ 0x0413, 0x0413, 0x041e, 0x041e, 0x041e, 0x041e, 0x0427, 0x0435,
+ 0x043f, 0x044b, 0x044b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0465,
+ 0x0470, 0x0470, 0x0470, 0x0470, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ // Entry C0 - FF
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ // Entry 100 - 13F
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478,
+ 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0478, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ // Entry 140 - 17F
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ // Entry 180 - 1BF
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ // Entry 1C0 - 1FF
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ // Entry 200 - 23F
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486,
+ 0x0486, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
+ 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
+ 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
+ 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
+ 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
+ // Entry 240 - 27F
+ 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
+ 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
+ 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493, 0x0493,
+ 0x0493, 0x0493, 0x0493, 0x0493, 0x04ab, 0x04c9, 0x04c9, 0x04e3,
+ },
+ },
+ { // rwk
+ "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" +
+ "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" +
+ "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" +
+ "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" +
+ "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" +
+ "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKir" +
+ "uwa",
+ []uint16{ // 484 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011,
+ 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030,
+ 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b,
+ 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d,
+ 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085,
+ 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097,
+ // Entry 40 - 7F
+ 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
+ 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea,
+ 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd,
+ 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111,
+ // Entry 80 - BF
+ 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135,
+ 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135,
+ 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
+ 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
+ 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry C0 - FF
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 100 - 13F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 140 - 17F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 180 - 1BF
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 1C0 - 1FF
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x019f,
+ },
+ },
+ { // sah
+ "АбхаастыыАппырыкааныстыыАраабтыыАдьырбайдьаанныыБөлөрүүстүүБулҕаардыыБен" +
+ "галлыыТибиэттииБосныйалыыКаталаанныыЧиэскэйдииДаатскайдыыНиэмэстииГ" +
+ "ириэктииАҥылычаанныыЫспаанныыЭстиэнийэлииПиэрсийэлииПииннииПырансуу" +
+ "стууБэҥгиэрдииЭрмээннииЫтаалыйалыыДьоппуоннууГурусууннууХаһаахтыыКэ" +
+ "риэйдииКыргыстыыЛатыынныыМоҕуоллууНьыпааллыыПандьаабтыыПортугааллыы" +
+ "РумыынныыНууччалыыСловаактыыАлбаанскайдыыТамыллыыТөлүгүлүүТадьыыкты" +
+ "ыУйгуурдууУкрайыыньыстыыҮзбиэктииКытайдыыЗуулулууПилипиинниисаха ты" +
+ "ла",
+ []uint16{ // 486 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0012, 0x0012, 0x0030, 0x0030, 0x0030, 0x0030,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0060, 0x0060, 0x0076, 0x008a,
+ 0x008a, 0x008a, 0x009c, 0x00ae, 0x00ae, 0x00c2, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x0102,
+ 0x0114, 0x0114, 0x0114, 0x0114, 0x0126, 0x013e, 0x013e, 0x0150,
+ 0x0168, 0x0168, 0x017e, 0x017e, 0x018c, 0x018c, 0x018c, 0x01a4,
+ 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
+ 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01b8, 0x01ca, 0x01ca,
+ // Entry 40 - 7F
+ 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca,
+ 0x01e0, 0x01e0, 0x01f6, 0x01f6, 0x020c, 0x020c, 0x020c, 0x020c,
+ 0x021e, 0x021e, 0x021e, 0x021e, 0x0230, 0x0230, 0x0230, 0x0230,
+ 0x0230, 0x0230, 0x0242, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,
+ 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,
+ 0x0254, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266,
+ 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a,
+ 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x0290, 0x0290, 0x0290,
+ // Entry 80 - BF
+ 0x0290, 0x02a8, 0x02a8, 0x02a8, 0x02a8, 0x02ba, 0x02cc, 0x02cc,
+ 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02e0, 0x02e0,
+ 0x02e0, 0x02e0, 0x02e0, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa,
+ 0x02fa, 0x02fa, 0x030a, 0x031c, 0x0330, 0x0330, 0x0330, 0x0330,
+ 0x0330, 0x0330, 0x0330, 0x0330, 0x0330, 0x0330, 0x0342, 0x035e,
+ 0x035e, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370,
+ 0x0370, 0x0370, 0x0370, 0x0380, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ // Entry C0 - FF
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ // Entry 100 - 13F
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390,
+ 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ // Entry 140 - 17F
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ // Entry 180 - 1BF
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ // Entry 1C0 - 1FF
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6,
+ 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03a6, 0x03b7,
+ },
+ },
+ { // saq
+ "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
+ "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
+ "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
+ "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
+ "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
+ "rubaKichinaKizuluKisampur",
+ []uint16{ // 488 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
+ 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
+ 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
+ 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
+ // Entry 40 - 7F
+ 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
+ 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
+ // Entry 80 - BF
+ 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
+ 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
+ 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
+ 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry C0 - FF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 100 - 13F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 140 - 17F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 180 - 1BF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 1C0 - 1FF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0171,
+ },
+ },
+ { // sbp
+ "IshiyakaniIshiyamuhaliIshiyalabuIshibelalusiIshibulugaliaIshibangilaIshi" +
+ "shekiIshijelumaniIshigilikiIshingelesaIshihisipaniyaIshiajemiIshifal" +
+ "ansaIshihawusaIshihindiIshihungaliIshihindonesiaIshihigiboIshihitali" +
+ "yanoIshijapaniIshijavaIshikambodiaIshikoleyaIshimalesiyaIshibulumaIs" +
+ "hinepaliIshiholansiIshipunjabiIshipolandiIshilenoIshilomaniyaIshilus" +
+ "iIshinyalwandaIshisomaliIshiswidiIshitamiliIshitayilandiIshitulukiIs" +
+ "hiyukilaniyaIshiwuludiIshivietinamuIshiyolubaIshishinaIshisuluIshisa" +
+ "ngu",
+ []uint16{ // 493 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002c, 0x0039,
+ 0x0039, 0x0039, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
+ 0x0059, 0x0059, 0x0059, 0x0059, 0x0063, 0x006e, 0x006e, 0x007c,
+ 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x0090,
+ 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009a,
+ 0x009a, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00ae, 0x00ae, 0x00ae,
+ // Entry 40 - 7F
+ 0x00ae, 0x00bc, 0x00bc, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00d4, 0x00d4, 0x00de, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
+ 0x00e6, 0x00e6, 0x00f2, 0x00f2, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
+ 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
+ 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
+ 0x00fc, 0x00fc, 0x00fc, 0x0108, 0x0108, 0x0112, 0x0112, 0x0112,
+ 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
+ 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0132, 0x0132, 0x013d,
+ // Entry 80 - BF
+ 0x013d, 0x0145, 0x0145, 0x0145, 0x0145, 0x0151, 0x0159, 0x0166,
+ 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166,
+ 0x0166, 0x0166, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170,
+ 0x0179, 0x0179, 0x0183, 0x0183, 0x0183, 0x0190, 0x0190, 0x0190,
+ 0x0190, 0x0190, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a8,
+ 0x01b2, 0x01b2, 0x01b2, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf,
+ 0x01bf, 0x01c9, 0x01c9, 0x01d2, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ // Entry C0 - FF
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ // Entry 100 - 13F
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ // Entry 140 - 17F
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ // Entry 180 - 1BF
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ // Entry 1C0 - 1FF
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da,
+ 0x01da, 0x01da, 0x01da, 0x01da, 0x01e3,
+ },
+ },
+ { // se
+ "afrikánsagiellaaragoniagiellaarábagiellavilges-ruoššagiellabulgáriagiell" +
+ "abengalgiellatibetagiellabretonagiellabosniagiellakatalánagiellacors" +
+ "icagiellačeahkagiellakymragielladánskkagielladuiskkagielladivehigiel" +
+ "ladzongkhagiellagreikkagiellaeaŋgalsgiellaspánskkagiellaesttegiellap" +
+ "ersijagiellasuomagiellafidjigiellafearagiellafránskkagiellaoarjifrii" +
+ "sagiellaiirragiellagujaratagiellamanksgiellahaussagiellahindigiellak" +
+ "roátiagiellahaitigiellaungárgiellaarmeenagiellaindonesiagiellaislánd" +
+ "dagiellaitáliagiellajapánagiellajavagiellageorgiagiellakazakgiellaka" +
+ "mbodiagiellakoreagiellakurdigiellakomigiellakornagiellaláhtengiellal" +
+ "uxemburggagiellalaogiellaliettuvagiellalátviagiellamaorigiellamakedo" +
+ "niagiellamongoliagiellamaltagiellaburmagiellanepaligiellahollánddagi" +
+ "ellaođđadárogiellagirjedárogiellaoksitánagiellapanjabigiellapolskkag" +
+ "iellaportugálagiellaromanšgiellaromániagiellaruoššagiellasardigiella" +
+ "davvisámegiellaslovákiagiellaslovenagiellasamoagiellaalbánagiellaser" +
+ "biagiellaruoŧagiellaŧaigielladurkagiellatahitigiellaukrainagiellaurd" +
+ "ugiellavietnamgiellavallonagiellakiinnágiellaacehgiellaboares eaŋgal" +
+ "asgiellaasturiagiellamarigiellafilippiinnagiellahawaiigiellagárjilgi" +
+ "ellamokšagiellaersagiellasisiliagiellaselkupagiellalullisámegiellaju" +
+ "levsámegiellaanárašgiellanuortalašgiellashimaorigiellaudmurtagiellad" +
+ "ovdameahttun giellakantongiellaserbokroatiagiellaálki kiinágiellaárb" +
+ "evirolaš kiinnágiella",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x001e,
+ 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x003f, 0x004e,
+ 0x004e, 0x004e, 0x005a, 0x0066, 0x0073, 0x007f, 0x008e, 0x008e,
+ 0x008e, 0x009b, 0x009b, 0x00a8, 0x00a8, 0x00a8, 0x00b3, 0x00c1,
+ 0x00ce, 0x00da, 0x00e8, 0x00e8, 0x00f5, 0x0103, 0x0103, 0x0112,
+ 0x011d, 0x011d, 0x012a, 0x012a, 0x0135, 0x0140, 0x014b, 0x015a,
+ 0x016b, 0x0176, 0x0176, 0x0176, 0x0176, 0x0184, 0x018f, 0x019b,
+ 0x019b, 0x01a6, 0x01a6, 0x01b4, 0x01bf, 0x01cb, 0x01d8, 0x01d8,
+ // Entry 40 - 7F
+ 0x01d8, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01f6,
+ 0x0203, 0x0203, 0x0210, 0x021a, 0x0227, 0x0227, 0x0227, 0x0227,
+ 0x0232, 0x0232, 0x0240, 0x0240, 0x024b, 0x024b, 0x024b, 0x0256,
+ 0x0260, 0x026b, 0x026b, 0x0278, 0x0289, 0x0289, 0x0289, 0x0289,
+ 0x0292, 0x02a0, 0x02a0, 0x02ad, 0x02ad, 0x02ad, 0x02b8, 0x02c7,
+ 0x02c7, 0x02d5, 0x02d5, 0x02d5, 0x02e0, 0x02eb, 0x02eb, 0x02eb,
+ 0x02f7, 0x02f7, 0x0307, 0x0318, 0x0328, 0x0328, 0x0328, 0x0328,
+ 0x0337, 0x0337, 0x0337, 0x0337, 0x0337, 0x0344, 0x0344, 0x0351,
+ // Entry 80 - BF
+ 0x0351, 0x0361, 0x0361, 0x036e, 0x036e, 0x037c, 0x038a, 0x038a,
+ 0x038a, 0x0395, 0x0395, 0x03a5, 0x03a5, 0x03a5, 0x03b4, 0x03c1,
+ 0x03cc, 0x03cc, 0x03cc, 0x03d9, 0x03e5, 0x03e5, 0x03e5, 0x03e5,
+ 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03fb, 0x03fb, 0x03fb,
+ 0x03fb, 0x03fb, 0x0406, 0x0406, 0x0406, 0x0412, 0x0412, 0x041f,
+ 0x0429, 0x0429, 0x0429, 0x0436, 0x0436, 0x0443, 0x0443, 0x0443,
+ 0x0443, 0x0443, 0x0443, 0x0450, 0x0450, 0x045a, 0x045a, 0x045a,
+ 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a,
+ // Entry C0 - FF
+ 0x045a, 0x045a, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470,
+ 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x047d, 0x047d,
+ 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
+ 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
+ 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
+ 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
+ 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d,
+ 0x047d, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487,
+ // Entry 100 - 13F
+ 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487,
+ 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487,
+ 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487,
+ 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0498,
+ 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498,
+ 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498,
+ 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498,
+ 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498,
+ // Entry 140 - 17F
+ 0x0498, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
+ 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
+ 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
+ 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
+ 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
+ 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4,
+ 0x04a4, 0x04a4, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1,
+ 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1,
+ // Entry 180 - 1BF
+ 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1,
+ 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1,
+ 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04bd,
+ 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd,
+ 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd,
+ 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04c7, 0x04c7, 0x04c7,
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
+ // Entry 1C0 - 1FF
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04d4, 0x04d4, 0x04d4,
+ 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04e1, 0x04e1, 0x04e1, 0x04e1,
+ 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04f1, 0x0501,
+ // Entry 200 - 23F
+ 0x050f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f,
+ 0x051f, 0x051f, 0x051f, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d,
+ 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d,
+ 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d,
+ 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d,
+ 0x052d, 0x053a, 0x053a, 0x053a, 0x054e, 0x054e, 0x054e, 0x054e,
+ 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e,
+ 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e,
+ // Entry 240 - 27F
+ 0x054e, 0x054e, 0x054e, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a,
+ 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a,
+ 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a,
+ 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x056c,
+ 0x057e, 0x0599,
+ },
+ },
+ { // se-FI
+ "vilgesruoššagiellabengalagiellafižigiellaarmenagiellakazakhgiellakamboža" +
+ "giellanepalagiellapanjabagiellathaigiellavietnamagiellaačehgiellakom" +
+ "oragiellastandárda arábagiellanuortariikkalaš duiskkagiellašveicalaš" +
+ " duiskkagiellaaustrálialaš eaŋgalsgiellakanádalaš eaŋgalsgiellabriht" +
+ "talaš eaŋgalsgiellaamerihkálaš eaŋgalsgiellalatiinna-amerihkalaš spá" +
+ "nskkagiellaespánjalaš spánskkagiellameksikolaš spánskkagiellakanádal" +
+ "aš fránskkagiellašveicalaš fránskkagiellabelgialaš hollánddagiellabr" +
+ "asilialaš portugálagiellaportugálalaš portugálagiellamoldávialaš rom" +
+ "ániagiellaálkes kiinnágiella",
+ []uint16{ // 609 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014,
+ 0x0014, 0x0014, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
+ 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
+ 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
+ 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0038, 0x0038,
+ // Entry 40 - 7F
+ 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e,
+ 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x006b, 0x006b, 0x006b,
+ // Entry 80 - BF
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083,
+ 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ // Entry C0 - FF
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ // Entry 100 - 13F
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ // Entry 140 - 17F
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ // Entry 180 - 1BF
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ // Entry 1C0 - 1FF
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ // Entry 200 - 23F
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ // Entry 240 - 27F
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x00b1, 0x00b1, 0x00cf, 0x00e8,
+ 0x0105, 0x011f, 0x0139, 0x0155, 0x017a, 0x0196, 0x01b1, 0x01b1,
+ 0x01cc, 0x01e7, 0x01e7, 0x0202, 0x021f, 0x023e, 0x025a, 0x025a,
+ 0x026e,
+ },
+ },
+ { // seh
+ "akanamáricoárabebielo-russobúlgarobengalitchecoalemãogregoinglêsespanhol" +
+ "persafrancêshausahindihúngaroindonésioiboitalianojaponêsjavanêscmerc" +
+ "oreanomalaiobirmanêsnepalêsholandêspanjabipolonêsportuguêsromenoruss" +
+ "okinyarwandasomalisuecotâmiltailandêsturcoucranianourduvietnamitaior" +
+ "ubáchinêszulusena",
+ []uint16{ // 499 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0025,
+ 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0039, 0x0039, 0x0039, 0x0039, 0x003e, 0x0045, 0x0045, 0x004d,
+ 0x004d, 0x004d, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005f,
+ 0x005f, 0x0064, 0x0064, 0x0064, 0x0064, 0x006c, 0x006c, 0x006c,
+ // Entry 40 - 7F
+ 0x006c, 0x0076, 0x0076, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079,
+ 0x0081, 0x0081, 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091,
+ 0x0091, 0x0091, 0x0095, 0x0095, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab,
+ 0x00b3, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc,
+ 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c3, 0x00c3, 0x00cb,
+ // Entry 80 - BF
+ 0x00cb, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00db, 0x00e0, 0x00eb,
+ 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb,
+ 0x00eb, 0x00eb, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1,
+ 0x00f6, 0x00f6, 0x00fc, 0x00fc, 0x00fc, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114,
+ 0x0118, 0x0118, 0x0118, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122,
+ 0x0122, 0x0129, 0x0129, 0x0130, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ // Entry C0 - FF
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ // Entry 100 - 13F
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ // Entry 140 - 17F
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ // Entry 180 - 1BF
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ // Entry 1C0 - 1FF
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x0138,
+ },
+ },
+ { // ses
+ "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" +
+ " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " +
+ "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" +
+ "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senniKoree" +
+ " senniMaleezi senniBurme senniNeepal senniHolandee senniPunjaabi sen" +
+ "niiPolonee senniPortugee senniRumaani senniRuusi senniRwanda senniSo" +
+ "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " +
+ "senniUrdu senniVietnaam senniYorbance senniSinuwa senni, MandareŋZul" +
+ "u senniKoyraboro senni",
+ []uint16{ // 502 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041,
+ 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
+ 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088,
+ 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0,
+ 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae,
+ 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7,
+ // Entry 40 - 7F
+ 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0111, 0x0111, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x011c, 0x011c, 0x011c, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134,
+ 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e,
+ 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x015d, 0x015d, 0x016a,
+ // Entry 80 - BF
+ 0x016a, 0x0178, 0x0178, 0x0178, 0x0178, 0x0185, 0x0190, 0x019c,
+ 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c,
+ 0x019c, 0x019c, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9,
+ 0x01b6, 0x01b6, 0x01c1, 0x01c1, 0x01c1, 0x01d0, 0x01d0, 0x01d0,
+ 0x01d0, 0x01d0, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01e7,
+ 0x01f1, 0x01f1, 0x01f1, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff,
+ 0x01ff, 0x020d, 0x020d, 0x0224, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ // Entry C0 - FF
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ // Entry 100 - 13F
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ // Entry 140 - 17F
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ // Entry 180 - 1BF
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ // Entry 1C0 - 1FF
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e,
+ 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x023d,
+ },
+ },
+ { // sg
+ "AkâanAmarîkiArâboBielörûsiBulugäriBengäliTyêkiZâmaniGerêkiAnglëeEspanyöl" +
+ "FarsîFarânziHaüsäHîndiHongruäaEnndonezïiÏgböÊnndeZaponëeZavanëeKmêre" +
+ "KoreyëenMalëeMiamära, BirimäniNepalëeHolandëePenzäbïPolonëePortugëe," +
+ " PûraRumëenRûsiRuandäaSängöSomalïiSueduäaTämûliThâiTûrûkuUkrêniÛrduV" +
+ "ietnämYorubaShinuäaZûlu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001f, 0x0028,
+ 0x0028, 0x0028, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+ 0x0030, 0x0030, 0x0030, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x003d, 0x003d, 0x003d, 0x003d, 0x0044, 0x004b, 0x004b, 0x0054,
+ 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0062,
+ 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0069,
+ 0x0069, 0x006f, 0x006f, 0x006f, 0x006f, 0x0078, 0x0078, 0x0078,
+ // Entry 40 - 7F
+ 0x0078, 0x0083, 0x0083, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089,
+ 0x008f, 0x008f, 0x0097, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f,
+ 0x009f, 0x009f, 0x00a5, 0x00a5, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00b4, 0x00b4, 0x00c7, 0x00c7, 0x00c7,
+ 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00e9,
+ // Entry 80 - BF
+ 0x00e9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0100, 0x0105, 0x010d,
+ 0x010d, 0x010d, 0x010d, 0x010d, 0x0114, 0x0114, 0x0114, 0x0114,
+ 0x0114, 0x0114, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x0124, 0x0124, 0x012c, 0x012c, 0x012c, 0x0131, 0x0131, 0x0131,
+ 0x0131, 0x0131, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0140,
+ 0x0145, 0x0145, 0x0145, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d,
+ 0x014d, 0x0153, 0x0153, 0x015b, 0x0160,
+ },
+ },
+ { // shi
+ "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" +
+ "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" +
+ "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴼⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" +
+ "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" +
+ "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" +
+ "ⵓⵔⴷⵓⵜⵜⴰⴼⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵛⵍⵃⵉⵜ",
+ []uint16{ // 505 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a,
+ 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078,
+ 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111,
+ 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f,
+ 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192,
+ // Entry 40 - 7F
+ 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216,
+ 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240,
+ 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
+ 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
+ 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279,
+ 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2,
+ 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8,
+ // Entry 80 - BF
+ 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351,
+ 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351,
+ 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c,
+ 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd,
+ 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed,
+ 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d,
+ 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry C0 - FF
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 100 - 13F
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 140 - 17F
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 180 - 1BF
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 1C0 - 1FF
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0477,
+ },
+ },
+ { // shi-Latn
+ "TakantTamharitTaɛrabtTabilarustTablɣaritTabnɣalitTatcikitTalimantTagrigi" +
+ "tTangliztTasbnyulitTafursitTafransistTahawsatTahinditTahnɣaritTandun" +
+ "isitTigbutTaṭalyantTajabbunitTajavanitTaxmirtTakuritTamalawitTabirma" +
+ "nitTanibalitTahulanditTabnjabitTabulunitTabṛṭqiztTarumanitTarusitTar" +
+ "uwanditTasumalitTaswiditTatamiltTataylanditTaturkitTukranitTurdutTaf" +
+ "itnamitTayrubatTacinwitTazulutTashelḥiyt",
+ []uint16{ // 505 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a,
+ 0x002a, 0x002a, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0054, 0x0054, 0x005e,
+ 0x005e, 0x005e, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078,
+ 0x0078, 0x0080, 0x0080, 0x0080, 0x0080, 0x008a, 0x008a, 0x008a,
+ // Entry 40 - 7F
+ 0x008a, 0x0094, 0x0094, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x00a5, 0x00a5, 0x00af, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
+ 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00d9,
+ 0x00e2, 0x00e2, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec,
+ 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00f5, 0x00f5, 0x00fe,
+ // Entry 80 - BF
+ 0x00fe, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, 0x011b, 0x0125,
+ 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125,
+ 0x0125, 0x0125, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x0149, 0x0149, 0x0149,
+ 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159,
+ 0x015f, 0x015f, 0x015f, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0171, 0x0171, 0x0179, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ // Entry C0 - FF
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ // Entry 100 - 13F
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ // Entry 140 - 17F
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ // Entry 180 - 1BF
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ // Entry 1C0 - 1FF
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x018c,
+ },
+ },
+ { // si
+ siLangStr,
+ siLangIdx,
+ },
+ { // sk
+ skLangStr,
+ skLangIdx,
+ },
+ { // sl
+ slLangStr,
+ slLangIdx,
+ },
+ { // smn
+ "arabiakielâvielgisruošâkielâbulgariakielâtšeekikielâkirkkoslaavitanskaki" +
+ "elâsaksakielâkreikakielâengâlâskielâespanjakielâeestikielâsuomâkielâ" +
+ "ranskakielâiirikielâhepreakielâkroatiakielâuŋgarkielâarmeniakielâisl" +
+ "andkielâitaliakielâjaapaankielâkurdikielâkomikielâläättinkielâlatvia" +
+ "kielâmaorikielâmakedoniakielâmongoliakielâneepaalkielâhollandkielâtá" +
+ "rukielâ nynorsktárukielâpuolakielâportugalkielâromaniakielâruošâkiel" +
+ "âsanskritkielâtavesämikielâsloveniakielâserbiakielâruotâkielâturkki" +
+ "kielâukrainakielâvietnamkielâkiinakielâainukielâmarikielâtoovláškrei" +
+ "kakielâmokšâkielâviestârmarikielâtoovláštárukielâroomaankielâmaadâsä" +
+ "mikielâjuulevsämikielâanarâškielânuorttâlâškielâudmurtkielâvepsäkiel" +
+ "âkantonkiinakielâNuorttâriijkâ saksakielâAustralia engâlâskielâKana" +
+ "da engâlâskielâoovtâkiärdánis kiinakielâärbivuáválâš kiinakielâ",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0020, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x003b, 0x0047, 0x0047, 0x0047, 0x0053,
+ 0x005e, 0x005e, 0x005e, 0x005e, 0x006a, 0x0079, 0x0079, 0x0086,
+ 0x0091, 0x0091, 0x0091, 0x0091, 0x009d, 0x009d, 0x009d, 0x00a9,
+ 0x00a9, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3,
+ 0x00bf, 0x00bf, 0x00bf, 0x00cc, 0x00cc, 0x00d8, 0x00e5, 0x00e5,
+ // Entry 40 - 7F
+ 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00f1,
+ 0x00fd, 0x00fd, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a,
+ 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x0115,
+ 0x011f, 0x011f, 0x011f, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x013a, 0x013a, 0x013a, 0x0145, 0x0154,
+ 0x0154, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
+ 0x016f, 0x016f, 0x017c, 0x018f, 0x019a, 0x019a, 0x019a, 0x019a,
+ 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a5,
+ // Entry 80 - BF
+ 0x01a5, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01c0, 0x01cd, 0x01cd,
+ 0x01db, 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01f8,
+ 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x0204, 0x0204, 0x0204, 0x0204,
+ 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210, 0x0210,
+ 0x0210, 0x0210, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x0229,
+ 0x0229, 0x0229, 0x0229, 0x0236, 0x0236, 0x0236, 0x0236, 0x0236,
+ 0x0236, 0x0236, 0x0236, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241,
+ 0x0241, 0x0241, 0x0241, 0x0241, 0x024b, 0x024b, 0x024b, 0x024b,
+ // Entry C0 - FF
+ 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
+ 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
+ 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
+ 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
+ 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
+ 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
+ 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b, 0x024b,
+ 0x024b, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
+ // Entry 100 - 13F
+ 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
+ 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
+ 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
+ 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
+ 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
+ 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
+ 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255,
+ 0x0255, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ // Entry 140 - 17F
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ // Entry 180 - 1BF
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a,
+ 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x0277,
+ 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277,
+ 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0289, 0x0289, 0x0289,
+ 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289,
+ 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289, 0x0289,
+ 0x0289, 0x0289, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
+ // Entry 1C0 - 1FF
+ 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
+ 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
+ 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d,
+ 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x02aa, 0x02aa,
+ 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa,
+ 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa,
+ 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa,
+ 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02aa, 0x02bb, 0x02cc,
+ // Entry 200 - 23F
+ 0x02da, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
+ 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
+ 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
+ 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
+ 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed, 0x02ed,
+ 0x02ed, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x0305,
+ 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305,
+ 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305, 0x0305,
+ // Entry 240 - 27F
+ 0x0305, 0x0305, 0x0305, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316,
+ 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, 0x0331, 0x0331,
+ 0x034a, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360,
+ 0x037d, 0x039a,
+ },
+ },
+ { // sn
+ "chiAkanichiAmaricchiArabuchiBelarusichiBulgarianchiBengalichiCzechchiJer" +
+ "imanichiGreekChirunguchiSpanishchiPeshiyachiFurenchichiHausachiHindi" +
+ "chiHungarichiIndonesiachiIgbochiTarianachiJapanichiJavachiKhemachiKo" +
+ "riachiMalaychiBurmachiNepalichiDutchchiPunjabichiPolishchiPutukezich" +
+ "iRomanianchiRashiyachiRwandachiShonachiSomalichiSwedishchiTamilchiTh" +
+ "aichiTurkishchiUkreniachiUrduchiVietnamchiYorubachiChinesechiZulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011,
+ 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030,
+ 0x0030, 0x0030, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x0055, 0x005d, 0x005d, 0x0067,
+ 0x0067, 0x0067, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007c,
+ 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0084,
+ 0x0084, 0x008c, 0x008c, 0x008c, 0x008c, 0x0096, 0x0096, 0x0096,
+ // Entry 40 - 7F
+ 0x0096, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
+ 0x00b3, 0x00b3, 0x00bc, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
+ 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
+ 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
+ 0x00d3, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00e3, 0x00e3, 0x00e3,
+ 0x00ec, 0x00ec, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4,
+ 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x0107,
+ // Entry 80 - BF
+ 0x0107, 0x0112, 0x0112, 0x0112, 0x0112, 0x011d, 0x0127, 0x0130,
+ 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130,
+ 0x0130, 0x0138, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141,
+ 0x014b, 0x014b, 0x0153, 0x0153, 0x0153, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
+ 0x0175, 0x0175, 0x0175, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f,
+ 0x017f, 0x0188, 0x0188, 0x0192, 0x0199,
+ },
+ },
+ { // so
+ "AkanAxmaariCarabiBeleruusiyaanBulgeeriyaanBangaaliJeegJarmalGiriikIngiri" +
+ "isiIsbaanishFaarisiFaransiisFiriisiyan GalbeedHawsaHindiHangariyaanI" +
+ "ndunuusiyaanIgboTalyaaniJabbaaniisJafaaniisKamboodhianKuuriyaanMalaa" +
+ "yBurmeseNebaaliHolandaysBunjaabiBoolishBoortaqiisRomankaRuushRwandaS" +
+ "oomaaliSwiidhisTamiilTaaylandaysTurkishYukreeniyaanUrduuFiitnaamaysY" +
+ "oruubaJayniisZuulu",
+ []uint16{ // 181 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x002a,
+ 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032,
+ 0x0032, 0x0032, 0x0032, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0054,
+ 0x0054, 0x0054, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0064,
+ 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007b,
+ 0x007b, 0x0080, 0x0080, 0x0080, 0x0080, 0x008b, 0x008b, 0x008b,
+ // Entry 40 - 7F
+ 0x008b, 0x0098, 0x0098, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x00a4, 0x00a4, 0x00ae, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7,
+ 0x00b7, 0x00b7, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb,
+ 0x00cb, 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d8, 0x00d8, 0x00d8,
+ 0x00df, 0x00df, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f0, 0x00f0, 0x00f7,
+ // Entry 80 - BF
+ 0x00f7, 0x0101, 0x0101, 0x0101, 0x0101, 0x0108, 0x010d, 0x0113,
+ 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113,
+ 0x0113, 0x0113, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b,
+ 0x0123, 0x0123, 0x0129, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134,
+ 0x0134, 0x0134, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x0147,
+ 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157,
+ 0x0157, 0x015e, 0x015e, 0x0165, 0x016a,
+ },
+ },
+ { // sq
+ sqLangStr,
+ sqLangIdx,
+ },
+ { // sr
+ srLangStr,
+ srLangIdx,
+ },
+ { // sr-Latn
+ srLatnLangStr,
+ srLatnLangIdx,
+ },
+ { // sv
+ svLangStr,
+ svLangIdx,
+ },
+ { // sv-FI
+ "kirgiziska",
+ []uint16{ // 91 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x000a,
+ },
+ },
+ { // sw
+ swLangStr,
+ swLangIdx,
+ },
+ { // sw-CD
+ "KiakanKibanglaKicheckiKingerezaKiswahili ya Kongo",
+ []uint16{ // 525 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016,
+ 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry 40 - 7F
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry 80 - BF
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry C0 - FF
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry 100 - 13F
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry 140 - 17F
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry 180 - 1BF
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry 1C0 - 1FF
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry 200 - 23F
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x0031,
+ },
+ },
+ { // ta
+ taLangStr,
+ taLangIdx,
+ },
+ { // te
+ teLangStr,
+ teLangIdx,
+ },
+ { // teo
+ "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" +
+ "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" +
+ "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" +
+ "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" +
+ "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" +
+ "rubaKichinaKizuluKiteso",
+ []uint16{ // 531 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029,
+ 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e,
+ 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e,
+ 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075,
+ 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085,
+ // Entry 40 - 7F
+ 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,
+ 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf,
+ 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2,
+ // Entry 80 - BF
+ 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112,
+ 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143,
+ 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154,
+ 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry C0 - FF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 100 - 13F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 140 - 17F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 180 - 1BF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 1C0 - 1FF
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 200 - 23F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ 0x0169, 0x0169, 0x016f,
+ },
+ },
+ { // th
+ thLangStr,
+ thLangIdx,
+ },
+ { // ti
+ "አፍሪቃንሰኛትዊአምሐረኛዓረበኛአዜርባይጃንኛቤላራሻኛቡልጋሪኛበንጋሊኛብሬቶንቦስኒያንካታላንቼክኛወልሽዴኒሽጀርመንግሪከኛእ" +
+ "ንግሊዝኛኤስፐራንቶስፓኒሽኤስቶኒአንባስክኛፐርሲያኛፊኒሽፋሮኛፈረንሳይኛፍሪሰኛአይሪሽእስኮትስ ጌልክኛጋለቪኛጓራ" +
+ "ኒጉጃራቲኛዕብራስጥሕንደኛክሮሽያንኛሀንጋሪኛኢንቴር ቋንቋእንዶኑሲኛአይስላንደኛጣሊያንኛጃፓንኛጃቫንኛጊዮርጊያኛ" +
+ "ካማደኛኮሪያኛኩርድሽኪሩጋዚላቲንኛሊቱአኒየንላቲቪያንማክዶኒኛማላያላምኛማራቲኛማላይኛማልቲስኛኔፖሊኛደችኖርዌይኛ" +
+ " (ናይ ኝኖርስክ)ኖርዌጂያንኦኪታንኛኦሪያፑንጃቢኛፖሊሽፓሽቶፖርቱጋሊኛሮማኒያንራሽኛስንሃልኛስሎቨክኛስቁቪኛአልቤኒ" +
+ "ኛሰርቢኛሰሴቶሱዳንኛስዊድንኛሰዋሂሊኛታሚልኛተሉጉኛታይኛትግርኛናይ ቱርኪ ሰብዓይ (ቱርካዊ)ቱርከኛዩክረኒኛኡር" +
+ "ዱኛኡዝበክኛቪትናምኛዞሳኛዪዲሽዙሉኛታጋሎገኛክሊንግኦንኛፖርቱጋልኛ (ናይ ብራዚል)ፖርቱጋልኛ (ናይ ፖርቱጋል)" +
+ "ሰርቦ- ክሮዊታን",
+ []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x001b, 0x002a, 0x002a,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x004e, 0x004e, 0x005d, 0x006c,
+ 0x006c, 0x006c, 0x007b, 0x007b, 0x0087, 0x0096, 0x00a2, 0x00a2,
+ 0x00a2, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab, 0x00b4, 0x00bd,
+ 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00d5, 0x00e7, 0x00f9, 0x0105,
+ 0x0117, 0x0123, 0x0132, 0x0132, 0x013b, 0x013b, 0x0144, 0x0156,
+ 0x0162, 0x016e, 0x018a, 0x0196, 0x019f, 0x01ae, 0x01ae, 0x01ae,
+ 0x01bd, 0x01c9, 0x01c9, 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea,
+ // Entry 40 - 7F
+ 0x0200, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0227,
+ 0x0236, 0x0236, 0x0242, 0x024e, 0x0260, 0x0260, 0x0260, 0x0260,
+ 0x0260, 0x0260, 0x0260, 0x026c, 0x0278, 0x0278, 0x0278, 0x0284,
+ 0x0284, 0x0284, 0x0290, 0x029c, 0x029c, 0x029c, 0x029c, 0x029c,
+ 0x029c, 0x02ae, 0x02ae, 0x02bd, 0x02bd, 0x02bd, 0x02bd, 0x02cc,
+ 0x02de, 0x02de, 0x02ea, 0x02f6, 0x0305, 0x0305, 0x0305, 0x0305,
+ 0x0311, 0x0311, 0x0317, 0x033f, 0x0351, 0x0351, 0x0351, 0x0351,
+ 0x0360, 0x0360, 0x0360, 0x0369, 0x0369, 0x0378, 0x0378, 0x0381,
+ // Entry 80 - BF
+ 0x038a, 0x039c, 0x039c, 0x039c, 0x039c, 0x03ab, 0x03b4, 0x03b4,
+ 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d2, 0x03de,
+ 0x03de, 0x03de, 0x03de, 0x03ed, 0x03f9, 0x03f9, 0x0402, 0x040e,
+ 0x041d, 0x042c, 0x0438, 0x0444, 0x0444, 0x044d, 0x0459, 0x0485,
+ 0x0485, 0x0485, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x04a0,
+ 0x04ac, 0x04bb, 0x04bb, 0x04ca, 0x04ca, 0x04ca, 0x04ca, 0x04d3,
+ 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ // Entry C0 - FF
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ // Entry 100 - 13F
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5,
+ 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ // Entry 140 - 17F
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ // Entry 180 - 1BF
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ // Entry 1C0 - 1FF
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ // Entry 200 - 23F
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4,
+ 0x04f4, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ // Entry 240 - 27F
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0509, 0x0531, 0x055c, 0x055c, 0x0576,
+ },
+ },
+ { // to
+ "lea fakaʻafālalea fakaʻapakasialea fakaʻavesitanilea fakaʻafilikanalea f" +
+ "akaʻakanilea fakaʻamelikilea fakaʻalakonilea fakaʻalepealea fakaʻasa" +
+ "mialea fakaʻavalikilea fakaʻaimalalea fakaʻasapaisanilea fakapasikil" +
+ "ilea fakapelalusilea fakapulukalialea fakapisilamalea fakapamipalale" +
+ "a fakapengikalilea fakatipetilea fakapeletonilea fakaposinialea faka" +
+ "katalanilea fakaseselea fakakamololea fakakōsikalea fakakelīlea faka" +
+ "sekilea fakasilavia-fakasiasilea fakasuvasalea fakauēlesilea fakaten" +
+ "imaʻakelea fakasiamanelea fakativehilea fakaputenilea fakaʻeuelea fa" +
+ "kakalisilea fakapālangilea fakaʻesipulanitolea fakasipēnisilea fakaʻ" +
+ "esitōnialea fakapāsikilea fakapēsialea fakafulālea fakafinilanilea f" +
+ "akafisilea fakafaloelea fakafalanisēlea fakafilisia-hihifolea fakaʻa" +
+ "elanilea fakakaelikilea fakakalisialea fakakualanilea fakakutalatile" +
+ "a fakamangikīlea fakahausalea fakahepelūlea fakahinitīlea fakahili-m" +
+ "otulea fakakuloisialea fakahaitilea fakahungakalialea fakaʻāmenialea" +
+ " fakahelelolea fakavahaʻalealea fakaʻinitōnesialea fakavahaʻalingikē" +
+ "lea fakaʻikipōlea fakasisiuani-īlea fakaʻinupiakilea fakaʻitolea fak" +
+ "aʻaisilanilea fakaʻītalilea fakaʻinuketitutilea fakasiapanilea fakas" +
+ "avalea fakaseōsialea fakakongikōlea fakakikuiulea fakakuaniamalea fa" +
+ "kakasakilea fakakalaʻalisutilea fakakamipōtialea fakakanatalea fakak" +
+ "ōlealea fakakanulilea fakakāsimilalea fakakulitīlea fakakomilea fak" +
+ "akoniualilea fakakīsisilea fakalatinalea fakalakisimipekilea fakakan" +
+ "italea fakalimipūlikilea lingikalalea fakalaulea fakalituanialea fak" +
+ "alupa-katangalea fakalativialea fakamalakasilea fakamāsololea fakama" +
+ "ulilea fakamasitōnialea fakaʻinitia-malāialamilea fakamongokōlialea " +
+ "fakamalatilea fakamaleilea fakamalitalea fakapemalea fakanaululea fa" +
+ "kanetepele-tokelaulea fakanepalilea fakanetongikālea fakahōlanilea f" +
+ "akanoauē-ninosikilea fakanouaē-pokimalilea fakanetepele-tongalea fak" +
+ "anavaholea fakanianisalea fakaʻokitanelea fakaʻosipiuālea fakaʻolomo" +
+ "lea fakaʻinitia-ʻolāealea fakaʻosetikilea fakapūnusapilea fakapālile" +
+ "a fakapolanilea fakapasitōlea fakapotukalilea fakakuetisalea fakalai" +
+ "to-lomēnialea fakaluanitilea fakalōmenialea fakalūsialea fakakiniāua" +
+ "nitalea fakasanisukulitilea fakasaletīnialea fakasīnitilea fakasami-" +
+ "tokelaulea fakasangikōlea fakasingihalalea fakasolāvakilea fakasolov" +
+ "enialea fakahaʻamoalea fakasionalea fakasomalilea fakaʻalapēnialea f" +
+ "akasēpialea fakasuatilea fakasoto-tongalea fakasunitālea fakasuēteni" +
+ "lea fakasuahililea fakatamililea fakaʻinitia-telukulea fakatāsikilea" +
+ " fakatailanilea fakatikilinialea fakatēkimenilea suanalea fakatongal" +
+ "ea fakatoakelea fakatisongalea fakatatalelea fakatahitilea fakaʻuikū" +
+ "lilea fakaʻūkalaʻinelea fakaʻūtūlea fakaʻusipekilea fakavenitālea fa" +
+ "kavietinamilea fakavolapikilea fakaʻualonialea fakaʻuolofolea fakatō" +
+ "salea fakaītisilea fakaʻiōlupalea fakasuangilea fakasiainalea fakasu" +
+ "lulea fakaʻatisēlea fakaʻakolilea fakaʻatangimēlea fakaʻatikēlea fak" +
+ "aʻalepea-tunīsialea fakaʻafilihililea fakaʻakihemilea fakaʻainulea f" +
+ "akaʻakatialea fakaʻalapamalea fakaʻaleutilea fakaʻalapēnia-kekilea f" +
+ "akaʻalitai-tongalea fakapālangi-motuʻalea fakaʻangikalea fakaʻalāmit" +
+ "ilea fakamapuselea fakaʻalaonalea fakaʻalapaholea fakaʻalepea-ʻaisil" +
+ "ialea fakaʻalauakilea fakaʻalepea-molokolea fakaʻalepea-ʻisipitelea " +
+ "fakaʻasulea fakaʻilonga-ʻamelikalea fakaʻasitūlialea fakakotavalea f" +
+ "akaʻauatilea fakapalusilea fakapalilea fakapavālialea fakapasaʻalea " +
+ "fakapamunilea fakatōpe-pētekilea fakakomalalea fakapesalea fakapēmip" +
+ "alea fakapetavilea fakapenalea fakapafutilea fakapatakalea fakapalus" +
+ "i-hihifolea fakaposipulilea fakapikolilea fakapinilea fakapanisalile" +
+ "a fakakomelea fakasikesikālea fakapisinupilialea fakapakitiālilea fa" +
+ "kapalailea fakapalahuilea fakapōtolea fakaʻakōselea fakapuliatilea f" +
+ "akapukisilea fakapululea fakapilinilea fakametūmipalea fakakatolea f" +
+ "akakalipalea fakakaiukalea fakaʻatisamilea fakasepuanolea fakakikale" +
+ "a fakasīpisalea fakasakatāilea fakatūkelea fakamalīlea fakasinuki-ta" +
+ "kotelea fakasokitaulea fakasipeuianilea fakaselokīlea fakaseienelea " +
+ "fakakūtisi-lolotolea fakakopitikalea fakakapisenolea fakatoake-kilim" +
+ "ealea fakakasiupialea fakatakotalea fakatalakuālea fakataitalea faka" +
+ "telaualelea fakasilavelea fakatōkelipilea fakatingikālea fakatisāmal" +
+ "ea fakatokililea fakasōpia-hifolea fakatusuni-lolotolea fakatualalea" +
+ " fakahōlani-lotolotolea fakaiola-fonīlea fakatiulalea fakatasakalea " +
+ "fakaʻemipūlea fakaʻefikilea fakaʻemilialea fakaʻisipitemuʻalea fakaʻ" +
+ "ekaiukilea fakaʻelamitelea fakapālangi-lotolotolea fakaiūpiki-loloto" +
+ "lea fakaʻeuōnitolea fakaʻekisitematulalea fakafangilea fakafilipaini" +
+ "lea fakafinilani-tōnetalelea fakafōngilea fakafalanisē-kasunilea fak" +
+ "afalanisē-lotolotolea fakafalanisē-motuʻalea fakaʻāpitanolea fakafil" +
+ "isia-tokelaulea fakafilisia-hahakelea fakafulilānilea fakakālea faka" +
+ "kakausilea fakasiaina-kanilea fakakaiolea fakakapaialea fakateli-sol" +
+ "oasitelialea fakasiʻisilea fakakilipasilea fakakilakilea fakasiamane" +
+ "-hake-lotolotolea fakasiamane-hake-motuʻalea fakakonikanī-koanilea f" +
+ "akakonitīlea fakakolonitalolea fakakotikalea fakakēpolea fakakalisim" +
+ "uʻalea fakasiamane-suisilanilea fakaʻuaiūlea fakafalefalelea fakakus" +
+ "īlea fakaʻuīsinilea fakahaitalea fakasiaina-hakalea fakahauaiʻilea " +
+ "fakahinitī-fisilea fakahilikainonilea fakahititelea fakamōngilea fak" +
+ "asōpia-hakelea fakasiaina-siangilea fakahupalea fakaʻipanilea fakaʻi" +
+ "pipiolea fakaʻilokolea fakaʻingusilea fakaʻingilianilea fakapālangi-" +
+ "samaikalea fakalosipanilea fakanikōmipalea fakamasamelea fakaʻiuteo-" +
+ "pēsialea fakaʻiuteo-ʻalepealea fakaʻiutilanilea fakakala-kalipakilea" +
+ " fakakapilelea fakakasinilea fakasisūlea fakakamipalea fakakavilea f" +
+ "akakapālitialea fakakanēmipulea fakatiapilea fakamakōnitelea fakakap" +
+ "uvelitianulea fakakeniangilea fakakololea fakakaingangilea fakakāsil" +
+ "ea fakakōtanilea fakakoila-sīnilea fakakoualilea fakakilimanisikīlea" +
+ " fakakakolea fakakalenisinilea fakakimipūnitulea fakakomi-pelemiakil" +
+ "ea fakakonikanīlea fakakosilaelea fakakepelelea fakakalate-palakilil" +
+ "ea fakakiliolea fakakinaraiālea fakakalelialea fakakulukilea fakasia" +
+ "mipalalea fakapafialea fakakolongialea fakakumikilea fakakutenailea " +
+ "fakalatinolea fakalangilea fakalānitalea fakalamipālea fakalesikiale" +
+ "a fakakavakava-foʻoulea fakalikulialea fakalivonialea fakalakotalea " +
+ "fakalomipātilea fakamongikōlea fakalosilea fakaluli-tokelaulea fakal" +
+ "atakalelea fakalupa-lulualea fakaluisenolea fakalunitālea fakaluolea" +
+ " fakamisolea fakaluīalea fakasiaina-faʻutohilea fakalasulea fakamatu" +
+ "lalea fakamafalea fakamakahilea fakamaitililea fakamakasalilea fakam" +
+ "anitīngikolea fakamasailea fakamapalea fakamokisiālea fakamanetalile" +
+ "a fakamenetīlea fakamelulea fakamolisienilea fakaʻaelani-lotolotolea" +
+ " fakamakūa-meʻetolea fakametalea fakamikemakilea fakaminangikapaulea" +
+ " fakamanisūlea fakamanipulilea fakamohaukilea fakamosilea fakamali-h" +
+ "ihifolea fakamunitangilea tuifiolea fakakilekilea fakamilanitēsilea " +
+ "fakamaliwalilea fakamenitauailea fakamienelea fakaʻelisialea fakamas" +
+ "anitelanilea fakasiaina-mininanilea fakanapoletanolea fakanamalea fa" +
+ "kasiamane-hifolea fakaneualilea fakaniasilea fakaniuēlea fakaʻaonasa" +
+ "lea fakakuasiolea fakangiemipōnilea fakanokailea fakanoauē-motuʻalea" +
+ " fakanovialelea fakanikōlea fakasoto-tokelaulea fakanuelilea fakaneu" +
+ "ali-motuʻalea fakaniamiuesilea fakanianikolelea fakaniololea fakanes" +
+ "imalea fakaʻosēselea fakatoake-ʻotomanilea fakapangasinanilea fakapā" +
+ "lavilea fakapamipangalea fakapapiamēnitolea fakapalaulea fakapikātil" +
+ "ea fakasiamane-penisilivanialea fakasiamane-lafalafalea fakapēsia-mo" +
+ "tuʻalea fakasiamane-palatinelea fakafoinikialea fakapiemonitelea fak" +
+ "aponitikilea fakaponapēlea fakapulūsialea fakapolovenisi-motuʻalea f" +
+ "akakīsēlea fakakuitisa-simipolasolea fakalasasitanilea fakalapanuile" +
+ "a fakalalotongalea fakalomaniololea fakalifilea fakalomipōlea fakalo" +
+ "manilea fakalotumalea fakalusinilea fakalovianalea fakaʻalomanialea " +
+ "fakaluālea fakasanitauelea fakasakalea fakasamalitani-ʻalāmitilea fa" +
+ "kasamipululea fakasasakilea fakasanitalilea fakasaulasitilālea fakan" +
+ "gāmipailea fakasangulea fakasisīlialea fakasikotilanilea fakasaletīn" +
+ "ia-sasalesulea faka-tonga ‘o Ketesilea fakasenekalea fakasenalea fak" +
+ "aselilea fakaselikupilea fakakoilapolo-senilea fakaʻaelani-motuʻalea" +
+ " fakasamositialea fakataselihitilea fakasianilea fakaʻalepea-sātilea" +
+ " fakasitamolea fakasilesia-hifolea fakaselaiālea fakasami-tongalea f" +
+ "akasami-lulelea fakasami-ʻinalilea fakasami-sikolitalea fakasoninekē" +
+ "lea fakasokitianalea fakasuranane-tongikōlea fakasēlēlelea fakasahol" +
+ "ea fakafilisia-satēlanilea fakasukumalea fakasusūlea fakasumelialea " +
+ "fakakomololea fakasuahili-kongikōlea fakasuliāiā-muʻalea fakasuliāiā" +
+ "lea fakasilesialea fakatululea fakatimenēlea fakatesolea fakatelenol" +
+ "ea fakatetumulea fakatikilēlea fakativilea fakatokelaulea fakasākuli" +
+ "lea fakakilingonilea fakatilingikītelea fakatalisilea fakatamasiekil" +
+ "ea fakaniasa-tongalea fakatoki-pisinilea fakatuloiolea fakatalokolea" +
+ " fakasakōnialea fakatisīmisianilea fakatati-moselemilea fakatumepuka" +
+ "lea fakatūvalulea fakatasauakilea fakatuvīnialea fakatamasaiti-ʻatil" +
+ "asi-lolotolea fakaʻutimulitilea fakaʻūkalitilea fakaʻumipūnitulea fa" +
+ "kaʻilonga-tefitolea fakavailea fakavenēsialea fakavepisilea fakavela" +
+ "mingi-hihifolea fakafalanikoni-lolotolea fakavotikilea fakavōlolea f" +
+ "akavūnisolea fakaʻualiselilea fakaʻuolaitalea fakaʻualailea fakaʻuas" +
+ "iōlea fakaʻuālipililea fakasiaina-uūlea fakakalimikilea fakamingilel" +
+ "ialea fakasokalea fakaʻiaolea fakaʻiapilea fakaʻiangipenilea fakaʻiē" +
+ "mipalea fakaneʻēngatūlea fakakuangitongilea fakasapotekilea fakaʻilo" +
+ "nga-pilisilea fakasēlanilea fakasenakalea fakatamasaiti-molokolea fa" +
+ "kasuniʻikai ha lealea fakasāsālea fakaʻalepea (māmani)lea fakasiaman" +
+ "e-ʻaositulialea fakasiamane-hake-suisilanilea fakapālangi-ʻaositelēl" +
+ "ialea fakapālangi-kānatalea fakapilitānialea fakapālangi-ʻamelikalea" +
+ " fakasipēnisi lātini-ʻamelikalea fakasipēnisi-‘iulopelea fakasipēnis" +
+ "i-mekisikoulea fakafalanisē-kānatalea fakafalanisē-suisilanilea faka" +
+ "sakisoni-hifolea fakahōlani-pelesiumelea fakapotukali-palāsililea fa" +
+ "kapotukali-ʻiulopelea fakamolitāvialea fakakuloisia-sēpialea fakasia" +
+ "ina-fakafaingofualea fakasiaina-tukufakaholo",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0022, 0x0035, 0x0048, 0x0057, 0x0068, 0x0079,
+ 0x0089, 0x0099, 0x00aa, 0x00ba, 0x00ce, 0x00de, 0x00ee, 0x00ff,
+ 0x010f, 0x011f, 0x0130, 0x013e, 0x014e, 0x015d, 0x016d, 0x0179,
+ 0x0187, 0x0196, 0x01a3, 0x01af, 0x01c8, 0x01d6, 0x01e5, 0x01f8,
+ 0x0207, 0x0215, 0x0223, 0x0230, 0x023e, 0x024e, 0x0263, 0x0274,
+ 0x0287, 0x0296, 0x02a4, 0x02b1, 0x02c1, 0x02cd, 0x02da, 0x02eb,
+ 0x0301, 0x0311, 0x0320, 0x032f, 0x033e, 0x034e, 0x035e, 0x036b,
+ 0x037a, 0x0389, 0x039a, 0x03aa, 0x03b7, 0x03c9, 0x03da, 0x03e8,
+ // Entry 40 - 7F
+ 0x03fa, 0x040f, 0x0426, 0x0436, 0x0449, 0x045b, 0x0468, 0x047a,
+ 0x048a, 0x049f, 0x04ae, 0x04ba, 0x04c9, 0x04d9, 0x04e7, 0x04f7,
+ 0x0505, 0x051a, 0x052c, 0x053a, 0x0548, 0x0556, 0x0567, 0x0576,
+ 0x0582, 0x0592, 0x05a1, 0x05af, 0x05c3, 0x05d1, 0x05e4, 0x05f1,
+ 0x05fc, 0x060c, 0x0620, 0x062f, 0x063f, 0x064e, 0x065b, 0x066d,
+ 0x0689, 0x069c, 0x06aa, 0x06b7, 0x06c5, 0x06d1, 0x06de, 0x06f6,
+ 0x0704, 0x0716, 0x0725, 0x073c, 0x0753, 0x0769, 0x0777, 0x0786,
+ 0x0797, 0x07a9, 0x07b8, 0x07d1, 0x07e2, 0x07f3, 0x0800, 0x080e,
+ // Entry 80 - BF
+ 0x081d, 0x082d, 0x083c, 0x0852, 0x0861, 0x0871, 0x087f, 0x0893,
+ 0x08a7, 0x08b9, 0x08c8, 0x08dc, 0x08ec, 0x08fd, 0x090e, 0x091f,
+ 0x092f, 0x093c, 0x094a, 0x095d, 0x096b, 0x0978, 0x098a, 0x0999,
+ 0x09a9, 0x09b8, 0x09c6, 0x09dd, 0x09ec, 0x09fb, 0x0a0c, 0x0a1d,
+ 0x0a26, 0x0a33, 0x0a40, 0x0a4f, 0x0a5d, 0x0a6b, 0x0a7c, 0x0a91,
+ 0x0aa0, 0x0ab1, 0x0ac0, 0x0ad1, 0x0ae1, 0x0af2, 0x0b02, 0x0b0f,
+ 0x0b1d, 0x0b2e, 0x0b3c, 0x0b4a, 0x0b56, 0x0b66, 0x0b75, 0x0b88,
+ 0x0b98, 0x0bb1, 0x0bc4, 0x0bd5, 0x0be3, 0x0bf3, 0x0c04, 0x0c14,
+ // Entry C0 - FF
+ 0x0c2c, 0x0c42, 0x0c5a, 0x0c6a, 0x0c7c, 0x0c8a, 0x0c9a, 0x0cab,
+ 0x0cc5, 0x0cd6, 0x0ced, 0x0d07, 0x0d14, 0x0d2e, 0x0d41, 0x0d4f,
+ 0x0d5e, 0x0d6c, 0x0d78, 0x0d88, 0x0d97, 0x0da5, 0x0dba, 0x0dc8,
+ 0x0dd4, 0x0de3, 0x0df1, 0x0dfd, 0x0e0b, 0x0e19, 0x0e2e, 0x0e3e,
+ 0x0e4c, 0x0e58, 0x0e68, 0x0e74, 0x0e85, 0x0e98, 0x0eaa, 0x0eb7,
+ 0x0ec6, 0x0ed3, 0x0ee3, 0x0ef2, 0x0f00, 0x0f0c, 0x0f1a, 0x0f2b,
+ 0x0f37, 0x0f45, 0x0f53, 0x0f64, 0x0f73, 0x0f7f, 0x0f8e, 0x0f9e,
+ 0x0fab, 0x0fb8, 0x0fcd, 0x0fdc, 0x0fed, 0x0ffc, 0x100a, 0x1020,
+ // Entry 100 - 13F
+ 0x1030, 0x1040, 0x1055, 0x1065, 0x1073, 0x1083, 0x1090, 0x10a0,
+ 0x10ae, 0x10bf, 0x10cf, 0x10de, 0x10ec, 0x10ff, 0x1114, 0x1121,
+ 0x1139, 0x114b, 0x1158, 0x1166, 0x1176, 0x1185, 0x1195, 0x11ab,
+ 0x11bc, 0x11cd, 0x11e6, 0x11fc, 0x120e, 0x1225, 0x1232, 0x1243,
+ 0x125d, 0x126b, 0x1283, 0x129d, 0x12b6, 0x12c8, 0x12df, 0x12f5,
+ 0x1306, 0x1311, 0x1320, 0x1333, 0x133f, 0x134d, 0x1366, 0x1375,
+ 0x1385, 0x1393, 0x13b0, 0x13cc, 0x13e3, 0x13f2, 0x1404, 0x1412,
+ 0x141f, 0x1432, 0x144b, 0x145a, 0x146a, 0x1477, 0x1488, 0x1495,
+ // Entry 140 - 17F
+ 0x14a8, 0x14b8, 0x14cc, 0x14df, 0x14ed, 0x14fb, 0x150e, 0x1523,
+ 0x152f, 0x153e, 0x154e, 0x155d, 0x156d, 0x1580, 0x1598, 0x15a8,
+ 0x15b9, 0x15c7, 0x15dd, 0x15f5, 0x1607, 0x161c, 0x162a, 0x1638,
+ 0x1645, 0x1653, 0x165f, 0x1671, 0x1682, 0x168f, 0x16a0, 0x16b5,
+ 0x16c5, 0x16d1, 0x16e2, 0x16ef, 0x16fe, 0x1711, 0x171f, 0x1734,
+ 0x1740, 0x1752, 0x1765, 0x177b, 0x178c, 0x179b, 0x17a9, 0x17c0,
+ 0x17cd, 0x17de, 0x17ed, 0x17fb, 0x180c, 0x1819, 0x1829, 0x1837,
+ 0x1846, 0x1854, 0x1861, 0x1870, 0x187f, 0x188e, 0x18a5, 0x18b4,
+ // Entry 180 - 1BF
+ 0x18c3, 0x18d1, 0x18e2, 0x18f2, 0x18fe, 0x1912, 0x1922, 0x1934,
+ 0x1943, 0x1952, 0x195d, 0x1969, 0x1976, 0x198e, 0x199a, 0x19a8,
+ 0x19b4, 0x19c2, 0x19d1, 0x19e1, 0x19f5, 0x1a02, 0x1a0e, 0x1a1e,
+ 0x1a2e, 0x1a3d, 0x1a49, 0x1a5a, 0x1a73, 0x1a89, 0x1a95, 0x1aa5,
+ 0x1ab9, 0x1ac8, 0x1ad8, 0x1ae7, 0x1af3, 0x1b06, 0x1b17, 0x1b21,
+ 0x1b2f, 0x1b42, 0x1b52, 0x1b63, 0x1b70, 0x1b80, 0x1b94, 0x1bab,
+ 0x1bbd, 0x1bc9, 0x1bdd, 0x1beb, 0x1bf8, 0x1c05, 0x1c15, 0x1c23,
+ 0x1c36, 0x1c43, 0x1c59, 0x1c68, 0x1c75, 0x1c89, 0x1c96, 0x1cac,
+ // Entry 1C0 - 1FF
+ 0x1cbd, 0x1cce, 0x1cdb, 0x1ce9, 0x1cf9, 0x1d10, 0x1d23, 0x1d32,
+ 0x1d43, 0x1d57, 0x1d64, 0x1d73, 0x1d90, 0x1da8, 0x1dbe, 0x1dd6,
+ 0x1de6, 0x1df7, 0x1e07, 0x1e16, 0x1e26, 0x1e40, 0x1e4e, 0x1e68,
+ 0x1e7a, 0x1e89, 0x1e9a, 0x1eab, 0x1eb7, 0x1ec6, 0x1ed4, 0x1ee2,
+ 0x1ef0, 0x1eff, 0x1f11, 0x1f1d, 0x1f2d, 0x1f39, 0x1f56, 0x1f66,
+ 0x1f74, 0x1f84, 0x1f98, 0x1fa9, 0x1fb6, 0x1fc6, 0x1fd8, 0x1ff3,
+ 0x200d, 0x201b, 0x2027, 0x2033, 0x2043, 0x2059, 0x2071, 0x2082,
+ 0x2094, 0x20a1, 0x20b7, 0x20c5, 0x20d9, 0x20e8, 0x20fa, 0x210b,
+ // Entry 200 - 23F
+ 0x211f, 0x2134, 0x2145, 0x2156, 0x216f, 0x217f, 0x218b, 0x21a4,
+ 0x21b2, 0x21bf, 0x21ce, 0x21dc, 0x21f4, 0x220b, 0x221c, 0x222b,
+ 0x2237, 0x2246, 0x2252, 0x2260, 0x226e, 0x227d, 0x2289, 0x2298,
+ 0x22a7, 0x22b8, 0x22cc, 0x22da, 0x22eb, 0x22fe, 0x2311, 0x231f,
+ 0x232d, 0x233d, 0x2351, 0x2366, 0x2376, 0x2385, 0x2395, 0x23a5,
+ 0x23c7, 0x23da, 0x23ec, 0x2400, 0x2417, 0x2422, 0x2432, 0x2440,
+ 0x2458, 0x2471, 0x247f, 0x248c, 0x249b, 0x24ad, 0x24be, 0x24cd,
+ 0x24dd, 0x24f0, 0x2502, 0x2512, 0x2524, 0x2530, 0x253d, 0x254b,
+ // Entry 240 - 27F
+ 0x255e, 0x256f, 0x2583, 0x2596, 0x25a6, 0x25bd, 0x25cc, 0x25da,
+ 0x25f2, 0x25fe, 0x260b, 0x2619, 0x2633, 0x2633, 0x264e, 0x266c,
+ 0x268b, 0x26a3, 0x26b5, 0x26cf, 0x26f2, 0x270d, 0x2728, 0x2728,
+ 0x2741, 0x275c, 0x2771, 0x278a, 0x27a4, 0x27bd, 0x27cf, 0x27e6,
+ 0x2802, 0x281d,
+ },
+ },
+ { // tr
+ trLangStr,
+ trLangIdx,
+ },
+ { // twq
+ "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" +
+ " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " +
+ "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" +
+ "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" +
+ "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" +
+ "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" +
+ "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" +
+ "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " +
+ "MandareŋZulu senniTasawaq senni",
+ []uint16{ // 551 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041,
+ 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
+ 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088,
+ 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0,
+ 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae,
+ 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7,
+ // Entry 40 - 7F
+ 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127,
+ 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
+ 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127,
+ 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f,
+ 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159,
+ 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175,
+ // Entry 80 - BF
+ 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4,
+ 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db,
+ 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2,
+ 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a,
+ 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry C0 - FF
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry 100 - 13F
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry 140 - 17F
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry 180 - 1BF
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry 1C0 - 1FF
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ // Entry 200 - 23F
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0246,
+ },
+ },
+ { // tzm
+ "TakanitTamharitTaεrabtTabilarusitTabelɣaritTabinɣalitTačiktTalmanitTayun" +
+ "anitTanglizttasbelyunitTafarisitTafṛansistTahawsatTahinditTahenɣarit" +
+ "TindunisitTigbutTaṭalyantTajappunitTajavanitTaxmert ,TalammastTakuri" +
+ "tTamalizitTaburmanitTanippalitTahulanḍitTabenjabitTappulunitTaburtuɣ" +
+ "alitTaṛumanitTarusitTarwanditTaṣumalitTaswiditTatamiltTaṭaytTaturkit" +
+ "TukranitTurdutTaviṭnamitTayurubatTacinwit,MandarintazulutTamaziɣt n " +
+ "laṭlaṣ",
+ []uint16{ // 553 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f,
+ 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0022, 0x002d,
+ 0x002d, 0x002d, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x0058, 0x0058, 0x0063,
+ 0x0063, 0x0063, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0080,
+ 0x0080, 0x0088, 0x0088, 0x0088, 0x0088, 0x0093, 0x0093, 0x0093,
+ // Entry 40 - 7F
+ 0x0093, 0x009d, 0x009d, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00a3,
+ 0x00ae, 0x00ae, 0x00b8, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1,
+ 0x00c1, 0x00c1, 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da,
+ 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da,
+ 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da,
+ 0x00da, 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00ed, 0x00ed, 0x00ed,
+ 0x00f7, 0x00f7, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
+ 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x010d, 0x010d, 0x0117,
+ // Entry 80 - BF
+ 0x0117, 0x0124, 0x0124, 0x0124, 0x0124, 0x012f, 0x0136, 0x013f,
+ 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x013f, 0x013f, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a,
+ 0x0152, 0x0152, 0x015a, 0x015a, 0x015a, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0172,
+ 0x0178, 0x0178, 0x0178, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184,
+ 0x0184, 0x018d, 0x018d, 0x019e, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ // Entry C0 - FF
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ // Entry 100 - 13F
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ // Entry 140 - 17F
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ // Entry 180 - 1BF
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ // Entry 1C0 - 1FF
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ // Entry 200 - 23F
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5,
+ 0x01bb,
+ },
+ },
+ { // ug
+ "ئافارچەئابخازچەئاۋېستاچەئافرىكانچەئاكانچەئامخاراچەئاراگونچەئەرەبچەئاسسام" +
+ "چەئاۋارچەئايماراچەئەزەرىچەباشقىرتچەبېلارۇسچەبۇلغارچەبىسلاماچەبامبار" +
+ "اچەبېنگالچەتىبەتچەبىرېتونچەبوسنىيەچەكاتالانچەچېچىنچەچامورروچەكورساچ" +
+ "ەكرىچەچېخچەقەدىمكى سلاۋيانچەچۇۋاشچەۋېلشچەدانىشچەگېرمانچەدىۋەخىچەبۇت" +
+ "انچەئېۋېچەگىرېكچەئىنگلىزچەدۇنيا تىلىئىسپانچەئېستونچەباسكىچەپارسچەفۇ" +
+ "لاچەفىنچەفىجىچەفائېروچەفىرانسۇزچەغەربى فىرىزيەچەئىرېلاندچەسكوتچەگال" +
+ "ىتسىيانچەگۇئارانىچەگۇجاراتچەمانچەخائۇساچەئىبرانىچەھىندىچەھىرى موتۇچ" +
+ "ەخورۋاتچەھايتىچەماجارچەئەرمەنچەخېرېروچەئارىلىق تىلھىندونېزىيەچەئىنت" +
+ "ىرلىڭچەئىبوچەيىچە (سىچۈەن)ئىنۇپىكچەئىدوچەئىسلاندچەئىتاليانچەئىنۇكتى" +
+ "تۇتچەياپونچەياۋاچەگىرۇزىنچەكونگوچەكىكۇيۇچەكىۋانياماچەقازاقچەگىرېنلا" +
+ "ندچەكىخمېرچەكانناداچەكورېيەچەكانۇرىچەكەشمىرچەكۇردچەكومىچەكورنىشچەقى" +
+ "رغىزچەلاتىنچەلىيۇكسېمبۇرگچەگانداچەلىمبۇرگچەلىنگالاچەلائوسچەلىتۋاچەل" +
+ "ۇبا-كاتانگاچەلاتۋىيەچەماداغاسقارچەمارشالچەماۋرىچەماكېدونچەمالايامچە" +
+ "موڭغۇلچەماراتچەمالايچەمالتاچەبىرماچەناۋرۇچەشىمالى ندەبەلەچەنېپالچەن" +
+ "دونگاچەگوللاندىيەچەيېڭى نورۋېگچەنورۋىگىيە بوكمالچەجەنۇبى ندەبەلەچەن" +
+ "اۋاخوچەنيانجاچەئوكسىتانچەئوجىبۋاچەئوروموچەئورىياچەئوسسېتچەچەپەنجابچ" +
+ "ەپالىچەپولەكچەپۇشتۇچەپورتۇگالچەكېچياچەرومانىشچەرۇندىچەرۇمىنىيەچەرۇس" +
+ "چەرىۋانداچەسانسكرىتچەساردىنىيەچەسىندىچەشىمالى سامىچەسانگوچەسىنگالچە" +
+ "سىلوۋاكچەسىلوۋېنىيەچەساموئاچەشوناچەسومالىچەئالبانچەسېربچەسىۋاتىچەجە" +
+ "نۇبى سوتوچەسۇنداچەشۋېدچەسىۋالىچەتامىلچەتېلۇگۇچەتاجىكچەتايلاندچەتىگر" +
+ "ىنياچەتۈركمەنچەسىۋاناچەتوڭانچەتۈركچەسونگاچەتاتارچەتاختىچەئۇيغۇرچەئۇ" +
+ "كرائىنچەئوردوچەئۆزبېكچەۋېنداچەۋىيېتنامچەۋولاپۇكچەۋاللۇنچەۋولوفچەخوس" +
+ "اچەيىددىشچەيورۇباچەجۇاڭچەخەنچەزۇلۇچەئاتجېچەئاچولىچەئاداڭمېچەئادىگېي" +
+ "چەئافرىخىلىچەئاگەمچەئاينۇچەئاككادچەئالېيۇتچەجەنۇبى ئالتاي تىللىرىقە" +
+ "دىمكى ئىنگلىزچەئانگىكاچەئارامۇچەماپۇچەئاراپاخوچەئاراۋاكچەئاسۇچەئاست" +
+ "ۇرىيەچەئاۋادىچەبېلۇجىچەبالىچەباساچەبامۇنچەگومالاچەبېجاچەبېمباچەبېنا" +
+ "چەبافۇتچەبوجپۇرىچەبىكولچەبىنىچەكومچەسىكسىكاچەبىراجچەبودوچەئاكۇسچەبۇ" +
+ "رىياتچەبۇگىچەبۇلۇچەبىلىنچەمېدۇمباچەكاددوچەكارىبچەكايۇگاچەئاتسامچەسې" +
+ "بۇچەچىگاچەچىبچاچەچاغاتايچەچۇكچەمارىچەچىنۇك-ژارگونچەچوكتاۋچەچىپېۋيان" +
+ "چەچېروكىچەچېيېنچەسورانى كۇردچەكوپتىكچەقىرىم تۈركچەكاسزۇبىچەداكوتاچە" +
+ "دارگىۋاچەتايتاچەدېلاۋارېچەسلاۋچەدوگرىبچەدىنكاچەزارماچەدوگرىچەتوۋەن " +
+ "سېربچەدۇئالاچەئوتتۇرا گوللاندىيەچەجولاچەدىيۇلاچەدازاگاچەئېمبۇچەئېفى" +
+ "كچەقەدىمكى مىسىرچەئېكاجۇكچەئېلامىتچەئوتتۇرا ئەسىر ئىنگلىزچەئېۋوندوچ" +
+ "ەفاڭچەفىلىپپىنچەفونچەئوتتۇرا ئەسىر فىرانسۇزچەقەدىمكى فىرانسۇزچەشىما" +
+ "لى فىرىزيەچەشەرقى فىرىزيەچەفىرىئۇلىچەگاچەگايوچەگىباياچەگىزچەگىلبېرت" +
+ "چەئوتتۇرا ئەسىر ئېگىزلىك گېرمانچەقەدىمكى ئېگىزلىك گېرمانچەگوندىچەگو" +
+ "رونتالوچەگوتچەگرېبوچەقەدىمكى گىرېكچەگېرمانچە شىۋىتسارىيەگۇسىچەگىۋىچ" +
+ "ىنچەھەيدەچەھاۋايچەخىلىگاينونچەخىتتىتچەمۆڭچەيۇقىرىقى سېربچەخۇپاچەئىب" +
+ "انچەئىبىبىئوچەئىلوكانوچەئىنگۇشچەلوجبانچەنگومباچەماچامچەئىبرانى پارس" +
+ "چەئىبرانى ئەرەبچەقارا-قالپاقچەكابىلېچەكاچىنچەجۇچەكامباچەكاۋىچەكابار" +
+ "دەيچەكانېمبۇچەتياپچەماكوندېچەكابۇۋېردىيانچەكوروچەكاسىچەخوتەنچەكويرا" +
+ " چىنىچەكاكوچەكالېنجىنچەكىمبۇندۇچەكونكانىچەكوسرايېچەكىپەللېچەقاراچاي-" +
+ "بالقارچەكارەلچەكۇرۇكچەشامبالاچەبافىياچەكولىشچەقۇمۇقچەكۇتەنايچەلادىن" +
+ "وچەلانگىچەلانداچەلامباچەلېزگىنچەمونگوچەلوزىچەلۇبا-لۇئاچەلۇيسېنگوچەل" +
+ "ۇنداچەلۇئوچەمىزوچەلۇياچەمادۇرېسچەمافاچەماگاخىچەمايتىلىچەماكاسارچەما" +
+ "ندىنگوچەماسايچەماباچەموكشاچەماندارچەمېندېچەمېرۇچەمورىسيېنچەئوتتۇرا " +
+ "ئەسىر ئىرېلاندچەماكۇۋاچەمېتاچە’مىكماكچەمىناڭكابائۇچەمانجۇچەمانىپۇرى" +
+ "چەموخوكچەموسسىچەمۇنداڭچەكۆپ تىللاركىرىكچەمىراندېسچەمارۋارىچەميېنېچە" +
+ "ئېرزاچەناپولىچەناماچەتۆۋەن گېرمانچەنېۋارىچەنىئاسچەنيۇئېچەكۋاسىيوچەن" +
+ "گېمبۇنچەنوغايچەقەدىمكى نورۋېگچەنىكوچەشىمالى سوتوچەمۇئېرچەنېۋارچەنيا" +
+ "مۋېزىچەنىيانكولېچەنىئوروچەنىزەماچەئوساگېلارچەئوسمان تۈركچەپانگاسىنا" +
+ "نچەپەھلەۋىچەپامپانگاچەپاپىيامەنتۇچەپالاۋچەقەدىمكى پارىسچەفىنىكىيەچە" +
+ "پوناپېئانچەقەدىمكى پروۋېنچالچەراجاستانچەراپانىيچەرومبوچەسىگانچەئارو" +
+ "مانچەرىۋاچەسانداۋېچەياقۇتچەسامارىتانچەسامبۇرۇچەساساكچەسانتالىچەنگام" +
+ "بايچەسانگۇچەسىتسىلىيەچەشوتلاندىيەچەسېكنېكاچەسېناچەسېلكاپچەشەرقىي سو" +
+ "ڭخايچەقەدىمكى ئىرېلاندچەشىلخاچەشانچەچاد ئەرەبچەسىداموچەجەنۇبى سامى " +
+ "تىللىرىلۇلې سامىچەئىنارى سامىچەسىكولت سامىچەسونىنكەچەسوغدىچەسىرانان" +
+ "-توڭوچەسېرېرچەساخوچەسۇكۇماچەسۇسۇچەسۈمەرچەكومورىچەكونگو سىۋالىچەكلاسس" +
+ "ىك سۈرىيەچەسۈرىيەچەتېمنېچەتېسوچەتېرېناچەتېتۇمچەتىگرېچەتىۋچەتوكېلاۋچ" +
+ "ەكىلىنگونچەتىلىنگىتچەتاماشېكچەنياسا توڭانچەتوك-پىسىنچەتوروكوچەسىمشي" +
+ "انچەتۇمبۇكاچەتۇۋالۇچەشىمالىي سوڭخايچەتوۋاچەمەركىزى ئاتلاس تاماچاگىت" +
+ "ئۇدمۇرتچەئۇگارىتىكچەئۇمبۇندۇچەغول تىلۋايچەۋوتېچەۋۇنجوچەۋالسېرچەۋولا" +
+ "يتاچەۋارايچەۋاشوچەقالماقچەسوگاچەياۋچەياپچەياڭبەنچەيېمباچەگۇاڭدوڭچەز" +
+ "اپوتېكچەبىلىس بەلگىلىرىزېناگاچەئۆلچەملىك ماراكەش تامازىتچەزۇنىچەتىل" +
+ " مەزمۇنى يوقزازاچەھازىرقى زامان ئۆلچەملىك ئەرەبچەئاۋستىرىيە گېرمانچە" +
+ "شىۋىتسارىيە ئېگىزلىك گېرمانچەئاۋسترالىيە ئىنگلىزچەكانادا ئىنگلىزچەئ" +
+ "ەنگلىيە ئىنگلىزچەئامېرىكا ئىنگلىزچەلاتىن ئامېرىكا ئىسپانچەياۋروپا ئ" +
+ "ىسپانچەمېكسىكا ئىسپانچەكانادا فىرانسۇزچەشىۋىتسارىيە فىرانسۇزچەبىراز" +
+ "ىلىيە پورتۇگالچەياۋروپا پورتۇگالچەسېرب-كرودىيەچەئاددىي خەنچەمۇرەككە" +
+ "پ خەنچە",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x001e, 0x0030, 0x0044, 0x0052, 0x0064, 0x0076,
+ 0x0084, 0x0094, 0x00a2, 0x00b4, 0x00c4, 0x00d6, 0x00e8, 0x00f8,
+ 0x010a, 0x011c, 0x012c, 0x013a, 0x014c, 0x015e, 0x0170, 0x017e,
+ 0x0190, 0x019e, 0x01a8, 0x01b2, 0x01d3, 0x01e1, 0x01ed, 0x01fb,
+ 0x020b, 0x021b, 0x0229, 0x0235, 0x0243, 0x0255, 0x0268, 0x0278,
+ 0x0288, 0x0296, 0x02a2, 0x02ae, 0x02b8, 0x02c4, 0x02d4, 0x02e8,
+ 0x0305, 0x0319, 0x0325, 0x033d, 0x0351, 0x0363, 0x036d, 0x037d,
+ 0x038f, 0x039d, 0x03b2, 0x03c2, 0x03d0, 0x03de, 0x03ee, 0x03fe,
+ // Entry 40 - 7F
+ 0x0413, 0x042d, 0x0443, 0x044f, 0x0466, 0x0478, 0x0484, 0x0496,
+ 0x04aa, 0x04c2, 0x04d0, 0x04dc, 0x04ee, 0x04fc, 0x050c, 0x0522,
+ 0x0530, 0x0546, 0x0556, 0x0568, 0x0578, 0x0588, 0x0598, 0x05a4,
+ 0x05b0, 0x05c0, 0x05d0, 0x05de, 0x05fa, 0x0608, 0x061a, 0x062c,
+ 0x063a, 0x0648, 0x0663, 0x0675, 0x068d, 0x069d, 0x06ab, 0x06bd,
+ 0x06cf, 0x06df, 0x06ed, 0x06fb, 0x0709, 0x0717, 0x0725, 0x0744,
+ 0x0752, 0x0762, 0x077a, 0x0793, 0x07b6, 0x07d5, 0x07e5, 0x07f5,
+ 0x0809, 0x081b, 0x082b, 0x083b, 0x084f, 0x085f, 0x086b, 0x0879,
+ // Entry 80 - BF
+ 0x0887, 0x089b, 0x08a9, 0x08bb, 0x08c9, 0x08dd, 0x08e7, 0x08f9,
+ 0x090d, 0x0923, 0x0931, 0x094a, 0x0958, 0x0968, 0x097a, 0x0992,
+ 0x09a2, 0x09ae, 0x09be, 0x09ce, 0x09da, 0x09ea, 0x0a03, 0x0a11,
+ 0x0a1d, 0x0a2d, 0x0a3b, 0x0a4b, 0x0a59, 0x0a6b, 0x0a7f, 0x0a91,
+ 0x0aa1, 0x0aaf, 0x0abb, 0x0ac9, 0x0ad7, 0x0ae5, 0x0af5, 0x0b09,
+ 0x0b17, 0x0b27, 0x0b35, 0x0b49, 0x0b5b, 0x0b6b, 0x0b79, 0x0b85,
+ 0x0b95, 0x0ba5, 0x0bb1, 0x0bbb, 0x0bc7, 0x0bd5, 0x0be5, 0x0bf7,
+ 0x0c09, 0x0c09, 0x0c1f, 0x0c2d, 0x0c3b, 0x0c4b, 0x0c4b, 0x0c5d,
+ // Entry C0 - FF
+ 0x0c5d, 0x0c85, 0x0ca6, 0x0cb8, 0x0cc8, 0x0cd4, 0x0cd4, 0x0ce8,
+ 0x0ce8, 0x0cfa, 0x0cfa, 0x0cfa, 0x0d06, 0x0d06, 0x0d1c, 0x0d1c,
+ 0x0d2c, 0x0d3c, 0x0d48, 0x0d48, 0x0d54, 0x0d62, 0x0d62, 0x0d72,
+ 0x0d7e, 0x0d8c, 0x0d8c, 0x0d98, 0x0da6, 0x0da6, 0x0da6, 0x0db8,
+ 0x0dc6, 0x0dd2, 0x0dd2, 0x0ddc, 0x0dee, 0x0dee, 0x0dee, 0x0dfc,
+ 0x0dfc, 0x0e08, 0x0e16, 0x0e28, 0x0e34, 0x0e40, 0x0e4e, 0x0e60,
+ 0x0e6e, 0x0e7c, 0x0e8c, 0x0e9c, 0x0ea8, 0x0eb4, 0x0ec2, 0x0ed4,
+ 0x0ede, 0x0eea, 0x0f05, 0x0f15, 0x0f29, 0x0f39, 0x0f47, 0x0f60,
+ // Entry 100 - 13F
+ 0x0f70, 0x0f70, 0x0f87, 0x0f99, 0x0fa9, 0x0fbb, 0x0fc9, 0x0fdd,
+ 0x0fe9, 0x0ff9, 0x1007, 0x1015, 0x1023, 0x103a, 0x103a, 0x104a,
+ 0x1071, 0x107d, 0x108d, 0x109d, 0x10ab, 0x10b9, 0x10b9, 0x10d6,
+ 0x10e8, 0x10fa, 0x1126, 0x1126, 0x1138, 0x1138, 0x1142, 0x1156,
+ 0x1156, 0x1160, 0x1160, 0x118e, 0x11b1, 0x11b1, 0x11d0, 0x11ed,
+ 0x1201, 0x1209, 0x1209, 0x1209, 0x1215, 0x1225, 0x1225, 0x122f,
+ 0x1241, 0x1241, 0x127c, 0x12ac, 0x12ac, 0x12ba, 0x12d0, 0x12da,
+ 0x12e8, 0x1305, 0x132c, 0x132c, 0x132c, 0x1338, 0x134a, 0x1358,
+ // Entry 140 - 17F
+ 0x1358, 0x1366, 0x1366, 0x137e, 0x138e, 0x1398, 0x13b5, 0x13b5,
+ 0x13c1, 0x13cf, 0x13e3, 0x13f7, 0x1407, 0x1407, 0x1407, 0x1417,
+ 0x1427, 0x1435, 0x1450, 0x146d, 0x146d, 0x1486, 0x1496, 0x14a4,
+ 0x14ac, 0x14ba, 0x14c6, 0x14da, 0x14ec, 0x14f8, 0x150a, 0x1526,
+ 0x1526, 0x1532, 0x1532, 0x153e, 0x154c, 0x1563, 0x1563, 0x1563,
+ 0x156f, 0x1583, 0x1597, 0x1597, 0x15a9, 0x15bb, 0x15cd, 0x15ec,
+ 0x15ec, 0x15ec, 0x15fa, 0x1608, 0x161a, 0x162a, 0x1638, 0x1646,
+ 0x1658, 0x1668, 0x1676, 0x1684, 0x1692, 0x16a2, 0x16a2, 0x16a2,
+ // Entry 180 - 1BF
+ 0x16a2, 0x16a2, 0x16a2, 0x16b0, 0x16bc, 0x16bc, 0x16bc, 0x16d1,
+ 0x16e5, 0x16f3, 0x16ff, 0x170b, 0x1717, 0x1717, 0x1717, 0x1729,
+ 0x1735, 0x1745, 0x1757, 0x1769, 0x177d, 0x178b, 0x1797, 0x17a5,
+ 0x17b5, 0x17c3, 0x17cf, 0x17e3, 0x1811, 0x1821, 0x1830, 0x1840,
+ 0x185a, 0x1868, 0x187c, 0x188a, 0x1898, 0x1898, 0x18a8, 0x18bb,
+ 0x18c9, 0x18dd, 0x18ef, 0x18ef, 0x18fd, 0x190b, 0x190b, 0x190b,
+ 0x191b, 0x1927, 0x1942, 0x1952, 0x1960, 0x196e, 0x196e, 0x1980,
+ 0x1992, 0x19a0, 0x19bf, 0x19bf, 0x19cb, 0x19e4, 0x19f2, 0x1a00,
+ // Entry 1C0 - 1FF
+ 0x1a14, 0x1a2a, 0x1a3a, 0x1a4a, 0x1a60, 0x1a79, 0x1a91, 0x1aa3,
+ 0x1ab7, 0x1ad1, 0x1adf, 0x1adf, 0x1adf, 0x1adf, 0x1afc, 0x1afc,
+ 0x1b10, 0x1b10, 0x1b10, 0x1b26, 0x1b26, 0x1b4b, 0x1b4b, 0x1b4b,
+ 0x1b5f, 0x1b71, 0x1b71, 0x1b71, 0x1b71, 0x1b7f, 0x1b8d, 0x1b8d,
+ 0x1b8d, 0x1b8d, 0x1b9f, 0x1bab, 0x1bbd, 0x1bcb, 0x1be1, 0x1bf3,
+ 0x1c01, 0x1c13, 0x1c13, 0x1c25, 0x1c33, 0x1c49, 0x1c61, 0x1c61,
+ 0x1c61, 0x1c73, 0x1c7f, 0x1c7f, 0x1c8f, 0x1cac, 0x1ccf, 0x1ccf,
+ 0x1cdd, 0x1ce7, 0x1cfc, 0x1d0c, 0x1d0c, 0x1d0c, 0x1d30, 0x1d45,
+ // Entry 200 - 23F
+ 0x1d5e, 0x1d77, 0x1d89, 0x1d97, 0x1db2, 0x1dc0, 0x1dcc, 0x1dcc,
+ 0x1ddc, 0x1de8, 0x1df6, 0x1e06, 0x1e21, 0x1e40, 0x1e50, 0x1e50,
+ 0x1e50, 0x1e5e, 0x1e6a, 0x1e7a, 0x1e88, 0x1e96, 0x1ea0, 0x1eb2,
+ 0x1eb2, 0x1ec6, 0x1eda, 0x1eda, 0x1eec, 0x1f05, 0x1f1a, 0x1f1a,
+ 0x1f2a, 0x1f2a, 0x1f3c, 0x1f3c, 0x1f4e, 0x1f5e, 0x1f7d, 0x1f89,
+ 0x1fb7, 0x1fc9, 0x1fdf, 0x1ff3, 0x2000, 0x200a, 0x200a, 0x200a,
+ 0x200a, 0x200a, 0x2016, 0x2016, 0x2024, 0x2034, 0x2046, 0x2054,
+ 0x2060, 0x2060, 0x2060, 0x2070, 0x2070, 0x207c, 0x2086, 0x2090,
+ // Entry 240 - 27F
+ 0x20a0, 0x20ae, 0x20ae, 0x20c0, 0x20d2, 0x20ef, 0x20ef, 0x20ff,
+ 0x2133, 0x213f, 0x215b, 0x2167, 0x21a2, 0x21a2, 0x21c7, 0x21ff,
+ 0x2228, 0x2247, 0x226a, 0x228d, 0x22b9, 0x22d8, 0x22f7, 0x22f7,
+ 0x2318, 0x2343, 0x2343, 0x2343, 0x236c, 0x238f, 0x238f, 0x23aa,
+ 0x23c1, 0x23dc,
+ },
+ },
+ { // uk
+ ukLangStr,
+ ukLangIdx,
+ },
+ { // ur
+ urLangStr,
+ urLangIdx,
+ },
+ { // ur-IN
+ "افریقیکارسیکائیکنڑکردلٹويایزرمہمعیاری مراقشی تمازیقیجدید معیاری عربیآسان" +
+ " چینی",
+ []uint16{ // 609 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ // Entry 40 - 7F
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x0024, 0x0024, 0x0024, 0x0024, 0x002a,
+ 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+ 0x002a, 0x002a, 0x002a, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ // Entry 80 - BF
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ // Entry C0 - FF
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ // Entry 100 - 13F
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ // Entry 140 - 17F
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ // Entry 180 - 1BF
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ // Entry 1C0 - 1FF
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ // Entry 200 - 23F
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ // Entry 240 - 27F
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0095,
+ },
+ },
+ { // uz
+ uzLangStr,
+ uzLangIdx,
+ },
+ { // uz-Arab
+ "دریپشتواوزبیک",
+ []uint16{ // 170 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ // Entry 40 - 7F
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ // Entry 80 - BF
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x001a,
+ },
+ },
+ { // uz-Cyrl
+ "АбхазчаАфриканчаАмхарчаАрабчаАссамчаОзарбайжончаБеларусчаБолгарчаБенгалч" +
+ "аТибетчаБосниячаКаталанчаЧехчаУэлсчаДаниячаОлмончаГрекчаИнглизчаЭсп" +
+ "ерантоИспанчаЭстончаБаскчаФорсчаФинчаФижичаФарэрчаФранцузчаҒарбий ф" +
+ "ризианчаИрландчаГалицийчаГуараниГужаратиХаусаИбронийҲиндчаХорватчаГ" +
+ "аитианчаВенгрчаАрманчаИндонезиячаИгбоИсландчаИталянчаЯпончаЯванчаГр" +
+ "узинчаҚозоқчаХмерчаКаннадаКорейсчаКашмирчаКурдчаҚирғизчаЛотинчаЛюкс" +
+ "ембургчаЛаоЛитвачаЛатишчаМалагасиМаориМакедончаМалайаламМаратиМалай" +
+ "чаМальтачаБирманчаНепалчаГолландчаНорвегча НинорскНорвегча БокмалОр" +
+ "ияПанжобчаПолякчаПуштуПортугалчаКвечуаРоманчаРуминчаРусчаСанскритча" +
+ "СиндхиСинхалаСловакчаСловенчаСомаличаАлбанчаСербчаСунданчаШведчаСуа" +
+ "хилиТамилчаТелугуТожикчаТайчаТигриньяТуркманчаТонгочаТуркчаТатарчаУ" +
+ "йғурчаУкраинчаУрдуЎзбекВьетнамчаВолофчаХосаЙорубаХитойчаЗулуФилипин" +
+ "оШвейцария немисчасиГавайчаНомаълум тилСтандарт Марокаш ТамазитТил " +
+ "таркиби йўқЛотин Америка испанчасиФламандча",
+ []uint16{ // 604 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000e, 0x000e, 0x0020, 0x0020, 0x002e, 0x002e,
+ 0x003a, 0x0048, 0x0048, 0x0048, 0x0060, 0x0060, 0x0072, 0x0082,
+ 0x0082, 0x0082, 0x0092, 0x00a0, 0x00a0, 0x00b0, 0x00c2, 0x00c2,
+ 0x00c2, 0x00c2, 0x00c2, 0x00cc, 0x00cc, 0x00cc, 0x00d8, 0x00e6,
+ 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x0100, 0x0110, 0x0122, 0x0130,
+ 0x013e, 0x014a, 0x0156, 0x0156, 0x0160, 0x016c, 0x017a, 0x018c,
+ 0x01ab, 0x01bb, 0x01bb, 0x01cd, 0x01db, 0x01eb, 0x01eb, 0x01f5,
+ 0x0203, 0x020f, 0x020f, 0x021f, 0x0231, 0x023f, 0x024d, 0x024d,
+ // Entry 40 - 7F
+ 0x024d, 0x0263, 0x0263, 0x026b, 0x026b, 0x026b, 0x026b, 0x027b,
+ 0x028b, 0x028b, 0x0297, 0x02a3, 0x02b3, 0x02b3, 0x02b3, 0x02b3,
+ 0x02c1, 0x02c1, 0x02cd, 0x02db, 0x02eb, 0x02eb, 0x02fb, 0x0307,
+ 0x0307, 0x0307, 0x0317, 0x0325, 0x033d, 0x033d, 0x033d, 0x033d,
+ 0x0343, 0x0351, 0x0351, 0x035f, 0x036f, 0x036f, 0x0379, 0x038b,
+ 0x039d, 0x039d, 0x03a9, 0x03b7, 0x03c7, 0x03d7, 0x03d7, 0x03d7,
+ 0x03e5, 0x03e5, 0x03f7, 0x0416, 0x0433, 0x0433, 0x0433, 0x0433,
+ 0x0433, 0x0433, 0x0433, 0x043b, 0x043b, 0x044b, 0x044b, 0x0459,
+ // Entry 80 - BF
+ 0x0463, 0x0477, 0x0483, 0x0491, 0x0491, 0x049f, 0x04a9, 0x04a9,
+ 0x04bd, 0x04bd, 0x04c9, 0x04c9, 0x04c9, 0x04d7, 0x04e7, 0x04f7,
+ 0x04f7, 0x04f7, 0x0507, 0x0515, 0x0521, 0x0521, 0x0521, 0x0531,
+ 0x053d, 0x054b, 0x0559, 0x0565, 0x0573, 0x057d, 0x058d, 0x059f,
+ 0x059f, 0x05ad, 0x05b9, 0x05b9, 0x05c7, 0x05c7, 0x05d5, 0x05e5,
+ 0x05ed, 0x05f7, 0x05f7, 0x0609, 0x0609, 0x0609, 0x0617, 0x061f,
+ 0x061f, 0x062b, 0x062b, 0x0639, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ // Entry C0 - FF
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ // Entry 100 - 13F
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641,
+ 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0651,
+ 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651,
+ 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651,
+ 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651,
+ 0x0651, 0x0651, 0x0676, 0x0676, 0x0676, 0x0676, 0x0676, 0x0676,
+ // Entry 140 - 17F
+ 0x0676, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ // Entry 180 - 1BF
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ // Entry 1C0 - 1FF
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ // Entry 200 - 23F
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684, 0x0684,
+ 0x0684, 0x0684, 0x0684, 0x0684, 0x069b, 0x069b, 0x069b, 0x069b,
+ 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b,
+ 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b,
+ // Entry 240 - 27F
+ 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b, 0x069b,
+ 0x06c9, 0x06c9, 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x06e5,
+ 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0x0711, 0x0711, 0x0711, 0x0711,
+ 0x0711, 0x0711, 0x0711, 0x0723,
+ },
+ },
+ { // vai
+ "ꕉꕪꘋꕉꕆꕌꔸꕞꕌꖝꔆꕞꖩꔻꗂꔠꗸꘋꗩꕭꔷꗿꗡꕧꕮꔧꗥꗷꘋꕶꕱꕐꘊꔧꗨꗡꔻꘂꘋꗱꘋꔻꕌꖙꕢꔦꔺꖽꔟꗸꘋꔤꖆꕇꔻꘂꘋꔤꕼꔤꕚꔷꘂꘋꕧꕐꕇꔧꕧꕙꕇꔧ" +
+ "ꕃꘈꗢꖏꔸꘂꘋꕮꔒꔀꗩꕆꔻꕇꕐꔷꗍꔿꖛꕨꔬꗁꔒꔻꕶꕿꕃꔤꖄꕆꕇꘂꘋꗐꖺꔻꘂꘋꕟꖙꕡꖇꕮꔷꖬꔨꗵꘋꕚꕆꔷꕚꔤꗋꕃꖳꖴꔓꕇꘂꘋꖺꖦꔲꕩꕯ" +
+ "ꕆꔧꖎꖄꕑꕦꕇꔧꖮꖨꕙꔤ",
+ []uint16{ // 558 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x0036,
+ 0x0036, 0x0036, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+ 0x003f, 0x003f, 0x003f, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x005d, 0x005d, 0x0066,
+ 0x0066, 0x0066, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x007e,
+ 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x0087,
+ 0x0087, 0x008d, 0x008d, 0x008d, 0x008d, 0x0099, 0x0099, 0x0099,
+ // Entry 40 - 7F
+ 0x0099, 0x00ab, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
+ 0x00c0, 0x00c0, 0x00cc, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00ed, 0x00ed, 0x00ed, 0x00ed,
+ 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed,
+ 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed,
+ 0x00ed, 0x00ed, 0x00ed, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff,
+ 0x0108, 0x0108, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e,
+ 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x0117, 0x0120,
+ // Entry 80 - BF
+ 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x013b, 0x014a, 0x0153,
+ 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153,
+ 0x0153, 0x0153, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c,
+ 0x0168, 0x0168, 0x0171, 0x0171, 0x0171, 0x0177, 0x0177, 0x0177,
+ 0x0177, 0x0177, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x018f,
+ 0x0195, 0x0195, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
+ 0x01a4, 0x01ad, 0x01ad, 0x01b6, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ // Entry C0 - FF
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ // Entry 100 - 13F
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ // Entry 140 - 17F
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ // Entry 180 - 1BF
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ // Entry 1C0 - 1FF
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ // Entry 200 - 23F
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01c2,
+ },
+ },
+ { // vai-Latn
+ "AkaŋAmiháriLahabuBhelarusaŋBhɔgerɛŋBhɛŋgáliChɛJamáĩHɛlɛŋPooPanyɛĩPɛɛsiyɛ" +
+ "ŋFɛŋsiHawusaHíiŋdiHɔŋgérɛŋÍndonisiyɛŋÍgboItáliyɛŋJapaníĩJavaníĩKimɛ" +
+ "ɛ̃ tɛKoríyɛŋMaléeeBhɛmísiNipaliDɔchiPuŋjabhiPɔ́lésiPotokíiRomíniyɛŋ" +
+ "RɔshiyɛŋRawundaSomáliSúwídɛŋTamíliTáiTɔ́kiYukureniyɛŋƆduViyamíĩYórób" +
+ "haChaniĩZúluVai",
+ []uint16{ // 558 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000d, 0x000d,
+ 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0029,
+ 0x0029, 0x0029, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x003f, 0x003f, 0x003f, 0x003f, 0x0047, 0x004a, 0x004a, 0x0052,
+ 0x0052, 0x0052, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0065,
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006b,
+ 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0080, 0x0080, 0x0080,
+ // Entry 40 - 7F
+ 0x0080, 0x008e, 0x008e, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x009e, 0x009e, 0x00a7, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0,
+ 0x00b0, 0x00b0, 0x00bd, 0x00bd, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00ce, 0x00ce, 0x00d7, 0x00d7, 0x00d7,
+ 0x00dd, 0x00dd, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3,
+ 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f6,
+ // Entry 80 - BF
+ 0x00f6, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x010a, 0x0115, 0x011c,
+ 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c,
+ 0x011c, 0x011c, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
+ 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0139, 0x0139, 0x0139,
+ 0x0139, 0x0139, 0x0140, 0x0140, 0x0140, 0x0140, 0x0140, 0x014d,
+ 0x0151, 0x0151, 0x0151, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x0163, 0x0163, 0x016a, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ // Entry C0 - FF
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ // Entry 100 - 13F
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ // Entry 140 - 17F
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ // Entry 180 - 1BF
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ // Entry 1C0 - 1FF
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ // Entry 200 - 23F
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f,
+ 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x0172,
+ },
+ },
+ { // vi
+ viLangStr,
+ viLangIdx,
+ },
+ { // vun
+ "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" +
+ "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" +
+ "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" +
+ "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" +
+ "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" +
+ "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKyi" +
+ "vunjo",
+ []uint16{ // 565 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011,
+ 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030,
+ 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,
+ 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b,
+ 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d,
+ 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085,
+ 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097,
+ // Entry 40 - 7F
+ 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5,
+ 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea,
+ 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd,
+ 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111,
+ // Entry 80 - BF
+ 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135,
+ 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135,
+ 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e,
+ 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
+ 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry C0 - FF
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 100 - 13F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 140 - 17F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 180 - 1BF
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 1C0 - 1FF
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ // Entry 200 - 23F
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x0199, 0x0199, 0x01a1,
+ },
+ },
+ { // wae
+ "AbčasišAfrikánsAmharišArabišAssamesišAymaraSerbaidšanišWísrussišBulgariš" +
+ "BengališTibetišBosnišKatalanišTšečišWalisišDänišTitšMalediwišButaniš" +
+ "GričišEnglišSchpanišEstnišBaskišPersišFinišFidšianišWälšIrišGalizišG" +
+ "uaraniGujaratiHausaHebräišHindiKroatišHaitianišUngarišArmenišIndones" +
+ "išIgboIisländišItalienišJapanišGeorgišKazačišKambodšanišKannadaKorea" +
+ "nišKašmirišKurdišKirgisišLatinišLuxemburgišLingalaLaotišLitauišLetti" +
+ "šMalagásiMaoriMazedonišMalayalamMongolišMarathiMalaíšMaltesišBurmes" +
+ "išNordndebeleNepalesišHoländišNorwegiš NynorskNorwegiš BokmålNyanjaO" +
+ "riyaOsétišPandšabišPolnišPaštuPortugisišQuečuaRätromanišRundiRumäniš" +
+ "RusišRuandišSanskritSindhiNordsamišSangoSingalesišSlowakišSlowenišSa" +
+ "moanišShonaSomališAlbanišSerbišSwaziSüdsothoSundanesišSchwedišSuahel" +
+ "išTamilišTeluguTadšikišThailändišTigrinjaTurkmenišTswanaTongaTürkišT" +
+ "songaTaitišUigurišUkrainišUrduUsbekišVendaVietnamesišWolofXhosaYorub" +
+ "aChinesišZuluEfikFilipinišHawaíanišNordsothoJakutišTetumNiwmelanesiš" +
+ "Unbekannti SchpračWalserÖštričišes TitšSchwizer HočtitšAuštrališes E" +
+ "nglišKanadišes EnglišBritišes EnglišAmerikanišes EnglišLatiamerikani" +
+ "šes SchpanišIberišes SchpanišKanadišes WälšSchwizer WälšFlämišBrasi" +
+ "lianišes PortugisišIberišes PortugisišVereifačts ChinesišTraditionel" +
+ "ls Chinesiš",
+ []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0009, 0x0009, 0x0012, 0x0012, 0x001a, 0x001a,
+ 0x0021, 0x002b, 0x002b, 0x0031, 0x003f, 0x003f, 0x004a, 0x0053,
+ 0x0053, 0x0053, 0x005c, 0x0064, 0x0064, 0x006b, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x007e, 0x007e, 0x007e, 0x0086, 0x008d,
+ 0x0092, 0x009c, 0x00a4, 0x00a4, 0x00ac, 0x00b3, 0x00b3, 0x00bc,
+ 0x00c3, 0x00ca, 0x00d1, 0x00d1, 0x00d7, 0x00e2, 0x00e2, 0x00e8,
+ 0x00e8, 0x00ed, 0x00ed, 0x00f5, 0x00fc, 0x0104, 0x0104, 0x0109,
+ 0x0112, 0x0117, 0x0117, 0x011f, 0x0129, 0x0131, 0x0139, 0x0139,
+ // Entry 40 - 7F
+ 0x0139, 0x0143, 0x0143, 0x0147, 0x0147, 0x0147, 0x0147, 0x0152,
+ 0x015c, 0x015c, 0x0164, 0x0164, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x0175, 0x0175, 0x0182, 0x0189, 0x0192, 0x0192, 0x019c, 0x01a3,
+ 0x01a3, 0x01a3, 0x01ac, 0x01b4, 0x01c0, 0x01c0, 0x01c0, 0x01c7,
+ 0x01ce, 0x01d6, 0x01d6, 0x01dd, 0x01e6, 0x01e6, 0x01eb, 0x01f5,
+ 0x01fe, 0x0207, 0x020e, 0x0216, 0x021f, 0x0228, 0x0228, 0x0233,
+ 0x023d, 0x023d, 0x0247, 0x0258, 0x0269, 0x0269, 0x0269, 0x026f,
+ 0x026f, 0x026f, 0x026f, 0x0274, 0x027c, 0x0287, 0x0287, 0x028e,
+ // Entry 80 - BF
+ 0x0294, 0x029f, 0x02a6, 0x02b2, 0x02b7, 0x02c0, 0x02c6, 0x02ce,
+ 0x02d6, 0x02d6, 0x02dc, 0x02e6, 0x02eb, 0x02f6, 0x02ff, 0x0308,
+ 0x0311, 0x0316, 0x031e, 0x0326, 0x032d, 0x0332, 0x033b, 0x0346,
+ 0x034f, 0x0358, 0x0360, 0x0366, 0x0370, 0x037c, 0x0384, 0x038e,
+ 0x0394, 0x0399, 0x03a1, 0x03a7, 0x03a7, 0x03ae, 0x03b6, 0x03bf,
+ 0x03c3, 0x03cb, 0x03d0, 0x03dc, 0x03dc, 0x03dc, 0x03e1, 0x03e6,
+ 0x03e6, 0x03ec, 0x03ec, 0x03f5, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ // Entry C0 - FF
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ // Entry 100 - 13F
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9,
+ 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03fd, 0x03fd, 0x03fd,
+ 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x0407,
+ 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407,
+ 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407,
+ 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407,
+ 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407,
+ // Entry 140 - 17F
+ 0x0407, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ // Entry 180 - 1BF
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412,
+ 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x041b, 0x041b, 0x041b,
+ // Entry 1C0 - 1FF
+ 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b,
+ 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b,
+ 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b,
+ 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b,
+ 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x0423, 0x0423, 0x0423,
+ 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
+ 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
+ 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
+ // Entry 200 - 23F
+ 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
+ 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423,
+ 0x0423, 0x0423, 0x0423, 0x0423, 0x0428, 0x0428, 0x0428, 0x0428,
+ 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0435, 0x0435,
+ 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435,
+ 0x0435, 0x0435, 0x0435, 0x0435, 0x0448, 0x0448, 0x0448, 0x0448,
+ 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, 0x044e, 0x044e, 0x044e,
+ 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e,
+ // Entry 240 - 27F
+ 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e,
+ 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x0462, 0x0474,
+ 0x0489, 0x049b, 0x04ac, 0x04c1, 0x04dc, 0x04ef, 0x04ef, 0x04ef,
+ 0x0500, 0x050f, 0x050f, 0x0517, 0x0531, 0x0546, 0x0546, 0x0546,
+ 0x055b, 0x0572,
+ },
+ },
+ { // xog
+ "OluakaaniOluamharikiOluwarabuOlubelarusiOlubulugariyaOlubengaliOluceekeO" +
+ "ludaakiOluyonaaniOlungerezaOlusipanyaOluperusiOlufalansaOluhawuzaOlu" +
+ "hinduOluhangareOluyindonezyaOluyiboOluyitaleOlujapaniOlunnajjavaOluk" +
+ "meOlukoreyaOlumalayiOlubbamaOlunepaliOluholandiOlupunjabiOlupolandiO" +
+ "lupotugiiziOlulomaniyaOlulasaOlunarwandaOlusomaliyaOluswideniOlutami" +
+ "iruOluttaayiOlutakeOluyukurayineOlu-uruduOluvyetinaamuOluyorubaOluca" +
+ "yinaOluzzuluOlusoga",
+ []uint16{ // 574 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0028, 0x0035,
+ 0x0035, 0x0035, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f,
+ 0x003f, 0x003f, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0063, 0x0063, 0x006d,
+ 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089,
+ 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x009b, 0x009b, 0x009b,
+ // Entry 40 - 7F
+ 0x009b, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af,
+ 0x00b8, 0x00b8, 0x00c1, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
+ 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00db, 0x00db, 0x00db, 0x00db,
+ 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
+ 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
+ 0x00db, 0x00db, 0x00db, 0x00e4, 0x00e4, 0x00ec, 0x00ec, 0x00ec,
+ 0x00f5, 0x00f5, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
+ 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0109, 0x0109, 0x0113,
+ // Entry 80 - BF
+ 0x0113, 0x011f, 0x011f, 0x011f, 0x011f, 0x012a, 0x0131, 0x013c,
+ 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c,
+ 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0151, 0x0151, 0x015b, 0x015b, 0x015b, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x0178,
+ 0x0181, 0x0181, 0x0181, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e,
+ 0x018e, 0x0197, 0x0197, 0x01a0, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ // Entry C0 - FF
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ // Entry 100 - 13F
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ // Entry 140 - 17F
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ // Entry 180 - 1BF
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ // Entry 1C0 - 1FF
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ // Entry 200 - 23F
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01af,
+ },
+ },
+ { // yav
+ "akánɛamalíképakaspielúsebulgálɛpengálɛ́ɛcɛ́kɛ́ɛŋndiámanyavánɛíŋgilísénu" +
+ "ɛspanyɔ́lɛnupɛ́lisɛfeleŋsípakasíndíɔ́ŋgɛíndonísiɛíboitáliɛndiámanyá" +
+ "vanɛkímɛɛkolíemáliɛbímanɛnunipálɛnilándɛnupunsapíɛ́nupolonɛ́ɛnupɔlit" +
+ "ukɛ́ɛnulumɛ́ŋɛnulúsenuluándɛ́ɛnusomalíɛnusuetuanutámulenutáyɛnutúluk" +
+ "enukeleniɛ́ŋɛnulutúnufiɛtnamíɛŋnuyolúpasinúɛnusulúnuasue",
+ []uint16{ // 577 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f,
+ 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x001e, 0x0027,
+ 0x0027, 0x0027, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x004a, 0x004a, 0x004a, 0x004a, 0x0052, 0x005e, 0x005e, 0x006e,
+ 0x006e, 0x006e, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083,
+ 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0088,
+ 0x0088, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097,
+ // Entry 40 - 7F
+ 0x0097, 0x00a3, 0x00a3, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
+ 0x00af, 0x00af, 0x00b7, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ 0x00cd, 0x00cd, 0x00cd, 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00dc,
+ 0x00e6, 0x00e6, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef,
+ 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00fd, 0x00fd, 0x010a,
+ // Entry 80 - BF
+ 0x010a, 0x011a, 0x011a, 0x011a, 0x011a, 0x0127, 0x012e, 0x013c,
+ 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c,
+ 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0160, 0x0160, 0x0160,
+ 0x0160, 0x0160, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0179,
+ 0x0180, 0x0180, 0x0180, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190,
+ 0x0190, 0x0199, 0x0199, 0x01a0, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ // Entry C0 - FF
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ // Entry 100 - 13F
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ // Entry 140 - 17F
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ // Entry 180 - 1BF
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ // Entry 1C0 - 1FF
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ // Entry 200 - 23F
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ // Entry 240 - 27F
+ 0x01ad,
+ },
+ },
+ { // yi
+ "אַפֿאַראַפֿריקאַנסאַמהאַרישאַראַגאנישאַראַבישאַסאַמישאַזערביידזשאַנישבעל" +
+ "אַרוסישבולגאַרישבענגאַלישטיבעטישברעטאנישבאסנישקאַטאַלאנישטשעכישקלוי" +
+ "סטער־סלאַווישוועלשישדענישדײַטשגריכישענגלישעספּעראַנטאשפּאַנישעסטישב" +
+ "אַסקישפּערסישפֿינישפֿידזשיפֿאַראישפֿראַנצויזישמערב־פֿריזישאירישסקאט" +
+ "יש געלישגאַלישישמאַנקסהאַוסאַהעברעאישהינדיקראאַטישאונגערישאַרמענישא" +
+ "ינדאנעזישאידאאיסלאַנדישאיטאַליענישיאַפּאַנישיאַוואַנעזישגרוזינישקאַ" +
+ "זאַכישכמערקאַנאַדאַקארעאישקורדישקארנישקירגיזישלאטיינישלוקסעמבורגישל" +
+ "אַאליטווישלעטישמאַארישמאַקעדאנישמאַלאַיאַלאַםמאנגאלישמאַלטעזישבירמא" +
+ "ַנישנעפּאַלישהאלענדישנײַ־נארוועגישנארוועגישאקסיטאַנישאסעטישפּוילישפ" +
+ "ּאַשטאָפּארטוגעזישרומענישרוסישסאַנסקריטסאַרדישסינדהינארדסאַמישסינהא" +
+ "ַלישסלאוואַקישסלאווענישסאַמאאַניששאנאַסאמאַלישאַלבאַנישסערביששוועדי" +
+ "שסוואַהילישטאַמילטורקמענישטאָטערישאוקראַאינישאורדואוזבעקישוויעטנאַמ" +
+ "עזישוואלאַפּוקייִדישכינעזישזולואַקאַדישאַלט ענגלישאַראַמישבאַלינעזי" +
+ "שבײַערישסעבואַנישקרים־טערקישקאַשובישאונטער־סארבישזשאלא־פֿאנימיטל ענ" +
+ "גלישפֿיליפּינאאַלט־פֿראַנצויזישדרום־פֿריזישמזרח־פֿריזישמיטל הויכדוי" +
+ "טשאַלט־ הויכדויטשגאטישאוראַלט־גריכישפידזשי הינדיאייבער־סארבישלאזשבא" +
+ "ָןיידיש־פערסישלאַדינאליווישמיזאנאַפּאליטַנישנידערדײַטשאַלט פּערסישפ" +
+ "ּרייסישרוסינישסיציליאַנישסקאטסאַלט־אירישאונטער שלעזישslyסומערישקאמא" +
+ "רישקאנגא־סוואַהיליששלעזישטיגרעאומבאַוואוסטע שפּראַךמערב פֿלעמישפֿלע" +
+ "מישסערבא־קראאַטיש",
+ []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x000e, 0x000e, 0x0024, 0x0024, 0x0036, 0x004a,
+ 0x005a, 0x006a, 0x006a, 0x006a, 0x008a, 0x008a, 0x009e, 0x00b0,
+ 0x00b0, 0x00b0, 0x00c2, 0x00d0, 0x00e0, 0x00ec, 0x0102, 0x0102,
+ 0x0102, 0x0102, 0x0102, 0x010e, 0x0130, 0x0130, 0x013e, 0x0148,
+ 0x0152, 0x0152, 0x0152, 0x0152, 0x015e, 0x016a, 0x0180, 0x0190,
+ 0x019a, 0x01a8, 0x01b6, 0x01b6, 0x01c2, 0x01d0, 0x01e0, 0x01f8,
+ 0x0210, 0x021a, 0x0231, 0x0241, 0x0241, 0x0241, 0x024d, 0x025b,
+ 0x026b, 0x0275, 0x0275, 0x0285, 0x0285, 0x0295, 0x02a5, 0x02a5,
+ // Entry 40 - 7F
+ 0x02a5, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02c1, 0x02d5,
+ 0x02eb, 0x02eb, 0x02ff, 0x0317, 0x0327, 0x0327, 0x0327, 0x0327,
+ 0x0339, 0x0339, 0x0341, 0x0353, 0x0361, 0x0361, 0x0361, 0x036d,
+ 0x036d, 0x0379, 0x0389, 0x0399, 0x03b1, 0x03b1, 0x03b1, 0x03b1,
+ 0x03b9, 0x03c7, 0x03c7, 0x03d1, 0x03d1, 0x03d1, 0x03df, 0x03f3,
+ 0x040d, 0x041d, 0x041d, 0x041d, 0x042f, 0x0441, 0x0441, 0x0441,
+ 0x0453, 0x0453, 0x0463, 0x047d, 0x048f, 0x048f, 0x048f, 0x048f,
+ 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04af, 0x04af, 0x04af, 0x04bd,
+ // Entry 80 - BF
+ 0x04cd, 0x04e3, 0x04e3, 0x04e3, 0x04e3, 0x04f1, 0x04fb, 0x04fb,
+ 0x050d, 0x051b, 0x0527, 0x053b, 0x053b, 0x054d, 0x0561, 0x0573,
+ 0x0587, 0x0591, 0x05a1, 0x05b3, 0x05bf, 0x05bf, 0x05bf, 0x05bf,
+ 0x05cd, 0x05e1, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ff,
+ 0x05ff, 0x05ff, 0x05ff, 0x05ff, 0x060f, 0x060f, 0x060f, 0x0625,
+ 0x062f, 0x063f, 0x063f, 0x0659, 0x066d, 0x066d, 0x066d, 0x066d,
+ 0x0679, 0x0679, 0x0679, 0x0687, 0x068f, 0x068f, 0x068f, 0x068f,
+ 0x068f, 0x068f, 0x068f, 0x068f, 0x068f, 0x069f, 0x069f, 0x069f,
+ // Entry C0 - FF
+ 0x069f, 0x069f, 0x06b4, 0x06b4, 0x06c4, 0x06c4, 0x06c4, 0x06c4,
+ 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4,
+ 0x06c4, 0x06c4, 0x06d8, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6,
+ 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6,
+ 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6,
+ 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6,
+ 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06f8, 0x06f8, 0x06f8, 0x06f8,
+ 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8,
+ // Entry 100 - 13F
+ 0x06f8, 0x06f8, 0x070e, 0x071e, 0x071e, 0x071e, 0x071e, 0x071e,
+ 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x0738, 0x0738, 0x0738,
+ 0x0738, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, 0x074e,
+ 0x074e, 0x074e, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0777,
+ 0x0777, 0x0777, 0x0777, 0x0777, 0x0799, 0x0799, 0x07b1, 0x07c9,
+ 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9,
+ 0x07c9, 0x07c9, 0x07e4, 0x0801, 0x0801, 0x0801, 0x0801, 0x080b,
+ 0x080b, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, 0x0827,
+ // Entry 140 - 17F
+ 0x0827, 0x0827, 0x083e, 0x083e, 0x083e, 0x083e, 0x0858, 0x0858,
+ 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0868,
+ 0x0868, 0x0868, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
+ 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
+ 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
+ 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
+ 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880,
+ 0x0880, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e, 0x088e,
+ // Entry 180 - 1BF
+ 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a,
+ 0x089a, 0x089a, 0x089a, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
+ 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
+ 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
+ 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
+ 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2,
+ 0x08bc, 0x08bc, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0,
+ 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0,
+ // Entry 1C0 - 1FF
+ 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0,
+ 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08e7, 0x08e7,
+ 0x08e7, 0x08e7, 0x08e7, 0x08e7, 0x08f7, 0x08f7, 0x08f7, 0x08f7,
+ 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7,
+ 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905,
+ 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x091b, 0x0925, 0x0925,
+ 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, 0x0939, 0x0939,
+ 0x0939, 0x0939, 0x0939, 0x0939, 0x0952, 0x0955, 0x0955, 0x0955,
+ // Entry 200 - 23F
+ 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955,
+ 0x0955, 0x0955, 0x0963, 0x0971, 0x0991, 0x0991, 0x0991, 0x099d,
+ 0x099d, 0x099d, 0x099d, 0x099d, 0x099d, 0x09a7, 0x09a7, 0x09a7,
+ 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7,
+ 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09a7,
+ 0x09a7, 0x09a7, 0x09a7, 0x09a7, 0x09d0, 0x09d0, 0x09d0, 0x09d0,
+ 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
+ 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
+ // Entry 240 - 27F
+ 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
+ 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
+ 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09e7,
+ 0x09e7, 0x09e7, 0x09e7, 0x09f5, 0x09f5, 0x09f5, 0x09f5, 0x0a11,
+ },
+ },
+ { // yo
+ "Èdè AfrikaniÈdè AkaniÈdè AmarikiÈdè ArabikiTi AssamÈdè AzerbaijaniÈdè Be" +
+ "larusiÈdè BugariaÈdè BengaliÈdè BretoniÈdè BosniaÈdè CatalaÈdè seeki" +
+ "Èdè WelshiÈdè Ilẹ̀ DenmarkÈdè Ilẹ̀ GemaniÈdè GirikiÈdè Gẹ̀ẹ́sìÈdè E" +
+ "sperantoÈdè SipanisiÈdè EstoniaÈdè BaskiÈdè PasiaÈdè FinisiÈdè Faroe" +
+ "siÈdè FaranséÈdè FrisiaÈdè IrelandÈdè Gaelik ti Ilu ScotlandÈdè Gali" +
+ "ciaÈdè GuaraniÈdè GujaratiÈdè HausaÈdè HeberuÈdè HindiÈdè KroatiaÈdè" +
+ " HungariaÈdè Ile ArmeniaÈdè pipoÈdè IndonasiaIru ÈdèÈdè IboÈdè Icela" +
+ "ndicÈdè ItalianiÈdè JapanisiÈdè JavanasiÈdè GeorgiaÈdè kameriÈdè Kan" +
+ "nadaÈdè KoriaÈdè LatiniÈdè LithuaniaÈdè LatvianuÈdè MacedoniaÈdè mar" +
+ "athiÈdè MalayaÈdè MaltaÈdè BumiisiÈdè NepaliÈdè DukiÈdè NorwayÈdè Oc" +
+ "citaniÈdè PunjabiÈdè Ilẹ̀ PolandiÈdè PọtugiÈdè RomaniaÈdè ̣RọọsiaÈdè" +
+ " RuwandaÈdè awon ara IndoÈdè SindhiÈdè SinhaleseÈdè SlovakiÈdè Slove" +
+ "niaÈdè ara SomaliaÈdè AlbaniaÈdè SerbiaÈdè SesotoÈdè SudaniÈdè Suwid" +
+ "iisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè" +
+ " TọọkisiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈ" +
+ "dè YorùbáÈdè MandariÈdè ṢuluÈdè TagalogiÈdè KlingoniÈdè Serbo-Croati" +
+ "ani",
+ []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0019, 0x0026, 0x0026,
+ 0x0033, 0x003b, 0x003b, 0x003b, 0x004c, 0x004c, 0x005a, 0x0067,
+ 0x0067, 0x0067, 0x0074, 0x0074, 0x0081, 0x008d, 0x0099, 0x0099,
+ 0x0099, 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a4, 0x00b0, 0x00c5,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00e5, 0x00f9, 0x0108, 0x0116,
+ 0x0123, 0x012e, 0x0139, 0x0139, 0x0145, 0x0145, 0x0152, 0x0160,
+ 0x016c, 0x0179, 0x0195, 0x01a2, 0x01af, 0x01bd, 0x01bd, 0x01c8,
+ 0x01d4, 0x01df, 0x01df, 0x01ec, 0x01ec, 0x01fa, 0x020b, 0x020b,
+ // Entry 40 - 7F
+ 0x0215, 0x0224, 0x022d, 0x0236, 0x0236, 0x0236, 0x0236, 0x0245,
+ 0x0253, 0x0253, 0x0261, 0x026f, 0x027c, 0x027c, 0x027c, 0x027c,
+ 0x027c, 0x027c, 0x0288, 0x0295, 0x02a0, 0x02a0, 0x02a0, 0x02a0,
+ 0x02a0, 0x02a0, 0x02a0, 0x02ac, 0x02ac, 0x02ac, 0x02ac, 0x02ac,
+ 0x02ac, 0x02bb, 0x02bb, 0x02c9, 0x02c9, 0x02c9, 0x02c9, 0x02d8,
+ 0x02d8, 0x02d8, 0x02e5, 0x02f1, 0x02fc, 0x0309, 0x0309, 0x0309,
+ 0x0315, 0x0315, 0x031f, 0x031f, 0x032b, 0x032b, 0x032b, 0x032b,
+ 0x0339, 0x0339, 0x0339, 0x0339, 0x0339, 0x0346, 0x0346, 0x035b,
+ // Entry 80 - BF
+ 0x035b, 0x0369, 0x0369, 0x0369, 0x0369, 0x0376, 0x0388, 0x0395,
+ 0x03a8, 0x03a8, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d0, 0x03de,
+ 0x03de, 0x03de, 0x03ef, 0x03fc, 0x0408, 0x0408, 0x0414, 0x0420,
+ 0x042f, 0x043c, 0x0448, 0x0454, 0x0454, 0x045d, 0x046b, 0x0478,
+ 0x0478, 0x0478, 0x0489, 0x0489, 0x0489, 0x0489, 0x0489, 0x0495,
+ 0x049e, 0x04a9, 0x04a9, 0x04b7, 0x04b7, 0x04b7, 0x04b7, 0x04c2,
+ 0x04d0, 0x04de, 0x04de, 0x04eb, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ // Entry C0 - FF
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ // Entry 100 - 13F
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7,
+ 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ // Entry 140 - 17F
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ // Entry 180 - 1BF
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ // Entry 1C0 - 1FF
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ // Entry 200 - 23F
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505,
+ 0x0505, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
+ // Entry 240 - 27F
+ 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513,
+ 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0528,
+ },
+ },
+ { // yo-BJ
+ "Èdè AfrikaniÈdè AkaniÈdè AmarikiÈdè ArabikiTi AssamÈdè AzerbaijaniÈdè Be" +
+ "larusiÈdè BugariaÈdè BengaliÈdè BretoniÈdè BosniaÈdè CatalaÈdè seeki" +
+ "Èdè WelshiÈdè Ilɛ̀ DenmarkÈdè Ilɛ̀ GemaniÈdè GirikiÈdè Gɛ̀ɛ́sìÈdè E" +
+ "sperantoÈdè SipanisiÈdè EstoniaÈdè BaskiÈdè PasiaÈdè FinisiÈdè Faroe" +
+ "siÈdè FaranséÈdè FrisiaÈdè IrelandÈdè Gaelik ti Ilu ScotlandÈdè Gali" +
+ "ciaÈdè GuaraniÈdè GujaratiÈdè HausaÈdè HeberuÈdè HindiÈdè KroatiaÈdè" +
+ " HungariaÈdè Ile ArmeniaÈdè pipoÈdè IndonasiaIru ÈdèÈdè IboÈdè Icela" +
+ "ndicÈdè ItalianiÈdè JapanisiÈdè JavanasiÈdè GeorgiaÈdè kameriÈdè Kan" +
+ "nadaÈdè KoriaÈdè LatiniÈdè LithuaniaÈdè LatvianuÈdè MacedoniaÈdè mar" +
+ "athiÈdè MalayaÈdè MaltaÈdè BumiisiÈdè NepaliÈdè DukiÈdè NorwayÈdè Oc" +
+ "citaniÈdè PunjabiÈdè Ilɛ̀ PolandiÈdè PɔtugiÈdè RomaniaÈdè ̣RɔɔsiaÈdè" +
+ " RuwandaÈdè awon ara IndoÈdè SindhiÈdè SinhaleseÈdè SlovakiÈdè Slove" +
+ "niaÈdè ara SomaliaÈdè AlbaniaÈdè SerbiaÈdè SesotoÈdè SudaniÈdè Suwid" +
+ "iisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè" +
+ " TɔɔkisiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈ" +
+ "dè YorùbáÈdè MandariÈdè ShuluÈdè TagalogiÈdè KlingoniÈdè Serbo-Croat" +
+ "iani",
+ []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0019, 0x0026, 0x0026,
+ 0x0033, 0x003b, 0x003b, 0x003b, 0x004c, 0x004c, 0x005a, 0x0067,
+ 0x0067, 0x0067, 0x0074, 0x0074, 0x0081, 0x008d, 0x0099, 0x0099,
+ 0x0099, 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a4, 0x00b0, 0x00c4,
+ 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00e3, 0x00f5, 0x0104, 0x0112,
+ 0x011f, 0x012a, 0x0135, 0x0135, 0x0141, 0x0141, 0x014e, 0x015c,
+ 0x0168, 0x0175, 0x0191, 0x019e, 0x01ab, 0x01b9, 0x01b9, 0x01c4,
+ 0x01d0, 0x01db, 0x01db, 0x01e8, 0x01e8, 0x01f6, 0x0207, 0x0207,
+ // Entry 40 - 7F
+ 0x0211, 0x0220, 0x0229, 0x0232, 0x0232, 0x0232, 0x0232, 0x0241,
+ 0x024f, 0x024f, 0x025d, 0x026b, 0x0278, 0x0278, 0x0278, 0x0278,
+ 0x0278, 0x0278, 0x0284, 0x0291, 0x029c, 0x029c, 0x029c, 0x029c,
+ 0x029c, 0x029c, 0x029c, 0x02a8, 0x02a8, 0x02a8, 0x02a8, 0x02a8,
+ 0x02a8, 0x02b7, 0x02b7, 0x02c5, 0x02c5, 0x02c5, 0x02c5, 0x02d4,
+ 0x02d4, 0x02d4, 0x02e1, 0x02ed, 0x02f8, 0x0305, 0x0305, 0x0305,
+ 0x0311, 0x0311, 0x031b, 0x031b, 0x0327, 0x0327, 0x0327, 0x0327,
+ 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0342, 0x0342, 0x0356,
+ // Entry 80 - BF
+ 0x0356, 0x0363, 0x0363, 0x0363, 0x0363, 0x0370, 0x0380, 0x038d,
+ 0x03a0, 0x03a0, 0x03ac, 0x03ac, 0x03ac, 0x03bb, 0x03c8, 0x03d6,
+ 0x03d6, 0x03d6, 0x03e7, 0x03f4, 0x0400, 0x0400, 0x040c, 0x0418,
+ 0x0427, 0x0434, 0x0440, 0x044c, 0x044c, 0x0455, 0x0463, 0x0470,
+ 0x0470, 0x0470, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x048b,
+ 0x0494, 0x049f, 0x049f, 0x04ad, 0x04ad, 0x04ad, 0x04ad, 0x04b8,
+ 0x04c6, 0x04d4, 0x04d4, 0x04e1, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ // Entry C0 - FF
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ // Entry 100 - 13F
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec,
+ 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04ec, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ // Entry 140 - 17F
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ // Entry 180 - 1BF
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ // Entry 1C0 - 1FF
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ // Entry 200 - 23F
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa,
+ 0x04fa, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ // Entry 240 - 27F
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508,
+ 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x0508, 0x051d,
+ },
+ },
+ { // zgh
+ "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" +
+ "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" +
+ "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴱⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" +
+ "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" +
+ "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" +
+ "ⵓⵔⴷⵓⵜⵜⴰⴱⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵎⴰⵣⵉⵖⵜ",
+ []uint16{ // 585 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a,
+ 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078,
+ 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111,
+ 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f,
+ 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192,
+ // Entry 40 - 7F
+ 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216,
+ 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240,
+ 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
+ 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240,
+ 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279,
+ 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2,
+ 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8,
+ // Entry 80 - BF
+ 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351,
+ 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351,
+ 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c,
+ 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd,
+ 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed,
+ 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d,
+ 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry C0 - FF
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 100 - 13F
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 140 - 17F
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 180 - 1BF
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 1C0 - 1FF
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 200 - 23F
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ // Entry 240 - 27F
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462,
+ 0x047a,
+ },
+ },
+ { // zh
+ zhLangStr,
+ zhLangIdx,
+ },
+ { // zh-Hant
+ zhHantLangStr,
+ zhHantLangIdx,
+ },
+ { // zh-Hant-HK
+ "阿塞拜疆文巴什基爾文布里多尼文波斯尼亞文加泰隆尼亞文世界語加里西亞文克羅地亞文意大利文格魯吉亞文坎納達文老撾文馬拉加斯文馬拉雅拉姆文馬耳他文奧里" +
+ "雅文盧旺達文信德語斯洛文尼亞文修納文索馬里文泰米爾文湯加文烏爾都文瑞士德文毛里裘斯克里奧爾文西非書面語言(N’ko)伊納里薩米文剛果" +
+ "史瓦希里文瓦爾皮里文摩洛哥標準塔馬齊格特文南阿塞拜疆文奧地利德文瑞士德語澳洲英文加拿大英文英國英文美國英文拉丁美洲西班牙文歐洲西班牙" +
+ "文墨西哥西班牙文加拿大法文瑞士法文荷蘭低地德文巴西葡萄牙語歐洲葡萄牙文摩爾多瓦羅馬尼亞文",
+ []uint16{ // 607 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x002d, 0x003c, 0x004e, 0x004e,
+ 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e,
+ 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ // Entry 40 - 7F
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0090, 0x0090, 0x0090, 0x0090,
+ 0x0090, 0x0090, 0x0090, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00d2, 0x00d2, 0x00d2, 0x00d2,
+ 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2,
+ 0x00d2, 0x00d2, 0x00d2, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry 80 - BF
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00ea,
+ 0x00ea, 0x00ea, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x0105,
+ 0x0105, 0x010e, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a,
+ 0x011a, 0x011a, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,
+ 0x0126, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ // Entry C0 - FF
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ // Entry 100 - 13F
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b,
+ 0x013b, 0x013b, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ // Entry 140 - 17F
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ // Entry 180 - 1BF
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x0162, 0x0162, 0x0180, 0x0180, 0x0180, 0x0180,
+ // Entry 1C0 - 1FF
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
+ // Entry 200 - 23F
+ 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192, 0x0192,
+ 0x0192, 0x0192, 0x0192, 0x0192, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7,
+ 0x01a7, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6,
+ // Entry 240 - 27F
+ 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6,
+ 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01e9, 0x01f8, 0x0204,
+ 0x0210, 0x021f, 0x022b, 0x0237, 0x024f, 0x0261, 0x0276, 0x0276,
+ 0x0285, 0x0291, 0x02a3, 0x02a3, 0x02b5, 0x02c7, 0x02e2,
+ },
+ },
+ { // zu
+ zuLangStr,
+ zuLangIdx,
+ },
+}
+
+var afLangStr string = "" + // Size: 2000 bytes
+ "AbkasiesAfrikaansAkanAmhariesArabiesAssameesAymaraAzerbeidjansBaskirBelo" +
+ "-RussiesBulgaarsBambaraBengaalsTibettaansBretonsBosniesKatalaansTsjetsje" +
+ "nKorsikaansTsjeggiesChuvashWalliesDeensDuitsDivehiDzongkhaEweGrieksEngel" +
+ "sEsperantoSpaansEstniesBaskiesPersiesFinsFidjiaansFaroeesFransWes-FriesI" +
+ "ersSkotse GalliesGalisiesGuaraniGoedjaratiManxHausaHebreeusHindiKroaties" +
+ "HaïtiaansHongaarsArmeensInterlinguaIndonesiesIgboSichuan YiYslandsItalia" +
+ "ansInnuïtiesJapanneesJavaansGeorgiesKongoleesKikuyuKazaksKalaallisutKhme" +
+ "rKannadaKoreaansKasjmirsKoerdiesKorniesKirgisiesLatynLuxemburgsGandaLing" +
+ "aalsLaoLitausLuba-KatangaLettiesMalgassiesMaoriMasedoniesMalabaarsMongoo" +
+ "lsMarathiMaleisMalteesBirmaansNoord-NdebeleNepaleesNederlandsNoorweegse " +
+ "NynorskNoorse BokmålSuid-NdebeleNyanjaOksitaansOromoOriyaOssetiesPandjab" +
+ "iPoolsPasjtoPortugeesQuechuaReto-RomaansRundiRoemeensRussiesRwandeesSans" +
+ "kritSindhiNoord-SamiSangoSinhalaSlowaaksSloweensSamoaansShonaSomaliesAlb" +
+ "aneesSerwiesSwaziSuid-SothoSundaneesSweedsSwahiliTamilTeloegoeTadzjieksT" +
+ "haiTigrinyaTurkmeensTswanaTongaansTurksTsongaTataarsTahitiesUighurOekraï" +
+ "ensOerdoeOezbeeksVendaViëtnameesWolofXhosaJiddisjYorubaSjineesZoeloeAkol" +
+ "iAghemArameesMapucheAsuBembaBenaWes-BalochiBodoSjigaCherokeesSorani Koer" +
+ "diesTaitaZarmaLae SorbiesDualaJola-FonyiEmbuEfikAntieke EgiptiesFilippyn" +
+ "sGaaGagauzGotiesAntieke GrieksSwitserse DuitsGusiiHawaiiesHoog-SorbiesNg" +
+ "ombaMachameKabyleKambaMakondeKabuverdianuKoyra ChiiniKalenjinKomi-Permya" +
+ "ksKonkaniShambalaBafiaLangiLakotaLoziNoord-LuriLuba-LuluaLuoLuyiaMasaiMe" +
+ "ruMorisjenMakhuwa-MeettoMeta’MohawkMundangVeelvuldige taleMasanderaniNam" +
+ "aLae DuitsKwasioN’KoNoord-SothoNuerNyankoleK’iche’RomboRwaSamburuSanguSu" +
+ "id-KoerdiesSenaKoyraboro SenniTachelhitSuid-SamiLule SamiInari SamiSkolt" +
+ " SamiSwahili (Kongo)TesoTetumKlingonTok PisinToemboekaTasawaqSentraal At" +
+ "las TamazightOnbekende of ongeldige taalVaiVunjoWarlpiriSogaStandaard Ma" +
+ "rokkaanse TamazightGeen linguistiese inhoudModerne Standaard ArabiesSwit" +
+ "serse hoog-DuitsNedersaksiesVlaamsMoldawies"
+
+var afLangIdx = []uint16{ // 607 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0015, 0x001d, 0x001d,
+ 0x0024, 0x002c, 0x002c, 0x0032, 0x003e, 0x0044, 0x0050, 0x0058,
+ 0x0058, 0x005f, 0x0067, 0x0071, 0x0078, 0x007f, 0x0088, 0x0091,
+ 0x0091, 0x009b, 0x009b, 0x00a4, 0x00a4, 0x00ab, 0x00b2, 0x00b7,
+ 0x00bc, 0x00c2, 0x00ca, 0x00cd, 0x00d3, 0x00d9, 0x00e2, 0x00e8,
+ 0x00ef, 0x00f6, 0x00fd, 0x00fd, 0x0101, 0x010a, 0x0111, 0x0116,
+ 0x011f, 0x0123, 0x0131, 0x0139, 0x0140, 0x014a, 0x014e, 0x0153,
+ 0x015b, 0x0160, 0x0160, 0x0168, 0x0172, 0x017a, 0x0181, 0x0181,
+ // Entry 40 - 7F
+ 0x018c, 0x0196, 0x0196, 0x019a, 0x01a4, 0x01a4, 0x01a4, 0x01ab,
+ 0x01b4, 0x01be, 0x01c7, 0x01ce, 0x01d6, 0x01df, 0x01e5, 0x01e5,
+ 0x01eb, 0x01f6, 0x01fb, 0x0202, 0x020a, 0x020a, 0x0212, 0x021a,
+ 0x021a, 0x0221, 0x022a, 0x022f, 0x0239, 0x023e, 0x023e, 0x0246,
+ 0x0249, 0x024f, 0x025b, 0x0262, 0x026c, 0x026c, 0x0271, 0x027b,
+ 0x0284, 0x028c, 0x0293, 0x0299, 0x02a0, 0x02a8, 0x02a8, 0x02b5,
+ 0x02bd, 0x02bd, 0x02c7, 0x02d9, 0x02e7, 0x02f3, 0x02f3, 0x02f9,
+ 0x0302, 0x0302, 0x0307, 0x030c, 0x0314, 0x031c, 0x031c, 0x0321,
+ // Entry 80 - BF
+ 0x0327, 0x0330, 0x0337, 0x0343, 0x0348, 0x0350, 0x0357, 0x035f,
+ 0x0367, 0x0367, 0x036d, 0x0377, 0x037c, 0x0383, 0x038b, 0x0393,
+ 0x039b, 0x03a0, 0x03a8, 0x03b0, 0x03b7, 0x03bc, 0x03c6, 0x03cf,
+ 0x03d5, 0x03dc, 0x03e1, 0x03e9, 0x03f2, 0x03f6, 0x03fe, 0x0407,
+ 0x040d, 0x0415, 0x041a, 0x0420, 0x0427, 0x042f, 0x0435, 0x043f,
+ 0x0445, 0x044d, 0x0452, 0x045d, 0x045d, 0x045d, 0x0462, 0x0467,
+ 0x046e, 0x0474, 0x0474, 0x047b, 0x0481, 0x0481, 0x0486, 0x0486,
+ 0x0486, 0x0486, 0x0486, 0x048b, 0x048b, 0x048b, 0x048b, 0x048b,
+ // Entry C0 - FF
+ 0x048b, 0x048b, 0x048b, 0x048b, 0x0492, 0x0499, 0x0499, 0x0499,
+ 0x0499, 0x0499, 0x0499, 0x0499, 0x049c, 0x049c, 0x049c, 0x049c,
+ 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c, 0x049c,
+ 0x049c, 0x04a1, 0x04a1, 0x04a5, 0x04a5, 0x04a5, 0x04b0, 0x04b0,
+ 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0,
+ 0x04b0, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4,
+ 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b4, 0x04b9, 0x04b9, 0x04b9,
+ 0x04b9, 0x04b9, 0x04b9, 0x04b9, 0x04b9, 0x04c2, 0x04c2, 0x04d1,
+ // Entry 100 - 13F
+ 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d1, 0x04d6, 0x04d6,
+ 0x04d6, 0x04d6, 0x04d6, 0x04db, 0x04db, 0x04e6, 0x04e6, 0x04eb,
+ 0x04eb, 0x04f5, 0x04f5, 0x04f5, 0x04f9, 0x04fd, 0x04fd, 0x050d,
+ 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x050d, 0x0516,
+ 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516,
+ 0x0516, 0x0519, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f,
+ 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x0525,
+ 0x0525, 0x0533, 0x0542, 0x0542, 0x0542, 0x0547, 0x0547, 0x0547,
+ // Entry 140 - 17F
+ 0x0547, 0x054f, 0x054f, 0x054f, 0x054f, 0x054f, 0x055b, 0x055b,
+ 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b,
+ 0x0561, 0x0568, 0x0568, 0x0568, 0x0568, 0x0568, 0x056e, 0x056e,
+ 0x056e, 0x0573, 0x0573, 0x0573, 0x0573, 0x0573, 0x057a, 0x0586,
+ 0x0586, 0x0586, 0x0586, 0x0586, 0x0586, 0x0592, 0x0592, 0x0592,
+ 0x0592, 0x059a, 0x059a, 0x05a7, 0x05ae, 0x05ae, 0x05ae, 0x05ae,
+ 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05b6, 0x05bb, 0x05bb, 0x05bb,
+ 0x05bb, 0x05bb, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0,
+ // Entry 180 - 1BF
+ 0x05c0, 0x05c6, 0x05c6, 0x05c6, 0x05ca, 0x05d4, 0x05d4, 0x05de,
+ 0x05de, 0x05de, 0x05e1, 0x05e1, 0x05e6, 0x05e6, 0x05e6, 0x05e6,
+ 0x05e6, 0x05e6, 0x05e6, 0x05e6, 0x05e6, 0x05eb, 0x05eb, 0x05eb,
+ 0x05eb, 0x05eb, 0x05ef, 0x05f7, 0x05f7, 0x0605, 0x060c, 0x060c,
+ 0x060c, 0x060c, 0x060c, 0x0612, 0x0612, 0x0612, 0x0619, 0x0629,
+ 0x0629, 0x0629, 0x0629, 0x0629, 0x0629, 0x0629, 0x0634, 0x0634,
+ 0x0634, 0x0638, 0x0641, 0x0641, 0x0641, 0x0641, 0x0641, 0x0647,
+ 0x0647, 0x0647, 0x0647, 0x0647, 0x064d, 0x0658, 0x065c, 0x065c,
+ // Entry 1C0 - 1FF
+ 0x065c, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664,
+ 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664,
+ 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x0664, 0x066f, 0x066f,
+ 0x066f, 0x066f, 0x066f, 0x066f, 0x066f, 0x0674, 0x0674, 0x0674,
+ 0x0674, 0x0674, 0x0674, 0x0677, 0x0677, 0x0677, 0x0677, 0x067e,
+ 0x067e, 0x067e, 0x067e, 0x067e, 0x0683, 0x0683, 0x0683, 0x0683,
+ 0x0690, 0x0690, 0x0694, 0x0694, 0x0694, 0x06a3, 0x06a3, 0x06a3,
+ 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06b5, 0x06be,
+ // Entry 200 - 23F
+ 0x06c8, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2,
+ 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06e1, 0x06e1, 0x06e1, 0x06e1,
+ 0x06e1, 0x06e1, 0x06e5, 0x06e5, 0x06ea, 0x06ea, 0x06ea, 0x06ea,
+ 0x06ea, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0x06fa, 0x06fa,
+ 0x06fa, 0x06fa, 0x06fa, 0x06fa, 0x0703, 0x0703, 0x070a, 0x070a,
+ 0x0722, 0x0722, 0x0722, 0x0722, 0x073d, 0x0740, 0x0740, 0x0740,
+ 0x0740, 0x0740, 0x0740, 0x0740, 0x0745, 0x0745, 0x0745, 0x0745,
+ 0x0745, 0x074d, 0x074d, 0x074d, 0x074d, 0x0751, 0x0751, 0x0751,
+ // Entry 240 - 27F
+ 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751,
+ 0x0770, 0x0770, 0x0788, 0x0788, 0x07a1, 0x07a1, 0x07a1, 0x07b5,
+ 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5,
+ 0x07b5, 0x07b5, 0x07c1, 0x07c7, 0x07c7, 0x07c7, 0x07d0,
+} // Size: 1238 bytes
+
+var amLangStr string = "" + // Size: 5352 bytes
+ "አፋርኛአብሐዚኛአቬስታንአፍሪካንኛአካንኛአማርኛአራጎንስዓረብኛአሳሜዛዊአቫሪክአያማርኛአዘርባጃንኛባስኪርኛቤላራሻኛቡልጋሪ" +
+ "ኛቢስላምኛባምባርኛቤንጋሊኛቲቤታንኛብሬቶንኛቦስኒያንኛካታላንኛችችንቻሞሮኮርሲካኛክሪቼክኛቸርች ስላቪክቹቫሽወልሽዴኒሽ" +
+ "ጀርመንዲቬህድዞንግኻኛኢዊግሪክኛእንግሊዝኛኤስፐራንቶስፓንሽኛኢስቶኒያንኛባስክኛፐርሺያኛፊኒሽፊጂኛፋሮኛፈረንሳይኛየምዕ" +
+ "ራብ ፍሪስኛአይሪሽእስኮትስ ጌልክኛጋሊሺያጓራኒኛጉጃርቲኛማንክስኛሃውሳኛዕብራስጥሒንዱኛክሮሽያንኛሃይትኛሀንጋሪኛአርመ" +
+ "ናዊኢንቴርሊንጓኢንዶኔዥኛእንተርሊንግወኢግቦኛሲቹንዪኛእኑፒያቅኛአይስላንድኛጣሊያንኛእኑክቲቱትኛጃፓንኛጃቫንኛጆርጂያን" +
+ "ኮንጎኛኪኩዩካዛክኛካላሊሱትኛክመርኛ ማእከላዊካናዳኛኮሪያኛካሽሚርኛኩርድሽኛኮርኒሽኪርጊዝኛላቲንኛሉክዘምበርገርኛጋንዳ" +
+ "ኛሊንጋላኛላውስኛሉቴንያንኛሉባ ካታንጋላትቪያንማላጋስኛማዮሪኛማሴዶንኛማላያላምኛሞንጎላዊኛማራቲኛማላይኛማልቲስኛቡርማ" +
+ "ኛናኡሩሰሜን ንዴብሌኔፓሊኛደችየኖርዌይ ናይኖርስክየኖርዌይ ቦክማልንያንጃኦኪታንኛኦሮሞኛኦሪያኛኦሴቲክፑንጃብኛፖሊሽኛ" +
+ "ፓሽቶኛፖርቹጋልኛኵቿኛሮማንሽሩንዲኛሮማኒያንራሽያኛኪንያርዋንድኛሳንስክሪትኛሲንድሂኛሰሜናዊ ሳሚሳንጎኛሲንሃልኛስሎቫክ" +
+ "ኛስሎቪኛሳሞአኛሾናኛሱማልኛልቤኒኛሰርቢኛስዋቲኛሶዞኛሱዳንኛስዊድንኛስዋሂሊኛታሚልኛተሉጉኛታጂኪኛታይኛትግርኛቱርክመንኛ" +
+ "ጽዋናዊኛቶንጋኛቱርክኛጾንጋኛታታርኛታሂታንኛኡዊግሁርኛዩክሬንኛኡርዱኛኡዝቤክኛቬንዳቪትናምኛቮላፑክኛዎሎፍኛዞሳኛይዲሽኛ" +
+ "ዮሩባዊኛዡዋንግኛቻይንኛዙሉኛአቻይንኛአኮሊኛአዳንግሜአድይግሄአፍሪሂሊአገምአይኑአካዲያንአላባማአልዩትአንጊካአራማይክማ" +
+ "ፑቼአራኦናአራፓሆየአልጄሪያ ዓረብኛአራዋክአሱየአሜሪካ የምልክት ቋንቋአውስትሪያንአዋድሂባሉቺባሊኔስባቫሪያንባሳባሙን" +
+ "ባታካ ቶባቤጃቤምባቤታዊቤናባፉትባዳጋየምዕራብ ባሎቺቦጁሪቢኮልቢኒባንጃርቢሹንፑሪያባክህቲያሪብራጅብራሁዪቦዶአኮስቡሪያ" +
+ "ትቡጊኔዝቡሉብሊንካዶካሪብካዩጋአትሳምካቡዋኖቺጋኛቺብቻቻጋታይቹክስቺኑክ ጃርጎንቾክታዋቺፔውያንቼሮኬኛችዬኔየሶራኒ ኩር" +
+ "ድኛኮፕቲክካፒዝኖንክሪሚያን ተርኪሽዳኮታዳርግዋታይታኛዳላዌርዶግሪብዲንካዛርማኛዶግሪየታችኛው ሰርቢያንኛሴንተራል ዱሰ" +
+ "ንዱዋላኛጆላ ፎንያኛድዩላዳዛጋኢቦኛኤፊክየጥንታዊ ግብጽኛሴንተራል ዩፒክፊሊፒንኛካጁን ፍሬንችአርፒታንጋጋጉዝኛግዕዝኛ" +
+ "የጥንታዊ ግሪክየስዊዝ ጀርመንጉስሊኛሃዊያኛየላይኛው ሶርቢያንኛንጎባኛማቻሜኛካብይልካምባማኮንዴካቡቨርዲያኑኮይራ ቺኒ" +
+ "ካለንጂንኮሚ ፔርምያክኮካኒሻምባላባፊያኮሎኝያንላንጊላኮታሎዚኛሰሜናዊ ሉሪሉባ-ሉሏሉኦሉዪያማሳይሜሩሞሪሲየኛማኩዋ ሜቶ" +
+ "ሜታሞሃውክሙንዳንግክሪክማዛንደራኒናማየታችኛው ጀርመንኦ ናጋክዋሲዮንኮሰሜናዊ ሶቶኑዌርክላሲክ ኔዋሪኒያንኮልኛኪቼቺም" +
+ "ቦራዞ ሃይላንድ ኩቹዋሮምቦአሮማንያንርዋሳምቡሩሳንጉደቡባዊ ኩዲሽሴናኮይራቦሮ ሴኒታቼልሂትቻዲያን ዓረብኛሲዳምኛደቡባ" +
+ "ዊ ሳሚሉሌ ሳሚኢናሪ ሳሚስኮልት ሳሚኮሞሪያንኮንጎ ስዋሂሊክላሲክ ኔይራቴሶቴተምትግረክሊንጎንኛቶክ ፒሲንቱምቡካታሳዋ" +
+ "ቅመካከለኛ አትላስ ታማዚግትያልታወቀ ቋንቋቫይቩንጆዋርልፒሪሶጋካንቶኒዝብሊስይምቦልስመደበኛ የሞሮኮ ታማዚግትቋንቋዊ" +
+ " ይዘት አይደለምዘመናዊ መደበኛ ዓረብኛየኦስትሪያ ጀርመንየስዊዝ ከፍተኛ ጀርመንኛየአውስትራሊያ እንግሊዝኛየካናዳ እን" +
+ "ግሊዝኛየብሪቲሽ እንግሊዝኛየአሜሪካ እንግሊዝኛየላቲን አሜሪካ ስፓኒሽየአውሮፓ ስፓንሽኛየሜክሲኮ ስፓንሽኛየካናዳ ፈ" +
+ "ረንሳይኛየስዊዝ ፈረንሳይኛየታችኛው ሳክሰንፍሌሚሽየብራዚል ፖርቹጋልኛየአውሮፓ ፖርቹጋልኛሞልዳቫዊናቀለል ያለ ቻይን" +
+ "ኛባህላዊ ቻይንኛ"
+
+var amLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x001b, 0x002a, 0x003c, 0x0048, 0x0054, 0x0063,
+ 0x006f, 0x007e, 0x008a, 0x0099, 0x00ae, 0x00bd, 0x00cc, 0x00db,
+ 0x00ea, 0x00f9, 0x0108, 0x0117, 0x0126, 0x0138, 0x0147, 0x0150,
+ 0x0159, 0x0168, 0x016e, 0x0177, 0x018d, 0x0196, 0x019f, 0x01a8,
+ 0x01b4, 0x01bd, 0x01cf, 0x01d5, 0x01e1, 0x01f3, 0x0205, 0x0214,
+ 0x0229, 0x0235, 0x0244, 0x0244, 0x024d, 0x0256, 0x025f, 0x0271,
+ 0x028d, 0x0299, 0x02b5, 0x02c1, 0x02cd, 0x02dc, 0x02eb, 0x02f7,
+ 0x0306, 0x0312, 0x0312, 0x0324, 0x0330, 0x033f, 0x034e, 0x034e,
+ // Entry 40 - 7F
+ 0x0363, 0x0375, 0x038d, 0x0399, 0x03a8, 0x03ba, 0x03ba, 0x03cf,
+ 0x03de, 0x03f3, 0x03ff, 0x040b, 0x041a, 0x0426, 0x042f, 0x042f,
+ 0x043b, 0x044d, 0x0469, 0x0475, 0x0481, 0x0481, 0x0490, 0x049f,
+ 0x049f, 0x04ab, 0x04ba, 0x04c6, 0x04e1, 0x04ed, 0x04ed, 0x04fc,
+ 0x0508, 0x051a, 0x052d, 0x053c, 0x054b, 0x054b, 0x0557, 0x0566,
+ 0x0578, 0x058a, 0x0596, 0x05a2, 0x05b1, 0x05bd, 0x05c6, 0x05dc,
+ 0x05e8, 0x05e8, 0x05ee, 0x0610, 0x062c, 0x062c, 0x062c, 0x0638,
+ 0x0647, 0x0647, 0x0653, 0x065f, 0x066b, 0x067a, 0x067a, 0x0686,
+ // Entry 80 - BF
+ 0x0692, 0x06a4, 0x06ad, 0x06b9, 0x06c5, 0x06d4, 0x06e0, 0x06f8,
+ 0x070d, 0x070d, 0x071c, 0x072f, 0x073b, 0x074a, 0x0759, 0x0765,
+ 0x0771, 0x077a, 0x0786, 0x0792, 0x079e, 0x07aa, 0x07b3, 0x07bf,
+ 0x07ce, 0x07dd, 0x07e9, 0x07f5, 0x0801, 0x080a, 0x0816, 0x0828,
+ 0x0837, 0x0843, 0x084f, 0x085b, 0x0867, 0x0876, 0x0888, 0x0897,
+ 0x08a3, 0x08b2, 0x08bb, 0x08ca, 0x08d9, 0x08d9, 0x08e5, 0x08ee,
+ 0x08fa, 0x0909, 0x0918, 0x0924, 0x092d, 0x093c, 0x0948, 0x0957,
+ 0x0966, 0x0966, 0x0975, 0x097e, 0x0987, 0x0996, 0x09a2, 0x09ae,
+ // Entry C0 - FF
+ 0x09ae, 0x09ae, 0x09ae, 0x09ba, 0x09c9, 0x09d2, 0x09de, 0x09ea,
+ 0x0a09, 0x0a15, 0x0a15, 0x0a15, 0x0a1b, 0x0a44, 0x0a59, 0x0a59,
+ 0x0a65, 0x0a6e, 0x0a7a, 0x0a89, 0x0a8f, 0x0a98, 0x0aa8, 0x0aa8,
+ 0x0aae, 0x0ab7, 0x0ac0, 0x0ac6, 0x0acf, 0x0ad8, 0x0af1, 0x0afa,
+ 0x0b03, 0x0b09, 0x0b15, 0x0b15, 0x0b15, 0x0b27, 0x0b39, 0x0b42,
+ 0x0b4e, 0x0b54, 0x0b5d, 0x0b69, 0x0b75, 0x0b7b, 0x0b84, 0x0b84,
+ 0x0b8a, 0x0b93, 0x0b9c, 0x0ba8, 0x0bb4, 0x0bbd, 0x0bc6, 0x0bd2,
+ 0x0bdb, 0x0bdb, 0x0bf1, 0x0bfd, 0x0c0c, 0x0c18, 0x0c21, 0x0c3a,
+ // Entry 100 - 13F
+ 0x0c46, 0x0c55, 0x0c71, 0x0c71, 0x0c7a, 0x0c86, 0x0c92, 0x0c9e,
+ 0x0c9e, 0x0caa, 0x0cb3, 0x0cbf, 0x0cc8, 0x0cea, 0x0d03, 0x0d0f,
+ 0x0d0f, 0x0d22, 0x0d2b, 0x0d34, 0x0d3d, 0x0d46, 0x0d46, 0x0d62,
+ 0x0d62, 0x0d62, 0x0d62, 0x0d7b, 0x0d7b, 0x0d7b, 0x0d7b, 0x0d8a,
+ 0x0d8a, 0x0d8a, 0x0da0, 0x0da0, 0x0da0, 0x0daf, 0x0daf, 0x0daf,
+ 0x0daf, 0x0db2, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dbe, 0x0dca,
+ 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca, 0x0dca,
+ 0x0dca, 0x0de3, 0x0dfc, 0x0dfc, 0x0dfc, 0x0e08, 0x0e08, 0x0e08,
+ // Entry 140 - 17F
+ 0x0e08, 0x0e14, 0x0e14, 0x0e14, 0x0e14, 0x0e14, 0x0e36, 0x0e36,
+ 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36, 0x0e36,
+ 0x0e42, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e4e, 0x0e5a, 0x0e5a,
+ 0x0e5a, 0x0e63, 0x0e63, 0x0e63, 0x0e63, 0x0e63, 0x0e6f, 0x0e84,
+ 0x0e84, 0x0e84, 0x0e84, 0x0e84, 0x0e84, 0x0e94, 0x0e94, 0x0e94,
+ 0x0e94, 0x0ea3, 0x0ea3, 0x0eb9, 0x0ec2, 0x0ec2, 0x0ec2, 0x0ec2,
+ 0x0ec2, 0x0ec2, 0x0ec2, 0x0ec2, 0x0ece, 0x0ed7, 0x0ee6, 0x0ee6,
+ 0x0ee6, 0x0ee6, 0x0eef, 0x0eef, 0x0eef, 0x0eef, 0x0eef, 0x0eef,
+ // Entry 180 - 1BF
+ 0x0eef, 0x0ef8, 0x0ef8, 0x0ef8, 0x0f01, 0x0f14, 0x0f14, 0x0f21,
+ 0x0f21, 0x0f21, 0x0f27, 0x0f27, 0x0f30, 0x0f30, 0x0f30, 0x0f30,
+ 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f30, 0x0f39, 0x0f39, 0x0f39,
+ 0x0f39, 0x0f39, 0x0f3f, 0x0f4e, 0x0f4e, 0x0f5e, 0x0f64, 0x0f64,
+ 0x0f64, 0x0f64, 0x0f64, 0x0f70, 0x0f70, 0x0f70, 0x0f7f, 0x0f7f,
+ 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f88, 0x0f9a, 0x0f9a,
+ 0x0f9a, 0x0fa0, 0x0fbc, 0x0fbc, 0x0fbc, 0x0fbc, 0x0fc6, 0x0fd2,
+ 0x0fd2, 0x0fd2, 0x0fd2, 0x0fd2, 0x0fd8, 0x0feb, 0x0ff4, 0x100a,
+ // Entry 1C0 - 1FF
+ 0x100a, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c,
+ 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c,
+ 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x101c, 0x1022, 0x104b,
+ 0x104b, 0x104b, 0x104b, 0x104b, 0x104b, 0x1054, 0x1054, 0x1054,
+ 0x1054, 0x1054, 0x1066, 0x106c, 0x106c, 0x106c, 0x106c, 0x1078,
+ 0x1078, 0x1078, 0x1078, 0x1078, 0x1081, 0x1081, 0x1081, 0x1081,
+ 0x1097, 0x1097, 0x109d, 0x109d, 0x109d, 0x10b3, 0x10b3, 0x10b3,
+ 0x10c2, 0x10c2, 0x10db, 0x10e7, 0x10e7, 0x10e7, 0x10fa, 0x1107,
+ // Entry 200 - 23F
+ 0x1117, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a, 0x112a,
+ 0x112a, 0x112a, 0x112a, 0x1139, 0x114f, 0x1165, 0x1165, 0x1165,
+ 0x1165, 0x1165, 0x116b, 0x116b, 0x1174, 0x117d, 0x117d, 0x117d,
+ 0x117d, 0x118f, 0x118f, 0x118f, 0x118f, 0x118f, 0x119f, 0x119f,
+ 0x119f, 0x119f, 0x119f, 0x119f, 0x11ab, 0x11ab, 0x11b7, 0x11b7,
+ 0x11e3, 0x11e3, 0x11e3, 0x11e3, 0x11fc, 0x1202, 0x1202, 0x1202,
+ 0x1202, 0x1202, 0x1202, 0x1202, 0x120b, 0x120b, 0x120b, 0x120b,
+ 0x120b, 0x121a, 0x121a, 0x121a, 0x121a, 0x1220, 0x1220, 0x1220,
+ // Entry 240 - 27F
+ 0x1220, 0x1220, 0x1220, 0x122f, 0x122f, 0x1247, 0x1247, 0x1247,
+ 0x1270, 0x1270, 0x1296, 0x1296, 0x12bc, 0x12bc, 0x12db, 0x1304,
+ 0x132f, 0x134e, 0x1370, 0x1392, 0x13b8, 0x13d7, 0x13f6, 0x13f6,
+ 0x1415, 0x1434, 0x1450, 0x145c, 0x147e, 0x14a0, 0x14b2, 0x14b2,
+ 0x14cf, 0x14e8,
+} // Size: 1244 bytes
+
+var arLangStr string = "" + // Size: 9700 bytes
+ "الأفاريةالأبخازيةالأفستيةالأفريقانيةالأكانيةالأمهريةالأراغونيةالعربيةالأ" +
+ "ساميةالأواريةالأيماراالأذربيجانيةالباشكيريةالبيلاروسيةالبلغاريةالبيسلام" +
+ "يةالبامباراالبنغاليةالتبتيةالبريتونيةالبوسنيةالكتالانيةالشيشانيةالتشامو" +
+ "روالكورسيكيةالكرىالتشيكيةسلافية كنسيةالتشوفاشيالولزيةالدانماركيةالألمان" +
+ "يةالمالديفيةالزونخايةالإيوياليونانيةالإنجليزيةالإسبرانتوالإسبانيةالإستو" +
+ "نيةلغة الباسكالفارسيةالفلةالفنلنديةالفيجيةالفارويزالفرنسيةالفريزيانالأي" +
+ "رلنديةالغيلية الأسكتلنديةالجاليكيةالجوارانيالغوجاراتيةالمنكيةالهوساالعب" +
+ "ريةالهنديةالهيري موتوالكرواتيةالهايتيةالهنغاريةالأرمينيةالهيريرواللّغة " +
+ "الوسيطةالإندونيسيةالإنترلينجالإيجبوالسيتشيون ييالإينبياكالإيدوالأيسلاند" +
+ "يةالإيطاليةالإينكتيتتاليابانيةالجاويةالجورجيةالكونغوالكيكيوالكيونياماال" +
+ "كازاخستانيةالكالاليستالخميريةالكاناداالكوريةالكانيوريالكشميريةالكرديةال" +
+ "كوميالكورنيةالقرغيزيةاللاتينيةاللوكسمبرجيةالجانداالليمبرجيشيةاللينجالاا" +
+ "للاويةاللتوانيةاللبا-كاتانجااللاتفيةالمالاجاشيةالمارشاليةالماوريةالمقدو" +
+ "نيةالماليالامالمنغوليةالماراثيلغة الملايوالمالطيةالبورميةالنوروالنديبيل" +
+ " الشماليالنيباليةالندونجاالهولنديةالنينورسك النرويجيالبوكمالية النرويجية" +
+ "النديبيل الجنوبيالنافاجوالنيانجاالأوكيتانيةالأوجيبواالأوروموالأوريياالأ" +
+ "وسيتيكالبنجابيةالباليةالبولنديةالبشتونيةالبرتغاليةالكويتشواالرومانشيةال" +
+ "رنديالرومانيةالروسيةالكينياروانداالسنسكريتيةالسردينيةالسنديةالسامي الشم" +
+ "اليالسانجوالسنهاليةالسلوفاكيةالسلوفانيةالساموائيةالشوناالصوماليةالألبان" +
+ "يةالصربيةالسواتيالسوتو الجنوبيةالسوندانيةالسويديةالسواحليةالتاميليةالتي" +
+ "لجوالطاجيكيةالتايلانديةالتغرينيةالتركمانيةالتسوانيةالتونغيةالتركيةالسون" +
+ "جاالتتاريةالتاهيتيةالأغوريةالأوكرانيةالأرديةالأوزبكيةالفينداالفيتناميةل" +
+ "غة الفولابوكالولونيةالولوفالخوسااليديشيةاليوروبيةالزهيونجالصينيةالزولوا" +
+ "لأتشينيزيةالأكوليةالأدانجميةالأديغةالأفريهيليةالأغمالآينويةالأكاديةالأل" +
+ "يوتيةالألطائية الجنوبيةالإنجليزية القديمةالأنجيكاالآراميةالأروكانيةالأر" +
+ "اباهوالأراواكيةالآسوالأستريةالأواديةالبلوشيةاللغة الباليةالباسابامنلغة " +
+ "الغومالاالبيجاالبيمبابينالغة البافوتالبلوشية الغربيةالبهوجبوريةالبيكولي" +
+ "ةالبينيةلغة الكومالسيكسيكيةالبراجيةالبودوأكوسالبرياتيةالبجينيزيةلغة الب" +
+ "ولوالبلينيةلغة الميدومباالكادوالكاريبيةالكايوجيةالأتسامالسيبونيةتشيغاال" +
+ "تشيبشاالتشاجاتايالتشكيزيةالماريالشينوك جارجونالشوكتوالشيباوايانالشيروكي" +
+ "الشايانالسورانية الكرديةالقبطيةلغة تتار القرمالكاشبايانالداكوتاالدارجوا" +
+ "تيتاالديلويرالسلافيةالدوجريبالدنكاالزارميةالدوجريةالصربية السفلىالديولا" +
+ "الهولندية الوسطىجولا فونياالدايلاالقرعانيةإمبوالإفيكالمصرية القديمةالإك" +
+ "اجكالإمايتالإنجليزية الوسطىالإيوندوالفانجالفلبينيةالفونالفرنسية الوسطىا" +
+ "لفرنسية القديمةالفريزينية الشماليةالفريزينية الشرقيةالفريلايانالجاالغاغ" +
+ "وزالجايوالجبياالجعزيةلغة أهل جبل طارقالألمانية العليا الوسطىالألمانية ا" +
+ "لعليا القديمةالجنديالجورونتالوالقوطيةالجريبواليونانية القديمةالألمانية " +
+ "السويسريةالغيزيةغوتشنالهيدالغة أهل الهاوايالهيليجينونالحثيةالهمونجيةالص" +
+ "ربية العلياالهباالإيبانالإيبيبيويةالإيلوكوالإنجوشيةاللوجباننغومباالماتش" +
+ "اميةالفارسية اليهوديةالعربية اليهوديةالكارا-كالباكالقبيليةالكاتشينالجوا" +
+ "لكامباالكويالكاباردايانكانمبوالتايابيةماكوندهكابوفيرديانوالكوروالكازيةا" +
+ "لخوتانيزكويرا تشينيكالينجينالكيمبندوكومي-بيرماياكالكونكانيةالكوسراينالك" +
+ "بيلالكاراتشاي-بالكارالكاريليةالكوروخشامبالالغة البافيالغة الكولونيانالق" +
+ "موقيةالكتيناياللادينولانجياللاهندااللامباالليزجيةلاكوتامنغولىاللوزياللر" +
+ "ية الشماليةاللبا-لؤلؤاللوسينواللوندااللوالميزولغة اللوياالمادريزالماجاا" +
+ "لمايثيليالماكاسارالماندينغالماسايماباالموكشاالماندارالميندالميروالمورسي" +
+ "انيةالأيرلندية الوسطىماخاوا-ميتوميتاالميكماكيونيةالمينانجكاباوالمانشوال" +
+ "مانيبوريةالموهوكالموسيمندنجلغات متعددةالكريكالميرانديزالمارواريةالأرزية" +
+ "المازندرانيةاللغة النابوليةلغة الناماالألمانية السفلىالنواريةالنياسالني" +
+ "ويكواسيولغة النجيمبونالنوجايالنورس القديمأنكوالسوتو الشماليةالنويرالنوا" +
+ "رية التقليديةالنيامويزيالنيانكولالنيوروالنزيماالأوساجالتركية العثمانيةا" +
+ "لبانجاسينانالبهلويةالبامبانجاالبابيامينتوالبالوانالفارسية القديمةالفيني" +
+ "قيةالبوهنبيايانالبروفانسية القديمةكيشيالراجاسثانيةالرابانيالراروتونجاني" +
+ "الرومبوغجريالأرومانيانالرواالسانداويالساخيةالآرامية السامريةسامبوروالسا" +
+ "ساكالسانتالينامبيسانغوالصقليةالأسكتلنديةالكردية الجنوبيةالسنيكاسيناالسي" +
+ "لكبكويرابورو سينيالأيرلندية القديمةتشلحيتالشانيةالعربية التشاديةالسيدام" +
+ "والسامي الجنوبياللول ساميالإيناري ساميالسكولت ساميالسونينكالسوجدينالسرا" +
+ "نان تونجوالسررلغة الساهوالسوكوماالسوسوالسوماريةالقمريةالكونغو السواحلية" +
+ "سريانية تقليديةالسريانيةالتيمنتيسوالتيرينوالتيتمالتغريةالتيفالتوكيلاوال" +
+ "كلينجونالتلينغيتيةالتاماشيكتونجا - نياساالتوك بيسينلغة التاروكوالتسيمشي" +
+ "انالتامبوكاالتوفالوتاساواقالتوفيةالأمازيغية وسط الأطلسالأدمرتاليجاريتيك" +
+ "الأمبندوالجذرالفايالفوتيكالفونجوالوالسرالولاياتاالوارايالواشووارلبيريال" +
+ "كالميكالسوغاالياواليابيزيانجبنيمباالكَنْتُونيةالزابوتيكرموز المعايير ال" +
+ "أساسيةالزيناجاالتمازيغية المغربية القياسيةالزونيةبدون محتوى لغويزازاالع" +
+ "ربية الرسمية الحديثةالألمانية النمساويةالألمانية العليا السويسريةالإنجل" +
+ "يزية الأستراليةالإنجليزية الكنديةالإنجليزية البريطانيةالإنجليزية الأمري" +
+ "كيةالإسبانية أمريكا اللاتينيةالإسبانية الأوروبيةالإسبانية المكسيكيةالفر" +
+ "نسية الكنديةالفرنسية السويسريةالسكسونية السفلىالفلمنكيةالبرتغالية البرا" +
+ "زيليةالبرتغالية الأوروبيةالمولدوفيةصربية-كرواتيةالصينية المبسطةالصينية " +
+ "التقليدية"
+
+var arLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0022, 0x0032, 0x0048, 0x0058, 0x0068, 0x007c,
+ 0x008a, 0x009a, 0x00aa, 0x00ba, 0x00d2, 0x00e6, 0x00fc, 0x010e,
+ 0x0122, 0x0134, 0x0146, 0x0154, 0x0168, 0x0178, 0x018c, 0x019e,
+ 0x01b0, 0x01c4, 0x01ce, 0x01de, 0x01f5, 0x0207, 0x0215, 0x022b,
+ 0x023d, 0x0251, 0x0263, 0x026f, 0x0281, 0x0295, 0x02a9, 0x02bb,
+ 0x02cd, 0x02e0, 0x02f0, 0x02fa, 0x030c, 0x031a, 0x032a, 0x033a,
+ 0x034c, 0x0360, 0x0385, 0x0397, 0x03a9, 0x03bf, 0x03cd, 0x03d9,
+ 0x03e7, 0x03f5, 0x040a, 0x041c, 0x042c, 0x043e, 0x0450, 0x0460,
+ // Entry 40 - 7F
+ 0x047b, 0x0491, 0x04a5, 0x04b3, 0x04ca, 0x04dc, 0x04e8, 0x04fe,
+ 0x0510, 0x0524, 0x0536, 0x0544, 0x0554, 0x0562, 0x0570, 0x0584,
+ 0x059e, 0x05b2, 0x05c2, 0x05d2, 0x05e0, 0x05f2, 0x0604, 0x0612,
+ 0x061e, 0x062e, 0x0640, 0x0652, 0x066a, 0x0678, 0x0690, 0x06a2,
+ 0x06b0, 0x06c2, 0x06db, 0x06eb, 0x0701, 0x0715, 0x0725, 0x0737,
+ 0x074b, 0x075d, 0x076d, 0x0782, 0x0792, 0x07a2, 0x07ae, 0x07cd,
+ 0x07df, 0x07ef, 0x0801, 0x0824, 0x084b, 0x086a, 0x087a, 0x088a,
+ 0x08a0, 0x08b2, 0x08c2, 0x08d2, 0x08e4, 0x08f6, 0x0904, 0x0916,
+ // Entry 80 - BF
+ 0x0928, 0x093c, 0x094e, 0x0962, 0x096e, 0x0980, 0x098e, 0x09a8,
+ 0x09be, 0x09d0, 0x09de, 0x09f9, 0x0a07, 0x0a19, 0x0a2d, 0x0a41,
+ 0x0a55, 0x0a61, 0x0a73, 0x0a85, 0x0a93, 0x0aa1, 0x0abe, 0x0ad2,
+ 0x0ae2, 0x0af4, 0x0b06, 0x0b14, 0x0b26, 0x0b3c, 0x0b4e, 0x0b62,
+ 0x0b74, 0x0b84, 0x0b92, 0x0ba0, 0x0bb0, 0x0bc2, 0x0bd2, 0x0be6,
+ 0x0bf4, 0x0c06, 0x0c14, 0x0c28, 0x0c41, 0x0c51, 0x0c5d, 0x0c69,
+ 0x0c79, 0x0c8b, 0x0c9b, 0x0ca9, 0x0cb5, 0x0ccb, 0x0cdb, 0x0cef,
+ 0x0cfd, 0x0cfd, 0x0d13, 0x0d1d, 0x0d2d, 0x0d3d, 0x0d3d, 0x0d4f,
+ // Entry C0 - FF
+ 0x0d4f, 0x0d72, 0x0d95, 0x0da5, 0x0db5, 0x0dc9, 0x0dc9, 0x0ddb,
+ 0x0ddb, 0x0def, 0x0def, 0x0def, 0x0df9, 0x0df9, 0x0e09, 0x0e09,
+ 0x0e19, 0x0e29, 0x0e42, 0x0e42, 0x0e4e, 0x0e56, 0x0e56, 0x0e6d,
+ 0x0e79, 0x0e87, 0x0e87, 0x0e8f, 0x0ea4, 0x0ea4, 0x0ec3, 0x0ed9,
+ 0x0eeb, 0x0ef9, 0x0ef9, 0x0f0a, 0x0f1e, 0x0f1e, 0x0f1e, 0x0f2e,
+ 0x0f2e, 0x0f3a, 0x0f42, 0x0f54, 0x0f68, 0x0f7b, 0x0f8b, 0x0fa4,
+ 0x0fb0, 0x0fc2, 0x0fd4, 0x0fe2, 0x0ff4, 0x0ffe, 0x100e, 0x1022,
+ 0x1034, 0x1040, 0x105b, 0x1069, 0x107f, 0x108f, 0x109d, 0x10be,
+ // Entry 100 - 13F
+ 0x10cc, 0x10cc, 0x10e6, 0x10fa, 0x110a, 0x111a, 0x1122, 0x1132,
+ 0x1142, 0x1152, 0x115e, 0x116e, 0x117e, 0x1199, 0x1199, 0x11a7,
+ 0x11c6, 0x11d9, 0x11e7, 0x11f9, 0x1201, 0x120d, 0x120d, 0x122a,
+ 0x1238, 0x1246, 0x1267, 0x1267, 0x1277, 0x1277, 0x1283, 0x1295,
+ 0x1295, 0x129f, 0x129f, 0x12bc, 0x12db, 0x12db, 0x1300, 0x1323,
+ 0x1337, 0x133f, 0x134d, 0x134d, 0x1359, 0x1365, 0x1365, 0x1373,
+ 0x1390, 0x1390, 0x13bc, 0x13ea, 0x13ea, 0x13f6, 0x140c, 0x141a,
+ 0x1428, 0x1449, 0x146e, 0x146e, 0x146e, 0x147c, 0x1486, 0x1492,
+ // Entry 140 - 17F
+ 0x1492, 0x14ae, 0x14ae, 0x14c4, 0x14d0, 0x14e2, 0x14fd, 0x14fd,
+ 0x1507, 0x1515, 0x152b, 0x153b, 0x154d, 0x154d, 0x154d, 0x155d,
+ 0x1569, 0x157d, 0x159e, 0x15bd, 0x15bd, 0x15d6, 0x15e6, 0x15f6,
+ 0x15fe, 0x160c, 0x1616, 0x162e, 0x163a, 0x164c, 0x165a, 0x1672,
+ 0x1672, 0x167e, 0x167e, 0x168c, 0x169e, 0x16b3, 0x16b3, 0x16b3,
+ 0x16b3, 0x16c3, 0x16d5, 0x16ee, 0x1702, 0x1714, 0x1720, 0x1741,
+ 0x1741, 0x1741, 0x1753, 0x1761, 0x176f, 0x1784, 0x179f, 0x17af,
+ 0x17bf, 0x17cf, 0x17d9, 0x17e9, 0x17f7, 0x1807, 0x1807, 0x1807,
+ // Entry 180 - 1BF
+ 0x1807, 0x1813, 0x1813, 0x181f, 0x182b, 0x1848, 0x1848, 0x185b,
+ 0x186b, 0x1879, 0x1881, 0x188d, 0x18a0, 0x18a0, 0x18a0, 0x18b0,
+ 0x18b0, 0x18bc, 0x18ce, 0x18e0, 0x18f2, 0x1900, 0x1908, 0x1916,
+ 0x1926, 0x1932, 0x193e, 0x1954, 0x1975, 0x198a, 0x1992, 0x19ac,
+ 0x19c6, 0x19d4, 0x19ea, 0x19f8, 0x1a04, 0x1a04, 0x1a0e, 0x1a23,
+ 0x1a2f, 0x1a43, 0x1a57, 0x1a57, 0x1a57, 0x1a65, 0x1a7d, 0x1a7d,
+ 0x1a9a, 0x1aad, 0x1acc, 0x1adc, 0x1ae8, 0x1af4, 0x1af4, 0x1b00,
+ 0x1b19, 0x1b27, 0x1b40, 0x1b40, 0x1b48, 0x1b65, 0x1b71, 0x1b94,
+ // Entry 1C0 - 1FF
+ 0x1ba8, 0x1bba, 0x1bc8, 0x1bd6, 0x1be4, 0x1c05, 0x1c1d, 0x1c2d,
+ 0x1c41, 0x1c59, 0x1c69, 0x1c69, 0x1c69, 0x1c69, 0x1c88, 0x1c88,
+ 0x1c9a, 0x1c9a, 0x1c9a, 0x1cb2, 0x1cb2, 0x1cd7, 0x1cdf, 0x1cdf,
+ 0x1cf7, 0x1d07, 0x1d21, 0x1d21, 0x1d21, 0x1d2f, 0x1d37, 0x1d37,
+ 0x1d37, 0x1d37, 0x1d4d, 0x1d57, 0x1d69, 0x1d77, 0x1d98, 0x1da6,
+ 0x1db4, 0x1dc6, 0x1dc6, 0x1dd0, 0x1dda, 0x1de8, 0x1dfe, 0x1dfe,
+ 0x1e1d, 0x1e2b, 0x1e33, 0x1e33, 0x1e41, 0x1e5c, 0x1e7f, 0x1e7f,
+ 0x1e8b, 0x1e99, 0x1eb8, 0x1ec8, 0x1ec8, 0x1ec8, 0x1ee3, 0x1ef6,
+ // Entry 200 - 23F
+ 0x1f0f, 0x1f26, 0x1f36, 0x1f46, 0x1f61, 0x1f6b, 0x1f7e, 0x1f7e,
+ 0x1f8e, 0x1f9a, 0x1fac, 0x1fba, 0x1fdb, 0x1ff8, 0x200a, 0x200a,
+ 0x200a, 0x2016, 0x201e, 0x202e, 0x203a, 0x2048, 0x2052, 0x2064,
+ 0x2064, 0x2076, 0x208c, 0x208c, 0x209e, 0x20b5, 0x20ca, 0x20ca,
+ 0x20e1, 0x20e1, 0x20f5, 0x20f5, 0x2107, 0x2117, 0x2125, 0x2133,
+ 0x215b, 0x2169, 0x217d, 0x218d, 0x2197, 0x21a1, 0x21a1, 0x21a1,
+ 0x21a1, 0x21a1, 0x21af, 0x21af, 0x21bd, 0x21cb, 0x21dd, 0x21eb,
+ 0x21f7, 0x2207, 0x2207, 0x2217, 0x2217, 0x2223, 0x222d, 0x223b,
+ // Entry 240 - 27F
+ 0x2247, 0x224f, 0x224f, 0x2267, 0x2279, 0x22a3, 0x22a3, 0x22b3,
+ 0x22e9, 0x22f7, 0x2313, 0x231b, 0x2347, 0x2347, 0x236c, 0x239e,
+ 0x23c7, 0x23ea, 0x2413, 0x243a, 0x246c, 0x2491, 0x24b6, 0x24b6,
+ 0x24d5, 0x24f8, 0x2517, 0x2529, 0x2552, 0x2579, 0x258d, 0x25a6,
+ 0x25c3, 0x25e4,
+} // Size: 1244 bytes
+
+var azLangStr string = "" + // Size: 3706 bytes
+ "afarcaabxazavestancaafrikaansakancaamhararagoncaərəbassamavarikcəaymarca" +
+ "azərbaycan dilibaşqırdbelarusbolqarbislamabambarabenqaltibetBretoncabosn" +
+ "iakkatalançeçençamorokorsikakri diliçexkilsə slavçuvaşuelsdanimarkaalman" +
+ "divehdzonqaeveyunaningilisesperantoispanestonbaskfarsfulafinficifarerfra" +
+ "nsızqərbi frizirlandskot gaelikqalisianquaraniqucaratmankshausaivrithind" +
+ "ihiri motuxorvathaitimacarerməniHererinterlinguaindonezinterlingueiqbosi" +
+ "çuan yiinupiaqidoislanditalyaninuktitutyaponyavagürcükonqokikuyukuanyam" +
+ "aqazaxkalaallisutkxmerkannadakoreyakanurkaşmirkürdkomikornqırğızlatınlük" +
+ "semburqqandalimburqişlinqalalaoslitvaluba-katanqalatışmalaqasmarşalmaori" +
+ "makedonmalayalammonqolmaratimalaymaltabirmanauruşimali ndebelenepalnqonk" +
+ "ahollandnünorsk norveçbokmal norveçcənub ndebelenavayonyancaoksitancaoci" +
+ "bvaoromooriyaosetikpəncabpalipolyakpuştuportuqalkeçuaretoromanrundirumın" +
+ "ruskinyarvandasanskritsardinsindhişimali samisanqosinhalslovakslovensamo" +
+ "aşonasomalialbanserbsvatiSesotoisveçsuahilitamilteluqutaciktaytiqrintürk" +
+ "mənsvanatonqatürksonqatatartaxitiuyğurukraynaurduözbəkvendavyetnamvolapü" +
+ "kvalunvolofxosaYahudiyorubajuənqçinzuluakinakoliadangmeadugeafrihiliaqhe" +
+ "maynucaakadiancaaleutcacənub altayqədimi ingiliscəangikəaramikaraukancaa" +
+ "rapahoaravakçaasuasturicəavadicəbalucbalincəbasabejabembabenaqərbi bəluc" +
+ "bxoçpuribikolcabinisiksikəbrajbodoburyatbuginbilincəkadokaribatsamcakebu" +
+ "anoçiqaçibçəçağatayçukizmariçinuk ləhçəsiçoktauçipevyançirokiçeyensorani" +
+ " kürdkoptkrım türkçəkaşubyandakotadarqvataitadelaverslaveydoqribdinkazar" +
+ "madoqriaşağı sorbdualaortacaq hollandcadioladyulaembuefikqədimi misireka" +
+ "cukelamitortacaq ingiliscəevondofangfilippinfonortacaq fransızcaqədimi f" +
+ "ransızcaşimal frisfriulqaqaqauzqayoqabayaqezqilbert giliortacaq yüksək a" +
+ "lmancaqədimi almancaqondiqorontalogotçaqreboqədimi yunancaİsveçrə almanc" +
+ "asıqusiqviçinhaydahavayhiliqaynonhittitmonqyuxarı sorbhupaibanilokoinquş" +
+ "loğbannqombamaçamjudo-farscajude-ərəbcəqara-qalpaqkabilekaçincajukambaka" +
+ "vikabardcatiyapmakondkabuverdiankoroxazixotankoyra çiinikalencinkimbundu" +
+ "komi-permyakkonkankosreyankpelleqaraçay-balkarkarelyankuruxşambalabafiak" +
+ "umukkutenayladinlangilaxndalambaləzqilakotamonqolozişimali luriluba-lulu" +
+ "aluysenolundaluolushaycaluyiamadurizmaqahimaitilimakasarməndinqomasaymok" +
+ "şamandarmendemerumorisienortacaq irlandcamaxuva-meettometa’mikmakminanq" +
+ "kabanmançumanipürimohavkmosimundanqdigər dillərkrikmirandmaruarierzyamaz" +
+ "andaranneapolitalnamaaşağı almancanevarinyasniyuankvasionoqayqədimi nors" +
+ "canqoşimal sotonuernyamvezinyankolniyoronizimaosageosmanpanqasinanpaxlav" +
+ "ipampanqapapyamentopalayancaqədimi farscafoyenikponpeyanqədimi provensia" +
+ "lcakiçeracastanrapanurarotonqanromboromanaromancaruasandaveyakutsamarita" +
+ "nsamburusasaksantalsanqusisiliskotscənubi kürdsenaselkupkoyraboro senniq" +
+ "ədimi irlandcataçelitşansidamocənubi samilule samiinari samiskoltsonink" +
+ "esoqdiyensranan tonqoserer diliisukumasususumeryanKonqo suahilicəsisirya" +
+ "ktimnetesoterenotetumtiqretivtokelayklinqontlinqittamaşekniyasa tongatok" +
+ " pisinsimşyantumbukatuvalutasavaqtuvinyanMərkəzi Atlas tamazicəsiudmurtu" +
+ "qaritikumbundurutvaivotikvunyovalamovarayvaşoValpirikalmıqcasoqayaoyapiz" +
+ "zapotekblisimbolszenaqatamazizunidil məzmunu yoxdurzazaModern Standart Ə" +
+ "rəbcəcənubi azərbaycanAvstriya almancasıİsveçrə yüksək almancasıAvstrali" +
+ "ya ingiliscəsiKanada ingiliscəsiBritaniya ingiliscəsiAmerika ingiliscəsi" +
+ "Latın Amerikası ispancasıKastiliya ispancasıMeksika ispancasıKanada fran" +
+ "sızcasıİsveçrə fransızcasıaşağı saksonflamandBraziliya portuqalcasıPortu" +
+ "qaliya portuqalcasımoldavserb-xorvatcasadələşmiş çinənənəvi çin"
+
+var azLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0006, 0x000b, 0x0014, 0x001d, 0x0023, 0x0028, 0x0030,
+ 0x0036, 0x003b, 0x0044, 0x004b, 0x005b, 0x0064, 0x006b, 0x0071,
+ 0x0078, 0x007f, 0x0085, 0x008a, 0x0092, 0x0099, 0x00a0, 0x00a7,
+ 0x00ae, 0x00b5, 0x00bd, 0x00c1, 0x00cc, 0x00d3, 0x00d7, 0x00e0,
+ 0x00e5, 0x00ea, 0x00f0, 0x00f3, 0x00f8, 0x00ff, 0x0108, 0x010d,
+ 0x0112, 0x0116, 0x011a, 0x011e, 0x0121, 0x0125, 0x012a, 0x0132,
+ 0x013d, 0x0143, 0x014e, 0x0156, 0x015d, 0x0164, 0x0169, 0x016e,
+ 0x0173, 0x0178, 0x0181, 0x0187, 0x018c, 0x0191, 0x0198, 0x019d,
+ // Entry 40 - 7F
+ 0x01a8, 0x01af, 0x01ba, 0x01be, 0x01c8, 0x01cf, 0x01d2, 0x01d8,
+ 0x01df, 0x01e8, 0x01ed, 0x01f1, 0x01f8, 0x01fd, 0x0203, 0x020b,
+ 0x0210, 0x021b, 0x0220, 0x0227, 0x022d, 0x0232, 0x0239, 0x023e,
+ 0x0242, 0x0246, 0x024f, 0x0255, 0x0260, 0x0265, 0x026f, 0x0276,
+ 0x027a, 0x027f, 0x028b, 0x0292, 0x0299, 0x02a0, 0x02a5, 0x02ac,
+ 0x02b5, 0x02bb, 0x02c1, 0x02c6, 0x02cb, 0x02d0, 0x02d5, 0x02e4,
+ 0x02e9, 0x02ef, 0x02f6, 0x0306, 0x0314, 0x0322, 0x0328, 0x032e,
+ 0x0337, 0x033d, 0x0342, 0x0347, 0x034d, 0x0354, 0x0358, 0x035e,
+ // Entry 80 - BF
+ 0x0364, 0x036c, 0x0372, 0x037b, 0x0380, 0x0386, 0x0389, 0x0394,
+ 0x039c, 0x03a2, 0x03a8, 0x03b4, 0x03b9, 0x03bf, 0x03c5, 0x03cb,
+ 0x03d0, 0x03d5, 0x03db, 0x03e0, 0x03e4, 0x03e9, 0x03ef, 0x03ef,
+ 0x03f5, 0x03fc, 0x0401, 0x0407, 0x040c, 0x040f, 0x0415, 0x041e,
+ 0x0423, 0x0428, 0x042d, 0x0432, 0x0437, 0x043d, 0x0443, 0x044a,
+ 0x044e, 0x0455, 0x045a, 0x0461, 0x0469, 0x046e, 0x0473, 0x0477,
+ 0x047d, 0x0483, 0x0489, 0x048d, 0x0491, 0x0495, 0x049a, 0x04a1,
+ 0x04a6, 0x04a6, 0x04ae, 0x04b3, 0x04b9, 0x04c2, 0x04c2, 0x04c9,
+ // Entry C0 - FF
+ 0x04c9, 0x04d5, 0x04e7, 0x04ee, 0x04f4, 0x04fd, 0x04fd, 0x0504,
+ 0x0504, 0x050d, 0x050d, 0x050d, 0x0510, 0x0510, 0x0519, 0x0519,
+ 0x0521, 0x0526, 0x052e, 0x052e, 0x0532, 0x0532, 0x0532, 0x0532,
+ 0x0536, 0x053b, 0x053b, 0x053f, 0x053f, 0x053f, 0x054c, 0x0555,
+ 0x055c, 0x0560, 0x0560, 0x0560, 0x0568, 0x0568, 0x0568, 0x056c,
+ 0x056c, 0x0570, 0x0570, 0x0576, 0x057b, 0x057b, 0x0583, 0x0583,
+ 0x0587, 0x058c, 0x058c, 0x0593, 0x059a, 0x059f, 0x05a7, 0x05b0,
+ 0x05b6, 0x05ba, 0x05cb, 0x05d2, 0x05db, 0x05e2, 0x05e8, 0x05f4,
+ // Entry 100 - 13F
+ 0x05f8, 0x05f8, 0x0607, 0x0610, 0x0616, 0x061c, 0x0621, 0x0628,
+ 0x062e, 0x0634, 0x0639, 0x063e, 0x0643, 0x0650, 0x0650, 0x0655,
+ 0x0666, 0x066b, 0x0670, 0x0670, 0x0674, 0x0678, 0x0678, 0x0685,
+ 0x068b, 0x0691, 0x06a3, 0x06a3, 0x06a9, 0x06a9, 0x06ad, 0x06b5,
+ 0x06b5, 0x06b8, 0x06b8, 0x06ca, 0x06dc, 0x06dc, 0x06e7, 0x06e7,
+ 0x06ec, 0x06ee, 0x06f4, 0x06f4, 0x06f8, 0x06fe, 0x06fe, 0x0701,
+ 0x070d, 0x070d, 0x0725, 0x0734, 0x0734, 0x0739, 0x0742, 0x0748,
+ 0x074d, 0x075c, 0x0771, 0x0771, 0x0771, 0x0775, 0x077c, 0x0781,
+ // Entry 140 - 17F
+ 0x0781, 0x0786, 0x0786, 0x0790, 0x0796, 0x079a, 0x07a6, 0x07a6,
+ 0x07aa, 0x07ae, 0x07ae, 0x07b3, 0x07b9, 0x07b9, 0x07b9, 0x07c0,
+ 0x07c6, 0x07cc, 0x07d7, 0x07e5, 0x07e5, 0x07f0, 0x07f6, 0x07fe,
+ 0x0800, 0x0805, 0x0809, 0x0811, 0x0811, 0x0816, 0x081c, 0x0827,
+ 0x0827, 0x082b, 0x082b, 0x082f, 0x0834, 0x0840, 0x0840, 0x0840,
+ 0x0840, 0x0848, 0x0850, 0x085c, 0x0862, 0x086a, 0x0870, 0x087f,
+ 0x087f, 0x087f, 0x0887, 0x088c, 0x0894, 0x0899, 0x0899, 0x089e,
+ 0x08a5, 0x08aa, 0x08af, 0x08b5, 0x08ba, 0x08c0, 0x08c0, 0x08c0,
+ // Entry 180 - 1BF
+ 0x08c0, 0x08c6, 0x08c6, 0x08cb, 0x08cf, 0x08db, 0x08db, 0x08e5,
+ 0x08ec, 0x08f1, 0x08f4, 0x08fc, 0x0901, 0x0901, 0x0901, 0x0908,
+ 0x0908, 0x090e, 0x0915, 0x091c, 0x0925, 0x092a, 0x092a, 0x0930,
+ 0x0936, 0x093b, 0x093f, 0x0947, 0x0957, 0x0964, 0x096b, 0x0971,
+ 0x097c, 0x0982, 0x098b, 0x0991, 0x0995, 0x0995, 0x099c, 0x09aa,
+ 0x09ae, 0x09b4, 0x09bb, 0x09bb, 0x09bb, 0x09c0, 0x09ca, 0x09ca,
+ 0x09d4, 0x09d8, 0x09e8, 0x09ee, 0x09f2, 0x09f8, 0x09f8, 0x09fe,
+ 0x09fe, 0x0a03, 0x0a11, 0x0a11, 0x0a14, 0x0a1f, 0x0a23, 0x0a23,
+ // Entry 1C0 - 1FF
+ 0x0a2b, 0x0a32, 0x0a38, 0x0a3e, 0x0a43, 0x0a48, 0x0a52, 0x0a59,
+ 0x0a61, 0x0a6b, 0x0a74, 0x0a74, 0x0a74, 0x0a74, 0x0a82, 0x0a82,
+ 0x0a89, 0x0a89, 0x0a89, 0x0a91, 0x0a91, 0x0aa5, 0x0aaa, 0x0aaa,
+ 0x0ab2, 0x0ab8, 0x0ac2, 0x0ac2, 0x0ac2, 0x0ac7, 0x0acc, 0x0acc,
+ 0x0acc, 0x0acc, 0x0ad4, 0x0ad7, 0x0ade, 0x0ae3, 0x0aec, 0x0af3,
+ 0x0af8, 0x0afe, 0x0afe, 0x0afe, 0x0b03, 0x0b09, 0x0b0e, 0x0b0e,
+ 0x0b1b, 0x0b1b, 0x0b1f, 0x0b1f, 0x0b25, 0x0b34, 0x0b44, 0x0b44,
+ 0x0b4c, 0x0b50, 0x0b50, 0x0b56, 0x0b56, 0x0b56, 0x0b62, 0x0b6b,
+ // Entry 200 - 23F
+ 0x0b75, 0x0b7a, 0x0b81, 0x0b89, 0x0b95, 0x0ba0, 0x0ba0, 0x0ba0,
+ 0x0ba6, 0x0baa, 0x0bb2, 0x0bb2, 0x0bc4, 0x0bc4, 0x0bca, 0x0bca,
+ 0x0bca, 0x0bcf, 0x0bd3, 0x0bd9, 0x0bde, 0x0be3, 0x0be6, 0x0bed,
+ 0x0bed, 0x0bf4, 0x0bfb, 0x0bfb, 0x0c03, 0x0c0f, 0x0c18, 0x0c18,
+ 0x0c18, 0x0c18, 0x0c20, 0x0c20, 0x0c27, 0x0c2d, 0x0c34, 0x0c3c,
+ 0x0c57, 0x0c5d, 0x0c65, 0x0c6c, 0x0c6f, 0x0c72, 0x0c72, 0x0c72,
+ 0x0c72, 0x0c72, 0x0c77, 0x0c77, 0x0c7c, 0x0c7c, 0x0c82, 0x0c87,
+ 0x0c8c, 0x0c93, 0x0c93, 0x0c9c, 0x0c9c, 0x0ca0, 0x0ca3, 0x0ca8,
+ // Entry 240 - 27F
+ 0x0ca8, 0x0ca8, 0x0ca8, 0x0ca8, 0x0caf, 0x0cb9, 0x0cb9, 0x0cbf,
+ 0x0cc5, 0x0cc9, 0x0cdc, 0x0ce0, 0x0cf9, 0x0d0c, 0x0d1f, 0x0d3d,
+ 0x0d54, 0x0d67, 0x0d7d, 0x0d91, 0x0dad, 0x0dc1, 0x0dd3, 0x0dd3,
+ 0x0de7, 0x0dff, 0x0e0e, 0x0e15, 0x0e2c, 0x0e45, 0x0e4b, 0x0e58,
+ 0x0e6b, 0x0e7a,
+} // Size: 1244 bytes
+
+var bgLangStr string = "" + // Size: 7628 bytes
+ "афарабхазкиавестскиафрикаансаканамхарскиарагонскиарабскиасамскиаварскиай" +
+ "мараазербайджанскибашкирскибеларускибългарскибисламабамбарабенгалскитиб" +
+ "етскибретонскибосненскикаталонскичеченскичаморокорсиканскикриичешкицърк" +
+ "овно славянскичувашкиуелскидатскинемскидивехидзонхаевегръцкианглийскиес" +
+ "перантоиспанскиестонскибаскиперсийскифулафинскифиджийскифарьорскифренск" +
+ "ифризийскиирландскишотландски галскигалисийскигуаранигуджаратиманкскиха" +
+ "узаивритхиндихири мотухърватскихаитянскиунгарскиарменскихерероинтерлинг" +
+ "ваиндонезийскиоксиденталигбосъчуански иинупиакидоисландскииталианскиину" +
+ "ктитутяпонскияванскигрузинскиконгоанскикикуюкванямаказахскигренландскик" +
+ "хмерскиканнадакорейскиканурикашмирскикюрдскиКомикорнуолскикиргизкилатин" +
+ "скилюксембургскигандалимбургскилингалалаоскилитовскилуба катангалатвийс" +
+ "кималгашкимаршалеземаорскимакедонскималаяламмонголскимаратималайскималт" +
+ "ийскибирманскинаурусеверен ндебеленепалскиндонганидерландскинорвежки (н" +
+ "юношк)норвежки (букмол)южен ндебеленавахочинянджаокситанскиоджибваоромо" +
+ "орияосетскипенджабскипалиполскипущупортугалскикечуаретороманскирундирум" +
+ "ънскирускикиняруандасанкскритскисардинскисиндхисеверносаамскисангосинха" +
+ "лскисловашкисловенскисамоанскишонасомалийскиалбанскисръбскисуазисесутос" +
+ "унданскишведскисуахилитамилскителугутаджикскитайскитигринятуркменскитсв" +
+ "анатонгатурскитсонгататарскитаитянскиуйгурскиукраинскиурдуузбекскивенда" +
+ "виетнамскиволапюквалонскиволофксосаидишйорубазуангкитайскизулускиачинск" +
+ "иаколиадангмеадигеафрихилиагемайнуакадскиалеутскиюжноалтайскистароангли" +
+ "йскиангикаарамейскимапучеарапахоаравакасуастурскиавадибалучибалинейскиб" +
+ "асабеябембабеназападен балочибожпурибиколскибинисиксикабраджбодобурятск" +
+ "ибугинскибиленскикаддокарибскиатсамсебуаночигачибчачагатайчуукмарийскиж" +
+ "аргон чинуукчокточиипувскичерокичейенскикюрдски (централен)коптскикримс" +
+ "котатарскикашубскидакотскидаргватаитаделауерслейвидогрибдинкаджермадогр" +
+ "идолнолужишкидуаласредновековен холандскидиоладиулаембуефикегипетскиека" +
+ "жукеламитскисредновековен английскиевондофангфилипинскифонсредновековен" +
+ " френскистарофренскисеверен фризскиизточен фризскифриулианскигагагаузкиг" +
+ "айогбаягиизгилбертскисредновековен немскистаровисоконемскигондигоронтал" +
+ "оготическигребодревногръцкишвейцарски немскигусиигвичинхайдахавайскихил" +
+ "игайнонхитскихмонггорнолужишкихупаибанилокоингушетскилоджбаннгомбамачам" +
+ "ееврейско-персийскиеврейско-арабскикаракалпашкикабилскикачинскижжикамба" +
+ "кавикабардиантуапмакондекабовердианскикорокхасикотскикойра чииникалендж" +
+ "инкимбундукоми-пермяцкиконканикосраенкпелекарачай-балкарскикарелскикуру" +
+ "кшамбалабафиякумикскикутенайладинолангилахндаламбалезгинскилакотамонгол" +
+ "озисеверен лурилуба-лулуалуисеньолундалуолушаилуямадурскимагахимайтхили" +
+ "макасармандингомасайскимокшамандармендемеруморисиенсредновековен ирланд" +
+ "скимакуа метометамикмакминангбауманчжурскиманипуримохоукмосимундангмног" +
+ "оезичникрикмирандийскимарвариерзиамазандараннеаполитанскинамадолнонемск" +
+ "иневарскиниасниуеанквасионогаистаронорвежскинкосеверен сотонуеркласичес" +
+ "ки невариниамвезинианколенуоронзимаоседжиотомански турскипангасинанпехл" +
+ "евийскипампангапапиаментупалауанстароперсийскифиникийскипохнпеианпрован" +
+ "салскикичераджастанскирапа нуирапотонганромбоцигански езикарумънскирвас" +
+ "андвеякутскисамаритански арамейскисамбурусасаксанталисангусицилианскишо" +
+ "тландскиюжнокюрдскисенаселкупкойраборо сенистароирландскиташелхитшансид" +
+ "амоюжносаамскилуле-саамскиинари-саамскисколт-саамскисонинкесогдийскисра" +
+ "нан тонгосерерсукумасусушумерскикоморскиконгоански суахиликласически си" +
+ "рийскисирийскитемнетесотеренотетумтигретивтокелайскиклингонтлингиттамаш" +
+ "екнианса тонгаток писинцимшианскитумбукатувалуанскитасавактувинскицентр" +
+ "алноатласки тамазигтудмуртскиугаритскиумбундуроотваивотиквунджоваламова" +
+ "райуашовалпирикалмиксогаяояпезекантонскизапотекблис символизенагастанда" +
+ "ртен марокански тамазигтзунибез лингвистично съдържаниезазасъвременен с" +
+ "тандартен арабскианглийски (САЩ)долносаксонскифламандскимолдовскисърбох" +
+ "ърватски"
+
+var bgLangIdx = []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0008, 0x0016, 0x0026, 0x0038, 0x0040, 0x0050, 0x0062,
+ 0x0070, 0x007e, 0x008c, 0x0098, 0x00b4, 0x00c6, 0x00d8, 0x00ea,
+ 0x00f8, 0x0106, 0x0118, 0x0128, 0x013a, 0x014c, 0x0160, 0x0170,
+ 0x017c, 0x0192, 0x019a, 0x01a4, 0x01c7, 0x01d5, 0x01e1, 0x01ed,
+ 0x01f9, 0x0205, 0x0211, 0x0217, 0x0223, 0x0235, 0x0247, 0x0257,
+ 0x0267, 0x0271, 0x0283, 0x028b, 0x0297, 0x02a9, 0x02bb, 0x02c9,
+ 0x02db, 0x02ed, 0x030e, 0x0322, 0x0330, 0x0342, 0x0350, 0x035a,
+ 0x0364, 0x036e, 0x037f, 0x0391, 0x03a3, 0x03b3, 0x03c3, 0x03cf,
+ // Entry 40 - 7F
+ 0x03e5, 0x03fd, 0x0411, 0x0419, 0x042e, 0x043c, 0x0442, 0x0454,
+ 0x0468, 0x047a, 0x0488, 0x0496, 0x04a8, 0x04bc, 0x04c6, 0x04d4,
+ 0x04e4, 0x04fa, 0x050a, 0x0518, 0x0528, 0x0534, 0x0546, 0x0554,
+ 0x055c, 0x0570, 0x0580, 0x0590, 0x05aa, 0x05b4, 0x05c8, 0x05d6,
+ 0x05e2, 0x05f2, 0x0609, 0x061b, 0x062b, 0x063d, 0x064b, 0x065f,
+ 0x066f, 0x0681, 0x068d, 0x069d, 0x06af, 0x06c1, 0x06cb, 0x06e8,
+ 0x06f8, 0x0704, 0x071c, 0x073b, 0x075a, 0x0771, 0x077d, 0x078d,
+ 0x07a1, 0x07af, 0x07b9, 0x07c1, 0x07cf, 0x07e3, 0x07eb, 0x07f7,
+ // Entry 80 - BF
+ 0x07ff, 0x0815, 0x081f, 0x0837, 0x0841, 0x0851, 0x085b, 0x086f,
+ 0x0887, 0x0899, 0x08a5, 0x08c1, 0x08cb, 0x08dd, 0x08ed, 0x08ff,
+ 0x0911, 0x0919, 0x092d, 0x093d, 0x094b, 0x0955, 0x0961, 0x0973,
+ 0x0981, 0x098f, 0x099f, 0x09ab, 0x09bd, 0x09c9, 0x09d7, 0x09eb,
+ 0x09f7, 0x0a01, 0x0a0d, 0x0a19, 0x0a29, 0x0a3b, 0x0a4b, 0x0a5d,
+ 0x0a65, 0x0a75, 0x0a7f, 0x0a93, 0x0aa1, 0x0ab1, 0x0abb, 0x0ac5,
+ 0x0acd, 0x0ad9, 0x0ae3, 0x0af3, 0x0b01, 0x0b0f, 0x0b19, 0x0b27,
+ 0x0b31, 0x0b31, 0x0b41, 0x0b49, 0x0b51, 0x0b5f, 0x0b5f, 0x0b6f,
+ // Entry C0 - FF
+ 0x0b6f, 0x0b87, 0x0ba3, 0x0baf, 0x0bc1, 0x0bcd, 0x0bcd, 0x0bdb,
+ 0x0bdb, 0x0be7, 0x0be7, 0x0be7, 0x0bed, 0x0bed, 0x0bfd, 0x0bfd,
+ 0x0c07, 0x0c13, 0x0c27, 0x0c27, 0x0c2f, 0x0c2f, 0x0c2f, 0x0c2f,
+ 0x0c35, 0x0c3f, 0x0c3f, 0x0c47, 0x0c47, 0x0c47, 0x0c62, 0x0c70,
+ 0x0c80, 0x0c88, 0x0c88, 0x0c88, 0x0c96, 0x0c96, 0x0c96, 0x0ca0,
+ 0x0ca0, 0x0ca8, 0x0ca8, 0x0cb8, 0x0cc8, 0x0cc8, 0x0cd8, 0x0cd8,
+ 0x0ce2, 0x0cf2, 0x0cf2, 0x0cfc, 0x0d0a, 0x0d12, 0x0d1c, 0x0d2a,
+ 0x0d32, 0x0d42, 0x0d5b, 0x0d65, 0x0d77, 0x0d83, 0x0d93, 0x0db6,
+ // Entry 100 - 13F
+ 0x0dc4, 0x0dc4, 0x0de2, 0x0df2, 0x0e02, 0x0e0e, 0x0e18, 0x0e26,
+ 0x0e32, 0x0e3e, 0x0e48, 0x0e54, 0x0e5e, 0x0e76, 0x0e76, 0x0e80,
+ 0x0ead, 0x0eb7, 0x0ec1, 0x0ec1, 0x0ec9, 0x0ed1, 0x0ed1, 0x0ee3,
+ 0x0eef, 0x0f01, 0x0f2e, 0x0f2e, 0x0f3a, 0x0f3a, 0x0f42, 0x0f56,
+ 0x0f56, 0x0f5c, 0x0f5c, 0x0f85, 0x0f9d, 0x0f9d, 0x0fba, 0x0fd7,
+ 0x0fed, 0x0ff1, 0x1001, 0x1001, 0x1009, 0x1011, 0x1011, 0x1019,
+ 0x102d, 0x102d, 0x1054, 0x1076, 0x1076, 0x1080, 0x1092, 0x10a4,
+ 0x10ae, 0x10c6, 0x10e7, 0x10e7, 0x10e7, 0x10f1, 0x10fd, 0x1107,
+ // Entry 140 - 17F
+ 0x1107, 0x1117, 0x1117, 0x112b, 0x1137, 0x1141, 0x1159, 0x1159,
+ 0x1161, 0x1169, 0x1169, 0x1173, 0x1187, 0x1187, 0x1187, 0x1195,
+ 0x11a1, 0x11ad, 0x11d0, 0x11ef, 0x11ef, 0x1207, 0x1217, 0x1227,
+ 0x122d, 0x1237, 0x123f, 0x1251, 0x1251, 0x1259, 0x1267, 0x1283,
+ 0x1283, 0x128b, 0x128b, 0x1295, 0x12a1, 0x12b6, 0x12b6, 0x12b6,
+ 0x12b6, 0x12c8, 0x12d8, 0x12f1, 0x12ff, 0x130d, 0x1317, 0x1338,
+ 0x1338, 0x1338, 0x1348, 0x1352, 0x1360, 0x136a, 0x136a, 0x137a,
+ 0x1388, 0x1394, 0x139e, 0x13aa, 0x13b4, 0x13c6, 0x13c6, 0x13c6,
+ // Entry 180 - 1BF
+ 0x13c6, 0x13d2, 0x13d2, 0x13dc, 0x13e4, 0x13fb, 0x13fb, 0x140e,
+ 0x141e, 0x1428, 0x142e, 0x1438, 0x143e, 0x143e, 0x143e, 0x144e,
+ 0x144e, 0x145a, 0x146a, 0x1478, 0x1488, 0x1498, 0x1498, 0x14a2,
+ 0x14ae, 0x14b8, 0x14c0, 0x14d0, 0x14fd, 0x1510, 0x1518, 0x1524,
+ 0x1536, 0x154a, 0x155a, 0x1566, 0x156e, 0x156e, 0x157c, 0x1592,
+ 0x159a, 0x15b0, 0x15be, 0x15be, 0x15be, 0x15c8, 0x15dc, 0x15dc,
+ 0x15f6, 0x15fe, 0x1614, 0x1624, 0x162c, 0x1638, 0x1638, 0x1644,
+ 0x1644, 0x164e, 0x166a, 0x166a, 0x1670, 0x1687, 0x168f, 0x16b0,
+ // Entry 1C0 - 1FF
+ 0x16c0, 0x16d0, 0x16da, 0x16e4, 0x16f0, 0x170f, 0x1723, 0x1739,
+ 0x1749, 0x175d, 0x176b, 0x176b, 0x176b, 0x176b, 0x1787, 0x1787,
+ 0x179b, 0x179b, 0x179b, 0x17ad, 0x17ad, 0x17c5, 0x17cd, 0x17cd,
+ 0x17e5, 0x17f4, 0x1808, 0x1808, 0x1808, 0x1812, 0x182b, 0x182b,
+ 0x182b, 0x182b, 0x183d, 0x1843, 0x184f, 0x185d, 0x1888, 0x1896,
+ 0x18a0, 0x18ae, 0x18ae, 0x18ae, 0x18b8, 0x18ce, 0x18e2, 0x18e2,
+ 0x18f8, 0x18f8, 0x1900, 0x1900, 0x190c, 0x1927, 0x1943, 0x1943,
+ 0x1953, 0x1959, 0x1959, 0x1965, 0x1965, 0x1965, 0x197b, 0x1992,
+ // Entry 200 - 23F
+ 0x19ab, 0x19c4, 0x19d2, 0x19e4, 0x19fb, 0x1a05, 0x1a05, 0x1a05,
+ 0x1a11, 0x1a19, 0x1a29, 0x1a39, 0x1a5c, 0x1a81, 0x1a91, 0x1a91,
+ 0x1a91, 0x1a9b, 0x1aa3, 0x1aaf, 0x1ab9, 0x1ac3, 0x1ac9, 0x1add,
+ 0x1add, 0x1aeb, 0x1af9, 0x1af9, 0x1b07, 0x1b1e, 0x1b2f, 0x1b2f,
+ 0x1b2f, 0x1b2f, 0x1b43, 0x1b43, 0x1b51, 0x1b67, 0x1b75, 0x1b85,
+ 0x1bb6, 0x1bc8, 0x1bda, 0x1be8, 0x1bf0, 0x1bf6, 0x1bf6, 0x1bf6,
+ 0x1bf6, 0x1bf6, 0x1c00, 0x1c00, 0x1c0c, 0x1c0c, 0x1c18, 0x1c22,
+ 0x1c2a, 0x1c38, 0x1c38, 0x1c44, 0x1c44, 0x1c4c, 0x1c50, 0x1c5a,
+ // Entry 240 - 27F
+ 0x1c5a, 0x1c5a, 0x1c5a, 0x1c6c, 0x1c7a, 0x1c91, 0x1c91, 0x1c9d,
+ 0x1cd7, 0x1cdf, 0x1d13, 0x1d1b, 0x1d53, 0x1d53, 0x1d53, 0x1d53,
+ 0x1d53, 0x1d53, 0x1d53, 0x1d6e, 0x1d6e, 0x1d6e, 0x1d6e, 0x1d6e,
+ 0x1d6e, 0x1d6e, 0x1d8a, 0x1d9e, 0x1d9e, 0x1d9e, 0x1db0, 0x1dcc,
+} // Size: 1240 bytes
+
+var bnLangStr string = "" + // Size: 11932 bytes
+ "আফারআবখাজিয়ানআবেস্তীয়আফ্রিকান্সআকানআমহারিকআর্গোনিজআরবীআসামিআভেরিকআয়মা" +
+ "রাআজারবাইজানীবাশকিরবেলারুশিয়বুলগেরিয়বিসলামাবামবারাবাংলাতিব্বতিব্রেটন" +
+ "বসনীয়ানকাতালানচেচেনচামোরোকর্সিকানক্রিচেকচার্চ স্লাভিকচুবাসওয়েলশডেনিশ" +
+ "জার্মানদিবেহিজোঙ্গাইউয়িগ্রিকইংরেজিএস্পেরান্তোস্প্যানিশএস্তোনীয়বাস্কফ" +
+ "ার্সিফুলাহ্ফিনিশফিজিআনফারোসফরাসিপশ্চিম ফ্রিসিআনআইরিশস্কটস-গ্যেলিকগ্যাল" +
+ "িশিয়গুয়ারানিগুজরাটিম্যাঙ্কসহাউসাহিব্রুহিন্দিহিরি মোতুক্রোয়েশীয়হাইত" +
+ "িয়ানহাঙ্গেরীয়আর্মেনিয়হেরেরোইন্টারলিঙ্গুয়াইন্দোনেশীয়ইন্টারলিঙ্গইগ্" +
+ "\u200cবোসিচুয়ান য়িইনুপিয়াকইডোআইসল্যান্ডীয়ইতালীয়ইনুক্টিটুটজাপানিজাভা" +
+ "নিজজর্জিয়ানকঙ্গোকিকুয়ুকোয়ানিয়ামাকাজাখক্যালাল্লিসুটখমেরকান্নাড়ীকোর" +
+ "িয়ানকানুরিকাশ্মীরীকুর্দিশকোমিকর্ণিশকির্গিজলাটিনলুক্সেমবার্গীয়গান্ডাল" +
+ "িম্বুর্গিশলিঙ্গালালাওলিথুয়েনীয়লুবা-কাটাঙ্গালাত্\u200cভীয়মালাগাসিমার" +
+ "্শালিজমাওরিম্যাসিডোনীয়মালায়ালামমঙ্গোলিয়মারাঠিমালয়মল্টিয়বর্মিনাউরু" +
+ "উত্তর এন্দেবিলিনেপালীএন্দোঙ্গাডাচনরওয়েজীয়ান নিনর্স্কনরওয়েজিয়ান বোক" +
+ "মালদক্ষিণ এনডেবেলেনাভাজোনায়াঞ্জাঅক্সিটানওজিবওয়াঅরোমোওড়িয়াওসেটিকপাঞ" +
+ "্জাবীপালিপোলিশপাশ্তুপর্তুগীজকেচুয়ারোমান্সরুন্দিরোমানীয়রুশকিনয়ারোয়া" +
+ "ন্ডাসংষ্কৃতসার্ডিনিয়ানসিন্ধিউত্তরাঞ্চলীয় সামিসাঙ্গোসিংহলীস্লোভাকস্লো" +
+ "ভেনীয়সামোয়ানশোনাসোমালীআলবেনীয়সার্বীয়সোয়াতিদক্ষিন সোথোসুন্দানীসুইড" +
+ "িশসোয়াহিলিতামিলতেলেগুতাজিকথাইতিগরিনিয়াতুর্কমেনীসোয়ানাটোঙ্গানতুর্কীস" +
+ "ঙ্গাতাতারতাহিতিয়ানউইঘুরইউক্রেনীয়উর্দুউজবেকীয়ভেন্ডাভিয়েতনামীভোলাপুক" +
+ "ওয়ালুনউওলোফজোসায়িদ্দিশইওরুবাঝু্য়াঙচীনাজুলুঅ্যাচাইনিজআকোলিঅদাগ্মেআদে" +
+ "গেআফ্রিহিলিএঘেমআইনুআক্কাদিয়ানআলেউতদক্ষিন আলতাইপ্রাচীন ইংরেজীআঙ্গিকাআর" +
+ "ামাইকমাপুচিআরাপাহোআরাওয়াকআসুআস্তুরিয়আওয়াধিবেলুচীবালিনীয়বাসাবেজাবেম" +
+ "্বাবেনাপশ্চিম বালোচিভোজপুরিবিকোলবিনিসিকসিকাব্রাজবোড়োবুরিয়াতবুগিনিব্ল" +
+ "িনক্যাডোক্যারিবআত্সামচেবুয়ানোচিগাচিবচাচাগাতাইচুকিমারিচিনুক জার্গনচকটো" +
+ "ওচিপেওয়ানচেরোকীশাইয়েনসোরানি কুর্দিশকপটিকক্রিমিয়ান তুর্কিকাশুবিয়ানড" +
+ "াকোটাদার্গওয়াতাইতাডেলাওয়েরস্ল্যাভদোগ্রীবডিংকাজার্মাডোগরিনিম্নতর সোর্" +
+ "বিয়ানদুয়ালামধ্য ডাচজলা-ফনীডিউলাএম্বুএফিকপ্রাচীন মিশরীয়ইকাজুকএলামাইট" +
+ "মধ্য ইংরেজিইওন্ডোফ্যাঙ্গফিলিপিনোফনমধ্য ফরাসিপ্রাচীন ফরাসিউত্তরাঞ্চলীয়" +
+ " ফ্রিসিয়ানপূর্ব ফ্রিসিয়ফ্রিউলিয়ানগাগাগাউজগায়োবায়াগীজগিলবার্টিজমধ্য-" +
+ "উচ্চ জার্মানিপ্রাচীন উচ্চ জার্মানিগোন্ডিগোরোন্তালোগথিকগ্রেবোপ্রাচীন গ্" +
+ "রীকসুইস জার্মানগুসীগওইচ্’ইনহাইডাহাওয়াইয়ানহিলিগ্যায়নোনহিট্টিটহ্" +
+ "\u200cমোঙউচ্চ সোর্বিয়ানহুপাইবানইলোকোইঙ্গুশলোজবানগোম্বামাকামেজুদেও ফার্স" +
+ "িজুদেও আরবিকারা-কাল্পাককাবাইলেকাচিনঅজ্জুকাম্বাকাউইকাবার্ডিয়ানটাইয়াপম" +
+ "াকোন্দেকাবুভারদিয়ানুকোরোখাশিখোটানিজকোয়রা চীনিকালেনজিনকিম্বুন্দুকমি-প" +
+ "ারমিআককোঙ্কানিকোস্রাইনক্\u200cপেল্লেকারচে-বাল্কারকারেলিয়ানকুরুখশাম্বা" +
+ "লাবাফিয়াকুমিককুটেনাইলাডিনোলাঙ্গিলান্ডালাম্বালেজঘিয়ানলাকোটামোঙ্গোলোজি" +
+ "উত্তর লুরিলুবা-লুলুয়ালুইসেনোলুন্ডালুয়োলুশাইলুইয়ামাদুরেসেমাগাহিমৈথিল" +
+ "িম্যাকাসারম্যান্ডিঙ্গোমাসাইমোকশাম্যাণ্ডারমেন্ডেমেরুমরিসিয়ানমধ্য আইরিশ" +
+ "মাখুয়া-মেত্তোমেটামিকম্যাকমিনাঙ্গ্\u200cকাবাউমাঞ্চুমণিপুরীমোহাওকমসিমুদ" +
+ "াঙ্গবহুগুণিতক ভাষাসমূহক্রিকমিরান্ডিজমারোয়ারিএরজিয়ামাজানদেরানিনেয়াপো" +
+ "লিটাননামানিম্ন জার্মানিনেওয়ারিনিয়াসনিউয়ানকোয়াসিওনোগাইপ্রাচীন নর্সএ" +
+ "ন’কোউত্তরাঞ্চলীয় সোথোনুয়ারপ্রাচীন নেওয়ারীন্যায়ামওয়েজিন্যায়াঙ্কোল" +
+ "েন্যোরোএন্.জিমাওসেজঅটোমান তুর্কিপাঙ্গাসিনানপাহ্লাভিপাম্পাঙ্গাপাপিয়ামে" +
+ "ন্টোপালায়ুয়ানপ্রাচীন ফার্সিফোনিশীয়ানপোহ্নপেইয়ানপ্রাচীন প্রোভেনসালক" +
+ "ি‘চেরাজস্থানীরাপানুইরারোটোংগানরম্বোরোমানিআরমেনিয়ানরাওয়াস্যান্ডাওয়েই" +
+ "য়াকুটসামারিটান আরামিকসামবুরুসাসাকসাঁওতালিসাঙ্গুসিসিলিয়ানস্কটসদক্ষিণ " +
+ "কুর্দিশসেনাসেল্কুপকোয়রাবেনো সেন্নীপ্রাচীন আইরিশতাচেলহিতশানসিডামোদক্ষি" +
+ "ণাঞ্চলীয় সামিলুলে সামিইনারি সামিস্কোল্ট সামিসোনিঙ্কেসোগডিয়ানস্রানান " +
+ "টোঙ্গোসেরেরসুকুমাসুসুসুমেরীয়কঙ্গো সোয়াহিলিপ্রাচীন সিরিওসিরিয়াকটাইম্" +
+ "নেতেসোতেরেনোতেতুমটাইগ্রেটিভটোকেলাউক্লিঙ্গনত্লিঙ্গিটতামাশেকনায়াসা টোঙ্" +
+ "গাটোক পিসিনসিমশিয়ানতুম্বুকাটুভালুতাসাওয়াকটুভিনিয়ানসেন্ট্রাল আটলাস ত" +
+ "ামাজিগাতউডমুর্টউগারিটিকউম্বুন্দুমূলভাইভোটিকভুঞ্জোওয়ালামোওয়ারেওয়াশোও" +
+ "য়ার্লপিরিকাল্মইকসোগাইয়াওইয়াপেসেজাপোটেকচিত্র ভাষাজেনাগাআদর্শ মরক্কোন" +
+ " তামাজিগাতজুনিভাষাভিত্তিক বিষয়বস্তু নেইজাজাআধুনিক আদর্শ আরবীঅস্ট্রিয়ান" +
+ " জার্মানসুইস হাই জার্মানঅস্ট্রেলীয় ইংরেজিকানাডীয় ইংরেজিব্রিটিশ ইংরেজিআ" +
+ "মেরিকার ইংরেজিল্যাটিন আমেরিকান স্প্যানিশইউরোপীয় স্প্যানিশম্যাক্সিকান " +
+ "স্প্যানিশকানাডীয় ফরাসিসুইস ফরাসিলো স্যাক্সনফ্লেমিশব্রাজিলের পর্তুগীজই" +
+ "উরোপের পর্তুগীজমলদাভিয়সার্বো-ক্রোয়েশিয়সরলীকৃত চীনাঐতিহ্যবাহি চীনা"
+
+var bnLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x002a, 0x0045, 0x0063, 0x006f, 0x0084, 0x009c,
+ 0x00a8, 0x00b7, 0x00c9, 0x00de, 0x00ff, 0x0111, 0x012f, 0x014a,
+ 0x015f, 0x0174, 0x0183, 0x0198, 0x01aa, 0x01c2, 0x01d7, 0x01e6,
+ 0x01f8, 0x0210, 0x021c, 0x0225, 0x024a, 0x0259, 0x026b, 0x027a,
+ 0x028f, 0x02a1, 0x02b3, 0x02c2, 0x02d1, 0x02e3, 0x0304, 0x031f,
+ 0x033a, 0x0349, 0x035b, 0x036d, 0x037c, 0x038e, 0x039d, 0x03ac,
+ 0x03d7, 0x03e6, 0x040b, 0x0429, 0x0444, 0x0459, 0x0471, 0x0480,
+ 0x0492, 0x04a4, 0x04bd, 0x04de, 0x04f9, 0x0517, 0x0532, 0x0544,
+ // Entry 40 - 7F
+ 0x0571, 0x0592, 0x05b3, 0x05c5, 0x05e7, 0x0602, 0x060b, 0x0632,
+ 0x0647, 0x0665, 0x0677, 0x068c, 0x06a7, 0x06b6, 0x06cb, 0x06ef,
+ 0x06fe, 0x0725, 0x0731, 0x074c, 0x0764, 0x0776, 0x078e, 0x07a3,
+ 0x07af, 0x07c1, 0x07d6, 0x07e5, 0x0812, 0x0824, 0x0845, 0x085d,
+ 0x0866, 0x0887, 0x08ac, 0x08c7, 0x08df, 0x08fa, 0x0909, 0x092d,
+ 0x094b, 0x0966, 0x0978, 0x0987, 0x099c, 0x09ab, 0x09ba, 0x09e5,
+ 0x09f7, 0x0a12, 0x0a1b, 0x0a58, 0x0a8f, 0x0aba, 0x0acc, 0x0ae7,
+ 0x0aff, 0x0b17, 0x0b26, 0x0b3b, 0x0b4d, 0x0b65, 0x0b71, 0x0b80,
+ // Entry 80 - BF
+ 0x0b92, 0x0baa, 0x0bbf, 0x0bd4, 0x0be6, 0x0bfe, 0x0c07, 0x0c34,
+ 0x0c49, 0x0c6d, 0x0c7f, 0x0cb3, 0x0cc5, 0x0cd7, 0x0cec, 0x0d0a,
+ 0x0d22, 0x0d2e, 0x0d40, 0x0d58, 0x0d70, 0x0d85, 0x0da4, 0x0dbc,
+ 0x0dce, 0x0de9, 0x0df8, 0x0e0a, 0x0e19, 0x0e22, 0x0e40, 0x0e5b,
+ 0x0e70, 0x0e85, 0x0e97, 0x0ea6, 0x0eb5, 0x0ed3, 0x0ee2, 0x0f00,
+ 0x0f0f, 0x0f27, 0x0f39, 0x0f57, 0x0f6c, 0x0f81, 0x0f90, 0x0f9c,
+ 0x0fb4, 0x0fc6, 0x0fdb, 0x0fe7, 0x0ff3, 0x1011, 0x1020, 0x1035,
+ 0x1044, 0x1044, 0x105f, 0x106b, 0x1077, 0x1098, 0x1098, 0x10a7,
+ // Entry C0 - FF
+ 0x10a7, 0x10c9, 0x10f1, 0x1106, 0x111b, 0x112d, 0x112d, 0x1142,
+ 0x1142, 0x115a, 0x115a, 0x115a, 0x1163, 0x1163, 0x117e, 0x117e,
+ 0x1193, 0x11a5, 0x11bd, 0x11bd, 0x11c9, 0x11c9, 0x11c9, 0x11c9,
+ 0x11d5, 0x11e7, 0x11e7, 0x11f3, 0x11f3, 0x11f3, 0x1218, 0x122d,
+ 0x123c, 0x1248, 0x1248, 0x1248, 0x125d, 0x125d, 0x125d, 0x126c,
+ 0x126c, 0x127b, 0x127b, 0x1293, 0x12a5, 0x12a5, 0x12b4, 0x12b4,
+ 0x12c6, 0x12db, 0x12db, 0x12ed, 0x1308, 0x1314, 0x1323, 0x1338,
+ 0x1344, 0x1350, 0x1372, 0x1381, 0x139c, 0x13ae, 0x13c3, 0x13eb,
+ // Entry 100 - 13F
+ 0x13fa, 0x13fa, 0x142b, 0x1449, 0x145b, 0x1476, 0x1485, 0x14a0,
+ 0x14b5, 0x14ca, 0x14d9, 0x14eb, 0x14fa, 0x152e, 0x152e, 0x1543,
+ 0x1559, 0x156c, 0x157b, 0x157b, 0x158a, 0x1596, 0x1596, 0x15c1,
+ 0x15d3, 0x15e8, 0x1607, 0x1607, 0x1619, 0x1619, 0x162e, 0x1646,
+ 0x1646, 0x164c, 0x164c, 0x1668, 0x168d, 0x168d, 0x16d3, 0x16fb,
+ 0x171c, 0x1722, 0x1734, 0x1734, 0x1743, 0x1752, 0x1752, 0x175b,
+ 0x1779, 0x1779, 0x17ab, 0x17e6, 0x17e6, 0x17f8, 0x1816, 0x1822,
+ 0x1834, 0x1859, 0x187b, 0x187b, 0x187b, 0x1887, 0x189f, 0x18ae,
+ // Entry 140 - 17F
+ 0x18ae, 0x18cf, 0x18cf, 0x18f6, 0x190b, 0x191d, 0x1948, 0x1948,
+ 0x1954, 0x1960, 0x1960, 0x196f, 0x1981, 0x1981, 0x1981, 0x1993,
+ 0x19a5, 0x19b7, 0x19d9, 0x19f5, 0x19f5, 0x1a17, 0x1a2c, 0x1a3b,
+ 0x1a4a, 0x1a5c, 0x1a68, 0x1a8c, 0x1a8c, 0x1aa1, 0x1ab9, 0x1ae3,
+ 0x1ae3, 0x1aef, 0x1aef, 0x1afb, 0x1b10, 0x1b2f, 0x1b2f, 0x1b2f,
+ 0x1b2f, 0x1b47, 0x1b65, 0x1b84, 0x1b9c, 0x1bb4, 0x1bcf, 0x1bf4,
+ 0x1bf4, 0x1bf4, 0x1c12, 0x1c21, 0x1c39, 0x1c4e, 0x1c4e, 0x1c5d,
+ 0x1c72, 0x1c84, 0x1c96, 0x1ca8, 0x1cba, 0x1cd5, 0x1cd5, 0x1cd5,
+ // Entry 180 - 1BF
+ 0x1cd5, 0x1ce7, 0x1ce7, 0x1cf9, 0x1d05, 0x1d21, 0x1d21, 0x1d43,
+ 0x1d58, 0x1d6a, 0x1d79, 0x1d88, 0x1d9a, 0x1d9a, 0x1d9a, 0x1db2,
+ 0x1db2, 0x1dc4, 0x1dd6, 0x1df1, 0x1e15, 0x1e24, 0x1e24, 0x1e33,
+ 0x1e4e, 0x1e60, 0x1e6c, 0x1e87, 0x1ea3, 0x1ecb, 0x1ed7, 0x1eef,
+ 0x1f19, 0x1f2b, 0x1f40, 0x1f52, 0x1f5b, 0x1f5b, 0x1f70, 0x1fa4,
+ 0x1fb3, 0x1fce, 0x1fe9, 0x1fe9, 0x1fe9, 0x1ffe, 0x201f, 0x201f,
+ 0x2043, 0x204f, 0x2077, 0x208f, 0x20a1, 0x20b6, 0x20b6, 0x20ce,
+ 0x20ce, 0x20dd, 0x20ff, 0x20ff, 0x210e, 0x2142, 0x2154, 0x2182,
+ // Entry 1C0 - 1FF
+ 0x21ac, 0x21d3, 0x21e5, 0x21fb, 0x2207, 0x222c, 0x224d, 0x2265,
+ 0x2283, 0x22aa, 0x22cb, 0x22cb, 0x22cb, 0x22cb, 0x22f3, 0x22f3,
+ 0x2311, 0x2311, 0x2311, 0x2335, 0x2335, 0x2369, 0x2378, 0x2378,
+ 0x2393, 0x23a8, 0x23c6, 0x23c6, 0x23c6, 0x23d5, 0x23e7, 0x23e7,
+ 0x23e7, 0x23e7, 0x2405, 0x2417, 0x243b, 0x2450, 0x247e, 0x2493,
+ 0x24a2, 0x24ba, 0x24ba, 0x24ba, 0x24cc, 0x24ea, 0x24f9, 0x24f9,
+ 0x2521, 0x2521, 0x252d, 0x252d, 0x2542, 0x2573, 0x2598, 0x2598,
+ 0x25b0, 0x25b9, 0x25b9, 0x25cb, 0x25cb, 0x25cb, 0x2602, 0x261b,
+ // Entry 200 - 23F
+ 0x2637, 0x2659, 0x2671, 0x268c, 0x26b4, 0x26c3, 0x26c3, 0x26c3,
+ 0x26d5, 0x26e1, 0x26f9, 0x26f9, 0x2724, 0x2749, 0x2761, 0x2761,
+ 0x2761, 0x2776, 0x2782, 0x2794, 0x27a3, 0x27b8, 0x27c1, 0x27d6,
+ 0x27d6, 0x27ee, 0x2809, 0x2809, 0x281e, 0x2846, 0x285f, 0x285f,
+ 0x285f, 0x285f, 0x287a, 0x287a, 0x2892, 0x28a4, 0x28bf, 0x28dd,
+ 0x2924, 0x2939, 0x2951, 0x296c, 0x2975, 0x297e, 0x297e, 0x297e,
+ 0x297e, 0x297e, 0x298d, 0x298d, 0x299f, 0x299f, 0x29b7, 0x29c9,
+ 0x29db, 0x29fc, 0x29fc, 0x2a11, 0x2a11, 0x2a1d, 0x2a2c, 0x2a44,
+ // Entry 240 - 27F
+ 0x2a44, 0x2a44, 0x2a44, 0x2a44, 0x2a59, 0x2a75, 0x2a75, 0x2a87,
+ 0x2ac8, 0x2ad4, 0x2b1e, 0x2b2a, 0x2b59, 0x2b59, 0x2b90, 0x2bbc,
+ 0x2bf0, 0x2c1b, 0x2c43, 0x2c6e, 0x2cb8, 0x2cec, 0x2d29, 0x2d29,
+ 0x2d51, 0x2d6d, 0x2d8c, 0x2da1, 0x2dd5, 0x2e03, 0x2e1b, 0x2e4f,
+ 0x2e71, 0x2e9c,
+} // Size: 1244 bytes
+
+var caLangStr string = "" + // Size: 4535 bytes
+ "àfarabkhazavèsticafrikaansàkanamhàricaragonèsàrabassamèsàvaraimaraazerba" +
+ "idjanèsbaixkirbielorúsbúlgarbislamabambarabengalítibetàbretóbosniàcatalà" +
+ "txetxèchamorrocorscreetxeceslau eclesiàstictxuvaixgal·lèsdanèsalemanydiv" +
+ "ehidzongkaewegrecanglèsesperantoespanyolestoniàbascpersafulfinèsfijiàfer" +
+ "oèsfrancèsfrisó occidentalirlandèsgaèlic escocèsgallecguaranígujaratiman" +
+ "xhaussahebreuhindihiri motucroathaitiàhongarèsarmenihererointerlinguaind" +
+ "onesiinterlingueigboyi sichuaninupiakidoislandèsitaliàinuktitutjaponèsja" +
+ "vanèsgeorgiàkongokikuiukuanyamakazakhgrenlandèskhmerkannadacoreàkanurica" +
+ "ixmirikurdkomicòrnickirguísllatíluxemburguèsgandalimburguèslingalalaosià" +
+ "lituàluba katangaletómalgaixmarshallèsmaorimacedonimalaiàlammongolmarath" +
+ "imalaimaltèsbirmànauruàndebele septentrionalnepalèsndonganeerlandèsnorue" +
+ "c nynorsknoruec bokmålndebele meridionalnavahonyanjaoccitàojibwaoromoori" +
+ "yaossetapanjabipalipolonèspaixtuportuguèsquítxuaretoromànicrundiromanèsr" +
+ "usruandèssànscritsardsindhisami septentrionalsangosingalèseslovaceslovès" +
+ "amoàshonasomalialbanèsserbiswazisotho meridionalsundanèssuecsuahilitàmil" +
+ "telugutadjiktailandèstigrinyaturcmansetswanatongalèsturctsongatàtartahit" +
+ "iàuigurucraïnèsurdúuzbekvendavietnamitavolapükvalówòlofxosajiddischiorub" +
+ "azhuangxinèszuluatjehacoliadangmeadiguéafrihiliaghemainuaccadialabamaale" +
+ "utaalbanès gegaltaic meridionalanglès anticangikaarameuaraucàaraonaarapa" +
+ "hoarauacàrab egipciparellengua de signes americanaasturiàawadhibalutxiba" +
+ "linèsbavarèsbasabamunghomalabejabembabenabafutbadagabalutxi occidentalbh" +
+ "ojpuribicolbinikomblackfootbrajbrahuibodoakooseburiatbuguisekibilinmedum" +
+ "bacaddocaribcayugaatsamcebuàchigatxibtxatxagataichuukmaripidgin chinookc" +
+ "hoctawchipewyancherokeexeiennekurd soranicoptetàtar de Crimeacaixubidako" +
+ "tadarguàtaitadelawareslaveydogribdinkazarmadogribaix sòrabdoualaneerland" +
+ "ès mitjàdiolajuladazagaembuefikemiliàegipci anticekajukelamitaanglès mi" +
+ "tjàewondoextremenyfangfilipífonfrancès mitjàfrancès anticfrisó septentri" +
+ "onalfrisó orientalfriülàgagagaúsxinès gangayogbayagueezgilbertèsgilakial" +
+ "t alemany mitjàalt alemany anticconcani de Goagondigorontalogòticgrebogr" +
+ "ec anticalemany suíswayúgusígwichinhaidaxinès hakkahawaiàhindi de Fijihi" +
+ "ligainonhititahmongalt sòrabxinès xianghupaibanibibioilocàingúixcrioll a" +
+ "nglès de Jamaicalojbanngombamachamejudeopersajudeoàrabkarakalpakcabilenc" +
+ "katxinjjukambakawikabardíkanembutyapmakondecrioll capverdiàkenyangkoroka" +
+ "ingàkhasikhotanèskoyra chiinikakokalenjinkimbundukomi-permiackonkanikosr" +
+ "aeàkpellekaratxaikriocareliàkurukhshambalabafiacologniankúmikkutenailadí" +
+ "langipanjabi occidentallambalesguiàlígurlakotallombardmongoloziluri sept" +
+ "entrionalluba-lulualuisenyolundaluomizoluyiaxinès clàssiclazmadurèsmafam" +
+ "agahimaithilimakassarmandingamassaimabamordovià moksamandarmendemerumaur" +
+ "iciàgaèlic irlandès mitjàmakhuwa-mettometa’micmacminangkabaumanxúmanipur" +
+ "ímohawkmorémari occidentalmundangllengües vàriescreekmirandèsmarwarimye" +
+ "nemordovià erzamazanderanixinès min del sudnapolitànamabaix alemanynewar" +
+ "iniasniueàbissiongiemboonnogainòrdic anticnovialn’Kosotho septentrionaln" +
+ "uernewari clàssicnyamwesinyankolenyoronzemaosageturc otomàpangasipahlavi" +
+ "pampangapapiamentopalauàpicardalemany pennsilvaniàpersa anticalemany pal" +
+ "atífenicipiemontèsgrec pònticponapeàprovençal anticquitxérajasthanirapan" +
+ "uirarotongàromanyèsromboromaníaromanèsrwosandaweiacutarameu samaritàsamb" +
+ "urusasaksantalingambaysangusiciliàescocèssard sasserèskurd meridionalsen" +
+ "ecasenaselkupsonghai orientalirlandès antictaixelhitxanàrab txadiàsidamo" +
+ "sami meridionalsami lulesami d’Inarisami skoltsoninkesogdiàsrananserersa" +
+ "hosukumasusúsumericomoriàsuahili del Congosiríac clàssicsiríacsilesiàtem" +
+ "netesoterenatetuntigretivtokelauèstsakhurklingoniàtlingittalixamazictong" +
+ "atok pisintarokotsimshiàtat meridionaltumbukatuvaluàtasawaqtuviniàamazic" +
+ " del Marroc centraludmurtugaríticumbunduarrelvaivènetvepseflamenc occide" +
+ "ntalvòticvunjowalserametowaraywashowarlpirixinès wucalmucmingreliàsogaya" +
+ "oyapeàyangbenyembacantonèszapotecasímbols Blisszelandèszenagaamazic està" +
+ "ndard marroquízunisense contingut lingüísticzazaàrab estàndard modernale" +
+ "many austríacalt alemany suísanglès australiàanglès canadencanglès brità" +
+ "nicanglès americàespanyol hispanoamericàespanyol europeuespanyol de Mèxi" +
+ "cfrancès canadencfrancès suísbaix saxóflamencportuguès del Brasilportugu" +
+ "ès de Portugalmoldauserbocroatxinès simplificatxinès tradicional"
+
+var caLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x000b, 0x0013, 0x001c, 0x0021, 0x0029, 0x0032,
+ 0x0037, 0x003f, 0x0044, 0x004a, 0x0058, 0x005f, 0x0068, 0x006f,
+ 0x0076, 0x007d, 0x0085, 0x008c, 0x0092, 0x0099, 0x00a0, 0x00a7,
+ 0x00af, 0x00b3, 0x00b7, 0x00bb, 0x00cd, 0x00d4, 0x00dd, 0x00e3,
+ 0x00ea, 0x00f0, 0x00f7, 0x00fa, 0x00fe, 0x0105, 0x010e, 0x0116,
+ 0x011e, 0x0122, 0x0127, 0x012a, 0x0130, 0x0136, 0x013d, 0x0145,
+ 0x0156, 0x015f, 0x016f, 0x0175, 0x017d, 0x0185, 0x0189, 0x018f,
+ 0x0195, 0x019a, 0x01a3, 0x01a8, 0x01af, 0x01b8, 0x01be, 0x01c4,
+ // Entry 40 - 7F
+ 0x01cf, 0x01d7, 0x01e2, 0x01e6, 0x01f0, 0x01f7, 0x01fa, 0x0203,
+ 0x020a, 0x0213, 0x021b, 0x0223, 0x022b, 0x0230, 0x0236, 0x023e,
+ 0x0244, 0x024f, 0x0254, 0x025b, 0x0261, 0x0267, 0x026f, 0x0273,
+ 0x0277, 0x027e, 0x0286, 0x028c, 0x0299, 0x029e, 0x02a9, 0x02b0,
+ 0x02b7, 0x02bd, 0x02c9, 0x02ce, 0x02d5, 0x02e0, 0x02e5, 0x02ed,
+ 0x02f7, 0x02fd, 0x0304, 0x0309, 0x0310, 0x0316, 0x031d, 0x0332,
+ 0x033a, 0x0340, 0x034b, 0x0359, 0x0367, 0x0379, 0x037f, 0x0385,
+ 0x038c, 0x0392, 0x0397, 0x039c, 0x03a2, 0x03a9, 0x03ad, 0x03b5,
+ // Entry 80 - BF
+ 0x03bb, 0x03c5, 0x03cd, 0x03d9, 0x03de, 0x03e6, 0x03e9, 0x03f1,
+ 0x03fa, 0x03fe, 0x0404, 0x0416, 0x041b, 0x0424, 0x042b, 0x0432,
+ 0x0438, 0x043d, 0x0443, 0x044b, 0x0450, 0x0455, 0x0465, 0x046e,
+ 0x0472, 0x0479, 0x047f, 0x0485, 0x048b, 0x0495, 0x049d, 0x04a4,
+ 0x04ac, 0x04b5, 0x04b9, 0x04bf, 0x04c5, 0x04cd, 0x04d2, 0x04dc,
+ 0x04e1, 0x04e6, 0x04eb, 0x04f5, 0x04fd, 0x0502, 0x0508, 0x050c,
+ 0x0514, 0x051a, 0x0520, 0x0526, 0x052a, 0x052f, 0x0534, 0x053b,
+ 0x0542, 0x0542, 0x054a, 0x054f, 0x0553, 0x0559, 0x0560, 0x0566,
+ // Entry C0 - FF
+ 0x0572, 0x0583, 0x0590, 0x0596, 0x059c, 0x05a3, 0x05a9, 0x05b0,
+ 0x05b0, 0x05b6, 0x05b6, 0x05c2, 0x05c6, 0x05e1, 0x05e9, 0x05e9,
+ 0x05ef, 0x05f6, 0x05fe, 0x0606, 0x060a, 0x060f, 0x060f, 0x0616,
+ 0x061a, 0x061f, 0x061f, 0x0623, 0x0628, 0x062e, 0x0640, 0x0648,
+ 0x064d, 0x0651, 0x0651, 0x0654, 0x065d, 0x065d, 0x065d, 0x0661,
+ 0x0667, 0x066b, 0x0671, 0x0677, 0x067c, 0x0680, 0x0685, 0x068c,
+ 0x0691, 0x0696, 0x069c, 0x06a1, 0x06a7, 0x06ac, 0x06b3, 0x06bb,
+ 0x06c0, 0x06c4, 0x06d2, 0x06d9, 0x06e2, 0x06ea, 0x06f1, 0x06fc,
+ // Entry 100 - 13F
+ 0x0701, 0x0701, 0x0711, 0x0718, 0x071e, 0x0725, 0x072a, 0x0732,
+ 0x0738, 0x073e, 0x0743, 0x0748, 0x074d, 0x0758, 0x0758, 0x075e,
+ 0x0770, 0x0775, 0x0779, 0x077f, 0x0783, 0x0787, 0x078e, 0x079a,
+ 0x07a0, 0x07a7, 0x07b5, 0x07b5, 0x07bb, 0x07c4, 0x07c8, 0x07cf,
+ 0x07cf, 0x07d2, 0x07d2, 0x07e1, 0x07ef, 0x07ef, 0x0803, 0x0812,
+ 0x081a, 0x081c, 0x0823, 0x082d, 0x0831, 0x0836, 0x0836, 0x083b,
+ 0x0845, 0x084b, 0x085d, 0x086e, 0x087c, 0x0881, 0x088a, 0x0890,
+ 0x0895, 0x089f, 0x08ac, 0x08b1, 0x08b1, 0x08b6, 0x08bd, 0x08c2,
+ // Entry 140 - 17F
+ 0x08ce, 0x08d5, 0x08e2, 0x08ec, 0x08f2, 0x08f7, 0x0901, 0x090d,
+ 0x0911, 0x0915, 0x091b, 0x0921, 0x0928, 0x0928, 0x0941, 0x0947,
+ 0x094d, 0x0954, 0x095e, 0x0968, 0x0968, 0x0972, 0x097a, 0x0980,
+ 0x0983, 0x0988, 0x098c, 0x0994, 0x099b, 0x099f, 0x09a6, 0x09b7,
+ 0x09be, 0x09c2, 0x09c9, 0x09ce, 0x09d7, 0x09e3, 0x09e3, 0x09e3,
+ 0x09e7, 0x09ef, 0x09f7, 0x0a03, 0x0a0a, 0x0a12, 0x0a18, 0x0a20,
+ 0x0a24, 0x0a24, 0x0a2c, 0x0a32, 0x0a3a, 0x0a3f, 0x0a48, 0x0a4e,
+ 0x0a55, 0x0a5a, 0x0a5f, 0x0a71, 0x0a76, 0x0a7e, 0x0a7e, 0x0a84,
+ // Entry 180 - 1BF
+ 0x0a84, 0x0a8a, 0x0a92, 0x0a97, 0x0a9b, 0x0aad, 0x0aad, 0x0ab7,
+ 0x0abf, 0x0ac4, 0x0ac7, 0x0acb, 0x0ad0, 0x0adf, 0x0ae2, 0x0aea,
+ 0x0aee, 0x0af4, 0x0afc, 0x0b04, 0x0b0c, 0x0b12, 0x0b16, 0x0b25,
+ 0x0b2b, 0x0b30, 0x0b34, 0x0b3d, 0x0b55, 0x0b62, 0x0b69, 0x0b6f,
+ 0x0b7a, 0x0b80, 0x0b89, 0x0b8f, 0x0b94, 0x0ba3, 0x0baa, 0x0bbb,
+ 0x0bc0, 0x0bc9, 0x0bd0, 0x0bd0, 0x0bd5, 0x0be3, 0x0bee, 0x0c00,
+ 0x0c09, 0x0c0d, 0x0c19, 0x0c1f, 0x0c23, 0x0c29, 0x0c29, 0x0c2f,
+ 0x0c38, 0x0c3d, 0x0c4a, 0x0c50, 0x0c56, 0x0c69, 0x0c6d, 0x0c7c,
+ // Entry 1C0 - 1FF
+ 0x0c84, 0x0c8c, 0x0c91, 0x0c96, 0x0c9b, 0x0ca6, 0x0cad, 0x0cb4,
+ 0x0cbc, 0x0cc6, 0x0ccd, 0x0cd3, 0x0ce8, 0x0ce8, 0x0cf3, 0x0d02,
+ 0x0d08, 0x0d12, 0x0d1e, 0x0d26, 0x0d26, 0x0d36, 0x0d3d, 0x0d3d,
+ 0x0d47, 0x0d4e, 0x0d58, 0x0d61, 0x0d61, 0x0d66, 0x0d6d, 0x0d6d,
+ 0x0d6d, 0x0d6d, 0x0d76, 0x0d79, 0x0d80, 0x0d85, 0x0d95, 0x0d9c,
+ 0x0da1, 0x0da8, 0x0da8, 0x0daf, 0x0db4, 0x0dbc, 0x0dc4, 0x0dd2,
+ 0x0de1, 0x0de7, 0x0deb, 0x0deb, 0x0df1, 0x0e01, 0x0e10, 0x0e10,
+ 0x0e19, 0x0e1c, 0x0e29, 0x0e2f, 0x0e2f, 0x0e2f, 0x0e3e, 0x0e47,
+ // Entry 200 - 23F
+ 0x0e55, 0x0e5f, 0x0e66, 0x0e6d, 0x0e73, 0x0e78, 0x0e7c, 0x0e7c,
+ 0x0e82, 0x0e87, 0x0e8d, 0x0e95, 0x0ea6, 0x0eb6, 0x0ebd, 0x0ec5,
+ 0x0ec5, 0x0eca, 0x0ece, 0x0ed4, 0x0ed9, 0x0ede, 0x0ee1, 0x0eeb,
+ 0x0ef2, 0x0efc, 0x0f03, 0x0f08, 0x0f0e, 0x0f13, 0x0f1c, 0x0f1c,
+ 0x0f22, 0x0f22, 0x0f2b, 0x0f39, 0x0f40, 0x0f48, 0x0f4f, 0x0f57,
+ 0x0f70, 0x0f76, 0x0f7f, 0x0f86, 0x0f8b, 0x0f8e, 0x0f94, 0x0f99,
+ 0x0fab, 0x0fab, 0x0fb1, 0x0fb1, 0x0fb6, 0x0fbc, 0x0fc1, 0x0fc6,
+ 0x0fcb, 0x0fd3, 0x0fdc, 0x0fe2, 0x0fec, 0x0ff0, 0x0ff3, 0x0ff9,
+ // Entry 240 - 27F
+ 0x1000, 0x1005, 0x1005, 0x100e, 0x1016, 0x1024, 0x102d, 0x1033,
+ 0x104e, 0x1052, 0x106e, 0x1072, 0x1089, 0x1089, 0x109a, 0x10ab,
+ 0x10bd, 0x10cd, 0x10de, 0x10ee, 0x1106, 0x1116, 0x1128, 0x1128,
+ 0x1139, 0x1147, 0x1151, 0x1158, 0x116d, 0x1183, 0x1189, 0x1193,
+ 0x11a5, 0x11b7,
+} // Size: 1244 bytes
+
+var csLangStr string = "" + // Size: 7315 bytes
+ "afarštinaabcházštinaavestánštinaafrikánštinaakanštinaamharštinaaragonšti" +
+ "naarabštinaásámštinaavarštinaajmarštinaázerbájdžánštinabaškirštinaběloru" +
+ "štinabulharštinabislamštinabambarštinabengálštinatibetštinabretonštinab" +
+ "osenštinakatalánštinačečenštinačamorokorsičtinakríjštinačeštinastaroslov" +
+ "ěnštinačuvaštinavelštinadánštinaněmčinamaledivštinadzongkäeweštinařečti" +
+ "naangličtinaesperantošpanělštinaestonštinabaskičtinaperštinafulbštinafin" +
+ "štinafidžijštinafaerštinafrancouzštinafríštinairštinaskotská gaelštinag" +
+ "alicijštinaguaranštinagudžarátštinamanštinahauštinahebrejštinahindštinah" +
+ "iri motuchorvatštinahaitštinamaďarštinaarménštinahererštinainterlinguain" +
+ "donéštinainterlingueigboštinaiština (sečuánská)inupiakštinaidoislandštin" +
+ "aitalštinainuktitutštinajaponštinajavánštinagruzínštinakonžštinakikujšti" +
+ "nakuaňamštinakazaštinagrónštinakhmérštinakannadštinakorejštinakanurikašm" +
+ "írštinakurdštinakomijštinakornštinakyrgyzštinalatinalucemburštinagandšt" +
+ "inalimburštinalingalštinalaoštinalitevštinalubu-katanžštinalotyštinamalg" +
+ "aštinamaršálštinamaorštinamakedonštinamalajálamštinamongolštinamaráthšti" +
+ "namalajštinamaltštinabarmštinanaurštinandebele (Zimbabwe)nepálštinandond" +
+ "štinanizozemštinanorština (nynorsk)norština (bokmål)ndebele (Jižní Afri" +
+ "ka)navažštinaňandžštinaokcitánštinaodžibvejštinaoromštinaurijštinaosetšt" +
+ "inapaňdžábštinapálípolštinapaštštinaportugalštinakečuánštinarétorománšti" +
+ "nakirundštinarumunštinaruštinakiňarwandštinasanskrtsardštinasindhštinasá" +
+ "mština (severní)sangštinasinhálštinaslovenštinaslovinštinasamojštinašonš" +
+ "tinasomálštinaalbánštinasrbštinasiswatštinasotština (jižní)sundštinašvéd" +
+ "štinasvahilštinatamilštinatelugštinatádžičtinathajštinatigrinijštinatur" +
+ "kmenštinasetswanštinatongánštinaturečtinatsongatatarštinatahitštinaujgur" +
+ "štinaukrajinštinaurdštinauzbečtinavendavietnamštinavolapükvalonštinawol" +
+ "ofštinaxhoštinajidišjorubštinačuangštinačínštinazuluštinaacehštinaakolšt" +
+ "inaadangmeadygejštinaarabština (tuniská)afrihiliaghemainštinaakkadštinaa" +
+ "labamštinaaleutštinaalbánština (Gheg)altajština (jižní)staroangličtinaan" +
+ "gikaaramejštinaaraukánštinaaraonštinaarapažštinaarabština (alžírská)araw" +
+ "acké jazykyarabština (marocká)arabština (egyptská)asuznaková řeč (americ" +
+ "ká)asturštinakotavaawadhštinabalúčštinabalijštinabavorštinabasabamunbata" +
+ "k tobaghomalabedžabembštinabatavštinabenabafutbadagštinabalúčština (zápa" +
+ "dní)bhojpurštinabikolštinabinibandžarštinakomsiksikabišnuprijskomanipurš" +
+ "tinabachtijárštinabradžštinabrahujštinabodoštinaakooseburjatštinabugišti" +
+ "nabulublinštinamedumbacaddokaribštinakajugštinaatsamcebuánštinakigačibča" +
+ "čagatajštinačukštinamarijštinačinuk pidžinčoktštinačipevajštinačerokézš" +
+ "tinačejenštinakurdština (sorání)koptštinakapiznonštinaturečtina (krymská" +
+ ")kašubštinadakotštinadargštinataitadelawarštinaslejvština (athabaský jaz" +
+ "yk)dogribdinkštinazarmštinadogarštinadolnolužická srbštinakadazandusunšt" +
+ "inadualštinaholandština (středověká)jola-fonyidjuladazagaembuefikštinaem" +
+ "ilijštinaegyptština staráekajukelamitštinaangličtina (středověká)jupikšt" +
+ "ina (středoaljašská)ewondoextremadurštinafangfilipínštinafinština (torne" +
+ "dalská)fonštinafrancouzština (kajunská)francouzština (středověká)francou" +
+ "zština (stará)franko-provensálštinafríština (severní)fríština (východní)" +
+ "furlanštinagaštinagagauzštinačínština (dialekty Gan)gayogbajadaríjština " +
+ "(zoroastrijská)geezkiribatštinagilačtinahornoněmčina (středověká)hornoně" +
+ "mčina (stará)konkánština (Goa)góndštinagorontalogótštinagrebostarořečtin" +
+ "aněmčina (Švýcarsko)wayúuštinafrafragusiigwichʼinhaidštinačínština (dial" +
+ "ekty Hakka)havajštinahindština (Fidži)hiligajnonštinachetitštinahmongšti" +
+ "nahornolužická srbštinačínština (dialekty Xiang)hupaibanštinaibibioiloká" +
+ "nštinainguštinaingrijštinajamajská kreolštinalojbanngombamašamejudeoperš" +
+ "tinajudeoarabštinajutštinakarakalpačtinakabylštinakačijštinajjukambština" +
+ "kawikabardinštinakanembutyapmakondekapverdštinakenyangkorokaingangkhásíc" +
+ "hotánštinakoyra chiinichovarštinazazakštinakakokalendžinkimbundštinakomi" +
+ "-permjačtinakonkánštinakosrajštinakpellekaračajevo-balkarštinakriokinara" +
+ "j-akarelštinakuruchštinašambalabafiakolínštinakumyčtinakutenajštinaladin" +
+ "štinalangilahndštinalambštinalezginštinalingua franca novaligurštinaliv" +
+ "onštinalakotštinalombardštinamongštinalozštinalúrština (severní)latgalšt" +
+ "inaluba-luluaštinaluiseňolundštinaluoštinamizoštinaluhjačínština (klasic" +
+ "ká)lazštinamadurštinamafamagahijštinamaithilištinamakasarštinamandingšti" +
+ "namasajštinamabamokšanštinamandarmendemerumauricijská kreolštinairština " +
+ "(středověká)makhuwa-meettometa’micmacminangkabaumandžuštinamanipurštinam" +
+ "ohawkštinamosimarijština (západní)mundangsložené (víceřádkové) jazykykrí" +
+ "kštinamirandštinamárvárštinamentavajštinamyeneerzjanštinamázandaránština" +
+ "čínština (dialekty Minnan)neapolštinanamaštinadolnoněmčinanévárštinania" +
+ "sniueštinaao (jazyky Nágálandu)kwasiongiemboonnogajštinanorština histori" +
+ "ckánovialn’kosotština (severní)nuerštinanewarština (klasická)ňamwežština" +
+ "ňankolštinaňorštinanzimaosageturečtina (osmanská)pangasinanštinapahlavš" +
+ "tinapapangaupapiamentopalauštinapicardštinaněmčina (pensylvánská)němčina" +
+ " (plautdietsch)staroperštinafalčtinaféničtinapiemonštinapontštinapohnpei" +
+ "štinapruštinaprovensálštinakičékečuánština (chimborazo)rádžastánštinara" +
+ "panujštinararotongánštinaromaňolštinarífštinaromboromštinarotumanštinaru" +
+ "sínštinarovianštinaarumunštinarwasandawštinajakutštinasamarštinasamburus" +
+ "asakštinasantálštinasaurášterštinangambaysangoštinasicilštinaskotštinasa" +
+ "ssarštinakurdština (jižní)senecasenaserištinaselkupštinakoyraboro sennii" +
+ "rština (stará)žemaitštinatachelhitšanštinaarabština (čadská)sidamoněmčin" +
+ "a (slezská)selajarštinasámština (jižní)sámština (lulejská)sámština (inar" +
+ "ijská)sámština (skoltská)sonikštinasogdštinasranan tongosererštinasahofr" +
+ "íština (saterlandská)sukumasususumerštinakomorštinasvahilština (Kongo)s" +
+ "yrština (klasická)syrštinaslezštinatuluštinatemnetesoterenotetumštinatig" +
+ "rejštinativštinatokelauštinacachurštinaklingonštinatlingittalyštinatamaš" +
+ "ektonžština (nyasa)tok pisinturojštinatarokotsakonštinatsimšijské jazyky" +
+ "tatštinatumbukštinatuvalštinatasawaqtuvinštinatamazight (střední Maroko)" +
+ "udmurtštinaugaritštinaumbundukořenvaibenátštinavepštinavlámština (západn" +
+ "í)němčina (mohansko-franské dialekty)votštinavõruštinavunjoněmčina (wal" +
+ "ser)wolajtštinawarajštinawaštinawarlpiričínština (dialekty Wu)kalmyčtina" +
+ "mingrelštinasogštinajaoštinajapštinajangbenštinayembanheengatukantonštin" +
+ "azapotéčtinabliss systémzélandštinazenagatamazight (standardní marocký)z" +
+ "unijštinažádný jazykový obsahzazaarabština (moderní standardní)němčina s" +
+ "tandardní (Švýcarsko)angličtina (USA)španělština (Evropa)dolnosaštinavlá" +
+ "mštinaportugalština (Evropa)moldavštinasrbochorvatštinačínština (zjednod" +
+ "ušená)"
+
+var csLangIdx = []uint16{ // 609 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000a, 0x0017, 0x0025, 0x0033, 0x003d, 0x0048, 0x0054,
+ 0x005e, 0x006a, 0x0074, 0x007f, 0x0094, 0x00a1, 0x00ae, 0x00ba,
+ 0x00c6, 0x00d2, 0x00df, 0x00ea, 0x00f6, 0x0101, 0x010f, 0x011c,
+ 0x0123, 0x012e, 0x0139, 0x0142, 0x0154, 0x015f, 0x0168, 0x0172,
+ 0x017b, 0x0188, 0x0190, 0x0199, 0x01a2, 0x01ad, 0x01b6, 0x01c4,
+ 0x01cf, 0x01da, 0x01e3, 0x01ed, 0x01f6, 0x0203, 0x020d, 0x021b,
+ 0x0225, 0x022d, 0x0240, 0x024d, 0x0259, 0x0269, 0x0272, 0x027b,
+ 0x0287, 0x0291, 0x029a, 0x02a7, 0x02b1, 0x02bd, 0x02c9, 0x02d4,
+ // Entry 40 - 7F
+ 0x02df, 0x02ec, 0x02f7, 0x0301, 0x0317, 0x0324, 0x0327, 0x0333,
+ 0x033d, 0x034c, 0x0357, 0x0363, 0x0370, 0x037b, 0x0386, 0x0393,
+ 0x039d, 0x03a8, 0x03b4, 0x03c0, 0x03cb, 0x03d1, 0x03df, 0x03e9,
+ 0x03f4, 0x03fe, 0x040a, 0x0410, 0x041e, 0x0428, 0x0434, 0x0440,
+ 0x0449, 0x0454, 0x0466, 0x0470, 0x047b, 0x0489, 0x0493, 0x04a0,
+ 0x04b0, 0x04bc, 0x04c9, 0x04d4, 0x04de, 0x04e8, 0x04f2, 0x0504,
+ 0x0510, 0x051b, 0x0528, 0x053b, 0x054e, 0x0566, 0x0572, 0x057f,
+ 0x058d, 0x059c, 0x05a6, 0x05b0, 0x05ba, 0x05ca, 0x05d0, 0x05d9,
+ // Entry 80 - BF
+ 0x05e4, 0x05f2, 0x0600, 0x0611, 0x061d, 0x0628, 0x0630, 0x0640,
+ 0x0647, 0x0651, 0x065c, 0x0671, 0x067b, 0x0688, 0x0694, 0x06a0,
+ 0x06ab, 0x06b5, 0x06c1, 0x06cd, 0x06d6, 0x06e2, 0x06f5, 0x06ff,
+ 0x070b, 0x0717, 0x0722, 0x072d, 0x073a, 0x0744, 0x0752, 0x075f,
+ 0x076c, 0x0779, 0x0783, 0x0789, 0x0794, 0x079f, 0x07aa, 0x07b7,
+ 0x07c0, 0x07ca, 0x07cf, 0x07dc, 0x07e4, 0x07ef, 0x07fa, 0x0803,
+ 0x0809, 0x0814, 0x0820, 0x082b, 0x0835, 0x083f, 0x0849, 0x0850,
+ 0x085c, 0x0871, 0x0879, 0x087e, 0x0887, 0x0892, 0x089e, 0x08a9,
+ // Entry C0 - FF
+ 0x08bc, 0x08d1, 0x08e1, 0x08e7, 0x08f3, 0x0901, 0x090c, 0x0919,
+ 0x0931, 0x0941, 0x0956, 0x096c, 0x096f, 0x0989, 0x0994, 0x099a,
+ 0x09a5, 0x09b2, 0x09bd, 0x09c8, 0x09cc, 0x09d1, 0x09db, 0x09e2,
+ 0x09e8, 0x09f2, 0x09fd, 0x0a01, 0x0a06, 0x0a11, 0x0a2a, 0x0a37,
+ 0x0a42, 0x0a46, 0x0a54, 0x0a57, 0x0a5e, 0x0a78, 0x0a88, 0x0a94,
+ 0x0aa0, 0x0aaa, 0x0ab0, 0x0abc, 0x0ac6, 0x0aca, 0x0ad4, 0x0adb,
+ 0x0ae0, 0x0aeb, 0x0af6, 0x0afb, 0x0b08, 0x0b0c, 0x0b13, 0x0b21,
+ 0x0b2b, 0x0b36, 0x0b44, 0x0b4f, 0x0b5d, 0x0b6c, 0x0b78, 0x0b8d,
+ // Entry 100 - 13F
+ 0x0b97, 0x0ba5, 0x0bba, 0x0bc6, 0x0bd1, 0x0bdb, 0x0be0, 0x0bed,
+ 0x0c0b, 0x0c11, 0x0c1b, 0x0c25, 0x0c30, 0x0c48, 0x0c5a, 0x0c64,
+ 0x0c80, 0x0c8a, 0x0c8f, 0x0c95, 0x0c99, 0x0ca3, 0x0caf, 0x0cc1,
+ 0x0cc7, 0x0cd3, 0x0cee, 0x0d0d, 0x0d13, 0x0d23, 0x0d27, 0x0d35,
+ 0x0d4d, 0x0d56, 0x0d70, 0x0d8e, 0x0da5, 0x0dbc, 0x0dd1, 0x0de8,
+ 0x0df4, 0x0dfc, 0x0e08, 0x0e22, 0x0e26, 0x0e2b, 0x0e48, 0x0e4c,
+ 0x0e59, 0x0e63, 0x0e81, 0x0e98, 0x0eab, 0x0eb6, 0x0ebf, 0x0ec9,
+ 0x0ece, 0x0edc, 0x0ef3, 0x0eff, 0x0f05, 0x0f0a, 0x0f13, 0x0f1d,
+ // Entry 140 - 17F
+ 0x0f39, 0x0f44, 0x0f57, 0x0f67, 0x0f73, 0x0f7e, 0x0f96, 0x0fb2,
+ 0x0fb6, 0x0fc0, 0x0fc6, 0x0fd3, 0x0fdd, 0x0fe9, 0x0ffe, 0x1004,
+ 0x100a, 0x1011, 0x101f, 0x102e, 0x1037, 0x1046, 0x1051, 0x105d,
+ 0x1060, 0x106a, 0x106e, 0x107c, 0x1083, 0x1087, 0x108e, 0x109b,
+ 0x10a2, 0x10a6, 0x10ae, 0x10b5, 0x10c2, 0x10ce, 0x10da, 0x10e5,
+ 0x10e9, 0x10f3, 0x1100, 0x1111, 0x111e, 0x112a, 0x1130, 0x1148,
+ 0x114c, 0x1155, 0x1160, 0x116c, 0x1174, 0x1179, 0x1185, 0x118f,
+ 0x119c, 0x11a7, 0x11ac, 0x11b7, 0x11c1, 0x11cd, 0x11df, 0x11ea,
+ // Entry 180 - 1BF
+ 0x11f5, 0x1200, 0x120d, 0x1217, 0x1220, 0x1235, 0x1241, 0x1251,
+ 0x1259, 0x1263, 0x126c, 0x1276, 0x127b, 0x1292, 0x129b, 0x12a6,
+ 0x12aa, 0x12b7, 0x12c5, 0x12d2, 0x12df, 0x12ea, 0x12ee, 0x12fb,
+ 0x1301, 0x1306, 0x130a, 0x1322, 0x133a, 0x1348, 0x134f, 0x1355,
+ 0x1360, 0x136d, 0x137a, 0x1386, 0x138a, 0x13a1, 0x13a8, 0x13ca,
+ 0x13d5, 0x13e1, 0x13ef, 0x13fd, 0x1402, 0x140e, 0x1420, 0x143d,
+ 0x1449, 0x1453, 0x1461, 0x146e, 0x1472, 0x147c, 0x1493, 0x1499,
+ 0x14a2, 0x14ad, 0x14c2, 0x14c8, 0x14ce, 0x14e2, 0x14ec, 0x1503,
+ // Entry 1C0 - 1FF
+ 0x1511, 0x151e, 0x1528, 0x152d, 0x1532, 0x1548, 0x1558, 0x1564,
+ 0x156c, 0x1576, 0x1581, 0x158d, 0x15a7, 0x15bf, 0x15cd, 0x15d6,
+ 0x15e1, 0x15ed, 0x15f7, 0x1604, 0x160d, 0x161d, 0x1623, 0x163e,
+ 0x1650, 0x165d, 0x166e, 0x167c, 0x1686, 0x168b, 0x1694, 0x16a1,
+ 0x16ad, 0x16b9, 0x16c5, 0x16c8, 0x16d4, 0x16df, 0x16ea, 0x16f1,
+ 0x16fc, 0x1709, 0x171a, 0x1721, 0x172c, 0x1737, 0x1741, 0x174d,
+ 0x1761, 0x1767, 0x176b, 0x1775, 0x1781, 0x1790, 0x17a1, 0x17ae,
+ 0x17b7, 0x17c1, 0x17d6, 0x17dc, 0x17f0, 0x17fd, 0x1811, 0x1827,
+ // Entry 200 - 23F
+ 0x183e, 0x1854, 0x185f, 0x1869, 0x1875, 0x1880, 0x1884, 0x189e,
+ 0x18a4, 0x18a8, 0x18b3, 0x18be, 0x18d2, 0x18e7, 0x18f0, 0x18fa,
+ 0x1904, 0x1909, 0x190d, 0x1913, 0x191e, 0x192a, 0x1933, 0x1940,
+ 0x194c, 0x1959, 0x1960, 0x196a, 0x1972, 0x1985, 0x198e, 0x1999,
+ 0x199f, 0x19ab, 0x19be, 0x19c7, 0x19d3, 0x19de, 0x19e5, 0x19f0,
+ 0x1a0c, 0x1a18, 0x1a24, 0x1a2b, 0x1a31, 0x1a34, 0x1a40, 0x1a49,
+ 0x1a60, 0x1a86, 0x1a8f, 0x1a9a, 0x1a9f, 0x1ab1, 0x1abd, 0x1ac8,
+ 0x1ad0, 0x1ad8, 0x1af1, 0x1afc, 0x1b09, 0x1b12, 0x1b1b, 0x1b24,
+ // Entry 240 - 27F
+ 0x1b31, 0x1b36, 0x1b3f, 0x1b4b, 0x1b58, 0x1b65, 0x1b72, 0x1b78,
+ 0x1b98, 0x1ba3, 0x1bbb, 0x1bbf, 0x1be0, 0x1be0, 0x1be0, 0x1c03,
+ 0x1c03, 0x1c03, 0x1c03, 0x1c14, 0x1c14, 0x1c2b, 0x1c2b, 0x1c2b,
+ 0x1c2b, 0x1c2b, 0x1c38, 0x1c43, 0x1c43, 0x1c5a, 0x1c66, 0x1c77,
+ 0x1c93,
+} // Size: 1242 bytes
+
+var daLangStr string = "" + // Size: 4019 bytes
+ "afarabkhasiskavestanafrikaansakanamhariskaragonesiskarabiskassamesiskava" +
+ "riskaymaraaserbajdsjanskbashkirhviderussiskbulgarskbislamabambarabengali" +
+ "tibetanskbretonskbosniskcatalansktjetjenskchamorrokorsikanskcreetjekkisk" +
+ "kirkeslaviskchuvashwalisiskdansktyskdivehidzongkhaewegræskengelskesperan" +
+ "tospanskestiskbaskiskpersiskfulahfinskfijianskfærøskfranskfrisiskirsksko" +
+ "tsk gæliskgaliciskguaranigujaratimanxhausahebraiskhindihirimotukroatiskh" +
+ "aitiskungarskarmenskhererointerlinguaindonesiskinterlingueigbosichuan yi" +
+ "inupiaqidoislandskitalienskinuktitutjapanskjavanesiskgeorgiskkongokikuyu" +
+ "kuanyamakasakhiskgrønlandskkhmerkannadakoreanskkanurikashmirikurdiskkomi" +
+ "corniskkirgisisklatinluxembourgskgandalimburgsklingalalaolitauiskluba-Ka" +
+ "tangalettiskmalagassiskmarshallesemaorimakedonskmalayalammongolskmarathi" +
+ "skmalaymaltesiskburmesisknaurunordndebelenepalesiskndongahollandsknynors" +
+ "knorsk bokmålsydndebelenavajonyanjaoccitanskojibwaoromooriyaossetiskpunj" +
+ "abipalipolskpashtoportugisiskquechuarætoromanskrundirumænskrussiskkinyar" +
+ "wandasanskritsardinsksindhinordsamisksangosingalesiskslovakiskslovensksa" +
+ "moanskshonasomaliskalbanskserbiskswatisydsothosundanesisksvenskswahilita" +
+ "milsktelugutajikthaitigrinyaturkmensktswanatongansktyrkisktsongatatarisk" +
+ "tahitianskuyguriskukrainskurduusbekiskvendavietnamesiskvolapykvallonskwo" +
+ "lofxhosajiddischyorubazhuangkinesiskzuluachinesiskacoliadangmeadygheafri" +
+ "hiliaghemainuakkadiskaleutisksydaltaiskoldengelskangikaaramæiskmapuchear" +
+ "apahoarawakasuasturiskawadhibaluchibalinesiskbasabamunghomalabejabembabe" +
+ "nabafutvestbaluchibhojpuribikolbinikomsiksikabrajbodobakossiburiatiskbug" +
+ "inesiskbulublinmedumbacaddocaribiskcayugaatsamcebuanochigachibchachagata" +
+ "ichuukesemarichinookchoctawchipewyancherokeecheyennesoranikoptiskkrim ty" +
+ "rkiskkasjubiskdakotadargwataitadelawareathapaskiskdogribdinkazarmadogrin" +
+ "edersorbiskdualamiddelhollandskjola-fonyidyuladazagakiembuefikoldegyptis" +
+ "kekajukelamitiskmiddelengelskewondofangfilippinskfonmiddelfranskoldfrans" +
+ "knordfrisiskøstfrisiskfriuliangagagauziskgayogbayageezgilbertesiskmiddel" +
+ "højtyskoldhøjtyskgondigorontalogotiskgrebooldgræskschweizertyskgusiigwic" +
+ "hinhaidahawaiianskhiligaynonhittitiskhmongøvresorbiskhupaibanibibioiloko" +
+ "ingushlojbanngombamachamejødisk-persiskjødisk-arabiskkarakalpakiskkabyli" +
+ "skkachinjjukambakawikabardiankanembutyapmakondekapverdiskkorokhasikhotan" +
+ "esiskkoyra-chiinikakokalenjinkimbundukomi-permjakiskkonkanikosraeankpell" +
+ "ekaratjai-balkarkarelskkurukhshambalabafiakölschkymykkutenajladinolangil" +
+ "ahndalambalezghianlakotamongolozinordluriluba-Lulualuisenolundaluolushai" +
+ "luyanamaduresemafamagahimaithilimakasarmandingomasaimabamokshamandarmend" +
+ "emerumorisyenmiddelirskmakhuwa-meettometamicmacminangkabaumanchumanipuri" +
+ "mohawkmossimundangflere sprogcreekmirandesiskmarwarimyeneerzyamazeniskne" +
+ "apolitansknamanedertysknewariniasniueankwasiongiemboonnogaioldislandskn-" +
+ "konordsothonuerklassisk newarisknyamwezinyankolenyoro sprognzimaosageosm" +
+ "annisk-tyrkiskpangasinanpahlavipampangapapiamentopalauanskoldpersiskføni" +
+ "kiskponapeoldprovencalskquichérajasthanirapanuirarotonganromboromaniarum" +
+ "ænskrwasandaweyakutsamaritansksamburusasaksantalingambaysangusiciliansk" +
+ "skotsksydkurdisksenecasenaselkupiskkoyraboro sennioldirsktachelhitshantc" +
+ "hadisk-arabisksidamosydsamisklulesamiskenaresamiskskoltesamisksoninkesog" +
+ "diansksranan tongoserersahosukumasususumeriskshimaorecongolesisk swahili" +
+ "klassisk syrisksyrisktemnetesoterenotetumtigretivitokelauklingontlingitt" +
+ "amasheknyasa tongansktok pisintarokotsimshisktumbukatuvalutasawaqtuvinia" +
+ "ncentralmarokkansk tamazightudmurtugaristiskumbundurotvaivotiskvunjowals" +
+ "ertyskwalamowaraywashowalbirikalmyksogayaoyapeseyangbenyembakantonesiskz" +
+ "apotecblissymbolerzenagatamazightzuniintet sprogligt indholdzazamoderne " +
+ "standardarabisksydaserbajdsjanskøstrigsk tyskschweizerhøjtyskaustralsk e" +
+ "ngelskcanadisk engelskbritisk engelskamerikansk engelsklatinamerikansk s" +
+ "panskeuropæisk spanskmexicansk spanskcanadisk franskschweizisk franskfla" +
+ "mskbrasiliansk portugisiskeuropæisk portugisiskmoldoviskserbokroatiskfor" +
+ "enklet kinesisktraditionelt kinesisk"
+
+var daLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0029, 0x0034,
+ 0x003b, 0x0045, 0x004c, 0x0052, 0x0060, 0x0067, 0x0073, 0x007b,
+ 0x0082, 0x0089, 0x0090, 0x0099, 0x00a1, 0x00a8, 0x00b1, 0x00ba,
+ 0x00c2, 0x00cc, 0x00d0, 0x00d8, 0x00e4, 0x00eb, 0x00f3, 0x00f8,
+ 0x00fc, 0x0102, 0x010a, 0x010d, 0x0113, 0x011a, 0x0123, 0x0129,
+ 0x012f, 0x0136, 0x013d, 0x0142, 0x0147, 0x014f, 0x0157, 0x015d,
+ 0x0164, 0x0168, 0x0176, 0x017e, 0x0185, 0x018d, 0x0191, 0x0196,
+ 0x019e, 0x01a3, 0x01ab, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01ce,
+ // Entry 40 - 7F
+ 0x01d9, 0x01e3, 0x01ee, 0x01f2, 0x01fc, 0x0203, 0x0206, 0x020e,
+ 0x0217, 0x0220, 0x0227, 0x0231, 0x0239, 0x023e, 0x0244, 0x024c,
+ 0x0255, 0x0260, 0x0265, 0x026c, 0x0274, 0x027a, 0x0282, 0x0289,
+ 0x028d, 0x0294, 0x029d, 0x02a2, 0x02ae, 0x02b3, 0x02bc, 0x02c3,
+ 0x02c6, 0x02ce, 0x02da, 0x02e1, 0x02ec, 0x02f7, 0x02fc, 0x0305,
+ 0x030e, 0x0316, 0x031f, 0x0324, 0x032d, 0x0336, 0x033b, 0x0346,
+ 0x0350, 0x0356, 0x035f, 0x0366, 0x0373, 0x037d, 0x0383, 0x0389,
+ 0x0392, 0x0398, 0x039d, 0x03a2, 0x03aa, 0x03b1, 0x03b5, 0x03ba,
+ // Entry 80 - BF
+ 0x03c0, 0x03cb, 0x03d2, 0x03de, 0x03e3, 0x03eb, 0x03f2, 0x03fd,
+ 0x0405, 0x040d, 0x0413, 0x041d, 0x0422, 0x042d, 0x0436, 0x043e,
+ 0x0446, 0x044b, 0x0453, 0x045a, 0x0461, 0x0466, 0x046e, 0x0479,
+ 0x047f, 0x0486, 0x048d, 0x0493, 0x0498, 0x049c, 0x04a4, 0x04ad,
+ 0x04b3, 0x04bb, 0x04c2, 0x04c8, 0x04d0, 0x04da, 0x04e2, 0x04ea,
+ 0x04ee, 0x04f6, 0x04fb, 0x0507, 0x050e, 0x0516, 0x051b, 0x0520,
+ 0x0528, 0x052e, 0x0534, 0x053c, 0x0540, 0x054a, 0x054f, 0x0556,
+ 0x055c, 0x055c, 0x0564, 0x0569, 0x056d, 0x0575, 0x0575, 0x057d,
+ // Entry C0 - FF
+ 0x057d, 0x0587, 0x0591, 0x0597, 0x05a0, 0x05a7, 0x05a7, 0x05ae,
+ 0x05ae, 0x05b4, 0x05b4, 0x05b4, 0x05b7, 0x05b7, 0x05bf, 0x05bf,
+ 0x05c5, 0x05cc, 0x05d6, 0x05d6, 0x05da, 0x05df, 0x05df, 0x05e6,
+ 0x05ea, 0x05ef, 0x05ef, 0x05f3, 0x05f8, 0x05f8, 0x0603, 0x060b,
+ 0x0610, 0x0614, 0x0614, 0x0617, 0x061e, 0x061e, 0x061e, 0x0622,
+ 0x0622, 0x0626, 0x062d, 0x0636, 0x0640, 0x0644, 0x0648, 0x064f,
+ 0x0654, 0x065c, 0x0662, 0x0667, 0x066e, 0x0673, 0x067a, 0x0682,
+ 0x068a, 0x068e, 0x0695, 0x069c, 0x06a5, 0x06ad, 0x06b5, 0x06bb,
+ // Entry 100 - 13F
+ 0x06c2, 0x06c2, 0x06ce, 0x06d7, 0x06dd, 0x06e3, 0x06e8, 0x06f0,
+ 0x06fb, 0x0701, 0x0706, 0x070b, 0x0710, 0x071c, 0x071c, 0x0721,
+ 0x0730, 0x073a, 0x073f, 0x0745, 0x074b, 0x074f, 0x074f, 0x075a,
+ 0x0760, 0x0769, 0x0776, 0x0776, 0x077c, 0x077c, 0x0780, 0x078a,
+ 0x078a, 0x078d, 0x078d, 0x0799, 0x07a2, 0x07a2, 0x07ad, 0x07b8,
+ 0x07c0, 0x07c2, 0x07cb, 0x07cb, 0x07cf, 0x07d4, 0x07d4, 0x07d8,
+ 0x07e4, 0x07e4, 0x07f2, 0x07fd, 0x07fd, 0x0802, 0x080b, 0x0811,
+ 0x0816, 0x081f, 0x082c, 0x082c, 0x082c, 0x0831, 0x0838, 0x083d,
+ // Entry 140 - 17F
+ 0x083d, 0x0847, 0x0847, 0x0851, 0x085a, 0x085f, 0x086b, 0x086b,
+ 0x086f, 0x0873, 0x0879, 0x087e, 0x0884, 0x0884, 0x0884, 0x088a,
+ 0x0890, 0x0897, 0x08a6, 0x08b5, 0x08b5, 0x08c2, 0x08ca, 0x08d0,
+ 0x08d3, 0x08d8, 0x08dc, 0x08e5, 0x08ec, 0x08f0, 0x08f7, 0x0901,
+ 0x0901, 0x0905, 0x0905, 0x090a, 0x0915, 0x0921, 0x0921, 0x0921,
+ 0x0925, 0x092d, 0x0935, 0x0944, 0x094b, 0x0953, 0x0959, 0x0968,
+ 0x0968, 0x0968, 0x096f, 0x0975, 0x097d, 0x0982, 0x0989, 0x098e,
+ 0x0995, 0x099b, 0x09a0, 0x09a6, 0x09ab, 0x09b3, 0x09b3, 0x09b3,
+ // Entry 180 - 1BF
+ 0x09b3, 0x09b9, 0x09b9, 0x09be, 0x09c2, 0x09ca, 0x09ca, 0x09d4,
+ 0x09db, 0x09e0, 0x09e3, 0x09e9, 0x09ef, 0x09ef, 0x09ef, 0x09f7,
+ 0x09fb, 0x0a01, 0x0a09, 0x0a10, 0x0a18, 0x0a1d, 0x0a21, 0x0a27,
+ 0x0a2d, 0x0a32, 0x0a36, 0x0a3e, 0x0a48, 0x0a56, 0x0a5a, 0x0a60,
+ 0x0a6b, 0x0a71, 0x0a79, 0x0a7f, 0x0a84, 0x0a84, 0x0a8b, 0x0a96,
+ 0x0a9b, 0x0aa6, 0x0aad, 0x0aad, 0x0ab2, 0x0ab7, 0x0abf, 0x0abf,
+ 0x0acb, 0x0acf, 0x0ad8, 0x0ade, 0x0ae2, 0x0ae8, 0x0ae8, 0x0aee,
+ 0x0af7, 0x0afc, 0x0b07, 0x0b07, 0x0b0b, 0x0b14, 0x0b18, 0x0b29,
+ // Entry 1C0 - 1FF
+ 0x0b31, 0x0b39, 0x0b44, 0x0b49, 0x0b4e, 0x0b5f, 0x0b69, 0x0b70,
+ 0x0b78, 0x0b82, 0x0b8b, 0x0b8b, 0x0b8b, 0x0b8b, 0x0b95, 0x0b95,
+ 0x0b9e, 0x0b9e, 0x0b9e, 0x0ba4, 0x0ba4, 0x0bb2, 0x0bb9, 0x0bb9,
+ 0x0bc3, 0x0bca, 0x0bd4, 0x0bd4, 0x0bd4, 0x0bd9, 0x0bdf, 0x0bdf,
+ 0x0bdf, 0x0bdf, 0x0be8, 0x0beb, 0x0bf2, 0x0bf7, 0x0c02, 0x0c09,
+ 0x0c0e, 0x0c15, 0x0c15, 0x0c1c, 0x0c21, 0x0c2b, 0x0c31, 0x0c31,
+ 0x0c3b, 0x0c41, 0x0c45, 0x0c45, 0x0c4e, 0x0c5d, 0x0c64, 0x0c64,
+ 0x0c6d, 0x0c71, 0x0c81, 0x0c87, 0x0c87, 0x0c87, 0x0c90, 0x0c9a,
+ // Entry 200 - 23F
+ 0x0ca5, 0x0cb1, 0x0cb8, 0x0cc1, 0x0ccd, 0x0cd2, 0x0cd6, 0x0cd6,
+ 0x0cdc, 0x0ce0, 0x0ce8, 0x0cf0, 0x0d03, 0x0d12, 0x0d18, 0x0d18,
+ 0x0d18, 0x0d1d, 0x0d21, 0x0d27, 0x0d2c, 0x0d31, 0x0d35, 0x0d3c,
+ 0x0d3c, 0x0d43, 0x0d4a, 0x0d4a, 0x0d52, 0x0d60, 0x0d69, 0x0d69,
+ 0x0d6f, 0x0d6f, 0x0d78, 0x0d78, 0x0d7f, 0x0d85, 0x0d8c, 0x0d94,
+ 0x0daf, 0x0db5, 0x0dbf, 0x0dc6, 0x0dc9, 0x0dcc, 0x0dcc, 0x0dcc,
+ 0x0dcc, 0x0dcc, 0x0dd2, 0x0dd2, 0x0dd7, 0x0de1, 0x0de7, 0x0dec,
+ 0x0df1, 0x0df8, 0x0df8, 0x0dfe, 0x0dfe, 0x0e02, 0x0e05, 0x0e0b,
+ // Entry 240 - 27F
+ 0x0e12, 0x0e17, 0x0e17, 0x0e22, 0x0e29, 0x0e35, 0x0e35, 0x0e3b,
+ 0x0e44, 0x0e48, 0x0e5f, 0x0e63, 0x0e7a, 0x0e8b, 0x0e99, 0x0eaa,
+ 0x0ebb, 0x0ecb, 0x0eda, 0x0eec, 0x0f02, 0x0f13, 0x0f23, 0x0f23,
+ 0x0f32, 0x0f43, 0x0f43, 0x0f49, 0x0f60, 0x0f76, 0x0f7f, 0x0f8c,
+ 0x0f9e, 0x0fb3,
+} // Size: 1244 bytes
+
+var deLangStr string = "" + // Size: 6195 bytes
+ "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" +
+ "ischAwarischAymaraAserbaidschanischBaschkirischWeißrussischBulgarischBis" +
+ "lamaBambaraBengalischTibetischBretonischBosnischKatalanischTschetschenis" +
+ "chChamorro-SpracheKorsischCreeTschechischKirchenslawischTschuwaschischWa" +
+ "lisischDänischDeutschMaledivischDzongkhaEweGriechischEnglischEsperantoSp" +
+ "anischEstnischBaskischPersischFulFinnischFidschiFäröischFranzösischWestf" +
+ "riesischIrischSchottisches GälischGalizischGuaraniGujaratiManxHaussaHebr" +
+ "äischHindiHiri-MotuKroatischHaiti-KreolischUngarischArmenischHerero-Spr" +
+ "acheInterlinguaIndonesischInterlingueIgboYiInupiakIdo-SpracheIsländischI" +
+ "talienischInuktitutJapanischJavanischGeorgischKongolesischKikuyuKwanyama" +
+ "KasachischGrönländischKhmerKannadaKoreanischKanuri-SpracheKaschmiriKurdi" +
+ "schKomi-SpracheKornischKirgisischLateinLuxemburgischGandaLimburgischLing" +
+ "alaLaotischLitauischLuba-KatangaLettischMadagassischMarschallesischMaori" +
+ "MazedonischMalayalamMongolischMarathiMalaiischMaltesischBirmanischNaurui" +
+ "schNord-NdebeleNepalesischNdongaNiederländischNorwegisch NynorskNorwegis" +
+ "ch BokmålSüd-Ndebele-SpracheNavajoNyanja-SpracheOkzitanischOjibwa-Sprach" +
+ "eOromoOriyaOssetischPunjabiPaliPolnischPaschtuPortugiesischQuechuaRätoro" +
+ "manischRundiRumänischRussischKinyarwandaSanskritSardischSindhiNordsamisc" +
+ "hSangoSinghalesischSlowakischSlowenischSamoanischShonaSomaliAlbanischSer" +
+ "bischSwaziSüd-Sotho-SpracheSundanesischSchwedischSuaheliTamilTeluguTadsc" +
+ "hikischThailändischTigrinyaTurkmenischTswana-SpracheTongaischTürkischTso" +
+ "ngaTatarischTahitischUigurischUkrainischUrduUsbekischVenda-SpracheVietna" +
+ "mesischVolapükWallonischWolofXhosaJiddischYorubaZhuangChinesischZuluAceh" +
+ "-SpracheAcholi-SpracheAdangmeAdygeischTunesisches ArabischAfrihiliAghemA" +
+ "inu-SpracheAkkadischAlabamaAleutischGegischSüd-AltaischAltenglischAngika" +
+ "AramäischMapudungunAraonaArapaho-SpracheAlgerisches ArabischArawak-Sprac" +
+ "heMarokkanisches ArabischÄgyptisches ArabischPareAmerikanische Gebärdens" +
+ "pracheAsturianischKotavaAwadhiBelutschischBalinesischBairischBasaa-Sprac" +
+ "heBamunBatak TobaGhomalaBedauyeBembaBetawiBenaBafutBadagaWestliches Belu" +
+ "tschiBhodschpuriBikol-SpracheBini-SpracheBanjaresischKomBlackfoot-Sprach" +
+ "eBishnupriyaBachtiarischBraj-BhakhaBrahuiBodoAkooseBurjatischBuginesisch" +
+ "BuluBlinMedumbaCaddoKaribischCayugaAtsamCebuanoRukigaChibcha-SpracheTsch" +
+ "agataischTrukesischTscheremissischChinookChoctawChipewyanCherokeeCheyenn" +
+ "eZentralkurdischKoptischCapiznonKrimtatarischKaschubischDakota-SpracheDa" +
+ "rginischTaitaDelaware-SpracheSlaveDogribDinka-SpracheZarmaDogriNiedersor" +
+ "bischZentral-DusunDualaMittelniederländischDiolaDyula-SpracheDazagaEmbuE" +
+ "fikEmilianischÄgyptischEkajukElamischMittelenglischZentral-Alaska-YupikE" +
+ "wondoExtremadurischPangwe-SpracheFilipinoMeänkieliFon-SpracheCajunMittel" +
+ "französischAltfranzösischFrankoprovenzalischNordfriesischOstfriesischFri" +
+ "ulischGa-SpracheGagausischGanGayoGbaya-SpracheGabriGeezGilbertesischGila" +
+ "kiMittelhochdeutschAlthochdeutschGoa-KonkaniGondi-SpracheMongondouGotisc" +
+ "hGrebo-SpracheAltgriechischSchweizerdeutschWayúuFarefareGusiiKutchin-Spr" +
+ "acheHaida-SpracheHakkaHawaiischFidschi-HindiHiligaynon-SpracheHethitisch" +
+ "Miao-SpracheObersorbischXiangHupaIbanIbibioIlokano-SpracheInguschischIsc" +
+ "horischJamaikanisch-kreolische SpracheLojbanNgombaMachameJüdisch-Persisc" +
+ "hJüdisch-ArabischJütischKarakalpakischKabylischKachin-SpracheJjuKambaKaw" +
+ "iKabardinischKanembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasi-Spra" +
+ "cheSakischKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbundu-SpracheKomi-Pe" +
+ "rmjakischKonkaniKosraeanischKpelle-SpracheKaratschaiisch-BalkarischKrioK" +
+ "inaray-aKarelischOraon-SpracheShambalaBafiaKölschKumükischKutenai-Sprach" +
+ "eLadinoLangiLahndaLamba-SpracheLesgischLingua Franca NovaLigurischLivisc" +
+ "hLakotaLombardischMongoRotse-SpracheNördliches LuriLettgallischLuba-Lulu" +
+ "aLuiseno-SpracheLunda-SpracheLuo-SpracheLushai-SpracheLuhyaKlassisches C" +
+ "hinesischLasischMaduresischMafaKhottaMaithiliMakassarischManding-Sprache" +
+ "MassaiMabaMokshaMandaresischMende-SpracheMeruMorisyenMittelirischMakhuwa" +
+ "-MeettoMeta’Micmac-SpracheMinangkabau-SpracheMandschurischMeithei-Sprach" +
+ "eMohawkMossi-SpracheBergmariMundangMehrsprachigMuskogee-SpracheMirandesi" +
+ "schMarwariMentawaiMyeneErsja-MordwinischMasanderanischMin NanNeapolitani" +
+ "schNamaNiederdeutschNewariNias-SpracheNiue-SpracheAo-NagaKwasioNgiemboon" +
+ "NogaiAltnordischNovialN’KoNord-Sotho-SpracheNuerAlt-NewariNyamwezi-Sprac" +
+ "heNyankoleNyoroNzimaOsage-SpracheOsmanischPangasinan-SpracheMittelpersis" +
+ "chPampanggan-SprachePapiamentoPalauPicardischPennsylvaniadeutschPlautdie" +
+ "tschAltpersischPfälzischPhönikischPiemontesischPontischPonapeanischAltpr" +
+ "eußischAltprovenzalischK’iche’Chimborazo Hochland-QuechuaRajasthaniOster" +
+ "insel-SpracheRarotonganischRomagnolTarifitRomboRomaniRotumanischRussinis" +
+ "chRovianaAromunischRwaSandawe-SpracheJakutischSamaritanischSamburuSasakS" +
+ "antaliSaurashtraNgambaySanguSizilianischSchottischSassarischSüdkurdischS" +
+ "enecaSenaSeriSelkupischKoyra SenniAltirischSamogitischTaschelhitSchan-Sp" +
+ "racheTschadisch-ArabischSidamoSchlesischSelayarSüdsamischLule-SamischIna" +
+ "ri-SamischSkolt-SamischSoninke-SpracheSogdischSrananischSerer-SpracheSah" +
+ "oSaterfriesischSukuma-SpracheSusuSumerischKomorischKongo-SuaheliAltsyris" +
+ "chSyrischSchlesisch (Polen)TuluTemneTesoTereno-SpracheTetum-SpracheTigre" +
+ "Tiv-SpracheTokelauanischTsachurischKlingonischTlingit-SpracheTalischTama" +
+ "seqTsonga-SpracheNeumelanesischTuroyoTarokoTsakonischTsimshian-SpracheTa" +
+ "tischTumbuka-SpracheElliceanischTasawaqTuwinischZentralatlas-TamazightUd" +
+ "murtischUgaritischMbundu-SpracheRootVaiVenetischWepsischWestflämischMain" +
+ "fränkischWotischVõroVunjoWalser-DialekteWalamo-SpracheWarayWasho-Sprache" +
+ "WarlpiriWuKalmückischMingrelischSogaYao-SpracheYapesischYangbenYembaNhee" +
+ "ngatuKantonesischZapotekischBliss-SymboleSeeländischZenagaTamazightZuni-" +
+ "SpracheKeine SprachinhalteZazaModernes HocharabischÖsterreichisches Deut" +
+ "schSchweizer HochdeutschAustralisches EnglischKanadisches EnglischBritis" +
+ "ches EnglischAmerikanisches EnglischLateinamerikanisches SpanischEuropäi" +
+ "sches SpanischMexikanisches SpanischKanadisches FranzösischSchweizer Fra" +
+ "nzösischNiedersächsischFlämischBrasilianisches PortugiesischEuropäisches" +
+ " PortugiesischMoldauischSerbo-KroatischChinesisch (vereinfacht)Chinesisc" +
+ "h (traditionell)"
+
+var deLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039,
+ 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008e,
+ 0x0095, 0x009c, 0x00a6, 0x00af, 0x00b9, 0x00c1, 0x00cc, 0x00db,
+ 0x00eb, 0x00f3, 0x00f7, 0x0102, 0x0111, 0x011f, 0x0128, 0x0130,
+ 0x0137, 0x0142, 0x014a, 0x014d, 0x0157, 0x015f, 0x0168, 0x0170,
+ 0x0178, 0x0180, 0x0188, 0x018b, 0x0193, 0x019a, 0x01a4, 0x01b0,
+ 0x01bd, 0x01c3, 0x01d8, 0x01e1, 0x01e8, 0x01f0, 0x01f4, 0x01fa,
+ 0x0204, 0x0209, 0x0212, 0x021b, 0x022a, 0x0233, 0x023c, 0x024a,
+ // Entry 40 - 7F
+ 0x0255, 0x0260, 0x026b, 0x026f, 0x0271, 0x0278, 0x0283, 0x028e,
+ 0x0299, 0x02a2, 0x02ab, 0x02b4, 0x02bd, 0x02c9, 0x02cf, 0x02d7,
+ 0x02e1, 0x02ef, 0x02f4, 0x02fb, 0x0305, 0x0313, 0x031c, 0x0324,
+ 0x0330, 0x0338, 0x0342, 0x0348, 0x0355, 0x035a, 0x0365, 0x036c,
+ 0x0374, 0x037d, 0x0389, 0x0391, 0x039d, 0x03ac, 0x03b1, 0x03bc,
+ 0x03c5, 0x03cf, 0x03d6, 0x03df, 0x03e9, 0x03f3, 0x03fc, 0x0408,
+ 0x0413, 0x0419, 0x0428, 0x043a, 0x044c, 0x0460, 0x0466, 0x0474,
+ 0x047f, 0x048d, 0x0492, 0x0497, 0x04a0, 0x04a7, 0x04ab, 0x04b3,
+ // Entry 80 - BF
+ 0x04ba, 0x04c7, 0x04ce, 0x04dc, 0x04e1, 0x04eb, 0x04f3, 0x04fe,
+ 0x0506, 0x050e, 0x0514, 0x051f, 0x0524, 0x0531, 0x053b, 0x0545,
+ 0x054f, 0x0554, 0x055a, 0x0563, 0x056b, 0x0570, 0x0582, 0x058e,
+ 0x0598, 0x059f, 0x05a4, 0x05aa, 0x05b6, 0x05c3, 0x05cb, 0x05d6,
+ 0x05e4, 0x05ed, 0x05f6, 0x05fc, 0x0605, 0x060e, 0x0617, 0x0621,
+ 0x0625, 0x062e, 0x063b, 0x0648, 0x0650, 0x065a, 0x065f, 0x0664,
+ 0x066c, 0x0672, 0x0678, 0x0682, 0x0686, 0x0692, 0x06a0, 0x06a7,
+ 0x06b0, 0x06c4, 0x06cc, 0x06d1, 0x06dd, 0x06e6, 0x06ed, 0x06f6,
+ // Entry C0 - FF
+ 0x06fd, 0x070a, 0x0715, 0x071b, 0x0725, 0x072f, 0x0735, 0x0744,
+ 0x0758, 0x0766, 0x077d, 0x0792, 0x0796, 0x07b4, 0x07c0, 0x07c6,
+ 0x07cc, 0x07d8, 0x07e3, 0x07eb, 0x07f8, 0x07fd, 0x0807, 0x080e,
+ 0x0815, 0x081a, 0x0820, 0x0824, 0x0829, 0x082f, 0x0843, 0x084e,
+ 0x085b, 0x0867, 0x0873, 0x0876, 0x0887, 0x0892, 0x089e, 0x08a9,
+ 0x08af, 0x08b3, 0x08b9, 0x08c3, 0x08ce, 0x08d2, 0x08d6, 0x08dd,
+ 0x08e2, 0x08eb, 0x08f1, 0x08f6, 0x08fd, 0x0903, 0x0912, 0x091f,
+ 0x0929, 0x0938, 0x093f, 0x0946, 0x094f, 0x0957, 0x095f, 0x096e,
+ // Entry 100 - 13F
+ 0x0976, 0x097e, 0x098b, 0x0996, 0x09a4, 0x09ae, 0x09b3, 0x09c3,
+ 0x09c8, 0x09ce, 0x09db, 0x09e0, 0x09e5, 0x09f3, 0x0a00, 0x0a05,
+ 0x0a1a, 0x0a1f, 0x0a2c, 0x0a32, 0x0a36, 0x0a3a, 0x0a45, 0x0a4f,
+ 0x0a55, 0x0a5d, 0x0a6b, 0x0a7f, 0x0a85, 0x0a93, 0x0aa1, 0x0aa9,
+ 0x0ab3, 0x0abe, 0x0ac3, 0x0ad5, 0x0ae4, 0x0af7, 0x0b04, 0x0b10,
+ 0x0b19, 0x0b23, 0x0b2d, 0x0b30, 0x0b34, 0x0b41, 0x0b46, 0x0b4a,
+ 0x0b57, 0x0b5d, 0x0b6e, 0x0b7c, 0x0b87, 0x0b94, 0x0b9d, 0x0ba4,
+ 0x0bb1, 0x0bbe, 0x0bce, 0x0bd4, 0x0bdc, 0x0be1, 0x0bf0, 0x0bfd,
+ // Entry 140 - 17F
+ 0x0c02, 0x0c0b, 0x0c18, 0x0c2a, 0x0c34, 0x0c40, 0x0c4c, 0x0c51,
+ 0x0c55, 0x0c59, 0x0c5f, 0x0c6e, 0x0c79, 0x0c83, 0x0ca2, 0x0ca8,
+ 0x0cae, 0x0cb5, 0x0cc6, 0x0cd7, 0x0cdf, 0x0ced, 0x0cf6, 0x0d04,
+ 0x0d07, 0x0d0c, 0x0d10, 0x0d1c, 0x0d23, 0x0d27, 0x0d2e, 0x0d3a,
+ 0x0d41, 0x0d45, 0x0d4d, 0x0d5a, 0x0d61, 0x0d6d, 0x0d73, 0x0d7c,
+ 0x0d80, 0x0d88, 0x0d98, 0x0da8, 0x0daf, 0x0dbb, 0x0dc9, 0x0de2,
+ 0x0de6, 0x0def, 0x0df8, 0x0e05, 0x0e0d, 0x0e12, 0x0e19, 0x0e23,
+ 0x0e32, 0x0e38, 0x0e3d, 0x0e43, 0x0e50, 0x0e58, 0x0e6a, 0x0e73,
+ // Entry 180 - 1BF
+ 0x0e7a, 0x0e80, 0x0e8b, 0x0e90, 0x0e9d, 0x0ead, 0x0eb9, 0x0ec3,
+ 0x0ed2, 0x0edf, 0x0eea, 0x0ef8, 0x0efd, 0x0f13, 0x0f1a, 0x0f25,
+ 0x0f29, 0x0f2f, 0x0f37, 0x0f43, 0x0f52, 0x0f58, 0x0f5c, 0x0f62,
+ 0x0f6e, 0x0f7b, 0x0f7f, 0x0f87, 0x0f93, 0x0fa1, 0x0fa8, 0x0fb6,
+ 0x0fc9, 0x0fd6, 0x0fe5, 0x0feb, 0x0ff8, 0x1000, 0x1007, 0x1013,
+ 0x1023, 0x102f, 0x1036, 0x103e, 0x1043, 0x1054, 0x1062, 0x1069,
+ 0x1077, 0x107b, 0x1088, 0x108e, 0x109a, 0x10a6, 0x10ad, 0x10b3,
+ 0x10bc, 0x10c1, 0x10cc, 0x10d2, 0x10d8, 0x10ea, 0x10ee, 0x10f8,
+ // Entry 1C0 - 1FF
+ 0x1108, 0x1110, 0x1115, 0x111a, 0x1127, 0x1130, 0x1142, 0x1150,
+ 0x1162, 0x116c, 0x1171, 0x117b, 0x118e, 0x119a, 0x11a5, 0x11af,
+ 0x11ba, 0x11c7, 0x11cf, 0x11db, 0x11e8, 0x11f8, 0x1203, 0x121e,
+ 0x1228, 0x123a, 0x1248, 0x1250, 0x1257, 0x125c, 0x1262, 0x126d,
+ 0x1277, 0x127e, 0x1288, 0x128b, 0x129a, 0x12a3, 0x12b0, 0x12b7,
+ 0x12bc, 0x12c3, 0x12cd, 0x12d4, 0x12d9, 0x12e5, 0x12ef, 0x12f9,
+ 0x1305, 0x130b, 0x130f, 0x1313, 0x131d, 0x1328, 0x1331, 0x133c,
+ 0x1346, 0x1353, 0x1366, 0x136c, 0x1376, 0x137d, 0x1388, 0x1394,
+ // Entry 200 - 23F
+ 0x13a1, 0x13ae, 0x13bd, 0x13c5, 0x13cf, 0x13dc, 0x13e0, 0x13ee,
+ 0x13fc, 0x1400, 0x1409, 0x1412, 0x141f, 0x1429, 0x1430, 0x1442,
+ 0x1446, 0x144b, 0x144f, 0x145d, 0x146a, 0x146f, 0x147a, 0x1487,
+ 0x1492, 0x149d, 0x14ac, 0x14b3, 0x14ba, 0x14c8, 0x14d6, 0x14dc,
+ 0x14e2, 0x14ec, 0x14fd, 0x1504, 0x1513, 0x151f, 0x1526, 0x152f,
+ 0x1545, 0x154f, 0x1559, 0x1567, 0x156b, 0x156e, 0x1577, 0x157f,
+ 0x158c, 0x159a, 0x15a1, 0x15a6, 0x15ab, 0x15ba, 0x15c8, 0x15cd,
+ 0x15da, 0x15e2, 0x15e4, 0x15f0, 0x15fb, 0x15ff, 0x160a, 0x1613,
+ // Entry 240 - 27F
+ 0x161a, 0x161f, 0x1628, 0x1634, 0x163f, 0x164c, 0x1658, 0x165e,
+ 0x1667, 0x1673, 0x1686, 0x168a, 0x169f, 0x169f, 0x16b8, 0x16cd,
+ 0x16e3, 0x16f7, 0x170a, 0x1721, 0x173e, 0x1754, 0x176a, 0x176a,
+ 0x1782, 0x1798, 0x17a8, 0x17b1, 0x17ce, 0x17e9, 0x17f3, 0x1802,
+ 0x181a, 0x1833,
+} // Size: 1244 bytes
+
+var elLangStr string = "" + // Size: 8953 bytes
+ "ΑφάρΑμπχαζικάΑβεστάνΑφρικάανςΑκάνΑμαρικάΑραγκονικάΑραβικάΑσαμεζικάΆβαρικ" +
+ "ΑϊμάραΑζερμπαϊτζανικάΜπασκίρΛευκορωσικάΒουλγαρικάΜπισλάμαΜπαμπάραΜπενγκ" +
+ "άλιΘιβετιανάΒρετονικάΒοσνιακάΚαταλανικάΤσετσενικάΚαμόρροΚορσικανικάΚριΤ" +
+ "σεχικάΕκκλησιαστικά ΣλαβικάΤσουβασικάΟυαλικάΔανικάΓερμανικάΝτιβέχιΝτζόν" +
+ "γκχαΓιΕλληνικάΑγγλικάΕσπεράντοΙσπανικάΕσθονικάΒασκικάΠερσικάΦουλάχΦινλα" +
+ "νδικάΦίτζιΦαρόεΓαλλικάΔυτικά ΦριζιανάΙρλανδικάΣκωτικά ΚελτικάΓαλικιανάΓ" +
+ "κουαρανίΓκουγιαράτιΜανξΧάουσαΕβραϊκάΧίντιΧίρι ΜότουΚροατικάΑϊτιανάΟυγγρ" +
+ "ικάΑρμενικάΧερέροΙντερλίνγκουαΙνδονησιακάΙντερλίνγκουεΊγκμποΣικουάν ΓιΙ" +
+ "νουπιάκΊντοΙσλανδικάΙταλικάΙνουκτιτούτΙαπωνικάΙαβανεζικάΓεωργιανάΚονγκό" +
+ "ΚικούγιουΚουανιγιάμαΚαζακικάΚαλαάλισουτΚαμποτζιανάΚανάνταΚορεατικάΚανού" +
+ "ριΚασμίριΚουρδικάΚόμιΚόρνιςΚυργιζικάΛατινικάΛουξεμβουργιανάΓκάνταΛιμβου" +
+ "ργιανάΛινγκάλαΛαοθιανάΛιθουανικάΛούμπα-ΚατάνγκαΛετονικάΜαλαγάσιΜάρσαλΜά" +
+ "οριΣλαβομακεδονικάΜαλαγιαλάμΜογγολικάΜαράθιΜαλάιΜαλτεζικάΒιρμανικάΝαούρ" +
+ "ουΝτεμπέλε ΒορράΝεπάλιΝτόνγκαΟλλανδικάΝορβηγικά ΝινόρσκΝορβηγικά Μποκμά" +
+ "λΝτεμπέλε ΝότουΝάβαχοΝιάντζαΟκσιτανικάΟζιβίγουαΟρόμοΟρίγιαΟσετικάΠαντζα" +
+ "πικάΠάλιΠολωνικάΠάστοΠορτογαλικάΚετσούαΡομανικάΡούντιΡουμανικάΡωσικάΚιν" +
+ "ιαρβάνταΣανσκριτικάΣαρδινικάΣίντιΒόρεια ΣάμιΣάνγκοΣινχαλεζικάΣλοβακικάΣ" +
+ "λοβενικάΣαμόανΣχόναΣομάλιΑλβανικάΣερβικάΣουάτιΝότια ΣόθοΣουνδανικάΣουηδ" +
+ "ικάΣουαχίλιΤαμίλΤελούγκουΤατζίκΤαϊλανδικάΤιγκρίνυαΤουρκμενικάΤσιγουάναΤ" +
+ "ονγκανικάΤουρκικάΤσόνγκαΤατάρΤαϊτιανάΟυιγουρικάΟυκρανικάΟυρντούΟυζμπεκι" +
+ "κάΒένδαΒιετναμικάΒόλαπικΓουαλούνΓουόλοφΖόσαΓίντιςΓιορούμπαΖουάνγκΚινεζι" +
+ "κάΖουλούΑχινίζΑκολίΑντάνγκμεΑντιγκέαΑφριχίλιΑγκέμΑϊνούΑκάντιανΑλούτΝότι" +
+ "α ΑλαταϊκάΠαλαιά ΑγγλικάΑνγκικάΑραμαϊκάΑρουκάνιανΑράπαχοΑραγουάκΆσουΑστ" +
+ "ουριανάΑγουαντίΜπαλούτσιΜπαλινίζΜπάσαΜπαμούνΓκομάλαΜπέζαΜπέμπαΜπέναΜπαφ" +
+ "ούτΔυτικά ΜπαλοχικάΜποζπούριΜπικόλΜπίνιΚομΣικσίκαΜπρατζΜπόντοΑκόσιΜπουρ" +
+ "ιάτΜπουγκίζΜπουλούΜπλινΜεντούμπαΚάντοΚαρίμπΚαγιούγκαΑτσάμΚεμπουάνοΤσίγκ" +
+ "αΤσίμπτσαΤσαγκατάιΤσουκίζιΜάριΙδιωματικά ΣινούκΤσοκτάουΤσίπιουανΤσερόκι" +
+ "ΣεγιένΚουρδικά ΣοράνιΚοπτικάΤουρκικά ΚριμαίαςΚασούμπιανΝτακόταΝτάργκουα" +
+ "ΤάιταΝτέλαγουερΣλαβικάΝτόγκριμπΝτίνκαΖάρμαΝτόγκριΓλώσσα Κάτω ΛουσατίαςΝ" +
+ "τουάλαΜέσα ΟλλανδικάΤζόλα-ΦόνιΝτογιούλαΝταζάγκαΈμπουΕφίκΑρχαία Αιγυπτια" +
+ "κάΕκατζούκΕλαμάιτΜέσα ΑγγλικάΕγουόντοΦανγκΦιλιππινεζικάΦονΜέσα ΓαλλικάΠ" +
+ "αλαιά ΓαλλικάΒόρεια ΦριζιανάΑνατολικά ΦριζιανάΦριούλιανΓκαΓκαγκάουζΓκάγ" +
+ "ιοΓκμπάγιαΓκιζΓκιλμπερτίζΜέσα Άνω ΓερμανικάΠαλαιά Άνω ΓερμανικάΓκόντιΓκ" +
+ "οροντάλοΓοτθικάΓκρίμποΑρχαία ΕλληνικάΓερμανικά ΕλβετίαςΓκούσιΓκουίτσινΧ" +
+ "άινταΧαβανεζικάΧιλιγκαγιόνΧιτίτεΧμονγκΓλώσσα Άνω ΛουσατίαςΧούπαΙμπάνΙμπ" +
+ "ίμπιοΙλόκοΙνγκούςΛόζμπανΝγκόμπαΜάχαμεΙουδαϊκά-ΠερσικάΙουδαϊκά-ΑραβικάΚά" +
+ "ρα-ΚαλπάκΚαμπίλεΚατσίνΤζουΚάμπαΚάουιΚαμπαρντιανάΚανέμπουΤουάπΜακόντεΓλώ" +
+ "σσα του Πράσινου ΑκρωτηρίουΚόροΚάσιΚοτανικάΚόιρα ΤσίνιΚάκοΚαλεντζίνΚιμπ" +
+ "ούντουΚόμι-ΠερμιάκΚονκάνιΚοσραενικάΚπέλεΚαρατσάι-ΜπαλκάρΚαρελιακάΚουρού" +
+ "χΣάμπαλαΜπάφιαΚολωνικάΚουμγιούκΚουτενάιΛαδίνοΛάνγκιΛάχδαΛάμπαΛαζγκιάνΛα" +
+ "κόταΜόνγκοΛόζιΒόρεια ΛούριΛούμπα-ΛουλούαΛουισένοΛούνταΛούοΛουσάιΛουχίαΜ" +
+ "αντουρίζΜάφαΜαγκάχιΜαϊτχίλιΜακαζάρΜαντίνγκοΜασάιΜάμπαΜόκσαΜανδάρΜέντεΜε" +
+ "ρούΜορίσιενΜέσα ΙρλανδικάΜακούβα-ΜέτοΜετάΜικμάκΜινανγκαμπάουΜαντσούΜανι" +
+ "πούριΜοχόκΜόσιΜουντάνγκΠολλαπλές γλώσσεςΚρικΜιραντεζικάΜαργουάριΜιένεΈρ" +
+ "ζυαΜαζαντεράνιΝαπολιτανικάΝάμαΚάτω ΓερμανικάΝεγουάριΝίαςΝιούεανΚβάσιοΝγ" +
+ "κιεμπούνΝογκάιΠαλαιά ΝορβηγικάΝ’ΚοΒόρεια ΣόθοΝουέρΚλασικά ΝεουάριΝιαμγο" +
+ "υέζιΝιανκόλεΝιόροΝζίμαΟσάζΟθωμανικά ΤουρκικάΠανγκασινάνΠαχλάβιΠαμπάνγκα" +
+ "ΠαπιαμέντοΠαλάουανΑρχαία ΠερσικάΦοινικικάΠοχπέιανΠαλαιά ΠροβενσιάλΚισέΡ" +
+ "αζασθάνιΡαπανούιΡαροτονγκάνΡόμποΡομανίΑρομανικάΡουάΣαντάγουεΓιακούτΣαμα" +
+ "ρίτικα ΑραμαϊκάΣαμπούρουΣασάκΣαντάλιΝγκαμπέιΣάνγκουΣικελιανάΣκωτικάΝότι" +
+ "α ΚουρδικάΣένεκαΣέναΣελκούπΚοϊραμπόρο ΣένιΠαλαιά ΙρλανδικάΤασελχίτΣανΑρ" +
+ "αβικά του ΤσαντΣιντάμοΝότια ΣάμιΛούλε ΣάμιΙνάρι ΣάμιΣκολτ ΣάμιΣονίνκεΣο" +
+ "γκντιένΣρανάρ ΤόνγκοΣερέρΣάχοΣουκούμαΣούσουΣουμερικάΚομόρριαΚονγκό Σουα" +
+ "χίλιΚλασικά ΣυριακάΣυριακάΤίμνεΤέσοΤερένοΤέτουμΤίγκρεΤιβΤοκελάουΚλίνγκο" +
+ "νΤλίνγκιτΤαμασέκΝιάσα ΤόνγκαΤοκ ΠισίνΤαρόκοΤσίμσιανΤουμπούκαΤουβαλούΤασ" +
+ "αβάκΤουβίνιανΤαμαζίτ Κεντρικού ΜαρόκοΟυντμούρτΟυγκαρίτικΟυμπούντουΡουτΒ" +
+ "άιΒότικΒούντζοΒάλσερΓουάλαμοΓουάρειΓουασόΓουαρλπίριΚαλμίκΣόγκαΓιάοΓιαπί" +
+ "ζΓιανγκμπένΓιέμπαΚαντονέζικαΖάποτεκΣύμβολα BlissΖενάγκαΤυπικά Ταμαζίγκτ" +
+ " ΜαρόκουΖούνιΧωρίς γλωσσολογικό περιεχόμενοΖάζαΣύγχρονα Τυπικά ΑραβικάΓε" +
+ "ρμανικά ΑυστρίαςΆνω Γερμανικά ΕλβετίαςΑγγλικά ΑυστραλίαςΑγγλικά ΚαναδάΑ" +
+ "γγλικά Ηνωμένου ΒασιλείουΑγγλικά ΑμερικήςΙσπανικά Λατινικής ΑμερικήςΙσπ" +
+ "ανικά ΕυρώπηςΙσπανικά ΜεξικούΓαλλικά ΚαναδάΓαλλικά ΕλβετίαςΚάτω Γερμανι" +
+ "κά ΟλλανδίαςΦλαμανδικάΠορτογαλικά ΒραζιλίαςΠορτογαλικά ΕυρώπηςΜολδαβικά" +
+ "ΣερβοκροατικάΑπλοποιημένα ΚινεζικάΠαραδοσιακά Κινεζικά"
+
+var elLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0008, 0x001a, 0x0028, 0x003a, 0x0042, 0x0050, 0x0064,
+ 0x0072, 0x0084, 0x0090, 0x009c, 0x00ba, 0x00c8, 0x00de, 0x00f2,
+ 0x0102, 0x0112, 0x0124, 0x0136, 0x0148, 0x0158, 0x016c, 0x0180,
+ 0x018e, 0x01a4, 0x01aa, 0x01b8, 0x01e1, 0x01f5, 0x0203, 0x020f,
+ 0x0221, 0x022f, 0x0241, 0x0245, 0x0255, 0x0263, 0x0275, 0x0285,
+ 0x0295, 0x02a3, 0x02b1, 0x02bd, 0x02d1, 0x02db, 0x02e5, 0x02f3,
+ 0x0310, 0x0322, 0x033f, 0x0351, 0x0363, 0x0379, 0x0381, 0x038d,
+ 0x039b, 0x03a5, 0x03b8, 0x03c8, 0x03d6, 0x03e6, 0x03f6, 0x0402,
+ // Entry 40 - 7F
+ 0x041c, 0x0432, 0x044c, 0x0458, 0x046b, 0x047b, 0x0483, 0x0495,
+ 0x04a3, 0x04b9, 0x04c9, 0x04dd, 0x04ef, 0x04fb, 0x050d, 0x0523,
+ 0x0533, 0x0549, 0x055f, 0x056d, 0x057f, 0x058d, 0x059b, 0x05ab,
+ 0x05b3, 0x05bf, 0x05d1, 0x05e1, 0x05ff, 0x060b, 0x0623, 0x0633,
+ 0x0643, 0x0657, 0x0674, 0x0684, 0x0694, 0x06a0, 0x06aa, 0x06c8,
+ 0x06dc, 0x06ee, 0x06fa, 0x0704, 0x0716, 0x0728, 0x0736, 0x0751,
+ 0x075d, 0x076b, 0x077d, 0x079e, 0x07bf, 0x07da, 0x07e6, 0x07f4,
+ 0x0808, 0x081a, 0x0824, 0x0830, 0x083e, 0x0852, 0x085a, 0x086a,
+ // Entry 80 - BF
+ 0x0874, 0x088a, 0x0898, 0x08a8, 0x08b4, 0x08c6, 0x08d2, 0x08e8,
+ 0x08fe, 0x0910, 0x091a, 0x092f, 0x093b, 0x0951, 0x0963, 0x0975,
+ 0x0981, 0x098b, 0x0997, 0x09a7, 0x09b5, 0x09c1, 0x09d4, 0x09e8,
+ 0x09f8, 0x0a08, 0x0a12, 0x0a24, 0x0a30, 0x0a44, 0x0a56, 0x0a6c,
+ 0x0a7e, 0x0a92, 0x0aa2, 0x0ab0, 0x0aba, 0x0aca, 0x0ade, 0x0af0,
+ 0x0afe, 0x0b12, 0x0b1c, 0x0b30, 0x0b3e, 0x0b4e, 0x0b5c, 0x0b64,
+ 0x0b70, 0x0b82, 0x0b90, 0x0ba0, 0x0bac, 0x0bb8, 0x0bc2, 0x0bd4,
+ 0x0be4, 0x0be4, 0x0bf4, 0x0bfe, 0x0c08, 0x0c18, 0x0c18, 0x0c22,
+ // Entry C0 - FF
+ 0x0c22, 0x0c3d, 0x0c58, 0x0c66, 0x0c76, 0x0c8a, 0x0c8a, 0x0c98,
+ 0x0c98, 0x0ca8, 0x0ca8, 0x0ca8, 0x0cb0, 0x0cb0, 0x0cc4, 0x0cc4,
+ 0x0cd4, 0x0ce6, 0x0cf6, 0x0cf6, 0x0d00, 0x0d0e, 0x0d0e, 0x0d1c,
+ 0x0d26, 0x0d32, 0x0d32, 0x0d3c, 0x0d4a, 0x0d4a, 0x0d69, 0x0d7b,
+ 0x0d87, 0x0d91, 0x0d91, 0x0d97, 0x0da5, 0x0da5, 0x0da5, 0x0db1,
+ 0x0db1, 0x0dbd, 0x0dc7, 0x0dd7, 0x0de7, 0x0df5, 0x0dff, 0x0e11,
+ 0x0e1b, 0x0e27, 0x0e39, 0x0e43, 0x0e55, 0x0e61, 0x0e71, 0x0e83,
+ 0x0e93, 0x0e9b, 0x0ebc, 0x0ecc, 0x0ede, 0x0eec, 0x0ef8, 0x0f15,
+ // Entry 100 - 13F
+ 0x0f23, 0x0f23, 0x0f44, 0x0f58, 0x0f66, 0x0f78, 0x0f82, 0x0f96,
+ 0x0fa4, 0x0fb6, 0x0fc2, 0x0fcc, 0x0fda, 0x1002, 0x1002, 0x1010,
+ 0x102b, 0x103e, 0x1050, 0x1060, 0x106a, 0x1072, 0x1072, 0x1093,
+ 0x10a3, 0x10b1, 0x10c8, 0x10c8, 0x10d8, 0x10d8, 0x10e2, 0x10fc,
+ 0x10fc, 0x1102, 0x1102, 0x1119, 0x1134, 0x1134, 0x1151, 0x1174,
+ 0x1186, 0x118c, 0x119e, 0x119e, 0x11aa, 0x11ba, 0x11ba, 0x11c2,
+ 0x11d8, 0x11d8, 0x11fa, 0x1220, 0x1220, 0x122c, 0x1240, 0x124e,
+ 0x125c, 0x1279, 0x129c, 0x129c, 0x129c, 0x12a8, 0x12ba, 0x12c6,
+ // Entry 140 - 17F
+ 0x12c6, 0x12da, 0x12da, 0x12f0, 0x12fc, 0x1308, 0x132e, 0x132e,
+ 0x1338, 0x1342, 0x1352, 0x135c, 0x136a, 0x136a, 0x136a, 0x1378,
+ 0x1386, 0x1392, 0x13b1, 0x13d0, 0x13d0, 0x13e5, 0x13f3, 0x13ff,
+ 0x1407, 0x1411, 0x141b, 0x1433, 0x1443, 0x144d, 0x145b, 0x1494,
+ 0x1494, 0x149c, 0x149c, 0x14a4, 0x14b4, 0x14c9, 0x14c9, 0x14c9,
+ 0x14d1, 0x14e3, 0x14f7, 0x150e, 0x151c, 0x1530, 0x153a, 0x1559,
+ 0x1559, 0x1559, 0x156b, 0x1579, 0x1587, 0x1593, 0x15a3, 0x15b5,
+ 0x15c5, 0x15d1, 0x15dd, 0x15e7, 0x15f1, 0x1601, 0x1601, 0x1601,
+ // Entry 180 - 1BF
+ 0x1601, 0x160d, 0x160d, 0x1619, 0x1621, 0x1638, 0x1638, 0x1653,
+ 0x1663, 0x166f, 0x1677, 0x1683, 0x168f, 0x168f, 0x168f, 0x16a1,
+ 0x16a9, 0x16b7, 0x16c7, 0x16d5, 0x16e7, 0x16f1, 0x16fb, 0x1705,
+ 0x1711, 0x171b, 0x1725, 0x1735, 0x1750, 0x1767, 0x176f, 0x177b,
+ 0x1795, 0x17a3, 0x17b5, 0x17bf, 0x17c7, 0x17c7, 0x17d9, 0x17fa,
+ 0x1802, 0x1818, 0x182a, 0x182a, 0x1834, 0x183e, 0x1854, 0x1854,
+ 0x186c, 0x1874, 0x188f, 0x189f, 0x18a7, 0x18b5, 0x18b5, 0x18c1,
+ 0x18d5, 0x18e1, 0x1900, 0x1900, 0x1909, 0x191e, 0x1928, 0x1945,
+ // Entry 1C0 - 1FF
+ 0x1959, 0x1969, 0x1973, 0x197d, 0x1985, 0x19a8, 0x19be, 0x19cc,
+ 0x19de, 0x19f2, 0x1a02, 0x1a02, 0x1a02, 0x1a02, 0x1a1d, 0x1a1d,
+ 0x1a2f, 0x1a2f, 0x1a2f, 0x1a3f, 0x1a3f, 0x1a60, 0x1a68, 0x1a68,
+ 0x1a7a, 0x1a8a, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aaa, 0x1ab6, 0x1ab6,
+ 0x1ab6, 0x1ab6, 0x1ac8, 0x1ad0, 0x1ae2, 0x1af0, 0x1b15, 0x1b27,
+ 0x1b31, 0x1b3f, 0x1b3f, 0x1b4f, 0x1b5d, 0x1b6f, 0x1b7d, 0x1b7d,
+ 0x1b98, 0x1ba4, 0x1bac, 0x1bac, 0x1bba, 0x1bd7, 0x1bf6, 0x1bf6,
+ 0x1c06, 0x1c0c, 0x1c2c, 0x1c3a, 0x1c3a, 0x1c3a, 0x1c4d, 0x1c60,
+ // Entry 200 - 23F
+ 0x1c73, 0x1c86, 0x1c94, 0x1ca6, 0x1cbf, 0x1cc9, 0x1cd1, 0x1cd1,
+ 0x1ce1, 0x1ced, 0x1cff, 0x1d0f, 0x1d2c, 0x1d49, 0x1d57, 0x1d57,
+ 0x1d57, 0x1d61, 0x1d69, 0x1d75, 0x1d81, 0x1d8d, 0x1d93, 0x1da3,
+ 0x1da3, 0x1db3, 0x1dc3, 0x1dc3, 0x1dd1, 0x1de8, 0x1df9, 0x1df9,
+ 0x1e05, 0x1e05, 0x1e15, 0x1e15, 0x1e27, 0x1e37, 0x1e45, 0x1e57,
+ 0x1e85, 0x1e97, 0x1eab, 0x1ebf, 0x1ec7, 0x1ecd, 0x1ecd, 0x1ecd,
+ 0x1ecd, 0x1ecd, 0x1ed7, 0x1ed7, 0x1ee5, 0x1ef1, 0x1f01, 0x1f0f,
+ 0x1f1b, 0x1f2f, 0x1f2f, 0x1f3b, 0x1f3b, 0x1f45, 0x1f4d, 0x1f59,
+ // Entry 240 - 27F
+ 0x1f6d, 0x1f79, 0x1f79, 0x1f8f, 0x1f9d, 0x1fb1, 0x1fb1, 0x1fbf,
+ 0x1fed, 0x1ff7, 0x2031, 0x2039, 0x2065, 0x2065, 0x2088, 0x20b2,
+ 0x20d5, 0x20f0, 0x2122, 0x2141, 0x2175, 0x2194, 0x21b3, 0x21b3,
+ 0x21ce, 0x21ed, 0x221b, 0x222f, 0x2258, 0x227d, 0x228f, 0x22a9,
+ 0x22d2, 0x22f9,
+} // Size: 1244 bytes
+
+var enLangStr string = "" + // Size: 4897 bytes
+ "AfarAbkhazianAvestanAfrikaansAkanAmharicAragoneseArabicAssameseAvaricAym" +
+ "araAzerbaijaniBashkirBelarusianBulgarianBislamaBambaraBengaliTibetanBret" +
+ "onBosnianCatalanChechenChamorroCorsicanCreeCzechChurch SlavicChuvashWels" +
+ "hDanishGermanDivehiDzongkhaEweGreekEnglishEsperantoSpanishEstonianBasque" +
+ "PersianFulahFinnishFijianFaroeseFrenchWestern FrisianIrishScottish Gaeli" +
+ "cGalicianGuaraniGujaratiManxHausaHebrewHindiHiri MotuCroatianHaitian Cre" +
+ "oleHungarianArmenianHereroInterlinguaIndonesianInterlingueIgboSichuan Yi" +
+ "InupiaqIdoIcelandicItalianInuktitutJapaneseJavaneseGeorgianKongoKikuyuKu" +
+ "anyamaKazakhKalaallisutKhmerKannadaKoreanKanuriKashmiriKurdishKomiCornis" +
+ "hKyrgyzLatinLuxembourgishGandaLimburgishLingalaLaoLithuanianLuba-Katanga" +
+ "LatvianMalagasyMarshalleseMaoriMacedonianMalayalamMongolianMarathiMalayM" +
+ "alteseBurmeseNauruNorth NdebeleNepaliNdongaDutchNorwegian NynorskNorwegi" +
+ "an BokmålSouth NdebeleNavajoNyanjaOccitanOjibwaOromoOriyaOsseticPunjabiP" +
+ "aliPolishPashtoPortugueseQuechuaRomanshRundiRomanianRussianKinyarwandaSa" +
+ "nskritSardinianSindhiNorthern SamiSangoSinhalaSlovakSlovenianSamoanShona" +
+ "SomaliAlbanianSerbianSwatiSouthern SothoSundaneseSwedishSwahiliTamilTelu" +
+ "guTajikThaiTigrinyaTurkmenTswanaTonganTurkishTsongaTatarTahitianUyghurUk" +
+ "rainianUrduUzbekVendaVietnameseVolapükWalloonWolofXhosaYiddishYorubaZhua" +
+ "ngChineseZuluAchineseAcoliAdangmeAdygheTunisian ArabicAfrihiliAghemAinuA" +
+ "kkadianAlabamaAleutGheg AlbanianSouthern AltaiOld EnglishAngikaAramaicMa" +
+ "pucheAraonaArapahoAlgerian ArabicArawakMoroccan ArabicEgyptian ArabicAsu" +
+ "American Sign LanguageAsturianKotavaAwadhiBaluchiBalineseBavarianBasaaBa" +
+ "munBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaWestern BalochiBhojpur" +
+ "iBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrahuiBodoAkooseBuriat" +
+ "BugineseBuluBlinMedumbaCaddoCaribCayugaAtsamCebuanoChigaChibchaChagataiC" +
+ "huukeseMariChinook JargonChoctawChipewyanCherokeeCheyenneCentral Kurdish" +
+ "CopticCapiznonCrimean TurkishKashubianDakotaDargwaTaitaDelawareSlaveDogr" +
+ "ibDinkaZarmaDogriLower SorbianCentral DusunDualaMiddle DutchJola-FonyiDy" +
+ "ulaDazagaEmbuEfikEmilianAncient EgyptianEkajukElamiteMiddle EnglishCentr" +
+ "al YupikEwondoExtremaduranFangFilipinoTornedalen FinnishFonCajun FrenchM" +
+ "iddle FrenchOld FrenchArpitanNorthern FrisianEastern FrisianFriulianGaGa" +
+ "gauzGan ChineseGayoGbayaZoroastrian DariGeezGilberteseGilakiMiddle High " +
+ "GermanOld High GermanGoan KonkaniGondiGorontaloGothicGreboAncient GreekS" +
+ "wiss GermanWayuuFrafraGusiiGwichʼinHaidaHakka ChineseHawaiianFiji HindiH" +
+ "iligaynonHittiteHmongUpper SorbianXiang ChineseHupaIbanIbibioIlokoIngush" +
+ "IngrianJamaican Creole EnglishLojbanNgombaMachameJudeo-PersianJudeo-Arab" +
+ "icJutishKara-KalpakKabyleKachinJjuKambaKawiKabardianKanembuTyapMakondeKa" +
+ "buverdianuKenyangKoroKaingangKhasiKhotaneseKoyra ChiiniKhowarKirmanjkiKa" +
+ "koKalenjinKimbunduKomi-PermyakKonkaniKosraeanKpelleKarachay-BalkarKrioKi" +
+ "naray-aKarelianKurukhShambalaBafiaColognianKumykKutenaiLadinoLangiLahnda" +
+ "LambaLezghianLingua Franca NovaLigurianLivonianLakotaLombardMongoLoziNor" +
+ "thern LuriLatgalianLuba-LuluaLuisenoLundaLuoMizoLuyiaLiterary ChineseLaz" +
+ "MadureseMafaMagahiMaithiliMakasarMandingoMasaiMabaMokshaMandarMendeMeruM" +
+ "orisyenMiddle IrishMakhuwa-MeettoMetaʼMicmacMinangkabauManchuManipuriMoh" +
+ "awkMossiWestern MariMundangMultiple LanguagesCreekMirandeseMarwariMentaw" +
+ "aiMyeneErzyaMazanderaniMin Nan ChineseNeapolitanNamaLow GermanNewariNias" +
+ "NiueanAo NagaKwasioNgiemboonNogaiOld NorseNovialN’KoNorthern SothoNuerCl" +
+ "assical NewariNyamweziNyankoleNyoroNzimaOsageOttoman TurkishPangasinanPa" +
+ "hlaviPampangaPapiamentoPalauanPicardPennsylvania GermanPlautdietschOld P" +
+ "ersianPalatine GermanPhoenicianPiedmontesePonticPohnpeianPrussianOld Pro" +
+ "vençalKʼicheʼChimborazo Highland QuichuaRajasthaniRapanuiRarotonganRomag" +
+ "nolRiffianRomboRomanyRotumanRusynRovianaAromanianRwaSandaweSakhaSamarita" +
+ "n AramaicSamburuSasakSantaliSaurashtraNgambaySanguSicilianScotsSassarese" +
+ " SardinianSouthern KurdishSenecaSenaSeriSelkupKoyraboro SenniOld IrishSa" +
+ "mogitianTachelhitShanChadian ArabicSidamoLower SilesianSelayarSouthern S" +
+ "amiLule SamiInari SamiSkolt SamiSoninkeSogdienSranan TongoSererSahoSater" +
+ "land FrisianSukumaSusuSumerianComorianCongo SwahiliClassical SyriacSyria" +
+ "cSilesianTuluTimneTesoTerenoTetumTigreTivTokelauTsakhurKlingonTlingitTal" +
+ "yshTamashekNyasa TongaTok PisinTuroyoTarokoTsakonianTsimshianMuslim TatT" +
+ "umbukaTuvaluTasawaqTuvinianCentral Atlas TamazightUdmurtUgariticUmbunduR" +
+ "ootVaiVenetianVepsWest FlemishMain-FranconianVoticVõroVunjoWalserWolaytt" +
+ "aWarayWashoWarlpiriWu ChineseKalmykMingrelianSogaYaoYapeseYangbenYembaNh" +
+ "eengatuCantoneseZapotecBlissymbolsZeelandicZenagaStandard Moroccan Tamaz" +
+ "ightZuniNo linguistic contentZazaModern Standard ArabicAustrian GermanSw" +
+ "iss High GermanAustralian EnglishCanadian EnglishBritish EnglishAmerican" +
+ " EnglishLatin American SpanishEuropean SpanishMexican SpanishDariCanadia" +
+ "n FrenchSwiss FrenchLow SaxonFlemishBrazilian PortugueseEuropean Portugu" +
+ "eseMoldavianSerbo-CroatianSimplified ChineseTraditional Chinese"
+
+var enLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0028, 0x0031,
+ 0x0037, 0x003f, 0x0045, 0x004b, 0x0056, 0x005d, 0x0067, 0x0070,
+ 0x0077, 0x007e, 0x0085, 0x008c, 0x0092, 0x0099, 0x00a0, 0x00a7,
+ 0x00af, 0x00b7, 0x00bb, 0x00c0, 0x00cd, 0x00d4, 0x00d9, 0x00df,
+ 0x00e5, 0x00eb, 0x00f3, 0x00f6, 0x00fb, 0x0102, 0x010b, 0x0112,
+ 0x011a, 0x0120, 0x0127, 0x012c, 0x0133, 0x0139, 0x0140, 0x0146,
+ 0x0155, 0x015a, 0x0169, 0x0171, 0x0178, 0x0180, 0x0184, 0x0189,
+ 0x018f, 0x0194, 0x019d, 0x01a5, 0x01b3, 0x01bc, 0x01c4, 0x01ca,
+ // Entry 40 - 7F
+ 0x01d5, 0x01df, 0x01ea, 0x01ee, 0x01f8, 0x01ff, 0x0202, 0x020b,
+ 0x0212, 0x021b, 0x0223, 0x022b, 0x0233, 0x0238, 0x023e, 0x0246,
+ 0x024c, 0x0257, 0x025c, 0x0263, 0x0269, 0x026f, 0x0277, 0x027e,
+ 0x0282, 0x0289, 0x028f, 0x0294, 0x02a1, 0x02a6, 0x02b0, 0x02b7,
+ 0x02ba, 0x02c4, 0x02d0, 0x02d7, 0x02df, 0x02ea, 0x02ef, 0x02f9,
+ 0x0302, 0x030b, 0x0312, 0x0317, 0x031e, 0x0325, 0x032a, 0x0337,
+ 0x033d, 0x0343, 0x0348, 0x0359, 0x036a, 0x0377, 0x037d, 0x0383,
+ 0x038a, 0x0390, 0x0395, 0x039a, 0x03a1, 0x03a8, 0x03ac, 0x03b2,
+ // Entry 80 - BF
+ 0x03b8, 0x03c2, 0x03c9, 0x03d0, 0x03d5, 0x03dd, 0x03e4, 0x03ef,
+ 0x03f7, 0x0400, 0x0406, 0x0413, 0x0418, 0x041f, 0x0425, 0x042e,
+ 0x0434, 0x0439, 0x043f, 0x0447, 0x044e, 0x0453, 0x0461, 0x046a,
+ 0x0471, 0x0478, 0x047d, 0x0483, 0x0488, 0x048c, 0x0494, 0x049b,
+ 0x04a1, 0x04a7, 0x04ae, 0x04b4, 0x04b9, 0x04c1, 0x04c7, 0x04d0,
+ 0x04d4, 0x04d9, 0x04de, 0x04e8, 0x04f0, 0x04f7, 0x04fc, 0x0501,
+ 0x0508, 0x050e, 0x0514, 0x051b, 0x051f, 0x0527, 0x052c, 0x0533,
+ 0x0539, 0x0548, 0x0550, 0x0555, 0x0559, 0x0561, 0x0568, 0x056d,
+ // Entry C0 - FF
+ 0x057a, 0x0588, 0x0593, 0x0599, 0x05a0, 0x05a7, 0x05ad, 0x05b4,
+ 0x05c3, 0x05c9, 0x05d8, 0x05e7, 0x05ea, 0x0600, 0x0608, 0x060e,
+ 0x0614, 0x061b, 0x0623, 0x062b, 0x0630, 0x0635, 0x063f, 0x0646,
+ 0x064a, 0x064f, 0x0655, 0x0659, 0x065e, 0x0664, 0x0673, 0x067b,
+ 0x0680, 0x0684, 0x068a, 0x068d, 0x0694, 0x069f, 0x06a8, 0x06ac,
+ 0x06b2, 0x06b6, 0x06bc, 0x06c2, 0x06ca, 0x06ce, 0x06d2, 0x06d9,
+ 0x06de, 0x06e3, 0x06e9, 0x06ee, 0x06f5, 0x06fa, 0x0701, 0x0709,
+ 0x0711, 0x0715, 0x0723, 0x072a, 0x0733, 0x073b, 0x0743, 0x0752,
+ // Entry 100 - 13F
+ 0x0758, 0x0760, 0x076f, 0x0778, 0x077e, 0x0784, 0x0789, 0x0791,
+ 0x0796, 0x079c, 0x07a1, 0x07a6, 0x07ab, 0x07b8, 0x07c5, 0x07ca,
+ 0x07d6, 0x07e0, 0x07e5, 0x07eb, 0x07ef, 0x07f3, 0x07fa, 0x080a,
+ 0x0810, 0x0817, 0x0825, 0x0832, 0x0838, 0x0844, 0x0848, 0x0850,
+ 0x0862, 0x0865, 0x0871, 0x087e, 0x0888, 0x088f, 0x089f, 0x08ae,
+ 0x08b6, 0x08b8, 0x08be, 0x08c9, 0x08cd, 0x08d2, 0x08e2, 0x08e6,
+ 0x08f0, 0x08f6, 0x0908, 0x0917, 0x0923, 0x0928, 0x0931, 0x0937,
+ 0x093c, 0x0949, 0x0955, 0x095a, 0x0960, 0x0965, 0x096e, 0x0973,
+ // Entry 140 - 17F
+ 0x0980, 0x0988, 0x0992, 0x099c, 0x09a3, 0x09a8, 0x09b5, 0x09c2,
+ 0x09c6, 0x09ca, 0x09d0, 0x09d5, 0x09db, 0x09e2, 0x09f9, 0x09ff,
+ 0x0a05, 0x0a0c, 0x0a19, 0x0a25, 0x0a2b, 0x0a36, 0x0a3c, 0x0a42,
+ 0x0a45, 0x0a4a, 0x0a4e, 0x0a57, 0x0a5e, 0x0a62, 0x0a69, 0x0a75,
+ 0x0a7c, 0x0a80, 0x0a88, 0x0a8d, 0x0a96, 0x0aa2, 0x0aa8, 0x0ab1,
+ 0x0ab5, 0x0abd, 0x0ac5, 0x0ad1, 0x0ad8, 0x0ae0, 0x0ae6, 0x0af5,
+ 0x0af9, 0x0b02, 0x0b0a, 0x0b10, 0x0b18, 0x0b1d, 0x0b26, 0x0b2b,
+ 0x0b32, 0x0b38, 0x0b3d, 0x0b43, 0x0b48, 0x0b50, 0x0b62, 0x0b6a,
+ // Entry 180 - 1BF
+ 0x0b72, 0x0b78, 0x0b7f, 0x0b84, 0x0b88, 0x0b95, 0x0b9e, 0x0ba8,
+ 0x0baf, 0x0bb4, 0x0bb7, 0x0bbb, 0x0bc0, 0x0bd0, 0x0bd3, 0x0bdb,
+ 0x0bdf, 0x0be5, 0x0bed, 0x0bf4, 0x0bfc, 0x0c01, 0x0c05, 0x0c0b,
+ 0x0c11, 0x0c16, 0x0c1a, 0x0c22, 0x0c2e, 0x0c3c, 0x0c42, 0x0c48,
+ 0x0c53, 0x0c59, 0x0c61, 0x0c67, 0x0c6c, 0x0c78, 0x0c7f, 0x0c91,
+ 0x0c96, 0x0c9f, 0x0ca6, 0x0cae, 0x0cb3, 0x0cb8, 0x0cc3, 0x0cd2,
+ 0x0cdc, 0x0ce0, 0x0cea, 0x0cf0, 0x0cf4, 0x0cfa, 0x0d01, 0x0d07,
+ 0x0d10, 0x0d15, 0x0d1e, 0x0d24, 0x0d2a, 0x0d38, 0x0d3c, 0x0d4c,
+ // Entry 1C0 - 1FF
+ 0x0d54, 0x0d5c, 0x0d61, 0x0d66, 0x0d6b, 0x0d7a, 0x0d84, 0x0d8b,
+ 0x0d93, 0x0d9d, 0x0da4, 0x0daa, 0x0dbd, 0x0dc9, 0x0dd4, 0x0de3,
+ 0x0ded, 0x0df8, 0x0dfe, 0x0e07, 0x0e0f, 0x0e1d, 0x0e26, 0x0e41,
+ 0x0e4b, 0x0e52, 0x0e5c, 0x0e64, 0x0e6b, 0x0e70, 0x0e76, 0x0e7d,
+ 0x0e82, 0x0e89, 0x0e92, 0x0e95, 0x0e9c, 0x0ea1, 0x0eb2, 0x0eb9,
+ 0x0ebe, 0x0ec5, 0x0ecf, 0x0ed6, 0x0edb, 0x0ee3, 0x0ee8, 0x0efb,
+ 0x0f0b, 0x0f11, 0x0f15, 0x0f19, 0x0f1f, 0x0f2e, 0x0f37, 0x0f41,
+ 0x0f4a, 0x0f4e, 0x0f5c, 0x0f62, 0x0f70, 0x0f77, 0x0f84, 0x0f8d,
+ // Entry 200 - 23F
+ 0x0f97, 0x0fa1, 0x0fa8, 0x0faf, 0x0fbb, 0x0fc0, 0x0fc4, 0x0fd5,
+ 0x0fdb, 0x0fdf, 0x0fe7, 0x0fef, 0x0ffc, 0x100c, 0x1012, 0x101a,
+ 0x101e, 0x1023, 0x1027, 0x102d, 0x1032, 0x1037, 0x103a, 0x1041,
+ 0x1048, 0x104f, 0x1056, 0x105c, 0x1064, 0x106f, 0x1078, 0x107e,
+ 0x1084, 0x108d, 0x1096, 0x10a0, 0x10a7, 0x10ad, 0x10b4, 0x10bc,
+ 0x10d3, 0x10d9, 0x10e1, 0x10e8, 0x10ec, 0x10ef, 0x10f7, 0x10fb,
+ 0x1107, 0x1116, 0x111b, 0x1120, 0x1125, 0x112b, 0x1133, 0x1138,
+ 0x113d, 0x1145, 0x114f, 0x1155, 0x115f, 0x1163, 0x1166, 0x116c,
+ // Entry 240 - 27F
+ 0x1173, 0x1178, 0x1181, 0x118a, 0x1191, 0x119c, 0x11a5, 0x11ab,
+ 0x11c6, 0x11ca, 0x11df, 0x11e3, 0x11f9, 0x11f9, 0x1208, 0x1219,
+ 0x122b, 0x123b, 0x124a, 0x125a, 0x1270, 0x1280, 0x128f, 0x1293,
+ 0x12a2, 0x12ae, 0x12b7, 0x12be, 0x12d2, 0x12e5, 0x12ee, 0x12fc,
+ 0x130e, 0x1321,
+} // Size: 1244 bytes
+
+const enGBLangStr string = "West Low German"
+
+var enGBLangIdx = []uint16{ // 603 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 100 - 13F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 140 - 17F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 180 - 1BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 1C0 - 1FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 200 - 23F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 240 - 27F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x000f,
+} // Size: 1230 bytes
+
+var esLangStr string = "" + // Size: 4253 bytes
+ "afarabjasioavésticoafrikáansakanamáricoaragonésárabeasamésavaraimaraazer" +
+ "baiyanobaskirbielorrusobúlgarobislamabambarabengalítibetanobretónbosnioc" +
+ "atalánchechenochamorrocorsocreechecoeslavo eclesiásticochuvasiogalésdané" +
+ "salemándivehidzongkhaewégriegoinglésesperantoespañolestonioeuskerapersaf" +
+ "ulafinésfiyianoferoésfrancésfrisón occidentalirlandésgaélico escocésgall" +
+ "egoguaranígujaratimanéshausahebreohindihiri motucroatahaitianohúngaroarm" +
+ "eniohererointerlinguaindonesiointerlingueigboyi de Sichuáninupiaqidoisla" +
+ "ndésitalianoinuktitutjaponésjavanésgeorgianokongokikuyukuanyamakazajogro" +
+ "enlandésjemercanaréscoreanokanuricachemirokurdokomicórnicokirguíslatínlu" +
+ "xemburguésgandalimburguéslingalalaosianolituanoluba-katangaletónmalgache" +
+ "marshalésmaorímacedoniomalayalammongolmaratímalayomaltésbirmanonauruanon" +
+ "debele septentrionalnepalíndonganeerlandésnoruego nynorsknoruego bokmaln" +
+ "debele meridionalnavajonyanjaoccitanoojibwaoromooriyaoséticopanyabípalip" +
+ "olacopastúnportuguésquechuaretorrománicokiroundirumanorusokinyarwandasán" +
+ "scritosardosindhisami septentrionalsangocingaléseslovacoeslovenosamoanos" +
+ "honasomalíalbanésserbiosiswatisesotho meridionalsundanéssuecosuajilitami" +
+ "ltelugutayikotailandéstigriñaturcomanosetchwanatonganoturcotsongatártaro" +
+ "tahitianouigurucranianourduuzbekovendavietnamitavolapükvalónwolofxhosayí" +
+ "dishyorubazhuangchinozulúacehnésacoliadangmeadigeoafrihiliaghemainuacadi" +
+ "oaleutianoaltái meridionalinglés antiguoangikaarameomapuchearapahoarahua" +
+ "coasuasturianoavadhibaluchibalinésbasabamunghomalabejabembabenabafutbalu" +
+ "chi occidentalbhojpuribicolbinikomsiksikabrajbodoakooseburiatbuginésbulu" +
+ "blinmedumbacaddocaribecayugaatsamcebuanochigachibchachagatáitrukésmaríje" +
+ "rga chinukchoctawchipewyancheroquicheyenekurdo soranicoptotártaro de Cri" +
+ "meacasubiodakotadargvataitadelawareslavedogribdinkazarmadogribajo sorbio" +
+ "dualaneerlandés medievaljola-fonyidiuladazagaembuefikegipcio antiguoekaj" +
+ "ukelamitainglés medievalewondofangfilipinofonfrancés medievalfrancés ant" +
+ "iguofrisón septentrionalfrisón orientalfriulanogagagauzogayogbayageezgil" +
+ "bertésalemán de la alta edad mediaalemán de la alta edad antiguagondigor" +
+ "ontalogóticogrebogriego antiguoalemán suizogusiikutchinhaidahawaianohili" +
+ "gaynonhititahmongalto sorbiohupaibanibibioilocanoingushlojbanngombamacha" +
+ "mejudeo-persajudeo-árabekarakalpakocabilakachinjjukambakawikabardianokan" +
+ "embutyapmakondecriollo caboverdianokorokhasikotanéskoyra chiinikakokalen" +
+ "jinkimbundukomi permiokonkaníkosraeanokpellekarachay-balkarcareliokurukh" +
+ "shambalabafiakölschkumykkutenailadinolangilahndalambalezgianolakotamongo" +
+ "lozilorí septentrionalluba-lulualuiseñolundaluolushailuyiamadurésmafamag" +
+ "ahimaithilimacasarmandingomasáimabamokshamandarmendemerucriollo mauricia" +
+ "noirlandés medievalmakhuwa-meettometa’micmacminangkabaumanchúmanipurimoh" +
+ "awkmossimundanglenguas múltiplescreekmirandésmarwarimyeneerzyamazandaran" +
+ "ínapolitanonamabajo alemánnewariniasniueanokwasiongiemboonnogainórdico " +
+ "antiguon’kosotho septentrionalnuernewari clásiconyamwezinyankolenyoronzi" +
+ "maosageturco otomanopangasinánpahlavipampangapapiamentopalauanopersa ant" +
+ "iguofeniciopohnpeianoprovenzal antiguoquichérajasthanirapanuirarotongano" +
+ "romboromaníarrumanorwasandawesakhaarameo samaritanosamburusasaksantaling" +
+ "ambaysangusicilianoescocéskurdo meridionalsenecasenaselkupkoyraboro senn" +
+ "iirlandés antiguotashelhitshanárabe chadianosidamosami meridionalsami lu" +
+ "lesami inarisami skoltsoninkésogdianosranan tongoserersahosukumasususume" +
+ "riocomorensesuajili del Congosiríaco clásicosiriacotemnetesoterenotetúnt" +
+ "igrétivtokelauanoklingontlingittamashektonga del Nyasatok pisintarokotsi" +
+ "mshianotumbukatuvaluanotasawaqtuvinianotamazight del Marruecos Centralud" +
+ "murtugaríticoumbunduraízvaivóticovunjowalserwalamowaraywashowarlpirikalm" +
+ "yksogayaoyapésyangbenyembacantonészapotecosímbolos Blisszenagatamazight " +
+ "estándar marroquízunisin contenido lingüísticozazakiárabe estándar moder" +
+ "noalemán austríacoalto alemán suizoinglés australianoinglés canadiensein" +
+ "glés británicoinglés estadounidenseespañol latinoamericanoespañol de Esp" +
+ "añaespañol de Méxicofrancés canadiensefrancés suizoflamencoportugués de " +
+ "Brasilportugués de Portugalmoldavoserbocroatachino simplificadochino tra" +
+ "dicional"
+
+var esLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000b, 0x0014, 0x001e, 0x0022, 0x002a, 0x0033,
+ 0x0039, 0x0040, 0x0044, 0x004a, 0x0055, 0x005b, 0x0065, 0x006d,
+ 0x0074, 0x007b, 0x0083, 0x008b, 0x0092, 0x0098, 0x00a0, 0x00a8,
+ 0x00b0, 0x00b5, 0x00b9, 0x00be, 0x00d2, 0x00da, 0x00e0, 0x00e6,
+ 0x00ed, 0x00f3, 0x00fb, 0x00ff, 0x0105, 0x010c, 0x0115, 0x011d,
+ 0x0124, 0x012b, 0x0130, 0x0134, 0x013a, 0x0141, 0x0148, 0x0150,
+ 0x0162, 0x016b, 0x017c, 0x0183, 0x018b, 0x0193, 0x0199, 0x019e,
+ 0x01a4, 0x01a9, 0x01b2, 0x01b8, 0x01c0, 0x01c8, 0x01cf, 0x01d5,
+ // Entry 40 - 7F
+ 0x01e0, 0x01e9, 0x01f4, 0x01f8, 0x0206, 0x020d, 0x0210, 0x0219,
+ 0x0221, 0x022a, 0x0232, 0x023a, 0x0243, 0x0248, 0x024e, 0x0256,
+ 0x025c, 0x0268, 0x026d, 0x0275, 0x027c, 0x0282, 0x028b, 0x0290,
+ 0x0294, 0x029c, 0x02a4, 0x02aa, 0x02b7, 0x02bc, 0x02c7, 0x02ce,
+ 0x02d6, 0x02dd, 0x02e9, 0x02ef, 0x02f7, 0x0301, 0x0307, 0x0310,
+ 0x0319, 0x031f, 0x0326, 0x032c, 0x0333, 0x033a, 0x0342, 0x0357,
+ 0x035e, 0x0364, 0x036f, 0x037e, 0x038c, 0x039e, 0x03a4, 0x03aa,
+ 0x03b2, 0x03b8, 0x03bd, 0x03c2, 0x03ca, 0x03d2, 0x03d6, 0x03dc,
+ // Entry 80 - BF
+ 0x03e3, 0x03ed, 0x03f4, 0x0402, 0x040a, 0x0410, 0x0414, 0x041f,
+ 0x0429, 0x042e, 0x0434, 0x0446, 0x044b, 0x0454, 0x045c, 0x0464,
+ 0x046b, 0x0470, 0x0477, 0x047f, 0x0485, 0x048c, 0x049e, 0x04a7,
+ 0x04ac, 0x04b3, 0x04b8, 0x04be, 0x04c4, 0x04ce, 0x04d6, 0x04df,
+ 0x04e8, 0x04ef, 0x04f4, 0x04fa, 0x0502, 0x050b, 0x0510, 0x0519,
+ 0x051d, 0x0523, 0x0528, 0x0532, 0x053a, 0x0540, 0x0545, 0x054a,
+ 0x0551, 0x0557, 0x055d, 0x0562, 0x0567, 0x056f, 0x0574, 0x057b,
+ 0x0581, 0x0581, 0x0589, 0x058e, 0x0592, 0x0598, 0x0598, 0x05a1,
+ // Entry C0 - FF
+ 0x05a1, 0x05b2, 0x05c1, 0x05c7, 0x05cd, 0x05d4, 0x05d4, 0x05db,
+ 0x05db, 0x05e3, 0x05e3, 0x05e3, 0x05e6, 0x05e6, 0x05ef, 0x05ef,
+ 0x05f5, 0x05fc, 0x0604, 0x0604, 0x0608, 0x060d, 0x060d, 0x0614,
+ 0x0618, 0x061d, 0x061d, 0x0621, 0x0626, 0x0626, 0x0638, 0x0640,
+ 0x0645, 0x0649, 0x0649, 0x064c, 0x0653, 0x0653, 0x0653, 0x0657,
+ 0x0657, 0x065b, 0x0661, 0x0667, 0x066f, 0x0673, 0x0677, 0x067e,
+ 0x0683, 0x0689, 0x068f, 0x0694, 0x069b, 0x06a0, 0x06a7, 0x06b0,
+ 0x06b7, 0x06bc, 0x06c8, 0x06cf, 0x06d8, 0x06e0, 0x06e7, 0x06f3,
+ // Entry 100 - 13F
+ 0x06f8, 0x06f8, 0x070a, 0x0711, 0x0717, 0x071d, 0x0722, 0x072a,
+ 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x074f, 0x074f, 0x0754,
+ 0x0768, 0x0772, 0x0777, 0x077d, 0x0781, 0x0785, 0x0785, 0x0794,
+ 0x079a, 0x07a1, 0x07b1, 0x07b1, 0x07b7, 0x07b7, 0x07bb, 0x07c3,
+ 0x07c3, 0x07c6, 0x07c6, 0x07d7, 0x07e7, 0x07e7, 0x07fc, 0x080c,
+ 0x0814, 0x0816, 0x081d, 0x081d, 0x0821, 0x0826, 0x0826, 0x082a,
+ 0x0834, 0x0834, 0x0851, 0x0870, 0x0870, 0x0875, 0x087e, 0x0885,
+ 0x088a, 0x0898, 0x08a5, 0x08a5, 0x08a5, 0x08aa, 0x08b1, 0x08b6,
+ // Entry 140 - 17F
+ 0x08b6, 0x08be, 0x08be, 0x08c8, 0x08ce, 0x08d3, 0x08de, 0x08de,
+ 0x08e2, 0x08e6, 0x08ec, 0x08f3, 0x08f9, 0x08f9, 0x08f9, 0x08ff,
+ 0x0905, 0x090c, 0x0917, 0x0923, 0x0923, 0x092e, 0x0934, 0x093a,
+ 0x093d, 0x0942, 0x0946, 0x0950, 0x0957, 0x095b, 0x0962, 0x0976,
+ 0x0976, 0x097a, 0x097a, 0x097f, 0x0987, 0x0993, 0x0993, 0x0993,
+ 0x0997, 0x099f, 0x09a7, 0x09b2, 0x09ba, 0x09c3, 0x09c9, 0x09d8,
+ 0x09d8, 0x09d8, 0x09df, 0x09e5, 0x09ed, 0x09f2, 0x09f9, 0x09fe,
+ 0x0a05, 0x0a0b, 0x0a10, 0x0a16, 0x0a1b, 0x0a23, 0x0a23, 0x0a23,
+ // Entry 180 - 1BF
+ 0x0a23, 0x0a29, 0x0a29, 0x0a2e, 0x0a32, 0x0a45, 0x0a45, 0x0a4f,
+ 0x0a57, 0x0a5c, 0x0a5f, 0x0a65, 0x0a6a, 0x0a6a, 0x0a6a, 0x0a72,
+ 0x0a76, 0x0a7c, 0x0a84, 0x0a8b, 0x0a93, 0x0a99, 0x0a9d, 0x0aa3,
+ 0x0aa9, 0x0aae, 0x0ab2, 0x0ac4, 0x0ad6, 0x0ae4, 0x0aeb, 0x0af1,
+ 0x0afc, 0x0b03, 0x0b0b, 0x0b11, 0x0b16, 0x0b16, 0x0b1d, 0x0b2f,
+ 0x0b34, 0x0b3d, 0x0b44, 0x0b44, 0x0b49, 0x0b4e, 0x0b5a, 0x0b5a,
+ 0x0b64, 0x0b68, 0x0b74, 0x0b7a, 0x0b7e, 0x0b85, 0x0b85, 0x0b8b,
+ 0x0b94, 0x0b99, 0x0ba9, 0x0ba9, 0x0baf, 0x0bc2, 0x0bc6, 0x0bd5,
+ // Entry 1C0 - 1FF
+ 0x0bdd, 0x0be5, 0x0bea, 0x0bef, 0x0bf4, 0x0c01, 0x0c0c, 0x0c13,
+ 0x0c1b, 0x0c25, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c3a, 0x0c3a,
+ 0x0c41, 0x0c41, 0x0c41, 0x0c4b, 0x0c4b, 0x0c5c, 0x0c63, 0x0c63,
+ 0x0c6d, 0x0c74, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c84, 0x0c8b, 0x0c8b,
+ 0x0c8b, 0x0c8b, 0x0c93, 0x0c96, 0x0c9d, 0x0ca2, 0x0cb3, 0x0cba,
+ 0x0cbf, 0x0cc6, 0x0cc6, 0x0ccd, 0x0cd2, 0x0cdb, 0x0ce3, 0x0ce3,
+ 0x0cf3, 0x0cf9, 0x0cfd, 0x0cfd, 0x0d03, 0x0d12, 0x0d23, 0x0d23,
+ 0x0d2c, 0x0d30, 0x0d3f, 0x0d45, 0x0d45, 0x0d45, 0x0d54, 0x0d5d,
+ // Entry 200 - 23F
+ 0x0d67, 0x0d71, 0x0d79, 0x0d81, 0x0d8d, 0x0d92, 0x0d96, 0x0d96,
+ 0x0d9c, 0x0da0, 0x0da7, 0x0db0, 0x0dc1, 0x0dd2, 0x0dd9, 0x0dd9,
+ 0x0dd9, 0x0dde, 0x0de2, 0x0de8, 0x0dee, 0x0df4, 0x0df7, 0x0e01,
+ 0x0e01, 0x0e08, 0x0e0f, 0x0e0f, 0x0e17, 0x0e26, 0x0e2f, 0x0e2f,
+ 0x0e35, 0x0e35, 0x0e3f, 0x0e3f, 0x0e46, 0x0e4f, 0x0e56, 0x0e5f,
+ 0x0e7e, 0x0e84, 0x0e8e, 0x0e95, 0x0e9a, 0x0e9d, 0x0e9d, 0x0e9d,
+ 0x0e9d, 0x0e9d, 0x0ea4, 0x0ea4, 0x0ea9, 0x0eaf, 0x0eb5, 0x0eba,
+ 0x0ebf, 0x0ec7, 0x0ec7, 0x0ecd, 0x0ecd, 0x0ed1, 0x0ed4, 0x0eda,
+ // Entry 240 - 27F
+ 0x0ee1, 0x0ee6, 0x0ee6, 0x0eef, 0x0ef7, 0x0f06, 0x0f06, 0x0f0c,
+ 0x0f29, 0x0f2d, 0x0f48, 0x0f4e, 0x0f66, 0x0f66, 0x0f78, 0x0f8a,
+ 0x0f9d, 0x0faf, 0x0fc1, 0x0fd7, 0x0fef, 0x1002, 0x1015, 0x1015,
+ 0x1028, 0x1036, 0x1036, 0x103e, 0x1052, 0x1068, 0x106f, 0x107a,
+ 0x108c, 0x109d,
+} // Size: 1244 bytes
+
+var es419LangStr string = "vascoswahililuoswahili del Congovai"
+
+var es419LangIdx = []uint16{ // 558 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ // Entry 40 - 7F
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ // Entry 80 - BF
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ // Entry C0 - FF
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ // Entry 100 - 13F
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ // Entry 140 - 17F
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ // Entry 180 - 1BF
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ // Entry 1C0 - 1FF
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ // Entry 200 - 23F
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x0020, 0x0020, 0x0020, 0x0020,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0023,
+} // Size: 1140 bytes
+
+var etLangStr string = "" + // Size: 4576 bytes
+ "afariabhaasiavestaafrikaaniakaniamhariaragoniaraabiaassamiavaariaimaraas" +
+ "erbaidžaanibaškiirivalgevenebulgaariabislamabambarabengalitiibetibretoon" +
+ "ibosniakatalaanitšetšeenitšamorrokorsikakriitšehhikirikuslaavitšuvašikõm" +
+ "ritaanisaksamaldiividzongkhaevekreekaingliseesperantohispaaniaeestibaski" +
+ "pärsiafulasoomefidžifääriprantsuseläänefriisiiirigaeligaleegiguaraniigud" +
+ "žaratimänksihausaheebreahindihirimotuhorvaadihaitiungariarmeeniahereroi" +
+ "nterlinguaindoneesiainterlingueiboSichuani jiiinjupiakiidoislandiitaalia" +
+ "inuktitutijaapanijaavagruusiakongokikujukvanjamakasahhigröönikhmeerikann" +
+ "adakoreakanurikašmiirikurdikomikornikirgiisiladinaletseburgigandalimburg" +
+ "ilingalalaoleedulubalätimalagassimaršallimaoorimakedooniamalajalamimongo" +
+ "limarathimalaimaltabirmanaurupõhjandebelenepalindongahollandiuusnorranor" +
+ "ra bokmållõunandebelenavahonjandžaprovansiodžibveioromooriaosseedipandža" +
+ "bipaalipoolapuštuportugaliketšuaromanširundirumeeniaveneruandasanskritis" +
+ "ardisindhipõhjasaamisangosingalislovakisloveenisamoašonasomaalialbaanias" +
+ "erbiasvaasilõunasothosundarootsisuahiilitamilitelugutadžikitaitigrinjatü" +
+ "rkmeenitsvanatongatürgitsongatataritahitiuiguuriukrainaurduusbekivendavi" +
+ "etnamivolapükivalloonivolofikoosajidišijorubatšuangihiinasuuluatšehiatšo" +
+ "liadangmeadõgeeTuneesia araabiaafrihiliaghemiainuakadialabamaaleuudigeeg" +
+ "ialtaivanaingliseangikaarameamapudunguniaraonaarapahoAlžeeria araabiaara" +
+ "vakiMaroko araabiaEgiptuse araabiaasuAmeerika viipekeelastuuriaavadhibel" +
+ "utšibalibaieribasabamunibatakighomalabedžabembabetavibenabafutibadagalää" +
+ "nebelutšibhodžpuribikoliedobandžarikomi (Aafrika)mustjalaindiaanibišnupr" +
+ "ijabahtiaribradžibrahuibodoakooseburjaadibugibulubilinimedumbakadokariib" +
+ "ikajukaatsamisebutšigatšibtšatšagataitšuugimaritšinuki žargoontšoktotšip" +
+ "evaitšerokiišaieenisoranikoptikapisnonikrimmitatarikašuubisiuudargidavid" +
+ "adelavarisleividogribidinkazarmadogrialamsorbikeskdusunidualakeskholland" +
+ "ifonjidjuladazaembuefikiemiiliaegiptuseekadžukieelamikeskinglisekeskjupi" +
+ "kievondoestremenjufangifilipiinimeäfonicajun’ikeskprantsusevanaprantsuse" +
+ "frankoprovansipõhjafriisiidafriisifriuuligaagagauusikanigajogbajaetioopi" +
+ "akiribatigilakikeskülemsaksavanaülemsaksagondigorontalogootigrebovanakre" +
+ "ekašveitsisaksavajuufarefaregusiigvitšinihaidahavaiFidži hindihiligainon" +
+ "ihetihmongiülemsorbisjangihupaibaniibibioilokoingušiisuriJamaica kreoolk" +
+ "eelložbanngombamatšamejuudipärsiajuudiaraabiajüütikarakalpakikabiilikatš" +
+ "inijjukambakaavikabardi-tšerkessikanembutjapimakondekabuverdianukorokain" +
+ "gangikhasisakakoyra chiinikhovarikõrmandžkikakokalendžinimbundupermikomi" +
+ "konkanikosraekpellekaratšai-balkaarikriokinaraiakarjalakuruhhišambalabaf" +
+ "iakölnikumõkikutenailadiinolangilahndalambalesgiliguuriliivilakotalombar" +
+ "dimongolozipõhjalurilatgalilulualuisenjolundaluolušeiluhjaklassikaline h" +
+ "iinalazimaduramafamagahimaithilimakassarimalinkemasaimabamokšamandarimen" +
+ "demeruMauritiuse kreoolkeelkeskiirimakhuwa-meettometamikmakiminangkabaum" +
+ "andžumanipurimohoogimoremäemarimundangimitu keeltmaskogimirandamarvarime" +
+ "ntaveimjeneersamazandaraanilõunamininapolinamaalamsaksanevariniasiniueao" +
+ "kwasiongiembooninogaivanapõhjalanoviaalnkoopedinuerivananevarinjamvesink" +
+ "olenjoronzimaoseidžiosmanitürgipangasinanipahlavipampangapapiamentobelau" +
+ "pikardiPennsylvania saksamennoniidisaksavanapärsiaPfalzifoiniikiapiemont" +
+ "epontosepoonpeipreisivanaprovansikitšeradžastanirapanuirarotongaromanjar" +
+ "iifirombomustlaskeelrotumarussiinirovianaaromuunirvaasandavejakuudiSamaa" +
+ "ria arameasamburusasakisantalisauraštrangambaisangusitsiiliašotilõunakur" +
+ "disenekasenaserisölkupikoyraboro sennivanaiirižemaidišilhašaniTšaadi ara" +
+ "abiasidamoalamsileesiaselajarilõunasaamiLule saamiInari saamikoltasaamis" +
+ "oninkesogdisrananisererisahosaterfriisisukumasususumerikomooriKongo suah" +
+ "iilivanasüüriasüüriasileesiatulutemnetesoterenotetumitigreetivitokelauts" +
+ "ahhiklingonitlingititalõšitamašekitšitongauusmelaneesiaturojotarokotsako" +
+ "oniatšimšilõunataaditumbukatuvalutaswaqitõvatamasiktiudmurdiugaritiumbun" +
+ "durootvaivenetivepsalääneflaamiMaini frangivadjavõruvundžowalserivolaita" +
+ "varaivašovarlpiriuukalmõkimegrelisogajaojapiyangbenijembanjengatukantoni" +
+ "sapoteegiBlissi sümbolidzeelandizenagatamasikti (Maroko)sunjimittekeelel" +
+ "inezazaaraabia (tänapäevane)Austria saksaŠveitsi ülemsaksaAustraalia ing" +
+ "liseKanada ingliseBriti ingliseAmeerika ingliseLadina-Ameerika hispaania" +
+ "Euroopa hispaaniaMehhiko hispaaniaKanada prantsuseŠveitsi prantsuseHolla" +
+ "ndi alamsaksaflaamiBrasiilia portugaliEuroopa portugalimoldovaserbia-hor" +
+ "vaadihiina (lihtsustatud)hiina (traditsiooniline)"
+
+var etLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x000c, 0x0012, 0x001b, 0x0020, 0x0026, 0x002d,
+ 0x0034, 0x003a, 0x0040, 0x0046, 0x0054, 0x005d, 0x0066, 0x006f,
+ 0x0076, 0x007d, 0x0084, 0x008b, 0x0093, 0x0099, 0x00a2, 0x00ad,
+ 0x00b6, 0x00bd, 0x00c1, 0x00c8, 0x00d4, 0x00dd, 0x00e3, 0x00e8,
+ 0x00ed, 0x00f5, 0x00fd, 0x0100, 0x0106, 0x010d, 0x0116, 0x011f,
+ 0x0124, 0x0129, 0x0130, 0x0134, 0x0139, 0x013f, 0x0146, 0x014f,
+ 0x015c, 0x0160, 0x0165, 0x016c, 0x0174, 0x017e, 0x0185, 0x018a,
+ 0x0191, 0x0196, 0x019e, 0x01a6, 0x01ab, 0x01b1, 0x01b9, 0x01bf,
+ // Entry 40 - 7F
+ 0x01ca, 0x01d4, 0x01df, 0x01e2, 0x01ee, 0x01f7, 0x01fa, 0x0201,
+ 0x0208, 0x0212, 0x0219, 0x021e, 0x0225, 0x022a, 0x0230, 0x0238,
+ 0x023f, 0x0247, 0x024e, 0x0255, 0x025a, 0x0260, 0x0269, 0x026e,
+ 0x0272, 0x0277, 0x027f, 0x0285, 0x028f, 0x0294, 0x029c, 0x02a3,
+ 0x02a6, 0x02ab, 0x02af, 0x02b4, 0x02bd, 0x02c6, 0x02cc, 0x02d6,
+ 0x02e0, 0x02e7, 0x02ee, 0x02f3, 0x02f8, 0x02fd, 0x0302, 0x030f,
+ 0x0315, 0x031b, 0x0323, 0x032b, 0x0338, 0x0345, 0x034b, 0x0353,
+ 0x035b, 0x0364, 0x0369, 0x036d, 0x0374, 0x037d, 0x0382, 0x0387,
+ // Entry 80 - BF
+ 0x038d, 0x0396, 0x039d, 0x03a5, 0x03aa, 0x03b2, 0x03b6, 0x03bc,
+ 0x03c5, 0x03ca, 0x03d0, 0x03db, 0x03e0, 0x03e7, 0x03ee, 0x03f6,
+ 0x03fb, 0x0400, 0x0407, 0x040f, 0x0415, 0x041b, 0x0426, 0x042b,
+ 0x0431, 0x0439, 0x043f, 0x0445, 0x044d, 0x0450, 0x0458, 0x0462,
+ 0x0468, 0x046d, 0x0473, 0x0479, 0x047f, 0x0485, 0x048c, 0x0493,
+ 0x0497, 0x049d, 0x04a2, 0x04aa, 0x04b3, 0x04bb, 0x04c1, 0x04c6,
+ 0x04cd, 0x04d3, 0x04db, 0x04e0, 0x04e5, 0x04ec, 0x04f3, 0x04fa,
+ 0x0501, 0x0511, 0x0519, 0x051f, 0x0523, 0x0528, 0x052f, 0x0536,
+ // Entry C0 - FF
+ 0x053b, 0x0540, 0x054b, 0x0551, 0x0557, 0x0562, 0x0568, 0x056f,
+ 0x0580, 0x0587, 0x0595, 0x05a5, 0x05a8, 0x05ba, 0x05c2, 0x05c2,
+ 0x05c8, 0x05d0, 0x05d4, 0x05da, 0x05de, 0x05e4, 0x05ea, 0x05f1,
+ 0x05f7, 0x05fc, 0x0602, 0x0606, 0x060c, 0x0612, 0x0621, 0x062b,
+ 0x0631, 0x0634, 0x063d, 0x064b, 0x065b, 0x0666, 0x066e, 0x0675,
+ 0x067b, 0x067f, 0x0685, 0x068d, 0x0691, 0x0695, 0x069b, 0x06a2,
+ 0x06a6, 0x06ad, 0x06b3, 0x06b9, 0x06bd, 0x06c3, 0x06cc, 0x06d5,
+ 0x06dc, 0x06e0, 0x06f1, 0x06f8, 0x0701, 0x070a, 0x0712, 0x0718,
+ // Entry 100 - 13F
+ 0x071d, 0x0726, 0x0732, 0x073a, 0x073e, 0x0743, 0x0749, 0x0751,
+ 0x0757, 0x075e, 0x0763, 0x0768, 0x076d, 0x0776, 0x0780, 0x0785,
+ 0x0791, 0x0796, 0x079b, 0x079f, 0x07a3, 0x07a8, 0x07af, 0x07b7,
+ 0x07c0, 0x07c6, 0x07d1, 0x07db, 0x07e1, 0x07eb, 0x07f0, 0x07f9,
+ 0x07fd, 0x0801, 0x080a, 0x0817, 0x0824, 0x0832, 0x083e, 0x0847,
+ 0x084e, 0x0851, 0x0859, 0x085d, 0x0861, 0x0866, 0x0866, 0x086e,
+ 0x0876, 0x087c, 0x088a, 0x0898, 0x0898, 0x089d, 0x08a6, 0x08ab,
+ 0x08b0, 0x08ba, 0x08c7, 0x08cc, 0x08d4, 0x08d9, 0x08e2, 0x08e7,
+ // Entry 140 - 17F
+ 0x08e7, 0x08ec, 0x08f8, 0x0903, 0x0907, 0x090d, 0x0917, 0x091d,
+ 0x0921, 0x0926, 0x092c, 0x0931, 0x0938, 0x093d, 0x094f, 0x0956,
+ 0x095c, 0x0964, 0x0970, 0x097c, 0x0983, 0x098e, 0x0995, 0x099d,
+ 0x09a0, 0x09a5, 0x09aa, 0x09bc, 0x09c3, 0x09c8, 0x09cf, 0x09db,
+ 0x09db, 0x09df, 0x09e8, 0x09ed, 0x09f1, 0x09fd, 0x0a04, 0x0a10,
+ 0x0a14, 0x0a1f, 0x0a25, 0x0a2e, 0x0a35, 0x0a3b, 0x0a41, 0x0a53,
+ 0x0a57, 0x0a5f, 0x0a66, 0x0a6d, 0x0a75, 0x0a7a, 0x0a80, 0x0a87,
+ 0x0a8e, 0x0a95, 0x0a9a, 0x0aa0, 0x0aa5, 0x0aaa, 0x0aaa, 0x0ab1,
+ // Entry 180 - 1BF
+ 0x0ab6, 0x0abc, 0x0ac4, 0x0ac9, 0x0acd, 0x0ad7, 0x0ade, 0x0ae3,
+ 0x0aeb, 0x0af0, 0x0af3, 0x0af9, 0x0afe, 0x0b10, 0x0b14, 0x0b1a,
+ 0x0b1e, 0x0b24, 0x0b2c, 0x0b35, 0x0b3c, 0x0b41, 0x0b45, 0x0b4b,
+ 0x0b52, 0x0b57, 0x0b5b, 0x0b70, 0x0b78, 0x0b86, 0x0b8a, 0x0b91,
+ 0x0b9c, 0x0ba3, 0x0bab, 0x0bb2, 0x0bb6, 0x0bbe, 0x0bc6, 0x0bd0,
+ 0x0bd7, 0x0bde, 0x0be5, 0x0bed, 0x0bf2, 0x0bf6, 0x0c02, 0x0c0c,
+ 0x0c12, 0x0c16, 0x0c1f, 0x0c25, 0x0c2a, 0x0c2e, 0x0c30, 0x0c36,
+ 0x0c40, 0x0c45, 0x0c51, 0x0c58, 0x0c5c, 0x0c60, 0x0c65, 0x0c6f,
+ // Entry 1C0 - 1FF
+ 0x0c77, 0x0c7c, 0x0c81, 0x0c86, 0x0c8e, 0x0c9a, 0x0ca5, 0x0cac,
+ 0x0cb4, 0x0cbe, 0x0cc3, 0x0cca, 0x0cdc, 0x0ceb, 0x0cf6, 0x0cfc,
+ 0x0d05, 0x0d0d, 0x0d14, 0x0d1b, 0x0d21, 0x0d2d, 0x0d33, 0x0d33,
+ 0x0d3e, 0x0d45, 0x0d4e, 0x0d55, 0x0d5a, 0x0d5f, 0x0d6a, 0x0d70,
+ 0x0d78, 0x0d7f, 0x0d87, 0x0d8b, 0x0d92, 0x0d99, 0x0da8, 0x0daf,
+ 0x0db5, 0x0dbc, 0x0dc6, 0x0dcd, 0x0dd2, 0x0ddb, 0x0de0, 0x0de0,
+ 0x0deb, 0x0df1, 0x0df5, 0x0df9, 0x0e01, 0x0e10, 0x0e18, 0x0e20,
+ 0x0e26, 0x0e2b, 0x0e3a, 0x0e40, 0x0e4c, 0x0e54, 0x0e5f, 0x0e69,
+ // Entry 200 - 23F
+ 0x0e74, 0x0e7e, 0x0e85, 0x0e8a, 0x0e91, 0x0e97, 0x0e9b, 0x0ea6,
+ 0x0eac, 0x0eb0, 0x0eb6, 0x0ebd, 0x0ecb, 0x0ed7, 0x0edf, 0x0ee7,
+ 0x0eeb, 0x0ef0, 0x0ef4, 0x0efa, 0x0f00, 0x0f06, 0x0f0a, 0x0f11,
+ 0x0f17, 0x0f1f, 0x0f27, 0x0f2f, 0x0f38, 0x0f41, 0x0f4e, 0x0f54,
+ 0x0f5a, 0x0f63, 0x0f6b, 0x0f76, 0x0f7d, 0x0f83, 0x0f8a, 0x0f8f,
+ 0x0f98, 0x0f9f, 0x0fa6, 0x0fad, 0x0fb1, 0x0fb4, 0x0fba, 0x0fbf,
+ 0x0fcc, 0x0fd8, 0x0fdd, 0x0fe2, 0x0fe9, 0x0ff0, 0x0ff7, 0x0ffc,
+ 0x1001, 0x1009, 0x100b, 0x1013, 0x101a, 0x101e, 0x1021, 0x1025,
+ // Entry 240 - 27F
+ 0x102d, 0x1032, 0x103a, 0x1041, 0x104a, 0x105a, 0x1062, 0x1068,
+ 0x107a, 0x107f, 0x108d, 0x1091, 0x10a8, 0x10a8, 0x10b5, 0x10c8,
+ 0x10da, 0x10e8, 0x10f5, 0x1105, 0x111e, 0x112f, 0x1140, 0x1140,
+ 0x1150, 0x1162, 0x1174, 0x117a, 0x118d, 0x119e, 0x11a5, 0x11b4,
+ 0x11c8, 0x11e0,
+} // Size: 1244 bytes
+
+var faLangStr string = "" + // Size: 7705 bytes
+ "آفاریآبخازیاوستاییآفریکانسآکانامهریآراگونیعربیآسامیآواریآیماراییترکی آذر" +
+ "بایجانیباشغیریبلاروسیبلغاریبیسلامابامباراییبنگالیتبتیبرتونبوسنیاییکاتال" +
+ "انچچنیچاموروییکورسیکریاییچکیاسلاوی کلیساییچوواشیولزیدانمارکیآلمانیمالدی" +
+ "ویجونخاییاوه\u200cاییونانیانگلیسیاسپرانتواسپانیاییاستونیاییباسکیفارسیفو" +
+ "لاییفنلاندیفیجیاییفاروییفرانسویفریزی غربیایرلندیگیلی اسکاتلندیگالیسیایی" +
+ "گوارانیگجراتیمانیهوسیاییعبریهندیموتویی هیریکرواتهائیتیاییمجاریارمنیهریر" +
+ "وییمیان\u200cزباناندونزیاییاکسیدنتالایگبویییی سیچواناینوپیکایدوایسلندیا" +
+ "یتالیاییاینوکتیتوتژاپنیجاوه\u200cایگرجیکنگوییکیکویوییکوانیاماقزاقیگرینل" +
+ "ندیخمریکاناراکره\u200cایکانوریاییکشمیریکردیکومیاییکرنوالیقرقیزیلاتینلوگ" +
+ "زامبورگیگانداییلیمبورگیلینگالالائوسیلیتوانیاییلوبایی‐کاتانگالتونیاییمال" +
+ "اگاسیاییمارشالیمائوریاییمقدونیمالایالامیمغولیمراتیمالاییمالتیبرمه\u200c" +
+ "اینائوروییانده\u200cبله\u200cای شمالینپالیاندونگاییهلندینروژی نی\u200cن" +
+ "ُشکنروژی بوک\u200cمُلانده\u200cبله\u200cای جنوبیناواهویینیانجاییاوکیتای" +
+ "یاوجیبواییاوروموییاوریه\u200cایآسیپنجابیپالیلهستانیپشتوپرتغالیکچواییروم" +
+ "انشروندیاییرومانیاییروسیکینیاروانداییسانسکریتساردینیاییسندیسامی شمالیسا" +
+ "نگوسینهالیاسلواکیاسلوونیاییساموآییشوناییسومالیاییآلبانیاییصربیسوازیاییس" +
+ "وتویی جنوبیسونداییسوئدیسواحلیتامیلیتلوگوییتاجیکیتایلندیتیگرینیاییترکمنی" +
+ "تسواناییتونگاییترکی استانبولیتسونگاییتاتاریتاهیتیاییاویغوریاوکراینیاردو" +
+ "ازبکیونداییویتنامیولاپوکوالونیولوفیخوسایییدییوروباییچوانگیچینیزولوییآچئ" +
+ "یآچولیاییآدانگمه\u200cایآدیجیاییعربی تونسیآفریهیلیآگیمآینوییاکدیآلاباما" +
+ "ییآلئوتیآلتایی جنوبیانگلیسی باستانآنگیکاآرامیماپوچه\u200cایآراپاهوییعرب" +
+ "ی الجزایریآراواکیعربی مراکشیعربی مصریآسوآستوریبلوچیبالیاییباواریاییباسا" +
+ "ییبمونیبجاییبمباییبناییبلوچی غربیبوجپوریبیکولیبینیلری بختیاریبراجبراهوی" +
+ "یبودوییبوریاتیبوگیاییبلینکادوییکاریبیسبوییچیگاچیبچاجغتاییچوکیماریاییچوک" +
+ "توییچیپه\u200cویه\u200cایچروکیاییشایانیکردی سورانیقبطیترکی کریمهکاشوبید" +
+ "اکوتاییدارقینیتایتادلاواریدوگریبدینکاییزرمادوگریصُربی سفلیدوآلاییهلندی " +
+ "میانهدیولا فونیدایولاییامبوافیکیمصری کهناکاجوکعیلامیانگلیسی میانهاواندو" +
+ "فانکیفیلیپینیفونیفرانسوی کادینفرانسوی میانهفرانسوی باستانفریزی شمالیفری" +
+ "زی شرقیفریولیاییگاییگاگائوزیاییگایوییگبایاییدری زرتشتیگی\u200cئزیگیلبرت" +
+ "یگیلکیآلمانی معیار میانهآلمانی علیای باستانگوندیگورونتالوگوتیگریبویییون" +
+ "انی کهنآلمانی سوئیسیگوسیگویچ اینهایداییهاوائیاییهندی فیجیاییهیلی\u200cگ" +
+ "اینونیهیتیهمونگصُربی علیاهوپاآیبنایلوکوییاینگوشیلوجباننگومباماچامه" +
+ "\u200cایفارسی یهودیعربی یهودیقره\u200cقالپاقیقبایلیکاچینیجوکامباییکاویای" +
+ "یکاباردینیتیاپیماکوندهکابووردیانوکوروخاسیاییختنیکوجراچینیکهوارکرمانجیکا" +
+ "لنجینکیمبوندوییکومی پرمیاککنکانیکپله\u200cایقره\u200cچایی‐بالکاریکوروخی" +
+ "شامبالابافیاییکومیکیکوتنیلادینولانگیلاهندالامبالزگیلاکوتامونگوییلوزیایی" +
+ "لری شمالیلوبایی‐لولوالویسنولونداییلوئوییلوشه\u200cایلویاچینی ادبیمادورا" +
+ "ییماگاهیاییمایدیلیماکاسارماندینگوییماساییمکشاییماندارمنده\u200cایمروییم" +
+ "وریسینایرلندی میانهماکوا متومتاییمیکماکیمینانگ\u200cکابوییمانچوییمیته" +
+ "\u200cایموهاکیماسیاییماندانگیچندین زبانکریکیمارواریارزیاییمازندرانیناپلی" +
+ "ناماییآلمانی سفلینواریایینیاسینیوییکوازیونغایینرس باستاننکوسوتویی شمالی" +
+ "نویرنواریایی کلاسیکنیام\u200cوزیایینیانکوله\u200cاینیورویینزیماییاوسیجی" +
+ "ترکی عثمانیپانگاسینانیپهلویپامپانگاییپاپیامنتوپالائوییآلمانی پنسیلوانیا" +
+ "ییفارسی باستانفنیقیپانپییپروسیپرووانسی باستانکیچه\u200cراجستانیراپانویی" +
+ "راروتونگاییرومبوییرومانوییآرومانیرواییسانداوه\u200cاییاقوتیآرامی سامریس" +
+ "امبوروساساکیسانتالیسانگوییسیسیلیاسکاتلندیکردی جنوبیسناسلکوپیکویرابورا س" +
+ "نیایرلندی باستانتاچل\u200cهیتشانیعربی چادیسیداموییسیلزیایی سفلیسامی جنو" +
+ "بیلوله سامیایناری سامیاسکولت سامیسونینکه\u200cایسغدیتاکی\u200cتاکیسریری" +
+ "سوکوماییسوسوییسومریکوموریسواحلی کنگوییسریانی کلاسیکسریانیسیلزیاییتمنه" +
+ "\u200cایتسوییترنوتتومیتیگره\u200cایتیویکلینگونتلین\u200cگیتیتاماشقیتونگا" +
+ "یی نیاساتوک\u200cپیسینیتسیم\u200cشیانیتومبوکاییتووالوییتسواکیتوواییآماز" +
+ "یغی اطلس مرکزیاودمورتیاوگاریتیامبوندوییریشهویاییوتیونجووالاموواراییواشو" +
+ "ییوارلپیریقلموقیسوگایییائویییاپیکانتونیزاپوتکیزناگاآمازیغی معیار مراکشز" +
+ "ونیاییبدون محتوای زبانیزازاییعربی رسمیترکی آذری جنوبیآلمانی اتریشآلمانی" +
+ " معیار سوئیسانگلیسی استرالیاانگلیسی کاناداانگلیسی بریتانیاانگلیسی امریکا" +
+ "اسپانیایی امریکای لاتیناسپانیایی اروپااسپانیایی مکزیکدریفرانسوی کاناداف" +
+ "رانسوی سوئیسساکسونی سفلیفلمنگیپرتغالی برزیلپرتغالی اروپامولداویاییصرب و" +
+ " کرواتیچینی ساده\u200cشدهچینی سنتی"
+
+var faLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000a, 0x0016, 0x0024, 0x0034, 0x003c, 0x0046, 0x0054,
+ 0x005c, 0x0066, 0x0070, 0x0080, 0x009d, 0x00ab, 0x00b9, 0x00c5,
+ 0x00d3, 0x00e5, 0x00f1, 0x00f9, 0x0103, 0x0113, 0x0121, 0x0129,
+ 0x0139, 0x0143, 0x014f, 0x0155, 0x0170, 0x017c, 0x0184, 0x0194,
+ 0x01a0, 0x01ae, 0x01bc, 0x01c9, 0x01d5, 0x01e3, 0x01f3, 0x0205,
+ 0x0217, 0x0221, 0x022b, 0x0237, 0x0245, 0x0253, 0x025f, 0x026d,
+ 0x0280, 0x028e, 0x02a9, 0x02bb, 0x02c9, 0x02d5, 0x02dd, 0x02eb,
+ 0x02f3, 0x02fb, 0x0310, 0x031a, 0x032c, 0x0336, 0x0340, 0x034e,
+ // Entry 40 - 7F
+ 0x0361, 0x0375, 0x0387, 0x0395, 0x03a6, 0x03b4, 0x03bc, 0x03ca,
+ 0x03dc, 0x03f0, 0x03fa, 0x0409, 0x0411, 0x041d, 0x042d, 0x043d,
+ 0x0447, 0x0457, 0x045f, 0x046b, 0x0478, 0x048a, 0x0496, 0x049e,
+ 0x04ac, 0x04ba, 0x04c6, 0x04d0, 0x04e6, 0x04f4, 0x0504, 0x0512,
+ 0x051e, 0x0532, 0x054f, 0x055f, 0x0575, 0x0583, 0x0595, 0x05a1,
+ 0x05b5, 0x05bf, 0x05c9, 0x05d5, 0x05df, 0x05ee, 0x05fe, 0x0621,
+ 0x062b, 0x063d, 0x0647, 0x0661, 0x067b, 0x069e, 0x06ae, 0x06be,
+ 0x06ce, 0x06e0, 0x06f0, 0x0701, 0x0707, 0x0713, 0x071b, 0x0729,
+ // Entry 80 - BF
+ 0x0731, 0x073f, 0x074b, 0x0757, 0x0767, 0x0779, 0x0781, 0x079b,
+ 0x07ab, 0x07bf, 0x07c7, 0x07da, 0x07e4, 0x07f2, 0x0800, 0x0814,
+ 0x0822, 0x082e, 0x0840, 0x0852, 0x085a, 0x086a, 0x0881, 0x088f,
+ 0x0899, 0x08a5, 0x08b1, 0x08bf, 0x08cb, 0x08d9, 0x08ed, 0x08f9,
+ 0x0909, 0x0917, 0x0932, 0x0942, 0x094e, 0x0960, 0x096e, 0x097e,
+ 0x0986, 0x0990, 0x099c, 0x09aa, 0x09b6, 0x09c2, 0x09cc, 0x09d8,
+ 0x09de, 0x09ee, 0x09fa, 0x0a02, 0x0a0e, 0x0a16, 0x0a26, 0x0a3b,
+ 0x0a4b, 0x0a5e, 0x0a6e, 0x0a76, 0x0a82, 0x0a8a, 0x0a9c, 0x0aa8,
+ // Entry C0 - FF
+ 0x0aa8, 0x0abf, 0x0ada, 0x0ae6, 0x0af0, 0x0b03, 0x0b03, 0x0b15,
+ 0x0b2e, 0x0b3c, 0x0b51, 0x0b62, 0x0b68, 0x0b68, 0x0b74, 0x0b74,
+ 0x0b74, 0x0b7e, 0x0b8c, 0x0b9e, 0x0baa, 0x0bb4, 0x0bb4, 0x0bb4,
+ 0x0bbe, 0x0bca, 0x0bca, 0x0bd4, 0x0bd4, 0x0bd4, 0x0be7, 0x0bf5,
+ 0x0c01, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c1e, 0x0c26,
+ 0x0c34, 0x0c40, 0x0c40, 0x0c4e, 0x0c5c, 0x0c5c, 0x0c64, 0x0c64,
+ 0x0c70, 0x0c7c, 0x0c7c, 0x0c7c, 0x0c86, 0x0c8e, 0x0c98, 0x0ca4,
+ 0x0cac, 0x0cba, 0x0cba, 0x0cc8, 0x0ce0, 0x0cf0, 0x0cfc, 0x0d11,
+ // Entry 100 - 13F
+ 0x0d19, 0x0d19, 0x0d2c, 0x0d38, 0x0d48, 0x0d56, 0x0d60, 0x0d6e,
+ 0x0d6e, 0x0d7a, 0x0d88, 0x0d90, 0x0d9a, 0x0dad, 0x0dad, 0x0dbb,
+ 0x0dd0, 0x0de3, 0x0df3, 0x0df3, 0x0dfb, 0x0e05, 0x0e05, 0x0e14,
+ 0x0e20, 0x0e2c, 0x0e45, 0x0e45, 0x0e51, 0x0e51, 0x0e5b, 0x0e6b,
+ 0x0e6b, 0x0e73, 0x0e8c, 0x0ea5, 0x0ec0, 0x0ec0, 0x0ed5, 0x0ee8,
+ 0x0efa, 0x0f02, 0x0f18, 0x0f18, 0x0f24, 0x0f32, 0x0f45, 0x0f52,
+ 0x0f60, 0x0f6a, 0x0f8c, 0x0fb0, 0x0fb0, 0x0fba, 0x0fcc, 0x0fd4,
+ 0x0fe2, 0x0ff5, 0x100e, 0x100e, 0x100e, 0x1016, 0x1025, 0x1033,
+ // Entry 140 - 17F
+ 0x1033, 0x1045, 0x105c, 0x1075, 0x107d, 0x1087, 0x109a, 0x109a,
+ 0x10a2, 0x10aa, 0x10aa, 0x10ba, 0x10c8, 0x10c8, 0x10c8, 0x10d4,
+ 0x10e0, 0x10f3, 0x1108, 0x111b, 0x111b, 0x1132, 0x113e, 0x114a,
+ 0x114e, 0x115c, 0x116a, 0x117c, 0x117c, 0x1186, 0x1194, 0x11aa,
+ 0x11aa, 0x11b2, 0x11b2, 0x11c0, 0x11c8, 0x11da, 0x11e4, 0x11f2,
+ 0x11f2, 0x1200, 0x1214, 0x1229, 0x1235, 0x1235, 0x1244, 0x1266,
+ 0x1266, 0x1266, 0x1266, 0x1272, 0x1280, 0x128e, 0x128e, 0x129a,
+ 0x12a4, 0x12b0, 0x12ba, 0x12c6, 0x12d0, 0x12d8, 0x12d8, 0x12d8,
+ // Entry 180 - 1BF
+ 0x12d8, 0x12e4, 0x12e4, 0x12f2, 0x1300, 0x1311, 0x1311, 0x132a,
+ 0x1336, 0x1344, 0x1350, 0x135f, 0x1367, 0x1378, 0x1378, 0x1388,
+ 0x1388, 0x139a, 0x13a8, 0x13b6, 0x13ca, 0x13d6, 0x13d6, 0x13e2,
+ 0x13ee, 0x13fd, 0x1407, 0x1415, 0x142e, 0x143f, 0x1449, 0x1457,
+ 0x1472, 0x1480, 0x148f, 0x149b, 0x14a9, 0x14a9, 0x14b9, 0x14cc,
+ 0x14d6, 0x14d6, 0x14e4, 0x14e4, 0x14e4, 0x14f2, 0x1504, 0x1504,
+ 0x150e, 0x151a, 0x152f, 0x153f, 0x1549, 0x1553, 0x1553, 0x155f,
+ 0x155f, 0x1569, 0x157c, 0x157c, 0x1582, 0x1599, 0x15a1, 0x15be,
+ // Entry 1C0 - 1FF
+ 0x15d5, 0x15ec, 0x15fa, 0x1608, 0x1614, 0x1629, 0x163f, 0x1649,
+ 0x165d, 0x166f, 0x167f, 0x167f, 0x16a4, 0x16a4, 0x16bb, 0x16bb,
+ 0x16c5, 0x16c5, 0x16c5, 0x16d1, 0x16db, 0x16f8, 0x1703, 0x1703,
+ 0x1713, 0x1723, 0x1739, 0x1739, 0x1739, 0x1747, 0x1757, 0x1757,
+ 0x1757, 0x1757, 0x1765, 0x176f, 0x1784, 0x1790, 0x17a5, 0x17b3,
+ 0x17bf, 0x17cd, 0x17cd, 0x17cd, 0x17db, 0x17e7, 0x17f9, 0x17f9,
+ 0x180c, 0x180c, 0x1812, 0x1812, 0x181e, 0x1837, 0x1852, 0x1852,
+ 0x1863, 0x186b, 0x187c, 0x188c, 0x18a5, 0x18a5, 0x18b8, 0x18c9,
+ // Entry 200 - 23F
+ 0x18de, 0x18f3, 0x1908, 0x1910, 0x1923, 0x192d, 0x192d, 0x192d,
+ 0x193d, 0x1949, 0x1953, 0x195f, 0x1978, 0x1991, 0x199d, 0x19ad,
+ 0x19ad, 0x19bc, 0x19c6, 0x19ce, 0x19d8, 0x19e9, 0x19f1, 0x19f1,
+ 0x19f1, 0x19ff, 0x1a12, 0x1a12, 0x1a20, 0x1a39, 0x1a4e, 0x1a4e,
+ 0x1a4e, 0x1a4e, 0x1a63, 0x1a63, 0x1a75, 0x1a85, 0x1a91, 0x1a9d,
+ 0x1abf, 0x1acf, 0x1adf, 0x1af1, 0x1af9, 0x1b03, 0x1b03, 0x1b03,
+ 0x1b03, 0x1b03, 0x1b09, 0x1b09, 0x1b11, 0x1b11, 0x1b1d, 0x1b29,
+ 0x1b35, 0x1b45, 0x1b45, 0x1b51, 0x1b51, 0x1b5d, 0x1b69, 0x1b71,
+ // Entry 240 - 27F
+ 0x1b71, 0x1b71, 0x1b71, 0x1b7f, 0x1b8d, 0x1b8d, 0x1b8d, 0x1b97,
+ 0x1bbb, 0x1bc9, 0x1be9, 0x1bf5, 0x1c06, 0x1c22, 0x1c39, 0x1c5b,
+ 0x1c7a, 0x1c95, 0x1cb4, 0x1ccf, 0x1cfb, 0x1d18, 0x1d35, 0x1d3b,
+ 0x1d56, 0x1d6f, 0x1d86, 0x1d92, 0x1dab, 0x1dc4, 0x1dd8, 0x1dee,
+ 0x1e08, 0x1e19,
+} // Size: 1244 bytes
+
+var fiLangStr string = "" + // Size: 4703 bytes
+ "afarabhaasiavestaafrikaansakanamharaaragoniaarabiaassamiavaariaimaraazer" +
+ "ibaškiirivalkovenäjäbulgariabislamabambarabengalitiibetbretonibosniakata" +
+ "laanitšetšeenitšamorrokorsikacreetšekkikirkkoslaavitšuvassikymritanskasa" +
+ "ksadivehidzongkhaewekreikkaenglantiesperantoespanjavirobaskifarsifulanis" +
+ "uomifidžifääriranskalänsifriisiiirigaeligaliciaguaranigudžaratimanksihau" +
+ "sahepreahindihiri-motukroatiahaitiunkariarmeniahererointerlinguaindonesi" +
+ "ainterlingueigbosichuanin-yiinupiaqidoislantiitaliainuktitutjapanijaavag" +
+ "eorgiakongokikujukuanjamakazakkikalaallisutkhmerkannadakoreakanurikašmir" +
+ "ikurdikomikornikirgiisilatinaluxemburggandalimburglingalalaoliettuakatan" +
+ "ganlubalatviamalagassimarshallmaorimakedoniamalajalammongolimarathimalai" +
+ "jimaltaburmanaurupohjois-ndebelenepalindongahollantinorjan nynorsknorjan" +
+ " bokmåletelä-ndebelenavajonjandžaoksitaaniodžibwaoromoorijaosseettipandž" +
+ "abipaalipuolapaštuportugaliketšuaretoromaanirundiromaniavenäjäruandasans" +
+ "kritsardisindhipohjoissaamesangosinhalaslovakkisloveenisamoašonasomalial" +
+ "baniaserbiaswazieteläsothosundaruotsiswahilitamilitelugutadžikkithaitigr" +
+ "injaturkmeenitswanatongaturkkitsongatataaritahitiuiguuriukrainaurduuzbek" +
+ "kivendavietnamvolapükvalloniwolofxhosajiddišjorubazhuangkiinazuluatšehat" +
+ "šoliadangmeadygetunisianarabiaafrihiliaghemainuakkadialabamaaleuttigega" +
+ "ltaimuinaisenglantiangikavaltakunnanarameamapudungunaraonaarapahoalgeria" +
+ "narabiaarawakmarokonarabiaegyptinarabiaasuamerikkalainen viittomakielias" +
+ "turiakotavaawadhibelutšibalibaijeribasaabamumbatak-tobaghomalabedžabemba" +
+ "betawibenafutbadagalänsibelutšibhodžpuribikolbinibanjarkomsiksikabišnupr" +
+ "iabahtiaribradžbrahuibodokooseburjaattibugibulubilinmedumbacaddokaribica" +
+ "yugaatsamcebuanokigatšibtšatšagataichuukmarichinook-jargonchoctawchipewy" +
+ "ancherokeecheyennesoranikopticapiznonkrimintataarikašubidakotadargitaita" +
+ "delawareslevidogribdinkadjermadogrialasorbidusundualakeskihollantijola-f" +
+ "onyidjuladazagaembuefikemiliamuinaisegyptiekajukelamikeskienglantialaska" +
+ "njupikewondoextremadurafangfilipinomeänkielifoncajunkeskiranskamuinaisra" +
+ "nskaarpitaanipohjoisfriisiitäfriisifriuligagagauzigan-kiinagajogbajazoro" +
+ "astrialaisdarige’ezkiribatigilakikeskiyläsaksamuinaisyläsaksagoankonkani" +
+ "gondigorontalogoottigrebomuinaiskreikkasveitsinsaksawayuufrafragusiigwit" +
+ "šinhaidahakka-kiinahavaijifidžinhindihiligainoheettihmongyläsorbixiang-" +
+ "kiinahupaibanibibioilokoinguušiinkeroinenjamaikankreolienglantilojbanngo" +
+ "mbamachamejuutalaispersiajuutalaisarabiajuuttikarakalpakkikabyylikatšinj" +
+ "jukambakavikabardikanembutyapmakondekapverdenkreolikenyangnorsunluuranni" +
+ "konkorokaingangkhasikhotanikoyra chiinikhowarkirmanjkikakokalenjinkimbun" +
+ "dukomipermjakkikonkanikosraekpellekaratšai-balkaarikriokinaray-akarjalak" +
+ "urukhshambalabafiakölschkumykkikutenailadinolangolahndalambalezgilingua " +
+ "franca novaliguuriliivilakotalombardimongolozipohjoislurilatgalliluluanl" +
+ "ubaluiseñolundaluolusailuhyaklassinen kiinalazimaduramafamagahimaithilim" +
+ "akassarmandingomaasaimabamokšamandarmendemerumorisyenkeski-iirimakua-mee" +
+ "ttometa’micmacminangkabaumantšumanipurimohawkmossivuorimarimundangmonia " +
+ "kieliäcreekmirandeesimarwarimentawaimyeneersämazandaranimin nan -kiinana" +
+ "polinamaalasaksanewariniasniueao nagakwasiongiemboonnogaimuinaisnorjanov" +
+ "ialn’kopohjoissothonuerklassinen newarinyamwezinyankolenyoronzimaosageos" +
+ "manipangasinanpahlavipampangapapiamentupalaupicardipennsylvaniansaksapla" +
+ "utdietschmuinaispersiapfaltsifoinikiapiemontepontoksenkreikkapohnpeimuin" +
+ "aispreussimuinaisprovensaalikʼicheʼchimborazonylänköketšuaradžastanirapa" +
+ "nuirarotongaromagnolitarifitromboromanirotumaruteenirovianaaromaniarwasa" +
+ "ndawejakuuttisamarianarameasamburusasaksantalisauraštringambaysangusisil" +
+ "iaskottisassarinsardieteläkurdisenecasenaseriselkuppikoyraboro sennimuin" +
+ "aisiirisamogiittitašelhitshantšadinarabiasidamosleesiansaksaselayaretelä" +
+ "saameluulajansaameinarinsaamekoltansaamesoninkesogdisrananserersahosater" +
+ "landinfriisisukumasususumerikomorikingwanamuinaissyyriasyyriasleesiatulu" +
+ "temnetesoterenotetumtigretivtokelautsahuriklingontlingittališitamašekmal" +
+ "awintongatok-pisinturojotarokotsakoniatsimšitatitumbukatuvalutasawaqtuva" +
+ "keskiatlaksentamazightudmurttiugaritmbundujuurivaivenetsiavepsälänsiflaa" +
+ "mimaininfrankkivatjavõrovunjowalserwolaittawaraywashowarlpiriwu-kiinakal" +
+ "mukkimingrelisogajaojapiyangbenyembañeengatúkantoninkiinazapoteekkibliss" +
+ "kieliseelantizenagavakioitu tamazightzuniei kielellistä sisältöäzazaylei" +
+ "sarabiaitävallansaksasveitsinyläsaksaaustralianenglantikanadanenglantibr" +
+ "itannianenglantiamerikanenglantiamerikanespanjaeuroopanespanjameksikones" +
+ "panjakanadanranskasveitsinranskaalankomaidenalasaksaflaamibrasilianportu" +
+ "galieuroopanportugalimoldovaserbokroaattiyksinkertaistettu kiinaperintei" +
+ "nen kiina"
+
+var fiLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000b, 0x0011, 0x001a, 0x001e, 0x0024, 0x002c,
+ 0x0032, 0x0038, 0x003e, 0x0044, 0x0049, 0x0052, 0x005f, 0x0067,
+ 0x006e, 0x0075, 0x007c, 0x0082, 0x0089, 0x008f, 0x0098, 0x00a3,
+ 0x00ac, 0x00b3, 0x00b7, 0x00be, 0x00ca, 0x00d3, 0x00d8, 0x00de,
+ 0x00e3, 0x00e9, 0x00f1, 0x00f4, 0x00fb, 0x0103, 0x010c, 0x0113,
+ 0x0117, 0x011c, 0x0121, 0x0127, 0x012c, 0x0132, 0x0139, 0x013f,
+ 0x014b, 0x014f, 0x0154, 0x015b, 0x0162, 0x016c, 0x0172, 0x0177,
+ 0x017d, 0x0182, 0x018b, 0x0192, 0x0197, 0x019d, 0x01a4, 0x01aa,
+ // Entry 40 - 7F
+ 0x01b5, 0x01be, 0x01c9, 0x01cd, 0x01d9, 0x01e0, 0x01e3, 0x01ea,
+ 0x01f0, 0x01f9, 0x01ff, 0x0204, 0x020b, 0x0210, 0x0216, 0x021e,
+ 0x0225, 0x0230, 0x0235, 0x023c, 0x0241, 0x0247, 0x024f, 0x0254,
+ 0x0258, 0x025d, 0x0265, 0x026b, 0x0274, 0x0279, 0x0280, 0x0287,
+ 0x028a, 0x0291, 0x029d, 0x02a3, 0x02ac, 0x02b4, 0x02b9, 0x02c2,
+ 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e5, 0x02ea, 0x02ef, 0x02fe,
+ 0x0304, 0x030a, 0x0312, 0x0320, 0x032e, 0x033c, 0x0342, 0x034a,
+ 0x0353, 0x035b, 0x0360, 0x0365, 0x036d, 0x0376, 0x037b, 0x0380,
+ // Entry 80 - BF
+ 0x0386, 0x038f, 0x0396, 0x03a1, 0x03a6, 0x03ad, 0x03b5, 0x03bb,
+ 0x03c3, 0x03c8, 0x03ce, 0x03da, 0x03df, 0x03e6, 0x03ee, 0x03f6,
+ 0x03fb, 0x0400, 0x0406, 0x040d, 0x0413, 0x0418, 0x0423, 0x0428,
+ 0x042e, 0x0435, 0x043b, 0x0441, 0x044a, 0x044e, 0x0456, 0x045f,
+ 0x0465, 0x046a, 0x0470, 0x0476, 0x047d, 0x0483, 0x048a, 0x0491,
+ 0x0495, 0x049c, 0x04a1, 0x04a8, 0x04b0, 0x04b7, 0x04bc, 0x04c1,
+ 0x04c8, 0x04ce, 0x04d4, 0x04d9, 0x04dd, 0x04e3, 0x04ea, 0x04f1,
+ 0x04f6, 0x0504, 0x050c, 0x0511, 0x0515, 0x051b, 0x0522, 0x0529,
+ // Entry C0 - FF
+ 0x052c, 0x0531, 0x0540, 0x0546, 0x0557, 0x0561, 0x0567, 0x056e,
+ 0x057c, 0x0582, 0x058f, 0x059c, 0x059f, 0x05bb, 0x05c2, 0x05c8,
+ 0x05ce, 0x05d6, 0x05da, 0x05e1, 0x05e6, 0x05eb, 0x05f5, 0x05fc,
+ 0x0602, 0x0607, 0x060d, 0x0611, 0x0614, 0x061a, 0x0628, 0x0632,
+ 0x0637, 0x063b, 0x0641, 0x0644, 0x064b, 0x0655, 0x065d, 0x0663,
+ 0x0669, 0x066d, 0x0672, 0x067b, 0x067f, 0x0683, 0x0688, 0x068f,
+ 0x0694, 0x069a, 0x06a0, 0x06a5, 0x06ac, 0x06b0, 0x06b9, 0x06c2,
+ 0x06c7, 0x06cb, 0x06d9, 0x06e0, 0x06e9, 0x06f1, 0x06f9, 0x06ff,
+ // Entry 100 - 13F
+ 0x0704, 0x070c, 0x0719, 0x0720, 0x0726, 0x072b, 0x0730, 0x0738,
+ 0x073d, 0x0743, 0x0748, 0x074e, 0x0753, 0x075b, 0x0760, 0x0765,
+ 0x0772, 0x077c, 0x0781, 0x0787, 0x078b, 0x078f, 0x0795, 0x07a2,
+ 0x07a8, 0x07ad, 0x07ba, 0x07c6, 0x07cc, 0x07d7, 0x07db, 0x07e3,
+ 0x07ed, 0x07f0, 0x07f5, 0x0800, 0x080d, 0x0816, 0x0823, 0x082d,
+ 0x0833, 0x0835, 0x083c, 0x0845, 0x0849, 0x084e, 0x0860, 0x0867,
+ 0x086f, 0x0875, 0x0883, 0x0893, 0x089e, 0x08a3, 0x08ac, 0x08b2,
+ 0x08b7, 0x08c5, 0x08d2, 0x08d7, 0x08dd, 0x08e2, 0x08ea, 0x08ef,
+ // Entry 140 - 17F
+ 0x08fa, 0x0901, 0x090d, 0x0916, 0x091c, 0x0921, 0x092a, 0x0935,
+ 0x0939, 0x093d, 0x0943, 0x0948, 0x0950, 0x095a, 0x0970, 0x0976,
+ 0x097c, 0x0983, 0x0992, 0x09a1, 0x09a7, 0x09b3, 0x09ba, 0x09c1,
+ 0x09c4, 0x09c9, 0x09cd, 0x09d4, 0x09db, 0x09df, 0x09e6, 0x09f5,
+ 0x09fc, 0x0a11, 0x0a19, 0x0a1e, 0x0a25, 0x0a31, 0x0a37, 0x0a40,
+ 0x0a44, 0x0a4c, 0x0a54, 0x0a61, 0x0a68, 0x0a6e, 0x0a74, 0x0a86,
+ 0x0a8a, 0x0a93, 0x0a9a, 0x0aa0, 0x0aa8, 0x0aad, 0x0ab4, 0x0abb,
+ 0x0ac2, 0x0ac8, 0x0acd, 0x0ad3, 0x0ad8, 0x0add, 0x0aef, 0x0af6,
+ // Entry 180 - 1BF
+ 0x0afb, 0x0b01, 0x0b09, 0x0b0e, 0x0b12, 0x0b1d, 0x0b25, 0x0b2f,
+ 0x0b37, 0x0b3c, 0x0b3f, 0x0b44, 0x0b49, 0x0b58, 0x0b5c, 0x0b62,
+ 0x0b66, 0x0b6c, 0x0b74, 0x0b7c, 0x0b84, 0x0b8a, 0x0b8e, 0x0b94,
+ 0x0b9a, 0x0b9f, 0x0ba3, 0x0bab, 0x0bb5, 0x0bc1, 0x0bc8, 0x0bce,
+ 0x0bd9, 0x0be0, 0x0be8, 0x0bee, 0x0bf3, 0x0bfc, 0x0c03, 0x0c10,
+ 0x0c15, 0x0c1f, 0x0c26, 0x0c2e, 0x0c33, 0x0c38, 0x0c43, 0x0c51,
+ 0x0c57, 0x0c5b, 0x0c63, 0x0c69, 0x0c6d, 0x0c71, 0x0c78, 0x0c7e,
+ 0x0c87, 0x0c8c, 0x0c98, 0x0c9e, 0x0ca4, 0x0cb0, 0x0cb4, 0x0cc4,
+ // Entry 1C0 - 1FF
+ 0x0ccc, 0x0cd4, 0x0cd9, 0x0cde, 0x0ce3, 0x0ce9, 0x0cf3, 0x0cfa,
+ 0x0d02, 0x0d0c, 0x0d11, 0x0d18, 0x0d2a, 0x0d36, 0x0d43, 0x0d4a,
+ 0x0d52, 0x0d5a, 0x0d6a, 0x0d71, 0x0d7f, 0x0d91, 0x0d9a, 0x0db4,
+ 0x0dbf, 0x0dc6, 0x0dcf, 0x0dd8, 0x0ddf, 0x0de4, 0x0dea, 0x0df0,
+ 0x0df7, 0x0dfe, 0x0e06, 0x0e09, 0x0e10, 0x0e18, 0x0e26, 0x0e2d,
+ 0x0e32, 0x0e39, 0x0e43, 0x0e4a, 0x0e4f, 0x0e56, 0x0e5c, 0x0e69,
+ 0x0e74, 0x0e7a, 0x0e7e, 0x0e82, 0x0e8a, 0x0e99, 0x0ea4, 0x0eae,
+ 0x0eb7, 0x0ebb, 0x0ec8, 0x0ece, 0x0edb, 0x0ee2, 0x0eed, 0x0efa,
+ // Entry 200 - 23F
+ 0x0f05, 0x0f10, 0x0f17, 0x0f1c, 0x0f22, 0x0f27, 0x0f2b, 0x0f3c,
+ 0x0f42, 0x0f46, 0x0f4c, 0x0f52, 0x0f5a, 0x0f67, 0x0f6d, 0x0f74,
+ 0x0f78, 0x0f7d, 0x0f81, 0x0f87, 0x0f8c, 0x0f91, 0x0f94, 0x0f9b,
+ 0x0fa2, 0x0fa9, 0x0fb0, 0x0fb7, 0x0fbf, 0x0fcb, 0x0fd4, 0x0fda,
+ 0x0fe0, 0x0fe8, 0x0fef, 0x0ff3, 0x0ffa, 0x1000, 0x1007, 0x100b,
+ 0x1021, 0x1029, 0x102f, 0x1035, 0x103a, 0x103d, 0x1045, 0x104b,
+ 0x1057, 0x1064, 0x1069, 0x106e, 0x1073, 0x1079, 0x1081, 0x1086,
+ 0x108b, 0x1093, 0x109b, 0x10a3, 0x10ab, 0x10af, 0x10b2, 0x10b6,
+ // Entry 240 - 27F
+ 0x10bd, 0x10c2, 0x10cc, 0x10d9, 0x10e3, 0x10ed, 0x10f5, 0x10fb,
+ 0x110d, 0x1111, 0x112c, 0x1130, 0x113b, 0x113b, 0x114a, 0x115b,
+ 0x116d, 0x117c, 0x118e, 0x119e, 0x11ad, 0x11bc, 0x11cb, 0x11cb,
+ 0x11d8, 0x11e6, 0x11fa, 0x1200, 0x1212, 0x1223, 0x122a, 0x1237,
+ 0x124e, 0x125f,
+} // Size: 1244 bytes
+
+var filLangStr string = "" + // Size: 2154 bytes
+ "AbkhazianAfrikaansAkanAmharicArabeAssameseAymaraAzerbaijaniBashkirBelaru" +
+ "sianBulgarianBambaraBengaliTibetanBretonBosnianCatalanChechenCorsicanCze" +
+ "chChuvashWelshDanishGermanDivehiDzongkhaEweGreekInglesEsperantoEspanyolE" +
+ "stonianBasquePersianFinnishFijianFaroeseFrenchKanlurang FrisianIrishScot" +
+ "s GaelicGalicianGuaraniGujaratiManxHausaHebrewHindiCroatianHaitianHungar" +
+ "ianArmenianInterlinguaIndonesianInterlingueIgboSichuan YiIcelandicItalia" +
+ "nInuktitutJapaneseJavaneseGeorgianKongoKikuyuKazakhKalaallisutKhmerKanna" +
+ "daKoreanKashmiriKurdishCornishKirghizLatinLuxembourgishGandaLingalaLaoLi" +
+ "thuanianLuba-KatangaLatvianMalagasyMaoriMacedonianMalayalamMongolianMara" +
+ "thiMalayMalteseBurmeseHilagang NdebeleNepaliDutchNorwegian NynorskNorweg" +
+ "ian BokmalNyanjaOccitanOromoOriyaOsseticPunjabiPolishPashtoPortugesQuech" +
+ "uaRomanshRundiRomanianRussianKinyarwandaSanskritSindhiHilagang SamiSango" +
+ "SinhalaSlovakSlovenianSamoanShonaSomaliAlbanianSerbianSwatiSouthern Soth" +
+ "oSundaneseSwedishSwahiliTamilTeluguTajikThaiTigrinyaTurkmenTswanaTonganT" +
+ "urkishTsongaTatarTahitianUyghurUkranianUrduUzbekVendaVietnameseWolofXhos" +
+ "aYiddishYorubaChineseZuluAcoliAghemMapucheAsuBembaBenaKanlurang BalochiB" +
+ "odoChigaCherokeeCentral KurdishTaitaZarmaLower SorbianDualaJola-FonyiEmb" +
+ "uEfikFilipinoGaGagauzSwiss GermanGusiiHawaiianUpper SorbianNgombaMachame" +
+ "KabyleKambaMakondeKabuverdianuKoyra ChiiniKalenjinKomi-PermyakKonkaniSha" +
+ "mbalaBafiaLangiLakotaLoziHilagang LuriLuba-LuluaLuoLuyiaMasaiMeruMorisye" +
+ "nMakhuwa-MeettoMeta’MohawkMundangMazanderaniNamaLow GermanKwasioN’KoNort" +
+ "hern SothoNuerNyankoleKʼicheʼRomboRwaSamburuSanguKatimugang KurdishSenaK" +
+ "oyraboro SenniTachelhitKatimugang SamiLule SamiInari SamiSkolt SamiComor" +
+ "ianSwahili (Congo)TesoTetumKlingonTok PisinTumbukaTasawaqTamazight ng Gi" +
+ "tnang AtlasHindi Kilalang WikaVaiVunjoWarlpiriSogaCantoneseStandard Moro" +
+ "ccan TamazightWalang nilalaman na ukol sa wikaModernong Karaniwang Arabe" +
+ "Austrian GermanSwiss High GermanIngles ng AustralyaIngles sa CanadaIngle" +
+ "s ng BritishIngles (US)Latin American na EspanyolEuropean SpanishEspanyo" +
+ "l ng MehikoCanadian FrenchSwiss FrenchLow SaxonFlemishPortuges ng Brasil" +
+ "European PortugueseMoldavianSerbo-CroatianSimplified Chinese"
+
+var filLangIdx = []uint16{ // 609 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0009, 0x0009, 0x0012, 0x0016, 0x001d, 0x001d,
+ 0x0022, 0x002a, 0x002a, 0x0030, 0x003b, 0x0042, 0x004c, 0x0055,
+ 0x0055, 0x005c, 0x0063, 0x006a, 0x0070, 0x0077, 0x007e, 0x0085,
+ 0x0085, 0x008d, 0x008d, 0x0092, 0x0092, 0x0099, 0x009e, 0x00a4,
+ 0x00aa, 0x00b0, 0x00b8, 0x00bb, 0x00c0, 0x00c6, 0x00cf, 0x00d7,
+ 0x00df, 0x00e5, 0x00ec, 0x00ec, 0x00f3, 0x00f9, 0x0100, 0x0106,
+ 0x0117, 0x011c, 0x0128, 0x0130, 0x0137, 0x013f, 0x0143, 0x0148,
+ 0x014e, 0x0153, 0x0153, 0x015b, 0x0162, 0x016b, 0x0173, 0x0173,
+ // Entry 40 - 7F
+ 0x017e, 0x0188, 0x0193, 0x0197, 0x01a1, 0x01a1, 0x01a1, 0x01aa,
+ 0x01b1, 0x01ba, 0x01c2, 0x01ca, 0x01d2, 0x01d7, 0x01dd, 0x01dd,
+ 0x01e3, 0x01ee, 0x01f3, 0x01fa, 0x0200, 0x0200, 0x0208, 0x020f,
+ 0x020f, 0x0216, 0x021d, 0x0222, 0x022f, 0x0234, 0x0234, 0x023b,
+ 0x023e, 0x0248, 0x0254, 0x025b, 0x0263, 0x0263, 0x0268, 0x0272,
+ 0x027b, 0x0284, 0x028b, 0x0290, 0x0297, 0x029e, 0x029e, 0x02ae,
+ 0x02b4, 0x02b4, 0x02b9, 0x02ca, 0x02da, 0x02da, 0x02da, 0x02e0,
+ 0x02e7, 0x02e7, 0x02ec, 0x02f1, 0x02f8, 0x02ff, 0x02ff, 0x0305,
+ // Entry 80 - BF
+ 0x030b, 0x0313, 0x031a, 0x0321, 0x0326, 0x032e, 0x0335, 0x0340,
+ 0x0348, 0x0348, 0x034e, 0x035b, 0x0360, 0x0367, 0x036d, 0x0376,
+ 0x037c, 0x0381, 0x0387, 0x038f, 0x0396, 0x039b, 0x03a9, 0x03b2,
+ 0x03b9, 0x03c0, 0x03c5, 0x03cb, 0x03d0, 0x03d4, 0x03dc, 0x03e3,
+ 0x03e9, 0x03ef, 0x03f6, 0x03fc, 0x0401, 0x0409, 0x040f, 0x0417,
+ 0x041b, 0x0420, 0x0425, 0x042f, 0x042f, 0x042f, 0x0434, 0x0439,
+ 0x0440, 0x0446, 0x0446, 0x044d, 0x0451, 0x0451, 0x0456, 0x0456,
+ 0x0456, 0x0456, 0x0456, 0x045b, 0x045b, 0x045b, 0x045b, 0x045b,
+ // Entry C0 - FF
+ 0x045b, 0x045b, 0x045b, 0x045b, 0x045b, 0x0462, 0x0462, 0x0462,
+ 0x0462, 0x0462, 0x0462, 0x0462, 0x0465, 0x0465, 0x0465, 0x0465,
+ 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465, 0x0465,
+ 0x0465, 0x046a, 0x046a, 0x046e, 0x046e, 0x046e, 0x047f, 0x047f,
+ 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f, 0x047f,
+ 0x047f, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0483,
+ 0x0483, 0x0483, 0x0483, 0x0483, 0x0483, 0x0488, 0x0488, 0x0488,
+ 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0490, 0x0490, 0x049f,
+ // Entry 100 - 13F
+ 0x049f, 0x049f, 0x049f, 0x049f, 0x049f, 0x049f, 0x04a4, 0x04a4,
+ 0x04a4, 0x04a4, 0x04a4, 0x04a9, 0x04a9, 0x04b6, 0x04b6, 0x04bb,
+ 0x04bb, 0x04c5, 0x04c5, 0x04c5, 0x04c9, 0x04cd, 0x04cd, 0x04cd,
+ 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04cd, 0x04d5,
+ 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5, 0x04d5,
+ 0x04d5, 0x04d7, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd,
+ 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd,
+ 0x04dd, 0x04dd, 0x04e9, 0x04e9, 0x04e9, 0x04ee, 0x04ee, 0x04ee,
+ // Entry 140 - 17F
+ 0x04ee, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x04f6, 0x0503, 0x0503,
+ 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503, 0x0503,
+ 0x0509, 0x0510, 0x0510, 0x0510, 0x0510, 0x0510, 0x0516, 0x0516,
+ 0x0516, 0x051b, 0x051b, 0x051b, 0x051b, 0x051b, 0x0522, 0x052e,
+ 0x052e, 0x052e, 0x052e, 0x052e, 0x052e, 0x053a, 0x053a, 0x053a,
+ 0x053a, 0x0542, 0x0542, 0x054e, 0x0555, 0x0555, 0x0555, 0x0555,
+ 0x0555, 0x0555, 0x0555, 0x0555, 0x055d, 0x0562, 0x0562, 0x0562,
+ 0x0562, 0x0562, 0x0567, 0x0567, 0x0567, 0x0567, 0x0567, 0x0567,
+ // Entry 180 - 1BF
+ 0x0567, 0x056d, 0x056d, 0x056d, 0x0571, 0x057e, 0x057e, 0x0588,
+ 0x0588, 0x0588, 0x058b, 0x058b, 0x0590, 0x0590, 0x0590, 0x0590,
+ 0x0590, 0x0590, 0x0590, 0x0590, 0x0590, 0x0595, 0x0595, 0x0595,
+ 0x0595, 0x0595, 0x0599, 0x05a1, 0x05a1, 0x05af, 0x05b6, 0x05b6,
+ 0x05b6, 0x05b6, 0x05b6, 0x05bc, 0x05bc, 0x05bc, 0x05c3, 0x05c3,
+ 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05c3, 0x05ce, 0x05ce,
+ 0x05ce, 0x05d2, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05e2,
+ 0x05e2, 0x05e2, 0x05e2, 0x05e2, 0x05e8, 0x05f6, 0x05fa, 0x05fa,
+ // Entry 1C0 - 1FF
+ 0x05fa, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602,
+ 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602,
+ 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x0602, 0x060b, 0x060b,
+ 0x060b, 0x060b, 0x060b, 0x060b, 0x060b, 0x0610, 0x0610, 0x0610,
+ 0x0610, 0x0610, 0x0610, 0x0613, 0x0613, 0x0613, 0x0613, 0x061a,
+ 0x061a, 0x061a, 0x061a, 0x061a, 0x061f, 0x061f, 0x061f, 0x061f,
+ 0x0631, 0x0631, 0x0635, 0x0635, 0x0635, 0x0644, 0x0644, 0x0644,
+ 0x064d, 0x064d, 0x064d, 0x064d, 0x064d, 0x064d, 0x065c, 0x0665,
+ // Entry 200 - 23F
+ 0x066f, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679,
+ 0x0679, 0x0679, 0x0679, 0x0681, 0x0690, 0x0690, 0x0690, 0x0690,
+ 0x0690, 0x0690, 0x0694, 0x0694, 0x0699, 0x0699, 0x0699, 0x0699,
+ 0x0699, 0x06a0, 0x06a0, 0x06a0, 0x06a0, 0x06a0, 0x06a9, 0x06a9,
+ 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06b0, 0x06b0, 0x06b7, 0x06b7,
+ 0x06d1, 0x06d1, 0x06d1, 0x06d1, 0x06e4, 0x06e7, 0x06e7, 0x06e7,
+ 0x06e7, 0x06e7, 0x06e7, 0x06e7, 0x06ec, 0x06ec, 0x06ec, 0x06ec,
+ 0x06ec, 0x06f4, 0x06f4, 0x06f4, 0x06f4, 0x06f8, 0x06f8, 0x06f8,
+ // Entry 240 - 27F
+ 0x06f8, 0x06f8, 0x06f8, 0x0701, 0x0701, 0x0701, 0x0701, 0x0701,
+ 0x071c, 0x071c, 0x073c, 0x073c, 0x0756, 0x0756, 0x0765, 0x0776,
+ 0x0789, 0x0799, 0x07aa, 0x07b5, 0x07cf, 0x07df, 0x07f1, 0x07f1,
+ 0x0800, 0x080c, 0x0815, 0x081c, 0x082e, 0x0841, 0x084a, 0x0858,
+ 0x086a,
+} // Size: 1242 bytes
+
+var frLangStr string = "" + // Size: 4218 bytes
+ "afarabkhazeavestiqueafrikaansakanamhariquearagonaisarabeassamaisavarayma" +
+ "raazéribachkirbiélorussebulgarebichelamarbambarabengalitibétainbretonbos" +
+ "niaquecatalantchétchènechamorrocorsecreetchèqueslavon d’églisetchouvache" +
+ "galloisdanoisallemandmaldiviendzongkhaéwégrecanglaisespérantoespagnolest" +
+ "onienbasquepersanpeulfinnoisfidjienféroïenfrançaisfrison occidentalirlan" +
+ "daisgaélique écossaisgalicienguaranigujaratimanxhaoussahébreuhindihiri m" +
+ "otucroatecréole haïtienhongroisarménienhérérointerlinguaindonésieninterl" +
+ "ingueigboyi du Sichuaninupiaqidoislandaisitalieninuktitutjaponaisjavanai" +
+ "sgéorgienkongokikuyukuanyamakazakhgroenlandaiskhmerkannadacoréenkanourik" +
+ "ashmirikurdekomicorniquekirghizelatinluxembourgeoisgandalimbourgeoisling" +
+ "alalaolituanienluba-katangalettonmalgachemarshallmaorimacédonienmalayala" +
+ "mmongolmarathemalaismaltaisbirmannauruanndébélé du Nordnépalaisndonganée" +
+ "rlandaisnorvégien nynorsknorvégien bokmålndébélé du Sudnavahonyanjaoccit" +
+ "anojibwaoromooriyaossètependjabipalipolonaispachtoportugaisquechuaromanc" +
+ "heroundiroumainrusserwandasanskritsardesindhisami du Nordsanghocinghalai" +
+ "sslovaqueslovènesamoanshonasomalialbanaisserbeswatisesothosoundanaissuéd" +
+ "oisswahilitamoultélougoutadjikthaïtigrignaturkmènetswanatonguienturctson" +
+ "gatatartahitienouïghourukrainienourdououzbekvendavietnamienvolapukwallon" +
+ "wolofxhosayiddishyorubazhuangchinoiszoulouacehacoliadangmeadyghéenafrihi" +
+ "liaghemaïnouakkadienaléoutealtaï du Sudancien anglaisangikaaraméenmapuch" +
+ "earapahoarawakassouasturienawadhibaloutchibalinaisbassabamounghomalabedj" +
+ "abembabénabafutbaloutchi occidentalbhojpuribikolbinikomsiksikabrajbodoak" +
+ "oosebouriatebugibouloublinmedumbacaddocaribecayugaatsamcebuanokigachibch" +
+ "atchaghataïchuukmarijargon chinookchoctawchipewyancherokeecheyennesorani" +
+ "copteturc de Criméekachoubedakotadargwataitadelawareslaveydogribdinkazar" +
+ "madogribas-sorabedoualamoyen néerlandaisdiola-fognydiouladazagaembouefik" +
+ "égyptien ancienekajukélamitemoyen anglaiséwondofangfilipinofonmoyen fra" +
+ "nçaisancien françaisfranco-provençalfrison du Nordfrison orientalfrioula" +
+ "ngagagaouzegayogbayaguèzegilbertaismoyen haut-allemandancien haut allema" +
+ "ndgondigorontalogotiquegrebogrec anciensuisse allemandgusiigwichʼinhaida" +
+ "hawaïenhiligaynonhittitehmonghaut-sorabehupaibanibibioilokanoingoucheloj" +
+ "banngombamachamejudéo-persanjudéo-arabekarakalpakkabylekachinjjukambakaw" +
+ "ikabardinkanemboutyapmakondecapverdienkorokhasikhotanaiskoyra chiinikako" +
+ "kalenjinkiMboundoukomi-permiakkonkanikusaienkpellékaratchaï balkarcaréli" +
+ "enkurukhchambalabafiafrancique ripuairekoumykkutenailadinolangilahndalam" +
+ "balezghienlakotamongolozilori du Nordluba-lulualuisenolundaluolushaiolul" +
+ "uyiamaduraismafamagahimaithilimakassarmandinguemasaimabamoksamandarmendé" +
+ "meroucréole mauricienmoyen irlandaismakhuwa-meettométa’micmacminangkabau" +
+ "mandchoumanipurimohawkmorémundangmultilinguecreekmirandaismarwarîmyènèer" +
+ "zyamazandéraninapolitainnamabas-allemandnewariniasniuékwasiongiemboonnog" +
+ "aïvieux norroisn’kosotho du Nordnuernewarî classiquenyamwezinyankolényor" +
+ "onzemaosageturc ottomanpangasinanpahlavipampanganpapiamentopalaupersan a" +
+ "ncienphénicienpohnpeiprovençal ancienk’iche’rajasthanirapanuirarotongien" +
+ "rombotziganevalaquerwasandaweiakoutearaméen samaritainsamburusasaksantal" +
+ "ngambaysangusicilienécossaiskurde du Sudsenecasenaselkoupekoyraboro senn" +
+ "iancien irlandaischleuhshanarabe tchadiensidamosami du Sudsami de Lulesa" +
+ "mi d’Inarisami skoltsoninkésogdiensranan tongosérèresahosukumasoussousum" +
+ "ériencomorienswahili du Congosyriaque classiquesyriaquetemnetesoterenot" +
+ "etumtigrétivtokelauklingontlingittamacheqtonga nyasatok pisintarokotsims" +
+ "hiantumbukatuvalutasawaqtouvatamazightoudmourteougaritiqueumbunduracinev" +
+ "aïvotevunjowalserwalamowaraywashowarlpirikalmouksogayaoyapoisyangbenyemb" +
+ "acantonaiszapotèquesymboles Blisszenagaamazighe standard marocainzunisan" +
+ "s contenu linguistiquezazakiarabe standard moderneallemand autrichienall" +
+ "emand suisseanglais australienanglais canadienanglais britanniqueanglais" +
+ " américainespagnol latino-américainespagnol européenespagnol mexicainfra" +
+ "nçais canadienfrançais suissebas-saxon néerlandaisflamandportugais brési" +
+ "lienportugais européenmoldaveserbo-croatechinois simplifiéchinois tradit" +
+ "ionnel"
+
+var frLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000b, 0x0014, 0x001d, 0x0021, 0x002a, 0x0033,
+ 0x0038, 0x0040, 0x0044, 0x004a, 0x0050, 0x0057, 0x0062, 0x0069,
+ 0x0073, 0x007a, 0x0081, 0x008a, 0x0090, 0x0099, 0x00a0, 0x00ac,
+ 0x00b4, 0x00b9, 0x00bd, 0x00c5, 0x00d7, 0x00e1, 0x00e8, 0x00ee,
+ 0x00f6, 0x00ff, 0x0107, 0x010c, 0x0110, 0x0117, 0x0121, 0x0129,
+ 0x0131, 0x0137, 0x013d, 0x0141, 0x0148, 0x014f, 0x0158, 0x0161,
+ 0x0172, 0x017b, 0x018e, 0x0196, 0x019d, 0x01a5, 0x01a9, 0x01b0,
+ 0x01b7, 0x01bc, 0x01c5, 0x01cb, 0x01db, 0x01e3, 0x01ec, 0x01f4,
+ // Entry 40 - 7F
+ 0x01ff, 0x020a, 0x0215, 0x0219, 0x0226, 0x022d, 0x0230, 0x0239,
+ 0x0240, 0x0249, 0x0251, 0x0259, 0x0262, 0x0267, 0x026d, 0x0275,
+ 0x027b, 0x0287, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a9, 0x02ae,
+ 0x02b2, 0x02ba, 0x02c2, 0x02c7, 0x02d5, 0x02da, 0x02e6, 0x02ed,
+ 0x02f0, 0x02f9, 0x0305, 0x030b, 0x0313, 0x031b, 0x0320, 0x032b,
+ 0x0334, 0x033a, 0x0341, 0x0347, 0x034e, 0x0354, 0x035b, 0x036d,
+ 0x0376, 0x037c, 0x0388, 0x039a, 0x03ac, 0x03bd, 0x03c3, 0x03c9,
+ 0x03d0, 0x03d6, 0x03db, 0x03e0, 0x03e7, 0x03ef, 0x03f3, 0x03fb,
+ // Entry 80 - BF
+ 0x0401, 0x040a, 0x0411, 0x0419, 0x041f, 0x0426, 0x042b, 0x0431,
+ 0x0439, 0x043e, 0x0444, 0x0450, 0x0456, 0x0460, 0x0468, 0x0470,
+ 0x0476, 0x047b, 0x0481, 0x0489, 0x048e, 0x0493, 0x049a, 0x04a4,
+ 0x04ac, 0x04b3, 0x04b9, 0x04c2, 0x04c8, 0x04cd, 0x04d5, 0x04de,
+ 0x04e4, 0x04ec, 0x04f0, 0x04f6, 0x04fb, 0x0503, 0x050c, 0x0515,
+ 0x051b, 0x0521, 0x0526, 0x0530, 0x0537, 0x053d, 0x0542, 0x0547,
+ 0x054e, 0x0554, 0x055a, 0x0561, 0x0567, 0x056b, 0x0570, 0x0577,
+ 0x0580, 0x0580, 0x0588, 0x058d, 0x0593, 0x059b, 0x059b, 0x05a3,
+ // Entry C0 - FF
+ 0x05a3, 0x05b0, 0x05be, 0x05c4, 0x05cc, 0x05d3, 0x05d3, 0x05da,
+ 0x05da, 0x05e0, 0x05e0, 0x05e0, 0x05e5, 0x05e5, 0x05ed, 0x05ed,
+ 0x05f3, 0x05fc, 0x0604, 0x0604, 0x0609, 0x060f, 0x060f, 0x0616,
+ 0x061b, 0x0620, 0x0620, 0x0625, 0x062a, 0x062a, 0x063e, 0x0646,
+ 0x064b, 0x064f, 0x064f, 0x0652, 0x0659, 0x0659, 0x0659, 0x065d,
+ 0x065d, 0x0661, 0x0667, 0x066f, 0x0673, 0x0679, 0x067d, 0x0684,
+ 0x0689, 0x068f, 0x0695, 0x069a, 0x06a1, 0x06a5, 0x06ac, 0x06b7,
+ 0x06bc, 0x06c0, 0x06ce, 0x06d5, 0x06de, 0x06e6, 0x06ee, 0x06f4,
+ // Entry 100 - 13F
+ 0x06f9, 0x06f9, 0x0708, 0x0710, 0x0716, 0x071c, 0x0721, 0x0729,
+ 0x072f, 0x0735, 0x073a, 0x073f, 0x0744, 0x074e, 0x074e, 0x0754,
+ 0x0766, 0x0771, 0x0777, 0x077d, 0x0782, 0x0786, 0x0786, 0x0796,
+ 0x079c, 0x07a4, 0x07b1, 0x07b1, 0x07b8, 0x07b8, 0x07bc, 0x07c4,
+ 0x07c4, 0x07c7, 0x07c7, 0x07d6, 0x07e6, 0x07f7, 0x0805, 0x0814,
+ 0x081c, 0x081e, 0x0826, 0x0826, 0x082a, 0x082f, 0x082f, 0x0835,
+ 0x083f, 0x083f, 0x0852, 0x0866, 0x0866, 0x086b, 0x0874, 0x087b,
+ 0x0880, 0x088b, 0x089a, 0x089a, 0x089a, 0x089f, 0x08a8, 0x08ad,
+ // Entry 140 - 17F
+ 0x08ad, 0x08b5, 0x08b5, 0x08bf, 0x08c6, 0x08cb, 0x08d6, 0x08d6,
+ 0x08da, 0x08de, 0x08e4, 0x08eb, 0x08f3, 0x08f3, 0x08f3, 0x08f9,
+ 0x08ff, 0x0906, 0x0913, 0x091f, 0x091f, 0x0929, 0x092f, 0x0935,
+ 0x0938, 0x093d, 0x0941, 0x0949, 0x0951, 0x0955, 0x095c, 0x0966,
+ 0x0966, 0x096a, 0x096a, 0x096f, 0x0978, 0x0984, 0x0984, 0x0984,
+ 0x0988, 0x0990, 0x099a, 0x09a6, 0x09ad, 0x09b4, 0x09bb, 0x09cc,
+ 0x09cc, 0x09cc, 0x09d5, 0x09db, 0x09e3, 0x09e8, 0x09fa, 0x0a00,
+ 0x0a07, 0x0a0d, 0x0a12, 0x0a18, 0x0a1d, 0x0a25, 0x0a25, 0x0a25,
+ // Entry 180 - 1BF
+ 0x0a25, 0x0a2b, 0x0a2b, 0x0a30, 0x0a34, 0x0a40, 0x0a40, 0x0a4a,
+ 0x0a51, 0x0a56, 0x0a59, 0x0a5f, 0x0a67, 0x0a67, 0x0a67, 0x0a6f,
+ 0x0a73, 0x0a79, 0x0a81, 0x0a89, 0x0a92, 0x0a97, 0x0a9b, 0x0aa0,
+ 0x0aa6, 0x0aac, 0x0ab1, 0x0ac2, 0x0ad1, 0x0adf, 0x0ae7, 0x0aed,
+ 0x0af8, 0x0b00, 0x0b08, 0x0b0e, 0x0b13, 0x0b13, 0x0b1a, 0x0b25,
+ 0x0b2a, 0x0b33, 0x0b3b, 0x0b3b, 0x0b42, 0x0b47, 0x0b53, 0x0b53,
+ 0x0b5d, 0x0b61, 0x0b6d, 0x0b73, 0x0b77, 0x0b7c, 0x0b7c, 0x0b82,
+ 0x0b8b, 0x0b91, 0x0b9e, 0x0b9e, 0x0ba4, 0x0bb1, 0x0bb5, 0x0bc6,
+ // Entry 1C0 - 1FF
+ 0x0bce, 0x0bd7, 0x0bdc, 0x0be1, 0x0be6, 0x0bf2, 0x0bfc, 0x0c03,
+ 0x0c0c, 0x0c16, 0x0c1b, 0x0c1b, 0x0c1b, 0x0c1b, 0x0c28, 0x0c28,
+ 0x0c32, 0x0c32, 0x0c32, 0x0c39, 0x0c39, 0x0c4a, 0x0c55, 0x0c55,
+ 0x0c5f, 0x0c66, 0x0c71, 0x0c71, 0x0c71, 0x0c76, 0x0c7d, 0x0c7d,
+ 0x0c7d, 0x0c7d, 0x0c84, 0x0c87, 0x0c8e, 0x0c95, 0x0ca8, 0x0caf,
+ 0x0cb4, 0x0cba, 0x0cba, 0x0cc1, 0x0cc6, 0x0cce, 0x0cd7, 0x0cd7,
+ 0x0ce3, 0x0ce9, 0x0ced, 0x0ced, 0x0cf5, 0x0d04, 0x0d14, 0x0d14,
+ 0x0d1a, 0x0d1e, 0x0d2c, 0x0d32, 0x0d32, 0x0d32, 0x0d3d, 0x0d49,
+ // Entry 200 - 23F
+ 0x0d57, 0x0d61, 0x0d69, 0x0d70, 0x0d7c, 0x0d84, 0x0d88, 0x0d88,
+ 0x0d8e, 0x0d95, 0x0d9e, 0x0da6, 0x0db6, 0x0dc8, 0x0dd0, 0x0dd0,
+ 0x0dd0, 0x0dd5, 0x0dd9, 0x0ddf, 0x0de4, 0x0dea, 0x0ded, 0x0df4,
+ 0x0df4, 0x0dfb, 0x0e02, 0x0e02, 0x0e0a, 0x0e15, 0x0e1e, 0x0e1e,
+ 0x0e24, 0x0e24, 0x0e2d, 0x0e2d, 0x0e34, 0x0e3a, 0x0e41, 0x0e46,
+ 0x0e4f, 0x0e58, 0x0e63, 0x0e6a, 0x0e70, 0x0e74, 0x0e74, 0x0e74,
+ 0x0e74, 0x0e74, 0x0e78, 0x0e78, 0x0e7d, 0x0e83, 0x0e89, 0x0e8e,
+ 0x0e93, 0x0e9b, 0x0e9b, 0x0ea2, 0x0ea2, 0x0ea6, 0x0ea9, 0x0eaf,
+ // Entry 240 - 27F
+ 0x0eb6, 0x0ebb, 0x0ebb, 0x0ec4, 0x0ece, 0x0edc, 0x0edc, 0x0ee2,
+ 0x0efc, 0x0f00, 0x0f19, 0x0f1f, 0x0f35, 0x0f35, 0x0f48, 0x0f57,
+ 0x0f69, 0x0f79, 0x0f8c, 0x0f9e, 0x0fb8, 0x0fca, 0x0fdb, 0x0fdb,
+ 0x0fed, 0x0ffd, 0x1013, 0x101a, 0x102e, 0x1041, 0x1048, 0x1054,
+ 0x1066, 0x107a,
+} // Size: 1244 bytes
+
+var frCALangStr string = "araukanluoMeta’bas allemand"
+
+var frCALangIdx = []uint16{ // 435 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ // Entry 100 - 13F
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ // Entry 140 - 17F
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ // Entry 180 - 1BF
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x001d,
+} // Size: 894 bytes
+
+var guLangStr string = "" + // Size: 11388 bytes
+ "અફારઅબખાજિયનઅવેસ્તનઆફ્રિકન્સઅકાનએમ્હારિકઅર્ગોનીઝઅરબીઆસામીઅવેરિકઆયમારાઅઝર" +
+ "બૈજાનીબશ્કીરબેલારુશિયનબલ્ગેરિયનબિસ્લામાબામ્બારાબંગાળીતિબેટીયનબ્રેટોનબો" +
+ "સ્નિયનકતલાનચેચનકેમોરોકોર્સિકનક્રીચેકચર્ચ સ્લાવિકચૂવાશવેલ્શડેનિશજર્મનદિ" +
+ "વેહીડ્ઝોંગ્ખાઈવગ્રીકઅંગ્રેજીએસ્પેરાન્ટોસ્પેનિશએસ્ટોનિયનબાસ્કફારસીફુલાહ" +
+ "ફિનિશફિજીયનફોરિસ્તફ્રેન્ચપશ્ચિમી ફ્રિસિયનઆઇરિશસ્કોટ્સ ગેલિકગેલિશિયનગુઆ" +
+ "રાનીગુજરાતીમાંક્સહૌસાહીબ્રુહિન્દીહિરી મોટૂક્રોએશિયનહૈતીયનહંગેરિયનઆર્મે" +
+ "નિયનહેરેરોઇંટરલિંગુઆઇન્ડોનેશિયનઇંટરલિંગઇગ્બોસિચુઆન યીઇનુપિયાકઇડૌઆઇસલેન" +
+ "્ડિકઇટાલિયનઇનુકિટૂટજાપાનીઝજાવાનીસજ્યોર્જિઅનકોંગોકિકુયૂક્વાન્યામાકઝાખકલ" +
+ "ાલ્લિસુતખ્મેરકન્નડકોરિયનકનુરીકાશ્મીરીકુર્દિશકોમીકોર્નિશકિર્ગીઝલેટિનલક્" +
+ "ઝેમબર્ગિશગાંડાલિંબૂર્ગિશલિંગાલાલાઓથિયનલિથુનિયનલ્યૂબા કટાંગાલાતવિયનમલાગ" +
+ "સીમાર્શલીઝમાઓરીમેસેડોનિયનમલયાલમમોંગોલિયનમરાઠીમલયમાલ્ટિઝબર્મીઝનાઉરૂઉત્ત" +
+ "ર દેબેલનેપાળીડોન્ગાડચનૉર્વેજીયન નાયનૉર્સ્કનોર્વેજીયન બોકમાલદક્ષિણ દેબે" +
+ "લનાવાજોન્યાન્જાઓક્સિટનઓઝિંબ્વાઓરોમોઉડિયાઓસ્સેટિકપંજાબીપાલીપોલીશપશ્તોપો" +
+ "ર્ટુગીઝક્વેચુઆરોમાન્શરૂન્દીરોમાનિયનરશિયનકિન્યારવાન્ડાસંસ્કૃતસાર્દિનિયન" +
+ "સિંધીઉત્તરીય સામીસાંગોસિંહાલીસ્લોવૅકસ્લોવેનિયનસામોનશોનાસોમાલીઅલ્બેનિયન" +
+ "સર્બિયનસ્વાતીસદર્ન સોથોસંડેનીઝસ્વીડિશસ્વાહિલીતમિલતેલુગુતાજીકથાઈટાઇગ્રિ" +
+ "નિયાતુર્કમેનત્સ્વાનાટોંગાનટર્કીશસોંગાતતારતાહિતિયનઉઇગુરયુક્રેનિયનઉર્દૂઉ" +
+ "ઝ્બેકવેન્દાવિયેતનામીસવોલાપુકવાલૂનવોલોફખોસાયિદ્દિશયોરૂબાઝુઆગચાઇનીઝઝુલુઅ" +
+ "ચીનીએકોલીઅદાંગ્મીઅદિઘેઅફ્રિહિલીઅઘેમઐનુઅક્કાદીયાનઅલેઉતદક્ષિણ અલ્તાઇજુની" +
+ " અંગ્રેજીઅંગીકાઅર્માઇકમેપુચેઅરાપાહોઆલ્જેરિયન અરબીઅરાવકમોરોક્કન અરબીઈજિપ્" +
+ "શિયન અરબીઅસુઅસ્તુરિયનઅવધીબલૂચીબાલિનીસબસાબેજાબેમ્બાબેનાપશ્ચિમી બાલોચીભો" +
+ "જપુરીબિકોલબિનીસિક્સિકાબિષ્નુપ્રિયાવ્રજબ્રાહુઈબોડોબુરિયાતબગિનીસબ્લિનકડ્" +
+ "ડોકરિબઅત્સમસિબુઆનોચિગાચિબ્ચાછગાતાઇચૂકીસેમારીચિનૂક જાર્ગનચોક્તૌશિપેવ્યા" +
+ "નશેરોકીશેયેન્નસેન્ટ્રલ કુર્દિશકોપ્ટિકક્રિમિયન તુર્કીકાશુબિયનદાકોતાદાર્" +
+ "ગવાતૈતાદેલેવેરસ્લેવડોગ્રિબદિન્કાઝર્માડોગ્રીનિમ્ન સોર્બિયનદુઆલામધ્ય ડચજ" +
+ "ોલા-ફોન્યીડ્યુલાઍમ્બુએફિકપ્રાચીન ઇજીપ્શિયનએકાજુકએલામાઇટમિડિલ અંગ્રેજીઇ" +
+ "વોન્ડોફેંગફિલિપિનોફોનમિડિલ ફ્રેંચજૂની ફ્રેંચનોર્ધર્ન ફ્રિશિયનપૂર્વ ફ્ર" +
+ "િશિયનફ્રિયુલિયાનGaગાગાઝગાયોબાયાઝોરોસ્ટ્રિઅન દારીગીઝજિલ્બરટીઝમધ્ય હાઇ જ" +
+ "ર્મનજૂની હાઇ જર્મનગોઅન કોંકણીગોંડીગોરોન્તાલોગોથિકગ્રેબોપ્રાચીન ગ્રીકસ્" +
+ "વિસ જર્મનગુસીગ્વિચ’ઇનહૈડાહાવાઇયનફીજી હિંદીહિલિગેનોનહિટ્ટિતેમોંગઅપ્પર સ" +
+ "ોર્બિયનહૂપાઇબાનઇલોકોઇંગુશલોજ્બાનનગોમ્બામકામેજુદેઓ-પર્શિયનજુદેઓ-અરબીકાર" +
+ "ા-કલ્પકકબાઇલકાચિનજ્જુકમ્બાકાવીકબાર્ડિયનત્યાપમકોન્ડેકાબુવર્ડિઆનુકોરોખાસ" +
+ "ીખોતાનીસકોયરા ચિનિકલેજિનકિમ્બન્દુકોમી-પર્મ્યાકકોંકણીકોસરિયનક્પેલ્લેકરા" +
+ "ચય-બલ્કારકરેલિયનકુરૂખશમ્બાલાબફિયાકુમીકકુતેનાઇલાદીનોલંગીલાહન્ડાલામ્બાલે" +
+ "ઝધીયનલિંગ્વા ફેન્કા નોવાલાકોટામોગોલોઝીઉત્તરીય લુરીલ્યૂબા-લુલુઆલુઇસેનોલ" +
+ "ુન્ડાલ્યુઓલુશાઇલુઈયામાદુરીસમગહીમૈથિલીમકાસરમન્ડિન્ગોમસાઇમોક્ષમંડારમેન્ડ" +
+ "ેમેરુમોરીસ્યેનમિડિલ આઇરિશમાખુવા-મીટ્ટુમેતામિકમેકમિનાંગ્કાબાઉમાન્ચુમણિપ" +
+ "ુરીમોહૌકમોસ્સીપશ્ચિમી મારીમુનડાન્ગબહુવિધ ભાષાક્રિકમિરાંડીમારવાડીએર્ઝયા" +
+ "મઝાન્દેરાનીનેપોલિટાનનમાલો જર્મનનેવાડીનિયાસનિયુઆનક્વાસિઓનોગાઇજૂની નોર્સ" +
+ "એન’કોઉતરી સોથોનુએરપરંપરાગત નેવારીન્યામવેઝીન્યાનકોલન્યોરોન્ઝિમાઓસેજઓટોમ" +
+ "ાન તુર્કિશપંગાસીનાનપહલવીપમ્પાન્ગાપાપિયામેન્ટોપલાઉઆનજૂની ફારસીફોનિશિયનપ" +
+ "ોહપિએનજુની પ્રોવેન્સલકિચેરાજસ્થાનીરાપાનુઇરારોટોંગનરોમ્બોરોમાનીઅરોમેનિય" +
+ "નરવાસોંડવેયાકૂતસામરિટાન અરેમિકસમ્બુરુસાસાકસંતાલીસાંગુસિસિલિયાનસ્કોટ્સસ" +
+ "ર્ઘન કુર્દીશસેનાસેલ્કપકોયરાબોરો સેન્નીજૂની આયરિશતેશીલહિટશેનસિદામોદક્ષિ" +
+ "ણ સામીલ્યુલ સામીઇનારી સામીસ્કોલ્ટ સામીસોનિન્કેસોગ્ડિએનસ્રાનન ટોન્ગોસેર" +
+ "ેરસુકુમાસુસુસુમેરિયનકોમોરિયનકોંગો સ્વાહિલીપરંપરાગત સિરિએકસિરિએકતુલુટિમ" +
+ "્નેતેસોતેરેનોતેતુમટાઇગ્રેતિવતોકેલાઉક્લિન્ગોનલિંગિતતામાશેખન્યાસા ટોન્ગા" +
+ "ટોક પિસિનસિમ્શિયનમુસ્લિમ તાટતુમ્બુકાતુવાલુતસાવાકટુવીનિયનસેન્ટ્રલ ઍટ્લસ" +
+ " તામાઝિગ્ટઉદમુર્તયુગેરિટિકઉમ્બુન્ડૂમૂલવાઇવોટિકવુન્જોવલામોવારેવાશોવાર્લ્પ" +
+ "ીરીકાલ્મિકસોગાયાઓયાપીસકેંટોનીઝઝેપોટેકબ્લિસિમ્બોલ્સઝેનાગાપ્રમાણભૂત મોરો" +
+ "ક્કન તામાઝિગ્ટઝૂનીકોઇ ભાષાશાસ્ત્રીય સામગ્રી નથીઝાઝામોડર્ન સ્ટાન્ડર્ડ અ" +
+ "રબીઓસ્ટ્રિઅન જર્મનસ્વિસ હાય જર્મનઓસ્ટ્રેલિયન અંગ્રેજીકેનેડિયન અંગ્રેજી" +
+ "બ્રિટિશ અંગ્રેજીઅમેરિકન અંગ્રેજીલેટિન અમેરિકન સ્પેનિશયુરોપિયન સ્પેનિશમ" +
+ "ેક્સિકન સ્પેનિશકેનેડિયન ફ્રેંચસ્વિસ ફ્રેંચલો સેક્સોનફ્લેમિશબ્રાઝિલીયન " +
+ "પોર્ટુગીઝયુરોપિયન પોર્ટુગીઝમોલડાવિયનસર્બો-ક્રોએશિયનસરળીકૃત ચાઇનીઝપારંપ" +
+ "રિક ચાઇનીઝ"
+
+var guLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x0024, 0x0039, 0x0054, 0x0060, 0x0078, 0x0090,
+ 0x009c, 0x00ab, 0x00bd, 0x00cf, 0x00ea, 0x00fc, 0x011a, 0x0135,
+ 0x014d, 0x0165, 0x0177, 0x018f, 0x01a4, 0x01bc, 0x01cb, 0x01d7,
+ 0x01e9, 0x0201, 0x020d, 0x0216, 0x0238, 0x0247, 0x0256, 0x0265,
+ 0x0274, 0x0286, 0x02a1, 0x02a7, 0x02b6, 0x02ce, 0x02ef, 0x0304,
+ 0x031f, 0x032e, 0x033d, 0x034c, 0x035b, 0x036d, 0x0382, 0x0397,
+ 0x03c5, 0x03d4, 0x03f9, 0x0411, 0x0426, 0x043b, 0x044d, 0x0459,
+ 0x046b, 0x047d, 0x0496, 0x04b1, 0x04c3, 0x04db, 0x04f6, 0x0508,
+ // Entry 40 - 7F
+ 0x0526, 0x0547, 0x055f, 0x056e, 0x0587, 0x059f, 0x05a8, 0x05c6,
+ 0x05db, 0x05f3, 0x0608, 0x061d, 0x063b, 0x064a, 0x065c, 0x067a,
+ 0x0686, 0x06a4, 0x06b3, 0x06c2, 0x06d4, 0x06e3, 0x06fb, 0x0710,
+ 0x071c, 0x0731, 0x0746, 0x0755, 0x0779, 0x0788, 0x07a6, 0x07bb,
+ 0x07d0, 0x07e8, 0x080d, 0x0822, 0x0834, 0x084c, 0x085b, 0x0879,
+ 0x088b, 0x08a6, 0x08b5, 0x08be, 0x08d3, 0x08e5, 0x08f4, 0x0913,
+ 0x0925, 0x0937, 0x093d, 0x097a, 0x09ab, 0x09cd, 0x09df, 0x09f7,
+ 0x0a0c, 0x0a24, 0x0a33, 0x0a42, 0x0a5a, 0x0a6c, 0x0a78, 0x0a87,
+ // Entry 80 - BF
+ 0x0a96, 0x0ab1, 0x0ac6, 0x0adb, 0x0aed, 0x0b05, 0x0b14, 0x0b3b,
+ 0x0b50, 0x0b6e, 0x0b7d, 0x0b9f, 0x0bae, 0x0bc3, 0x0bd8, 0x0bf6,
+ 0x0c05, 0x0c11, 0x0c23, 0x0c3e, 0x0c53, 0x0c65, 0x0c81, 0x0c96,
+ 0x0cab, 0x0cc3, 0x0ccf, 0x0ce1, 0x0cf0, 0x0cf9, 0x0d1a, 0x0d32,
+ 0x0d4a, 0x0d5c, 0x0d6e, 0x0d7d, 0x0d89, 0x0da1, 0x0db0, 0x0dce,
+ 0x0ddd, 0x0def, 0x0e01, 0x0e1f, 0x0e34, 0x0e43, 0x0e52, 0x0e5e,
+ 0x0e73, 0x0e85, 0x0e91, 0x0ea3, 0x0eaf, 0x0ebe, 0x0ecd, 0x0ee5,
+ 0x0ef4, 0x0ef4, 0x0f0f, 0x0f1b, 0x0f24, 0x0f42, 0x0f42, 0x0f51,
+ // Entry C0 - FF
+ 0x0f51, 0x0f76, 0x0f9b, 0x0fad, 0x0fc2, 0x0fd4, 0x0fd4, 0x0fe9,
+ 0x1011, 0x1020, 0x1045, 0x106d, 0x1076, 0x1076, 0x1091, 0x1091,
+ 0x109d, 0x10ac, 0x10c1, 0x10c1, 0x10ca, 0x10ca, 0x10ca, 0x10ca,
+ 0x10d6, 0x10e8, 0x10e8, 0x10f4, 0x10f4, 0x10f4, 0x111c, 0x1131,
+ 0x1140, 0x114c, 0x114c, 0x114c, 0x1164, 0x1188, 0x1188, 0x1194,
+ 0x11a9, 0x11b5, 0x11b5, 0x11ca, 0x11dc, 0x11dc, 0x11eb, 0x11eb,
+ 0x11fa, 0x1206, 0x1206, 0x1215, 0x122a, 0x1236, 0x1248, 0x125a,
+ 0x126c, 0x1278, 0x129a, 0x12ac, 0x12c7, 0x12d9, 0x12ee, 0x131c,
+ // Entry 100 - 13F
+ 0x1331, 0x1331, 0x135c, 0x1374, 0x1386, 0x139b, 0x13a7, 0x13bc,
+ 0x13cb, 0x13e0, 0x13f2, 0x1401, 0x1413, 0x143b, 0x143b, 0x144a,
+ 0x145d, 0x147c, 0x148e, 0x148e, 0x149d, 0x14a9, 0x14a9, 0x14da,
+ 0x14ec, 0x1501, 0x1529, 0x1529, 0x153e, 0x153e, 0x154a, 0x1562,
+ 0x1562, 0x156b, 0x156b, 0x158d, 0x15ac, 0x15ac, 0x15dd, 0x1605,
+ 0x1626, 0x1628, 0x1637, 0x1637, 0x1643, 0x164f, 0x1680, 0x1689,
+ 0x16a4, 0x16a4, 0x16ca, 0x16f0, 0x170f, 0x171e, 0x173c, 0x174b,
+ 0x175d, 0x1782, 0x17a1, 0x17a1, 0x17a1, 0x17ad, 0x17c5, 0x17d1,
+ // Entry 140 - 17F
+ 0x17d1, 0x17e6, 0x1802, 0x181d, 0x1835, 0x1841, 0x1869, 0x1869,
+ 0x1875, 0x1881, 0x1881, 0x1890, 0x189f, 0x189f, 0x189f, 0x18b4,
+ 0x18c9, 0x18d8, 0x18fd, 0x1919, 0x1919, 0x1935, 0x1944, 0x1953,
+ 0x195f, 0x196e, 0x197a, 0x1995, 0x1995, 0x19a4, 0x19b9, 0x19dd,
+ 0x19dd, 0x19e9, 0x19e9, 0x19f5, 0x1a0a, 0x1a26, 0x1a26, 0x1a26,
+ 0x1a26, 0x1a38, 0x1a53, 0x1a78, 0x1a8a, 0x1a9f, 0x1ab7, 0x1ad9,
+ 0x1ad9, 0x1ad9, 0x1aee, 0x1afd, 0x1b12, 0x1b21, 0x1b21, 0x1b30,
+ 0x1b45, 0x1b57, 0x1b63, 0x1b78, 0x1b8a, 0x1b9f, 0x1bd4, 0x1bd4,
+ // Entry 180 - 1BF
+ 0x1bd4, 0x1be6, 0x1be6, 0x1bf2, 0x1bfe, 0x1c20, 0x1c20, 0x1c42,
+ 0x1c57, 0x1c69, 0x1c78, 0x1c87, 0x1c96, 0x1c96, 0x1c96, 0x1cab,
+ 0x1cab, 0x1cb7, 0x1cc9, 0x1cd8, 0x1cf3, 0x1cff, 0x1cff, 0x1d0e,
+ 0x1d1d, 0x1d2f, 0x1d3b, 0x1d56, 0x1d75, 0x1d9a, 0x1da6, 0x1db8,
+ 0x1ddc, 0x1dee, 0x1e03, 0x1e12, 0x1e24, 0x1e46, 0x1e5e, 0x1e7d,
+ 0x1e8c, 0x1ea1, 0x1eb6, 0x1eb6, 0x1eb6, 0x1ec8, 0x1ee9, 0x1ee9,
+ 0x1f04, 0x1f0d, 0x1f23, 0x1f35, 0x1f44, 0x1f56, 0x1f56, 0x1f6b,
+ 0x1f6b, 0x1f7a, 0x1f96, 0x1f96, 0x1fa5, 0x1fbe, 0x1fca, 0x1ff5,
+ // Entry 1C0 - 1FF
+ 0x2010, 0x2028, 0x203a, 0x204c, 0x2058, 0x2080, 0x209b, 0x20aa,
+ 0x20c5, 0x20e9, 0x20fb, 0x20fb, 0x20fb, 0x20fb, 0x2117, 0x2117,
+ 0x212f, 0x212f, 0x212f, 0x2144, 0x2144, 0x216f, 0x217b, 0x217b,
+ 0x2196, 0x21ab, 0x21c6, 0x21c6, 0x21c6, 0x21d8, 0x21ea, 0x21ea,
+ 0x21ea, 0x21ea, 0x2205, 0x220e, 0x2220, 0x222f, 0x225a, 0x226f,
+ 0x227e, 0x2290, 0x2290, 0x2290, 0x229f, 0x22ba, 0x22cf, 0x22cf,
+ 0x22f4, 0x22f4, 0x2300, 0x2300, 0x2312, 0x2340, 0x235c, 0x235c,
+ 0x2374, 0x237d, 0x237d, 0x238f, 0x238f, 0x238f, 0x23ae, 0x23ca,
+ // Entry 200 - 23F
+ 0x23e6, 0x2408, 0x2420, 0x2438, 0x245d, 0x246c, 0x246c, 0x246c,
+ 0x247e, 0x248a, 0x24a2, 0x24ba, 0x24e2, 0x250d, 0x251f, 0x251f,
+ 0x252b, 0x253d, 0x2549, 0x255b, 0x256a, 0x257f, 0x2588, 0x259d,
+ 0x259d, 0x25b8, 0x25ca, 0x25ca, 0x25df, 0x2604, 0x261d, 0x261d,
+ 0x261d, 0x261d, 0x2635, 0x2654, 0x266c, 0x267e, 0x2690, 0x26a8,
+ 0x26ec, 0x2701, 0x271c, 0x2737, 0x2740, 0x2749, 0x2749, 0x2749,
+ 0x2749, 0x2749, 0x2758, 0x2758, 0x276a, 0x276a, 0x2779, 0x2785,
+ 0x2791, 0x27af, 0x27af, 0x27c4, 0x27c4, 0x27d0, 0x27d9, 0x27e8,
+ // Entry 240 - 27F
+ 0x27e8, 0x27e8, 0x27e8, 0x2800, 0x2815, 0x283c, 0x283c, 0x284e,
+ 0x289e, 0x28aa, 0x28fb, 0x2907, 0x2945, 0x2945, 0x2970, 0x2999,
+ 0x29d3, 0x2a04, 0x2a32, 0x2a60, 0x2a9b, 0x2ac9, 0x2af7, 0x2af7,
+ 0x2b22, 0x2b44, 0x2b60, 0x2b75, 0x2baf, 0x2be3, 0x2bfe, 0x2c29,
+ 0x2c51, 0x2c7c,
+} // Size: 1244 bytes
+
+var heLangStr string = "" + // Size: 7130 bytes
+ "אפאריתאבחזיתאבסטןאפריקאנסאקאןאמהריתאראגוניתערביתאסאמיתאבאריתאיימאריתאזרי" +
+ "תבשקיריתבלארוסיתבולגריתביסלמהבמבארהבנגליתטיבטיתברטוניתבוסניתקטלאניתצ׳צ׳" +
+ "ניתצ׳מורוקורסיקניתקריצ׳כיתסלאבית כנסייתית עתיקהצ׳ובאשולשיתדניתגרמניתדיב" +
+ "הידזונקהאווהיווניתאנגליתאספרנטוספרדיתאסטוניתבסקיתפרסיתפולהפיניתפיג׳יתפא" +
+ "רואזיתצרפתיתפריזיתאיריתגאלית סקוטיתגליציאניתגוארניגוג׳ראטיתמאניתהאוסהעב" +
+ "ריתהינדיהארי מוטוקרואטיתהאיטיתהונגריתארמניתהררו\u200fאינטרלינגואהאינדונ" +
+ "זיתאינטרלינגהאיגבוסיצ׳ואן ייאינופיאקאידואיסלנדיתאיטלקיתאינוקטיטוטיפניתי" +
+ "אווניתגאורגיתקונגוקיקויוקואניאמהקזחיתקאלאליסוטיתקמריתקנאדהקוריאניתקאנור" +
+ "יקשמיריתכורדיתקומיקורניתקירגיזיתלטיניתלוקסמבורגיתגאנדהלימבורגישלינגלהלא" +
+ "יתליטאיתלובה-קטנגהלטביתמלגשיתמרשאלסמאוריתמקדוניתמלאיאלםמונגוליתמרטהימלא" +
+ "יתמלטיתבורמזיתנאוריתצפון נדבלהנפאליתנדונגההולנדיתנורווגית חדשהנורווגית " +
+ "ספרותיתדרום נדבלהנבחוניאנג׳האוקסיטניתאוג׳יבווהאורומואוריהאוסטיתפנג׳אבית" +
+ "פאליפולניתפאשטופורטוגליתקצ׳ואהרומאנשקירונדירומניתרוסיתקינירואנדהסנסקריט" +
+ "סרדיניתסינדהיתלאפית צפוניתסנגוסינהלהסלובקיתסלובניתסמואיתשונהסומליתאלבני" +
+ "תסרביתסיסוואטיססות׳וסונדניתשוודיתסווהיליתטמיליתטלוגוטג׳יקיתתאיתטיגרינאי" +
+ "תטורקמניתטוניסיהטונגןטורקיתטסונגהטטריתטהיטיתאויגהוראוקראיניתאורדואוזבקי" +
+ "תוונדהויאטנמית\u200fוולאפיקוואלוןג׳ולוףקסוסהיידישיורובהז׳ואנגסיניתזולוא" +
+ "כינזיתאקוליאדנמהאדיגיתאפריהיליאהייםאינואכדיתאלאוטאלטאי דרומיתאנגלית עתי" +
+ "קהאנג׳יקהארמיתאראוקניתארפהוארוואקאסואסטוריתאוואדיתבאלוצ׳יבלינזיתבווארית" +
+ "בסאאבאקסגומלבז׳הבמבהבנהבאפוטבוג׳פוריביקולביניקוםסיקסיקהבראג׳בודואקוסהבו" +
+ "ריאטבוגינזיתבולובליןמדומבהקאדוקאריבקאיוגהאטסםקבואנוצ׳יגהצ׳יבצ׳הצ׳אגאטאי" +
+ "צ׳וקסהמאריניב צ׳ינוקצ׳וקטאוצ׳יפוויאןצ׳רוקישאייןכורדית סוראניתקופטיתטטרי" +
+ "ת של קריםקשוביאןדקוטהדרגווהטאיטהדלאוורסלאביתדוגריבדינקהזארמהדוגריסורבית" +
+ " נמוכהדואלההולנדית תיכונההולה-פוניידיולהדזאנגהאמבואפיקמצרית עתיקהאקיוקעי" +
+ "למיתאנגלית תיכונהאוונדופנגפיליפיניתפוןצרפתית תיכונהצרפתית עתיקהפריזית צ" +
+ "פוניתפריזיאן מזרחיתפריוליתגאגגאוזיתגאיוגבאיהגעזגילברטזיתגרמנית בינונית-" +
+ "גבוההגרמנית עתיקה גבוההגונדיגורונטאלוגותיתגרבויוונית עתיקהגרמנית שוויצר" +
+ "יתגוסיגוויצ׳יןהאידההוואיתהיליגאינוןחיתיתמונגסורבית גבוהההופהאיבאןאיביבי" +
+ "ואילוקואינגושיתלויבאןנגומהמצ׳אמהפרסית יהודיתערבית יהודיתקארא-קלפאקקבילה" +
+ "קצ׳יןג׳יוקמבהקאוויקברדיתקנמבוטיאפמקונדהקאבוורדיאנוקורוקאסיקוטאנזיתקוירה" +
+ " צ׳יניקאקוקאלנג׳יןקימבונדוקומי-פרמיאקיתקונקאניקוסראיאןקפלהקראצ׳י-בלקרקאר" +
+ "ליתקורוקשמבאלהבאפיהקולוניאןקומיקקוטנאילדינולאנגילנדהלמבהלזגיתלקוטהמונגו" +
+ "לוזילובה, לולואהלואיסנולונדהלואולושאילויהמדורסהמאפאמאגאהיתמאיטיליתמקסאר" +
+ "מנדינגומאסאיתמאבאמוקשהמנדארמנדהמרומוריסייןאירית תיכונהמקואה-מיטומטאמיקמ" +
+ "קמיננגקבאומנצ׳ומניפוריתמוהוקמוסימונדאנגמספר שפותקריקמירנדזיתמרווארימאיי" +
+ "ןארזיהנפוליטניתנאמהגרמנית תחתיתנוואריניאסניואיאןקוואסיונגיאמבוןנוגאי" +
+ "\u200fנורדית עתיקהנ׳קוסוטו הצפוניתנוארנווארית קלאסיתניאמווזיניאנקולהניור" +
+ "ונזימהאוסג׳הטורקית עותומניתפנגסינאןפלאביפמפאניהפפיאמנטופלוואןפרסית עתיק" +
+ "הפניקיתפונפיאןפרובנסאל עתיקהקיצ׳הראג׳סטןרפאנויררוטונגאןרומבורומאניתארומ" +
+ "ניתרוואסנדאווהסאחהארמית שומרוניתסמבורוססאקסאנטלינגמבאיסאנגוסיציליאניתסק" +
+ "וטיתכורדית דרומיתסנקהסנהסלקופקויראבורו סניאירית עתיקהטצ׳להיטשאןערבית צ׳" +
+ "אדיתסידמוסאמי דרומיתלולה סאמיאינארי סאמיסקולט סאמיסונינקהסוגדיאןסרנאן ט" +
+ "ונגוסררסאהוסוקומהסוסושומריתסווהילי קונגולטזיתסירית קלאסיתסוריתטימנהטסוט" +
+ "רנוטטוםטיגריתטיבטוקלאוקלינגוןטלינגיטטמאשקניאסה טונגהטוק פיסיןטרוקוטסימש" +
+ "יאןטומבוקהטובאלוטסוואקטוביניתטמזייט של מרכז מרוקואודמורטאוגריתיתאומבונד" +
+ "ורוטואיווטיקוונג׳ווואלסרוולאמוווראיוואשווורלפיריקלמיקסוגהיאויאפזיתיאנגב" +
+ "ןימבהקנטונזיתזאפוטקבליסימבולסזנאגהתמזיע׳ת מרוקאית תקניתזוניללא תוכן לשו" +
+ "ניזאזאערבית ספרותיתגרמנית אוסטריתגרמנית שוויצרית (גבוהה)אנגלית אוסטרלית" +
+ "אנגלית קנדיתאנגלית בריטיתאנגלית אמריקאיתספרדית לטינו־אמריקאיתספרדית איר" +
+ "ופאיתספרדית מקסיקניתצרפתית קנדיתצרפתית שוויצריתסקסונית תחתיתפלמיתפורטוג" +
+ "לית ברזילאיתפורטוגלית אירופאיתמולדביתסרבו-קרואטיתסינית מפושטתסינית מסור" +
+ "תית"
+
+var heLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x0018, 0x0022, 0x0032, 0x003a, 0x0046, 0x0056,
+ 0x0060, 0x006c, 0x0078, 0x0088, 0x0092, 0x00a0, 0x00b0, 0x00be,
+ 0x00ca, 0x00d6, 0x00e2, 0x00ee, 0x00fc, 0x0108, 0x0116, 0x0124,
+ 0x0130, 0x0142, 0x0148, 0x0152, 0x017a, 0x0186, 0x0190, 0x0198,
+ 0x01a4, 0x01ae, 0x01ba, 0x01c2, 0x01ce, 0x01da, 0x01e8, 0x01f4,
+ 0x0202, 0x020c, 0x0216, 0x021e, 0x0228, 0x0234, 0x0244, 0x0250,
+ 0x025c, 0x0266, 0x027d, 0x028f, 0x029b, 0x02ad, 0x02b7, 0x02c1,
+ 0x02cb, 0x02d5, 0x02e6, 0x02f4, 0x0300, 0x030e, 0x031a, 0x0322,
+ // Entry 40 - 7F
+ 0x033d, 0x034f, 0x0363, 0x036d, 0x0380, 0x0390, 0x0398, 0x03a8,
+ 0x03b6, 0x03ca, 0x03d4, 0x03e2, 0x03f0, 0x03fa, 0x0406, 0x0416,
+ 0x0420, 0x0436, 0x0440, 0x044a, 0x045a, 0x0466, 0x0474, 0x0480,
+ 0x0488, 0x0494, 0x04a4, 0x04b0, 0x04c6, 0x04d0, 0x04e2, 0x04ee,
+ 0x04f6, 0x0502, 0x0515, 0x051f, 0x052b, 0x0537, 0x0543, 0x0551,
+ 0x055f, 0x056f, 0x0579, 0x0583, 0x058d, 0x059b, 0x05a7, 0x05ba,
+ 0x05c6, 0x05d2, 0x05e0, 0x05f9, 0x0618, 0x062b, 0x0633, 0x0641,
+ 0x0653, 0x0665, 0x0671, 0x067b, 0x0687, 0x0697, 0x069f, 0x06ab,
+ // Entry 80 - BF
+ 0x06b5, 0x06c7, 0x06d3, 0x06df, 0x06ed, 0x06f9, 0x0703, 0x0717,
+ 0x0725, 0x0733, 0x0741, 0x0758, 0x0760, 0x076c, 0x077a, 0x0788,
+ 0x0794, 0x079c, 0x07a8, 0x07b4, 0x07be, 0x07ce, 0x07da, 0x07e8,
+ 0x07f4, 0x0804, 0x0810, 0x081a, 0x0828, 0x0830, 0x0842, 0x0852,
+ 0x0860, 0x086a, 0x0876, 0x0882, 0x088c, 0x0898, 0x08a6, 0x08b8,
+ 0x08c2, 0x08d0, 0x08da, 0x08ea, 0x08fb, 0x0907, 0x0913, 0x091d,
+ 0x0927, 0x0933, 0x093f, 0x0949, 0x0951, 0x095f, 0x0969, 0x0973,
+ 0x097f, 0x097f, 0x098f, 0x0999, 0x09a1, 0x09ab, 0x09ab, 0x09b5,
+ // Entry C0 - FF
+ 0x09b5, 0x09cc, 0x09e3, 0x09f1, 0x09fb, 0x0a0b, 0x0a0b, 0x0a15,
+ 0x0a15, 0x0a21, 0x0a21, 0x0a21, 0x0a27, 0x0a27, 0x0a35, 0x0a35,
+ 0x0a43, 0x0a51, 0x0a5f, 0x0a6d, 0x0a75, 0x0a7d, 0x0a7d, 0x0a85,
+ 0x0a8d, 0x0a95, 0x0a95, 0x0a9b, 0x0aa5, 0x0aa5, 0x0aa5, 0x0ab5,
+ 0x0abf, 0x0ac7, 0x0ac7, 0x0acd, 0x0adb, 0x0adb, 0x0adb, 0x0ae5,
+ 0x0ae5, 0x0aed, 0x0af7, 0x0b03, 0x0b13, 0x0b1b, 0x0b23, 0x0b2f,
+ 0x0b37, 0x0b41, 0x0b4d, 0x0b55, 0x0b61, 0x0b6b, 0x0b79, 0x0b89,
+ 0x0b95, 0x0b9d, 0x0bb0, 0x0bbe, 0x0bd0, 0x0bdc, 0x0be6, 0x0c01,
+ // Entry 100 - 13F
+ 0x0c0d, 0x0c0d, 0x0c25, 0x0c33, 0x0c3d, 0x0c49, 0x0c53, 0x0c5f,
+ 0x0c6b, 0x0c77, 0x0c81, 0x0c8b, 0x0c95, 0x0cac, 0x0cac, 0x0cb6,
+ 0x0cd1, 0x0ce4, 0x0cee, 0x0cfa, 0x0d02, 0x0d0a, 0x0d0a, 0x0d1f,
+ 0x0d29, 0x0d35, 0x0d4e, 0x0d4e, 0x0d5a, 0x0d5a, 0x0d60, 0x0d72,
+ 0x0d72, 0x0d78, 0x0d78, 0x0d91, 0x0da8, 0x0da8, 0x0dc1, 0x0ddc,
+ 0x0dea, 0x0dee, 0x0dfc, 0x0dfc, 0x0e04, 0x0e0e, 0x0e0e, 0x0e14,
+ 0x0e26, 0x0e26, 0x0e4c, 0x0e6e, 0x0e6e, 0x0e78, 0x0e8a, 0x0e94,
+ 0x0e9c, 0x0eb3, 0x0ed0, 0x0ed0, 0x0ed0, 0x0ed8, 0x0ee8, 0x0ef2,
+ // Entry 140 - 17F
+ 0x0ef2, 0x0efe, 0x0efe, 0x0f12, 0x0f1c, 0x0f24, 0x0f3b, 0x0f3b,
+ 0x0f43, 0x0f4d, 0x0f5b, 0x0f67, 0x0f77, 0x0f77, 0x0f77, 0x0f83,
+ 0x0f8d, 0x0f99, 0x0fb0, 0x0fc7, 0x0fc7, 0x0fda, 0x0fe4, 0x0fee,
+ 0x0ff6, 0x0ffe, 0x1008, 0x1014, 0x101e, 0x1026, 0x1032, 0x1048,
+ 0x1048, 0x1050, 0x1050, 0x1058, 0x1068, 0x107d, 0x107d, 0x107d,
+ 0x1085, 0x1095, 0x10a5, 0x10be, 0x10cc, 0x10dc, 0x10e4, 0x10f9,
+ 0x10f9, 0x10f9, 0x1105, 0x110f, 0x111b, 0x1125, 0x1135, 0x113f,
+ 0x114b, 0x1155, 0x115f, 0x1167, 0x116f, 0x1179, 0x1179, 0x1179,
+ // Entry 180 - 1BF
+ 0x1179, 0x1183, 0x1183, 0x118d, 0x1195, 0x1195, 0x1195, 0x11ab,
+ 0x11b9, 0x11c3, 0x11cb, 0x11d5, 0x11dd, 0x11dd, 0x11dd, 0x11e9,
+ 0x11f1, 0x11ff, 0x120f, 0x1219, 0x1227, 0x1233, 0x123b, 0x1245,
+ 0x124f, 0x1257, 0x125d, 0x126d, 0x1284, 0x1297, 0x129d, 0x12a7,
+ 0x12b9, 0x12c3, 0x12d3, 0x12dd, 0x12e5, 0x12e5, 0x12f3, 0x1304,
+ 0x130c, 0x131c, 0x132a, 0x132a, 0x1334, 0x133e, 0x133e, 0x133e,
+ 0x1350, 0x1358, 0x136f, 0x137b, 0x1383, 0x1391, 0x1391, 0x139f,
+ 0x13af, 0x13b9, 0x13d3, 0x13d3, 0x13db, 0x13f2, 0x13fa, 0x1415,
+ // Entry 1C0 - 1FF
+ 0x1425, 0x1435, 0x143f, 0x1449, 0x1455, 0x1472, 0x1482, 0x148c,
+ 0x149a, 0x14aa, 0x14b6, 0x14b6, 0x14b6, 0x14b6, 0x14cb, 0x14cb,
+ 0x14d7, 0x14d7, 0x14d7, 0x14e5, 0x14e5, 0x1500, 0x150a, 0x150a,
+ 0x1518, 0x1524, 0x1536, 0x1536, 0x1536, 0x1540, 0x154e, 0x154e,
+ 0x154e, 0x154e, 0x155c, 0x1564, 0x1572, 0x157a, 0x1595, 0x15a1,
+ 0x15a9, 0x15b5, 0x15b5, 0x15c1, 0x15cb, 0x15df, 0x15eb, 0x15eb,
+ 0x1604, 0x160c, 0x1612, 0x1612, 0x161c, 0x1635, 0x164a, 0x164a,
+ 0x1658, 0x165e, 0x1675, 0x167f, 0x167f, 0x167f, 0x1694, 0x16a5,
+ // Entry 200 - 23F
+ 0x16ba, 0x16cd, 0x16db, 0x16e9, 0x16fe, 0x1704, 0x170c, 0x170c,
+ 0x1718, 0x1720, 0x172c, 0x172c, 0x174f, 0x1766, 0x1770, 0x1770,
+ 0x1770, 0x177a, 0x1780, 0x1788, 0x1790, 0x179c, 0x17a2, 0x17ae,
+ 0x17ae, 0x17bc, 0x17ca, 0x17ca, 0x17d4, 0x17e9, 0x17fa, 0x17fa,
+ 0x1804, 0x1804, 0x1814, 0x1814, 0x1822, 0x182e, 0x183a, 0x1848,
+ 0x186d, 0x187b, 0x188b, 0x189b, 0x18a1, 0x18a7, 0x18a7, 0x18a7,
+ 0x18a7, 0x18a7, 0x18b1, 0x18b1, 0x18bd, 0x18c9, 0x18d5, 0x18df,
+ 0x18e9, 0x18f9, 0x18f9, 0x1903, 0x1903, 0x190b, 0x1911, 0x191d,
+ // Entry 240 - 27F
+ 0x1929, 0x1931, 0x1931, 0x1941, 0x194d, 0x1961, 0x1961, 0x196b,
+ 0x1993, 0x199b, 0x19b5, 0x19bd, 0x19d6, 0x19d6, 0x19f1, 0x1a1b,
+ 0x1a38, 0x1a4f, 0x1a68, 0x1a85, 0x1aae, 0x1acb, 0x1ae8, 0x1ae8,
+ 0x1aff, 0x1b1c, 0x1b35, 0x1b3f, 0x1b62, 0x1b85, 0x1b93, 0x1baa,
+ 0x1bc1, 0x1bda,
+} // Size: 1244 bytes
+
+var hiLangStr string = "" + // Size: 11180 bytes
+ "अफ़ारअब्ख़ाज़ियनअवस्ताईअफ़्रीकीअकनअम्हेरीअर्गोनीअरबीअसमियाअवेरिकआयमाराअज" +
+ "़रबैजानीबशख़िरबेलारूसीबुल्गारियाईबिस्लामाबाम्बाराबंगालीतिब्बतीब्रेटनबो" +
+ "स्नियाईकातालानचेचनकमोरोकोर्सीकनक्रीचेकचर्च साल्विकचूवाशवेल्शडेनिशजर्मन" +
+ "दिवेहीज़ोन्गखाईवेयूनानीअंग्रेज़ीएस्पेरेंतोस्पेनीएस्टोनियाईबास्कफ़ारसीफ" +
+ "ुलाहफ़िनिशफ़ीजीफ़ैरोइज़फ़्रेंचपश्चिमी फ़्रिसियाईआइरिशस्काट्स् गायेलिक्" +
+ "गैलिशियनगुआरानीगुजरातीमैंक्सहौसाहिब्रूहिन्दीहिरी मोटूक्रोएशियाईहैतियाई" +
+ "हंगेरियाईआर्मेनियाईहरैरोईन्टरलिंगुआइंडोनेशियाईईन्टरलिंगुइईग्बोसिचुआन य" +
+ "ीइनुपियाक्इडौआइसलैंडिकइतालवीइनूकीटूत्जापानीजावानीज़जॉर्जियाईकोंगोकिकुय" +
+ "ूक्वान्यामाकज़ाख़कलालीसुतखमेरकन्नड़कोरियाईकनुरीकश्मीरीकुर्दिशकोमीकोर्न" +
+ "िशकिर्गीज़लैटिनलग्ज़मबर्गीगांडालिंबर्गिशलिंगालालाओलिथुआनियाईल्यूबा-कटा" +
+ "ंगालातवियाईमालागासीमार्शलीज़माओरीमैसिडोनियाईमलयालममंगोलीयाईमराठीमलयमाल" +
+ "्टीज़बर्मीज़नाउरूउत्तरी देबेलनेपालीडोन्गाडचनॉर्वेजियाई नॉयनॉर्स्कनॉर्व" +
+ "ेजियाई बोकमालदक्षिण देबेलनावाजोन्यानजाओसीटानओजिब्वाओरोमोउड़ियाओस्सेटिक" +
+ "पंजाबीपालीपोलिशपश्तोपुर्तगालीक्वेचुआरोमान्शरुन्दीरोमानियाईरूसीकिन्यारव" +
+ "ांडासंस्कृतसार्दिनियनसिंधीनॉर्दन सामीसांगोसिंहलीस्लोवाकस्लोवेनियाईसामो" +
+ "नशोणासोमालीअल्बानियाईसर्बियाईस्वातीसेसोथोसुंडानीस्वीडिशस्वाहिलीतमिलतेल" +
+ "ुगूताजिकथाईतिग्रीन्यातुर्कमेनसेत्स्वानाटोंगनतुर्कीसोंगातातारताहितियनवि" +
+ "घुरयूक्रेनियाईउर्दूउज़्बेकवेन्दावियतनामीवोलापुकवाल्लूनवोलोफ़ख़ोसायेहुद" +
+ "ीयोरूबाज़ुआंगचीनीज़ुलूअचाइनीसअकोलीअदान्गमेअदिघेअफ्रिहिलीअग्हेमऐनूअक्का" +
+ "दीअलेउतदक्षिणी अल्ताईपुरानी अंग्रेज़ीअंगिकाऐरेमेकमापूचेअराफाओअरावकअसुअ" +
+ "स्तुरियनअवधीबलूचीबालिनीसबसाबेजाबेम्बाबेनापश्चिमी बलोचीभोजपुरीबिकोलबिनी" +
+ "सिक्सिकाब्रजबोडोबुरियातबगिनीसब्लिनकैड्डोकैरिबअत्समसिबुआनोशिगाचिब्चाछगा" +
+ "ताईचूकीसमारीचिनूक जारगॉनचोक्तौशिपेव्यानशेरोकीशेयेन्नसोरानी कुर्दिशकॉप्" +
+ "टिकक्रीमीन तुर्कीकाशुबियनदाकोतादार्गवातैताडिलैवेयरस्लेवडोग्रिबदिन्काझा" +
+ "र्माडोग्रीनिचला सॉर्बियनदुआलामध्य पुर्तगालीजोला-फोंईड्युलाएम्बुएफिकप्र" +
+ "ाचीन मिस्रीएकाजुकएलामाइटमध्यकालीन अंग्रेज़ीइवोन्डोफैन्गफ़िलिपीनोफॉनमध्" +
+ "यकालीन फ़्रांसीसीपुरातन फ़्रांसीसीउत्तरी फ्रीसीयनपूर्वी फ्रीसीयनफ्रीयु" +
+ "लीयानगागागौज़गायोग्बायागीज़गिल्बरतीसमध्यकालीन हाइ जर्मनपुरातन हाइ जर्म" +
+ "नगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन यूनानीस्विस जर्मनगुसीग्विच’इनहैडाहव" +
+ "ाईहिलिगेननहिताइतह्मॉंगऊपरी सॉर्बियनहूपाइबानइलोकोइंगुशलोज्बाननगोंबामैकह" +
+ "ैमेजुदेओ-पर्शियनजुदेओ-अरेबिककारा-कल्पककबाइलकाचिनज्जुकम्बाकावीकबार्डियन" +
+ "त्यापमैकोंडकाबुवेर्दियानुकोरोखासीखोतानीसकोयरा चीनीकलेंजिनकिम्बन्दुकोमी" +
+ "-पर्मयाककोंकणीकोसरैनक्पेल्लैकराचय-बल्कारकरेलियनकुरूखशम्बालाबफिआकुमीककुते" +
+ "नाईलादीनोलांगिलाह्न्डालाम्बालेज़्घीयनलैकोटामोंगोलोज़ीउत्तरी लूरील्यूबा" +
+ "-लुलुआलुइसेनोलुन्डाल्युओलुशाईल्युईआमादुरीसमगाहीमैथिलीमकासरमन्डिन्गोमसाईम" +
+ "ोक्षमंधारमेन्डेमेरुमोरीस्येनमध्यकाल आइरिशमैखुवा-मीट्टोमेटामिकमैकमिनांग" +
+ "्काबाउमन्चुमणिपूरीमोहौकमोस्सीमुंडैंगविविध भाषाएँक्रीकमिरांडीमारवाड़ीएर" +
+ "्ज़यामाज़न्देरानीनीपोलिटननामानिचला जर्मननेवाड़ीनियासनियुआनक्वासिओनोगाई" +
+ "पुराना नॉर्सएन्कोउत्तरी सोथोनुएरपारम्परिक नेवारीन्यामवेज़ीन्यानकोलन्यो" +
+ "रोन्ज़ीमाओसेजओटोमान तुर्किशपंगासीनानपाह्लावीपाम्पान्गापापियामेन्टोपलोउ" +
+ "आनपुरानी फारसीफोएनिशियनपोह्नपिएनपुरानी प्रोवेन्सलकिशराजस्थानीरापानुईरा" +
+ "रोतोंगनरोम्बोरोमानीअरोमानियनरवासन्डावेयाकूतसामैरिटन अरैमिकसैम्बुरुसासा" +
+ "कसंतालीसैंगुसिसिलियनस्कॉट्सदक्षिणी कार्डिशसेनासेल्कपकोयराबोरो सेन्नीपु" +
+ "रानी आइरिशतैचेल्हितशैनसिदामोदक्षिण सामील्युल सामीइनारी सामीस्कोल्ट साम" +
+ "ीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसुकुमासुसुसुमेरियनकांगो स्वाहिलीक्" +
+ "लासिकल सिरिएकसिरिएकटिम्नेटेसोतेरेनोतेतुमटाइग्रेतिवतोकेलाऊक्लिंगनत्लिंग" +
+ "िततामाशेकन्यासा टोन्गाटोक पिसिनत्सिमीशियनतम्बूकातुवालुटासवाकतुवीनियनमध" +
+ "्य एटलस तमाज़ितउदमुर्तयुगैरिटिकउम्बुन्डुरूटवाईवॉटिकवुंजोवलामोवारैवाशोव" +
+ "ॉल्पेरीकाल्मिकसोगायाओयापीसकैंटोनीज़ज़ेपोटेकब्लिसिम्बॉल्सज़ेनान्गामानक " +
+ "मोरक्कन तामाज़ाइटज़ूनीकोई भाषा सामग्री नहींज़ाज़ाआधुनिक मानक अरबीऑस्ट्" +
+ "रियाई जर्मनस्विस उच्च जर्मनऑस्ट्रेलियाई अंग्रेज़ीकनाडाई अंग्रेज़ीब्रिट" +
+ "िश अंग्रेज़ीअमेरिकी अंग्रेज़ीलैटिन अमेरिकी स्पेनीयूरोपीय स्पेनिशमैक्सि" +
+ "कन स्पेनिशकनाडाई फ़्रेंचस्विस फ़्रेंचनिचली सैक्सनफ़्लेमिशब्राज़ीली पुर" +
+ "्तगालीयूरोपीय पुर्तगालीमोलडावियनसेर्बो-क्रोएशन्सरलीकृत चीनीपारंपरिक ची" +
+ "नी"
+
+var hiLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0030, 0x0045, 0x005d, 0x0066, 0x007b, 0x0090,
+ 0x009c, 0x00ae, 0x00c0, 0x00d2, 0x00f0, 0x0102, 0x011a, 0x013b,
+ 0x0153, 0x016b, 0x017d, 0x0192, 0x01a4, 0x01bf, 0x01d4, 0x01e0,
+ 0x01ef, 0x0207, 0x0213, 0x021c, 0x023e, 0x024d, 0x025c, 0x026b,
+ 0x027a, 0x028c, 0x02a4, 0x02ad, 0x02bf, 0x02da, 0x02f8, 0x030a,
+ 0x0328, 0x0337, 0x0349, 0x0358, 0x036a, 0x0379, 0x0391, 0x03a6,
+ 0x03da, 0x03e9, 0x041a, 0x0432, 0x0447, 0x045c, 0x046e, 0x047a,
+ 0x048c, 0x049e, 0x04b7, 0x04d5, 0x04ea, 0x0505, 0x0523, 0x0532,
+ // Entry 40 - 7F
+ 0x0553, 0x0574, 0x0595, 0x05a4, 0x05bd, 0x05d8, 0x05e1, 0x05fc,
+ 0x060e, 0x0629, 0x063b, 0x0653, 0x066e, 0x067d, 0x068f, 0x06ad,
+ 0x06bf, 0x06d7, 0x06e3, 0x06f5, 0x070a, 0x0719, 0x072e, 0x0743,
+ 0x074f, 0x0764, 0x077c, 0x078b, 0x07ac, 0x07bb, 0x07d6, 0x07eb,
+ 0x07f4, 0x0812, 0x0837, 0x084f, 0x0867, 0x0882, 0x0891, 0x08b2,
+ 0x08c4, 0x08df, 0x08ee, 0x08f7, 0x090f, 0x0924, 0x0933, 0x0955,
+ 0x0967, 0x0979, 0x097f, 0x09bf, 0x09f3, 0x0a15, 0x0a27, 0x0a3c,
+ 0x0a4e, 0x0a63, 0x0a72, 0x0a84, 0x0a9c, 0x0aae, 0x0aba, 0x0ac9,
+ // Entry 80 - BF
+ 0x0ad8, 0x0af3, 0x0b08, 0x0b1d, 0x0b2f, 0x0b4a, 0x0b56, 0x0b7a,
+ 0x0b8f, 0x0bad, 0x0bbc, 0x0bdb, 0x0bea, 0x0bfc, 0x0c11, 0x0c32,
+ 0x0c41, 0x0c4d, 0x0c5f, 0x0c7d, 0x0c95, 0x0ca7, 0x0cb9, 0x0cce,
+ 0x0ce3, 0x0cfb, 0x0d07, 0x0d19, 0x0d28, 0x0d31, 0x0d4f, 0x0d67,
+ 0x0d85, 0x0d94, 0x0da6, 0x0db5, 0x0dc4, 0x0ddc, 0x0deb, 0x0e0c,
+ 0x0e1b, 0x0e30, 0x0e42, 0x0e5a, 0x0e6f, 0x0e84, 0x0e96, 0x0ea5,
+ 0x0eb7, 0x0ec9, 0x0edb, 0x0ee7, 0x0ef6, 0x0f0b, 0x0f1a, 0x0f32,
+ 0x0f41, 0x0f41, 0x0f5c, 0x0f6e, 0x0f77, 0x0f8c, 0x0f8c, 0x0f9b,
+ // Entry C0 - FF
+ 0x0f9b, 0x0fc3, 0x0ff1, 0x1003, 0x1015, 0x1027, 0x1027, 0x1039,
+ 0x1039, 0x1048, 0x1048, 0x1048, 0x1051, 0x1051, 0x106c, 0x106c,
+ 0x1078, 0x1087, 0x109c, 0x109c, 0x10a5, 0x10a5, 0x10a5, 0x10a5,
+ 0x10b1, 0x10c3, 0x10c3, 0x10cf, 0x10cf, 0x10cf, 0x10f4, 0x1109,
+ 0x1118, 0x1124, 0x1124, 0x1124, 0x113c, 0x113c, 0x113c, 0x1148,
+ 0x1148, 0x1154, 0x1154, 0x1169, 0x117b, 0x117b, 0x118a, 0x118a,
+ 0x119c, 0x11ab, 0x11ab, 0x11ba, 0x11cf, 0x11db, 0x11ed, 0x11ff,
+ 0x120e, 0x121a, 0x123c, 0x124e, 0x1269, 0x127b, 0x1290, 0x12b8,
+ // Entry 100 - 13F
+ 0x12cd, 0x12cd, 0x12f5, 0x130d, 0x131f, 0x1334, 0x1340, 0x1358,
+ 0x1367, 0x137c, 0x138e, 0x13a0, 0x13b2, 0x13da, 0x13da, 0x13e9,
+ 0x1411, 0x142a, 0x143c, 0x143c, 0x144b, 0x1457, 0x1457, 0x147f,
+ 0x1491, 0x14a6, 0x14dd, 0x14dd, 0x14f2, 0x14f2, 0x1501, 0x151c,
+ 0x151c, 0x1525, 0x1525, 0x155f, 0x1590, 0x1590, 0x15bb, 0x15e6,
+ 0x1607, 0x160d, 0x161f, 0x161f, 0x162b, 0x163d, 0x163d, 0x1649,
+ 0x1664, 0x1664, 0x1699, 0x16c5, 0x16c5, 0x16d4, 0x16f2, 0x1701,
+ 0x1713, 0x173b, 0x175a, 0x175a, 0x175a, 0x1766, 0x177e, 0x178a,
+ // Entry 140 - 17F
+ 0x178a, 0x1796, 0x1796, 0x17ae, 0x17c0, 0x17d2, 0x17f7, 0x17f7,
+ 0x1803, 0x180f, 0x180f, 0x181e, 0x182d, 0x182d, 0x182d, 0x1842,
+ 0x1854, 0x1869, 0x188e, 0x18b0, 0x18b0, 0x18cc, 0x18db, 0x18ea,
+ 0x18f6, 0x1905, 0x1911, 0x192c, 0x192c, 0x193b, 0x194d, 0x1977,
+ 0x1977, 0x1983, 0x1983, 0x198f, 0x19a4, 0x19c0, 0x19c0, 0x19c0,
+ 0x19c0, 0x19d5, 0x19f0, 0x1a12, 0x1a24, 0x1a36, 0x1a4e, 0x1a70,
+ 0x1a70, 0x1a70, 0x1a85, 0x1a94, 0x1aa9, 0x1ab5, 0x1ab5, 0x1ac4,
+ 0x1ad9, 0x1aeb, 0x1afa, 0x1b12, 0x1b24, 0x1b3f, 0x1b3f, 0x1b3f,
+ // Entry 180 - 1BF
+ 0x1b3f, 0x1b51, 0x1b51, 0x1b60, 0x1b6f, 0x1b8e, 0x1b8e, 0x1bb0,
+ 0x1bc5, 0x1bd7, 0x1be6, 0x1bf5, 0x1c07, 0x1c07, 0x1c07, 0x1c1c,
+ 0x1c1c, 0x1c2b, 0x1c3d, 0x1c4c, 0x1c67, 0x1c73, 0x1c73, 0x1c82,
+ 0x1c91, 0x1ca3, 0x1caf, 0x1cca, 0x1cef, 0x1d14, 0x1d20, 0x1d32,
+ 0x1d56, 0x1d65, 0x1d7a, 0x1d89, 0x1d9b, 0x1d9b, 0x1db0, 0x1dd2,
+ 0x1de1, 0x1df6, 0x1e0e, 0x1e0e, 0x1e0e, 0x1e23, 0x1e47, 0x1e47,
+ 0x1e5f, 0x1e6b, 0x1e8a, 0x1e9f, 0x1eae, 0x1ec0, 0x1ec0, 0x1ed5,
+ 0x1ed5, 0x1ee4, 0x1f06, 0x1f06, 0x1f15, 0x1f34, 0x1f40, 0x1f6e,
+ // Entry 1C0 - 1FF
+ 0x1f8c, 0x1fa4, 0x1fb6, 0x1fcb, 0x1fd7, 0x1fff, 0x201a, 0x2032,
+ 0x2050, 0x2074, 0x2086, 0x2086, 0x2086, 0x2086, 0x20a8, 0x20a8,
+ 0x20c3, 0x20c3, 0x20c3, 0x20de, 0x20de, 0x210f, 0x2118, 0x2118,
+ 0x2133, 0x2148, 0x2163, 0x2163, 0x2163, 0x2175, 0x2187, 0x2187,
+ 0x2187, 0x2187, 0x21a2, 0x21ab, 0x21c0, 0x21cf, 0x21fa, 0x2212,
+ 0x2221, 0x2233, 0x2233, 0x2233, 0x2242, 0x225a, 0x226f, 0x226f,
+ 0x229a, 0x229a, 0x22a6, 0x22a6, 0x22b8, 0x22e6, 0x2308, 0x2308,
+ 0x2323, 0x232c, 0x232c, 0x233e, 0x233e, 0x233e, 0x235d, 0x2379,
+ // Entry 200 - 23F
+ 0x2395, 0x23b7, 0x23cf, 0x23e7, 0x240f, 0x241e, 0x241e, 0x241e,
+ 0x2430, 0x243c, 0x2454, 0x2454, 0x247c, 0x24a7, 0x24b9, 0x24b9,
+ 0x24b9, 0x24cb, 0x24d7, 0x24e9, 0x24f8, 0x250d, 0x2516, 0x252b,
+ 0x252b, 0x2540, 0x2558, 0x2558, 0x256d, 0x2592, 0x25ab, 0x25ab,
+ 0x25ab, 0x25ab, 0x25c9, 0x25c9, 0x25de, 0x25f0, 0x2602, 0x261a,
+ 0x2649, 0x265e, 0x2679, 0x2694, 0x269d, 0x26a6, 0x26a6, 0x26a6,
+ 0x26a6, 0x26a6, 0x26b5, 0x26b5, 0x26c4, 0x26c4, 0x26d3, 0x26df,
+ 0x26eb, 0x2703, 0x2703, 0x2718, 0x2718, 0x2724, 0x272d, 0x273c,
+ // Entry 240 - 27F
+ 0x273c, 0x273c, 0x273c, 0x2757, 0x276f, 0x2796, 0x2796, 0x27b1,
+ 0x27ef, 0x27fe, 0x2837, 0x2849, 0x2875, 0x2875, 0x28a3, 0x28cf,
+ 0x290f, 0x293d, 0x296e, 0x299f, 0x29d7, 0x2a02, 0x2a30, 0x2a30,
+ 0x2a58, 0x2a7d, 0x2a9f, 0x2ab7, 0x2aee, 0x2b1f, 0x2b3a, 0x2b65,
+ 0x2b87, 0x2bac,
+} // Size: 1244 bytes
+
+var hrLangStr string = "" + // Size: 4466 bytes
+ "afarskiabhaskiavestanafrikaansakanskiamharskiaragonskiarapskiasamskiavar" +
+ "skiaymaraazerbajdžanskibaškirskibjeloruskibugarskibislamabambarabengalsk" +
+ "itibetanskibretonskibosanskikatalonskičečenskichamorrokorzičkicreečeškic" +
+ "rkvenoslavenskichuvashvelškidanskinjemačkidivehidzongkhaewegrčkiengleski" +
+ "esperantošpanjolskiestonskibaskijskiperzijskifulahfinskifidžijskiferojsk" +
+ "ifrancuskizapadnofrizijskiirskiškotski-galskigalicijskiguaranigudžaratsk" +
+ "imanskihausahebrejskihindskihiri motuhrvatskikreolskimađarskiarmenskiher" +
+ "erointerlinguaindonezijskiinterliguaigbosichuan yiinupiaqidoislandskital" +
+ "ijanskiinuktitutjapanskijavanskigruzijskikongokikuyukuanyamakazaškikalaa" +
+ "llisutkmerskikannadskikorejskikanurikašmirskikurdskikomikornskikirgiškil" +
+ "atinskiluksemburškigandalimburgishlingalalaoskilitavskiluba-katangalatvi" +
+ "jskimalgaškimaršalskimaorskimakedonskimalajalamskimongolskimarathskimala" +
+ "jskimalteškiburmanskinaurusjeverni ndebelenepalskindonganizozemskinovono" +
+ "rveškiknjiževni norveškijužni ndebelenavajonyanjaokcitanskiojibwaoromski" +
+ "orijskiosetskipandžapskipalipoljskipaštuportugalskikečuaromanšrundirumun" +
+ "jskiruskikinyarwandasanskrtskisardskisindhijužni samisangosinhaleškislov" +
+ "ačkislovenskisamoanskishonasomalskialbanskisrpskisvatisesotskisundanskiš" +
+ "vedskisvahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskicvanatong" +
+ "anskiturskitsongatatarskitahićanskiujgurskiukrajinskiurdskiuzbečkivendav" +
+ "ijetnamskivolapükvalonskiwolofxhosajidišjorubazhuangkineskizuluachinesea" +
+ "coliadangmeadigejskiafrihiliaghemainuakkadianaleutskijužni altaistaroeng" +
+ "leskiangikaaramejskiaraukanskiarapahoarawakasuasturijskiawadhibaluchibal" +
+ "inezijskibasabamunskighomalabejabembabenabafutzapadnobaludžijskibhojpuri" +
+ "bikolbinikomsiksikabrajbodoakooseburiatbuginskibulublinmedumbacaddokarip" +
+ "skicayugaatsamcebuanochigachibchachagataichuukesemarichinook žargonchoct" +
+ "awchipewyančerokičejenskisoranski kurdskikoptskikrimski turskikašupskida" +
+ "kota jezikdargwataitadelavarskislavedogribdinkazarmadogrilužičkosrpskidu" +
+ "alanizozemski, srednjijola-fonyidyuladazagaembuefikstaroegipatskiekajuke" +
+ "lamitskiengleski, srednjiewondofangfilipinofonfrancuski, srednjistarofra" +
+ "ncuskisjevernofrizijskiistočnofrizijskifriulskigagagauskigayogbayastaroe" +
+ "tiopskigilbertskinjemački, srednji visokistaronjemački, visokigondigoron" +
+ "talogothicgrebostarogrčkišvicarski njemačkigusiigwich’inhaidihavajskihil" +
+ "igaynonhetitskihmonggornjolužičkihupaibanibibioilokoingušetskilojbanngom" +
+ "bamachamejudejsko-perzijskijudejsko-arapskikara-kalpakkabilskikachinkaje" +
+ "kambakawikabardiankanembutyapmakondezelenortskikorokhasikhotanesekoyra c" +
+ "hiinikakokalenjinkimbundukomski ili permskikonkaninaurskikpellekarachay-" +
+ "balkarkarelijskikuruškishambalabafiakelnskikumykkutenailadinolangilahnda" +
+ "lambalezgiškilakotamongolozisjevernolurskiluba-lulualuisenolundaluolusha" +
+ "iluyiamadurskimafamagahimaithilimakasarmandingomasajskimabamokshamandarm" +
+ "endemerumauricijski kreolskiirski, srednjimakhuwa-meettometa’micmacminan" +
+ "gkabaumandžurskimanipurskimohawkmossimundangviše jezikacreekmirandskimar" +
+ "warimyenemordvinskimazanderanskinapolitanskinamadonjonjemačkinewariniasn" +
+ "iujskikwasiongiemboonnogajskistaronorveškin’kosjeverni sothonuerklasični" +
+ " newarinyamwezinyankolenyoronzimaosageturski - otomanskipangasinanpahlav" +
+ "ipampangapapiamentopalauanskistaroperzijskifeničkipohnpeianstaroprovansa" +
+ "lskikičerajasthanirapa nuirarotonškiromboromskiaromunskirwasandawejakuts" +
+ "kisamarijanski aramejskisamburusasaksantalingambaysangusicilijskiškotski" +
+ "južnokurdskisenecasenaselkupskikoyraboro sennistaroirskitachelhitshančad" +
+ "ski arapskisidamosjeverni samilule samiinari samiskolt samisoninkesogdie" +
+ "nsranan tongoserersahosukumasususumerskikomorskikongoanski swahiliklasič" +
+ "ni sirskisirijskitemnetesoterenotetumtigriškitivtokelaunskiklingonskitli" +
+ "ngittamasheknyasa tongatok pisintarokotsimshiantumbukatuvaluanskitasawaq" +
+ "tuvinianmarokanski tamazightudmurtskiugaritskiumbundukorijenskivaivoticv" +
+ "unjowalserwalamowaraywashowarlpirikalmyksogayaojapskiyangbenyembakantons" +
+ "kizapotecblissymbolszenagastandardni marokanski tamazightzunibez jezično" +
+ "g sadržajazazakimoderni standardni arapskijužnoazerbajdžanskiaustrijski " +
+ "njemačkigornjonjemački (švicarski)australski engleskikanadski engleskibr" +
+ "itanski engleskiamerički engleskilatinoamerički španjolskieuropski španj" +
+ "olskimeksički španjolskikanadski francuskišvicarski francuskidonjosakson" +
+ "skiflamanskibrazilski portugalskieuropski portugalskimoldavskisrpsko-hrv" +
+ "atskikineski (pojednostavljeni)kineski (tradicionalni)"
+
+var hrLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0007, 0x000e, 0x0015, 0x001e, 0x0025, 0x002d, 0x0036,
+ 0x003d, 0x0044, 0x004b, 0x0051, 0x0060, 0x006a, 0x0074, 0x007c,
+ 0x0083, 0x008a, 0x0093, 0x009d, 0x00a6, 0x00ae, 0x00b8, 0x00c2,
+ 0x00ca, 0x00d3, 0x00d7, 0x00de, 0x00ee, 0x00f5, 0x00fc, 0x0102,
+ 0x010b, 0x0111, 0x0119, 0x011c, 0x0122, 0x012a, 0x0133, 0x013e,
+ 0x0146, 0x014f, 0x0158, 0x015d, 0x0163, 0x016d, 0x0175, 0x017e,
+ 0x018e, 0x0193, 0x01a2, 0x01ac, 0x01b3, 0x01bf, 0x01c5, 0x01ca,
+ 0x01d3, 0x01da, 0x01e3, 0x01eb, 0x01f3, 0x01fc, 0x0204, 0x020a,
+ // Entry 40 - 7F
+ 0x0215, 0x0221, 0x022b, 0x022f, 0x0239, 0x0240, 0x0243, 0x024c,
+ 0x0256, 0x025f, 0x0267, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b,
+ 0x0293, 0x029e, 0x02a5, 0x02ae, 0x02b6, 0x02bc, 0x02c6, 0x02cd,
+ 0x02d1, 0x02d8, 0x02e1, 0x02e9, 0x02f6, 0x02fb, 0x0305, 0x030c,
+ 0x0312, 0x031a, 0x0326, 0x032f, 0x0338, 0x0342, 0x0349, 0x0353,
+ 0x035f, 0x0368, 0x0371, 0x0379, 0x0382, 0x038b, 0x0390, 0x03a0,
+ 0x03a8, 0x03ae, 0x03b8, 0x03c5, 0x03d9, 0x03e7, 0x03ed, 0x03f3,
+ 0x03fd, 0x0403, 0x040a, 0x0411, 0x0418, 0x0423, 0x0427, 0x042e,
+ // Entry 80 - BF
+ 0x0434, 0x043f, 0x0445, 0x044c, 0x0451, 0x045a, 0x045f, 0x046a,
+ 0x0474, 0x047b, 0x0481, 0x048c, 0x0491, 0x049c, 0x04a5, 0x04ae,
+ 0x04b7, 0x04bc, 0x04c4, 0x04cc, 0x04d2, 0x04d7, 0x04df, 0x04e8,
+ 0x04f0, 0x04f7, 0x04ff, 0x0505, 0x050f, 0x0519, 0x0521, 0x052b,
+ 0x0530, 0x0539, 0x053f, 0x0545, 0x054d, 0x0558, 0x0560, 0x056a,
+ 0x0570, 0x0578, 0x057d, 0x0588, 0x0590, 0x0598, 0x059d, 0x05a2,
+ 0x05a8, 0x05ae, 0x05b4, 0x05bb, 0x05bf, 0x05c7, 0x05cc, 0x05d3,
+ 0x05dc, 0x05dc, 0x05e4, 0x05e9, 0x05ed, 0x05f5, 0x05f5, 0x05fd,
+ // Entry C0 - FF
+ 0x05fd, 0x0609, 0x0616, 0x061c, 0x0625, 0x062f, 0x062f, 0x0636,
+ 0x0636, 0x063c, 0x063c, 0x063c, 0x063f, 0x063f, 0x0649, 0x0649,
+ 0x064f, 0x0656, 0x0662, 0x0662, 0x0666, 0x066e, 0x066e, 0x0675,
+ 0x0679, 0x067e, 0x067e, 0x0682, 0x0687, 0x0687, 0x069a, 0x06a2,
+ 0x06a7, 0x06ab, 0x06ab, 0x06ae, 0x06b5, 0x06b5, 0x06b5, 0x06b9,
+ 0x06b9, 0x06bd, 0x06c3, 0x06c9, 0x06d1, 0x06d5, 0x06d9, 0x06e0,
+ 0x06e5, 0x06ed, 0x06f3, 0x06f8, 0x06ff, 0x0704, 0x070b, 0x0713,
+ 0x071b, 0x071f, 0x072e, 0x0735, 0x073e, 0x0745, 0x074e, 0x075e,
+ // Entry 100 - 13F
+ 0x0765, 0x0765, 0x0773, 0x077c, 0x0788, 0x078e, 0x0793, 0x079d,
+ 0x07a2, 0x07a8, 0x07ad, 0x07b2, 0x07b7, 0x07c6, 0x07c6, 0x07cb,
+ 0x07de, 0x07e8, 0x07ed, 0x07f3, 0x07f7, 0x07fb, 0x07fb, 0x0809,
+ 0x080f, 0x0818, 0x0829, 0x0829, 0x082f, 0x082f, 0x0833, 0x083b,
+ 0x083b, 0x083e, 0x083e, 0x0850, 0x085e, 0x085e, 0x086f, 0x0880,
+ 0x0888, 0x088a, 0x0892, 0x0892, 0x0896, 0x089b, 0x089b, 0x08a8,
+ 0x08b2, 0x08b2, 0x08cb, 0x08e1, 0x08e1, 0x08e6, 0x08ef, 0x08f5,
+ 0x08fa, 0x0905, 0x0919, 0x0919, 0x0919, 0x091e, 0x0928, 0x092d,
+ // Entry 140 - 17F
+ 0x092d, 0x0935, 0x0935, 0x093f, 0x0947, 0x094c, 0x095b, 0x095b,
+ 0x095f, 0x0963, 0x0969, 0x096e, 0x0979, 0x0979, 0x0979, 0x097f,
+ 0x0985, 0x098c, 0x099e, 0x09ae, 0x09ae, 0x09b9, 0x09c1, 0x09c7,
+ 0x09cb, 0x09d0, 0x09d4, 0x09dd, 0x09e4, 0x09e8, 0x09ef, 0x09fa,
+ 0x09fa, 0x09fe, 0x09fe, 0x0a03, 0x0a0c, 0x0a18, 0x0a18, 0x0a18,
+ 0x0a1c, 0x0a24, 0x0a2c, 0x0a3e, 0x0a45, 0x0a4c, 0x0a52, 0x0a61,
+ 0x0a61, 0x0a61, 0x0a6b, 0x0a73, 0x0a7b, 0x0a80, 0x0a87, 0x0a8c,
+ 0x0a93, 0x0a99, 0x0a9e, 0x0aa4, 0x0aa9, 0x0ab2, 0x0ab2, 0x0ab2,
+ // Entry 180 - 1BF
+ 0x0ab2, 0x0ab8, 0x0ab8, 0x0abd, 0x0ac1, 0x0acf, 0x0acf, 0x0ad9,
+ 0x0ae0, 0x0ae5, 0x0ae8, 0x0aee, 0x0af3, 0x0af3, 0x0af3, 0x0afb,
+ 0x0aff, 0x0b05, 0x0b0d, 0x0b14, 0x0b1c, 0x0b24, 0x0b28, 0x0b2e,
+ 0x0b34, 0x0b39, 0x0b3d, 0x0b51, 0x0b5f, 0x0b6d, 0x0b74, 0x0b7a,
+ 0x0b85, 0x0b90, 0x0b9a, 0x0ba0, 0x0ba5, 0x0ba5, 0x0bac, 0x0bb8,
+ 0x0bbd, 0x0bc6, 0x0bcd, 0x0bcd, 0x0bd2, 0x0bdc, 0x0be9, 0x0be9,
+ 0x0bf5, 0x0bf9, 0x0c07, 0x0c0d, 0x0c11, 0x0c18, 0x0c18, 0x0c1e,
+ 0x0c27, 0x0c2f, 0x0c3d, 0x0c3d, 0x0c43, 0x0c51, 0x0c55, 0x0c65,
+ // Entry 1C0 - 1FF
+ 0x0c6d, 0x0c75, 0x0c7a, 0x0c7f, 0x0c84, 0x0c96, 0x0ca0, 0x0ca7,
+ 0x0caf, 0x0cb9, 0x0cc3, 0x0cc3, 0x0cc3, 0x0cc3, 0x0cd1, 0x0cd1,
+ 0x0cd9, 0x0cd9, 0x0cd9, 0x0ce2, 0x0ce2, 0x0cf3, 0x0cf8, 0x0cf8,
+ 0x0d02, 0x0d0a, 0x0d15, 0x0d15, 0x0d15, 0x0d1a, 0x0d20, 0x0d20,
+ 0x0d20, 0x0d20, 0x0d29, 0x0d2c, 0x0d33, 0x0d3b, 0x0d51, 0x0d58,
+ 0x0d5d, 0x0d64, 0x0d64, 0x0d6b, 0x0d70, 0x0d7a, 0x0d82, 0x0d82,
+ 0x0d8f, 0x0d95, 0x0d99, 0x0d99, 0x0da2, 0x0db1, 0x0dbb, 0x0dbb,
+ 0x0dc4, 0x0dc8, 0x0dd7, 0x0ddd, 0x0ddd, 0x0ddd, 0x0dea, 0x0df3,
+ // Entry 200 - 23F
+ 0x0dfd, 0x0e07, 0x0e0e, 0x0e15, 0x0e21, 0x0e26, 0x0e2a, 0x0e2a,
+ 0x0e30, 0x0e34, 0x0e3c, 0x0e44, 0x0e56, 0x0e66, 0x0e6e, 0x0e6e,
+ 0x0e6e, 0x0e73, 0x0e77, 0x0e7d, 0x0e82, 0x0e8b, 0x0e8e, 0x0e99,
+ 0x0e99, 0x0ea3, 0x0eaa, 0x0eaa, 0x0eb2, 0x0ebd, 0x0ec6, 0x0ec6,
+ 0x0ecc, 0x0ecc, 0x0ed5, 0x0ed5, 0x0edc, 0x0ee7, 0x0eee, 0x0ef6,
+ 0x0f0a, 0x0f13, 0x0f1c, 0x0f23, 0x0f2d, 0x0f30, 0x0f30, 0x0f30,
+ 0x0f30, 0x0f30, 0x0f35, 0x0f35, 0x0f3a, 0x0f40, 0x0f46, 0x0f4b,
+ 0x0f50, 0x0f58, 0x0f58, 0x0f5e, 0x0f5e, 0x0f62, 0x0f65, 0x0f6b,
+ // Entry 240 - 27F
+ 0x0f72, 0x0f77, 0x0f77, 0x0f80, 0x0f87, 0x0f92, 0x0f92, 0x0f98,
+ 0x0fb7, 0x0fbb, 0x0fd2, 0x0fd8, 0x0ff2, 0x1007, 0x101b, 0x1037,
+ 0x104a, 0x105b, 0x106d, 0x107f, 0x109a, 0x10ae, 0x10c3, 0x10c3,
+ 0x10d5, 0x10e9, 0x10f7, 0x1100, 0x1115, 0x1129, 0x1132, 0x1141,
+ 0x115b, 0x1172,
+} // Size: 1244 bytes
+
+var huLangStr string = "" + // Size: 3938 bytes
+ "afarabházavesztánafrikaansakanamharaaragonézarabasszámiavarajmaraazerbaj" +
+ "dzsánibaskírbeloruszbolgárbislamabambarabengálitibetibretonbosnyákkatalá" +
+ "ncsecsencsamorókorzikaikrícsehegyházi szlávcsuvaswalesidánnémetdivehibut" +
+ "ánievegörögangoleszperantóspanyolésztbaszkperzsafulanifinnfidzsiferöeri" +
+ "franciafrízírskót gaelgalíciaiguaranigudzsaratiman-szigetihauszahéberhin" +
+ "dihiri motuhorváthaitimagyarörményhererointerlingvaindonézinterlingueigb" +
+ "ószecsuán jiinupiakidóizlandiolaszinuktitutjapánjávaigrúzkongokikujukua" +
+ "nyamakazahgrönlandikambodzsaikannadakoreaikanurikásmírikurdkomikornikirg" +
+ "izlatinluxemburgigandalimburgilingalalaoszilitvánluba-katangalettmálgasm" +
+ "arshallimaorimacedónmalajálammongolmarathimalájmáltaiburmainauruiészaki " +
+ "ndebelenepálindongahollandnorvég nynorsknorvég bokmaldéli ndebelenavahón" +
+ "yanjaokszitánojibvaoromóiorijaoszétpandzsábipalilengyelpastuportugálkecs" +
+ "uaréto-románkirundirománoroszkiruandaszanszkritszardíniaiszindhiészaki s" +
+ "zámiszangószingalézszlovákszlovénszamoaisonaszomáliaialbánszerbsziszuati" +
+ "szeszotószundanézsvédszuahélitamiltelugutadzsikthaitigrinjatürkménszecsu" +
+ "ánitongatörökcongatatártahitiujgurukránurduüzbégvendavietnamivolapükval" +
+ "lonvolofhoszajiddisjorubazsuangkínaizuluachinézakoliadangmeadygheafrihil" +
+ "iagemainuakkádaleutdél-altajióangolangikaarámiaraucaniarapahoaravakasuas" +
+ "ztúrawádibalucsibalinézbaszabamungomalabedzsabembabenabafutnyugati belud" +
+ "zsbodzspuribikolbinikomsiksikabrajbodokosziburjátbuginézbulublinmedumbac" +
+ "addokaribkajugaatszamcebuikigacsibcsacsagatájcsukézmaricsinuk zsargoncso" +
+ "któcsipevécserokicsejenszoráni kurdkoptkrími tatárkasubdakotadargvataita" +
+ "delavárszlevidogribdinkazarmadogrialsó szorbdualaközép hollandjola-fonyi" +
+ "diuladazagaembuefikóegyiptomiekadzsukelamitközép angolevondofangfilippín" +
+ "ófonközép franciaófranciaészaki frízkeleti frízfriuligagagauzgajogbajag" +
+ "eezikiribatiközép felső németófelső németgondigorontalogótgrebóógörögsvá" +
+ "jci németgusziigvicsinhaidahawaiihiligajnonhittitehmongfelső szorbhupaib" +
+ "anibibióilokóinguslojbanngombamachamezsidó-perzsazsidó-arabkara-kalpakka" +
+ "bijekacsinjjukambakawikabardikanembutyapmakondekabuverdianukorokaszikota" +
+ "nézkojra-csínikakókalendzsinkimbundukomi-permjákkonkanikosreikpellekarac" +
+ "sáj-balkárkarelaikuruhsambalabafiakölschkumükkutenailadinolangilahndalam" +
+ "balezglakotamongóloziészaki luriluba-lulualuisenolundaluolushailujiamadu" +
+ "raimafamagahimaithilimakaszarmandingómasaimabamoksánmandarmendemerumauri" +
+ "tiusi kreolközép írmakua-metómeta’mikmakminangkabaumandzsumanipurimohawk" +
+ "moszimundangtöbbszörös nyelvekkríkmirandézmarvarimyeneerzjánymázanderáni" +
+ "nápolyinamaalsónémetnevariniasniuingumbangiemboonnogajóskandinávn’kóésza" +
+ "ki szotónuerklasszikus newarinyamvézinyankolenyorónzimaosageottomán törö" +
+ "kpangaszinanpahlavipampanganpapiamentópalauióperzsafőniciaipohnpeióprová" +
+ "nszikicseradzsasztánirapanuirarotongairomboromaarománrwoszandavejakutsza" +
+ "maritánus arámiszamburusasakszantálingambayszanguszicíliaiskótdél-kurdsz" +
+ "enekaszenaszölkupkojra-szennióírtachelhitsancsádi arabszidamódéli számil" +
+ "ule számiinar samikoltta lappszoninkesogdienszranai tongószererszahószuk" +
+ "umaszuszusumércomoreikongói szuahéliklasszikus szírszíriaitemneteszótere" +
+ "nótetumtigrétivtokelauiklingontlingittamaseknyasa tongatok pisintarokócs" +
+ "imsiánitumbukatuvaluszaváktuvaiközép-marokkói tamazigtudmurtugaritiumbun" +
+ "duősivaivotjákvunjowalservalamovaraóvasówarlpirikalmükszogajaójapijangbe" +
+ "njembakantonizapotékBliss jelképrendszerzenagamarokkói tamazightzunininc" +
+ "s nyelvészeti tartalomzazamodern szabányos arabosztrák németsvájci felné" +
+ "metausztrál angolkanadai angolbrit angolamerikai angollatin-amerikai spa" +
+ "nyoleurópai spanyolspanyol (mexikói)kanadai franciasvájci franciaalsószá" +
+ "szflamandbrazíliai portugáleurópai portugálmoldvaiszerbhorvátegyszerűsít" +
+ "ett kínaihagyományos kínai"
+
+var huLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000a, 0x0013, 0x001c, 0x0020, 0x0026, 0x002f,
+ 0x0033, 0x003b, 0x003f, 0x0045, 0x0053, 0x005a, 0x0062, 0x0069,
+ 0x0070, 0x0077, 0x007f, 0x0085, 0x008b, 0x0093, 0x009b, 0x00a2,
+ 0x00aa, 0x00b2, 0x00b6, 0x00ba, 0x00c9, 0x00cf, 0x00d5, 0x00d9,
+ 0x00df, 0x00e5, 0x00ec, 0x00ef, 0x00f6, 0x00fb, 0x0106, 0x010d,
+ 0x0112, 0x0117, 0x011d, 0x0123, 0x0127, 0x012d, 0x0135, 0x013c,
+ 0x0141, 0x0144, 0x014e, 0x0157, 0x015e, 0x0168, 0x0173, 0x0179,
+ 0x017f, 0x0184, 0x018d, 0x0194, 0x0199, 0x019f, 0x01a7, 0x01ad,
+ // Entry 40 - 7F
+ 0x01b8, 0x01c0, 0x01cb, 0x01d0, 0x01dc, 0x01e3, 0x01e7, 0x01ee,
+ 0x01f3, 0x01fc, 0x0202, 0x0208, 0x020d, 0x0212, 0x0218, 0x0220,
+ 0x0225, 0x022f, 0x0239, 0x0240, 0x0246, 0x024c, 0x0255, 0x0259,
+ 0x025d, 0x0262, 0x0268, 0x026d, 0x0277, 0x027c, 0x0284, 0x028b,
+ 0x0291, 0x0298, 0x02a4, 0x02a8, 0x02af, 0x02b8, 0x02bd, 0x02c5,
+ 0x02cf, 0x02d5, 0x02dc, 0x02e2, 0x02e9, 0x02ef, 0x02f5, 0x0304,
+ 0x030b, 0x0311, 0x0318, 0x0327, 0x0335, 0x0342, 0x0349, 0x034f,
+ 0x0358, 0x035e, 0x0365, 0x036a, 0x0370, 0x037a, 0x037e, 0x0385,
+ // Entry 80 - BF
+ 0x038a, 0x0393, 0x0399, 0x03a5, 0x03ac, 0x03b2, 0x03b7, 0x03bf,
+ 0x03c9, 0x03d4, 0x03db, 0x03e9, 0x03f0, 0x03fa, 0x0402, 0x040a,
+ 0x0411, 0x0415, 0x041f, 0x0425, 0x042a, 0x0433, 0x043c, 0x0446,
+ 0x044b, 0x0454, 0x0459, 0x045f, 0x0466, 0x046a, 0x0472, 0x047b,
+ 0x0485, 0x048a, 0x0491, 0x0496, 0x049c, 0x04a2, 0x04a7, 0x04ad,
+ 0x04b1, 0x04b8, 0x04bd, 0x04c5, 0x04cd, 0x04d3, 0x04d8, 0x04dd,
+ 0x04e3, 0x04e9, 0x04ef, 0x04f5, 0x04f9, 0x0501, 0x0506, 0x050d,
+ 0x0513, 0x0513, 0x051b, 0x051f, 0x0523, 0x0529, 0x0529, 0x052e,
+ // Entry C0 - FF
+ 0x052e, 0x0539, 0x0540, 0x0546, 0x054c, 0x0554, 0x0554, 0x055b,
+ 0x055b, 0x0561, 0x0561, 0x0561, 0x0564, 0x0564, 0x056b, 0x056b,
+ 0x0571, 0x0578, 0x0580, 0x0580, 0x0585, 0x058a, 0x058a, 0x0590,
+ 0x0596, 0x059b, 0x059b, 0x059f, 0x05a4, 0x05a4, 0x05b3, 0x05bc,
+ 0x05c1, 0x05c5, 0x05c5, 0x05c8, 0x05cf, 0x05cf, 0x05cf, 0x05d3,
+ 0x05d3, 0x05d7, 0x05dc, 0x05e3, 0x05eb, 0x05ef, 0x05f3, 0x05fa,
+ 0x05ff, 0x0604, 0x060a, 0x0610, 0x0615, 0x0619, 0x0620, 0x0629,
+ 0x0630, 0x0634, 0x0642, 0x0649, 0x0651, 0x0658, 0x065e, 0x066b,
+ // Entry 100 - 13F
+ 0x066f, 0x066f, 0x067c, 0x0681, 0x0687, 0x068d, 0x0692, 0x069a,
+ 0x06a0, 0x06a6, 0x06ab, 0x06b0, 0x06b5, 0x06c0, 0x06c0, 0x06c5,
+ 0x06d4, 0x06de, 0x06e3, 0x06e9, 0x06ed, 0x06f1, 0x06f1, 0x06fc,
+ 0x0704, 0x070a, 0x0717, 0x0717, 0x071d, 0x071d, 0x0721, 0x072c,
+ 0x072c, 0x072f, 0x072f, 0x073e, 0x0747, 0x0747, 0x0754, 0x0760,
+ 0x0766, 0x0768, 0x076e, 0x076e, 0x0772, 0x0777, 0x0777, 0x077b,
+ 0x0784, 0x0784, 0x0799, 0x07a8, 0x07a8, 0x07ad, 0x07b6, 0x07ba,
+ 0x07c0, 0x07c9, 0x07d7, 0x07d7, 0x07d7, 0x07dd, 0x07e4, 0x07e9,
+ // Entry 140 - 17F
+ 0x07e9, 0x07ef, 0x07ef, 0x07f9, 0x0800, 0x0805, 0x0811, 0x0811,
+ 0x0815, 0x0819, 0x0820, 0x0826, 0x082b, 0x082b, 0x082b, 0x0831,
+ 0x0837, 0x083e, 0x084b, 0x0856, 0x0856, 0x0861, 0x0867, 0x086d,
+ 0x0870, 0x0875, 0x0879, 0x0880, 0x0887, 0x088b, 0x0892, 0x089e,
+ 0x089e, 0x08a2, 0x08a2, 0x08a7, 0x08af, 0x08bb, 0x08bb, 0x08bb,
+ 0x08c0, 0x08ca, 0x08d2, 0x08df, 0x08e6, 0x08ec, 0x08f2, 0x0903,
+ 0x0903, 0x0903, 0x090a, 0x090f, 0x0916, 0x091b, 0x0922, 0x0928,
+ 0x092f, 0x0935, 0x093a, 0x0940, 0x0945, 0x0949, 0x0949, 0x0949,
+ // Entry 180 - 1BF
+ 0x0949, 0x094f, 0x094f, 0x0955, 0x0959, 0x0965, 0x0965, 0x096f,
+ 0x0976, 0x097b, 0x097e, 0x0984, 0x0989, 0x0989, 0x0989, 0x0990,
+ 0x0994, 0x099a, 0x09a2, 0x09aa, 0x09b3, 0x09b8, 0x09bc, 0x09c3,
+ 0x09c9, 0x09ce, 0x09d2, 0x09e2, 0x09ed, 0x09f8, 0x09ff, 0x0a05,
+ 0x0a10, 0x0a17, 0x0a1f, 0x0a25, 0x0a2a, 0x0a2a, 0x0a31, 0x0a46,
+ 0x0a4b, 0x0a54, 0x0a5b, 0x0a5b, 0x0a60, 0x0a68, 0x0a75, 0x0a75,
+ 0x0a7d, 0x0a81, 0x0a8c, 0x0a92, 0x0a96, 0x0a9a, 0x0a9a, 0x0aa0,
+ 0x0aa9, 0x0aae, 0x0aba, 0x0aba, 0x0ac1, 0x0acf, 0x0ad3, 0x0ae4,
+ // Entry 1C0 - 1FF
+ 0x0aed, 0x0af5, 0x0afb, 0x0b00, 0x0b05, 0x0b15, 0x0b20, 0x0b27,
+ 0x0b30, 0x0b3b, 0x0b41, 0x0b41, 0x0b41, 0x0b41, 0x0b49, 0x0b49,
+ 0x0b52, 0x0b52, 0x0b52, 0x0b59, 0x0b59, 0x0b65, 0x0b6a, 0x0b6a,
+ 0x0b77, 0x0b7e, 0x0b88, 0x0b88, 0x0b88, 0x0b8d, 0x0b91, 0x0b91,
+ 0x0b91, 0x0b91, 0x0b98, 0x0b9b, 0x0ba3, 0x0ba8, 0x0bbc, 0x0bc4,
+ 0x0bc9, 0x0bd2, 0x0bd2, 0x0bd9, 0x0bdf, 0x0be9, 0x0bee, 0x0bee,
+ 0x0bf7, 0x0bfe, 0x0c03, 0x0c03, 0x0c0b, 0x0c17, 0x0c1c, 0x0c1c,
+ 0x0c25, 0x0c28, 0x0c33, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c47, 0x0c52,
+ // Entry 200 - 23F
+ 0x0c5b, 0x0c66, 0x0c6e, 0x0c75, 0x0c83, 0x0c89, 0x0c8f, 0x0c8f,
+ 0x0c96, 0x0c9c, 0x0ca2, 0x0ca9, 0x0cba, 0x0cca, 0x0cd2, 0x0cd2,
+ 0x0cd2, 0x0cd7, 0x0cdd, 0x0ce4, 0x0ce9, 0x0cef, 0x0cf2, 0x0cfa,
+ 0x0cfa, 0x0d01, 0x0d08, 0x0d08, 0x0d0f, 0x0d1a, 0x0d23, 0x0d23,
+ 0x0d2a, 0x0d2a, 0x0d34, 0x0d34, 0x0d3b, 0x0d41, 0x0d48, 0x0d4d,
+ 0x0d67, 0x0d6d, 0x0d74, 0x0d7b, 0x0d7f, 0x0d82, 0x0d82, 0x0d82,
+ 0x0d82, 0x0d82, 0x0d89, 0x0d89, 0x0d8e, 0x0d94, 0x0d9a, 0x0da0,
+ 0x0da5, 0x0dad, 0x0dad, 0x0db4, 0x0db4, 0x0db9, 0x0dbd, 0x0dc1,
+ // Entry 240 - 27F
+ 0x0dc8, 0x0dcd, 0x0dcd, 0x0dd4, 0x0ddc, 0x0df1, 0x0df1, 0x0df7,
+ 0x0e0a, 0x0e0e, 0x0e29, 0x0e2d, 0x0e43, 0x0e43, 0x0e52, 0x0e63,
+ 0x0e72, 0x0e7f, 0x0e89, 0x0e97, 0x0ead, 0x0ebd, 0x0ecf, 0x0ecf,
+ 0x0ede, 0x0eed, 0x0ef8, 0x0eff, 0x0f13, 0x0f25, 0x0f2c, 0x0f38,
+ 0x0f4f, 0x0f62,
+} // Size: 1244 bytes
+
+var hyLangStr string = "" + // Size: 6740 bytes
+ "աֆարերենաբխազերենաֆրիկաանսաքաներենամհարերենարաբերենասամերենադրբեջաներենբ" +
+ "աշկիրերենբելառուսերենբուլղարերենբամբարաբենգալերենտիբեթերենբրետոներենբոս" +
+ "նիերենկատալաներենչեչեներենկորսիկերենչեխերենչուվաշերենուելսերենդանիերենգ" +
+ "երմաներենջոնգքհաէվեհունարենանգլերենէսպերանտոիսպաներենէստոներենբասկերենպ" +
+ "արսկերենֆիններենֆիջիերենֆարյորերենֆրանսերենարևմտյան ֆրիզերենիռլանդերենգ" +
+ "ալիսերենգուարանիգուջարաթիմեներենհաուսաեբրայերենհինդիխորվաթերենհաիթերենհ" +
+ "ունգարերենհայերենինդոնեզերենիգբոսիխուան յիիսլանդերենիտալերենինուկտիտուտ" +
+ "ճապոներենճավայերենվրացերենկիկույուղազախերենկալաալիսուտքմերերենկաննադակո" +
+ "րեերենքաշմիրերենքրդերենկոռներենղրղզերենլատիներենլյուքսեմբուրգերենգանդալ" +
+ "ինգալալաոսերենլիտվերենլուբա-կատանգալատվիերենմալագասերենմաորիմակեդոներեն" +
+ "մալայալամմոնղոլերենմարաթիմալայերենմալթերենբիրմայերենհյուսիսային նդեբելե" +
+ "նեպալերենհոլանդերեննորվեգերեն նյունորսկնորվեգերեն բուկմոլակվիտաներենօջի" +
+ "բվաօրոմոօրիյաօսերենփենջաբերենպալիլեհերենփուշթուպորտուգալերենքեչուառոման" +
+ "շերենռունդիռումիներենռուսերենքինյարվանդասանսկրիտսինդհիհյուսիսային սամիս" +
+ "անգոսինհալերենսլովակերենսլովեներենշոնասոմալիերենալբաներենսերբերենհյուսի" +
+ "սային սոտոսունդաներենշվեդերենսուահիլիթամիլերենթելուգուտաջիկերենթայերենթ" +
+ "իգրինիաթուրքմեներենցվանատոնգերենթուրքերենցոնգաթաթարերենթաիտերենույղուրե" +
+ "րենուկրաիներենուրդուուզբեկերենվենդավիետնամերենվոլապյուկվալոներենվոլոֆքս" +
+ "ոզաիդիշյորուբաժուանգչինարենզուլուսերենաչեհերենակոլերենադանգմերենադիղերե" +
+ "նթունիսական արաբերենաղեմայներենաքքադերենհին անգլերենարամեերենմապուչիալժ" +
+ "իրական արաբերենեգիպտական արաբերենասուամերիկյան ժեստերի լեզուաստուրերենբ" +
+ "եմբաբենաարևմտյան բելոչիբոդոաքուզերենկաբուաներենչիգաշերոկիսորանի (քրդերե" +
+ "ն)ղպտերենղրիմյան թուրքերենթաիթազարմաստորին սորբիերենդուալաջոլա-ֆոնյիէմբ" +
+ "ուէֆիկերենհին եգիպտերենֆիլիպիներենտորնադելեն ֆիններենֆոներենհին ֆրանսեր" +
+ "ենարևելյան ֆրիզերենֆրիուլիերենգաերենգագաուզերենզրադաշտական դարիհին բարձ" +
+ "ր գերմաներենգոթերենհին հունարենշվեյցարական գերմաներենվայուգուսիհավայիեր" +
+ "ենվերին սորբիերենսյան չինարեննգոմբամաշամեկաբիլերենկամբատիապմակոնդեկուբա" +
+ "վերդիանուկոյրա չինիկալենջինկոմի-պերմյակկոնկանիշամբալաբաֆիալանգիլակոտահյ" +
+ "ուսիսային լուրիերենլուոլույամասաիմերումորիսյենմաքուա-մետտոմետամոհավքարև" +
+ "մտյան մարիերենմունդանգմազանդարաներեննամակվասիոհին նորվեգերեննկոնուերնյա" +
+ "նկոլեօսեյջիօսմաներենպանգասինաներենպահլավերենպանպանգաերենպապիամենտոպալաո" +
+ "ւերենպիկարդերենփենսիլվանական գերմաներենպլատագերմաներենհին պարսկերենպալա" +
+ "նտինների գերմաներենփյունիկերենպիեմոնտերենպոնտիկերենպոնպեերենպրուսերենհի" +
+ "ն պրովենսիալկիչեռաջաստաներենռապանուիռարոտոնգանռոմանիոլերենռիֆերենռոմբոռ" +
+ "ոմաներենռոտումանռուսիներենռովիանաարոմաներենռվասամբուրուսանգուհարավային " +
+ "քրդերենսենակոյրաբորո սեննիհին իռլանդերենտաշելհիթհարավային սամիլուլե սամ" +
+ "իինարի սամիսկոլտ սամիկոնգոյի սուահիլիտուլուտիմնետեսոտերենոթեթումտիգրետի" +
+ "վերենտոկելաուցախուրտլինգիտթալիշերենտամաշեկտոկ փիսինտուրոյոտարոկոցակոներ" +
+ "ենցիմշյանտումբուկաթուվալուերենտասավաքտուվերենկենտրոնատլասյան թամազիխտու" +
+ "դմուրտերենուգարիտերենումբունդուռուտերենվաիվենետիկերենվեպսկերենարևմտյան " +
+ "ֆլամադերենվոդերենվորովունջովալսերենվոլայտավարայերենվաշովարլպիրիվու չինա" +
+ "րենսոգայաոյապսկերենյանգբենյեմբաերենսապոտեկերենզեյլանդերենզենագաստանդարտ" +
+ " մարոկական թամազիղտզունիերենառանց լեզվային բովանդակությանզազաերենժամանակ" +
+ "ակից ստանդարտ արաբերենավստրիական գերմաներենշվեյցարական բարձր գերմաներեն" +
+ "ավստրալիական անգլերենկանադական անգլերենբրիտանական անգլերենամերիկյան անգ" +
+ "լերենլատինաամերիկյան իսպաներենեվրոպական իսպաներենմեքսիկական իսպաներենկա" +
+ "նադական ֆրանսերենշվեյցարական ֆրանսերենֆլամանդերենբրազիլական պորտուգալեր" +
+ "ենեվրոպական պորտուգալերենմոլդովերենպարզեցված չինարենավանդական չինարեն"
+
+var hyLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0022, 0x0022, 0x0034, 0x0044, 0x0056, 0x0056,
+ 0x0066, 0x0076, 0x0076, 0x0076, 0x008e, 0x00a2, 0x00ba, 0x00d0,
+ 0x00d0, 0x00de, 0x00f2, 0x0104, 0x0118, 0x012a, 0x0140, 0x0152,
+ 0x0152, 0x0166, 0x0166, 0x0174, 0x0174, 0x0188, 0x019a, 0x01aa,
+ 0x01be, 0x01be, 0x01cc, 0x01d2, 0x01e2, 0x01f2, 0x0204, 0x0216,
+ 0x0228, 0x0238, 0x024a, 0x024a, 0x025a, 0x026a, 0x027e, 0x0290,
+ 0x02b1, 0x02c5, 0x02c5, 0x02d7, 0x02e7, 0x02f9, 0x0307, 0x0313,
+ 0x0325, 0x032f, 0x032f, 0x0343, 0x0353, 0x0369, 0x0377, 0x0377,
+ // Entry 40 - 7F
+ 0x0377, 0x038d, 0x038d, 0x0395, 0x03a8, 0x03a8, 0x03a8, 0x03bc,
+ 0x03cc, 0x03e2, 0x03f4, 0x0406, 0x0416, 0x0416, 0x0426, 0x0426,
+ 0x0438, 0x044e, 0x045e, 0x046c, 0x047c, 0x047c, 0x0490, 0x049e,
+ 0x049e, 0x04ae, 0x04be, 0x04d0, 0x04f2, 0x04fc, 0x04fc, 0x050a,
+ 0x051a, 0x052a, 0x0543, 0x0555, 0x056b, 0x056b, 0x0575, 0x058b,
+ 0x059d, 0x05b1, 0x05bd, 0x05cf, 0x05df, 0x05f3, 0x05f3, 0x0618,
+ 0x062a, 0x062a, 0x063e, 0x0665, 0x0688, 0x0688, 0x0688, 0x0688,
+ 0x069e, 0x06aa, 0x06b4, 0x06be, 0x06ca, 0x06de, 0x06e6, 0x06f4,
+ // Entry 80 - BF
+ 0x0702, 0x071c, 0x0728, 0x073c, 0x0748, 0x075c, 0x076c, 0x0782,
+ 0x0792, 0x0792, 0x079e, 0x07bd, 0x07c7, 0x07db, 0x07ef, 0x0803,
+ 0x0803, 0x080b, 0x081f, 0x0831, 0x0841, 0x0841, 0x0860, 0x0876,
+ 0x0886, 0x0896, 0x08a8, 0x08b8, 0x08ca, 0x08d8, 0x08e8, 0x0900,
+ 0x090a, 0x091a, 0x092c, 0x0936, 0x0948, 0x0958, 0x096e, 0x0984,
+ 0x0990, 0x09a4, 0x09ae, 0x09c4, 0x09d6, 0x09e8, 0x09f2, 0x09fc,
+ 0x0a04, 0x0a12, 0x0a1e, 0x0a2c, 0x0a42, 0x0a52, 0x0a62, 0x0a76,
+ 0x0a86, 0x0aab, 0x0aab, 0x0ab3, 0x0ac1, 0x0ad3, 0x0ad3, 0x0ad3,
+ // Entry C0 - FF
+ 0x0ad3, 0x0ad3, 0x0aea, 0x0aea, 0x0afc, 0x0b0a, 0x0b0a, 0x0b0a,
+ 0x0b2d, 0x0b2d, 0x0b2d, 0x0b50, 0x0b58, 0x0b84, 0x0b98, 0x0b98,
+ 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98, 0x0b98,
+ 0x0b98, 0x0ba2, 0x0ba2, 0x0baa, 0x0baa, 0x0baa, 0x0bc7, 0x0bc7,
+ 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7,
+ 0x0bc7, 0x0bcf, 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0be1,
+ 0x0be1, 0x0be1, 0x0be1, 0x0be1, 0x0bf7, 0x0bff, 0x0bff, 0x0bff,
+ 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0c0b, 0x0c0b, 0x0c28,
+ // Entry 100 - 13F
+ 0x0c36, 0x0c36, 0x0c57, 0x0c57, 0x0c57, 0x0c57, 0x0c61, 0x0c61,
+ 0x0c61, 0x0c61, 0x0c61, 0x0c6b, 0x0c6b, 0x0c8a, 0x0c8a, 0x0c96,
+ 0x0c96, 0x0ca9, 0x0ca9, 0x0ca9, 0x0cb3, 0x0cc3, 0x0cc3, 0x0cdc,
+ 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cdc, 0x0cf2,
+ 0x0d17, 0x0d25, 0x0d25, 0x0d25, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d5f,
+ 0x0d75, 0x0d81, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0db6, 0x0db6,
+ 0x0db6, 0x0db6, 0x0db6, 0x0ddc, 0x0ddc, 0x0ddc, 0x0ddc, 0x0dea,
+ 0x0dea, 0x0e01, 0x0e2c, 0x0e36, 0x0e36, 0x0e40, 0x0e40, 0x0e40,
+ // Entry 140 - 17F
+ 0x0e40, 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e71, 0x0e88,
+ 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88, 0x0e88,
+ 0x0e94, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0eb2, 0x0eb2,
+ 0x0eb2, 0x0ebc, 0x0ebc, 0x0ebc, 0x0ebc, 0x0ec4, 0x0ed2, 0x0eee,
+ 0x0eee, 0x0eee, 0x0eee, 0x0eee, 0x0eee, 0x0f01, 0x0f01, 0x0f01,
+ 0x0f01, 0x0f11, 0x0f11, 0x0f28, 0x0f36, 0x0f36, 0x0f36, 0x0f36,
+ 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f44, 0x0f4e, 0x0f4e, 0x0f4e,
+ 0x0f4e, 0x0f4e, 0x0f58, 0x0f58, 0x0f58, 0x0f58, 0x0f58, 0x0f58,
+ // Entry 180 - 1BF
+ 0x0f58, 0x0f64, 0x0f64, 0x0f64, 0x0f64, 0x0f8d, 0x0f8d, 0x0f8d,
+ 0x0f8d, 0x0f8d, 0x0f95, 0x0f95, 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f,
+ 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, 0x0fa9, 0x0fa9, 0x0fa9,
+ 0x0fa9, 0x0fa9, 0x0fb3, 0x0fc3, 0x0fc3, 0x0fda, 0x0fe2, 0x0fe2,
+ 0x0fe2, 0x0fe2, 0x0fe2, 0x0fee, 0x0fee, 0x100f, 0x101f, 0x101f,
+ 0x101f, 0x101f, 0x101f, 0x101f, 0x101f, 0x101f, 0x103b, 0x103b,
+ 0x103b, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x104f,
+ 0x104f, 0x104f, 0x106a, 0x106a, 0x1070, 0x1070, 0x107a, 0x107a,
+ // Entry 1C0 - 1FF
+ 0x107a, 0x108a, 0x108a, 0x108a, 0x1096, 0x10a8, 0x10c4, 0x10d8,
+ 0x10f0, 0x1104, 0x1118, 0x112c, 0x115b, 0x1179, 0x1192, 0x11bf,
+ 0x11d5, 0x11eb, 0x11ff, 0x1211, 0x1223, 0x123e, 0x1246, 0x1246,
+ 0x125e, 0x126e, 0x1282, 0x129a, 0x12a8, 0x12b2, 0x12c4, 0x12d4,
+ 0x12e8, 0x12f6, 0x130a, 0x1310, 0x1310, 0x1310, 0x1310, 0x1322,
+ 0x1322, 0x1322, 0x1322, 0x1322, 0x132e, 0x132e, 0x132e, 0x132e,
+ 0x134f, 0x134f, 0x1357, 0x1357, 0x1357, 0x1374, 0x138f, 0x138f,
+ 0x139f, 0x139f, 0x139f, 0x139f, 0x139f, 0x139f, 0x13ba, 0x13cd,
+ // Entry 200 - 23F
+ 0x13e0, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x13f3,
+ 0x13f3, 0x13f3, 0x13f3, 0x13f3, 0x1412, 0x1412, 0x1412, 0x1412,
+ 0x141e, 0x1428, 0x1430, 0x143c, 0x1448, 0x1452, 0x1460, 0x1470,
+ 0x147c, 0x147c, 0x148a, 0x149c, 0x14aa, 0x14aa, 0x14bb, 0x14c9,
+ 0x14d5, 0x14e7, 0x14f5, 0x14f5, 0x1507, 0x151f, 0x152d, 0x153d,
+ 0x156c, 0x1584, 0x159a, 0x15ae, 0x15be, 0x15c4, 0x15da, 0x15ec,
+ 0x1611, 0x1611, 0x161f, 0x1627, 0x1633, 0x1643, 0x1651, 0x1663,
+ 0x166b, 0x167b, 0x1690, 0x1690, 0x1690, 0x1698, 0x169e, 0x16b0,
+ // Entry 240 - 27F
+ 0x16be, 0x16d0, 0x16d0, 0x16d0, 0x16e6, 0x16e6, 0x16fc, 0x1708,
+ 0x173c, 0x174e, 0x1786, 0x1796, 0x17ce, 0x17ce, 0x17f7, 0x182d,
+ 0x1856, 0x1879, 0x189e, 0x18c1, 0x18f2, 0x1917, 0x193e, 0x193e,
+ 0x1963, 0x198c, 0x198c, 0x19a2, 0x19d1, 0x19fe, 0x1a12, 0x1a12,
+ 0x1a33, 0x1a54,
+} // Size: 1244 bytes
+
+var idLangStr string = "" + // Size: 3949 bytes
+ "AfarAbkhazAvestaAfrikaansAkanAmharikAragonArabAssamAvarAymaraAzerbaijanB" +
+ "ashkirBelarusiaBulgariaBislamaBambaraBengaliTibetBretonBosniaKatalanChec" +
+ "henChamorroKorsikaKreeCheskaBahasa Gereja SlavoniaChuvashWelshDanskJerma" +
+ "nDivehiDzongkhaEweYunaniInggrisEsperantoSpanyolEstiBaskPersiaFulaSuomiFi" +
+ "jiFaroPrancisFrisia BaratIrlandiaGaelik SkotlandiaGalisiaGuaraniGujarati" +
+ "ManxHausaIbraniHindiHiri MotuKroasiaHaitiHungariaArmeniaHereroInterlingu" +
+ "aIndonesiaInterlingueIgboSichuan YiInupiakIdoIslandiaItaliaInuktitutJepa" +
+ "ngJawaGeorgiaKongoKikuyuKuanyamaKazakhKalaallisutKhmerKannadaKoreaKanuri" +
+ "KashmirKurdiKomiKornishKirgizLatinLuksemburgGandaLimburgiaLingalaLaoLitu" +
+ "aviLuba-KatangaLatviMalagasiMarshallMaoriMakedoniaMalayalamMongoliaMarat" +
+ "hiMelayuMaltaMyanmarNauruNdebele UtaraNepaliNdongaBelandaNynorsk Norwegi" +
+ "aBokmål NorwegiaNdebele SelatanNavajoNyanjaOsitaniaOjibwaOromoOriyaOsset" +
+ "iaPunjabiPaliPolskiPashtoPortugisQuechuaReto-RomanRundiRumaniaRusiaKinya" +
+ "rwandaSanskertaSardiniaSindhiSami UtaraSangoSinhalaSlovakSlovenSamoaShon" +
+ "aSomaliAlbaniaSerbSwatiSotho SelatanSundaSwediaSwahiliTamilTeluguTajikTh" +
+ "aiTigrinyaTurkmenTswanaTongaTurkiTsongaTatarTahitiUyghurUkrainaUrduUzbek" +
+ "VendaVietnamVolapukWalloonWolofXhosaYiddishYorubaZhuangChinaZuluAcehAcol" +
+ "iAdangmeAdygeiArab TunisiaAfrihiliAghemAinuAkkadiaAlabamaAleutAltai Sela" +
+ "tanInggris KunoAngikaAramAraukanArapahoArab AlgeriaArawakArab MarokoArab" +
+ " MesirAsuBahasa Isyarat AmerikaAsturAwadhiBaluchiBaliBavariaBasaBamunBat" +
+ "ak TobaGhomalaBejaBembaBetawiBenaBafutBalochi BaratBhojpuriBikolBiniBanj" +
+ "arKomSiksikaBrajBodoAkooseBuriatBugisBuluBlinMedumbaKadoKaribCayugaAtsam" +
+ "SebuanoKigaChibchaChagataiChuukeMariJargon ChinookKoktawChipewyanCheroke" +
+ "eCheyenneKurdi SoraniKoptikTatar KrimeaKashubiaDakotaDargwaTaitaDelaware" +
+ "SlaveDogribDinkaZarmaDogriSorbia RendahDualaBelanda TengahJola-FonyiDyul" +
+ "aDazagaEmbuEfikMesir KunoEkajukElamInggris Abad PertengahanEwondoFangFil" +
+ "ipinoFonPrancis Abad PertengahanPrancis KunoArpitanFrisia UtaraFrisia Ti" +
+ "murFriuliGaGagauzGayoGbayaGeezGilbertGilakiJerman Abad PertengahanJerman" +
+ " KunoGondiGorontaloGothikGreboYunani KunoJerman (Swiss)GusiiGwich’inHaid" +
+ "aHawaiiHindi FijiHiligaynonHititHmongSorbia AtasHupaIbanIbibioIlokoIngus" +
+ "hetiaLojbanNgombaMachameIbrani-PersiaIbrani-ArabKara-KalpakKabyleKachinJ" +
+ "juKambaKawiKabardiKanembuTyapMakondeKabuverdianuKenyangKoroKhasiKhotanKo" +
+ "yra ChiiniKakoKalenjinKimbunduKomi-PermyakKonkaniKosreKpelleKarachai Bal" +
+ "karKrioKareliaKurukShambalaBafiaDialek KolschKumykKutenaiLadinoLangiLahn" +
+ "daLambaLezghiaLiguriaLakotaMongoLoziLuri UtaraLuba-LuluaLuisenoLundaLuoM" +
+ "izoLuyiaLazMaduraMafaMagahiMaithiliMakasarMandingoMasaiMabaMokshaMandarM" +
+ "endeMeruMorisienIrlandia Abad PertengahanMakhuwa-Meettometa’MikmakMinang" +
+ "kabauManchuriaManipuriMohawkMossiMundangBeberapa BahasaBahasa MuskogeeMi" +
+ "randaMarwariMentawaiMyeneEryzaMazanderaniNeapolitanNamaJerman RendahNewa" +
+ "riNiasNiueaKwasioNgiemboonNogaiNorse KunoN’KoSotho UtaraNuerNewari Klasi" +
+ "kNyamweziNyankoleNyoroNzimaOsageTurki OsmaniPangasinaPahleviPampangaPapi" +
+ "amentoPalauJerman PennsylvaniaPersia KunoFunisiaPohnpeiaProvencal LamaKʼ" +
+ "icheʼRajasthaniRapanuiRarotongaRomboRomaniRotumaMakedo-RumaniaRwaSandawe" +
+ "SakhaAram SamariaSamburuSasakSantaliNgambaiSanguSisiliaSkotlandiaKurdi S" +
+ "elatanSenecaSenaSeriSelkupKoyraboro SenniIrlandia KunoTachelhitShanArab " +
+ "SuwaSidamoSilesia BawahSelayarSami SelatanLule SamiInari SamiSkolt SamiS" +
+ "oninkeSogdienSranan TongoSererSahoSukumaSusuSumeriaKomoriaKongo SwahiliS" +
+ "uriah KlasikSuriahSilesiaTuluTimneTesoTerenoTetunTigreTivTokelauKlingonT" +
+ "lingitTamashekNyasa TongaTok PisinTuroyoTarokoTsimshiaTat MuslimTumbukaT" +
+ "uvaluTasawaqTuviniaTamazight Maroko TengahUdmurtUgaritUmbunduRootVaiVene" +
+ "siaVotiaVunjoWalserWalamoWaraiWashoWarlpiriKalmukSogaYaoYapoisYangbenYem" +
+ "baKantonZapotekBlissymbolZenagaTamazight Maroko StandarZuniTidak ada kon" +
+ "ten linguistikZazaArab Standar ModernJerman Tinggi (Swiss)Spanyol Amerik" +
+ "a LatinSpanyol (Eropa)Spanyol MeksikoPortugis (Eropa)MoldaviaSerbo-Kroas" +
+ "iaChina (Aksara Sederhana)China (Aksara Tradisional)"
+
+var idLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000a, 0x0010, 0x0019, 0x001d, 0x0024, 0x002a,
+ 0x002e, 0x0033, 0x0037, 0x003d, 0x0047, 0x004e, 0x0057, 0x005f,
+ 0x0066, 0x006d, 0x0074, 0x0079, 0x007f, 0x0085, 0x008c, 0x0093,
+ 0x009b, 0x00a2, 0x00a6, 0x00ac, 0x00c2, 0x00c9, 0x00ce, 0x00d3,
+ 0x00d9, 0x00df, 0x00e7, 0x00ea, 0x00f0, 0x00f7, 0x0100, 0x0107,
+ 0x010b, 0x010f, 0x0115, 0x0119, 0x011e, 0x0122, 0x0126, 0x012d,
+ 0x0139, 0x0141, 0x0152, 0x0159, 0x0160, 0x0168, 0x016c, 0x0171,
+ 0x0177, 0x017c, 0x0185, 0x018c, 0x0191, 0x0199, 0x01a0, 0x01a6,
+ // Entry 40 - 7F
+ 0x01b1, 0x01ba, 0x01c5, 0x01c9, 0x01d3, 0x01da, 0x01dd, 0x01e5,
+ 0x01eb, 0x01f4, 0x01fa, 0x01fe, 0x0205, 0x020a, 0x0210, 0x0218,
+ 0x021e, 0x0229, 0x022e, 0x0235, 0x023a, 0x0240, 0x0247, 0x024c,
+ 0x0250, 0x0257, 0x025d, 0x0262, 0x026c, 0x0271, 0x027a, 0x0281,
+ 0x0284, 0x028b, 0x0297, 0x029c, 0x02a4, 0x02ac, 0x02b1, 0x02ba,
+ 0x02c3, 0x02cb, 0x02d2, 0x02d8, 0x02dd, 0x02e4, 0x02e9, 0x02f6,
+ 0x02fc, 0x0302, 0x0309, 0x0319, 0x0329, 0x0338, 0x033e, 0x0344,
+ 0x034c, 0x0352, 0x0357, 0x035c, 0x0363, 0x036a, 0x036e, 0x0374,
+ // Entry 80 - BF
+ 0x037a, 0x0382, 0x0389, 0x0393, 0x0398, 0x039f, 0x03a4, 0x03af,
+ 0x03b8, 0x03c0, 0x03c6, 0x03d0, 0x03d5, 0x03dc, 0x03e2, 0x03e8,
+ 0x03ed, 0x03f2, 0x03f8, 0x03ff, 0x0403, 0x0408, 0x0415, 0x041a,
+ 0x0420, 0x0427, 0x042c, 0x0432, 0x0437, 0x043b, 0x0443, 0x044a,
+ 0x0450, 0x0455, 0x045a, 0x0460, 0x0465, 0x046b, 0x0471, 0x0478,
+ 0x047c, 0x0481, 0x0486, 0x048d, 0x0494, 0x049b, 0x04a0, 0x04a5,
+ 0x04ac, 0x04b2, 0x04b8, 0x04bd, 0x04c1, 0x04c5, 0x04ca, 0x04d1,
+ 0x04d7, 0x04e3, 0x04eb, 0x04f0, 0x04f4, 0x04fb, 0x0502, 0x0507,
+ // Entry C0 - FF
+ 0x0507, 0x0514, 0x0520, 0x0526, 0x052a, 0x0531, 0x0531, 0x0538,
+ 0x0544, 0x054a, 0x0555, 0x055f, 0x0562, 0x0578, 0x057d, 0x057d,
+ 0x0583, 0x058a, 0x058e, 0x0595, 0x0599, 0x059e, 0x05a8, 0x05af,
+ 0x05b3, 0x05b8, 0x05be, 0x05c2, 0x05c7, 0x05c7, 0x05d4, 0x05dc,
+ 0x05e1, 0x05e5, 0x05eb, 0x05ee, 0x05f5, 0x05f5, 0x05f5, 0x05f9,
+ 0x05f9, 0x05fd, 0x0603, 0x0609, 0x060e, 0x0612, 0x0616, 0x061d,
+ 0x0621, 0x0626, 0x062c, 0x0631, 0x0638, 0x063c, 0x0643, 0x064b,
+ 0x0651, 0x0655, 0x0663, 0x0669, 0x0672, 0x067a, 0x0682, 0x068e,
+ // Entry 100 - 13F
+ 0x0694, 0x0694, 0x06a0, 0x06a8, 0x06ae, 0x06b4, 0x06b9, 0x06c1,
+ 0x06c6, 0x06cc, 0x06d1, 0x06d6, 0x06db, 0x06e8, 0x06e8, 0x06ed,
+ 0x06fb, 0x0705, 0x070a, 0x0710, 0x0714, 0x0718, 0x0718, 0x0722,
+ 0x0728, 0x072c, 0x0744, 0x0744, 0x074a, 0x074a, 0x074e, 0x0756,
+ 0x0756, 0x0759, 0x0759, 0x0771, 0x077d, 0x0784, 0x0790, 0x079c,
+ 0x07a2, 0x07a4, 0x07aa, 0x07aa, 0x07ae, 0x07b3, 0x07b3, 0x07b7,
+ 0x07be, 0x07c4, 0x07db, 0x07e6, 0x07e6, 0x07eb, 0x07f4, 0x07fa,
+ 0x07ff, 0x080a, 0x0818, 0x0818, 0x0818, 0x081d, 0x0827, 0x082c,
+ // Entry 140 - 17F
+ 0x082c, 0x0832, 0x083c, 0x0846, 0x084b, 0x0850, 0x085b, 0x085b,
+ 0x085f, 0x0863, 0x0869, 0x086e, 0x0878, 0x0878, 0x0878, 0x087e,
+ 0x0884, 0x088b, 0x0898, 0x08a3, 0x08a3, 0x08ae, 0x08b4, 0x08ba,
+ 0x08bd, 0x08c2, 0x08c6, 0x08cd, 0x08d4, 0x08d8, 0x08df, 0x08eb,
+ 0x08f2, 0x08f6, 0x08f6, 0x08fb, 0x0901, 0x090d, 0x090d, 0x090d,
+ 0x0911, 0x0919, 0x0921, 0x092d, 0x0934, 0x0939, 0x093f, 0x094e,
+ 0x0952, 0x0952, 0x0959, 0x095e, 0x0966, 0x096b, 0x0978, 0x097d,
+ 0x0984, 0x098a, 0x098f, 0x0995, 0x099a, 0x09a1, 0x09a1, 0x09a8,
+ // Entry 180 - 1BF
+ 0x09a8, 0x09ae, 0x09ae, 0x09b3, 0x09b7, 0x09c1, 0x09c1, 0x09cb,
+ 0x09d2, 0x09d7, 0x09da, 0x09de, 0x09e3, 0x09e3, 0x09e6, 0x09ec,
+ 0x09f0, 0x09f6, 0x09fe, 0x0a05, 0x0a0d, 0x0a12, 0x0a16, 0x0a1c,
+ 0x0a22, 0x0a27, 0x0a2b, 0x0a33, 0x0a4c, 0x0a5a, 0x0a61, 0x0a67,
+ 0x0a72, 0x0a7b, 0x0a83, 0x0a89, 0x0a8e, 0x0a8e, 0x0a95, 0x0aa4,
+ 0x0ab3, 0x0aba, 0x0ac1, 0x0ac9, 0x0ace, 0x0ad3, 0x0ade, 0x0ade,
+ 0x0ae8, 0x0aec, 0x0af9, 0x0aff, 0x0b03, 0x0b08, 0x0b08, 0x0b0e,
+ 0x0b17, 0x0b1c, 0x0b26, 0x0b26, 0x0b2c, 0x0b37, 0x0b3b, 0x0b48,
+ // Entry 1C0 - 1FF
+ 0x0b50, 0x0b58, 0x0b5d, 0x0b62, 0x0b67, 0x0b73, 0x0b7c, 0x0b83,
+ 0x0b8b, 0x0b95, 0x0b9a, 0x0b9a, 0x0bad, 0x0bad, 0x0bb8, 0x0bb8,
+ 0x0bbf, 0x0bbf, 0x0bbf, 0x0bc7, 0x0bc7, 0x0bd5, 0x0bde, 0x0bde,
+ 0x0be8, 0x0bef, 0x0bf8, 0x0bf8, 0x0bf8, 0x0bfd, 0x0c03, 0x0c09,
+ 0x0c09, 0x0c09, 0x0c17, 0x0c1a, 0x0c21, 0x0c26, 0x0c32, 0x0c39,
+ 0x0c3e, 0x0c45, 0x0c45, 0x0c4c, 0x0c51, 0x0c58, 0x0c62, 0x0c62,
+ 0x0c6f, 0x0c75, 0x0c79, 0x0c7d, 0x0c83, 0x0c92, 0x0c9f, 0x0c9f,
+ 0x0ca8, 0x0cac, 0x0cb5, 0x0cbb, 0x0cc8, 0x0ccf, 0x0cdb, 0x0ce4,
+ // Entry 200 - 23F
+ 0x0cee, 0x0cf8, 0x0cff, 0x0d06, 0x0d12, 0x0d17, 0x0d1b, 0x0d1b,
+ 0x0d21, 0x0d25, 0x0d2c, 0x0d33, 0x0d40, 0x0d4d, 0x0d53, 0x0d5a,
+ 0x0d5e, 0x0d63, 0x0d67, 0x0d6d, 0x0d72, 0x0d77, 0x0d7a, 0x0d81,
+ 0x0d81, 0x0d88, 0x0d8f, 0x0d8f, 0x0d97, 0x0da2, 0x0dab, 0x0db1,
+ 0x0db7, 0x0db7, 0x0dbf, 0x0dc9, 0x0dd0, 0x0dd6, 0x0ddd, 0x0de4,
+ 0x0dfb, 0x0e01, 0x0e07, 0x0e0e, 0x0e12, 0x0e15, 0x0e1c, 0x0e1c,
+ 0x0e1c, 0x0e1c, 0x0e21, 0x0e21, 0x0e26, 0x0e2c, 0x0e32, 0x0e37,
+ 0x0e3c, 0x0e44, 0x0e44, 0x0e4a, 0x0e4a, 0x0e4e, 0x0e51, 0x0e57,
+ // Entry 240 - 27F
+ 0x0e5e, 0x0e63, 0x0e63, 0x0e69, 0x0e70, 0x0e7a, 0x0e7a, 0x0e80,
+ 0x0e98, 0x0e9c, 0x0eb7, 0x0ebb, 0x0ece, 0x0ece, 0x0ece, 0x0ee3,
+ 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ef8, 0x0f07, 0x0f16, 0x0f16,
+ 0x0f16, 0x0f16, 0x0f16, 0x0f16, 0x0f16, 0x0f26, 0x0f2e, 0x0f3b,
+ 0x0f53, 0x0f6d,
+} // Size: 1244 bytes
+
+var isLangStr string = "" + // Size: 4301 bytes
+ "abkasískaavestískaafríkanskaakanamharískaaragonskaarabískaassamskaavarís" +
+ "kaaímaraaserskabaskírhvítrússneskabúlgarskabíslamabambarabengalskatíbesk" +
+ "abretónskabosnískakatalónskatsjetsjenskakamorrókorsískakrítékkneskakirkj" +
+ "uslavneskasjúvasvelskadanskaþýskadívehídsongkaewegrískaenskaesperantóspæ" +
+ "nskaeistneskabaskneskapersneskafúlafinnskafídjeyskafæreyskafranskavestur" +
+ "frísneskaírskaskosk gelískagalíanskagvaranígújaratímanskahásahebreskahin" +
+ "díhírímótúkróatískahaítískaungverskaarmenskahereróalþjóðatungaindónesísk" +
+ "ainterlingveígbósísúanjíínúpíakídóíslenskaítalskainúktitútjapanskajavans" +
+ "kageorgískakongóskakíkújúkúanjamakasakskagrænlenskakmerkannadakóreskakan" +
+ "úríkasmírskakúrdískakomískakornbreskakirgiskalatínalúxemborgískagandali" +
+ "mbúrgískalingalalaólitháískalúbakatangalettneskamalagasískamarshallskama" +
+ "orímakedónskamalajalammongólskamaratímalaískamaltneskaburmneskanárúskano" +
+ "rður-ndebelenepalskandongahollenskanýnorskanorskt bókmálsuðurndebelenava" +
+ "hónjanja; sísjeva; sjevaoksítanískaojibvaoromoóríaossetískapúnjabípalípó" +
+ "lskapastúportúgalskakvesjúarómanskarúndírúmenskarússneskakínjarvandasans" +
+ "krítsardínskasindínorðursamískasangósingalískaslóvakískaslóvenskasamóska" +
+ "shonasómalskaalbanskaserbneskasvatísuðursótósúndanskasænskasvahílítamíls" +
+ "katelúgútadsjikskataílenskatígrinjatúrkmenskatsúanatongverskatyrkneskats" +
+ "ongatatarskatahítískaúígúrúkraínskaúrdúúsbekskavendavíetnamskavallónskav" +
+ "olofsósajiddískajórúbasúangkínverskasúlúakkískaacoliadangmeadýgeafríhílí" +
+ "aghemakkadískaaleúskafornenskaarameískaarákanískaarapahóaravakskaasuastú" +
+ "rískaavadíbalúkíbalískabasabejabembabenavesturbalotsíbojpúríbíkolbínísik" +
+ "sikabraíbódóbúríatbúgískablínkaddókaríbamálkebúanókígasíbsjasjagataísjúk" +
+ "ískamarísínúksjoktásípevískaCherokee-málsjeyensorani-kúrdískakoptískakr" +
+ "ímtyrkneskakasúbískadakótadargvataítadelaverslavneskadogríbdinkazarmado" +
+ "grílágsorbneskadúalamiðhollenskajola-fonyidjúlaembuefíkfornegypskaekajúk" +
+ "elamítmiðenskaevondófangfilippseyskafónmiðfranskafornfranskanorðurfrísne" +
+ "skaausturfrísneskafríúlskagagagásgajógbajagísgilberskamiðháþýskafornháþý" +
+ "skagondígorontalógotneskagerbóforngrískasvissnesk þýskagusiigvísínhaídah" +
+ "avaískahíligaínonhettitískahmonghásorbneskahúpaíbanílokóingúslojbanngomb" +
+ "amasjámegyðingapersneskagyðingaarabískakarakalpakkabílekasínkambakavíkab" +
+ "ardískamakondegrænhöfðeyskakasíkotaskakoyra chiinikalenjinkimbúndúkómí-p" +
+ "ermyakkonkaníkosraskakpellekarasaíbalkarkúrúksjambalabafíakúmíkkútenaíla" +
+ "dínskalangílandalambalesgískalakótamongólozinorðurlúríluba-lulualúisenól" +
+ "úndalúólúsaíluyiamadúrskamagahímaítílímakasarmandingómasaímoksamandarme" +
+ "ndemerúmáritískamiðírskamakhuwa-meettometa’mikmakmínangkabámansjúmanípúr" +
+ "ímóhískamossímundangmargvísleg málkríkmarvaríersjamasanderanínapólískan" +
+ "amalágþýska; lágsaxneskanevaríníasníveskakwasionógaínorrænan’konorðursót" +
+ "ónúernjamvesínyankolenjórónsímaósagetyrkneska, ottómanpangasínmálpalaví" +
+ "pampangapapíamentópaláskafornpersneskafönikískaponpeiskafornpróvensalska" +
+ "kicherajastanírapanúírarótongskarombóromanírúasandavejakútsamversk arame" +
+ "ískasambúrúsasaksantalísangúsikileyskaskoskasuðurkúrdískasenaselkúpkoír" +
+ "aboró-sennífornírskatachelhitsjansídamósuðursamískalúlesamískaenaresamís" +
+ "kaskoltesamískasóninkesogdíenserersúkúmasúsúsúmerskaKongó-svahílíklassís" +
+ "k sýrlenskasýrlenskatímnetesóterenótetúmtígretívtókeláskaklingonskatling" +
+ "ittamasjektongverska (nyasa)tokpisintsimsískatúmbúkatúvalúskatasawaqtúví" +
+ "nskatamazightúdmúrtúgarítískaúmbúndúrótvaívotískavunjóvalamóvaraívasjóva" +
+ "rlpirikalmúkskasógajaójapískasapótekblisstáknsenagastaðlað marokkóskt ta" +
+ "mazightsúníekkert tungumálaefnistöðluð nútímaarabískaausturrísk þýskasvi" +
+ "ssnesk háþýskaáströlsk enskakanadísk enskabresk enskabandarísk enskarómö" +
+ "nsk-amerísk spænskaevrópsk spænskamexíkósk spænskakanadísk franskasvissn" +
+ "esk franskalágsaxneskaflæmskabrasílísk portúgalskaevrópsk portúgalskamol" +
+ "dóvskaserbókróatískakínverska (einfölduð)kínverska (hefðbundin)"
+
+var isLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000a, 0x0014, 0x001f, 0x0023, 0x002d, 0x0036,
+ 0x003f, 0x0047, 0x0050, 0x0057, 0x005e, 0x0065, 0x0074, 0x007e,
+ 0x0086, 0x008d, 0x0096, 0x009e, 0x00a8, 0x00b1, 0x00bc, 0x00c8,
+ 0x00d0, 0x00d9, 0x00dd, 0x00e7, 0x00f6, 0x00fd, 0x0103, 0x0109,
+ 0x0110, 0x0118, 0x011f, 0x0122, 0x0129, 0x012e, 0x0138, 0x0140,
+ 0x0149, 0x0152, 0x015b, 0x0160, 0x0167, 0x0171, 0x017a, 0x0181,
+ 0x0191, 0x0197, 0x01a5, 0x01af, 0x01b7, 0x01c1, 0x01c7, 0x01cc,
+ 0x01d4, 0x01da, 0x01e6, 0x01f1, 0x01fb, 0x0204, 0x020c, 0x0213,
+ // Entry 40 - 7F
+ 0x0222, 0x022f, 0x023a, 0x0240, 0x024b, 0x0255, 0x025a, 0x0263,
+ 0x026b, 0x0276, 0x027e, 0x0286, 0x0290, 0x0299, 0x02a2, 0x02ab,
+ 0x02b3, 0x02be, 0x02c2, 0x02c9, 0x02d1, 0x02d9, 0x02e3, 0x02ed,
+ 0x02f5, 0x02ff, 0x0307, 0x030e, 0x031d, 0x0322, 0x032f, 0x0336,
+ 0x033a, 0x0345, 0x0351, 0x035a, 0x0366, 0x0371, 0x0377, 0x0382,
+ 0x038b, 0x0395, 0x039c, 0x03a5, 0x03ae, 0x03b7, 0x03c0, 0x03cf,
+ 0x03d7, 0x03dd, 0x03e6, 0x03ef, 0x03fe, 0x040b, 0x0412, 0x0429,
+ 0x0436, 0x043c, 0x0441, 0x0447, 0x0451, 0x045a, 0x045f, 0x0466,
+ // Entry 80 - BF
+ 0x046c, 0x0478, 0x0480, 0x0489, 0x0490, 0x0499, 0x04a3, 0x04af,
+ 0x04b8, 0x04c2, 0x04c8, 0x04d7, 0x04dd, 0x04e8, 0x04f4, 0x04fe,
+ 0x0506, 0x050b, 0x0514, 0x051c, 0x0525, 0x052b, 0x0537, 0x0541,
+ 0x0548, 0x0551, 0x055a, 0x0562, 0x056c, 0x0576, 0x057f, 0x058a,
+ 0x0591, 0x059b, 0x05a4, 0x05aa, 0x05b2, 0x05bd, 0x05c5, 0x05d0,
+ 0x05d6, 0x05df, 0x05e4, 0x05ef, 0x05ef, 0x05f9, 0x05fe, 0x0603,
+ 0x060c, 0x0614, 0x061a, 0x0624, 0x062a, 0x0632, 0x0637, 0x063e,
+ 0x0644, 0x0644, 0x064f, 0x0654, 0x0654, 0x065e, 0x065e, 0x0666,
+ // Entry C0 - FF
+ 0x0666, 0x0666, 0x066f, 0x066f, 0x0679, 0x0685, 0x0685, 0x068d,
+ 0x068d, 0x0696, 0x0696, 0x0696, 0x0699, 0x0699, 0x06a4, 0x06a4,
+ 0x06aa, 0x06b2, 0x06ba, 0x06ba, 0x06be, 0x06be, 0x06be, 0x06be,
+ 0x06c2, 0x06c7, 0x06c7, 0x06cb, 0x06cb, 0x06cb, 0x06d9, 0x06e2,
+ 0x06e8, 0x06ee, 0x06ee, 0x06ee, 0x06f5, 0x06f5, 0x06f5, 0x06fa,
+ 0x06fa, 0x0700, 0x0700, 0x0708, 0x0711, 0x0711, 0x0716, 0x0716,
+ 0x071c, 0x0727, 0x0727, 0x0727, 0x0730, 0x0735, 0x073c, 0x0745,
+ 0x074f, 0x0754, 0x075b, 0x0762, 0x076d, 0x077a, 0x0780, 0x0791,
+ // Entry 100 - 13F
+ 0x079a, 0x079a, 0x07a8, 0x07b3, 0x07ba, 0x07c0, 0x07c6, 0x07cd,
+ 0x07d6, 0x07dd, 0x07e2, 0x07e7, 0x07ed, 0x07fa, 0x07fa, 0x0800,
+ 0x080d, 0x0817, 0x081d, 0x081d, 0x0821, 0x0826, 0x0826, 0x0831,
+ 0x0838, 0x083f, 0x0848, 0x0848, 0x084f, 0x084f, 0x0853, 0x085f,
+ 0x085f, 0x0863, 0x0863, 0x086e, 0x0879, 0x0879, 0x088a, 0x089a,
+ 0x08a4, 0x08a6, 0x08ac, 0x08ac, 0x08b1, 0x08b6, 0x08b6, 0x08ba,
+ 0x08c3, 0x08c3, 0x08d1, 0x08df, 0x08df, 0x08e5, 0x08ef, 0x08f7,
+ 0x08fd, 0x0908, 0x0919, 0x0919, 0x0919, 0x091e, 0x0926, 0x092c,
+ // Entry 140 - 17F
+ 0x092c, 0x0935, 0x0935, 0x0941, 0x094c, 0x0951, 0x095d, 0x095d,
+ 0x0962, 0x0967, 0x0967, 0x096e, 0x0974, 0x0974, 0x0974, 0x097a,
+ 0x0980, 0x0988, 0x0999, 0x09aa, 0x09aa, 0x09b4, 0x09bb, 0x09c1,
+ 0x09c1, 0x09c6, 0x09cb, 0x09d6, 0x09d6, 0x09d6, 0x09dd, 0x09ed,
+ 0x09ed, 0x09ed, 0x09ed, 0x09f2, 0x09f9, 0x0a05, 0x0a05, 0x0a05,
+ 0x0a05, 0x0a0d, 0x0a17, 0x0a25, 0x0a2d, 0x0a35, 0x0a3b, 0x0a49,
+ 0x0a49, 0x0a49, 0x0a49, 0x0a50, 0x0a58, 0x0a5e, 0x0a5e, 0x0a65,
+ 0x0a6e, 0x0a77, 0x0a7d, 0x0a82, 0x0a87, 0x0a90, 0x0a90, 0x0a90,
+ // Entry 180 - 1BF
+ 0x0a90, 0x0a97, 0x0a97, 0x0a9d, 0x0aa1, 0x0aae, 0x0aae, 0x0ab8,
+ 0x0ac1, 0x0ac7, 0x0acc, 0x0ad3, 0x0ad8, 0x0ad8, 0x0ad8, 0x0ae1,
+ 0x0ae1, 0x0ae8, 0x0af2, 0x0af9, 0x0b02, 0x0b08, 0x0b08, 0x0b0d,
+ 0x0b13, 0x0b18, 0x0b1d, 0x0b28, 0x0b32, 0x0b40, 0x0b47, 0x0b4d,
+ 0x0b59, 0x0b60, 0x0b6b, 0x0b74, 0x0b7a, 0x0b7a, 0x0b81, 0x0b91,
+ 0x0b96, 0x0b96, 0x0b9e, 0x0b9e, 0x0b9e, 0x0ba3, 0x0baf, 0x0baf,
+ 0x0bba, 0x0bbe, 0x0bd7, 0x0bde, 0x0be3, 0x0beb, 0x0beb, 0x0bf1,
+ 0x0bf1, 0x0bf8, 0x0c00, 0x0c00, 0x0c06, 0x0c13, 0x0c18, 0x0c18,
+ // Entry 1C0 - 1FF
+ 0x0c21, 0x0c29, 0x0c30, 0x0c36, 0x0c3c, 0x0c4f, 0x0c5c, 0x0c63,
+ 0x0c6b, 0x0c77, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c7f, 0x0c8c, 0x0c8c,
+ 0x0c97, 0x0c97, 0x0c97, 0x0ca0, 0x0ca0, 0x0cb1, 0x0cb6, 0x0cb6,
+ 0x0cc0, 0x0cc9, 0x0cd5, 0x0cd5, 0x0cd5, 0x0cdb, 0x0ce2, 0x0ce2,
+ 0x0ce2, 0x0ce2, 0x0ce2, 0x0ce6, 0x0ced, 0x0cf3, 0x0d06, 0x0d0f,
+ 0x0d14, 0x0d1c, 0x0d1c, 0x0d1c, 0x0d22, 0x0d2c, 0x0d32, 0x0d32,
+ 0x0d42, 0x0d42, 0x0d46, 0x0d46, 0x0d4d, 0x0d5f, 0x0d69, 0x0d69,
+ 0x0d72, 0x0d76, 0x0d76, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d8c, 0x0d99,
+ // Entry 200 - 23F
+ 0x0da6, 0x0db4, 0x0dbc, 0x0dc4, 0x0dc4, 0x0dc9, 0x0dc9, 0x0dc9,
+ 0x0dd1, 0x0dd7, 0x0de0, 0x0de0, 0x0df0, 0x0e04, 0x0e0e, 0x0e0e,
+ 0x0e0e, 0x0e14, 0x0e19, 0x0e20, 0x0e26, 0x0e2c, 0x0e30, 0x0e3b,
+ 0x0e3b, 0x0e45, 0x0e4c, 0x0e4c, 0x0e54, 0x0e66, 0x0e6e, 0x0e6e,
+ 0x0e6e, 0x0e6e, 0x0e78, 0x0e78, 0x0e81, 0x0e8c, 0x0e93, 0x0e9d,
+ 0x0ea6, 0x0eae, 0x0ebb, 0x0ec5, 0x0ec9, 0x0ecd, 0x0ecd, 0x0ecd,
+ 0x0ecd, 0x0ecd, 0x0ed5, 0x0ed5, 0x0edb, 0x0edb, 0x0ee2, 0x0ee8,
+ 0x0eee, 0x0ef6, 0x0ef6, 0x0f00, 0x0f00, 0x0f05, 0x0f09, 0x0f11,
+ // Entry 240 - 27F
+ 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f19, 0x0f23, 0x0f23, 0x0f29,
+ 0x0f48, 0x0f4e, 0x0f63, 0x0f63, 0x0f7f, 0x0f7f, 0x0f92, 0x0fa6,
+ 0x0fb6, 0x0fc5, 0x0fd0, 0x0fe0, 0x0ffb, 0x100c, 0x101f, 0x101f,
+ 0x1030, 0x1041, 0x104d, 0x1055, 0x106d, 0x1082, 0x108c, 0x109d,
+ 0x10b5, 0x10cd,
+} // Size: 1244 bytes
+
+var itLangStr string = "" + // Size: 4988 bytes
+ "afarabcasoavestanafrikaansakanamaricoaragonesearaboassameseavaroaymaraaz" +
+ "erbaigianobaschirobielorussobulgarobislamabambarabengalesetibetanobreton" +
+ "ebosniacocatalanocecenochamorrocorsocreececoslavo della Chiesaciuvasciog" +
+ "allesedanesetedescodivehidzongkhaewegrecoingleseesperantospagnoloestoneb" +
+ "ascopersianofulahfinlandesefigianofaroesefrancesefrisone occidentaleirla" +
+ "ndesegaelico scozzesegalizianoguaranígujaratimannesehausaebraicohindihir" +
+ "i motucroatohaitianoungheresearmenohererointerlinguaindonesianointerling" +
+ "ueigbosichuan yiinupiakidoislandeseitalianoinuktitutgiapponesegiavaneseg" +
+ "eorgianokongokikuyukuanyamakazakogroenlandesekhmerkannadacoreanokanurika" +
+ "shmiricurdokomicornicochirghisolatinolussemburghesegandalimburgeselingal" +
+ "alaolituanoluba-katangalettonemalgasciomarshallesemaorimacedonemalayalam" +
+ "mongolomarathimalesemaltesebirmanonaurundebele del nordnepalesendongaola" +
+ "ndesenorvegese nynorsknorvegese bokmålndebele del sudnavajonyanjaoccitan" +
+ "oojibwaoromooriyaosseticopunjabipalipolaccopashtoportoghesequechuaromanc" +
+ "iorundirumenorussokinyarwandasanscritosardosindhisami del nordsangosinga" +
+ "leseslovaccoslovenosamoanoshonasomaloalbaneseserboswatisotho del sudsund" +
+ "anesesvedeseswahilitamiltelugutagicothaitigrinoturcomannotswanatonganotu" +
+ "rcotsongatatarotaitianouiguroucrainourduusbecovendavietnamitavolapükvall" +
+ "onewolofxhosayiddishyorubazhuangcinesezuluaccineseacioliadangmeadygheara" +
+ "bo tunisinoafrihiliaghemainuaccadoalabamaaleutoalbanese ghegoaltai merid" +
+ "ionaleinglese anticoangikaaramaicoaraucanoaraonaarapahoarabo algerinoaru" +
+ "acoarabo marocchinoarabo egizianoasulingua dei segni americanaasturianok" +
+ "otavaawadhibelucibalinesebavaresebasabamunbatak tobaghomalabegiawembabet" +
+ "awibenabafutbadagabeluci occidentalebhojpuribicolbinibanjarkomsiksikabis" +
+ "hnupriyabakhtiaribrajbrahuibodoakooseburiatbugibulublinmedumbacaddocarib" +
+ "icocayugaatsamcebuanochigachibchaciagataicochuukesemarigergo chinookchoc" +
+ "tawchipewyancherokeecheyennecurdo soranicoptocapiznonturco crimeokashubi" +
+ "andakotadargwataitadelawareslavedogribdincazarmadogribasso sorabodusun c" +
+ "entraledualaolandese mediojola-fonydiuladazagaembuefikemilianoegiziano a" +
+ "nticoekajukaelamiticoinglese medioyupik centraleewondoestremegnofangfili" +
+ "ppinofinlandese del Tornedalenfonfrancese cajunfrancese mediofrancese an" +
+ "ticofrancoprovenzalefrisone settentrionalefrisone orientalefriulanogagag" +
+ "auzogangayogbayadari zoroastrianogeezgilbertesegilakitedesco medio altot" +
+ "edesco antico altokonkani goanogondigorontalogoticogerbogreco anticotede" +
+ "sco svizzerowayuugusiigwichʼinhaidahakkahawaianohindi figianohiligaynahi" +
+ "ttitehmongalto soraboxianghupaibanibibioilocanoingushingricocreolo giama" +
+ "icanolojbanngamambomachamegiudeo persianogiudeo arabojutlandicokara-kalp" +
+ "akcabilokachinkaikambakawikabardiakanembutyapmakondecapoverdianokorokain" +
+ "gangkhasikhotanesekoyra chiinikhowarkirmanjkikakokalenjinkimbundupermiac" +
+ "okonkanikosraeankpellekarachay-Balkarcarelianokurukhshambalabafiacolonie" +
+ "sekumykkutenaigiudeo-spagnololangilahndalambalezghianLingua Franca Noval" +
+ "igurelivonelakotalombardololo bantuloziluri settentrionaleletgalloluba-l" +
+ "ulualuisenolundaluolushailuyiacinese classicolazmaduresemafamagahimaithi" +
+ "limakasarmandingomasaimabamokshamandarmendemerucreolo maurizianoirlandes" +
+ "e mediomakhuwa-meettometa’micmacmenangkabaumanchumanipurimohawkmossimari" +
+ " occidentalemundangmultilinguacreekmirandesemarwarimentawaimyeneerzyamaz" +
+ "andaranimin nannapoletanonamabasso tedesconewariniasniueaokwasiongiemboo" +
+ "nnogainorse anticonovialn’kosotho del nordnuernewari classiconyamwezinya" +
+ "nkolenyoronzimaosageturco ottomanopangasinanpahlavipampangapapiamentopal" +
+ "aupiccardotedesco della Pennsylvaniapersiano anticotedesco palatinofenic" +
+ "iopiemonteseponticoponapeprussianoprovenzale anticok’iche’quechua dell’a" +
+ "ltopiano del Chimborazorajasthanirapanuirarotongaromagnolotarifitromboro" +
+ "manirotumanorutenorovianaarumenorwasandaweyakutaramaico samaritanosambur" +
+ "usasaksantalisaurashtrangambaysangusicilianoscozzesesassaresecurdo merid" +
+ "ionalesenecasenaseriselkupkoyraboro senniirlandese anticosamogiticotashe" +
+ "lhitshanchadian arabicsidamotedesco slesianoselayarsami del sudsami di L" +
+ "ulesami di Inarisami skoltsoninkesogdianosranan tongoserersahosaterfries" +
+ "ischsukumasususumerocomorianocongo swahilisiriaco classicosiriacoslesian" +
+ "otulutemnetesoterenotetumtigretivtokelautsakhurklingontlingittalisciotam" +
+ "asheknyasa del Tongatok pisinturoyotarokozaconicotsimshiantat islamicotu" +
+ "mbukatuvalutasawaqtuviniantamazightudmurtugariticombundurootvaivenetovep" +
+ "sofiammingo occidentalevotovõrovunjowalserwalamowaraywashowarlpiriwukalm" +
+ "ykmengreliosogayao (bantu)yapeseyangbenyembanheengatucantonesezapotecbli" +
+ "ssymbolzelandesezenagatamazight del Marocco standardzuninessun contenuto" +
+ " linguisticozazaarabo moderno standardtedesco austriacoalto tedesco sviz" +
+ "zeroinglese australianoinglese canadeseinglese britannicoinglese america" +
+ "nospagnolo latinoamericanospagnolo europeospagnolo messicanofrancese can" +
+ "adesefrancese svizzerobasso tedesco olandesefiammingoportoghese brasilia" +
+ "noportoghese europeomoldavoserbo-croatocinese semplificatocinese tradizi" +
+ "onale"
+
+var itLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000a, 0x0011, 0x001a, 0x001e, 0x0025, 0x002e,
+ 0x0033, 0x003b, 0x0040, 0x0046, 0x0052, 0x005a, 0x0064, 0x006b,
+ 0x0072, 0x0079, 0x0082, 0x008a, 0x0091, 0x0099, 0x00a1, 0x00a7,
+ 0x00af, 0x00b4, 0x00b8, 0x00bc, 0x00ce, 0x00d7, 0x00de, 0x00e4,
+ 0x00eb, 0x00f1, 0x00f9, 0x00fc, 0x0101, 0x0108, 0x0111, 0x0119,
+ 0x011f, 0x0124, 0x012c, 0x0131, 0x013b, 0x0142, 0x0149, 0x0151,
+ 0x0164, 0x016d, 0x017d, 0x0186, 0x018e, 0x0196, 0x019d, 0x01a2,
+ 0x01a9, 0x01ae, 0x01b7, 0x01bd, 0x01c5, 0x01ce, 0x01d4, 0x01da,
+ // Entry 40 - 7F
+ 0x01e5, 0x01f0, 0x01fb, 0x01ff, 0x0209, 0x0210, 0x0213, 0x021c,
+ 0x0224, 0x022d, 0x0237, 0x0240, 0x0249, 0x024e, 0x0254, 0x025c,
+ 0x0262, 0x026e, 0x0273, 0x027a, 0x0281, 0x0287, 0x028f, 0x0294,
+ 0x0298, 0x029f, 0x02a8, 0x02ae, 0x02bc, 0x02c1, 0x02cb, 0x02d2,
+ 0x02d5, 0x02dc, 0x02e8, 0x02ef, 0x02f8, 0x0303, 0x0308, 0x0310,
+ 0x0319, 0x0320, 0x0327, 0x032d, 0x0334, 0x033b, 0x0340, 0x0350,
+ 0x0358, 0x035e, 0x0366, 0x0377, 0x0388, 0x0397, 0x039d, 0x03a3,
+ 0x03ab, 0x03b1, 0x03b6, 0x03bb, 0x03c3, 0x03ca, 0x03ce, 0x03d5,
+ // Entry 80 - BF
+ 0x03db, 0x03e5, 0x03ec, 0x03f4, 0x03f9, 0x03ff, 0x0404, 0x040f,
+ 0x0418, 0x041d, 0x0423, 0x0430, 0x0435, 0x043e, 0x0446, 0x044d,
+ 0x0454, 0x0459, 0x045f, 0x0467, 0x046c, 0x0471, 0x047e, 0x0487,
+ 0x048e, 0x0495, 0x049a, 0x04a0, 0x04a6, 0x04aa, 0x04b1, 0x04bb,
+ 0x04c1, 0x04c8, 0x04cd, 0x04d3, 0x04d9, 0x04e1, 0x04e7, 0x04ee,
+ 0x04f2, 0x04f8, 0x04fd, 0x0507, 0x050f, 0x0516, 0x051b, 0x0520,
+ 0x0527, 0x052d, 0x0533, 0x0539, 0x053d, 0x0545, 0x054b, 0x0552,
+ 0x0558, 0x0566, 0x056e, 0x0573, 0x0577, 0x057d, 0x0584, 0x058a,
+ // Entry C0 - FF
+ 0x0598, 0x05a9, 0x05b7, 0x05bd, 0x05c5, 0x05cd, 0x05d3, 0x05da,
+ 0x05e8, 0x05ee, 0x05fe, 0x060c, 0x060f, 0x0629, 0x0632, 0x0638,
+ 0x063e, 0x0644, 0x064c, 0x0654, 0x0658, 0x065d, 0x0667, 0x066e,
+ 0x0673, 0x0678, 0x067e, 0x0682, 0x0687, 0x068d, 0x069f, 0x06a7,
+ 0x06ac, 0x06b0, 0x06b6, 0x06b9, 0x06c0, 0x06cb, 0x06d4, 0x06d8,
+ 0x06de, 0x06e2, 0x06e8, 0x06ee, 0x06f2, 0x06f6, 0x06fa, 0x0701,
+ 0x0706, 0x070e, 0x0714, 0x0719, 0x0720, 0x0725, 0x072c, 0x0736,
+ 0x073e, 0x0742, 0x074f, 0x0756, 0x075f, 0x0767, 0x076f, 0x077b,
+ // Entry 100 - 13F
+ 0x0780, 0x0788, 0x0794, 0x079d, 0x07a3, 0x07a9, 0x07ae, 0x07b6,
+ 0x07bb, 0x07c1, 0x07c6, 0x07cb, 0x07d0, 0x07dc, 0x07ea, 0x07ef,
+ 0x07fd, 0x0806, 0x080b, 0x0811, 0x0815, 0x0819, 0x0821, 0x0830,
+ 0x0837, 0x0840, 0x084d, 0x085b, 0x0861, 0x086b, 0x086f, 0x0878,
+ 0x0891, 0x0894, 0x08a2, 0x08b0, 0x08bf, 0x08cf, 0x08e5, 0x08f6,
+ 0x08fe, 0x0900, 0x0907, 0x090a, 0x090e, 0x0913, 0x0924, 0x0928,
+ 0x0932, 0x0938, 0x094a, 0x095d, 0x096a, 0x096f, 0x0978, 0x097e,
+ 0x0983, 0x098f, 0x099f, 0x09a4, 0x09a4, 0x09a9, 0x09b2, 0x09b7,
+ // Entry 140 - 17F
+ 0x09bc, 0x09c4, 0x09d1, 0x09da, 0x09e1, 0x09e6, 0x09f1, 0x09f6,
+ 0x09fa, 0x09fe, 0x0a04, 0x0a0b, 0x0a11, 0x0a18, 0x0a29, 0x0a2f,
+ 0x0a37, 0x0a3e, 0x0a4d, 0x0a59, 0x0a63, 0x0a6e, 0x0a74, 0x0a7a,
+ 0x0a7d, 0x0a82, 0x0a86, 0x0a8e, 0x0a95, 0x0a99, 0x0aa0, 0x0aac,
+ 0x0aac, 0x0ab0, 0x0ab8, 0x0abd, 0x0ac6, 0x0ad2, 0x0ad8, 0x0ae1,
+ 0x0ae5, 0x0aed, 0x0af5, 0x0afd, 0x0b04, 0x0b0c, 0x0b12, 0x0b21,
+ 0x0b21, 0x0b21, 0x0b2a, 0x0b30, 0x0b38, 0x0b3d, 0x0b46, 0x0b4b,
+ 0x0b52, 0x0b61, 0x0b66, 0x0b6c, 0x0b71, 0x0b79, 0x0b8b, 0x0b91,
+ // Entry 180 - 1BF
+ 0x0b97, 0x0b9d, 0x0ba5, 0x0baf, 0x0bb3, 0x0bc6, 0x0bce, 0x0bd8,
+ 0x0bdf, 0x0be4, 0x0be7, 0x0bed, 0x0bf2, 0x0c01, 0x0c04, 0x0c0c,
+ 0x0c10, 0x0c16, 0x0c1e, 0x0c25, 0x0c2d, 0x0c32, 0x0c36, 0x0c3c,
+ 0x0c42, 0x0c47, 0x0c4b, 0x0c5c, 0x0c6b, 0x0c79, 0x0c80, 0x0c86,
+ 0x0c91, 0x0c97, 0x0c9f, 0x0ca5, 0x0caa, 0x0cba, 0x0cc1, 0x0ccc,
+ 0x0cd1, 0x0cda, 0x0ce1, 0x0ce9, 0x0cee, 0x0cf3, 0x0cfe, 0x0d05,
+ 0x0d0f, 0x0d13, 0x0d20, 0x0d26, 0x0d2a, 0x0d2e, 0x0d30, 0x0d36,
+ 0x0d3f, 0x0d44, 0x0d50, 0x0d56, 0x0d5c, 0x0d6a, 0x0d6e, 0x0d7d,
+ // Entry 1C0 - 1FF
+ 0x0d85, 0x0d8d, 0x0d92, 0x0d97, 0x0d9c, 0x0daa, 0x0db4, 0x0dbb,
+ 0x0dc3, 0x0dcd, 0x0dd2, 0x0dda, 0x0df4, 0x0df4, 0x0e03, 0x0e13,
+ 0x0e1a, 0x0e24, 0x0e2b, 0x0e31, 0x0e3a, 0x0e4b, 0x0e56, 0x0e7d,
+ 0x0e87, 0x0e8e, 0x0e97, 0x0ea0, 0x0ea7, 0x0eac, 0x0eb2, 0x0eba,
+ 0x0ec0, 0x0ec7, 0x0ece, 0x0ed1, 0x0ed8, 0x0edd, 0x0ef0, 0x0ef7,
+ 0x0efc, 0x0f03, 0x0f0d, 0x0f14, 0x0f19, 0x0f22, 0x0f2a, 0x0f33,
+ 0x0f44, 0x0f4a, 0x0f4e, 0x0f52, 0x0f58, 0x0f67, 0x0f77, 0x0f81,
+ 0x0f8a, 0x0f8e, 0x0f9c, 0x0fa2, 0x0fb2, 0x0fb9, 0x0fc5, 0x0fd1,
+ // Entry 200 - 23F
+ 0x0fde, 0x0fe8, 0x0fef, 0x0ff7, 0x1003, 0x1008, 0x100c, 0x101a,
+ 0x1020, 0x1024, 0x102a, 0x1033, 0x1040, 0x1050, 0x1057, 0x105f,
+ 0x1063, 0x1068, 0x106c, 0x1072, 0x1077, 0x107c, 0x107f, 0x1086,
+ 0x108d, 0x1094, 0x109b, 0x10a3, 0x10ab, 0x10ba, 0x10c3, 0x10c9,
+ 0x10cf, 0x10d7, 0x10e0, 0x10ec, 0x10f3, 0x10f9, 0x1100, 0x1108,
+ 0x1111, 0x1117, 0x1120, 0x1126, 0x112a, 0x112d, 0x1133, 0x1138,
+ 0x114d, 0x114d, 0x1151, 0x1156, 0x115b, 0x1161, 0x1167, 0x116c,
+ 0x1171, 0x1179, 0x117b, 0x1181, 0x118a, 0x118e, 0x1199, 0x119f,
+ // Entry 240 - 27F
+ 0x11a6, 0x11ab, 0x11b4, 0x11bd, 0x11c4, 0x11ce, 0x11d7, 0x11dd,
+ 0x11fb, 0x11ff, 0x121b, 0x121f, 0x1235, 0x1235, 0x1246, 0x125b,
+ 0x126e, 0x127e, 0x1290, 0x12a1, 0x12b9, 0x12c9, 0x12db, 0x12db,
+ 0x12ec, 0x12fd, 0x1313, 0x131c, 0x1331, 0x1343, 0x134a, 0x1356,
+ 0x1369, 0x137c,
+} // Size: 1244 bytes
+
+var jaLangStr string = "" + // Size: 10000 bytes
+ "アファル語アブハズ語アヴェスタ語アフリカーンス語アカン語アムハラ語アラゴン語アラビア語アッサム語アヴァル語アイマラ語アゼルバイジャン語バシキール" +
+ "語ベラルーシ語ブルガリア語ビスラマ語バンバラ語ベンガル語チベット語ブルトン語ボスニア語カタロニア語チェチェン語チャモロ語コルシカ語クリー語チ" +
+ "ェコ語教会スラブ語チュヴァシ語ウェールズ語デンマーク語ドイツ語ディベヒ語ゾンカ語エウェ語ギリシャ語英語エスペラント語スペイン語エストニア語バ" +
+ "スク語ペルシア語フラニ語フィンランド語フィジー語フェロー語フランス語西フリジア語アイルランド語スコットランド・ゲール語ガリシア語グアラニー語" +
+ "グジャラート語マン島語ハウサ語ヘブライ語ヒンディー語ヒリモツ語クロアチア語ハイチ語ハンガリー語アルメニア語ヘレロ語インターリングアインドネシ" +
+ "ア語インターリングイボ語四川イ語イヌピアック語イド語アイスランド語イタリア語イヌクウティトット語日本語ジャワ語ジョージア語コンゴ語キクユ語ク" +
+ "ワニャマ語カザフ語グリーンランド語クメール語カンナダ語韓国語カヌリ語カシミール語クルド語コミ語コーンウォール語キルギス語ラテン語ルクセンブル" +
+ "ク語ガンダ語リンブルフ語リンガラ語ラオ語リトアニア語ルバ・カタンガ語ラトビア語マダガスカル語マーシャル語マオリ語マケドニア語マラヤーラム語モ" +
+ "ンゴル語マラーティー語マレー語マルタ語ビルマ語ナウル語北ンデベレ語ネパール語ンドンガ語オランダ語ノルウェー語(ニーノシュク)ノルウェー語(ブ" +
+ "ークモール)南ンデベレ語ナバホ語ニャンジャ語オック語オジブウェー語オロモ語オリヤー語オセット語パンジャブ語パーリ語ポーランド語パシュトゥー語" +
+ "ポルトガル語ケチュア語ロマンシュ語ルンディ語ルーマニア語ロシア語ルワンダ語サンスクリット語サルデーニャ語シンド語北サーミ語サンゴ語シンハラ語" +
+ "スロバキア語スロベニア語サモア語ショナ語ソマリ語アルバニア語セルビア語スワジ語南部ソト語スンダ語スウェーデン語スワヒリ語タミル語テルグ語タジ" +
+ "ク語タイ語ティグリニア語トルクメン語ツワナ語トンガ語トルコ語ツォンガ語タタール語タヒチ語ウイグル語ウクライナ語ウルドゥー語ウズベク語ベンダ語" +
+ "ベトナム語ヴォラピュク語ワロン語ウォロフ語コサ語イディッシュ語ヨルバ語チワン語中国語ズールー語アチェ語アチョリ語アダングメ語アディゲ語チュニ" +
+ "ジア・アラビア語アフリヒリ語アゲム語アイヌ語アッカド語アラバマ語アレウト語ゲグ・アルバニア語南アルタイ語古英語アンギカ語アラム語アラウカン語" +
+ "アラオナ語アラパホー語アルジェリア・アラビア語アラワク語モロッコ・アラビア語エジプト・アラビア語アス語アメリカ手話アストゥリアス語コタヴァア" +
+ "ワディー語バルーチー語バリ語バイエルン・オーストリア語バサ語バムン語トバ・バタク語ゴーマラ語ベジャ語ベンバ語ベタウィ語ベナ語バフット語バダガ" +
+ "語西バローチー語ボージュプリー語ビコル語ビニ語バンジャル語コム語シクシカ語ビシュヌプリヤ・マニプリ語バフティヤーリー語ブラジ語ブラフイ語ボド" +
+ "語アコース語ブリヤート語ブギ語ブル語ビリン語メドゥンバ語カドー語カリブ語カユーガ語チャワイ語セブアノ語チガ語チブチャ語チャガタイ語チューク語" +
+ "マリ語チヌーク混成語チョクトー語チペワイアン語チェロキー語シャイアン語クルド語(ソラニー)コプト語カピス語クリミア・タタール語カシューブ語ダ" +
+ "コタ語ダルガン語タイタ語デラウェア語スレイビー語ドグリブ語ディンカ語ザルマ語ドーグリー語低ソルビア語中央ドゥスン語ドゥアラ語中世オランダ語ジ" +
+ "ョラ=フォニィ語ジュラ語ダザガ語エンブ語エフィク語エミリア語古代エジプト語エカジュク語エラム語中英語中央アラスカ・ユピック語エウォンド語エス" +
+ "トレマドゥーラ語ファング語フィリピノ語トルネダール・フィンランド語フォン語ケイジャン・フランス語中期フランス語古フランス語アルピタン語北フリ" +
+ "ジア語東フリジア語フリウリ語ガ語ガガウズ語贛語ガヨ語バヤ語ダリー語(ゾロアスター教)ゲエズ語キリバス語ギラキ語中高ドイツ語古高ドイツ語ゴア・" +
+ "コンカニ語ゴーンディー語ゴロンタロ語ゴート語グレボ語古代ギリシャ語スイスドイツ語ワユ語フラフラ語グシイ語グウィッチン語ハイダ語客家語ハワイ語" +
+ "フィジー・ヒンディー語ヒリガイノン語ヒッタイト語フモン語上ソルビア語湘語アタパスカ語イバン語イビビオ語イロカノ語イングーシ語イングリア語ジャ" +
+ "マイカ・クレオール語ロジバン語ンゴンバ語マチャメ語ユダヤ・ペルシア語ユダヤ・アラビア語ユトランド語カラカルパク語カビル語カチン語カジェ語カン" +
+ "バ語カウィ語カバルド語カネンブ語カタブ語マコンデ語カーボベルデ・クレオール語ニャン語コロ語カインガング語カシ語コータン語コイラ・チーニ語コワ" +
+ "ール語キルマンジュキ語カコ語カレンジン語キンブンド語コミ・ペルミャク語コンカニ語コスラエ語クペレ語カラチャイ語クリオ語キナライア語カレリア語" +
+ "クルク語サンバー語バフィア語ケルン語クムク語クテナイ語ラディノ語ランギ語ラフンダー語ランバ語レズギ語リングア・フランカ・ノバリグリア語リヴォ" +
+ "ニア語ラコタ語ロンバルド語モンゴ語ロジ語北ロル語ラトガリア語ルバ・ルルア語ルイセーニョ語ルンダ語ルオ語ルシャイ語ルヒヤ語漢文ラズ語マドゥラ語" +
+ "マファ語マガヒー語マイティリー語マカッサル語マンディンゴ語マサイ語マバ語モクシャ語マンダル語メンデ語メル語モーリシャス・クレオール語中期アイ" +
+ "ルランド語マクア・ミート語メタ語ミクマク語ミナンカバウ語満州語マニプリ語モーホーク語モシ語山地マリ語ムンダン語複数言語クリーク語ミランダ語マ" +
+ "ールワーリー語メンタワイ語ミエネ語エルジャ語マーザンダラーン語閩南語ナポリ語ナマ語低地ドイツ語ネワール語ニアス語ニウーエイ語アオ・ナガ語クワ" +
+ "シオ語ンジエムブーン語ノガイ語古ノルド語ノヴィアルンコ語北部ソト語ヌエル語古典ネワール語ニャムウェジ語ニャンコレ語ニョロ語ンゼマ語オセージ語" +
+ "オスマントルコ語パンガシナン語パフラヴィー語パンパンガ語パピアメント語パラオ語ピカルディ語ペンシルベニア・ドイツ語メノナイト低地ドイツ語古代" +
+ "ペルシア語プファルツ語フェニキア語ピエモンテ語ポントス・ギリシャ語ポンペイ語プロシア語古期プロバンス語キチェ語チンボラソ高地ケチュア語ラージ" +
+ "ャスターン語ラパヌイ語ラロトンガ語ロマーニャ語リーフ語ロンボ語ロマーニー語ロツマ語ルシン語ロヴィアナ語アルーマニア語ルワ語サンダウェ語ヤクー" +
+ "ト語サマリア・アラム語サンブル語ササク語サンターリー語サウラーシュトラ語ンガムバイ語サング語シチリア語スコットランド語サッサリ・サルデーニャ" +
+ "語南部クルド語セネカ語セナ語セリ語セリクプ語コイラボロ・センニ語古期アイルランド語サモギティア語)タシルハイト語シャン語チャド・アラビア語シ" +
+ "ダモ語低シレジア語スラヤール語南サーミ語ルレ・サーミ語イナリ・サーミ語スコルト・サーミ語ソニンケ語ソグド語スリナム語セレル語サホ語ザーターフ" +
+ "リジア語スクマ語スス語シュメール語コモロ語コンゴ・スワヒリ語古典シリア語シリア語シレジア語トゥル語テムネ語テソ語テレーノ語テトゥン語ティグレ" +
+ "語ティブ語トケラウ語ツァフル語クリンゴン語トリンギット語タリシュ語タマシェク語トンガ語(ニアサ)トク・ピシン語トゥロヨ語タロコ語ツァコン語チ" +
+ "ムシュ語ムスリム・タタール語トゥンブカ語ツバル語タサワク語トゥヴァ語中央アトラス・タマジクト語ウドムルト語ウガリト語ムブンドゥ語ルートヴァイ" +
+ "語ヴェネト語ヴェプス語西フラマン語マインフランク語ヴォート語ヴォロ語ヴンジョ語ヴァリス語ウォライタ語ワライ語ワショ語ワルピリ語呉語カルムイク" +
+ "語メグレル語ソガ語ヤオ語ヤップ語ヤンベン語イエンバ語ニェエンガトゥ語広東語サポテカ語ブリスシンボルゼーラント語ゼナガ語タマージク語(モロッコ" +
+ "公用語)ズニ語言語的内容なしザザ語現代標準アラビア語標準ドイツ語 (スイス)オーストラリア英語カナダ英語イギリス英語アメリカ英語スペイン語 " +
+ "(イベリア半島)フレミッシュ語ポルトガル語 (イベリア半島)モルダビア語セルボ・クロアチア語簡体中国語繁体中国語"
+
+var jaLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x001e, 0x0030, 0x0048, 0x0054, 0x0063, 0x0072,
+ 0x0081, 0x0090, 0x009f, 0x00ae, 0x00c9, 0x00db, 0x00ed, 0x00ff,
+ 0x010e, 0x011d, 0x012c, 0x013b, 0x014a, 0x0159, 0x016b, 0x017d,
+ 0x018c, 0x019b, 0x01a7, 0x01b3, 0x01c5, 0x01d7, 0x01e9, 0x01fb,
+ 0x0207, 0x0216, 0x0222, 0x022e, 0x023d, 0x0243, 0x0258, 0x0267,
+ 0x0279, 0x0285, 0x0294, 0x02a0, 0x02b5, 0x02c4, 0x02d3, 0x02e2,
+ 0x02f4, 0x0309, 0x032d, 0x033c, 0x034e, 0x0363, 0x036f, 0x037b,
+ 0x038a, 0x039c, 0x03ab, 0x03bd, 0x03c9, 0x03db, 0x03ed, 0x03f9,
+ // Entry 40 - 7F
+ 0x0411, 0x0426, 0x043b, 0x0444, 0x0450, 0x0465, 0x046e, 0x0483,
+ 0x0492, 0x04b0, 0x04b9, 0x04c5, 0x04d7, 0x04e3, 0x04ef, 0x0501,
+ 0x050d, 0x0525, 0x0534, 0x0543, 0x054c, 0x0558, 0x056a, 0x0576,
+ 0x057f, 0x0597, 0x05a6, 0x05b2, 0x05ca, 0x05d6, 0x05e8, 0x05f7,
+ 0x0600, 0x0612, 0x062a, 0x0639, 0x064e, 0x0660, 0x066c, 0x067e,
+ 0x0693, 0x06a2, 0x06b7, 0x06c3, 0x06cf, 0x06db, 0x06e7, 0x06f9,
+ 0x0708, 0x0717, 0x0726, 0x074c, 0x0772, 0x0784, 0x0790, 0x07a2,
+ 0x07ae, 0x07c3, 0x07cf, 0x07de, 0x07ed, 0x07ff, 0x080b, 0x081d,
+ // Entry 80 - BF
+ 0x0832, 0x0844, 0x0853, 0x0865, 0x0874, 0x0886, 0x0892, 0x08a1,
+ 0x08b9, 0x08ce, 0x08da, 0x08e9, 0x08f5, 0x0904, 0x0916, 0x0928,
+ 0x0934, 0x0940, 0x094c, 0x095e, 0x096d, 0x0979, 0x0988, 0x0994,
+ 0x09a9, 0x09b8, 0x09c4, 0x09d0, 0x09dc, 0x09e5, 0x09fa, 0x0a0c,
+ 0x0a18, 0x0a24, 0x0a30, 0x0a3f, 0x0a4e, 0x0a5a, 0x0a69, 0x0a7b,
+ 0x0a8d, 0x0a9c, 0x0aa8, 0x0ab7, 0x0acc, 0x0ad8, 0x0ae7, 0x0af0,
+ 0x0b05, 0x0b11, 0x0b1d, 0x0b26, 0x0b35, 0x0b41, 0x0b50, 0x0b62,
+ 0x0b71, 0x0b92, 0x0ba4, 0x0bb0, 0x0bbc, 0x0bcb, 0x0bda, 0x0be9,
+ // Entry C0 - FF
+ 0x0c04, 0x0c16, 0x0c1f, 0x0c2e, 0x0c3a, 0x0c4c, 0x0c5b, 0x0c6d,
+ 0x0c91, 0x0ca0, 0x0cbe, 0x0cdc, 0x0ce5, 0x0cf7, 0x0d0f, 0x0d1b,
+ 0x0d2d, 0x0d3f, 0x0d48, 0x0d6f, 0x0d78, 0x0d84, 0x0d99, 0x0da8,
+ 0x0db4, 0x0dc0, 0x0dcf, 0x0dd8, 0x0de7, 0x0df3, 0x0e08, 0x0e20,
+ 0x0e2c, 0x0e35, 0x0e47, 0x0e50, 0x0e5f, 0x0e86, 0x0ea1, 0x0ead,
+ 0x0ebc, 0x0ec5, 0x0ed4, 0x0ee6, 0x0eef, 0x0ef8, 0x0f04, 0x0f16,
+ 0x0f22, 0x0f2e, 0x0f3d, 0x0f4c, 0x0f5b, 0x0f64, 0x0f73, 0x0f85,
+ 0x0f94, 0x0f9d, 0x0fb2, 0x0fc4, 0x0fd9, 0x0feb, 0x0ffd, 0x1017,
+ // Entry 100 - 13F
+ 0x1023, 0x102f, 0x104d, 0x105f, 0x106b, 0x107a, 0x1086, 0x1098,
+ 0x10aa, 0x10b9, 0x10c8, 0x10d4, 0x10e6, 0x10f8, 0x110d, 0x111c,
+ 0x1131, 0x114c, 0x1158, 0x1164, 0x1170, 0x117f, 0x118e, 0x11a3,
+ 0x11b5, 0x11c1, 0x11ca, 0x11ee, 0x1200, 0x121e, 0x122d, 0x123f,
+ 0x1269, 0x1275, 0x1296, 0x12ab, 0x12bd, 0x12cf, 0x12e1, 0x12f3,
+ 0x1302, 0x1308, 0x1317, 0x131d, 0x1326, 0x132f, 0x1352, 0x135e,
+ 0x136d, 0x1379, 0x138b, 0x139d, 0x13b5, 0x13ca, 0x13dc, 0x13e8,
+ 0x13f4, 0x1409, 0x141e, 0x1427, 0x1436, 0x1442, 0x1457, 0x1463,
+ // Entry 140 - 17F
+ 0x146c, 0x1478, 0x1499, 0x14ae, 0x14c0, 0x14cc, 0x14de, 0x14e4,
+ 0x14f6, 0x1502, 0x1511, 0x1520, 0x1532, 0x1544, 0x1568, 0x1577,
+ 0x1586, 0x1595, 0x15b0, 0x15cb, 0x15dd, 0x15f2, 0x15fe, 0x160a,
+ 0x1616, 0x1622, 0x162e, 0x163d, 0x164c, 0x1658, 0x1667, 0x168e,
+ 0x169a, 0x16a3, 0x16b8, 0x16c1, 0x16d0, 0x16e8, 0x16f7, 0x170f,
+ 0x1718, 0x172a, 0x173c, 0x1757, 0x1766, 0x1775, 0x1781, 0x1793,
+ 0x179f, 0x17b1, 0x17c0, 0x17cc, 0x17db, 0x17ea, 0x17f6, 0x1802,
+ 0x1811, 0x1820, 0x182c, 0x183e, 0x184a, 0x1856, 0x187a, 0x1889,
+ // Entry 180 - 1BF
+ 0x189b, 0x18a7, 0x18b9, 0x18c5, 0x18ce, 0x18da, 0x18ec, 0x1901,
+ 0x1916, 0x1922, 0x192b, 0x193a, 0x1946, 0x194c, 0x1955, 0x1964,
+ 0x1970, 0x197f, 0x1994, 0x19a6, 0x19bb, 0x19c7, 0x19d0, 0x19df,
+ 0x19ee, 0x19fa, 0x1a03, 0x1a2a, 0x1a45, 0x1a5d, 0x1a66, 0x1a75,
+ 0x1a8a, 0x1a93, 0x1aa2, 0x1ab4, 0x1abd, 0x1acc, 0x1adb, 0x1ae7,
+ 0x1af6, 0x1b05, 0x1b1d, 0x1b2f, 0x1b3b, 0x1b4a, 0x1b65, 0x1b6e,
+ 0x1b7a, 0x1b83, 0x1b95, 0x1ba4, 0x1bb0, 0x1bc2, 0x1bd4, 0x1be3,
+ 0x1bfb, 0x1c07, 0x1c16, 0x1c25, 0x1c2e, 0x1c3d, 0x1c49, 0x1c5e,
+ // Entry 1C0 - 1FF
+ 0x1c73, 0x1c85, 0x1c91, 0x1c9d, 0x1cac, 0x1cc4, 0x1cd9, 0x1cee,
+ 0x1d00, 0x1d15, 0x1d21, 0x1d33, 0x1d57, 0x1d78, 0x1d8d, 0x1d9f,
+ 0x1db1, 0x1dc3, 0x1de1, 0x1df0, 0x1dff, 0x1e17, 0x1e23, 0x1e47,
+ 0x1e62, 0x1e71, 0x1e83, 0x1e95, 0x1ea1, 0x1ead, 0x1ebf, 0x1ecb,
+ 0x1ed7, 0x1ee9, 0x1efe, 0x1f07, 0x1f19, 0x1f28, 0x1f43, 0x1f52,
+ 0x1f5e, 0x1f73, 0x1f8e, 0x1fa0, 0x1fac, 0x1fbb, 0x1fd3, 0x1ff7,
+ 0x2009, 0x2015, 0x201e, 0x2027, 0x2036, 0x2054, 0x206f, 0x2085,
+ 0x209a, 0x20a6, 0x20c1, 0x20cd, 0x20df, 0x20f1, 0x2100, 0x2115,
+ // Entry 200 - 23F
+ 0x212d, 0x2148, 0x2157, 0x2163, 0x2172, 0x217e, 0x2187, 0x21a2,
+ 0x21ae, 0x21b7, 0x21c9, 0x21d5, 0x21f0, 0x2202, 0x220e, 0x221d,
+ 0x2229, 0x2235, 0x223e, 0x224d, 0x225c, 0x226b, 0x2277, 0x2286,
+ 0x2295, 0x22a7, 0x22bc, 0x22cb, 0x22dd, 0x22f4, 0x2309, 0x2318,
+ 0x2324, 0x2333, 0x2342, 0x2360, 0x2372, 0x237e, 0x238d, 0x239c,
+ 0x23c3, 0x23d5, 0x23e4, 0x23f6, 0x23ff, 0x240b, 0x241a, 0x2429,
+ 0x243b, 0x2453, 0x2462, 0x246e, 0x247d, 0x248c, 0x249e, 0x24aa,
+ 0x24b6, 0x24c5, 0x24cb, 0x24dd, 0x24ec, 0x24f5, 0x24fe, 0x250a,
+ // Entry 240 - 27F
+ 0x2519, 0x2528, 0x2540, 0x2549, 0x2558, 0x256d, 0x257f, 0x258b,
+ 0x25b4, 0x25bd, 0x25d2, 0x25db, 0x25f6, 0x25f6, 0x25f6, 0x2614,
+ 0x262f, 0x263e, 0x2650, 0x2662, 0x2662, 0x2686, 0x2686, 0x2686,
+ 0x2686, 0x2686, 0x2686, 0x269b, 0x269b, 0x26c2, 0x26d4, 0x26f2,
+ 0x2701, 0x2710,
+} // Size: 1244 bytes
+
+var kaLangStr string = "" + // Size: 10123 bytes
+ "აფარიაფხაზურიავესტურიაფრიკაანსიაკანიამჰარულიარაგონულიარაბულიასამურიაიმარ" +
+ "ააზერბაიჯანულიბაშკირულიბელორუსულიბულგარულიბამბარაბენგალურიტიბეტურიბრეტ" +
+ "ონულიბოსნიურიკატალანურიჩეჩნურიკორსიკულიკრიჩეხურისაეკლესიო სლავურიჩუვაშ" +
+ "ურიუელსურიდანიურიგერმანულიდივეჰიძონგკხაევებერძნულიინგლისურიესპერანტოეს" +
+ "პანურიესტონურიბასკურისპარსულიფინურიფიჯიფარერულიფრანგულიდასავლეთფრიზიულ" +
+ "იირლანდიურიშოტლანდიური გელურიგალისიურიგუარანიგუჯარათიმენურიჰაუსაებრაულ" +
+ "იჰინდიხორვატულიჰაიტიურიუნგრულისომხურიინტერლინგუალურიინდონეზიურიინტერლი" +
+ "ნგიიგბოსიჩუანის იიდოისლანდიურიიტალიურიინუკტიტუტიიაპონურიიავურიქართულიკ" +
+ "ონგოკიკუიუყაზახურიდასავლეთ გრენლანდიურიქმერულიკანადაკორეულიკანურიქაშმი" +
+ "რულიქურთულიკომიკორნულიყირგიზულილათინურილუქსემბურგულიგანდალიმბურგულილინ" +
+ "გალალაოსურილიტვურილუბა-კატანგალატვიურიმალაგასიურიმაორიმაკედონურიმალაია" +
+ "ლამურიმონღოლურიმარათჰიმალაიურიმალტურიბირმულინაურუჩრდილოეთ ნდებელენეპალ" +
+ "ურინიდერლანდურინორვეგიული ნიუნორსკინორვეგიული ბუკმოლინავახონიანჯაოქსიტ" +
+ "ანურიოჯიბვეორომოორიაოსურიპენჯაბურიპალიპოლონურიპუშტუპორტუგალიურიკეჩუარე" +
+ "ტორომანულირუნდირუმინულირუსულიკინიარუანდასანსკრიტისარდინიულისინდჰურიჩრდ" +
+ "ილოეთ საამურისანგოსინჰალურისლოვაკურისლოვენურისამოაშონასომალიურიალბანურ" +
+ "ისერბულისამხრეთ სოთოს ენასუნდურიშვედურისუაჰილიტამილურიტელუგუტაჯიკურიტა" +
+ "ითიგრინიათურქმენულიტსვანატონგანურითურქულითათრულიუიღურულიუკრაინულიურდუუ" +
+ "ზბეკურივიეტნამურივოლოფურიქჰოსაიდიშიიორუბაჩინურიზულუაჩეხურიაჩოლიადანგმე" +
+ "ადიღეურიაღემიაინუურიაქადურიალეუტურისამხრეთ ალთაურიძველი ინგლისურიანგიკ" +
+ "აარამეულიმაპუდუნგუნიარაპაჰოარავაკიასუასტურიულიავადიბელუჯიბალინურიბასაბ" +
+ "ამუნიბეჯაბემბაბენადასავლეთ ბელუჯიბოჯპურიბრაჯიბოდობურიატულიბილინიკაიუგა" +
+ "ჩიგაჩიბჩამარიულიჩეროკისორანი ქურთულიკოპტურიყირიმულ-თურქულიკაშუბურიდაკო" +
+ "ტადარგუულიტაიტადელავარულიდოგრიბიდინკაზარმადოგრიქვემოსორბულიდუალადიოლად" +
+ "იულაემბუეფიკიძველეგვიპტურიევონდოფილიპინურიფონიძველი ფრანგულიჩრდილოფრიზ" +
+ "იულიაღმოსავლეთფრიზიულიფრიულურიგაგაუზურიგბაიაგეეზიძველი ზემოგერმანულიგო" +
+ "ნდიგოთურიძველი ბერძნულიშვეიცარიული გერმანულიგუსიიჰავაიურიხეთური ენაზემ" +
+ "ოსორბულიიბანიიბიბიოინგუშურილოჟბანინგომბაკიმაშამიიუდეო-სპარსულიიუდეო-არ" +
+ "აბულიყარაყალფახურიკაბილურიკაჩინიკამბაყაბარდოულიმაკონდეკაბუვერდიანუკოირ" +
+ "ა-ჩიინიკალენჯინიკიმბუნდუკომი-პერმიაკულიკონკანიკპელეყარაჩაულ-ბალყარულიკ" +
+ "არელიურიკურუქიშამბალაბაფიაყუმუხურიკუტენაილადინოლანგილანდალამბალეზგიური" +
+ "ლაკოტამონგოლოზიჩრდილოეთ ლურილუისენიოლუნდალუომიზოლუჰიამაფამაგაჰიმაითილი" +
+ "მასაიმაბამოქშამენდემერუმორისიენიმაქუვა-მეეტომეტა’ ენამანჯურიულიმანიპურ" +
+ "იმოჰაუკურიმუნდანგიკრიკიმირანდულიმარვარიმიენეერზიამაზანდერანულინეაპოლიტ" +
+ "ანურინამაქვემოგერმანულინევარიკვასიონოღაურიძველსკანდინავიურინკონუერიკლა" +
+ "სიკური ნევარულინიამვეზინიანკოლენიორონზიმაფალაურიძველი სპარსულიფინიკიურ" +
+ "იძველი პროვანსულიკიჩერაჯასთანირაპანუირაროტონგულირომბობოშურირუაიაკუტური" +
+ "სამარიულ-არამეულისამბურუსანგუსიცილიურისამხრეთ ქურთულისენეკასენასელკუპუ" +
+ "რიკოირაბორო-სენიძველი ირლანდიურიშილჰაშანიჩადური არაბულისამხრეთ საამური" +
+ "ლულე-საამურიინარი-საამურისკოლტ-საამურიშუმერულიკომორულიკონგოს სუაჰილიკლ" +
+ "ასიკური სირიულისირიულიტესოთიგრეკლინგონიტასავაქიტუვაცენტრალური მოროკოს " +
+ "ტამაზიგხტიუდმურტულიუგარითულიუცნობი ენავაივუნჯოველაითავალპირიყალმუხურის" +
+ "ოგაკანტონურიბლისსიმბოლოებიზენაგასტანდარტული მაროკოული ტამაზიგხტილინგვი" +
+ "სტური შიგთავსი არ არისზაზაკითანამედროვე სტანდარტული არაბულიავსტრიული გ" +
+ "ერმანულიშვეიცარიული ზემოგერმანულიავსტრალიური ინგლისურიკანადური ინგლისუ" +
+ "რიბრიტანული ინგლისურიამერიკული ინგლისურილათინურ ამერიკული ესპანურიევრო" +
+ "პული ესპანურიმექსიკური ესპანურიკანადური ფრანგულიშვეიცარიული ფრანგულიქვ" +
+ "ემოსაქსონურიფლამანდიურიბრაზილიური პორტუგალიურიევროპული პორტუგალიურიმოლ" +
+ "დავურისერბულ-ხორვატულიგამარტივებული ჩინურიტრადიციული ჩინური"
+
+var kaLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0027, 0x003f, 0x005d, 0x006c, 0x0084, 0x009f,
+ 0x00b4, 0x00c9, 0x00c9, 0x00db, 0x0102, 0x011d, 0x013b, 0x0156,
+ 0x0156, 0x016b, 0x0186, 0x019e, 0x01b9, 0x01d1, 0x01ef, 0x0204,
+ 0x0204, 0x021f, 0x0228, 0x023a, 0x026b, 0x0283, 0x0298, 0x02ad,
+ 0x02c8, 0x02da, 0x02ef, 0x02f8, 0x0310, 0x032b, 0x0346, 0x035e,
+ 0x0376, 0x038b, 0x03a3, 0x03a3, 0x03b5, 0x03c1, 0x03d9, 0x03f1,
+ 0x0421, 0x043f, 0x0473, 0x048e, 0x04a3, 0x04bb, 0x04cd, 0x04dc,
+ 0x04f1, 0x0500, 0x0500, 0x051b, 0x0533, 0x0548, 0x055d, 0x055d,
+ // Entry 40 - 7F
+ 0x058a, 0x05ab, 0x05c9, 0x05d5, 0x05f1, 0x05f1, 0x05fa, 0x0618,
+ 0x0630, 0x064e, 0x0666, 0x0678, 0x068d, 0x069c, 0x06ae, 0x06ae,
+ 0x06c6, 0x0703, 0x0718, 0x072a, 0x073f, 0x0751, 0x076c, 0x0781,
+ 0x078d, 0x07a2, 0x07bd, 0x07d5, 0x07fc, 0x080b, 0x0829, 0x083e,
+ 0x0853, 0x0868, 0x088a, 0x08a2, 0x08c3, 0x08c3, 0x08d2, 0x08f0,
+ 0x0914, 0x092f, 0x0944, 0x095c, 0x0971, 0x0986, 0x0995, 0x09c3,
+ 0x09db, 0x09db, 0x09ff, 0x0a39, 0x0a6d, 0x0a6d, 0x0a7f, 0x0a91,
+ 0x0aaf, 0x0ac1, 0x0ad0, 0x0adc, 0x0aeb, 0x0b06, 0x0b12, 0x0b2a,
+ // Entry 80 - BF
+ 0x0b39, 0x0b5d, 0x0b6c, 0x0b90, 0x0b9f, 0x0bb7, 0x0bc9, 0x0bea,
+ 0x0c05, 0x0c23, 0x0c3b, 0x0c69, 0x0c78, 0x0c93, 0x0cae, 0x0cc9,
+ 0x0cd8, 0x0ce4, 0x0cff, 0x0d17, 0x0d2c, 0x0d2c, 0x0d5b, 0x0d70,
+ 0x0d85, 0x0d9a, 0x0db2, 0x0dc4, 0x0ddc, 0x0de5, 0x0dfd, 0x0e1b,
+ 0x0e2d, 0x0e48, 0x0e5d, 0x0e5d, 0x0e72, 0x0e72, 0x0e8a, 0x0ea5,
+ 0x0eb1, 0x0ec9, 0x0ec9, 0x0ee7, 0x0ee7, 0x0ee7, 0x0eff, 0x0f0e,
+ 0x0f1d, 0x0f2f, 0x0f2f, 0x0f41, 0x0f4d, 0x0f62, 0x0f71, 0x0f86,
+ 0x0f9e, 0x0f9e, 0x0f9e, 0x0fad, 0x0fc2, 0x0fd7, 0x0fd7, 0x0fef,
+ // Entry C0 - FF
+ 0x0fef, 0x101a, 0x1045, 0x1057, 0x106f, 0x1090, 0x1090, 0x10a5,
+ 0x10a5, 0x10ba, 0x10ba, 0x10ba, 0x10c3, 0x10c3, 0x10de, 0x10de,
+ 0x10ed, 0x10ff, 0x1117, 0x1117, 0x1123, 0x1135, 0x1135, 0x1135,
+ 0x1141, 0x1150, 0x1150, 0x115c, 0x115c, 0x115c, 0x1187, 0x119c,
+ 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x119c, 0x11ab,
+ 0x11ab, 0x11b7, 0x11b7, 0x11d2, 0x11d2, 0x11d2, 0x11e4, 0x11e4,
+ 0x11e4, 0x11e4, 0x11f6, 0x11f6, 0x11f6, 0x1202, 0x1211, 0x1211,
+ 0x1211, 0x1226, 0x1226, 0x1226, 0x1226, 0x1238, 0x1238, 0x1260,
+ // Entry 100 - 13F
+ 0x1275, 0x1275, 0x12a0, 0x12b8, 0x12ca, 0x12e2, 0x12f1, 0x130f,
+ 0x130f, 0x1324, 0x1333, 0x1342, 0x1351, 0x1375, 0x1375, 0x1384,
+ 0x1384, 0x1393, 0x13a2, 0x13a2, 0x13ae, 0x13bd, 0x13bd, 0x13e4,
+ 0x13e4, 0x13e4, 0x13e4, 0x13e4, 0x13f6, 0x13f6, 0x13f6, 0x1414,
+ 0x1414, 0x1420, 0x1420, 0x1420, 0x1448, 0x1448, 0x1472, 0x14a8,
+ 0x14c0, 0x14c0, 0x14db, 0x14db, 0x14db, 0x14ea, 0x14ea, 0x14f9,
+ 0x14f9, 0x14f9, 0x14f9, 0x1530, 0x1530, 0x153f, 0x153f, 0x1551,
+ 0x1551, 0x1579, 0x15b6, 0x15b6, 0x15b6, 0x15c5, 0x15c5, 0x15c5,
+ // Entry 140 - 17F
+ 0x15c5, 0x15dd, 0x15dd, 0x15dd, 0x15f9, 0x15f9, 0x161a, 0x161a,
+ 0x161a, 0x1629, 0x163b, 0x163b, 0x1653, 0x1653, 0x1653, 0x1668,
+ 0x167a, 0x1692, 0x16ba, 0x16df, 0x16df, 0x1706, 0x171e, 0x1730,
+ 0x1730, 0x173f, 0x173f, 0x175d, 0x175d, 0x175d, 0x1772, 0x1796,
+ 0x1796, 0x1796, 0x1796, 0x1796, 0x1796, 0x17b5, 0x17b5, 0x17b5,
+ 0x17b5, 0x17d0, 0x17e8, 0x1813, 0x1828, 0x1828, 0x1837, 0x186b,
+ 0x186b, 0x186b, 0x1886, 0x1898, 0x18ad, 0x18bc, 0x18bc, 0x18d4,
+ 0x18e9, 0x18fb, 0x190a, 0x1919, 0x1928, 0x1940, 0x1940, 0x1940,
+ // Entry 180 - 1BF
+ 0x1940, 0x1952, 0x1952, 0x1961, 0x196d, 0x1992, 0x1992, 0x1992,
+ 0x19aa, 0x19b9, 0x19c2, 0x19ce, 0x19dd, 0x19dd, 0x19dd, 0x19dd,
+ 0x19e9, 0x19fb, 0x1a10, 0x1a10, 0x1a10, 0x1a1f, 0x1a2b, 0x1a3a,
+ 0x1a3a, 0x1a49, 0x1a55, 0x1a70, 0x1a70, 0x1a92, 0x1aab, 0x1aab,
+ 0x1aab, 0x1ac9, 0x1ae1, 0x1afc, 0x1afc, 0x1afc, 0x1b14, 0x1b14,
+ 0x1b23, 0x1b3e, 0x1b53, 0x1b53, 0x1b62, 0x1b71, 0x1b98, 0x1b98,
+ 0x1bbf, 0x1bcb, 0x1bf5, 0x1c07, 0x1c07, 0x1c07, 0x1c07, 0x1c19,
+ 0x1c19, 0x1c2e, 0x1c61, 0x1c61, 0x1c6a, 0x1c6a, 0x1c79, 0x1cad,
+ // Entry 1C0 - 1FF
+ 0x1cc5, 0x1cdd, 0x1cec, 0x1cfb, 0x1cfb, 0x1cfb, 0x1cfb, 0x1d10,
+ 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d10, 0x1d38, 0x1d38,
+ 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d81, 0x1d8d, 0x1d8d,
+ 0x1da8, 0x1dbd, 0x1dde, 0x1dde, 0x1dde, 0x1ded, 0x1dff, 0x1dff,
+ 0x1dff, 0x1dff, 0x1dff, 0x1e08, 0x1e08, 0x1e20, 0x1e51, 0x1e66,
+ 0x1e66, 0x1e66, 0x1e66, 0x1e66, 0x1e75, 0x1e90, 0x1e90, 0x1e90,
+ 0x1ebb, 0x1ecd, 0x1ed9, 0x1ed9, 0x1ef4, 0x1f1c, 0x1f4a, 0x1f4a,
+ 0x1f59, 0x1f65, 0x1f8d, 0x1f8d, 0x1f8d, 0x1f8d, 0x1fb8, 0x1fda,
+ // Entry 200 - 23F
+ 0x1fff, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024, 0x2024,
+ 0x2024, 0x2024, 0x203c, 0x2054, 0x207c, 0x20ad, 0x20c2, 0x20c2,
+ 0x20c2, 0x20c2, 0x20ce, 0x20ce, 0x20ce, 0x20dd, 0x20dd, 0x20dd,
+ 0x20dd, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5,
+ 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x20f5, 0x210d, 0x2119,
+ 0x216c, 0x2187, 0x21a2, 0x21a2, 0x21be, 0x21c7, 0x21c7, 0x21c7,
+ 0x21c7, 0x21c7, 0x21c7, 0x21c7, 0x21d6, 0x21d6, 0x21eb, 0x21eb,
+ 0x21eb, 0x2200, 0x2200, 0x221b, 0x221b, 0x2227, 0x2227, 0x2227,
+ // Entry 240 - 27F
+ 0x2227, 0x2227, 0x2227, 0x2242, 0x2242, 0x226c, 0x226c, 0x227e,
+ 0x22da, 0x22da, 0x2328, 0x233a, 0x2393, 0x2393, 0x23ca, 0x2413,
+ 0x2450, 0x2484, 0x24bb, 0x24f2, 0x253c, 0x256d, 0x25a1, 0x25a1,
+ 0x25d2, 0x260c, 0x2636, 0x2657, 0x269a, 0x26d7, 0x26f2, 0x2720,
+ 0x275a, 0x278b,
+} // Size: 1244 bytes
+
+var kkLangStr string = "" + // Size: 5518 bytes
+ "абхаз тіліафрикаанс тіліакан тіліамхар тіліараб тіліассам тіліәзірбайжан" +
+ " тілібашқұрт тілібеларусь тіліболгар тілібамбара тілібенгал тілітибет ті" +
+ "лібретон тілібосния тілікаталан тілішешен тілікорсика тілічех тілічуваш" +
+ " тіліваллий тілідат тілінеміс тілідзонг-кэ тіліэве тілігрек тіліағылшын " +
+ "тіліэсперанто тіліиспан тіліэстон тілібаск тіліпарсы тіліфин тіліфиджи " +
+ "тіліфарер тіліфранцуз тілібатыс фриз тіліирланд тілігалисия тілігуарани" +
+ " тілігуджарати тілімэнс тіліхауса тіліиврит тіліхинди тіліхорват тілігаи" +
+ "ти тілівенгр тіліармян тіліиндонезия тіліигбо тілісычуан и тіліисланд т" +
+ "іліитальян тіліинуктитут тіліжапон тіліява тілігрузин тілікикуйю тіліқа" +
+ "зақ тілікалаалисут тілікхмер тіліканнада тілікәріс тілікашмир тілікүрд " +
+ "тілікорн тіліқырғыз тілілатын тілілюксембург тіліганда тілілингала тілі" +
+ "лаос тілілитва тілілуба-катанга тілілатыш тілімалагаси тілімаори тіліма" +
+ "кедон тілімалаялам тілімоңғол тілімаратхи тілімалай тілімальта тілібирм" +
+ "а тілісолтүстік ндебеле тілінепал тілінидерланд тілінорвегиялық нюнорск" +
+ " тілінорвегиялық букмол тіліоромо тіліория тіліпенджаб тіліполяк тіліпуш" +
+ "ту тіліпортугал тілікечуа тіліроманш тілірунди тілірумын тіліорыс тілік" +
+ "иньяруанда тілісанскрит тілісиндхи тілісолтүстік саам тілісанго тілісин" +
+ "гал тілісловак тілісловен тілішона тілісомали тіліалбан тілісерб тілішв" +
+ "ед тілісуахили тілітамил тілітелугу тілітәжік тілітай тілітигринья тілі" +
+ "түрікмен тілітонган тілітүрік тілітатар тіліұйғыр тіліукраин тіліурду т" +
+ "іліөзбек тілівьетнам тіліволоф тілікхоса тілійоруба тіліқытай тілізулу " +
+ "тіліагхем тілімапуче тіліасу тілібемба тілібена тілібатыс балучи тілібо" +
+ "до тілікига тілічероки тілісорани тілітаита тілізарма тілітөменгі лужиц" +
+ "а тілідуала тілідиола тіліембу тіліфилиппин тілігагауз тілішвейцариялық" +
+ " неміс тілігусии тілігавайи тіліжоғарғы лужица тілінгомба тілімачаме тіл" +
+ "ікабил тілікамба тілімаконде тілікабувердиана тілікойра чини тілікаленж" +
+ "ин тілікоми-пермяк тіліконкани тілішамбала тілібафиа тіліланги тілілако" +
+ "та тілісолтүстік люри тілілуо тілілухиа тілімасай тілімеру тіліморисиен" +
+ " тілімакуа-меетто тілімета тілімогавк тілімунданг тілімазандеран тілінам" +
+ "а тілітөменгі неміс тіліквасио тілінко тілінуэр тілінианколе тілікиче т" +
+ "іліромбо тіліруа тілісамбуру тілісангу тіліоңтүстік күрд тілісена тілік" +
+ "ойраборо сенни тіліташелхит тіліоңтүстік саам тілілуле саам тіліинари с" +
+ "аам тілісколт саамконго суахили тілітесо тілітасавак тіліорталық атлас " +
+ "тамасагихт тілібелгісіз тілвай тілівунджо тілівальбири тілісога тілімар" +
+ "окколық стандартты тамазигхт тілітілдік мазмұны жоққазіргі стандартты а" +
+ "раб тіліавстриялық неміс тілішвейцариялық жоғарғы неміс тіліавстралиялы" +
+ "қ ағылшын тіліканадалық ағылшын тілібританиялық ағылшын тіліамерикандық" +
+ " ағылшын тілілатын американдық испан тіліибериялық испан тілімексикалық " +
+ "испан тіліканадалық француз тілішвейцариялық француз тілітөменгі саксон" +
+ " тіліфламанд тілібразилиялық португал тіліеуропалық португал тілімолдова" +
+ "н тіліжеңілдетілген қытай тілідәстүрлі қытай тілі"
+
+var kkLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0013, 0x0013, 0x002e, 0x003f, 0x0052, 0x0052,
+ 0x0063, 0x0076, 0x0076, 0x0076, 0x0093, 0x00aa, 0x00c3, 0x00d8,
+ 0x00d8, 0x00ef, 0x0104, 0x0117, 0x012c, 0x0141, 0x0158, 0x016b,
+ 0x016b, 0x0182, 0x0182, 0x0191, 0x0191, 0x01a4, 0x01b9, 0x01c8,
+ 0x01db, 0x01db, 0x01f3, 0x0202, 0x0213, 0x022a, 0x0245, 0x0258,
+ 0x026b, 0x027c, 0x028f, 0x028f, 0x029e, 0x02b1, 0x02c4, 0x02db,
+ 0x02f7, 0x030c, 0x030c, 0x0323, 0x033a, 0x0355, 0x0366, 0x0379,
+ 0x038c, 0x039f, 0x039f, 0x03b4, 0x03c7, 0x03da, 0x03ed, 0x03ed,
+ // Entry 40 - 7F
+ 0x03ed, 0x0408, 0x0408, 0x0419, 0x0431, 0x0431, 0x0431, 0x0446,
+ 0x045d, 0x0478, 0x048b, 0x049a, 0x04af, 0x04af, 0x04c4, 0x04c4,
+ 0x04d7, 0x04f4, 0x0507, 0x051e, 0x0531, 0x0531, 0x0546, 0x0557,
+ 0x0557, 0x0568, 0x057d, 0x0590, 0x05ad, 0x05c0, 0x05c0, 0x05d7,
+ 0x05e8, 0x05fb, 0x061b, 0x062e, 0x0647, 0x0647, 0x065a, 0x0671,
+ 0x068a, 0x069f, 0x06b6, 0x06c9, 0x06de, 0x06f1, 0x06f1, 0x071b,
+ 0x072e, 0x072e, 0x0749, 0x0777, 0x07a3, 0x07a3, 0x07a3, 0x07a3,
+ 0x07a3, 0x07a3, 0x07b6, 0x07c7, 0x07c7, 0x07de, 0x07de, 0x07f1,
+ // Entry 80 - BF
+ 0x0804, 0x081d, 0x0830, 0x0845, 0x0858, 0x086b, 0x087c, 0x089b,
+ 0x08b4, 0x08b4, 0x08c9, 0x08ed, 0x0900, 0x0915, 0x092a, 0x093f,
+ 0x093f, 0x0950, 0x0965, 0x0978, 0x0989, 0x0989, 0x0989, 0x0989,
+ 0x099a, 0x09b1, 0x09c4, 0x09d9, 0x09ec, 0x09fb, 0x0a14, 0x0a2d,
+ 0x0a2d, 0x0a42, 0x0a55, 0x0a55, 0x0a68, 0x0a68, 0x0a7b, 0x0a90,
+ 0x0aa1, 0x0ab4, 0x0ab4, 0x0acb, 0x0acb, 0x0acb, 0x0ade, 0x0af1,
+ 0x0af1, 0x0b06, 0x0b06, 0x0b19, 0x0b2a, 0x0b2a, 0x0b2a, 0x0b2a,
+ 0x0b2a, 0x0b2a, 0x0b2a, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d,
+ // Entry C0 - FF
+ 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b3d, 0x0b52, 0x0b52, 0x0b52,
+ 0x0b52, 0x0b52, 0x0b52, 0x0b52, 0x0b61, 0x0b61, 0x0b61, 0x0b61,
+ 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61, 0x0b61,
+ 0x0b61, 0x0b74, 0x0b74, 0x0b85, 0x0b85, 0x0b85, 0x0ba5, 0x0ba5,
+ 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5,
+ 0x0ba5, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6,
+ 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bb6, 0x0bc7, 0x0bc7, 0x0bc7,
+ 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bc7, 0x0bdc, 0x0bdc, 0x0bf1,
+ // Entry 100 - 13F
+ 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0bf1, 0x0c04, 0x0c04,
+ 0x0c04, 0x0c04, 0x0c04, 0x0c17, 0x0c17, 0x0c3b, 0x0c3b, 0x0c4e,
+ 0x0c4e, 0x0c61, 0x0c61, 0x0c61, 0x0c72, 0x0c72, 0x0c72, 0x0c72,
+ 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c72, 0x0c8b,
+ 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b, 0x0c8b,
+ 0x0c8b, 0x0c8b, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0,
+ 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0, 0x0ca0,
+ 0x0ca0, 0x0ca0, 0x0ccc, 0x0ccc, 0x0ccc, 0x0cdf, 0x0cdf, 0x0cdf,
+ // Entry 140 - 17F
+ 0x0cdf, 0x0cf4, 0x0cf4, 0x0cf4, 0x0cf4, 0x0cf4, 0x0d18, 0x0d18,
+ 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d18,
+ 0x0d2d, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d42, 0x0d55, 0x0d55,
+ 0x0d55, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d7f, 0x0da0,
+ 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0da0, 0x0dbc, 0x0dbc, 0x0dbc,
+ 0x0dbc, 0x0dd5, 0x0dd5, 0x0df3, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e0a,
+ 0x0e0a, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e21, 0x0e34, 0x0e34, 0x0e34,
+ 0x0e34, 0x0e34, 0x0e47, 0x0e47, 0x0e47, 0x0e47, 0x0e47, 0x0e47,
+ // Entry 180 - 1BF
+ 0x0e47, 0x0e5c, 0x0e5c, 0x0e5c, 0x0e5c, 0x0e80, 0x0e80, 0x0e80,
+ 0x0e80, 0x0e80, 0x0e8f, 0x0e8f, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2,
+ 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0ea2, 0x0eb5, 0x0eb5, 0x0eb5,
+ 0x0eb5, 0x0eb5, 0x0ec6, 0x0edf, 0x0edf, 0x0eff, 0x0f10, 0x0f10,
+ 0x0f10, 0x0f10, 0x0f10, 0x0f25, 0x0f25, 0x0f25, 0x0f3c, 0x0f3c,
+ 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f3c, 0x0f59, 0x0f59,
+ 0x0f59, 0x0f6a, 0x0f8c, 0x0f8c, 0x0f8c, 0x0f8c, 0x0f8c, 0x0fa1,
+ 0x0fa1, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fb0, 0x0fb0, 0x0fc1, 0x0fc1,
+ // Entry 1C0 - 1FF
+ 0x0fc1, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda,
+ 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda,
+ 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0fda, 0x0feb, 0x0feb,
+ 0x0feb, 0x0feb, 0x0feb, 0x0feb, 0x0feb, 0x0ffe, 0x0ffe, 0x0ffe,
+ 0x0ffe, 0x0ffe, 0x0ffe, 0x100d, 0x100d, 0x100d, 0x100d, 0x1024,
+ 0x1024, 0x1024, 0x1024, 0x1024, 0x1037, 0x1037, 0x1037, 0x1037,
+ 0x1059, 0x1059, 0x106a, 0x106a, 0x106a, 0x1090, 0x1090, 0x1090,
+ 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10a9, 0x10cb, 0x10e5,
+ // Entry 200 - 23F
+ 0x1101, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114, 0x1114,
+ 0x1114, 0x1114, 0x1114, 0x1114, 0x1136, 0x1136, 0x1136, 0x1136,
+ 0x1136, 0x1136, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147,
+ 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147,
+ 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x1147, 0x115e, 0x115e,
+ 0x1195, 0x1195, 0x1195, 0x1195, 0x11ac, 0x11bb, 0x11bb, 0x11bb,
+ 0x11bb, 0x11bb, 0x11bb, 0x11bb, 0x11d0, 0x11d0, 0x11d0, 0x11d0,
+ 0x11d0, 0x11e9, 0x11e9, 0x11e9, 0x11e9, 0x11fa, 0x11fa, 0x11fa,
+ // Entry 240 - 27F
+ 0x11fa, 0x11fa, 0x11fa, 0x11fa, 0x11fa, 0x11fa, 0x11fa, 0x11fa,
+ 0x123f, 0x123f, 0x1261, 0x1261, 0x1296, 0x1296, 0x12be, 0x12f9,
+ 0x1329, 0x1353, 0x1381, 0x13af, 0x13e4, 0x140a, 0x1432, 0x1432,
+ 0x145c, 0x148c, 0x14b0, 0x14c7, 0x14f7, 0x1523, 0x153c, 0x153c,
+ 0x156a, 0x158e,
+} // Size: 1244 bytes
+
+var kmLangStr string = "" + // Size: 5497 bytes
+ "ភាសាអាហ្វារអាប់ខាហ៊្សានភាសាអាវែស្តង់អាហ្វ្រិកានអាកានអាមហារីចភាសាអារ៉ាហ្គ" +
+ "ោនអារ៉ាប់អាសាមីសភាសាអីម៉ារ៉ាអាហ៊្សែរបែហ្សង់បែស្កឺបេឡារុស្សប៊ុលហ្ការីបា" +
+ "ម្បារាបង់ក្លាដែសទីបេប្រីស្តុនបូស្នីកាតាឡានឈីឆេនកូស៊ីខានឆេកឈូវ៉ាសវេលដាណ" +
+ "ឺម៉ាកអាល្លឺម៉ង់ដុងខាអ៊ីវក្រិចអង់គ្លេសអេស្ពេរ៉ាន់តូអេស្ប៉ាញអេស្តូនីបាស្" +
+ "កេភឺសៀនហ្វាំងឡង់ហ៊្វីជីហ្វារូសបារាំងហ្វ្រីស៊ានខាងលិចអៀរឡង់ភាសាហ្កែលិគ " +
+ "(gd)ហ្គាលីស្យានហ្គូរ៉ានីហ្កុយ៉ារាទីមេនហូសាអ៊ីស្រាអែលហិណ្ឌីក្រូអាតហៃទីហុង" +
+ "គ្រីអារមេនីឥណ្ឌូណេស៊ីអ៊ីកបូស៊ីឈាន់យីអ៊ីស្លង់អ៊ីតាលីអ៊ីនុកទីទុតជប៉ុនជ្វ" +
+ "ាហ្សក\u200bហ្ស៊ីគីគូយូកាហ្សាក់ស្តង់់កាឡាលលីស៊ុតខ្មែរកន្នដកូរ៉េកាស្មៀរឃ" +
+ "ឺដកូនីសគៀរហ្គីស្តង់ឡាតំាងលុចហ្សំបួរហ្គាន់ដាលីនកាឡាឡាវលីទុយអានីលូបាកាតា" +
+ "នហ្គាឡាតវីម៉ាឡាហ្គាស៊ីម៉ោរីម៉ាសេដូនីមលយាល័មម៉ុងហ្គោលីម៉ារ៉ាធីម៉ាឡេស៊ីម" +
+ "៉ាល់តាភូមានេបេលេខាងជើងនេប៉ាល់ហុល្លង់ន័រវែស នីនូសន័រវែស បុកម៉ាល់អូរ៉ូម៉" +
+ "ូអូរីយ៉ាបឹនជាពិប៉ូឡូញបាស្តូព័រទុយហ្កាល់កេទជួអារ៉ូម៉ង់រូន្ឌីរូម៉ានីរុស្" +
+ "ស៊ីគិនយ៉ាវ៉ាន់ដាសំស្ក្រឹតស៊ីនឌីសាមីខាងជើងសានហ្គោស្រីលង្កាស្លូវ៉ាគីស្លូ" +
+ "វ៉ានីភាសាសាមូអាសូណាសូម៉ាលីអាល់បានីស៊ែបស៊ូដង់ស៊ុយអែដស្វាហ៊ីលីតាមីលតេលុគ" +
+ "ុតាដហ្សីគីស្តង់ថៃទីរិនយាទួគមេនីស្តង់តុងហ្គោទួរគីតាតាអ៊ុយហ្គឺរអ៊ុយក្រែន" +
+ "អ៊ូរឌូអ៊ូហ្សបេគីស្តង់វៀតណាមវូឡុហ្វឃសាភាសាយីឌីហ្សយរូបាភាសាចួងចិនសូលូអាហ" +
+ "្គីមម៉ាពូឈីអាស៊ូបេមបាបេណាបាឡូជីខាងលិចបូដូឈីហ្គាឆេរូគីខឺដកណ្តាលតៃតាហ្សា" +
+ "ម៉ាសូប៊ីក្រោមឌូអាឡាចូឡាហ៊្វុនយីអេមប៊ូហ្វីលីពីនកាគូសអាល្លឺម៉ង (ស្វីស)ហ្" +
+ "គូស៊ីហាវៃសូប៊ីលើងុំបាម៉ាឆាំកាប៊ីឡេកាំបាម៉ាកូនដេកាប៊ូវឺឌៀនូគុយរ៉ាឈីនីកា" +
+ "លែនជីនគូមីភឹមយ៉ាគគុនកានីសាមបាឡាបាហ្វៀឡានហ្គីឡាកូតាលូរីខាងជើងលូអូលូយ៉ាម" +
+ "៉ាសៃមេរូម៉ូរីស៊ីនម៉ាកគូវ៉ាមីតូមេតាម៊ូហាគមុនដាងម៉ាហ្សានដឺរេនីណាម៉ាអាល្ល" +
+ "ឺម៉ង់ក្រោមក្វាស្យូនគោនូអ័រណានកូលេគីចឈីរុមបូរ៉្វាសាមបូរូសានហ្គូអម្បូរឃឺ" +
+ "ដខាងត្បូងស៊ីណាគុយរ៉ាបូរ៉ុស៊ីនីតាឈីលហ៊ីតសាមីខាងត្បូងលូលីសាមីអ៊ីណារីសាម៉" +
+ "ីស្កុលសាមីកុងហ្គោស្វាហ៊ីលីតេសូតាសាវ៉ាក់តាម៉ាសាយអាត្លាសកណ្តាលភាសាមិនស្គ" +
+ "ាល់វៃវុនចូវ៉ារីប៉ារីសូហ្គាម៉ារ៉ុកគ្មាន\u200bទិន្នន័យ\u200bភាសាអារ៉ាប់ផ" +
+ "្លូវការអេស្ប៉ាញ (អ៊ឺរ៉ុប)ហ្សាក់ស្យុងក្រោមផ្លាមីសព័រទុយហ្គាល់ (អឺរ៉ុប)ម" +
+ "៉ុលដាវីចិន\u200bអក្សរ\u200bកាត់ចិន\u200bអក្សរ\u200bពេញ"
+
+var kmLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0021, 0x0045, 0x006c, 0x008d, 0x009c, 0x00b4, 0x00de,
+ 0x00f3, 0x0108, 0x0108, 0x012c, 0x0159, 0x016b, 0x0186, 0x01a4,
+ 0x01a4, 0x01bc, 0x01da, 0x01e6, 0x0201, 0x0213, 0x0228, 0x0237,
+ 0x0237, 0x024f, 0x024f, 0x0258, 0x0258, 0x026a, 0x0273, 0x028b,
+ 0x02a9, 0x02a9, 0x02b8, 0x02c4, 0x02d3, 0x02eb, 0x0312, 0x032a,
+ 0x0342, 0x0354, 0x0363, 0x0363, 0x037e, 0x0393, 0x03a8, 0x03ba,
+ 0x03ea, 0x03fc, 0x0422, 0x0443, 0x045e, 0x047f, 0x0488, 0x0494,
+ 0x04b2, 0x04c4, 0x04c4, 0x04d9, 0x04e5, 0x04fa, 0x050f, 0x050f,
+ // Entry 40 - 7F
+ 0x050f, 0x052d, 0x052d, 0x053f, 0x055a, 0x055a, 0x055a, 0x0572,
+ 0x0587, 0x05a8, 0x05b7, 0x05c3, 0x05e1, 0x05e1, 0x05f3, 0x05f3,
+ 0x061d, 0x063e, 0x064d, 0x065c, 0x066b, 0x066b, 0x0680, 0x0689,
+ 0x0689, 0x0698, 0x06bc, 0x06ce, 0x06ec, 0x0704, 0x0704, 0x0719,
+ 0x0722, 0x073d, 0x0764, 0x0773, 0x0797, 0x0797, 0x07a6, 0x07c1,
+ 0x07d6, 0x07f4, 0x080c, 0x0824, 0x0839, 0x0845, 0x0845, 0x0869,
+ 0x087e, 0x087e, 0x0893, 0x08b5, 0x08e0, 0x08e0, 0x08e0, 0x08e0,
+ 0x08e0, 0x08e0, 0x08f8, 0x090d, 0x090d, 0x0922, 0x0922, 0x0934,
+ // Entry 80 - BF
+ 0x0946, 0x096a, 0x097f, 0x0994, 0x09a6, 0x09bb, 0x09d0, 0x09f7,
+ 0x0a12, 0x0a12, 0x0a24, 0x0a42, 0x0a57, 0x0a72, 0x0a8d, 0x0aa8,
+ 0x0ac6, 0x0ad2, 0x0ae7, 0x0aff, 0x0b0b, 0x0b0b, 0x0b0b, 0x0b1d,
+ 0x0b32, 0x0b4d, 0x0b5c, 0x0b6e, 0x0b98, 0x0b9e, 0x0bb3, 0x0bd7,
+ 0x0bd7, 0x0bec, 0x0bfb, 0x0bfb, 0x0c07, 0x0c07, 0x0c22, 0x0c3d,
+ 0x0c4f, 0x0c7c, 0x0c7c, 0x0c8e, 0x0c8e, 0x0c8e, 0x0ca3, 0x0cac,
+ 0x0ccd, 0x0cdc, 0x0cf1, 0x0cfa, 0x0d06, 0x0d06, 0x0d06, 0x0d06,
+ 0x0d06, 0x0d06, 0x0d06, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b,
+ // Entry C0 - FF
+ 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d1b, 0x0d30, 0x0d30, 0x0d30,
+ 0x0d30, 0x0d30, 0x0d30, 0x0d30, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f,
+ 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f, 0x0d3f,
+ 0x0d3f, 0x0d4e, 0x0d4e, 0x0d5a, 0x0d5a, 0x0d5a, 0x0d7e, 0x0d7e,
+ 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e, 0x0d7e,
+ 0x0d7e, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a,
+ 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d9c, 0x0d9c, 0x0d9c,
+ 0x0d9c, 0x0d9c, 0x0d9c, 0x0d9c, 0x0d9c, 0x0dae, 0x0dae, 0x0dc9,
+ // Entry 100 - 13F
+ 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dc9, 0x0dd5, 0x0dd5,
+ 0x0dd5, 0x0dd5, 0x0dd5, 0x0dea, 0x0dea, 0x0e08, 0x0e08, 0x0e1a,
+ 0x0e1a, 0x0e3e, 0x0e3e, 0x0e3e, 0x0e50, 0x0e50, 0x0e50, 0x0e50,
+ 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e50, 0x0e6b,
+ 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e6b,
+ 0x0e6b, 0x0e6b, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a,
+ 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a, 0x0e7a,
+ 0x0e7a, 0x0e7a, 0x0ea7, 0x0ea7, 0x0ea7, 0x0ebc, 0x0ebc, 0x0ebc,
+ // Entry 140 - 17F
+ 0x0ebc, 0x0ec8, 0x0ec8, 0x0ec8, 0x0ec8, 0x0ec8, 0x0edd, 0x0edd,
+ 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd, 0x0edd,
+ 0x0eec, 0x0efe, 0x0efe, 0x0efe, 0x0efe, 0x0efe, 0x0f13, 0x0f13,
+ 0x0f13, 0x0f22, 0x0f22, 0x0f22, 0x0f22, 0x0f22, 0x0f3a, 0x0f5b,
+ 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f5b, 0x0f79, 0x0f79, 0x0f79,
+ 0x0f79, 0x0f91, 0x0f91, 0x0fb2, 0x0fc7, 0x0fc7, 0x0fc7, 0x0fc7,
+ 0x0fc7, 0x0fc7, 0x0fc7, 0x0fc7, 0x0fdc, 0x0fee, 0x0fee, 0x0fee,
+ 0x0fee, 0x0fee, 0x1003, 0x1003, 0x1003, 0x1003, 0x1003, 0x1003,
+ // Entry 180 - 1BF
+ 0x1003, 0x1015, 0x1015, 0x1015, 0x1015, 0x1033, 0x1033, 0x1033,
+ 0x1033, 0x1033, 0x103f, 0x103f, 0x104e, 0x104e, 0x104e, 0x104e,
+ 0x104e, 0x104e, 0x104e, 0x104e, 0x104e, 0x105d, 0x105d, 0x105d,
+ 0x105d, 0x105d, 0x1069, 0x1084, 0x1084, 0x10ab, 0x10b7, 0x10b7,
+ 0x10b7, 0x10b7, 0x10b7, 0x10c9, 0x10c9, 0x10c9, 0x10db, 0x10db,
+ 0x10db, 0x10db, 0x10db, 0x10db, 0x10db, 0x10db, 0x1105, 0x1105,
+ 0x1105, 0x1114, 0x1141, 0x1141, 0x1141, 0x1141, 0x1141, 0x1159,
+ 0x1159, 0x1159, 0x1159, 0x1159, 0x1162, 0x1162, 0x1171, 0x1171,
+ // Entry 1C0 - 1FF
+ 0x1171, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186,
+ 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186,
+ 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1186, 0x1195, 0x1195,
+ 0x1195, 0x1195, 0x1195, 0x1195, 0x1195, 0x11a4, 0x11a4, 0x11a4,
+ 0x11a4, 0x11a4, 0x11a4, 0x11b3, 0x11b3, 0x11b3, 0x11b3, 0x11c8,
+ 0x11c8, 0x11c8, 0x11c8, 0x11c8, 0x11dd, 0x11dd, 0x11dd, 0x11dd,
+ 0x1210, 0x1210, 0x121f, 0x121f, 0x121f, 0x124f, 0x124f, 0x124f,
+ 0x126a, 0x126a, 0x126a, 0x126a, 0x126a, 0x126a, 0x128e, 0x12a6,
+ // Entry 200 - 23F
+ 0x12ca, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x12e5,
+ 0x12e5, 0x12e5, 0x12e5, 0x12e5, 0x1315, 0x1315, 0x1315, 0x1315,
+ 0x1315, 0x1315, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321,
+ 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321,
+ 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x1321, 0x133c, 0x133c,
+ 0x137b, 0x137b, 0x137b, 0x137b, 0x13a2, 0x13a8, 0x13a8, 0x13a8,
+ 0x13a8, 0x13a8, 0x13a8, 0x13a8, 0x13b7, 0x13b7, 0x13b7, 0x13b7,
+ 0x13b7, 0x13d5, 0x13d5, 0x13d5, 0x13d5, 0x13e7, 0x13e7, 0x13e7,
+ // Entry 240 - 27F
+ 0x13e7, 0x13e7, 0x13e7, 0x13e7, 0x13e7, 0x13e7, 0x13e7, 0x13e7,
+ 0x13fc, 0x13fc, 0x1435, 0x1435, 0x1462, 0x1462, 0x1462, 0x1462,
+ 0x1462, 0x1462, 0x1462, 0x1462, 0x1462, 0x1492, 0x1492, 0x1492,
+ 0x1492, 0x1492, 0x14c2, 0x14d7, 0x14d7, 0x1510, 0x1528, 0x1528,
+ 0x1552, 0x1579,
+} // Size: 1244 bytes
+
+var knLangStr string = "" + // Size: 11656 bytes
+ "ಅಫಾರ್ಅಬ್ಖಾಜಿಯನ್ಅವೆಸ್ಟನ್ಆಫ್ರಿಕಾನ್ಸ್ಅಕಾನ್ಅಂಹರಿಕ್ಅರಗೊನೀಸ್ಅರೇಬಿಕ್ಅಸ್ಸಾಮೀಸ್ಅವ" +
+ "ರಿಕ್ಅಯ್ಮಾರಾಅಜೆರ್ಬೈಜಾನಿಬಶ್ಕಿರ್ಬೆಲರೂಸಿಯನ್ಬಲ್ಗೇರಿಯನ್ಬಿಸ್ಲಾಮಾಬಂಬಾರಾಬೆಂಗಾಲಿ" +
+ "ಟಿಬೇಟಿಯನ್ಬ್ರೆಟನ್ಬೋಸ್ನಿಯನ್ಕೆಟಲಾನ್ಚೆಚನ್ಕಮೊರೊಕೋರ್ಸಿಕನ್ಕ್ರೀಜೆಕ್ಚರ್ಚ್ ಸ್ಲಾವ" +
+ "ಿಕ್ಚುವಾಶ್ವೆಲ್ಶ್ಡ್ಯಾನಿಶ್ಜರ್ಮನ್ದಿವೆಹಿಜೋಂಗ್\u200cಖಾಈವ್ಗ್ರೀಕ್ಇಂಗ್ಲೀಷ್ಎಸ್ಪೆ" +
+ "ರಾಂಟೊಸ್ಪ್ಯಾನಿಷ್ಎಸ್ಟೊನಿಯನ್ಬಾಸ್ಕ್ಪರ್ಶಿಯನ್ಫುಲಾಹ್ಫಿನ್ನಿಶ್ಫಿಜಿಯನ್ಫರೋಸಿಫ್ರೆಂ" +
+ "ಚ್ಪಶ್ಚಿಮ ಫ್ರಿಸಿಯನ್ಐರಿಷ್ಸ್ಕಾಟಿಶ್ ಗ್ಯಾಲಿಕ್ಗ್ಯಾಲಿಶಿಯನ್ಗೌರಾನಿಗುಜರಾತಿಮ್ಯಾಂಕ" +
+ "್ಸ್ಹೌಸಾಹೀಬ್ರ್ಯೂಹಿಂದಿಹಿರಿ ಮೊಟುಕ್ರೊಯೇಶಿಯನ್ಹೈತಿಯನ್ಹಂಗೇರಿಯನ್ಅರ್ಮೇನಿಯನ್ಹೆರೆ" +
+ "ರೊಇಂಟರ್\u200cಲಿಂಗ್ವಾಇಂಡೋನೇಶಿಯನ್ಇಂಟರ್ಲಿಂಗ್ಇಗ್ಬೊಸಿಚುಅನ್ ಯಿಇನುಪಿಯಾಕ್ಇಡೊಐಸ" +
+ "್ಲಾಂಡಿಕ್ಇಟಾಲಿಯನ್ಇನುಕ್ಟಿಟುಟ್ಜಾಪನೀಸ್ಜಾವಾನೀಸ್ಜಾರ್ಜಿಯನ್ಕೊಂಗೊಕಿಕುಯುಕ್ವಾನ್" +
+ "\u200cಯಾಮಾಕಝಕ್ಕಲಾಲ್ಲಿಸುಟ್ಖಮೇರ್ಕನ್ನಡಕೊರಿಯನ್ಕನುರಿಕಾಶ್ಮೀರಿಕುರ್ದಿಷ್ಕೋಮಿಕೋರ್ನ" +
+ "ಿಷ್ಕಿರ್ಗಿಜ್ಲ್ಯಾಟಿನ್ಲಕ್ಸಂಬರ್ಗ್ಗಾಂಡಾಲಿಂಬರ್ಗಿಶ್ಲಿಂಗಾಲಲಾವೋಲಿಥುವೇನಿಯನ್ಲೂಬಾ-" +
+ "ಕಟಾಂಗಾಲಟ್ವಿಯನ್ಮಲಗಾಸಿಮಾರ್ಶಲ್ಲೀಸ್ಮಾವೋರಿಮೆಸಿಡೋನಿಯನ್ಮಲಯಾಳಂಮಂಗೋಲಿಯನ್ಮರಾಠಿಮಲ" +
+ "ಯ್ಮಾಲ್ಟೀಸ್ಬರ್ಮೀಸ್ನೌರುಉತ್ತರ ದೆಬೆಲೆನೇಪಾಳಿಡೋಂಗಾಡಚ್ನಾರ್ವೆಜಿಯನ್ ನೈನೊಸ್ಕ್ನಾರ" +
+ "್ವೆಜಿಯನ್ ಬೊಕ್ಮಲ್ದಕ್ಷಿಣ ದೆಬೆಲೆನವಾಜೊನ್ಯಾಂಜಾಒಸಿಟನ್ಒಜಿಬ್ವಾಓರೊಮೋಒರಿಯಾಒಸ್ಸೆಟ" +
+ "ಿಕ್ಪಂಜಾಬಿಪಾಲಿಪೋಲಿಶ್ಪಾಷ್ಟೋಪೋರ್ಚುಗೀಸ್ಕ್ವೆಚುವಾರೊಮಾನ್ಷ್ರುಂಡಿರೊಮೇನಿಯನ್ರಷ್ಯನ" +
+ "್ಕೀನ್ಯಾರುವಾಂಡಾಸಂಸ್ಕೃತಸರ್ಡೀನಿಯನ್ಸಿಂಧಿಉತ್ತರ ಸಾಮಿಸಾಂಗೋಸಿಂಹಳಸ್ಲೋವಾಕ್ಸ್ಲೋವೇ" +
+ "ನಿಯನ್ಸಮೋವನ್ಶೋನಾಸೊಮಾಲಿಅಲ್ಬೇನಿಯನ್ಸರ್ಬಿಯನ್ಸ್ವಾತಿದಕ್ಷಿಣ ಸೋಥೋಸುಂಡಾನೀಸ್ಸ್ವೀಡ" +
+ "ಿಷ್ಸ್ವಹಿಲಿತಮಿಳುತೆಲುಗುತಾಜಿಕ್ಥಾಯ್ಟಿಗ್ರಿನ್ಯಾಟರ್ಕ್\u200cಮೆನ್ಸ್ವಾನಾಟೋಂಗನ್ಟರ" +
+ "್ಕಿಶ್ಸೋಂಗಾಟಾಟರ್ತಹಿತಿಯನ್ಉಯಿಘರ್ಉಕ್ರೈನಿಯನ್ಉರ್ದುಉಜ್ಬೇಕ್ವೆಂಡಾವಿಯೇಟ್ನಾಮೀಸ್ವೋ" +
+ "ಲಾಪುಕ್ವಾಲೂನ್ವೋಲೋಫ್ಕ್ಸೋಸಯಡ್ಡಿಶ್ಯೊರುಬಾಝೂವಾಂಗ್ಚೈನೀಸ್ಜುಲುಅಛಿನೀಸ್ಅಕೋಲಿಅಡಂಗ್" +
+ "\u200cಮೆಅಡೈಘೆಆಫ್ರಿಹಿಲಿಅಘೆಮ್ಐನುಅಕ್ಕಾಡಿಯನ್ಅಲೆಯುಟ್ದಕ್ಷಿಣ ಅಲ್ಟಾಯ್ಪ್ರಾಚೀನ ಇಂಗ" +
+ "್ಲೀಷ್ಆಂಗಿಕಾಅರಾಮಿಕ್ಮಪುಚೆಅರಪಾಹೋಅರಾವಾಕ್ಅಸುಆಸ್ಟುರಿಯನ್ಅವಧಿಬಲೂಚಿಬಲಿನೀಸ್ಬಸಾಬೇ" +
+ "ಜಾಬೆಂಬಾಬೆನಪಶ್ಚಿಮ ಬಲೊಚಿಭೋಜಪುರಿಬಿಕೊಲ್ಬಿನಿಸಿಕ್ಸಿಕಾಬ್ರಾಜ್ಬೋಡೊಬುರಿಯಟ್ಬುಗಿನೀ" +
+ "ಸ್ಬ್ಲಿನ್ಕ್ಯಾಡ್ಡೋಕಾರಿಬ್ಅಟ್ಸಮ್ಸೆಬುಆನೋಚಿಗಾಚಿಬ್ಚಾಚಗಟಾಯ್ಚೂಕಿಸೆಮಾರಿಚಿನೂಕ್ ಜಾ" +
+ "ರ್ಗೋನ್ಚೋಕ್ಟಾವ್ಚಿಪೆವ್ಯಾನ್ಚೆರೋಕೀಚೀಯೆನ್ನೇಸೊರಾನಿ ಕುರ್ದಿಷ್ಕೊಪ್ಟಿಕ್ಕ್ರಿಮೀಯನ್" +
+ " ಟರ್ಕಿಷ್ಕಶುಬಿಯನ್ಡಕೋಟದರ್ಗ್ವಾಟೈಟಡೆಲಾವೇರ್ಸ್ಲೇವ್ಡೋಗ್ರಿಬ್ಡಿಂಕಾಜರ್ಮಾಡೋಗ್ರಿಲೋವರ" +
+ "್ ಸೋರ್ಬಿಯನ್ಡುವಾಲಾಮಧ್ಯ ಡಚ್ಜೊಲ-ಫೊನ್ಯಿಡ್ಯೂಲಾಎಂಬುಎಫಿಕ್ಪ್ರಾಚೀನ ಈಜಿಪ್ಟಿಯನ್ಎಕ" +
+ "ಾಜುಕ್ಎಲಾಮೈಟ್ಮಧ್ಯ ಇಂಗ್ಲೀಷ್ಇವಾಂಡೋಫೆಂಗ್ಫಿಲಿಪಿನೊಫೋನ್ಮಧ್ಯ ಫ್ರೆಂಚ್ಪ್ರಾಚೀನ ಫ್" +
+ "ರೆಂಚ್ಉತ್ತರ ಫ್ರಿಸಿಯನ್ಪೂರ್ವ ಫ್ರಿಸಿಯನ್ಫ್ರಿಯುಲಿಯನ್ಗಗಗೌಜ್ಗಾಯೋಗ್ಬಾಯಾಗೀಝ್ಗಿಲ್" +
+ "ಬರ್ಟೀಸ್ಮಧ್ಯ ಹೈ ಜರ್ಮನ್ಪ್ರಾಚೀನ ಹೈ ಜರ್ಮನ್ಗೊಂಡಿಗೊರೊಂಟಾಲೋಗೋಥಿಕ್ಗ್ರೇಬೋಪ್ರಾಚೀ" +
+ "ನ ಗ್ರೀಕ್ಸ್ವಿಸ್ ಜರ್ಮನ್ಗುಸಿಗ್ವಿಚ್\u200cಇನ್ಹೈಡಾಹವಾಯಿಯನ್ಹಿಲಿಗೇನನ್ಹಿಟ್ಟಿಟೆಮ" +
+ "ೋಂಗ್ಅಪ್ಪರ್ ಸರ್ಬಿಯನ್ಹೂಪಾಇಬಾನ್ಇಲ್ಲಿಕೋಇಂಗುಷ್ಲೊಜ್ಬಾನ್ನೊಂಬಾಮ್ಯಕಮೆಜೂಡಿಯೋ-ಪರ್" +
+ "ಶಿಯನ್ಜೂಡಿಯೋ-ಅರೇಬಿಕ್ಕಾರಾ-ಕಲ್ಪಾಕ್ಕಬೈಲ್ಕಚಿನ್ಜ್ಜುಕಂಬಾಕಾವಿಕಬರ್ಡಿಯನ್ಟ್ಯಾಪ್ಮ್" +
+ "ಯಾಕೊಂಡ್ಕಬುವೆರ್ಡಿಯನುಕೋರೋಖಾಸಿಖೋಟಾನೀಸ್ಕೊಯ್ರ ಚೀನಿಕಲೆಂಜಿನ್ಕಿಂಬುಂಡುಕೊಮಿ-ಪರ್ಮ" +
+ "್ಯಕ್ಕೊಂಕಣಿಕೊಸರಿಯನ್ಕಪೆಲ್ಲೆಕರಚಯ್-ಬಲ್ಕಾರ್ಕರೇಲಿಯನ್ಕುರುಖ್ಶಂಬಲಬಫಿಯಕುಮೈಕ್ಕುಟೇ" +
+ "ನಾಯ್ಕಾಡಿನೋಲಾಂಗಿಲಹಂಡಾಲಂಬಾಲೆಜ್ಘಿಯನ್ಲಕೊಟಮೊಂಗೋಲೋಝಿಲುಬ-ಲುಲಾಲೂಯಿಸೆನೋಲುಂಡಾಲುವ" +
+ "ೋಲುಶಾಯ್ಲುಯಿಯಮದುರೀಸ್ಮಗಾಹಿಮೈಥಿಲಿಮಕಾಸರ್ಮಂಡಿಂಗೊಮಸಾಯ್ಮೋಕ್ಷಮಂದಾರ್ಮೆಂಡೆಮೆರುಮೊ" +
+ "ರಿಸನ್ಮಧ್ಯ ಐರಿಷ್ಮ್ಯಖುವಾ- ಮೀಟ್ಟೊಮೆಟಾಮಿಕ್\u200cಮ್ಯಾಕ್ಮಿನಂಗ್\u200cಕಬಾವುಮಂಚ" +
+ "ುಮಣಿಪುರಿಮೊಹಾವ್ಕ್ಮೊಸ್ಸಿಮುಂಡಂಗ್ಬಹುಸಂಖ್ಯೆಯ ಭಾಷೆಗಳುಕ್ರೀಕ್ಕಿರಾಂಡೀಸ್ಮಾರ್ವಾಡಿ" +
+ "ಎರ್\u200cಝ್ಯಾನಿಯಾಪೊಲಿಟನ್ನಮಲೋ ಜರ್ಮನ್ನೇವಾರೀನಿಯಾಸ್ನಿಯುವನ್ಖ್ವಾಸಿಯೊನೊಗಾಯ್ಪ್" +
+ "ರಾಚೀನ ನೋರ್ಸ್ಎನ್\u200cಕೋಉತ್ತರ ಸೋಥೋನೂಯರ್ಶಾಸ್ತ್ರೀಯ ನೇವಾರಿನ್ಯಾಮ್\u200cವೆಂಜ" +
+ "ಿನ್ಯಾನ್\u200cಕೋಲೆನ್ಯೋರೋಜೀಮಾಓಸಾಜ್ಒಟ್ಟೋಮನ್ ತುರ್ಕಿಷ್ಪಂಗಾಸಿನನ್ಪಹ್ಲವಿಪಂಪಾಂಗ" +
+ "ಾಪಾಪಿಯಮೆಂಟೋಪಲುಆನ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಫೀನಿಷಿಯನ್ಪೋನ್\u200c\u200cಪಿಯನ್ಪ್ರಾಚೀನ" +
+ " ಪ್ರೊವೆನ್ಶಿಯಲ್ಕಿಷೆರಾಜಾಸ್ಥಾನಿರಾಪಾನುಯಿರಾರೋಟೊಂಗನ್ರೊಂಬೊರೋಮಾನಿಅರೋಮಾನಿಯನ್ರುವಸಂ" +
+ "ಡಾವೇಯಾಕುಟ್ಸಮರಿಟನ್ ಅರಾಮಿಕ್ಸಂಬುರುಸಸಾಕ್ಸಂತಾಲಿಸಂಗುಸಿಸಿಲಿಯನ್ಸ್ಕೋಟ್ಸ್ದಕ್ಷಿಣ " +
+ "ಕುರ್ದಿಶ್ಸೆನಸೆಲ್ಕಪ್ಕೊಯ್ರಬೊರೊ ಸೆನ್ನಿಪ್ರಾಚೀನ ಐರಿಷ್ಟಷೆಲ್\u200dಹಿಟ್ಶಾನ್ಸಿಡಾ" +
+ "ಮೋದಕ್ಷಿಣ ಸಾಮಿಲೂಲ್ ಸಾಮಿಇನರಿ ಸಾಮಿಸ್ಕೋಟ್ ಸಾಮಿಸೋನಿಂಕೆಸೋಗ್ಡಿಏನ್ಸ್ರಾನನ್ ಟೋಂಗ" +
+ "ೋಸೇರೇರ್ಸುಕುಮಾಸುಸುಸುಮೇರಿಯನ್ಕಾಂಗೊ ಸ್ವಹಿಲಿಶಾಸ್ತ್ರೀಯ ಸಿರಿಯಕ್ಸಿರಿಯಕ್ಟಿಮ್ನೆಟ" +
+ "ೆಸೊಟೆರೆನೋಟೇಟಮ್ಟೈಗ್ರೆಟಿವ್ಟೊಕೆಲಾವ್ಕ್ಲಿಂಗನ್ಟ್ಲಿಂಗಿಟ್ಟಮಾಷೆಕ್ನ್ಯಾಸಾ ಟೋಂಗಾಟೋ" +
+ "ಕ್ ಪಿಸಿನ್ಸಿಂಶಿಯನ್ತುಂಬುಕಾಟುವಾಲುಟಸವಕ್ಟುವಿನಿಯನ್ಮಧ್ಯ ಅಟ್ಲಾಸ್ ಟಮಜೈಟ್ಉಡ್" +
+ "\u200cಮುರ್ಟ್ಉಗಾರಿಟಿಕ್ಉಂಬುಂಡುರೂಟ್ವಾಯಿವೋಟಿಕ್ವುಂಜೊವಲಾಮೋವರಾಯ್ವಾಷೋವಾರ್ಲ್" +
+ "\u200cಪಿರಿಕಲ್\u200cಮೈಕ್ಸೊಗಯಾಓಯಪೀಸೆಝೋಪೊಟೆಕ್ಬ್ಲಿಸ್\u200cಸಿಂಬಲ್ಸ್ಝೆನಾಗಾಸ್ಟ್" +
+ "ಯಾಂಡರ್ಡ್ ಮೊರೊಕ್ಕನ್ ಟಮಜೈಟ್ಝೂನಿಯಾವುದೇ ಭಾಷಾಸಂಬಂಧಿ ವಿಷಯವಿಲ್ಲಜಾಝಾಆಧುನಿಕ ಪ್ರ" +
+ "ಮಾಣಿತ ಅರೇಬಿಕ್ಆಸ್ಟ್ರಿಯನ್ ಜರ್ಮನ್ಸ್ವಿಸ್ ಹೈ ಜರ್ಮನ್ಆಸ್ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲೀಷ್ಕೆನ" +
+ "ೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲೀಷ್ಅಮೆರಿಕನ್ ಇಂಗ್ಲೀಷ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕನ್ ಸ್ಪ" +
+ "್ಯಾನಿಶ್ಯುರೋಪಿಯನ್ ಸ್ಪ್ಯಾನಿಷ್ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್ಸ್ವಿಸ್" +
+ " ಫ್ರೆಂಚ್ಫ್ಲೆಮಿಷ್ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಮೊಲ್ಡೆವಿಯನ್ಸರ್" +
+ "ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ಸರಳೀಕೃತ ಚೈನೀಸ್ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್"
+
+var knLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x002d, 0x0045, 0x0066, 0x0075, 0x008a, 0x00a2,
+ 0x00b7, 0x00d2, 0x00e4, 0x00f9, 0x011a, 0x012f, 0x014d, 0x016b,
+ 0x0183, 0x0195, 0x01aa, 0x01c5, 0x01da, 0x01f5, 0x020a, 0x0219,
+ 0x0228, 0x0243, 0x024f, 0x025b, 0x0283, 0x0295, 0x02a7, 0x02bf,
+ 0x02d1, 0x02e3, 0x02fb, 0x0304, 0x0316, 0x032e, 0x034c, 0x036a,
+ 0x0388, 0x039a, 0x03b2, 0x03c4, 0x03dc, 0x03f1, 0x0400, 0x0415,
+ 0x0443, 0x0452, 0x0483, 0x04a4, 0x04b6, 0x04cb, 0x04e6, 0x04f2,
+ 0x050a, 0x0519, 0x0532, 0x0553, 0x0568, 0x0583, 0x05a1, 0x05b3,
+ // Entry 40 - 7F
+ 0x05da, 0x05fb, 0x0619, 0x0628, 0x0644, 0x065f, 0x0668, 0x0686,
+ 0x069e, 0x06bf, 0x06d4, 0x06ec, 0x0707, 0x0716, 0x0728, 0x0749,
+ 0x0755, 0x0776, 0x0785, 0x0794, 0x07a9, 0x07b8, 0x07d0, 0x07e8,
+ 0x07f4, 0x080c, 0x0824, 0x083c, 0x085a, 0x0869, 0x0887, 0x0899,
+ 0x08a5, 0x08c6, 0x08e5, 0x08fd, 0x090f, 0x0930, 0x0942, 0x0963,
+ 0x0975, 0x0990, 0x099f, 0x09ab, 0x09c3, 0x09d8, 0x09e4, 0x0a06,
+ 0x0a18, 0x0a27, 0x0a30, 0x0a6a, 0x0aa1, 0x0ac6, 0x0ad5, 0x0aea,
+ 0x0afc, 0x0b11, 0x0b20, 0x0b2f, 0x0b4a, 0x0b5c, 0x0b68, 0x0b7a,
+ // Entry 80 - BF
+ 0x0b8c, 0x0baa, 0x0bc2, 0x0bda, 0x0be9, 0x0c04, 0x0c16, 0x0c3d,
+ 0x0c52, 0x0c70, 0x0c7f, 0x0c9b, 0x0caa, 0x0cb9, 0x0cd1, 0x0cf2,
+ 0x0d04, 0x0d10, 0x0d22, 0x0d40, 0x0d58, 0x0d6a, 0x0d89, 0x0da4,
+ 0x0dbc, 0x0dd1, 0x0de0, 0x0df2, 0x0e04, 0x0e10, 0x0e2e, 0x0e4c,
+ 0x0e5e, 0x0e70, 0x0e85, 0x0e94, 0x0ea3, 0x0ebb, 0x0ecd, 0x0eeb,
+ 0x0efa, 0x0f0f, 0x0f1e, 0x0f42, 0x0f5a, 0x0f6c, 0x0f7e, 0x0f8d,
+ 0x0fa2, 0x0fb4, 0x0fc9, 0x0fdb, 0x0fe7, 0x0ffc, 0x100b, 0x1023,
+ 0x1032, 0x1032, 0x104d, 0x105c, 0x1065, 0x1083, 0x1083, 0x1098,
+ // Entry C0 - FF
+ 0x1098, 0x10c0, 0x10ee, 0x1100, 0x1115, 0x1124, 0x1124, 0x1136,
+ 0x1136, 0x114b, 0x114b, 0x114b, 0x1154, 0x1154, 0x1172, 0x1172,
+ 0x117e, 0x118d, 0x11a2, 0x11a2, 0x11ab, 0x11ab, 0x11ab, 0x11ab,
+ 0x11b7, 0x11c6, 0x11c6, 0x11cf, 0x11cf, 0x11cf, 0x11f1, 0x1206,
+ 0x1218, 0x1224, 0x1224, 0x1224, 0x123c, 0x123c, 0x123c, 0x124e,
+ 0x124e, 0x125a, 0x125a, 0x126f, 0x1287, 0x1287, 0x1299, 0x1299,
+ 0x12b1, 0x12c3, 0x12c3, 0x12d5, 0x12ea, 0x12f6, 0x1308, 0x131a,
+ 0x132c, 0x1338, 0x1363, 0x137b, 0x1399, 0x13ab, 0x13c3, 0x13ee,
+ // Entry 100 - 13F
+ 0x1406, 0x1406, 0x1437, 0x144f, 0x145b, 0x1470, 0x1479, 0x1491,
+ 0x14a3, 0x14bb, 0x14ca, 0x14d9, 0x14eb, 0x1516, 0x1516, 0x1528,
+ 0x153e, 0x155a, 0x156c, 0x156c, 0x1578, 0x1587, 0x1587, 0x15bb,
+ 0x15d0, 0x15e5, 0x160a, 0x160a, 0x161c, 0x161c, 0x162b, 0x1643,
+ 0x1643, 0x164f, 0x164f, 0x1671, 0x169c, 0x169c, 0x16c7, 0x16f2,
+ 0x1713, 0x1716, 0x1725, 0x1725, 0x1731, 0x1743, 0x1743, 0x174f,
+ 0x1770, 0x1770, 0x1796, 0x17c5, 0x17c5, 0x17d4, 0x17ef, 0x1801,
+ 0x1813, 0x183b, 0x1860, 0x1860, 0x1860, 0x186c, 0x188a, 0x1896,
+ // Entry 140 - 17F
+ 0x1896, 0x18ae, 0x18ae, 0x18c9, 0x18e1, 0x18f0, 0x191b, 0x191b,
+ 0x1927, 0x1936, 0x1936, 0x194b, 0x195d, 0x195d, 0x195d, 0x1975,
+ 0x1984, 0x1996, 0x19c1, 0x19e9, 0x19e9, 0x1a0b, 0x1a1a, 0x1a29,
+ 0x1a35, 0x1a41, 0x1a4d, 0x1a68, 0x1a68, 0x1a7a, 0x1a95, 0x1ab9,
+ 0x1ab9, 0x1ac5, 0x1ac5, 0x1ad1, 0x1ae9, 0x1b05, 0x1b05, 0x1b05,
+ 0x1b05, 0x1b1d, 0x1b35, 0x1b5a, 0x1b6c, 0x1b84, 0x1b99, 0x1bbe,
+ 0x1bbe, 0x1bbe, 0x1bd6, 0x1be8, 0x1bf4, 0x1c00, 0x1c00, 0x1c12,
+ 0x1c2a, 0x1c3c, 0x1c4b, 0x1c5a, 0x1c66, 0x1c81, 0x1c81, 0x1c81,
+ // Entry 180 - 1BF
+ 0x1c81, 0x1c8d, 0x1c8d, 0x1c9c, 0x1ca8, 0x1ca8, 0x1ca8, 0x1cbe,
+ 0x1cd6, 0x1ce5, 0x1cf1, 0x1d03, 0x1d12, 0x1d12, 0x1d12, 0x1d27,
+ 0x1d27, 0x1d36, 0x1d48, 0x1d5a, 0x1d6f, 0x1d7e, 0x1d7e, 0x1d8d,
+ 0x1d9f, 0x1dae, 0x1dba, 0x1dcf, 0x1deb, 0x1e14, 0x1e20, 0x1e41,
+ 0x1e65, 0x1e71, 0x1e86, 0x1e9e, 0x1eb0, 0x1eb0, 0x1ec5, 0x1ef9,
+ 0x1f0b, 0x1f26, 0x1f3e, 0x1f3e, 0x1f3e, 0x1f56, 0x1f56, 0x1f56,
+ 0x1f77, 0x1f7d, 0x1f96, 0x1fa8, 0x1fba, 0x1fcf, 0x1fcf, 0x1fe7,
+ 0x1fe7, 0x1ff9, 0x2021, 0x2021, 0x2033, 0x204f, 0x205e, 0x208c,
+ // Entry 1C0 - 1FF
+ 0x20b0, 0x20d1, 0x20e3, 0x20ef, 0x20fe, 0x212f, 0x214a, 0x215c,
+ 0x2171, 0x218f, 0x21a1, 0x21a1, 0x21a1, 0x21a1, 0x21cf, 0x21cf,
+ 0x21ea, 0x21ea, 0x21ea, 0x220b, 0x220b, 0x2248, 0x2254, 0x2254,
+ 0x2272, 0x228a, 0x22a8, 0x22a8, 0x22a8, 0x22b7, 0x22c9, 0x22c9,
+ 0x22c9, 0x22c9, 0x22e7, 0x22f0, 0x2302, 0x2314, 0x233f, 0x2351,
+ 0x2360, 0x2372, 0x2372, 0x2372, 0x237e, 0x2399, 0x23b1, 0x23b1,
+ 0x23dc, 0x23dc, 0x23e5, 0x23e5, 0x23fa, 0x2428, 0x244d, 0x244d,
+ 0x246b, 0x2477, 0x2477, 0x2489, 0x2489, 0x2489, 0x24a8, 0x24c1,
+ // Entry 200 - 23F
+ 0x24da, 0x24f9, 0x250e, 0x2529, 0x254e, 0x2560, 0x2560, 0x2560,
+ 0x2572, 0x257e, 0x2599, 0x2599, 0x25be, 0x25ef, 0x2604, 0x2604,
+ 0x2604, 0x2616, 0x2622, 0x2634, 0x2643, 0x2655, 0x2661, 0x2679,
+ 0x2679, 0x2691, 0x26ac, 0x26ac, 0x26c1, 0x26e3, 0x2702, 0x2702,
+ 0x2702, 0x2702, 0x271a, 0x271a, 0x272f, 0x2741, 0x2750, 0x276b,
+ 0x27a0, 0x27be, 0x27d9, 0x27ee, 0x27fa, 0x2806, 0x2806, 0x2806,
+ 0x2806, 0x2806, 0x2818, 0x2818, 0x2827, 0x2827, 0x2836, 0x2845,
+ 0x2851, 0x2872, 0x2872, 0x288a, 0x288a, 0x2893, 0x289c, 0x28ab,
+ // Entry 240 - 27F
+ 0x28ab, 0x28ab, 0x28ab, 0x28ab, 0x28c3, 0x28f0, 0x28f0, 0x2902,
+ 0x2955, 0x2961, 0x29ae, 0x29ba, 0x29fb, 0x29fb, 0x2a2c, 0x2a58,
+ 0x2a95, 0x2ac9, 0x2afa, 0x2b2b, 0x2b7b, 0x2bb5, 0x2bef, 0x2bef,
+ 0x2c20, 0x2c48, 0x2c48, 0x2c60, 0x2ca0, 0x2cda, 0x2cfb, 0x2d2c,
+ 0x2d54, 0x2d88,
+} // Size: 1244 bytes
+
+var koLangStr string = "" + // Size: 7007 bytes
+ "아파르어압카즈어아베스타어아프리칸스어아칸어암하라어아라곤어아랍어아삼어아바릭어아이마라어아제르바이잔어바슈키르어벨라루스어불가리아어비슬라마어" +
+ "밤바라어벵골어티베트어브르타뉴어보스니아어카탈로니아어체첸어차모로어코르시카어크리어체코어교회 슬라브어추바시어웨일스어덴마크어독일어디베히" +
+ "어종카어에웨어그리스어영어에스페란토어스페인어에스토니아어바스크어페르시아어풀라어핀란드어피지어페로어프랑스어서프리지아어아일랜드어스코틀랜" +
+ "드 게일어갈리시아어과라니어구자라트어맹크스어하우사어히브리어힌디어히리 모투어크로아티아어아이티어헝가리어아르메니아어헤레로어인테르링구아" +
+ " (국제보조어협회)인도네시아어인테르링구에이그보어쓰촨 이어이누피아크어이도어아이슬란드어이탈리아어이눅티투트어일본어자바어조지아어콩고어키쿠" +
+ "유어쿠안야마어카자흐어그린란드어캄보디아어칸나다어한국어칸누리어카슈미르어쿠르드어코미어콘월어키르기스어라틴어룩셈부르크어간다어림버거어링갈" +
+ "라어라오어리투아니아어루바-카탄가어라트비아어말라가시어마셜제도어마오리어마케도니아어말라얄람어몽고어마라티어말레이어몰타어버마어나우루어북" +
+ "부 은데벨레어네팔어느동가어네덜란드어노르웨이어(니노르스크)노르웨이어(보크말)남부 은데벨레어나바호어니안자어; 치츄어; 츄어오크어오" +
+ "지브웨이어오로모어오리야어오세트어펀잡어팔리어폴란드어파슈토어포르투갈어케추아어로만시어룬디어루마니아어러시아어르완다어산스크리트어사르디니" +
+ "아어신디어북부 사미어산고어스리랑카어슬로바키아어슬로베니아어사모아어쇼나어소말리아어알바니아어세르비아어시스와티어소토어 (남부)순다어스" +
+ "웨덴어스와힐리어타밀어텔루구어타지크어태국어티그리냐어투르크멘어세츠와나어통가어터키어총가어타타르어타히티어위구르어우크라이나어우르두어우즈" +
+ "베크어벤다어베트남어볼라퓌크어왈론어월로프어코사어이디시어요루바어주앙어중국어줄루어아체어아콜리어아당메어아닥헤어튀니지 아랍어아프리히리어" +
+ "아그햄어아이누어아카드어알류트어남부 알타이어고대 영어앙가어아람어아라우칸어아라파호어알제리 아랍어아라와크어모로코 아랍어이집트 아랍어" +
+ "아수어아스투리아어아와히어발루치어발리어바사어바문어고말라어베자어벰바어베나어바푸트어서부 발로치어호즈푸리어비콜어비니어콤어식시카어브라지" +
+ "어브라후이어보도어아쿠즈어부리아타부기어불루어브린어메둠바어카도어카리브어카유가어앗삼어세부아노어치가어치브차어차가타이어추크어마리어치누크" +
+ "어와 영어 프랑스어의 혼성어촉토어치페우얀체로키어샤이엔어소라니 쿠르드어콥트어크리민 터키어; 크리민 타타르어카슈비아어다코타어다르그" +
+ "와어타이타어델라웨어어슬라브어도그리브어딩카어자르마어도그리어저지 소르비아어두알라어중세 네덜란드어졸라 포니어드율라어다장가어엠부어이픽" +
+ "어이집트어 (고대)이카죽어엘람어영어, 중세이원도어팡그어필리핀어폰어중세 프랑스어고대 프랑스어북부 프리슬란드어동부 프리슬란드어프리" +
+ "우리안어가어가가우스어가요어그바야어조로아스터 다리어게이즈어키리바시어길라키어중세 고지 독일어고대 고지 독일어고아 콘칸어곤디어고론탈" +
+ "로어고트어게르보어그리스어, 고대독일어(스위스)구시어그위친어하이다어하와이어피지 힌디어헤리가뇬어하타이트어히몸어고지 소르비아어후파어" +
+ "이반어이비비오어이로코어인귀시어로반어응곰바어마차메어유대-페르시아어유대-아라비아어카라칼파크어커바일어카친어까꼬토끄어캄바어카위어카바르" +
+ "디어카넴부어티얍어마콘데어크리올어코로어카시어호탄어코이라 친니어코와르어카코어칼렌진어킴분두어코미페르먀크어코카니어코스라이엔어크펠레어카" +
+ "라챠이-발카르어카렐리야어쿠르크어샴발라어바피아어콜로그니안어쿠믹어쿠테네어라디노어랑기어라한다어람바어레즈기안어링구아 프랑카 노바라코타" +
+ "어몽구어로지어북부 루리어루바-룰루아어루이세노어룬다어루오어루샤이어루야어마두라어마파어마가히마이틸리마카사어만딩고어마사이어마바어모크샤" +
+ "어만다르어멘데어메루어모리스얀어아일랜드어, 중세마크후와-메토어메타어미크맥어미낭카바우만주어마니푸리어모호크어모시어서부 마리어문당어다" +
+ "중 언어크리크어미란데어마르와리어미예네어엘즈야어마잔데라니어나폴리어나마어저지 독일어네와르어니아스어니웨언어크와시오어느기엠본어노가이어" +
+ "노르웨이, 고대응코어소토어 (북부)누에르어네와르어 (고전)니암웨지어니안콜어뉴로어느지마어오세이지어터키어, 오스만판가시난어팔레비어" +
+ "팜팡가어파피아먼토어파라우안어고대 페르시아어페니키아어폰틱어폼페이어고대 프로방스어키체어라자스탄어라파뉴이라로통가어롬보어집시어루신어아" +
+ "로마니아어르와어산다웨어야큐트어사마리아 아랍어삼부루어사사크어산탈리어느감바이어상구어시칠리아어스코틀랜드어남부 쿠르드어세네카어세나어셀" +
+ "쿠프어코이야보로 세니어아일랜드, 고대타셸히트어샨어차디언 아라비아어시다모어남부 사미어룰레 사미어이나리 사미어스콜트 사미어소닌케어" +
+ "소그디엔어스라난 통가어세레르어사호어수쿠마족어수수어수메르어코모로어콩고 스와힐리어시리아어 (고전)시리아어팀니어테조어테레노어테툼어티" +
+ "그레어티비어토켈라우제도어차후르어클링온어틀링깃족어탈리쉬어타마섹어통가어 (니아살랜드)토크 피신어타로코어트심시안어툼부카어투발루어타사" +
+ "와크어투비니안어중앙 모로코 타마지트어우드말트어유가리틱어윤번두어어근바이어보틱어분조어월저어와라모어와라이어와쇼어왈피리어칼미크어소가어" +
+ "야오족어얍페세어양본어옘바어사포테크어블리스 심볼제나가어표준 모로코 타마지트어주니어언어 관련 내용 없음자자어현대 표준 아랍어고지 " +
+ "독일어(스위스)영어(호주)플라망어몰도바어세르비아-크로아티아어"
+
+var koLangIdx = []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x0018, 0x0027, 0x0039, 0x0042, 0x004e, 0x005a,
+ 0x0063, 0x006c, 0x0078, 0x0087, 0x009c, 0x00ab, 0x00ba, 0x00c9,
+ 0x00d8, 0x00e4, 0x00ed, 0x00f9, 0x0108, 0x0117, 0x0129, 0x0132,
+ 0x013e, 0x014d, 0x0156, 0x015f, 0x0172, 0x017e, 0x018a, 0x0196,
+ 0x019f, 0x01ab, 0x01b4, 0x01bd, 0x01c9, 0x01cf, 0x01e1, 0x01ed,
+ 0x01ff, 0x020b, 0x021a, 0x0223, 0x022f, 0x0238, 0x0241, 0x024d,
+ 0x025f, 0x026e, 0x0287, 0x0296, 0x02a2, 0x02b1, 0x02bd, 0x02c9,
+ 0x02d5, 0x02de, 0x02ee, 0x0300, 0x030c, 0x0318, 0x032a, 0x0336,
+ // Entry 40 - 7F
+ 0x0360, 0x0372, 0x0384, 0x0390, 0x039d, 0x03af, 0x03b8, 0x03ca,
+ 0x03d9, 0x03eb, 0x03f4, 0x03fd, 0x0409, 0x0412, 0x041e, 0x042d,
+ 0x0439, 0x0448, 0x0457, 0x0463, 0x046c, 0x0478, 0x0487, 0x0493,
+ 0x049c, 0x04a5, 0x04b4, 0x04bd, 0x04cf, 0x04d8, 0x04e4, 0x04f0,
+ 0x04f9, 0x050b, 0x051e, 0x052d, 0x053c, 0x054b, 0x0557, 0x0569,
+ 0x0578, 0x0581, 0x058d, 0x0599, 0x05a2, 0x05ab, 0x05b7, 0x05cd,
+ 0x05d6, 0x05e2, 0x05f1, 0x0611, 0x062b, 0x0641, 0x064d, 0x066c,
+ 0x0675, 0x0687, 0x0693, 0x069f, 0x06ab, 0x06b4, 0x06bd, 0x06c9,
+ // Entry 80 - BF
+ 0x06d5, 0x06e4, 0x06f0, 0x06fc, 0x0705, 0x0714, 0x0720, 0x072c,
+ 0x073e, 0x0750, 0x0759, 0x0769, 0x0772, 0x0781, 0x0793, 0x07a5,
+ 0x07b1, 0x07ba, 0x07c9, 0x07d8, 0x07e7, 0x07f6, 0x0808, 0x0811,
+ 0x081d, 0x082c, 0x0835, 0x0841, 0x084d, 0x0856, 0x0865, 0x0874,
+ 0x0883, 0x088c, 0x0895, 0x089e, 0x08aa, 0x08b6, 0x08c2, 0x08d4,
+ 0x08e0, 0x08ef, 0x08f8, 0x0904, 0x0913, 0x091c, 0x0928, 0x0931,
+ 0x093d, 0x0949, 0x0952, 0x095b, 0x0964, 0x096d, 0x0979, 0x0985,
+ 0x0991, 0x09a4, 0x09b6, 0x09c2, 0x09ce, 0x09da, 0x09da, 0x09e6,
+ // Entry C0 - FF
+ 0x09e6, 0x09f9, 0x0a06, 0x0a0f, 0x0a18, 0x0a27, 0x0a27, 0x0a36,
+ 0x0a49, 0x0a58, 0x0a6b, 0x0a7e, 0x0a87, 0x0a87, 0x0a99, 0x0a99,
+ 0x0aa5, 0x0ab1, 0x0aba, 0x0aba, 0x0ac3, 0x0acc, 0x0acc, 0x0ad8,
+ 0x0ae1, 0x0aea, 0x0aea, 0x0af3, 0x0aff, 0x0aff, 0x0b12, 0x0b21,
+ 0x0b2a, 0x0b33, 0x0b33, 0x0b39, 0x0b45, 0x0b45, 0x0b45, 0x0b51,
+ 0x0b60, 0x0b69, 0x0b75, 0x0b81, 0x0b8a, 0x0b93, 0x0b9c, 0x0ba8,
+ 0x0bb1, 0x0bbd, 0x0bc9, 0x0bd2, 0x0be1, 0x0bea, 0x0bf6, 0x0c05,
+ 0x0c0e, 0x0c17, 0x0c47, 0x0c50, 0x0c5c, 0x0c68, 0x0c74, 0x0c8a,
+ // Entry 100 - 13F
+ 0x0c93, 0x0c93, 0x0cbe, 0x0ccd, 0x0cd9, 0x0ce8, 0x0cf4, 0x0d03,
+ 0x0d0f, 0x0d1e, 0x0d27, 0x0d33, 0x0d3f, 0x0d55, 0x0d55, 0x0d61,
+ 0x0d77, 0x0d87, 0x0d93, 0x0d9f, 0x0da8, 0x0db1, 0x0db1, 0x0dc6,
+ 0x0dd2, 0x0ddb, 0x0de9, 0x0de9, 0x0df5, 0x0df5, 0x0dfe, 0x0e0a,
+ 0x0e0a, 0x0e10, 0x0e10, 0x0e23, 0x0e36, 0x0e36, 0x0e4f, 0x0e68,
+ 0x0e7a, 0x0e80, 0x0e8f, 0x0e8f, 0x0e98, 0x0ea4, 0x0ebd, 0x0ec9,
+ 0x0ed8, 0x0ee4, 0x0efb, 0x0f12, 0x0f22, 0x0f2b, 0x0f3a, 0x0f43,
+ 0x0f4f, 0x0f63, 0x0f77, 0x0f77, 0x0f77, 0x0f80, 0x0f8c, 0x0f98,
+ // Entry 140 - 17F
+ 0x0f98, 0x0fa4, 0x0fb4, 0x0fc3, 0x0fd2, 0x0fdb, 0x0ff1, 0x0ff1,
+ 0x0ffa, 0x1003, 0x1012, 0x101e, 0x102a, 0x102a, 0x102a, 0x1033,
+ 0x103f, 0x104b, 0x1061, 0x1077, 0x1077, 0x1089, 0x1095, 0x109e,
+ 0x10ad, 0x10b6, 0x10bf, 0x10ce, 0x10da, 0x10e3, 0x10ef, 0x10fb,
+ 0x10fb, 0x1104, 0x1104, 0x110d, 0x1116, 0x1129, 0x1135, 0x1135,
+ 0x113e, 0x114a, 0x1156, 0x116b, 0x1177, 0x1189, 0x1195, 0x11ae,
+ 0x11ae, 0x11ae, 0x11bd, 0x11c9, 0x11d5, 0x11e1, 0x11f3, 0x11fc,
+ 0x1208, 0x1214, 0x121d, 0x1229, 0x1232, 0x1241, 0x125b, 0x125b,
+ // Entry 180 - 1BF
+ 0x125b, 0x1267, 0x1267, 0x1270, 0x1279, 0x1289, 0x1289, 0x129c,
+ 0x12ab, 0x12b4, 0x12bd, 0x12c9, 0x12d2, 0x12d2, 0x12d2, 0x12de,
+ 0x12e7, 0x12f0, 0x12fc, 0x1308, 0x1314, 0x1320, 0x1329, 0x1335,
+ 0x1341, 0x134a, 0x1353, 0x1362, 0x1379, 0x138f, 0x1398, 0x13a4,
+ 0x13b3, 0x13bc, 0x13cb, 0x13d7, 0x13e0, 0x13f0, 0x13f9, 0x1406,
+ 0x1412, 0x141e, 0x142d, 0x142d, 0x1439, 0x1445, 0x1457, 0x1457,
+ 0x1463, 0x146c, 0x147c, 0x1488, 0x1494, 0x14a0, 0x14a0, 0x14af,
+ 0x14be, 0x14ca, 0x14de, 0x14de, 0x14e7, 0x14f9, 0x1505, 0x151a,
+ // Entry 1C0 - 1FF
+ 0x1529, 0x1535, 0x153e, 0x154a, 0x1559, 0x156d, 0x157c, 0x1588,
+ 0x1594, 0x15a6, 0x15b5, 0x15b5, 0x15b5, 0x15b5, 0x15cb, 0x15cb,
+ 0x15da, 0x15da, 0x15e3, 0x15ef, 0x15ef, 0x1605, 0x160e, 0x160e,
+ 0x161d, 0x1629, 0x1638, 0x1638, 0x1638, 0x1641, 0x164a, 0x164a,
+ 0x1653, 0x1653, 0x1665, 0x166e, 0x167a, 0x1686, 0x169c, 0x16a8,
+ 0x16b4, 0x16c0, 0x16c0, 0x16cf, 0x16d8, 0x16e7, 0x16f9, 0x16f9,
+ 0x170c, 0x1718, 0x1721, 0x1721, 0x172d, 0x1746, 0x175a, 0x175a,
+ 0x1769, 0x176f, 0x1788, 0x1794, 0x1794, 0x1794, 0x17a4, 0x17b4,
+ // Entry 200 - 23F
+ 0x17c7, 0x17da, 0x17e6, 0x17f5, 0x1808, 0x1814, 0x181d, 0x181d,
+ 0x182c, 0x1835, 0x1841, 0x184d, 0x1863, 0x1878, 0x1884, 0x1884,
+ 0x1884, 0x188d, 0x1896, 0x18a2, 0x18ab, 0x18b7, 0x18c0, 0x18d5,
+ 0x18e1, 0x18ed, 0x18fc, 0x1908, 0x1914, 0x192f, 0x193f, 0x193f,
+ 0x194b, 0x194b, 0x195a, 0x195a, 0x1966, 0x1972, 0x1981, 0x1990,
+ 0x19b0, 0x19bf, 0x19ce, 0x19da, 0x19e0, 0x19e9, 0x19e9, 0x19e9,
+ 0x19e9, 0x19e9, 0x19f2, 0x19f2, 0x19fb, 0x1a04, 0x1a10, 0x1a1c,
+ 0x1a25, 0x1a31, 0x1a31, 0x1a3d, 0x1a3d, 0x1a46, 0x1a52, 0x1a5e,
+ // Entry 240 - 27F
+ 0x1a67, 0x1a70, 0x1a70, 0x1a70, 0x1a7f, 0x1a8f, 0x1a8f, 0x1a9b,
+ 0x1abb, 0x1ac4, 0x1adf, 0x1ae8, 0x1aff, 0x1aff, 0x1aff, 0x1b1a,
+ 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28, 0x1b28,
+ 0x1b28, 0x1b28, 0x1b28, 0x1b34, 0x1b34, 0x1b34, 0x1b40, 0x1b5f,
+} // Size: 1240 bytes
+
+var kyLangStr string = "" + // Size: 3906 bytes
+ "абхазчаафрикаанчааканчаамхарчаарабчаассамчаазербайжанчабашкырчабеларусча" +
+ "болгарчабамбарадабангладешчетибетчебретончобоснийчекаталанчачеченчекорс" +
+ "иканчачехчечувашчауелшчедатчанемисчежонгучаэбечегрекчеанглисчеэсперанто" +
+ "испанчаэстончобаскчафарсчафинчефижичефароэчефранцузчабатыш фризчеирланд" +
+ "чагалисиячагуарашгужаратчаманксычахаусачаивриттехиндичехорватчагаитичем" +
+ "ажарчаармянчаиндонезчеигбочоносучаисландчаиталиянчаинуктитуттаяпончожав" +
+ "анизчегрузинчекикуйичеказакчакалаалисутчакмерчеканнадачакорейчекашмирче" +
+ "курдчакорнишчекыргызчалатынчалюксембургчагандачалингалачалаочолитовчолу" +
+ "ба-катангачалатышчамалагасчамаоричемакедончомалайаламчамоңголчомаратиче" +
+ "малайчамалтизчебурмачатүндүк ндыбелченепалчаголландчанорвежче (Нинорск)" +
+ "норвежче (Букмал)оромочоориячапунжабичеполякчапашточопортугалчакечуачар" +
+ "оманшчарундичерумынчаорусчаруандачасанскритчесиндхичетүндүк самичесанго" +
+ "чосингалачасловакчасловенчешоначасомаличеалбанчасербчесесотосунданчашве" +
+ "дчесуахиличетамилчетелугучатажикчетайчатигриниачатүркмөнчөтонгачатүркчө" +
+ "татарчауйгурчаукраинчеурдучаөзбекчевьетнамчауолофчокосачаидишчейорубача" +
+ "кытайчазулучаагемчемапучедеасучабембачабеначачыгыш балучичебододочигача" +
+ "черокичесорани курдтаитачазамрачатөмөнкү сорбианчадуалачажола-фоничеэмб" +
+ "учафилипиногагаузчанемисче (Швейцария)гусичегавайчажогорку сорбианчанго" +
+ "мбачамачамечекабылчакамбачамакондечекабувердичекойра чиничекаленжичеком" +
+ "и-пермякчаконканичешамабалачабафиячалангичелакотачатүндүк луричелуочолу" +
+ "хиячамасайчамеручаморисианчамакуачаметөчөмохаукчамундангчамазандераниче" +
+ "намачатөмөнкү немисчеквасиочонкочонуерченыйанколчокичечеромбочоруачасам" +
+ "буручасангучатүштүк курдчасеначакойраборо сенничеташелитчетүштүк саамич" +
+ "елөлө саамичеинари саамическолт саамичеконго суахаличетесочоклингончота" +
+ "сабакчаборбордук Атлас тамазитчебелгисиз тилдевайичевунжочоворлпиричесо" +
+ "гачамарокко тамазигт адабий тилиндетилдик мазмун жоказыркы адабий араб " +
+ "тилиндеиспанча (Европа)төмөнкү саксончофламандчапортугалча (Европа)молд" +
+ "ованчасерб-хорваткытайча (жөнөкөйлөштүрүлгөн)кытайча (салттуу)"
+
+var kyLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000e, 0x000e, 0x0022, 0x002e, 0x003c, 0x003c,
+ 0x0048, 0x0056, 0x0056, 0x0056, 0x006e, 0x007e, 0x0090, 0x00a0,
+ 0x00a0, 0x00b2, 0x00c8, 0x00d6, 0x00e6, 0x00f6, 0x0108, 0x0116,
+ 0x0116, 0x012a, 0x012a, 0x0134, 0x0134, 0x0142, 0x014e, 0x0158,
+ 0x0166, 0x0166, 0x0174, 0x017e, 0x018a, 0x019a, 0x01ac, 0x01ba,
+ 0x01c8, 0x01d4, 0x01e0, 0x01e0, 0x01ea, 0x01f6, 0x0204, 0x0216,
+ 0x022d, 0x023d, 0x023d, 0x024f, 0x025b, 0x026d, 0x027d, 0x028b,
+ 0x0299, 0x02a7, 0x02a7, 0x02b7, 0x02c5, 0x02d3, 0x02e1, 0x02e1,
+ // Entry 40 - 7F
+ 0x02e1, 0x02f3, 0x02f3, 0x02ff, 0x030b, 0x030b, 0x030b, 0x031b,
+ 0x032d, 0x0343, 0x034f, 0x0361, 0x0371, 0x0371, 0x0381, 0x0381,
+ 0x038f, 0x03a7, 0x03b3, 0x03c5, 0x03d3, 0x03d3, 0x03e3, 0x03ef,
+ 0x03ef, 0x03ff, 0x040f, 0x041d, 0x0435, 0x0443, 0x0443, 0x0455,
+ 0x045f, 0x046d, 0x0488, 0x0496, 0x04a8, 0x04a8, 0x04b6, 0x04c8,
+ 0x04de, 0x04ee, 0x04fe, 0x050c, 0x051c, 0x052a, 0x052a, 0x0547,
+ 0x0555, 0x0555, 0x0567, 0x0588, 0x05a7, 0x05a7, 0x05a7, 0x05a7,
+ 0x05a7, 0x05a7, 0x05b5, 0x05c1, 0x05c1, 0x05d3, 0x05d3, 0x05e1,
+ // Entry 80 - BF
+ 0x05ef, 0x0603, 0x0611, 0x0621, 0x062f, 0x063d, 0x0649, 0x0659,
+ 0x066d, 0x066d, 0x067d, 0x0696, 0x06a4, 0x06b6, 0x06c6, 0x06d6,
+ 0x06d6, 0x06e2, 0x06f2, 0x0700, 0x070c, 0x070c, 0x0718, 0x0728,
+ 0x0734, 0x0746, 0x0754, 0x0764, 0x0772, 0x077c, 0x0790, 0x07a2,
+ 0x07a2, 0x07b0, 0x07bc, 0x07bc, 0x07ca, 0x07ca, 0x07d8, 0x07e8,
+ 0x07f4, 0x0802, 0x0802, 0x0814, 0x0814, 0x0814, 0x0822, 0x082e,
+ 0x083a, 0x084a, 0x084a, 0x0858, 0x0864, 0x0864, 0x0864, 0x0864,
+ 0x0864, 0x0864, 0x0864, 0x0870, 0x0870, 0x0870, 0x0870, 0x0870,
+ // Entry C0 - FF
+ 0x0870, 0x0870, 0x0870, 0x0870, 0x0870, 0x0880, 0x0880, 0x0880,
+ 0x0880, 0x0880, 0x0880, 0x0880, 0x088a, 0x088a, 0x088a, 0x088a,
+ 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a, 0x088a,
+ 0x088a, 0x0898, 0x0898, 0x08a4, 0x08a4, 0x08a4, 0x08bf, 0x08bf,
+ 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf, 0x08bf,
+ 0x08bf, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb,
+ 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08cb, 0x08d7, 0x08d7, 0x08d7,
+ 0x08d7, 0x08d7, 0x08d7, 0x08d7, 0x08d7, 0x08e7, 0x08e7, 0x08fc,
+ // Entry 100 - 13F
+ 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x08fc, 0x090a, 0x090a,
+ 0x090a, 0x090a, 0x090a, 0x0918, 0x0918, 0x0939, 0x0939, 0x0947,
+ 0x0947, 0x095c, 0x095c, 0x095c, 0x0968, 0x0968, 0x0968, 0x0968,
+ 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0968, 0x0978,
+ 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978, 0x0978,
+ 0x0978, 0x0978, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988,
+ 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988, 0x0988,
+ 0x0988, 0x0988, 0x09ab, 0x09ab, 0x09ab, 0x09b7, 0x09b7, 0x09b7,
+ // Entry 140 - 17F
+ 0x09b7, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09c5, 0x09e6, 0x09e6,
+ 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6,
+ 0x09f6, 0x0a06, 0x0a06, 0x0a06, 0x0a06, 0x0a06, 0x0a14, 0x0a14,
+ 0x0a14, 0x0a22, 0x0a22, 0x0a22, 0x0a22, 0x0a22, 0x0a34, 0x0a4a,
+ 0x0a4a, 0x0a4a, 0x0a4a, 0x0a4a, 0x0a4a, 0x0a61, 0x0a61, 0x0a61,
+ 0x0a61, 0x0a73, 0x0a73, 0x0a8c, 0x0a9e, 0x0a9e, 0x0a9e, 0x0a9e,
+ 0x0a9e, 0x0a9e, 0x0a9e, 0x0a9e, 0x0ab2, 0x0ac0, 0x0ac0, 0x0ac0,
+ 0x0ac0, 0x0ac0, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ace,
+ // Entry 180 - 1BF
+ 0x0ace, 0x0ade, 0x0ade, 0x0ade, 0x0ade, 0x0af7, 0x0af7, 0x0af7,
+ 0x0af7, 0x0af7, 0x0b01, 0x0b01, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f,
+ 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b1d, 0x0b1d, 0x0b1d,
+ 0x0b1d, 0x0b1d, 0x0b29, 0x0b3d, 0x0b3d, 0x0b4b, 0x0b57, 0x0b57,
+ 0x0b57, 0x0b57, 0x0b57, 0x0b67, 0x0b67, 0x0b67, 0x0b79, 0x0b79,
+ 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b79, 0x0b93, 0x0b93,
+ 0x0b93, 0x0b9f, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bbc, 0x0bcc,
+ 0x0bcc, 0x0bcc, 0x0bcc, 0x0bcc, 0x0bd6, 0x0bd6, 0x0be2, 0x0be2,
+ // Entry 1C0 - 1FF
+ 0x0be2, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6,
+ 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6,
+ 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0bf6, 0x0c02, 0x0c02,
+ 0x0c02, 0x0c02, 0x0c02, 0x0c02, 0x0c02, 0x0c10, 0x0c10, 0x0c10,
+ 0x0c10, 0x0c10, 0x0c10, 0x0c1a, 0x0c1a, 0x0c1a, 0x0c1a, 0x0c2c,
+ 0x0c2c, 0x0c2c, 0x0c2c, 0x0c2c, 0x0c3a, 0x0c3a, 0x0c3a, 0x0c3a,
+ 0x0c53, 0x0c53, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c80, 0x0c80, 0x0c80,
+ 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0cad, 0x0cc4,
+ // Entry 200 - 23F
+ 0x0cdd, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6,
+ 0x0cf6, 0x0cf6, 0x0cf6, 0x0cf6, 0x0d13, 0x0d13, 0x0d13, 0x0d13,
+ 0x0d13, 0x0d13, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d1f,
+ 0x0d1f, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31,
+ 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d31, 0x0d43, 0x0d43,
+ 0x0d73, 0x0d73, 0x0d73, 0x0d73, 0x0d8e, 0x0d9a, 0x0d9a, 0x0d9a,
+ 0x0d9a, 0x0d9a, 0x0d9a, 0x0d9a, 0x0da8, 0x0da8, 0x0da8, 0x0da8,
+ 0x0da8, 0x0dbc, 0x0dbc, 0x0dbc, 0x0dbc, 0x0dc8, 0x0dc8, 0x0dc8,
+ // Entry 240 - 27F
+ 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8,
+ 0x0e03, 0x0e03, 0x0e23, 0x0e23, 0x0e54, 0x0e54, 0x0e54, 0x0e54,
+ 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e54, 0x0e71, 0x0e71, 0x0e71,
+ 0x0e71, 0x0e71, 0x0e90, 0x0ea2, 0x0ea2, 0x0ec5, 0x0ed9, 0x0eee,
+ 0x0f23, 0x0f42,
+} // Size: 1244 bytes
+
+var loLangStr string = "" + // Size: 10775 bytes
+ "ອະຟາແອບຄາຊຽນອາເວັສແຕນອາຟຣິການອາການອຳຮາຣິກອາຣາໂກເນັດອາຣັບອັສຊາມີສອາວາຣິກອ" +
+ "າຍມາລາອາເຊີໄບຈານິບາຣກີເບລາຣັສຊຽນບັງກາຣຽນບິສລະມາບາມບາຣາເບັງກາລີທິເບທັນເ" +
+ "ບຣຕັນບອສນຽນຄາຕາລານຊີເຄນຊາມໍໂຣຄໍຊິກາຄີເຊກໂບດສລາວິກຊູວາຊເວວແດນິຊເຢຍລະມັນ" +
+ "ດີວີຮີດີຊອງຄາອິວາກຣີກອັງກິດເອສປາຍສະແປນນິຊເອສໂຕນຽນບັສກີເປີຊຽນຟູລາຟິນນິຊ" +
+ "ຟິຈຽນຟາໂຣສຝຣັ່ງຟຣິຊຽນ ຕາເວັນຕົກໄອຣິສສະກັອດເກລິກກາລິຊຽນກົວຣານີກູຈາຣາຕິແ" +
+ "ມງຊ໌ເຮົາຊາຮີບຣິວຮິນດິຮິຣິໂມຕູໂຄຣເອທຽນໄຮຕຽນຮັງກາຣຽນອາເມນຽນເຮິຮິໂຣອິນເຕີ" +
+ "ລິງລົວອິນໂດເນຊຽນອິນເຕີລິງກຣີອິກໂບເຊສວຍຢີອິນນູປຽກອີໂດໄອສແລນດິກອິຕາລຽນອິ" +
+ "ນນຸກຕິຕັດຍີ່ປຸ່ນຈາແວນີສຈໍຈຽນຄອງໂກຄິຄູຢຸກວນຍາມາຄາຊັກກຣີນແລນລິດຂະເໝນຄັນນ" +
+ "າດາເກົາຫລີຄານຸລິຄາສເມຍຣິເຄີດິສໂຄມິຄໍນິຊເກຍກີສລາຕິນລັກເຊມບວກກິຊແກນດາລິມ" +
+ "ເບີກີຊລິງກາລາລາວລິທົວນຽນລູບາ-ຄາຕັງກາລັດວຽນມາລາກາສຊີມາຊານເລັດມາວຣິແມັກເ" +
+ "ຊໂດນຽນມາເລອາລຳມອງໂກເລຍມາຣາທີມາເລມອລທີສມຽນມານາຢູລູເອັນເດເບເລເໜືອເນປາລີເ" +
+ "ອັນດອງກາດັຊນໍເວຈຽນ ນີນອກນໍເວຈຽນ ບັອກມອລນີບີລີໃຕ້ນາວາໂຈນານຈາອັອກຊີຕານໂອ" +
+ "ຈິບວາໂອໂຣໂມໂອຣິຢາອອດເຊຕິກປັນຈາບີປາລີໂປລິຊປາສໂຕປອກຕຸຍກິສຄີຊົວໂຣແມນຊ໌ຣຸນ" +
+ "ດິໂຣແມນຽນລັດເຊຍຄິນຢາວານດາສັນສະກຣິດສາດີນຽນສິນທິຊາມິເໜືອແຊງໂກສິນຫາລາສະໂລ" +
+ "ແວັກສະໂລເວນຽນຊາມົວໂຊນາໂຊມາລີອານບານຽນເຊີບຽນຊຣາຕິໂຊໂທໃຕ້ຊຸນແດນນີສສະວີດິຊ" +
+ "ຊວາຮີລິທາມິລເຕລູກູທາຈິກໄທຕິກຣິນຢາເທີກເມັນເຕສະວານາທອງການເທີຄິຊເຕຊອງກາທາ" +
+ "ທາຕາຮີຕຽນອຸຍເຄີຢູເຄຣນຽນອູຣດູອຸສເບກເວນດາຫວຽດນາມໂວລາພັກວໍລູມວໍລອບໂຮຊາຢິວ" +
+ "ໂຢຣູບາຊວາງຈີນຊູລູແອັກຊີເນັສອາໂຄລີອາແດງມີເອດີຮິແອຟີຮີລີອາເຮັມໄອນູອັກກາດ" +
+ "ຽມອາເລີດອານໄຕໃຕ້ອັງກິດໂບຮານແອນຈີກາອາລາມິກອາຣົວຄານຽນອາຣາປາໂຮອາຣາແວກອາຊູ" +
+ "ອັສຕູຮຽນອາວາຮິບາລູຊີບາລີເນັດບາຊາບາມຸນໂຄມາລາບີເຈເບັມບາບີນາບາຟັດບາໂລຈີ ພ" +
+ "າກຕາເວັນຕົກໂບພູຣິບີຄອນບີນີກົມຊິກຊິກາບຣາໂບດູອາຄຸດບູຣຽດບູຈີເນັດບູລູບລິນເ" +
+ "ມດູມບາແຄດໂດຄາຣິບຄາຢູກາອາດແຊມຊີບູໂນຊີກາຊິບຊາຊາກາໄຕຊູເກດມາຣິຊີນຸກຈາກອນຊອ" +
+ "ກຕິວຊີພິວຢານຊີໂຣກີຊີເຢນນີໂຊຣານິ ເຄີດິຊຄອບຕິກຄຣີເມນເຕີຄິຊກາຊູບຽນດາໂກຕາດ" +
+ "າກວາໄຕຕາເດລາວາຊີເລັບໂດກຣິບດິນກາຊາມາດອກຣີຊໍບຽນຕໍ່ກວ່າດົວລາດັກກາງໂຈລາ-ຟອ" +
+ "ນຢີດູລາດາຊາກາເອັມບູອີຟິກອີຢິບບູຮານອີກາຈັກອີລາໄມອັງກິດກາງອີວອນດູແຟງຟີລິ" +
+ "ປີໂນຟອນຟຮັ່ງເສດກາງຟຮັ່ງເສດໂບຮານຟຣີຊຽນເໜືອຟຣີຊຽນຕາເວັນອອກຟຣີລຽນກາກາກາອຸ" +
+ "ຊກາໂຢບາຍາກີກິນເບີເທັດເຢຍລະມັນສູງກາງເຢຍລະມັນສູງໂບຮານກອນດີໂກຣອນຕາໂຣກອດຮິ" +
+ "ກກຣີໂບແອນຊຽນກຣີກສະວິສ ເຈີແມນກູຊິວິດອິນໄຮດາຮາໄວອຽນຮິຣິໄກນອນຮິດໄຕມອງຊໍບຽ" +
+ "ນ ທາງຕອນເໜືອຮູປາໄອບານໄອໄບໄບໂອໄອໂລໂກອິນກັຊໂລບບັນງອມບາມາແຊມຈູແດວ-ເພີຊຽນຈ" +
+ "ູແດວ-ອາລາບິກກາຣາ-ການປາກກາໄບລ໌ກາຊິນຈຣູກາມບາກະວີກາບາດຽນຄາແນມບູຕີບມາຄອນເດ" +
+ "ຄາເວີເດຍນູໂຄໂລຄາສິໂຄຕັນຄອຍຣາ ຊິນີຄາໂກຄາເລັນຈິນຄິມບັນດູໂຄມີ-ເພີມຢັກກອນກ" +
+ "ານີຄູສໄລກາແປຣກາຣາໄຊ-ບານກາກາເຣລຽນກູຣູກຊຳບາລ້າບາເຟຍໂຄລອກນຽນຄູມີກຄູເທໄນລາ" +
+ "ດີໂນແລນກິລານດາແລມບາລີຊຽນລາໂກຕາແມັງໂກ້ໂລຊິລູຣິ ທາງຕອນເໜືອລູບາ-ລູລົວລູເຊ" +
+ "ໂນລຸນດາລົວລູໄຊລູໄຍມາດູລາມາຟາມາກາຮິໄມທີລິມາກາຊາຣມັນດິງກາມາໄຊມາບາມອກຊາມາ" +
+ "ນດາຣເມນເດເມຣູມໍຣິສເຢນໄອລິດກາງມາຄູວາ-ມີດໂຕເມທາມິກແມກທີແນງກາບູແມນຈູມານີພ" +
+ "ູຣິໂມຫາມອສຊີມັນດັງຫລາຍພາສາຄຣິກມີລັນດາມາວາຣິມໍຢິນເອີຍາມາແຊນເດີລັງນາໂປລີ" +
+ "ນາມາເຢຍລະມັນ ຕອນໄຕ້ນີວາຣິນີ່ອັດນີ່ອູກວາຊີໂອຈີ່ມບູນນໍໄກນໍໂບຮານເອັນໂກໂຊໂ" +
+ "ທເໜືອເນີເນວາດັ້ງເດີມນາມວີຊິນານຄອນໂນໂຣນິມາໂອແຊກຕູກີອອດໂຕມັນປານກາຊີມານພາ" +
+ "ລາວີປາມປານກາປາມເປຍເມັນໂທປາລົວອານເປີເຊຍໂບຮານຟີນີເຊຍພອນເພໂປວອງຊານໂບຮານKʼ" +
+ "icheʼຣາຈັສທານິຣາປານຸຍຣາໂຣທອນການຣົມໂບໂຣເມນີອາໂຣມານຽນອາຣວາຊັນດາວຊາກາສາມາຣິ" +
+ "ແຕນ-ຊຳບູຣູຊາຊັກຊານທາລິກຳເບຊານກູຊີຊິລີນສກອດພາກໄຕ້ ຂອງ ກູດິດຊີນາເຊນຄັບໂຄ" +
+ "ຍຣາໂບໂຣ ເຊນນິອີຣິຊເກົ່າທາເຊວຫິດໄທໃຫ່ຍອາລັບ-ຊາດຊິດາໂມຊາມິໃຕ້ລຸນຊາມິອີນາ" +
+ "ຣິຊາມິສກອດຊາມິໂຊນິນກີຊອກດິນສຣານນານຕອນໂກເຊເລີຊາໂຮຊູຄູມ້າຊູຊູຊູເມີເລຍໂຄໂ" +
+ "ນຣຽນຄອງໂກ ຊວາຮີລິຊີເລຍແບບດັ້ງເດີມຊີເລຍທີມເນເຕໂຊເຕເລໂນເຕຕູມໄທກຣີຕີວໂຕເກ" +
+ "ເລົາຄຣິງກອນທລີງກິດທາມາກເຊກນາຍອາຊາຕອງກາທອກພີຊິນຕາໂລໂກຊີມຊີແອນຕຳບູກາຕູວາ" +
+ "ລູຕາຊາວັກຕູວີນຽນອັດລາສ ທາມາຊີກ ກາງອຸດມັດຢູກາລິກອຳບັນດູລູດໄວໂວຕິກວັນໂຈວ" +
+ "າເຊີວາລາໂມວາເລວາໂຊວາຣພິຣິການມິກໂຊກາເຢົ້າຢັບແຍງເບນແຢມບາກວາງຕຸ້ງຊາໂປແຕບສ" +
+ "ັນຍາລັກບລີຊິມເຊນາກາໂມຣັອກແຄນ ທາມາຊີກ ມາດຕະຖານຊູນີບໍ່ມີເນື້ອຫາພາສາຊາຊາອ" +
+ "າຣາບິກມາດຕະຖານສະໄໝໃໝ່ເຢຍລະມັນ (ໂອສຕຣິດ)ສະວິສ ໄຮ ເຈີແມນອັງກິດ (ໂອດສະຕາລ" +
+ "ີ)ອັງກິດ (ບຣິດທິຊ)ອັງກິດ (ອາເມລິກັນ)ລາຕິນ ອາເມຣິກັນ ສະແປນນິຊສະເປັນ ຢຸໂ" +
+ "ຣບເມັກຊິກັນ ສະແປນນິຊຟລັງ(ການາດາ)ຊາຊອນ ຕອນໄຕຟລີມິຊປອກຕຸຍກິສ ບະເລຊີ່ນປອກ" +
+ "ຕຸຍກິສ ຢຸໂຣບໂມດາວຽນເຊີໂບ-ໂກເຊຍຈີນແບບຮຽບງ່າຍຈີນແບບດັ້ງເດີມ"
+
+var loLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x0024, 0x003f, 0x0057, 0x0066, 0x007b, 0x0099,
+ 0x00a8, 0x00c0, 0x00d5, 0x00ea, 0x010b, 0x011a, 0x0138, 0x0150,
+ 0x0165, 0x017a, 0x0192, 0x01a7, 0x01b9, 0x01cb, 0x01e0, 0x01ef,
+ 0x0201, 0x0213, 0x0219, 0x0222, 0x023d, 0x024c, 0x0255, 0x0264,
+ 0x027c, 0x028e, 0x02a3, 0x02af, 0x02bb, 0x02cd, 0x02df, 0x02f7,
+ 0x030f, 0x031e, 0x0330, 0x033c, 0x034e, 0x035d, 0x036c, 0x037b,
+ 0x03a9, 0x03b8, 0x03d9, 0x03ee, 0x0403, 0x041b, 0x042a, 0x043c,
+ 0x044e, 0x045d, 0x0475, 0x048d, 0x049c, 0x04b4, 0x04c9, 0x04de,
+ // Entry 40 - 7F
+ 0x0502, 0x0520, 0x0544, 0x0553, 0x0568, 0x0580, 0x058c, 0x05a7,
+ 0x05bc, 0x05dd, 0x05f2, 0x0607, 0x0616, 0x0625, 0x0637, 0x064c,
+ 0x065b, 0x0679, 0x0688, 0x069d, 0x06b2, 0x06c4, 0x06dc, 0x06ee,
+ 0x06fa, 0x0709, 0x071b, 0x072a, 0x074e, 0x075d, 0x0778, 0x078d,
+ 0x0796, 0x07ae, 0x07d0, 0x07e2, 0x07fd, 0x0818, 0x0827, 0x0848,
+ 0x0860, 0x0878, 0x088a, 0x0896, 0x08a8, 0x08b7, 0x08c9, 0x08f3,
+ 0x0905, 0x0920, 0x0929, 0x094e, 0x0979, 0x0994, 0x09a6, 0x09b5,
+ 0x09d0, 0x09e5, 0x09f7, 0x0a09, 0x0a21, 0x0a36, 0x0a42, 0x0a51,
+ // Entry 80 - BF
+ 0x0a60, 0x0a7b, 0x0a8a, 0x0a9f, 0x0aae, 0x0ac3, 0x0ad5, 0x0af3,
+ 0x0b0e, 0x0b23, 0x0b32, 0x0b4a, 0x0b59, 0x0b6e, 0x0b86, 0x0ba1,
+ 0x0bb0, 0x0bbc, 0x0bce, 0x0be6, 0x0bf8, 0x0c07, 0x0c1c, 0x0c37,
+ 0x0c4c, 0x0c61, 0x0c70, 0x0c82, 0x0c91, 0x0c97, 0x0caf, 0x0cc7,
+ 0x0cdf, 0x0cf1, 0x0d03, 0x0d18, 0x0d24, 0x0d39, 0x0d4b, 0x0d63,
+ 0x0d72, 0x0d84, 0x0d93, 0x0da8, 0x0dbd, 0x0dcc, 0x0ddb, 0x0de7,
+ 0x0df0, 0x0e02, 0x0e0e, 0x0e17, 0x0e23, 0x0e41, 0x0e53, 0x0e68,
+ 0x0e7a, 0x0e7a, 0x0e92, 0x0ea4, 0x0eb0, 0x0ec8, 0x0ec8, 0x0eda,
+ // Entry C0 - FF
+ 0x0eda, 0x0ef2, 0x0f13, 0x0f28, 0x0f3d, 0x0f5b, 0x0f5b, 0x0f73,
+ 0x0f73, 0x0f88, 0x0f88, 0x0f88, 0x0f94, 0x0f94, 0x0fac, 0x0fac,
+ 0x0fbe, 0x0fd0, 0x0fe8, 0x0fe8, 0x0ff4, 0x1003, 0x1003, 0x1015,
+ 0x1021, 0x1033, 0x1033, 0x103f, 0x104e, 0x104e, 0x1085, 0x1097,
+ 0x10a6, 0x10b2, 0x10b2, 0x10bb, 0x10d0, 0x10d0, 0x10d0, 0x10d9,
+ 0x10d9, 0x10e5, 0x10f4, 0x1103, 0x111b, 0x1127, 0x1133, 0x1148,
+ 0x1157, 0x1166, 0x1178, 0x118a, 0x119c, 0x11a8, 0x11b7, 0x11c9,
+ 0x11d8, 0x11e4, 0x1202, 0x1214, 0x122c, 0x123e, 0x1253, 0x1278,
+ // Entry 100 - 13F
+ 0x128a, 0x128a, 0x12ae, 0x12c3, 0x12d5, 0x12e4, 0x12f0, 0x1302,
+ 0x1314, 0x1326, 0x1335, 0x1341, 0x1350, 0x1374, 0x1374, 0x1383,
+ 0x1395, 0x13b1, 0x13bd, 0x13cf, 0x13e1, 0x13f0, 0x13f0, 0x140e,
+ 0x1423, 0x1435, 0x1450, 0x1450, 0x1465, 0x1465, 0x146e, 0x1486,
+ 0x1486, 0x148f, 0x148f, 0x14b0, 0x14d7, 0x14d7, 0x14f5, 0x1522,
+ 0x1534, 0x153a, 0x154f, 0x154f, 0x155b, 0x1567, 0x1567, 0x156d,
+ 0x158b, 0x158b, 0x15b5, 0x15e5, 0x15e5, 0x15f4, 0x160f, 0x1621,
+ 0x1630, 0x164e, 0x1670, 0x1670, 0x1670, 0x167c, 0x168e, 0x169a,
+ // Entry 140 - 17F
+ 0x169a, 0x16af, 0x16af, 0x16ca, 0x16d9, 0x16e2, 0x1710, 0x1710,
+ 0x171c, 0x172b, 0x1743, 0x1755, 0x1767, 0x1767, 0x1767, 0x1779,
+ 0x1788, 0x1797, 0x17b9, 0x17de, 0x17de, 0x17fd, 0x180f, 0x181e,
+ 0x1827, 0x1836, 0x1842, 0x1857, 0x186c, 0x1875, 0x188a, 0x18a8,
+ 0x18a8, 0x18b4, 0x18b4, 0x18c0, 0x18cf, 0x18eb, 0x18eb, 0x18eb,
+ 0x18f7, 0x1912, 0x192a, 0x194c, 0x1961, 0x1970, 0x197f, 0x19a1,
+ 0x19a1, 0x19a1, 0x19b6, 0x19c5, 0x19da, 0x19e9, 0x1a01, 0x1a10,
+ 0x1a22, 0x1a34, 0x1a43, 0x1a52, 0x1a61, 0x1a70, 0x1a70, 0x1a70,
+ // Entry 180 - 1BF
+ 0x1a70, 0x1a82, 0x1a82, 0x1a97, 0x1aa3, 0x1ace, 0x1ace, 0x1aea,
+ 0x1afc, 0x1b0b, 0x1b14, 0x1b20, 0x1b2c, 0x1b2c, 0x1b2c, 0x1b3e,
+ 0x1b4a, 0x1b5c, 0x1b6e, 0x1b83, 0x1b9b, 0x1ba7, 0x1bb3, 0x1bc2,
+ 0x1bd4, 0x1be3, 0x1bef, 0x1c07, 0x1c1f, 0x1c41, 0x1c4d, 0x1c5f,
+ 0x1c7a, 0x1c89, 0x1ca1, 0x1cad, 0x1cbc, 0x1cbc, 0x1cce, 0x1ce6,
+ 0x1cf2, 0x1d07, 0x1d19, 0x1d19, 0x1d28, 0x1d37, 0x1d58, 0x1d58,
+ 0x1d6a, 0x1d76, 0x1da1, 0x1db3, 0x1dc5, 0x1dd4, 0x1dd4, 0x1de9,
+ 0x1dfe, 0x1e0a, 0x1e1f, 0x1e1f, 0x1e31, 0x1e49, 0x1e52, 0x1e76,
+ // Entry 1C0 - 1FF
+ 0x1e8b, 0x1e9d, 0x1ea9, 0x1eb5, 0x1ec4, 0x1ee8, 0x1f06, 0x1f18,
+ 0x1f30, 0x1f54, 0x1f6c, 0x1f6c, 0x1f6c, 0x1f6c, 0x1f8d, 0x1f8d,
+ 0x1fa2, 0x1fa2, 0x1fa2, 0x1fb1, 0x1fb1, 0x1fd8, 0x1fe1, 0x1fe1,
+ 0x1ffc, 0x2011, 0x202f, 0x202f, 0x202f, 0x203e, 0x2050, 0x2050,
+ 0x2050, 0x2050, 0x206b, 0x207a, 0x208c, 0x2098, 0x20b4, 0x20c6,
+ 0x20d5, 0x20ea, 0x20ea, 0x20f6, 0x2105, 0x211a, 0x2126, 0x2126,
+ 0x2152, 0x2152, 0x215e, 0x215e, 0x2170, 0x219b, 0x21b9, 0x21b9,
+ 0x21d1, 0x21e3, 0x21fc, 0x220e, 0x220e, 0x220e, 0x2223, 0x2238,
+ // Entry 200 - 23F
+ 0x2256, 0x226e, 0x2283, 0x2295, 0x22b9, 0x22c8, 0x22d4, 0x22d4,
+ 0x22e9, 0x22f5, 0x230d, 0x2322, 0x2347, 0x2377, 0x2386, 0x2386,
+ 0x2386, 0x2395, 0x23a1, 0x23b3, 0x23c2, 0x23d1, 0x23da, 0x23f2,
+ 0x23f2, 0x2407, 0x241c, 0x241c, 0x2434, 0x2458, 0x2470, 0x2470,
+ 0x2482, 0x2482, 0x249a, 0x249a, 0x24ac, 0x24be, 0x24d3, 0x24e8,
+ 0x251a, 0x252c, 0x2541, 0x2556, 0x255f, 0x2565, 0x2565, 0x2565,
+ 0x2565, 0x2565, 0x2574, 0x2574, 0x2583, 0x2592, 0x25a4, 0x25b0,
+ 0x25bc, 0x25d1, 0x25d1, 0x25e3, 0x25e3, 0x25ef, 0x25fe, 0x2607,
+ // Entry 240 - 27F
+ 0x2619, 0x2628, 0x2628, 0x2640, 0x2655, 0x267f, 0x267f, 0x2691,
+ 0x26db, 0x26e7, 0x2717, 0x2723, 0x2765, 0x2765, 0x2795, 0x27be,
+ 0x27ee, 0x27ee, 0x2818, 0x2848, 0x288c, 0x28ae, 0x28e2, 0x28e2,
+ 0x2902, 0x2902, 0x2921, 0x2933, 0x2967, 0x2992, 0x29a7, 0x29c6,
+ 0x29ed, 0x2a17,
+} // Size: 1244 bytes
+
+var ltLangStr string = "" + // Size: 5831 bytes
+ "afarųabchazųavestųafrikanųakanųamharųaragonesųarabųasamųavarikųaimarųaze" +
+ "rbaidžaniečiųbaškirųbaltarusiųbulgarųbislamabambarųbengalųtibetiečiųbret" +
+ "onųbosniųkatalonųčečėnųčamorųkorsikiečiųkryčekųbažnytinė slavųčiuvašųval" +
+ "ųdanųvokiečiųdivehibotijųeviųgraikųanglųesperantoispanųestųbaskųpersųfu" +
+ "lahųsuomiųfidžiųfarerųprancūzųvakarų fryzųairiųškotų (gėlų)galisųgvarani" +
+ "ųgudžaratųmeniečiųhausųhebrajųhindihiri motukroatųHaičiovengrųarmėnųher" +
+ "erointerlingvaindoneziečiųinterkalbaigbųsičuan jiinupiakidoislandųitalųi" +
+ "nukitutjaponųjaviečiųgruzinųKongokikujųkuaniamakazachųkalalisutkhmerųkan" +
+ "adųkorėjiečiųkanurikašmyrųkurdųkomikornųkirgizųlotynųliuksemburgiečiųgan" +
+ "dalimburgišngalųlaosiečiųlietuviųluba katangalatviųmalagasųMaršalo Salųm" +
+ "aoriųmakedonųmalajaliųmongolųmaratųmalajiečiųmaltiečiųbirmiečiųnaurųšiau" +
+ "rės ndebelųnepaliečiųndongųolandųnaujoji norvegųNorvegijos rašytinė – bū" +
+ "kmolųpietų ndebelenavajųnianjaočitarųojibvaoromųorijųosetinųpendžabųpali" +
+ "lenkųpuštūnųportugalųkečujųretoromanųrundirumunųrusųkinjaruandųsanskrita" +
+ "ssardiniečiųsindųšiaurės samiųsangosinhalųslovakųslovėnųsamoašonųsomalie" +
+ "čiųalbanųserbųsvatipietų sesutosundųšvedųsuahiliųtamilųtelugųtadžikųtaj" +
+ "ųtigrajųturkmėnųtsvanatonganųturkųtsongatotoriųtaitiečiųuigūrųukrainieč" +
+ "iųurdųuzbekųvendavietnamiečiųvolapiukvalonųvolofųkosųjidišjorubųchuangki" +
+ "nųzulųačinezųakoliųadangmųadygėjųTuniso arabųafrihiliaghemųainųakadianųa" +
+ "labamiečiųaleutųalbanų kalbos gegų tarmėpietų Altajaussenoji anglųangikų" +
+ "aramaikųmapudungunųaraonųarapahųAlžyro arabųaravakųMaroko arabųEgipto ar" +
+ "abųasuAmerikos ženklų kalbaasturianųkotavaavadhibalučibalinezųbavarųbasų" +
+ "bamunųbatak tobaghomalųbėjųbembųbetavibenųbafutųbadagavakarų beludžiųbau" +
+ "čpuribikolųbinibandžarųkomųsiksikaBišnuprijosbakhtiaribrajųbrahujųbodoa" +
+ "kūsųburiatųbuginezųbulublinmedumbųkadokaribųkaijūgųatsamųcebuanųčigųčibč" +
+ "ačagatųčukesųmaričinuk žargonasčoktaučipvėjųčerokiųčajenųsoranių kurdųko" +
+ "ptųcapiznonKrymo turkųkašubųdakotųdargvataitųdelaveroslavedogribųdinkųza" +
+ "rmųdogrižemutinių sorbųcentrinio DusunodualųVidurio Vokietijosdžiola-fon" +
+ "idyulųdazagųembuefikitalų kalbos Emilijos tarmėsenovės egiptiečiųekajuke" +
+ "lamitųVidurio Anglijoscentrinės Aliaskos jupikųevondoispanų kalbos Ekstr" +
+ "emadūros tarmėfangfilipiniečiųsuomių kalbos Tornedalio tarmėfonkadžunų p" +
+ "rancūzųVidurio Prancūzijossenoji prancūzųArpitanošiaurinių fryzųrytų fry" +
+ "zųfrulangagagaūzųkinų kalbos dziangsi tarmėgajogbajazoroastrų darigyzkir" +
+ "ibatigilakiVidurio Aukštosios VokietijosSenoji Aukštosios VokietijosGoa " +
+ "konkaniųgondigorontalogotųgrebosenovės graikųŠveicarijos vokiečiųvajųfra" +
+ "fragusigvičinohaidokinų kalbos hakų tarmėhavajiečiųFidžio hindihiligaino" +
+ "nhititųhmongaukštutinių sorbųkinų kalbos hunano tarmėhupaibanibibioiloko" +
+ "ingušųingrųJamaikos kreolų anglųloibanngombųmačamųjudėjų persųjudėjų ara" +
+ "bųdanų kalbos jutų tarmėkarakalpakųkebailųkačinjukembųkavikabardinųkanem" +
+ "bųtyapmakondųŽaliojo Kyšulio kreolųkenyangkorokaingangkasikotanezųkojra " +
+ "činikhovarųkirmanjkikakokalenjinųkimbundukomių-permiųkonkaniųkosreanųkp" +
+ "elekaračiajų balkarijoskriokinaray-akarelųkurukšambalųbafųkolognųkumikųk" +
+ "utenailadinolangilandalambalezginųnaujoji frankų kalbaligūrųlyviųlakotųl" +
+ "ombardųmongolozišiaurės lurilatgaliųluba lulualuisenolundaluomizolujakla" +
+ "sikinė kinųlazmadurezųmafųmagahimaithilimakasaromandingomasajųmabųmokšam" +
+ "andarmendemerųmorisijųVidurio Airijosmakua-maetometamikmakminankabumanču" +
+ "manipurimohokmosivakarų marimundangųkelios kalboskrykųmirandezųmarvarime" +
+ "ntavaimjenųerzyjųmazenderaniųkinų kalbos pietų minų tarmėneapoliečiųnama" +
+ "Žemutinės Vokietijosnevariniasniuenųao nagakvasiųngiembūnųnogųnorsunovi" +
+ "alenkošiaurės sothųnuerųklasikinė nevariniamveziniankolųnioronzimaosageo" +
+ "smanų turkųpangasinanpahlavipampangapapiementopalaupikardųPensilvanijos " +
+ "vokiečiųvokiečių kalbos žemaičių tarmėsenoji persųvokiečių kalbos Pfalco" +
+ " tarmėfinikiečiųitalų kalbos Pjemonto tarmėPontoPonapėsprūsųsenovės prov" +
+ "ansalųkičiųČimboraso aukštumų kečujųradžastanorapanuirarotonganitalų kal" +
+ "bos Romanijos tarmėrifųromboromųrotumanųrusinųRovianosaromaniųruasandavi" +
+ "jakutųsamarėjų aramiųsambūrųsasaksantalisauraštrųngambajųsangųsiciliečių" +
+ "škotųsasaresų sardinųpietų kurdųsenecųsenųseriselkupkojraboro senisenoj" +
+ "i airiųžemaičiųtachelhitųšanchadian arabųsidamosileziečių žemaičiųselaja" +
+ "rųpietų samiųLulėjo samiųInario samiųSkolto samiųsoninkesogdiensranan to" +
+ "ngosererųsahoSaterlendo fryzųsukumasusušumerųKomorųKongo suahiliųklasiki" +
+ "nė siriečiųsirųsileziečiųtulųtimnetesoterenotetumtigretivtokelautsakurųk" +
+ "lingonųtlingittalyšųtamašekniasa tongostok pisinturoyotarokotsakonųtsimš" +
+ "ianmusulmonų tatųtumbukųtuvalutasavakųtuviųCentrinio Maroko tamazitųudmu" +
+ "rtųugariticumbundurūtvaivenetųvepsųvakarų flamandųpagrindinė frankonųvot" +
+ "ikvõrovunjovalserųvalamovaraivašovalrpirikinų kalbos vu tarmėkalmukųmegr" +
+ "elųsogųjaojapezųjangbenųjembųnjengatukinų kalbos Kantono tarmėzapotekų„B" +
+ "liss“ simboliųzelandųzenagastandartinė Maroko tamazigtųzuninėra kalbinio" +
+ " turiniozazašiuolaikinė standartinė arabųAustrijos vokiečiųŠveicarijos a" +
+ "ukštutinė vokiečiųAustralijos anglųKanados anglųDidžiosios Britanijos an" +
+ "glųJungtinių Valstijų anglųLotynų Amerikos ispanųEuropos ispanųMeksikos " +
+ "ispanųKanados prancūzųŠveicarijos prancūzųŽemutinės Saksonijos (Nyderlan" +
+ "dai)flamandųBrazilijos portugalųEuropos portugalųmoldavųserbų-kroatųsupa" +
+ "prastintoji kinųtradicinė kinų"
+
+var ltLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0006, 0x000e, 0x0015, 0x001e, 0x0024, 0x002b, 0x0035,
+ 0x003b, 0x0041, 0x0049, 0x0050, 0x0063, 0x006c, 0x0077, 0x007f,
+ 0x0086, 0x008e, 0x0096, 0x00a2, 0x00aa, 0x00b1, 0x00ba, 0x00c4,
+ 0x00cc, 0x00d9, 0x00dc, 0x00e2, 0x00f4, 0x00fe, 0x0103, 0x0108,
+ 0x0112, 0x0118, 0x011f, 0x0124, 0x012b, 0x0131, 0x013a, 0x0141,
+ 0x0146, 0x014c, 0x0152, 0x0159, 0x0160, 0x0168, 0x016f, 0x0179,
+ 0x0187, 0x018d, 0x019d, 0x01a4, 0x01ad, 0x01b8, 0x01c2, 0x01c8,
+ 0x01d0, 0x01d5, 0x01de, 0x01e5, 0x01ec, 0x01f3, 0x01fb, 0x0201,
+ // Entry 40 - 7F
+ 0x020c, 0x021a, 0x0224, 0x0229, 0x0233, 0x023a, 0x023d, 0x0245,
+ 0x024b, 0x0253, 0x025a, 0x0264, 0x026c, 0x0271, 0x0278, 0x0280,
+ 0x0288, 0x0291, 0x0298, 0x029f, 0x02ac, 0x02b2, 0x02bb, 0x02c1,
+ 0x02c5, 0x02cb, 0x02d3, 0x02da, 0x02ec, 0x02f1, 0x02fb, 0x0301,
+ 0x030c, 0x0315, 0x0321, 0x0328, 0x0331, 0x033f, 0x0346, 0x034f,
+ 0x0359, 0x0361, 0x0368, 0x0374, 0x037f, 0x038a, 0x0390, 0x03a2,
+ 0x03ae, 0x03b5, 0x03bc, 0x03cc, 0x03ef, 0x03fd, 0x0404, 0x040a,
+ 0x0413, 0x0419, 0x041f, 0x0425, 0x042d, 0x0437, 0x043b, 0x0441,
+ // Entry 80 - BF
+ 0x044b, 0x0455, 0x045d, 0x0468, 0x046d, 0x0474, 0x0479, 0x0485,
+ 0x048f, 0x049c, 0x04a2, 0x04b2, 0x04b7, 0x04bf, 0x04c7, 0x04d0,
+ 0x04d5, 0x04db, 0x04e7, 0x04ee, 0x04f4, 0x04f9, 0x0506, 0x050c,
+ 0x0513, 0x051c, 0x0523, 0x052a, 0x0533, 0x0538, 0x0540, 0x054a,
+ 0x0550, 0x0558, 0x055e, 0x0564, 0x056c, 0x0577, 0x057f, 0x058c,
+ 0x0591, 0x0598, 0x059d, 0x05ab, 0x05b3, 0x05ba, 0x05c1, 0x05c6,
+ 0x05cc, 0x05d3, 0x05d9, 0x05de, 0x05e3, 0x05ec, 0x05f3, 0x05fb,
+ 0x0604, 0x0611, 0x0619, 0x0620, 0x0625, 0x062e, 0x063b, 0x0642,
+ // Entry C0 - FF
+ 0x065d, 0x066c, 0x0679, 0x0680, 0x0689, 0x0695, 0x069c, 0x06a4,
+ 0x06b2, 0x06ba, 0x06c7, 0x06d4, 0x06d7, 0x06ee, 0x06f8, 0x06fe,
+ 0x0704, 0x070b, 0x0714, 0x071b, 0x0720, 0x0727, 0x0731, 0x0739,
+ 0x073f, 0x0745, 0x074b, 0x0750, 0x0757, 0x075d, 0x076f, 0x0778,
+ 0x077f, 0x0783, 0x078d, 0x0792, 0x0799, 0x07a5, 0x07ae, 0x07b4,
+ 0x07bc, 0x07c0, 0x07c7, 0x07cf, 0x07d8, 0x07dc, 0x07e0, 0x07e8,
+ 0x07ec, 0x07f3, 0x07fc, 0x0803, 0x080b, 0x0811, 0x0818, 0x0820,
+ 0x0828, 0x082c, 0x083c, 0x0843, 0x084d, 0x0856, 0x085e, 0x086d,
+ // Entry 100 - 13F
+ 0x0873, 0x087b, 0x0887, 0x088f, 0x0896, 0x089c, 0x08a2, 0x08aa,
+ 0x08af, 0x08b7, 0x08bd, 0x08c3, 0x08c8, 0x08da, 0x08ea, 0x08f0,
+ 0x0902, 0x090e, 0x0914, 0x091b, 0x091f, 0x0923, 0x0940, 0x0955,
+ 0x095b, 0x0963, 0x0973, 0x098e, 0x0994, 0x09b8, 0x09bc, 0x09ca,
+ 0x09ea, 0x09ed, 0x0a01, 0x0a15, 0x0a26, 0x0a2e, 0x0a40, 0x0a4c,
+ 0x0a52, 0x0a54, 0x0a5d, 0x0a79, 0x0a7d, 0x0a82, 0x0a91, 0x0a94,
+ 0x0a9c, 0x0aa2, 0x0ac0, 0x0add, 0x0aea, 0x0aef, 0x0af8, 0x0afd,
+ 0x0b02, 0x0b12, 0x0b29, 0x0b2e, 0x0b34, 0x0b38, 0x0b40, 0x0b45,
+ // Entry 140 - 17F
+ 0x0b5e, 0x0b6a, 0x0b77, 0x0b81, 0x0b88, 0x0b8d, 0x0ba1, 0x0bbb,
+ 0x0bbf, 0x0bc3, 0x0bc9, 0x0bce, 0x0bd6, 0x0bdc, 0x0bf3, 0x0bf9,
+ 0x0c00, 0x0c08, 0x0c17, 0x0c26, 0x0c3f, 0x0c4b, 0x0c53, 0x0c59,
+ 0x0c5b, 0x0c61, 0x0c65, 0x0c6f, 0x0c77, 0x0c7b, 0x0c83, 0x0c9c,
+ 0x0ca3, 0x0ca7, 0x0caf, 0x0cb3, 0x0cbc, 0x0cc7, 0x0ccf, 0x0cd8,
+ 0x0cdc, 0x0ce6, 0x0cee, 0x0cfc, 0x0d05, 0x0d0e, 0x0d13, 0x0d29,
+ 0x0d2d, 0x0d36, 0x0d3d, 0x0d42, 0x0d4b, 0x0d50, 0x0d58, 0x0d5f,
+ 0x0d66, 0x0d6c, 0x0d71, 0x0d76, 0x0d7b, 0x0d83, 0x0d98, 0x0da0,
+ // Entry 180 - 1BF
+ 0x0da6, 0x0dad, 0x0db6, 0x0dbb, 0x0dbf, 0x0dcd, 0x0dd6, 0x0de0,
+ 0x0de7, 0x0dec, 0x0def, 0x0df3, 0x0df7, 0x0e07, 0x0e0a, 0x0e13,
+ 0x0e18, 0x0e1e, 0x0e26, 0x0e2e, 0x0e36, 0x0e3d, 0x0e42, 0x0e48,
+ 0x0e4e, 0x0e53, 0x0e58, 0x0e61, 0x0e70, 0x0e7b, 0x0e7f, 0x0e85,
+ 0x0e8e, 0x0e94, 0x0e9c, 0x0ea1, 0x0ea5, 0x0eb1, 0x0eba, 0x0ec7,
+ 0x0ecd, 0x0ed7, 0x0ede, 0x0ee6, 0x0eec, 0x0ef3, 0x0f00, 0x0f20,
+ 0x0f2d, 0x0f31, 0x0f47, 0x0f4d, 0x0f51, 0x0f58, 0x0f5f, 0x0f66,
+ 0x0f71, 0x0f76, 0x0f7b, 0x0f81, 0x0f85, 0x0f95, 0x0f9b, 0x0fac,
+ // Entry 1C0 - 1FF
+ 0x0fb4, 0x0fbd, 0x0fc2, 0x0fc7, 0x0fcc, 0x0fda, 0x0fe4, 0x0feb,
+ 0x0ff3, 0x0ffd, 0x1002, 0x100a, 0x1022, 0x1046, 0x1053, 0x1072,
+ 0x107e, 0x109b, 0x10a0, 0x10a8, 0x10af, 0x10c3, 0x10ca, 0x10e8,
+ 0x10f3, 0x10fa, 0x1104, 0x1122, 0x1127, 0x112c, 0x1131, 0x113a,
+ 0x1141, 0x1149, 0x1152, 0x1155, 0x115c, 0x1163, 0x1175, 0x117e,
+ 0x1183, 0x118a, 0x1195, 0x119e, 0x11a4, 0x11b0, 0x11b7, 0x11c9,
+ 0x11d6, 0x11dd, 0x11e2, 0x11e6, 0x11ec, 0x11fa, 0x1207, 0x1212,
+ 0x121d, 0x1221, 0x122f, 0x1235, 0x124d, 0x1256, 0x1263, 0x1271,
+ // Entry 200 - 23F
+ 0x127e, 0x128b, 0x1292, 0x1299, 0x12a5, 0x12ac, 0x12b0, 0x12c1,
+ 0x12c7, 0x12cb, 0x12d3, 0x12da, 0x12e9, 0x12fe, 0x1303, 0x130f,
+ 0x1314, 0x1319, 0x131d, 0x1323, 0x1328, 0x132d, 0x1330, 0x1337,
+ 0x133f, 0x1348, 0x134f, 0x1357, 0x135f, 0x136b, 0x1374, 0x137a,
+ 0x1380, 0x1388, 0x1391, 0x13a1, 0x13a9, 0x13af, 0x13b8, 0x13be,
+ 0x13d8, 0x13e0, 0x13e8, 0x13ef, 0x13f3, 0x13f6, 0x13fd, 0x1403,
+ 0x1414, 0x1429, 0x142e, 0x1433, 0x1438, 0x1440, 0x1446, 0x144b,
+ 0x1450, 0x1458, 0x146e, 0x1476, 0x147e, 0x1483, 0x1486, 0x148d,
+ // Entry 240 - 27F
+ 0x1496, 0x149c, 0x14a4, 0x14bf, 0x14c8, 0x14dd, 0x14e5, 0x14eb,
+ 0x1509, 0x150d, 0x1523, 0x1527, 0x1548, 0x1548, 0x155c, 0x1580,
+ 0x1592, 0x15a0, 0x15bd, 0x15d8, 0x15f0, 0x15ff, 0x160f, 0x160f,
+ 0x1621, 0x1638, 0x165c, 0x1665, 0x167a, 0x168c, 0x1694, 0x16a2,
+ 0x16b7, 0x16c7,
+} // Size: 1244 bytes
+
+var lvLangStr string = "" + // Size: 4332 bytes
+ "afāruabhāzuavestaafrikanduakanuamharuaragoniešuarābuasamiešuavāruaimarua" +
+ "zerbaidžāņubaškīrubaltkrievubulgārubišlamābambarubengāļutibetiešubretoņu" +
+ "bosniešukatalāņučečenučamorrukorsikāņukrīčehubaznīcslāvučuvašuvelsiešudā" +
+ "ņuvācumaldīviešudzongkeevugrieķuangļuesperantospāņuigauņubaskupersiešuf" +
+ "ulusomufidžiešufērufrančurietumfrīzuīrugēlugalisiešugvaranugudžaratumeni" +
+ "ešuhausuivritshindihirimotuhorvātuhaitiešuungāruarmēņuhereruinterlingvai" +
+ "ndonēziešuinterlingveigboSičuaņas jiinupiakuidoīslandiešuitāļuinuītujapā" +
+ "ņujaviešugruzīnukongukikujukvaņamukazahugrenlandiešukhmerukannadukoreji" +
+ "ešukanurukašmiriešukurdukomiešukorniešukirgīzulatīņuluksemburgiešugandul" +
+ "imburgiešulingalalaosiešulietuviešulubakatangalatviešumalagasumāršaliešu" +
+ "maorumaķedoniešumalajalumongoļumaratumalajiešumaltiešubirmiešunauruiešuz" +
+ "iemeļndebelunepāliešundonguholandiešujaunnorvēģunorvēģu bukmolsdienvidnd" +
+ "ebelunavahučičevaoksitāņuodžibvuoromuorijuosetīnupandžabupālipoļupuštupo" +
+ "rtugāļukečvuretoromāņurundurumāņukrievukiņaruandasanskritssardīniešusind" +
+ "huziemeļsāmusangosingāļuslovākuslovēņusamoāņušonusomāļualbāņuserbusvatud" +
+ "ienvidsotusundaniešuzviedrusvahilitamilutelugutadžikutajutigrinjaturkmēņ" +
+ "ucvanutongiešuturkucongutatārutaitiešuuiguruukraiņuurduuzbekuvenduvjetna" +
+ "miešuvolapiksvaloņuvolofukhosujidišsjorubudžuanuķīniešuzuluačinuačoluada" +
+ "ngmuadiguafrihiliaghemuainuakadiešualeutudienvidaltajiešusenangļuangikaa" +
+ "ramiešuaraukāņuarapahuaravakuasuastūriešuavadhubeludžubaliešubasubamumug" +
+ "omalubedžubembubenabafuturietumbeludžubhodžpūrubikolubinukomusiksikubrad" +
+ "žiešubodonkosiburjatubugubulubilinumedumbukadukarībukajugaatsamusebuāņu" +
+ "kigačibčudžagatajsčūkumariešučinuku žargonsčoktavučipevaianučirokušejenu" +
+ "kurdu (Sorani)koptuKrimas tatārukašubudakotudargutaitudelavērusleivudogr" +
+ "ibudinkuzarmudogrulejassorbudualuvidusholandiešudiola-fonjīdiūludazukjem" +
+ "buefikuēģiptiešuekadžukuelamiešuvidusangļuevondufangufilipīniešufonuvidu" +
+ "sfrančusenfrančuziemeļfrīzuaustrumfrīzufriūlugagagauzugajogbajugēzukirib" +
+ "atiešuvidusaugšvācusenaugšvācugondu valodasgorontalugotugrebosengrieķuŠv" +
+ "eices vācugusiikučinuhaiduhavajiešuhiligainonuhetuhmonguaugšsorbuhupuiba" +
+ "nuibibioilokuingušuložbansjgomačamujūdpersiešujūdarābukarakalpakukabiluk" +
+ "ačinukadžikambukāvikabardiešukaņembukatabumakondekaboverdiešukorukhasuho" +
+ "taniešukoiračiinīkakokalendžīnukimbundukomiešu-permiešukonkanukosrājiešu" +
+ "kpellukaračaju un balkārukarēļukuruhušambalubafijuĶelnes vācukumikukuten" +
+ "ajuladinolangilandulambulezgīnulakotumongulozuziemeļlurulubalulvaluisenu" +
+ "lunduluolušejuluhjumaduriešumafumagahiešumaithilimakasarumandingumasajum" +
+ "abumokšumandarumendumeruMaurīcijas kreoluvidusīrumakua-meettomgomikmakum" +
+ "inangkabavumandžūrumanipūrumohaukumosumundanguvairākas valodaskrīkumiran" +
+ "diešumarvarumjenuerzjumazanderāņuneapoliešunamalejasvācunevarunjasuniuāņ" +
+ "ukvasiongjembūnunogajusennorvēģunkoziemeļsotunueruklasiskā nevaruņamvezu" +
+ "ņankoluņorunzemuvažāžuturku osmaņupangasinanupehlevipampanganupapjament" +
+ "opalaviešusenpersufeniķiešuponapiešusenprovansiešukičeradžastāņurapanuju" +
+ "rarotongiešurombočigānuaromūnuruandasandavujakutusamārijas aramiešusambu" +
+ "rusasakusantalungambejusangusicīliešuskotudienvidkurdusenekusenuselkupuk" +
+ "oiraboro sennisenīrušilhušanuČadas arābusidamudienvidsāmuLuleo sāmuInari" +
+ " sāmuskoltsāmusoninkusogdiešusranantogoserērusahosukumususušumerukomoruK" +
+ "ongo svahiliklasiskā sīriešusīriešutemnutesoterenotetumutigrutivutokelav" +
+ "iešuklingoņutlinkitutuaregunjasas tongutokpisinstarokocimšiāņutumbukutuv" +
+ "aliešutasavakutuviešuCentrālmarokas tamazītsudmurtuugaritiešuumbundusakn" +
+ "evajuvotuvundžoVallisas vācuvalamuvarajuvašovarlpirīkalmikusogujaojapieš" +
+ "ujanbaņujembukantoniešusapotekublissimbolikazenagustandarta marokāņu ber" +
+ "beruzunjubez lingvistiska saturazazakimūsdienu standarta arābudienvidaze" +
+ "rbaidžāņuAustrijas vācuŠveices augšvācuAustrālijas angļuKanādas angļuLie" +
+ "lbritānijas angļuASV angļuLatīņamerikas spāņuEiropas spāņuMeksikas spāņu" +
+ "Kanādas frančuŠveices frančulejassakšuflāmuBrazīlijas portugāļuEiropas p" +
+ "ortugāļumoldāvuserbu-horvātuķīniešu vienkāršotāķīniešu tradicionālā"
+
+var lvLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0006, 0x000d, 0x0013, 0x001c, 0x0021, 0x0027, 0x0032,
+ 0x0038, 0x0041, 0x0047, 0x004d, 0x005c, 0x0065, 0x006f, 0x0077,
+ 0x0080, 0x0087, 0x0090, 0x009a, 0x00a2, 0x00ab, 0x00b5, 0x00bd,
+ 0x00c5, 0x00d0, 0x00d4, 0x00d9, 0x00e6, 0x00ee, 0x00f7, 0x00fd,
+ 0x0102, 0x010e, 0x0115, 0x0118, 0x011f, 0x0125, 0x012e, 0x0135,
+ 0x013c, 0x0141, 0x014a, 0x014e, 0x0152, 0x015c, 0x0161, 0x0168,
+ 0x0174, 0x0178, 0x017d, 0x0187, 0x018e, 0x0198, 0x01a0, 0x01a5,
+ 0x01ab, 0x01b0, 0x01b8, 0x01c0, 0x01c9, 0x01d0, 0x01d8, 0x01de,
+ // Entry 40 - 7F
+ 0x01e9, 0x01f6, 0x0201, 0x0205, 0x0212, 0x021a, 0x021d, 0x0229,
+ 0x0230, 0x0237, 0x023f, 0x0247, 0x024f, 0x0254, 0x025a, 0x0262,
+ 0x0268, 0x0275, 0x027b, 0x0282, 0x028c, 0x0292, 0x029e, 0x02a3,
+ 0x02ab, 0x02b4, 0x02bc, 0x02c4, 0x02d3, 0x02d8, 0x02e4, 0x02eb,
+ 0x02f4, 0x02ff, 0x030a, 0x0313, 0x031b, 0x0328, 0x032d, 0x033a,
+ 0x0342, 0x034a, 0x0350, 0x035a, 0x0363, 0x036c, 0x0376, 0x0384,
+ 0x038f, 0x0395, 0x03a0, 0x03ad, 0x03be, 0x03cc, 0x03d2, 0x03da,
+ 0x03e4, 0x03ec, 0x03f1, 0x03f6, 0x03fe, 0x0407, 0x040c, 0x0411,
+ // Entry 80 - BF
+ 0x0417, 0x0422, 0x0428, 0x0434, 0x0439, 0x0441, 0x0447, 0x0452,
+ 0x045b, 0x0467, 0x046d, 0x0479, 0x047e, 0x0487, 0x048f, 0x0498,
+ 0x04a1, 0x04a6, 0x04ae, 0x04b6, 0x04bb, 0x04c0, 0x04cb, 0x04d6,
+ 0x04dd, 0x04e4, 0x04ea, 0x04f0, 0x04f8, 0x04fc, 0x0504, 0x050e,
+ 0x0513, 0x051c, 0x0521, 0x0526, 0x052d, 0x0536, 0x053c, 0x0544,
+ 0x0548, 0x054e, 0x0553, 0x055f, 0x0567, 0x056e, 0x0574, 0x0579,
+ 0x0580, 0x0586, 0x058d, 0x0597, 0x059b, 0x05a1, 0x05a7, 0x05ae,
+ 0x05b3, 0x05b3, 0x05bb, 0x05c1, 0x05c5, 0x05ce, 0x05ce, 0x05d4,
+ // Entry C0 - FF
+ 0x05d4, 0x05e5, 0x05ee, 0x05f4, 0x05fd, 0x0607, 0x0607, 0x060e,
+ 0x060e, 0x0615, 0x0615, 0x0615, 0x0618, 0x0618, 0x0623, 0x0623,
+ 0x0629, 0x0631, 0x0639, 0x0639, 0x063d, 0x0643, 0x0643, 0x0649,
+ 0x064f, 0x0654, 0x0654, 0x0658, 0x065e, 0x065e, 0x066c, 0x0677,
+ 0x067d, 0x0681, 0x0681, 0x0685, 0x068c, 0x068c, 0x068c, 0x0697,
+ 0x0697, 0x069b, 0x06a0, 0x06a7, 0x06ab, 0x06af, 0x06b5, 0x06bc,
+ 0x06c0, 0x06c7, 0x06cd, 0x06d3, 0x06dc, 0x06e0, 0x06e7, 0x06f1,
+ 0x06f7, 0x06ff, 0x070f, 0x0717, 0x0722, 0x0729, 0x0730, 0x073e,
+ // Entry 100 - 13F
+ 0x0743, 0x0743, 0x0751, 0x0758, 0x075e, 0x0763, 0x0768, 0x0771,
+ 0x0777, 0x077e, 0x0783, 0x0788, 0x078d, 0x0797, 0x0797, 0x079c,
+ 0x07ac, 0x07b8, 0x07be, 0x07c2, 0x07c8, 0x07cd, 0x07cd, 0x07d9,
+ 0x07e2, 0x07eb, 0x07f6, 0x07f6, 0x07fc, 0x07fc, 0x0801, 0x080e,
+ 0x080e, 0x0812, 0x0812, 0x081e, 0x0828, 0x0828, 0x0835, 0x0842,
+ 0x0849, 0x084b, 0x0852, 0x0852, 0x0856, 0x085b, 0x085b, 0x0860,
+ 0x086c, 0x086c, 0x087b, 0x0888, 0x0888, 0x0895, 0x089e, 0x08a2,
+ 0x08a7, 0x08b1, 0x08bf, 0x08bf, 0x08bf, 0x08c4, 0x08cb, 0x08d0,
+ // Entry 140 - 17F
+ 0x08d0, 0x08da, 0x08da, 0x08e5, 0x08e9, 0x08ef, 0x08f9, 0x08f9,
+ 0x08fd, 0x0902, 0x0908, 0x090d, 0x0914, 0x0914, 0x0914, 0x091c,
+ 0x091f, 0x0926, 0x0933, 0x093d, 0x093d, 0x0948, 0x094e, 0x0955,
+ 0x095b, 0x0960, 0x0965, 0x0970, 0x0978, 0x097e, 0x0985, 0x0992,
+ 0x0992, 0x0996, 0x0996, 0x099b, 0x09a5, 0x09b1, 0x09b1, 0x09b1,
+ 0x09b5, 0x09c1, 0x09c9, 0x09db, 0x09e2, 0x09ee, 0x09f4, 0x0a09,
+ 0x0a09, 0x0a09, 0x0a11, 0x0a17, 0x0a1f, 0x0a25, 0x0a32, 0x0a38,
+ 0x0a40, 0x0a46, 0x0a4b, 0x0a50, 0x0a55, 0x0a5d, 0x0a5d, 0x0a5d,
+ // Entry 180 - 1BF
+ 0x0a5d, 0x0a63, 0x0a63, 0x0a68, 0x0a6c, 0x0a77, 0x0a77, 0x0a80,
+ 0x0a87, 0x0a8c, 0x0a8f, 0x0a96, 0x0a9b, 0x0a9b, 0x0a9b, 0x0aa5,
+ 0x0aa9, 0x0ab3, 0x0abb, 0x0ac3, 0x0acb, 0x0ad1, 0x0ad5, 0x0adb,
+ 0x0ae2, 0x0ae7, 0x0aeb, 0x0afd, 0x0b06, 0x0b12, 0x0b15, 0x0b1c,
+ 0x0b28, 0x0b32, 0x0b3b, 0x0b42, 0x0b46, 0x0b46, 0x0b4e, 0x0b5f,
+ 0x0b65, 0x0b70, 0x0b77, 0x0b77, 0x0b7c, 0x0b81, 0x0b8e, 0x0b8e,
+ 0x0b99, 0x0b9d, 0x0ba7, 0x0bad, 0x0bb2, 0x0bba, 0x0bba, 0x0bc0,
+ 0x0bca, 0x0bd0, 0x0bdc, 0x0bdc, 0x0bdf, 0x0bea, 0x0bef, 0x0bff,
+ // Entry 1C0 - 1FF
+ 0x0c07, 0x0c0f, 0x0c14, 0x0c19, 0x0c22, 0x0c2f, 0x0c3a, 0x0c41,
+ 0x0c4b, 0x0c55, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c5f, 0x0c67, 0x0c67,
+ 0x0c72, 0x0c72, 0x0c72, 0x0c7c, 0x0c7c, 0x0c8b, 0x0c90, 0x0c90,
+ 0x0c9d, 0x0ca5, 0x0cb2, 0x0cb2, 0x0cb2, 0x0cb7, 0x0cbf, 0x0cbf,
+ 0x0cbf, 0x0cbf, 0x0cc7, 0x0ccd, 0x0cd4, 0x0cda, 0x0cee, 0x0cf5,
+ 0x0cfb, 0x0d02, 0x0d02, 0x0d0a, 0x0d0f, 0x0d1a, 0x0d1f, 0x0d1f,
+ 0x0d2b, 0x0d31, 0x0d35, 0x0d35, 0x0d3c, 0x0d4b, 0x0d52, 0x0d52,
+ 0x0d58, 0x0d5d, 0x0d6a, 0x0d70, 0x0d70, 0x0d70, 0x0d7c, 0x0d87,
+ // Entry 200 - 23F
+ 0x0d92, 0x0d9c, 0x0da3, 0x0dac, 0x0db6, 0x0dbd, 0x0dc1, 0x0dc1,
+ 0x0dc7, 0x0dcb, 0x0dd2, 0x0dd8, 0x0de5, 0x0df8, 0x0e01, 0x0e01,
+ 0x0e01, 0x0e06, 0x0e0a, 0x0e10, 0x0e16, 0x0e1b, 0x0e1f, 0x0e2b,
+ 0x0e2b, 0x0e34, 0x0e3c, 0x0e3c, 0x0e43, 0x0e4f, 0x0e58, 0x0e58,
+ 0x0e5e, 0x0e5e, 0x0e69, 0x0e69, 0x0e70, 0x0e7a, 0x0e82, 0x0e8a,
+ 0x0ea3, 0x0eaa, 0x0eb5, 0x0ebc, 0x0ec1, 0x0ec5, 0x0ec5, 0x0ec5,
+ 0x0ec5, 0x0ec5, 0x0ec9, 0x0ec9, 0x0ed0, 0x0ede, 0x0ee4, 0x0eea,
+ 0x0eef, 0x0ef8, 0x0ef8, 0x0eff, 0x0eff, 0x0f03, 0x0f06, 0x0f0e,
+ // Entry 240 - 27F
+ 0x0f16, 0x0f1b, 0x0f1b, 0x0f26, 0x0f2e, 0x0f3b, 0x0f3b, 0x0f41,
+ 0x0f5d, 0x0f62, 0x0f79, 0x0f7f, 0x0f99, 0x0faf, 0x0fbe, 0x0fd1,
+ 0x0fe4, 0x0ff3, 0x1009, 0x1013, 0x102a, 0x1039, 0x1049, 0x1049,
+ 0x1059, 0x1069, 0x1074, 0x107a, 0x1091, 0x10a4, 0x10ac, 0x10ba,
+ 0x10d3, 0x10ec,
+} // Size: 1244 bytes
+
+var mkLangStr string = "" + // Size: 10127 bytes
+ "афарскиапхаскиавестанскиафрикансаканскиамхарскиарагонскиарапскиасамскиав" +
+ "арскиајмарскиазербејџанскибашкирскибелорускибугарскибисламабамбарабенга" +
+ "лскитибетскибретонскибосанскикаталонскичеченскичаморскикорзиканскикриче" +
+ "шкицрковнословенскичувашкивелшкиданскигерманскидивехиѕонгкаевегрчкиангл" +
+ "искиесперантошпанскиестонскибаскискиперсискифулафинскифиџискифарскифран" +
+ "цускизападнофризискиирскишкотски гелскигалицискигваранскигуџаратиманксх" +
+ "аусахебрејскихиндихири мотухрватскихаитскиунгарскиерменскихерероинтерли" +
+ "нгваиндонезискиокциденталигбосичуан јиинупијачкиидоисландскииталијански" +
+ "инуктитутјапонскијаванскигрузискиконгокикујуквањамаказакстанскикалалису" +
+ "ткмерскиканнадакорејскиканурикашмирскикурдскикомикорнскикиргистанскилат" +
+ "инскилуксембуршкигандалимбуршкилингалалаошкилитванскилуба-катангалатвис" +
+ "кималгашкимаршалскимаорскимакедонскималајаламмонголскимаратималајскимал" +
+ "тешкибурманскинауруанскисеверен ндебеленепалскиндонгахоландскинорвешки " +
+ "нинорскнорвешки букмолјужен ндебеленавахоњанџаокситанскиоџибваоромоориј" +
+ "аосетскипенџапскипалиполскипаштунскипортугалскикечуанскиретороманскирун" +
+ "дироманскирускируандасанскритсардинскисиндисевернолапонскисангосинхалск" +
+ "исловачкисловенечкисамоанскишонасомалискиалбанскисрпскисватисесотосундс" +
+ "кишведскисвахилитамилскителугутаџикистанскитајландскитигрињатуркменскиц" +
+ "ванатонганскитурскицонгататарскитахитскиујгурскиукраинскиурдуузбекистан" +
+ "скивендавиетнамскиволапиквалонскиволофскикосајидишјорупскиџуаншкикинеск" +
+ "изулуачешкиаколиадангмеадигејскитуниски арапскиафрихилиагемскиајнуакадс" +
+ "киалабамскиалеутскигешки албанскијужноалтајскистароанглискиангикаарамеј" +
+ "скимапучкиараонаарапахоалжирски арапскиаравачкимарокански арапскиегипет" +
+ "ски арапскиасуамерикански знаковен јазикастурскикотаваавадибелуџискибал" +
+ "искибаварскибасабамунскитобагомалабеџабембабетавскибенабафутбадагазапад" +
+ "ен балочибоџпурибиколскибинибанџарскикомсиксикабишнупријабахтијарскибра" +
+ "јбрахујскибодоакосебурјатскибугискибулубиленскимедумбакадокарипскикајуг" +
+ "аацамсебуанскичигачибчачагатајскичучкимарискичинучки жаргончоктавскичип" +
+ "евјанскичерокискичејенскицентрален курдскикоптскикапизнонкримскотурскик" +
+ "ашупскидакотадаргватаитаделаверслејвидогрипскидинказармадогридолнолужич" +
+ "кидусунскидуаласреднохоландскијола-фоњиџуладазагаембуефикемилијанскиста" +
+ "роегипетскиекаџукеламскисредноанглискицентралнојупичкиевондоекстремадур" +
+ "скифангфилипинскитурнедаленски финскифонкаџунски францускисреднофранцус" +
+ "кистарофранцускифранкопровансалскисевернофризискиисточнофризискифурланс" +
+ "кигагагаускигангајогбајазороастриски даригизгилбертанскигиланскисредног" +
+ "орногерманскистарогорногерманскигоански конканигондигоронталоготскигреб" +
+ "остарогрчкишвајцарски германскигвахирофарефарегусигвичинскихајдахакахав" +
+ "ајскифиџиски хиндихилигајнонскихетитскихмонггорнолужичкисјангхупаибаниб" +
+ "ибиоилоканскиингушкиижорскијамајски креолскиложбаннгомбамачамееврејскоп" +
+ "ерсискиеврејскоарапскијитскикаракалпачкикабилскикачинскикаџекамбакавика" +
+ "бардинскиканембутјапмакондекабувердианукењангкорокаинганшкикасихотански" +
+ "којра чииниковарскизазакикакокаленџинкимбундукоми-пермјачкиконканикозре" +
+ "јскикпелекарачаевско-балкарскикриокинарајскикарелскикурухшамбалабафијак" +
+ "олоњскикумичкикутенајскиладинолангиландаламбалезгинскилингва франка нов" +
+ "алигурскиливонскилакотскиломбардскимонголозисевернолурискилатгалскилуба" +
+ "-лулуалујсењскилундалуомизолујакнижевен кинескиласкимадурскимафамагахима" +
+ "итилимакасарскимандингомасајскимабамокшанскимандарскимендемеруморисјенс" +
+ "редноирскимакува-митометамикмакминангкабауманџурскиманипуримохавскимоси" +
+ "западномарискимундангповеќе јазицикрикмирандскимарваримјенеерзјанскимаз" +
+ "ендеранскијужноминскинеаполскинамадолногерманскиневарскинијасниуејскиао" +
+ "квазионгиембунногајскистаронордискиновијалнкосеверен сотонуеркласичен н" +
+ "еварскињамвезињанколењоронзимаосашкиотомански турскипангасинанскисредно" +
+ "персискипампангапапијаментопалауанскипикардскипенсилваниски германскиме" +
+ "нонитски долногерманскистароперсискифалечкогерманскифеникискипиемонтски" +
+ "понтскипонпејскипрускистаропровансалскикичекичванскираџастанскирапанујс" +
+ "кираротонганскиромањолскирифскиромборомскиротуманскирусинскировијанскив" +
+ "лашкируасандавејакутскисамарјански арамејскисамбурусасачкисанталисаураш" +
+ "трангембејсангусицилијанскишкотски германскисасарски сардинскијужнокурд" +
+ "скисенекасенасериселкупскикојраборо сенистароирскисамогитскитачелхитшан" +
+ "чадски арапскисидамодолношлезискиселајарскијужнолапонскилулски лапонски" +
+ "инарски лапонскисколтски лапонскисонинкезогдијанскисрански тонгосерерса" +
+ "хозатерландски фризискисукумасусусумерскикоморијанскиконгоански свахили" +
+ "класичен сирискисирискишлезискитулутимнетесотеренотетумтигретивтокелауа" +
+ "нскицахурскиклингонскитлингитталишкитамашекњаса тонгаток писинтуројотар" +
+ "окоцаконскицимшијанскитатскитумбукатувалуанскитазавактуванскицентрално " +
+ "марокански тамазитскиудмуртскиугаритскиумбундукоренвајвенетскивепшкизап" +
+ "аднофламанскимајнскофранконскивотскивирувунџовалсерволамоварајскивашову" +
+ "калмичкимегрелскисогајаојапскијенгбенјембањенгатукантонскизапотечкиблис" +
+ "симболизеландскизенагастандарден марокански тамазигтскизунибез лингвист" +
+ "ичка содржиназазалитературен арапскибритански англискиамерикански англи" +
+ "скишпански (во Европа)француски (во Канада)португалски (во Европа)молда" +
+ "вскисрпскохрватскипоедноставен кинескитрадиционален кинески"
+
+var mkLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x004e, 0x005e, 0x0070,
+ 0x007e, 0x008c, 0x009a, 0x00aa, 0x00c4, 0x00d6, 0x00e8, 0x00f8,
+ 0x0106, 0x0114, 0x0126, 0x0136, 0x0148, 0x0158, 0x016c, 0x017c,
+ 0x018c, 0x01a2, 0x01a8, 0x01b2, 0x01d2, 0x01e0, 0x01ec, 0x01f8,
+ 0x020a, 0x0216, 0x0222, 0x0228, 0x0232, 0x0242, 0x0254, 0x0262,
+ 0x0272, 0x0282, 0x0292, 0x029a, 0x02a6, 0x02b4, 0x02c0, 0x02d2,
+ 0x02f0, 0x02fa, 0x0315, 0x0327, 0x0339, 0x0349, 0x0353, 0x035d,
+ 0x036f, 0x0379, 0x038a, 0x039a, 0x03a8, 0x03b8, 0x03c8, 0x03d4,
+ // Entry 40 - 7F
+ 0x03ea, 0x0400, 0x0414, 0x041c, 0x042d, 0x0441, 0x0447, 0x0459,
+ 0x046f, 0x0481, 0x0491, 0x04a1, 0x04b1, 0x04bb, 0x04c7, 0x04d5,
+ 0x04ed, 0x04ff, 0x050d, 0x051b, 0x052b, 0x0537, 0x0549, 0x0557,
+ 0x055f, 0x056d, 0x0585, 0x0595, 0x05ad, 0x05b7, 0x05c9, 0x05d7,
+ 0x05e3, 0x05f5, 0x060c, 0x061c, 0x062c, 0x063e, 0x064c, 0x0660,
+ 0x0672, 0x0684, 0x0690, 0x06a0, 0x06b0, 0x06c2, 0x06d6, 0x06f3,
+ 0x0703, 0x070f, 0x0721, 0x0740, 0x075d, 0x0776, 0x0782, 0x078c,
+ 0x07a0, 0x07ac, 0x07b6, 0x07c0, 0x07ce, 0x07e0, 0x07e8, 0x07f4,
+ // Entry 80 - BF
+ 0x0806, 0x081c, 0x082e, 0x0846, 0x0850, 0x0860, 0x086a, 0x0876,
+ 0x0886, 0x0898, 0x08a2, 0x08c0, 0x08ca, 0x08dc, 0x08ec, 0x0900,
+ 0x0912, 0x091a, 0x092c, 0x093c, 0x0948, 0x0952, 0x095e, 0x096c,
+ 0x097a, 0x0988, 0x0998, 0x09a4, 0x09be, 0x09d2, 0x09e0, 0x09f4,
+ 0x09fe, 0x0a10, 0x0a1c, 0x0a26, 0x0a36, 0x0a46, 0x0a56, 0x0a68,
+ 0x0a70, 0x0a8a, 0x0a94, 0x0aa8, 0x0ab6, 0x0ac6, 0x0ad6, 0x0ade,
+ 0x0ae8, 0x0af8, 0x0b06, 0x0b14, 0x0b1c, 0x0b28, 0x0b32, 0x0b40,
+ 0x0b52, 0x0b6f, 0x0b7f, 0x0b8d, 0x0b95, 0x0ba3, 0x0bb5, 0x0bc5,
+ // Entry C0 - FF
+ 0x0be0, 0x0bfa, 0x0c14, 0x0c20, 0x0c32, 0x0c40, 0x0c4c, 0x0c5a,
+ 0x0c79, 0x0c89, 0x0cac, 0x0ccd, 0x0cd3, 0x0d05, 0x0d15, 0x0d21,
+ 0x0d2b, 0x0d3d, 0x0d4b, 0x0d5b, 0x0d63, 0x0d73, 0x0d7b, 0x0d87,
+ 0x0d8f, 0x0d99, 0x0da9, 0x0db1, 0x0dbb, 0x0dc7, 0x0de2, 0x0df0,
+ 0x0e00, 0x0e08, 0x0e1a, 0x0e20, 0x0e2e, 0x0e42, 0x0e58, 0x0e60,
+ 0x0e72, 0x0e7a, 0x0e84, 0x0e96, 0x0ea4, 0x0eac, 0x0ebc, 0x0eca,
+ 0x0ed2, 0x0ee2, 0x0eee, 0x0ef6, 0x0f08, 0x0f10, 0x0f1a, 0x0f2e,
+ 0x0f38, 0x0f46, 0x0f61, 0x0f73, 0x0f89, 0x0f9b, 0x0fab, 0x0fcc,
+ // Entry 100 - 13F
+ 0x0fda, 0x0fea, 0x1004, 0x1014, 0x1020, 0x102c, 0x1036, 0x1044,
+ 0x1050, 0x1062, 0x106c, 0x1076, 0x1080, 0x1098, 0x10a8, 0x10b2,
+ 0x10d0, 0x10e1, 0x10e9, 0x10f5, 0x10fd, 0x1105, 0x111b, 0x1137,
+ 0x1143, 0x1151, 0x116d, 0x118d, 0x1199, 0x11b5, 0x11bd, 0x11d1,
+ 0x11f8, 0x11fe, 0x1221, 0x123f, 0x125b, 0x127f, 0x129d, 0x12bb,
+ 0x12cd, 0x12d1, 0x12e1, 0x12e7, 0x12ef, 0x12f9, 0x131a, 0x1320,
+ 0x1338, 0x1348, 0x1370, 0x1396, 0x13b3, 0x13bd, 0x13cf, 0x13db,
+ 0x13e5, 0x13f9, 0x1420, 0x142e, 0x143e, 0x1446, 0x1458, 0x1462,
+ // Entry 140 - 17F
+ 0x146a, 0x147a, 0x1493, 0x14ad, 0x14bd, 0x14c7, 0x14df, 0x14e9,
+ 0x14f1, 0x14f9, 0x1505, 0x1517, 0x1525, 0x1533, 0x1554, 0x1560,
+ 0x156c, 0x1578, 0x1598, 0x15b6, 0x15c2, 0x15da, 0x15ea, 0x15fa,
+ 0x1602, 0x160c, 0x1614, 0x162a, 0x1638, 0x1640, 0x164e, 0x1666,
+ 0x1672, 0x167a, 0x168e, 0x1696, 0x16a6, 0x16bb, 0x16cb, 0x16d7,
+ 0x16df, 0x16ef, 0x16ff, 0x171a, 0x1728, 0x173a, 0x1744, 0x176d,
+ 0x1775, 0x1789, 0x1799, 0x17a3, 0x17b1, 0x17bd, 0x17cd, 0x17db,
+ 0x17ef, 0x17fb, 0x1805, 0x180f, 0x1819, 0x182b, 0x184d, 0x185d,
+ // Entry 180 - 1BF
+ 0x186d, 0x187d, 0x1891, 0x189b, 0x18a3, 0x18bf, 0x18d1, 0x18e4,
+ 0x18f6, 0x1900, 0x1906, 0x190e, 0x1916, 0x1935, 0x193f, 0x194f,
+ 0x1957, 0x1963, 0x1971, 0x1985, 0x1995, 0x19a5, 0x19ad, 0x19bf,
+ 0x19d1, 0x19db, 0x19e3, 0x19f3, 0x1a09, 0x1a1e, 0x1a26, 0x1a32,
+ 0x1a48, 0x1a5a, 0x1a6a, 0x1a7a, 0x1a82, 0x1a9e, 0x1aac, 0x1ac5,
+ 0x1acd, 0x1adf, 0x1aed, 0x1aed, 0x1af7, 0x1b09, 0x1b23, 0x1b39,
+ 0x1b4b, 0x1b53, 0x1b6f, 0x1b7f, 0x1b89, 0x1b99, 0x1b9d, 0x1ba9,
+ 0x1bb9, 0x1bc9, 0x1be3, 0x1bf1, 0x1bf7, 0x1c0e, 0x1c16, 0x1c37,
+ // Entry 1C0 - 1FF
+ 0x1c45, 0x1c53, 0x1c5b, 0x1c65, 0x1c71, 0x1c90, 0x1caa, 0x1cc6,
+ 0x1cd6, 0x1cec, 0x1d00, 0x1d12, 0x1d3f, 0x1d70, 0x1d8a, 0x1daa,
+ 0x1dbc, 0x1dd0, 0x1dde, 0x1df0, 0x1dfc, 0x1e1e, 0x1e26, 0x1e38,
+ 0x1e4e, 0x1e62, 0x1e7c, 0x1e90, 0x1e9c, 0x1ea6, 0x1eb2, 0x1ec6,
+ 0x1ed6, 0x1eea, 0x1ef6, 0x1efc, 0x1f0a, 0x1f1a, 0x1f43, 0x1f51,
+ 0x1f5f, 0x1f6d, 0x1f7f, 0x1f8d, 0x1f97, 0x1faf, 0x1fd0, 0x1ff3,
+ 0x200b, 0x2017, 0x201f, 0x2027, 0x2039, 0x2054, 0x2068, 0x207c,
+ 0x208c, 0x2092, 0x20ad, 0x20b9, 0x20d3, 0x20e7, 0x2101, 0x211e,
+ // Entry 200 - 23F
+ 0x213d, 0x215e, 0x216c, 0x2182, 0x219b, 0x21a5, 0x21ad, 0x21d6,
+ 0x21e2, 0x21ea, 0x21fa, 0x2212, 0x2235, 0x2254, 0x2262, 0x2272,
+ 0x227a, 0x2284, 0x228c, 0x2298, 0x22a2, 0x22ac, 0x22b2, 0x22ca,
+ 0x22da, 0x22ee, 0x22fc, 0x230a, 0x2318, 0x232b, 0x233c, 0x2348,
+ 0x2354, 0x2364, 0x237a, 0x2386, 0x2394, 0x23aa, 0x23b8, 0x23c8,
+ 0x2404, 0x2416, 0x2428, 0x2436, 0x2440, 0x2446, 0x2456, 0x2462,
+ 0x2482, 0x24a4, 0x24b0, 0x24b8, 0x24c2, 0x24ce, 0x24da, 0x24ea,
+ 0x24f2, 0x24f2, 0x24f6, 0x2506, 0x2518, 0x2520, 0x2526, 0x2532,
+ // Entry 240 - 27F
+ 0x2540, 0x254a, 0x2558, 0x256a, 0x257c, 0x2592, 0x25a4, 0x25b0,
+ 0x25f0, 0x25f8, 0x2628, 0x2630, 0x2655, 0x2655, 0x2655, 0x2655,
+ 0x2655, 0x2655, 0x2678, 0x269f, 0x269f, 0x26c1, 0x26c1, 0x26c1,
+ 0x26e7, 0x26e7, 0x26e7, 0x26e7, 0x26e7, 0x2711, 0x2723, 0x273f,
+ 0x2766, 0x278f,
+} // Size: 1244 bytes
+
+var mlLangStr string = "" + // Size: 11903 bytes
+ "അഫാർഅബ്\u200cഖാസിയൻഅവസ്റ്റാൻആഫ്രിക്കാൻസ്അകാൻ\u200cഅംഹാരിക്അരഗോണീസ്അറബിക്" +
+ "ആസ്സാമീസ്അവാരിക്അയ്മാറഅസർബൈജാനിബഷ്ഖിർബെലാറുഷ്യൻബൾഗേറിയൻബിസ്\u200cലാമബം" +
+ "ബാറബംഗാളിടിബറ്റൻബ്രെട്ടൺബോസ്നിയൻകറ്റാലാൻചെചൻകമോറോകോർസിക്കൻക്രീചെക്ക്ചർ" +
+ "ച്ച് സ്ലാവിക്ചുവാഷ്വെൽഷ്ഡാനിഷ്ജർമ്മൻദിവെഹിസോങ്കഇവ്ഗ്രീക്ക്ഇംഗ്ലീഷ്എസ്" +
+ "\u200cപരാന്റോസ്\u200cപാനിഷ്എസ്റ്റോണിയൻബാസ്\u200cക്പേർഷ്യൻഫുലഫിന്നിഷ്ഫിജി" +
+ "യൻഫാറോസ്ഫ്രഞ്ച്പശ്ചിമ ഫ്രിഷിയൻഐറിഷ്സ്കോട്ടിഷ് ഗൈലിക്ഗലീഷ്യൻഗ്വരനീഗുജറാ" +
+ "ത്തിമാൻസ്ഹൗസഹീബ്രുഹിന്ദിഹിരി മോതുക്രൊയേഷ്യൻഹെയ്\u200cതിയൻഹംഗേറിയൻഅർമേന" +
+ "ിയൻഹെരേരൊഇന്റർലിൻ\u200cഗ്വാഇൻഡോനേഷ്യൻഇന്റർലിംഗ്വഇഗ്ബോഷുവാൻയിഇനുപിയാക്ഇ" +
+ "ഡോഐസ്\u200cലാൻഡിക്ഇറ്റാലിയൻഇനുക്റ്റിറ്റട്ട്ജാപ്പനീസ്ജാവാനീസ്ജോർജിയൻകോം" +
+ "ഗോകികൂയുക്വാന്യമകസാഖ്കലാല്ലിസട്ട്ഖമെർകന്നഡകൊറിയൻകനൂറികാശ്\u200cമീരികുർ" +
+ "ദ്ദിഷ്കോമികോർണിഷ്കിർഗിസ്ലാറ്റിൻലക്\u200cസംബർഗിഷ്ഗാണ്ടലിംബർഗിഷ്ലിംഗാലലാ" +
+ "വോലിത്വാനിയൻലുബ-കറ്റംഗലാറ്റ്വിയൻമലഗാസിമാർഷല്ലീസ്മവോറിമാസിഡോണിയൻമലയാളംമ" +
+ "ംഗോളിയൻമറാത്തിമലെയ്മാൾട്ടീസ്ബർമീസ്നൗറുനോർത്ത് ഡെബിൾനേപ്പാളിഡോങ്കഡച്ച്ന" +
+ "ോർവീജിയൻ നൈനോർക്\u200cസ്നോർവീജിയൻ ബുക്\u200cമൽദക്ഷിണ നെഡിബിൾനവാഹൊന്യൻജ" +
+ "ഓക്\u200cസിറ്റൻഓജിബ്വാഒറോമോഒഡിയഒസ്സെറ്റിക്പഞ്ചാബിപാലിപോളിഷ്പഷ്തുപോർച്ച" +
+ "ുഗീസ്ക്വെച്ചുവറൊമാഞ്ച്റുണ്ടിറൊമാനിയൻറഷ്യൻകിന്യാർവാണ്ടസംസ്\u200cകൃതംസർഡ" +
+ "ിനിയാൻസിന്ധിവടക്കൻ സമിസാംഗോസിംഹളസ്ലോവാക്സ്ലോവേനിയൻസമോവൻഷോണസോമാലിഅൽബേനി" +
+ "യൻസെർബിയൻസ്വാറ്റിതെക്കൻ സോതോസുണ്ടാനീസ്സ്വീഡിഷ്സ്വാഹിലിതമിഴ്തെലുങ്ക്താജ" +
+ "ിക്തായ്ടൈഗ്രിന്യതുർക്\u200cമെൻത്സ്വാനടോംഗൻടർക്കിഷ്ത്സോംഗടാട്ടർതാഹിതിയൻ" +
+ "ഉയ്ഘുർഉക്രേനിയൻഉറുദുഉസ്\u200cബെക്ക്വെന്ദവിയറ്റ്നാമീസ്വോളാപുക്വല്ലൂൺവൊള" +
+ "ോഫ്ഖോസയിദ്ദിഷ്യൊറൂബാസ്വാംഗ്ചൈനീസ്സുലുഅചിനീസ്അകോലിഅഡാങ്ഗമിഅഡൈഗേആഫ്രിഹില" +
+ "ിആഘേംഅയിനുഅക്കാഡിയൻഅലൈട്ട്തെക്കൻ അൾത്തായിപഴയ ഇംഗ്ലീഷ്ആൻഗികഅരമായഭാഷമാപു" +
+ "ചിഅരപാഹോഅറാവക്ആസുഓസ്\u200cട്രിയൻഅവധിബലൂചിബാലിനീസ്ബസബാമുൻഘോമാലബേജബേംബബെ" +
+ "നാബാഫട്ട്പശ്ചിമ ബലൂചിഭോജ്\u200cപൂരിബികോൽബിനികോംസിക്സികബ്രജ്ബോഡോഅക്കൂസ്" +
+ "ബുറിയത്ത്ബുഗിനീസ്ബുളുബ്ലിൻമെഡുംബകാഡോകാരിബ്കയൂഗഅറ്റ്സാംസെബുവാനോചിഗചിബ്ച" +
+ "ചഗതൈചൂകീസ്മാരിചിനൂഗ്-ജാർഗൺചോക്റ്റാവ്ചിപേവ്യൻഷെരോക്കിചിയേന്നേസൊറാനി കുർ" +
+ "ദിഷ്കോപ്റ്റിക്ക്രിമിയൻ ടർക്കിഷ്കാഷുബിയാൻഡകോട്ടഡർഗ്വാതൈതദലവാരെസ്ലേവ്ഡോഗ" +
+ "്രിബ്ദിൻകസാർമ്മഡോഗ്രിലോവർ സോർബിയൻദ്വാലമദ്ധ്യ ഡച്ച്യോല-ഫോന്യിദ്വൈലഡാസാഗ" +
+ "എംബുഎഫിക്പ്രാചീന ഈജിപ്ഷ്യൻഎകാജുക്എലാമൈറ്റ്മദ്ധ്യ ഇംഗ്ലീഷ്എവോൻഡോഫങ്ഫിലി" +
+ "പ്പിനോഫോൻമദ്ധ്യ ഫ്രഞ്ച്പഴയ ഫ്രഞ്ച്നോർത്തേൻ ഫ്രിഷ്യൻഈസ്റ്റേൺ ഫ്രിഷ്യൻഫ്" +
+ "രിയുലിയാൻഗാഗാഗൂസ്ഗയൊഗബ്യഗീസ്ഗിൽബർസേമദ്ധ്യ ഉച്ച ജർമൻപ്രാചീന ഉച്ച ജർമൻഗോ" +
+ "ണ്ഡിഗൊറോൻറാലോഗോഥിക്ക്ഗ്രബൊപുരാതന യവന ഭാഷസ്വിസ് ജർമ്മൻഗുസീഗ്വിച്ച് ഇൻഹൈ" +
+ "ഡഹവായിയൻഹിലിഗയ്നോൺഹിറ്റൈറ്റേമോങ്അപ്പർ സോർബിയൻഹൂപഇബാൻഇബീബിയോഇലോകോഇംഗ്വി" +
+ "ഷ്ലോജ്ബാൻഗോമ്പമചേംജൂഡിയോ-പേർഷ്യൻജൂഡിയോ-അറബിക്കര-കാൽപ്പക്കബൈൽകാചിൻജ്ജുക" +
+ "ംബകാവികബർഡിയാൻകനെംബുട്യാപ്മക്കോണ്ടെകബുവെർദിയാനുകോറോഘാസിഘോറ്റാനേസേകൊയ്റ" +
+ " ചീനികക്കോകലെഞ്ഞിൻക്ലിംഗൻകോമി-പെർമ്യാക്ക്കൊങ്കണികൊസറേയൻകപെല്ലേകരചൈ-ബാൽകർ" +
+ "കരീലിയൻകുരുഖ്ഷംഭാളഭാഫിയകൊളോഞ്ഞിയൻകുമൈക്കുതേനൈലാഡിനോലാംഗിലഹ്\u200cൻഡലംബ" +
+ "ലഹ്ഗിയാൻലഗോത്തമോങ്കോലൊസിവടക്കൻ ലൂറിലൂബ-ലുലുവലൂയിസെനോലുൻഡലുവോമിസോലുയിയമ" +
+ "ദുരേസേമാഫമഗാഹിമൈഥിലിമകാസർമണ്ഡിൻഗോമസായ്മാബമോക്ഷമണ്ഡാർമെൻഡെമേരുമൊറിസിൻമദ" +
+ "്ധ്യ ഐറിഷ്മാഖുവാ-മീത്തോമേത്താമിക്മാക്മിനാങ്കബൗമൻചുമണിപ്പൂരിമോഹാക്മൊസ്സ" +
+ "ിമുന്ദാംഗ്പലഭാഷകൾക്രീക്ക്മിരാൻറസേമർവാരിമയീൻഏഴ്സ്യമസന്ററാനിനെപ്പോളിറ്റാ" +
+ "ൻനാമലോ ജർമൻനേവാരിനിയാസ്ന്യുവാൻക്വാസിയോഗീംബൂൺനോഗൈപഴയ പേർഷ്യൻഇൻകോനോർത്തേ" +
+ "ൻ സോതോനുവേർക്ലാസിക്കൽ നേവാരിന്യാംവേസിന്യാൻകോൾന്യോറോസിമഒസേജ്ഓട്ടോമൻ തുർ" +
+ "ക്കിഷ്പങ്കാസിനൻപാഹ്ലവിപാംപൻഗപാപിയാമെൻറൊപലാവുൻപ്രാചീന പേർഷ്യൻഫീനിഷ്യൻപൊ" +
+ "ൻപിയൻപ്രൊവൻഷ്ൽക്വിച്ചെരാജസ്ഥാനിരാപനൂയിരാരോടോങ്കൻറോംബോറോമനിആരോമാനിയൻറുവ" +
+ "ാസാൻഡവേസാഖസമരിയാക്കാരുടെ അരമായസംബുരുസസാക്സന്താലിഗംബായ്സംഗുസിസിലിയൻസ്കോ" +
+ "ട്സ്തെക്കൻ കുർദ്ദിഷ്സെനേകസേനസെൽകപ്കൊയ്റാബൊറോ സെന്നിപ്രാചീന ഐറിഷ്താച്ചല" +
+ "ിറ്റ്ഷാൻചാഡ് അറബിസിഡാമോതെക്കൻ സാമിലൂലീ സമിഇനാരി സാമിസ്കോൾട്ട് സമിസോണിൻ" +
+ "കെസോജിഡിയൻശ്രാനൻ ഡോങ്കോസെറർസാഹോസുകുമസുസുസുമേരിയൻകൊമോറിയൻകോംഗോ സ്വാഹിലി" +
+ "പുരാതന സുറിയാനിഭാഷസുറിയാനിടിംനേടെസോടെറേനോടെറ്റുംടൈഗ്രിടിവ്ടൊക്കേലൗക്ലി" +
+ "ംഗോൺലിംഗ്വിറ്റ്ടമഷേക്ന്യാസാ ഡോങ്കടോക് പിസിൻതരോക്കോസിംഷ്യൻടുംബുകതുവാലുട" +
+ "സവാക്ക്തുവിനിയൻമധ്യ അറ്റ്\u200cലസ് ടമാസൈറ്റ്ഉഡ്മുർട്ട്ഉഗറിട്ടിക്ഉംബുന്" +
+ "ദുമൂലഭാഷവൈവോട്ടിക്വുഞ്ജോവാൾസർവലമൊവാരേയ്വാഷൊവാൾപ്പിരികൽമൈക്സോഗോയാവോയെപ്" +
+ "പീസ്യാംഗ്ബെൻയംബകാന്റണീസ്സാപ്പോടെക്ബ്ലിസ്സിംബൽസ്സെനഗമൊറോക്കൻ സാധാരണ താമ" +
+ "സൈറ്റ്സുനിഭാഷാപരമായ ഉള്ളടക്കമൊന്നുമില്ലസാസാആധുനിക സ്റ്റാൻഡേർഡ് അറബിക്ഓ" +
+ "സ്\u200cട്രിയൻ ജർമൻസ്വിസ് ഹൈ ജർമൻഓസ്\u200cട്രേലിയൻ ഇംഗ്ലീഷ്കനേഡിയൻ ഇംഗ" +
+ "്ലീഷ്ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്അമേരിക്കൻ ഇംഗ്ലീഷ്ലാറ്റിൻ അമേരിക്കൻ സ്\u200cപാ" +
+ "നിഷ്യൂറോപ്യൻ സ്\u200cപാനിഷ്മെക്സിക്കൻ സ്പാനിഷ്കനേഡിയൻ ഫ്രഞ്ച്സ്വിസ് ഫ്" +
+ "രഞ്ച്ലോ സാക്സൺഫ്ലമിഷ്ബ്രസീലിയൻ പോർച്ചുഗീസ്യൂറോപ്യൻ പോർച്ചുഗീസ്മോൾഡാവിയ" +
+ "ൻസെർബോ-ക്രൊയേഷ്യൻ"
+
+var mlLangIdx = []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x002a, 0x0045, 0x0069, 0x0078, 0x0090, 0x00a8,
+ 0x00ba, 0x00d5, 0x00ea, 0x00fc, 0x0117, 0x0129, 0x0147, 0x015f,
+ 0x0177, 0x0186, 0x0198, 0x01ad, 0x01c5, 0x01dd, 0x01f5, 0x0201,
+ 0x0210, 0x022b, 0x0237, 0x0249, 0x0274, 0x0286, 0x0295, 0x02a7,
+ 0x02b9, 0x02cb, 0x02da, 0x02e3, 0x02fb, 0x0313, 0x0334, 0x034f,
+ 0x0370, 0x0385, 0x039a, 0x03a3, 0x03bb, 0x03cd, 0x03df, 0x03f4,
+ 0x041f, 0x042e, 0x045f, 0x0474, 0x0486, 0x04a1, 0x04b0, 0x04b9,
+ 0x04cb, 0x04dd, 0x04f6, 0x0514, 0x052f, 0x0547, 0x055f, 0x0571,
+ // Entry 40 - 7F
+ 0x0598, 0x05b6, 0x05d7, 0x05e6, 0x05fb, 0x0616, 0x061f, 0x0640,
+ 0x065b, 0x068b, 0x06a6, 0x06be, 0x06d3, 0x06e2, 0x06f4, 0x070c,
+ 0x071b, 0x073f, 0x074b, 0x075a, 0x076c, 0x077b, 0x0796, 0x07b1,
+ 0x07bd, 0x07d2, 0x07e7, 0x07fc, 0x0820, 0x082f, 0x084a, 0x085c,
+ 0x0868, 0x0886, 0x08a2, 0x08c0, 0x08d2, 0x08f0, 0x08ff, 0x091d,
+ 0x092f, 0x0947, 0x095c, 0x096b, 0x0986, 0x0998, 0x09a4, 0x09c9,
+ 0x09e1, 0x09f0, 0x09ff, 0x0a39, 0x0a6a, 0x0a92, 0x0aa1, 0x0ab0,
+ 0x0ace, 0x0ae3, 0x0af2, 0x0afe, 0x0b1f, 0x0b34, 0x0b40, 0x0b52,
+ // Entry 80 - BF
+ 0x0b61, 0x0b82, 0x0b9d, 0x0bb5, 0x0bc7, 0x0bdf, 0x0bee, 0x0c12,
+ 0x0c2d, 0x0c48, 0x0c5a, 0x0c76, 0x0c85, 0x0c94, 0x0cac, 0x0cca,
+ 0x0cd9, 0x0ce2, 0x0cf4, 0x0d0c, 0x0d21, 0x0d39, 0x0d58, 0x0d76,
+ 0x0d8e, 0x0da6, 0x0db5, 0x0dcd, 0x0ddf, 0x0deb, 0x0e06, 0x0e21,
+ 0x0e36, 0x0e45, 0x0e5d, 0x0e6f, 0x0e81, 0x0e99, 0x0eab, 0x0ec6,
+ 0x0ed5, 0x0ef3, 0x0f02, 0x0f29, 0x0f41, 0x0f53, 0x0f65, 0x0f6e,
+ 0x0f86, 0x0f98, 0x0fad, 0x0fbf, 0x0fcb, 0x0fe0, 0x0fef, 0x1007,
+ 0x1016, 0x1016, 0x1031, 0x103d, 0x104c, 0x1067, 0x1067, 0x107c,
+ // Entry C0 - FF
+ 0x107c, 0x10a7, 0x10c9, 0x10d8, 0x10f0, 0x1102, 0x1102, 0x1114,
+ 0x1114, 0x1126, 0x1126, 0x1126, 0x112f, 0x112f, 0x114d, 0x114d,
+ 0x1159, 0x1168, 0x1180, 0x1180, 0x1186, 0x1195, 0x1195, 0x11a4,
+ 0x11ad, 0x11b9, 0x11b9, 0x11c5, 0x11da, 0x11da, 0x11fc, 0x1217,
+ 0x1226, 0x1232, 0x1232, 0x123b, 0x1250, 0x1250, 0x1250, 0x125f,
+ 0x125f, 0x126b, 0x1280, 0x129b, 0x12b3, 0x12bf, 0x12ce, 0x12e0,
+ 0x12ec, 0x12fe, 0x130a, 0x1322, 0x133a, 0x1343, 0x1352, 0x135e,
+ 0x1370, 0x137c, 0x139e, 0x13bc, 0x13d4, 0x13ec, 0x1404, 0x142c,
+ // Entry 100 - 13F
+ 0x144a, 0x144a, 0x147b, 0x1496, 0x14a8, 0x14ba, 0x14c3, 0x14d5,
+ 0x14e7, 0x14ff, 0x150b, 0x151d, 0x152f, 0x1551, 0x1551, 0x1560,
+ 0x1582, 0x159e, 0x15ad, 0x15bc, 0x15c8, 0x15d7, 0x15d7, 0x1608,
+ 0x161d, 0x1638, 0x1663, 0x1663, 0x1675, 0x1675, 0x167e, 0x169c,
+ 0x169c, 0x16a5, 0x16a5, 0x16cd, 0x16ec, 0x16ec, 0x171d, 0x174e,
+ 0x176f, 0x1775, 0x1787, 0x1787, 0x1790, 0x179c, 0x179c, 0x17a8,
+ 0x17bd, 0x17bd, 0x17e9, 0x1818, 0x1818, 0x182a, 0x1845, 0x185d,
+ 0x186c, 0x1892, 0x18b7, 0x18b7, 0x18b7, 0x18c3, 0x18e2, 0x18eb,
+ // Entry 140 - 17F
+ 0x18eb, 0x1900, 0x1900, 0x191e, 0x193c, 0x1948, 0x196d, 0x196d,
+ 0x1976, 0x1982, 0x1997, 0x19a6, 0x19be, 0x19be, 0x19be, 0x19d3,
+ 0x19e2, 0x19ee, 0x1a16, 0x1a3b, 0x1a3b, 0x1a5a, 0x1a66, 0x1a75,
+ 0x1a81, 0x1a8a, 0x1a96, 0x1aae, 0x1ac0, 0x1ad2, 0x1aed, 0x1b11,
+ 0x1b11, 0x1b1d, 0x1b1d, 0x1b29, 0x1b47, 0x1b63, 0x1b63, 0x1b63,
+ 0x1b72, 0x1b8a, 0x1b9f, 0x1bcd, 0x1be2, 0x1bf7, 0x1c0c, 0x1c28,
+ 0x1c28, 0x1c28, 0x1c3d, 0x1c4f, 0x1c5e, 0x1c6d, 0x1c8b, 0x1c9d,
+ 0x1caf, 0x1cc1, 0x1cd0, 0x1ce2, 0x1ceb, 0x1d03, 0x1d03, 0x1d03,
+ // Entry 180 - 1BF
+ 0x1d03, 0x1d15, 0x1d15, 0x1d27, 0x1d33, 0x1d52, 0x1d52, 0x1d6b,
+ 0x1d83, 0x1d8f, 0x1d9b, 0x1da7, 0x1db6, 0x1db6, 0x1db6, 0x1dcb,
+ 0x1dd4, 0x1de3, 0x1df5, 0x1e04, 0x1e1c, 0x1e2b, 0x1e34, 0x1e43,
+ 0x1e55, 0x1e64, 0x1e70, 0x1e85, 0x1ea7, 0x1ecc, 0x1ede, 0x1ef6,
+ 0x1f11, 0x1f1d, 0x1f38, 0x1f4a, 0x1f5c, 0x1f5c, 0x1f77, 0x1f8c,
+ 0x1fa4, 0x1fbc, 0x1fce, 0x1fce, 0x1fda, 0x1fec, 0x2007, 0x2007,
+ 0x202e, 0x2037, 0x204a, 0x205c, 0x206e, 0x2083, 0x2083, 0x209b,
+ 0x20ad, 0x20b9, 0x20d8, 0x20d8, 0x20e4, 0x2109, 0x2118, 0x2149,
+ // Entry 1C0 - 1FF
+ 0x2164, 0x217c, 0x218e, 0x2197, 0x21a6, 0x21d7, 0x21f2, 0x2207,
+ 0x2219, 0x223a, 0x224c, 0x224c, 0x224c, 0x224c, 0x2277, 0x2277,
+ 0x228f, 0x228f, 0x228f, 0x22a4, 0x22a4, 0x22bf, 0x22d7, 0x22d7,
+ 0x22f2, 0x2307, 0x2325, 0x2325, 0x2325, 0x2334, 0x2343, 0x2343,
+ 0x2343, 0x2343, 0x235e, 0x236a, 0x237c, 0x2385, 0x23bf, 0x23d1,
+ 0x23e0, 0x23f5, 0x23f5, 0x2407, 0x2413, 0x242b, 0x2443, 0x2443,
+ 0x2471, 0x2480, 0x2489, 0x2489, 0x249b, 0x24cc, 0x24f1, 0x24f1,
+ 0x2512, 0x251b, 0x2534, 0x2546, 0x2546, 0x2546, 0x2565, 0x257b,
+ // Entry 200 - 23F
+ 0x2597, 0x25bc, 0x25d1, 0x25e9, 0x260e, 0x261a, 0x2626, 0x2626,
+ 0x2635, 0x2641, 0x2659, 0x2671, 0x2699, 0x26cd, 0x26e5, 0x26e5,
+ 0x26e5, 0x26f4, 0x2700, 0x2712, 0x2727, 0x2739, 0x2745, 0x275d,
+ 0x275d, 0x2775, 0x2796, 0x2796, 0x27a8, 0x27ca, 0x27e6, 0x27e6,
+ 0x27fb, 0x27fb, 0x2810, 0x2810, 0x2822, 0x2834, 0x284c, 0x2864,
+ 0x28a8, 0x28c6, 0x28e4, 0x28fc, 0x290e, 0x2914, 0x2914, 0x2914,
+ 0x2914, 0x2914, 0x292c, 0x292c, 0x293e, 0x294d, 0x2959, 0x296b,
+ 0x2977, 0x2992, 0x2992, 0x29a4, 0x29a4, 0x29b0, 0x29bc, 0x29d4,
+ // Entry 240 - 27F
+ 0x29ec, 0x29f5, 0x29f5, 0x2a10, 0x2a2e, 0x2a55, 0x2a55, 0x2a61,
+ 0x2aa8, 0x2ab4, 0x2b09, 0x2b15, 0x2b5f, 0x2b5f, 0x2b8a, 0x2bb0,
+ 0x2bed, 0x2c1b, 0x2c52, 0x2c86, 0x2cd3, 0x2d07, 0x2d3e, 0x2d3e,
+ 0x2d69, 0x2d91, 0x2daa, 0x2dbf, 0x2dfc, 0x2e36, 0x2e51, 0x2e7f,
+} // Size: 1240 bytes
+
+var mnLangStr string = "" + // Size: 3152 bytes
+ "абхазафрикаканамхарарабассамазербайжанбашкирбеларусьболгарбамбарабенгалт" +
+ "өвдбретонбосникаталанкорсикчехуэлсданигерманжонхаэвэгреканглиэсперантои" +
+ "спаниэстонибаскперсфинляндфижифарерфранцбаруун фризынирландшотланд келт" +
+ "галикгуаранигужаратиманксхаусаеврейхиндихорватгаитиунгарарменинтерлингв" +
+ "оиндонезинэгдмэл хэлигбошичуан еиисландиталиинуктитутяпонявагүржкикуюүх" +
+ "асагкалалисуткамбожканнадасолонгоскашмиркүрдкорныкиргизлатинлюксембургг" +
+ "андалингалалаослитвалуба-катангалатвималагасимаоримакедонмалайламмонгол" +
+ "маратималаймалтибирмхойд ндебелебалбаголланднорвегийн нинорскнорвегийн " +
+ "букмолфранцын окситаноромоорияпанжабпольшпаштопортугалкечуароманшрундир" +
+ "умынороскинярвандасанскритсиндхихойд самисангосинхаласловаксловеншонасо" +
+ "малиалбанисербсунданшведсвахилитамилтэлүгүтажиктайтигринатуркментонгату" +
+ "рктатаруйгарукрайнурдуузбеквьетнамволофхосаиддишёрубахятадзулуагеммапүч" +
+ "иасубембабенабодочигачирокисорани күрдтайтазармаловер-сорбидуалажола-фо" +
+ "ниэмбуфилиппингагузшвейцари германгузыхавайдээд сорбингомбамачамэкабиле" +
+ "камбамакондекабүвердианукойра чиникаленжинкоми-пермякконканишамбалабафи" +
+ "алангилакоталуолуяамасаймеруморисенмакува-митометамохаукмундангнамакваз" +
+ "ионконуернянколекичеромборвасамбүрүсангүсенакёраборо сенитачелхитөмнөд " +
+ "самилюле самиинари самисколт самиконго свахилитэсотасавактөв атласын та" +
+ "мазайттодорхойгүй хэлвайвунжосогатамазитхэл зүйн агуулга байхгүйстандар" +
+ "т арабавстри германшвейцари дээр германавстрали англиканад англибритани" +
+ "йн англиамерикийн англилатин америкийн испаниевропын испанимексикийн ис" +
+ "паниканад францшвейцари францфламандпортугал (бразил)европын португалмо" +
+ "лдавхялбаршуулсан хятадуламжлалт хятад"
+
+var mnLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000a, 0x000a, 0x0014, 0x001c, 0x0026, 0x0026,
+ 0x002e, 0x0038, 0x0038, 0x0038, 0x004c, 0x0058, 0x0068, 0x0074,
+ 0x0074, 0x0082, 0x008e, 0x0096, 0x00a2, 0x00ac, 0x00ba, 0x00ba,
+ 0x00ba, 0x00c6, 0x00c6, 0x00cc, 0x00cc, 0x00cc, 0x00d4, 0x00dc,
+ 0x00e8, 0x00e8, 0x00f2, 0x00f8, 0x0100, 0x010a, 0x011c, 0x0128,
+ 0x0134, 0x013c, 0x0144, 0x0144, 0x0152, 0x015a, 0x0164, 0x016e,
+ 0x0187, 0x0193, 0x01aa, 0x01b4, 0x01c2, 0x01d2, 0x01dc, 0x01e6,
+ 0x01f0, 0x01fa, 0x01fa, 0x0206, 0x0210, 0x021a, 0x0224, 0x0224,
+ // Entry 40 - 7F
+ 0x023a, 0x024a, 0x025f, 0x0267, 0x0278, 0x0278, 0x0278, 0x0284,
+ 0x028e, 0x02a0, 0x02a8, 0x02ae, 0x02b6, 0x02b6, 0x02c2, 0x02c2,
+ 0x02cc, 0x02de, 0x02ea, 0x02f8, 0x0308, 0x0308, 0x0314, 0x031c,
+ 0x031c, 0x0326, 0x0332, 0x033c, 0x0350, 0x035a, 0x035a, 0x0368,
+ 0x0370, 0x037a, 0x0391, 0x039b, 0x03ab, 0x03ab, 0x03b5, 0x03c3,
+ 0x03d3, 0x03df, 0x03eb, 0x03f5, 0x03ff, 0x0407, 0x0407, 0x041e,
+ 0x0428, 0x0428, 0x0436, 0x0457, 0x0476, 0x0476, 0x0476, 0x0476,
+ 0x0493, 0x0493, 0x049d, 0x04a5, 0x04a5, 0x04b1, 0x04b1, 0x04bb,
+ // Entry 80 - BF
+ 0x04c5, 0x04d5, 0x04df, 0x04eb, 0x04f5, 0x04ff, 0x0507, 0x051b,
+ 0x052b, 0x052b, 0x0537, 0x0548, 0x0552, 0x0560, 0x056c, 0x0578,
+ 0x0578, 0x0580, 0x058c, 0x0598, 0x05a0, 0x05a0, 0x05a0, 0x05ac,
+ 0x05b4, 0x05c2, 0x05cc, 0x05d8, 0x05e2, 0x05e8, 0x05f6, 0x0604,
+ 0x0604, 0x060e, 0x0616, 0x0616, 0x0620, 0x0620, 0x062a, 0x0636,
+ 0x063e, 0x0648, 0x0648, 0x0656, 0x0656, 0x0656, 0x0660, 0x0668,
+ 0x0672, 0x067c, 0x067c, 0x0686, 0x068e, 0x068e, 0x068e, 0x068e,
+ 0x068e, 0x068e, 0x068e, 0x0696, 0x0696, 0x0696, 0x0696, 0x0696,
+ // Entry C0 - FF
+ 0x0696, 0x0696, 0x0696, 0x0696, 0x0696, 0x06a2, 0x06a2, 0x06a2,
+ 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a8, 0x06a8, 0x06a8, 0x06a8,
+ 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8, 0x06a8,
+ 0x06a8, 0x06b2, 0x06b2, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba,
+ 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06ba,
+ 0x06ba, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2,
+ 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06c2, 0x06ca, 0x06ca, 0x06ca,
+ 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06d6, 0x06d6, 0x06eb,
+ // Entry 100 - 13F
+ 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06f5, 0x06f5,
+ 0x06f5, 0x06f5, 0x06f5, 0x06ff, 0x06ff, 0x0714, 0x0714, 0x071e,
+ 0x071e, 0x072f, 0x072f, 0x072f, 0x0737, 0x0737, 0x0737, 0x0737,
+ 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0737, 0x0747,
+ 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747,
+ 0x0747, 0x0747, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751,
+ 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751,
+ 0x0751, 0x0751, 0x076e, 0x076e, 0x076e, 0x0776, 0x0776, 0x0776,
+ // Entry 140 - 17F
+ 0x0776, 0x0780, 0x0780, 0x0780, 0x0780, 0x0780, 0x0793, 0x0793,
+ 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793, 0x0793,
+ 0x079f, 0x07ab, 0x07ab, 0x07ab, 0x07ab, 0x07ab, 0x07b7, 0x07b7,
+ 0x07b7, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07cf, 0x07e7,
+ 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07fa, 0x07fa, 0x07fa,
+ 0x07fa, 0x080a, 0x080a, 0x081f, 0x082d, 0x082d, 0x082d, 0x082d,
+ 0x082d, 0x082d, 0x082d, 0x082d, 0x083b, 0x0845, 0x0845, 0x0845,
+ 0x0845, 0x0845, 0x084f, 0x084f, 0x084f, 0x084f, 0x084f, 0x084f,
+ // Entry 180 - 1BF
+ 0x084f, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b, 0x085b,
+ 0x085b, 0x085b, 0x0861, 0x0861, 0x0869, 0x0869, 0x0869, 0x0869,
+ 0x0869, 0x0869, 0x0869, 0x0869, 0x0869, 0x0873, 0x0873, 0x0873,
+ 0x0873, 0x0873, 0x087b, 0x0889, 0x0889, 0x089e, 0x08a6, 0x08a6,
+ 0x08a6, 0x08a6, 0x08a6, 0x08b2, 0x08b2, 0x08b2, 0x08c0, 0x08c0,
+ 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0,
+ 0x08c0, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d4,
+ 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08da, 0x08da, 0x08e2, 0x08e2,
+ // Entry 1C0 - 1FF
+ 0x08e2, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0,
+ 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0,
+ 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f0, 0x08f8, 0x08f8,
+ 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x08f8, 0x0902, 0x0902, 0x0902,
+ 0x0902, 0x0902, 0x0902, 0x0908, 0x0908, 0x0908, 0x0908, 0x0916,
+ 0x0916, 0x0916, 0x0916, 0x0916, 0x0920, 0x0920, 0x0920, 0x0920,
+ 0x0920, 0x0920, 0x0928, 0x0928, 0x0928, 0x0941, 0x0941, 0x0941,
+ 0x0951, 0x0951, 0x0951, 0x0951, 0x0951, 0x0951, 0x0964, 0x0975,
+ // Entry 200 - 23F
+ 0x0988, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b,
+ 0x099b, 0x099b, 0x099b, 0x099b, 0x09b4, 0x09b4, 0x09b4, 0x09b4,
+ 0x09b4, 0x09b4, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc,
+ 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc,
+ 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09bc, 0x09ca, 0x09ca,
+ 0x09f0, 0x09f0, 0x09f0, 0x09f0, 0x0a0d, 0x0a13, 0x0a13, 0x0a13,
+ 0x0a13, 0x0a13, 0x0a13, 0x0a13, 0x0a1d, 0x0a1d, 0x0a1d, 0x0a1d,
+ 0x0a1d, 0x0a1d, 0x0a1d, 0x0a1d, 0x0a1d, 0x0a25, 0x0a25, 0x0a25,
+ // Entry 240 - 27F
+ 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25,
+ 0x0a33, 0x0a33, 0x0a60, 0x0a60, 0x0a79, 0x0a79, 0x0a92, 0x0ab8,
+ 0x0ad3, 0x0ae8, 0x0b05, 0x0b22, 0x0b4c, 0x0b67, 0x0b86, 0x0b86,
+ 0x0b9b, 0x0bb6, 0x0bb6, 0x0bc4, 0x0be3, 0x0c02, 0x0c0e, 0x0c0e,
+ 0x0c33, 0x0c50,
+} // Size: 1244 bytes
+
+var mrLangStr string = "" + // Size: 11013 bytes
+ "अफारअबखेजियनअवेस्तनअफ्रिकान्सअकानअम्हारिकअर्गोनीजअरबीआसामीअ\u200dॅव्हेरि" +
+ "कऐमराअझरबैजानीबष्किरबेलारुशियनबल्गेरियनबिस्लामाबाम्बाराबंगालीतिबेटीब्र" +
+ "ेतॉनबोस्नियनकातालानचेचेनकॅमोरोकॉर्सिकनक्रीझेकचर्च स्लाव्हिकचूवाशवेल्शड" +
+ "ॅनिशजर्मनदिवेहीझोंगखाएवेग्रीकइंग्रजीएस्परान्टोस्पॅनिशइस्टोनियनबास्कफार" +
+ "सीफुलाहफिन्निशफिजियनफरोइजफ्रेंचपश्चिमी फ्रिशियनआयरिशस्कॉट्स गेलिकगॅलिश" +
+ "ियनगुआरनीगुजरातीमांक्सहौसाहिब्रूहिंदीहिरी मॉटूक्रोएशियनहैतीयनहंगेरियनआ" +
+ "र्मेनियनहरेरोइंटरलिंग्वाइंडोनेशियनइन्टरलिंगईग्बोसिचुआन यीइनूपियाकइडौआई" +
+ "सलँडिकइटालियनइनुकिटुट्जपानीजावानीजजॉर्जियनकाँगोकिकुयूक्वान्यामाकझाककला" +
+ "ल्लिसतख्मेरकन्नडकोरियनकनुरीकाश्मीरीकुर्दिशकोमीकोर्निशकिरगीझलॅटिनलक्झें" +
+ "बर्गिशगांडालिंबूर्गिशलिंगालालाओलिथुआनियनल्यूबा-कटांगालात्व्हियनमलागसीम" +
+ "ार्शलीजमाओरीमॅसेडोनियनमल्याळममंगोलियनमराठीमलयमाल्टिज्बर्मीनउरूउत्तर दे" +
+ "बेलीनेपाळीडोंगाडचनॉर्वेजियन न्योर्स्कनॉर्वेजियन बोकमालदक्षिणात्य देबेल" +
+ "ीनावाजोन्यान्जाऑक्सितानओजिब्वाओरोमोउडियाओस्सेटिकपंजाबीपालीपोलिशपश्तोपो" +
+ "र्तुगीजक्वेचुआरोमान्शरुन्दीरोमानियनरशियनकिन्यार्वान्डासंस्कृतसर्दिनियन" +
+ "सिंधीउत्तरी सामीसांगोसिंहलास्लोव्हाकस्लोव्हेनियनसामोअनशोनासोमालीअल्बान" +
+ "ियनसर्बियनस्वातीसेसोथोसुंदानीजस्वीडिशस्वाहिलीतामिळतेलगूताजिकथाईतिग्रिन" +
+ "्यातुर्कमेनत्स्वानाटोंगनतुर्कीसोंगातातरताहितीयनउइगुरयुक्रेनियनउर्दूउझ्" +
+ "बेकव्हेंदाव्हिएतनामीओलापुकवालूनवोलोफखोसायिद्दिशयोरुबाझुआंगचीनीझुलूअचीन" +
+ "ीअकोलीअडांग्मेअडिघेअफ्रिहिलीअघेमऐनूअक्कादिआनअलेउतदक्षिणात्य अल्ताईपुरा" +
+ "तन इंग्रजीअंगिकाअ\u200dॅरेमाइकमापुचीअराफाओअरावकअसुअस्तुरियनअवधीबलुचीबा" +
+ "लिनीसबसाबेजाबेम्बाबेनापश्चिमी बालोचीभोजपुरीबिकोलबिनीसिक्सिकाब्रजबोडोबु" +
+ "रियातबगिनीसब्लिनकॅड्डोकॅरिबअत्समसिबुआनोकिगाचिब्चाछगाताईचूकीसेमारीचिनूक" +
+ " जारगॉनचोक्तौशिपेव्यानचेरोकीशेयेन्नमध्य कुर्दिशकॉप्टिकक्राइमीन तुर्कीकाश" +
+ "ुबियनदाकोतादार्गवातायताडेलॅवेयरस्लाव्हडोग्रिबदिन्काझार्माडोगरीलोअर सोर" +
+ "्बियनदुआलामिडल डचजोला-फोंयीड्युलाएम्बूएफिकप्राचीन इजिप्शियनएकाजुकएलामा" +
+ "इटमिडल इंग्रजीइवोन्डोफँगफिलिपिनोफॉनमिडल फ्रेंचपुरातन फ्रेंचउत्तरी फ्रि" +
+ "शियनपौर्वात्य फ्रिशियनफ्रियुलियानGaगागाउझगायोबायागीझजिल्बरटीजमिडल हाय " +
+ "जर्मनपुरातन हाइ जर्मनगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन ग्रीकस्विस जर्म" +
+ "नगसीग्विच’इनहैडाहवाईयनहिलीगेनॉनहिट्टितेमाँगअप्पर सॉर्बियनहूपाइबानइलोको" +
+ "इंगुशलोज्बानगोम्बामशामेजुदेओ-फारसीजुदेओ-अरबीकारा-कल्पककबाइलकाचिनज्जुका" +
+ "म्बाकावीकबार्डियनत्यापमाकोन्देकाबवर्दियानुकोरोखासीखोतानीसकोयरा चीनीकाल" +
+ "ेंजीनकिम्बन्दुकोमी-परम्याककोंकणीकोसरियनक्पेल्लेकराचय-बाल्करकरेलियनकुरू" +
+ "खशांबालाबाफियाकुमीककुतेनाईलादीनोलांगीलाह्न्डालाम्बालेझ्घीयनलाकोटामोंगो" +
+ "लोझिउत्तरी ल्युरीलुबा-लुलुआलुइसेनोलुन्डाल्युओलुशाईल्युइयामादुरीसमगहीमै" +
+ "थिलीमकस्सरमन्डिन्गोमसाईमोक्षमंडारमेन्डेमेरूमोरिस्येनमिडल आयरिशमाखुव्हा" +
+ "-मीट्टोमीटामिकमॅकमिनांग्काबाउमान्चुमणिपुरीमोहॉकमोस्सीमुंडांगएकविध भाषाक्" +
+ "रीकमिरांडिज्मारवाडीएर्झ्यामाझानदेरानीनेपोलिटाननामालो जर्मननेवारीनियासन" +
+ "ियुआनक्वासिओनोगाईपुरातन नॉर्सएन्कोउत्तरी सोथोनुएरअभिजात नेवारीन्यामवेझ" +
+ "ीन्यानकोलन्योरोन्झिमाओसेजओटोमान तुर्किशपंगासीनानपहलवीपाम्पान्गापापियाम" +
+ "ेन्टोपालाउआनपुरातन फारसीफोनिशियनपोह्नपियनपुरातन प्रोव्हेन्सलकीशेइराजस्" +
+ "थानीरापानुईरारोटोंगनरोम्बोरोमानीअरोमानियनरव्हासँडवेयाकूतसामरिटान अरॅमि" +
+ "कसांबुरूसासाकसंतालीसांगुसिसिलियनस्कॉट्सदक्षिणी कुर्दिशसेनासेल्कपकोयराब" +
+ "ोरो सेन्नीपुरातन आयरिशताशेल्हिटशॅनसिदामोदक्षिणात्य सामील्युल सामीइनारी" +
+ " सामीस्कोल्ट सामीसोनिन्केसोग्डिएनस्रानान टॉन्गोसेरेरसुकुमासुसुसुमेरियनको" +
+ "मोरियनकाँगो स्वाहिलीअभिजात सिरियाकसिरियाकटिम्नेतेसोतेरेनोतेतुमटाइग्रेत" +
+ "िवटोकेलाऊक्लिंगोनलिंगिततामाशेकन्यासा टोन्गाटोक पिसिनसिम्शियनतुम्बुकाटु" +
+ "वालुतासाव्हाकटुवीनियनमध्य ऍटलास तॅमॅझायटउदमुर्तयुगॅरिटिकउम्बुन्डुरूटवा" +
+ "ईवॉटिकवुंजोवलामोवारेवाशोवार्लपिरीकाल्मिकसोगायाओयापीसकँटोनीजझेपोटेकब्लि" +
+ "सिम्बॉल्सझेनान्गाप्रमाण मोरोक्कन तॅमॅझायटझुनीभाषावैज्ञानिक सामग्री नाह" +
+ "ीझाझाआधुनिक प्रमाणित अरबीऑस्ट्रियन जर्मनस्विस हाय जर्मनऑस्ट्रेलियन इंग" +
+ "्रजीकॅनडियन इंग्रजीब्रिटिश इंग्रजीअमेरिकन इंग्रजीलॅटिन अमेरिकन स्पॅनिश" +
+ "युरोपियन स्पॅनिशमेक्सिकन स्पॅनिशकॅनडियन फ्रेंचस्विस फ्रेंचलो सॅक्सनफ्ल" +
+ "ेमिशब्राझिलियन पोर्तुगीजयुरोपियन पोर्तुगीजमोल्डाव्हियनसर्बो-क्रोएशियनस" +
+ "रलीकृत चीनीपारंपारिक चीनी"
+
+var mrLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x0024, 0x0039, 0x0057, 0x0063, 0x007b, 0x0093,
+ 0x009f, 0x00ae, 0x00cc, 0x00d8, 0x00f3, 0x0105, 0x0123, 0x013e,
+ 0x0156, 0x016e, 0x0180, 0x0192, 0x01a7, 0x01bf, 0x01d4, 0x01e3,
+ 0x01f5, 0x020d, 0x0219, 0x0222, 0x024a, 0x0259, 0x0268, 0x0277,
+ 0x0286, 0x0298, 0x02aa, 0x02b3, 0x02c2, 0x02d7, 0x02f5, 0x030a,
+ 0x0325, 0x0334, 0x0343, 0x0352, 0x0367, 0x0379, 0x0388, 0x039a,
+ 0x03c8, 0x03d7, 0x03fc, 0x0414, 0x0426, 0x043b, 0x044d, 0x0459,
+ 0x046b, 0x047a, 0x0493, 0x04ae, 0x04c0, 0x04d8, 0x04f3, 0x0502,
+ // Entry 40 - 7F
+ 0x0523, 0x0541, 0x055c, 0x056b, 0x0584, 0x059c, 0x05a5, 0x05bd,
+ 0x05d2, 0x05ed, 0x05fc, 0x0611, 0x0629, 0x0638, 0x064a, 0x0668,
+ 0x0674, 0x068f, 0x069e, 0x06ad, 0x06bf, 0x06ce, 0x06e6, 0x06fb,
+ 0x0707, 0x071c, 0x072e, 0x073d, 0x0761, 0x0770, 0x078e, 0x07a3,
+ 0x07ac, 0x07c7, 0x07ec, 0x080a, 0x081c, 0x0834, 0x0843, 0x0861,
+ 0x0876, 0x088e, 0x089d, 0x08a6, 0x08be, 0x08cd, 0x08d9, 0x08fb,
+ 0x090d, 0x091c, 0x0922, 0x095c, 0x098d, 0x09be, 0x09d0, 0x09e8,
+ 0x0a00, 0x0a15, 0x0a24, 0x0a33, 0x0a4b, 0x0a5d, 0x0a69, 0x0a78,
+ // Entry 80 - BF
+ 0x0a87, 0x0aa2, 0x0ab7, 0x0acc, 0x0ade, 0x0af6, 0x0b05, 0x0b2f,
+ 0x0b44, 0x0b5f, 0x0b6e, 0x0b8d, 0x0b9c, 0x0bae, 0x0bc9, 0x0bed,
+ 0x0bff, 0x0c0b, 0x0c1d, 0x0c38, 0x0c4d, 0x0c5f, 0x0c71, 0x0c89,
+ 0x0c9e, 0x0cb6, 0x0cc5, 0x0cd4, 0x0ce3, 0x0cec, 0x0d0a, 0x0d22,
+ 0x0d3a, 0x0d49, 0x0d5b, 0x0d6a, 0x0d76, 0x0d8e, 0x0d9d, 0x0dbb,
+ 0x0dca, 0x0ddc, 0x0df1, 0x0e0f, 0x0e21, 0x0e30, 0x0e3f, 0x0e4b,
+ 0x0e60, 0x0e72, 0x0e81, 0x0e8d, 0x0e99, 0x0ea8, 0x0eb7, 0x0ecf,
+ 0x0ede, 0x0ede, 0x0ef9, 0x0f05, 0x0f0e, 0x0f29, 0x0f29, 0x0f38,
+ // Entry C0 - FF
+ 0x0f38, 0x0f69, 0x0f91, 0x0fa3, 0x0fbe, 0x0fd0, 0x0fd0, 0x0fe2,
+ 0x0fe2, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ffa, 0x0ffa, 0x1015, 0x1015,
+ 0x1021, 0x1030, 0x1045, 0x1045, 0x104e, 0x104e, 0x104e, 0x104e,
+ 0x105a, 0x106c, 0x106c, 0x1078, 0x1078, 0x1078, 0x10a0, 0x10b5,
+ 0x10c4, 0x10d0, 0x10d0, 0x10d0, 0x10e8, 0x10e8, 0x10e8, 0x10f4,
+ 0x10f4, 0x1100, 0x1100, 0x1115, 0x1127, 0x1127, 0x1136, 0x1136,
+ 0x1148, 0x1157, 0x1157, 0x1166, 0x117b, 0x1187, 0x1199, 0x11ab,
+ 0x11bd, 0x11c9, 0x11eb, 0x11fd, 0x1218, 0x122a, 0x123f, 0x1261,
+ // Entry 100 - 13F
+ 0x1276, 0x1276, 0x12a1, 0x12b9, 0x12cb, 0x12e0, 0x12ef, 0x1307,
+ 0x131c, 0x1331, 0x1343, 0x1355, 0x1364, 0x1389, 0x1389, 0x1398,
+ 0x13ab, 0x13c7, 0x13d9, 0x13d9, 0x13e8, 0x13f4, 0x13f4, 0x1425,
+ 0x1437, 0x144c, 0x146e, 0x146e, 0x1483, 0x1483, 0x148c, 0x14a4,
+ 0x14a4, 0x14ad, 0x14ad, 0x14cc, 0x14f1, 0x14f1, 0x151c, 0x1550,
+ 0x1571, 0x1573, 0x1585, 0x1585, 0x1591, 0x159d, 0x159d, 0x15a6,
+ 0x15c1, 0x15c1, 0x15e7, 0x1613, 0x1613, 0x1622, 0x1640, 0x164f,
+ 0x1661, 0x1686, 0x16a5, 0x16a5, 0x16a5, 0x16ae, 0x16c6, 0x16d2,
+ // Entry 140 - 17F
+ 0x16d2, 0x16e4, 0x16e4, 0x16ff, 0x1717, 0x1723, 0x174b, 0x174b,
+ 0x1757, 0x1763, 0x1763, 0x1772, 0x1781, 0x1781, 0x1781, 0x1796,
+ 0x17a8, 0x17b7, 0x17d6, 0x17f2, 0x17f2, 0x180e, 0x181d, 0x182c,
+ 0x1838, 0x184a, 0x1856, 0x1871, 0x1871, 0x1880, 0x1898, 0x18bc,
+ 0x18bc, 0x18c8, 0x18c8, 0x18d4, 0x18e9, 0x1905, 0x1905, 0x1905,
+ 0x1905, 0x191d, 0x1938, 0x195a, 0x196c, 0x1981, 0x1999, 0x19bb,
+ 0x19bb, 0x19bb, 0x19d0, 0x19df, 0x19f4, 0x1a06, 0x1a06, 0x1a15,
+ 0x1a2a, 0x1a3c, 0x1a4b, 0x1a63, 0x1a75, 0x1a8d, 0x1a8d, 0x1a8d,
+ // Entry 180 - 1BF
+ 0x1a8d, 0x1a9f, 0x1a9f, 0x1aae, 0x1aba, 0x1adf, 0x1adf, 0x1afb,
+ 0x1b10, 0x1b22, 0x1b31, 0x1b40, 0x1b55, 0x1b55, 0x1b55, 0x1b6a,
+ 0x1b6a, 0x1b76, 0x1b88, 0x1b9a, 0x1bb5, 0x1bc1, 0x1bc1, 0x1bd0,
+ 0x1bdf, 0x1bf1, 0x1bfd, 0x1c18, 0x1c34, 0x1c5f, 0x1c6b, 0x1c7d,
+ 0x1ca1, 0x1cb3, 0x1cc8, 0x1cd7, 0x1ce9, 0x1ce9, 0x1cfe, 0x1d1a,
+ 0x1d29, 0x1d44, 0x1d59, 0x1d59, 0x1d59, 0x1d6e, 0x1d8f, 0x1d8f,
+ 0x1daa, 0x1db6, 0x1dcc, 0x1dde, 0x1ded, 0x1dff, 0x1dff, 0x1e14,
+ 0x1e14, 0x1e23, 0x1e45, 0x1e45, 0x1e54, 0x1e73, 0x1e7f, 0x1ea4,
+ // Entry 1C0 - 1FF
+ 0x1ebf, 0x1ed7, 0x1ee9, 0x1efb, 0x1f07, 0x1f2f, 0x1f4a, 0x1f59,
+ 0x1f77, 0x1f9b, 0x1fb0, 0x1fb0, 0x1fb0, 0x1fb0, 0x1fd2, 0x1fd2,
+ 0x1fea, 0x1fea, 0x1fea, 0x2005, 0x2005, 0x203c, 0x204b, 0x204b,
+ 0x2066, 0x207b, 0x2096, 0x2096, 0x2096, 0x20a8, 0x20ba, 0x20ba,
+ 0x20ba, 0x20ba, 0x20d5, 0x20e4, 0x20f3, 0x2102, 0x212d, 0x2142,
+ 0x2151, 0x2163, 0x2163, 0x2163, 0x2172, 0x218a, 0x219f, 0x219f,
+ 0x21ca, 0x21ca, 0x21d6, 0x21d6, 0x21e8, 0x2216, 0x2238, 0x2238,
+ 0x2253, 0x225c, 0x225c, 0x226e, 0x226e, 0x226e, 0x2299, 0x22b5,
+ // Entry 200 - 23F
+ 0x22d1, 0x22f3, 0x230b, 0x2323, 0x234b, 0x235a, 0x235a, 0x235a,
+ 0x236c, 0x2378, 0x2390, 0x23a8, 0x23d0, 0x23f8, 0x240d, 0x240d,
+ 0x240d, 0x241f, 0x242b, 0x243d, 0x244c, 0x2461, 0x246a, 0x247f,
+ 0x247f, 0x2497, 0x24a9, 0x24a9, 0x24be, 0x24e3, 0x24fc, 0x24fc,
+ 0x24fc, 0x24fc, 0x2514, 0x2514, 0x252c, 0x253e, 0x2559, 0x2571,
+ 0x25a6, 0x25bb, 0x25d6, 0x25f1, 0x25fa, 0x2603, 0x2603, 0x2603,
+ 0x2603, 0x2603, 0x2612, 0x2612, 0x2621, 0x2621, 0x2630, 0x263c,
+ 0x2648, 0x2663, 0x2663, 0x2678, 0x2678, 0x2684, 0x268d, 0x269c,
+ // Entry 240 - 27F
+ 0x269c, 0x269c, 0x269c, 0x26b1, 0x26c6, 0x26ed, 0x26ed, 0x2705,
+ 0x2749, 0x2755, 0x279f, 0x27ab, 0x27e3, 0x27e3, 0x280e, 0x2837,
+ 0x286e, 0x2899, 0x28c4, 0x28ef, 0x292a, 0x2958, 0x2986, 0x2986,
+ 0x29ae, 0x29d0, 0x29e9, 0x29fe, 0x2a38, 0x2a6c, 0x2a90, 0x2abb,
+ 0x2add, 0x2b05,
+} // Size: 1244 bytes
+
+var msLangStr string = "" + // Size: 2443 bytes
+ "AbkhaziaAvestanAfrikaansAkanAmharicArabAssamAvaricAymaraAzerbaijanBashki" +
+ "rBelarusBulgariaBambaraBenggalaTibetBretonBosniaCataloniaChechenCorsicaC" +
+ "zechSlavik GerejaChuvashWalesDenmarkJermanDivehiDzongkhaEweGreekInggeris" +
+ "EsperantoSepanyolEstoniaBasqueParsiFinlandFijiFaroePerancisFrisian Barat" +
+ "IrelandScots GaelicGaliciaGuaraniGujeratManxHausaIbraniHindiCroatiaHaiti" +
+ "HungaryArmeniaInterlinguaIndonesiaInterlingueIgboSichuan YiIcelandItaliI" +
+ "nuktitutJepunJawaGeorgiaKongoKikuyaKazakhstanKalaallisutKhmerKannadaKore" +
+ "aKashmirKurdishCornishKirghizLatinLuxembourgGandaLingalaLaosLithuaniaLub" +
+ "a-KatangaLatviaMalagasyMaoriMacedoniaMalayalamMongoliaMarathiBahasa Mela" +
+ "yuMaltaBurmaNdebele UtaraNepalBelandaNynorsk NorwayBokmål NorwayNyanjaOc" +
+ "citaniaOromoOriyaOssetePunjabiPolandPashtoPortugisQuechuaRomanshRundiRom" +
+ "aniaRusiaKinyarwandaSanskritSindhiSami UtaraSangoSinhalaSlovakSloveniaSa" +
+ "moaShonaSomaliAlbaniaSerbiaSwatiSotho SelatanSundaSwedenSwahiliTamilTelu" +
+ "guTajikThaiTigrinyaTurkmenTswanaTongaTurkiTsongaTatarTahitiUyghurUkraine" +
+ "UrduUzbekistanVendaVietnamWolofXhosaYiddishYorubaCinaZuluAkoliAdygheArab" +
+ " TunisiaAghemAltai SelatanMapucheArab AlgeriaArab MaghribiArab MesirAsuB" +
+ "aluchiBasaaBamunGhomalaBejaBembaBenaBafutBalochi BaratKomBishnupriyaBrah" +
+ "uiBodoAkooseBuriatBuluMedumbaCayugaChigaMariCherokeeKurdi SoraniCopticTu" +
+ "rki KrimeaTaitaZarmaDogriLower SorbianDualaJola-FonyiDazagaEmbuEfikEwond" +
+ "oFilipinaGaGagauzGbayaZoroastrian DariGilakiGreek PurbaJerman Switzerlan" +
+ "dGusiiHawaiiUpper SorbianIbibioNgombaMachameKabyleKambaKanembuMakondeKab" +
+ "uverdianuKoyra ChiiniKhowarKakoKalenjinKomi-PermyakKonkaniShambalaBafiaC" +
+ "olognianLangiLahndaLakotaLoziLuri UtaraLuba-LuluaLuoMizoLuyiaMafaMasaiMa" +
+ "baMeruMorisyenMakhuwa-MeettoMeta’ManipuriMohawkMundangMyeneMazanderaniNa" +
+ "maJerman RendahKwasioNgiemboonN’koSotho UtaraNuerNyankoleKʼicheʼRomboRwa" +
+ "SamburuNgambaySanguKurdish SelatanSenecaSenaKoyraboro SenniTachelhitChad" +
+ "ian ArabSami SelatanLule SamiInari SamiSkolt SamiSahoComoriaCongo Swahil" +
+ "iTesoTetumKlingonTalyshTok PisinTarokoTumbukaTasawaqTamazight Atlas Teng" +
+ "ahBahasa Tidak DiketahuiVaiVunjoWalserWarlpiriSogaYangbenYembaTamazight " +
+ "Maghribi StandardTiada kandungan linguistikZazaArab Standard ModenJerman" +
+ " AustriaJerman Halus SwitzerlandInggeris AustraliaInggeris KanadaInggeri" +
+ "s BritishInggeris ASSepanyol Amerika LatinSepanyol EropahSepanyol Mexico" +
+ "Perancis KanadaPerancis SwitzerlandSaxon RendahFlemishPortugis BrazilPor" +
+ "tugis EropahMoldaviaSerboCroatiaCina RingkasCina Tradisional"
+
+var msLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x000f, 0x0018, 0x001c, 0x0023, 0x0023,
+ 0x0027, 0x002c, 0x0032, 0x0038, 0x0042, 0x0049, 0x0050, 0x0058,
+ 0x0058, 0x005f, 0x0067, 0x006c, 0x0072, 0x0078, 0x0081, 0x0088,
+ 0x0088, 0x008f, 0x008f, 0x0094, 0x00a1, 0x00a8, 0x00ad, 0x00b4,
+ 0x00ba, 0x00c0, 0x00c8, 0x00cb, 0x00d0, 0x00d8, 0x00e1, 0x00e9,
+ 0x00f0, 0x00f6, 0x00fb, 0x00fb, 0x0102, 0x0106, 0x010b, 0x0113,
+ 0x0120, 0x0127, 0x0133, 0x013a, 0x0141, 0x0148, 0x014c, 0x0151,
+ 0x0157, 0x015c, 0x015c, 0x0163, 0x0168, 0x016f, 0x0176, 0x0176,
+ // Entry 40 - 7F
+ 0x0181, 0x018a, 0x0195, 0x0199, 0x01a3, 0x01a3, 0x01a3, 0x01aa,
+ 0x01af, 0x01b8, 0x01bd, 0x01c1, 0x01c8, 0x01cd, 0x01d3, 0x01d3,
+ 0x01dd, 0x01e8, 0x01ed, 0x01f4, 0x01f9, 0x01f9, 0x0200, 0x0207,
+ 0x0207, 0x020e, 0x0215, 0x021a, 0x0224, 0x0229, 0x0229, 0x0230,
+ 0x0234, 0x023d, 0x0249, 0x024f, 0x0257, 0x0257, 0x025c, 0x0265,
+ 0x026e, 0x0276, 0x027d, 0x028a, 0x028f, 0x0294, 0x0294, 0x02a1,
+ 0x02a6, 0x02a6, 0x02ad, 0x02bb, 0x02c9, 0x02c9, 0x02c9, 0x02cf,
+ 0x02d8, 0x02d8, 0x02dd, 0x02e2, 0x02e8, 0x02ef, 0x02ef, 0x02f5,
+ // Entry 80 - BF
+ 0x02fb, 0x0303, 0x030a, 0x0311, 0x0316, 0x031d, 0x0322, 0x032d,
+ 0x0335, 0x0335, 0x033b, 0x0345, 0x034a, 0x0351, 0x0357, 0x035f,
+ 0x0364, 0x0369, 0x036f, 0x0376, 0x037c, 0x0381, 0x038e, 0x0393,
+ 0x0399, 0x03a0, 0x03a5, 0x03ab, 0x03b0, 0x03b4, 0x03bc, 0x03c3,
+ 0x03c9, 0x03ce, 0x03d3, 0x03d9, 0x03de, 0x03e4, 0x03ea, 0x03f1,
+ 0x03f5, 0x03ff, 0x0404, 0x040b, 0x040b, 0x040b, 0x0410, 0x0415,
+ 0x041c, 0x0422, 0x0422, 0x0426, 0x042a, 0x042a, 0x042f, 0x042f,
+ 0x0435, 0x0441, 0x0441, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446,
+ // Entry C0 - FF
+ 0x0446, 0x0453, 0x0453, 0x0453, 0x0453, 0x045a, 0x045a, 0x045a,
+ 0x0466, 0x0466, 0x0473, 0x047d, 0x0480, 0x0480, 0x0480, 0x0480,
+ 0x0480, 0x0487, 0x0487, 0x0487, 0x048c, 0x0491, 0x0491, 0x0498,
+ 0x049c, 0x04a1, 0x04a1, 0x04a5, 0x04aa, 0x04aa, 0x04b7, 0x04b7,
+ 0x04b7, 0x04b7, 0x04b7, 0x04ba, 0x04ba, 0x04c5, 0x04c5, 0x04c5,
+ 0x04cb, 0x04cf, 0x04d5, 0x04db, 0x04db, 0x04df, 0x04df, 0x04e6,
+ 0x04e6, 0x04e6, 0x04ec, 0x04ec, 0x04ec, 0x04f1, 0x04f1, 0x04f1,
+ 0x04f1, 0x04f5, 0x04f5, 0x04f5, 0x04f5, 0x04fd, 0x04fd, 0x0509,
+ // Entry 100 - 13F
+ 0x050f, 0x050f, 0x051b, 0x051b, 0x051b, 0x051b, 0x0520, 0x0520,
+ 0x0520, 0x0520, 0x0520, 0x0525, 0x052a, 0x0537, 0x0537, 0x053c,
+ 0x053c, 0x0546, 0x0546, 0x054c, 0x0550, 0x0554, 0x0554, 0x0554,
+ 0x0554, 0x0554, 0x0554, 0x0554, 0x055a, 0x055a, 0x055a, 0x0562,
+ 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562, 0x0562,
+ 0x0562, 0x0564, 0x056a, 0x056a, 0x056a, 0x056f, 0x057f, 0x057f,
+ 0x057f, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585,
+ 0x0585, 0x0590, 0x05a2, 0x05a2, 0x05a2, 0x05a7, 0x05a7, 0x05a7,
+ // Entry 140 - 17F
+ 0x05a7, 0x05ad, 0x05ad, 0x05ad, 0x05ad, 0x05ad, 0x05ba, 0x05ba,
+ 0x05ba, 0x05ba, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c0,
+ 0x05c6, 0x05cd, 0x05cd, 0x05cd, 0x05cd, 0x05cd, 0x05d3, 0x05d3,
+ 0x05d3, 0x05d8, 0x05d8, 0x05d8, 0x05df, 0x05df, 0x05e6, 0x05f2,
+ 0x05f2, 0x05f2, 0x05f2, 0x05f2, 0x05f2, 0x05fe, 0x0604, 0x0604,
+ 0x0608, 0x0610, 0x0610, 0x061c, 0x0623, 0x0623, 0x0623, 0x0623,
+ 0x0623, 0x0623, 0x0623, 0x0623, 0x062b, 0x0630, 0x0639, 0x0639,
+ 0x0639, 0x0639, 0x063e, 0x0644, 0x0644, 0x0644, 0x0644, 0x0644,
+ // Entry 180 - 1BF
+ 0x0644, 0x064a, 0x064a, 0x064a, 0x064e, 0x0658, 0x0658, 0x0662,
+ 0x0662, 0x0662, 0x0665, 0x0669, 0x066e, 0x066e, 0x066e, 0x066e,
+ 0x0672, 0x0672, 0x0672, 0x0672, 0x0672, 0x0677, 0x067b, 0x067b,
+ 0x067b, 0x067b, 0x067f, 0x0687, 0x0687, 0x0695, 0x069c, 0x069c,
+ 0x069c, 0x069c, 0x06a4, 0x06aa, 0x06aa, 0x06aa, 0x06b1, 0x06b1,
+ 0x06b1, 0x06b1, 0x06b1, 0x06b1, 0x06b6, 0x06b6, 0x06c1, 0x06c1,
+ 0x06c1, 0x06c5, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d2, 0x06d8,
+ 0x06e1, 0x06e1, 0x06e1, 0x06e1, 0x06e7, 0x06f2, 0x06f6, 0x06f6,
+ // Entry 1C0 - 1FF
+ 0x06f6, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe,
+ 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe,
+ 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0x0707, 0x0707,
+ 0x0707, 0x0707, 0x0707, 0x0707, 0x0707, 0x070c, 0x070c, 0x070c,
+ 0x070c, 0x070c, 0x070c, 0x070f, 0x070f, 0x070f, 0x070f, 0x0716,
+ 0x0716, 0x0716, 0x0716, 0x071d, 0x0722, 0x0722, 0x0722, 0x0722,
+ 0x0731, 0x0737, 0x073b, 0x073b, 0x073b, 0x074a, 0x074a, 0x074a,
+ 0x0753, 0x0753, 0x075f, 0x075f, 0x075f, 0x075f, 0x076b, 0x0774,
+ // Entry 200 - 23F
+ 0x077e, 0x0788, 0x0788, 0x0788, 0x0788, 0x0788, 0x078c, 0x078c,
+ 0x078c, 0x078c, 0x078c, 0x0793, 0x07a0, 0x07a0, 0x07a0, 0x07a0,
+ 0x07a0, 0x07a0, 0x07a4, 0x07a4, 0x07a9, 0x07a9, 0x07a9, 0x07a9,
+ 0x07a9, 0x07b0, 0x07b0, 0x07b6, 0x07b6, 0x07b6, 0x07bf, 0x07bf,
+ 0x07c5, 0x07c5, 0x07c5, 0x07c5, 0x07cc, 0x07cc, 0x07d3, 0x07d3,
+ 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07ff, 0x0802, 0x0802, 0x0802,
+ 0x0802, 0x0802, 0x0802, 0x0802, 0x0807, 0x080d, 0x080d, 0x080d,
+ 0x080d, 0x0815, 0x0815, 0x0815, 0x0815, 0x0819, 0x0819, 0x0819,
+ // Entry 240 - 27F
+ 0x0820, 0x0825, 0x0825, 0x0825, 0x0825, 0x0825, 0x0825, 0x0825,
+ 0x0840, 0x0840, 0x085a, 0x085e, 0x0871, 0x0871, 0x087f, 0x0897,
+ 0x08a9, 0x08b8, 0x08c8, 0x08d3, 0x08e9, 0x08f8, 0x0907, 0x0907,
+ 0x0916, 0x092a, 0x0936, 0x093d, 0x094c, 0x095b, 0x0963, 0x096f,
+ 0x097b, 0x098b,
+} // Size: 1244 bytes
+
+var myLangStr string = "" + // Size: 6975 bytes
+ "အဘ်ခါဇီရန်အာဖရိကန်းစ်အာကိန်အန်ဟာရစျချအာရေဗီအက္စမီစ်အော်ဇောဘိုင်ဂျောနီဘက်" +
+ "ရှ်ကီအာဘီလာရုဘူဂေးရီးယားဘန်ဘာရာဘင်္ဂါလီတိဘက်ဘရီတွန်ဘော့စ်နီးယားကာတာလန်" +
+ "ချေချင်းခိုစီကန်ခရီးချက်ချူဗက်ရှ်ဝေလဒိန်းမတ်ဂျာမန်ဒွန်ကာဝီဂရိအင်္ဂလိပ်" +
+ "အက္စပရန္တိုစပိန်အက်စ်တိုးနီးရန်းဘစ်က္ကီပါရှန်ဖင်နစ်ရှ်ဖီဂျီဖာရိုအိစ်ပြ" +
+ "င်သစ်အနောက်ပိုင်း ဖရီစီရန်အိုင်းရစ်ဂါလာစီယံဂူအာရာနီဂူဂျာရသီမန်းဇ်ဟာဥစာ" +
+ "ဟီးဘရူးဟိန္ဒီခရိုအေရှန်ဟာအီတီအန်ဟန်ဂေရီအာမေနီအန်အင်ဒိုနီးရှားအစ္ဂဘိုစီ" +
+ "ချွမ် ရီအိုင်စ်လန္ဒီအီတလီအီနုခ်တီတုဂျပန်ဂျာဗားနီးစ်ဂျော်ဂျီယန်ကွန်ဂိုခ" +
+ "ီခူယူခါဇါခ်ခလာအ်လီဆပ်ခမာကန္နာဒါကိုးရီးယားကက်ရှ်မီရီကဒ်ခိုနီရှ်ခရူဂစ်လက" +
+ "်တင်လူဇင်ဘတ်က်ဂန်ဒီလင်ဂါလာလာအိုလစ္သူအာနီယံလူဘာ-ခါတန်ဂါလက္ဘီအံအာလာဂါစီမ" +
+ "ောင်းရီ (နယူးဇီလန်ကျွန်းရှိ ပင်ရင်းတိုင်းရင်းသားလူမျိုး)မာစီဒိုနီယံမလေ" +
+ "းရာလမ်မွန်ဂိုလီးယန်းမာရသီမလေးမောလ္တီစ်ဗမာတောင်ဒီဘီလီနီပါလီဒတ်ချ်နော်ဝေ" +
+ "း နီးနော်စ်ခ်ဘွတ်မော်လ်အိုရိုမိုအိုရီရာပန်ချာပီပါဠိပိုလန်ပါရှ်တိုပေါ်တ" +
+ "ူဂီခက်ချ်ဝါရောမရွန်ဒီရိုမေနီယားရုရှကင်ရာဝန်ဒါသင်္သကရိုက်စင်ဒီတောင်ဆာမိ" +
+ "ဆမ်ဂိုဆင်ဟာလစလိုဗက်စလိုဗေးနီးယမ်းရှိနာဆိုမာလီအယ်လ်ဘေးနီးယန်းဆားဗီးယန်း" +
+ "ဆွီဒင်ဆြာဟီလီတမီးလ်တီလီဂုတာဂျစ်ထိုင်းတီဂ်ရင်ရာတခ္မင်တွန်ဂါတာကစ်တတာဝီဂါ" +
+ "ယူကရိန်းအော်ဒူဦးဇ်ဘက်ဗီယက်နမ်ဝူလိုဖ်ဇိုစာရိုရုဘာတရုတ်ဇူလူအာဂ်ဟိန်းအင်္" +
+ "ဂလိပ်စာဟောင်းမာပုချီအာစုဘာလီဘာဆာဘိန်ဘာဘီနာအနောက်ပိုင်းဘဲလိုချီဗိုဒိုချ" +
+ "ီဂါချာရိုကီဆိုရာနီ ကူဒစ်ရှ်ဒါကိုတာတိုင်တာဒီလာဝဲဇာမာအောက်ဆိုဘီအမ်ဒူအလာအ" +
+ "လယ်ပိုင်း ဒတ်ချ်ဂျိုလာ-ဖွန်ရီအမ်ဘူရှေးဟောင်း အီဂျစ်အလယ်ပိုင်း အင်္ဂလိပ" +
+ "်ဖိလစ်ပီနိုအလယ်ပိုင်းပြင်သစ်ပြင်သစ်ဟောင်းမြောက်ပိုင်း ဖရီစီရန်အရှေ့ပို" +
+ "င်း ဖရီစီရန်ဂါဂါဇ်အလယ်ပိုင်းအမြင့်ဂျာမန်ရှေးဟောင်း ဂရိဆွစ် ဂျာမန်ဂူစီး" +
+ "ဟာဝေယံအပေါ်ဆိုဘီအမ်ဂွမ်ဘာမချာမီဂျူဒီယို-ပါရှန်ဂျူဒီယို-အာရေဗျခဘိုင်လ်က" +
+ "ချင်ခမ်ဘာမာခွန်ဒီခဘူဗာဒီအာနူခါစီခိုရာ ချီအီနီခါလိမ်ဂျင်ကိုမီ-ပါမြက်ကွန" +
+ "်ကနီရှန်ဘာလာဘာဖီအာလန်ဂီလာကိုတာမြောက်လူရီလူအိုလူရီအာမာဆိုင်မီရုမိုရှီစ်" +
+ "ယန်းအလယ်ပိုင်း အိုင်းရစ်မာခူဝါ-မီအီတိုမီတာမန်ချူးမိုဟော့ခ်မန်ဒန်းအကြိမ" +
+ "်များစွာ ဘာသာစကားများမာဇန်ဒါရန်နီနာမာအနိမ့် ဂျာမန်ဝါဆီအိုနကိုနူအာယန်ကိ" +
+ "ုလီပါရှန် အဟောင်းခီခ်အီချီရွမ်ဘိုဝါဆန်ဘူရုဆန်ဂုစကော့စီနာခိုရာဘိုရို ဆမ" +
+ "်နီအိုင်းရစ် ဟောင်းတာချယ်လ်ဟစ်ရှမ်းတောင်ပိုင်း ဆာမိလူလီ ဆာမိအီနာရီ ဆာမ" +
+ "ိခိုလ် ဆာမိခွန်ဂို စွာဟီလီတီဆိုတာဆာဝါခ်အလယ်အက်တ်လက်စ် တာမာဇိုက်မူလရင်း" +
+ "မြစ်ဗိုင်ဗန်ဂျိုဝေါလ်ပါရီဆိုဂါမိုရိုကန် တွမ်မဇိုတ် စံဘာသာစကား နှင့် ပတ" +
+ "်သက် သောအရာမရှိအရေဗီ(ပုံမှန်)ဩစတြီးယ ဂျာမန်ဆွစ် အမြင့် ဂျာမန်ဩစတြေးလျှ" +
+ " အင်္ဂလိပ်ကနေဒါ အင်္ဂလိပ်ဗြိတိသျှ အင်္ဂလိပ်အမေရိကန် အင်္ဂလိပ်လက်တင်အမေရိ" +
+ "က စပိန်စပိန်(ဥရောပ)ကနေဒါ ပြင်သစ်ဆွစ် ပြင်သစ်ဖလီမစ်ရှ်ဘရာဇီး ပေါ်တူဂီဥရ" +
+ "ောပ ပေါ်တူဂီရိုးရှင်းသော တရုတ်ရှေးရိုးစဉ်လာ တရုတ်"
+
+var myLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x001e, 0x001e, 0x003f, 0x0051, 0x006f, 0x006f,
+ 0x0081, 0x0099, 0x0099, 0x0099, 0x00cf, 0x00ed, 0x00ff, 0x0120,
+ 0x0120, 0x0135, 0x014d, 0x015c, 0x0171, 0x0195, 0x01aa, 0x01c2,
+ 0x01c2, 0x01da, 0x01e6, 0x01f2, 0x01f2, 0x020d, 0x0216, 0x022e,
+ 0x0240, 0x0240, 0x0252, 0x0258, 0x0261, 0x027c, 0x029d, 0x02ac,
+ 0x02dc, 0x02f1, 0x0303, 0x0303, 0x031e, 0x032d, 0x0348, 0x035d,
+ 0x039a, 0x03b5, 0x03b5, 0x03cd, 0x03e5, 0x03fd, 0x040f, 0x041e,
+ 0x0433, 0x0445, 0x0445, 0x0463, 0x047e, 0x0493, 0x04ae, 0x04ae,
+ // Entry 40 - 7F
+ 0x04ae, 0x04d5, 0x04d5, 0x04ea, 0x0506, 0x0506, 0x0506, 0x052a,
+ 0x0539, 0x0557, 0x0566, 0x0587, 0x05a8, 0x05bd, 0x05cf, 0x05cf,
+ 0x05e1, 0x05ff, 0x0608, 0x061d, 0x063b, 0x063b, 0x0659, 0x0662,
+ 0x0662, 0x067a, 0x068c, 0x069e, 0x06bc, 0x06cb, 0x06cb, 0x06e0,
+ 0x06ef, 0x0710, 0x0732, 0x0747, 0x075f, 0x075f, 0x0802, 0x0823,
+ 0x083e, 0x0868, 0x0877, 0x0883, 0x089e, 0x08a7, 0x08a7, 0x08c8,
+ 0x08da, 0x08da, 0x08ec, 0x0923, 0x0941, 0x0941, 0x0941, 0x0941,
+ 0x0941, 0x0941, 0x095c, 0x0971, 0x0971, 0x0989, 0x0995, 0x09a7,
+ // Entry 80 - BF
+ 0x09bf, 0x09d7, 0x09ef, 0x09fb, 0x0a0d, 0x0a2b, 0x0a37, 0x0a55,
+ 0x0a76, 0x0a76, 0x0a85, 0x0aa0, 0x0ab2, 0x0ac4, 0x0ad9, 0x0b03,
+ 0x0b03, 0x0b12, 0x0b27, 0x0b54, 0x0b72, 0x0b72, 0x0b72, 0x0b72,
+ 0x0b84, 0x0b99, 0x0bab, 0x0bbd, 0x0bcf, 0x0be1, 0x0bfc, 0x0c0e,
+ 0x0c0e, 0x0c20, 0x0c2f, 0x0c2f, 0x0c38, 0x0c38, 0x0c44, 0x0c5c,
+ 0x0c6e, 0x0c83, 0x0c83, 0x0c9b, 0x0c9b, 0x0c9b, 0x0cb0, 0x0cbf,
+ 0x0cbf, 0x0cd4, 0x0cd4, 0x0ce3, 0x0cef, 0x0cef, 0x0cef, 0x0cef,
+ 0x0cef, 0x0cef, 0x0cef, 0x0d0a, 0x0d0a, 0x0d0a, 0x0d0a, 0x0d0a,
+ // Entry C0 - FF
+ 0x0d0a, 0x0d0a, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d52, 0x0d52, 0x0d52,
+ 0x0d52, 0x0d52, 0x0d52, 0x0d52, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d5e,
+ 0x0d5e, 0x0d5e, 0x0d6a, 0x0d6a, 0x0d76, 0x0d76, 0x0d76, 0x0d76,
+ 0x0d76, 0x0d88, 0x0d88, 0x0d94, 0x0d94, 0x0d94, 0x0dd0, 0x0dd0,
+ 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0, 0x0dd0,
+ 0x0dd0, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2,
+ 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0de2, 0x0df1, 0x0df1, 0x0df1,
+ 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0df1, 0x0e09, 0x0e09, 0x0e37,
+ // Entry 100 - 13F
+ 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e4c, 0x0e4c, 0x0e61, 0x0e73,
+ 0x0e73, 0x0e73, 0x0e73, 0x0e7f, 0x0e7f, 0x0ea6, 0x0ea6, 0x0eb5,
+ 0x0ee6, 0x0f0b, 0x0f0b, 0x0f0b, 0x0f1a, 0x0f1a, 0x0f1a, 0x0f4b,
+ 0x0f4b, 0x0f4b, 0x0f85, 0x0f85, 0x0f85, 0x0f85, 0x0f85, 0x0fa3,
+ 0x0fa3, 0x0fa3, 0x0fa3, 0x0fd6, 0x0ffd, 0x0ffd, 0x103a, 0x1074,
+ 0x1074, 0x1074, 0x1086, 0x1086, 0x1086, 0x1086, 0x1086, 0x1086,
+ 0x1086, 0x1086, 0x10c8, 0x10c8, 0x10c8, 0x10c8, 0x10c8, 0x10c8,
+ 0x10c8, 0x10f0, 0x110f, 0x110f, 0x110f, 0x111e, 0x111e, 0x111e,
+ // Entry 140 - 17F
+ 0x111e, 0x1130, 0x1130, 0x1130, 0x1130, 0x1130, 0x1157, 0x1157,
+ 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157, 0x1157,
+ 0x1169, 0x117b, 0x11a6, 0x11d1, 0x11d1, 0x11d1, 0x11e9, 0x11f8,
+ 0x11f8, 0x1207, 0x1207, 0x1207, 0x1207, 0x1207, 0x121f, 0x1240,
+ 0x1240, 0x1240, 0x1240, 0x124c, 0x124c, 0x1271, 0x1271, 0x1271,
+ 0x1271, 0x128f, 0x128f, 0x12b1, 0x12c6, 0x12c6, 0x12c6, 0x12c6,
+ 0x12c6, 0x12c6, 0x12c6, 0x12c6, 0x12de, 0x12f0, 0x12f0, 0x12f0,
+ 0x12f0, 0x12f0, 0x12ff, 0x12ff, 0x12ff, 0x12ff, 0x12ff, 0x12ff,
+ // Entry 180 - 1BF
+ 0x12ff, 0x1314, 0x1314, 0x1314, 0x1314, 0x1332, 0x1332, 0x1332,
+ 0x1332, 0x1332, 0x1341, 0x1341, 0x1353, 0x1353, 0x1353, 0x1353,
+ 0x1353, 0x1353, 0x1353, 0x1353, 0x1353, 0x1368, 0x1368, 0x1368,
+ 0x1368, 0x1368, 0x1374, 0x1398, 0x13d2, 0x13fa, 0x1406, 0x1406,
+ 0x1406, 0x141b, 0x141b, 0x1436, 0x1436, 0x1436, 0x144b, 0x1497,
+ 0x1497, 0x1497, 0x1497, 0x1497, 0x1497, 0x1497, 0x14bb, 0x14bb,
+ 0x14bb, 0x14c7, 0x14ec, 0x14ec, 0x14ec, 0x14ec, 0x14ec, 0x1501,
+ 0x1501, 0x1501, 0x1501, 0x1501, 0x150d, 0x150d, 0x1519, 0x1519,
+ // Entry 1C0 - 1FF
+ 0x1519, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531,
+ 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1531, 0x1559, 0x1559,
+ 0x1559, 0x1559, 0x1559, 0x1559, 0x1559, 0x1559, 0x1574, 0x1574,
+ 0x1574, 0x1574, 0x1574, 0x1574, 0x1574, 0x1589, 0x1589, 0x1589,
+ 0x1589, 0x1589, 0x1589, 0x158f, 0x158f, 0x158f, 0x158f, 0x15a4,
+ 0x15a4, 0x15a4, 0x15a4, 0x15a4, 0x15b3, 0x15b3, 0x15c2, 0x15c2,
+ 0x15c2, 0x15c2, 0x15ce, 0x15ce, 0x15ce, 0x15ff, 0x162d, 0x162d,
+ 0x164e, 0x165d, 0x165d, 0x165d, 0x165d, 0x165d, 0x168b, 0x16a4,
+ // Entry 200 - 23F
+ 0x16c3, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df, 0x16df,
+ 0x16df, 0x16df, 0x16df, 0x16df, 0x170a, 0x170a, 0x170a, 0x170a,
+ 0x170a, 0x170a, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719,
+ 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719,
+ 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1719, 0x1731, 0x1731,
+ 0x1777, 0x1777, 0x1777, 0x1777, 0x1798, 0x17a7, 0x17a7, 0x17a7,
+ 0x17a7, 0x17a7, 0x17a7, 0x17a7, 0x17bc, 0x17bc, 0x17bc, 0x17bc,
+ 0x17bc, 0x17d7, 0x17d7, 0x17d7, 0x17d7, 0x17e6, 0x17e6, 0x17e6,
+ // Entry 240 - 27F
+ 0x17e6, 0x17e6, 0x17e6, 0x17e6, 0x17e6, 0x17e6, 0x17e6, 0x17e6,
+ 0x1827, 0x1827, 0x1881, 0x1881, 0x18a7, 0x18a7, 0x18cf, 0x1901,
+ 0x1938, 0x1963, 0x1997, 0x19cb, 0x19ff, 0x1a1f, 0x1a1f, 0x1a1f,
+ 0x1a44, 0x1a66, 0x1a66, 0x1a81, 0x1aac, 0x1ad4, 0x1ad4, 0x1ad4,
+ 0x1b08, 0x1b3f,
+} // Size: 1244 bytes
+
+var neLangStr string = "" + // Size: 12514 bytes
+ "अफारअब्खाजियालीअवेस्तानअफ्रिकान्सआकानअम्हारिकअरागोनीअरबीआसामीअवारिकऐमारा" +
+ "अजरबैजानीबास्किरबेलारुसीबुल्गेरियालीबिस्लामबाम्बाराबंगालीतिब्बतीब्रेटन" +
+ "बोस्नियालीक्याटालनचेचेनचामोर्रोकोर्सिकनक्रीचेकचर्च स्लाभिकचुभासवेल्शडे" +
+ "निसजर्मनदिबेहीजोङ्खाइवीग्रीकअङ्ग्रेजीएस्पेरान्तोस्पेनीइस्टोनियालीबास्क" +
+ "फारसीफुलाहफिनिसफिजियालीफारोजफ्रान्सेलीफ्रिजीयनआयरिसस्कटिस गाएलिकगलिसिय" +
+ "ालीगुवारानीगुजरातीमान्क्सहाउसाहिब्रुहिन्दीहिरी मोटुक्रोयसियालीहैटियाली" +
+ "हङ्गेरियालीआर्मेनियालीहेरेरोइन्टर्लिङ्गुआइन्डोनेसियालीइन्टरलिङ्ग्वेइग्" +
+ "बोसिचुआन यिइनुपिआक्इडोआइसल्यान्डियालीइटालेलीइनुक्टिटुटजापानीजाभानीजर्ज" +
+ "ियालीकोङ्गोकिकुयुकुआन्यामाकाजाखकालालिसुटखमेरकन्नाडाकोरियालीकानुरीकास्म" +
+ "िरीकुर्दीकोमीकोर्निसकिर्गिजल्याटिनलक्जेम्बर्गीगान्डालिम्बुर्गीलिङ्गाला" +
+ "लाओलिथुआनियालीलुबा-काताङ्गालात्भियालीमलागासीमार्सालीमाओरीम्यासेडोनियाल" +
+ "ीमलयालममङ्गोलियालीमराठीमलायमाल्टिजबर्मेलीनाउरूउत्तरी न्डेबेलेनेपालीन्द" +
+ "ोन्गाडचनर्वेली नाइनोर्स्कनर्वेली बोकमालनाभाजोन्यान्जाअक्सिटनओजिब्वाओरो" +
+ "मोउडियाअोस्सेटिकपंजाबीपालीपोलिसपास्तोपोर्तुगीक्वेचुवारोमानिसरुन्डीरोमा" +
+ "नियालीरूसीकिन्यारवान्डासंस्कृतसिन्धीउत्तरी सामीसाङ्गोसिन्हालीस्लोभाकिय" +
+ "ालीस्लोभेनियालीशोनासोमालीअल्बानियालीसर्बियालीस्वातीस्विडिसस्वाहिलीतामि" +
+ "लतेलुगुताजिकथाईतिग्रीन्याटर्कमेनटोङ्गनटर्किशतातारउइघुरयुक्रेनीउर्दुउज्" +
+ "बेकीभियतनामीवुलुफखोसायिद्दिसयोरूवाचिनियाँजुलुअचाइनिजअकोलीअदाङमेअदिघेअफ" +
+ "्रिहिलीआघेमअइनुअक्कादियालीअलाबामाअलेउटघेग अल्बानियालीपुरातन अङ्ग्रेजीअ" +
+ "ङ्गिकाअरामाइकमापुचेअराओनाअरापाहोअल्जेरियाली अरबीअरावाकमोरोक्कोली अरबीइ" +
+ "जिप्ट अरबीआसुअमेरिकी साङ्केतिक भाषाअस्टुरियालीकोटावाअवधीबालुचीबालीबाभा" +
+ "रियालीबासाबामुनबाताक तोबाघोमालाबेजाबेम्बाबेटावीबेनाबाफुटबडागापश्चिम बा" +
+ "लोचीभोजपुरीबिकोलबिनीबन्जारकोमविष्णुप्रियाबाख्तिआरीब्रजब्राहुइबोडोअकुजब" +
+ "ुरिआतबुगिनियालीबुलुब्लिनमेडुम्बाकाड्डोक्यारिबकायुगाअट्सामसेबुआनोचिगाचि" +
+ "ब्चाचागाटाईचुकेसेमारीचिनुक जार्गनचोक्टावचिपेव्यानचेरोकीचेयेन्नेकेन्द्र" +
+ "ीय कुर्दीकोप्टिककापिज्नोनक्रिमियाली तुर्ककासुवियनडाकोटादार्ग्वाताइतादे" +
+ "लावरदोग्रिबदिन्काजर्माडोगरीतल्लो सोर्बियनकेन्द्रीय दुसुनदुवालामध्य डचज" +
+ "ोला-फोनिलद्युलादाजागाएम्बुएफिकएमिलियालीपुरातन इजिप्टीएकाजुकएलामाइटमध्य" +
+ " अङ्ग्रेजीकेन्द्रीय युपिकइवोन्डोएक्सट्रेमादुरालीफाङफिलिपिनीफोनकाहुन फ्रा" +
+ "न्सेलीमध्य फ्रान्सेलीपुरातन फ्रान्सेलीअर्पितानउत्तरी फ्रिजीपूर्वी फ्रि" +
+ "सियालीफ्रिउलियालीगागगाउजगान चिनियाँगायोग्बायागिजगिल्बर्टीगिलाकीमध्य उच" +
+ "्च जर्मनपुरातन उच्च जर्मनगोवा कोन्कानीगोन्डीगोरोन्टालोगोथिकग्रेबोपुरात" +
+ "न ग्रिकस्वीस जर्मनफ्राफ्रागुसीगुइचिनहाइदाहक्का चिनियाँहवाइयनफिजी हिन्द" +
+ "ीहिलिगायनोनहिट्टिटेहमोङमाथिल्लो सोर्बियनहुपाइबानइबिबियोइयोकोइन्गसइन्ग्" +
+ "रियालीजमैकाली क्रेओले अङ्ग्रेजीलोज्बानन्गोम्बामाचामेजुडियो-फारसीजुडियो" +
+ "-अरबीजुटिसकारा-काल्पाककाबिलकाचिनज्जुकाम्बाकावीकाबार्दियालीकानेम्बुमाकोन्" +
+ "डेकाबुभेर्डियानुकेनयाङकोरोकाइनगाङखासीखोटानीकोयरा चिनीखोवारकिर्मान्जकीक" +
+ "ाकोकालेन्जिनकिम्बुन्डुकोमी-पर्म्याककोन्कानीकोस्रालीक्पेल्लेकाराचाय-बाल" +
+ "्करक्रिओकिनाराय-एकारेलियालीकुरुखशाम्बालाबाफियाकोलोग्नियालीकुमिककुतेनाइ" +
+ "लाडिनोलाङ्गीलाहन्डालाम्बालाज्घियालीलिङ्गुवा फ्राङ्का नोभालिगुरियालीलिभ" +
+ "ोनियालीलाकोतालोम्बार्डमोङ्गोलोजीउत्तरी लुरीलाट्गालीलुबा-लुलुआलुइसेनोलु" +
+ "न्डालुओमिजोलुइयासाहित्यिक चिनियाँलाजमादुरेसेमाफामगधीमैथिलीमाकासारमान्द" +
+ "िङोमसाईमाबामोक्षमन्दरमेन्डेमेरूमोरिसेनमध्य आयरिसमाखुवा-मिट्टोमेटामिकमा" +
+ "कमिनाङकाबाउमान्चुमनिपुरीमोहकमोस्सीमुन्डाङबहुभाषाक्रिकमिरान्डीमाडवारीमे" +
+ "न्टावाईम्येनेइर्ज्यामजानडेरानीमिन नान चिनियाँनेपोलिटाननामातल्लो जर्मनन" +
+ "ेवारीनियासनिउएनअओ नागाक्वासियोन्गिएम्बुननोगाइपुरानो नोर्सेनोभियलनकोउत्" +
+ "तरी सोथोनुएरपरम्परागत नेवारीन्यामवेजीन्यान्कोलन्योरोनजिमाओसागेअटोमन तु" +
+ "र्कीपाङ्गासिनानपाहलावीपामपाङ्गापापियामेन्तोपालाउवालीपिकार्डपेन्सिलभानि" +
+ "याली जर्मनपुरातन फारसीपालाटिन जर्मनफोनिसियालीपिएडमोन्तेसेपोन्टिकपुरातन" +
+ " प्रोभेन्कालकिचेचिम्बोराजो उच्चस्थान किचुआराजस्थानीरोम्बोअरोमानीयालीर्" +
+ "\u200cवासाम्बुरूसान्तालीन्गामबायसाङ्गुदक्षिणी कुर्दिशसेनाकोयराबोरो सेन्न" +
+ "ीपुरातन आयरीसटाचेल्हिटचाड अरबीतल्लो सिलेसियालीदक्षिणी सामीलुले सामीइना" +
+ "री सामीस्कोइट सामीस्रानान टोङ्गोसुकुमासुसूसुमेरियालीकोमोरीकङ्गो स्वाहि" +
+ "लीपरम्परागत सिरियाकसिरियाकटेसोक्लिङ्गनन्यास टोङ्गामुस्लिम टाटतासावाकके" +
+ "न्द्रीय एट्लास टामाजिघटअज्ञात भाषाभाइमुख्य-फ्राङ्कोनियालीभुन्जोवार्ल्प" +
+ "िरीकाल्मिकमिनग्रेलियालीसोगान्हिनगातुकान्टोनियालीब्लिससिम्बोल्समानक मोर" +
+ "ोक्कोन तामाजिघटभाषिक सामग्री छैनआधुनिक मानक अरबीअस्ट्रियाली जर्मनस्वीस" +
+ " हाई जर्मनअस्ट्रेलियाली अङ्ग्रेजीक्यानाडेली अङ्ग्रेजीबेलायती अङ्ग्रेजीअम" +
+ "ेरिकी अङ्ग्रेजील्याटिन अमेरिकी स्पेनीयुरोपेली स्पेनीमेक्सिकन स्पेनीक्य" +
+ "ानेडाली फ्रान्सेलीतल्लो साक्सनफ्लेमिसब्राजिली पोर्तुगीयुरोपेली पोर्तुग" +
+ "ीमाल्डाभियनसरलिकृत चिनियाँपरम्परागत चिनियाँ"
+
+var neLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x002d, 0x0045, 0x0063, 0x006f, 0x0087, 0x009c,
+ 0x00a8, 0x00b7, 0x00c9, 0x00d8, 0x00f3, 0x0108, 0x0120, 0x0144,
+ 0x0159, 0x0171, 0x0183, 0x0198, 0x01aa, 0x01c8, 0x01e0, 0x01ef,
+ 0x0207, 0x021f, 0x022b, 0x0234, 0x0256, 0x0265, 0x0274, 0x0283,
+ 0x0292, 0x02a4, 0x02b6, 0x02bf, 0x02ce, 0x02e9, 0x030a, 0x031c,
+ 0x033d, 0x034c, 0x035b, 0x036a, 0x0379, 0x0391, 0x03a0, 0x03be,
+ 0x03d6, 0x03e5, 0x040a, 0x0425, 0x043d, 0x0452, 0x0467, 0x0476,
+ 0x0488, 0x049a, 0x04b3, 0x04d4, 0x04ec, 0x050d, 0x052e, 0x0540,
+ // Entry 40 - 7F
+ 0x0567, 0x058e, 0x05b5, 0x05c4, 0x05dd, 0x05f5, 0x05fe, 0x062b,
+ 0x0640, 0x065e, 0x0670, 0x0682, 0x069d, 0x06af, 0x06c1, 0x06dc,
+ 0x06eb, 0x0706, 0x0712, 0x0727, 0x073f, 0x0751, 0x0769, 0x077b,
+ 0x0787, 0x079c, 0x07b1, 0x07c6, 0x07ea, 0x07fc, 0x081a, 0x0832,
+ 0x083b, 0x085c, 0x0881, 0x089f, 0x08b4, 0x08cc, 0x08db, 0x0905,
+ 0x0917, 0x0938, 0x0947, 0x0953, 0x0968, 0x097d, 0x098c, 0x09b7,
+ 0x09c9, 0x09e1, 0x09e7, 0x0a1b, 0x0a43, 0x0a43, 0x0a55, 0x0a6d,
+ 0x0a82, 0x0a97, 0x0aa6, 0x0ab5, 0x0ad0, 0x0ae2, 0x0aee, 0x0afd,
+ // Entry 80 - BF
+ 0x0b0f, 0x0b27, 0x0b3f, 0x0b54, 0x0b66, 0x0b84, 0x0b90, 0x0bb7,
+ 0x0bcc, 0x0bcc, 0x0bde, 0x0bfd, 0x0c0f, 0x0c27, 0x0c4b, 0x0c6f,
+ 0x0c6f, 0x0c7b, 0x0c8d, 0x0cae, 0x0cc9, 0x0cdb, 0x0cdb, 0x0cdb,
+ 0x0cf0, 0x0d08, 0x0d17, 0x0d29, 0x0d38, 0x0d41, 0x0d5f, 0x0d74,
+ 0x0d74, 0x0d86, 0x0d98, 0x0d98, 0x0da7, 0x0da7, 0x0db6, 0x0dce,
+ 0x0ddd, 0x0df2, 0x0df2, 0x0e0a, 0x0e0a, 0x0e0a, 0x0e19, 0x0e25,
+ 0x0e3a, 0x0e4c, 0x0e4c, 0x0e61, 0x0e6d, 0x0e82, 0x0e91, 0x0ea3,
+ 0x0eb2, 0x0eb2, 0x0ecd, 0x0ed9, 0x0ee5, 0x0f06, 0x0f1b, 0x0f2a,
+ // Entry C0 - FF
+ 0x0f55, 0x0f55, 0x0f83, 0x0f98, 0x0fad, 0x0fbf, 0x0fd1, 0x0fe6,
+ 0x1014, 0x1026, 0x1051, 0x1070, 0x1079, 0x10b7, 0x10d8, 0x10ea,
+ 0x10f6, 0x1108, 0x1114, 0x1132, 0x113e, 0x114d, 0x1169, 0x117b,
+ 0x1187, 0x1199, 0x11ab, 0x11b7, 0x11c6, 0x11d5, 0x11fa, 0x120f,
+ 0x121e, 0x122a, 0x123c, 0x1245, 0x1245, 0x1269, 0x1284, 0x1290,
+ 0x12a5, 0x12b1, 0x12bd, 0x12cf, 0x12ed, 0x12f9, 0x1308, 0x1320,
+ 0x1332, 0x1347, 0x1359, 0x136b, 0x1380, 0x138c, 0x139e, 0x13b3,
+ 0x13c5, 0x13d1, 0x13f3, 0x1408, 0x1423, 0x1435, 0x144d, 0x147b,
+ // Entry 100 - 13F
+ 0x1490, 0x14ab, 0x14d9, 0x14f1, 0x1503, 0x151b, 0x152a, 0x153c,
+ 0x153c, 0x1551, 0x1563, 0x1572, 0x1581, 0x15a9, 0x15d4, 0x15e6,
+ 0x15f9, 0x1615, 0x1627, 0x1639, 0x1648, 0x1654, 0x166f, 0x1697,
+ 0x16a9, 0x16be, 0x16e6, 0x1711, 0x1726, 0x1756, 0x175f, 0x1777,
+ 0x1777, 0x1780, 0x17ae, 0x17d9, 0x180a, 0x1822, 0x1847, 0x1878,
+ 0x1899, 0x189f, 0x18ae, 0x18cd, 0x18d9, 0x18eb, 0x18eb, 0x18f4,
+ 0x190f, 0x1921, 0x194a, 0x1979, 0x199e, 0x19b0, 0x19ce, 0x19dd,
+ 0x19ef, 0x1a11, 0x1a30, 0x1a30, 0x1a48, 0x1a54, 0x1a66, 0x1a75,
+ // Entry 140 - 17F
+ 0x1a9a, 0x1aac, 0x1acb, 0x1ae9, 0x1b01, 0x1b0d, 0x1b3e, 0x1b3e,
+ 0x1b4a, 0x1b56, 0x1b6b, 0x1b7a, 0x1b89, 0x1baa, 0x1bf1, 0x1c06,
+ 0x1c1e, 0x1c30, 0x1c52, 0x1c71, 0x1c80, 0x1ca2, 0x1cb1, 0x1cc0,
+ 0x1ccc, 0x1cde, 0x1cea, 0x1d0e, 0x1d26, 0x1d26, 0x1d3e, 0x1d68,
+ 0x1d7a, 0x1d86, 0x1d9b, 0x1da7, 0x1db9, 0x1dd5, 0x1de4, 0x1e05,
+ 0x1e11, 0x1e2c, 0x1e4a, 0x1e6f, 0x1e87, 0x1e9f, 0x1eb7, 0x1edf,
+ 0x1eee, 0x1f07, 0x1f25, 0x1f34, 0x1f4c, 0x1f5e, 0x1f82, 0x1f91,
+ 0x1fa6, 0x1fb8, 0x1fca, 0x1fdf, 0x1ff1, 0x200f, 0x204d, 0x206b,
+ // Entry 180 - 1BF
+ 0x2089, 0x209b, 0x20b6, 0x20c8, 0x20d4, 0x20f3, 0x210b, 0x2127,
+ 0x213c, 0x214e, 0x2157, 0x2163, 0x2172, 0x21a3, 0x21ac, 0x21c4,
+ 0x21d0, 0x21dc, 0x21ee, 0x2203, 0x221b, 0x2227, 0x2233, 0x2242,
+ 0x2251, 0x2263, 0x226f, 0x2284, 0x22a0, 0x22c5, 0x22d1, 0x22e3,
+ 0x2301, 0x2313, 0x2328, 0x2334, 0x2346, 0x2346, 0x235b, 0x2370,
+ 0x237f, 0x2397, 0x23ac, 0x23c7, 0x23d9, 0x23ee, 0x240c, 0x2435,
+ 0x2450, 0x245c, 0x247b, 0x248d, 0x249c, 0x24ab, 0x24be, 0x24d6,
+ 0x24f4, 0x2503, 0x2528, 0x253a, 0x2543, 0x2562, 0x256e, 0x259c,
+ // Entry 1C0 - 1FF
+ 0x25b7, 0x25d2, 0x25e4, 0x25f3, 0x2602, 0x2624, 0x2645, 0x265a,
+ 0x2675, 0x2699, 0x26b4, 0x26c9, 0x2706, 0x2706, 0x2728, 0x274d,
+ 0x276b, 0x278f, 0x27a4, 0x27a4, 0x27a4, 0x27d8, 0x27e4, 0x282e,
+ 0x2849, 0x2849, 0x2849, 0x2849, 0x2849, 0x285b, 0x285b, 0x285b,
+ 0x285b, 0x285b, 0x287c, 0x288b, 0x288b, 0x288b, 0x288b, 0x28a3,
+ 0x28a3, 0x28bb, 0x28bb, 0x28d3, 0x28e5, 0x28e5, 0x28e5, 0x28e5,
+ 0x2910, 0x2910, 0x291c, 0x291c, 0x291c, 0x294a, 0x296c, 0x296c,
+ 0x2987, 0x2987, 0x299d, 0x299d, 0x29cb, 0x29cb, 0x29ed, 0x2a06,
+ // Entry 200 - 23F
+ 0x2a22, 0x2a41, 0x2a41, 0x2a41, 0x2a69, 0x2a69, 0x2a69, 0x2a69,
+ 0x2a7b, 0x2a87, 0x2aa5, 0x2ab7, 0x2adf, 0x2b10, 0x2b25, 0x2b25,
+ 0x2b25, 0x2b25, 0x2b31, 0x2b31, 0x2b31, 0x2b31, 0x2b31, 0x2b31,
+ 0x2b31, 0x2b49, 0x2b49, 0x2b49, 0x2b49, 0x2b6b, 0x2b6b, 0x2b6b,
+ 0x2b6b, 0x2b6b, 0x2b6b, 0x2b8a, 0x2b8a, 0x2b8a, 0x2b9f, 0x2b9f,
+ 0x2be6, 0x2be6, 0x2be6, 0x2be6, 0x2c05, 0x2c0e, 0x2c0e, 0x2c0e,
+ 0x2c0e, 0x2c48, 0x2c48, 0x2c48, 0x2c5a, 0x2c5a, 0x2c5a, 0x2c5a,
+ 0x2c5a, 0x2c78, 0x2c78, 0x2c8d, 0x2cb4, 0x2cc0, 0x2cc0, 0x2cc0,
+ // Entry 240 - 27F
+ 0x2cc0, 0x2cc0, 0x2cdb, 0x2cff, 0x2cff, 0x2d29, 0x2d29, 0x2d29,
+ 0x2d6a, 0x2d6a, 0x2d99, 0x2d99, 0x2dc5, 0x2dc5, 0x2df6, 0x2e1f,
+ 0x2e62, 0x2e9c, 0x2ecd, 0x2efe, 0x2f3c, 0x2f67, 0x2f92, 0x2f92,
+ 0x2fcf, 0x2fcf, 0x2ff1, 0x3006, 0x3037, 0x3068, 0x3086, 0x3086,
+ 0x30b1, 0x30e2,
+} // Size: 1244 bytes
+
+var nlLangStr string = "" + // Size: 4999 bytes
+ "AfarAbchazischAvestischAfrikaansAkanAmhaarsAragoneesArabischAssameesAvar" +
+ "ischAymaraAzerbeidzjaansBasjkiersWit-RussischBulgaarsBislamaBambaraBenga" +
+ "alsTibetaansBretonsBosnischCatalaansTsjetsjeensChamorroCorsicaansCreeTsj" +
+ "echischKerkslavischTsjoevasjischWelshDeensDuitsDivehiDzongkhaEweGrieksEn" +
+ "gelsEsperantoSpaansEstischBaskischPerzischFulahFinsFijischFaeröersFransF" +
+ "riesIersSchots-GaelischGalicischGuaraníGujaratiManxHausaHebreeuwsHindiHi" +
+ "ri MotuKroatischHaïtiaans CreoolsHongaarsArmeensHereroInterlinguaIndones" +
+ "ischInterlingueIgboYiInupiaqIdoIJslandsItaliaansInuktitutJapansJavaansGe" +
+ "orgischKongoGikuyuKuanyamaKazachsGroenlandsKhmerKannadaKoreaansKanuriKas" +
+ "jmiriKoerdischKomiCornishKirgizischLatijnLuxemburgsLugandaLimburgsLingal" +
+ "aLaotiaansLitouwsLuba-KatangaLetsMalagassischMarshalleesMaoriMacedonisch" +
+ "MalayalamMongoolsMarathiMaleisMalteesBirmaansNauruaansNoord-NdebeleNepal" +
+ "eesNdongaNederlandsNoors - NynorskNoors - BokmålZuid-NdbeleNavajoNyanjaO" +
+ "ccitaansOjibwaAfaan OromoOdiaOssetischPunjabiPaliPoolsPasjtoePortugeesQu" +
+ "echuaReto-RomaansKirundiRoemeensRussischKinyarwandaSanskrietSardijnsSind" +
+ "hiNoord-SamischSangoSingaleesSlowaaksSloveensSamoaansShonaSomalischAlban" +
+ "eesServischSwaziZuid-SothoSoendaneesZweedsSwahiliTamilTeluguTadzjieksTha" +
+ "iTigrinyaTurkmeensTswanaTongaansTurksTsongaTataarsTahitiaansOeigoersOekr" +
+ "aïensUrduOezbeeksVendaVietnameesVolapükWaalsWolofXhosaJiddischYorubaZhua" +
+ "ngChineesZoeloeAtjehsAkoliAdangmeAdygeesTunesisch ArabischAfrihiliAghemA" +
+ "inuAkkadischAlabamaAleoetischGegischZuid-AltaïschOudengelsAngikaArameesM" +
+ "apudungunAraonaArapahoAlgerijns ArabischArawakMarokkaans ArabischEgyptis" +
+ "ch ArabischAsuAmerikaanse GebarentaalAsturischKotavaAwadhiBeloetsjiBalin" +
+ "eesBeiersBasaBamounBatak TobaGhomala’BejaBembaBetawiBenaBafutBadagaWeste" +
+ "rs BeloetsjiBhojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBra" +
+ "huiBodoAkooseBoerjatischBugineesBuluBlinMedumbaCaddoCaribischCayugaAtsam" +
+ "CebuanoChigaChibchaChagataiChuukeesMariChinook JargonChoctawChipewyanChe" +
+ "rokeeCheyenneSoranîKoptischCapiznonKrim-TataarsKasjoebischDakotaDargwaTa" +
+ "itaDelawareSlaveyDogribDinkaZarmaDogriNedersorbischDusunDualaMiddelneder" +
+ "landsJola-FonyiDyulaDazagaEmbuEfikEmilianoOudegyptischEkajukElamitischMi" +
+ "ddelengelsYupikEwondoExtremeensFangFilipijnsTornedal-FinsFonCajun-FransM" +
+ "iddelfransOudfransArpitaansNoord-FriesOost-FriesFriulischGaGagaoezischGa" +
+ "nyuGayoGbayaZoroastrisch DariGe’ezGilberteesGilakiMiddelhoogduitsOudhoog" +
+ "duitsGoa KonkaniGondiGorontaloGothischGreboOudgrieksZwitserduitsWayuuGur" +
+ "uneGusiiGwichʼinHaidaHakkaHawaïaansFijisch HindiHiligaynonHettitischHmon" +
+ "gOppersorbischXiangyuHupaIbanIbibioIlokoIngoesjetischIngrischJamaicaans " +
+ "CreoolsLojbanNgombaMachameJudeo-PerzischJudeo-ArabischJutlandsKarakalpak" +
+ "sKabylischKachinJjuKambaKawiKabardischKanembuTyapMakondeKaapverdisch Cre" +
+ "oolsKenyangKoroKaingangKhasiKhotaneesKoyra ChiiniKhowarKirmanckîKakoKale" +
+ "njinKimbunduKomi-PermjaaksKonkaniKosraeaansKpelleKaratsjaj-BalkarischKri" +
+ "oKinaray-aKarelischKurukhShambalaBafiaKölschKoemuksKutenaiLadinoLangiLah" +
+ "ndaLambaLezgischLingua Franca NovaLigurischLijfsLakotaLombardischMongoLo" +
+ "ziNoordelijk LuriLetgaalsLuba-LuluaLuisenoLundaLuoMizoLuyiaKlassiek Chin" +
+ "eesLazischMadoereesMafaMagahiMaithiliMakassaarsMandingoMaaMabaMoksjaMand" +
+ "arMendeMeruMorisyenMiddeliersMakhuwa-MeettoMeta’Mi’kmaqMinangkabauMantsj" +
+ "oeMeiteiMohawkMossiWest-MariMundangMeerdere talenCreekMirandeesMarwariMe" +
+ "ntawaiMyeneErzjaMazanderaniMinnanyuNapolitaansNamaNedersaksischNewariNia" +
+ "sNiueaansAo NagaNgumbaNgiemboonNogaiOudnoorsNovialN’KoNoord-SothoNuerKla" +
+ "ssiek NepalbhasaNyamweziNyankoleNyoroNzimaOsageOttomaans-TurksPangasinan" +
+ "PahlaviPampangaPapiamentsPalausPicardischPennsylvania-DuitsPlautdietschO" +
+ "udperzischPaltsischFoenicischPiëmonteesPontischPohnpeiaansOudpruisischOu" +
+ "dprovençaalsK’iche’KichwaRajasthaniRapanuiRarotonganRomagnolRiffijnsRomb" +
+ "oRomaniRotumaansRoetheensRovianaAroemeensRwaSandaweJakoetsSamaritaans-Ar" +
+ "ameesSamburuSasakSantaliSaurashtraNgambaySanguSiciliaansSchotsSassareesP" +
+ "ahlavaniSenecaSenaSeriSelkoepsKoyraboro SenniOudiersSamogitischTashelhiy" +
+ "tShanTsjadisch ArabischSidamoSilezisch DuitsSelayarZuid-SamischLule-Sami" +
+ "schInari-SamischSkolt-SamischSoninkeSogdischSranantongoSererSahoSaterfri" +
+ "esSukumaSoesoeSoemerischShimaoreCongo SwahiliKlassiek SyrischSyrischSile" +
+ "zischTuluTimneTesoTerenoTetunTigreTivTokelausTsakhurKlingonTlingitTalysh" +
+ "TamashekNyasa TongaTok PisinTuroyoTarokoTsakonischTsimshianMoslim TatToe" +
+ "mboekaTuvaluaansTasawaqToevaansTamazight (Centraal-Marokko)OedmoertsOega" +
+ "ritischUmbunduRootVaiVenetiaansWepsischWest-VlaamsOpperfrankischVotischV" +
+ "õroVunjoWalserWolayttaWarayWashoWarlpiriWuyuKalmuksMingreelsSogaYaoYape" +
+ "esYangbenYembaNheengatuKantoneesZapotecBlissymbolenZeeuwsZenagaStandaard" +
+ " Marokkaanse TamazightZunigeen linguïstische inhoudZazamodern standaard " +
+ "ArabischOostenrijks DuitsZwitsers HoogduitsAustralisch EngelsCanadees En" +
+ "gelsBrits EngelsAmerikaans EngelsLatijns-Amerikaans SpaansEuropees Spaan" +
+ "sMexicaans SpaansCanadees FransZwitsers FransVlaamsBraziliaans Portugees" +
+ "Europees PortugeesServo-Kroatischvereenvoudigd Chineestraditioneel Chine" +
+ "es"
+
+var nlLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002b, 0x0034,
+ 0x003c, 0x0044, 0x004c, 0x0052, 0x0060, 0x0069, 0x0075, 0x007d,
+ 0x0084, 0x008b, 0x0093, 0x009c, 0x00a3, 0x00ab, 0x00b4, 0x00bf,
+ 0x00c7, 0x00d1, 0x00d5, 0x00df, 0x00eb, 0x00f8, 0x00fd, 0x0102,
+ 0x0107, 0x010d, 0x0115, 0x0118, 0x011e, 0x0124, 0x012d, 0x0133,
+ 0x013a, 0x0142, 0x014a, 0x014f, 0x0153, 0x015a, 0x0163, 0x0168,
+ 0x016d, 0x0171, 0x0180, 0x0189, 0x0191, 0x0199, 0x019d, 0x01a2,
+ 0x01ab, 0x01b0, 0x01b9, 0x01c2, 0x01d4, 0x01dc, 0x01e3, 0x01e9,
+ // Entry 40 - 7F
+ 0x01f4, 0x01ff, 0x020a, 0x020e, 0x0210, 0x0217, 0x021a, 0x0222,
+ 0x022b, 0x0234, 0x023a, 0x0241, 0x024a, 0x024f, 0x0255, 0x025d,
+ 0x0264, 0x026e, 0x0273, 0x027a, 0x0282, 0x0288, 0x0290, 0x0299,
+ 0x029d, 0x02a4, 0x02ae, 0x02b4, 0x02be, 0x02c5, 0x02cd, 0x02d4,
+ 0x02dd, 0x02e4, 0x02f0, 0x02f4, 0x0300, 0x030b, 0x0310, 0x031b,
+ 0x0324, 0x032c, 0x0333, 0x0339, 0x0340, 0x0348, 0x0351, 0x035e,
+ 0x0366, 0x036c, 0x0376, 0x0385, 0x0394, 0x039f, 0x03a5, 0x03ab,
+ 0x03b4, 0x03ba, 0x03c5, 0x03c9, 0x03d2, 0x03d9, 0x03dd, 0x03e2,
+ // Entry 80 - BF
+ 0x03e9, 0x03f2, 0x03f9, 0x0405, 0x040c, 0x0414, 0x041c, 0x0427,
+ 0x0430, 0x0438, 0x043e, 0x044b, 0x0450, 0x0459, 0x0461, 0x0469,
+ 0x0471, 0x0476, 0x047f, 0x0487, 0x048f, 0x0494, 0x049e, 0x04a8,
+ 0x04ae, 0x04b5, 0x04ba, 0x04c0, 0x04c9, 0x04cd, 0x04d5, 0x04de,
+ 0x04e4, 0x04ec, 0x04f1, 0x04f7, 0x04fe, 0x0508, 0x0510, 0x051a,
+ 0x051e, 0x0526, 0x052b, 0x0535, 0x053d, 0x0542, 0x0547, 0x054c,
+ 0x0554, 0x055a, 0x0560, 0x0567, 0x056d, 0x0573, 0x0578, 0x057f,
+ 0x0586, 0x0598, 0x05a0, 0x05a5, 0x05a9, 0x05b2, 0x05b9, 0x05c3,
+ // Entry C0 - FF
+ 0x05ca, 0x05d8, 0x05e1, 0x05e7, 0x05ee, 0x05f8, 0x05fe, 0x0605,
+ 0x0617, 0x061d, 0x0630, 0x0642, 0x0645, 0x065c, 0x0665, 0x066b,
+ 0x0671, 0x067a, 0x0682, 0x0688, 0x068c, 0x0692, 0x069c, 0x06a6,
+ 0x06aa, 0x06af, 0x06b5, 0x06b9, 0x06be, 0x06c4, 0x06d5, 0x06dd,
+ 0x06e2, 0x06e6, 0x06ec, 0x06ef, 0x06f6, 0x0701, 0x070a, 0x070e,
+ 0x0714, 0x0718, 0x071e, 0x0729, 0x0731, 0x0735, 0x0739, 0x0740,
+ 0x0745, 0x074e, 0x0754, 0x0759, 0x0760, 0x0765, 0x076c, 0x0774,
+ 0x077c, 0x0780, 0x078e, 0x0795, 0x079e, 0x07a6, 0x07ae, 0x07b5,
+ // Entry 100 - 13F
+ 0x07bd, 0x07c5, 0x07d1, 0x07dc, 0x07e2, 0x07e8, 0x07ed, 0x07f5,
+ 0x07fb, 0x0801, 0x0806, 0x080b, 0x0810, 0x081d, 0x0822, 0x0827,
+ 0x0837, 0x0841, 0x0846, 0x084c, 0x0850, 0x0854, 0x085c, 0x0868,
+ 0x086e, 0x0878, 0x0884, 0x0889, 0x088f, 0x0899, 0x089d, 0x08a6,
+ 0x08b3, 0x08b6, 0x08c1, 0x08cc, 0x08d4, 0x08dd, 0x08e8, 0x08f2,
+ 0x08fb, 0x08fd, 0x0908, 0x090d, 0x0911, 0x0916, 0x0927, 0x092e,
+ 0x0938, 0x093e, 0x094d, 0x0959, 0x0964, 0x0969, 0x0972, 0x097a,
+ 0x097f, 0x0988, 0x0994, 0x0999, 0x099f, 0x09a4, 0x09ad, 0x09b2,
+ // Entry 140 - 17F
+ 0x09b7, 0x09c1, 0x09ce, 0x09d8, 0x09e2, 0x09e7, 0x09f4, 0x09fb,
+ 0x09ff, 0x0a03, 0x0a09, 0x0a0e, 0x0a1b, 0x0a23, 0x0a35, 0x0a3b,
+ 0x0a41, 0x0a48, 0x0a56, 0x0a64, 0x0a6c, 0x0a77, 0x0a80, 0x0a86,
+ 0x0a89, 0x0a8e, 0x0a92, 0x0a9c, 0x0aa3, 0x0aa7, 0x0aae, 0x0ac2,
+ 0x0ac9, 0x0acd, 0x0ad5, 0x0ada, 0x0ae3, 0x0aef, 0x0af5, 0x0aff,
+ 0x0b03, 0x0b0b, 0x0b13, 0x0b21, 0x0b28, 0x0b32, 0x0b38, 0x0b4c,
+ 0x0b50, 0x0b59, 0x0b62, 0x0b68, 0x0b70, 0x0b75, 0x0b7c, 0x0b83,
+ 0x0b8a, 0x0b90, 0x0b95, 0x0b9b, 0x0ba0, 0x0ba8, 0x0bba, 0x0bc3,
+ // Entry 180 - 1BF
+ 0x0bc8, 0x0bce, 0x0bd9, 0x0bde, 0x0be2, 0x0bf1, 0x0bf9, 0x0c03,
+ 0x0c0a, 0x0c0f, 0x0c12, 0x0c16, 0x0c1b, 0x0c2b, 0x0c32, 0x0c3b,
+ 0x0c3f, 0x0c45, 0x0c4d, 0x0c57, 0x0c5f, 0x0c62, 0x0c66, 0x0c6c,
+ 0x0c72, 0x0c77, 0x0c7b, 0x0c83, 0x0c8d, 0x0c9b, 0x0ca2, 0x0cab,
+ 0x0cb6, 0x0cbe, 0x0cc4, 0x0cca, 0x0ccf, 0x0cd8, 0x0cdf, 0x0ced,
+ 0x0cf2, 0x0cfb, 0x0d02, 0x0d0a, 0x0d0f, 0x0d14, 0x0d1f, 0x0d27,
+ 0x0d32, 0x0d36, 0x0d43, 0x0d49, 0x0d4d, 0x0d55, 0x0d5c, 0x0d62,
+ 0x0d6b, 0x0d70, 0x0d78, 0x0d7e, 0x0d84, 0x0d8f, 0x0d93, 0x0da6,
+ // Entry 1C0 - 1FF
+ 0x0dae, 0x0db6, 0x0dbb, 0x0dc0, 0x0dc5, 0x0dd4, 0x0dde, 0x0de5,
+ 0x0ded, 0x0df7, 0x0dfd, 0x0e07, 0x0e19, 0x0e25, 0x0e30, 0x0e39,
+ 0x0e43, 0x0e4e, 0x0e56, 0x0e61, 0x0e6d, 0x0e7c, 0x0e87, 0x0e8d,
+ 0x0e97, 0x0e9e, 0x0ea8, 0x0eb0, 0x0eb8, 0x0ebd, 0x0ec3, 0x0ecc,
+ 0x0ed5, 0x0edc, 0x0ee5, 0x0ee8, 0x0eef, 0x0ef6, 0x0f09, 0x0f10,
+ 0x0f15, 0x0f1c, 0x0f26, 0x0f2d, 0x0f32, 0x0f3c, 0x0f42, 0x0f4b,
+ 0x0f54, 0x0f5a, 0x0f5e, 0x0f62, 0x0f6a, 0x0f79, 0x0f80, 0x0f8b,
+ 0x0f95, 0x0f99, 0x0fab, 0x0fb1, 0x0fc0, 0x0fc7, 0x0fd3, 0x0fdf,
+ // Entry 200 - 23F
+ 0x0fec, 0x0ff9, 0x1000, 0x1008, 0x1013, 0x1018, 0x101c, 0x1026,
+ 0x102c, 0x1032, 0x103c, 0x1044, 0x1051, 0x1061, 0x1068, 0x1071,
+ 0x1075, 0x107a, 0x107e, 0x1084, 0x1089, 0x108e, 0x1091, 0x1099,
+ 0x10a0, 0x10a7, 0x10ae, 0x10b4, 0x10bc, 0x10c7, 0x10d0, 0x10d6,
+ 0x10dc, 0x10e6, 0x10ef, 0x10f9, 0x1102, 0x110c, 0x1113, 0x111b,
+ 0x1137, 0x1140, 0x114b, 0x1152, 0x1156, 0x1159, 0x1163, 0x116b,
+ 0x1176, 0x1184, 0x118b, 0x1190, 0x1195, 0x119b, 0x11a3, 0x11a8,
+ 0x11ad, 0x11b5, 0x11b9, 0x11c0, 0x11c9, 0x11cd, 0x11d0, 0x11d6,
+ // Entry 240 - 27F
+ 0x11dd, 0x11e2, 0x11eb, 0x11f4, 0x11fb, 0x1207, 0x120d, 0x1213,
+ 0x1232, 0x1236, 0x1250, 0x1254, 0x126d, 0x126d, 0x127e, 0x1290,
+ 0x12a2, 0x12b1, 0x12bd, 0x12ce, 0x12e7, 0x12f6, 0x1306, 0x1306,
+ 0x1314, 0x1322, 0x1322, 0x1328, 0x133d, 0x134f, 0x134f, 0x135e,
+ 0x1373, 0x1387,
+} // Size: 1244 bytes
+
+var noLangStr string = "" + // Size: 4987 bytes
+ "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamiskavarisk" +
+ "aymaraaserbajdsjanskbasjkirskhviterussiskbulgarskbislamabambarabengaliti" +
+ "betanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcreetsjekkis" +
+ "kkirkeslavisktsjuvasjiskwalisiskdansktyskdivehidzongkhaewegreskengelskes" +
+ "perantospanskestiskbaskiskpersiskfulanifinskfijianskfærøyskfranskvestfri" +
+ "siskirskskotsk gæliskgalisiskguaranigujaratimanskhausahebraiskhindihiri " +
+ "motukroatiskhaitiskungarskarmenskhererointerlinguaindonesiskinterlinguei" +
+ "bosichuan-yiinupiakidoislandskitalienskinuktitutjapanskjavanesiskgeorgis" +
+ "kkikongokikuyukuanyamakasakhiskgrønlandskkhmerkannadakoreanskkanurikasjm" +
+ "irikurdiskkomikorniskkirgisisklatinluxemburgskgandalimburgisklingalalaot" +
+ "isklitauiskluba-katangalatviskgassiskmarshallesiskmaorimakedonskmalayala" +
+ "mmongolskmarathimalayiskmaltesiskburmesisknaurunord-ndebelenepalindongan" +
+ "ederlandsknorsk nynorsknorsk bokmålsør-ndebelenavajonyanjaoksitanskojibw" +
+ "aoromooriyaossetiskpunjabipalipolskpashtoportugisiskquechuaretoromanskru" +
+ "ndirumenskrussiskkinyarwandasanskritsardinsksindhinordsamisksangosingale" +
+ "siskslovakiskslovensksamoanskshonasomalialbanskserbiskswatisør-sothosund" +
+ "anesisksvenskswahilitamiltelugutadsjikiskthaitigrinjaturkmensksetswanato" +
+ "ngansktyrkisktsongatatarisktahitiskuiguriskukrainskurduusbekiskvendaviet" +
+ "namesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkinesiskzuluachinesi" +
+ "skacoliadangmeadyghetunisisk-arabiskafrihiliaghemainuakkadiskalabamaaleu" +
+ "tiskgegisk-albansksøraltaiskgammelengelskangikaarameiskaraukanskaraonaar" +
+ "apahoalgerisk arabiskarawakmarokkansk-arabiskegyptisk arabiskasuamerikan" +
+ "sk tegnspråkasturiskkotavaawadhibaluchibalinesiskbairiskbasabamunbatak t" +
+ "obaghomalabejabembabetawibenabafutbadagavestbalutsjibhojpuribikolbiniban" +
+ "jarkomsiksikabishnupriyabakhtiaribrajbrahuibodoakoseburiatbuginesiskbulu" +
+ "blinmedumbacaddokaribiskcayugaatsamcebuanskkigachibchachagataichuukesisk" +
+ "marichinookchoctawchipewianskcherokesiskcheyennekurdisk (sorani)koptiskk" +
+ "apizkrimtatariskkasjubiskdakotadargwataitadelawareslaviskdogribdinkazarm" +
+ "adogrilavsorbisksentraldusundualamellomnederlandskjola-fonyidyuladazagak" +
+ "iembuefikemilianskgammelegyptiskekajukelamittiskmellomengelsksentralyupi" +
+ "kewondoekstremaduranskfangfilippinsktornedalsfinskfonkajunfranskmellomfr" +
+ "anskgammelfranskarpitansknordfrisiskøstfrisiskfriulianskgagagausiskganga" +
+ "yogbayazoroastrisk darigeskiribatiskgilekimellomhøytyskgammelhøytyskgoan" +
+ "sk konkanigondigorontalogotiskgrebogammelgresksveitsertyskwayuufrafragus" +
+ "iigwichinhaidahakkahawaiiskfijiansk hindihiligaynonhettittiskhmonghøysor" +
+ "biskxianghupaibanibibioilokoingusjiskingriskjamaicansk kreolengelsklojba" +
+ "nngombamachamejødepersiskjødearabiskjyskkarakalpakiskkabylskkachinjjukam" +
+ "bakawikabardiskkanembutyapmakondekappverdiskkenyangkorokaingangkhasikhot" +
+ "anesiskkoyra chiinikhowarkirmanckikakokalenjinkimbundukomipermjakiskkonk" +
+ "anikosraeanskkpellekarachay-balkarkriokinaray-akarelskkurukhshambalabafi" +
+ "akølnskkumykkutenailadinsklangilahndalambalezghianlingua franca novaligu" +
+ "risklivisklakotalombardiskmongolozinord-lurilatgalliskluba-lulualuisenol" +
+ "undaluomizoluhyaklassisk kinesisklaziskmaduresiskmafamagahimaithilimakas" +
+ "armandingomasaimabamokshamandarmendemerumauritisk-kreolskmellomirskmakhu" +
+ "wa-meettometa’micmacminangkabaumandsjumanipurimohawkmossivestmariskmunda" +
+ "ngflere språkcreekmirandesiskmarwarimentawaimyeneerzyamazandaraniminnann" +
+ "apolitansknamanedertysknewariniasniueanskao nagakwasiongiemboonnogaigamm" +
+ "elnorsknovialnʼkonord-sothonuerklassisk newarinyamwezinyankolenyoronzima" +
+ "osageottomansk tyrkiskpangasinanpahlavipampangapapiamentopalauiskpikardi" +
+ "skpennsylvaniatyskplautdietschgammelpersiskpalatintyskfønikiskpiemontesi" +
+ "skpontiskponapiskprøyssiskgammelprovençalskquichékichwa (Chimborazo-høyl" +
+ "andet)rajasthanirapanuirarotonganskromagnolskriffromboromanirotumanskrus" +
+ "inskrovianaaromanskrwasandawejakutsksamaritansk arameisksamburusasaksant" +
+ "alisaurashtrangambaysangusicilianskskotsksassarisk sardinsksørkurdisksen" +
+ "ecasenaseriselkupiskkoyraboro sennigammelirsksamogitisktachelhitshanTsja" +
+ "d-arabisksidamolavschlesiskselayarsørsamisklulesamiskenaresamiskskoltesa" +
+ "misksoninkesogdisksranan tongoserersahosaterfrisisksukumasususumeriskkom" +
+ "oriskkongolesisk swahiliklassisk syrisksyriskschlesisktulutemnetesoteren" +
+ "otetumtigrétivtokelautsakhurskklingontlingittalyshtamasjeknyasa-tongansk" +
+ "tok pisinturoyotarokotsakonisktsimshianmuslimsk tattumbukatuvalutasawaqt" +
+ "uvinisksentralmarokkansk tamazightudmurtugaritiskumbundurotvaivenetiansk" +
+ "vepsiskvestflamskMain-frankiskvotisksørestiskvunjowalserwalamowaraywasho" +
+ "warlpiriwukalmykmingrelsksogayaoyapesiskyangbenyembanheengatukantonesisk" +
+ "zapotecblissymbolerzeeuwszenagastandard marrokansk tamazightzuniuten spr" +
+ "åklig innholdzazamoderne standard arabiskøsterriksk tysksveitsisk høyty" +
+ "skaustralsk engelskcanadisk engelskbritisk engelskamerikansk engelsklati" +
+ "namerikansk spanskeuropeisk spanskmeksikansk spanskcanadisk fransksveits" +
+ "isk fransknedersaksiskflamskbrasiliansk portugisiskeuropeisk portugisisk" +
+ "moldovskserbokroatiskforenklet kinesisktradisjonell kinesisk"
+
+var noLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032,
+ 0x0039, 0x0041, 0x0048, 0x004e, 0x005c, 0x0065, 0x0071, 0x0079,
+ 0x0080, 0x0087, 0x008e, 0x0097, 0x009f, 0x00a6, 0x00af, 0x00ba,
+ 0x00c2, 0x00cc, 0x00d0, 0x00d9, 0x00e5, 0x00f0, 0x00f8, 0x00fd,
+ 0x0101, 0x0107, 0x010f, 0x0112, 0x0117, 0x011e, 0x0127, 0x012d,
+ 0x0133, 0x013a, 0x0141, 0x0147, 0x014c, 0x0154, 0x015d, 0x0163,
+ 0x016e, 0x0172, 0x0180, 0x0188, 0x018f, 0x0197, 0x019c, 0x01a1,
+ 0x01a9, 0x01ae, 0x01b7, 0x01bf, 0x01c6, 0x01cd, 0x01d4, 0x01da,
+ // Entry 40 - 7F
+ 0x01e5, 0x01ef, 0x01fa, 0x01fd, 0x0207, 0x020e, 0x0211, 0x0219,
+ 0x0222, 0x022b, 0x0232, 0x023c, 0x0244, 0x024b, 0x0251, 0x0259,
+ 0x0262, 0x026d, 0x0272, 0x0279, 0x0281, 0x0287, 0x028f, 0x0296,
+ 0x029a, 0x02a1, 0x02aa, 0x02af, 0x02ba, 0x02bf, 0x02c9, 0x02d0,
+ 0x02d7, 0x02df, 0x02eb, 0x02f2, 0x02f9, 0x0306, 0x030b, 0x0314,
+ 0x031d, 0x0325, 0x032c, 0x0334, 0x033d, 0x0346, 0x034b, 0x0357,
+ 0x035d, 0x0363, 0x036e, 0x037b, 0x0388, 0x0394, 0x039a, 0x03a0,
+ 0x03a9, 0x03af, 0x03b4, 0x03b9, 0x03c1, 0x03c8, 0x03cc, 0x03d1,
+ // Entry 80 - BF
+ 0x03d7, 0x03e2, 0x03e9, 0x03f4, 0x03f9, 0x0400, 0x0407, 0x0412,
+ 0x041a, 0x0422, 0x0428, 0x0432, 0x0437, 0x0442, 0x044b, 0x0453,
+ 0x045b, 0x0460, 0x0466, 0x046d, 0x0474, 0x0479, 0x0483, 0x048e,
+ 0x0494, 0x049b, 0x04a0, 0x04a6, 0x04b0, 0x04b4, 0x04bc, 0x04c5,
+ 0x04cd, 0x04d5, 0x04dc, 0x04e2, 0x04ea, 0x04f2, 0x04fa, 0x0502,
+ 0x0506, 0x050e, 0x0513, 0x051f, 0x0526, 0x052e, 0x0533, 0x0538,
+ 0x053f, 0x0545, 0x054b, 0x0553, 0x0557, 0x0561, 0x0566, 0x056d,
+ 0x0573, 0x0583, 0x058b, 0x0590, 0x0594, 0x059c, 0x05a3, 0x05ab,
+ // Entry C0 - FF
+ 0x05b9, 0x05c4, 0x05d1, 0x05d7, 0x05df, 0x05e8, 0x05ee, 0x05f5,
+ 0x0605, 0x060b, 0x061d, 0x062d, 0x0630, 0x0645, 0x064d, 0x0653,
+ 0x0659, 0x0660, 0x066a, 0x0671, 0x0675, 0x067a, 0x0684, 0x068b,
+ 0x068f, 0x0694, 0x069a, 0x069e, 0x06a3, 0x06a9, 0x06b5, 0x06bd,
+ 0x06c2, 0x06c6, 0x06cc, 0x06cf, 0x06d6, 0x06e1, 0x06ea, 0x06ee,
+ 0x06f4, 0x06f8, 0x06fd, 0x0703, 0x070d, 0x0711, 0x0715, 0x071c,
+ 0x0721, 0x0729, 0x072f, 0x0734, 0x073c, 0x0740, 0x0747, 0x074f,
+ 0x0759, 0x075d, 0x0764, 0x076b, 0x0776, 0x0781, 0x0789, 0x0799,
+ // Entry 100 - 13F
+ 0x07a0, 0x07a5, 0x07b1, 0x07ba, 0x07c0, 0x07c6, 0x07cb, 0x07d3,
+ 0x07da, 0x07e0, 0x07e5, 0x07ea, 0x07ef, 0x07f9, 0x0805, 0x080a,
+ 0x081b, 0x0825, 0x082a, 0x0830, 0x0836, 0x083a, 0x0843, 0x0851,
+ 0x0857, 0x0861, 0x086e, 0x087a, 0x0880, 0x088f, 0x0893, 0x089d,
+ 0x08ab, 0x08ae, 0x08b9, 0x08c5, 0x08d1, 0x08da, 0x08e5, 0x08f0,
+ 0x08fa, 0x08fc, 0x0905, 0x0908, 0x090c, 0x0911, 0x0921, 0x0924,
+ 0x092e, 0x0934, 0x0942, 0x0950, 0x095e, 0x0963, 0x096c, 0x0972,
+ 0x0977, 0x0982, 0x098e, 0x0993, 0x0999, 0x099e, 0x09a5, 0x09aa,
+ // Entry 140 - 17F
+ 0x09af, 0x09b7, 0x09c5, 0x09cf, 0x09d9, 0x09de, 0x09e9, 0x09ee,
+ 0x09f2, 0x09f6, 0x09fc, 0x0a01, 0x0a0a, 0x0a11, 0x0a28, 0x0a2e,
+ 0x0a34, 0x0a3b, 0x0a47, 0x0a53, 0x0a57, 0x0a64, 0x0a6b, 0x0a71,
+ 0x0a74, 0x0a79, 0x0a7d, 0x0a86, 0x0a8d, 0x0a91, 0x0a98, 0x0aa3,
+ 0x0aaa, 0x0aae, 0x0ab6, 0x0abb, 0x0ac6, 0x0ad2, 0x0ad8, 0x0ae1,
+ 0x0ae5, 0x0aed, 0x0af5, 0x0b03, 0x0b0a, 0x0b14, 0x0b1a, 0x0b29,
+ 0x0b2d, 0x0b36, 0x0b3d, 0x0b43, 0x0b4b, 0x0b50, 0x0b57, 0x0b5c,
+ 0x0b63, 0x0b6a, 0x0b6f, 0x0b75, 0x0b7a, 0x0b82, 0x0b94, 0x0b9c,
+ // Entry 180 - 1BF
+ 0x0ba2, 0x0ba8, 0x0bb2, 0x0bb7, 0x0bbb, 0x0bc4, 0x0bce, 0x0bd8,
+ 0x0bdf, 0x0be4, 0x0be7, 0x0beb, 0x0bf0, 0x0c01, 0x0c07, 0x0c11,
+ 0x0c15, 0x0c1b, 0x0c23, 0x0c2a, 0x0c32, 0x0c37, 0x0c3b, 0x0c41,
+ 0x0c47, 0x0c4c, 0x0c50, 0x0c61, 0x0c6b, 0x0c79, 0x0c80, 0x0c86,
+ 0x0c91, 0x0c98, 0x0ca0, 0x0ca6, 0x0cab, 0x0cb5, 0x0cbc, 0x0cc8,
+ 0x0ccd, 0x0cd8, 0x0cdf, 0x0ce7, 0x0cec, 0x0cf1, 0x0cfc, 0x0d02,
+ 0x0d0d, 0x0d11, 0x0d1a, 0x0d20, 0x0d24, 0x0d2c, 0x0d33, 0x0d39,
+ 0x0d42, 0x0d47, 0x0d52, 0x0d58, 0x0d5d, 0x0d67, 0x0d6b, 0x0d7a,
+ // Entry 1C0 - 1FF
+ 0x0d82, 0x0d8a, 0x0d8f, 0x0d94, 0x0d99, 0x0daa, 0x0db4, 0x0dbb,
+ 0x0dc3, 0x0dcd, 0x0dd5, 0x0dde, 0x0dee, 0x0dfa, 0x0e07, 0x0e12,
+ 0x0e1b, 0x0e27, 0x0e2e, 0x0e36, 0x0e40, 0x0e52, 0x0e59, 0x0e77,
+ 0x0e81, 0x0e88, 0x0e94, 0x0e9e, 0x0ea2, 0x0ea7, 0x0ead, 0x0eb6,
+ 0x0ebd, 0x0ec4, 0x0ecc, 0x0ecf, 0x0ed6, 0x0edd, 0x0ef1, 0x0ef8,
+ 0x0efd, 0x0f04, 0x0f0e, 0x0f15, 0x0f1a, 0x0f24, 0x0f2a, 0x0f3c,
+ 0x0f47, 0x0f4d, 0x0f51, 0x0f55, 0x0f5e, 0x0f6d, 0x0f77, 0x0f81,
+ 0x0f8a, 0x0f8e, 0x0f9b, 0x0fa1, 0x0fad, 0x0fb4, 0x0fbe, 0x0fc8,
+ // Entry 200 - 23F
+ 0x0fd3, 0x0fdf, 0x0fe6, 0x0fed, 0x0ff9, 0x0ffe, 0x1002, 0x100e,
+ 0x1014, 0x1018, 0x1020, 0x1028, 0x103b, 0x104a, 0x1050, 0x1059,
+ 0x105d, 0x1062, 0x1066, 0x106c, 0x1071, 0x1077, 0x107a, 0x1081,
+ 0x108a, 0x1091, 0x1098, 0x109e, 0x10a6, 0x10b4, 0x10bd, 0x10c3,
+ 0x10c9, 0x10d2, 0x10db, 0x10e7, 0x10ee, 0x10f4, 0x10fb, 0x1103,
+ 0x111e, 0x1124, 0x112d, 0x1134, 0x1137, 0x113a, 0x1144, 0x114b,
+ 0x1155, 0x1162, 0x1168, 0x1172, 0x1177, 0x117d, 0x1183, 0x1188,
+ 0x118d, 0x1195, 0x1197, 0x119d, 0x11a6, 0x11aa, 0x11ad, 0x11b5,
+ // Entry 240 - 27F
+ 0x11bc, 0x11c1, 0x11ca, 0x11d5, 0x11dc, 0x11e8, 0x11ee, 0x11f4,
+ 0x1211, 0x1215, 0x122b, 0x122f, 0x1247, 0x1247, 0x1257, 0x1269,
+ 0x127a, 0x128a, 0x1299, 0x12ab, 0x12c1, 0x12d1, 0x12e2, 0x12e2,
+ 0x12f1, 0x1301, 0x130d, 0x1313, 0x132a, 0x133f, 0x1347, 0x1354,
+ 0x1366, 0x137b,
+} // Size: 1244 bytes
+
+var paLangStr string = "" + // Size: 5353 bytes
+ "ਅਬਖਾਜ਼ੀਅਨਅਫ਼ਰੀਕੀਅਕਾਨਅਮਹਾਰਿਕਅਰਬੀਅਸਾਮੀਅਜ਼ਰਬਾਈਜਾਨੀਬਸ਼ਕੀਰਬੇਲਾਰੂਸੀਬੁਲਗਾਰੀਆਈਬੰ" +
+ "ਬਾਰਾਬੰਗਾਲੀਤਿੱਬਤੀਬਰੇਟਨਬੋਸਨੀਆਈਕੈਟਾਲਾਨਚੇਚਨਕੋਰਸੀਕਨਚੈਕਚੁਵਾਸ਼ਵੈਲਜ਼ਡੈਨਿਸ਼ਜਰਮਨ" +
+ "ਜ਼ੋਂਗਖਾਈਵਈਯੂਨਾਨੀਅੰਗਰੇਜ਼ੀਇਸਪੇਰਾਂਟੋਸਪੇਨੀਇਸਟੋਨੀਆਈਬਾਸਕਫ਼ਾਰਸੀਫਿਨਿਸ਼ਫ਼ਿਜ਼ੀਫ਼" +
+ "ੇਰੋਸੇਫਰਾਂਸੀਸੀਪੱਛਮੀ ਫ੍ਰਿਸੀਅਨਆਇਰੀਗੈਲਿਸ਼ਿਅਨਗੁਆਰਾਨੀਗੁਜਰਾਤੀਮੈਂਕਸਹੌਸਾਹਿਬਰੂਹਿ" +
+ "ੰਦੀਕ੍ਰੋਏਸ਼ਿਆਈਹੈਤੀਆਈਹੰਗਰੀਆਈਅਰਮੀਨੀਆਈਇੰਡੋਨੇਸ਼ੀਆਈਇਗਬੋਸਿਚੁਆਨ ਯੀਆਈਸਲੈਂਡਿਕਇਤਾ" +
+ "ਲਵੀਇੰਕਟੀਟੂਤਜਪਾਨੀਜਾਵਾਨੀਜ਼ਜਾਰਜੀਆਈਕਿਕੂਯੂਕਜ਼ਾਖ਼ਕਲਾਅੱਲੀਸੁਟਖਮੇਰਕੰਨੜਕੋਰੀਆਈਕਸ਼" +
+ "ਮੀਰੀਕੁਰਦਕੋਰਨਿਸ਼ਕਿਰਗੀਜ਼ਲਾਤੀਨੀਲਕਜ਼ਮਬਰਗਿਸ਼ਗਾਂਡਾਲਿੰਗਾਲਾਲਾਓਲਿਥੁਆਨੀਅਨਲੂਬਾ-ਕਾ" +
+ "ਟਾਂਗਾਲਾਟਵਿਅਨਮੇਲੇਗਸੀਮਾਉਰੀਮੈਕਡੋਨੀਆਈਮਲਿਆਲਮਮੰਗੋਲੀਅਨਮਰਾਠੀਮਲਯਮਾਲਟੀਜ਼ਬਰਮੀਉੱਤਰ" +
+ "ੀ ਨਡੇਬੇਲੇਨੇਪਾਲੀਡੱਚਨਾਰਵੇਜਿਆਈ ਨਿਓਨੌਰਸਕਨਾਰਵੇਜਿਆਈ ਬੋਕਮਲਓਰੋਮੋਉੜੀਆਪੰਜਾਬੀਪਲੀਪ" +
+ "ੋਲੈਂਡੀਪਸ਼ਤੋਪੁਰਤਗਾਲੀਕਕੇਸ਼ੁਆਰੋਮਾਂਸ਼ਰੁੰਡੀਰੋਮਾਨੀਆਈਰੂਸੀਕਿਨਿਆਰਵਾਂਡਾਸੰਸਕ੍ਰਿਤਸ" +
+ "ਿੰਧੀਉੱਤਰੀ ਸਾਮੀਸਾਂਗੋਸਿੰਹਾਲਾਸਲੋਵਾਕਸਲੋਵੇਨੀਆਈਸ਼ੋਨਾਸੋਮਾਲੀਅਲਬਾਨੀਆਈਸਰਬੀਆਈਸੂੰਡ" +
+ "ਾਨੀਸਵੀਡਿਸ਼ਸਵਾਹਿਲੀਤਮਿਲਤੇਲਗੂਤਾਜਿਕਥਾਈਤਿਗ੍ਰੀਨਿਆਤੁਰਕਮੇਨਟੌਂਗਨਤੁਰਕੀਤਤਾਰਉਇਗੁਰਯ" +
+ "ੂਕਰੇਨੀਆਈਉਰਦੂਉਜ਼ਬੇਕਵੀਅਤਨਾਮੀਵੋਲੋਫਖੋਸਾਯੋਰੂਬਾਚੀਨੀਜ਼ੁਲੂਅਚੀਨੀਅਕੋਲੀਅਗੇਮਪੁਰਾਣੀ" +
+ " ਅੰਗਰੇਜ਼ੀਮਾਪੁਚੇਅਸੂਬੇਮਬਾਬੇਨਾਪੱਛਮੀ ਬਲੂਚੀਭੋਜਪੁਰੀਬੋਡੋਚੀਗਾਮਾਰੀਚੇਰੋਕੀਕੇਂਦਰੀ ਕੁ" +
+ "ਰਦਿਸ਼ਟੇਟਾਜ਼ਾਰਮਾਲੋਅਰ ਸੋਰਬੀਅਨਡੂਆਲਾਜੋਲਾ-ਫੋਇਨੀਇੰਬੂਪੁਰਾਤਨ ਮਿਸਰੀਫਿਲੀਪਿਨੋਗਾਗੌ" +
+ "ਜ਼ਪੁਰਾਤਨ ਯੂਨਾਨੀਸਵਿਸ ਜਰਮਨਗੁਸੀਹਵਾਈਫਿਜੀ ਹਿੰਦੀਅੱਪਰ ਸੋਰਬੀਅਨਨਗੋਂਬਾਮਚਾਮੇਕਬਾਇਲ" +
+ "ਕੰਬਾਮਕੋਂਡਕਾਬੁਵੇਰਦਿਆਨੂਕੋਯਰਾ ਚੀਨੀਕਲੇਜਿਨਕੋਮੀ-ਪੇਰਮਿਆਕਕੋਂਕਣੀਸ਼ੰਬਾਲਾਬਫ਼ੀਆਲੰਗ" +
+ "ਾਈਲਕੋਟਾਉੱਤਰੀ ਲੁਰੀਲੂਓਲੂਈਆਮੈਥਲੀਮਸਾਈਮੇਰੂਮੋਰੀਸਿਅਨਮਖੋਵਾ-ਮਿੱਟੋਮੇਟਾਮਨੀਪੁਰੀਮੋਹ" +
+ "ਾਵਕਮੁੰਡੇਂਗਕਈ ਭਾਸ਼ਾਵਾਂਮੇਜ਼ੈਂਡਰਾਨੀਨਾਮਾਲੋ ਜਰਮਨਕਵਾਸਿਓਐਂਕੋਨੁਏਰਨਿਆਂਕੋਲੇਕੇਸ਼ਰ" +
+ "ਾਜਸਥਾਨੀਰੋਮਬੋਰਵਾਸਮਬੁਰੂਸੰਥਾਲੀਸੇਂਗੋਦੱਖਣੀ ਕੁਰਦਿਸ਼ਸੇਨਾਕੋਇਰਾਬੋਰੋ ਸੇਂਨੀਟਚੇਲਹਿ" +
+ "ਟਸ਼ਾਨਦੱਖਣੀ ਸਾਮੀਲਿਊਲ ਸਾਮੀਇਨਾਰੀ ਸਾਮੀਸਕੌਲਟ ਸਾਮੀਕਾਂਗੋ ਸਵਾਹਿਲੀਟੇਸੋਤਾਸਾਵਿਕਮੱ" +
+ "ਧ ਐਟਲਸ ਤਮਾਜ਼ਿਤਅਗਿਆਤ ਭਾਸ਼ਾਵਾਈਵੂੰਜੋਵਾਲਪੁਰੀਸੋਗਾਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕਕੋਈ " +
+ "ਭਾਸ਼ਾਈ ਸਮੱਗਰੀ ਨਹੀਂਆਧੁਨਿਕ ਮਿਆਰੀ ਅਰਬੀਆਸਟਰੀਆਈ ਜਰਮਨਸਵਿਸ ਹਾਈ ਜਰਮਨਆਸਟ੍ਰੇਲੀਆਈ" +
+ " ਅੰਗਰੇਜ਼ੀਕੈਨੇਡੀਅਨ ਅੰਗਰੇਜ਼ੀਬਰਤਾਨਵੀ ਅੰਗਰੇਜ਼ੀਅਮਰੀਕੀ ਅੰਗਰੇਜ਼ੀਲਾਤੀਨੀ ਅਮਰੀਕੀ ਸ" +
+ "ਪੇਨੀਯੂਰਪੀ ਸਪੇਨੀਮੈਕਸੀਕਨ ਸਪੈਨਿਸ਼ਕੈਨੇਡੀਅਨ ਫਰਾਂਸੀਸੀਸਵਿਸ ਫਰਾਂਸੀਸੀਲੋ ਸੈਕਸਨਫਲ" +
+ "ੈਮਿਸ਼ਬ੍ਰਾਜ਼ੀਲੀਆਈ ਪੁਰਤਗਾਲੀਯੂਰਪੀ ਪੁਰਤਗਾਲੀਮੋਲਡਾਵੀਆਈਸਰਲ ਚੀਨੀਰਵਾਇਤੀ ਚੀਨੀ"
+
+var paLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x001b, 0x001b, 0x0030, 0x003c, 0x0051, 0x0051,
+ 0x005d, 0x006c, 0x006c, 0x006c, 0x008d, 0x009f, 0x00b7, 0x00d2,
+ 0x00d2, 0x00e4, 0x00f6, 0x0108, 0x0117, 0x012c, 0x0141, 0x014d,
+ 0x014d, 0x0162, 0x0162, 0x016b, 0x016b, 0x017d, 0x018c, 0x019e,
+ 0x01aa, 0x01aa, 0x01bf, 0x01c8, 0x01da, 0x01f2, 0x020d, 0x021c,
+ 0x0234, 0x0240, 0x0252, 0x0252, 0x0264, 0x0276, 0x028b, 0x02a3,
+ 0x02cb, 0x02d7, 0x02d7, 0x02f2, 0x0307, 0x031c, 0x032b, 0x0337,
+ 0x0346, 0x0355, 0x0355, 0x0373, 0x0385, 0x039a, 0x03b2, 0x03b2,
+ // Entry 40 - 7F
+ 0x03b2, 0x03d3, 0x03d3, 0x03df, 0x03f8, 0x03f8, 0x03f8, 0x0413,
+ 0x0425, 0x043d, 0x044c, 0x0464, 0x0479, 0x0479, 0x048b, 0x048b,
+ 0x049d, 0x04bb, 0x04c7, 0x04d3, 0x04e5, 0x04e5, 0x04fa, 0x0506,
+ 0x0506, 0x051b, 0x0530, 0x0542, 0x0563, 0x0572, 0x0572, 0x0587,
+ 0x0590, 0x05ab, 0x05cd, 0x05e2, 0x05f7, 0x05f7, 0x0606, 0x0621,
+ 0x0633, 0x064b, 0x065a, 0x0663, 0x0678, 0x0684, 0x0684, 0x06a9,
+ 0x06bb, 0x06bb, 0x06c4, 0x06f8, 0x0723, 0x0723, 0x0723, 0x0723,
+ 0x0723, 0x0723, 0x0732, 0x073e, 0x073e, 0x0750, 0x0759, 0x076e,
+ // Entry 80 - BF
+ 0x077d, 0x0795, 0x07aa, 0x07bf, 0x07ce, 0x07e6, 0x07f2, 0x0813,
+ 0x082b, 0x082b, 0x083a, 0x0856, 0x0865, 0x087a, 0x088c, 0x08a7,
+ 0x08a7, 0x08b6, 0x08c8, 0x08e0, 0x08f2, 0x08f2, 0x08f2, 0x0907,
+ 0x091c, 0x0931, 0x093d, 0x094c, 0x095b, 0x0964, 0x097f, 0x0994,
+ 0x0994, 0x09a3, 0x09b2, 0x09b2, 0x09be, 0x09be, 0x09cd, 0x09e8,
+ 0x09f4, 0x0a06, 0x0a06, 0x0a1e, 0x0a1e, 0x0a1e, 0x0a2d, 0x0a39,
+ 0x0a39, 0x0a4b, 0x0a4b, 0x0a57, 0x0a66, 0x0a75, 0x0a84, 0x0a84,
+ 0x0a84, 0x0a84, 0x0a84, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a90,
+ // Entry C0 - FF
+ 0x0a90, 0x0a90, 0x0abb, 0x0abb, 0x0abb, 0x0acd, 0x0acd, 0x0acd,
+ 0x0acd, 0x0acd, 0x0acd, 0x0acd, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6,
+ 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6, 0x0ad6,
+ 0x0ad6, 0x0ae5, 0x0ae5, 0x0af1, 0x0af1, 0x0af1, 0x0b10, 0x0b25,
+ 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25,
+ 0x0b25, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31,
+ 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b3d, 0x0b3d, 0x0b3d,
+ 0x0b3d, 0x0b49, 0x0b49, 0x0b49, 0x0b49, 0x0b5b, 0x0b5b, 0x0b83,
+ // Entry 100 - 13F
+ 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b83, 0x0b8f, 0x0b8f,
+ 0x0b8f, 0x0b8f, 0x0b8f, 0x0ba1, 0x0ba1, 0x0bc3, 0x0bc3, 0x0bd2,
+ 0x0bd2, 0x0bee, 0x0bee, 0x0bee, 0x0bfa, 0x0bfa, 0x0bfa, 0x0c1c,
+ 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c1c, 0x0c34,
+ 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34, 0x0c34,
+ 0x0c34, 0x0c34, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46,
+ 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46, 0x0c46,
+ 0x0c46, 0x0c6b, 0x0c84, 0x0c84, 0x0c84, 0x0c90, 0x0c90, 0x0c90,
+ // Entry 140 - 17F
+ 0x0c90, 0x0c9c, 0x0cb8, 0x0cb8, 0x0cb8, 0x0cb8, 0x0cda, 0x0cda,
+ 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda,
+ 0x0cec, 0x0cfb, 0x0cfb, 0x0cfb, 0x0cfb, 0x0cfb, 0x0d0a, 0x0d0a,
+ 0x0d0a, 0x0d16, 0x0d16, 0x0d16, 0x0d16, 0x0d16, 0x0d25, 0x0d49,
+ 0x0d49, 0x0d49, 0x0d49, 0x0d49, 0x0d49, 0x0d65, 0x0d65, 0x0d65,
+ 0x0d65, 0x0d77, 0x0d77, 0x0d99, 0x0dab, 0x0dab, 0x0dab, 0x0dab,
+ 0x0dab, 0x0dab, 0x0dab, 0x0dab, 0x0dc0, 0x0dcf, 0x0dcf, 0x0dcf,
+ 0x0dcf, 0x0dcf, 0x0dde, 0x0dde, 0x0dde, 0x0dde, 0x0dde, 0x0dde,
+ // Entry 180 - 1BF
+ 0x0dde, 0x0ded, 0x0ded, 0x0ded, 0x0ded, 0x0e09, 0x0e09, 0x0e09,
+ 0x0e09, 0x0e09, 0x0e12, 0x0e12, 0x0e1e, 0x0e1e, 0x0e1e, 0x0e1e,
+ 0x0e1e, 0x0e1e, 0x0e2d, 0x0e2d, 0x0e2d, 0x0e39, 0x0e39, 0x0e39,
+ 0x0e39, 0x0e39, 0x0e45, 0x0e5d, 0x0e5d, 0x0e7c, 0x0e88, 0x0e88,
+ 0x0e88, 0x0e88, 0x0e9d, 0x0eaf, 0x0eaf, 0x0eaf, 0x0ec4, 0x0ee3,
+ 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0ee3, 0x0f04, 0x0f04,
+ 0x0f04, 0x0f10, 0x0f23, 0x0f23, 0x0f23, 0x0f23, 0x0f23, 0x0f35,
+ 0x0f35, 0x0f35, 0x0f35, 0x0f35, 0x0f41, 0x0f41, 0x0f4d, 0x0f4d,
+ // Entry 1C0 - 1FF
+ 0x0f4d, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65,
+ 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65,
+ 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f65, 0x0f71, 0x0f71,
+ 0x0f89, 0x0f89, 0x0f89, 0x0f89, 0x0f89, 0x0f98, 0x0f98, 0x0f98,
+ 0x0f98, 0x0f98, 0x0f98, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fa1, 0x0fb3,
+ 0x0fb3, 0x0fc5, 0x0fc5, 0x0fc5, 0x0fd4, 0x0fd4, 0x0fd4, 0x0fd4,
+ 0x0ff9, 0x0ff9, 0x1005, 0x1005, 0x1005, 0x1030, 0x1030, 0x1030,
+ 0x1045, 0x1051, 0x1051, 0x1051, 0x1051, 0x1051, 0x106d, 0x1086,
+ // Entry 200 - 23F
+ 0x10a2, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be, 0x10be,
+ 0x10be, 0x10be, 0x10be, 0x10be, 0x10e3, 0x10e3, 0x10e3, 0x10e3,
+ 0x10e3, 0x10e3, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef,
+ 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef,
+ 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x10ef, 0x1104, 0x1104,
+ 0x1130, 0x1130, 0x1130, 0x1130, 0x114f, 0x1158, 0x1158, 0x1158,
+ 0x1158, 0x1158, 0x1158, 0x1158, 0x1167, 0x1167, 0x1167, 0x1167,
+ 0x1167, 0x117c, 0x117c, 0x117c, 0x117c, 0x1188, 0x1188, 0x1188,
+ // Entry 240 - 27F
+ 0x1188, 0x1188, 0x1188, 0x1188, 0x1188, 0x1188, 0x1188, 0x1188,
+ 0x11c6, 0x11c6, 0x1202, 0x1202, 0x1231, 0x1231, 0x1253, 0x1276,
+ 0x12ad, 0x12de, 0x130c, 0x1337, 0x136c, 0x138b, 0x13b6, 0x13b6,
+ 0x13e7, 0x140c, 0x1422, 0x1437, 0x1471, 0x1499, 0x14b4, 0x14b4,
+ 0x14ca, 0x14e9,
+} // Size: 1244 bytes
+
+var plLangStr string = "" + // Size: 5558 bytes
+ "afarabchaskiawestyjskiafrikaansakanamharskiaragońskiarabskiasamskiawarsk" +
+ "iajmaraazerskibaszkirskibiałoruskibułgarskibislamabambarabengalskitybeta" +
+ "ńskibretońskibośniackikatalońskiczeczeńskichamorrokorsykańskikriczeskis" +
+ "taro-cerkiewno-słowiańskiczuwaskiwalijskiduńskiniemieckimalediwskidzongk" +
+ "haewegreckiangielskiesperantohiszpańskiestońskibaskijskiperskifulanifińs" +
+ "kifidżijskifarerskifrancuskizachodniofryzyjskiirlandzkiszkocki gaelickig" +
+ "alicyjskiguaranigudźarackimanxhausahebrajskihindihiri motuchorwackihaita" +
+ "ńskiwęgierskiormiańskihererointerlinguaindonezyjskiinterlingueigbosyczu" +
+ "ańskiinupiakidoislandzkiwłoskiinuktitutjapońskijawajskigruzińskikongokik" +
+ "ujukwanyamakazachskigrenlandzkikhmerskikannadakoreańskikanurikaszmirskik" +
+ "urdyjskikomikornijskikirgiskiłacińskiluksemburskigandalimburgijskilingal" +
+ "alaotańskilitewskiluba-katangałotewskimalgaskimarshallmaoryjskimacedońsk" +
+ "imalajalammongolskimarathimalajskimaltańskibirmańskinaurundebele północn" +
+ "ynepalskindonganiderlandzkinorweski (nynorsk)norweski (bokmål)ndebele po" +
+ "łudniowynawahonjandżaprowansalskiodżibwaoromskiorijaosetyjskipendżabski" +
+ "palijskipolskipasztoportugalskikeczuaretoromańskirundirumuńskirosyjskiki" +
+ "nya-ruandasanskrytsardyńskisindhilapoński północnysangosyngaleskisłowack" +
+ "isłoweńskisamoańskiszonasomalijskialbańskiserbskisiswatisotho południowy" +
+ "sundajskiszwedzkisuahilitamilskitelugutadżyckitajskitigriniaturkmeńskise" +
+ "tswanatongatureckitsongatatarskitahitańskiujgurskiukraińskiurduuzbeckive" +
+ "ndawietnamskivolapukwalońskiwolofkhosajidyszjorubaczuangchińskizuluaceha" +
+ "czoliadangmeadygejskitunezyjski arabskiafrihiliaghemajnuakadyjskialabama" +
+ "aleuckialbański gegijskipołudniowoałtajskistaroangielskiangikaaramejskia" +
+ "raukańskiaraonaarapahoalgierski arabskiarawakmarokański arabskiegipski a" +
+ "rabskiasuamerykański język migowyasturyjskikotavaawadhibeludżibalijskiba" +
+ "warskibasabamumbatak tobaghomalabedżabembabetawibenabafutbadagabeludżi p" +
+ "ółnocnybhodźpuribikolbinibanjarkomsiksikabisznuprija-manipuribachtiarsk" +
+ "ibradźbrahuibodoakoseburiackibugińskibulublinmedumbakaddokaribikajugaats" +
+ "amcebuanochigaczibczaczagatajskitrukmaryjskiżargon Chinookchoctawchipewy" +
+ "anczirokeskijęzyk Czejenówsoranikoptyjskicapiznonkrymski tureckikaszubsk" +
+ "idakotadargwijskitaitadelawareslavedogribdinkadżermadogridolnołużyckidus" +
+ "un centralnydualaśredniowieczny niderlandzkidioladyuladazagaembuefikemil" +
+ "ijskistarożytny egipskiekajukelamickiśrednioangielskiyupik środkowosyber" +
+ "yjskiewondoestremadurskifangfilipinomeänkielifoncajunśredniofrancuskista" +
+ "rofrancuskifranko-prowansalskipółnocnofryzyjskifryzyjski wschodnifriulij" +
+ "skigagagauskigangayogbayazaratusztriański darigyyzgilbertańskigiliańskiś" +
+ "rednio-wysoko-niemieckistaro-wysoko-niemieckikonkani (Goa)gondigorontalo" +
+ "gockigrebostarogreckiszwajcarski niemieckiwayúufrafragusiigwichʼinhaidah" +
+ "akkahawajskihindi fidżyjskiehiligajnonhetyckihmongijskigórnołużyckixiang" +
+ "hupaibanagibibioilokanoinguskiingryjskijamajskilojbanngombemachamejudeop" +
+ "erskijudeoarabskijutlandzkikarakałpackikabylskikaczinjjukambakawikabardy" +
+ "jskikanembutyapmakondekreolski Wysp Zielonego Przylądkakenyangkorokainga" +
+ "ngkhasichotańskikoyra chinikhowarkirmandżkikakokalenjinkimbundukomi-perm" +
+ "iackikonkanikosraekpellekaraczajsko-bałkarskikriokinarayakarelskikurukhs" +
+ "ambalabafiagwara kolońskakumyckikutenailadyńskilangilahndalambalezgijski" +
+ "Lingua Franca Novaliguryjskiliwskilakotalombardzkimongoloziluryjski półn" +
+ "ocnyłatgalskiluba-lulualuisenolundaluolushailuhyachiński klasycznylazyjs" +
+ "kimadurajskimafamagahimaithilimakasarmandingomasajskimabamokshamandarmen" +
+ "demerukreolski Mauritiusaśrednioirlandzkimakuametamicmacminangkabumanchu" +
+ "manipuryjskimohawkmossizachodniomaryjskimundangwiele językówcreekmirande" +
+ "semarwarimentawaimyeneerzyamazanderańskiminnańskineapolitańskinamadolnon" +
+ "iemieckinewarskiniasniueaongumbangiemboonnogajskistaronordyjskinovialn’k" +
+ "osotho północnynuernewarski klasycznyniamwezinyankolenyoronzemaosageosma" +
+ "ńsko-tureckipangasinopahlavipampangopapiamentopalaupikardyjskipensylwań" +
+ "skiplautdietschstaroperskipalatynackifenickipiemonckipontyjskiponpejskip" +
+ "ruskistaroprowansalskikiczechimborazo górski keczuaradźasthanirapanuirar" +
+ "otongaromagnoltarifitrombocygańskirotumańskirusińskirovianaarumuńskirwas" +
+ "andawejakuckisamarytański aramejskisamburusasaksantalisaurasztryjskingam" +
+ "baysangusycylijskiszkockisassarskipołudniowokurdyjskisenekasenaseriselku" +
+ "pskikoyraboro sennistaroirlandzkiżmudzkitashelhiytshanarabski (Czad)sida" +
+ "modolnośląskiselayarlapoński południowylapoński Lulelapoński Inarilapońs" +
+ "ki Skoltsoninkesogdyjskisranan tongoserersahofryzyjski saterlandzkisukum" +
+ "asususumeryjskikomoryjskikongijski suahilisyriackisyryjskiśląskitulutemn" +
+ "eatesoterenotetumtigretiwtokelaucachurskiklingońskitlingittałyskitamasze" +
+ "ktonga (Niasa)tok pisinturoyotarokocakońskitsimshiantackitumbukatuvaluta" +
+ "sawaqtuwińskicentralnomarokański tamazightudmurckiugaryckiumbundujęzyk r" +
+ "dzennywaiweneckiwepskizachodnioflamandzkimeński frankońskiwotiackivõrovu" +
+ "njowalserwalamowarajwashoWarlpiriwukałmuckimegrelskisogayaojapskiyangben" +
+ "yembanhengatukantońskizapoteckiblisszelandzkizenagastandardowy marokańsk" +
+ "i tamazightzunibrak treści o charakterze językowymzazakiwspółczesny arab" +
+ "skiaustriacki niemieckiwysokoniemiecki (Szwajcaria)australijski angielsk" +
+ "ikanadyjski angielskibrytyjski angielskiamerykański angielskiamerykański" +
+ " hiszpańskieuropejski hiszpańskimeksykański hiszpańskikanadyjski francus" +
+ "kiszwajcarski francuskiflamandzkibrazylijski portugalskieuropejski portu" +
+ "galskimołdawskiserbsko-chorwackichiński (uproszczony)chiński (tradycyjny" +
+ ")"
+
+var plLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000c, 0x0016, 0x001f, 0x0023, 0x002b, 0x0035,
+ 0x003c, 0x0043, 0x004a, 0x0050, 0x0057, 0x0061, 0x006c, 0x0076,
+ 0x007d, 0x0084, 0x008d, 0x0098, 0x00a2, 0x00ac, 0x00b7, 0x00c2,
+ 0x00ca, 0x00d6, 0x00d9, 0x00df, 0x00fb, 0x0103, 0x010b, 0x0112,
+ 0x011b, 0x0125, 0x012d, 0x0130, 0x0136, 0x013f, 0x0148, 0x0153,
+ 0x015c, 0x0165, 0x016b, 0x0171, 0x0178, 0x0182, 0x018a, 0x0193,
+ 0x01a5, 0x01ae, 0x01be, 0x01c8, 0x01cf, 0x01da, 0x01de, 0x01e3,
+ 0x01ec, 0x01f1, 0x01fa, 0x0203, 0x020d, 0x0217, 0x0221, 0x0227,
+ // Entry 40 - 7F
+ 0x0232, 0x023e, 0x0249, 0x024d, 0x0258, 0x025f, 0x0262, 0x026b,
+ 0x0272, 0x027b, 0x0284, 0x028c, 0x0296, 0x029b, 0x02a1, 0x02a9,
+ 0x02b2, 0x02bd, 0x02c5, 0x02cc, 0x02d6, 0x02dc, 0x02e6, 0x02ef,
+ 0x02f3, 0x02fc, 0x0304, 0x030e, 0x031a, 0x031f, 0x032b, 0x0332,
+ 0x033c, 0x0344, 0x0350, 0x0359, 0x0361, 0x0369, 0x0372, 0x037d,
+ 0x0386, 0x038f, 0x0396, 0x039e, 0x03a8, 0x03b2, 0x03b7, 0x03c9,
+ 0x03d1, 0x03d7, 0x03e3, 0x03f5, 0x0407, 0x041a, 0x0420, 0x0428,
+ 0x0434, 0x043c, 0x0443, 0x0448, 0x0451, 0x045c, 0x0464, 0x046a,
+ // Entry 80 - BF
+ 0x0470, 0x047b, 0x0481, 0x048e, 0x0493, 0x049c, 0x04a4, 0x04b0,
+ 0x04b8, 0x04c2, 0x04c8, 0x04dc, 0x04e1, 0x04eb, 0x04f4, 0x04ff,
+ 0x0509, 0x050e, 0x0518, 0x0521, 0x0528, 0x052f, 0x0540, 0x0549,
+ 0x0551, 0x0558, 0x0560, 0x0566, 0x056f, 0x0575, 0x057d, 0x0588,
+ 0x0590, 0x0595, 0x059c, 0x05a2, 0x05aa, 0x05b5, 0x05bd, 0x05c7,
+ 0x05cb, 0x05d2, 0x05d7, 0x05e1, 0x05e8, 0x05f1, 0x05f6, 0x05fb,
+ 0x0601, 0x0607, 0x060d, 0x0615, 0x0619, 0x061d, 0x0623, 0x062a,
+ 0x0633, 0x0645, 0x064d, 0x0652, 0x0656, 0x065f, 0x0666, 0x066d,
+ // Entry C0 - FF
+ 0x067f, 0x0693, 0x06a1, 0x06a7, 0x06b0, 0x06bb, 0x06c1, 0x06c8,
+ 0x06d9, 0x06df, 0x06f2, 0x0701, 0x0704, 0x071e, 0x0728, 0x072e,
+ 0x0734, 0x073c, 0x0744, 0x074c, 0x0750, 0x0755, 0x075f, 0x0766,
+ 0x076c, 0x0771, 0x0777, 0x077b, 0x0780, 0x0786, 0x0799, 0x07a3,
+ 0x07a8, 0x07ac, 0x07b2, 0x07b5, 0x07bc, 0x07d0, 0x07db, 0x07e1,
+ 0x07e7, 0x07eb, 0x07f0, 0x07f8, 0x0801, 0x0805, 0x0809, 0x0810,
+ 0x0815, 0x081b, 0x0821, 0x0826, 0x082d, 0x0832, 0x0839, 0x0844,
+ 0x0848, 0x0850, 0x085f, 0x0866, 0x086f, 0x0879, 0x0889, 0x088f,
+ // Entry 100 - 13F
+ 0x0898, 0x08a0, 0x08af, 0x08b8, 0x08be, 0x08c8, 0x08cd, 0x08d5,
+ 0x08da, 0x08e0, 0x08e5, 0x08ec, 0x08f1, 0x08ff, 0x090e, 0x0913,
+ 0x092f, 0x0934, 0x0939, 0x093f, 0x0943, 0x0947, 0x0950, 0x0963,
+ 0x0969, 0x0971, 0x0982, 0x099b, 0x09a1, 0x09ae, 0x09b2, 0x09ba,
+ 0x09c4, 0x09c7, 0x09cc, 0x09dd, 0x09eb, 0x09fe, 0x0a11, 0x0a23,
+ 0x0a2d, 0x0a2f, 0x0a37, 0x0a3a, 0x0a3e, 0x0a43, 0x0a59, 0x0a5d,
+ 0x0a6a, 0x0a74, 0x0a8d, 0x0aa3, 0x0ab0, 0x0ab5, 0x0abe, 0x0ac3,
+ 0x0ac8, 0x0ad3, 0x0ae8, 0x0aee, 0x0af4, 0x0af9, 0x0b02, 0x0b07,
+ // Entry 140 - 17F
+ 0x0b0c, 0x0b14, 0x0b25, 0x0b2f, 0x0b36, 0x0b40, 0x0b4f, 0x0b54,
+ 0x0b58, 0x0b5e, 0x0b64, 0x0b6b, 0x0b72, 0x0b7b, 0x0b83, 0x0b89,
+ 0x0b8f, 0x0b96, 0x0ba1, 0x0bad, 0x0bb7, 0x0bc4, 0x0bcc, 0x0bd2,
+ 0x0bd5, 0x0bda, 0x0bde, 0x0be9, 0x0bf0, 0x0bf4, 0x0bfb, 0x0c1d,
+ 0x0c24, 0x0c28, 0x0c30, 0x0c35, 0x0c3f, 0x0c4a, 0x0c50, 0x0c5b,
+ 0x0c5f, 0x0c67, 0x0c6f, 0x0c7d, 0x0c84, 0x0c8a, 0x0c90, 0x0ca6,
+ 0x0caa, 0x0cb2, 0x0cba, 0x0cc0, 0x0cc7, 0x0ccc, 0x0cdb, 0x0ce2,
+ 0x0ce9, 0x0cf2, 0x0cf7, 0x0cfd, 0x0d02, 0x0d0b, 0x0d1d, 0x0d27,
+ // Entry 180 - 1BF
+ 0x0d2d, 0x0d33, 0x0d3d, 0x0d42, 0x0d46, 0x0d59, 0x0d63, 0x0d6d,
+ 0x0d74, 0x0d79, 0x0d7c, 0x0d82, 0x0d87, 0x0d99, 0x0da1, 0x0dab,
+ 0x0daf, 0x0db5, 0x0dbd, 0x0dc4, 0x0dcc, 0x0dd4, 0x0dd8, 0x0dde,
+ 0x0de4, 0x0de9, 0x0ded, 0x0e00, 0x0e11, 0x0e16, 0x0e1a, 0x0e20,
+ 0x0e2a, 0x0e30, 0x0e3c, 0x0e42, 0x0e47, 0x0e58, 0x0e5f, 0x0e6e,
+ 0x0e73, 0x0e7c, 0x0e83, 0x0e8b, 0x0e90, 0x0e95, 0x0ea3, 0x0ead,
+ 0x0ebb, 0x0ebf, 0x0ecd, 0x0ed5, 0x0ed9, 0x0edd, 0x0edf, 0x0ee5,
+ 0x0eee, 0x0ef6, 0x0f04, 0x0f0a, 0x0f10, 0x0f20, 0x0f24, 0x0f36,
+ // Entry 1C0 - 1FF
+ 0x0f3e, 0x0f46, 0x0f4b, 0x0f50, 0x0f55, 0x0f66, 0x0f6f, 0x0f76,
+ 0x0f7e, 0x0f88, 0x0f8d, 0x0f98, 0x0fa5, 0x0fb1, 0x0fbc, 0x0fc7,
+ 0x0fce, 0x0fd7, 0x0fe0, 0x0fe9, 0x0fef, 0x1000, 0x1005, 0x101e,
+ 0x102a, 0x1031, 0x103a, 0x1042, 0x1049, 0x104e, 0x1057, 0x1062,
+ 0x106b, 0x1072, 0x107c, 0x107f, 0x1086, 0x108d, 0x10a4, 0x10ab,
+ 0x10b0, 0x10b7, 0x10c5, 0x10cc, 0x10d1, 0x10db, 0x10e2, 0x10eb,
+ 0x10ff, 0x1105, 0x1109, 0x110d, 0x1116, 0x1125, 0x1133, 0x113b,
+ 0x1145, 0x1149, 0x1157, 0x115d, 0x116a, 0x1171, 0x1186, 0x1194,
+ // Entry 200 - 23F
+ 0x11a3, 0x11b2, 0x11b9, 0x11c2, 0x11ce, 0x11d3, 0x11d7, 0x11ed,
+ 0x11f3, 0x11f7, 0x1201, 0x120b, 0x121c, 0x1224, 0x122c, 0x1234,
+ 0x1238, 0x123d, 0x1242, 0x1248, 0x124d, 0x1252, 0x1255, 0x125c,
+ 0x1265, 0x1270, 0x1277, 0x127f, 0x1287, 0x1294, 0x129d, 0x12a3,
+ 0x12a9, 0x12b2, 0x12bb, 0x12c0, 0x12c7, 0x12cd, 0x12d4, 0x12dd,
+ 0x12fb, 0x1303, 0x130b, 0x1312, 0x1320, 0x1323, 0x132a, 0x1330,
+ 0x1343, 0x1356, 0x135e, 0x1363, 0x1368, 0x136e, 0x1374, 0x1379,
+ 0x137e, 0x1386, 0x1388, 0x1391, 0x139a, 0x139e, 0x13a1, 0x13a7,
+ // Entry 240 - 27F
+ 0x13ae, 0x13b3, 0x13bb, 0x13c5, 0x13ce, 0x13d3, 0x13dc, 0x13e2,
+ 0x1403, 0x1407, 0x142c, 0x1432, 0x1447, 0x1447, 0x145b, 0x1477,
+ 0x148d, 0x14a1, 0x14b4, 0x14ca, 0x14e2, 0x14f8, 0x1510, 0x1510,
+ 0x1524, 0x1539, 0x1539, 0x1543, 0x155a, 0x1570, 0x157a, 0x158b,
+ 0x15a1, 0x15b6,
+} // Size: 1244 bytes
+
+var ptLangStr string = "" + // Size: 4263 bytes
+ "afarabcázioavésticoafricânerakanamáricoaragonêsárabeassamêsavaricaimaraa" +
+ "zerbaijanobashkirbielorrussobúlgarobislamábambarabengalitibetanobretãobó" +
+ "sniocatalãochechenochamorrocórsicocreetchecoeslavo eclesiásticotchuvache" +
+ "galêsdinamarquêsalemãodivehidzongaevegregoinglêsesperantoespanholestonia" +
+ "nobascopersafulafinlandêsfijianoferoêsfrancêsfrísio ocidentalirlandêsgaé" +
+ "lico escocêsgalegoguaraniguzeratemanxhauçáhebraicohíndihiri motucroataha" +
+ "itianohúngaroarmêniohererointerlínguaindonésiointerlingueibosichuan yiin" +
+ "upiaqueidoislandêsitalianoinuktitutjaponêsjavanêsgeorgianocongolêsquicui" +
+ "okuanyamacazaquegroenlandêskhmercanarêscoreanocanúricaxemiracurdokomicór" +
+ "nicoquirguizlatimluxemburguêslugandalimburguêslingalalaosianolituanoluba" +
+ "-catangaletãomalgaxemarshalêsmaorimacedôniomalaialamongolmaratamalaiomal" +
+ "têsbirmanêsnauruanondebele do nortenepalidongoholandêsnynorsk norueguêsb" +
+ "okmål norueguêsndebele do sulnavajonianjaoccitânicoojibwaoromooriyaosset" +
+ "icpanjabipálipolonêspashtoportuguêsquíchuaromancherundiromenorussoquinia" +
+ "ruandasânscritosardosindisami do nortesangocingalêseslovacoeslovenosamoa" +
+ "noshonasomalialbanêssérvioswatisoto do sulsundanêssuecosuaílitâmiltelugu" +
+ "tajiquetailandêstigríniaturcomenotswanatonganêsturcotsongatatartaitianou" +
+ "igurucranianourduusbequevendavietnamitavolapuquevalãouólofexosaiídicheio" +
+ "rubazhuangchinêszuluachémacoliadangmeadigueafrihiliaghemainuacadianoaleú" +
+ "tealtai do sulinglês arcaicoangikaaramaicomapudungunarapahoarauaquiasuas" +
+ "turianoawadhibalúchibalinêsbasabamumghomala’bejabembabenabafutbalúchi oc" +
+ "identalbhojpuribikolbinikomsiksikabrajbodoakooseburiatbuginêsbulublinmed" +
+ "umbacaddocaribecayugaatsamcebuanochigachibchachagataichuukesemarichinook" +
+ " jargonchoctawchipewyancherokeecheienesorâni curdocoptaturco da Crimeiak" +
+ "ashubiandacotadargwataitadelawareslavedogribdinkazarmadogrisorábio baixo" +
+ "dualaholandês médiojola-fonyidiúladazagaembuefiqueegípcio arcaicoekajuke" +
+ "lamiteinglês médioewondofanguefilipinofomfrancês médiofrancês arcaicofrí" +
+ "sio setentrionalfrisão orientalfriulanogagagauzgayogbaiageezgilbertêsale" +
+ "mão médio-altoalemão arcaico altogondigorontalogóticogrebogrego arcaicoa" +
+ "lemão suíçogusiigwichʼinhaidahavaianohiligaynonhititahmongsorábio altohu" +
+ "paibanibibioilocanoinguchelojbannguembamachamejudaico-persajudaico-arábi" +
+ "cokara-kalpakkabylekachinjjukambakawikabardianokanembutyapmacondekabuver" +
+ "dianukorokhasikhotanêskoyra chiinikakokalenjinquimbundokomi-permyakconca" +
+ "nikosraeankpellekarachay-balkaridioma caréliokurukhshambalabafiakölschku" +
+ "mykkutenailadinolangilahndalambalezghianlacotamongoloziluri setentrional" +
+ "luba-lulualuisenolundaluolushailuyiamadurêsmafamagahimaithilimakasarmand" +
+ "ingamassaimabamocsamandarmendemerumorisyenirlandês médiomacuameta’miquem" +
+ "aqueminangkabaumanchumanipurimoicanomossimundangidiomas múltiploscreekmi" +
+ "randêsmarwarimyeneerzyamazandaraninapolitanonamabaixo alemãonewariniasni" +
+ "ueanokwasiongiemboonnogainórdico arcaicon’kosoto setentrionalnuernewari " +
+ "clássiconyamwezinyankolenyoronzimaosageturco otomanopangasinãpálavipampa" +
+ "ngapapiamentopalauanopersa arcaicofeníciopohnpeianprovençal arcaicoquich" +
+ "érajastanirapanuirarotonganoromboromaniaromenorwasandaweiacutoaramaico " +
+ "samaritanosamburusasaksantalingambaysangusicilianoescocêscurdo meridiona" +
+ "lsenecasenaselkupkoyraboro senniirlandês arcaicotachelhitshanárabe chadi" +
+ "anosidamosami do sulsami de Lulesami de Inarisami de Skoltsoninquêsogdia" +
+ "noidioma surinamêssereresahosukumasossosumériocomorianosuaíli do Congosi" +
+ "ríaco clássicosiríacotimnetesoterenotétumtigrétivtoquelauanoklingontling" +
+ "uitetamaxequetonganês de Nyasatok pisintarokotsimshiantumbukatuvaluanota" +
+ "sawaqtuvinianotamazight do Atlas Centraludmurtugaríticoumbunduidioma des" +
+ "conhecidovaivoticvunjowalserwalamowaraywashowarlpirikalmyklusogayaoyapes" +
+ "eyangbenyembacantonêszapotecasímbolos bliszenagatamazight marroquino pad" +
+ "rãozunhisem conteúdo linguísticozazaárabe modernoazeri sulalemão austría" +
+ "coalto alemão suíçoinglês australianoinglês canadenseinglês britânicoing" +
+ "lês americanoespanhol latino-americanoespanhol europeuespanhol mexicanof" +
+ "rancês canadensefrancês suíçobaixo-saxãoflamengoportuguês do Brasilportu" +
+ "guês europeumoldávioservo-croatachinês simplificadochinês tradicional"
+
+var ptLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000c, 0x0015, 0x001f, 0x0023, 0x002b, 0x0034,
+ 0x003a, 0x0042, 0x0048, 0x004e, 0x0059, 0x0060, 0x006b, 0x0073,
+ 0x007b, 0x0082, 0x0089, 0x0091, 0x0098, 0x009f, 0x00a7, 0x00af,
+ 0x00b7, 0x00bf, 0x00c3, 0x00c9, 0x00dd, 0x00e6, 0x00ec, 0x00f8,
+ 0x00ff, 0x0105, 0x010b, 0x010e, 0x0113, 0x011a, 0x0123, 0x012b,
+ 0x0134, 0x0139, 0x013e, 0x0142, 0x014c, 0x0153, 0x015a, 0x0162,
+ 0x0173, 0x017c, 0x018d, 0x0193, 0x019a, 0x01a2, 0x01a6, 0x01ad,
+ 0x01b5, 0x01bb, 0x01c4, 0x01ca, 0x01d2, 0x01da, 0x01e2, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f4, 0x01fe, 0x0209, 0x020c, 0x0216, 0x021f, 0x0222, 0x022b,
+ 0x0233, 0x023c, 0x0244, 0x024c, 0x0255, 0x025e, 0x0265, 0x026d,
+ 0x0274, 0x0280, 0x0285, 0x028d, 0x0294, 0x029b, 0x02a3, 0x02a8,
+ 0x02ac, 0x02b4, 0x02bc, 0x02c1, 0x02ce, 0x02d5, 0x02e0, 0x02e7,
+ 0x02ef, 0x02f6, 0x0302, 0x0308, 0x030f, 0x0319, 0x031e, 0x0328,
+ 0x0330, 0x0336, 0x033c, 0x0342, 0x0349, 0x0352, 0x035a, 0x036a,
+ 0x0370, 0x0375, 0x037e, 0x0390, 0x03a2, 0x03b0, 0x03b6, 0x03bc,
+ 0x03c7, 0x03cd, 0x03d2, 0x03d7, 0x03de, 0x03e5, 0x03ea, 0x03f2,
+ // Entry 80 - BF
+ 0x03f8, 0x0402, 0x040a, 0x0412, 0x0417, 0x041d, 0x0422, 0x042e,
+ 0x0438, 0x043d, 0x0442, 0x044f, 0x0454, 0x045d, 0x0465, 0x046d,
+ 0x0474, 0x0479, 0x047f, 0x0487, 0x048e, 0x0493, 0x049e, 0x04a7,
+ 0x04ac, 0x04b3, 0x04b9, 0x04bf, 0x04c6, 0x04d0, 0x04d9, 0x04e2,
+ 0x04e8, 0x04f1, 0x04f6, 0x04fc, 0x0501, 0x0509, 0x050e, 0x0517,
+ 0x051b, 0x0522, 0x0527, 0x0531, 0x053a, 0x0540, 0x0547, 0x054b,
+ 0x0553, 0x0559, 0x055f, 0x0566, 0x056a, 0x0570, 0x0575, 0x057c,
+ 0x0582, 0x0582, 0x058a, 0x058f, 0x0593, 0x059b, 0x059b, 0x05a2,
+ // Entry C0 - FF
+ 0x05a2, 0x05ae, 0x05bd, 0x05c3, 0x05cb, 0x05d5, 0x05d5, 0x05dc,
+ 0x05dc, 0x05e4, 0x05e4, 0x05e4, 0x05e7, 0x05e7, 0x05f0, 0x05f0,
+ 0x05f6, 0x05fe, 0x0606, 0x0606, 0x060a, 0x060f, 0x060f, 0x0619,
+ 0x061d, 0x0622, 0x0622, 0x0626, 0x062b, 0x062b, 0x063d, 0x0645,
+ 0x064a, 0x064e, 0x064e, 0x0651, 0x0658, 0x0658, 0x0658, 0x065c,
+ 0x065c, 0x0660, 0x0666, 0x066c, 0x0674, 0x0678, 0x067c, 0x0683,
+ 0x0688, 0x068e, 0x0694, 0x0699, 0x06a0, 0x06a5, 0x06ac, 0x06b4,
+ 0x06bc, 0x06c0, 0x06ce, 0x06d5, 0x06de, 0x06e6, 0x06ed, 0x06fa,
+ // Entry 100 - 13F
+ 0x06ff, 0x06ff, 0x070f, 0x0718, 0x071e, 0x0724, 0x0729, 0x0731,
+ 0x0736, 0x073c, 0x0741, 0x0746, 0x074b, 0x0759, 0x0759, 0x075e,
+ 0x076e, 0x0778, 0x077e, 0x0784, 0x0788, 0x078e, 0x078e, 0x079e,
+ 0x07a4, 0x07ab, 0x07b9, 0x07b9, 0x07bf, 0x07bf, 0x07c5, 0x07cd,
+ 0x07cd, 0x07d0, 0x07d0, 0x07df, 0x07ef, 0x07ef, 0x0803, 0x0813,
+ 0x081b, 0x081d, 0x0823, 0x0823, 0x0827, 0x082c, 0x082c, 0x0830,
+ 0x083a, 0x083a, 0x084d, 0x0861, 0x0861, 0x0866, 0x086f, 0x0876,
+ 0x087b, 0x0888, 0x0897, 0x0897, 0x0897, 0x089c, 0x08a5, 0x08aa,
+ // Entry 140 - 17F
+ 0x08aa, 0x08b2, 0x08b2, 0x08bc, 0x08c2, 0x08c7, 0x08d4, 0x08d4,
+ 0x08d8, 0x08dc, 0x08e2, 0x08e9, 0x08f0, 0x08f0, 0x08f0, 0x08f6,
+ 0x08fd, 0x0904, 0x0911, 0x0921, 0x0921, 0x092c, 0x0932, 0x0938,
+ 0x093b, 0x0940, 0x0944, 0x094e, 0x0955, 0x0959, 0x0960, 0x096c,
+ 0x096c, 0x0970, 0x0970, 0x0975, 0x097e, 0x098a, 0x098a, 0x098a,
+ 0x098e, 0x0996, 0x099f, 0x09ab, 0x09b2, 0x09ba, 0x09c0, 0x09cf,
+ 0x09cf, 0x09cf, 0x09de, 0x09e4, 0x09ec, 0x09f1, 0x09f8, 0x09fd,
+ 0x0a04, 0x0a0a, 0x0a0f, 0x0a15, 0x0a1a, 0x0a22, 0x0a22, 0x0a22,
+ // Entry 180 - 1BF
+ 0x0a22, 0x0a28, 0x0a28, 0x0a2d, 0x0a31, 0x0a42, 0x0a42, 0x0a4c,
+ 0x0a53, 0x0a58, 0x0a5b, 0x0a61, 0x0a66, 0x0a66, 0x0a66, 0x0a6e,
+ 0x0a72, 0x0a78, 0x0a80, 0x0a87, 0x0a8f, 0x0a95, 0x0a99, 0x0a9e,
+ 0x0aa4, 0x0aa9, 0x0aad, 0x0ab5, 0x0ac5, 0x0aca, 0x0ad1, 0x0adb,
+ 0x0ae6, 0x0aec, 0x0af4, 0x0afb, 0x0b00, 0x0b00, 0x0b07, 0x0b19,
+ 0x0b1e, 0x0b27, 0x0b2e, 0x0b2e, 0x0b33, 0x0b38, 0x0b43, 0x0b43,
+ 0x0b4d, 0x0b51, 0x0b5e, 0x0b64, 0x0b68, 0x0b6f, 0x0b6f, 0x0b75,
+ 0x0b7e, 0x0b83, 0x0b93, 0x0b93, 0x0b99, 0x0baa, 0x0bae, 0x0bbe,
+ // Entry 1C0 - 1FF
+ 0x0bc6, 0x0bce, 0x0bd3, 0x0bd8, 0x0bdd, 0x0bea, 0x0bf4, 0x0bfb,
+ 0x0c03, 0x0c0d, 0x0c15, 0x0c15, 0x0c15, 0x0c15, 0x0c22, 0x0c22,
+ 0x0c2a, 0x0c2a, 0x0c2a, 0x0c33, 0x0c33, 0x0c45, 0x0c4c, 0x0c4c,
+ 0x0c55, 0x0c5c, 0x0c67, 0x0c67, 0x0c67, 0x0c6c, 0x0c72, 0x0c72,
+ 0x0c72, 0x0c72, 0x0c79, 0x0c7c, 0x0c83, 0x0c89, 0x0c9c, 0x0ca3,
+ 0x0ca8, 0x0caf, 0x0caf, 0x0cb6, 0x0cbb, 0x0cc4, 0x0ccc, 0x0ccc,
+ 0x0cdc, 0x0ce2, 0x0ce6, 0x0ce6, 0x0cec, 0x0cfb, 0x0d0c, 0x0d0c,
+ 0x0d15, 0x0d19, 0x0d28, 0x0d2e, 0x0d2e, 0x0d2e, 0x0d39, 0x0d45,
+ // Entry 200 - 23F
+ 0x0d52, 0x0d5f, 0x0d68, 0x0d70, 0x0d81, 0x0d87, 0x0d8b, 0x0d8b,
+ 0x0d91, 0x0d96, 0x0d9e, 0x0da7, 0x0db7, 0x0dc9, 0x0dd1, 0x0dd1,
+ 0x0dd1, 0x0dd6, 0x0dda, 0x0de0, 0x0de6, 0x0dec, 0x0def, 0x0dfa,
+ 0x0dfa, 0x0e01, 0x0e0a, 0x0e0a, 0x0e13, 0x0e25, 0x0e2e, 0x0e2e,
+ 0x0e34, 0x0e34, 0x0e3d, 0x0e3d, 0x0e44, 0x0e4d, 0x0e54, 0x0e5d,
+ 0x0e77, 0x0e7d, 0x0e87, 0x0e8e, 0x0ea1, 0x0ea4, 0x0ea4, 0x0ea4,
+ 0x0ea4, 0x0ea4, 0x0ea9, 0x0ea9, 0x0eae, 0x0eb4, 0x0eba, 0x0ebf,
+ 0x0ec4, 0x0ecc, 0x0ecc, 0x0ed2, 0x0ed2, 0x0ed8, 0x0edb, 0x0ee1,
+ // Entry 240 - 27F
+ 0x0ee8, 0x0eed, 0x0eed, 0x0ef6, 0x0efe, 0x0f0c, 0x0f0c, 0x0f12,
+ 0x0f2e, 0x0f33, 0x0f4d, 0x0f51, 0x0f5f, 0x0f68, 0x0f7a, 0x0f8e,
+ 0x0fa1, 0x0fb2, 0x0fc4, 0x0fd5, 0x0fee, 0x0ffe, 0x100f, 0x100f,
+ 0x1021, 0x1031, 0x103d, 0x1045, 0x1059, 0x106b, 0x1074, 0x1080,
+ 0x1094, 0x10a7,
+} // Size: 1244 bytes
+
+var ptPTLangStr string = "" + // Size: 591 bytes
+ "africânderchecochuvasheweestóniofrísico ocidentalhaúçahindiarménioigboco" +
+ "nguêscanarimgandamacedónionorueguês nynorsknorueguês bokmålprovençalossé" +
+ "ticopolacopastókinyarwandaturcomanotongamapuchebamunghomalajargão chinoo" +
+ "ksorani curdobaixo sórabioegípcio clássicoinglês medievalfrancês medieva" +
+ "lfrísio orientalalemão medieval altogrego clássicoalto sórabiocabo-verdi" +
+ "anolezghianoluri do norteluoirlandês, medievalmohawkbaixo-alemãoromanêss" +
+ "akhaárabe do Chadelule samiinari samiskolt samirootvaisogaárabe moderno " +
+ "padrãoazeri meridionalinglês canadianofrancês canadiano"
+
+var ptPTLangIdx = []uint16{ // 601 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x000b,
+ 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
+ 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
+ 0x000b, 0x000b, 0x000b, 0x0010, 0x0010, 0x0017, 0x0017, 0x0017,
+ 0x0017, 0x0017, 0x0017, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a,
+ 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x003b,
+ 0x003b, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0048, 0x0048,
+ // Entry 40 - 7F
+ 0x0048, 0x0048, 0x0048, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c,
+ 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
+ 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0060, 0x0060, 0x0060,
+ 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x006a,
+ 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a,
+ 0x006a, 0x006a, 0x006a, 0x007c, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x0098, 0x0098, 0x0098, 0x0098, 0x00a1, 0x00a1, 0x00a1, 0x00a7,
+ // Entry 80 - BF
+ 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b8,
+ 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
+ 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
+ 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c1,
+ 0x00c1, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ // Entry C0 - FF
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00cd,
+ 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d2, 0x00d2, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f4,
+ // Entry 100 - 13F
+ 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4,
+ 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x0102, 0x0102, 0x0102,
+ 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0114,
+ 0x0114, 0x0114, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124,
+ 0x0124, 0x0124, 0x0124, 0x0135, 0x0135, 0x0135, 0x0135, 0x0145,
+ 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145,
+ 0x0145, 0x0145, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a,
+ 0x015a, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169,
+ // Entry 140 - 17F
+ 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0176, 0x0176,
+ 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
+ 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
+ 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0183,
+ 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
+ 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
+ 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
+ 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x018c, 0x018c, 0x018c,
+ // Entry 180 - 1BF
+ 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x0199, 0x0199, 0x0199,
+ 0x0199, 0x0199, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c,
+ 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c,
+ 0x019c, 0x019c, 0x019c, 0x019c, 0x01af, 0x01af, 0x01af, 0x01af,
+ 0x01af, 0x01af, 0x01af, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5,
+ 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5,
+ 0x01b5, 0x01b5, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ // Entry 1C0 - 1FF
+ 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01ca, 0x01ca,
+ 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01ca, 0x01cf, 0x01cf, 0x01cf,
+ 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf,
+ 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf, 0x01cf,
+ 0x01cf, 0x01cf, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01e7,
+ // Entry 200 - 23F
+ 0x01f1, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
+ 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
+ 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
+ 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
+ 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
+ 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01ff, 0x0202, 0x0202, 0x0202,
+ 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202,
+ 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0206, 0x0206, 0x0206,
+ // Entry 240 - 27F
+ 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0206,
+ 0x0206, 0x0206, 0x0206, 0x0206, 0x021c, 0x022c, 0x022c, 0x022c,
+ 0x022c, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d,
+ 0x024f,
+} // Size: 1226 bytes
+
+var roLangStr string = "" + // Size: 4388 bytes
+ "afarabhazăavestanăafrikaansakanamharicăaragonezăarabăasamezăavarăaymaraa" +
+ "zerăbașkirăbielorusăbulgarăbislamabambarabengalezătibetanăbretonăbosniac" +
+ "ăcatalanăcecenăchamorrocorsicanăcreecehăslavonăciuvașăgalezădanezăgerma" +
+ "nădivehidzongkhaewegreacăenglezăesperantospaniolăestonianăbascăpersanăfu" +
+ "lahfinlandezăfijianăfaroezăfrancezăfrizonă occidentalăirlandezăgaelică s" +
+ "coțianăgalicianăguaranigujaratimanxhausaebraicăhindihiri motucroatăhaiti" +
+ "anămaghiarăarmeanăhererointerlinguaindonezianăinterlingueigbosichuan yii" +
+ "nupiakidoislandezăitalianăinuktitutjaponezăjavanezăgeorgianăcongolezăkik" +
+ "uyukuanyamakazahăkalaallisutkhmerăkannadacoreeanăkanuricașmirăkurdăkomic" +
+ "ornicăkârgâzălatinăluxemburghezăgandalimburghezălingalalaoțianălituanian" +
+ "ăluba-katangaletonămalgașămarshallezămaorimacedoneanămalayalammongolăma" +
+ "rathimalaezămaltezăbirmanezănaurundebele de nordnepalezăndonganeerlandez" +
+ "ănorvegiană nynorsknorvegiană bokmålndebele de sudnavajonyanjaoccitanăo" +
+ "jibwaoromooriyaosetăpunjabipalipolonezăpaștunăportughezăquechuaromanșăki" +
+ "rundiromânărusăkinyarwandasanscrităsardinianăsindhisami de nordsangosing" +
+ "halezăslovacăslovenăsamoanăshonasomalezăalbanezăsârbăswatisesothosundane" +
+ "zăsuedezăswahilitamilătelugutadjicăthailandezătigrinăturkmenăsetswanaton" +
+ "gaturcătsongatătarătahitianăuigurăucraineanăurduuzbecăvendavietnamezăvol" +
+ "apukvalonăwolofxhosaidișyorubazhuangchinezăzuluacehacoliadangmeadygheafr" +
+ "ihiliaghemainuakkadianăaleutăaltaică meridionalăengleză vecheangikaarama" +
+ "icămapuchearapahoarawakasuasturianăawadhibaluchibalinezăbasaabamunghomal" +
+ "abejabembabenabafutbaluchi occidentalăbhojpuribikolbinikomsiksikabrajbod" +
+ "oakooseburiatbuginezăbulublinmedumbacaddocaribcayugaatsamcebuanochigachi" +
+ "bchachagataichuukesemarijargon chinookchoctawchipewyancherokeecheyenneku" +
+ "rdă soranicoptăturcă crimeeanăcașubianădakotadargwataitadelawareslavedog" +
+ "ribdinkazarmadogrisorabă de josdualaolandeză mijlociejola-fonyidyuladaza" +
+ "gaembuefikegipteană vecheekajukelamităengleză mijlocieewondofangfilipine" +
+ "zăfonfranceză mijlociefranceză vechefrizonă nordicăfrizonă orientalăfriu" +
+ "lanăgagăgăuzăgayogbayageezgilbertinăgermană mijlocie înaltăgermană veche" +
+ " înaltăgondigorontalogoticăgrebogreacă vechegermană elvețianăgusiigwichʼ" +
+ "inhaidahawaiianăhiligaynonhitităhmongsorabă de sushupaibanibibioilokoing" +
+ "ușălojbanngombamachameiudeo-persanăiudeo-arabăkarakalpakkabylekachinjjuk" +
+ "ambakawikabardiankanembutyapmakondekabuverdianukorokhasilimbp khotanezăk" +
+ "oyra chiinikakokalenjinkimbundukomi-permiakkonkanikosraekpellekaraceai-b" +
+ "alkarkarelianăkurukhshambalabafiakölschkumykkutenailadinolangilahndalamb" +
+ "alezghianlakotamongoloziluri de nordluba-lulualuisenolundaluolusahiluyia" +
+ "madurezămafamagahimaithilimakasarmandingomasaimabamokshamandarmendemerum" +
+ "orisyenirlandeză mijlociemakhuwa-meettometa’micmacminangkabaumanciuriană" +
+ "manipurmohawkmossimundanglimbi multiplecreekmirandezămarwarimyeneerzyama" +
+ "zanderaninapolitanănamagermana de josnewariniasniueanăkwasiongiemboonnog" +
+ "ainordică vechen’kosotho de nordnuernewari clasicănyamwezinyankolenyoron" +
+ "zimaosageturcă otomanăpangasinanpahlavipampangapapiamentopalauanăpersană" +
+ " vechefenicianăpohnpeianăprovensală vechequichérajasthanirapanuirarotong" +
+ "anromboromaniaromânărwasandawesakhaaramaică samariteanăsamburusasaksanta" +
+ "lingambaysangusicilianăscotskurdă de sudsenecasenaselkupkoyraboro Sennii" +
+ "rlandeză vechetachelhitshanarabă ciadianăsidamosami de sudlule samiinari" +
+ " samiskolt samisoninkesogdiensranan tongoserersahosukumasususumerianăcom" +
+ "orezăswahili Congosiriacă clasicăsiriacătimnetesoterenotetumtigretivtoke" +
+ "lauklingonianătlingittamasheknyasa tongatok pisintarokotsimshiantumbukat" +
+ "uvalutasawaqtuvanătamazight central marocanăudmurtugariticăumbundurootva" +
+ "ivoticvunjowalserwalamowaraywashowarlpiricalmucăsogayaoyapezăyangbenyemb" +
+ "acantonezăzapotecăsimboluri Bilsszenagatamazight standard marocanăzunifa" +
+ "ră conținut lingvisticzazaarabă standard modernăgermană austriacăgermană" +
+ " standard elvețianăengleză australianăengleză canadianăengleză britanică" +
+ "engleză americanăspaniolă latino-americanăspaniolă europeanăspaniolă mex" +
+ "icanăfranceză canadianăfranceză elvețianăsaxona de josflamandăportugheză" +
+ " brazilianăportugheză europeanămoldoveneascăsârbo-croatăchineză simplifi" +
+ "catăchineză tradițională"
+
+var roLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000b, 0x0014, 0x001d, 0x0021, 0x002a, 0x0034,
+ 0x003a, 0x0042, 0x0048, 0x004e, 0x0054, 0x005d, 0x0067, 0x006f,
+ 0x0076, 0x007d, 0x0087, 0x0090, 0x0098, 0x00a1, 0x00aa, 0x00b1,
+ 0x00b9, 0x00c3, 0x00c7, 0x00cc, 0x00d4, 0x00dd, 0x00e4, 0x00eb,
+ 0x00f3, 0x00f9, 0x0101, 0x0104, 0x010b, 0x0113, 0x011c, 0x0125,
+ 0x012f, 0x0135, 0x013d, 0x0142, 0x014d, 0x0155, 0x015d, 0x0166,
+ 0x017b, 0x0185, 0x0198, 0x01a2, 0x01a9, 0x01b1, 0x01b5, 0x01ba,
+ 0x01c2, 0x01c7, 0x01d0, 0x01d7, 0x01e0, 0x01e9, 0x01f1, 0x01f7,
+ // Entry 40 - 7F
+ 0x0202, 0x020e, 0x0219, 0x021d, 0x0227, 0x022e, 0x0231, 0x023b,
+ 0x0244, 0x024d, 0x0256, 0x025f, 0x0269, 0x0273, 0x0279, 0x0281,
+ 0x0288, 0x0293, 0x029a, 0x02a1, 0x02aa, 0x02b0, 0x02b9, 0x02bf,
+ 0x02c3, 0x02cb, 0x02d5, 0x02dc, 0x02ea, 0x02ef, 0x02fb, 0x0302,
+ 0x030c, 0x0317, 0x0323, 0x032a, 0x0333, 0x033f, 0x0344, 0x0350,
+ 0x0359, 0x0361, 0x0368, 0x0370, 0x0378, 0x0382, 0x0387, 0x0396,
+ 0x039f, 0x03a5, 0x03b1, 0x03c4, 0x03d7, 0x03e5, 0x03eb, 0x03f1,
+ 0x03fa, 0x0400, 0x0405, 0x040a, 0x0410, 0x0417, 0x041b, 0x0424,
+ // Entry 80 - BF
+ 0x042d, 0x0438, 0x043f, 0x0448, 0x044f, 0x0457, 0x045c, 0x0467,
+ 0x0471, 0x047c, 0x0482, 0x048e, 0x0493, 0x049e, 0x04a6, 0x04ae,
+ 0x04b6, 0x04bb, 0x04c4, 0x04cd, 0x04d4, 0x04d9, 0x04e0, 0x04ea,
+ 0x04f2, 0x04f9, 0x0500, 0x0506, 0x050e, 0x051a, 0x0522, 0x052b,
+ 0x0533, 0x0538, 0x053e, 0x0544, 0x054c, 0x0556, 0x055d, 0x0568,
+ 0x056c, 0x0573, 0x0578, 0x0583, 0x058a, 0x0591, 0x0596, 0x059b,
+ 0x05a0, 0x05a6, 0x05ac, 0x05b4, 0x05b8, 0x05bc, 0x05c1, 0x05c8,
+ 0x05ce, 0x05ce, 0x05d6, 0x05db, 0x05df, 0x05e9, 0x05e9, 0x05f0,
+ // Entry C0 - FF
+ 0x05f0, 0x0605, 0x0613, 0x0619, 0x0622, 0x0629, 0x0629, 0x0630,
+ 0x0630, 0x0636, 0x0636, 0x0636, 0x0639, 0x0639, 0x0643, 0x0643,
+ 0x0649, 0x0650, 0x0659, 0x0659, 0x065e, 0x0663, 0x0663, 0x066a,
+ 0x066e, 0x0673, 0x0673, 0x0677, 0x067c, 0x067c, 0x0690, 0x0698,
+ 0x069d, 0x06a1, 0x06a1, 0x06a4, 0x06ab, 0x06ab, 0x06ab, 0x06af,
+ 0x06af, 0x06b3, 0x06b9, 0x06bf, 0x06c8, 0x06cc, 0x06d0, 0x06d7,
+ 0x06dc, 0x06e1, 0x06e7, 0x06ec, 0x06f3, 0x06f8, 0x06ff, 0x0707,
+ 0x070f, 0x0713, 0x0721, 0x0728, 0x0731, 0x0739, 0x0741, 0x074e,
+ // Entry 100 - 13F
+ 0x0754, 0x0754, 0x0765, 0x0770, 0x0776, 0x077c, 0x0781, 0x0789,
+ 0x078e, 0x0794, 0x0799, 0x079e, 0x07a3, 0x07b1, 0x07b1, 0x07b6,
+ 0x07c8, 0x07d2, 0x07d7, 0x07dd, 0x07e1, 0x07e5, 0x07e5, 0x07f5,
+ 0x07fb, 0x0803, 0x0814, 0x0814, 0x081a, 0x081a, 0x081e, 0x0829,
+ 0x0829, 0x082c, 0x082c, 0x083e, 0x084d, 0x084d, 0x085e, 0x0871,
+ 0x087a, 0x087c, 0x0886, 0x0886, 0x088a, 0x088f, 0x088f, 0x0893,
+ 0x089e, 0x089e, 0x08b8, 0x08cf, 0x08cf, 0x08d4, 0x08dd, 0x08e4,
+ 0x08e9, 0x08f6, 0x090a, 0x090a, 0x090a, 0x090f, 0x0918, 0x091d,
+ // Entry 140 - 17F
+ 0x091d, 0x0927, 0x0927, 0x0931, 0x0938, 0x093d, 0x094b, 0x094b,
+ 0x094f, 0x0953, 0x0959, 0x095e, 0x0966, 0x0966, 0x0966, 0x096c,
+ 0x0972, 0x0979, 0x0987, 0x0993, 0x0993, 0x099d, 0x09a3, 0x09a9,
+ 0x09ac, 0x09b1, 0x09b5, 0x09be, 0x09c5, 0x09c9, 0x09d0, 0x09dc,
+ 0x09dc, 0x09e0, 0x09e0, 0x09e5, 0x09f5, 0x0a01, 0x0a01, 0x0a01,
+ 0x0a05, 0x0a0d, 0x0a15, 0x0a21, 0x0a28, 0x0a2e, 0x0a34, 0x0a43,
+ 0x0a43, 0x0a43, 0x0a4d, 0x0a53, 0x0a5b, 0x0a60, 0x0a67, 0x0a6c,
+ 0x0a73, 0x0a79, 0x0a7e, 0x0a84, 0x0a89, 0x0a91, 0x0a91, 0x0a91,
+ // Entry 180 - 1BF
+ 0x0a91, 0x0a97, 0x0a97, 0x0a9c, 0x0aa0, 0x0aac, 0x0aac, 0x0ab6,
+ 0x0abd, 0x0ac2, 0x0ac5, 0x0acb, 0x0ad0, 0x0ad0, 0x0ad0, 0x0ad9,
+ 0x0add, 0x0ae3, 0x0aeb, 0x0af2, 0x0afa, 0x0aff, 0x0b03, 0x0b09,
+ 0x0b0f, 0x0b14, 0x0b18, 0x0b20, 0x0b33, 0x0b41, 0x0b48, 0x0b4e,
+ 0x0b59, 0x0b65, 0x0b6c, 0x0b72, 0x0b77, 0x0b77, 0x0b7e, 0x0b8c,
+ 0x0b91, 0x0b9b, 0x0ba2, 0x0ba2, 0x0ba7, 0x0bac, 0x0bb7, 0x0bb7,
+ 0x0bc2, 0x0bc6, 0x0bd4, 0x0bda, 0x0bde, 0x0be6, 0x0be6, 0x0bec,
+ 0x0bf5, 0x0bfa, 0x0c08, 0x0c08, 0x0c0e, 0x0c1b, 0x0c1f, 0x0c2e,
+ // Entry 1C0 - 1FF
+ 0x0c36, 0x0c3e, 0x0c43, 0x0c48, 0x0c4d, 0x0c5c, 0x0c66, 0x0c6d,
+ 0x0c75, 0x0c7f, 0x0c88, 0x0c88, 0x0c88, 0x0c88, 0x0c96, 0x0c96,
+ 0x0ca0, 0x0ca0, 0x0ca0, 0x0cab, 0x0cab, 0x0cbc, 0x0cc3, 0x0cc3,
+ 0x0ccd, 0x0cd4, 0x0cde, 0x0cde, 0x0cde, 0x0ce3, 0x0ce9, 0x0ce9,
+ 0x0ce9, 0x0ce9, 0x0cf2, 0x0cf5, 0x0cfc, 0x0d01, 0x0d17, 0x0d1e,
+ 0x0d23, 0x0d2a, 0x0d2a, 0x0d31, 0x0d36, 0x0d40, 0x0d45, 0x0d45,
+ 0x0d52, 0x0d58, 0x0d5c, 0x0d5c, 0x0d62, 0x0d71, 0x0d81, 0x0d81,
+ 0x0d8a, 0x0d8e, 0x0d9e, 0x0da4, 0x0da4, 0x0da4, 0x0daf, 0x0db8,
+ // Entry 200 - 23F
+ 0x0dc2, 0x0dcc, 0x0dd3, 0x0dda, 0x0de6, 0x0deb, 0x0def, 0x0def,
+ 0x0df5, 0x0df9, 0x0e03, 0x0e0c, 0x0e19, 0x0e2a, 0x0e32, 0x0e32,
+ 0x0e32, 0x0e37, 0x0e3b, 0x0e41, 0x0e46, 0x0e4b, 0x0e4e, 0x0e55,
+ 0x0e55, 0x0e61, 0x0e68, 0x0e68, 0x0e70, 0x0e7b, 0x0e84, 0x0e84,
+ 0x0e8a, 0x0e8a, 0x0e93, 0x0e93, 0x0e9a, 0x0ea0, 0x0ea7, 0x0eae,
+ 0x0ec9, 0x0ecf, 0x0ed9, 0x0ee0, 0x0ee4, 0x0ee7, 0x0ee7, 0x0ee7,
+ 0x0ee7, 0x0ee7, 0x0eec, 0x0eec, 0x0ef1, 0x0ef7, 0x0efd, 0x0f02,
+ 0x0f07, 0x0f0f, 0x0f0f, 0x0f17, 0x0f17, 0x0f1b, 0x0f1e, 0x0f25,
+ // Entry 240 - 27F
+ 0x0f2c, 0x0f31, 0x0f31, 0x0f3b, 0x0f44, 0x0f53, 0x0f53, 0x0f59,
+ 0x0f75, 0x0f79, 0x0f93, 0x0f97, 0x0faf, 0x0faf, 0x0fc2, 0x0fdf,
+ 0x0ff4, 0x1007, 0x101a, 0x102d, 0x1048, 0x105c, 0x106f, 0x106f,
+ 0x1083, 0x1098, 0x10a5, 0x10ae, 0x10c5, 0x10db, 0x10e9, 0x10f7,
+ 0x110d, 0x1124,
+} // Size: 1244 bytes
+
+var ruLangStr string = "" + // Size: 9370 bytes
+ "афарабхазскийавестийскийафрикаансаканамхарскийарагонскийарабскийассамски" +
+ "йаварскийаймараазербайджанскийбашкирскийбелорусскийболгарскийбисламабам" +
+ "барийскийбенгальскийтибетскийбретонскийбоснийскийкаталанскийчеченскийча" +
+ "моррокорсиканскийкриийскийчешскийцерковнославянскийчувашскийваллийскийд" +
+ "атскийнемецкиймальдивскийдзонг-кээвегреческийанглийскийэсперантоиспанск" +
+ "ийэстонскийбаскскийперсидскийфулахфинскийфиджифарерскийфранцузскийзапад" +
+ "но-фризскийирландскийгэльскийгалисийскийгуаранигуджаратимэнскийхаусаивр" +
+ "итхиндихиримотухорватскийгаитянскийвенгерскийармянскийгерероинтерлингва" +
+ "индонезийскийинтерлингвеигбосычуаньинупиакидоисландскийитальянскийинукт" +
+ "итутяпонскийяванскийгрузинскийконгокикуйюкунамаказахскийгренландскийкхм" +
+ "ерскийканнадакорейскийканурикашмирикурдскийкомикорнийскийкиргизскийлати" +
+ "нскийлюксембургскийгандалимбургскийлингалалаосскийлитовскийлуба-катанга" +
+ "латышскиймалагасийскиймаршалльскиймаоримакедонскиймалаяламмонгольскийма" +
+ "ратхималайскиймальтийскийбирманскийнаурусеверный ндебелинепальскийндонг" +
+ "анидерландскийнорвежский нюнорскнорвежский букмолндебели южныйнавахонья" +
+ "нджаокситанскийоджибваоромоорияосетинскийпанджабипалипольскийпуштупорту" +
+ "гальскийкечуароманшскийрундирумынскийрусскийкиньяруандасанскритсардинск" +
+ "ийсиндхисеверносаамскийсангосингальскийсловацкийсловенскийсамоанскийшон" +
+ "асомалиалбанскийсербскийсвазисото южныйсунданскийшведскийсуахилитамильс" +
+ "кийтелугутаджикскийтайскийтигриньятуркменскийтсванатонганскийтурецкийтс" +
+ "онгататарскийтаитянскийуйгурскийукраинскийурдуузбекскийвендавьетнамский" +
+ "волапюкваллонскийволофкосаидишйорубачжуанькитайскийзулуачехскийачолиада" +
+ "нгмеадыгейскийафрихилиагхемайнуаккадскийалеутскийюжноалтайскийстароангл" +
+ "ийскийангикаарамейскийарауканскийарапахоаравакскийасуастурийскийавадхиб" +
+ "елуджскийбалийскийбасабамумгхомалабеджабембабенабафутзападно-белуджский" +
+ "бходжпурибикольскийбиникомсиксикабрауибодоакоосебурятскийбугийскийбулуб" +
+ "илин (блин)медумбакаддокарибкайюгаатсамкебуаночигачибчачагатайскийчукот" +
+ "скиймарийский (черемисский)чинук жаргончоктавчипевайянчерокичейеннсоран" +
+ "и курдскийкоптскийкрымско-татарскийкашубианскийдакотадаргватаитаделавар" +
+ "скийслейвидогрибдинказармадогринижнелужицкийдуаласредненидерландскийдьо" +
+ "ла-фоньидиула (дьюла)дазагскийэмбуэфикдревнеегипетскийэкаджукэламскийср" +
+ "еднеанглийскийэвондофангфилиппинскийфонсреднефранцузскийстарофранцузски" +
+ "йфризский северныйвосточный фризскийфриульскийгагагаузскийгайогбаягеэзг" +
+ "ильбертскийсредневерхненемецкийдревневерхненемецкийгондигоронталоготски" +
+ "йгребодревнегреческийшвейцарский немецкийгусиигвичинхайдагавайскийхилиг" +
+ "айнонхеттскийхмонгверхнелужицкийхупаибанскийибибиоилокоингушскийложбанн" +
+ "гомбамачамееврейско-персидскийеврейско-арабскийкаракалпакскийкабильский" +
+ "качинскийкаджикамбакавикабардинскийканембутьяпмакондекабувердьянукорокх" +
+ "асихотанскийкойра чииникакокаленджинкимбундийскийкоми-пермяцкийконканик" +
+ "осраенскийкпеллекарачаево-балкарскийкарельскийкурухшамбалабафиякёльшкум" +
+ "ыкскийкутенаиладинолангилахндаламбалезгинскийлакотамонголозисеверно-лур" +
+ "ийскийлуба-лулуалуисеньолундалуо (Кения и Танзания)лушайлухьямадурскийм" +
+ "афамагахимайтхилимакассарскиймандингомасаимабанскиймокшанскиймандарский" +
+ "мендемерумаврикийский креольскийсреднеирландскиймакуа-мееттометамикмакм" +
+ "инангкабауманьчжурскийманипурскиймохаукмосимундангнесколько языковкрикм" +
+ "ирандийскиймарваримиенеэрзямазендеранскийнеаполитанскийнаманижнегерманс" +
+ "кийневарскийниасниуэквасионгиембундногайскийстаронорвежскийнкосото севе" +
+ "рныйнуэрневари (классический)ньямвезиньянколеньоронзимаоседжистаротурец" +
+ "кийпангасинанпехлевийскийпампангапапьяментопалаустароперсидскийфиникийс" +
+ "кийпонапестаропровансальскийкичераджастханирапануираротонганскийромбоцы" +
+ "ганскийарумынскийруандасандавеякутскийсамаритянский арамейскийсамбуруса" +
+ "сакисанталингамбайскийсангусицилийскийшотландскийюжнокурдскийсенекасена" +
+ "селькупскийкойраборо сеннистароирландскийташельхитшанскийчадский арабсс" +
+ "идамаюжно-саамскийлуле-саамскийинари-саамскийскольт-саамскийсонинкесогд" +
+ "ийскийсранан тонгосерерсахосукумасусушумерскийкоморскийконголезский суа" +
+ "хиликлассический сирийскийсирийскийтемнетесотеренотетумтигретивитокелай" +
+ "скийклингонскийтлингиттамашекньяса (тонга)ток-писинтуройотарокоцимшиант" +
+ "умбукатувалутасавактувинскийсреднеатласский тамазигхтскийудмуртскийугар" +
+ "итскийумбундукорневой языкваиводскийвунджовалисскийволамоварайвашовальб" +
+ "ирикалмыцкийсогаяояпянбанйембакантонскийсапотекскийблиссимволиказенагск" +
+ "ийтамазигхтскийзуньибез языкового содержаниязазаарабский литературныйав" +
+ "стрийский немецкийшвейцарский верхненемецкийавстралийский английскийкан" +
+ "адский английскийбританский английскийамериканский английскийлатиноамер" +
+ "иканский испанскийевропейский испанскиймексиканский испанскийканадский " +
+ "французскийшвейцарский французскийнижнесаксонскийфламандскийбразильский" +
+ " португальскийевропейский португальскиймолдавскийсербскохорватскийупроще" +
+ "нный китайскийтрадиционный китайский"
+
+var ruLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0008, 0x001a, 0x0030, 0x0042, 0x004a, 0x005c, 0x0070,
+ 0x0080, 0x0092, 0x00a2, 0x00ae, 0x00cc, 0x00e0, 0x00f6, 0x010a,
+ 0x0118, 0x0130, 0x0146, 0x0158, 0x016c, 0x0180, 0x0196, 0x01a8,
+ 0x01b6, 0x01ce, 0x01e0, 0x01ee, 0x0212, 0x0224, 0x0238, 0x0246,
+ 0x0256, 0x026c, 0x027b, 0x0281, 0x0293, 0x02a7, 0x02b9, 0x02cb,
+ 0x02dd, 0x02ed, 0x0301, 0x030b, 0x0319, 0x0323, 0x0335, 0x034b,
+ 0x036a, 0x037e, 0x038e, 0x03a4, 0x03b2, 0x03c4, 0x03d2, 0x03dc,
+ 0x03e6, 0x03f0, 0x0400, 0x0414, 0x0428, 0x043c, 0x044e, 0x045a,
+ // Entry 40 - 7F
+ 0x0470, 0x048a, 0x04a0, 0x04a8, 0x04b6, 0x04c4, 0x04ca, 0x04de,
+ 0x04f4, 0x0506, 0x0516, 0x0526, 0x053a, 0x0544, 0x0550, 0x055c,
+ 0x056e, 0x0586, 0x0598, 0x05a6, 0x05b8, 0x05c4, 0x05d2, 0x05e2,
+ 0x05ea, 0x05fe, 0x0612, 0x0624, 0x0640, 0x064a, 0x0660, 0x066e,
+ 0x067e, 0x0690, 0x06a7, 0x06b9, 0x06d3, 0x06eb, 0x06f5, 0x070b,
+ 0x071b, 0x0731, 0x073f, 0x0751, 0x0767, 0x077b, 0x0785, 0x07a4,
+ 0x07b8, 0x07c4, 0x07de, 0x0801, 0x0822, 0x083b, 0x0847, 0x0855,
+ 0x086b, 0x0879, 0x0883, 0x088b, 0x089f, 0x08af, 0x08b7, 0x08c7,
+ // Entry 80 - BF
+ 0x08d1, 0x08eb, 0x08f5, 0x0909, 0x0913, 0x0925, 0x0933, 0x0949,
+ 0x0959, 0x096d, 0x0979, 0x0997, 0x09a1, 0x09b7, 0x09c9, 0x09dd,
+ 0x09f1, 0x09f9, 0x0a05, 0x0a17, 0x0a27, 0x0a31, 0x0a44, 0x0a58,
+ 0x0a68, 0x0a76, 0x0a8a, 0x0a96, 0x0aaa, 0x0ab8, 0x0ac8, 0x0ade,
+ 0x0aea, 0x0afe, 0x0b0e, 0x0b1a, 0x0b2c, 0x0b40, 0x0b52, 0x0b66,
+ 0x0b6e, 0x0b80, 0x0b8a, 0x0ba0, 0x0bae, 0x0bc2, 0x0bcc, 0x0bd4,
+ 0x0bdc, 0x0be8, 0x0bf4, 0x0c06, 0x0c0e, 0x0c1e, 0x0c28, 0x0c36,
+ 0x0c4a, 0x0c4a, 0x0c5a, 0x0c64, 0x0c6c, 0x0c7e, 0x0c7e, 0x0c90,
+ // Entry C0 - FF
+ 0x0c90, 0x0caa, 0x0cc8, 0x0cd4, 0x0ce8, 0x0cfe, 0x0cfe, 0x0d0c,
+ 0x0d0c, 0x0d20, 0x0d20, 0x0d20, 0x0d26, 0x0d26, 0x0d3c, 0x0d3c,
+ 0x0d48, 0x0d5c, 0x0d6e, 0x0d6e, 0x0d76, 0x0d80, 0x0d80, 0x0d8e,
+ 0x0d98, 0x0da2, 0x0da2, 0x0daa, 0x0db4, 0x0db4, 0x0dd7, 0x0de9,
+ 0x0dfd, 0x0e05, 0x0e05, 0x0e0b, 0x0e19, 0x0e19, 0x0e19, 0x0e23,
+ 0x0e23, 0x0e2b, 0x0e37, 0x0e49, 0x0e5b, 0x0e63, 0x0e78, 0x0e86,
+ 0x0e90, 0x0e9a, 0x0ea6, 0x0eb0, 0x0ebe, 0x0ec6, 0x0ed0, 0x0ee6,
+ 0x0ef8, 0x0f23, 0x0f3a, 0x0f46, 0x0f58, 0x0f64, 0x0f70, 0x0f8d,
+ // Entry 100 - 13F
+ 0x0f9d, 0x0f9d, 0x0fbe, 0x0fd6, 0x0fe2, 0x0fee, 0x0ff8, 0x100e,
+ 0x101a, 0x1026, 0x1030, 0x103a, 0x1044, 0x105e, 0x105e, 0x1068,
+ 0x108e, 0x10a3, 0x10ba, 0x10cc, 0x10d4, 0x10dc, 0x10dc, 0x10fc,
+ 0x110a, 0x111a, 0x113a, 0x113a, 0x1146, 0x1146, 0x114e, 0x1166,
+ 0x1166, 0x116c, 0x116c, 0x118e, 0x11ae, 0x11ae, 0x11cf, 0x11f2,
+ 0x1206, 0x120a, 0x121e, 0x121e, 0x1226, 0x122e, 0x122e, 0x1236,
+ 0x124e, 0x124e, 0x1276, 0x129e, 0x129e, 0x12a8, 0x12ba, 0x12c8,
+ 0x12d2, 0x12f0, 0x1317, 0x1317, 0x1317, 0x1321, 0x132d, 0x1337,
+ // Entry 140 - 17F
+ 0x1337, 0x1349, 0x1349, 0x135d, 0x136d, 0x1377, 0x1393, 0x1393,
+ 0x139b, 0x13ab, 0x13b7, 0x13c1, 0x13d3, 0x13d3, 0x13d3, 0x13df,
+ 0x13eb, 0x13f7, 0x141c, 0x143d, 0x143d, 0x1459, 0x146d, 0x147f,
+ 0x1489, 0x1493, 0x149b, 0x14b3, 0x14c1, 0x14c9, 0x14d7, 0x14ef,
+ 0x14ef, 0x14f7, 0x14f7, 0x1501, 0x1513, 0x1528, 0x1528, 0x1528,
+ 0x1530, 0x1542, 0x155c, 0x1577, 0x1585, 0x159b, 0x15a7, 0x15ce,
+ 0x15ce, 0x15ce, 0x15e2, 0x15ec, 0x15fa, 0x1604, 0x160e, 0x1620,
+ 0x162e, 0x163a, 0x1644, 0x1650, 0x165a, 0x166e, 0x166e, 0x166e,
+ // Entry 180 - 1BF
+ 0x166e, 0x167a, 0x167a, 0x1684, 0x168c, 0x16ad, 0x16ad, 0x16c0,
+ 0x16d0, 0x16da, 0x1701, 0x170b, 0x1715, 0x1715, 0x1715, 0x1727,
+ 0x172f, 0x173b, 0x174b, 0x1763, 0x1773, 0x177d, 0x178f, 0x17a3,
+ 0x17b7, 0x17c1, 0x17c9, 0x17f6, 0x1816, 0x182d, 0x1835, 0x1841,
+ 0x1857, 0x186f, 0x1885, 0x1891, 0x1899, 0x1899, 0x18a7, 0x18c6,
+ 0x18ce, 0x18e6, 0x18f4, 0x18f4, 0x18fe, 0x1906, 0x1922, 0x1922,
+ 0x193e, 0x1946, 0x1964, 0x1976, 0x197e, 0x1986, 0x1986, 0x1992,
+ 0x19a4, 0x19b6, 0x19d4, 0x19d4, 0x19da, 0x19f3, 0x19fb, 0x1a22,
+ // Entry 1C0 - 1FF
+ 0x1a32, 0x1a42, 0x1a4c, 0x1a56, 0x1a62, 0x1a7c, 0x1a90, 0x1aa8,
+ 0x1ab8, 0x1acc, 0x1ad6, 0x1ad6, 0x1ad6, 0x1ad6, 0x1af4, 0x1af4,
+ 0x1b0a, 0x1b0a, 0x1b0a, 0x1b16, 0x1b16, 0x1b3c, 0x1b44, 0x1b44,
+ 0x1b5a, 0x1b68, 0x1b84, 0x1b84, 0x1b84, 0x1b8e, 0x1ba0, 0x1ba0,
+ 0x1ba0, 0x1ba0, 0x1bb4, 0x1bc0, 0x1bce, 0x1bde, 0x1c0d, 0x1c1b,
+ 0x1c27, 0x1c35, 0x1c35, 0x1c4b, 0x1c55, 0x1c6b, 0x1c81, 0x1c81,
+ 0x1c99, 0x1ca5, 0x1cad, 0x1cad, 0x1cc3, 0x1ce0, 0x1cfe, 0x1cfe,
+ 0x1d10, 0x1d1e, 0x1d37, 0x1d43, 0x1d43, 0x1d43, 0x1d5c, 0x1d75,
+ // Entry 200 - 23F
+ 0x1d90, 0x1dad, 0x1dbb, 0x1dcf, 0x1de6, 0x1df0, 0x1df8, 0x1df8,
+ 0x1e04, 0x1e0c, 0x1e1e, 0x1e30, 0x1e57, 0x1e82, 0x1e94, 0x1e94,
+ 0x1e94, 0x1e9e, 0x1ea6, 0x1eb2, 0x1ebc, 0x1ec6, 0x1ece, 0x1ee4,
+ 0x1ee4, 0x1efa, 0x1f08, 0x1f08, 0x1f16, 0x1f2d, 0x1f3e, 0x1f4a,
+ 0x1f56, 0x1f56, 0x1f64, 0x1f64, 0x1f72, 0x1f7e, 0x1f8c, 0x1f9e,
+ 0x1fd7, 0x1feb, 0x1fff, 0x200d, 0x2026, 0x202c, 0x202c, 0x202c,
+ 0x202c, 0x202c, 0x203a, 0x203a, 0x2046, 0x2058, 0x2064, 0x206e,
+ 0x2076, 0x2086, 0x2086, 0x2098, 0x2098, 0x20a0, 0x20a4, 0x20a8,
+ // Entry 240 - 27F
+ 0x20b2, 0x20bc, 0x20bc, 0x20d0, 0x20e6, 0x2100, 0x2100, 0x2112,
+ 0x212c, 0x2136, 0x2164, 0x216c, 0x2195, 0x2195, 0x21bc, 0x21ef,
+ 0x221e, 0x2245, 0x226e, 0x229b, 0x22d2, 0x22fb, 0x2326, 0x2326,
+ 0x234f, 0x237c, 0x239a, 0x23b0, 0x23e1, 0x2412, 0x2426, 0x2448,
+ 0x246f, 0x249a,
+} // Size: 1244 bytes
+
+var siLangStr string = "" + // Size: 5819 bytes
+ "ඇබ්කාසියානුඅප්\u200dරිකානුඅකාන්ඇම්හාරික්අරාබිඇසමියානුඅසර්බයිජාන්බාෂ්කිර්" +
+ "බෙලරුසියානුබල්ගේරියානුබම්බරාබෙංගාලිටිබෙට්බ්\u200dරේටොන්බොස්නියානුකැටලන" +
+ "්චෙච්නියානුක්\u200dරොඑශියානුචෙත්චවේෂ්වේල්ස්ඩැනිශ්ජර්මන්දිවෙහිඩිසොන්කාඉ" +
+ "ව්ග්\u200dරීකඉංග්\u200dරීසිඑස්පැරන්ටෝස්පාඤ්ඤඑස්තෝනියානුබොස්කෝපර්සියානු" +
+ "ෆින්ලන්තෆීජිෆාරෝස්ප්\u200dරංශබටහිර ෆ්\u200dරිසියානුඅයර්ලන්තගැලීසියානුග" +
+ "ුවාරනිගුජරාටිමැන්ක්ස්හෝසාහීබෲහින්දික්\u200dරෝයේශියානුහයිටිහන්ගේරියානුආ" +
+ "ර්මේනියානුඉන්දුනීසියානුඉග්බෝසිචුආන් යීඅයිස්ලන්තඉතාලිඉනුක්ටිටුට්ජපන්ජාව" +
+ "ාජෝර්ජියානුකිකුයුකසාඛ්කලාලිසට්කමර්කණ්ණඩකොරියානුකාෂ්මීර්කුර්දිකෝනීසියාන" +
+ "ුකිර්ගිස්ලතින්ලක්සැම්බර්ග්ගන්ඩාලින්ගලාලාඕලිතුවේනියානුලුලැට්වියානුමලගාස" +
+ "ිමාවොරිමැසිඩෝනියානුමලයාලම්මොංගෝලියානුමරාතිමැලේමොල්ටිස්බුරුමඋතුරු එන්ඩි" +
+ "බෙලෙනේපාලලන්දේසිනොවේර්ජියානු නයිනෝර්ස්ක්නෝවේජියානු බොක්මාල්ඔරොමෝඔරියාජ" +
+ "න්ජාබිපෝලන්තපෂ්ටොපෘතුගීසික්වීචුවාරොමෑන්ශ්රුන්ඩිරොමේනියානුරුසියානුකින්ය" +
+ "ර්වන්ඩාසංස්කෘතසින්ධිඋතුරු සාමිසන්ග්\u200dරෝසිංහලස්ලෝවැක්ස්ලෝවේනියානුශෝ" +
+ "නාසෝමාලිඇල්බේනියානුසර්බියානුසන්ඩනීසියානුස්වීඩන්ස්වාහිලිදෙමළතෙළිඟුටජික්" +
+ "තායිටිග්\u200dරින්යාටර්ක්මෙන්ටොංගාතුර්කිටාටර්උයිගර්යුක්රේනියානුඋර්දුඋස" +
+ "්බෙක්වියට්නාම්වොලොෆ්ශෝසායොරූබාචීනසුලුටියුනිසියනු අරාබිඇගම්මපුචෙඅසුබෙම්" +
+ "බාබෙනාබටහිර බලොචිබොඩොචිගාචෙරොකීසොරානි කුර්දිෂ්ටයිටාෆර්මාපහළ සෝබියානුඩු" +
+ "ආලාජොල-ෆෝනියිඑම්බුපිලිපීනගගාස්ස්විස් ජර්මනිගුසීහවායිඉහළ සෝබියානුනොම්බා" +
+ "මැකාමීකැබලාකැම්බාමැකොන්ඩ්කබුවෙර්ඩියානෝකොයිරා චිනිකලෙන්ජන්කොමි-පර්මියාක" +
+ "්කොන්කනිශාම්බලාබාෆියාලංගිලකොටඋතුරු ලුරිලුඔලුයියාමසායිමෙරුමොරිස්යෙම්මඛු" +
+ "වා-මීටෝමෙටාමොහොව්ක්මුන්ඩන්මැසන්ඩරනිනාමාපහළ ජර්මන්කුවාසිඔඑන්‘කෝනොයර්නයන" +
+ "්කොළේකියිචේරෝම්බෝර්වාසම්බුරුසංගුදකුණු කුර්දිසෙනාකෝයිරාබොරො සෙන්නිටචේල්" +
+ "හිට්දකුණු සාමිලුලේ සාමිඉනාරි සාමිස්කොල්ට් සාමිකොන්ගෝ ස්වාහිලිටෙසෝටසවාක" +
+ "්මධ්\u200dයම ඇට්ලස් ටමසිට්නොදන්නා භාෂාවවයිවුන්ජෝවොපිරිසොගාසම්මත මොරොක්" +
+ "කෝ ටමසිග්ත්වාග් විද්\u200dයා අන්තර්ගතයක් නැතනවීන සම්මත අරාබිඔස්ට්" +
+ "\u200dරියානු ජර්මන්ස්විස් උසස් ජර්මන්ඕස්ට්\u200dරේලියානු ඉංග්\u200dරීසික" +
+ "ැනේඩියානු ඉංග්\u200dරීසිබ්\u200dරිතාන්\u200dය ඉංග්\u200dරීසිඇමෙරිකානු " +
+ "ඉංග්\u200dරීසිලතින් ඇමරිකානු ස්පාඤ්ඤයුරෝපීය ස්පාඤ්ඤමෙක්සිකානු ස්පාඤ්ඤක" +
+ "ැනේඩියානු ප්\u200dරංශස්විස් ප්\u200dරංශපහළ සැක්සන්ෆ්ලෙමිශ්බ්\u200dරසීල" +
+ " පෘතුගීසියුරෝපීය පෘතුගීසිමොල්ඩෝවාවසුළුකළ චීනසාම්ප්\u200dරදායික චීන"
+
+var siLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0021, 0x0021, 0x003f, 0x004e, 0x0069, 0x0069,
+ 0x0078, 0x0090, 0x0090, 0x0090, 0x00b1, 0x00c9, 0x00ea, 0x010b,
+ 0x010b, 0x011d, 0x0132, 0x0144, 0x015f, 0x017d, 0x018f, 0x01ad,
+ 0x01ad, 0x01d1, 0x01d1, 0x01dd, 0x01dd, 0x01ec, 0x01fe, 0x0210,
+ 0x0222, 0x0234, 0x024c, 0x0255, 0x0267, 0x0282, 0x02a0, 0x02b5,
+ 0x02d6, 0x02e8, 0x0303, 0x0303, 0x031b, 0x0327, 0x0339, 0x034b,
+ 0x037c, 0x0394, 0x0394, 0x03b2, 0x03c7, 0x03dc, 0x03f4, 0x0400,
+ 0x040c, 0x041e, 0x041e, 0x0445, 0x0454, 0x0475, 0x0496, 0x0496,
+ // Entry 40 - 7F
+ 0x0496, 0x04bd, 0x04bd, 0x04cc, 0x04e8, 0x04e8, 0x04e8, 0x0503,
+ 0x0512, 0x0533, 0x053f, 0x054b, 0x0569, 0x0569, 0x057b, 0x057b,
+ 0x058a, 0x05a2, 0x05ae, 0x05bd, 0x05d5, 0x05d5, 0x05ed, 0x05ff,
+ 0x05ff, 0x061d, 0x0635, 0x0644, 0x0668, 0x0677, 0x0677, 0x068c,
+ 0x0695, 0x06b9, 0x06bf, 0x06dd, 0x06ef, 0x06ef, 0x0701, 0x0725,
+ 0x073a, 0x075b, 0x076a, 0x0776, 0x078e, 0x079d, 0x079d, 0x07c8,
+ 0x07d7, 0x07d7, 0x07ec, 0x0832, 0x0869, 0x0869, 0x0869, 0x0869,
+ 0x0869, 0x0869, 0x0878, 0x0887, 0x0887, 0x089c, 0x089c, 0x08ae,
+ // Entry 80 - BF
+ 0x08bd, 0x08d5, 0x08ed, 0x0905, 0x0917, 0x0935, 0x094d, 0x0971,
+ 0x0986, 0x0986, 0x0998, 0x09b4, 0x09cc, 0x09db, 0x09f3, 0x0a17,
+ 0x0a17, 0x0a23, 0x0a35, 0x0a56, 0x0a71, 0x0a71, 0x0a71, 0x0a95,
+ 0x0aaa, 0x0ac2, 0x0ace, 0x0ae0, 0x0aef, 0x0afb, 0x0b1c, 0x0b37,
+ 0x0b37, 0x0b46, 0x0b58, 0x0b58, 0x0b67, 0x0b67, 0x0b79, 0x0b9d,
+ 0x0bac, 0x0bc1, 0x0bc1, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bee, 0x0bfa,
+ 0x0bfa, 0x0c0c, 0x0c0c, 0x0c15, 0x0c21, 0x0c21, 0x0c21, 0x0c21,
+ 0x0c21, 0x0c52, 0x0c52, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e,
+ // Entry C0 - FF
+ 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c5e, 0x0c6d, 0x0c6d, 0x0c6d,
+ 0x0c6d, 0x0c6d, 0x0c6d, 0x0c6d, 0x0c76, 0x0c76, 0x0c76, 0x0c76,
+ 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76, 0x0c76,
+ 0x0c76, 0x0c88, 0x0c88, 0x0c94, 0x0c94, 0x0c94, 0x0cb3, 0x0cb3,
+ 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3, 0x0cb3,
+ 0x0cb3, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf,
+ 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0cbf, 0x0ccb, 0x0ccb, 0x0ccb,
+ 0x0ccb, 0x0ccb, 0x0ccb, 0x0ccb, 0x0ccb, 0x0cdd, 0x0cdd, 0x0d08,
+ // Entry 100 - 13F
+ 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d08, 0x0d17, 0x0d17,
+ 0x0d17, 0x0d17, 0x0d17, 0x0d26, 0x0d26, 0x0d48, 0x0d48, 0x0d57,
+ 0x0d57, 0x0d73, 0x0d73, 0x0d73, 0x0d82, 0x0d82, 0x0d82, 0x0d82,
+ 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d82, 0x0d97,
+ 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97, 0x0d97,
+ 0x0d97, 0x0d97, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6,
+ 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6, 0x0da6,
+ 0x0da6, 0x0da6, 0x0dcb, 0x0dcb, 0x0dcb, 0x0dd7, 0x0dd7, 0x0dd7,
+ // Entry 140 - 17F
+ 0x0dd7, 0x0de6, 0x0de6, 0x0de6, 0x0de6, 0x0de6, 0x0e08, 0x0e08,
+ 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08, 0x0e08,
+ 0x0e1a, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e2c, 0x0e3b, 0x0e3b,
+ 0x0e3b, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e4d, 0x0e65, 0x0e8c,
+ 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, 0x0e8c, 0x0eab, 0x0eab, 0x0eab,
+ 0x0eab, 0x0ec3, 0x0ec3, 0x0eeb, 0x0f00, 0x0f00, 0x0f00, 0x0f00,
+ 0x0f00, 0x0f00, 0x0f00, 0x0f00, 0x0f15, 0x0f27, 0x0f27, 0x0f27,
+ 0x0f27, 0x0f27, 0x0f33, 0x0f33, 0x0f33, 0x0f33, 0x0f33, 0x0f33,
+ // Entry 180 - 1BF
+ 0x0f33, 0x0f3f, 0x0f3f, 0x0f3f, 0x0f3f, 0x0f5b, 0x0f5b, 0x0f5b,
+ 0x0f5b, 0x0f5b, 0x0f64, 0x0f64, 0x0f76, 0x0f76, 0x0f76, 0x0f76,
+ 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f85, 0x0f85, 0x0f85,
+ 0x0f85, 0x0f85, 0x0f91, 0x0faf, 0x0faf, 0x0fcb, 0x0fd7, 0x0fd7,
+ 0x0fd7, 0x0fd7, 0x0fd7, 0x0fef, 0x0fef, 0x0fef, 0x1004, 0x1004,
+ 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x1004, 0x101f, 0x101f,
+ 0x101f, 0x102b, 0x1047, 0x1047, 0x1047, 0x1047, 0x1047, 0x105c,
+ 0x105c, 0x105c, 0x105c, 0x105c, 0x106e, 0x106e, 0x107d, 0x107d,
+ // Entry 1C0 - 1FF
+ 0x107d, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095,
+ 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095,
+ 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x1095, 0x10a7, 0x10a7,
+ 0x10a7, 0x10a7, 0x10a7, 0x10a7, 0x10a7, 0x10b9, 0x10b9, 0x10b9,
+ 0x10b9, 0x10b9, 0x10b9, 0x10c5, 0x10c5, 0x10c5, 0x10c5, 0x10da,
+ 0x10da, 0x10da, 0x10da, 0x10da, 0x10e6, 0x10e6, 0x10e6, 0x10e6,
+ 0x1108, 0x1108, 0x1114, 0x1114, 0x1114, 0x1145, 0x1145, 0x1145,
+ 0x1160, 0x1160, 0x1160, 0x1160, 0x1160, 0x1160, 0x117c, 0x1195,
+ // Entry 200 - 23F
+ 0x11b1, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x11d6,
+ 0x11d6, 0x11d6, 0x11d6, 0x11d6, 0x1201, 0x1201, 0x1201, 0x1201,
+ 0x1201, 0x1201, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d,
+ 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d,
+ 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x120d, 0x121f, 0x121f,
+ 0x1257, 0x1257, 0x1257, 0x1257, 0x127c, 0x1285, 0x1285, 0x1285,
+ 0x1285, 0x1285, 0x1285, 0x1285, 0x1297, 0x1297, 0x1297, 0x1297,
+ 0x1297, 0x12a9, 0x12a9, 0x12a9, 0x12a9, 0x12b5, 0x12b5, 0x12b5,
+ // Entry 240 - 27F
+ 0x12b5, 0x12b5, 0x12b5, 0x12b5, 0x12b5, 0x12b5, 0x12b5, 0x12b5,
+ 0x12f6, 0x12f6, 0x1344, 0x1344, 0x1370, 0x1370, 0x13a7, 0x13d9,
+ 0x141f, 0x1459, 0x1496, 0x14cd, 0x150b, 0x1536, 0x156a, 0x156a,
+ 0x159b, 0x15c0, 0x15df, 0x15f7, 0x1625, 0x1653, 0x166e, 0x166e,
+ 0x168a, 0x16bb,
+} // Size: 1244 bytes
+
+var skLangStr string = "" + // Size: 5626 bytes
+ "afarčinaabcházčinaavestčinaafrikánčinaakančinaamharčinaaragónčinaarabčin" +
+ "aásamčinaavarčinaaymarčinaazerbajdžančinabaškirčinabieloruštinabulharčin" +
+ "abislamabambarčinabengálčinatibetčinabretónčinabosniačtinakatalánčinačeč" +
+ "enčinačamorčinakorzičtinakríčeštinacirkevná slovančinačuvaštinawaleština" +
+ "dánčinanemčinadivehidzongkäeweštinagréčtinaangličtinaesperantošpanielčin" +
+ "aestónčinabaskičtinaperzštinafulbčinafínčinafidžijčinafaerčinafrancúzšti" +
+ "nazápadná frízštinaírčinaškótska gaelčinagalícijčinaguaraníjčinagudžarát" +
+ "činamančinahauštinahebrejčinahindčinahiri motuchorvátčinahaitčinamaďarč" +
+ "inaarménčinahererointerlinguaindonézštinainterlingueigboštinas’čchuanská" +
+ " ioštinainupiaqidoislandčinataliančinainuktitutjapončinajávčinagruzínčin" +
+ "akongčinakikujčinakuaňamakazaštinagrónčinakhmérčinakannadčinakórejčinaka" +
+ "nurijčinakašmírčinakurdčinakomijčinakornčinakirgizštinalatinčinaluxembur" +
+ "činagandčinalimburčinalingalčinalaoštinalitovčinalubčina (katanžská)lot" +
+ "yštinamalgaštinakajin-majolmaorijčinamacedónčinamalajálamčinamongolčinam" +
+ "aráthčinamalajčinamaltčinabarmčinanauruseverné ndebelenepálčinandongahol" +
+ "andčinanórčina (nynorsk)nórčina (bokmål)južná ndebelčinanavajočewaokcitá" +
+ "nčinaodžibvaoromčinauríjčinaosetčinapandžábčinapálípoľštinapaštčinaportu" +
+ "galčinakečuánčinarétorománčinakirundčinarumunčinaruštinakiňarwandasanskr" +
+ "itsardínčinasindhčinalapončina (severná)sangosinhalčinaslovenčinaslovinč" +
+ "inasamojčinašončinasomálčinaalbánčinasrbčinasvazijčinajužná sothčinasund" +
+ "činašvédčinasvahilčinatamilčinatelugčinatadžičtinathajčinatigriňaturkmé" +
+ "nčinatswančinatongčinaturečtinatsongatatárčinatahitčinaujgurčinaukrajinč" +
+ "inaurdčinauzbečtinavendčinavietnamčinavolapükvalónčinawolofčinaxhoštinaj" +
+ "idišjorubčinačuangčinačínštinazuluštinaacehčinaačoliadangmeadygčinaafrih" +
+ "iliaghemainčinaakkadčinaaleutčinajužná altajčinastará angličtinaangikaar" +
+ "amejčinaaraukánčinaarapahoarawačtinaasuastúrčinaavadhčinabalúčtinabalijč" +
+ "inabasabamunghomalabedžabembabenabafutzápadná balúčtinabhódžpurčinabikol" +
+ "binikomsiksikabradžčinabodoakooseburiatčinabugištinabulublinmedumbakaddo" +
+ "karibskýcayugaatsamcebuánčinakigačibčačagatajčinatrukmarijčinačinucký ža" +
+ "rgónčoktavčinačipevajčinačerokíčejenčinakurdčina (sorání)koptčinakrymská" +
+ " turečtinakašubčinadakotčinadarginčinataitadelawarčinaslovančinadogribči" +
+ "nadinkazarmadógrídolnolužická srbčinadualastredná holandčinajola-fonyiďu" +
+ "ladazagaembuefikstaroegyptskýekadžukelamčinastredná angličtinaewondofang" +
+ "činafilipínčinafončinastredná francúzštinastará francúzštinaseverná frí" +
+ "zštinavýchodná frízštinafriulčinagagagauzštinagayogbajaetiópčinakiribatč" +
+ "inastredná horná nemčinastará horná nemčinagóndčinagorontalogótčinagrebo" +
+ "starogréčtinanemčina (švajčiarska)gusiigwichʼinhaidahavajčinahiligajnonč" +
+ "inachetitčinahmonghornolužická srbčinahupčinaibančinaibibioilokánčinaing" +
+ "uštinalojbanngombamašamežidovská perzštinažidovská arabčinakarakalpačtin" +
+ "akabylčinakačjinčinajjukambakawikabardčinakanembutyapmakondekapverdčinak" +
+ "orokhasijčinachotančinazápadná songhajčinakakokalendžinkimbundukomi-perm" +
+ "iačtinakonkánčinakusaiekpellekaračajevsko-balkarský jazykkarelčinakurukh" +
+ "činašambalabafiakolínčinakumyčtinakutenajčinažidovská španielčinalangil" +
+ "ahandčinalambalezginčinalakotčinamongoloziseverné luriluba-luluánčinalui" +
+ "seňolundaluomizorámčinaluhjamadurčinamafamagadhčinamaithilčinamakasarčin" +
+ "amandingomasajčinamabamokšiančinamandarčinamendimerumaurícijská kreolčin" +
+ "astredná írčinamakua-meettometa’mikmakčinaminangkabaučinamandžuštinamaní" +
+ "purčinamohawkčinamossimundangviaceré jazykykríkčinamirandčinamarawarimye" +
+ "neerzjančinamázandaránčinaneapolčinanamadolná nemčinanevárčinaniasánčina" +
+ "niueštinakwasiongiemboonnogajčinastará nórčinan’koseverná sothčinanuerkl" +
+ "asická nevárčinaňamweziňankoleňoronzimaosagčinaosmanská turečtinapangasi" +
+ "nančinapahlavípampangapapiamentopalaučinastará perzštinafeničtinapohnpei" +
+ "činastará okcitánčinakičéradžastančinarapanujčinararotonganromborómčina" +
+ "arumunčinarwasandawejakutčinasamaritánska aramejčinasamburusasačtinasant" +
+ "alčinangambaysangusicílčinaškótčinakurdčina (južná)senecasenaselkupčinak" +
+ "oyraboro sennistará írčinatachelhitšančinačadská arabčinasidamolapončina" +
+ " (južná)lapončina (lulská)lapončina (inarijská)lapončina (skoltská)sonin" +
+ "kesogdijčinasrananserersahosukumasususumerčinakomorčinasvahilčina (konžs" +
+ "ká)klasická sýrčinasýrčinatemnetesoterenotetumtigrejčinativtokelaučinakl" +
+ "ingónčinatlingitčinatamašekňasa tongatok pisintarokotsimshijské jazykytu" +
+ "mbukatuvalčinatasawaqtuviančinatamašek (stredomarocký)udmurtčinaugaritči" +
+ "naumbundukoreňvaivodčinavunjowalserčinawalamowaraywashowarlpirikalmyčtin" +
+ "asogajaojapčinajangbenyembakantončinazapotéčtinasystém Blisszenagatamaše" +
+ "k (štandardný marocký)zuništinabez jazykového obsahuzázáarabčina (modern" +
+ "á štandardná)nemčina (rakúska)nemčina (švajčiarska spisovná)angličtina " +
+ "(austrálska)angličtina (kanadská)angličtina (britská)angličtina (americk" +
+ "á)španielčina (latinskoamerická)španielčina (európska)španielčina (mexi" +
+ "cká)francúzština (kanadská)francúzština (švajčiarska)dolná saštinaflámči" +
+ "naportugalčina (brazílska)portugalčina (európska)moldavčinasrbochorvátči" +
+ "načínština (zjednodušená)čínština (tradičná)"
+
+var skLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0015, 0x001f, 0x002c, 0x0035, 0x003f, 0x004b,
+ 0x0054, 0x005e, 0x0067, 0x0071, 0x0082, 0x008e, 0x009b, 0x00a6,
+ 0x00ad, 0x00b8, 0x00c4, 0x00ce, 0x00da, 0x00e6, 0x00f3, 0x00ff,
+ 0x010a, 0x0115, 0x0119, 0x0122, 0x0137, 0x0142, 0x014c, 0x0155,
+ 0x015d, 0x0163, 0x016b, 0x0174, 0x017e, 0x0189, 0x0192, 0x019f,
+ 0x01aa, 0x01b5, 0x01bf, 0x01c8, 0x01d1, 0x01dd, 0x01e6, 0x01f4,
+ 0x0209, 0x0211, 0x0224, 0x0231, 0x023f, 0x024e, 0x0256, 0x025f,
+ 0x026a, 0x0273, 0x027c, 0x0289, 0x0292, 0x029d, 0x02a8, 0x02ae,
+ // Entry 40 - 7F
+ 0x02b9, 0x02c7, 0x02d2, 0x02dc, 0x02f4, 0x02fb, 0x02fe, 0x0309,
+ 0x0314, 0x031d, 0x0327, 0x0330, 0x033c, 0x0345, 0x034f, 0x0357,
+ 0x0361, 0x036b, 0x0376, 0x0381, 0x038c, 0x0398, 0x03a5, 0x03ae,
+ 0x03b8, 0x03c1, 0x03cd, 0x03d7, 0x03e4, 0x03ed, 0x03f8, 0x0403,
+ 0x040c, 0x0416, 0x042c, 0x0436, 0x0441, 0x044c, 0x0457, 0x0464,
+ 0x0473, 0x047e, 0x048a, 0x0494, 0x049d, 0x04a6, 0x04ab, 0x04bb,
+ 0x04c6, 0x04cc, 0x04d7, 0x04ea, 0x04fd, 0x0510, 0x0516, 0x051b,
+ 0x0528, 0x0530, 0x0539, 0x0543, 0x054c, 0x055a, 0x0560, 0x056a,
+ // Entry 80 - BF
+ 0x0574, 0x0581, 0x058e, 0x059e, 0x05a9, 0x05b3, 0x05bb, 0x05c6,
+ 0x05ce, 0x05da, 0x05e4, 0x05f9, 0x05fe, 0x0609, 0x0614, 0x061f,
+ 0x0629, 0x0632, 0x063d, 0x0648, 0x0650, 0x065b, 0x066c, 0x0675,
+ 0x0680, 0x068b, 0x0695, 0x069f, 0x06ab, 0x06b4, 0x06bc, 0x06c9,
+ 0x06d3, 0x06dc, 0x06e6, 0x06ec, 0x06f7, 0x0701, 0x070b, 0x0717,
+ 0x071f, 0x0729, 0x0732, 0x073e, 0x0746, 0x0751, 0x075b, 0x0764,
+ 0x076a, 0x0774, 0x077f, 0x078a, 0x0794, 0x079d, 0x07a3, 0x07aa,
+ 0x07b3, 0x07b3, 0x07bb, 0x07c0, 0x07c8, 0x07d2, 0x07d2, 0x07dc,
+ // Entry C0 - FF
+ 0x07dc, 0x07ee, 0x0800, 0x0806, 0x0811, 0x081e, 0x081e, 0x0825,
+ 0x0825, 0x0830, 0x0830, 0x0830, 0x0833, 0x0833, 0x083e, 0x083e,
+ 0x0848, 0x0853, 0x085d, 0x085d, 0x0861, 0x0866, 0x0866, 0x086d,
+ 0x0873, 0x0878, 0x0878, 0x087c, 0x0881, 0x0881, 0x0896, 0x08a5,
+ 0x08aa, 0x08ae, 0x08ae, 0x08b1, 0x08b8, 0x08b8, 0x08b8, 0x08c3,
+ 0x08c3, 0x08c7, 0x08cd, 0x08d8, 0x08e2, 0x08e6, 0x08ea, 0x08f1,
+ 0x08f6, 0x08ff, 0x0905, 0x090a, 0x0916, 0x091a, 0x0921, 0x092e,
+ 0x0932, 0x093c, 0x094e, 0x095a, 0x0967, 0x096f, 0x097a, 0x098e,
+ // Entry 100 - 13F
+ 0x0997, 0x0997, 0x09aa, 0x09b5, 0x09bf, 0x09ca, 0x09cf, 0x09db,
+ 0x09e6, 0x09f1, 0x09f6, 0x09fb, 0x0a02, 0x0a19, 0x0a19, 0x0a1e,
+ 0x0a32, 0x0a3c, 0x0a41, 0x0a47, 0x0a4b, 0x0a4f, 0x0a4f, 0x0a5d,
+ 0x0a65, 0x0a6e, 0x0a82, 0x0a82, 0x0a88, 0x0a88, 0x0a91, 0x0a9e,
+ 0x0a9e, 0x0aa6, 0x0aa6, 0x0abd, 0x0ad2, 0x0ad2, 0x0ae6, 0x0afc,
+ 0x0b06, 0x0b08, 0x0b14, 0x0b14, 0x0b18, 0x0b1d, 0x0b1d, 0x0b28,
+ 0x0b34, 0x0b34, 0x0b4c, 0x0b62, 0x0b62, 0x0b6c, 0x0b75, 0x0b7e,
+ 0x0b83, 0x0b92, 0x0baa, 0x0baa, 0x0baa, 0x0baf, 0x0bb8, 0x0bbd,
+ // Entry 140 - 17F
+ 0x0bbd, 0x0bc7, 0x0bc7, 0x0bd6, 0x0be1, 0x0be6, 0x0bfd, 0x0bfd,
+ 0x0c05, 0x0c0e, 0x0c14, 0x0c20, 0x0c2a, 0x0c2a, 0x0c2a, 0x0c30,
+ 0x0c36, 0x0c3d, 0x0c52, 0x0c66, 0x0c66, 0x0c75, 0x0c7f, 0x0c8b,
+ 0x0c8e, 0x0c93, 0x0c97, 0x0ca2, 0x0ca9, 0x0cad, 0x0cb4, 0x0cc0,
+ 0x0cc0, 0x0cc4, 0x0cc4, 0x0ccf, 0x0cda, 0x0cf0, 0x0cf0, 0x0cf0,
+ 0x0cf4, 0x0cfe, 0x0d06, 0x0d17, 0x0d23, 0x0d29, 0x0d2f, 0x0d4d,
+ 0x0d4d, 0x0d4d, 0x0d57, 0x0d62, 0x0d6a, 0x0d6f, 0x0d7a, 0x0d84,
+ 0x0d90, 0x0da8, 0x0dad, 0x0db8, 0x0dbd, 0x0dc8, 0x0dc8, 0x0dc8,
+ // Entry 180 - 1BF
+ 0x0dc8, 0x0dd2, 0x0dd2, 0x0dd7, 0x0ddb, 0x0de8, 0x0de8, 0x0df9,
+ 0x0e01, 0x0e06, 0x0e09, 0x0e16, 0x0e1b, 0x0e1b, 0x0e1b, 0x0e25,
+ 0x0e29, 0x0e34, 0x0e40, 0x0e4c, 0x0e54, 0x0e5e, 0x0e62, 0x0e6f,
+ 0x0e7a, 0x0e7f, 0x0e83, 0x0e9b, 0x0eac, 0x0eb8, 0x0ebf, 0x0eca,
+ 0x0eda, 0x0ee7, 0x0ef4, 0x0eff, 0x0f04, 0x0f04, 0x0f0b, 0x0f1a,
+ 0x0f24, 0x0f2f, 0x0f37, 0x0f37, 0x0f3c, 0x0f47, 0x0f58, 0x0f58,
+ 0x0f63, 0x0f67, 0x0f76, 0x0f81, 0x0f8d, 0x0f97, 0x0f97, 0x0f9d,
+ 0x0fa6, 0x0fb0, 0x0fc0, 0x0fc0, 0x0fc6, 0x0fd8, 0x0fdc, 0x0ff1,
+ // Entry 1C0 - 1FF
+ 0x0ff9, 0x1001, 0x1006, 0x100b, 0x1014, 0x1028, 0x1037, 0x103f,
+ 0x1047, 0x1051, 0x105b, 0x105b, 0x105b, 0x105b, 0x106c, 0x106c,
+ 0x1076, 0x1076, 0x1076, 0x1082, 0x1082, 0x1096, 0x109c, 0x109c,
+ 0x10ab, 0x10b7, 0x10c1, 0x10c1, 0x10c1, 0x10c6, 0x10cf, 0x10cf,
+ 0x10cf, 0x10cf, 0x10da, 0x10dd, 0x10e4, 0x10ee, 0x1107, 0x110e,
+ 0x1118, 0x1123, 0x1123, 0x112a, 0x112f, 0x113a, 0x1145, 0x1145,
+ 0x1158, 0x115e, 0x1162, 0x1162, 0x116d, 0x117c, 0x118b, 0x118b,
+ 0x1194, 0x119d, 0x11af, 0x11b5, 0x11b5, 0x11b5, 0x11c9, 0x11dd,
+ // Entry 200 - 23F
+ 0x11f4, 0x120a, 0x1211, 0x121c, 0x1222, 0x1227, 0x122b, 0x122b,
+ 0x1231, 0x1235, 0x123f, 0x1249, 0x1260, 0x1273, 0x127c, 0x127c,
+ 0x127c, 0x1281, 0x1285, 0x128b, 0x1290, 0x129b, 0x129e, 0x12aa,
+ 0x12aa, 0x12b7, 0x12c3, 0x12c3, 0x12cb, 0x12d6, 0x12df, 0x12df,
+ 0x12e5, 0x12e5, 0x12f8, 0x12f8, 0x12ff, 0x1309, 0x1310, 0x131b,
+ 0x1334, 0x133f, 0x134a, 0x1351, 0x1357, 0x135a, 0x135a, 0x135a,
+ 0x135a, 0x135a, 0x1362, 0x1362, 0x1367, 0x1372, 0x1378, 0x137d,
+ 0x1382, 0x138a, 0x138a, 0x1395, 0x1395, 0x1399, 0x139c, 0x13a4,
+ // Entry 240 - 27F
+ 0x13ab, 0x13b0, 0x13b0, 0x13bb, 0x13c8, 0x13d5, 0x13d5, 0x13db,
+ 0x13fb, 0x1405, 0x141b, 0x1421, 0x1442, 0x1442, 0x1455, 0x1477,
+ 0x1490, 0x14a7, 0x14bd, 0x14d4, 0x14f5, 0x150e, 0x1526, 0x1526,
+ 0x1540, 0x155e, 0x156d, 0x1577, 0x1591, 0x15aa, 0x15b5, 0x15c6,
+ 0x15e2, 0x15fa,
+} // Size: 1244 bytes
+
+var slLangStr string = "" + // Size: 6193 bytes
+ "afarščinaabhaščinaavestijščinaafrikanščinaakanščinaamharščinaaragonščina" +
+ "arabščinaasamščinaavarščinaajmarščinaazerbajdžanščinabaškirščinabelorušč" +
+ "inabolgarščinabislamščinabambarščinabengalščinatibetanščinabretonščinabo" +
+ "sanščinakatalonščinačečenščinačamorščinakorziščinakrijščinačeščinastara " +
+ "cerkvena slovanščinačuvaščinavaližanščinadanščinanemščinadiveščinadzonka" +
+ "evenščinagrščinaangleščinaesperantošpanščinaestonščinabaskovščinaperzijš" +
+ "činafulščinafinščinafidžijščinaferščinafrancoščinafrizijščinairščinaško" +
+ "tska gelščinagalicijščinagvaranijščinagudžaratščinamanščinahavščinahebre" +
+ "jščinahindujščinahiri motuhrvaščinahaitijska kreolščinamadžarščinaarmenš" +
+ "činahererointerlingvaindonezijščinainterlingveigboščinasečuanska jiščin" +
+ "ainupiaščinaidoislandščinaitalijanščinainuktitutščinajaponščinajavanščin" +
+ "agruzinščinakongovščinakikujščinakvanjamakazaščinagrenlandščinakmerščina" +
+ "kanadakorejščinakanurščinakašmirščinakurdščinakomijščinakornijščinakirgi" +
+ "ščinalatinščinaluksemburščinagandalimburščinalingalalaoščinalitovščinal" +
+ "uba-katangalatvijščinamalagaščinamarshallovščinamaorščinamakedonščinamal" +
+ "ajalamščinamongolščinamaratščinamalajščinamalteščinaburmanščinanaurujšči" +
+ "naseverna ndebelščinanepalščinanizozemščinanovonorveščinaknjižna norvešč" +
+ "inajužna ndebelščinanavajščinanjanščinaokcitanščinaanašinabščinaoromoori" +
+ "jščinaosetinščinapandžabščinapalijščinapoljščinapaštunščinaportugalščina" +
+ "kečuanščinaretoromanščinarundščinaromunščinaruščinaruandščinasanskrtsard" +
+ "inščinasindščinaseverna samijščinasangosingalščinaslovaščinaslovenščinas" +
+ "amoanščinašonščinasomalščinaalbanščinasrbščinasvazijščinasesotosundanšči" +
+ "našvedščinasvahilitamilščinatelugijščinatadžiščinatajščinatigrajščinatur" +
+ "kmenščinacvanščinatongščinaturščinatsongatatarščinatahitščinaujgurščinau" +
+ "krajinščinaurdujščinauzbeščinavendavietnamščinavolapukvalonščinavolofšči" +
+ "nakoščinajidišjorubščinakitajščinazulujščinaačejščinaačolijščinaadangmej" +
+ "ščinaadigejščinaafrihiliaghemščinaainujščinaakadščinaaleutščinajužna al" +
+ "tajščinastara angleščinaangikaščinaaramejščinaaravkanščinaarapaščinaarav" +
+ "aščinaasujščinaasturijščinaavadščinabeludžijščinabalijščinabasabedžabemb" +
+ "abenajščinazahodnobalučijščinabodžpuribikolski jezikedosiksikabradžbakan" +
+ "ščinabodojščinaburjatščinabuginščinablinščinakadoščinakaribski jezikseb" +
+ "uanščinačigajščinačibčevščinačagatajščinatrukeščinamarijščinačinuški žar" +
+ "gončoktavščinačipevščinačerokeščinačejenščinasoranska kurdščinakoptščina" +
+ "krimska tatarščinakašubščinadakotščinadarginščinataitajščinadelavarščina" +
+ "slavejščinadogribdinkazarmajščinadogridolnja lužiška srbščinadualasrednj" +
+ "a nizozemščinajola-fonjiščinadiulaembujščinaefiščinastara egipčanščinaek" +
+ "ajukelamščinasrednja angleščinaevondovščinafangijščinafilipinščinafonšči" +
+ "nasrednja francoščinastara francoščinaseverna frizijščinavzhodna frizijš" +
+ "činafurlanščinagagagavščinagajščinagbajščinaetiopščinakiribatščinasredn" +
+ "ja visoka nemščinastara visoka nemščinagondigorontalščinagotščinagrebšči" +
+ "nastara grščinanemščina (Švica)gusijščinahaidščinahavajščinahiligajnonšč" +
+ "inahetitščinahmonščinagornja lužiška srbščinahupaibanščinailokanščinaing" +
+ "uščinalojbanngombamačamejščinajudovska perzijščinajudovska arabščinakara" +
+ "kalpaščinakabilščinakačinščinakambaščinakavikabardinščinatjapska nigerij" +
+ "ščinamakondščinazelenortskootoška kreolščinakasikotanščinakoyra chiinik" +
+ "alenjinščinakimbundukomi-permjaščinakonkanščinakosrajščinakpelejščinakar" +
+ "ačaj-balkarščinakarelščinakurukshambalabafiakumiščinakutenajščinaladinšč" +
+ "inalangijščinalandalambalezginščinalakotščinamongolozisevernolurijščinal" +
+ "uba-lulualuisenščinalundaluolushailuhijščinamadurščinamagadščinamaitilim" +
+ "akasarščinamandingomasajščinamokšavščinamandarščinamendemerumorisjenščin" +
+ "asrednja irščinamakuva-metometamikmaščinaminangkabaumandžurščinamanipurš" +
+ "činamohoščinamosijščinamundangveč jezikovmirandeščinamarvarščinaerzjanš" +
+ "činamazanderanščinanapolitanščinakhoekhoenizka nemščinanevarščinaniašči" +
+ "naniuejščinakwasionogajščinastara nordijščinan’koseverna sotščinanueršči" +
+ "naklasična nevarščinanjamveščinanjankolenjoronzimaosageotomanska turščin" +
+ "apangasinanščinapampanščinapapiamentupalavanščinastara perzijščinafeniča" +
+ "nščinaponpejščinastara provansalščinaquicheradžastanščinarapanujščinarar" +
+ "otongščinaromboromščinaaromunščinarwajakutščinasamaritanska aramejščinas" +
+ "amburščinasasaščinasantalščinasangujščinasicilijanščinaškotščinajužna ku" +
+ "rdščinasenaselkupščinakoyraboro sennistara irščinatahelitska berberščina" +
+ "šanščinasidamščinajužna samijščinaluleška samijščinainarska samijščinas" +
+ "amijščina Skoltsurinamska kreolščinasererščinasukumasusujščinasumerščina" +
+ "šikomorsvahili (Kongo)klasična sirščinasirščinatemnejščinatesotetumščin" +
+ "atigrejščinativščinatokelavščinaklingonščinatlingitščinatamajaščinamalav" +
+ "ijska tongščinatok pisintsimščinatumbukščinatuvalujščinatasawaqtuvinščin" +
+ "atamašek (srednji atlas)udmurtščinaugaritski jezikumbundščinaneznan ali " +
+ "neveljaven jezikvajščinavotjaščinavunjovalamščinavarajščinavašajščinavar" +
+ "lpirščinakalmiščinasogščinajaojščinajapščinakantonščinazapoteščinaznakov" +
+ "ni jezik Blisszenaščinastandardni maroški tamazigzunijščinabrez jezikosl" +
+ "ovne vsebinezazajščinasodobna standardna arabščinaavstrijska nemščinavis" +
+ "oka nemščina (Švica)avstralska angleščinakanadska angleščinaangleščina (" +
+ "VB)angleščina (ZDA)latinskoameriška španščinaiberska španščinakanadska f" +
+ "rancoščinašvicarska francoščinanizka saščinaflamščinabrazilska portugalš" +
+ "činaiberska portugalščinamoldavščinasrbohrvaščinapoenostavljena kitajšč" +
+ "inatradicionalna kitajščina"
+
+var slLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000b, 0x0016, 0x0024, 0x0032, 0x003d, 0x0049, 0x0056,
+ 0x0061, 0x006c, 0x0077, 0x0083, 0x0096, 0x00a4, 0x00b1, 0x00be,
+ 0x00cb, 0x00d8, 0x00e5, 0x00f3, 0x0100, 0x010c, 0x011a, 0x0128,
+ 0x0135, 0x0141, 0x014c, 0x0156, 0x0172, 0x017e, 0x018d, 0x0197,
+ 0x01a1, 0x01ac, 0x01b2, 0x01bd, 0x01c6, 0x01d2, 0x01db, 0x01e7,
+ 0x01f3, 0x0200, 0x020d, 0x0217, 0x0221, 0x022f, 0x0239, 0x0246,
+ 0x0253, 0x025c, 0x026f, 0x027d, 0x028c, 0x029c, 0x02a6, 0x02b0,
+ 0x02bd, 0x02ca, 0x02d3, 0x02de, 0x02f4, 0x0302, 0x030e, 0x0314,
+ // Entry 40 - 7F
+ 0x031f, 0x032f, 0x033a, 0x0345, 0x0359, 0x0366, 0x0369, 0x0376,
+ 0x0385, 0x0395, 0x03a1, 0x03ad, 0x03ba, 0x03c7, 0x03d3, 0x03db,
+ 0x03e6, 0x03f5, 0x0400, 0x0406, 0x0412, 0x041e, 0x042c, 0x0437,
+ 0x0443, 0x0450, 0x045c, 0x0468, 0x0478, 0x047d, 0x048a, 0x0491,
+ 0x049b, 0x04a7, 0x04b3, 0x04c0, 0x04cd, 0x04de, 0x04e9, 0x04f7,
+ 0x0507, 0x0514, 0x0520, 0x052c, 0x0538, 0x0545, 0x0552, 0x0567,
+ 0x0573, 0x0573, 0x0581, 0x0591, 0x05a6, 0x05ba, 0x05c6, 0x05d1,
+ 0x05df, 0x05ef, 0x05f4, 0x05ff, 0x060c, 0x061b, 0x0627, 0x0632,
+ // Entry 80 - BF
+ 0x0640, 0x064f, 0x065d, 0x066d, 0x0678, 0x0684, 0x068d, 0x0699,
+ 0x06a0, 0x06ad, 0x06b8, 0x06cc, 0x06d1, 0x06de, 0x06ea, 0x06f7,
+ 0x0704, 0x070f, 0x071b, 0x0727, 0x0731, 0x073e, 0x0744, 0x0751,
+ 0x075d, 0x0764, 0x0770, 0x077e, 0x078b, 0x0795, 0x07a2, 0x07b0,
+ 0x07bb, 0x07c6, 0x07d0, 0x07d6, 0x07e2, 0x07ee, 0x07fa, 0x0808,
+ 0x0814, 0x081f, 0x0824, 0x0832, 0x0839, 0x0845, 0x0851, 0x085a,
+ 0x0860, 0x086c, 0x086c, 0x0878, 0x0884, 0x0890, 0x089e, 0x08ad,
+ 0x08ba, 0x08ba, 0x08c2, 0x08ce, 0x08da, 0x08e5, 0x08e5, 0x08f1,
+ // Entry C0 - FF
+ 0x08f1, 0x0904, 0x0916, 0x0923, 0x0930, 0x093e, 0x093e, 0x094a,
+ 0x094a, 0x0956, 0x0956, 0x0956, 0x0961, 0x0961, 0x096f, 0x096f,
+ 0x097a, 0x098a, 0x0996, 0x0996, 0x099a, 0x099a, 0x099a, 0x099a,
+ 0x09a0, 0x09a5, 0x09a5, 0x09b1, 0x09b1, 0x09b1, 0x09c7, 0x09d0,
+ 0x09de, 0x09e1, 0x09e1, 0x09e1, 0x09e8, 0x09e8, 0x09e8, 0x09fa,
+ 0x09fa, 0x0a06, 0x0a06, 0x0a13, 0x0a1f, 0x0a1f, 0x0a2a, 0x0a2a,
+ 0x0a35, 0x0a43, 0x0a43, 0x0a43, 0x0a50, 0x0a5d, 0x0a6c, 0x0a7b,
+ 0x0a87, 0x0a93, 0x0aa4, 0x0ab2, 0x0abf, 0x0acd, 0x0ada, 0x0aee,
+ // Entry 100 - 13F
+ 0x0af9, 0x0af9, 0x0b0d, 0x0b1a, 0x0b26, 0x0b33, 0x0b40, 0x0b4e,
+ 0x0b5b, 0x0b61, 0x0b66, 0x0b73, 0x0b78, 0x0b93, 0x0b93, 0x0b98,
+ 0x0bae, 0x0bbf, 0x0bc4, 0x0bc4, 0x0bd0, 0x0bda, 0x0bda, 0x0bef,
+ 0x0bf5, 0x0c00, 0x0c14, 0x0c14, 0x0c22, 0x0c22, 0x0c2f, 0x0c3d,
+ 0x0c3d, 0x0c47, 0x0c47, 0x0c5c, 0x0c6f, 0x0c6f, 0x0c84, 0x0c99,
+ 0x0ca6, 0x0ca8, 0x0cb4, 0x0cb4, 0x0cbe, 0x0cc9, 0x0cc9, 0x0cd5,
+ 0x0ce3, 0x0ce3, 0x0cfc, 0x0d13, 0x0d13, 0x0d18, 0x0d27, 0x0d31,
+ 0x0d3c, 0x0d4b, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d6a, 0x0d6a, 0x0d75,
+ // Entry 140 - 17F
+ 0x0d75, 0x0d81, 0x0d81, 0x0d92, 0x0d9e, 0x0da9, 0x0dc4, 0x0dc4,
+ 0x0dc8, 0x0dd3, 0x0dd3, 0x0de0, 0x0deb, 0x0deb, 0x0deb, 0x0df1,
+ 0x0df7, 0x0e06, 0x0e1c, 0x0e30, 0x0e30, 0x0e40, 0x0e4c, 0x0e59,
+ 0x0e59, 0x0e65, 0x0e69, 0x0e78, 0x0e78, 0x0e8e, 0x0e9b, 0x0eba,
+ 0x0eba, 0x0eba, 0x0eba, 0x0ebe, 0x0eca, 0x0ed6, 0x0ed6, 0x0ed6,
+ 0x0ed6, 0x0ee5, 0x0eed, 0x0eff, 0x0f0c, 0x0f19, 0x0f26, 0x0f3c,
+ 0x0f3c, 0x0f3c, 0x0f48, 0x0f4d, 0x0f55, 0x0f5a, 0x0f5a, 0x0f65,
+ 0x0f73, 0x0f7f, 0x0f8c, 0x0f91, 0x0f96, 0x0fa3, 0x0fa3, 0x0fa3,
+ // Entry 180 - 1BF
+ 0x0fa3, 0x0faf, 0x0faf, 0x0fb4, 0x0fb8, 0x0fcb, 0x0fcb, 0x0fd5,
+ 0x0fe2, 0x0fe7, 0x0fea, 0x0ff0, 0x0ffc, 0x0ffc, 0x0ffc, 0x1008,
+ 0x1008, 0x1014, 0x101b, 0x1029, 0x1031, 0x103d, 0x103d, 0x104b,
+ 0x1058, 0x105d, 0x1061, 0x1070, 0x1081, 0x108c, 0x1090, 0x109c,
+ 0x10a7, 0x10b6, 0x10c4, 0x10cf, 0x10db, 0x10db, 0x10e2, 0x10ee,
+ 0x10ee, 0x10fc, 0x1109, 0x1109, 0x1109, 0x1116, 0x1127, 0x1127,
+ 0x1137, 0x113f, 0x114f, 0x115b, 0x1165, 0x1171, 0x1171, 0x1177,
+ 0x1177, 0x1183, 0x1196, 0x1196, 0x119c, 0x11ae, 0x11b9, 0x11cf,
+ // Entry 1C0 - 1FF
+ 0x11dc, 0x11e4, 0x11e9, 0x11ee, 0x11f3, 0x1207, 0x1218, 0x1218,
+ 0x1225, 0x122f, 0x123d, 0x123d, 0x123d, 0x123d, 0x1250, 0x1250,
+ 0x125f, 0x125f, 0x125f, 0x126c, 0x126c, 0x1282, 0x1288, 0x1288,
+ 0x1299, 0x12a7, 0x12b6, 0x12b6, 0x12b6, 0x12bb, 0x12c5, 0x12c5,
+ 0x12c5, 0x12c5, 0x12d2, 0x12d5, 0x12d5, 0x12e1, 0x12fb, 0x1308,
+ 0x1313, 0x1320, 0x1320, 0x1320, 0x132d, 0x133d, 0x1349, 0x1349,
+ 0x135b, 0x135b, 0x135f, 0x135f, 0x136c, 0x137b, 0x138a, 0x138a,
+ 0x13a2, 0x13ad, 0x13ad, 0x13b9, 0x13b9, 0x13b9, 0x13cc, 0x13e1,
+ // Entry 200 - 23F
+ 0x13f5, 0x1407, 0x1407, 0x1407, 0x141e, 0x142a, 0x142a, 0x142a,
+ 0x1430, 0x143c, 0x1448, 0x1450, 0x145f, 0x1473, 0x147d, 0x147d,
+ 0x147d, 0x148a, 0x148e, 0x148e, 0x149a, 0x14a7, 0x14b1, 0x14bf,
+ 0x14bf, 0x14cd, 0x14db, 0x14db, 0x14e8, 0x14fe, 0x1507, 0x1507,
+ 0x1507, 0x1507, 0x1512, 0x1512, 0x151f, 0x152d, 0x1534, 0x1540,
+ 0x1558, 0x1565, 0x1574, 0x1581, 0x159c, 0x15a6, 0x15a6, 0x15a6,
+ 0x15a6, 0x15a6, 0x15b2, 0x15b2, 0x15b7, 0x15b7, 0x15c3, 0x15cf,
+ 0x15dc, 0x15ea, 0x15ea, 0x15f6, 0x15f6, 0x1600, 0x160b, 0x1615,
+ // Entry 240 - 27F
+ 0x1615, 0x1615, 0x1615, 0x1622, 0x162f, 0x1643, 0x1643, 0x164e,
+ 0x1669, 0x1675, 0x168e, 0x169a, 0x16b8, 0x16b8, 0x16cd, 0x16e7,
+ 0x16fe, 0x1713, 0x1724, 0x1736, 0x1754, 0x1768, 0x1768, 0x1768,
+ 0x177e, 0x1796, 0x17a5, 0x17b0, 0x17c9, 0x17e0, 0x17ed, 0x17fc,
+ 0x1817, 0x1831,
+} // Size: 1244 bytes
+
+var sqLangStr string = "" + // Size: 2672 bytes
+ "abkazishtafrikanishtakanishtamarikishtarabishtasamezishtazerbajxhanishtb" +
+ "ashkirishtbjellorusishtbullgarishtbambarishtbengalishttibetishtbretonish" +
+ "tboshnjakishtkatalonishtçeçenishtkorsikanishtçekishtçuvashishtuellsishtd" +
+ "anishtgjermanishtxhongaishtjuishtgreqishtanglishtesperantospanjishteston" +
+ "ishtbaskishtpersishtfinlandishtfixhianishtfaroishtfrëngjishtfrizianishti" +
+ "rlandishtgalikeguaranishtguxharatishtmanksishthausishthebraishtindishtkr" +
+ "oatishthaitianishthungarishtarmenishtindonezishtigboishtsishuanishtislan" +
+ "dishtitalishtinuktitutishtjaponishtjavanishtgjeorgjishtkikujuishtkazakis" +
+ "htkalalisutishtkmerekanadekoreanishtkashmirekurdekornishishtkirgizishtla" +
+ "tinishtluksemburgasegandishtlingalishtlaosishtlituanishtlubakatangishtle" +
+ "tonishtmalagezishtmaorishtmaqedonishtmalajalamishtmongolishtmaratishtmal" +
+ "ajishtmaltishtbirmanishtndebelishte veriorenepalishtholandishtninorske n" +
+ "orvegjezebokmalishte norvegjezeoromoishtorijaishtpanxhabishtpolonishtpas" +
+ "htoishtportugalishtkeçuaishtromerundishtrumanishtrusishtkiniaruandishtsa" +
+ "nskritishtsindishtsamishte verioresangoishtsinhalishtsllovakishtslloveni" +
+ "shtshonishtsomalishtshqipserbishtsundanishtsuedishtsuahilishttamiletelug" +
+ "etaxhikishttajlandishttigrinjeturkmenishttonganishtturqishttatarishtujgu" +
+ "reukrainishturduuzbekevietnamishtulufishtxhozaishtjorubishtkinezishtzulu" +
+ "ishtagemishtmapuçishtasuishtbembaishtbenaishtbalokishte perëndimorebodoi" +
+ "shtçigishtçerokishtkurdishte soranitaitishtzarmishtsorbishte e poshtmedu" +
+ "alaishtxhulafonjishtembuishtfilipinasegagauzishtgjermanishte zviceranegu" +
+ "sishthuajanishtsorbiane e sipërmengombishtmaçamishtkabilishtkambaishtmak" +
+ "ondishtkabuverdianishtkojraçinishtkalenjinishtkomishte permiakekonkanish" +
+ "tshambalishtbafianishtlangishtlakotishtlurishte verioreluoishtlujaishtma" +
+ "saishtmeruishtnorisjenemakuamitoishtmetaishtmohaukishtmundagishtemazande" +
+ "ranishtnamaishtegjermanishte e vendeve të ulëtakuasishtnkoishtnuerishtni" +
+ "ankolishtkiçeishtromboishteruaishtsamburishtsanguishtkurdishte jugoresen" +
+ "aishtesenishte kojraboretaçelitishtsamishte jugoresamishte lulejesamisht" +
+ "e inariesamishte skoltesuahilishte kongojetezoishttasaukishttamaziatisht" +
+ "e atlase qendroree panjohurvaishtvunjishtuarlipirishtsogishttamazishte s" +
+ "tandarde marokenenuk ka përmbajtje gjuhësorearabishte standarde moderneg" +
+ "jermanishte austriakegjermanishte zvicerane (dialekti i Alpeve)anglishte" +
+ " australianeanglishte kanadezeanglishte britanikeanglishte amerikanespan" +
+ "jishte amerikano-latinespanjishte evropianespanjishte meksikanefrëngjish" +
+ "te kanadezefrëngjishte zviceranegjermanishte saksone e vendeve të ulëtaf" +
+ "lamandishtportugalishte brazilianeportugalishte evropianemoldavishteSerb" +
+ "o-Kroatishtkinezishte e thjeshtuarkinezishte tradicionale"
+
+var sqLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0009, 0x0009, 0x0014, 0x001c, 0x0026, 0x0026,
+ 0x002e, 0x0038, 0x0038, 0x0038, 0x0047, 0x0052, 0x005f, 0x006a,
+ 0x006a, 0x0074, 0x007e, 0x0087, 0x0091, 0x009d, 0x00a8, 0x00b3,
+ 0x00b3, 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00d2, 0x00db, 0x00e2,
+ 0x00ed, 0x00ed, 0x00f7, 0x00fd, 0x0105, 0x010d, 0x0116, 0x011f,
+ 0x0128, 0x0130, 0x0138, 0x0138, 0x0143, 0x014e, 0x0156, 0x0161,
+ 0x016c, 0x0176, 0x0176, 0x017c, 0x0186, 0x0192, 0x019b, 0x01a3,
+ 0x01ac, 0x01b3, 0x01b3, 0x01bc, 0x01c7, 0x01d1, 0x01da, 0x01da,
+ // Entry 40 - 7F
+ 0x01da, 0x01e5, 0x01e5, 0x01ed, 0x01f8, 0x01f8, 0x01f8, 0x0202,
+ 0x020a, 0x0217, 0x0220, 0x0229, 0x0234, 0x0234, 0x023e, 0x023e,
+ 0x0247, 0x0254, 0x0259, 0x025f, 0x0269, 0x0269, 0x0271, 0x0276,
+ 0x0276, 0x0281, 0x028b, 0x0294, 0x02a1, 0x02a9, 0x02a9, 0x02b3,
+ 0x02bb, 0x02c5, 0x02d3, 0x02dc, 0x02e7, 0x02e7, 0x02ef, 0x02fa,
+ 0x0307, 0x0311, 0x031a, 0x0323, 0x032b, 0x0335, 0x0335, 0x0348,
+ 0x0351, 0x0351, 0x035b, 0x036e, 0x0384, 0x0384, 0x0384, 0x0384,
+ 0x0384, 0x0384, 0x038d, 0x0396, 0x0396, 0x03a1, 0x03a1, 0x03aa,
+ // Entry 80 - BF
+ 0x03b4, 0x03c0, 0x03ca, 0x03ce, 0x03d6, 0x03df, 0x03e6, 0x03f4,
+ 0x0400, 0x0400, 0x0408, 0x0418, 0x0421, 0x042b, 0x0436, 0x0441,
+ 0x0441, 0x0449, 0x0452, 0x0457, 0x045f, 0x045f, 0x045f, 0x0469,
+ 0x0471, 0x047b, 0x0481, 0x0487, 0x0491, 0x049c, 0x04a4, 0x04af,
+ 0x04af, 0x04b9, 0x04c1, 0x04c1, 0x04ca, 0x04ca, 0x04d0, 0x04da,
+ 0x04de, 0x04e4, 0x04e4, 0x04ef, 0x04ef, 0x04ef, 0x04f7, 0x0500,
+ 0x0500, 0x0509, 0x0509, 0x0512, 0x051a, 0x051a, 0x051a, 0x051a,
+ 0x051a, 0x051a, 0x051a, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522,
+ // Entry C0 - FF
+ 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x052c, 0x052c, 0x052c,
+ 0x052c, 0x052c, 0x052c, 0x052c, 0x0533, 0x0533, 0x0533, 0x0533,
+ 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533,
+ 0x0533, 0x053c, 0x053c, 0x0544, 0x0544, 0x0544, 0x055b, 0x055b,
+ 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b, 0x055b,
+ 0x055b, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563,
+ 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x056b, 0x056b, 0x056b,
+ 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0575, 0x0575, 0x0585,
+ // Entry 100 - 13F
+ 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x0585, 0x058d, 0x058d,
+ 0x058d, 0x058d, 0x058d, 0x0595, 0x0595, 0x05a8, 0x05a8, 0x05b1,
+ 0x05b1, 0x05be, 0x05be, 0x05be, 0x05c6, 0x05c6, 0x05c6, 0x05c6,
+ 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05c6, 0x05d0,
+ 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0, 0x05d0,
+ 0x05d0, 0x05d0, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da,
+ 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da,
+ 0x05da, 0x05da, 0x05f0, 0x05f0, 0x05f0, 0x05f7, 0x05f7, 0x05f7,
+ // Entry 140 - 17F
+ 0x05f7, 0x0601, 0x0601, 0x0601, 0x0601, 0x0601, 0x0614, 0x0614,
+ 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614, 0x0614,
+ 0x061d, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0630, 0x0630,
+ 0x0630, 0x0639, 0x0639, 0x0639, 0x0639, 0x0639, 0x0643, 0x0652,
+ 0x0652, 0x0652, 0x0652, 0x0652, 0x0652, 0x065f, 0x065f, 0x065f,
+ 0x065f, 0x066b, 0x066b, 0x067c, 0x0686, 0x0686, 0x0686, 0x0686,
+ 0x0686, 0x0686, 0x0686, 0x0686, 0x0691, 0x069b, 0x069b, 0x069b,
+ 0x069b, 0x069b, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3,
+ // Entry 180 - 1BF
+ 0x06a3, 0x06ac, 0x06ac, 0x06ac, 0x06ac, 0x06bc, 0x06bc, 0x06bc,
+ 0x06bc, 0x06bc, 0x06c3, 0x06c3, 0x06cb, 0x06cb, 0x06cb, 0x06cb,
+ 0x06cb, 0x06cb, 0x06cb, 0x06cb, 0x06cb, 0x06d3, 0x06d3, 0x06d3,
+ 0x06d3, 0x06d3, 0x06db, 0x06e4, 0x06e4, 0x06f1, 0x06f9, 0x06f9,
+ 0x06f9, 0x06f9, 0x06f9, 0x0703, 0x0703, 0x0703, 0x070e, 0x070e,
+ 0x070e, 0x070e, 0x070e, 0x070e, 0x070e, 0x070e, 0x071c, 0x071c,
+ 0x071c, 0x0725, 0x0746, 0x0746, 0x0746, 0x0746, 0x0746, 0x074e,
+ 0x074e, 0x074e, 0x074e, 0x074e, 0x0755, 0x0755, 0x075d, 0x075d,
+ // Entry 1C0 - 1FF
+ 0x075d, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768,
+ 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768,
+ 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0768, 0x0771, 0x0771,
+ 0x0771, 0x0771, 0x0771, 0x0771, 0x0771, 0x077b, 0x077b, 0x077b,
+ 0x077b, 0x077b, 0x077b, 0x0782, 0x0782, 0x0782, 0x0782, 0x078c,
+ 0x078c, 0x078c, 0x078c, 0x078c, 0x0795, 0x0795, 0x0795, 0x0795,
+ 0x07a5, 0x07a5, 0x07ae, 0x07ae, 0x07ae, 0x07c0, 0x07c0, 0x07c0,
+ 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07cc, 0x07db, 0x07ea,
+ // Entry 200 - 23F
+ 0x07f9, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808, 0x0808,
+ 0x0808, 0x0808, 0x0808, 0x0808, 0x081b, 0x081b, 0x081b, 0x081b,
+ 0x081b, 0x081b, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823,
+ 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823,
+ 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x0823, 0x082d, 0x082d,
+ 0x084a, 0x084a, 0x084a, 0x084a, 0x0854, 0x085a, 0x085a, 0x085a,
+ 0x085a, 0x085a, 0x085a, 0x085a, 0x0862, 0x0862, 0x0862, 0x0862,
+ 0x0862, 0x086e, 0x086e, 0x086e, 0x086e, 0x0875, 0x0875, 0x0875,
+ // Entry 240 - 27F
+ 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875, 0x0875,
+ 0x0892, 0x0892, 0x08af, 0x08af, 0x08ca, 0x08ca, 0x08e0, 0x090a,
+ 0x091f, 0x0931, 0x0944, 0x0957, 0x0972, 0x0986, 0x099a, 0x099a,
+ 0x09af, 0x09c5, 0x09ee, 0x09f9, 0x0a11, 0x0a28, 0x0a33, 0x0a42,
+ 0x0a59, 0x0a70,
+} // Size: 1244 bytes
+
+var srLangStr string = "" + // Size: 7594 bytes
+ "АфарскиабхаскиАвестанскиафрикансаканамхарскиАрагонежанскиарапскиасамскиА" +
+ "варскиАјмараазербејџанскибашкирскибелорускибугарскиБисламабамбарабенгал" +
+ "скитибетанскибретонскибосанскикаталонскиЧеченскиЧаморокорзиканскиКричеш" +
+ "киСтарословенскиЧувашкивелшкиданскинемачкиДивехијскиџонгаевегрчкиенглес" +
+ "киесперантошпанскиестонскибаскијскиперсијскиФулахфинскифиџијскифарскифр" +
+ "анцускизападни фризијскиирскиШкотски Галскигалицијскигваранигуџаратиман" +
+ "скихаусахебрејскихиндиХири МотухрватскихаићанскимађарскијерменскиХереро" +
+ "ИнтерлингваиндонежанскиМеђујезичкиигбосечуан јиУнупиакИдоисландскиитали" +
+ "јанскиинуктитутјапанскијаванскигрузијскиКонгокикујуКуањамаказашкикалали" +
+ "суткмерскиканадакорејскиКанурикашмирскикурдскиКомикорнволскикиргискилат" +
+ "инскилуксембуршкигандаЛимбургишлингалалаошкилитванскилуба-катангалетонс" +
+ "кималгашкиМаршалскимаорскимакедонскималајаламмонголскимаратималајскимал" +
+ "тешкибурманскиНаурусеверни ндебеленепалскиНдонгахоландскинорвешки нинор" +
+ "скнорвешки бокмалЈужни ндебелеНавахоЊањаПровансалскиОјибваоромооријаОсе" +
+ "тскипанџабиПалипољскипаштунскипортугалскикечуарето-романскирундирумунск" +
+ "ирускикинјаруандасанскритСардињаскисиндисеверни самисангосинхалскислова" +
+ "чкисловеначкиСамоанскишонасомалскиалбанскисрпскиСватиСесотосунданскишве" +
+ "дскисвахилитамилскителугутаџичкитајландскитигрињатуркменскиТсванатонгат" +
+ "урскиТсонгататарскиТахићанскиујгурскиукрајинскиурдуузбечкиВендавијетнам" +
+ "скиВолапукВалунволофкосаЈидишјорубаЖуангкинескизулуАчинескиАколиАдангме" +
+ "јскиАдигејскиАфрихилиагемАинуАкадијскиАљутЈужни алтаиСтароенглескиАнгик" +
+ "аАрмајскимапучеАрапахоАравакасуАстуријскиАвадхиБалучиБалинезијскиБасаБе" +
+ "јабембабеназападни белучкиБојпуриБиколБиниСисикаБрајбодоБуриатБугинежан" +
+ "скиБлинКадоКарипскиАтсамскиЦебуаночигаЧибчаЧагатаиЧукескиМариЧинукскиЧо" +
+ "ктавскиЧипвијанскичерокиЧејенскисорани курдскиКоптскиКримеански турскиК" +
+ "ашубијанскиДакотаДаргватаитаДелаверСлавскиДогрибДинказармаДогридоњи луж" +
+ "ичкосрпскидуалаСредњи холандскиџола фоњиЂулаембуЕфикскиСтароегипатскиЕк" +
+ "ајукЕламитскиСредњи енглескиЕвондоФангфилипинскиФонСредњи францускиСтар" +
+ "офранцускиСеверно-фризијскиИсточни фризијскиФриулијскиГагагаузГајоГбаја" +
+ "ЏизГилбертшкиСредњи високи немачкиСтаронемачкиГондиГоронталоГотскиГребо" +
+ "СтарогрчкиШвајцарски немачкигусиГвич’инХаидахавајскиХилигајнонХититеХмо" +
+ "нггорњи лужичкосрпскиХупаИбанИлокоИнгвишкиЛојбаннгомбамачамеЈудео-перси" +
+ "јскиЈудео-арапскиКара-калпашкикабилеКачинЂукамбаКавиКабардијскиТјапмако" +
+ "ндезеленортски креолскиКороКасиКотанешкикојра чииникаленџинКимбундукоми" +
+ "-пермскиконканиКосреанскиКпелеКарачај-балкарКарелијскиКурукхшамбалабафиј" +
+ "аКумикКутенаиЛадинолангиЛандаЛамбаЛезгианлакотаМонгоЛозисеверни луриЛуб" +
+ "а-лулуаЛуисеноЛундалуоЛушаилујиаМадурешкиМагахиМаитилиМакасарМандингома" +
+ "саиМокшаМандарМендемеруморисјенСредњи ирскимакува-меетометаМикмакМинанг" +
+ "кабауМанчуМанипуримохокМосимундангВише језикаКришкиМирандешкиМарвариЕрз" +
+ "ијамазандеранскиНеаполитанскинамаНиски немачкиНевариНиасНиуеанквасиоНог" +
+ "аиСтари норскин’коСеверни сотонуерКласични невариЊамвезинјанколеЊороНзи" +
+ "маОсагеОтомански турскиПангасинскиПахлавиПампангаПапиаментоПалауанскиСт" +
+ "ароперсијскиФеничанскиПонпејскиСтаропровансалскик’ичеРађастаниРапануиРа" +
+ "ротонганромбоРоманиАроманијскируаСандавеЈакутСамаритански арамејскисамб" +
+ "уруСасакСанталисангуСицилијанскиШкотскијужнокурдскисенаСелкапкојраборо " +
+ "сениСтароирскиташелхитШанСидамојужни самилуле самиинари самисколт самиС" +
+ "онинкеСоџијенскиСранански тонгоСерерСукумаСусуСумерскиКоморскиконго сва" +
+ "хилиКласични сиријскиСиријскиТимнетесоТереноТетумТигреТивТокелауКлингон" +
+ "скиТлингитТамашекЊаса тонгаТок ПисинТсимшианТумбукаТувалутасавакТувиниј" +
+ "скицентралноатласки тамазигтУдмуртУгаритскиУмбундуРутваиВотскивунџоВала" +
+ "моВарајВашоварлпириКалмиксогаЈаоЈапешкиКантонскиЗапотечкиБлисимболиЗена" +
+ "гастандардни марокански тамазигтЗунибез лингвистичког садржајаЗазамодер" +
+ "ан стандардни арапскишвајцарски високи немачкинискосаксонскифламанскиБр" +
+ "азилски португалскиИберијски португалскимолдавскиСрпскохрватски"
+
+var srLangIdx = []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x0048, 0x0058, 0x0072,
+ 0x0080, 0x008e, 0x009c, 0x00a8, 0x00c2, 0x00d4, 0x00e6, 0x00f6,
+ 0x0104, 0x0112, 0x0124, 0x0138, 0x014a, 0x015a, 0x016e, 0x017e,
+ 0x018a, 0x01a0, 0x01a6, 0x01b0, 0x01cc, 0x01da, 0x01e6, 0x01f2,
+ 0x0200, 0x0214, 0x021e, 0x0224, 0x022e, 0x023e, 0x0250, 0x025e,
+ 0x026e, 0x0280, 0x0292, 0x029c, 0x02a8, 0x02b8, 0x02c4, 0x02d6,
+ 0x02f7, 0x0301, 0x031c, 0x0330, 0x033e, 0x034e, 0x035a, 0x0364,
+ 0x0376, 0x0380, 0x0391, 0x03a1, 0x03b3, 0x03c3, 0x03d5, 0x03e1,
+ // Entry 40 - 7F
+ 0x03f7, 0x040f, 0x0425, 0x042d, 0x043e, 0x044c, 0x0452, 0x0464,
+ 0x047a, 0x048c, 0x049c, 0x04ac, 0x04be, 0x04c8, 0x04d4, 0x04e2,
+ 0x04f0, 0x0502, 0x0510, 0x051c, 0x052c, 0x0538, 0x054a, 0x0558,
+ 0x0560, 0x0574, 0x0584, 0x0594, 0x05ac, 0x05b6, 0x05c8, 0x05d6,
+ 0x05e2, 0x05f4, 0x060b, 0x061b, 0x062b, 0x063d, 0x064b, 0x065f,
+ 0x0671, 0x0683, 0x068f, 0x069f, 0x06af, 0x06c1, 0x06cb, 0x06e8,
+ 0x06f8, 0x0704, 0x0716, 0x0735, 0x0752, 0x076b, 0x0777, 0x077f,
+ 0x0797, 0x07a3, 0x07ad, 0x07b7, 0x07c5, 0x07d3, 0x07db, 0x07e7,
+ // Entry 80 - BF
+ 0x07f9, 0x080f, 0x0819, 0x0832, 0x083c, 0x084c, 0x0856, 0x086c,
+ 0x087c, 0x0890, 0x089a, 0x08b1, 0x08bb, 0x08cd, 0x08dd, 0x08f1,
+ 0x0903, 0x090b, 0x091b, 0x092b, 0x0937, 0x0941, 0x094d, 0x095f,
+ 0x096d, 0x097b, 0x098b, 0x0997, 0x09a5, 0x09b9, 0x09c7, 0x09db,
+ 0x09e7, 0x09f1, 0x09fd, 0x0a09, 0x0a19, 0x0a2d, 0x0a3d, 0x0a51,
+ 0x0a59, 0x0a67, 0x0a71, 0x0a87, 0x0a95, 0x0a9f, 0x0aa9, 0x0ab1,
+ 0x0abb, 0x0ac7, 0x0ad1, 0x0adf, 0x0ae7, 0x0af7, 0x0b01, 0x0b17,
+ 0x0b29, 0x0b29, 0x0b39, 0x0b41, 0x0b49, 0x0b5b, 0x0b5b, 0x0b63,
+ // Entry C0 - FF
+ 0x0b63, 0x0b78, 0x0b92, 0x0b9e, 0x0bae, 0x0bba, 0x0bba, 0x0bc8,
+ 0x0bc8, 0x0bd4, 0x0bd4, 0x0bd4, 0x0bda, 0x0bda, 0x0bee, 0x0bee,
+ 0x0bfa, 0x0c06, 0x0c1e, 0x0c1e, 0x0c26, 0x0c26, 0x0c26, 0x0c26,
+ 0x0c2e, 0x0c38, 0x0c38, 0x0c40, 0x0c40, 0x0c40, 0x0c5d, 0x0c6b,
+ 0x0c75, 0x0c7d, 0x0c7d, 0x0c7d, 0x0c89, 0x0c89, 0x0c89, 0x0c91,
+ 0x0c91, 0x0c99, 0x0c99, 0x0ca5, 0x0cbd, 0x0cbd, 0x0cc5, 0x0cc5,
+ 0x0ccd, 0x0cdd, 0x0cdd, 0x0ced, 0x0cfb, 0x0d03, 0x0d0d, 0x0d1b,
+ 0x0d29, 0x0d31, 0x0d41, 0x0d53, 0x0d69, 0x0d75, 0x0d85, 0x0da0,
+ // Entry 100 - 13F
+ 0x0dae, 0x0dae, 0x0dcf, 0x0de7, 0x0df3, 0x0dff, 0x0e09, 0x0e17,
+ 0x0e25, 0x0e31, 0x0e3b, 0x0e45, 0x0e4f, 0x0e72, 0x0e72, 0x0e7c,
+ 0x0e9b, 0x0eac, 0x0eb4, 0x0eb4, 0x0ebc, 0x0eca, 0x0eca, 0x0ee6,
+ 0x0ef2, 0x0f04, 0x0f21, 0x0f21, 0x0f2d, 0x0f2d, 0x0f35, 0x0f49,
+ 0x0f49, 0x0f4f, 0x0f4f, 0x0f6e, 0x0f8a, 0x0f8a, 0x0fab, 0x0fcc,
+ 0x0fe0, 0x0fe4, 0x0ff0, 0x0ff0, 0x0ff8, 0x1002, 0x1002, 0x1008,
+ 0x101c, 0x101c, 0x1044, 0x105c, 0x105c, 0x1066, 0x1078, 0x1084,
+ 0x108e, 0x10a2, 0x10c5, 0x10c5, 0x10c5, 0x10cd, 0x10dc, 0x10e6,
+ // Entry 140 - 17F
+ 0x10e6, 0x10f6, 0x10f6, 0x110a, 0x1116, 0x1120, 0x1145, 0x1145,
+ 0x114d, 0x1155, 0x1155, 0x115f, 0x116f, 0x116f, 0x116f, 0x117b,
+ 0x1187, 0x1193, 0x11b0, 0x11c9, 0x11c9, 0x11e2, 0x11ee, 0x11f8,
+ 0x11fc, 0x1206, 0x120e, 0x1224, 0x1224, 0x122c, 0x123a, 0x1261,
+ 0x1261, 0x1269, 0x1269, 0x1271, 0x1283, 0x1298, 0x1298, 0x1298,
+ 0x1298, 0x12a8, 0x12b8, 0x12cf, 0x12dd, 0x12f1, 0x12fb, 0x1316,
+ 0x1316, 0x1316, 0x132a, 0x1336, 0x1344, 0x1350, 0x1350, 0x135a,
+ 0x1368, 0x1374, 0x137e, 0x1388, 0x1392, 0x13a0, 0x13a0, 0x13a0,
+ // Entry 180 - 1BF
+ 0x13a0, 0x13ac, 0x13ac, 0x13b6, 0x13be, 0x13d5, 0x13d5, 0x13e8,
+ 0x13f6, 0x1400, 0x1406, 0x1410, 0x141a, 0x141a, 0x141a, 0x142c,
+ 0x142c, 0x1438, 0x1446, 0x1454, 0x1464, 0x146e, 0x146e, 0x1478,
+ 0x1484, 0x148e, 0x1496, 0x14a6, 0x14bd, 0x14d4, 0x14dc, 0x14e8,
+ 0x14fe, 0x1508, 0x1518, 0x1522, 0x152a, 0x152a, 0x1538, 0x154d,
+ 0x1559, 0x156d, 0x157b, 0x157b, 0x157b, 0x1587, 0x15a1, 0x15a1,
+ 0x15bb, 0x15c3, 0x15dc, 0x15e8, 0x15f0, 0x15fc, 0x15fc, 0x1608,
+ 0x1608, 0x1612, 0x1629, 0x1629, 0x1632, 0x1649, 0x1651, 0x166e,
+ // Entry 1C0 - 1FF
+ 0x167c, 0x168c, 0x1694, 0x169e, 0x16a8, 0x16c7, 0x16dd, 0x16eb,
+ 0x16fb, 0x170f, 0x1723, 0x1723, 0x1723, 0x1723, 0x173f, 0x173f,
+ 0x1753, 0x1753, 0x1753, 0x1765, 0x1765, 0x1787, 0x1792, 0x1792,
+ 0x17a4, 0x17b2, 0x17c6, 0x17c6, 0x17c6, 0x17d0, 0x17dc, 0x17dc,
+ 0x17dc, 0x17dc, 0x17f2, 0x17f8, 0x1806, 0x1810, 0x183b, 0x1849,
+ 0x1853, 0x1861, 0x1861, 0x1861, 0x186b, 0x1883, 0x1891, 0x1891,
+ 0x18a9, 0x18a9, 0x18b1, 0x18b1, 0x18bd, 0x18d8, 0x18ec, 0x18ec,
+ 0x18fc, 0x1902, 0x1902, 0x190e, 0x190e, 0x190e, 0x1921, 0x1932,
+ // Entry 200 - 23F
+ 0x1945, 0x1958, 0x1966, 0x197a, 0x1997, 0x19a1, 0x19a1, 0x19a1,
+ 0x19ad, 0x19b5, 0x19c5, 0x19d5, 0x19ee, 0x1a0f, 0x1a1f, 0x1a1f,
+ 0x1a1f, 0x1a29, 0x1a31, 0x1a3d, 0x1a47, 0x1a51, 0x1a57, 0x1a65,
+ 0x1a65, 0x1a79, 0x1a87, 0x1a87, 0x1a95, 0x1aa8, 0x1ab9, 0x1ab9,
+ 0x1ab9, 0x1ab9, 0x1ac9, 0x1ac9, 0x1ad7, 0x1ae3, 0x1af1, 0x1b05,
+ 0x1b36, 0x1b42, 0x1b54, 0x1b62, 0x1b68, 0x1b6e, 0x1b6e, 0x1b6e,
+ 0x1b6e, 0x1b6e, 0x1b7a, 0x1b7a, 0x1b84, 0x1b84, 0x1b90, 0x1b9a,
+ 0x1ba2, 0x1bb2, 0x1bb2, 0x1bbe, 0x1bbe, 0x1bc6, 0x1bcc, 0x1bda,
+ // Entry 240 - 27F
+ 0x1bda, 0x1bda, 0x1bda, 0x1bec, 0x1bfe, 0x1c12, 0x1c12, 0x1c1e,
+ 0x1c58, 0x1c60, 0x1c92, 0x1c9a, 0x1ccc, 0x1ccc, 0x1ccc, 0x1cfc,
+ 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc, 0x1cfc,
+ 0x1cfc, 0x1cfc, 0x1d18, 0x1d2a, 0x1d53, 0x1d7c, 0x1d8e, 0x1daa,
+} // Size: 1240 bytes
+
+var srLatnLangStr string = "" + // Size: 3982 bytes
+ "AfarskiabhaskiAvestanskiafrikansakanamharskiAragonežanskiarapskiasamskiA" +
+ "varskiAjmaraazerbejdžanskibaškirskibeloruskibugarskiBislamabambarabengal" +
+ "skitibetanskibretonskibosanskikatalonskiČečenskiČamorokorzikanskiKričešk" +
+ "iStaroslovenskiČuvaškivelškidanskinemačkiDivehijskidžongaevegrčkienglesk" +
+ "iesperantošpanskiestonskibaskijskipersijskiFulahfinskifidžijskifarskifra" +
+ "ncuskizapadni frizijskiirskiŠkotski Galskigalicijskigvaranigudžaratimans" +
+ "kihausahebrejskihindiHiri MotuhrvatskihaićanskimađarskijermenskiHereroIn" +
+ "terlingvaindonežanskiMeđujezičkiigbosečuan jiUnupiakIdoislandskiitalijan" +
+ "skiinuktitutjapanskijavanskigruzijskiKongokikujuKuanjamakazaškikalalisut" +
+ "kmerskikanadakorejskiKanurikašmirskikurdskiKomikornvolskikirgiskilatinsk" +
+ "iluksemburškigandaLimburgišlingalalaoškilitvanskiluba-katangaletonskimal" +
+ "gaškiMaršalskimaorskimakedonskimalajalammongolskimaratimalajskimalteškib" +
+ "urmanskiNauruseverni ndebelenepalskiNdongaholandskinorveški ninorsknorve" +
+ "ški bokmalJužni ndebeleNavahoNjanjaProvansalskiOjibvaoromoorijaOsetskip" +
+ "andžabiPalipoljskipaštunskiportugalskikečuareto-romanskirundirumunskirus" +
+ "kikinjaruandasanskritSardinjaskisindiseverni samisangosinhalskislovačkis" +
+ "lovenačkiSamoanskišonasomalskialbanskisrpskiSvatiSesotosundanskišvedskis" +
+ "vahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskiTsvanatongatursk" +
+ "iTsongatatarskiTahićanskiujgurskiukrajinskiurduuzbečkiVendavijetnamskiVo" +
+ "lapukValunvolofkosaJidišjorubaŽuangkineskizuluAčineskiAkoliAdangmejskiAd" +
+ "igejskiAfrihiliagemAinuAkadijskiAljutJužni altaiStaroengleskiAngikaArmaj" +
+ "skimapučeArapahoAravakasuAsturijskiAvadhiBalučiBalinezijskiBasaBejabemba" +
+ "benazapadni belučkiBojpuriBikolBiniSisikaBrajbodoBuriatBuginežanskiBlinK" +
+ "adoKaripskiAtsamskiCebuanočigaČibčaČagataiČukeskiMariČinukskiČoktavskiČi" +
+ "pvijanskičerokiČejenskisorani kurdskiKoptskiKrimeanski turskiKašubijansk" +
+ "iDakotaDargvataitaDelaverSlavskiDogribDinkazarmaDogridonji lužičkosrpski" +
+ "dualaSrednji holandskidžola fonjiĐulaembuEfikskiStaroegipatskiEkajukElam" +
+ "itskiSrednji engleskiEvondoFangfilipinskiFonSrednji francuskiStarofrancu" +
+ "skiSeverno-frizijskiIstočni frizijskiFriulijskiGagagauzGajoGbajaDžizGilb" +
+ "ertškiSrednji visoki nemačkiStaronemačkiGondiGorontaloGotskiGreboStarogr" +
+ "čkiŠvajcarski nemačkigusiGvič’inHaidahavajskiHiligajnonHititeHmonggornj" +
+ "i lužičkosrpskiHupaIbanIlokoIngviškiLojbanngombamačameJudeo-persijskiJud" +
+ "eo-arapskiKara-kalpaškikabileKačinĐukambaKaviKabardijskiTjapmakondezelen" +
+ "ortski kreolskiKoroKasiKotaneškikojra čiinikalendžinKimbundukomi-permski" +
+ "konkaniKosreanskiKpeleKaračaj-balkarKarelijskiKurukhšambalabafijaKumikKu" +
+ "tenaiLadinolangiLandaLambaLezgianlakotaMongoLoziseverni luriLuba-luluaLu" +
+ "isenoLundaluoLušailujiaMadureškiMagahiMaitiliMakasarMandingomasaiMokšaMa" +
+ "ndarMendemerumorisjenSrednji irskimakuva-meetometaMikmakMinangkabauManču" +
+ "ManipurimohokMosimundangViše jezikaKriškiMirandeškiMarvariErzijamazander" +
+ "anskiNeapolitanskinamaNiski nemačkiNevariNiasNiueankvasioNogaiStari nors" +
+ "kin’koSeverni sotonuerKlasični nevariNjamvezinjankoleNjoroNzimaOsageOtom" +
+ "anski turskiPangasinskiPahlaviPampangaPapiamentoPalauanskiStaropersijski" +
+ "FeničanskiPonpejskiStaroprovansalskik’ičeRađastaniRapanuiRarotonganrombo" +
+ "RomaniAromanijskiruaSandaveJakutSamaritanski aramejskisamburuSasakSantal" +
+ "isanguSicilijanskiŠkotskijužnokurdskisenaSelkapkojraboro seniStaroirskit" +
+ "ašelhitŠanSidamojužni samilule samiinari samiskolt samiSoninkeSodžijensk" +
+ "iSrananski tongoSererSukumaSusuSumerskiKomorskikongo svahiliKlasični sir" +
+ "ijskiSirijskiTimnetesoTerenoTetumTigreTivTokelauKlingonskiTlingitTamašek" +
+ "Njasa tongaTok PisinTsimšianTumbukaTuvalutasavakTuvinijskicentralnoatlas" +
+ "ki tamazigtUdmurtUgaritskiUmbunduRutvaiVotskivundžoValamoVarajVašovarlpi" +
+ "riKalmiksogaJaoJapeškiKantonskiZapotečkiBlisimboliZenagastandardni marok" +
+ "anski tamazigtZunibez lingvističkog sadržajaZazamoderan standardni araps" +
+ "kišvajcarski visoki nemačkiniskosaksonskiflamanskiBrazilski portugalskiI" +
+ "berijski portugalskimoldavskiSrpskohrvatski"
+
+var srLatnLangIdx = []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0007, 0x000e, 0x0018, 0x0020, 0x0024, 0x002c, 0x003a,
+ 0x0041, 0x0048, 0x004f, 0x0055, 0x0064, 0x006e, 0x0077, 0x007f,
+ 0x0086, 0x008d, 0x0096, 0x00a0, 0x00a9, 0x00b1, 0x00bb, 0x00c5,
+ 0x00cc, 0x00d7, 0x00da, 0x00e1, 0x00ef, 0x00f8, 0x00ff, 0x0105,
+ 0x010d, 0x0117, 0x011e, 0x0121, 0x0127, 0x012f, 0x0138, 0x0140,
+ 0x0148, 0x0151, 0x015a, 0x015f, 0x0165, 0x016f, 0x0175, 0x017e,
+ 0x018f, 0x0194, 0x01a3, 0x01ad, 0x01b4, 0x01be, 0x01c4, 0x01c9,
+ 0x01d2, 0x01d7, 0x01e0, 0x01e8, 0x01f2, 0x01fb, 0x0204, 0x020a,
+ // Entry 40 - 7F
+ 0x0215, 0x0222, 0x022f, 0x0233, 0x023d, 0x0244, 0x0247, 0x0250,
+ 0x025b, 0x0264, 0x026c, 0x0274, 0x027d, 0x0282, 0x0288, 0x0290,
+ 0x0298, 0x02a1, 0x02a8, 0x02ae, 0x02b6, 0x02bc, 0x02c6, 0x02cd,
+ 0x02d1, 0x02db, 0x02e3, 0x02eb, 0x02f8, 0x02fd, 0x0307, 0x030e,
+ 0x0315, 0x031e, 0x032a, 0x0332, 0x033b, 0x0345, 0x034c, 0x0356,
+ 0x035f, 0x0368, 0x036e, 0x0376, 0x037f, 0x0388, 0x038d, 0x039c,
+ 0x03a4, 0x03aa, 0x03b3, 0x03c4, 0x03d4, 0x03e2, 0x03e8, 0x03ee,
+ 0x03fa, 0x0400, 0x0405, 0x040a, 0x0411, 0x041a, 0x041e, 0x0425,
+ // Entry 80 - BF
+ 0x042f, 0x043a, 0x0440, 0x044d, 0x0452, 0x045a, 0x045f, 0x046a,
+ 0x0472, 0x047d, 0x0482, 0x048e, 0x0493, 0x049c, 0x04a5, 0x04b0,
+ 0x04b9, 0x04be, 0x04c6, 0x04ce, 0x04d4, 0x04d9, 0x04df, 0x04e8,
+ 0x04f0, 0x04f7, 0x04ff, 0x0505, 0x050f, 0x0519, 0x0521, 0x052b,
+ 0x0531, 0x0536, 0x053c, 0x0542, 0x054a, 0x0555, 0x055d, 0x0567,
+ 0x056b, 0x0573, 0x0578, 0x0583, 0x058a, 0x058f, 0x0594, 0x0598,
+ 0x059e, 0x05a4, 0x05aa, 0x05b1, 0x05b5, 0x05be, 0x05c3, 0x05ce,
+ 0x05d7, 0x05d7, 0x05df, 0x05e3, 0x05e7, 0x05f0, 0x05f0, 0x05f5,
+ // Entry C0 - FF
+ 0x05f5, 0x0601, 0x060e, 0x0614, 0x061c, 0x0623, 0x0623, 0x062a,
+ 0x062a, 0x0630, 0x0630, 0x0630, 0x0633, 0x0633, 0x063d, 0x063d,
+ 0x0643, 0x064a, 0x0656, 0x0656, 0x065a, 0x065a, 0x065a, 0x065a,
+ 0x065e, 0x0663, 0x0663, 0x0667, 0x0667, 0x0667, 0x0677, 0x067e,
+ 0x0683, 0x0687, 0x0687, 0x0687, 0x068d, 0x068d, 0x068d, 0x0691,
+ 0x0691, 0x0695, 0x0695, 0x069b, 0x06a8, 0x06a8, 0x06ac, 0x06ac,
+ 0x06b0, 0x06b8, 0x06b8, 0x06c0, 0x06c7, 0x06cc, 0x06d3, 0x06db,
+ 0x06e3, 0x06e7, 0x06f0, 0x06fa, 0x0706, 0x070d, 0x0716, 0x0724,
+ // Entry 100 - 13F
+ 0x072b, 0x072b, 0x073c, 0x0749, 0x074f, 0x0755, 0x075a, 0x0761,
+ 0x0768, 0x076e, 0x0773, 0x0778, 0x077d, 0x0792, 0x0792, 0x0797,
+ 0x07a8, 0x07b4, 0x07b9, 0x07b9, 0x07bd, 0x07c4, 0x07c4, 0x07d2,
+ 0x07d8, 0x07e1, 0x07f1, 0x07f1, 0x07f7, 0x07f7, 0x07fb, 0x0805,
+ 0x0805, 0x0808, 0x0808, 0x0819, 0x0827, 0x0827, 0x0838, 0x084a,
+ 0x0854, 0x0856, 0x085c, 0x085c, 0x0860, 0x0865, 0x0865, 0x086a,
+ 0x0875, 0x0875, 0x088c, 0x0899, 0x0899, 0x089e, 0x08a7, 0x08ad,
+ 0x08b2, 0x08bd, 0x08d1, 0x08d1, 0x08d1, 0x08d5, 0x08df, 0x08e4,
+ // Entry 140 - 17F
+ 0x08e4, 0x08ec, 0x08ec, 0x08f6, 0x08fc, 0x0901, 0x0917, 0x0917,
+ 0x091b, 0x091f, 0x091f, 0x0924, 0x092d, 0x092d, 0x092d, 0x0933,
+ 0x0939, 0x0940, 0x094f, 0x095c, 0x095c, 0x096a, 0x0970, 0x0976,
+ 0x0979, 0x097e, 0x0982, 0x098d, 0x098d, 0x0991, 0x0998, 0x09ac,
+ 0x09ac, 0x09b0, 0x09b0, 0x09b4, 0x09be, 0x09ca, 0x09ca, 0x09ca,
+ 0x09ca, 0x09d4, 0x09dc, 0x09e8, 0x09ef, 0x09f9, 0x09fe, 0x0a0d,
+ 0x0a0d, 0x0a0d, 0x0a17, 0x0a1d, 0x0a25, 0x0a2b, 0x0a2b, 0x0a30,
+ 0x0a37, 0x0a3d, 0x0a42, 0x0a47, 0x0a4c, 0x0a53, 0x0a53, 0x0a53,
+ // Entry 180 - 1BF
+ 0x0a53, 0x0a59, 0x0a59, 0x0a5e, 0x0a62, 0x0a6e, 0x0a6e, 0x0a78,
+ 0x0a7f, 0x0a84, 0x0a87, 0x0a8d, 0x0a92, 0x0a92, 0x0a92, 0x0a9c,
+ 0x0a9c, 0x0aa2, 0x0aa9, 0x0ab0, 0x0ab8, 0x0abd, 0x0abd, 0x0ac3,
+ 0x0ac9, 0x0ace, 0x0ad2, 0x0ada, 0x0ae7, 0x0af3, 0x0af7, 0x0afd,
+ 0x0b08, 0x0b0e, 0x0b16, 0x0b1b, 0x0b1f, 0x0b1f, 0x0b26, 0x0b32,
+ 0x0b39, 0x0b44, 0x0b4b, 0x0b4b, 0x0b4b, 0x0b51, 0x0b5e, 0x0b5e,
+ 0x0b6b, 0x0b6f, 0x0b7d, 0x0b83, 0x0b87, 0x0b8d, 0x0b8d, 0x0b93,
+ 0x0b93, 0x0b98, 0x0ba4, 0x0ba4, 0x0baa, 0x0bb6, 0x0bba, 0x0bca,
+ // Entry 1C0 - 1FF
+ 0x0bd2, 0x0bda, 0x0bdf, 0x0be4, 0x0be9, 0x0bf9, 0x0c04, 0x0c0b,
+ 0x0c13, 0x0c1d, 0x0c27, 0x0c27, 0x0c27, 0x0c27, 0x0c35, 0x0c35,
+ 0x0c40, 0x0c40, 0x0c40, 0x0c49, 0x0c49, 0x0c5a, 0x0c62, 0x0c62,
+ 0x0c6c, 0x0c73, 0x0c7d, 0x0c7d, 0x0c7d, 0x0c82, 0x0c88, 0x0c88,
+ 0x0c88, 0x0c88, 0x0c93, 0x0c96, 0x0c9d, 0x0ca2, 0x0cb8, 0x0cbf,
+ 0x0cc4, 0x0ccb, 0x0ccb, 0x0ccb, 0x0cd0, 0x0cdc, 0x0ce4, 0x0ce4,
+ 0x0cf1, 0x0cf1, 0x0cf5, 0x0cf5, 0x0cfb, 0x0d09, 0x0d13, 0x0d13,
+ 0x0d1c, 0x0d20, 0x0d20, 0x0d26, 0x0d26, 0x0d26, 0x0d31, 0x0d3a,
+ // Entry 200 - 23F
+ 0x0d44, 0x0d4e, 0x0d55, 0x0d61, 0x0d70, 0x0d75, 0x0d75, 0x0d75,
+ 0x0d7b, 0x0d7f, 0x0d87, 0x0d8f, 0x0d9c, 0x0dae, 0x0db6, 0x0db6,
+ 0x0db6, 0x0dbb, 0x0dbf, 0x0dc5, 0x0dca, 0x0dcf, 0x0dd2, 0x0dd9,
+ 0x0dd9, 0x0de3, 0x0dea, 0x0dea, 0x0df2, 0x0dfd, 0x0e06, 0x0e06,
+ 0x0e06, 0x0e06, 0x0e0f, 0x0e0f, 0x0e16, 0x0e1c, 0x0e23, 0x0e2d,
+ 0x0e46, 0x0e4c, 0x0e55, 0x0e5c, 0x0e5f, 0x0e62, 0x0e62, 0x0e62,
+ 0x0e62, 0x0e62, 0x0e68, 0x0e68, 0x0e6f, 0x0e6f, 0x0e75, 0x0e7a,
+ 0x0e7f, 0x0e87, 0x0e87, 0x0e8d, 0x0e8d, 0x0e91, 0x0e94, 0x0e9c,
+ // Entry 240 - 27F
+ 0x0e9c, 0x0e9c, 0x0e9c, 0x0ea5, 0x0eaf, 0x0eb9, 0x0eb9, 0x0ebf,
+ 0x0edd, 0x0ee1, 0x0efd, 0x0f01, 0x0f1b, 0x0f1b, 0x0f1b, 0x0f36,
+ 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f36, 0x0f36,
+ 0x0f36, 0x0f36, 0x0f44, 0x0f4d, 0x0f62, 0x0f77, 0x0f80, 0x0f8e,
+} // Size: 1240 bytes
+
+var svLangStr string = "" + // Size: 5432 bytes
+ "afarabchaziskaavestiskaafrikaansakanamhariskaaragonesiskaarabiskaassames" +
+ "iskaavariskaaymaraazerbajdzjanskabasjkiriskavitryskabulgariskabislamabam" +
+ "barabengalitibetanskabretonskabosniskakatalanskatjetjenskachamorrokorsik" +
+ "anskacreetjeckiskakyrkslaviskatjuvasjiskawalesiskadanskatyskadivehibhuta" +
+ "nesiskaewegrekiskaengelskaesperantospanskaestniskabaskiskapersiskafulani" +
+ "finskafijianskafäröiskafranskavästfrisiskairiskaskotsk gäliskagaliciskag" +
+ "uaranígujaratimanxhausahebreiskahindihirimotukroatiskahaitiskaungerskaar" +
+ "meniskahererointerlinguaindonesiskainterlingueigboszezuan iinupiakidoisl" +
+ "ändskaitalienskainuktitutjapanskajavanesiskageorgiskakikongokikuyukuany" +
+ "amakazakiskagrönländskakambodjanskakannadakoreanskakanurikashmiriskakurd" +
+ "iskakomekorniskakirgisiskalatinluxemburgiskalugandalimburgiskalingalalao" +
+ "tiskalitauiskaluba-katangalettiskamalagassiskamarshalliskamaorimakedonsk" +
+ "amalayalammongoliskamarathimalajiskamaltesiskaburmesiskanaurunordndebele" +
+ "nepalesiskandonganederländskanynorskanorskt bokmålsydndebelenavahonyanja" +
+ "occitanskaodjibwaoromooriyaossetiskapunjabipalipolskaafghanskaportugisis" +
+ "kaquechuarätoromanskarundirumänskaryskakinjarwandasanskritsardiskasindhi" +
+ "nordsamiskasangosingalesiskaslovakiskaslovenskasamoanskashonasomaliskaal" +
+ "banskaserbiskaswatisydsothosundanesiskasvenskaswahilitamiltelugiskatadzj" +
+ "ikiskathailändskatigrinjaturkmeniskatswanatonganskaturkiskatsongatataris" +
+ "katahitiskauiguriskaukrainskaurduuzbekiskavendavietnamesiskavolapükvallo" +
+ "nskawolofxhosajiddischyorubazhuangkinesiskazuluacehnesiskaacholiadangmea" +
+ "dygeiskatunisisk arabiskaafrihiliaghemainuakkadiskaAlabama-muskogeealeut" +
+ "iskagegiskasydaltaiskafornengelskaangikaarameiskaaraukanskaaraoniskaarap" +
+ "ahoalgerisk arabiskaarawakiskamarockansk arabiskaegyptisk arabiskaasuame" +
+ "rikanskt teckenspråkasturiskakotavaawadhibaluchiskabalinesiskabayerskaba" +
+ "sabamunskabatak-tobaghomalabejabembabetawiskabenabafutbagadavästbaluchis" +
+ "kabhojpuribikolbinibanjariskabamekonsiksikabishnupriyabakhtiaribrajbrahu" +
+ "iskabodobakossiburjätiskabuginesiskabouloublinbagangtecaddokaribiskacayu" +
+ "gaatsamcebuanochigachibchachagataichuukesiskamariskachinookchoctawchipew" +
+ "yancherokesiskacheyennesoranisk kurdiskakoptiskakapisnonkrimtatariskakas" +
+ "jubiskadakotadarginskataitadelawareslavejdogribdinkazarmadogrilågsorbisk" +
+ "acentraldusundualamedelnederländskajola-fonyidyuladazagaembuefikemiliska" +
+ "fornegyptiskaekajukelamitiskamedelengelskacentralalaskisk jupiskaewondoe" +
+ "xtremaduriskafangfilippinskameänkielifonspråketcajun-franskamedelfranska" +
+ "fornfranskafrankoprovensalskanordfrisiskaöstfrisiskafriulianskagãgagauzi" +
+ "skagangayogbayazoroastrisk darietiopiskagilbertiskagilakimedelhögtyskafo" +
+ "rnhögtyskaGoa-konkanigondigorontalogotiskagreboforngrekiskaschweizertysk" +
+ "awayuufarefaregusiigwichinhaidahakkahawaiiskaFiji-hindihiligaynonhettiti" +
+ "skahmongspråkhögsorbiskaxianghupaibanskaibibioilokoingusjiskaingriskajam" +
+ "aikansk engelsk kreollojbanngombakimashamijudisk persiskajudisk arabiska" +
+ "jylländskakarakalpakiskakabyliskakachinjjukambakawikabardinskakanembutya" +
+ "pmakondekapverdiskakenjangkorokaingangkhasikhotanesiskaTimbuktu-songhoyk" +
+ "howarkirmanjkimkakokalenjinkimbundukomi-permjakiskakonkanikosreanskakpel" +
+ "lekarachay-balkarkriokinaray-akarelskakurukhkisambaabafiakölniskakumykis" +
+ "kakutenajladinolangilahndalambalezghienlingua franca novaliguriskalivoni" +
+ "skalakotalombardiskamongolozinordlurilettgalliskaluba-lulualuiseñolundal" +
+ "uolushailuhyalitterär kineiskalaziskamaduresiskamafamagahimaithilimakasa" +
+ "rmandemassajiskamabamoksjamandarmendemerumauritansk kreolmedeliriskamakh" +
+ "uwa-meettometa’mi’kmaqminangkabaumanchuriskamanipurimohawkmossivästmaris" +
+ "kamundangflera språkmuskogeemirandesiskamarwarimentawaimyeneerjyamazande" +
+ "ranimin nannapolitanskanamalågtyskanewariskaniasniueanskaao-nagakwasioba" +
+ "mileké-ngiemboonnogaifornnordiskanovialn-kånordsothonuerklassisk newaris" +
+ "kanyamwezinyankolenyoronzimaosageottomanskapangasinanmedelpersiskapampan" +
+ "gapapiamentopalaupikardiskaPennsylvaniatyskamennonitisk lågtyskafornpers" +
+ "iskaPfalz-tyskafeniciskapiemontesiskapontiskaponapefornpreussiskafornpro" +
+ "vensalskaquichéChimborazo-höglandskichwarajasthanirapanuirarotonganskaro" +
+ "magnolriffianskaromboromanirotumänskarusynrovianskaarumänskarwasandaweja" +
+ "kutiskasamaritanskasamburusasaksantalisaurashtrangambaysangusicilianskas" +
+ "kotskasassaresisk sardiskasydkurdiskasenecasenaseriselkupGao-songhayforn" +
+ "iriskasamogitiskatachelhitshanChad-arabiskasidamolågsilesiskaselayarsyds" +
+ "amiskalulesamiskaenaresamiskaskoltsamiskasoninkesogdiskasranan tongosere" +
+ "rsahosaterfrisiskasukumasususumeriskashimaoréKongo-swahiliklassisk syris" +
+ "kasyriskasilesiskatulutemnetesoterenotetumtigrétivitokelauiskatsakhurkli" +
+ "ngonskatlingittalyshtamasheknyasatonganskatok pisinturoyotarokotsakodisk" +
+ "atsimshianmuslimsk tatariskatumbukatuvaluanskatasawaqtuviniskacentralmar" +
+ "ockansk tamazightudmurtiskaugaritiskaumbundurotvajvenetianskavepsvästfla" +
+ "mländskaMain-frankiskavotiskavõruvunjowalsertyskawalamowaraywashowarlpir" +
+ "iwukalmuckiskamingrelianskalusogakiyaojapetiskayangbenbamileké-jembanhee" +
+ "ngatukantonesiskazapotekblissymbolerzeeländskazenagamarockansk standard-" +
+ "tamazightzuniinget språkligt innehållzazaiskamodern standardarabiskaöste" +
+ "rrikisk tyskaschweizisk högtyskaaustralisk engelskakanadensisk engelskab" +
+ "rittisk engelskaamerikansk engelskalatinamerikansk spanskaeuropeisk span" +
+ "skamexikansk spanskakanadensisk franskaschweizisk franskalågsaxiskaflaml" +
+ "ändskabrasiliansk portugisiskaeuropeisk portugisiskamoldaviskaserbokroa" +
+ "tiskaförenklad kinesiskatraditionell kinesiska"
+
+var svLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039,
+ 0x0041, 0x004c, 0x0054, 0x005a, 0x0069, 0x0074, 0x007c, 0x0086,
+ 0x008d, 0x0094, 0x009b, 0x00a5, 0x00ae, 0x00b6, 0x00c0, 0x00ca,
+ 0x00d2, 0x00dd, 0x00e1, 0x00ea, 0x00f6, 0x0101, 0x010a, 0x0110,
+ 0x0115, 0x011b, 0x0127, 0x012a, 0x0132, 0x013a, 0x0143, 0x014a,
+ 0x0152, 0x015a, 0x0162, 0x0168, 0x016e, 0x0177, 0x0181, 0x0188,
+ 0x0195, 0x019b, 0x01aa, 0x01b3, 0x01bb, 0x01c3, 0x01c7, 0x01cc,
+ 0x01d5, 0x01da, 0x01e2, 0x01eb, 0x01f3, 0x01fb, 0x0204, 0x020a,
+ // Entry 40 - 7F
+ 0x0215, 0x0220, 0x022b, 0x022f, 0x0238, 0x023f, 0x0242, 0x024c,
+ 0x0256, 0x025f, 0x0267, 0x0272, 0x027b, 0x0282, 0x0288, 0x0290,
+ 0x0299, 0x02a6, 0x02b2, 0x02b9, 0x02c2, 0x02c8, 0x02d3, 0x02db,
+ 0x02df, 0x02e7, 0x02f1, 0x02f6, 0x0303, 0x030a, 0x0315, 0x031c,
+ 0x0324, 0x032d, 0x0339, 0x0341, 0x034d, 0x0359, 0x035e, 0x0368,
+ 0x0371, 0x037b, 0x0382, 0x038b, 0x0395, 0x039f, 0x03a4, 0x03af,
+ 0x03ba, 0x03c0, 0x03cd, 0x03d5, 0x03e3, 0x03ed, 0x03f3, 0x03f9,
+ 0x0403, 0x040a, 0x040f, 0x0414, 0x041d, 0x0424, 0x0428, 0x042e,
+ // Entry 80 - BF
+ 0x0437, 0x0443, 0x044a, 0x0457, 0x045c, 0x0465, 0x046a, 0x0475,
+ 0x047d, 0x0485, 0x048b, 0x0496, 0x049b, 0x04a7, 0x04b1, 0x04ba,
+ 0x04c3, 0x04c8, 0x04d1, 0x04d9, 0x04e1, 0x04e6, 0x04ee, 0x04fa,
+ 0x0501, 0x0508, 0x050d, 0x0516, 0x0521, 0x052d, 0x0535, 0x0540,
+ 0x0546, 0x054f, 0x0557, 0x055d, 0x0566, 0x056f, 0x0578, 0x0581,
+ 0x0585, 0x058e, 0x0593, 0x05a0, 0x05a8, 0x05b1, 0x05b6, 0x05bb,
+ 0x05c3, 0x05c9, 0x05cf, 0x05d8, 0x05dc, 0x05e7, 0x05ed, 0x05f4,
+ 0x05fd, 0x060e, 0x0616, 0x061b, 0x061f, 0x0628, 0x0638, 0x0641,
+ // Entry C0 - FF
+ 0x0648, 0x0653, 0x065f, 0x0665, 0x066e, 0x0678, 0x0681, 0x0688,
+ 0x0699, 0x06a3, 0x06b6, 0x06c7, 0x06ca, 0x06e2, 0x06eb, 0x06f1,
+ 0x06f7, 0x0701, 0x070c, 0x0714, 0x0718, 0x0720, 0x072a, 0x0731,
+ 0x0735, 0x073a, 0x0743, 0x0747, 0x074c, 0x0752, 0x0761, 0x0769,
+ 0x076e, 0x0772, 0x077c, 0x0783, 0x078a, 0x0795, 0x079e, 0x07a2,
+ 0x07ab, 0x07af, 0x07b6, 0x07c1, 0x07cc, 0x07d2, 0x07d6, 0x07de,
+ 0x07e3, 0x07ec, 0x07f2, 0x07f7, 0x07fe, 0x0803, 0x080a, 0x0812,
+ 0x081d, 0x0824, 0x082b, 0x0832, 0x083b, 0x0847, 0x084f, 0x0860,
+ // Entry 100 - 13F
+ 0x0868, 0x0870, 0x087d, 0x0887, 0x088d, 0x0896, 0x089b, 0x08a3,
+ 0x08a9, 0x08af, 0x08b4, 0x08b9, 0x08be, 0x08ca, 0x08d6, 0x08db,
+ 0x08ed, 0x08f7, 0x08fc, 0x0902, 0x0906, 0x090a, 0x0912, 0x091f,
+ 0x0925, 0x092f, 0x093c, 0x0953, 0x0959, 0x0967, 0x096b, 0x0976,
+ 0x0980, 0x098b, 0x0998, 0x09a4, 0x09af, 0x09c1, 0x09cd, 0x09d9,
+ 0x09e4, 0x09e7, 0x09f1, 0x09f4, 0x09f8, 0x09fd, 0x0a0d, 0x0a16,
+ 0x0a21, 0x0a27, 0x0a35, 0x0a42, 0x0a4d, 0x0a52, 0x0a5b, 0x0a62,
+ 0x0a67, 0x0a73, 0x0a81, 0x0a86, 0x0a8e, 0x0a93, 0x0a9a, 0x0a9f,
+ // Entry 140 - 17F
+ 0x0aa4, 0x0aad, 0x0ab7, 0x0ac1, 0x0acb, 0x0ad6, 0x0ae2, 0x0ae7,
+ 0x0aeb, 0x0af2, 0x0af8, 0x0afd, 0x0b07, 0x0b0f, 0x0b27, 0x0b2d,
+ 0x0b33, 0x0b3c, 0x0b4b, 0x0b5a, 0x0b65, 0x0b73, 0x0b7c, 0x0b82,
+ 0x0b85, 0x0b8a, 0x0b8e, 0x0b99, 0x0ba0, 0x0ba4, 0x0bab, 0x0bb6,
+ 0x0bbd, 0x0bc1, 0x0bc9, 0x0bce, 0x0bda, 0x0bea, 0x0bf0, 0x0bf9,
+ 0x0bfe, 0x0c06, 0x0c0e, 0x0c1e, 0x0c25, 0x0c2f, 0x0c35, 0x0c44,
+ 0x0c48, 0x0c51, 0x0c59, 0x0c5f, 0x0c67, 0x0c6c, 0x0c75, 0x0c7e,
+ 0x0c85, 0x0c8b, 0x0c90, 0x0c96, 0x0c9b, 0x0ca3, 0x0cb5, 0x0cbe,
+ // Entry 180 - 1BF
+ 0x0cc7, 0x0ccd, 0x0cd8, 0x0cdd, 0x0ce1, 0x0ce9, 0x0cf5, 0x0cff,
+ 0x0d07, 0x0d0c, 0x0d0f, 0x0d15, 0x0d1a, 0x0d2c, 0x0d33, 0x0d3e,
+ 0x0d42, 0x0d48, 0x0d50, 0x0d57, 0x0d5c, 0x0d66, 0x0d6a, 0x0d70,
+ 0x0d76, 0x0d7b, 0x0d7f, 0x0d8f, 0x0d9a, 0x0da8, 0x0daf, 0x0db8,
+ 0x0dc3, 0x0dce, 0x0dd6, 0x0ddc, 0x0de1, 0x0ded, 0x0df4, 0x0e00,
+ 0x0e08, 0x0e14, 0x0e1b, 0x0e23, 0x0e28, 0x0e2d, 0x0e38, 0x0e3f,
+ 0x0e4b, 0x0e4f, 0x0e58, 0x0e61, 0x0e65, 0x0e6e, 0x0e75, 0x0e7b,
+ 0x0e8e, 0x0e93, 0x0e9f, 0x0ea5, 0x0eaa, 0x0eb3, 0x0eb7, 0x0ec9,
+ // Entry 1C0 - 1FF
+ 0x0ed1, 0x0ed9, 0x0ede, 0x0ee3, 0x0ee8, 0x0ef2, 0x0efc, 0x0f09,
+ 0x0f11, 0x0f1b, 0x0f20, 0x0f2a, 0x0f3b, 0x0f50, 0x0f5c, 0x0f67,
+ 0x0f70, 0x0f7d, 0x0f85, 0x0f8b, 0x0f99, 0x0fa9, 0x0fb0, 0x0fca,
+ 0x0fd4, 0x0fdb, 0x0fe8, 0x0ff0, 0x0ffa, 0x0fff, 0x1005, 0x1010,
+ 0x1015, 0x101e, 0x1028, 0x102b, 0x1032, 0x103b, 0x1047, 0x104e,
+ 0x1053, 0x105a, 0x1064, 0x106b, 0x1070, 0x107b, 0x1082, 0x1096,
+ 0x10a1, 0x10a7, 0x10ab, 0x10af, 0x10b5, 0x10c0, 0x10ca, 0x10d5,
+ 0x10de, 0x10e2, 0x10ef, 0x10f5, 0x1102, 0x1109, 0x1113, 0x111e,
+ // Entry 200 - 23F
+ 0x112a, 0x1136, 0x113d, 0x1145, 0x1151, 0x1156, 0x115a, 0x1167,
+ 0x116d, 0x1171, 0x117a, 0x1183, 0x1190, 0x11a0, 0x11a7, 0x11b0,
+ 0x11b4, 0x11b9, 0x11bd, 0x11c3, 0x11c8, 0x11ce, 0x11d2, 0x11dd,
+ 0x11e4, 0x11ee, 0x11f5, 0x11fb, 0x1203, 0x1211, 0x121a, 0x1220,
+ 0x1226, 0x1230, 0x1239, 0x124b, 0x1252, 0x125d, 0x1264, 0x126d,
+ 0x1288, 0x1292, 0x129c, 0x12a3, 0x12a6, 0x12a9, 0x12b4, 0x12b8,
+ 0x12c9, 0x12d7, 0x12de, 0x12e3, 0x12e8, 0x12f3, 0x12f9, 0x12fe,
+ 0x1303, 0x130b, 0x130d, 0x1318, 0x1325, 0x132b, 0x1330, 0x1339,
+ // Entry 240 - 27F
+ 0x1340, 0x134f, 0x1358, 0x1364, 0x136b, 0x1377, 0x1382, 0x1388,
+ 0x13a5, 0x13a9, 0x13c3, 0x13cb, 0x13e2, 0x13e2, 0x13f4, 0x1408,
+ 0x141b, 0x142f, 0x1440, 0x1453, 0x146a, 0x147b, 0x148c, 0x148c,
+ 0x149f, 0x14b1, 0x14bc, 0x14c8, 0x14e0, 0x14f6, 0x1500, 0x150e,
+ 0x1522, 0x1538,
+} // Size: 1244 bytes
+
+var swLangStr string = "" + // Size: 2426 bytes
+ "KiabkhaziKiafrikanaKiakaniKiamhariKiarabuKiassamKiaimaraKiazabajaniKibas" +
+ "hkirKibelarusiKibulgariaKibambaraKibengaliKitibetiKibretoniKibosniaKikat" +
+ "alaniKichecheniaKikosikaniKichekiKichuvashKiwelisiKidenmakiKijerumaniKid" +
+ "ivehiKizongkhaKieweKigirikiKiingerezaKiesperantoKihispaniaKiestoniaKibas" +
+ "queKiajemiKifiniKifijiKifaroeKifaransaKifrisia cha MagharibiKiayalandiKi" +
+ "gaeli cha UskotiKigalisiKiguaraniKigujaratiKimanxKihausaKiebraniaKihindi" +
+ "KroeshiaKihaitiKihungariKiarmeniaKiintalinguaKiindonesiaKiigboSichuan Yi" +
+ "KiaisilandiKiitalianoKiinuktitutKijapaniKijavaKijojiaKikongoKikikuyuKika" +
+ "zakiKikalaallisutKikambodiaKikannadaKikoreaKikashmiriKikurdiKikomiKikorn" +
+ "iKikirigiziKilatiniKilasembagiKigandaKilingalaKilaosiKilithuaniaKiluba-K" +
+ "atangaKilatviaMalagasiKimaoriKimasedoniaKimalayalamKimongoliaKimarathiKi" +
+ "malesiaKimaltaKiburmaKindebele cha KaskaziniKinepaliKiholanziKinorwe Kip" +
+ "yaKibokmal cha NorweKinyanjaKiokitaniKioromoKioriyaKiosetiaKipunjabiKipo" +
+ "landiKipashtoKirenoKiquechuaKiromanshiKirundiKiromaniaKirusiKinyarwandaK" +
+ "isanskritiKisindhiKisami cha KaskaziniKisangoKisinhalaKislovakiaKisloven" +
+ "iaKisamoaKishonaKisomaliKialbaniaKiserbiaKiswatiKisotho cha KusiniKisund" +
+ "aKiswidiKiswahiliKitamilKiteluguKitajikiKitailandiKitigrinyaKiturukimeni" +
+ "KitswanaKitongaKiturukiKitsongaKitatariKitahitiKiuyghurKiukraniaKiurduKi" +
+ "uzbekiKivendaKivietinamuKiwolofuKixhosaKiyidiKiyorubaKichinaKizuluKiakol" +
+ "iKiaghemKimapucheKiarabu cha KialjeriaKiarabu cha MisriKiasuKibembaKiben" +
+ "aKibalochi cha MagharibiKibodoKichigaKicherokeeKikurdi cha SoraniKitaita" +
+ "KizarmaKidolnoserbskiKidualaKijola-FonyiKiembuKiefikiKifilipinoKigaKigag" +
+ "auziKiyunaniKijerumani cha UswisiKikisiiKihawaiKihitihsbKingombaKimacham" +
+ "eKikabyliaKikambaKimakondeKikabuverdianuKikoroKikoyra ChiiniKikalenjinKi" +
+ "mbunduKikomipermyakKikonkaniKisambaaKibafiaKirangiChilambaKilakotaKilozi" +
+ "Kiluri cha KaskaziniKiluba-LuluaKijaluoKiluhyaKimagahiKimaasaiKimeruKimo" +
+ "riseniKimakhuwa-MeettoKimetaKimohokiKimundangKimazanderaniKinamandsKinew" +
+ "ariKikwasioN’KoKisotho cha KaskaziniKinuerKinewari cha kaleKinyankoleKʼi" +
+ "cheʼKiromboKirwoKisamburuKisanguKikurdi cha KusiniKisenaKoyraboro SenniK" +
+ "itachelhitKisami cha KusiniKisami cha LuleKisami cha InariKisami cha Sko" +
+ "ltKisukumaKingwanaKitesoKitetumKiklingoniKitokpisinKitumbukaKitasawaqCen" +
+ "tral Atlas TamazightLugha IsiyojulikanaKivaiKivunjoKiwarlpiriKisogaKiyao" +
+ "Tamaziti Msingi ya KimorokoHakuna maudhui ya lughaKiarabu Sanifu cha Kis" +
+ "asaKichina (Kilichorahisishwa)Kichina cha Jadi"
+
+var swLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x001a, 0x0022, 0x0022,
+ 0x0029, 0x0030, 0x0030, 0x0038, 0x0043, 0x004c, 0x0056, 0x0060,
+ 0x0060, 0x0069, 0x0072, 0x007a, 0x0083, 0x008b, 0x0095, 0x00a0,
+ 0x00a0, 0x00aa, 0x00aa, 0x00b1, 0x00b1, 0x00ba, 0x00c2, 0x00cb,
+ 0x00d5, 0x00dd, 0x00e6, 0x00eb, 0x00f3, 0x00fd, 0x0108, 0x0112,
+ 0x011b, 0x0123, 0x012a, 0x012a, 0x0130, 0x0136, 0x013d, 0x0146,
+ 0x015c, 0x0166, 0x0178, 0x0180, 0x0189, 0x0193, 0x0199, 0x01a0,
+ 0x01a9, 0x01b0, 0x01b0, 0x01b8, 0x01bf, 0x01c8, 0x01d1, 0x01d1,
+ // Entry 40 - 7F
+ 0x01dd, 0x01e8, 0x01e8, 0x01ee, 0x01f8, 0x01f8, 0x01f8, 0x0203,
+ 0x020d, 0x0218, 0x0220, 0x0226, 0x022d, 0x0234, 0x023c, 0x023c,
+ 0x0244, 0x0251, 0x025b, 0x0264, 0x026b, 0x026b, 0x0275, 0x027c,
+ 0x0282, 0x0289, 0x0293, 0x029b, 0x02a6, 0x02ad, 0x02ad, 0x02b6,
+ 0x02bd, 0x02c8, 0x02d6, 0x02de, 0x02e6, 0x02e6, 0x02ed, 0x02f8,
+ 0x0303, 0x030d, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d, 0x0344,
+ 0x034c, 0x034c, 0x0355, 0x0362, 0x0374, 0x0374, 0x0374, 0x037c,
+ 0x0385, 0x0385, 0x038c, 0x0393, 0x039b, 0x03a4, 0x03a4, 0x03ad,
+ // Entry 80 - BF
+ 0x03b5, 0x03bb, 0x03c4, 0x03ce, 0x03d5, 0x03de, 0x03e4, 0x03ef,
+ 0x03fa, 0x03fa, 0x0402, 0x0416, 0x041d, 0x0426, 0x0430, 0x043a,
+ 0x0441, 0x0448, 0x0450, 0x0459, 0x0461, 0x0468, 0x047a, 0x0481,
+ 0x0488, 0x0491, 0x0498, 0x04a0, 0x04a8, 0x04b2, 0x04bc, 0x04c8,
+ 0x04d0, 0x04d7, 0x04df, 0x04e7, 0x04ef, 0x04f7, 0x04ff, 0x0508,
+ 0x050e, 0x0516, 0x051d, 0x0528, 0x0528, 0x0528, 0x0530, 0x0537,
+ 0x053d, 0x0545, 0x0545, 0x054c, 0x0552, 0x0552, 0x0559, 0x0559,
+ 0x0559, 0x0559, 0x0559, 0x0560, 0x0560, 0x0560, 0x0560, 0x0560,
+ // Entry C0 - FF
+ 0x0560, 0x0560, 0x0560, 0x0560, 0x0560, 0x0569, 0x0569, 0x0569,
+ 0x057e, 0x057e, 0x057e, 0x058f, 0x0594, 0x0594, 0x0594, 0x0594,
+ 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594,
+ 0x0594, 0x059b, 0x059b, 0x05a1, 0x05a1, 0x05a1, 0x05b8, 0x05b8,
+ 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8, 0x05b8,
+ 0x05b8, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05be,
+ 0x05be, 0x05be, 0x05be, 0x05be, 0x05be, 0x05c5, 0x05c5, 0x05c5,
+ 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05cf, 0x05cf, 0x05e1,
+ // Entry 100 - 13F
+ 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e8, 0x05e8,
+ 0x05e8, 0x05e8, 0x05e8, 0x05ef, 0x05ef, 0x05fd, 0x05fd, 0x0604,
+ 0x0604, 0x0610, 0x0610, 0x0610, 0x0616, 0x061d, 0x061d, 0x061d,
+ 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x061d, 0x0627,
+ 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627,
+ 0x0627, 0x062b, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634,
+ 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634,
+ 0x0634, 0x063c, 0x0651, 0x0651, 0x0651, 0x0658, 0x0658, 0x0658,
+ // Entry 140 - 17F
+ 0x0658, 0x065f, 0x065f, 0x065f, 0x0665, 0x0665, 0x0668, 0x0668,
+ 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668, 0x0668,
+ 0x0670, 0x0679, 0x0679, 0x0679, 0x0679, 0x0679, 0x0682, 0x0682,
+ 0x0682, 0x0689, 0x0689, 0x0689, 0x0689, 0x0689, 0x0692, 0x06a0,
+ 0x06a0, 0x06a6, 0x06a6, 0x06a6, 0x06a6, 0x06b4, 0x06b4, 0x06b4,
+ 0x06b4, 0x06be, 0x06c6, 0x06d3, 0x06dc, 0x06dc, 0x06dc, 0x06dc,
+ 0x06dc, 0x06dc, 0x06dc, 0x06dc, 0x06e4, 0x06eb, 0x06eb, 0x06eb,
+ 0x06eb, 0x06eb, 0x06f2, 0x06f2, 0x06fa, 0x06fa, 0x06fa, 0x06fa,
+ // Entry 180 - 1BF
+ 0x06fa, 0x0702, 0x0702, 0x0702, 0x0708, 0x071c, 0x071c, 0x0728,
+ 0x0728, 0x0728, 0x072f, 0x072f, 0x0736, 0x0736, 0x0736, 0x0736,
+ 0x0736, 0x073e, 0x073e, 0x073e, 0x073e, 0x0746, 0x0746, 0x0746,
+ 0x0746, 0x0746, 0x074c, 0x0756, 0x0756, 0x0766, 0x076c, 0x076c,
+ 0x076c, 0x076c, 0x076c, 0x0774, 0x0774, 0x0774, 0x077d, 0x077d,
+ 0x077d, 0x077d, 0x077d, 0x077d, 0x077d, 0x077d, 0x078a, 0x078a,
+ 0x078a, 0x0790, 0x0793, 0x079b, 0x079b, 0x079b, 0x079b, 0x07a3,
+ 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a9, 0x07be, 0x07c4, 0x07d5,
+ // Entry 1C0 - 1FF
+ 0x07d5, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df,
+ 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df,
+ 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, 0x07e8, 0x07e8,
+ 0x07e8, 0x07e8, 0x07e8, 0x07e8, 0x07e8, 0x07ef, 0x07ef, 0x07ef,
+ 0x07ef, 0x07ef, 0x07ef, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07fd,
+ 0x07fd, 0x07fd, 0x07fd, 0x07fd, 0x0804, 0x0804, 0x0804, 0x0804,
+ 0x0816, 0x0816, 0x081c, 0x081c, 0x081c, 0x082b, 0x082b, 0x082b,
+ 0x0836, 0x0836, 0x0836, 0x0836, 0x0836, 0x0836, 0x0847, 0x0856,
+ // Entry 200 - 23F
+ 0x0866, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876, 0x0876,
+ 0x087e, 0x087e, 0x087e, 0x087e, 0x0886, 0x0886, 0x0886, 0x0886,
+ 0x0886, 0x0886, 0x088c, 0x088c, 0x0893, 0x0893, 0x0893, 0x0893,
+ 0x0893, 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x08a7, 0x08a7,
+ 0x08a7, 0x08a7, 0x08a7, 0x08a7, 0x08b0, 0x08b0, 0x08b9, 0x08b9,
+ 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08e3, 0x08e8, 0x08e8, 0x08e8,
+ 0x08e8, 0x08e8, 0x08e8, 0x08e8, 0x08ef, 0x08ef, 0x08ef, 0x08ef,
+ 0x08ef, 0x08f9, 0x08f9, 0x08f9, 0x08f9, 0x08ff, 0x0904, 0x0904,
+ // Entry 240 - 27F
+ 0x0904, 0x0904, 0x0904, 0x0904, 0x0904, 0x0904, 0x0904, 0x0904,
+ 0x091f, 0x091f, 0x0936, 0x0936, 0x094f, 0x094f, 0x094f, 0x094f,
+ 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f,
+ 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f,
+ 0x096a, 0x097a,
+} // Size: 1244 bytes
+
+var taLangStr string = "" + // Size: 12271 bytes
+ "அஃபார்அப்காஜியான்அவெஸ்தான்ஆஃப்ரிகான்ஸ்அகான்அம்ஹாரிக்ஆர்கோனீஸ்அரபிக்அஸ்ஸா" +
+ "மீஸ்அவேரிக்அய்மராஅஸர்பைஜானிபஷ்கிர்பெலாருஷியன்பல்கேரியன்பிஸ்லாமாபம்பாரா" +
+ "வங்காளம்திபெத்தியன்பிரெட்டன்போஸ்னியன்கேட்டலான்செச்சென்சாமோரோகார்சிகன்க" +
+ "்ரீசெக்சர்ச் ஸ்லாவிக்சுவாஷ்வேல்ஷ்டேனிஷ்ஜெர்மன்திவேஹிபூடானிஈவ்கிரேக்கம்" +
+ "ஆங்கிலம்எஸ்பரேன்டோஸ்பானிஷ்எஸ்டோனியன்பாஸ்க்பெர்ஷியன்ஃபுலாஃபின்னிஷ்ஃபிஜி" +
+ "யன்ஃபரோயிஸ்பிரெஞ்சுமேற்கு ஃப்ரிஷியன்ஐரிஷ்ஸ்காட்ஸ் கேலிக்காலிஸியன்குரான" +
+ "ிகுஜராத்திமேங்க்ஸ்ஹௌஸாஹீப்ரூஇந்திஹிரி மோட்டுகுரோஷியன்ஹைத்தியன்ஹங்கேரிய" +
+ "ன்ஆர்மேனியன்ஹெரேரோஇண்டர்லிங்வாஇந்தோனேஷியன்இன்டர்லிங்இக்போசிசுவான் ஈஇனு" +
+ "பியாக்இடோஐஸ்லேண்டிக்இத்தாலியன்இனுகிடூட்ஜப்பானியம்ஜாவனீஸ்ஜார்ஜியன்காங்க" +
+ "ோகிகுயூகுவான்யாமாகசாக்கலாலிசூட்கெமெர்கன்னடம்கொரியன்கனுரிகாஷ்மிரிகுர்தி" +
+ "ஷ்கோமிகார்னிஷ்கிர்கிஸ்லத்தின்லக்ஸம்போர்கிஷ்கான்டாலிம்பர்கிஷ்லிங்காலாலா" +
+ "வோலிதுவேனியன்லுபா-கடாங்காலாட்வியன்மலகாஸிமார்ஷெலிஷ்மௌரிமாஸிடோனியன்மலையா" +
+ "ளம்மங்கோலியன்மராத்திமலாய்மால்டிஸ்பர்மீஸ்நவ்ரூவடக்கு தெபெலேநேபாளிதோங்கா" +
+ "டச்சுநார்வேஜியன் நியூநார்ஸ்க்நார்வேஜியன் பொக்மால்தெற்கு தெபெலேநவாஜோநயன" +
+ "்ஜாஒக்கிடன்ஓஜிபவாஒரோமோஒரியாஒசெட்டிக்பஞ்சாபிபாலிபோலிஷ்பஷ்தோபோர்ச்சுக்கீ" +
+ "ஸ்கிவேசுவாரோமான்ஷ்ருண்டிரோமேனியன்ரஷியன்கின்யாருவான்டாசமஸ்கிருதம்சாடினி" +
+ "யன்சிந்திவடக்கு சமிசாங்கோசிங்களம்ஸ்லோவாக்ஸ்லோவேனியன்ஸாமோவான்ஷோனாசோமாலி" +
+ "அல்பேனியன்செர்பியன்ஸ்வாடீதெற்கு ஸோதோசுண்டானீஸ்ஸ்வீடிஷ்சுவாஹிலிதமிழ்தெல" +
+ "ுங்குதாஜிக்தாய்டிக்ரின்யாதுருக்மென்ஸ்வானாடோங்கான்துருக்கிஷ்ஸோங்காடாடர்" +
+ "டஹிதியான்உய்குர்உக்ரைனியன்உருதுஉஸ்பெக்வென்டாவியட்நாமிஸ்ஒலாபூக்ஒவாலூன்ஒ" +
+ "லூஃப்ஹோசாஇத்திஷ்யோருபாஜுவாங்சீனம்ஜுலுஆச்சினீஸ்அகோலிஅதாங்மேஅதகேதுனிசிய " +
+ "அரபுஅஃப்ரிஹிலிஅகெம்ஐனுஅக்கேதியன்அலூட்தெற்கு அல்தைபழைய ஆங்கிலம்அங்கிகாஅ" +
+ "ராமைக்மபுசேஅரபஹோஅராவாக்அசுஅஸ்துரியன்அவதிபெலுசிபலினீஸ்பாஸாபேஜாபெம்பாபென" +
+ "ாபடகாமேற்கு பலோச்சிபோஜ்பூரிபிகோல்பினிசிக்சிகாபிஷ்ணுப்பிரியாப்ராஜ்போடோப" +
+ "ுரியாத்புகினீஸ்ப்லின்கேடோகரீப்ஆட்சம்செபுவானோசிகாசிப்சாஷகதைசூகிசேமாரிசி" +
+ "னூக் ஜார்கான்சோக்தௌசிபெவ்யான்செரோகீசெயேனிமத்திய குர்திஷ்காப்டிக்கிரிமி" +
+ "யன் துர்க்கிகஷுபியன்தகோடாதார்குவாடைடாதெலாவேர்ஸ்லாவ்டோக்ரிப்டின்காசார்ம" +
+ "ாடோக்ரிலோயர் சோர்பியன்டுவாலாமத்திய டச்சுஜோலா-ஃபோன்யிட்யூலாஎம்புஎஃபிக்ப" +
+ "ண்டைய எகிப்தியன்ஈகாஜுக்எலமைட்மத்திய ஆங்கிலம்எவோன்டோஃபங்க்ஃபிலிபினோஃபான" +
+ "்மத்திய ஃப்ரென்ச்பழைய ஃப்ரென்ச்வடக்கு ஃப்ரிஸியான்கிழக்கு ஃப்ரிஸியான்ஃப" +
+ "்ரியூலியன்காகாகௌஸ்கயோபயாகீஜ்கில்பெர்டீஸ்மத்திய ஹை ஜெர்மன்பழைய ஹை ஜெர்ம" +
+ "ன்கோன்டிகோரோன்டலோகோதிக்க்ரேபோபண்டைய கிரேக்கம்ஜெர்மன் (ஸ்விஸ்)குஸிகுவிச" +
+ "ின்ஹைடாஹவாயியன்பிஜி இந்திஹிலிகாய்னான்ஹிட்டைட்மாங்க்அப்பர் சோர்பியான்ஹு" +
+ "பாஇபான்இலோகோஇங்குஷ்லோஜ்பன்நகொம்பாமாசெம்ஜூதேயோ-பெர்ஷியன்ஜூதேயோ-அராபிக்க" +
+ "ாரா-கல்பாக்கபாய்ல்காசின்ஜ்ஜூகம்பாகாவிகபார்டியன்தையாப்மகொண்டேகபுவெர்திய" +
+ "ானுகோரோகாஸிகோதானீஸ்கொய்ரா சீனீகலின்ஜின்கிம்புன்துகொமி-பெர்ம்யாக்கொங்கண" +
+ "ிகோஸ்ரைன்க்பெல்லேகராசே-பல்கார்கரேலியன்குருக்ஷம்பாலாபாஃபியாகும்இக்குடேன" +
+ "ைலடினோலங்கிலஹன்டாலம்பாலெஜ்ஜியன்லகோடாமோங்கோலோசிவடக்கு லுரிலுபா-லுலுலாலு" +
+ "ய்சேனோலூன்டாலுயோலுஷய்லுயியாமதுரீஸ்மகாஹிமைதிலிமகாசார்மான்டிங்கோமாசாய்மோ" +
+ "க்க்ஷாமான்டார்மென்டீமெருமொரிசியன்மத்திய ஐரிஷ்மகுவா-மீட்டோமேடாமிக்மாக்ம" +
+ "ின்னாங்கபௌமன்சுமனிபூரிமொஹாக்மோஸ்ஸிமுன்டாங்பல மொழிகள்க்ரீக்மிரான்டீஸ்மா" +
+ "ர்வாரிஏர்ஜியாமசந்தேரனிநியோபோலிடன்நாமாலோ ஜெர்மன்நெவாரிநியாஸ்நியூவான்க்வ" +
+ "ாசியோநோகைபழைய நோர்ஸ்என்‘கோவடக்கு சோதோநியூர்பாரம்பரிய நேவாரிநியாம்வேஜிந" +
+ "ியான்கோலேநியோரோநிஜ்மாஓசேஜ்ஒட்டோமன் துர்க்கிபன்காசினன்பாஹ்லவிபம்பாங்காப" +
+ "பியேமென்டோபலௌவ்ன்பென்சில்வேனிய ஜெர்மன்பழைய பெர்ஷியன்ஃபொனிஷியன்ஃபோன்பெய" +
+ "ென்பழைய ப்ரோவென்சால்கீசீராஜஸ்தானிரபனுய்ரரோடோங்கன்ரோம்போரோமானிஅரோமானியன" +
+ "்ருவாசான்டாவேயாகுட்சமாரிடன் அராமைக்சம்புருசாசாக்சான்டாலிசௌராஷ்டிரம்சங்" +
+ "குசிசிலியன்ஸ்காட்ஸ்தெற்கு குர்திஷ்செனாசெல்குப்கொய்ராபோரோ சென்னிபழைய ஐர" +
+ "ிஷ்தசேஹித்ஷான்சிடாமோதெற்கு சமிலுலே சமிஇனாரி சமிஸ்கோல்ட் சமிசோனின்கேசோக" +
+ "்தியன்ஸ்ரானன் டோங்கோசெரெர்சுகுமாசுசுசுமேரியன்கொமோரியன்காங்கோ சுவாஹிலிப" +
+ "ாரம்பரிய சிரியாக்சிரியாக்டிம்னேடெசோடெரெனோடெடும்டைக்ரேடிவ்டோகேலௌக்ளிங்க" +
+ "ோன்டிலிங்கிட்டாமாஷேக்நயாசா டோங்காடோக் பிஸின்ட்ஸிம்ஷியன்தும்புகாடுவாலுட" +
+ "சவாக்டுவினியன்மத்திய அட்லஸ் டமசைட்உட்முர்ட்உகாரிட்க்அம்பொண்டுரூட்வைவோட" +
+ "்க்வுன்ஜோவாலாமோவாரேவாஷோவல்பிரிகல்மிக்சோகாயாவ்யாபேசிகாண்டோனீஸ்ஜாபோடெக்ப" +
+ "்லிஸ்ஸிம்பால்ஸ்ஜெனகாஸ்டாண்டர்ட் மொராக்கன் தமாசைட்ஜூனிமொழி உள்ளடக்கம் ஏ" +
+ "துமில்லைஜாஜாநவீன நிலையான அரபிக்ஆஸ்திரிய ஜெர்மன்ஸ்விஸ் ஹை ஜெர்மன்ஆஸ்திர" +
+ "ேலிய ஆங்கிலம்கனடிய ஆங்கிலம்பிரிட்டிஷ் ஆங்கிலம்அமெரிக்க ஆங்கிலம்ஸ்பானிஷ" +
+ "் (ஐரோப்பா)கனடிய பிரெஞ்சுஸ்விஸ் பிரஞ்சுலோ சாக்ஸன்ஃப்லெமிஷ்போர்ச்சுகீஸ்" +
+ " (பிரேசில்)போர்ச்சுகீஸ் (ஐரோப்பா)மோல்டாவியன்செர்போ-க்ரோஷியன்எளிதாக்கப்பட" +
+ "்ட சீனம்பாரம்பரிய சீனம்"
+
+var taLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0012, 0x0033, 0x004e, 0x0072, 0x0081, 0x009c, 0x00b7,
+ 0x00c9, 0x00e4, 0x00f9, 0x010b, 0x0129, 0x013e, 0x015f, 0x017d,
+ 0x0195, 0x01aa, 0x01c2, 0x01e3, 0x01fe, 0x0219, 0x0234, 0x024c,
+ 0x025e, 0x0279, 0x0285, 0x0291, 0x02b9, 0x02cb, 0x02dd, 0x02ef,
+ 0x0304, 0x0316, 0x0328, 0x0331, 0x034c, 0x0364, 0x0382, 0x039a,
+ 0x03b8, 0x03ca, 0x03e5, 0x03f4, 0x040f, 0x0427, 0x043f, 0x0457,
+ 0x0488, 0x0497, 0x04c2, 0x04dd, 0x04ef, 0x050a, 0x0522, 0x052e,
+ 0x0540, 0x054f, 0x056e, 0x0589, 0x05a4, 0x05c2, 0x05e0, 0x05f2,
+ // Entry 40 - 7F
+ 0x0616, 0x063a, 0x0658, 0x0667, 0x0683, 0x069e, 0x06a7, 0x06c8,
+ 0x06e6, 0x0701, 0x071f, 0x0734, 0x074f, 0x0761, 0x0773, 0x0791,
+ 0x07a0, 0x07bb, 0x07cd, 0x07e2, 0x07f7, 0x0806, 0x081e, 0x0836,
+ 0x0842, 0x085a, 0x0872, 0x0887, 0x08b1, 0x08c3, 0x08e4, 0x08fc,
+ 0x0908, 0x0929, 0x094b, 0x0966, 0x0978, 0x0996, 0x09a2, 0x09c3,
+ 0x09db, 0x09f9, 0x0a0e, 0x0a1d, 0x0a35, 0x0a4a, 0x0a59, 0x0a7e,
+ 0x0a90, 0x0aa2, 0x0ab1, 0x0af7, 0x0b31, 0x0b56, 0x0b65, 0x0b77,
+ 0x0b8f, 0x0ba1, 0x0bb0, 0x0bbf, 0x0bda, 0x0bef, 0x0bfb, 0x0c0d,
+ // Entry 80 - BF
+ 0x0c1c, 0x0c46, 0x0c5e, 0x0c76, 0x0c88, 0x0ca3, 0x0cb5, 0x0cdf,
+ 0x0d00, 0x0d1b, 0x0d2d, 0x0d49, 0x0d5b, 0x0d73, 0x0d8b, 0x0dac,
+ 0x0dc4, 0x0dd0, 0x0de2, 0x0e00, 0x0e1b, 0x0e2d, 0x0e4c, 0x0e6a,
+ 0x0e82, 0x0e9a, 0x0ea9, 0x0ec1, 0x0ed3, 0x0edf, 0x0efd, 0x0f1b,
+ 0x0f2d, 0x0f45, 0x0f63, 0x0f75, 0x0f84, 0x0f9f, 0x0fb4, 0x0fd2,
+ 0x0fe1, 0x0ff6, 0x1008, 0x1029, 0x103e, 0x1053, 0x1065, 0x1071,
+ 0x1086, 0x1098, 0x10aa, 0x10b9, 0x10c5, 0x10e0, 0x10ef, 0x1104,
+ 0x1110, 0x1132, 0x1150, 0x115f, 0x1168, 0x1186, 0x1186, 0x1195,
+ // Entry C0 - FF
+ 0x1195, 0x11b7, 0x11dc, 0x11f1, 0x1206, 0x1215, 0x1215, 0x1224,
+ 0x1224, 0x1239, 0x1239, 0x1239, 0x1242, 0x1242, 0x1260, 0x1260,
+ 0x126c, 0x127e, 0x1293, 0x1293, 0x129f, 0x129f, 0x129f, 0x129f,
+ 0x12ab, 0x12bd, 0x12bd, 0x12c9, 0x12c9, 0x12d5, 0x12fd, 0x1315,
+ 0x1327, 0x1333, 0x1333, 0x1333, 0x134b, 0x1375, 0x1375, 0x1387,
+ 0x1387, 0x1393, 0x1393, 0x13ab, 0x13c3, 0x13c3, 0x13d5, 0x13d5,
+ 0x13e1, 0x13f0, 0x13f0, 0x1402, 0x141a, 0x1426, 0x1438, 0x1444,
+ 0x1456, 0x1462, 0x148d, 0x149f, 0x14bd, 0x14cf, 0x14e1, 0x150c,
+ // Entry 100 - 13F
+ 0x1524, 0x1524, 0x1558, 0x1570, 0x157f, 0x1597, 0x15a3, 0x15bb,
+ 0x15cd, 0x15e5, 0x15f7, 0x1609, 0x161b, 0x1646, 0x1646, 0x1658,
+ 0x167a, 0x169c, 0x16ae, 0x16ae, 0x16bd, 0x16cf, 0x16cf, 0x1700,
+ 0x1715, 0x1727, 0x1752, 0x1752, 0x1767, 0x1767, 0x1779, 0x1794,
+ 0x1794, 0x17a3, 0x17a3, 0x17d1, 0x17f9, 0x17f9, 0x182d, 0x1864,
+ 0x1888, 0x188e, 0x18a0, 0x18a0, 0x18a9, 0x18b2, 0x18b2, 0x18be,
+ 0x18e2, 0x18e2, 0x1911, 0x193a, 0x193a, 0x194c, 0x1967, 0x1979,
+ 0x198b, 0x19b9, 0x19e3, 0x19e3, 0x19e3, 0x19ef, 0x1a07, 0x1a13,
+ // Entry 140 - 17F
+ 0x1a13, 0x1a2b, 0x1a47, 0x1a6b, 0x1a83, 0x1a95, 0x1ac6, 0x1ac6,
+ 0x1ad2, 0x1ae1, 0x1ae1, 0x1af0, 0x1b05, 0x1b05, 0x1b05, 0x1b1a,
+ 0x1b2f, 0x1b41, 0x1b6f, 0x1b97, 0x1b97, 0x1bb9, 0x1bce, 0x1be0,
+ 0x1bec, 0x1bfb, 0x1c07, 0x1c25, 0x1c25, 0x1c37, 0x1c4c, 0x1c73,
+ 0x1c73, 0x1c7f, 0x1c7f, 0x1c8b, 0x1ca3, 0x1cc2, 0x1cc2, 0x1cc2,
+ 0x1cc2, 0x1cdd, 0x1cfb, 0x1d26, 0x1d3b, 0x1d53, 0x1d6b, 0x1d90,
+ 0x1d90, 0x1d90, 0x1da8, 0x1dba, 0x1dcf, 0x1de4, 0x1de4, 0x1df9,
+ 0x1e0b, 0x1e1a, 0x1e29, 0x1e3b, 0x1e4a, 0x1e65, 0x1e65, 0x1e65,
+ // Entry 180 - 1BF
+ 0x1e65, 0x1e74, 0x1e74, 0x1e86, 0x1e92, 0x1eb1, 0x1eb1, 0x1ed0,
+ 0x1ee8, 0x1efa, 0x1f06, 0x1f15, 0x1f27, 0x1f27, 0x1f27, 0x1f3c,
+ 0x1f3c, 0x1f4b, 0x1f5d, 0x1f72, 0x1f90, 0x1fa2, 0x1fa2, 0x1fba,
+ 0x1fd2, 0x1fe4, 0x1ff0, 0x200b, 0x202d, 0x204f, 0x205b, 0x2073,
+ 0x2094, 0x20a3, 0x20b8, 0x20ca, 0x20dc, 0x20dc, 0x20f4, 0x2110,
+ 0x2122, 0x2140, 0x2158, 0x2158, 0x2158, 0x216d, 0x2188, 0x2188,
+ 0x21a9, 0x21b5, 0x21d1, 0x21e3, 0x21f5, 0x220d, 0x220d, 0x2225,
+ 0x2225, 0x2231, 0x2250, 0x2250, 0x2262, 0x2281, 0x2293, 0x22c1,
+ // Entry 1C0 - 1FF
+ 0x22df, 0x22fd, 0x230f, 0x2321, 0x2330, 0x2361, 0x237f, 0x2394,
+ 0x23af, 0x23d0, 0x23e5, 0x23e5, 0x2422, 0x2422, 0x244a, 0x244a,
+ 0x2468, 0x2468, 0x2468, 0x2489, 0x2489, 0x24ba, 0x24c6, 0x24c6,
+ 0x24e1, 0x24f3, 0x2511, 0x2511, 0x2511, 0x2523, 0x2535, 0x2535,
+ 0x2535, 0x2535, 0x2553, 0x255f, 0x2577, 0x2589, 0x25b7, 0x25cc,
+ 0x25de, 0x25f6, 0x2617, 0x2617, 0x2626, 0x2641, 0x2659, 0x2659,
+ 0x2684, 0x2684, 0x2690, 0x2690, 0x26a8, 0x26d9, 0x26f5, 0x26f5,
+ 0x270a, 0x2716, 0x2716, 0x2728, 0x2728, 0x2728, 0x2744, 0x275a,
+ // Entry 200 - 23F
+ 0x2773, 0x2795, 0x27ad, 0x27c8, 0x27f0, 0x2802, 0x2802, 0x2802,
+ 0x2814, 0x2820, 0x283b, 0x2856, 0x2881, 0x28b5, 0x28cd, 0x28cd,
+ 0x28cd, 0x28df, 0x28eb, 0x28fd, 0x290f, 0x2921, 0x292d, 0x293f,
+ 0x293f, 0x295d, 0x297b, 0x297b, 0x2993, 0x29b5, 0x29d4, 0x29d4,
+ 0x29d4, 0x29d4, 0x29f5, 0x29f5, 0x2a0d, 0x2a1f, 0x2a31, 0x2a4c,
+ 0x2a84, 0x2a9f, 0x2aba, 0x2ad5, 0x2ae1, 0x2ae7, 0x2ae7, 0x2ae7,
+ 0x2ae7, 0x2ae7, 0x2af9, 0x2af9, 0x2b0b, 0x2b0b, 0x2b1d, 0x2b29,
+ 0x2b35, 0x2b4a, 0x2b4a, 0x2b5f, 0x2b5f, 0x2b6b, 0x2b77, 0x2b89,
+ // Entry 240 - 27F
+ 0x2b89, 0x2b89, 0x2b89, 0x2ba7, 0x2bbf, 0x2bef, 0x2bef, 0x2bfe,
+ 0x2c51, 0x2c5d, 0x2ca4, 0x2cb0, 0x2ce5, 0x2ce5, 0x2d13, 0x2d42,
+ 0x2d79, 0x2da1, 0x2dd8, 0x2e09, 0x2e09, 0x2e39, 0x2e39, 0x2e39,
+ 0x2e61, 0x2e89, 0x2ea5, 0x2ec0, 0x2eff, 0x2f3b, 0x2f5c, 0x2f8a,
+ 0x2fc4, 0x2fef,
+} // Size: 1244 bytes
+
+var teLangStr string = "" + // Size: 11712 bytes
+ "అఫార్అబ్ఖాజియన్అవేస్టాన్ఆఫ్రికాన్స్అకాన్అమ్హారిక్అరగోనిస్అరబిక్అస్సామీఅవ" +
+ "ారిక్ఐమారాఅజర్బైజానిబష్కిర్బెలరుశియన్బల్గేరియన్బిస్లామాబంబారాబెంగాలీటి" +
+ "బెటన్బ్రెటన్బోస్నియన్కెటలాన్చెచెన్చమర్రోకోర్సికన్క్రిచెక్చర్చ స్లావిక్" +
+ "చువాష్వెల్ష్డేనిష్జర్మన్దివేహిజొన్ఖాఈవీగ్రీక్ఆంగ్లంఎస్పరెన్టొస్పానిష్ఈ" +
+ "స్టొనియన్బాస్క్పర్షియన్ఫ్యులఫిన్నిష్ఫిజియన్ఫారోయీజ్ఫ్రెంచ్పశ్చిమ ఫ్రిస" +
+ "ియన్ఐరిష్స్కాటిష్ గేలిక్గెలిషియన్గురానిగుజరాతిమంకస్హౌసాహీబ్రుహిందీహిరి" +
+ " మోటుక్రొయెషియన్హైతియన్హన్గేరియన్ఆర్మేనియన్హిరేరోఇంటర్లింగ్వాఇండోనేషియన్" +
+ "ఇంటర్ లింగ్ఇగ్బోశిషువన్ ఈఇనూపైఏక్ఈడౌఐస్లాండిక్ఇటాలియన్ఇనుక్టిటుట్జాపనీ" +
+ "స్జావనీస్జార్జియన్కోంగోకికుయుక్వాన్యామకజఖ్కలాల్లిసూట్ఖ్మేర్కన్నడకొరియన" +
+ "్కానురికాశ్మీరికుర్దిష్కోమికోర్నిష్కిర్గిజ్లాటిన్లుక్సంబర్గిష్గాండాలిమ" +
+ "్బర్గిష్లింగాలలావోలిథుయేనియన్లూబ-కటాంగలాట్వియన్మాలాగసిమార్షలీస్మయోరిమస" +
+ "డోనియన్మలయాళంమంగోలియన్మరాఠీమలేయ్మాల్టీస్బర్మీస్నౌరుఉత్తర దెబెలెనేపాలిద" +
+ "ోంగాడచ్నార్విజియాన్ న్యోర్స్క్నార్వీజియన్ బొక్మాల్దక్షిణ దెబెలెనవాహోన్" +
+ "యాన్జాఆక్సిటన్చేవాఒరోమోఒరియాఒసేటిక్పంజాబీపాలీపోలిష్పాష్టోపోర్చుగీస్కెష" +
+ "ుయారోమన్ష్రండిరోమానియన్రష్యన్కిన్యర్వాండాసంస్కృతంసార్డీనియన్సింధీఉత్తర" +
+ " సామిసాంగోసింహళంస్లోవాక్స్లోవేనియాన్సమోవన్షోనసోమాలిఅల్బేనియన్సెర్బియన్స్" +
+ "వాతిదక్షిణ సోతోసుడానీస్స్వీడిష్స్వాహిలితమిళముతెలుగుతజిక్థాయ్తిగ్రిన్యా" +
+ "తుర్కమెన్సెటస్వానాటాంగాన్టర్కిష్సోంగాటాటర్తహితియన్ఉయ్\u200cఘర్ఉక్రేనియ" +
+ "న్ఉర్దూఉజ్బెక్వెండావియత్నామీస్వోలాపుక్వాలూన్వొలాఫ్షోసాఇడ్డిష్యోరుబాజువ" +
+ "ాన్చైనీస్జూలూఆఖినీస్అకోలిఅడాంగ్మేఅడిగాబ్జేఅఫ్రిహిలిఅగేమ్ఐనుఅక్కాడియాన్" +
+ "అలియుట్దక్షిణ ఆల్టైప్రాచీన ఆగ్లంఆంగికఅరామేక్అరౌకేనియన్అరాపాహోఅరావాక్అస" +
+ "ుఅస్టురియాన్అవధిబాలుచిబాలినీస్బసాబేజాబెంబాబీనాపశ్చిమ బలూచీభోజ్ పూరిబిక" +
+ "ోల్బినిసిక్ సికాబ్రాజ్బోడోబురియట్బ్యుగినిస్బ్లిన్కేడ్డోకేరిబ్అట్సామ్సే" +
+ "బుఆనోఛిగాచిబ్చాచాగటైచూకిస్మారిచినూక్ జార్గన్చొచ్కతావ్చిపెవ్యాన్చెరోకీచ" +
+ "ేయేన్సెంట్రల్ కుర్దిష్కోప్టిక్క్రిమియన్ టర్కిష్కషుబియన్డకోటాడార్గ్వాటై" +
+ "టాడెలావేర్స్లేవ్డోగ్రిబ్డింకాజార్మాడోగ్రిలోవర్ సోర్బియన్దుఆలామధ్యమ డచ్" +
+ "జోలా-ఫోనయిడ్యులాఇంబుఎఫిక్ప్రాచీన ఇజిప్షియన్ఏకాజక్ఎలామైట్మధ్యమ ఆంగ్లంఎవ" +
+ "ోండొఫాంగ్ఫిలిపినోఫాన్మధ్యమ ప్రెంచ్ప్రాచీన ప్రెంచ్ఉత్తర ఫ్రిసియన్తూర్పు" +
+ " ఫ్రిసియన్ఫ్రియులియన్గాగాగౌజ్గాయోగ్బాయాజీజ్గిల్బర్టీస్మధ్యమ హై జర్మన్ప్ర" +
+ "ాచీన హై జర్మన్గోండిగోరోంటలాగోథిక్గ్రేబోప్రాచీన గ్రీక్స్విస్ జర్మన్గుస్" +
+ "సీగ్విచిన్హైడాహవాయియన్హిలి గేయినోన్హిట్టిటేమోంగ్అప్పర్ సోర్బియన్హుపాఐబ" +
+ "ాన్ఐయోకోఇంగుష్లోజ్బాన్గోంబామకొమ్జ్యుడియో-పర్షియన్జ్యుడియో-అరబిక్కారా-క" +
+ "ల్పాక్కాబిల్కాచిన్జ్యూకంబాకావికబార్డియన్ట్యాప్మకొండేకాబువేర్దియనుకోరోఖ" +
+ "ాసిఖటోనీస్కొయరా చీన్నీకలెంజిన్కిమ్బుండుకోమి-పర్మాక్కొంకణికోస్రేయన్పెల్" +
+ "లేకరచే-బల్కార్కరేలియన్కూరుఖ్శంబాలాబాఫియకుమ్యిక్కుటేనైలాడినోలాంగీలాహండా" +
+ "లాంబాలేజ్ఘియన్లకొటామొంగోలోజిఉత్తర లూరీలుబా-లులువలుఇసేనోలుండాలువోలుషైలు" +
+ "యియమాదురీస్మగాహిమైథిలిమకాసార్మండింగోమాసాయిమొక్షామండార్మెండేమెరుమొరిస్య" +
+ "ేన్మధ్యమ ఐరిష్మక్వా-మిట్టోమెటామికమాక్మినాంగ్కాబోమంచుమణిపూరిమోహుక్మోస్స" +
+ "ిముదాంగ్బహుళ భాషలుక్రీక్మిరాండిస్మార్వాడిఎర్జియామాసన్\u200cదెరానినియాప" +
+ "ోలిటన్నమలో జర్మన్నెవారినియాస్నియూఇయాన్క్వాసియెనోగైప్రాచిన నోర్స్న్కోఉత" +
+ "్తర సోతోన్యుర్సాంప్రదాయ న్యుఆరిన్యంవేజిన్యాన్కోలెనిఓరోజీమాఒసాజ్ఒట్టోమన" +
+ "్ టర్కిష్పంగా సినాన్పహ్లావిపంపగ్నపపియమేంటోపాలుఆన్ప్రాచీన పర్షియన్ఫోనిక" +
+ "న్పోహ్న్పెయన్ప్రాచీన ప్రోవెంసాల్కిచేరాజస్తానిరాపన్యుయిరారోటొంగాన్రోంబో" +
+ "రోమానీఆరోమేనియన్ర్వాసండావియాకుట్సమారిటన్ అరమేక్సంబురుససక్సంటాలిసాంగుసి" +
+ "సిలియన్స్కాట్స్దక్షిణ కుర్దిష్సెనాసేల్కప్కోయోరాబోరో సెన్నీప్రాచీన ఐరిష" +
+ "్టాచెల్\u200cహిట్షాన్సిడామోదక్షిణ సామిలులే సామిఇనారి సామిస్కోల్ట్ సామి" +
+ "సోనింకిసోగ్డియన్స్రానన్ టోనగోసెరేర్సుకుమాసుసుసుమేరియాన్కొమొరియన్కాంగో " +
+ "స్వాహిలిసాంప్రదాయ సిరియాక్సిరియాక్టింనేటెసోటెరెనోటేటంటీగ్రెటివ్టోకెలావ" +
+ "్క్లింగాన్లింగిట్టామషేక్న్యాసా టోన్గాటోక్ పిసిన్శింషీయన్టుంబుకాటువాలుట" +
+ "సావాఖ్టువినియన్సెంట్రల్ అట్లాస్ టామాజైట్ఉడ్ముర్ట్ఉగారిటిక్ఉమ్బుండురూట్" +
+ "వాయివోటిక్వుంజొవాలామోవారేవాషోవార్లపిరికల్మిక్సొగాయాఒయాపిస్కాంటనీస్జపోట" +
+ "ెక్బ్లిసింబల్స్జెనాగాప్రామాణిక మొరొకన్ తమజియట్జునిలిపి లేదుజాజాఆధునిక " +
+ "ప్రామాణిక అరబిక్ఆస్ట్రేలియన్ జర్మన్స్విస్ హై జర్మన్ఆస్ట్రేలియన్ ఇంగ్లీ" +
+ "ష్కెనడియన్ ఇంగ్లీష్బ్రిటిష్ ఇంగ్లీష్అమెరికన్ ఇంగ్లీష్లాటిన్ అమెరికెన్ " +
+ "స్పానిష్యూరోపియన్ స్పానిష్మెక్సికన్ స్పానిష్కెనడియెన్ ఫ్రెంచ్స్విస్ ఫ్" +
+ "రెంచ్లో సాక్సన్ఫ్లెమిష్బ్రెజీలియన్ పోర్చుగీస్యూరోపియన్ పోర్చుగీస్మొల్డ" +
+ "ావియన్సేర్బో-క్రొయేషియన్సరళీకృత చైనీస్సాంప్రదాయక చైనీస్"
+
+var teLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x002d, 0x0048, 0x0069, 0x0078, 0x0093, 0x00ab,
+ 0x00bd, 0x00d2, 0x00e7, 0x00f6, 0x0114, 0x0129, 0x0147, 0x0165,
+ 0x017d, 0x018f, 0x01a4, 0x01b9, 0x01ce, 0x01e9, 0x01fe, 0x0210,
+ 0x0222, 0x023d, 0x0249, 0x0255, 0x027a, 0x028c, 0x029e, 0x02b0,
+ 0x02c2, 0x02d4, 0x02e6, 0x02ef, 0x0301, 0x0313, 0x0331, 0x0349,
+ 0x0367, 0x0379, 0x0391, 0x03a0, 0x03b8, 0x03cd, 0x03e5, 0x03fa,
+ 0x0428, 0x0437, 0x0462, 0x047d, 0x048f, 0x04a4, 0x04b3, 0x04bf,
+ 0x04d1, 0x04e0, 0x04f9, 0x051a, 0x052f, 0x054d, 0x056b, 0x057d,
+ // Entry 40 - 7F
+ 0x05a1, 0x05c2, 0x05e1, 0x05f0, 0x0609, 0x0621, 0x062a, 0x0648,
+ 0x0660, 0x0681, 0x0696, 0x06ab, 0x06c6, 0x06d5, 0x06e7, 0x0702,
+ 0x070e, 0x072f, 0x0741, 0x0750, 0x0765, 0x0777, 0x078f, 0x07a7,
+ 0x07b3, 0x07cb, 0x07e3, 0x07f5, 0x081c, 0x082b, 0x084c, 0x085e,
+ 0x086a, 0x088b, 0x08a4, 0x08bf, 0x08d4, 0x08ef, 0x08fe, 0x0919,
+ 0x092b, 0x0946, 0x0955, 0x0964, 0x097c, 0x0991, 0x099d, 0x09bf,
+ 0x09d1, 0x09e0, 0x09e9, 0x0a2c, 0x0a66, 0x0a8b, 0x0a9a, 0x0ab2,
+ 0x0aca, 0x0ad6, 0x0ae5, 0x0af4, 0x0b09, 0x0b1b, 0x0b27, 0x0b39,
+ // Entry 80 - BF
+ 0x0b4b, 0x0b69, 0x0b7b, 0x0b90, 0x0b9c, 0x0bb7, 0x0bc9, 0x0bed,
+ 0x0c05, 0x0c26, 0x0c35, 0x0c51, 0x0c60, 0x0c72, 0x0c8a, 0x0cae,
+ 0x0cc0, 0x0cc9, 0x0cdb, 0x0cf9, 0x0d14, 0x0d26, 0x0d45, 0x0d5d,
+ 0x0d75, 0x0d8d, 0x0d9f, 0x0db1, 0x0dc0, 0x0dcc, 0x0dea, 0x0e05,
+ 0x0e20, 0x0e35, 0x0e4a, 0x0e59, 0x0e68, 0x0e80, 0x0e95, 0x0eb3,
+ 0x0ec2, 0x0ed7, 0x0ee6, 0x0f07, 0x0f1f, 0x0f31, 0x0f43, 0x0f4f,
+ 0x0f64, 0x0f76, 0x0f88, 0x0f9a, 0x0fa6, 0x0fbb, 0x0fca, 0x0fe2,
+ 0x0ffd, 0x0ffd, 0x1018, 0x1027, 0x1030, 0x1051, 0x1051, 0x1066,
+ // Entry C0 - FF
+ 0x1066, 0x1088, 0x10ad, 0x10bc, 0x10d1, 0x10ef, 0x10ef, 0x1104,
+ 0x1104, 0x1119, 0x1119, 0x1119, 0x1122, 0x1122, 0x1143, 0x1143,
+ 0x114f, 0x1161, 0x1179, 0x1179, 0x1182, 0x1182, 0x1182, 0x1182,
+ 0x118e, 0x119d, 0x119d, 0x11a9, 0x11a9, 0x11a9, 0x11cb, 0x11e4,
+ 0x11f6, 0x1202, 0x1202, 0x1202, 0x121b, 0x121b, 0x121b, 0x122d,
+ 0x122d, 0x1239, 0x1239, 0x124e, 0x126c, 0x126c, 0x127e, 0x127e,
+ 0x1290, 0x12a2, 0x12a2, 0x12b7, 0x12cc, 0x12d8, 0x12ea, 0x12f9,
+ 0x130b, 0x1317, 0x133f, 0x135a, 0x1378, 0x138a, 0x139c, 0x13cd,
+ // Entry 100 - 13F
+ 0x13e5, 0x13e5, 0x1416, 0x142e, 0x143d, 0x1455, 0x1461, 0x1479,
+ 0x148b, 0x14a3, 0x14b2, 0x14c4, 0x14d6, 0x1501, 0x1501, 0x1510,
+ 0x1529, 0x1545, 0x1557, 0x1557, 0x1563, 0x1572, 0x1572, 0x15a6,
+ 0x15b8, 0x15cd, 0x15ef, 0x15ef, 0x1601, 0x1601, 0x1610, 0x1628,
+ 0x1628, 0x1634, 0x1634, 0x1659, 0x1684, 0x1684, 0x16af, 0x16dd,
+ 0x16fe, 0x1704, 0x1716, 0x1716, 0x1722, 0x1734, 0x1734, 0x1740,
+ 0x1761, 0x1761, 0x178a, 0x17b9, 0x17b9, 0x17c8, 0x17e0, 0x17f2,
+ 0x1804, 0x182c, 0x1851, 0x1851, 0x1851, 0x1863, 0x187b, 0x1887,
+ // Entry 140 - 17F
+ 0x1887, 0x189f, 0x189f, 0x18c4, 0x18dc, 0x18eb, 0x1919, 0x1919,
+ 0x1925, 0x1934, 0x1934, 0x1943, 0x1955, 0x1955, 0x1955, 0x196d,
+ 0x197c, 0x198b, 0x19bc, 0x19e7, 0x19e7, 0x1a09, 0x1a1b, 0x1a2d,
+ 0x1a39, 0x1a45, 0x1a51, 0x1a6f, 0x1a6f, 0x1a81, 0x1a93, 0x1aba,
+ 0x1aba, 0x1ac6, 0x1ac6, 0x1ad2, 0x1ae7, 0x1b09, 0x1b09, 0x1b09,
+ 0x1b09, 0x1b21, 0x1b3c, 0x1b5e, 0x1b70, 0x1b8b, 0x1b9d, 0x1bbf,
+ 0x1bbf, 0x1bbf, 0x1bd7, 0x1be9, 0x1bfb, 0x1c0a, 0x1c0a, 0x1c22,
+ 0x1c34, 0x1c46, 0x1c55, 0x1c67, 0x1c76, 0x1c91, 0x1c91, 0x1c91,
+ // Entry 180 - 1BF
+ 0x1c91, 0x1ca0, 0x1ca0, 0x1caf, 0x1cbb, 0x1cd7, 0x1cd7, 0x1cf3,
+ 0x1d08, 0x1d17, 0x1d23, 0x1d2f, 0x1d3e, 0x1d3e, 0x1d3e, 0x1d56,
+ 0x1d56, 0x1d65, 0x1d77, 0x1d8c, 0x1da1, 0x1db3, 0x1db3, 0x1dc5,
+ 0x1dd7, 0x1de6, 0x1df2, 0x1e10, 0x1e2f, 0x1e51, 0x1e5d, 0x1e72,
+ 0x1e93, 0x1e9f, 0x1eb4, 0x1ec6, 0x1ed8, 0x1ed8, 0x1eed, 0x1f09,
+ 0x1f1b, 0x1f36, 0x1f4e, 0x1f4e, 0x1f4e, 0x1f63, 0x1f87, 0x1f87,
+ 0x1fa8, 0x1fae, 0x1fc7, 0x1fd9, 0x1feb, 0x2006, 0x2006, 0x201e,
+ 0x201e, 0x202a, 0x2052, 0x2052, 0x205e, 0x207a, 0x208c, 0x20bd,
+ // Entry 1C0 - 1FF
+ 0x20d5, 0x20f3, 0x2102, 0x210e, 0x211d, 0x214b, 0x216a, 0x217f,
+ 0x2191, 0x21ac, 0x21c1, 0x21c1, 0x21c1, 0x21c1, 0x21ef, 0x21ef,
+ 0x2204, 0x2204, 0x2204, 0x2225, 0x2225, 0x225c, 0x2268, 0x2268,
+ 0x2283, 0x229e, 0x22bf, 0x22bf, 0x22bf, 0x22ce, 0x22e0, 0x22e0,
+ 0x22e0, 0x22e0, 0x22fe, 0x230a, 0x231c, 0x232e, 0x2359, 0x236b,
+ 0x2377, 0x2389, 0x2389, 0x2389, 0x2398, 0x23b3, 0x23cb, 0x23cb,
+ 0x23f6, 0x23f6, 0x2402, 0x2402, 0x2417, 0x2448, 0x246d, 0x246d,
+ 0x248e, 0x249a, 0x249a, 0x24ac, 0x24ac, 0x24ac, 0x24cb, 0x24e4,
+ // Entry 200 - 23F
+ 0x2500, 0x2525, 0x253a, 0x2555, 0x257a, 0x258c, 0x258c, 0x258c,
+ 0x259e, 0x25aa, 0x25c8, 0x25e3, 0x260b, 0x263f, 0x2657, 0x2657,
+ 0x2657, 0x2666, 0x2672, 0x2684, 0x2690, 0x26a2, 0x26ae, 0x26c6,
+ 0x26c6, 0x26e1, 0x26f6, 0x26f6, 0x270b, 0x2730, 0x274f, 0x274f,
+ 0x274f, 0x274f, 0x2767, 0x2767, 0x277c, 0x278e, 0x27a3, 0x27be,
+ 0x2805, 0x2820, 0x283b, 0x2853, 0x285f, 0x286b, 0x286b, 0x286b,
+ 0x286b, 0x286b, 0x287d, 0x287d, 0x288c, 0x288c, 0x289e, 0x28aa,
+ 0x28b6, 0x28d1, 0x28d1, 0x28e6, 0x28e6, 0x28f2, 0x28fb, 0x290d,
+ // Entry 240 - 27F
+ 0x290d, 0x290d, 0x290d, 0x2925, 0x293a, 0x295e, 0x295e, 0x2970,
+ 0x29b7, 0x29c3, 0x29dc, 0x29e8, 0x2a29, 0x2a29, 0x2a60, 0x2a8c,
+ 0x2ac9, 0x2afa, 0x2b2b, 0x2b5c, 0x2ba3, 0x2bd7, 0x2c0b, 0x2c0b,
+ 0x2c3c, 0x2c64, 0x2c80, 0x2c98, 0x2cd8, 0x2d12, 0x2d33, 0x2d67,
+ 0x2d8f, 0x2dc0,
+} // Size: 1244 bytes
+
+var thLangStr string = "" + // Size: 13735 bytes
+ "อะฟาร์อับคาซอเวสตะแอฟริกานส์อาคันอัมฮาราอารากอนอาหรับอัสสัมอาวาร์ไอย์มาร" +
+ "าอาเซอร์ไบจานบัชคีร์เบลารุสบัลแกเรียบิสลามาบัมบาราเบงกาลีทิเบตเบรตันบอ" +
+ "สเนียกาตาลังเชเชนชามอร์โรคอร์ซิกาครีเช็กเชอร์ชสลาวิกชูวัชเวลส์เดนมาร์ก" +
+ "เยอรมันธิเวหิซองคาเอเวกรีกอังกฤษเอสเปอรันโตสเปนเอสโตเนียบัสเกเปอร์เซีย" +
+ "ฟูลาฮ์ฟินแลนด์ฟิจิแฟโรฝรั่งเศสฟริเซียนตะวันตกไอริชสกอตส์กาลิกกาลิเซียก" +
+ "วารานีคุชราตมานซ์เฮาชาฮิบรูฮินดีฮีรีโมตูโครเอเชียเฮติฮังการีอาร์เมเนีย" +
+ "เฮเรโรอินเตอร์ลิงกัวอินโดนีเชียอินเตอร์ลิงกิวอิกโบเสฉวนยิอีนูเปียกอีโด" +
+ "ไอซ์แลนด์อิตาลีอินุกติตุตญี่ปุ่นชวาจอร์เจียคองโกกีกูยูกวนยามาคาซัคกรีน" +
+ "แลนด์เขมรกันนาดาเกาหลีคานูรีกัศมีร์เคิร์ดโกมิคอร์นิชคีร์กีซละตินลักเซม" +
+ "เบิร์กยูกันดาลิมเบิร์กลิงกาลาลาวลิทัวเนียลูบา-กาตองกาลัตเวียมาลากาซีมา" +
+ "ร์แชลลิสเมารีมาซิโดเนียมาลายาลัมมองโกเลียมราฐีมาเลย์มอลตาพม่านาอูรูเอ็" +
+ "นเดเบเลเหนือเนปาลดองกาดัตช์นอร์เวย์นีนอสก์นอร์เวย์บุคมอลเอ็นเดเบเลใต้น" +
+ "าวาโฮเนียนจาอ็อกซิตันโอจิบวาโอโรโมโอริยาออสเซเตียปัญจาบบาลีโปแลนด์พาชต" +
+ "ูโปรตุเกสควิชัวโรแมนซ์บุรุนดีโรมาเนียรัสเซียรวันดาสันสกฤตซาร์เดญาสินธุ" +
+ "ซามิเหนือแซงโกสิงหลสโลวักสโลวีเนียซามัวโชนาโซมาลีแอลเบเนียเซอร์เบียสวา" +
+ "ติโซโทใต้ซุนดาสวีเดนสวาฮีลีทมิฬเตลูกูทาจิกไทยติกริญญาเติร์กเมนิสถานบอต" +
+ "สวานาตองกาตุรกีซิิตซองกาตาตาร์ตาฮิตีอุยกัวยูเครนอูรดูอุซเบกเวนดาเวียดน" +
+ "ามโวลาพึควาโลนีโวลอฟคะห์โอซายิวโยรูบาจ้วงจีนซูลูอาเจะห์อาโคลิอาแดงมีอะ" +
+ "ดืยเกอาหรับตูนิเซียแอฟริฮีลีอักเฮมไอนุอักกาดแอละแบมาอาลิวต์เกกแอลเบเนี" +
+ "ยอัลไตใต้อังกฤษโบราณอังคิกาอราเมอิกอาเราคาเนียนอาเรานาอาราปาโฮอาหรับแอ" +
+ "ลจีเรียอาราวักอาหรับโมร็อกโกอาหรับพื้นเมืองอียิปต์อาซูภาษามืออเมริกันอ" +
+ "ัสตูเรียสโคตาวาอวธีบาลูชิบาหลีบาวาเรียบาสาบามันบาตักโทบาโคมาลาเบจาเบมบ" +
+ "าเบตาวีเบนาบาฟัตพทคะบาลูจิตะวันออกโภชปุรีบิกอลบินีบันจาร์กมสิกสิกาพิศน" +
+ "ุปริยะบักติยารีพัรชบราฮุยโพโฑอาโคซีบูเรียตบูกิสบูลูบลินเมดุมบาคัดโดคาร" +
+ "ิบคายูกาแอตแซมเซบูคีกาชิบชาชะกะไตชูกมารีชินุกจาร์กอนช็อกทอว์ชิพิวยันเช" +
+ "อโรกีเชเยนเนเคิร์ดโซรานีคอปติกกาปิซนอนตุรกีไครเมียคาซูเบียนดาโกทาดาร์ก" +
+ "ินไททาเดลาแวร์สเลวีโดกริบดิงกาซาร์มาโฑครีซอร์บส์ตอนล่างดูซุนกลางดัวลาด" +
+ "ัตช์กลางโจลา-ฟอนยีดิวลาดาซากาเอ็มบูอีฟิกเอมีเลียอียิปต์โบราณอีกาจุกอีล" +
+ "าไมต์อังกฤษกลางยูพิกกลางอีวันโดเอกซ์เตรมาดูราฟองฟิลิปปินส์ฟินแลนด์ทอร์" +
+ "เนดาเล็นฟอนฝรั่งเศสกาฌ็องฝรั่งเศสกลางฝรั่งเศสโบราณอาร์พิตาฟริเซียนเหนื" +
+ "อฟริเซียนตะวันออกฟรูลีกากากาอุซจีนกานกาโยกบายาดารีโซโรอัสเตอร์กีซกิลเบ" +
+ "อร์ตกิลากีเยอรมันสูงกลางเยอรมันสูงโบราณกอนกานีของกัวกอนดิกอรอนทาโลโกธิ" +
+ "กเกรโบกรีกโบราณเยอรมันสวิสวายูฟราฟรากุซซีกวิชอินไฮดาจีนแคะฮาวายฮินดีฟิ" +
+ "จิฮีลีกัยนนฮิตไตต์ม้งซอร์บส์ตอนบนจีนเซียงฮูปาอิบานอิบิบิโออีโลโกอินกุช" +
+ "อินเกรียนอังกฤษคลีโอลจาเมกาโลชบันอึนกอมบามาชาเมยิว-เปอร์เซียยิว-อาหรับ" +
+ "จัทการา-กาลพากกาไบลกะฉิ่นคจูคัมบากวีคาร์บาเดียคาเนมบูทีแยปมาคอนเดคาบูเ" +
+ "วอร์เดียนูเกินยางโคโรเคนก่างกาสีโคตันโคย์ราชีนีโควาร์เคอร์มานิกิคาโกคา" +
+ "เลนจินคิมบุนดูโคมิ-เปียร์เมียคกอนกานีคูสไรกาแปลคาราไช-บัลคาร์คริโอกินา" +
+ "รายอาแกรเลียนกุรุขชัมบาลาบาเฟียโคโลญคูมืยค์คูเทไนลาดิโนแลนจีลาฮ์นดาแลม" +
+ "บาเลซเกียนลิงกัวฟรังกาโนวาลิกูเรียลิโวเนียลาโกตาลอมบาร์ดมองโกโลซิลูรีเ" +
+ "หนือลัตเกลลูบา-ลูลัวลุยเซโนลันดาลัวลูไชลูเยียจีนคลาสสิกแลซมาดูรามาฟามค" +
+ "หีไมถิลีมากาซาร์มันดิงกามาไซมาบามอคชามานดาร์เมนเดเมรูมอริสเยนไอริชกลาง" +
+ "มากัววา-มีทโทเมตามิกแมกมีนังกาเบาแมนจูมณีปุระโมฮอว์กโมซีมารีตะวันตกมัน" +
+ "ดังหลายภาษาครีกมีรันดามารวาฑีเม็นตาไวมยีนเอียร์ซยามาซันดารานีจีนมินหนา" +
+ "นนาโปลีนามาเยอรมันต่ำ - แซกซอนต่ำเนวาร์นีอัสนีอูอ๋าวนากากวาซิโอจีมบูนโ" +
+ "นไกนอร์สโบราณโนเวียลเอ็นโกโซโทเหนือเนือร์เนวาร์ดั้งเดิมเนียมเวซีเนียนโ" +
+ "กเลนิโอโรนซิมาโอซากีตุรกีออตโตมันปางาซีนันปะห์ลาวีปัมปางาปาเปียเมนโตปา" +
+ "เลาปิการ์เยอรมันเพนซิลเวเนียเพลาท์ดิชเปอร์เซียโบราณเยอรมันพาลาทิเนตฟิน" +
+ "ิเชียพีดมอนต์พอนติกพอห์นเพปรัสเซียโปรวองซาลโบราณกีเชควิชัวไฮแลนด์ชิมโบ" +
+ "ราโซราชสถานราปานูราโรทองกาโรมัณโญริฟฟิอันรอมโบโรมานีโรทูมันรูซินโรเวีย" +
+ "นาอาโรมาเนียนรวาซันดาเวซาฮาอราเมอิกซามาเรียแซมบูรูซาซักสันตาลีเสาราษฏร" +
+ "์กัมเบแซงกูซิซิลีสกอตส์ซาร์ดิเนียซาสซารีเคอร์ดิชใต้เซนิกาเซนาเซรีเซลคุ" +
+ "ปโคย์ราโบโรเซนนีไอริชโบราณซาโมจิเตียนทาเชลีห์ทไทใหญ่อาหรับ-ชาดซิดาโมไซ" +
+ "ลีเซียตอนล่างเซลายาร์ซามิใต้ซามิลูเลซามิอีนารีซามิสคอลต์โซนีนเกซอกดีนซ" +
+ "ูรินาเมเซแรร์ซาโฮฟรีเซียนซัทเธอร์แลนด์ซูคูมาซูซูซูเมอโคเมอเรียนสวาฮีลี" +
+ "-คองโกซีเรียแบบดั้งเดิมซีเรียไซลีเซียตูลูทิมเนเตโซเทเรโนเตตุมตีเกรทิฟโตเ" +
+ "กเลาแซคเซอร์คลิงกอนทลิงกิตทาลิชทามาเชกไนอะซาตองกาท็อกพิซินตูโรโยทาโรโก" +
+ "ซาโคเนียซิมชีแอนตัตมุสลิมทุมบูกาตูวาลูตัสซาวัคตูวาทามาไซต์แอตลาสกลางอุ" +
+ "ดมูร์ตยูการิตอุมบุนดูรูทไวเวเนโต้เวปส์เฟลมิชตะวันตกเมน-ฟรานโกเนียโวทิก" +
+ "โวโรวุนจูวัลเซอร์วาลาโมวาเรย์วาโชวอล์เพอร์รีจีนอู๋คัลมืยค์เมเกรเลียโซก" +
+ "าเย้ายัปแยงเบนเยมบาเหงงกาตุกวางตุ้งซาโปเตกบลิสซิมโบลส์เซแลนด์เซนากาทาม" +
+ "าไซต์โมร็อกโกมาตรฐานซูนิไม่มีข้อมูลภาษาซาซาอาหรับมาตรฐานสมัยใหม่เยอรมั" +
+ "น - ออสเตรียเยอรมันสูง (สวิส)อังกฤษ - ออสเตรเลียอังกฤษ - แคนาดาอังกฤษ " +
+ "- สหราชอาณาจักรอังกฤษ - อเมริกันสเปน - ละตินอเมริกาสเปน - ยุโรปสเปน - เม" +
+ "็กซิโกฝรั่งเศส - แคนาดาฝรั่งเศส (สวิส)แซกซอนใต้เฟลมิชโปรตุเกส - บราซิล" +
+ "โปรตุเกส - ยุโรปมอลโดวาเซอร์โบ-โครเอเชียจีนตัวย่อจีนตัวเต็ม"
+
+var thLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0012, 0x0024, 0x0036, 0x0054, 0x0063, 0x0078, 0x008d,
+ 0x009f, 0x00b1, 0x00c3, 0x00db, 0x00ff, 0x0114, 0x0129, 0x0144,
+ 0x0159, 0x016e, 0x0183, 0x0192, 0x01a4, 0x01b9, 0x01ce, 0x01dd,
+ 0x01f5, 0x020d, 0x0216, 0x0222, 0x0246, 0x0255, 0x0264, 0x027c,
+ 0x0291, 0x02a3, 0x02b2, 0x02be, 0x02ca, 0x02dc, 0x02fd, 0x0309,
+ 0x0324, 0x0333, 0x034e, 0x0360, 0x0378, 0x0384, 0x0390, 0x03a8,
+ 0x03d5, 0x03e4, 0x0405, 0x041d, 0x0432, 0x0444, 0x0453, 0x0462,
+ 0x0471, 0x0480, 0x0498, 0x04b3, 0x04bf, 0x04d4, 0x04f2, 0x0504,
+ // Entry 40 - 7F
+ 0x052e, 0x054f, 0x0579, 0x0588, 0x059d, 0x05b8, 0x05c4, 0x05df,
+ 0x05f1, 0x060f, 0x0624, 0x062d, 0x0645, 0x0654, 0x0666, 0x067b,
+ 0x068a, 0x06a5, 0x06b1, 0x06c6, 0x06d8, 0x06ea, 0x06ff, 0x0711,
+ 0x071d, 0x0732, 0x0747, 0x0756, 0x077a, 0x078f, 0x07aa, 0x07bf,
+ 0x07c8, 0x07e3, 0x0805, 0x081a, 0x0832, 0x0850, 0x085f, 0x087d,
+ 0x0898, 0x08b3, 0x08c2, 0x08d4, 0x08e3, 0x08ef, 0x0901, 0x092e,
+ 0x093d, 0x094c, 0x095b, 0x0988, 0x09b2, 0x09d9, 0x09eb, 0x0a00,
+ 0x0a1b, 0x0a30, 0x0a42, 0x0a54, 0x0a6f, 0x0a81, 0x0a8d, 0x0aa2,
+ // Entry 80 - BF
+ 0x0ab1, 0x0ac9, 0x0adb, 0x0af0, 0x0b05, 0x0b1d, 0x0b32, 0x0b44,
+ 0x0b59, 0x0b71, 0x0b80, 0x0b9b, 0x0baa, 0x0bb9, 0x0bcb, 0x0be6,
+ 0x0bf5, 0x0c01, 0x0c13, 0x0c2e, 0x0c49, 0x0c58, 0x0c6d, 0x0c7c,
+ 0x0c8e, 0x0ca3, 0x0caf, 0x0cc1, 0x0cd0, 0x0cd9, 0x0cf1, 0x0d1b,
+ 0x0d33, 0x0d42, 0x0d51, 0x0d6c, 0x0d7e, 0x0d90, 0x0da2, 0x0db4,
+ 0x0dc3, 0x0dd5, 0x0de4, 0x0dfc, 0x0e11, 0x0e23, 0x0e32, 0x0e4a,
+ 0x0e53, 0x0e65, 0x0e71, 0x0e7a, 0x0e86, 0x0e9b, 0x0ead, 0x0ec2,
+ 0x0ed7, 0x0f01, 0x0f1c, 0x0f2e, 0x0f3a, 0x0f4c, 0x0f64, 0x0f79,
+ // Entry C0 - FF
+ 0x0f9d, 0x0fb5, 0x0fd6, 0x0feb, 0x1003, 0x1027, 0x103c, 0x1054,
+ 0x1081, 0x1096, 0x10c0, 0x1102, 0x110e, 0x113b, 0x1159, 0x116b,
+ 0x1177, 0x1189, 0x1198, 0x11b0, 0x11bc, 0x11cb, 0x11e6, 0x11f8,
+ 0x1204, 0x1213, 0x1225, 0x1231, 0x1240, 0x124c, 0x1276, 0x128b,
+ 0x129a, 0x12a6, 0x12bb, 0x12c1, 0x12d6, 0x12f4, 0x130f, 0x131b,
+ 0x132d, 0x1339, 0x134b, 0x1360, 0x136f, 0x137b, 0x1387, 0x139c,
+ 0x13ab, 0x13ba, 0x13cc, 0x13de, 0x13ea, 0x13f6, 0x1405, 0x1417,
+ 0x1420, 0x142c, 0x1450, 0x1468, 0x1480, 0x1495, 0x14aa, 0x14ce,
+ // Entry 100 - 13F
+ 0x14e0, 0x14f8, 0x151c, 0x1537, 0x1549, 0x155e, 0x156a, 0x1582,
+ 0x1591, 0x15a3, 0x15b2, 0x15c4, 0x15d3, 0x15fd, 0x1618, 0x1627,
+ 0x1642, 0x165e, 0x166d, 0x167f, 0x1691, 0x16a0, 0x16b8, 0x16dc,
+ 0x16f1, 0x1709, 0x1727, 0x1742, 0x1757, 0x1781, 0x178a, 0x17a8,
+ 0x17e4, 0x17ed, 0x1817, 0x183b, 0x1862, 0x187a, 0x18a1, 0x18d1,
+ 0x18e0, 0x18e6, 0x18fb, 0x190d, 0x1919, 0x1928, 0x1958, 0x1961,
+ 0x197c, 0x198e, 0x19b8, 0x19e5, 0x1a0c, 0x1a1b, 0x1a36, 0x1a45,
+ 0x1a54, 0x1a6f, 0x1a90, 0x1a9c, 0x1aae, 0x1abd, 0x1ad2, 0x1ade,
+ // Entry 140 - 17F
+ 0x1af0, 0x1aff, 0x1b1a, 0x1b35, 0x1b4a, 0x1b53, 0x1b77, 0x1b8f,
+ 0x1b9b, 0x1baa, 0x1bc2, 0x1bd4, 0x1be6, 0x1c01, 0x1c37, 0x1c49,
+ 0x1c61, 0x1c73, 0x1c98, 0x1cb4, 0x1cbd, 0x1cdc, 0x1ceb, 0x1cfd,
+ 0x1d06, 0x1d15, 0x1d1e, 0x1d3c, 0x1d51, 0x1d60, 0x1d75, 0x1da2,
+ 0x1db7, 0x1dc3, 0x1dd8, 0x1de4, 0x1df3, 0x1e11, 0x1e23, 0x1e44,
+ 0x1e50, 0x1e68, 0x1e80, 0x1eae, 0x1ec3, 0x1ed2, 0x1ee1, 0x1f09,
+ 0x1f18, 0x1f33, 0x1f4b, 0x1f5a, 0x1f6f, 0x1f81, 0x1f90, 0x1fa5,
+ 0x1fb7, 0x1fc9, 0x1fd8, 0x1fed, 0x1ffc, 0x2014, 0x2044, 0x205c,
+ // Entry 180 - 1BF
+ 0x2074, 0x2086, 0x209e, 0x20ad, 0x20b9, 0x20d4, 0x20e6, 0x2102,
+ 0x2117, 0x2126, 0x212f, 0x213b, 0x214d, 0x216b, 0x2174, 0x2186,
+ 0x2192, 0x219e, 0x21b0, 0x21c8, 0x21e0, 0x21ec, 0x21f8, 0x2207,
+ 0x221c, 0x222b, 0x2237, 0x224f, 0x226a, 0x228f, 0x229b, 0x22ad,
+ 0x22cb, 0x22da, 0x22ef, 0x2304, 0x2310, 0x2331, 0x2343, 0x235b,
+ 0x2367, 0x237c, 0x2391, 0x23a9, 0x23b5, 0x23d0, 0x23f1, 0x240f,
+ 0x2421, 0x242d, 0x2469, 0x247b, 0x248a, 0x2496, 0x24ae, 0x24c3,
+ 0x24d5, 0x24e1, 0x24ff, 0x2514, 0x2526, 0x2541, 0x2553, 0x257d,
+ // Entry 1C0 - 1FF
+ 0x2598, 0x25b3, 0x25c5, 0x25d4, 0x25e6, 0x260d, 0x2628, 0x2640,
+ 0x2655, 0x2676, 0x2685, 0x2697, 0x26d0, 0x26eb, 0x2715, 0x2745,
+ 0x275d, 0x2775, 0x2787, 0x279c, 0x27b4, 0x27de, 0x27ea, 0x282c,
+ 0x2841, 0x2853, 0x286e, 0x2883, 0x289b, 0x28aa, 0x28bc, 0x28d1,
+ 0x28e0, 0x28f8, 0x2919, 0x2922, 0x2937, 0x2943, 0x2973, 0x2988,
+ 0x2997, 0x29ac, 0x29c7, 0x29d6, 0x29e5, 0x29f7, 0x2a09, 0x2a3c,
+ 0x2a5d, 0x2a6f, 0x2a7b, 0x2a87, 0x2a99, 0x2ac6, 0x2ae4, 0x2b05,
+ 0x2b20, 0x2b32, 0x2b4e, 0x2b60, 0x2b8d, 0x2ba5, 0x2bba, 0x2bd2,
+ // Entry 200 - 23F
+ 0x2bf0, 0x2c0e, 0x2c23, 0x2c35, 0x2c4d, 0x2c5f, 0x2c6b, 0x2caa,
+ 0x2cbc, 0x2cc8, 0x2cd7, 0x2cf5, 0x2d1a, 0x2d4d, 0x2d5f, 0x2d77,
+ 0x2d83, 0x2d92, 0x2d9e, 0x2db0, 0x2dbf, 0x2dce, 0x2dd7, 0x2dec,
+ 0x2e04, 0x2e19, 0x2e2e, 0x2e3d, 0x2e52, 0x2e73, 0x2e8e, 0x2ea0,
+ 0x2eb2, 0x2eca, 0x2ee2, 0x2efd, 0x2f12, 0x2f24, 0x2f3c, 0x2f48,
+ 0x2f7e, 0x2f96, 0x2fab, 0x2fc3, 0x2fcc, 0x2fd2, 0x2fe7, 0x2ff6,
+ 0x301d, 0x3045, 0x3054, 0x3060, 0x306f, 0x3087, 0x3099, 0x30ab,
+ 0x30b7, 0x30d8, 0x30ea, 0x3102, 0x311d, 0x3129, 0x3135, 0x313e,
+ // Entry 240 - 27F
+ 0x3150, 0x315f, 0x3177, 0x318f, 0x31a4, 0x31c8, 0x31dd, 0x31ef,
+ 0x3234, 0x3240, 0x326d, 0x3279, 0x32b8, 0x32b8, 0x32e8, 0x3315,
+ 0x3348, 0x336f, 0x33ab, 0x33d8, 0x340b, 0x3429, 0x3450, 0x3450,
+ 0x347d, 0x34a4, 0x34bf, 0x34d1, 0x34fe, 0x3528, 0x353d, 0x356e,
+ 0x3589, 0x35a7,
+} // Size: 1244 bytes
+
+var trLangStr string = "" + // Size: 5557 bytes
+ "AfarAbhazcaAvestçeAfrikaancaAkanAmharcaAragoncaArapçaAssamcaAvar DiliAym" +
+ "araAzericeBaşkırtçaBeyaz RusçaBulgarcaBislamaBambaraBengalceTibetçeBreto" +
+ "ncaBoşnakçaKatalancaÇeçenceChamorroKorsikacaCreeÇekçeKilise SlavcasıÇuva" +
+ "şçaGalceDancaAlmancaDivehiButan DiliEweYunancaİngilizceEsperantoİspanyo" +
+ "lcaEstoncaBaskçaFarsçaFulahFinceFiji DiliFaroe DiliFransızcaBatı Frizces" +
+ "iİrlandacaİskoç Gal DiliGaliçyacaGuarani DiliGüceratçaManksHausaİbranice" +
+ "HintçeHiri MotuHırvatçaHaiti DiliMacarcaErmeniceHereroInterlinguaEndonez" +
+ "ceInterlingueİbo DiliSichuan YiInupiakIdoİzlandacaİtalyancaInuktitutJapo" +
+ "ncaCava DiliGürcüceKongoKikuyuKuanyamaKazakçaGrönland DiliKmerceKannadaK" +
+ "oreceKanuriKeşmirceKürtçeKomiKernevekçeKırgızcaLatinceLüksemburgcaGandaL" +
+ "imburgcaLingalaLaocaLitvancaLuba-KatangaLetoncaMalgaşçaMarshall Adaları " +
+ "DiliMaori DiliMakedoncaMalayalamMoğolcaMarathiMalaycaMaltacaBurmacaNauru" +
+ " DiliKuzey NdebeleNepalceNdongaHollandacaNorveççe NynorskNorveççe Bokmål" +
+ "Güney NdebeleNavaho DiliNyanjaOccitanOjibva DiliOromoOriya DiliOsetçePen" +
+ "capçaPaliLehçePeştucaPortekizceKeçuvacaRomanşçaKirundiRomenceRusçaKinyar" +
+ "wandaSanskritçeSardunya DiliSindhiKuzey SamiSangoSeylancaSlovakçaSlovenc" +
+ "eSamoa DiliShonaSomaliceArnavutçaSırpçaSisvatiGüney SothoSunda Diliİsveç" +
+ "çeSvahiliTamilceTelugu DiliTacikçeTaycaTigrinyaTürkmenceSetsvanaTongaca" +
+ "TürkçeTsongaTatarcaTahiti DiliUygurcaUkraynacaUrducaÖzbekçeVendaVietnamc" +
+ "aVolapükValoncaVolofçaZosaYidişYorubacaZhuangÇinceZulucaAchineseAcoliAda" +
+ "ngmeAdigeceTunus ArapçasıAfrihiliAghemAyni DiliAkad DiliAlabamacaAleutGh" +
+ "eg ArnavutçasıGüney AltaycaEski İngilizceAngikaAramiceAraukanya DiliArao" +
+ "naArapaho DiliCezayir ArapçasıArawak DiliFas ArapçasıMısır ArapçasıAsuAm" +
+ "erikan İşaret DiliAsturyascaKotavaAwadhiBaluchiBali DiliBavyera DiliBasa" +
+ " DiliBamunBatak TobaGhomalaBeja DiliBembaBetawiBenaBafutBadagaBatı Baloc" +
+ "hiArayaniceBikolBiniBanjar DiliKomSiksikaBishnupriyaBahtiyariBrajBrohice" +
+ "BodoAkooseBuryatBugisBuluBlinMedumbaCaddoCaribCayugaAtsamCebuanoKigacaCh" +
+ "ibchaÇağatay DiliChuukeseMariChinook JargonChoctawChipewyanÇerokiceŞayen" +
+ " DiliOrta KürtçeKıpticeCapiznonKırım TürkçesiKashubianDakotaDarginceTait" +
+ "aDelawareSlaveyDogribDinkaZarmaDogriAşağı SorbçaOrta KadazanDualaOrtaçağ" +
+ " FelemenkçesiJola-FonyiDyulaDazagaEmbuEfikEmilia DiliEski Mısır DiliEkaj" +
+ "ukElamOrtaçağ İngilizcesiMerkezi YupikçeEwondoEkstremadura DiliFangFilip" +
+ "inceTornedalin FincesiFonCajun FransızcasıOrtaçağ FransızcasıEski Fransı" +
+ "zcaArpitancaKuzey FrizceDoğu FrizcesiFriulianGaGagavuzcaGan ÇincesiGayoG" +
+ "bayaZerdüşt DaricesiGeezKiribati DiliGilaniceOrtaçağ Yüksek AlmancasıEsk" +
+ "i Yüksek AlmancaGoa KonkanicesiGondiGorontaloGotçaGreboAntik Yunancaİsvi" +
+ "çre AlmancasıWayuuFrafraGusiiGwichʼinHaidaHakka ÇincesiHawaii DiliFiji " +
+ "HintçesiHiligaynonHititçeHmongYukarı SorbçaXiang ÇincesiHupaIbanIbibioIl" +
+ "okoİnguşçaİngriya DiliJamaika Patois DiliLojbanNgombaMachameYahudi Farsç" +
+ "asıYahudi ArapçasıYutland DiliKarakalpakçaKabiliyeceKaçinJjuKambaKawiKab" +
+ "ardeyceKanembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiHotancaKoyr" +
+ "a ChiiniÇitral DiliKırmanççaKakoKalenjinKimbunduKomi-PermyakKonkaniKosra" +
+ "eanKpelleKaraçay-BalkarcaKrioKinaray-aKarelyacaKurukhShambalaBafiaKöln D" +
+ "iyalektiKumukçaKutenaiLadinoLangiLahndaLambaLezgiceLingua Franca NovaLig" +
+ "urcaLivoncaLakotacaLombardçaMongoLoziKuzey LuriLatgalianLuba-LuluaLuisen" +
+ "oLundaLuoLushaiLuyiaEdebi ÇinceLazcaMadura DiliMafaMagahiMaithiliMakasar" +
+ "MandingoMasaiMabaMokşa DiliMandarMendeMeruMorisyenOrtaçağ İrlandacasıMak" +
+ "huwa-MeettoMeta’MicmacMinangkabauMançurya DiliManipuriMohavk DiliMossiOv" +
+ "a ÇirmişçesiMundangBirden Fazla DilCreekMiranda DiliMarvariMentawaiMyene" +
+ "ErzyaMazenderancaMin Nan ÇincesiNapoliceNamaAşağı AlmancaNevariNiasNiuea" +
+ "nAo NagaKwasioNgiemboonNogaycaEski NorseNovialN’KoKuzey SothoNuerKlasik " +
+ "NevariNyamveziNyankoleNyoroNzimaOsageOsmanlı TürkçesiPangasinanPehlevi D" +
+ "iliPampangaPapiamentoPalau DiliPicard DiliPensilvanya AlmancasıPlautdiet" +
+ "schEski FarsçaPalatin AlmancasıFenike DiliPiyemonteceKuzeybatı KafkasyaP" +
+ "ohnpeianPrusyacaEski ProvensalKiçeceChimborazo Highland QuichuaRajasthan" +
+ "iRapanuiRarotonganRomanyolcaRif BerbericesiRomboRomancaRotumanRusinceRov" +
+ "ianaUlahçaRwaSandaveYakutçaSamarit AramcasıSamburuSasakSantaliSaurashtra" +
+ "NgambaySanguSicilyacaScotsSassari SarducaGüney KürtçesiSenecaSenaSeriSel" +
+ "kupKoyraboro SenniEski İrlandacaSamogitçeTaşelhitShan DiliÇad ArapçasıSi" +
+ "damoAşağı SilezyacaSelayarGüney SamiLule SamiInari SamiSkolt SamiSoninke" +
+ "Sogdiana DiliSranan TongoSererSahoSaterland FrizcesiSukumaSusuSümerceKom" +
+ "orcaKongo SvahiliKlasik SüryaniceSüryaniceSilezyacaTulucaTimneTesoTereno" +
+ "TetumTigreTivTokelauSahurcaKlingoncaTlingitTalışçaTamaşekNyasa TongaTok " +
+ "PisinTuroyoTarokoTsakoncaTsimshianTatçaTumbukaTuvaluTasawaqTuvacaOrta Fa" +
+ "s TamazigtiUdmurtçaUgarit DiliUmbunduKökenVaiVenedikçeVepsBatı FlamancaM" +
+ "ain Frankonya DiliVoticVõroVunjoWalserValamoVarayVaşoWarlpiriWu ÇincesiK" +
+ "almıkçaMegrelceSogaYaoYapçaYangbenYembaNheengatuKantoncaZapotek DiliBlis" +
+ " SembolleriZelandacaZenagaStandart Berberi Dili TamazightZuniDilbilim iç" +
+ "eriği yokZazacaModern Standart ArapçaGüney AzericeAvusturya Almancasıİsv" +
+ "içre Yüksek AlmancasıAvustralya İngilizcesiKanada İngilizcesiİngiliz İng" +
+ "ilizcesiAmerikan İngilizcesiLatin Amerika İspanyolcasıAvrupa İspanyolcas" +
+ "ıMeksika İspanyolcasıKanada Fransızcasıİsviçre FransızcasıAşağı Saksonc" +
+ "aFlamancaBrezilya PortekizcesiAvrupa PortekizcesiMoldovacaSırp-Hırvat Di" +
+ "liBasitleştirilmiş ÇinceGeleneksel Çince"
+
+var trLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0004, 0x000b, 0x0013, 0x001d, 0x0021, 0x0028, 0x0030,
+ 0x0037, 0x003e, 0x0047, 0x004d, 0x0054, 0x0060, 0x006c, 0x0074,
+ 0x007b, 0x0082, 0x008a, 0x0092, 0x009a, 0x00a4, 0x00ad, 0x00b6,
+ 0x00be, 0x00c7, 0x00cb, 0x00d2, 0x00e2, 0x00ec, 0x00f1, 0x00f6,
+ 0x00fd, 0x0103, 0x010d, 0x0110, 0x0117, 0x0121, 0x012a, 0x0135,
+ 0x013c, 0x0143, 0x014a, 0x014f, 0x0154, 0x015d, 0x0167, 0x0171,
+ 0x017f, 0x0189, 0x0199, 0x01a3, 0x01af, 0x01ba, 0x01bf, 0x01c4,
+ 0x01cd, 0x01d4, 0x01dd, 0x01e7, 0x01f1, 0x01f8, 0x0200, 0x0206,
+ // Entry 40 - 7F
+ 0x0211, 0x021a, 0x0225, 0x022e, 0x0238, 0x023f, 0x0242, 0x024c,
+ 0x0256, 0x025f, 0x0266, 0x026f, 0x0278, 0x027d, 0x0283, 0x028b,
+ 0x0293, 0x02a1, 0x02a7, 0x02ae, 0x02b4, 0x02ba, 0x02c3, 0x02cb,
+ 0x02cf, 0x02da, 0x02e4, 0x02eb, 0x02f8, 0x02fd, 0x0306, 0x030d,
+ 0x0312, 0x031a, 0x0326, 0x032d, 0x0337, 0x034d, 0x0357, 0x0360,
+ 0x0369, 0x0371, 0x0378, 0x037f, 0x0386, 0x038d, 0x0397, 0x03a4,
+ 0x03ab, 0x03b1, 0x03bb, 0x03cd, 0x03df, 0x03ed, 0x03f8, 0x03fe,
+ 0x0405, 0x0410, 0x0415, 0x041f, 0x0426, 0x042f, 0x0433, 0x0439,
+ // Entry 80 - BF
+ 0x0441, 0x044b, 0x0454, 0x045e, 0x0465, 0x046c, 0x0472, 0x047d,
+ 0x0488, 0x0495, 0x049b, 0x04a5, 0x04aa, 0x04b2, 0x04bb, 0x04c3,
+ 0x04cd, 0x04d2, 0x04da, 0x04e4, 0x04ec, 0x04f3, 0x04ff, 0x0509,
+ 0x0513, 0x051a, 0x0521, 0x052c, 0x0534, 0x0539, 0x0541, 0x054b,
+ 0x0553, 0x055a, 0x0562, 0x0568, 0x056f, 0x057a, 0x0581, 0x058a,
+ 0x0590, 0x0599, 0x059e, 0x05a7, 0x05af, 0x05b6, 0x05be, 0x05c2,
+ 0x05c8, 0x05d0, 0x05d6, 0x05dc, 0x05e2, 0x05ea, 0x05ef, 0x05f6,
+ 0x05fd, 0x060d, 0x0615, 0x061a, 0x0623, 0x062c, 0x0635, 0x063a,
+ // Entry C0 - FF
+ 0x064c, 0x065a, 0x0669, 0x066f, 0x0676, 0x0684, 0x068a, 0x0696,
+ 0x06a8, 0x06b3, 0x06c1, 0x06d3, 0x06d6, 0x06ec, 0x06f6, 0x06fc,
+ 0x0702, 0x0709, 0x0712, 0x071e, 0x0727, 0x072c, 0x0736, 0x073d,
+ 0x0746, 0x074b, 0x0751, 0x0755, 0x075a, 0x0760, 0x076d, 0x0776,
+ 0x077b, 0x077f, 0x078a, 0x078d, 0x0794, 0x079f, 0x07a8, 0x07ac,
+ 0x07b3, 0x07b7, 0x07bd, 0x07c3, 0x07c8, 0x07cc, 0x07d0, 0x07d7,
+ 0x07dc, 0x07e1, 0x07e7, 0x07ec, 0x07f3, 0x07f9, 0x0800, 0x080e,
+ 0x0816, 0x081a, 0x0828, 0x082f, 0x0838, 0x0841, 0x084c, 0x0859,
+ // Entry 100 - 13F
+ 0x0861, 0x0869, 0x087b, 0x0884, 0x088a, 0x0892, 0x0897, 0x089f,
+ 0x08a5, 0x08ab, 0x08b0, 0x08b5, 0x08ba, 0x08ca, 0x08d6, 0x08db,
+ 0x08f2, 0x08fc, 0x0901, 0x0907, 0x090b, 0x090f, 0x091a, 0x092b,
+ 0x0931, 0x0935, 0x094b, 0x095b, 0x0961, 0x0972, 0x0976, 0x097f,
+ 0x0991, 0x0994, 0x09a7, 0x09be, 0x09cd, 0x09d6, 0x09e2, 0x09f0,
+ 0x09f8, 0x09fa, 0x0a03, 0x0a0f, 0x0a13, 0x0a18, 0x0a2a, 0x0a2e,
+ 0x0a3b, 0x0a43, 0x0a5f, 0x0a73, 0x0a82, 0x0a87, 0x0a90, 0x0a96,
+ 0x0a9b, 0x0aa8, 0x0abc, 0x0ac1, 0x0ac7, 0x0acc, 0x0ad5, 0x0ada,
+ // Entry 140 - 17F
+ 0x0ae8, 0x0af3, 0x0b01, 0x0b0b, 0x0b13, 0x0b18, 0x0b27, 0x0b35,
+ 0x0b39, 0x0b3d, 0x0b43, 0x0b48, 0x0b52, 0x0b5f, 0x0b72, 0x0b78,
+ 0x0b7e, 0x0b85, 0x0b96, 0x0ba7, 0x0bb3, 0x0bc0, 0x0bca, 0x0bd0,
+ 0x0bd3, 0x0bd8, 0x0bdc, 0x0be6, 0x0bed, 0x0bf1, 0x0bf8, 0x0c04,
+ 0x0c0b, 0x0c0f, 0x0c17, 0x0c1c, 0x0c23, 0x0c2f, 0x0c3b, 0x0c47,
+ 0x0c4b, 0x0c53, 0x0c5b, 0x0c67, 0x0c6e, 0x0c76, 0x0c7c, 0x0c8d,
+ 0x0c91, 0x0c9a, 0x0ca3, 0x0ca9, 0x0cb1, 0x0cb6, 0x0cc5, 0x0ccd,
+ 0x0cd4, 0x0cda, 0x0cdf, 0x0ce5, 0x0cea, 0x0cf1, 0x0d03, 0x0d0a,
+ // Entry 180 - 1BF
+ 0x0d11, 0x0d19, 0x0d23, 0x0d28, 0x0d2c, 0x0d36, 0x0d3f, 0x0d49,
+ 0x0d50, 0x0d55, 0x0d58, 0x0d5e, 0x0d63, 0x0d6f, 0x0d74, 0x0d7f,
+ 0x0d83, 0x0d89, 0x0d91, 0x0d98, 0x0da0, 0x0da5, 0x0da9, 0x0db4,
+ 0x0dba, 0x0dbf, 0x0dc3, 0x0dcb, 0x0de2, 0x0df0, 0x0df7, 0x0dfd,
+ 0x0e08, 0x0e16, 0x0e1e, 0x0e29, 0x0e2e, 0x0e3f, 0x0e46, 0x0e56,
+ 0x0e5b, 0x0e67, 0x0e6e, 0x0e76, 0x0e7b, 0x0e80, 0x0e8c, 0x0e9c,
+ 0x0ea4, 0x0ea8, 0x0eb8, 0x0ebe, 0x0ec2, 0x0ec8, 0x0ecf, 0x0ed5,
+ 0x0ede, 0x0ee5, 0x0eef, 0x0ef5, 0x0efb, 0x0f06, 0x0f0a, 0x0f17,
+ // Entry 1C0 - 1FF
+ 0x0f1f, 0x0f27, 0x0f2c, 0x0f31, 0x0f36, 0x0f49, 0x0f53, 0x0f5f,
+ 0x0f67, 0x0f71, 0x0f7b, 0x0f86, 0x0f9c, 0x0fa8, 0x0fb4, 0x0fc6,
+ 0x0fd1, 0x0fdc, 0x0fef, 0x0ff8, 0x1000, 0x100e, 0x1015, 0x1030,
+ 0x103a, 0x1041, 0x104b, 0x1055, 0x1064, 0x1069, 0x1070, 0x1077,
+ 0x107e, 0x1085, 0x108c, 0x108f, 0x1096, 0x109e, 0x10af, 0x10b6,
+ 0x10bb, 0x10c2, 0x10cc, 0x10d3, 0x10d8, 0x10e1, 0x10e6, 0x10f5,
+ 0x1106, 0x110c, 0x1110, 0x1114, 0x111a, 0x1129, 0x1138, 0x1142,
+ 0x114b, 0x1154, 0x1163, 0x1169, 0x117b, 0x1182, 0x118d, 0x1196,
+ // Entry 200 - 23F
+ 0x11a0, 0x11aa, 0x11b1, 0x11be, 0x11ca, 0x11cf, 0x11d3, 0x11e5,
+ 0x11eb, 0x11ef, 0x11f7, 0x11fe, 0x120b, 0x121c, 0x1226, 0x122f,
+ 0x1235, 0x123a, 0x123e, 0x1244, 0x1249, 0x124e, 0x1251, 0x1258,
+ 0x125f, 0x1268, 0x126f, 0x1279, 0x1281, 0x128c, 0x1295, 0x129b,
+ 0x12a1, 0x12a9, 0x12b2, 0x12b8, 0x12bf, 0x12c5, 0x12cc, 0x12d2,
+ 0x12e4, 0x12ed, 0x12f8, 0x12ff, 0x1305, 0x1308, 0x1312, 0x1316,
+ 0x1324, 0x1337, 0x133c, 0x1341, 0x1346, 0x134c, 0x1352, 0x1357,
+ 0x135c, 0x1364, 0x136f, 0x1379, 0x1381, 0x1385, 0x1388, 0x138e,
+ // Entry 240 - 27F
+ 0x1395, 0x139a, 0x13a3, 0x13ab, 0x13b7, 0x13c6, 0x13cf, 0x13d5,
+ 0x13f4, 0x13f8, 0x140e, 0x1414, 0x142b, 0x1439, 0x144d, 0x1469,
+ 0x1480, 0x1493, 0x14a8, 0x14bd, 0x14d9, 0x14ee, 0x1504, 0x1504,
+ 0x1518, 0x152f, 0x1540, 0x1548, 0x155d, 0x1570, 0x1579, 0x158b,
+ 0x15a4, 0x15b5,
+} // Size: 1244 bytes
+
+var ukLangStr string = "" + // Size: 9058 bytes
+ "афарськаабхазькаавестійськаафрикаансаканамхарськаарагонськаарабськаассам" +
+ "ськааварськааймараазербайджанськабашкирськабілоруськаболгарськабісламаб" +
+ "амбарабенгальськатибетськабретонськабоснійськакаталонськачеченськачамор" +
+ "рокорсиканськакрічеськацерковнослов’янськачуваськаваллійськаданськаніме" +
+ "цькадівехідзонг-кеевегрецькаанглійськаесперантоіспанськаестонськабасксь" +
+ "каперськафулафінськафіджіфарерськафранцузьказахіднофризькаірландськагае" +
+ "льськагалісійськагуаранігуджаратіменкськахаусаівритгіндіхірі-мотухорват" +
+ "ськагаїтянськаугорськавірменськагерероінтерлінгваіндонезійськаінтерлінг" +
+ "веігбосичуаньінупіакідоісландськаіталійськаінуктітутяпонськаяванськагру" +
+ "зинськаконґолезькакікуйюкунамаказахськакалааллісуткхмерськаканнадакорей" +
+ "ськаканурікашмірськакурдськакомікорнійськакиргизькалатинськалюксембурзь" +
+ "кагандалімбургійськалінгалалаоськалитовськалуба-катангалатвійськамалага" +
+ "сійськамаршалльськамаорімакедонськамалаяламмонгольськамаратхімалайськам" +
+ "альтійськабірманськанаурундебелє північнанепальськандонгаголландськанюн" +
+ "ошк (Норвегія)букмол (Норвегія)ндебелє південнанавахоньянджаокитаноджіб" +
+ "ваоромооріяосетинськапанджабіпаліпольськапуштупортугальськакечуаретором" +
+ "анськарундірумунськаросійськакіньяруандасанскритсардинськасіндхісаамськ" +
+ "а північнасангосингальськасловацькасловенськасамоанськашонасомаліалбанс" +
+ "ькасербськасісватісото південнасунданськашведськасуахілітамільськателуг" +
+ "утаджицькатайськатигриньятуркменськатсванатонганськатурецькатсонгататар" +
+ "ськатаїтянськауйгурськаукраїнськаурдуузбецькавендавʼєтнамськаволап’юква" +
+ "ллонськаволофкхосаідишйорубачжуанкитайськазулуськаачехськаачоліадангмеа" +
+ "дигейськаафрихіліагемайнськааккадськаалабамаалеутськапівденноалтайськад" +
+ "авньоанглійськаангікаарамейськаарауканськаараонаарапахоалжирська арабсь" +
+ "кааравакськаасуамериканська мова рухівастурськаавадхібалучібалійськабае" +
+ "рішбасабамумбатак тобагомалабеджабембабетавібенабафутбадагасхіднобелудж" +
+ "ійськабходжпурібікольськабінібанджарськакомсіксікабахтіарібраджбодоакус" +
+ "бурятськабугійськабулублінмедумбакаддокарібськакайюгаатсамсебуанськакіг" +
+ "ачібчачагатайськачуукськамарійськачинук жаргончокточіпев’янчерокічейєнн" +
+ "курдська (сорані)коптськакримськотатарськакашубськадакотадаргінськатаіт" +
+ "аделаварськаслейвдогрибськадінкаджермадогрінижньолужицькадуаласередньон" +
+ "ідерландськадьола-фонідіуладазагаембуефікдавньоєгипетськаекаджукеламськ" +
+ "асередньоанглійськаевондофангфіліппінськафонсередньофранцузькадавньофра" +
+ "нцузькаарпітанськафризька північнафризька східнафріульськагагагаузькага" +
+ "йогбайягєезгільбертськасередньоверхньонімецькадавньоверхньонімецькагонд" +
+ "ігоронталоготськагребодавньогрецьканімецька (Швейцарія)гусіїкучінхайдаг" +
+ "авайськахілігайнонхітітіхмонгверхньолужицькахупаібанськаібібіоілоканськ" +
+ "аінгуськаложбаннгомбамачамеіудео-перськаіудео-арабськакаракалпацькакабі" +
+ "льськакачінйюкамбакавікабардинськаканембутіапмакондекабувердіанукорокха" +
+ "сіхотаносакськакойра чіїнікакокаленджинкімбундукомі-перм’яцькаконканіко" +
+ "сраекпеллєкарачаєво-балкарськакарельськакурукхшамбалабафіаколоніанкумиц" +
+ "ькакутенаїладінолангіландаламбалезгінськалакотамонголозіпівнічна лурськ" +
+ "алуба-лулуалуїсеньолундалуолушейлуйямадурськамафамагадхімайтхілімакасар" +
+ "ськамандінгомасаїмабамокшамандарськамендемерумаврикійська креольськасер" +
+ "едньоірландськамакува-меетометамікмакмінангкабауманчжурськаманіпурімага" +
+ "вкмоссімундангдекілька мовкрікмірандськамарварімиінерзямазандеранськане" +
+ "аполітанськанаманижньонімецьканеварініаськаніуеао нагаквазіонгємбуннога" +
+ "йськадавньонорвезьканкосото північнануерневарі класичнаньямвезіньянколе" +
+ "ньоронзімаосейджосманськапангасінанськапехлевіпампангапап’яментопалауан" +
+ "ськадавньоперськафінікійсько-пунічнапонапедавньопровансальськакічераджа" +
+ "стханірапануїраротонгаромбоциганськаарумунськарвасандавеякутськасамарит" +
+ "янська арамейськасамбурусасакськасантальськангамбайсангусицилійськашотл" +
+ "андськапівденнокурдськасенекасенаселькупськакойраборо сенідавньоірландс" +
+ "ькатачелітшанськачадійська арабськасідамопівденносаамськасаамська лулес" +
+ "аамська інарісаамська скольтсонінкесогдійськасранан тонгосерерсахосукум" +
+ "асусушумерськакоморськаконгійське суахілісирійська класичнасирійськатем" +
+ "нетесотеренотетумтигретівтокелауклінгонтлінгіттамашекньяса тонгаток-піс" +
+ "інтарокоцимшиантумбукатувалутасавактувинськацентральномароканська тамаз" +
+ "ітудмуртськаугаритськаумбундукоріньваїводськавуньовалзерськаваламоварай" +
+ "вашовалпірікалмицькасогаяояпянгбенємбакантонськасапотекськаблісса моваз" +
+ "енагастандартна марокканська берберськазуньїнемає мовного вмістузазакіс" +
+ "учасна стандартна арабськапівденноазербайджанськаверхньонімецька (Швейц" +
+ "арія)англійська британськаіспанська (Європа)нижньосаксонськафламандська" +
+ "португальська (Європа)молдавськасербсько-хорватськакитайська спрощенаки" +
+ "тайська традиційна"
+
+var ukLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0020, 0x0036, 0x0048, 0x0050, 0x0062, 0x0076,
+ 0x0086, 0x0098, 0x00a8, 0x00b4, 0x00d2, 0x00e6, 0x00fa, 0x010e,
+ 0x011c, 0x012a, 0x0140, 0x0152, 0x0166, 0x017a, 0x0190, 0x01a2,
+ 0x01b0, 0x01c8, 0x01ce, 0x01da, 0x0201, 0x0211, 0x0225, 0x0233,
+ 0x0243, 0x024f, 0x025e, 0x0264, 0x0272, 0x0286, 0x0298, 0x02aa,
+ 0x02bc, 0x02cc, 0x02da, 0x02e2, 0x02f0, 0x02fa, 0x030c, 0x0320,
+ 0x033c, 0x0350, 0x0362, 0x0378, 0x0386, 0x0398, 0x03a8, 0x03b2,
+ 0x03bc, 0x03c6, 0x03d7, 0x03eb, 0x03ff, 0x040f, 0x0423, 0x042f,
+ // Entry 40 - 7F
+ 0x0445, 0x045f, 0x0475, 0x047d, 0x048b, 0x0499, 0x049f, 0x04b3,
+ 0x04c7, 0x04d9, 0x04e9, 0x04f9, 0x050d, 0x0523, 0x052f, 0x053b,
+ 0x054d, 0x0563, 0x0575, 0x0583, 0x0595, 0x05a1, 0x05b5, 0x05c5,
+ 0x05cd, 0x05e1, 0x05f3, 0x0605, 0x061f, 0x0629, 0x0643, 0x0651,
+ 0x065f, 0x0671, 0x0688, 0x069c, 0x06b6, 0x06ce, 0x06d8, 0x06ee,
+ 0x06fe, 0x0714, 0x0722, 0x0734, 0x074a, 0x075e, 0x0768, 0x0787,
+ 0x079b, 0x07a7, 0x07bd, 0x07dc, 0x07fb, 0x081a, 0x0826, 0x0834,
+ 0x0840, 0x084e, 0x0858, 0x0860, 0x0874, 0x0884, 0x088c, 0x089c,
+ // Entry 80 - BF
+ 0x08a6, 0x08c0, 0x08ca, 0x08e4, 0x08ee, 0x0900, 0x0912, 0x0928,
+ 0x0938, 0x094c, 0x0958, 0x0979, 0x0983, 0x0999, 0x09ab, 0x09bf,
+ 0x09d3, 0x09db, 0x09e7, 0x09f9, 0x0a09, 0x0a17, 0x0a30, 0x0a44,
+ 0x0a54, 0x0a62, 0x0a76, 0x0a82, 0x0a94, 0x0aa2, 0x0ab2, 0x0ac8,
+ 0x0ad4, 0x0ae8, 0x0af8, 0x0b04, 0x0b16, 0x0b2a, 0x0b3c, 0x0b50,
+ 0x0b58, 0x0b68, 0x0b72, 0x0b88, 0x0b99, 0x0bad, 0x0bb7, 0x0bc1,
+ 0x0bc9, 0x0bd5, 0x0bdf, 0x0bf1, 0x0c01, 0x0c11, 0x0c1b, 0x0c29,
+ 0x0c3d, 0x0c3d, 0x0c4d, 0x0c55, 0x0c63, 0x0c75, 0x0c83, 0x0c95,
+ // Entry C0 - FF
+ 0x0c95, 0x0cb7, 0x0cd7, 0x0ce3, 0x0cf7, 0x0d0d, 0x0d19, 0x0d27,
+ 0x0d4a, 0x0d5e, 0x0d5e, 0x0d5e, 0x0d64, 0x0d90, 0x0da2, 0x0da2,
+ 0x0dae, 0x0dba, 0x0dcc, 0x0dd8, 0x0de0, 0x0dea, 0x0dfd, 0x0e09,
+ 0x0e13, 0x0e1d, 0x0e29, 0x0e31, 0x0e3b, 0x0e47, 0x0e6b, 0x0e7d,
+ 0x0e91, 0x0e99, 0x0eaf, 0x0eb5, 0x0ec3, 0x0ec3, 0x0ed3, 0x0edd,
+ 0x0edd, 0x0ee5, 0x0eed, 0x0eff, 0x0f11, 0x0f19, 0x0f21, 0x0f2f,
+ 0x0f39, 0x0f4b, 0x0f57, 0x0f61, 0x0f75, 0x0f7d, 0x0f87, 0x0f9d,
+ 0x0fad, 0x0fbf, 0x0fd6, 0x0fe0, 0x0ff1, 0x0ffd, 0x1009, 0x1028,
+ // Entry 100 - 13F
+ 0x1038, 0x1038, 0x105a, 0x106c, 0x1078, 0x108c, 0x1096, 0x10ac,
+ 0x10b6, 0x10ca, 0x10d4, 0x10e0, 0x10ea, 0x1106, 0x1106, 0x1110,
+ 0x113a, 0x114d, 0x1157, 0x1163, 0x116b, 0x1173, 0x1173, 0x1193,
+ 0x11a1, 0x11b1, 0x11d5, 0x11d5, 0x11e1, 0x11e1, 0x11e9, 0x1201,
+ 0x1201, 0x1207, 0x1207, 0x122b, 0x124b, 0x1261, 0x1280, 0x129b,
+ 0x12af, 0x12b3, 0x12c5, 0x12c5, 0x12cd, 0x12d7, 0x12d7, 0x12df,
+ 0x12f7, 0x12f7, 0x1325, 0x134f, 0x134f, 0x1359, 0x136b, 0x1379,
+ 0x1383, 0x139d, 0x13c2, 0x13c2, 0x13c2, 0x13cc, 0x13d6, 0x13e0,
+ // Entry 140 - 17F
+ 0x13e0, 0x13f2, 0x13f2, 0x1406, 0x1412, 0x141c, 0x143a, 0x143a,
+ 0x1442, 0x1452, 0x145e, 0x1472, 0x1482, 0x1482, 0x1482, 0x148e,
+ 0x149a, 0x14a6, 0x14bf, 0x14da, 0x14da, 0x14f4, 0x1508, 0x1512,
+ 0x1516, 0x1520, 0x1528, 0x1540, 0x154e, 0x1556, 0x1564, 0x157c,
+ 0x157c, 0x1584, 0x1584, 0x158e, 0x15a8, 0x15bd, 0x15bd, 0x15bd,
+ 0x15c5, 0x15d7, 0x15e7, 0x1605, 0x1613, 0x161f, 0x162b, 0x1652,
+ 0x1652, 0x1652, 0x1666, 0x1672, 0x1680, 0x168a, 0x169a, 0x16aa,
+ 0x16b8, 0x16c4, 0x16ce, 0x16d8, 0x16e2, 0x16f6, 0x16f6, 0x16f6,
+ // Entry 180 - 1BF
+ 0x16f6, 0x1702, 0x1702, 0x170c, 0x1714, 0x1733, 0x1733, 0x1746,
+ 0x1756, 0x1760, 0x1766, 0x1770, 0x1778, 0x1778, 0x1778, 0x178a,
+ 0x1792, 0x17a0, 0x17b0, 0x17c6, 0x17d6, 0x17e0, 0x17e8, 0x17f2,
+ 0x1806, 0x1810, 0x1818, 0x1845, 0x1869, 0x1880, 0x1888, 0x1894,
+ 0x18aa, 0x18c0, 0x18d0, 0x18dc, 0x18e6, 0x18e6, 0x18f4, 0x190b,
+ 0x1913, 0x1927, 0x1935, 0x1935, 0x193d, 0x1945, 0x1961, 0x1961,
+ 0x197d, 0x1985, 0x19a1, 0x19ad, 0x19bb, 0x19c3, 0x19d0, 0x19dc,
+ 0x19ea, 0x19fc, 0x1a1a, 0x1a1a, 0x1a20, 0x1a39, 0x1a41, 0x1a5e,
+ // Entry 1C0 - 1FF
+ 0x1a6e, 0x1a7e, 0x1a88, 0x1a92, 0x1a9e, 0x1ab0, 0x1acc, 0x1ada,
+ 0x1aea, 0x1aff, 0x1b15, 0x1b15, 0x1b15, 0x1b15, 0x1b2f, 0x1b2f,
+ 0x1b54, 0x1b54, 0x1b54, 0x1b60, 0x1b60, 0x1b88, 0x1b90, 0x1b90,
+ 0x1ba6, 0x1bb4, 0x1bc6, 0x1bc6, 0x1bc6, 0x1bd0, 0x1be2, 0x1be2,
+ 0x1be2, 0x1be2, 0x1bf6, 0x1bfc, 0x1c0a, 0x1c1a, 0x1c49, 0x1c57,
+ 0x1c69, 0x1c7f, 0x1c7f, 0x1c8d, 0x1c97, 0x1cad, 0x1cc3, 0x1cc3,
+ 0x1ce3, 0x1cef, 0x1cf7, 0x1cf7, 0x1d0d, 0x1d28, 0x1d48, 0x1d48,
+ 0x1d56, 0x1d64, 0x1d87, 0x1d93, 0x1d93, 0x1d93, 0x1db3, 0x1dcc,
+ // Entry 200 - 23F
+ 0x1de7, 0x1e04, 0x1e12, 0x1e26, 0x1e3d, 0x1e47, 0x1e4f, 0x1e4f,
+ 0x1e5b, 0x1e63, 0x1e75, 0x1e87, 0x1eaa, 0x1ecd, 0x1edf, 0x1edf,
+ 0x1edf, 0x1ee9, 0x1ef1, 0x1efd, 0x1f07, 0x1f11, 0x1f17, 0x1f25,
+ 0x1f25, 0x1f33, 0x1f41, 0x1f41, 0x1f4f, 0x1f64, 0x1f75, 0x1f75,
+ 0x1f81, 0x1f81, 0x1f8f, 0x1f8f, 0x1f9d, 0x1fa9, 0x1fb7, 0x1fc9,
+ 0x2002, 0x2016, 0x202a, 0x2038, 0x2044, 0x204a, 0x204a, 0x204a,
+ 0x204a, 0x204a, 0x2058, 0x2058, 0x2062, 0x2076, 0x2082, 0x208c,
+ 0x2094, 0x20a2, 0x20a2, 0x20b4, 0x20b4, 0x20bc, 0x20c0, 0x20c4,
+ // Entry 240 - 27F
+ 0x20d0, 0x20d8, 0x20d8, 0x20ec, 0x2102, 0x2117, 0x2117, 0x2123,
+ 0x2165, 0x216f, 0x2195, 0x21a1, 0x21d5, 0x2203, 0x2203, 0x2236,
+ 0x2236, 0x2236, 0x225f, 0x225f, 0x225f, 0x2280, 0x2280, 0x2280,
+ 0x2280, 0x2280, 0x22a0, 0x22b6, 0x22b6, 0x22df, 0x22f3, 0x2318,
+ 0x233b, 0x2362,
+} // Size: 1244 bytes
+
+var urLangStr string = "" + // Size: 3619 bytes
+ "ابقازیانایفریکانزاکانامہاریعربیآسامیایماراآزربائیجانیباشکیربیلاروسیبلغار" +
+ "یبمبارابنگالیتبتیبریٹنبوسنیکیٹالانچیچنکوراسیکنچیکچوواشویلشڈینشجرمنڈیویہ" +
+ "یژونگکھاایویونانیانگریزیایسپرانٹوہسپانویاسٹونینباسکیفارسیفینیشفجیفیروئی" +
+ "زفرانسیسیمغربی فریسیئنآئیرِشسکاٹ گیلِکگالیشیائیگُارانیگجراتیمینکسہؤساعب" +
+ "رانیہندیکراتیہیتیہنگیرینارمینیبین لسانیاتانڈونیثیائیاِگبوسچوان ایآئس لی" +
+ "نڈکاطالویاینُکٹیٹٹجاپانیجاویجارجیکانگوکیکویوقزاخكالاليستخمیرکنّاڈاکوریا" +
+ "ئیکشمیریکردشکورنشکرغیزیلاطینیلگژمبرگشگینڈالِنگَلالاؤلتھُواینینلبا-كاتان" +
+ "جالیٹوینملاگاسیماؤریمقدونیائیمالایالممنگؤلیمراٹهیمالائیمالٹیبرمیشمالی د" +
+ "بیلنیپالیڈچنورویجینی نینورسکنارویجین بوکملنیانجاآكسیٹاناورومواورِیااوسی" +
+ "ٹکپنجابیپولستانیپشتوپُرتگالیکویچوآرومانشرونڈیرومینینروسیکینیاروانڈاسَنس" +
+ "کرِتسندھیشمالی سامیساںغوسنہالاسلوواکسلووینیائیساموآنشوناصومالیالبانیصرب" +
+ "یسواتیجنوبی سوتھوسنڈانیزسویڈشسواحلیتملتیلگوتاجکتھائیٹگرینیاترکمانسواناٹ" +
+ "ونگنترکیزونگاتاتارتاہیتییوئگہریوکرینیائیاردوازبیکوینڈاویتنامیوولوفژوسای" +
+ "دشیوروباچینیزولواکولیاغمماپوچےآسوبیمبابینامغربی بلوچیبوڈوچیگاچیروکیسورا" +
+ "نی کردشتائتازرماذیلی سربیائیدوالاجولا فونياامبوایفِکفلیپینوگاغاغاوزسوئس" +
+ " جرمنگسیہوائیاپر سربیائینگومباماشیمقبائلیکامباماكوندهكابويرديانوكويرا شي" +
+ "نيكالينجينکومی پرمیاککونکنیشامبالابافيالانگیلاکوٹالوزیشمالی لریلیوبا لو" +
+ "لوآلولویاماسایمیروموریسیینماخاوا-ميتومیٹاموہاکمنڈانگمزندرانیناماادنی جر" +
+ "منكوايسواینکوشمالی سوتھونویرنینکولكيشیرومبورواسامبوروسانگوجنوبی کردسینا" +
+ "كويرابورو سينیتشلحيتجنوبی سامیلول سامیاناری سامیسکولٹ سامیکانگو سواحلیت" +
+ "یسوٹیٹمکلنگنٹوک پِسِنٹمبوکاتاساواقسینٹرل ایٹلس ٹمازائٹنامعلوم زبانوائیو" +
+ "نجووارلپیریسوگااسٹینڈرڈ مراقشی تمازیقیکوئی لسانی مواد نہیںماڈرن اسٹینڈر" +
+ "ڈ عربیجنوبی آزربائیجانیآسٹریائی جرمنسوئس ہائی جرمنآسٹریلیائی انگریزیکین" +
+ "یڈین انگریزیبرطانوی انگریزیامریکی انگریزیلاطینی امریکی ہسپانوییورپی ہسپ" +
+ "انویمیکسیکن ہسپانویکینیڈین فرانسیسیسوئس فرینچادنی سیکسنفلیمِشبرازیلی پر" +
+ "تگالییورپی پرتگالیمالدوواسربو-کروئیشینچینی (آسان کردہ)روایتی چینی"
+
+var urLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x002a, 0x0036, 0x0036,
+ 0x003e, 0x0048, 0x0048, 0x0054, 0x006a, 0x0076, 0x0086, 0x0092,
+ 0x0092, 0x009e, 0x00aa, 0x00b2, 0x00bc, 0x00c6, 0x00d4, 0x00dc,
+ 0x00dc, 0x00ec, 0x00ec, 0x00f2, 0x00f2, 0x00fc, 0x0104, 0x010c,
+ 0x0114, 0x0120, 0x012e, 0x0134, 0x0140, 0x014e, 0x0160, 0x016e,
+ 0x017c, 0x0186, 0x0190, 0x0190, 0x019a, 0x01a0, 0x01ae, 0x01be,
+ 0x01d7, 0x01e3, 0x01f6, 0x0208, 0x0216, 0x0222, 0x022c, 0x0234,
+ 0x0240, 0x0248, 0x0248, 0x0252, 0x025a, 0x0268, 0x0274, 0x0274,
+ // Entry 40 - 7F
+ 0x0289, 0x029f, 0x029f, 0x02a9, 0x02b8, 0x02b8, 0x02b8, 0x02c9,
+ 0x02d5, 0x02e7, 0x02f3, 0x02fb, 0x0305, 0x030f, 0x031b, 0x031b,
+ 0x0323, 0x0333, 0x033b, 0x0347, 0x0355, 0x0355, 0x0361, 0x0369,
+ 0x0369, 0x0373, 0x037f, 0x038b, 0x039b, 0x03a5, 0x03a5, 0x03b3,
+ 0x03b9, 0x03cd, 0x03e2, 0x03ee, 0x03fc, 0x03fc, 0x0406, 0x0418,
+ 0x0428, 0x0434, 0x0440, 0x044c, 0x0456, 0x045e, 0x045e, 0x0471,
+ 0x047d, 0x047d, 0x0481, 0x04a2, 0x04bd, 0x04bd, 0x04bd, 0x04c9,
+ 0x04d7, 0x04d7, 0x04e3, 0x04ef, 0x04fb, 0x0507, 0x0507, 0x0517,
+ // Entry 80 - BF
+ 0x051f, 0x052f, 0x053b, 0x0547, 0x0551, 0x055f, 0x0567, 0x057d,
+ 0x058d, 0x058d, 0x0597, 0x05aa, 0x05b4, 0x05c0, 0x05cc, 0x05e0,
+ 0x05ec, 0x05f4, 0x0600, 0x060c, 0x0614, 0x061e, 0x0633, 0x0641,
+ 0x064b, 0x0657, 0x065d, 0x0667, 0x066f, 0x0679, 0x0687, 0x0693,
+ 0x069d, 0x06a7, 0x06af, 0x06b9, 0x06c3, 0x06cf, 0x06db, 0x06ef,
+ 0x06f7, 0x0701, 0x070b, 0x0719, 0x0719, 0x0719, 0x0723, 0x072b,
+ 0x0731, 0x073d, 0x073d, 0x0745, 0x074d, 0x074d, 0x0757, 0x0757,
+ 0x0757, 0x0757, 0x0757, 0x075d, 0x075d, 0x075d, 0x075d, 0x075d,
+ // Entry C0 - FF
+ 0x075d, 0x075d, 0x075d, 0x075d, 0x075d, 0x0769, 0x0769, 0x0769,
+ 0x0769, 0x0769, 0x0769, 0x0769, 0x076f, 0x076f, 0x076f, 0x076f,
+ 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f, 0x076f,
+ 0x076f, 0x0779, 0x0779, 0x0781, 0x0781, 0x0781, 0x0796, 0x0796,
+ 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796, 0x0796,
+ 0x0796, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e,
+ 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x07a6, 0x07a6, 0x07a6,
+ 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07a6, 0x07b2, 0x07b2, 0x07c7,
+ // Entry 100 - 13F
+ 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07c7, 0x07d1, 0x07d1,
+ 0x07d1, 0x07d1, 0x07d1, 0x07d9, 0x07d9, 0x07f0, 0x07f0, 0x07fa,
+ 0x07fa, 0x080d, 0x080d, 0x080d, 0x0815, 0x081f, 0x081f, 0x081f,
+ 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x081f, 0x082d,
+ 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x082d,
+ 0x082d, 0x0831, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d,
+ 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d, 0x083d,
+ 0x083d, 0x083d, 0x084e, 0x084e, 0x084e, 0x0854, 0x0854, 0x0854,
+ // Entry 140 - 17F
+ 0x0854, 0x085e, 0x085e, 0x085e, 0x085e, 0x085e, 0x0873, 0x0873,
+ 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873, 0x0873,
+ 0x087f, 0x0889, 0x0889, 0x0889, 0x0889, 0x0889, 0x0895, 0x0895,
+ 0x0895, 0x089f, 0x089f, 0x089f, 0x089f, 0x089f, 0x08ad, 0x08c3,
+ 0x08c3, 0x08c3, 0x08c3, 0x08c3, 0x08c3, 0x08d6, 0x08d6, 0x08d6,
+ 0x08d6, 0x08e6, 0x08e6, 0x08fb, 0x0907, 0x0907, 0x0907, 0x0907,
+ 0x0907, 0x0907, 0x0907, 0x0907, 0x0915, 0x091f, 0x091f, 0x091f,
+ 0x091f, 0x091f, 0x0929, 0x0929, 0x0929, 0x0929, 0x0929, 0x0929,
+ // Entry 180 - 1BF
+ 0x0929, 0x0935, 0x0935, 0x0935, 0x093d, 0x094e, 0x094e, 0x0963,
+ 0x0963, 0x0963, 0x0967, 0x0967, 0x096f, 0x096f, 0x096f, 0x096f,
+ 0x096f, 0x096f, 0x096f, 0x096f, 0x096f, 0x0979, 0x0979, 0x0979,
+ 0x0979, 0x0979, 0x0981, 0x0991, 0x0991, 0x09a6, 0x09ae, 0x09ae,
+ 0x09ae, 0x09ae, 0x09ae, 0x09b8, 0x09b8, 0x09b8, 0x09c4, 0x09c4,
+ 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09c4, 0x09d4, 0x09d4,
+ 0x09d4, 0x09dc, 0x09ed, 0x09ed, 0x09ed, 0x09ed, 0x09ed, 0x09f9,
+ 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x0a03, 0x0a18, 0x0a20, 0x0a20,
+ // Entry 1C0 - 1FF
+ 0x0a20, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c,
+ 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c,
+ 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a34, 0x0a34,
+ 0x0a34, 0x0a34, 0x0a34, 0x0a34, 0x0a34, 0x0a3e, 0x0a3e, 0x0a3e,
+ 0x0a3e, 0x0a3e, 0x0a3e, 0x0a44, 0x0a44, 0x0a44, 0x0a44, 0x0a52,
+ 0x0a52, 0x0a52, 0x0a52, 0x0a52, 0x0a5c, 0x0a5c, 0x0a5c, 0x0a5c,
+ 0x0a6d, 0x0a6d, 0x0a75, 0x0a75, 0x0a75, 0x0a90, 0x0a90, 0x0a90,
+ 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, 0x0aaf, 0x0abe,
+ // Entry 200 - 23F
+ 0x0ad1, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4,
+ 0x0ae4, 0x0ae4, 0x0ae4, 0x0ae4, 0x0afb, 0x0afb, 0x0afb, 0x0afb,
+ 0x0afb, 0x0afb, 0x0b03, 0x0b03, 0x0b0b, 0x0b0b, 0x0b0b, 0x0b0b,
+ 0x0b0b, 0x0b15, 0x0b15, 0x0b15, 0x0b15, 0x0b15, 0x0b26, 0x0b26,
+ 0x0b26, 0x0b26, 0x0b26, 0x0b26, 0x0b32, 0x0b32, 0x0b40, 0x0b40,
+ 0x0b66, 0x0b66, 0x0b66, 0x0b66, 0x0b7d, 0x0b85, 0x0b85, 0x0b85,
+ 0x0b85, 0x0b85, 0x0b85, 0x0b85, 0x0b8d, 0x0b8d, 0x0b8d, 0x0b8d,
+ 0x0b8d, 0x0b9d, 0x0b9d, 0x0b9d, 0x0b9d, 0x0ba5, 0x0ba5, 0x0ba5,
+ // Entry 240 - 27F
+ 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5,
+ 0x0bd1, 0x0bd1, 0x0bf6, 0x0bf6, 0x0c1a, 0x0c3b, 0x0c54, 0x0c6e,
+ 0x0c91, 0x0cae, 0x0ccb, 0x0ce6, 0x0d0e, 0x0d27, 0x0d44, 0x0d44,
+ 0x0d63, 0x0d76, 0x0d89, 0x0d95, 0x0db2, 0x0dcb, 0x0dd9, 0x0df2,
+ 0x0e0e, 0x0e23,
+} // Size: 1244 bytes
+
+var uzLangStr string = "" + // Size: 1850 bytes
+ "abxazafrikaansakanamxararabassamozarbayjonboshqirdbelarusbolgarbambarben" +
+ "galtibetbretonbosniykatalanchechenkorsikanchexchuvashvalliydatnemischadz" +
+ "ongkaevegrekinglizchaesperantoispanchaestonchabaskforsfinchafijifarercha" +
+ "fransuzchag‘arbiy frizirlandgalisiyguaranigujarotmenxausaibroniyhindxorv" +
+ "atgaityanvengerarmanindonezigbosichuanislanditalyaninuktitutyaponyavangr" +
+ "uzinchakikuyuqozoqchagrenlandxmerchakannadakoreyschakashmirchakurdchakor" +
+ "nqirgʻizchalotinchalyuksemburgchagandalingalalaoschalitvaluba-katangalat" +
+ "ishchamalagasiymaorimakedonmalayalammo‘g‘ulmaratximalaymaltiybirmanshimo" +
+ "liy ndebelenepalgollandnorveg-nyunorsknorveg-bokmaloromooriyapanjobchapo" +
+ "lyakchapushtuportugalchakechuaromanshrundirumincharuschakinyaruandasansk" +
+ "ritsindxishimoliy saamsangosingalslovakchaslovenchashonasomalichaalbanse" +
+ "rbchasundanshvedsuaxilitamiltelugutojiktaytigrinyaturkmantonganturktatar" +
+ "uyg‘urukrainurduo‘zbekvyetnamvolofkxosayorubaxitoyzuluagemaraukanasubemb" +
+ "abenag‘arbiy belujibodochigacherokisorani-kurdtaitazarmaquyi sorbchadual" +
+ "adiola-fogniembufilipinchagagauznemis (Shveytsariya)gusiigavaychayuqori " +
+ "sorbngombamachamekabilkambamakondekabuverdianukoyra-chiinikalenjinkomi-p" +
+ "ermyakkonkanshambalabafiyalangilakotashimoliy luriluoluhyamasaymendemeru" +
+ "morisyenmaxuva-mittometamohaukmundangmazanderannamaquyi nemiskvasionkonu" +
+ "ernyankolekicheromboruandasamburusangujanubiy kurdsenakoyraboro-sennitas" +
+ "helxitjanubiy saamlule-saaminari-saamskolt-saamkongo-suaxilitesotasavaqm" +
+ "arkaziy atlas tamazigxtnoma’lum tilvaivunjovalbirisogatamazigxttil tarki" +
+ "bi yo‘qstandart arabnemis (Avstriya)yuqori nemis (Shveytsariya)ingliz (A" +
+ "vstraliya)ingliz (Kanada)ingliz (Britaniya)ingliz (Amerika)ispan (Lotin " +
+ "Amerikasi)ispan (Yevropa)ispan (Meksika)fransuz (Kanada)fransuz (Shveyts" +
+ "ariya)quyi saksonflamandportugal (Braziliya)portugal (Yevropa)moldovanso" +
+ "ddalashgan xitoyan’anaviy xitoy"
+
+var uzLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0005, 0x0005, 0x000e, 0x0012, 0x0017, 0x0017,
+ 0x001b, 0x0020, 0x0020, 0x0020, 0x002a, 0x0032, 0x0039, 0x003f,
+ 0x003f, 0x0045, 0x004b, 0x0050, 0x0056, 0x005c, 0x0063, 0x006a,
+ 0x006a, 0x0072, 0x0072, 0x0076, 0x0076, 0x007d, 0x0083, 0x0086,
+ 0x008e, 0x008e, 0x0095, 0x0098, 0x009c, 0x00a5, 0x00ae, 0x00b6,
+ 0x00be, 0x00c2, 0x00c6, 0x00c6, 0x00cc, 0x00d0, 0x00d8, 0x00e2,
+ 0x00f0, 0x00f6, 0x00f6, 0x00fd, 0x0104, 0x010b, 0x010e, 0x0113,
+ 0x011a, 0x011e, 0x011e, 0x0124, 0x012b, 0x0131, 0x0136, 0x0136,
+ // Entry 40 - 7F
+ 0x0136, 0x013d, 0x013d, 0x0141, 0x0148, 0x0148, 0x0148, 0x014e,
+ 0x0155, 0x015e, 0x0163, 0x0168, 0x0171, 0x0171, 0x0177, 0x0177,
+ 0x017f, 0x0187, 0x018e, 0x0195, 0x019e, 0x019e, 0x01a8, 0x01af,
+ 0x01af, 0x01b3, 0x01be, 0x01c6, 0x01d4, 0x01d9, 0x01d9, 0x01e0,
+ 0x01e7, 0x01ec, 0x01f8, 0x0201, 0x020a, 0x020a, 0x020f, 0x0216,
+ 0x021f, 0x022a, 0x0231, 0x0236, 0x023c, 0x0242, 0x0242, 0x0252,
+ 0x0257, 0x0257, 0x025e, 0x026d, 0x027a, 0x027a, 0x027a, 0x027a,
+ 0x027a, 0x027a, 0x027f, 0x0284, 0x0284, 0x028d, 0x028d, 0x0296,
+ // Entry 80 - BF
+ 0x029c, 0x02a7, 0x02ad, 0x02b4, 0x02b9, 0x02c1, 0x02c7, 0x02d2,
+ 0x02da, 0x02da, 0x02e0, 0x02ed, 0x02f2, 0x02f8, 0x0301, 0x030a,
+ 0x030a, 0x030f, 0x0318, 0x031d, 0x0324, 0x0324, 0x0324, 0x032a,
+ 0x032f, 0x0336, 0x033b, 0x0341, 0x0346, 0x0349, 0x0351, 0x0358,
+ 0x0358, 0x035e, 0x0362, 0x0362, 0x0367, 0x0367, 0x036f, 0x0375,
+ 0x0379, 0x0381, 0x0381, 0x0388, 0x0388, 0x0388, 0x038d, 0x0392,
+ 0x0392, 0x0398, 0x0398, 0x039d, 0x03a1, 0x03a1, 0x03a1, 0x03a1,
+ 0x03a1, 0x03a1, 0x03a1, 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03a5,
+ // Entry C0 - FF
+ 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03a5, 0x03ac, 0x03ac, 0x03ac,
+ 0x03ac, 0x03ac, 0x03ac, 0x03ac, 0x03af, 0x03af, 0x03af, 0x03af,
+ 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af,
+ 0x03af, 0x03b4, 0x03b4, 0x03b8, 0x03b8, 0x03b8, 0x03c8, 0x03c8,
+ 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8, 0x03c8,
+ 0x03c8, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc,
+ 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03cc, 0x03d1, 0x03d1, 0x03d1,
+ 0x03d1, 0x03d1, 0x03d1, 0x03d1, 0x03d1, 0x03d8, 0x03d8, 0x03e3,
+ // Entry 100 - 13F
+ 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e3, 0x03e8, 0x03e8,
+ 0x03e8, 0x03e8, 0x03e8, 0x03ed, 0x03ed, 0x03f9, 0x03f9, 0x03fe,
+ 0x03fe, 0x0409, 0x0409, 0x0409, 0x040d, 0x040d, 0x040d, 0x040d,
+ 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x040d, 0x0417,
+ 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417,
+ 0x0417, 0x0417, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d,
+ 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d,
+ 0x041d, 0x041d, 0x0431, 0x0431, 0x0431, 0x0436, 0x0436, 0x0436,
+ // Entry 140 - 17F
+ 0x0436, 0x043e, 0x043e, 0x043e, 0x043e, 0x043e, 0x0449, 0x0449,
+ 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449, 0x0449,
+ 0x044f, 0x0456, 0x0456, 0x0456, 0x0456, 0x0456, 0x045b, 0x045b,
+ 0x045b, 0x0460, 0x0460, 0x0460, 0x0460, 0x0460, 0x0467, 0x0473,
+ 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, 0x047f, 0x047f, 0x047f,
+ 0x047f, 0x0487, 0x0487, 0x0493, 0x0499, 0x0499, 0x0499, 0x0499,
+ 0x0499, 0x0499, 0x0499, 0x0499, 0x04a1, 0x04a7, 0x04a7, 0x04a7,
+ 0x04a7, 0x04a7, 0x04ac, 0x04ac, 0x04ac, 0x04ac, 0x04ac, 0x04ac,
+ // Entry 180 - 1BF
+ 0x04ac, 0x04b2, 0x04b2, 0x04b2, 0x04b2, 0x04bf, 0x04bf, 0x04bf,
+ 0x04bf, 0x04bf, 0x04c2, 0x04c2, 0x04c7, 0x04c7, 0x04c7, 0x04c7,
+ 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04cc, 0x04cc, 0x04cc,
+ 0x04cc, 0x04d1, 0x04d5, 0x04dd, 0x04dd, 0x04e9, 0x04ed, 0x04ed,
+ 0x04ed, 0x04ed, 0x04ed, 0x04f3, 0x04f3, 0x04f3, 0x04fa, 0x04fa,
+ 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x04fa, 0x0504, 0x0504,
+ 0x0504, 0x0508, 0x0512, 0x0512, 0x0512, 0x0512, 0x0512, 0x0518,
+ 0x0518, 0x0518, 0x0518, 0x0518, 0x051b, 0x051b, 0x051f, 0x051f,
+ // Entry 1C0 - 1FF
+ 0x051f, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527,
+ 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527,
+ 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x0527, 0x052c, 0x052c,
+ 0x052c, 0x052c, 0x052c, 0x052c, 0x052c, 0x0531, 0x0531, 0x0531,
+ 0x0531, 0x0531, 0x0531, 0x0537, 0x0537, 0x0537, 0x0537, 0x053e,
+ 0x053e, 0x053e, 0x053e, 0x053e, 0x0543, 0x0543, 0x0543, 0x0543,
+ 0x054f, 0x054f, 0x0553, 0x0553, 0x0553, 0x0562, 0x0562, 0x0562,
+ 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x0577, 0x0580,
+ // Entry 200 - 23F
+ 0x058a, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594, 0x0594,
+ 0x0594, 0x0594, 0x0594, 0x0594, 0x05a1, 0x05a1, 0x05a1, 0x05a1,
+ 0x05a1, 0x05a1, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5,
+ 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5,
+ 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05a5, 0x05ac, 0x05ac,
+ 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05d2, 0x05d5, 0x05d5, 0x05d5,
+ 0x05d5, 0x05d5, 0x05d5, 0x05d5, 0x05da, 0x05da, 0x05da, 0x05da,
+ 0x05da, 0x05e1, 0x05e1, 0x05e1, 0x05e1, 0x05e5, 0x05e5, 0x05e5,
+ // Entry 240 - 27F
+ 0x05e5, 0x05e5, 0x05e5, 0x05e5, 0x05e5, 0x05e5, 0x05e5, 0x05e5,
+ 0x05ee, 0x05ee, 0x0600, 0x0600, 0x060d, 0x060d, 0x061d, 0x0638,
+ 0x064b, 0x065a, 0x066c, 0x067c, 0x0693, 0x06a2, 0x06b1, 0x06b1,
+ 0x06c1, 0x06d7, 0x06e2, 0x06e9, 0x06fd, 0x070f, 0x0717, 0x0717,
+ 0x0729, 0x073a,
+} // Size: 1244 bytes
+
+var viLangStr string = "" + // Size: 8556 bytes
+ "Tiếng AfarTiếng AbkhaziaTiếng AvestanTiếng Nam PhiTiếng AkanTiếng Amhari" +
+ "cTiếng AragonTiếng Ả RậpTiếng AssamTiếng AvaricTiếng AymaraTiếng Azerbai" +
+ "janTiếng BashkirTiếng BelarusTiếng BulgariaTiếng BislamaTiếng BambaraTiế" +
+ "ng BengaliTiếng Tây TạngTiếng BretonTiếng Nam TưTiếng CatalanTiếng Chech" +
+ "enTiếng ChamorroTiếng CorsicaTiếng CreeTiếng SécTiếng Slavơ Nhà thờTiếng" +
+ " ChuvashTiếng WalesTiếng Đan MạchTiếng ĐứcTiếng DivehiTiếng DzongkhaTiến" +
+ "g EweTiếng Hy LạpTiếng AnhTiếng Quốc Tế NgữTiếng Tây Ban NhaTiếng Estoni" +
+ "aTiếng BasqueTiếng Ba TưTiếng FulahTiếng Phần LanTiếng FijiTiếng FaoreTi" +
+ "ếng PhápTiếng FrisiaTiếng Ai-lenTiếng Xentơ (Xcốt len)Tiếng GalicianTi" +
+ "ếng GuaraniTiếng GujaratiTiếng ManxTiếng HausaTiếng Do TháiTiếng Hindi" +
+ "Tiếng Hiri MotuTiếng CroatiaTiếng HaitiTiếng HungaryTiếng ArmeniaTiếng H" +
+ "ereroTiếng Khoa Học Quốc TếTiếng IndonesiaTiếng InterlingueTiếng IgboTiế" +
+ "ng Di Tứ XuyênTiếng InupiaqTiếng IdoTiếng IcelandTiếng ÝTiếng InuktitutT" +
+ "iếng NhậtTiếng JavaTiếng GruziaTiếng KongoTiếng KikuyuTiếng KuanyamaTiến" +
+ "g KazakhTiếng KalaallisutTiếng Khơ-meTiếng KannadaTiếng HànTiếng KanuriT" +
+ "iếng KashmiriTiếng KurdTiếng KomiTiếng CornwallTiếng KyrgyzTiếng La-tinh" +
+ "Tiếng LuxembourgTiếng GandaTiếng LimburgTiếng LingalaTiếng LàoTiếng Lít-" +
+ "vaTiếng Luba-KatangaTiếng LatviaTiếng MalagasyTiếng MarshallTiếng MaoriT" +
+ "iếng MacedoniaTiếng MalayalamTiếng Mông CổTiếng MarathiTiếng MalaysiaTiế" +
+ "ng MaltTiếng Miến ĐiệnTiếng NauruTiếng Ndebele Miền BắcTiếng NepalTiếng " +
+ "NdongaTiếng Hà LanTiếng Na Uy (Nynorsk)Tiếng Na Uy (Bokmål)Tiếng Ndebele" +
+ " Miền NamTiếng NavajoTiếng NyanjaTiếng OccitanTiếng OjibwaTiếng OromoTiế" +
+ "ng OriyaTiếng OsseticTiếng PunjabTiếng PaliTiếng Ba LanTiếng PashtoTiếng" +
+ " Bồ Đào NhaTiếng QuechuaTiếng RomanshTiếng RundiTiếng RumaniTiếng NgaTiế" +
+ "ng KinyarwandaTiếng PhạnTiếng SardiniaTiếng SindhiTiếng Sami Miền BắcTiế" +
+ "ng SangoTiếng SinhalaTiếng SlovakTiếng SloveniaTiếng SamoaTiếng ShonaTiế" +
+ "ng SomaliTiếng An-ba-niTiếng SerbiaTiếng SwatiTiếng SesothoTiếng SundaTi" +
+ "ếng Thụy ĐiểnTiếng SwahiliTiếng TamilTiếng TeluguTiếng TajikTiếng Thái" +
+ "Tiếng TigrigyaTiếng TurkTiếng TswanaTiếng TongaTiếng Thổ Nhĩ KỳTiếng Tso" +
+ "ngaTiếng TatarTiếng TahitiTiếng UyghurTiếng UcrainaTiếng UđuTiếng UzbekT" +
+ "iếng VendaTiếng ViệtTiếng VolapükTiếng WalloonTiếng WolofTiếng XhosaTiến" +
+ "g Y-đitTiếng YorubaTiếng ZhuangTiếng TrungTiếng ZuluTiếng AchineseTiếng " +
+ "AcoliTiếng AdangmeTiếng AdygheTiếng AfrihiliTiếng AghemTiếng AinuTiếng A" +
+ "kkadiaTiếng AlabamaTiếng AleutTiếng Gheg AlbaniTiếng Altai Miền NamTiếng" +
+ " Anh cổTiếng AngikaTiếng AramaicTiếng AraucanianTiếng AraonaTiếng Arapah" +
+ "oTiếng Ả Rập AlgeriaTiếng ArawakTiếng Ả Rập Ai CậpTiếng AsuNgôn ngữ Ký h" +
+ "iệu MỹTiếng AsturiasTiếng AwadhiTiếng BaluchiTiếng BaliTiếng BavariaTiến" +
+ "g BasaaTiếng BamunTiếng Batak TobaTiếng GhomalaTiếng BejaTiếng BembaTiến" +
+ "g BetawiTiếng BenaTiếng BafutTiếng BadagaTiếng Tây BalochiTiếng Bhojpuri" +
+ "Tiếng BikolTiếng BiniTiếng BanjarTiếng KomTiếng SiksikaTiếng Bishnupriya" +
+ "Tiếng BakhtiariTiếng BrajTiếng BrahuiTiếng BodoTiếng AkooseTiếng BuriatT" +
+ "iếng BuginTiếng BuluTiếng BlinTiếng MedumbaTiếng CaddoTiếng CaribTiếng C" +
+ "ayugaTiếng AtsamTiếng CebuanoTiếng ChigaTiếng ChibchaTiếng ChagataiTiếng" +
+ " ChuukTiếng MariBiệt ngữ ChinookTiếng ChoctawTiếng ChipewyanTiếng Cherok" +
+ "eeTiếng CheyenneTiếng Kurd Miền TrungTiếng CopticTiếng CapiznonTiếng Thổ" +
+ " Nhĩ Kỳ CrimeanTiếng KashubiaTiếng DakotaTiếng DargwaTiếng TaitaTiếng De" +
+ "lawareTiếng SlaveTiếng DogribTiếng DinkaTiếng ZarmaTiếng DogriTiếng Hạ S" +
+ "orbiaTiếng Dusun Miền TrungTiếng DualaTiếng Hà Lan Trung cổTiếng Jola-Fo" +
+ "nyiTiếng DyulaTiếng DazagaTiếng EmbuTiếng EfikTiếng EmiliaTiếng Ai Cập c" +
+ "ổTiếng EkajukTiếng ElamiteTiếng Anh Trung cổTiếng Yupik Miền TrungTiến" +
+ "g EwondoTiếng ExtremaduraTiếng FangTiếng PhilipinTiếng FonTiếng Pháp Caj" +
+ "unTiếng Pháp Trung cổTiếng Pháp cổTiếng ArpitanTiếng Frisian Miền BắcTiế" +
+ "ng Frisian Miền ĐôngTiếng FriulianTiếng GaTiếng GagauzTiếng GayoTiếng Gb" +
+ "ayaTiếng GeezTiếng GilbertTiếng GilakiTiếng Thượng Giéc-man Trung cổTiến" +
+ "g Thượng Giéc-man cổTiếng Goan KonkaniTiếng GondiTiếng GorontaloTiếng Gô" +
+ "-tíchTiếng GreboTiếng Hy Lạp cổTiếng Đức (Thụy Sĩ)Tiếng FrafraTiếng Gusi" +
+ "iTiếng GwichʼinTiếng HaidaTiếng Trung HakkaTiếng HawaiiTiếng Fiji HindiT" +
+ "iếng HiligaynonTiếng HittiteTiếng HmôngTiếng Thượng SorbiaTiếng HupaTiến" +
+ "g IbanTiếng IbibioTiếng IlokoTiếng IngushTiếng IngriaTiếng Anh Jamaica C" +
+ "reoleTiếng LojbanTiếng NgombaTiếng MachameTiếng Judeo-Ba TưTiếng Judeo-Ả" +
+ " RậpTiếng JutishTiếng Kara-KalpakTiếng KabyleTiếng KachinTiếng JjuTiếng " +
+ "KambaTiếng KawiTiếng KabardianTiếng KanembuTiếng TyapTiếng MakondeTiếng " +
+ "KabuverdianuTiếng KoroTiếng KhasiTiếng KhotanTiếng Koyra ChiiniTiếng Kak" +
+ "oTiếng KalenjinTiếng KimbunduTiếng Komi-PermyakTiếng KonkaniTiếng Kosrae" +
+ "Tiếng KpelleTiếng Karachay-BalkarTiếng KarelianTiếng KurukhTiếng Shambal" +
+ "aTiếng BafiaTiếng CologneTiếng KumykTiếng KutenaiTiếng LadinoTiếng Langi" +
+ "Tiếng LahndaTiếng LambaTiếng LezghianTiếng LakotaTiếng MongoTiếng LoziTi" +
+ "ếng Bắc LuriTiếng Luba-LuluaTiếng LuisenoTiếng LundaTiếng LuoTiếng Lus" +
+ "haiTiếng LuyiaTiếng MaduraTiếng MafaTiếng MagahiTiếng MaithiliTiếng Maka" +
+ "sarTiếng MandingoTiếng MasaiTiếng MabaTiếng MokshaTiếng MandarTiếng Mend" +
+ "eTiếng MeruTiếng MorisyenTiếng Ai-len Trung cổTiếng Makhuwa-MeettoTiếng " +
+ "Meta’Tiếng MicmacTiếng MinangkabauTiếng ManchuTiếng ManipuriTiếng Mohawk" +
+ "Tiếng MossiTiếng MundangNhiều Ngôn ngữTiếng CreekTiếng MirandaTiếng Marw" +
+ "ariTiếng MyeneTiếng ErzyaTiếng MazanderaniTiếng NapoliTiếng NamaTiếng Hạ" +
+ " Giéc-manTiếng NewariTiếng NiasTiếng NiueanTiếng Ao NagaTiếng KwasioTiến" +
+ "g NgiemboonTiếng NogaiTiếng Na Uy cổTiếng N’KoBắc SothoTiếng NuerTiếng N" +
+ "ewari Cổ điểnTiếng NyamweziTiếng NyankoleTiếng NyoroTiếng NzimaTiếng Osa" +
+ "geTiếng Thổ Nhĩ Kỳ OttomanTiếng PangasinanTiếng PahlaviTiếng PampangaTiế" +
+ "ng PapiamentoTiếng PalauanTiếng Ba Tư cổTiếng PhoeniciaTiếng PohnpeianTi" +
+ "ếng Provençal cổTiếng KʼicheʼTiếng Quechua ở Cao nguyên ChimborazoTiến" +
+ "g RajasthaniTiếng RapanuiTiếng RarotonganTiếng RomboTiếng RomanyTiếng Ar" +
+ "omaniaTiếng RwaTiếng SandaweTiếng SakhaTiếng Samaritan AramaicTiếng Samb" +
+ "uruTiếng SasakTiếng SantaliTiếng NgambayTiếng SanguTiếng SiciliaTiếng Sc" +
+ "otsTiếng Kurd Miền NamTiếng SenecaTiếng SenaTiếng SelkupTiếng Koyraboro " +
+ "SenniTiếng Ai-len cổTiếng TachelhitTiếng ShanTiếng Ả-Rập ChadTiếng Sidam" +
+ "oTIếng Sami Miền NamTiếng Lule SamiTiếng Inari SamiTiếng Skolt SamiTiếng" +
+ " SoninkeTiếng SogdienTiếng Sranan TongoTiếng SererTiếng SahoTiếng Sukuma" +
+ "Tiếng SusuTiếng SumeriaTiếng CômoTiếng Swahili CongoTiếng Syria Cổ điểnT" +
+ "iếng SyriacTiếng TimneTiếng TesoTiếng TerenoTetumTiếng TigreTiếng TivTiế" +
+ "ng TokelauTiếng KlingonTiếng TlingitTiếng TamashekTiếng Nyasa TongaTiếng" +
+ " Tok PisinTiếng TarokoTiếng TsimshianTiếng TumbukaTiếng TuvaluTiếng Tasa" +
+ "waqTiếng TuvinianTiếng Tamazight Miền Trung Ma-rốcTiếng UdmurtTiếng Ugar" +
+ "iticTiếng UmbunduTiếng RootTiếng VaiTiếng VoticTiếng VunjoTiếng WalserTi" +
+ "ếng WalamoTiếng WarayTiếng WashoTiếng WarlpiriTiếng KalmykTiếng SogaTi" +
+ "ếng YaoTiếng YapTiếng YangbenTiếng YembaTiếng Quảng ĐôngTiếng ZapotecK" +
+ "ý hiệu BlissymbolsTiếng ZenagaTiếng Tamazight Chuẩn của Ma-rốcTiếng Zun" +
+ "iKhông có nội dung ngôn ngữTiếng ZazaTiếng Ả Rập Hiện đạiTiếng Thượng Gi" +
+ "éc-man (Thụy Sĩ)Tiếng Anh (Anh)Tiếng Anh (Mỹ)Tiếng Tây Ban Nha (Mỹ La t" +
+ "inh)Tiếng Tây Ban Nha (Châu Âu)Tiếng Hạ SaxonTiếng FlemishTiếng Bồ Đào N" +
+ "ha (Braxin)Tiếng Bồ Đào Nha (Châu Âu)Tiếng MoldovaTiếng Xéc bi - Croatia"
+
+var viLangIdx = []uint16{ // 608 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x001c, 0x002b, 0x003a, 0x0046, 0x0055, 0x0063,
+ 0x0074, 0x0081, 0x008f, 0x009d, 0x00af, 0x00be, 0x00cd, 0x00dd,
+ 0x00ec, 0x00fb, 0x010a, 0x011d, 0x012b, 0x013a, 0x0149, 0x0158,
+ 0x0168, 0x0177, 0x0183, 0x018f, 0x01a8, 0x01b7, 0x01c4, 0x01d7,
+ 0x01e5, 0x01f3, 0x0203, 0x020e, 0x021e, 0x0229, 0x0242, 0x0256,
+ 0x0265, 0x0273, 0x0281, 0x028e, 0x02a0, 0x02ac, 0x02b9, 0x02c6,
+ 0x02d4, 0x02e2, 0x02fd, 0x030d, 0x031c, 0x032c, 0x0338, 0x0345,
+ 0x0355, 0x0362, 0x0373, 0x0382, 0x038f, 0x039e, 0x03ad, 0x03bb,
+ // Entry 40 - 7F
+ 0x03d9, 0x03ea, 0x03fd, 0x0409, 0x041f, 0x042e, 0x0439, 0x0448,
+ 0x0452, 0x0463, 0x0471, 0x047d, 0x048b, 0x0498, 0x04a6, 0x04b6,
+ 0x04c4, 0x04d7, 0x04e6, 0x04f5, 0x0501, 0x050f, 0x051f, 0x052b,
+ 0x0537, 0x0547, 0x0555, 0x0564, 0x0576, 0x0583, 0x0592, 0x05a1,
+ 0x05ad, 0x05bc, 0x05d0, 0x05de, 0x05ee, 0x05fe, 0x060b, 0x061c,
+ 0x062d, 0x063f, 0x064e, 0x065e, 0x066a, 0x0680, 0x068d, 0x06a9,
+ 0x06b6, 0x06c4, 0x06d3, 0x06ea, 0x0701, 0x071b, 0x0729, 0x0737,
+ 0x0746, 0x0754, 0x0761, 0x076e, 0x077d, 0x078b, 0x0797, 0x07a5,
+ // Entry 80 - BF
+ 0x07b3, 0x07c9, 0x07d8, 0x07e7, 0x07f4, 0x0802, 0x080d, 0x0820,
+ 0x082e, 0x083e, 0x084c, 0x0865, 0x0872, 0x0881, 0x088f, 0x089f,
+ 0x08ac, 0x08b9, 0x08c7, 0x08d7, 0x08e5, 0x08f2, 0x0901, 0x090e,
+ 0x0924, 0x0933, 0x0940, 0x094e, 0x095b, 0x0968, 0x0978, 0x0984,
+ 0x0992, 0x099f, 0x09b6, 0x09c4, 0x09d1, 0x09df, 0x09ed, 0x09fc,
+ 0x0a08, 0x0a15, 0x0a22, 0x0a30, 0x0a40, 0x0a4f, 0x0a5c, 0x0a69,
+ 0x0a77, 0x0a85, 0x0a93, 0x0aa0, 0x0aac, 0x0abc, 0x0ac9, 0x0ad8,
+ 0x0ae6, 0x0ae6, 0x0af6, 0x0b03, 0x0b0f, 0x0b1e, 0x0b2d, 0x0b3a,
+ // Entry C0 - FF
+ 0x0b4d, 0x0b65, 0x0b75, 0x0b83, 0x0b92, 0x0ba4, 0x0bb2, 0x0bc1,
+ 0x0bda, 0x0be8, 0x0be8, 0x0c02, 0x0c0d, 0x0c28, 0x0c38, 0x0c38,
+ 0x0c46, 0x0c55, 0x0c61, 0x0c70, 0x0c7d, 0x0c8a, 0x0c9c, 0x0cab,
+ 0x0cb7, 0x0cc4, 0x0cd2, 0x0cde, 0x0ceb, 0x0cf9, 0x0d0d, 0x0d1d,
+ 0x0d2a, 0x0d36, 0x0d44, 0x0d4f, 0x0d5e, 0x0d71, 0x0d82, 0x0d8e,
+ 0x0d9c, 0x0da8, 0x0db6, 0x0dc4, 0x0dd1, 0x0ddd, 0x0de9, 0x0df8,
+ 0x0e05, 0x0e12, 0x0e20, 0x0e2d, 0x0e3c, 0x0e49, 0x0e58, 0x0e68,
+ 0x0e75, 0x0e81, 0x0e95, 0x0ea4, 0x0eb5, 0x0ec5, 0x0ed5, 0x0eee,
+ // Entry 100 - 13F
+ 0x0efc, 0x0f0c, 0x0f2b, 0x0f3b, 0x0f49, 0x0f57, 0x0f64, 0x0f74,
+ 0x0f81, 0x0f8f, 0x0f9c, 0x0fa9, 0x0fb6, 0x0fc9, 0x0fe3, 0x0ff0,
+ 0x100a, 0x101c, 0x1029, 0x1037, 0x1043, 0x104f, 0x105d, 0x1072,
+ 0x1080, 0x108f, 0x10a5, 0x10bf, 0x10cd, 0x10e0, 0x10ec, 0x10fc,
+ 0x10fc, 0x1107, 0x111a, 0x1132, 0x1144, 0x1153, 0x116f, 0x118c,
+ 0x119c, 0x11a6, 0x11b4, 0x11b4, 0x11c0, 0x11cd, 0x11cd, 0x11d9,
+ 0x11e8, 0x11f6, 0x121c, 0x123c, 0x1250, 0x125d, 0x126e, 0x127f,
+ 0x128c, 0x12a1, 0x12bc, 0x12bc, 0x12ca, 0x12d7, 0x12e8, 0x12f5,
+ // Entry 140 - 17F
+ 0x1308, 0x1316, 0x1328, 0x133a, 0x1349, 0x1357, 0x136f, 0x136f,
+ 0x137b, 0x1387, 0x1395, 0x13a2, 0x13b0, 0x13be, 0x13d8, 0x13e6,
+ 0x13f4, 0x1403, 0x1417, 0x142e, 0x143c, 0x144f, 0x145d, 0x146b,
+ 0x1476, 0x1483, 0x148f, 0x14a0, 0x14af, 0x14bb, 0x14ca, 0x14de,
+ 0x14de, 0x14ea, 0x14ea, 0x14f7, 0x1505, 0x1519, 0x1519, 0x1519,
+ 0x1525, 0x1535, 0x1545, 0x1559, 0x1568, 0x1576, 0x1584, 0x159b,
+ 0x159b, 0x159b, 0x15ab, 0x15b9, 0x15c9, 0x15d6, 0x15e5, 0x15f2,
+ 0x1601, 0x160f, 0x161c, 0x162a, 0x1637, 0x1647, 0x1647, 0x1647,
+ // Entry 180 - 1BF
+ 0x1647, 0x1655, 0x1655, 0x1662, 0x166e, 0x1680, 0x1680, 0x1692,
+ 0x16a1, 0x16ae, 0x16b9, 0x16c7, 0x16d4, 0x16d4, 0x16d4, 0x16e2,
+ 0x16ee, 0x16fc, 0x170c, 0x171b, 0x172b, 0x1738, 0x1744, 0x1752,
+ 0x1760, 0x176d, 0x1779, 0x1789, 0x17a2, 0x17b8, 0x17c7, 0x17d5,
+ 0x17e8, 0x17f6, 0x1806, 0x1814, 0x1821, 0x1821, 0x1830, 0x1843,
+ 0x1850, 0x185f, 0x186e, 0x186e, 0x187b, 0x1888, 0x189b, 0x189b,
+ 0x18a9, 0x18b5, 0x18cb, 0x18d9, 0x18e5, 0x18f3, 0x1902, 0x1910,
+ 0x1921, 0x192e, 0x1940, 0x1940, 0x194e, 0x1959, 0x1965, 0x1980,
+ // Entry 1C0 - 1FF
+ 0x1990, 0x19a0, 0x19ad, 0x19ba, 0x19c7, 0x19e6, 0x19f8, 0x1a07,
+ 0x1a17, 0x1a29, 0x1a38, 0x1a38, 0x1a38, 0x1a38, 0x1a4b, 0x1a4b,
+ 0x1a5c, 0x1a5c, 0x1a5c, 0x1a6d, 0x1a6d, 0x1a84, 0x1a95, 0x1abf,
+ 0x1ad1, 0x1ae0, 0x1af2, 0x1af2, 0x1af2, 0x1aff, 0x1b0d, 0x1b0d,
+ 0x1b0d, 0x1b0d, 0x1b1d, 0x1b28, 0x1b37, 0x1b44, 0x1b5d, 0x1b6c,
+ 0x1b79, 0x1b88, 0x1b88, 0x1b97, 0x1ba4, 0x1bb3, 0x1bc0, 0x1bc0,
+ 0x1bd7, 0x1be5, 0x1bf1, 0x1bf1, 0x1bff, 0x1c16, 0x1c29, 0x1c29,
+ 0x1c3a, 0x1c46, 0x1c5c, 0x1c6a, 0x1c6a, 0x1c6a, 0x1c81, 0x1c92,
+ // Entry 200 - 23F
+ 0x1ca4, 0x1cb6, 0x1cc5, 0x1cd4, 0x1ce8, 0x1cf5, 0x1d01, 0x1d01,
+ 0x1d0f, 0x1d1b, 0x1d2a, 0x1d37, 0x1d4c, 0x1d66, 0x1d74, 0x1d74,
+ 0x1d74, 0x1d81, 0x1d8d, 0x1d9b, 0x1da0, 0x1dad, 0x1db8, 0x1dc7,
+ 0x1dc7, 0x1dd6, 0x1de5, 0x1de5, 0x1df5, 0x1e08, 0x1e19, 0x1e19,
+ 0x1e27, 0x1e27, 0x1e38, 0x1e38, 0x1e47, 0x1e55, 0x1e64, 0x1e74,
+ 0x1e9b, 0x1ea9, 0x1eb9, 0x1ec8, 0x1ed4, 0x1edf, 0x1edf, 0x1edf,
+ 0x1edf, 0x1edf, 0x1eec, 0x1eec, 0x1ef9, 0x1f07, 0x1f15, 0x1f22,
+ 0x1f2f, 0x1f3f, 0x1f3f, 0x1f4d, 0x1f4d, 0x1f59, 0x1f64, 0x1f6f,
+ // Entry 240 - 27F
+ 0x1f7e, 0x1f8b, 0x1f8b, 0x1fa1, 0x1fb0, 0x1fc6, 0x1fc6, 0x1fd4,
+ 0x1ffc, 0x2008, 0x2029, 0x2035, 0x2054, 0x2054, 0x2054, 0x207c,
+ 0x207c, 0x207c, 0x208d, 0x209f, 0x20c2, 0x20e2, 0x20e2, 0x20e2,
+ 0x20e2, 0x20e2, 0x20f4, 0x2103, 0x2122, 0x2144, 0x2153, 0x216c,
+} // Size: 1240 bytes
+
+var zhLangStr string = "" + // Size: 6405 bytes
+ "阿法文阿布哈西亚文阿维斯塔文南非荷兰文阿肯文阿姆哈拉文阿拉贡文阿拉伯文阿萨姆文阿瓦尔文艾马拉文阿塞拜疆文巴什客尔文白俄罗斯文保加利亚文比斯拉马文" +
+ "班巴拉文孟加拉文藏文布里多尼文波斯尼亚文加泰罗尼亚文车臣文查莫罗文科西嘉文克里族文捷克文宗教斯拉夫文楚瓦什文威尔士文丹麦文德文迪维希文不丹文" +
+ "埃维文希腊文英文世界文西班牙文爱沙尼亚文巴斯克文波斯文夫拉文芬兰文斐济文法罗文法文西弗里西亚文爱尔兰文苏格兰盖尔文加利西亚文瓜拉尼文古吉拉特" +
+ "文马恩岛文豪萨文希伯来文印地文希里莫图文克罗地亚文海地文匈牙利文亚美尼亚文赫雷罗文国际文字印度尼西亚文国际文字(E)伊布文四川彝文依奴皮维克" +
+ "文伊多文冰岛文意大利文因纽特文日文爪哇文格鲁吉亚文刚果文吉库尤文宽亚玛文哈萨克文格陵兰文高棉文卡纳达文韩文卡努里文克什米尔文库尔德文科米文凯" +
+ "尔特文吉尔吉斯文拉丁文卢森堡文卢干达文淋布尔吉文林加拉文老挝文立陶宛文鲁巴加丹加文拉脱维亚文马尔加什文马绍尔文毛利文马其顿文马拉雅拉姆文蒙古" +
+ "文马拉地文马来文马耳他文缅甸文瑙鲁文北恩德贝勒文尼泊尔文恩东加文荷兰文挪威尼诺斯克文挪威博克马尔文南恩德贝勒文纳瓦霍文尼扬扎文奥克西唐文奥吉" +
+ "布瓦文奥洛莫文奥里亚文奥塞梯文旁遮普文巴利文波兰文普什图文葡萄牙文盖丘亚文罗曼什文基隆迪文罗马尼亚文俄文卢旺达文梵文萨丁文信德文北萨米文桑戈" +
+ "文僧伽罗文斯洛伐克文斯洛文尼亚文萨摩亚文绍纳文索马里文阿尔巴尼亚文塞尔维亚文斯瓦特文南索托文巽他文瑞典文斯瓦希里文泰米尔文泰卢固文塔吉克文泰" +
+ "文提格里尼亚文土库曼文塞茨瓦纳文汤加文土耳其文宗加文塔塔尔文塔西提文维吾尔文乌克兰文乌尔都文乌兹别克文文达文越南文沃拉普克文瓦隆文沃洛夫文科" +
+ "萨文依地文约鲁巴文壮文中文祖鲁文亚齐文阿乔利文阿当梅文阿迪何文阿弗里希利文亚罕文阿伊努文阿卡德文阿留申文南阿尔泰文古英文昂加文阿拉米文马普切" +
+ "文阿拉帕霍文阿拉瓦克文阿苏文阿斯图里亚思特文阿瓦乔文俾路支文巴里文巴萨文巴姆穆文戈马拉文别札文别姆巴文贝纳文巴非特文西俾路支文博杰普尔文毕库" +
+ "尔文比尼文科姆文司克司卡文布拉杰文博多文阿库色文布里亚特文布吉文布鲁文布林文梅敦巴文卡多文巴勒比文卡尤加文阿灿文宿务文奇加文契布卡文查加文楚" +
+ "吾克文马里文契努克文乔克托文佩瓦扬文彻罗基文夏延文索拉尼库尔德文科普特文克里米亚土耳其文卡舒文达科他文达尔格瓦文台塔文特拉华文司雷夫文多格里" +
+ "布文丁卡文哲尔马文多格拉文下索布文都阿拉文中古荷兰文朱拉文迪尤拉文达扎葛文恩布文埃菲克文古埃及文埃克丘克文艾拉米特文中古英文旺杜文芳格文菲律" +
+ "宾文丰文中古法文古法文北弗里西亚文东弗里西亚文弗留利文加文加告兹文迦约文葛巴亚文吉兹文吉尔伯特斯文中古高地德文古高地德文岗德文科洛涅达罗文哥" +
+ "特文格列博文古希腊文瑞士德文古西文吉维克琴文海达文夏威夷文希利盖农文赫梯文赫蒙文上索布文胡帕文伊班文伊比比奥文伊洛干诺文印古什文逻辑文恩艮巴" +
+ "马切姆文犹太波斯文犹太阿拉伯文卡拉卡尔帕克文卡比尔文卡琴文卡捷文卡姆巴文卡威文卡巴尔达文加涅姆布文卡塔布文马孔德文卡布佛得鲁文科罗文卡西文和" +
+ "田文西桑海文卡库文卡伦金文金邦杜文科米-彼尔米亚克文刚卡尼文科斯拉伊文克佩列文卡拉恰伊巴尔卡尔文卡累利阿文库鲁克文香巴拉文巴菲亚文科隆文库梅" +
+ "克文库特内文拉迪诺文朗吉文拉亨达文兰巴文莱兹依昂文拉科塔文芒戈文洛兹文北卢尔文鲁巴鲁瓦文路易塞诺文隆达文卢奥文卢晒文卢雅文马都拉文马法文马加" +
+ "伊文迈蒂利文望加锡文曼丁哥文萨伊文马坝文莫克沙文曼达尔文门迪文梅鲁文毛里求斯克里奥尔文中古爱尔兰文马夸文梅塔米克马克文米南卡保文满文曼尼普里" +
+ "文摩霍克文莫西文蒙当文多种语系克里克文米兰德斯文马尔瓦利文姆耶内文俄日亚文马赞德兰文拿波里文纳马文低地德文尼瓦尔文尼亚斯文纽埃文夸西奥文恩甘" +
+ "澎文诺盖文古诺尔斯文西非书面文字北索托文努埃尔文经典尼瓦尔文尼亚姆韦齐文尼昂科勒文尼约罗文恩济马文奥萨格文奥托曼土耳其文邦阿西楠文帕拉维文邦" +
+ "板牙文帕皮亚门托文帕劳文古老波斯文腓尼基文波纳佩文普罗文斯文基切文拉贾斯坦文拉帕努伊文拉罗汤加文兰博文吉普赛文阿罗马尼亚文罗瓦文散达维文雅库" +
+ "特文萨玛利亚文桑布鲁文萨萨克文桑塔利文甘拜文桑古文西西里文苏格兰文南库尔德文塞内卡文塞纳文塞尔库普文东桑海文古爱尔兰文希尔哈文掸文乍得阿拉伯" +
+ "文悉达摩文南萨米文律勒欧萨米文伊纳里萨米文斯科特萨米文索尼基文古粟特文苏里南汤加文谢列尔文萨霍文苏库马文苏苏文苏马文科摩罗文刚果斯瓦希里文经" +
+ "典叙利亚文叙利亚文滕内文特索文特列纳文特塔姆文提格雷文蒂夫文托克劳文克林贡文特林吉特文塔马奇克文汤加文(尼亚萨地区)托克皮辛文太鲁阁文蒂姆西" +
+ "亚文通布卡文图瓦卢文北桑海文图瓦文塔马齐格特文乌德穆尔特文乌加里特文翁本杜文根语言瓦伊文维普森文沃提克文温旧文瓦尔瑟文瓦拉莫文瓦赖文瓦绍文瓦" +
+ "尔皮瑞文卡尔梅克文索加文瑶族文雅浦文洋卞文耶姆巴文粤语萨波蒂克文布利斯符号泽纳加文标准摩洛哥塔马塞特文祖尼文无语言内容扎扎文现代标准阿拉伯文" +
+ "南阿塞拜疆文奥地利德文瑞士高地德文澳大利亚英文加拿大英文英式英文美式英文拉丁美洲西班牙文欧洲西班牙文墨西哥西班牙文加拿大法文瑞士法文佛兰芒文" +
+ "巴西葡萄牙文欧洲葡萄牙文摩尔多瓦文塞尔维亚-克罗地亚文简体中文繁体中文"
+
+var zhLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x001b, 0x002a, 0x0039, 0x0042, 0x0051, 0x005d,
+ 0x0069, 0x0075, 0x0081, 0x008d, 0x009c, 0x00ab, 0x00ba, 0x00c9,
+ 0x00d8, 0x00e4, 0x00f0, 0x00f6, 0x0105, 0x0114, 0x0126, 0x012f,
+ 0x013b, 0x0147, 0x0153, 0x015c, 0x016e, 0x017a, 0x0186, 0x018f,
+ 0x0195, 0x01a1, 0x01aa, 0x01b3, 0x01bc, 0x01c2, 0x01cb, 0x01d7,
+ 0x01e6, 0x01f2, 0x01fb, 0x0204, 0x020d, 0x0216, 0x021f, 0x0225,
+ 0x0237, 0x0243, 0x0255, 0x0264, 0x0270, 0x027f, 0x028b, 0x0294,
+ 0x02a0, 0x02a9, 0x02b8, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7,
+ // Entry 40 - 7F
+ 0x0303, 0x0315, 0x0328, 0x0331, 0x033d, 0x034f, 0x0358, 0x0361,
+ 0x036d, 0x0379, 0x037f, 0x0388, 0x0397, 0x03a0, 0x03ac, 0x03b8,
+ 0x03c4, 0x03d0, 0x03d9, 0x03e5, 0x03eb, 0x03f7, 0x0406, 0x0412,
+ 0x041b, 0x0427, 0x0436, 0x043f, 0x044b, 0x0457, 0x0466, 0x0472,
+ 0x047b, 0x0487, 0x0499, 0x04a8, 0x04b7, 0x04c3, 0x04cc, 0x04d8,
+ 0x04ea, 0x04f3, 0x04ff, 0x0508, 0x0514, 0x051d, 0x0526, 0x0538,
+ 0x0544, 0x0550, 0x0559, 0x056e, 0x0583, 0x0595, 0x05a1, 0x05ad,
+ 0x05bc, 0x05cb, 0x05d7, 0x05e3, 0x05ef, 0x05fb, 0x0604, 0x060d,
+ // Entry 80 - BF
+ 0x0619, 0x0625, 0x0631, 0x063d, 0x0649, 0x0658, 0x065e, 0x066a,
+ 0x0670, 0x0679, 0x0682, 0x068e, 0x0697, 0x06a3, 0x06b2, 0x06c4,
+ 0x06d0, 0x06d9, 0x06e5, 0x06f7, 0x0706, 0x0712, 0x071e, 0x0727,
+ 0x0730, 0x073f, 0x074b, 0x0757, 0x0763, 0x0769, 0x077b, 0x0787,
+ 0x0796, 0x079f, 0x07ab, 0x07b4, 0x07c0, 0x07cc, 0x07d8, 0x07e4,
+ 0x07f0, 0x07ff, 0x0808, 0x0811, 0x0820, 0x0829, 0x0835, 0x083e,
+ 0x0847, 0x0853, 0x0859, 0x085f, 0x0868, 0x0871, 0x087d, 0x0889,
+ 0x0895, 0x0895, 0x08a7, 0x08b0, 0x08bc, 0x08c8, 0x08c8, 0x08d4,
+ // Entry C0 - FF
+ 0x08d4, 0x08e3, 0x08ec, 0x08f5, 0x0901, 0x090d, 0x090d, 0x091c,
+ 0x091c, 0x092b, 0x092b, 0x092b, 0x0934, 0x0934, 0x094c, 0x094c,
+ 0x0958, 0x0964, 0x096d, 0x096d, 0x0976, 0x0982, 0x0982, 0x098e,
+ 0x0997, 0x09a3, 0x09a3, 0x09ac, 0x09b8, 0x09b8, 0x09c7, 0x09d6,
+ 0x09e2, 0x09eb, 0x09eb, 0x09f4, 0x0a03, 0x0a03, 0x0a03, 0x0a0f,
+ 0x0a0f, 0x0a18, 0x0a24, 0x0a33, 0x0a3c, 0x0a45, 0x0a4e, 0x0a5a,
+ 0x0a63, 0x0a6f, 0x0a7b, 0x0a84, 0x0a8d, 0x0a96, 0x0aa2, 0x0aab,
+ 0x0ab7, 0x0ac0, 0x0acc, 0x0ad8, 0x0ae4, 0x0af0, 0x0af9, 0x0b0e,
+ // Entry 100 - 13F
+ 0x0b1a, 0x0b1a, 0x0b32, 0x0b3b, 0x0b47, 0x0b56, 0x0b5f, 0x0b6b,
+ 0x0b77, 0x0b86, 0x0b8f, 0x0b9b, 0x0ba7, 0x0bb3, 0x0bb3, 0x0bbf,
+ 0x0bce, 0x0bd7, 0x0be3, 0x0bef, 0x0bf8, 0x0c04, 0x0c04, 0x0c10,
+ 0x0c1f, 0x0c2e, 0x0c3a, 0x0c3a, 0x0c43, 0x0c43, 0x0c4c, 0x0c58,
+ 0x0c58, 0x0c5e, 0x0c5e, 0x0c6a, 0x0c73, 0x0c73, 0x0c85, 0x0c97,
+ 0x0ca3, 0x0ca9, 0x0cb5, 0x0cb5, 0x0cbe, 0x0cca, 0x0cca, 0x0cd3,
+ 0x0ce5, 0x0ce5, 0x0cf7, 0x0d06, 0x0d06, 0x0d0f, 0x0d21, 0x0d2a,
+ 0x0d36, 0x0d42, 0x0d4e, 0x0d4e, 0x0d4e, 0x0d57, 0x0d66, 0x0d6f,
+ // Entry 140 - 17F
+ 0x0d6f, 0x0d7b, 0x0d7b, 0x0d8a, 0x0d93, 0x0d9c, 0x0da8, 0x0da8,
+ 0x0db1, 0x0dba, 0x0dc9, 0x0dd8, 0x0de4, 0x0de4, 0x0de4, 0x0ded,
+ 0x0df6, 0x0e02, 0x0e11, 0x0e23, 0x0e23, 0x0e38, 0x0e44, 0x0e4d,
+ 0x0e56, 0x0e62, 0x0e6b, 0x0e7a, 0x0e89, 0x0e95, 0x0ea1, 0x0eb3,
+ 0x0eb3, 0x0ebc, 0x0ebc, 0x0ec5, 0x0ece, 0x0eda, 0x0eda, 0x0eda,
+ 0x0ee3, 0x0eef, 0x0efb, 0x0f14, 0x0f20, 0x0f2f, 0x0f3b, 0x0f56,
+ 0x0f56, 0x0f56, 0x0f65, 0x0f71, 0x0f7d, 0x0f89, 0x0f92, 0x0f9e,
+ 0x0faa, 0x0fb6, 0x0fbf, 0x0fcb, 0x0fd4, 0x0fe3, 0x0fe3, 0x0fe3,
+ // Entry 180 - 1BF
+ 0x0fe3, 0x0fef, 0x0fef, 0x0ff8, 0x1001, 0x100d, 0x100d, 0x101c,
+ 0x102b, 0x1034, 0x103d, 0x1046, 0x104f, 0x104f, 0x104f, 0x105b,
+ 0x1064, 0x1070, 0x107c, 0x1088, 0x1094, 0x109d, 0x10a6, 0x10b2,
+ 0x10be, 0x10c7, 0x10d0, 0x10eb, 0x10fd, 0x1106, 0x110c, 0x111b,
+ 0x112a, 0x1130, 0x113f, 0x114b, 0x1154, 0x1154, 0x115d, 0x1169,
+ 0x1175, 0x1184, 0x1193, 0x1193, 0x119f, 0x11ab, 0x11ba, 0x11ba,
+ 0x11c6, 0x11cf, 0x11db, 0x11e7, 0x11f3, 0x11fc, 0x11fc, 0x1208,
+ 0x1214, 0x121d, 0x122c, 0x122c, 0x123e, 0x124a, 0x1256, 0x1268,
+ // Entry 1C0 - 1FF
+ 0x127a, 0x1289, 0x1295, 0x12a1, 0x12ad, 0x12c2, 0x12d1, 0x12dd,
+ 0x12e9, 0x12fb, 0x1304, 0x1304, 0x1304, 0x1304, 0x1313, 0x1313,
+ 0x131f, 0x131f, 0x131f, 0x132b, 0x132b, 0x133a, 0x1343, 0x1343,
+ 0x1352, 0x1361, 0x1370, 0x1370, 0x1370, 0x1379, 0x1385, 0x1385,
+ 0x1385, 0x1385, 0x1397, 0x13a0, 0x13ac, 0x13b8, 0x13c7, 0x13d3,
+ 0x13df, 0x13eb, 0x13eb, 0x13f4, 0x13fd, 0x1409, 0x1415, 0x1415,
+ 0x1424, 0x1430, 0x1439, 0x1439, 0x1448, 0x1454, 0x1463, 0x1463,
+ 0x146f, 0x1475, 0x1487, 0x1493, 0x1493, 0x1493, 0x149f, 0x14b1,
+ // Entry 200 - 23F
+ 0x14c3, 0x14d5, 0x14e1, 0x14ed, 0x14ff, 0x150b, 0x1514, 0x1514,
+ 0x1520, 0x1529, 0x1532, 0x153e, 0x1553, 0x1565, 0x1571, 0x1571,
+ 0x1571, 0x157a, 0x1583, 0x158f, 0x159b, 0x15a7, 0x15b0, 0x15bc,
+ 0x15bc, 0x15c8, 0x15d7, 0x15d7, 0x15e6, 0x1604, 0x1613, 0x1613,
+ 0x161f, 0x161f, 0x162e, 0x162e, 0x163a, 0x1646, 0x1652, 0x165b,
+ 0x166d, 0x167f, 0x168e, 0x169a, 0x16a3, 0x16ac, 0x16ac, 0x16b8,
+ 0x16b8, 0x16b8, 0x16c4, 0x16c4, 0x16cd, 0x16d9, 0x16e5, 0x16ee,
+ 0x16f7, 0x1706, 0x1706, 0x1715, 0x1715, 0x171e, 0x1727, 0x1730,
+ // Entry 240 - 27F
+ 0x1739, 0x1745, 0x1745, 0x174b, 0x175a, 0x1769, 0x1769, 0x1775,
+ 0x1793, 0x179c, 0x17ab, 0x17b4, 0x17cc, 0x17de, 0x17ed, 0x17ff,
+ 0x1811, 0x1820, 0x182c, 0x1838, 0x1850, 0x1862, 0x1877, 0x1877,
+ 0x1886, 0x1892, 0x1892, 0x189e, 0x18b0, 0x18c2, 0x18d1, 0x18ed,
+ 0x18f9, 0x1905,
+} // Size: 1244 bytes
+
+var zhHantLangStr string = "" + // Size: 7582 bytes
+ "阿法文阿布哈茲文阿緯斯陀文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什客爾文白俄羅斯文保加利亞文比斯拉馬文班" +
+ "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰羅尼亞文車臣文查莫洛文科西嘉文克裡文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗卡文埃維" +
+ "文希臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉尼文古吉拉特文曼" +
+ "島文豪撒文希伯來文北印度文西里莫圖土文克羅埃西亞文海地文匈牙利文亞美尼亞文赫雷羅文國際文印尼文國際文(E)伊布文四川彝文依奴皮維克文伊多文冰" +
+ "島文義大利文因紐特文日文爪哇文喬治亞文剛果文吉庫尤文廣亞馬文哈薩克文格陵蘭文高棉文坎那達文韓文卡努裡文喀什米爾文庫爾德文科米文康瓦耳文吉爾吉" +
+ "斯文拉丁文盧森堡文干達文林堡文林加拉文寮文立陶宛文魯巴加丹加文拉脫維亞文馬拉加什文馬紹爾文毛利文馬其頓文馬來亞拉姆文蒙古文馬拉地文馬來文馬爾" +
+ "他文緬甸文諾魯文北地畢列文尼泊爾文恩東加文荷蘭文耐諾斯克挪威文巴克摩挪威文南地畢列文納瓦霍文尼揚賈文奧克西坦文奧杰布瓦文奧羅莫文歐利亞文奧塞" +
+ "提文旁遮普文巴利文波蘭文普什圖文葡萄牙文蓋楚瓦文羅曼斯文隆迪文羅馬尼亞文俄文盧安達文梵文撒丁文信德文北方薩米文桑戈文僧伽羅文斯洛伐克文斯洛維" +
+ "尼亞文薩摩亞文塞內加爾文索馬利文阿爾巴尼亞文塞爾維亞文斯瓦特文塞索托文巽他文瑞典文史瓦希里文坦米爾文泰盧固文塔吉克文泰文提格利尼亞文土庫曼文" +
+ "突尼西亞文東加文土耳其文特松加文韃靼文大溪地文維吾爾文烏克蘭文烏都文烏茲別克文溫達文越南文沃拉普克文瓦隆文沃洛夫文科薩文意第緒文約魯巴文壯文" +
+ "中文祖魯文亞齊文阿僑利文阿當莫文阿迪各文突尼斯阿拉伯文阿弗里希利文亞罕文阿伊努文阿卡德文阿拉巴馬文阿留申文蓋格阿爾巴尼亞文南阿爾泰文古英文昂" +
+ "加文阿拉米文馬普切文阿拉奧納文阿拉帕霍文阿爾及利亞阿拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿蘇文美國手語阿斯圖里亞文科塔瓦文阿瓦文俾路支" +
+ "文峇里文巴伐利亞文巴薩文巴姆穆文巴塔克托巴文戈馬拉文貝扎文別姆巴文貝塔維文貝納文富特文巴達加文西俾路支文博傑普爾文比科爾文比尼文班亞爾文康姆" +
+ "文錫克錫卡文比什奴普萊利亞文巴赫蒂亞里文布拉杰文布拉維文博多文阿庫色文布里阿特文布吉斯文布魯文比林文梅敦巴文卡多文加勒比文卡尤加文阿燦文宿霧" +
+ "文奇加文奇布查文查加文處奇斯文馬里文契奴克文喬克托文奇佩瓦揚文柴羅基文沙伊安文索拉尼庫爾德文科普特文卡皮茲文克里米亞半島的土耳其文;克里米亞" +
+ "半島的塔塔爾文卡舒布文達科他文達爾格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎爾馬文多格來文下索布文中部杜順文杜亞拉文中古荷蘭文朱拉文迪尤拉" +
+ "文達薩文恩布文埃菲克文埃米利安文古埃及文艾卡朱克文埃蘭文中古英文中尤皮克文依汪都文埃斯特雷馬杜拉文芳族文菲律賓文托爾訥芬蘭文豐文卡真法文中古" +
+ "法文古法文法蘭克-普羅旺斯文北弗里西亞文東弗里西亞文弗留利文加族文加告茲文贛語加約文葛巴亞文索羅亞斯德教達里文吉茲文吉爾伯特群島文吉拉基文中" +
+ "古高地德文古高地日耳曼文孔卡尼文岡德文科隆達羅文哥德文格列博文古希臘文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文海達文客家話夏威夷文斐濟印地文" +
+ "希利蓋農文赫梯文孟文上索布文湘語胡帕文伊班文伊比比奧文伊洛闊文印古什文英格裏亞文牙買加克裏奧爾英文邏輯文恩格姆巴文馬恰美文猶太教-波斯文猶太" +
+ "阿拉伯文日德蘭文卡拉卡爾帕克文卡比爾文卡琴文卡捷文卡姆巴文卡威文卡巴爾達文卡念布文卡塔布文馬孔德文卡布威爾第文肯揚文科羅文坎剛文卡西文和闐文" +
+ "西桑海文科瓦文北紮紮其文卡庫文卡倫金文金邦杜文科米-彼爾米亞克文貢根文科斯雷恩文克佩列文卡拉柴-包爾卡爾文塞拉利昂克裏奧爾文基那來阿文卡累利" +
+ "阿文庫魯科文尚巴拉文巴菲亞文科隆文庫密克文庫特奈文拉迪諾文朗吉文拉亨達文蘭巴文列茲干文新共同語言利古里亞文利伏尼亞文拉科塔文倫巴底文芒戈文洛" +
+ "齊文北盧爾文拉特加萊文魯巴魯魯亞文路易塞諾文盧恩達文盧奧文盧晒文盧雅文文言文拉茲文馬都拉文馬法文馬加伊文邁蒂利文望加錫文曼丁哥文馬賽文馬巴文" +
+ "莫克沙文曼達文門德文梅魯文克里奧文(模里西斯)中古愛爾蘭文馬夸文美塔文米克馬克文米南卡堡文滿族文曼尼普裡文莫霍克文莫西文西馬裏文蒙當文多種語" +
+ "言克里克文米蘭德斯文馬爾尼裡文明打威文姆耶內文厄爾茲亞文馬贊德蘭文閩南語拿波里文納馬文低地德文尼瓦爾文尼亞斯文紐埃文阿沃那加文夸西奧文恩甘澎" +
+ "文諾蓋文古諾爾斯文諾維亞文曼德文字 (N’Ko)北索托文努埃爾文古尼瓦爾文尼揚韋齊文尼揚科萊文尼奧囉文尼茲馬文歐塞奇文鄂圖曼土耳其文潘加辛文" +
+ "巴列維文潘帕嘉文帕皮阿門托文帛琉文庇卡底文賓夕法尼亞德文門諾低地德文古波斯文普法爾茨德文腓尼基文皮埃蒙特文旁狄希臘文波那貝文普魯士文古普羅旺" +
+ "斯文基切文欽博拉索海蘭蓋丘亞文拉賈斯坦諸文復活島文拉羅通加文羅馬格諾里文里菲亞諾文蘭博文吉普賽文羅圖馬島文盧森尼亞文羅維阿納文羅馬尼亞語系羅" +
+ "瓦文桑達韋文雅庫特文薩瑪利亞阿拉姆文薩布魯文撒撒克文散塔利文索拉什特拉文甘拜文桑古文西西里文蘇格蘭文薩丁尼亞-薩薩里文南庫爾德文塞訥卡文賽納" +
+ "文瑟里文瑟爾卡普文東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納裡薩米文斯科特" +
+ "薩米文索尼基文索格底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文史瓦希里文(剛果)古敘利亞文敘利亞文西利西亞文圖盧" +
+ "文提姆文特索文泰雷諾文泰頓文蒂格雷文提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩克" +
+ "尼恩文欽西安文穆斯林塔特文圖姆布卡文吐瓦魯文北桑海文土凡文塔馬齊格特文沃蒂艾克文烏加列文姆本杜文根語言瓦伊文威尼斯文維普森文西佛蘭德文美茵-" +
+ "法蘭克尼亞文沃提克文佛羅文溫舊文瓦瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特" +
+ "克文布列斯符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文佛蘭芒文摩爾多瓦文塞爾維亞" +
+ "克羅埃西亞文簡體中文繁體中文"
+
+var zhHantLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a,
+ 0x0066, 0x0072, 0x007e, 0x008a, 0x0099, 0x00a8, 0x00b7, 0x00c6,
+ 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x0123, 0x012c,
+ 0x0138, 0x0144, 0x014d, 0x0156, 0x0168, 0x0174, 0x0180, 0x0189,
+ 0x018f, 0x019b, 0x01a4, 0x01ad, 0x01b6, 0x01bc, 0x01c5, 0x01d1,
+ 0x01e0, 0x01ec, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x021f,
+ 0x0231, 0x023d, 0x024f, 0x025e, 0x026a, 0x0279, 0x0282, 0x028b,
+ 0x0297, 0x02a3, 0x02b5, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7,
+ // Entry 40 - 7F
+ 0x0300, 0x0309, 0x0319, 0x0322, 0x032e, 0x0340, 0x0349, 0x0352,
+ 0x035e, 0x036a, 0x0370, 0x0379, 0x0385, 0x038e, 0x039a, 0x03a6,
+ 0x03b2, 0x03be, 0x03c7, 0x03d3, 0x03d9, 0x03e5, 0x03f4, 0x0400,
+ 0x0409, 0x0415, 0x0424, 0x042d, 0x0439, 0x0442, 0x044b, 0x0457,
+ 0x045d, 0x0469, 0x047b, 0x048a, 0x0499, 0x04a5, 0x04ae, 0x04ba,
+ 0x04cc, 0x04d5, 0x04e1, 0x04ea, 0x04f6, 0x04ff, 0x0508, 0x0517,
+ 0x0523, 0x052f, 0x0538, 0x054d, 0x055f, 0x056e, 0x057a, 0x0586,
+ 0x0595, 0x05a4, 0x05b0, 0x05bc, 0x05c8, 0x05d4, 0x05dd, 0x05e6,
+ // Entry 80 - BF
+ 0x05f2, 0x05fe, 0x060a, 0x0616, 0x061f, 0x062e, 0x0634, 0x0640,
+ 0x0646, 0x064f, 0x0658, 0x0667, 0x0670, 0x067c, 0x068b, 0x069d,
+ 0x06a9, 0x06b8, 0x06c4, 0x06d6, 0x06e5, 0x06f1, 0x06fd, 0x0706,
+ 0x070f, 0x071e, 0x072a, 0x0736, 0x0742, 0x0748, 0x075a, 0x0766,
+ 0x0775, 0x077e, 0x078a, 0x0796, 0x079f, 0x07ab, 0x07b7, 0x07c3,
+ 0x07cc, 0x07db, 0x07e4, 0x07ed, 0x07fc, 0x0805, 0x0811, 0x081a,
+ 0x0826, 0x0832, 0x0838, 0x083e, 0x0847, 0x0850, 0x085c, 0x0868,
+ 0x0874, 0x0889, 0x089b, 0x08a4, 0x08b0, 0x08bc, 0x08cb, 0x08d7,
+ // Entry C0 - FF
+ 0x08ef, 0x08fe, 0x0907, 0x0910, 0x091c, 0x0928, 0x0937, 0x0946,
+ 0x0961, 0x0970, 0x0985, 0x0997, 0x09a0, 0x09ac, 0x09be, 0x09ca,
+ 0x09d3, 0x09df, 0x09e8, 0x09f7, 0x0a00, 0x0a0c, 0x0a1e, 0x0a2a,
+ 0x0a33, 0x0a3f, 0x0a4b, 0x0a54, 0x0a5d, 0x0a69, 0x0a78, 0x0a87,
+ 0x0a93, 0x0a9c, 0x0aa8, 0x0ab1, 0x0ac0, 0x0ad8, 0x0aea, 0x0af6,
+ 0x0b02, 0x0b0b, 0x0b17, 0x0b26, 0x0b32, 0x0b3b, 0x0b44, 0x0b50,
+ 0x0b59, 0x0b65, 0x0b71, 0x0b7a, 0x0b83, 0x0b8c, 0x0b98, 0x0ba1,
+ 0x0bad, 0x0bb6, 0x0bc2, 0x0bce, 0x0bdd, 0x0be9, 0x0bf5, 0x0c0a,
+ // Entry 100 - 13F
+ 0x0c16, 0x0c22, 0x0c67, 0x0c73, 0x0c7f, 0x0c8e, 0x0c97, 0x0ca3,
+ 0x0cac, 0x0cbb, 0x0cc4, 0x0cd0, 0x0cdc, 0x0ce8, 0x0cf7, 0x0d03,
+ 0x0d12, 0x0d1b, 0x0d27, 0x0d30, 0x0d39, 0x0d45, 0x0d54, 0x0d60,
+ 0x0d6f, 0x0d78, 0x0d84, 0x0d93, 0x0d9f, 0x0db7, 0x0dc0, 0x0dcc,
+ 0x0dde, 0x0de4, 0x0df0, 0x0dfc, 0x0e05, 0x0e1e, 0x0e30, 0x0e42,
+ 0x0e4e, 0x0e57, 0x0e63, 0x0e69, 0x0e72, 0x0e7e, 0x0e99, 0x0ea2,
+ 0x0eb7, 0x0ec3, 0x0ed5, 0x0eea, 0x0ef6, 0x0eff, 0x0f0e, 0x0f17,
+ 0x0f23, 0x0f2f, 0x0f41, 0x0f4a, 0x0f59, 0x0f62, 0x0f6b, 0x0f74,
+ // Entry 140 - 17F
+ 0x0f7d, 0x0f89, 0x0f98, 0x0fa7, 0x0fb0, 0x0fb6, 0x0fc2, 0x0fc8,
+ 0x0fd1, 0x0fda, 0x0fe9, 0x0ff5, 0x1001, 0x1010, 0x102b, 0x1034,
+ 0x1043, 0x104f, 0x1062, 0x1074, 0x1080, 0x1095, 0x10a1, 0x10aa,
+ 0x10b3, 0x10bf, 0x10c8, 0x10d7, 0x10e3, 0x10ef, 0x10fb, 0x110d,
+ 0x1116, 0x111f, 0x1128, 0x1131, 0x113a, 0x1146, 0x114f, 0x115e,
+ 0x1167, 0x1173, 0x117f, 0x1198, 0x11a1, 0x11b0, 0x11bc, 0x11d5,
+ 0x11f0, 0x11ff, 0x120e, 0x121a, 0x1226, 0x1232, 0x123b, 0x1247,
+ 0x1253, 0x125f, 0x1268, 0x1274, 0x127d, 0x1289, 0x1298, 0x12a7,
+ // Entry 180 - 1BF
+ 0x12b6, 0x12c2, 0x12ce, 0x12d7, 0x12e0, 0x12ec, 0x12fb, 0x130d,
+ 0x131c, 0x1328, 0x1331, 0x133a, 0x1343, 0x134c, 0x1355, 0x1361,
+ 0x136a, 0x1376, 0x1382, 0x138e, 0x139a, 0x13a3, 0x13ac, 0x13b8,
+ 0x13c1, 0x13ca, 0x13d3, 0x13f1, 0x1403, 0x140c, 0x1415, 0x1424,
+ 0x1433, 0x143c, 0x144b, 0x1457, 0x1460, 0x146c, 0x1475, 0x1481,
+ 0x148d, 0x149c, 0x14ab, 0x14b7, 0x14c3, 0x14d2, 0x14e1, 0x14ea,
+ 0x14f6, 0x14ff, 0x150b, 0x1517, 0x1523, 0x152c, 0x153b, 0x1547,
+ 0x1553, 0x155c, 0x156b, 0x1577, 0x158c, 0x1598, 0x15a4, 0x15b3,
+ // Entry 1C0 - 1FF
+ 0x15c2, 0x15d1, 0x15dd, 0x15e9, 0x15f5, 0x160a, 0x1616, 0x1622,
+ 0x162e, 0x1640, 0x1649, 0x1655, 0x166a, 0x167c, 0x1688, 0x169a,
+ 0x16a6, 0x16b5, 0x16c4, 0x16d0, 0x16dc, 0x16ee, 0x16f7, 0x1715,
+ 0x1727, 0x1733, 0x1742, 0x1754, 0x1763, 0x176c, 0x1778, 0x1787,
+ 0x1796, 0x17a5, 0x17b7, 0x17c0, 0x17cc, 0x17d8, 0x17f0, 0x17fc,
+ 0x1808, 0x1814, 0x1826, 0x182f, 0x1838, 0x1844, 0x1850, 0x1869,
+ 0x1878, 0x1884, 0x188d, 0x1896, 0x18a5, 0x18b1, 0x18c0, 0x18d2,
+ 0x18de, 0x18e4, 0x18fc, 0x1908, 0x191a, 0x1926, 0x1932, 0x1941,
+ // Entry 200 - 23F
+ 0x1953, 0x1965, 0x1971, 0x1983, 0x1995, 0x19a1, 0x19aa, 0x19bc,
+ 0x19c8, 0x19d1, 0x19da, 0x19e3, 0x19fe, 0x1a0d, 0x1a19, 0x1a28,
+ 0x1a31, 0x1a3a, 0x1a43, 0x1a4f, 0x1a58, 0x1a64, 0x1a6d, 0x1a79,
+ 0x1a85, 0x1a91, 0x1aa0, 0x1aac, 0x1abb, 0x1ad3, 0x1adf, 0x1aeb,
+ 0x1af7, 0x1b09, 0x1b15, 0x1b27, 0x1b36, 0x1b42, 0x1b4e, 0x1b57,
+ 0x1b69, 0x1b78, 0x1b84, 0x1b90, 0x1b99, 0x1ba2, 0x1bae, 0x1bba,
+ 0x1bc9, 0x1be2, 0x1bee, 0x1bf7, 0x1c00, 0x1c09, 0x1c15, 0x1c1e,
+ 0x1c27, 0x1c33, 0x1c39, 0x1c48, 0x1c57, 0x1c60, 0x1c66, 0x1c6f,
+ // Entry 240 - 27F
+ 0x1c78, 0x1c84, 0x1c93, 0x1c99, 0x1ca8, 0x1cb7, 0x1cc0, 0x1ccc,
+ 0x1cea, 0x1cf3, 0x1d02, 0x1d0b, 0x1d23, 0x1d23, 0x1d23, 0x1d3b,
+ 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b,
+ 0x1d3b, 0x1d3b, 0x1d4d, 0x1d59, 0x1d59, 0x1d59, 0x1d68, 0x1d86,
+ 0x1d92, 0x1d9e,
+} // Size: 1244 bytes
+
+var zuLangStr string = "" + // Size: 3045 bytes
+ "isi-Abkhaziani-Afrikaansisi-Akanisi-Amharicisi-Arabicisi-Assameseisi-Aym" +
+ "araisi-Azerbaijaniisi-Bashkirisi-Belarusianisi-Bulgariisi-Bambaraisi-Ben" +
+ "galiisi-Tibetanisi-Bretonisi-Bosnianisi-Catalanisi-Chechenisi-Corsicanis" +
+ "i-Czechisi-Chuvashisi-Welshisi-Danishisi-Germanisi-Divehiisi-Dzongkhaisi" +
+ "-Eweisi-Greeki-Englishisi-Esperantoisi-Spanishisi-Estoniaisi-Basqueisi-P" +
+ "ersianisi-Finnishisi-Fijianisi-Faroeseisi-Frenchisi-Western Frisianisi-I" +
+ "rishi-Scottish Gaelicisi-Galiciaisi-Guaraniisi-Gujaratiisi-Manxisi-Hausa" +
+ "isi-Hebrewisi-Hindiisi-Croatianisi-Haitianisi-Hungarianisi-ArmeniaIzilim" +
+ "i ezihlangeneisi-Indonesianisi-Igboisi-Sichuan Yiisi-Icelandicisi-Italia" +
+ "nisi-Inuktitutisi-Japaneseisi-Javaneseisi-GeorgianIsi-Kongoisi-Kikuyuisi" +
+ "-Kazakhisi-Kalaallisutisi-Khmerisi-Kannadaisi-Koreanisi-Kashmiriisi-Kurd" +
+ "ishisi-Cornishisi-Kyrgyzisi-Latinisi-Luxembourgishisi-Gandaisi-Lingalai-" +
+ "Laoisi-Lithuanianisi-Luba-Katangaisi-Latvianisi-Malagasyisi-Maoriisi-Mac" +
+ "edonianisi-Malayalamisi-Mongolianisi-Marathiisi-Malayisi-Malteseisi-Burm" +
+ "eseisi-North Ndebeleisi-Nepaliisi-Dutchi-Norwegian Nynorskisi-Norwegian " +
+ "Bokmålisi-NyanjaIsi-Osithanii-Oromoisi-Oriyaisi-Osseticisi-Punjabiisi-Po" +
+ "lishisi-Pashtoisi-Portugueseisi-Quechuaisi-Romanshisi-Rundiisi-Romaniani" +
+ "si-Russianisi-Kinyarwandaisi-Sanskritisi-Sindhiisi-Northern Samiisi-Sang" +
+ "oi-Sinhalaisi-Slovakisi-Slovenianisi-SamoanisiShonaisi-Somaliisi-Albania" +
+ "isi-SerbianisiSwatiisiSuthuisi-Sundaneseisi-SwedishisiSwahiliisi-Tamilis" +
+ "i-Teluguisi-Tajikisi-Thaiisi-Tigrinyaisi-Turkmenisi-Tswanaisi-Tonganisi-" +
+ "Turkishisi-Tsongaisi-Tatarisi-Tahitianisi-Uighurisi-Ukrainianisi-Urduisi" +
+ "-Uzbekisi-Vendaisi-Vietnameseisi-WolofisiXhosaIsi-Yidishisi-Yorubaisi-Ch" +
+ "ineseisiZuluIsi-Acoliisi-Aghemisi-Mapucheisi-Asuisi-Bembaisi-Benaisi-Wes" +
+ "tern Balochiisi-Bodoisi-Chigaisi-Cherokeeisi-Central Kurdishisi-Taitaisi" +
+ "-Zarmaisi-Lower Sorbianisi-Dualaisi-Jola-Fonylisi-Embuisi-Efikisi-Filipi" +
+ "noIsi-Gaisi-Gagauzisi-Swiss Germanisi-Gusliisi-Hawaiianisi-Upper Sorbian" +
+ "isi-Ngombaisi-Machameisi-Kabyleisi-Kambaisi-Makondeisi-Kabuverdianuisi-K" +
+ "oyra Chiiniisi-Kalenjinisi-Komi-Permyakisi-KonkaniisiShambalaisi-Bafiais" +
+ "i-Langiisi-LakotaIsi-Loziisi-Northern LuriIsi-Luba-Luluaisi-Luoisi-Luyia" +
+ "isi-Masaiisi-Meruisi-Morisyenisi-Makhuwa-Meettoisi-Meta’isi-Mohawkisi-Mu" +
+ "ndangisi-Mazanderaniisi-Namandsisi-Kwasioisi-N’Koisi-Northern Sothoisi-N" +
+ "uerisi-Nyankoleisi-Kʼicheʼisi-Romboisi-Rwaisi-Samburuisi-Sangui-Southern" +
+ " Kurdishisi-Senaisi-Koyraboro Senniisi-Tachelhitisi-Southern Samiisi-Lul" +
+ "e Samiisi-Inari Samiisi-Skolt Samiisi-Congo Swahiliisi-Tesoisi-TetumIsi-" +
+ "Klingonisi-Tok PisinIsi-Tumbukaisi-Tasawaqisi-Central Atlas Tamazightuli" +
+ "mi olungaziwaisi-VaiisiVunjoisi-Warlpiriisi-Sogaisi-Standard Moroccan Ta" +
+ "mazightakukho okuqukethwe kolimiisi-Arabic esivamile sesimanjeisi-Austri" +
+ "an Germani-Swiss High Germanisi-Austrillian Englishi-Canadian Englishi-B" +
+ "ritish Englishi-American Englishisi-Latin American Spanishi-European Spa" +
+ "nishi-Mexican Spanishi-Canadian Frenchi-Swiss Frenchisi-Low Saxonisi-Fle" +
+ "mishisi-Brazillian Portugueseisi-European Portugueseisi-Moldavianisi-Chi" +
+ "nese (Okosiko)"
+
+var zuLangIdx = []uint16{ // 610 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000d, 0x000d, 0x0018, 0x0020, 0x002b, 0x002b,
+ 0x0035, 0x0041, 0x0041, 0x004b, 0x005a, 0x0065, 0x0073, 0x007e,
+ 0x007e, 0x0089, 0x0094, 0x009f, 0x00a9, 0x00b4, 0x00bf, 0x00ca,
+ 0x00ca, 0x00d6, 0x00d6, 0x00df, 0x00df, 0x00ea, 0x00f3, 0x00fd,
+ 0x0107, 0x0111, 0x011d, 0x0124, 0x012d, 0x0136, 0x0143, 0x014e,
+ 0x0159, 0x0163, 0x016e, 0x016e, 0x0179, 0x0183, 0x018e, 0x0198,
+ 0x01ab, 0x01b4, 0x01c5, 0x01d0, 0x01db, 0x01e7, 0x01ef, 0x01f8,
+ 0x0202, 0x020b, 0x020b, 0x0217, 0x0222, 0x022f, 0x023a, 0x023a,
+ // Entry 40 - 7F
+ 0x024d, 0x025b, 0x025b, 0x0263, 0x0271, 0x0271, 0x0271, 0x027e,
+ 0x0289, 0x0296, 0x02a2, 0x02ae, 0x02ba, 0x02c3, 0x02cd, 0x02cd,
+ 0x02d7, 0x02e6, 0x02ef, 0x02fa, 0x0304, 0x0304, 0x0310, 0x031b,
+ 0x031b, 0x0326, 0x0330, 0x0339, 0x034a, 0x0353, 0x0353, 0x035e,
+ 0x0363, 0x0371, 0x0381, 0x038c, 0x0398, 0x0398, 0x03a1, 0x03af,
+ 0x03bc, 0x03c9, 0x03d4, 0x03dd, 0x03e8, 0x03f3, 0x03f3, 0x0404,
+ 0x040e, 0x040e, 0x0417, 0x042a, 0x043f, 0x043f, 0x043f, 0x0449,
+ 0x0455, 0x0455, 0x045c, 0x0465, 0x0470, 0x047b, 0x047b, 0x0485,
+ // Entry 80 - BF
+ 0x048f, 0x049d, 0x04a8, 0x04b3, 0x04bc, 0x04c8, 0x04d3, 0x04e2,
+ 0x04ee, 0x04ee, 0x04f8, 0x0509, 0x0512, 0x051b, 0x0525, 0x0532,
+ 0x053c, 0x0544, 0x054e, 0x0559, 0x0564, 0x056c, 0x0574, 0x0581,
+ 0x058c, 0x0596, 0x059f, 0x05a9, 0x05b2, 0x05ba, 0x05c6, 0x05d1,
+ 0x05db, 0x05e5, 0x05f0, 0x05fa, 0x0603, 0x060f, 0x0619, 0x0626,
+ 0x062e, 0x0637, 0x0640, 0x064e, 0x064e, 0x064e, 0x0657, 0x065f,
+ 0x0669, 0x0673, 0x0673, 0x067e, 0x0685, 0x0685, 0x068e, 0x068e,
+ 0x068e, 0x068e, 0x068e, 0x0697, 0x0697, 0x0697, 0x0697, 0x0697,
+ // Entry C0 - FF
+ 0x0697, 0x0697, 0x0697, 0x0697, 0x0697, 0x06a2, 0x06a2, 0x06a2,
+ 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a9, 0x06a9, 0x06a9, 0x06a9,
+ 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9, 0x06a9,
+ 0x06a9, 0x06b2, 0x06b2, 0x06ba, 0x06ba, 0x06ba, 0x06cd, 0x06cd,
+ 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd, 0x06cd,
+ 0x06cd, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5,
+ 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06d5, 0x06de, 0x06de, 0x06de,
+ 0x06de, 0x06de, 0x06de, 0x06de, 0x06de, 0x06ea, 0x06ea, 0x06fd,
+ // Entry 100 - 13F
+ 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0x0706, 0x0706,
+ 0x0706, 0x0706, 0x0706, 0x070f, 0x070f, 0x0720, 0x0720, 0x0729,
+ 0x0729, 0x0737, 0x0737, 0x0737, 0x073f, 0x0747, 0x0747, 0x0747,
+ 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0753,
+ 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753, 0x0753,
+ 0x0753, 0x0759, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763,
+ 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0763,
+ 0x0763, 0x0763, 0x0773, 0x0773, 0x0773, 0x077c, 0x077c, 0x077c,
+ // Entry 140 - 17F
+ 0x077c, 0x0788, 0x0788, 0x0788, 0x0788, 0x0788, 0x0799, 0x0799,
+ 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799,
+ 0x07a3, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07ae, 0x07b8, 0x07b8,
+ 0x07b8, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07cc, 0x07dc,
+ 0x07dc, 0x07dc, 0x07dc, 0x07dc, 0x07dc, 0x07ec, 0x07ec, 0x07ec,
+ 0x07ec, 0x07f8, 0x07f8, 0x0808, 0x0813, 0x0813, 0x0813, 0x0813,
+ 0x0813, 0x0813, 0x0813, 0x0813, 0x081e, 0x0827, 0x0827, 0x0827,
+ 0x0827, 0x0827, 0x0830, 0x0830, 0x0830, 0x0830, 0x0830, 0x0830,
+ // Entry 180 - 1BF
+ 0x0830, 0x083a, 0x083a, 0x083a, 0x0842, 0x0853, 0x0853, 0x0861,
+ 0x0861, 0x0861, 0x0868, 0x0868, 0x0871, 0x0871, 0x0871, 0x0871,
+ 0x0871, 0x0871, 0x0871, 0x0871, 0x0871, 0x087a, 0x087a, 0x087a,
+ 0x087a, 0x087a, 0x0882, 0x088e, 0x088e, 0x08a0, 0x08ab, 0x08ab,
+ 0x08ab, 0x08ab, 0x08ab, 0x08b5, 0x08b5, 0x08b5, 0x08c0, 0x08c0,
+ 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08cf, 0x08cf,
+ 0x08cf, 0x08d7, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08e4,
+ 0x08e4, 0x08e4, 0x08e4, 0x08e4, 0x08ee, 0x0900, 0x0908, 0x0908,
+ // Entry 1C0 - 1FF
+ 0x0908, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914,
+ 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914,
+ 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0914, 0x0921, 0x0921,
+ 0x0921, 0x0921, 0x0921, 0x0921, 0x0921, 0x092a, 0x092a, 0x092a,
+ 0x092a, 0x092a, 0x092a, 0x0931, 0x0931, 0x0931, 0x0931, 0x093c,
+ 0x093c, 0x093c, 0x093c, 0x093c, 0x0945, 0x0945, 0x0945, 0x0945,
+ 0x0957, 0x0957, 0x095f, 0x095f, 0x095f, 0x0972, 0x0972, 0x0972,
+ 0x097f, 0x097f, 0x097f, 0x097f, 0x097f, 0x097f, 0x0990, 0x099d,
+ // Entry 200 - 23F
+ 0x09ab, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09b9,
+ 0x09b9, 0x09b9, 0x09b9, 0x09b9, 0x09ca, 0x09ca, 0x09ca, 0x09ca,
+ 0x09ca, 0x09ca, 0x09d2, 0x09d2, 0x09db, 0x09db, 0x09db, 0x09db,
+ 0x09db, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09e6, 0x09f3, 0x09f3,
+ 0x09f3, 0x09f3, 0x09f3, 0x09f3, 0x09fe, 0x09fe, 0x0a09, 0x0a09,
+ 0x0a24, 0x0a24, 0x0a24, 0x0a24, 0x0a34, 0x0a3b, 0x0a3b, 0x0a3b,
+ 0x0a3b, 0x0a3b, 0x0a3b, 0x0a3b, 0x0a43, 0x0a43, 0x0a43, 0x0a43,
+ 0x0a43, 0x0a4f, 0x0a4f, 0x0a4f, 0x0a4f, 0x0a57, 0x0a57, 0x0a57,
+ // Entry 240 - 27F
+ 0x0a57, 0x0a57, 0x0a57, 0x0a57, 0x0a57, 0x0a57, 0x0a57, 0x0a57,
+ 0x0a76, 0x0a76, 0x0a8f, 0x0a8f, 0x0aad, 0x0aad, 0x0ac0, 0x0ad3,
+ 0x0aea, 0x0afc, 0x0b0d, 0x0b1f, 0x0b39, 0x0b4b, 0x0b5c, 0x0b5c,
+ 0x0b6d, 0x0b7b, 0x0b88, 0x0b93, 0x0bac, 0x0bc3, 0x0bd0, 0x0bd0,
+ 0x0bd0, 0x0be5,
+} // Size: 1244 bytes
+
+// Total size for lang: 896067 bytes (896 KB)
+
+// Number of keys: 167
+var (
+ scriptIndex = tagIndex{
+ "",
+ "",
+ "AfakAghbAhomArabArmiArmnAvstBaliBamuBassBatkBengBlisBopoBrahBraiBugiBuhd" +
+ "CakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgydEgyhEgypElba" +
+ "EthiGeokGeorGlagGothGranGrekGujrGuruHangHaniHanoHansHantHatrHebrHira" +
+ "HluwHmngHrktHungIndsItalJavaJpanJurcKaliKanaKharKhmrKhojKndaKoreKpel" +
+ "KthiLanaLaooLatfLatgLatnLepcLimbLinaLinbLisuLomaLyciLydiMahjMandMani" +
+ "MayaMendMercMeroMlymModiMongMoonMrooMteiMultMymrNarbNbatNkgbNkooNshu" +
+ "OgamOlckOrkhOryaOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPlrdPrtiRjngRoro" +
+ "RunrSamrSaraSarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrcSyreSyrj" +
+ "SyrnTagbTakrTaleTaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirhUgar" +
+ "VaiiVispWaraWoleXpeoXsuxYiiiZinhZmthZsymZxxxZyyyZzzz",
+ }
+)
+
+var scriptHeaders = [218]header{
+ { // af
+ afScriptStr,
+ afScriptIdx,
+ },
+ {}, // agq
+ {}, // ak
+ { // am
+ amScriptStr,
+ amScriptIdx,
+ },
+ { // ar
+ arScriptStr,
+ arScriptIdx,
+ },
+ {}, // ar-EG
+ { // as
+ "বঙালী",
+ []uint16{ // 13 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000f,
+ },
+ },
+ {}, // asa
+ { // ast
+ "afakacáucaso-albanésahomárabearamaicu imperialarmeniuavésticubalinésbamu" +
+ "mbassa vahbatakbengalínsímbolos de Blissbopomofobrahmibraillelontara" +
+ "buhidchakmasilábicu unificáu de los nativos canadiensescariuchamcher" +
+ "okicirthcoptuxipriotacirílicueslavónicu cirílicu eclesiásticu antigu" +
+ "udevanagarialfabetu Deserettaquigrafía Duployédemóticu exipcianuhier" +
+ "áticu exipcianuxeroglíficos exipcianoselbasanetíopekhutsuri xeorxan" +
+ "uxeorxanuglagolíticugóticugranthagrieguguyaratigurmukhihangulhanhanu" +
+ "nó’ohan simplificáuhan tradicionalhatranuhebréuḥiraganaxeroglíficos " +
+ "anatoliospahawh hmongsilabarios xaponeseshúngaru antiguuindusitálicu" +
+ " antiguuxavanésxaponésjurchenkayah likatakanakharoshthiḥemerkhojkica" +
+ "naréscoreanukpellekaithilannalaosianufraktur llatíngaélicu llatínlla" +
+ "tínlepchalimbullinial Allinial Balfabetu de Fraserlomaliciulidiumaha" +
+ "janimandéumaniquéuxeroglíficos mayesmendemeroíticu en cursivameroíti" +
+ "cumalayalammodimongoltipos Moonmromeitei mayekmultanibirmanuárabe de" +
+ "l norte antiguunabatéugeba del naxin’konüshuoghamol chikiorkhonoriya" +
+ "osmanyapalmirenuPau Cin Haupérmicu antiguuescritura ‘Phags-papahlavi" +
+ " d’inscripcionespahlavi de salteriupahlavi de llibrosfeniciufonéticu" +
+ " de Pollardpartu d’inscripcionesrejangrongorongorunessamaritanusarat" +
+ "iárabe del sur antiguusaurashtraescritura de signosshavianusharadasi" +
+ "ddhamkhudabadicingaléssora sompengsondanéssyloti nagrisiriacusiriacu" +
+ " estrangelosiriacu occidentalsiriacu orientaltagbanwatakritai letai " +
+ "lue nuevutamiltanguttai viettelugutengwartifinaghtagalogthaanatailan" +
+ "déstibetanutirhutaugaríticuvaifala visiblevarang kshitiwoleaipersa a" +
+ "ntiguucuneiforme sumeriu acadiuyiheredáuescritura matemáticasímbolos" +
+ "non escritucomúnescritura desconocida",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0016, 0x001a, 0x0020, 0x0031, 0x0038, 0x0041,
+ 0x0049, 0x004e, 0x0057, 0x005c, 0x0065, 0x0077, 0x007f, 0x0085,
+ 0x008c, 0x0093, 0x0098, 0x009e, 0x00cc, 0x00d1, 0x00d5, 0x00dc,
+ 0x00e1, 0x00e6, 0x00ee, 0x00f7, 0x0122, 0x012c, 0x013c, 0x0151,
+ 0x0164, 0x0178, 0x0190, 0x0197, 0x019e, 0x01af, 0x01b7, 0x01c3,
+ 0x01ca, 0x01d1, 0x01d7, 0x01df, 0x01e7, 0x01ed, 0x01f0, 0x01fb,
+ 0x020b, 0x021a, 0x0221, 0x0228, 0x0232, 0x0249, 0x0255, 0x0269,
+ 0x0279, 0x027e, 0x028e, 0x0296, 0x029e, 0x02a5, 0x02ad, 0x02b5,
+ // Entry 40 - 7F
+ 0x02bf, 0x02c6, 0x02cc, 0x02d4, 0x02db, 0x02e1, 0x02e7, 0x02ec,
+ 0x02f4, 0x0303, 0x0313, 0x031a, 0x0320, 0x0325, 0x032e, 0x0337,
+ 0x0349, 0x034d, 0x0352, 0x0357, 0x035f, 0x0366, 0x036f, 0x0382,
+ 0x0387, 0x039c, 0x03a6, 0x03af, 0x03b3, 0x03b9, 0x03c3, 0x03c6,
+ 0x03d2, 0x03d9, 0x03e0, 0x03f8, 0x0400, 0x040d, 0x0413, 0x0419,
+ 0x041e, 0x0426, 0x042c, 0x0431, 0x0438, 0x0441, 0x044c, 0x045c,
+ 0x0471, 0x048a, 0x049d, 0x04af, 0x04b6, 0x04ca, 0x04e1, 0x04e7,
+ 0x04f1, 0x04f6, 0x0500, 0x0506, 0x051c, 0x0526, 0x0539, 0x0541,
+ // Entry 80 - BF
+ 0x0548, 0x054f, 0x0558, 0x0561, 0x056d, 0x0576, 0x0582, 0x0589,
+ 0x059b, 0x05ad, 0x05bd, 0x05c5, 0x05ca, 0x05d0, 0x05dd, 0x05e2,
+ 0x05e8, 0x05f0, 0x05f6, 0x05fd, 0x0605, 0x060c, 0x0612, 0x061c,
+ 0x0624, 0x062b, 0x0635, 0x0638, 0x0644, 0x0651, 0x0657, 0x0664,
+ 0x067d, 0x067f, 0x0687, 0x069c, 0x06a5, 0x06b0, 0x06b6, 0x06cb,
+ },
+ },
+ { // az
+ azScriptStr,
+ azScriptIdx,
+ },
+ { // az-Cyrl
+ "Кирил",
+ []uint16{ // 28 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x000a,
+ },
+ },
+ {}, // bas
+ { // be
+ "арабскаеармянскаебенгальскаебапамофашрыфт Брайлякірыліцадэванагарыэфіопс" +
+ "каегрузінскаегрэчаскаегуджараціГурмукхіхангыльханспрошчаны хантрады" +
+ "цыйны ханяўрэйскаехіраганаяпонскаекатаканакхмерскаеканадакарэйскаел" +
+ "аоскаелацінкамалаяламстарамангольскаем’янмарскаеорыясінгальскаетамі" +
+ "льскаетэлугутанатайскаетыбецкаесімвалынепісьменнызвычайнаеневядомае" +
+ " пісьмо",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x0022,
+ 0x0022, 0x0022, 0x0022, 0x0022, 0x0038, 0x0038, 0x0048, 0x0048,
+ 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f,
+ 0x005f, 0x005f, 0x005f, 0x006f, 0x006f, 0x0083, 0x0083, 0x0083,
+ 0x0083, 0x0083, 0x0083, 0x0083, 0x0095, 0x0095, 0x00a9, 0x00a9,
+ 0x00a9, 0x00a9, 0x00bb, 0x00cd, 0x00dd, 0x00eb, 0x00f1, 0x00f1,
+ 0x010a, 0x0125, 0x0125, 0x0137, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0157, 0x0157, 0x0157, 0x0167,
+ // Entry 40 - 7F
+ 0x0167, 0x0179, 0x0179, 0x0185, 0x0197, 0x0197, 0x0197, 0x0197,
+ 0x01a5, 0x01a5, 0x01a5, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3,
+ 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3,
+ 0x01b3, 0x01b3, 0x01b3, 0x01c3, 0x01c3, 0x01e3, 0x01e3, 0x01e3,
+ 0x01e3, 0x01e3, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa,
+ 0x01fa, 0x01fa, 0x01fa, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202,
+ 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202,
+ 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202,
+ // Entry 80 - BF
+ 0x0202, 0x0202, 0x0202, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218,
+ 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x022c,
+ 0x022c, 0x022c, 0x0238, 0x0238, 0x0238, 0x0238, 0x0240, 0x024e,
+ 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e,
+ 0x025e, 0x025e, 0x025e, 0x025e, 0x026c, 0x0282, 0x0294, 0x02b3,
+ },
+ },
+ {}, // bem
+ {}, // bez
+ { // bg
+ bgScriptStr,
+ bgScriptIdx,
+ },
+ {}, // bm
+ { // bn
+ bnScriptStr,
+ bnScriptIdx,
+ },
+ { // bo
+ "རྒྱ་ཡིག་གསར་པ།རྒྱ་ཡིག་རྙིང་པ།བོད་ཡིག་སྙན་བརྒྱུད། ཡིག་རིགས་སུ་མ་བཀོད་པའི་" +
+ "ཟིན་ཐོ།",
+ []uint16{ // 166 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x002a, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ // Entry 40 - 7F
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ // Entry 80 - BF
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,
+ 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f,
+ 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x00eb,
+ },
+ },
+ {}, // bo-IN
+ { // br
+ "arabekarameek impalaerelarmenianekavestekbalinekbengalibopomofoBraillebo" +
+ "ugiekkoptekkirillekkirillek henslavonekdevanagarihieroglifoù egiptek" +
+ "etiopekjorjianekglagolitekgotekgresianekgujaratigurmukhihangeulhanha" +
+ "n eeunaethan hengounelhebraekhiraganahieroglifoù Anatoliahenitalekja" +
+ "vanekjapanekkatakanakhmerkannadakoreaneklaoseklatin gouezeleklatinhi" +
+ "eroglifoù mayaekmalayalammongolekmyanmarogamoriyaruneksinghaleksunda" +
+ "neksirieksiriek Estrangelāsiriek ar C’hornôgsiriek ar Retertamilekte" +
+ "lougoutagalogthaanathaitibetanekougaritekvaipersek kozhnotadur jedon" +
+ "ielarouezioùanskrivetboutinskritur dianav",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0018, 0x0022, 0x0029,
+ 0x0030, 0x0030, 0x0030, 0x0030, 0x0037, 0x0037, 0x003f, 0x003f,
+ 0x0046, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
+ 0x004d, 0x0053, 0x0053, 0x005b, 0x006f, 0x0079, 0x0079, 0x0079,
+ 0x0079, 0x0079, 0x008d, 0x008d, 0x0094, 0x0094, 0x009d, 0x00a7,
+ 0x00ac, 0x00ac, 0x00b5, 0x00bd, 0x00c5, 0x00cc, 0x00cf, 0x00cf,
+ 0x00da, 0x00e7, 0x00e7, 0x00ee, 0x00f6, 0x010b, 0x010b, 0x010b,
+ 0x010b, 0x010b, 0x0114, 0x011b, 0x0122, 0x0122, 0x0122, 0x012a,
+ // Entry 40 - 7F
+ 0x012a, 0x012f, 0x012f, 0x0136, 0x013e, 0x013e, 0x013e, 0x013e,
+ 0x0144, 0x0144, 0x0153, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
+ 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x016b,
+ 0x016b, 0x016b, 0x016b, 0x0174, 0x0174, 0x017c, 0x017c, 0x017c,
+ 0x017c, 0x017c, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183,
+ 0x0187, 0x0187, 0x0187, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c,
+ 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c,
+ 0x018c, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191,
+ // Entry 80 - BF
+ 0x0191, 0x0191, 0x0191, 0x019a, 0x019a, 0x01a2, 0x01a2, 0x01a8,
+ 0x01ba, 0x01cf, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01e5,
+ 0x01e5, 0x01e5, 0x01ed, 0x01ed, 0x01ed, 0x01f4, 0x01fa, 0x01fe,
+ 0x0207, 0x0207, 0x0210, 0x0213, 0x0213, 0x0213, 0x0213, 0x021e,
+ 0x021e, 0x021e, 0x021e, 0x022e, 0x0238, 0x0241, 0x0247, 0x0255,
+ },
+ },
+ { // brx
+ "अरबीशहनशाही आरामाईकअर्मेनियाईअवस्तन्बालीबटकीबंगालीब्लीस चीन्हबोपोमोफोब्र" +
+ "ह्मीब्रेलबुगीनीबुहीदयुनीफाईड कैनेडियन अबॉरीजीनल सीलैबीक्सकारियनकॅम" +
+ "चिरूकीसिर्थकॉप्टसीप्रीओट्सिरिलिक्पुरानी चर्च सिरिलिक्देवनागरीदेसेर" +
+ "ट्मीस्री डैमोटीक्मीस्री हैरैटीक्मीस्री हैरोग्लीफ़्ईथोपियाईजोर्जीयन" +
+ " खुतसुरीजोर्जीयनग्लैगोलिटीकगौथीकग्रीकगुजरातीगुरमुखीहंगुलहानहानुनुसरल" +
+ "ीकृत हानपारम्परिक हानहिब्रूहीरागानापाहवाह ह्मौंगकाताकाना या हीरागा" +
+ "नापुरानी हंगैरीयनसिन्धुपुरानी इटैलियनजावानीसजापानीकायाह लीकाताकाना" +
+ "खरोष्टीख्मेरकन्नड़कोरियाईलानालाओफ्रैक्तुर लैटिनगैलीक लैटिनलैटिनलेप" +
+ "चालिम्बुलीनीयर एलीनीयर बीलीसीयनलीडीयनमांडेमानीकीमाया हीरोग्लीफ्मेर" +
+ "ोईटीक्मलयालम्मंगोलियाईमुन्मेतेई मयेकम्यानमार्न्गकोओगहैमओल चीकीओरखो" +
+ "नउड़ियाओस्मानियापुरानी पर्मीक्फाग्स पाबुक (सालटर) पहलवीफोनीशीयनपौल" +
+ "ार्ड़ फोनेटीकरेजेंगरोंगोरोंगोरूनिकसमारतीसरातीसौराष्ट्रसांकेतिक लेख" +
+ "शेवियनसिंहालीसूडानीसील्होटी नागरीसीरीआकएस्ट्रांगलो सीरीआकपश्चीमी स" +
+ "ीरीआकपूर्वी सीरीआकतागबानवाताई लेनया ताई लुएतमीळतेलुगुतेंगवारतीफीना" +
+ "ग़टागालॉगथानाथाईतिब्बतीऊगारीटीकवाईवीज़ीबल बोलीपुरानी फारसीसुमेरो अ" +
+ "क्काड़ी कुनेईफॉर्मयीविरासतअलिखितआमअज्ञात या अवैध लिपि",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0037, 0x0055, 0x006a,
+ 0x0076, 0x0076, 0x0076, 0x0082, 0x0094, 0x00b3, 0x00cb, 0x00e0,
+ 0x00ef, 0x0101, 0x0110, 0x0110, 0x0179, 0x018b, 0x0194, 0x01a6,
+ 0x01b5, 0x01c4, 0x01df, 0x01f7, 0x022f, 0x0247, 0x025c, 0x025c,
+ 0x0287, 0x02b2, 0x02e6, 0x02e6, 0x02fe, 0x032c, 0x0344, 0x0365,
+ 0x0374, 0x0374, 0x0383, 0x0398, 0x03ad, 0x03bc, 0x03c5, 0x03d7,
+ 0x03f6, 0x041b, 0x041b, 0x042d, 0x0445, 0x0445, 0x046a, 0x04a2,
+ 0x04cd, 0x04df, 0x0507, 0x051c, 0x052e, 0x052e, 0x0544, 0x055c,
+ // Entry 40 - 7F
+ 0x0571, 0x0580, 0x0580, 0x0592, 0x05a7, 0x05a7, 0x05a7, 0x05b3,
+ 0x05bc, 0x05e7, 0x0606, 0x0615, 0x0624, 0x0636, 0x064c, 0x0665,
+ 0x0665, 0x0665, 0x0677, 0x0689, 0x0689, 0x0698, 0x06aa, 0x06d5,
+ 0x06d5, 0x06d5, 0x06f0, 0x0705, 0x0705, 0x0720, 0x072c, 0x072c,
+ 0x0748, 0x0748, 0x0763, 0x0763, 0x0763, 0x0763, 0x0772, 0x0772,
+ 0x0781, 0x0794, 0x07a3, 0x07b5, 0x07d0, 0x07d0, 0x07d0, 0x07f8,
+ 0x080e, 0x080e, 0x080e, 0x0839, 0x0851, 0x087f, 0x087f, 0x0891,
+ 0x08af, 0x08be, 0x08d0, 0x08df, 0x08df, 0x08fa, 0x091c, 0x092e,
+ // Entry 80 - BF
+ 0x092e, 0x092e, 0x092e, 0x0943, 0x0943, 0x0955, 0x097d, 0x098f,
+ 0x09c3, 0x09eb, 0x0a10, 0x0a28, 0x0a28, 0x0a38, 0x0a55, 0x0a61,
+ 0x0a61, 0x0a61, 0x0a73, 0x0a88, 0x0aa0, 0x0ab5, 0x0ac1, 0x0aca,
+ 0x0adf, 0x0adf, 0x0af7, 0x0b00, 0x0b22, 0x0b22, 0x0b22, 0x0b44,
+ 0x0b8e, 0x0b94, 0x0ba6, 0x0ba6, 0x0ba6, 0x0bb8, 0x0bbe, 0x0bf1,
+ },
+ },
+ { // bs
+ "arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismoba" +
+ "lijsko pismobatak pismobengalsko pismoblisimbolično pismobopomofo pi" +
+ "smobramansko pismobrajevo pismobuginsko pismobuhidsko pismočakmansko" +
+ " pismoUjedinjeni kanadski aboridžinski silabicikarijsko pismočamsko " +
+ "pismočerokicirt pismokoptičko pismokiparsko pismoćirilicaStarosloven" +
+ "ska crkvena ćirilicadevanagaridezeretegipatsko narodno pismoegipatsk" +
+ "o hijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khuts" +
+ "uri pismogruzijsko pismoglagoljicagotikagrčko pismogudžarati pismogu" +
+ "rmuki pismohangul pismohan pismohanuno pismopojednostavljeno hansko " +
+ "pismotradicionalno hansko pismohebrejsko pismohiraganapahawh hmong p" +
+ "ismoKatakana ili HiraganaStaromađarsko pismoinduško ismostaro italsk" +
+ "o pismojavansko pismojapansko pismokajah li pismokatakanakarošti pis" +
+ "mokmersko pismokanada pismokorejsko pismokaićansko pismolanna pismol" +
+ "aosko pismolatinica (fraktur varijanta)galska latinicalatinicalepča " +
+ "pismolimbu pismolinearno A pismolinearno B pismolisijsko pismolidijs" +
+ "ko pismomandeansko pismomanihejsko pismomajanski hijeroglifimeroitik" +
+ " pismomalajalam pismomongolsko pismomesečevo pismomeitei majek pismo" +
+ "mijanmarsko pismon’ko pismoogham pismool čiki pismoorkhon pismoorija" +
+ " pismoosmanja pismostaro permiksko pismophags-pa pismopisani pahlavi" +
+ "psalter pahlavipahlavi pismofeničansko pismopolard fonetsko pismopis" +
+ "ani partianrejang pismorongorongo pismorunsko pismosamaritansko pism" +
+ "osarati pismosauraštra pismoznakovno pismošavian pismosinhala pismos" +
+ "iloti nagri pismosirijsko pismosirijsko estrangelo pismozapadnosirij" +
+ "sko pismopismo istočne Sirijetagbanva pismotai le pismonovo tai lue " +
+ "pismotamilsko pismotai viet pismotelugu pismotengvar pismotifinag pi" +
+ "smotagalogtana pismotajlandsko pismotibetansko pismougaritsko pismov" +
+ "ai pismovidljivi govorstaropersijsko pismosumersko-akadsko kuneiform" +
+ " pismoji pismonasledno pismomatematička notacijasimbolinepisani jezi" +
+ "kzajedničko pismonepoznato pismo",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0036, 0x0046,
+ 0x0054, 0x0054, 0x0054, 0x005f, 0x006e, 0x0082, 0x0090, 0x009f,
+ 0x00ac, 0x00ba, 0x00c8, 0x00d8, 0x0102, 0x0110, 0x011d, 0x0124,
+ 0x012e, 0x013d, 0x014b, 0x0154, 0x0174, 0x017e, 0x0185, 0x0185,
+ 0x019c, 0x01b6, 0x01cb, 0x01cb, 0x01d9, 0x01f1, 0x0200, 0x020a,
+ 0x0210, 0x0210, 0x021c, 0x022c, 0x0239, 0x0245, 0x024e, 0x025a,
+ 0x0277, 0x0291, 0x0291, 0x02a0, 0x02a8, 0x02a8, 0x02ba, 0x02cf,
+ 0x02e3, 0x02f0, 0x0303, 0x0311, 0x031f, 0x031f, 0x032d, 0x0335,
+ // Entry 40 - 7F
+ 0x0343, 0x0350, 0x0350, 0x035c, 0x036a, 0x036a, 0x037a, 0x0385,
+ 0x0391, 0x03ad, 0x03bc, 0x03c4, 0x03d0, 0x03db, 0x03eb, 0x03fb,
+ 0x03fb, 0x03fb, 0x0409, 0x0417, 0x0417, 0x0427, 0x0437, 0x044b,
+ 0x044b, 0x044b, 0x0459, 0x0468, 0x0468, 0x0477, 0x0486, 0x0486,
+ 0x0498, 0x0498, 0x04a9, 0x04a9, 0x04a9, 0x04a9, 0x04b5, 0x04b5,
+ 0x04c0, 0x04ce, 0x04da, 0x04e5, 0x04f2, 0x04f2, 0x04f2, 0x0507,
+ 0x0515, 0x0523, 0x0532, 0x053f, 0x0550, 0x0565, 0x0573, 0x057f,
+ 0x058f, 0x059b, 0x05ad, 0x05b9, 0x05b9, 0x05c9, 0x05d7, 0x05e4,
+ // Entry 80 - BF
+ 0x05e4, 0x05e4, 0x05e4, 0x05f1, 0x05f1, 0x05f1, 0x0603, 0x0611,
+ 0x062a, 0x063f, 0x0654, 0x0662, 0x0662, 0x066e, 0x0680, 0x068e,
+ 0x068e, 0x069c, 0x06a8, 0x06b5, 0x06c2, 0x06c9, 0x06d3, 0x06e3,
+ 0x06f3, 0x06f3, 0x0702, 0x070b, 0x0719, 0x0719, 0x0719, 0x072d,
+ 0x074d, 0x0755, 0x0763, 0x0778, 0x077f, 0x078d, 0x079e, 0x07ad,
+ },
+ },
+ { // bs-Cyrl
+ "арапско писмоимперијско арамејско писмојерменско писмоавестанско писмоба" +
+ "лијско писмобатак писмобенгалско писмоблисимболично писмобопомофо п" +
+ "исмобраманско писмоБрајево писмобугинско писмобухидско писмочакманс" +
+ "ко писмоуједињени канадски абориџински силабицикаријско писмочамско" +
+ " писмоЧерокицирт писмокоптичко писмокипарско писмоЋирилицаСтарослове" +
+ "нска црквена ћирилицаДеванагариДезеретегипатско народно писмоегипат" +
+ "ско хијератско писмоегипатски хијероглифиетиопско писмогрузијско кх" +
+ "утсури писмогрузијско писмоглагољицаГотикагрчко писмогујарати писмо" +
+ "гурмуки писмохангулханханунопоједностављени хантрадиционални ханхеб" +
+ "рејско писмоХираганапахав хмонг писмоКатакана или Хираганастаромађа" +
+ "рско писмоиндушко писмостари италикјаванско писмојапанско писмокаја" +
+ "х-ли писмоКатаканакарошти писмокмерско писмоканнада писмокорејско п" +
+ "исмокаитиланна писмолаошко писмолатиница (фрактур варијанта)галска " +
+ "латиницаЛатиницалепча писмолимбу писмолинеарно А писмолинеарно Б пи" +
+ "смолисијско писмолидијско писмомандеанско писмоманихејско писмомаја" +
+ "нски хијероглифимероитик писмомалајалам писмомонголско писмомесечев" +
+ "о писмомеитеи мајек писмомијанмарско писмон’ко писмоогамско писмоол" +
+ " чики писмоорконско писмооријанско писмоосмањанско писмостаро пермик" +
+ "ско писмопагс-па писмописани пахлавипсалтер пахлавипахлави писмоФен" +
+ "ичанско писмопоралд фонетско писмописани партианрејанг писморонгоро" +
+ "нго писморунско писмосамаританско писмосарати писмосаураштра писмоз" +
+ "наковно писмошавијанско писмосинхала писмосилоти нагри писмосиријск" +
+ "о писмосиријско естрангело писмозападносиријско писмописмо источне " +
+ "Сиријетагбанва писмотаи ле писмонови таи луетамилско писмотаи виет " +
+ "писмотелугу писмотенгвар писмотифинаг писмоТагалогтхана писмотајлан" +
+ "дско писмотибетанско писмоугаритско писмоваи писмовидљиви говорстар" +
+ "оперсијско писмосумерско-акадско кунеиформ писмоји писмонаследно пи" +
+ "смоматематичка нотацијасимболиНеписани језикзаједничко писмоНепозна" +
+ "то или неважеће писмо",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, 0x0087,
+ 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00f9, 0x0114, 0x0131,
+ 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, 0x021a, 0x0226,
+ 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, 0x02dd, 0x02dd,
+ 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, 0x03ca, 0x03dc,
+ 0x03e8, 0x03e8, 0x03fd, 0x0418, 0x0431, 0x043d, 0x0443, 0x044f,
+ 0x0474, 0x0495, 0x0495, 0x04b2, 0x04c2, 0x04c2, 0x04e2, 0x050a,
+ 0x052f, 0x0548, 0x055f, 0x057a, 0x0595, 0x0595, 0x05af, 0x05bf,
+ // Entry 40 - 7F
+ 0x05d8, 0x05f1, 0x05f1, 0x060a, 0x0625, 0x0625, 0x062f, 0x0644,
+ 0x065b, 0x068f, 0x06ac, 0x06bc, 0x06d1, 0x06e6, 0x0704, 0x0722,
+ 0x0722, 0x0722, 0x073d, 0x0758, 0x0758, 0x0777, 0x0796, 0x07bd,
+ 0x07bd, 0x07bd, 0x07d8, 0x07f5, 0x07f5, 0x0812, 0x082d, 0x082d,
+ 0x084f, 0x084f, 0x0870, 0x0870, 0x0870, 0x0870, 0x0884, 0x0884,
+ 0x089d, 0x08b5, 0x08d0, 0x08ed, 0x090c, 0x090c, 0x090c, 0x0934,
+ 0x094c, 0x0967, 0x0984, 0x099d, 0x09bc, 0x09e4, 0x09ff, 0x0a16,
+ 0x0a35, 0x0a4c, 0x0a6f, 0x0a86, 0x0a86, 0x0aa3, 0x0abe, 0x0add,
+ // Entry 80 - BF
+ 0x0add, 0x0add, 0x0add, 0x0af6, 0x0af6, 0x0af6, 0x0b18, 0x0b33,
+ 0x0b63, 0x0b8c, 0x0bb2, 0x0bcd, 0x0bcd, 0x0be3, 0x0bf9, 0x0c14,
+ 0x0c14, 0x0c2e, 0x0c45, 0x0c5e, 0x0c77, 0x0c85, 0x0c9a, 0x0cb9,
+ 0x0cd8, 0x0cd8, 0x0cf5, 0x0d06, 0x0d1f, 0x0d1f, 0x0d1f, 0x0d46,
+ 0x0d83, 0x0d92, 0x0dad, 0x0dd4, 0x0de2, 0x0dfd, 0x0e1c, 0x0e51,
+ },
+ },
+ { // ca
+ caScriptStr,
+ caScriptIdx,
+ },
+ { // ce
+ "Ӏаьрбийнэрмалойнбенгалхойнбопомофобрайлякириллицадеванагариэфиопингуьржи" +
+ "йнгрекийнгуджаратигурмукхихангылькитайнатта китайнламастан китайнжу" +
+ "гтийнхираганаяпонийнкатаканакхмерийнканнадакорейнлаоссийнлатинанмал" +
+ "аялийнмонголийнмьянманийнорисингалхойнтамилхойнтелугутаанатайнтибет" +
+ "хойнсимволашйоза доцумассара а тӀеэцнадоьвзуш доцу йоза",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, 0x0020,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0044, 0x0044,
+ 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
+ 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, 0x0076, 0x0076, 0x0076,
+ 0x0076, 0x0076, 0x0076, 0x0076, 0x0084, 0x0084, 0x0094, 0x0094,
+ 0x0094, 0x0094, 0x00a2, 0x00b4, 0x00c4, 0x00d2, 0x00de, 0x00de,
+ 0x00f3, 0x0110, 0x0110, 0x011e, 0x012e, 0x012e, 0x012e, 0x012e,
+ 0x012e, 0x012e, 0x012e, 0x012e, 0x013c, 0x013c, 0x013c, 0x014c,
+ // Entry 40 - 7F
+ 0x014c, 0x015c, 0x015c, 0x016a, 0x0176, 0x0176, 0x0176, 0x0176,
+ 0x0186, 0x0186, 0x0186, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
+ 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
+ 0x0194, 0x0194, 0x0194, 0x01a6, 0x01a6, 0x01b8, 0x01b8, 0x01b8,
+ 0x01b8, 0x01b8, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc,
+ 0x01cc, 0x01cc, 0x01cc, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2,
+ 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2,
+ 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2, 0x01d2,
+ // Entry 80 - BF
+ 0x01d2, 0x01d2, 0x01d2, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f8,
+ 0x01f8, 0x01f8, 0x0204, 0x0204, 0x0204, 0x0204, 0x020e, 0x0216,
+ 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228,
+ 0x0228, 0x0228, 0x0228, 0x0228, 0x0238, 0x0249, 0x0269, 0x0289,
+ },
+ },
+ {}, // cgg
+ { // chr
+ "ᎡᎳᏈᎩᏣᎳᎩᏲᏂᎢ ᏗᎪᏪᎵᎠᎯᏗᎨ ᏓᎶᏂᎨᎤᏦᏍᏗ ᏓᎶᏂᎨᎳᏗᎾᏄᏬᎵᏍᏛᎾ ᎠᏍᏓᏩᏛᏍᏙᏗ",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+ 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+ 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+ 0x0044, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
+ 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
+ // Entry 40 - 7F
+ 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
+ 0x005d, 0x005d, 0x005d, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ // Entry 80 - BF
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0091,
+ },
+ },
+ { // ckb
+ "عەرەبیئەرمەنیبەنگالیبۆپۆمۆفۆبرەیلسریلیکدەڤەناگەریئەتیۆپیکگورجییۆنانیگوجە" +
+ "راتیگورموکھیھانگولهیبرێھیراگاناژاپۆنیکاتاکاناخمێریکەنەداکۆریاییلاول" +
+ "اتینیمالایالاممەنگۆلیمیانمارئۆریاسینھالاتامیلیتیلوگوتانەتایلەندی",
+ []uint16{ // 152 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001a, 0x001a,
+ 0x001a, 0x001a, 0x001a, 0x001a, 0x0028, 0x0028, 0x0038, 0x0038,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0042, 0x004e, 0x004e, 0x0062, 0x0062, 0x0062,
+ 0x0062, 0x0062, 0x0062, 0x0062, 0x0072, 0x0072, 0x007c, 0x007c,
+ 0x007c, 0x007c, 0x0088, 0x0098, 0x00a8, 0x00b4, 0x00b4, 0x00b4,
+ 0x00b4, 0x00b4, 0x00b4, 0x00be, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00da, 0x00da, 0x00da, 0x00ea,
+ // Entry 40 - 7F
+ 0x00ea, 0x00f4, 0x00f4, 0x0100, 0x010e, 0x010e, 0x010e, 0x010e,
+ 0x0114, 0x0114, 0x0114, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+ 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120,
+ 0x0120, 0x0120, 0x0120, 0x0132, 0x0132, 0x0140, 0x0140, 0x0140,
+ 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e,
+ 0x014e, 0x014e, 0x014e, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
+ 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
+ 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158,
+ // Entry 80 - BF
+ 0x0158, 0x0158, 0x0158, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166,
+ 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0172,
+ 0x0172, 0x0172, 0x017e, 0x017e, 0x017e, 0x017e, 0x0186, 0x0196,
+ },
+ },
+ { // cs
+ csScriptStr,
+ csScriptIdx,
+ },
+ { // cy
+ "ArabaiddArmenaiddBengalaiddBopomofoBrailleCyriligDevanagariEthiopigGeorg" +
+ "aiddGroegaiddGwjarataiddGwrmwciHangulHanHan symledigHan traddodiadol" +
+ "HebreigHiraganaJapaneaiddCatacanaChmeraiddCanaraiddCoreaiddLaoaiddLl" +
+ "adinMalayalamaiddMongolaiddMyanmaraiddOgamOrïaiddSinhanaiddTamilaidd" +
+ "TeluguThaanaTaiTibetaiddSymbolauAnysgrifenedigCyffredinSgript anhysb" +
+ "ys",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x001b, 0x001b, 0x0023, 0x0023,
+ 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+ 0x002a, 0x002a, 0x002a, 0x0031, 0x0031, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x004c, 0x004c,
+ 0x004c, 0x004c, 0x0055, 0x0060, 0x0067, 0x006d, 0x0070, 0x0070,
+ 0x007c, 0x008c, 0x008c, 0x0093, 0x009b, 0x009b, 0x009b, 0x009b,
+ 0x009b, 0x009b, 0x009b, 0x009b, 0x00a5, 0x00a5, 0x00a5, 0x00ad,
+ // Entry 40 - 7F
+ 0x00ad, 0x00b6, 0x00b6, 0x00bf, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4,
+ 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4,
+ 0x00d4, 0x00d4, 0x00d4, 0x00e1, 0x00e1, 0x00eb, 0x00eb, 0x00eb,
+ 0x00eb, 0x00eb, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6,
+ 0x00fa, 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
+ 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
+ 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102,
+ // Entry 80 - BF
+ 0x0102, 0x0102, 0x0102, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
+ 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0115,
+ 0x0115, 0x0115, 0x011b, 0x011b, 0x011b, 0x011b, 0x0121, 0x0124,
+ 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d,
+ 0x012d, 0x012d, 0x012d, 0x012d, 0x0135, 0x0143, 0x014c, 0x015b,
+ },
+ },
+ { // da
+ daScriptStr,
+ daScriptIdx,
+ },
+ {}, // dav
+ { // de
+ deScriptStr,
+ deScriptIdx,
+ },
+ {}, // de-CH
+ {}, // dje
+ { // dsb
+ "arabskiarmeńskibengalskibopomofobraillowe pismokyriliskidevanagarietiopi" +
+ "skigeorgiskigrichiskigujaratigurmukhihangulhanzjadnorjone hantradici" +
+ "onalne hanhebrejskihiraganajapańskikatakanakhmerkannadakorejskilaosk" +
+ "iłatyńskimalayalamskimongolskiburmaskioriyasinghaleskitamilskitelugu" +
+ "thaanathaiskitibetskisymbolebźez pismapowšyknenjeznate pismo",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0021, 0x0021,
+ 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+ 0x0030, 0x0030, 0x0030, 0x0039, 0x0039, 0x0043, 0x0043, 0x0043,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004c, 0x004c, 0x0055, 0x0055,
+ 0x0055, 0x0055, 0x005e, 0x0066, 0x006e, 0x0074, 0x0077, 0x0077,
+ 0x0086, 0x0097, 0x0097, 0x00a0, 0x00a8, 0x00a8, 0x00a8, 0x00a8,
+ 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b1, 0x00b1, 0x00b1, 0x00b9,
+ // Entry 40 - 7F
+ 0x00b9, 0x00be, 0x00be, 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ 0x00d3, 0x00d3, 0x00d3, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00dd, 0x00dd, 0x00dd, 0x00e9, 0x00e9, 0x00f2, 0x00f2, 0x00f2,
+ 0x00f2, 0x00f2, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa,
+ 0x00fa, 0x00fa, 0x00fa, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
+ 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
+ 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
+ // Entry 80 - BF
+ 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a,
+ 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x0112,
+ 0x0112, 0x0112, 0x0118, 0x0118, 0x0118, 0x0118, 0x011e, 0x0125,
+ 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d,
+ 0x012d, 0x012d, 0x012d, 0x012d, 0x0134, 0x013f, 0x0148, 0x0156,
+ },
+ },
+ {}, // dua
+ {}, // dyo
+ { // dz
+ "ཨེ་ར་བིཀ་ཡིག་གུཨར་མི་ནི་ཡཱན་ཡིག་གུབངྒ་ལ་ཡིག་གུབོ་པོ་མོ་ཕཱོ་ཡིག་གུའབུར་ཡི" +
+ "གསིརིལ་ལིཀ་ཡིག་གུདེ་ཝ་ན་ག་རི་ཡིག་གུཨི་ཐི་ཡོ་པིཀ྄་ཡིག་གུཇཽ་ཇི་ཡཱན་ཡ" +
+ "ིག་གུགྲིཀ་ཡིག་གུགུ་ཇ་ར་ཏི་ཡིག་གུགུ་རུ་མུ་ཁ་ཡིག་གུཧཱན་གུལ་ཡིག་གུརྒྱ" +
+ "་ནག་ཡིག་གུརྒྱ་ཡིག་ ལུགས་གསར་ལུགས་རྙིང་ རྒྱ་ཡིགཧེ་བྲུ་ཡིག་གུཇ་པཱན་ག" +
+ "ྱི་ཧི་ར་ག་ན་ཡིག་གུཇ་པཱན་ཡིག་གུཇ་པཱན་གྱི་ཀ་ཏ་ཀ་ན་ཡིག་གུཁེ་མེར་ཡིག་ག" +
+ "ུཀ་ན་ཌ་ཡིག་གུཀོ་རི་ཡཱན་ཡིག་གུལའོ་ཡིག་གུལེ་ཊིན་ཡིག་གུམ་ལ་ཡ་ལམ་ཡིག་ག" +
+ "ུསོག་པོའི་ཡིག་གུབར་མིས་ཡིག་གུཨོ་རི་ཡ་ཡིག་གུསིན་ཧ་ལ་རིག་གུཏ་མིལ་ཡིག" +
+ "་གུཏེ་ལུ་གུ་ཡིག་གུཐཱ་ན་ཡིག་གུཐཱའི་ཡིག་གུང་བཅས་ཀྱི་ཡིག་གུམཚན་རྟགསཡི" +
+ "ག་ཐོག་མ་བཀོདཔསྤྱིཡིགངོ་མ་ཤེས་པའི་ཡི་གུ",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, 0x002d, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x008a, 0x008a, 0x00c3, 0x00c3,
+ 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db,
+ 0x00db, 0x00db, 0x00db, 0x010b, 0x010b, 0x0141, 0x0141, 0x0141,
+ 0x0141, 0x0141, 0x0141, 0x0141, 0x017d, 0x017d, 0x01ad, 0x01ad,
+ 0x01ad, 0x01ad, 0x01ce, 0x01fe, 0x0231, 0x025b, 0x0282, 0x0282,
+ 0x02b6, 0x02ea, 0x02ea, 0x0311, 0x035c, 0x035c, 0x035c, 0x035c,
+ 0x035c, 0x035c, 0x035c, 0x035c, 0x0380, 0x0380, 0x0380, 0x03c8,
+ // Entry 40 - 7F
+ 0x03c8, 0x03ef, 0x03ef, 0x0413, 0x0443, 0x0443, 0x0443, 0x0443,
+ 0x0461, 0x0461, 0x0461, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488,
+ 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488,
+ 0x0488, 0x0488, 0x0488, 0x04b5, 0x04b5, 0x04e2, 0x04e2, 0x04e2,
+ 0x04e2, 0x04e2, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509,
+ 0x0509, 0x0509, 0x0509, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533,
+ 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533,
+ 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533,
+ // Entry 80 - BF
+ 0x0533, 0x0533, 0x0533, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d,
+ 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x0581,
+ 0x0581, 0x0581, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05cf, 0x05f0,
+ 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620,
+ 0x0620, 0x0620, 0x0620, 0x0620, 0x0638, 0x0665, 0x067a, 0x06b0,
+ },
+ },
+ {}, // ebu
+ { // ee
+ "Arabiagbeŋɔŋlɔarmeniagbeŋɔŋlɔbengaligbeŋɔŋlɔbopomfogbeŋɔŋlɔbraillegbeŋɔŋ" +
+ "lɔCyrillicgbeŋɔŋlɔdevanagarigbeŋɔŋlɔethiopiagbeŋɔŋlɔgɔgiagbeŋɔŋlɔgri" +
+ "sigbeŋɔŋlɔgudzaratigbeŋɔŋlɔgurmukhigbeŋɔŋlɔhangulgbeŋɔŋlɔhangbeŋɔŋlɔ" +
+ "HansgbeŋɔŋlɔBlema HantgbeŋcŋlɔhebrigbeŋɔŋlɔhiraganagbeŋɔŋlɔJapaneseg" +
+ "beŋɔŋlɔkatakanagbeŋɔŋlɔkhmergbeŋɔŋlɔkannadagbeŋɔŋlɔKoreagbeŋɔŋlɔlaog" +
+ "beŋɔŋlɔLatingbeŋɔŋlɔmalayagbeŋɔŋlɔmongoliagbeŋɔŋlɔmyanmargbeŋɔŋlɔori" +
+ "yagbeŋɔŋlɔsinhalagbeŋɔŋlɔtamilgbeŋɔŋlɔtelegugbeŋɔŋlɔthaanagbeŋɔŋlɔta" +
+ "igbeŋɔŋlɔtibetgbeŋɔŋlɔŋɔŋlɔdzesiwogbemaŋlɔgbeŋɔŋlɔ bɔbɔgbeŋɔŋlɔ many" +
+ "a",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0038, 0x0038, 0x004b, 0x004b,
+ 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e,
+ 0x005e, 0x005e, 0x005e, 0x0072, 0x0072, 0x0088, 0x0088, 0x0088,
+ 0x0088, 0x0088, 0x0088, 0x0088, 0x009c, 0x009c, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00bf, 0x00d4, 0x00e8, 0x00fa, 0x0109, 0x0109,
+ 0x0119, 0x012e, 0x012e, 0x013f, 0x0153, 0x0153, 0x0153, 0x0153,
+ 0x0153, 0x0153, 0x0153, 0x0153, 0x0167, 0x0167, 0x0167, 0x017b,
+ // Entry 40 - 7F
+ 0x017b, 0x018c, 0x018c, 0x019f, 0x01b0, 0x01b0, 0x01b0, 0x01b0,
+ 0x01bf, 0x01bf, 0x01bf, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
+ 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
+ 0x01d0, 0x01d0, 0x01d0, 0x01e2, 0x01e2, 0x01f6, 0x01f6, 0x01f6,
+ 0x01f6, 0x01f6, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209,
+ 0x0209, 0x0209, 0x0209, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a,
+ 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a,
+ 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a,
+ // Entry 80 - BF
+ 0x021a, 0x021a, 0x021a, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d,
+ 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x023e,
+ 0x023e, 0x023e, 0x0250, 0x0250, 0x0250, 0x0250, 0x0262, 0x0271,
+ 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282,
+ 0x0282, 0x0282, 0x0282, 0x0282, 0x0292, 0x029c, 0x02af, 0x02c1,
+ },
+ },
+ { // el
+ elScriptStr,
+ elScriptIdx,
+ },
+ { // en
+ enScriptStr,
+ enScriptIdx,
+ },
+ {}, // en-AU
+ { // en-GB
+ enGBScriptStr,
+ enGBScriptIdx,
+ },
+ {}, // eo
+ { // es
+ esScriptStr,
+ esScriptIdx,
+ },
+ { // es-419
+ es419ScriptStr,
+ es419ScriptIdx,
+ },
+ {}, // es-CL
+ { // es-MX
+ "telugú",
+ []uint16{ // 147 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0007,
+ },
+ },
+ { // et
+ etScriptStr,
+ etScriptIdx,
+ },
+ { // eu
+ "arabiarraarmeniarrabengaliarrabopomofoabrailleazirilikoadevanagariaetiop" +
+ "iarrageorgiarragreziarragujarateragurmukhiahangulaidazkera txinatarr" +
+ "aidazkera txinatar sinplifikatuaidazkera txinatar tradizionalahebree" +
+ "rahiraganajaponiarrakatakanakhemerarrakanadarrakorearralaosarralatin" +
+ "amalayalameramongoliarrabirmaniarraoriyarrasinhalatamilarrateluguarr" +
+ "athaanathailandiarratibetarraikurrakidatzi gabeaohikoaidazkera ezeza" +
+ "guna",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, 0x0013,
+ 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x001e, 0x0027, 0x0027,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0043, 0x0043, 0x0043,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x004d, 0x004d, 0x0057, 0x0057,
+ 0x0057, 0x0057, 0x0060, 0x006a, 0x0073, 0x007a, 0x008d, 0x008d,
+ 0x00ac, 0x00ca, 0x00ca, 0x00d2, 0x00da, 0x00da, 0x00da, 0x00da,
+ 0x00da, 0x00da, 0x00da, 0x00da, 0x00e4, 0x00e4, 0x00e4, 0x00ec,
+ // Entry 40 - 7F
+ 0x00ec, 0x00f6, 0x00f6, 0x00ff, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x010f, 0x010f, 0x010f, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
+ 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115,
+ 0x0115, 0x0115, 0x0115, 0x0121, 0x0121, 0x012c, 0x012c, 0x012c,
+ 0x012c, 0x012c, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137,
+ 0x0137, 0x0137, 0x0137, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f,
+ // Entry 80 - BF
+ 0x013f, 0x013f, 0x013f, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146,
+ 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x0146, 0x014f,
+ 0x014f, 0x014f, 0x0159, 0x0159, 0x0159, 0x0159, 0x015f, 0x016c,
+ 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175, 0x0175,
+ 0x0175, 0x0175, 0x0175, 0x0175, 0x017c, 0x0188, 0x018e, 0x01a0,
+ },
+ },
+ {}, // ewo
+ { // fa
+ faScriptStr,
+ faScriptIdx,
+ },
+ { // fa-AF
+ "مغلی",
+ []uint16{ // 94 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008,
+ },
+ },
+ {}, // ff
+ { // fi
+ fiScriptStr,
+ fiScriptIdx,
+ },
+ { // fil
+ filScriptStr,
+ filScriptIdx,
+ },
+ { // fo
+ "arabiskarmensktbengalibopomofoblindaskriftkyrillisktdevanagarietiopisktg" +
+ "eorgiansktgriksktgujaratigurmukhihangulhaneinkult hanvanligt hanhebr" +
+ "aiskthiraganajapansktkatakanakhmerkannadakoreansktlaolatínsktmalayal" +
+ "ammongolskmyanmarsktoriyasinhalatamilsktteluguthaanatailendskttibets" +
+ "kttekinóskrivavanligókend skrift",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x0016, 0x001e, 0x001e,
+ 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+ 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x0047, 0x0047, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x0059, 0x0061, 0x0069, 0x006f, 0x0072, 0x0072,
+ 0x007d, 0x0088, 0x0088, 0x0091, 0x0099, 0x0099, 0x0099, 0x0099,
+ 0x0099, 0x0099, 0x0099, 0x0099, 0x00a1, 0x00a1, 0x00a1, 0x00a9,
+ // Entry 40 - 7F
+ 0x00a9, 0x00ae, 0x00ae, 0x00b5, 0x00be, 0x00be, 0x00be, 0x00be,
+ 0x00c1, 0x00c1, 0x00c1, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
+ 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca,
+ 0x00ca, 0x00ca, 0x00ca, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00db,
+ 0x00db, 0x00db, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5,
+ 0x00e5, 0x00e5, 0x00e5, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ // Entry 80 - BF
+ 0x00ea, 0x00ea, 0x00ea, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1,
+ 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f9,
+ 0x00f9, 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0105, 0x010f,
+ 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117,
+ 0x0117, 0x0117, 0x0117, 0x0117, 0x011c, 0x0124, 0x012a, 0x0137,
+ },
+ },
+ { // fr
+ frScriptStr,
+ frScriptIdx,
+ },
+ { // fr-CA
+ frCAScriptStr,
+ frCAScriptIdx,
+ },
+ {}, // fr-CH
+ { // fur
+ "araparmenbalinêsbengalêsBraillebuginêsSilabari unificât aborigjens canad" +
+ "êscoptcipriotciriliccirilic dal vieri slavonic de glesiedevanagarid" +
+ "emotic egjizianjeratic egjizianjeroglifics egjiziansetiopicgeorgjian" +
+ "glagoliticgoticgrêcgujaratihanHan semplificâtHan tradizionâlebreukat" +
+ "akana o hiraganavieri ongjarêsvieri italicgjavanêsgjaponêskhmerkanna" +
+ "dacoreanlaolatin Frakturlatin gaeliclatinlineâr Alineâr Bjeroglifics" +
+ " Mayamalayalammongulmyanmaroriyarunicsinhalasiriacsiriac Estrangelos" +
+ "iriac ocidentâlsiriac orientâltamiltelegutagalogthaanathaitibetanuga" +
+ "riticvieri persiancuneiform sumeric-acadiccodiç pes lenghis no scrit" +
+ "iscomuncodiç par scrituris no codificadis",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, 0x0009,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x001a, 0x001a,
+ 0x0021, 0x0029, 0x0029, 0x0029, 0x004f, 0x004f, 0x004f, 0x004f,
+ 0x004f, 0x0053, 0x005a, 0x0061, 0x0085, 0x008f, 0x008f, 0x008f,
+ 0x009f, 0x00af, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00d4, 0x00de,
+ 0x00e3, 0x00e3, 0x00e8, 0x00f0, 0x00f0, 0x00f0, 0x00f3, 0x00f3,
+ 0x0103, 0x0113, 0x0113, 0x0118, 0x0118, 0x0118, 0x0118, 0x012b,
+ 0x013a, 0x013a, 0x0146, 0x014f, 0x0158, 0x0158, 0x0158, 0x0158,
+ // Entry 40 - 7F
+ 0x0158, 0x015d, 0x015d, 0x0164, 0x016a, 0x016a, 0x016a, 0x016a,
+ 0x016d, 0x017a, 0x0186, 0x018b, 0x018b, 0x018b, 0x0194, 0x019d,
+ 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x01ad,
+ 0x01ad, 0x01ad, 0x01ad, 0x01b6, 0x01b6, 0x01bc, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3,
+ 0x01c3, 0x01c3, 0x01c3, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8,
+ 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8,
+ 0x01c8, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd,
+ // Entry 80 - BF
+ 0x01cd, 0x01cd, 0x01cd, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01da,
+ 0x01eb, 0x01fc, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x0211,
+ 0x0211, 0x0211, 0x0217, 0x0217, 0x0217, 0x021e, 0x0224, 0x0228,
+ 0x022f, 0x022f, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x0244,
+ 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x0279, 0x027e, 0x02a1,
+ },
+ },
+ { // fy
+ "DefakaArabyskKeizerlijk ArameesArmeensAvestaanskBalineeskBamounBassa Vah" +
+ "BatakBengaleesBlissymbolenBopomofoBrahmiBrailleBugineeskBuhidChakmaV" +
+ "erenigde Canadese Aboriginal-symbolenKaryskChamCherokeeCirthKoptyskS" +
+ "ypryskSyrillyskAldkerkslavysk SyrillyskDevanagariDeseretDuployan sne" +
+ "lschriftEgyptysk demotyskEgyptysk hiëratyskEgyptyske hiërogliefenEth" +
+ "iopyskGeorgysk KhutsuriGeorgyskGlagolityskGothyskGranthaGrieksGujara" +
+ "tiGurmukhiHangulHanHanunooFerienfâldigd SineeskTraditjoneel SineeskH" +
+ "ebreeuwskHiraganaAnatolyske hiërogliefenPahawh HmongKatakana of Hira" +
+ "ganaAldhongaarsIndusAld-italyskJavaanskJapansJurchenKayah LiKatakana" +
+ "KharoshthiKhmerKhojkiKannadaKoreaanskKpelleKaithiLannaLaoGotysk Laty" +
+ "nGaelysk LatynLatynLepchaLimbuLineair ALineair BFraserLomaLycyskLydy" +
+ "skMandaeansManicheaanskMayahiërogliefenMendeMeroitysk cursiefMeroïty" +
+ "skMalayalamMongoolsMoonMroMeiteiMyanmarAld Noard-ArabyskNabateaanskN" +
+ "axi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsmanyaPalmyreensAldpermyskP" +
+ "hags-paInscriptioneel PahlaviPsalmen PahlaviBoek PahlaviFoenicyskPol" +
+ "lard-fonetyskInscriptioneel ParthyskRejangRongorongoRunicSamaritaans" +
+ "kSaratiAld Sûd-ArabyskSaurashtraSignWritingShavianSharadaSindhiSinha" +
+ "laSora SompengSoendaneeskSyloti NagriSyriacEstrangelo ArameeskWest-A" +
+ "rameeskEast-ArameeskTagbanwaTakriTai LeNij Tai LueTamilTangutTai Vie" +
+ "tTeluguTengwarTifinaghTagalogThaanaThaisTibetaanskTirhutaUgarityskVa" +
+ "iSichtbere spraakVarang KshitiWoleaiAldperzyskSumero-Akkadian Cuneif" +
+ "ormYiOergeërfdWiskundige notatieSymbolenOngeschrevenAlgemeenOnbekend" +
+ " schriftsysteem",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0006, 0x0006, 0x0006, 0x000d, 0x001f, 0x0026, 0x0030,
+ 0x0039, 0x003f, 0x0048, 0x004d, 0x0056, 0x0062, 0x006a, 0x0070,
+ 0x0077, 0x0080, 0x0085, 0x008b, 0x00b1, 0x00b7, 0x00bb, 0x00c3,
+ 0x00c8, 0x00cf, 0x00d6, 0x00df, 0x00f7, 0x0101, 0x0108, 0x011c,
+ 0x012d, 0x0140, 0x0157, 0x0157, 0x0160, 0x0171, 0x0179, 0x0184,
+ 0x018b, 0x0192, 0x0198, 0x01a0, 0x01a8, 0x01ae, 0x01b1, 0x01b8,
+ 0x01ce, 0x01e2, 0x01e2, 0x01ec, 0x01f4, 0x020c, 0x0218, 0x022c,
+ 0x0237, 0x023c, 0x0247, 0x024f, 0x0255, 0x025c, 0x0264, 0x026c,
+ // Entry 40 - 7F
+ 0x0276, 0x027b, 0x0281, 0x0288, 0x0291, 0x0297, 0x029d, 0x02a2,
+ 0x02a5, 0x02b1, 0x02be, 0x02c3, 0x02c9, 0x02ce, 0x02d7, 0x02e0,
+ 0x02e6, 0x02ea, 0x02f0, 0x02f6, 0x02f6, 0x02ff, 0x030b, 0x031c,
+ 0x0321, 0x0332, 0x033c, 0x0345, 0x0345, 0x034d, 0x0351, 0x0354,
+ 0x035a, 0x035a, 0x0361, 0x0372, 0x037d, 0x0386, 0x038c, 0x0392,
+ 0x0397, 0x039f, 0x03a5, 0x03a9, 0x03b0, 0x03ba, 0x03ba, 0x03c4,
+ 0x03cc, 0x03e2, 0x03f1, 0x03fd, 0x0406, 0x0416, 0x042d, 0x0433,
+ 0x043d, 0x0442, 0x044e, 0x0454, 0x0464, 0x046e, 0x0479, 0x0480,
+ // Entry 80 - BF
+ 0x0487, 0x0487, 0x048d, 0x0494, 0x04a0, 0x04ab, 0x04b7, 0x04bd,
+ 0x04d0, 0x04dd, 0x04ea, 0x04f2, 0x04f7, 0x04fd, 0x0508, 0x050d,
+ 0x0513, 0x051b, 0x0521, 0x0528, 0x0530, 0x0537, 0x053d, 0x0542,
+ 0x054c, 0x0553, 0x055c, 0x055f, 0x056f, 0x057c, 0x0582, 0x058c,
+ 0x05a5, 0x05a7, 0x05b1, 0x05c3, 0x05cb, 0x05d7, 0x05df, 0x05f6,
+ },
+ },
+ { // ga
+ "ArabachAirméanachAivéisteachBailíochBatacachBeangálachBopomofoBrailleBui" +
+ "gineachButhaideachSeiricíochCoptachCipireachCoireallachDéiveanágrach" +
+ "Éigipteach coiteannÉigipteach cliarúilIairiglifí ÉigipteachaAetópac" +
+ "hSeoirseachGlagalachGotachGréagachGúisearátachGurmúcachHangalachHanH" +
+ "an SimplitheHan TraidisiúntaEabhrachHireagánachIairiglifí Anatólacha" +
+ "Siollabraí SeapánachaSean-UngárachSean-IodáilicIávachSeapánachCatacá" +
+ "nachCiméarachCannadachCóiréachLaosachCló GaelachLaidineachLiombúchLí" +
+ "neach ALíneach BFraserLiciachLidiachMahasánachMainicéasachIairiglifí" +
+ " MáigheachaMeindeachMailéalamachMongólachMaenmarachOghamOiríseachSea" +
+ "n-PheirmeachFéiníceachRúnachSamárachShawachSiolónachSiriceachTamalac" +
+ "hTeileagúchTifinaghTagálagachTánachTéalannachTibéadachSean-Pheirseac" +
+ "hDingchruthach Suiméar-AcádachNodaireacht MhatamaiticiúilSiombailíGa" +
+ "n ScríobhCoitiantaScript Anaithnid",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0012, 0x001e,
+ 0x0027, 0x0027, 0x0027, 0x002f, 0x003a, 0x003a, 0x0042, 0x0042,
+ 0x0049, 0x0053, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0069,
+ 0x0069, 0x0070, 0x0079, 0x0084, 0x0084, 0x0093, 0x0093, 0x0093,
+ 0x00a7, 0x00bc, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00e7, 0x00f0,
+ 0x00f6, 0x00f6, 0x00ff, 0x010d, 0x0117, 0x0120, 0x0123, 0x0123,
+ 0x0130, 0x0141, 0x0141, 0x0149, 0x0155, 0x016c, 0x016c, 0x0183,
+ 0x0191, 0x0191, 0x019f, 0x01a6, 0x01b0, 0x01b0, 0x01b0, 0x01bb,
+ // Entry 40 - 7F
+ 0x01bb, 0x01c5, 0x01c5, 0x01ce, 0x01d8, 0x01d8, 0x01d8, 0x01d8,
+ 0x01df, 0x01df, 0x01eb, 0x01f5, 0x01f5, 0x01fe, 0x0208, 0x0212,
+ 0x0218, 0x0218, 0x021f, 0x0226, 0x0231, 0x0231, 0x023e, 0x0255,
+ 0x025e, 0x025e, 0x025e, 0x026b, 0x026b, 0x0275, 0x0275, 0x0275,
+ 0x0275, 0x0275, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f,
+ 0x0284, 0x0284, 0x0284, 0x028e, 0x028e, 0x028e, 0x028e, 0x029d,
+ 0x029d, 0x029d, 0x029d, 0x029d, 0x02a9, 0x02a9, 0x02a9, 0x02a9,
+ 0x02a9, 0x02b0, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02c0,
+ // Entry 80 - BF
+ 0x02c0, 0x02c0, 0x02c0, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02d3,
+ 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02db,
+ 0x02db, 0x02db, 0x02e6, 0x02e6, 0x02ee, 0x02f9, 0x0300, 0x030b,
+ 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0315, 0x0324,
+ 0x0343, 0x0343, 0x0343, 0x035f, 0x0369, 0x0375, 0x037e, 0x038e,
+ },
+ },
+ { // gd
+ "AfakaAlbàinis ChabhcasachAhomArabaisAramais impireilAirmeinisAvestanaisB" +
+ "aliBamumBassa VahBatakBeangailisComharran BlissBopomofoBrahmiBraille" +
+ "BuhidChakmaSgrìobhadh Lideach Aonaichte nan Tùsanach CanadachChamChe" +
+ "rokeeCirthCoptaisCìoprasaisCirilisCirilis Seann-Slàbhais na h-Eaglai" +
+ "seDevanagariDeseretSealbh-sgrìobhadh ÈipheiteachGe’ezCairtbheilisGot" +
+ "aisGranthaGreugaisGujaratiGurmukhiHangulHanHanunooHan simplichteHan " +
+ "tradaiseantaEabhraHiraganaDealbh-sgrìobhadh AnatolachPahawh HmongKat" +
+ "akana no HiraganaSeann-UngaraisSeann-EadailtisDeàbhanaisSeapanaisJur" +
+ "chenKayah LiKatakanaKharoshthiCmèarKhojkiKannadaCoirèanaisKpelleKait" +
+ "hiLannaLàthoLaideann frakturLaideann GhàidhealachLaideannLepchaLimbu" +
+ "Linear ALinear BLomaMahajaniDealbh-sgrìobhadh MayachMendeMalayalamMo" +
+ "diMongolaisMroMeitei MayekMultaniMiànmarSeann-Arabach ThuathachNaxi " +
+ "GebaN’koNüshuOgham-chraobhOl ChikiOrkhonOriyaOsmanyaPau Cin HauPhags" +
+ "-paPartais snaidh-sgrìobhteRejangRongorongoRùn-sgrìobhadhSaratiSeann" +
+ "-Arabais DheasachSaurashtraSharadaSiddhamKhudawadiSinhalaSora Sompen" +
+ "gSundaSyloti NagriSuraidheacSuraidheac SiarachSuraidheac EarachTagba" +
+ "nwaTakriTai LeTai Lue ÙrTaimilTangutTai VietTeluguTengwarTifinaghTag" +
+ "alogThaanaTàidhTibeitisTirhutaVaiVarang KshitiWoleaiSeann-PheirsisYi" +
+ "Gnìomhairean matamataigSamhlaidheanGun sgrìobhadhCoitcheannLitreadh " +
+ "neo-aithnichte",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x001a, 0x001e, 0x0025, 0x0035, 0x003e, 0x0048,
+ 0x004c, 0x0051, 0x005a, 0x005f, 0x0069, 0x0078, 0x0080, 0x0086,
+ 0x008d, 0x008d, 0x0092, 0x0098, 0x00cc, 0x00cc, 0x00d0, 0x00d8,
+ 0x00dd, 0x00e4, 0x00ef, 0x00f6, 0x011b, 0x0125, 0x012c, 0x012c,
+ 0x012c, 0x012c, 0x014b, 0x014b, 0x0152, 0x0152, 0x015e, 0x015e,
+ 0x0164, 0x016b, 0x0173, 0x017b, 0x0183, 0x0189, 0x018c, 0x0193,
+ 0x01a1, 0x01b1, 0x01b1, 0x01b7, 0x01bf, 0x01db, 0x01e7, 0x01fb,
+ 0x0209, 0x0209, 0x0218, 0x0223, 0x022c, 0x0233, 0x023b, 0x0243,
+ // Entry 40 - 7F
+ 0x024d, 0x0253, 0x0259, 0x0260, 0x026b, 0x0271, 0x0277, 0x027c,
+ 0x0282, 0x0292, 0x02a8, 0x02b0, 0x02b6, 0x02bb, 0x02c3, 0x02cb,
+ 0x02cb, 0x02cf, 0x02cf, 0x02cf, 0x02d7, 0x02d7, 0x02d7, 0x02f0,
+ 0x02f5, 0x02f5, 0x02f5, 0x02fe, 0x0302, 0x030b, 0x030b, 0x030e,
+ 0x031a, 0x0321, 0x0329, 0x0340, 0x0340, 0x0349, 0x034f, 0x0355,
+ 0x0362, 0x036a, 0x0370, 0x0375, 0x037c, 0x037c, 0x0387, 0x0387,
+ 0x038f, 0x038f, 0x038f, 0x038f, 0x038f, 0x038f, 0x03a8, 0x03ae,
+ 0x03b8, 0x03c8, 0x03c8, 0x03ce, 0x03e4, 0x03ee, 0x03ee, 0x03ee,
+ // Entry 80 - BF
+ 0x03f5, 0x03fc, 0x0405, 0x040c, 0x0418, 0x041d, 0x0429, 0x0433,
+ 0x0433, 0x0445, 0x0456, 0x045e, 0x0463, 0x0469, 0x0474, 0x047a,
+ 0x0480, 0x0488, 0x048e, 0x0495, 0x049d, 0x04a4, 0x04aa, 0x04b0,
+ 0x04b8, 0x04bf, 0x04bf, 0x04c2, 0x04c2, 0x04cf, 0x04d5, 0x04e3,
+ 0x04e3, 0x04e5, 0x04e5, 0x04fd, 0x0509, 0x0518, 0x0522, 0x0539,
+ },
+ },
+ { // gl
+ "ÁrabeArmenioBengalíBopomofoBrailleSilabario aborixe canadiano unificadoC" +
+ "irílicoDevanagariEtíopeXeorxianoGregoguxaratíGurmukhiHangulHanHan si" +
+ "mplificadoHan tradicionalHebreoHiraganaXaponésKatakanaCamboxanocanar" +
+ "ésCoreanoLaosianoLatinoMalabarMongolBirmaniaOriyaCingalésTámilTelug" +
+ "úThaanaTailandésTibetanoSímbolosNon escritaComúnEscritura descoñeci" +
+ "da",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x0015, 0x0015, 0x001d, 0x001d,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0049, 0x0049, 0x0049, 0x0049,
+ 0x0049, 0x0049, 0x0049, 0x0052, 0x0052, 0x005c, 0x005c, 0x005c,
+ 0x005c, 0x005c, 0x005c, 0x005c, 0x0063, 0x0063, 0x006c, 0x006c,
+ 0x006c, 0x006c, 0x0071, 0x007a, 0x0082, 0x0088, 0x008b, 0x008b,
+ 0x009b, 0x00aa, 0x00aa, 0x00b0, 0x00b8, 0x00b8, 0x00b8, 0x00b8,
+ 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c0, 0x00c0, 0x00c0, 0x00c8,
+ // Entry 40 - 7F
+ 0x00c8, 0x00d1, 0x00d1, 0x00d9, 0x00e0, 0x00e0, 0x00e0, 0x00e0,
+ 0x00e8, 0x00e8, 0x00e8, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee,
+ 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee,
+ 0x00ee, 0x00ee, 0x00ee, 0x00f5, 0x00f5, 0x00fb, 0x00fb, 0x00fb,
+ 0x00fb, 0x00fb, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
+ 0x0103, 0x0103, 0x0103, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108,
+ 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108,
+ 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108,
+ // Entry 80 - BF
+ 0x0108, 0x0108, 0x0108, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111,
+ 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0117,
+ 0x0117, 0x0117, 0x011e, 0x011e, 0x011e, 0x011e, 0x0124, 0x012e,
+ 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136,
+ 0x0136, 0x0136, 0x0136, 0x0136, 0x013f, 0x014a, 0x0150, 0x0166,
+ },
+ },
+ { // gsw
+ "ArabischArmiArmenischAveschtischBalinesischBattakischBengalischBliss-Sym" +
+ "boolBopomofoBrahmiBlindäschriftBuginesischBuhidUCASKarischChamCherok" +
+ "eeCirthKoptischZypriotischKyrillischAltchileslawischTövanagaariTeser" +
+ "etTemozisch-ÄgüptischHiraazisch-ÄgüptischÄgüptischi HiroglüüfeÄzioop" +
+ "ischGhutsuriGeorgischGlagolitischGotischGriechischGuscharatiGurmukhi" +
+ "HangulChineesischHanunooVeräifachti Chineesischi SchriftTradizionell" +
+ "i Chineesischi SchriftHebräischHiraganaPahawh HmongKatakana oder Hir" +
+ "aganaAltungarischIndus-SchriftAltitalischJavanesischJapanischKayah L" +
+ "iKatakanaKharoshthiKhmerKannadaKoreanischLannaLaotischLatiinisch - F" +
+ "raktur-VarianteLatiinisch - Gäälischi VarianteLatiinischLepchaLimbuL" +
+ "inear ALinear BLykischLydischMandäischManichäischMaya-HieroglyphäMer" +
+ "oitischMalaysischMongolischMoonMeitei MayekBurmesischN’KoOghamOl Chi" +
+ "kiOrchon-RunäOriyaOsmanischAltpermischPhags-paPahlaviPhönizischPolla" +
+ "rd PhonetischRejangRongorongoRunäschriftSamaritanischSaratiSaurashtr" +
+ "aGebäärdeschpraachShaw-AlphabetSinghalesischSundanesischSyloti Nagri" +
+ "SyrischSyrisch - Eschtrangelo-VarianteWeschtsyrischOschtsyrischTagba" +
+ "nwaTai LeTai LueTamilischTeluguTengwarTifinaghTagalogThaanaThaiTibee" +
+ "tischUgaritischVaiSichtbari SchpraachAltpersischSumerisch-akkadischi" +
+ " KeilschriftYiG’eerbtä SchriftwärtSchriftlosi SchpraachUnbeschtimmtU" +
+ "ncodiirti Schrift",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, 0x0020,
+ 0x002b, 0x002b, 0x002b, 0x0035, 0x003f, 0x004c, 0x0054, 0x005a,
+ 0x0068, 0x0073, 0x0078, 0x0078, 0x007c, 0x0083, 0x0087, 0x008f,
+ 0x0094, 0x009c, 0x00a7, 0x00b1, 0x00c1, 0x00cd, 0x00d4, 0x00d4,
+ 0x00e9, 0x00ff, 0x0118, 0x0118, 0x0123, 0x012b, 0x0134, 0x0140,
+ 0x0147, 0x0147, 0x0151, 0x015b, 0x0163, 0x0169, 0x0174, 0x017b,
+ 0x019c, 0x01be, 0x01be, 0x01c8, 0x01d0, 0x01d0, 0x01dc, 0x01f2,
+ 0x01fe, 0x020b, 0x0216, 0x0221, 0x022a, 0x022a, 0x0232, 0x023a,
+ // Entry 40 - 7F
+ 0x0244, 0x0249, 0x0249, 0x0250, 0x025a, 0x025a, 0x025a, 0x025f,
+ 0x0267, 0x0284, 0x02a5, 0x02af, 0x02b5, 0x02ba, 0x02c2, 0x02ca,
+ 0x02ca, 0x02ca, 0x02d1, 0x02d8, 0x02d8, 0x02e2, 0x02ee, 0x02ff,
+ 0x02ff, 0x02ff, 0x0309, 0x0313, 0x0313, 0x031d, 0x0321, 0x0321,
+ 0x032d, 0x032d, 0x0337, 0x0337, 0x0337, 0x0337, 0x033d, 0x033d,
+ 0x0342, 0x034a, 0x0356, 0x035b, 0x0364, 0x0364, 0x0364, 0x036f,
+ 0x0377, 0x0377, 0x0377, 0x037e, 0x0389, 0x039b, 0x039b, 0x03a1,
+ 0x03ab, 0x03b7, 0x03c4, 0x03ca, 0x03ca, 0x03d4, 0x03e7, 0x03f4,
+ // Entry 80 - BF
+ 0x03f4, 0x03f4, 0x03f4, 0x0401, 0x0401, 0x040d, 0x0419, 0x0420,
+ 0x043f, 0x044c, 0x0458, 0x0460, 0x0460, 0x0466, 0x046d, 0x0476,
+ 0x0476, 0x0476, 0x047c, 0x0483, 0x048b, 0x0492, 0x0498, 0x049c,
+ 0x04a6, 0x04a6, 0x04b0, 0x04b3, 0x04c6, 0x04c6, 0x04c6, 0x04d1,
+ 0x04f1, 0x04f3, 0x050b, 0x050b, 0x050b, 0x0520, 0x052c, 0x053e,
+ },
+ },
+ { // gu
+ guScriptStr,
+ guScriptIdx,
+ },
+ {}, // guz
+ {}, // gv
+ {}, // ha
+ {}, // haw
+ { // he
+ heScriptStr,
+ heScriptIdx,
+ },
+ { // hi
+ hiScriptStr,
+ hiScriptIdx,
+ },
+ { // hr
+ hrScriptStr,
+ hrScriptIdx,
+ },
+ { // hsb
+ "arabscearmenscebengalscebopomofoBraillowe pismokyriliscedevanagarietiopi" +
+ "scegeorgiscegrjekscegujaratigurmukhihangulchinscezjednorjene chinske" +
+ " pismotradicionalne chinske pismohebrejscehiraganajapanscekatakanakh" +
+ "merscekannadscekorejscelaoscełaćonscemalayalamscemongolsceburmasceor" +
+ "iyasinghalscetamilsceteluguthaanathailandscetibetscesymbolebjez pism" +
+ "apowšitkownenjeznate pismo",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0020, 0x0020,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0042, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x004b, 0x004b, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x005c, 0x0064, 0x006c, 0x0072, 0x0079, 0x0079,
+ 0x0092, 0x00ad, 0x00ad, 0x00b6, 0x00be, 0x00be, 0x00be, 0x00be,
+ 0x00be, 0x00be, 0x00be, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00ce,
+ // Entry 40 - 7F
+ 0x00ce, 0x00d6, 0x00d6, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
+ 0x00ed, 0x00ed, 0x00ed, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
+ 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
+ 0x00f7, 0x00f7, 0x00f7, 0x0103, 0x0103, 0x010c, 0x010c, 0x010c,
+ 0x010c, 0x010c, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114,
+ 0x0114, 0x0114, 0x0114, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119,
+ // Entry 80 - BF
+ 0x0119, 0x0119, 0x0119, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123,
+ 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x012b,
+ 0x012b, 0x012b, 0x0131, 0x0131, 0x0131, 0x0131, 0x0137, 0x0142,
+ 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a,
+ 0x014a, 0x014a, 0x014a, 0x014a, 0x0151, 0x015b, 0x0167, 0x0175,
+ },
+ },
+ { // hu
+ huScriptStr,
+ huScriptIdx,
+ },
+ { // hy
+ hyScriptStr,
+ hyScriptIdx,
+ },
+ { // id
+ idScriptStr,
+ idScriptIdx,
+ },
+ {}, // ig
+ { // ii
+ "ꀊꇁꀨꁱꂷꀊꆨꌦꇁꃚꁱꂷꈝꐯꉌꈲꁱꂷꀎꋏꉌꈲꁱꂷꇁꄀꁱꂷꆈꌠꁱꂷꁱꀋꉆꌠꅉꀋꐚꌠꁱꂷ",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
+ 0x0036, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
+ 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
+ // Entry 40 - 7F
+ 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
+ 0x0048, 0x0048, 0x0048, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ // Entry 80 - BF
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
+ 0x0054, 0x0060, 0x0060, 0x0060, 0x0060, 0x006c, 0x006c, 0x007e,
+ },
+ },
+ { // is
+ isScriptStr,
+ isScriptIdx,
+ },
+ { // it
+ itScriptStr,
+ itScriptIdx,
+ },
+ { // ja
+ jaScriptStr,
+ jaScriptIdx,
+ },
+ { // jgo
+ "mík -ŋwaꞌnɛ yi ɛ́ líŋɛ́nɛ Latɛ̂ŋntúu yi pɛ́ ká ŋwaꞌnεntɛ-ŋwaꞌnɛ yí pɛ́ k" +
+ "á kɛ́ jí",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ // Entry 80 - BF
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f,
+ 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x004c, 0x004c, 0x0073,
+ },
+ },
+ {}, // jmc
+ { // ka
+ kaScriptStr,
+ kaScriptIdx,
+ },
+ {}, // kab
+ {}, // kam
+ {}, // kde
+ { // kea
+ "arábikuarméniubengalibopomofobraillesirílikudevanagarietiópikujorjianugr" +
+ "egugujaratigurmukiangulhanhan simplifikaduhan tradisionalebraikuirag" +
+ "anajaponeskatakanakmerkanareskorianulausianulatinumalaialammongolbir" +
+ "manesoriyasingalestamiltelugutaanatailandestibetanusimbulusnãu skrit" +
+ "ukomunskrita diskonxedu",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0017, 0x0017, 0x001f, 0x001f,
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
+ 0x0026, 0x0026, 0x0026, 0x002f, 0x002f, 0x0039, 0x0039, 0x0039,
+ 0x0039, 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x004a, 0x004a,
+ 0x004a, 0x004a, 0x004f, 0x0057, 0x005e, 0x0063, 0x0066, 0x0066,
+ 0x0076, 0x0085, 0x0085, 0x008c, 0x0093, 0x0093, 0x0093, 0x0093,
+ 0x0093, 0x0093, 0x0093, 0x0093, 0x009a, 0x009a, 0x009a, 0x00a2,
+ // Entry 40 - 7F
+ 0x00a2, 0x00a6, 0x00a6, 0x00ad, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00bc, 0x00bc, 0x00bc, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
+ 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2,
+ 0x00c2, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d1,
+ 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ // Entry 80 - BF
+ 0x00de, 0x00de, 0x00de, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6,
+ 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00eb,
+ 0x00eb, 0x00eb, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f6, 0x00ff,
+ 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,
+ 0x0107, 0x0107, 0x0107, 0x0107, 0x010f, 0x011a, 0x011f, 0x0130,
+ },
+ },
+ {}, // khq
+ {}, // ki
+ { // kk
+ kkScriptStr,
+ kkScriptIdx,
+ },
+ {}, // kkj
+ {}, // kl
+ {}, // kln
+ { // km
+ kmScriptStr,
+ kmScriptIdx,
+ },
+ { // kn
+ knScriptStr,
+ knScriptIdx,
+ },
+ { // ko
+ koScriptStr,
+ koScriptIdx,
+ },
+ {}, // kok
+ { // ks
+ "اَربیاَرمانیَناَویستَنبالَنیٖزباتَکبیٚنگٲلۍبِلِس سِمبلزبوپوموفوبرٛاہمیبر" +
+ "یلبُگِنیٖزبُہِدیُنِفایِڑ کنیڑِیَن ایٚب آرجِنَل سِلیبِککاریَنچَمچیٚر" +
+ "وکیکِرتھکاپٹِککِپرایِٹسَیرِلِکپرون چٔرچسلیوونِک سَیرِلِکدیوناگریڈیٚ" +
+ "سٔریٚٹاِجپشِیَن ڈِماٹِکاِجِپشَن ہَیریٹِکاِجِپشَن ہَیروگلِپھساِتھیوپ" +
+ "ِکجارجِیَن کھتسوریجارجِیَنگلیگولِٹِکگوتھِکگرَنتھاگریٖکگُجرٲتۍہانٛگُ" +
+ "لہانہانُنوٗسِمپلِفایِڑ ہانٹریڑِشَنَلہِبرِوہیٖراگاناپَہاو مانٛگکَٹاک" +
+ "انا یا ہِراگاناپرون ہَنگیریَناِنڈَساولڈ اِٹیلِکجاوَنیٖزجیٚپَنیٖزکای" +
+ "ا لیکَتاکاناخَروشتھیکھٕمیرکَنَڑاکوریَنلانالاوفرٛکتُر لیٹِنگیلِک لیٹ" +
+ "َنلیٹِنلیٚپکالِمبوٗلیٖنیَر اےلیٖنیَر بیلیسِیَنلیدِیَنمَندییَنمانیشی" +
+ "یَنمایَن ہیٖروگلِپھمِرایٹِکمَلیالَممَنٛگولیَنموٗنمیتی مایَکمَیَنمار" +
+ "ایٚن کواوگہاماول چِکیاورکھوناورِیااوسمانیااولڈ پٔرمِکپھاگس پابوٗک پ" +
+ "َہَلویپھونِشِیَنپولاڑ پھونِٹِکریجَنٛگرونٛگو رونٛگورَنِکسَمارِٹَنسَر" +
+ "اتیسوراشٹرااِشارٲتی لِکھٲےشاویَنسِنہالاسَنڈَنیٖزسیلوتی ناگریسیٖرِیَ" +
+ "کایٚسٹرینجِلو سیٖرِیَکمغرِبی سیٖریَکمشرَقی سیٖریَکتَگبَنواتَیلیےنوٚ" +
+ "و تیلوتَمِلتیلگوٗتیٚنگوارتِفِناگتَگَلوگتھاناتھاےتِبتیاُگارِٹِکواےوِ" +
+ "زِبٕل سپیٖچپرون فارسیسُمیرو اکادیَن کوٗنِفامیٖیلیٚکھنَےعاماَن زٲنۍ " +
+ "یا نا لَگہٕ ہار رَسمُل خظ",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x001c, 0x002c,
+ 0x003c, 0x003c, 0x003c, 0x0046, 0x0056, 0x006d, 0x007d, 0x008b,
+ 0x0093, 0x00a3, 0x00ad, 0x00ad, 0x00f7, 0x0103, 0x0109, 0x0117,
+ 0x0121, 0x012d, 0x013d, 0x014d, 0x017f, 0x018f, 0x01a1, 0x01a1,
+ 0x01c2, 0x01e3, 0x020a, 0x020a, 0x021c, 0x023b, 0x024b, 0x025f,
+ 0x026b, 0x026b, 0x0279, 0x0283, 0x0291, 0x029f, 0x02a5, 0x02b3,
+ 0x02d0, 0x02e4, 0x02e4, 0x02f0, 0x0302, 0x0302, 0x0317, 0x033d,
+ 0x0358, 0x0364, 0x037b, 0x038b, 0x039d, 0x039d, 0x03aa, 0x03ba,
+ // Entry 40 - 7F
+ 0x03ca, 0x03d6, 0x03d6, 0x03e2, 0x03ee, 0x03ee, 0x03ee, 0x03f6,
+ 0x03fc, 0x0415, 0x042a, 0x0434, 0x0440, 0x044c, 0x045f, 0x0472,
+ 0x0472, 0x0472, 0x0480, 0x048e, 0x048e, 0x049e, 0x04b0, 0x04cf,
+ 0x04cf, 0x04cf, 0x04df, 0x04ef, 0x04ef, 0x0503, 0x050b, 0x050b,
+ 0x051e, 0x051e, 0x052e, 0x052e, 0x052e, 0x052e, 0x053b, 0x053b,
+ 0x0547, 0x0556, 0x0564, 0x0570, 0x0580, 0x0580, 0x0580, 0x0595,
+ 0x05a4, 0x05a4, 0x05a4, 0x05bb, 0x05cf, 0x05ea, 0x05ea, 0x05f8,
+ 0x0611, 0x061b, 0x062d, 0x0639, 0x0639, 0x0649, 0x0666, 0x0672,
+ // Entry 80 - BF
+ 0x0672, 0x0672, 0x0672, 0x0680, 0x0680, 0x0692, 0x06a9, 0x06b9,
+ 0x06e2, 0x06fd, 0x0718, 0x0728, 0x0728, 0x0734, 0x0745, 0x074f,
+ 0x074f, 0x074f, 0x075b, 0x076b, 0x0779, 0x0787, 0x0791, 0x0799,
+ 0x07a3, 0x07a3, 0x07b5, 0x07bb, 0x07d4, 0x07d4, 0x07d4, 0x07e7,
+ 0x0813, 0x0819, 0x0819, 0x0819, 0x0819, 0x0829, 0x082f, 0x086c,
+ },
+ },
+ {}, // ksb
+ {}, // ksf
+ { // ksh
+ "arraabesche Schreffarmeenesche Schreffbängjaalesche Schreffschineeseche " +
+ "Ömschreff BopomofoBlindeschreffkürrellesche Schreffindesche Devanaj" +
+ "ari-Schreffätejoopesche Schreffje’orrjesche Schreffjriischesche Schr" +
+ "effjujaraatesche Schreffindesche Gurmukhi-Schreffkorrejaanesche Schr" +
+ "effen schineesesche Schreffeijfacher schineesesche Schrefftradizjonä" +
+ "ll schineesesche Schreffhebrääjesche Schreffjapaanesche Hiddajaana-S" +
+ "chreffen japaanesche Schreffjapaanesche Kattakaana-SchreffKhmer-Schr" +
+ "effindesche Kannada-Schreffkorrejaanesche Schreff udder en schineese" +
+ "sche Schrefflahootesche Schrefflateinesche Schreffindesche Malajalam" +
+ "-Schreffmongjoolesche Schreffbirmaanesche Schreffindesche Orija-Schr" +
+ "effsingjaleesesche Schrefftamiilesche Schreffindesche Telugu-Schreff" +
+ "malledivesche Taana-Schrefftailändesche Schrefftibeetesche Schreff-Z" +
+ "eiche ävver kein Schreff--jaa keij Schreff--öhnß en Schreff--onbikan" +
+ "nte Schreff-",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0026, 0x0026,
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x003c, 0x003c, 0x005c, 0x005c,
+ 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
+ 0x0069, 0x0069, 0x0069, 0x007e, 0x007e, 0x0099, 0x0099, 0x0099,
+ 0x0099, 0x0099, 0x0099, 0x0099, 0x00ae, 0x00ae, 0x00c4, 0x00c4,
+ 0x00c4, 0x00c4, 0x00d8, 0x00ed, 0x0106, 0x011c, 0x0134, 0x0134,
+ 0x0153, 0x0176, 0x0176, 0x018c, 0x01aa, 0x01aa, 0x01aa, 0x01aa,
+ 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01c0, 0x01c0, 0x01c0, 0x01de,
+ // Entry 40 - 7F
+ 0x01de, 0x01eb, 0x01eb, 0x0203, 0x0238, 0x0238, 0x0238, 0x0238,
+ 0x024b, 0x024b, 0x024b, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e,
+ 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e,
+ 0x025e, 0x025e, 0x025e, 0x0278, 0x0278, 0x028d, 0x028d, 0x028d,
+ 0x028d, 0x028d, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1,
+ 0x02a1, 0x02a1, 0x02a1, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7,
+ 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7,
+ 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7,
+ // Entry 80 - BF
+ 0x02b7, 0x02b7, 0x02b7, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce,
+ 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02e1,
+ 0x02e1, 0x02e1, 0x02f8, 0x02f8, 0x02f8, 0x02f8, 0x0313, 0x0328,
+ 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b,
+ 0x033b, 0x033b, 0x033b, 0x033b, 0x0357, 0x0369, 0x037c, 0x0390,
+ },
+ },
+ {}, // kw
+ { // ky
+ kyScriptStr,
+ kyScriptIdx,
+ },
+ {}, // lag
+ { // lb
+ "ArabeschArmiArmeneschAvesteschBalineseschBattakeschBengaleschBliss-Symbo" +
+ "lerBopomofoBrahmiBlanneschrëftBugineseschBuhidUCASKareschChamCheroke" +
+ "eCirthKopteschZyprioteschKyrilleschAlkiercheslaweschDevanagariDesere" +
+ "tEgyptesch-DemoteschEgyptesch-HierateschEgyptesch HieroglyphenEthiop" +
+ "eschKhutsuriGeorgeschGlagoliteschGoteschGriicheschGujaratiGurmukhiHa" +
+ "ngulChineseschHanunooVereinfacht ChineseschTraditionellt ChineseschH" +
+ "ebräeschHiraganaPahawh HmongKatakana oder HiraganaAlungareschIndus-S" +
+ "chrëftAlitaleschJavaneseschJapaneschKayah LiKatakanaKharoshthiKhmerK" +
+ "annadaKoreaneschLannaLaoteschLaténgesch-Fraktur-VariantLaténgesch-Gä" +
+ "llesch VariantLaténgeschLepchaLimbuLinear ALinear BLykeschLydeschMan" +
+ "däeschManichäeschMaya-HieroglyphenMeroiteschMalayseschMongoleschMoon" +
+ "Meitei MayekBirmaneschN’KoOghamOl ChikiOrchon-RunenOriyaOsmaneschAlp" +
+ "ermeschPhags-paPahlaviPhönizeschPollard PhoneteschRejangRongorongoRu" +
+ "neschrëftSamaritaneschSaratiSaurashtraZeechesproochShaw-AlphabetSing" +
+ "haleseschSundaneseschSyloti NagriSyreschSyresch-Estrangelo-VariantWe" +
+ "stsyreschOstsyreschTai LeTai LueTamileschTeluguTengwarTifinaghDagalo" +
+ "gThaanaThaiTibeteschUgariteschVaiSiichtbar SproochAlperseschSumeresc" +
+ "h-akkadesch KeilschrëftYiGeierfte SchrëftwäertSymbolerOuni SchrëftOn" +
+ "bestëmmtOncodéiert Schrëft",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, 0x001e,
+ 0x0029, 0x0029, 0x0029, 0x0033, 0x003d, 0x004b, 0x0053, 0x0059,
+ 0x0067, 0x0072, 0x0077, 0x0077, 0x007b, 0x0082, 0x0086, 0x008e,
+ 0x0093, 0x009b, 0x00a6, 0x00b0, 0x00c1, 0x00cb, 0x00d2, 0x00d2,
+ 0x00e5, 0x00f9, 0x010f, 0x010f, 0x0119, 0x0121, 0x012a, 0x0136,
+ 0x013d, 0x013d, 0x0147, 0x014f, 0x0157, 0x015d, 0x0167, 0x016e,
+ 0x0184, 0x019c, 0x019c, 0x01a6, 0x01ae, 0x01ae, 0x01ba, 0x01d0,
+ 0x01db, 0x01e9, 0x01f3, 0x01fe, 0x0207, 0x0207, 0x020f, 0x0217,
+ // Entry 40 - 7F
+ 0x0221, 0x0226, 0x0226, 0x022d, 0x0237, 0x0237, 0x0237, 0x023c,
+ 0x0244, 0x025f, 0x027c, 0x0287, 0x028d, 0x0292, 0x029a, 0x02a2,
+ 0x02a2, 0x02a2, 0x02a9, 0x02b0, 0x02b0, 0x02ba, 0x02c6, 0x02d7,
+ 0x02d7, 0x02d7, 0x02e1, 0x02eb, 0x02eb, 0x02f5, 0x02f9, 0x02f9,
+ 0x0305, 0x0305, 0x030f, 0x030f, 0x030f, 0x030f, 0x0315, 0x0315,
+ 0x031a, 0x0322, 0x032e, 0x0333, 0x033c, 0x033c, 0x033c, 0x0346,
+ 0x034e, 0x034e, 0x034e, 0x0355, 0x0360, 0x0372, 0x0372, 0x0378,
+ 0x0382, 0x038e, 0x039b, 0x03a1, 0x03a1, 0x03ab, 0x03b8, 0x03c5,
+ // Entry 80 - BF
+ 0x03c5, 0x03c5, 0x03c5, 0x03d2, 0x03d2, 0x03de, 0x03ea, 0x03f1,
+ 0x040b, 0x0416, 0x0420, 0x0420, 0x0420, 0x0426, 0x042d, 0x0436,
+ 0x0436, 0x0436, 0x043c, 0x0443, 0x044b, 0x0452, 0x0458, 0x045c,
+ 0x0465, 0x0465, 0x046f, 0x0472, 0x0483, 0x0483, 0x0483, 0x048d,
+ 0x04ad, 0x04af, 0x04c6, 0x04c6, 0x04ce, 0x04db, 0x04e6, 0x04fa,
+ },
+ },
+ {}, // lg
+ {}, // lkt
+ {}, // ln
+ { // lo
+ loScriptStr,
+ loScriptIdx,
+ },
+ { // lrc
+ "عأرأڤیأرمأنیبأنگالیبوٙپوٙبئرئیلسیریلیکدیڤانگأریئتوٙیوٙپیاییگورجییوٙنانیگ" +
+ "وجأراتیگوٙروٙمخیھانگوٙلھانیبیتار سادە بیەسونأتی بیتارعئبریھیراگاناج" +
+ "اپوٙنیکاتانگاخئمئرکاناداکورئ ییلائولاتینمالایامموغولیمیانمارئوریاسی" +
+ "ناھالاتامیلتئلئگوتاناتایلأندیتأبأتینئشوٙنە یانیسئسە نأبیەجائوفتاأنی" +
+ "سئسە نادیار",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0018, 0x0018,
+ 0x0018, 0x0018, 0x0018, 0x0018, 0x0026, 0x0026, 0x0032, 0x0032,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x004c, 0x004c, 0x005e, 0x005e, 0x005e,
+ 0x005e, 0x005e, 0x005e, 0x005e, 0x0076, 0x0076, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x008e, 0x009e, 0x00b0, 0x00be, 0x00c6, 0x00c6,
+ 0x00e0, 0x00f7, 0x00f7, 0x0101, 0x0111, 0x0111, 0x0111, 0x0111,
+ 0x0111, 0x0111, 0x0111, 0x0111, 0x011f, 0x011f, 0x011f, 0x012d,
+ // Entry 40 - 7F
+ 0x012d, 0x0137, 0x0137, 0x0143, 0x0150, 0x0150, 0x0150, 0x0150,
+ 0x0158, 0x0158, 0x0158, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x0162, 0x0170, 0x0170, 0x017c, 0x017c, 0x017c,
+ 0x017c, 0x017c, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a,
+ 0x018a, 0x018a, 0x018a, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
+ 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
+ 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194,
+ // Entry 80 - BF
+ 0x0194, 0x0194, 0x0194, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
+ 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01ae,
+ 0x01ae, 0x01ae, 0x01ba, 0x01ba, 0x01ba, 0x01ba, 0x01c2, 0x01d2,
+ 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de,
+ 0x01de, 0x01de, 0x01de, 0x01de, 0x01f1, 0x0208, 0x0218, 0x0231,
+ },
+ },
+ { // lt
+ ltScriptStr,
+ ltScriptIdx,
+ },
+ {}, // lu
+ {}, // luo
+ {}, // luy
+ { // lv
+ lvScriptStr,
+ lvScriptIdx,
+ },
+ {}, // mas
+ {}, // mer
+ {}, // mfe
+ {}, // mg
+ {}, // mgh
+ { // mgo
+ "ngam ŋwaʼringam choʼabo ŋwaʼri tisɔʼ",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ // Entry 80 - BF
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d,
+ 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0017, 0x0017, 0x002b,
+ },
+ },
+ { // mk
+ mkScriptStr,
+ mkScriptIdx,
+ },
+ { // ml
+ mlScriptStr,
+ mlScriptIdx,
+ },
+ { // mn
+ mnScriptStr,
+ mnScriptIdx,
+ },
+ { // mr
+ mrScriptStr,
+ mrScriptIdx,
+ },
+ { // ms
+ msScriptStr,
+ msScriptIdx,
+ },
+ { // mt
+ "GħarbiĊirillikuGriegHan SimplifikatHan TradizzjonaliLatinPersjan AntikMh" +
+ "ux MiktubKomuniKitba Mhux Magħrufa",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016,
+ 0x0025, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ // Entry 40 - 7F
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ // Entry 80 - BF
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x0048,
+ 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0053, 0x0059, 0x006d,
+ },
+ },
+ {}, // mua
+ { // my
+ myScriptStr,
+ myScriptIdx,
+ },
+ { // mzn
+ "عربیارمنیبنگالیبوپوموفوسیریلیکدیوانانگریاتیوپیاییگرجییونانیگجراتیگورموخی" +
+ "هانگولهانساده\u200cبَیی هاناستاندارد ِسنتی هانتعبریهیراگاناجاپونیکا" +
+ "تاکانا",
+ []uint16{ // 64 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x003c, 0x003c, 0x0050, 0x0050, 0x0050,
+ 0x0050, 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, 0x006a, 0x006a,
+ 0x006a, 0x006a, 0x0076, 0x0082, 0x0090, 0x009c, 0x00a2, 0x00a2,
+ 0x00bc, 0x00e2, 0x00e2, 0x00ea, 0x00fa, 0x00fa, 0x00fa, 0x00fa,
+ 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x0106, 0x0106, 0x0106, 0x0116,
+ },
+ },
+ {}, // naq
+ {}, // nd
+ { // ne
+ neScriptStr,
+ neScriptIdx,
+ },
+ { // nl
+ nlScriptStr,
+ nlScriptIdx,
+ },
+ {}, // nmg
+ { // nn
+ "arabiskarmiskarmenskavestiskbalinesiskbatakbengaliblissymbolbopomofobrah" +
+ "mibraillebuginesiskbuhidchakmafelles kanadiske urspråksstavingarkari" +
+ "skchamcherokeecirthkoptiskkypriotiskkyrilliskkyrillisk (kyrkjeslavis" +
+ "k variant)devanagarideseretegyptisk demotiskegyptisk hieratiskegypti" +
+ "ske hieroglyfaretiopiskkhutsuri (asomtavruli og nuskhuri)georgiskgla" +
+ "golittiskgotiskgreskgujaratigurmukhihangulhanhanunooforenkla kinesis" +
+ "ktradisjonell kinesiskhebraiskhiraganapahawk hmongkatakana eller hir" +
+ "aganagammalungarskindusgammalitaliskjavanesiskjapanskkayah likatakan" +
+ "akharoshthikhmerkannadakoreanskkaithisklannalaotisklatinsk (frakturv" +
+ "ariant)latinsk (gælisk variant)latinsklepchalumbulineær Alineær Blyk" +
+ "isklydiskmandaiskmanikeiskmaya-hieroglyfarmeroitiskmalayalammongolsk" +
+ "moonmeitei-mayekmyanmarn’kooghamol-chikiorkhonoriyaosmanyagammalperm" +
+ "iskphags-painskripsjonspahlavisalmepahlavipahlavifønikiskpollard-fon" +
+ "etiskinskripsjonsparthiskrejangrongorongorunersamaritansksaratisaura" +
+ "shtrateiknskriftshavisksinhalasundanesisksyloti nagrisyriakisksyriak" +
+ "isk (estrangelo-variant)syriakisk (vestleg variant)syriakisk (austle" +
+ "g variant)tagbanwatai leny tai luetamilsktai viettelugutengwartifina" +
+ "ghtagalogthaanathaitibetanskugaritiskvaisynleg talegammalpersisksume" +
+ "ro-akkadisk kileskriftyinedarvamatematisk notasjonsymbolkode for spr" +
+ "åk utan skriftfellesukjend skrift",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000d, 0x0014, 0x001c,
+ 0x0026, 0x0026, 0x0026, 0x002b, 0x0032, 0x003c, 0x0044, 0x004a,
+ 0x0051, 0x005b, 0x0060, 0x0066, 0x0089, 0x008f, 0x0093, 0x009b,
+ 0x00a0, 0x00a7, 0x00b1, 0x00ba, 0x00db, 0x00e5, 0x00ec, 0x00ec,
+ 0x00fd, 0x010f, 0x0124, 0x0124, 0x012c, 0x014e, 0x0156, 0x0162,
+ 0x0168, 0x0168, 0x016d, 0x0175, 0x017d, 0x0183, 0x0186, 0x018d,
+ 0x019e, 0x01b3, 0x01b3, 0x01bb, 0x01c3, 0x01c3, 0x01cf, 0x01e6,
+ 0x01f3, 0x01f8, 0x0205, 0x020f, 0x0216, 0x0216, 0x021e, 0x0226,
+ // Entry 40 - 7F
+ 0x0230, 0x0235, 0x0235, 0x023c, 0x0244, 0x0244, 0x024c, 0x0251,
+ 0x0258, 0x0270, 0x0289, 0x0290, 0x0296, 0x029b, 0x02a4, 0x02ad,
+ 0x02ad, 0x02ad, 0x02b3, 0x02b9, 0x02b9, 0x02c1, 0x02ca, 0x02da,
+ 0x02da, 0x02da, 0x02e3, 0x02ec, 0x02ec, 0x02f4, 0x02f8, 0x02f8,
+ 0x0304, 0x0304, 0x030b, 0x030b, 0x030b, 0x030b, 0x0311, 0x0311,
+ 0x0316, 0x031e, 0x0324, 0x0329, 0x0330, 0x0330, 0x0330, 0x033d,
+ 0x0345, 0x0358, 0x0364, 0x036b, 0x0374, 0x0384, 0x0398, 0x039e,
+ 0x03a8, 0x03ad, 0x03b8, 0x03be, 0x03be, 0x03c8, 0x03d3, 0x03da,
+ // Entry 80 - BF
+ 0x03da, 0x03da, 0x03da, 0x03e1, 0x03e1, 0x03ec, 0x03f8, 0x0401,
+ 0x041f, 0x043a, 0x0455, 0x045d, 0x045d, 0x0463, 0x046d, 0x0474,
+ 0x0474, 0x047c, 0x0482, 0x0489, 0x0491, 0x0498, 0x049e, 0x04a2,
+ 0x04ab, 0x04ab, 0x04b4, 0x04b7, 0x04c2, 0x04c2, 0x04c2, 0x04cf,
+ 0x04e9, 0x04eb, 0x04f2, 0x0505, 0x050b, 0x0526, 0x052c, 0x0539,
+ },
+ },
+ {}, // nnh
+ { // no
+ noScriptStr,
+ noScriptIdx,
+ },
+ {}, // nus
+ {}, // nyn
+ { // om
+ "Latin",
+ []uint16{ // 76 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0005,
+ },
+ },
+ { // or
+ "ଆରବିକ୍ଇମ୍ପେରିଆଲ୍ ଆରମିକ୍ଆର୍ମେନିଆନ୍ଆବେସ୍ଥାନ୍ବାଲିନୀଜ୍ବାଟାକ୍ବଙ୍ଗାଳୀବ୍ଲିସିମ୍ବ" +
+ "ଲସ୍ବୋପୋମୋଫୋବ୍ରାହ୍ମୀବ୍ରିଲ୍ବୁଗାନୀଜ୍ବୁହିଦ୍ଚକମାୟୁନିଫାଏଡ୍ କାନାଡିଆନ୍ ଆବ୍" +
+ "ରୋଜିନାଲ୍ ସିଲାବିକସ୍କୈରନ୍ଛମ୍ଚିରୁକୀସିର୍ଥକପଟିକ୍ସିପ୍ରଅଟ୍ସିରିଲିକ୍ଓଲ୍ଡ ଚର" +
+ "୍ଚ୍ଚ ସାଲଭୋନିକ୍ ସିରିଲିକ୍ଦେବାନଗିରିଡେସର୍ଟଇଜିପ୍ଟିଆନ୍ ଡେମୋଟିକ୍ଇଜିପ୍ଟିଆନ" +
+ "୍ ହାଇଅରଟିକ୍ଇଜିପ୍ଟିଆନ୍ ହାଅରଗ୍ଲିପସ୍ଇଥୋପିକ୍ଜର୍ଜିଆନ୍ ଖୁଟସୁରୀଜର୍ଜିଆନ୍ଗ୍" +
+ "ଲାଗ୍ଲୋଟିକ୍ଗୋଥିକ୍ଗ୍ରୀକ୍ଗୁଜୁରାଟୀଗୁରୁମୁଖୀହାଙ୍ଗୁଲ୍ହାନ୍ହାନୁନ୍ସରଳୀକୃତ ହା" +
+ "ନ୍ପାରମ୍ପରିକ୍ ହାନ୍ହେବ୍ର୍ୟୁହିରାଗାନାପାହୋ ହୋଙ୍ଗକାଟାକାନ୍ କିମ୍ବା ହିରାଗାନ" +
+ "୍ପୁରୁଣା ହଙ୍ଗେରିଆନ୍ସିନ୍ଧୁପୁରୁଣା ଇଟାଲୀଜାଭାନୀଜ୍ଜାପାନୀଜ୍କାୟାହା ଲୀକାଟକା" +
+ "ନ୍ଖାରୋସ୍ଥିଖ୍ମେର୍କନ୍ନଡକୋରିଆନ୍କୈଥିଲାନାଲାଓଫ୍ରାକଥୁର୍ ଲାଟିନ୍ଗାଏଲିକ୍ ଲାଟ" +
+ "ିନ୍ଲାଟିନ୍ଲେପଚାଲିମ୍ବୁଲିନିୟର୍ଲିନିୟର୍ ବିଲିଶିୟନ୍ଲିଡିୟନ୍ମାନଡେନ୍ମନଶୀନ୍ମୟ" +
+ "ାନ୍ ହାୟରଲଜିକସ୍ମେରୋଇଟିକ୍ମାଲୟଲମ୍ମଙ୍ଗୋଲିଆନ୍ଚନ୍ଦ୍ରମାଏତି ମାୟେକ୍ମିଆମାର୍ଏ" +
+ "ନ୍ କୋଓଘାମାଓଲ୍ ଚିକିଓରୋଖନ୍ଓଡିଆଓସୋମାନିୟାଓଲ୍ଡ ପରମିକ୍ଫାଗସ୍-ପାଇନସ୍କ୍ରୀପସ" +
+ "ାନଲ୍ ପାହାଲାୱୀସ୍ଲାଟର୍ ପାହାଲାୱୀବୁକ୍ ପାହାଲାୱୀଫେନୋସିଆନ୍ପୋଲାର୍ଡ ଫୋନେଟିକ" +
+ "୍ଇନସ୍କ୍ରୀପସାନଲ୍ ପାର୍ଥିଆନ୍ରେଜାଙ୍ଗରୋଙ୍ଗୋରୋଙ୍ଗୋରନିକ୍ସମୌରିଟନ୍ସାରାତିସୌର" +
+ "ାଷ୍ଟ୍ରସାଙ୍କେତିକ ଲିଖସାବିୟାନ୍ସିଂହଳସୁଦାନୀଜ୍ସୀଲିତୋ ନଗରୀସିରିୟାକ୍ଏଷ୍ଟ୍ରା" +
+ "ଙ୍ଗେଲୋ ସିରିକ୍ୱେଷ୍ଟର୍ନ ସିରିକ୍ଇଷ୍ଟର୍ନ ସିରିକ୍ତଗବାନ୍ୱାତାଇ ଲେନୂତନ ତାଇ ଲ" +
+ "ୁଏତାମିଲ୍ତାଇ ଭିଏତ୍ତେଲୁଗୁତେଙ୍ଗୱାର୍ତିଫିଙ୍ଘାଟାଗାଲୋଗ୍ଥାନାଥାଇତିବେତାନ୍ୟୁଗ" +
+ "ାରିଟିକ୍ୱାଇଭିଜିବଲ୍ ସ୍ପିଚ୍ପୁରୁଣା ଫରାସୀସୁମେରୋ-ଆକ୍କାଡିଆନ୍ ସୁନିଫର୍ମୟୀବଂ" +
+ "ଶଗତଗାଣିତିକ ନୋଟେସନ୍ସିମ୍ବଲ୍ଅଲିଖିତସାଧାରଣଅଞ୍ଜାତ କିମ୍ବା ଅବୈଧ ସ୍କ୍ରୀପ୍ଟ",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, 0x007c,
+ 0x0094, 0x0094, 0x0094, 0x00a6, 0x00bb, 0x00df, 0x00f7, 0x010f,
+ 0x0121, 0x0139, 0x014b, 0x0157, 0x01cc, 0x01db, 0x01e4, 0x01f6,
+ 0x0205, 0x0217, 0x022f, 0x0247, 0x029b, 0x02b6, 0x02c8, 0x02c8,
+ 0x02ff, 0x0339, 0x0379, 0x0379, 0x038e, 0x03bc, 0x03d4, 0x03f8,
+ 0x040a, 0x040a, 0x041c, 0x0434, 0x044c, 0x0464, 0x0470, 0x0482,
+ 0x04a4, 0x04cf, 0x04cf, 0x04e7, 0x04ff, 0x04ff, 0x051b, 0x055f,
+ 0x0590, 0x05a2, 0x05c4, 0x05dc, 0x05f4, 0x05f4, 0x060d, 0x0622,
+ // Entry 40 - 7F
+ 0x063a, 0x064c, 0x064c, 0x065b, 0x0670, 0x0670, 0x067c, 0x0688,
+ 0x0691, 0x06bf, 0x06e7, 0x06f9, 0x0708, 0x071a, 0x072f, 0x074b,
+ 0x074b, 0x074b, 0x0760, 0x0775, 0x0775, 0x078a, 0x079c, 0x07ca,
+ 0x07ca, 0x07ca, 0x07e5, 0x07fa, 0x07fa, 0x0818, 0x082a, 0x082a,
+ 0x084c, 0x084c, 0x0861, 0x0861, 0x0861, 0x0861, 0x0871, 0x0871,
+ 0x0880, 0x0896, 0x08a8, 0x08b4, 0x08cf, 0x08cf, 0x08cf, 0x08ee,
+ 0x0904, 0x0947, 0x0975, 0x099a, 0x09b5, 0x09e3, 0x0a29, 0x0a3e,
+ 0x0a62, 0x0a71, 0x0a89, 0x0a9b, 0x0a9b, 0x0ab6, 0x0adb, 0x0af3,
+ // Entry 80 - BF
+ 0x0af3, 0x0af3, 0x0af3, 0x0b02, 0x0b02, 0x0b1a, 0x0b39, 0x0b51,
+ 0x0b8b, 0x0bb6, 0x0bde, 0x0bf6, 0x0bf6, 0x0c06, 0x0c26, 0x0c38,
+ 0x0c38, 0x0c51, 0x0c63, 0x0c7e, 0x0c96, 0x0cae, 0x0cba, 0x0cc3,
+ 0x0cdb, 0x0cdb, 0x0cf9, 0x0d02, 0x0d2a, 0x0d2a, 0x0d2a, 0x0d4c,
+ 0x0d96, 0x0d9c, 0x0dab, 0x0dd6, 0x0deb, 0x0dfd, 0x0e0f, 0x0e5d,
+ },
+ },
+ { // os
+ "АраббагКиррилицӕӔнцонгонд китайагТрадицион китайагЛатинагНӕфысгӕНӕзонгӕ " +
+ "скрипт",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+ 0x0041, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
+ 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
+ // Entry 40 - 7F
+ 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
+ 0x0062, 0x0062, 0x0062, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ // Entry 80 - BF
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x007e, 0x007e, 0x0099,
+ },
+ },
+ { // pa
+ paScriptStr,
+ paScriptIdx,
+ },
+ { // pa-Arab
+ "عربیگُرمُکھی",
+ []uint16{ // 45 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0018,
+ },
+ },
+ { // pl
+ plScriptStr,
+ plScriptIdx,
+ },
+ {}, // prg
+ { // ps
+ "عربي",
+ []uint16{ // 5 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008,
+ },
+ },
+ { // pt
+ ptScriptStr,
+ ptScriptIdx,
+ },
+ { // pt-PT
+ ptPTScriptStr,
+ ptPTScriptIdx,
+ },
+ {}, // qu
+ { // rm
+ "arabarameic imperialarmenavesticbalinaisbatakbengalsimbols da Blissbopom" +
+ "ofobrahmiscrittira da Braillebuginaisbuhidchakmasimbols autoctons ca" +
+ "nadais unifitgadscarianchamcherokeecirthcopticcipriotcirillicslav da" +
+ " baselgia vegldevanagarideseretegipzian demoticegipzian ieraticierog" +
+ "lifas egipzianasetiopickutsurigeorgianglagoliticgoticgrecgujaratigur" +
+ "mukhihangulhanhanunooscrittira chinaisa simplifitgadascrittira china" +
+ "isa tradiziunalaebraichiraganapahawn hmongkatanaka u hiraganaungarai" +
+ "s veglindusitalic vegljavanaisgiapunaiskayah likatakanakharoshthikhm" +
+ "er/cambodschankannadacoreankaithilannalaotlatin (scrittira gotica)la" +
+ "tin (scrittira gaelica)latinlepchalimbulinear Alinear Blichiclidicma" +
+ "ndaicmanicheicieroglifas mayameroiticmalaisianmongolicmoonmeetei may" +
+ "ekburmaisn’kooghamol chikiorkhonoriyaosmanpermic veglphags-papahlavi" +
+ " dad inscripziunspahlavi da psalmspahlavi da cudeschsfenizianfonetic" +
+ "a da Pollardpartic dad inscripziunsrejangrongorongorunicsamaritansar" +
+ "atisaurashtralingua da segnsshaviansingalaissundanaissyloti nagrisir" +
+ "icsiric estrangelosiric dal vestsiric da l’osttagbanwatai letai luet" +
+ "amiltai viettelugutengwartifinaghtagalogthaanatailandaistibetanugari" +
+ "ticvaiialfabet visibelpersian veglscrittira a cugn sumeric-accadicay" +
+ "iertànotaziun matematicasimbolslinguas na scrittasbetg determinàscri" +
+ "ttira nunenconuschenta u nunvalaivla",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x0019, 0x0020,
+ 0x0028, 0x0028, 0x0028, 0x002d, 0x0033, 0x0043, 0x004b, 0x0051,
+ 0x0065, 0x006d, 0x0072, 0x0078, 0x009d, 0x00a3, 0x00a7, 0x00af,
+ 0x00b4, 0x00ba, 0x00c1, 0x00c9, 0x00de, 0x00e8, 0x00ef, 0x00ef,
+ 0x00ff, 0x010f, 0x0124, 0x0124, 0x012b, 0x0132, 0x013a, 0x0144,
+ 0x0149, 0x0149, 0x014d, 0x0155, 0x015d, 0x0163, 0x0166, 0x016d,
+ 0x018d, 0x01ac, 0x01ac, 0x01b2, 0x01ba, 0x01ba, 0x01c6, 0x01d9,
+ 0x01e6, 0x01eb, 0x01f6, 0x01fe, 0x0207, 0x0207, 0x020f, 0x0217,
+ // Entry 40 - 7F
+ 0x0221, 0x0232, 0x0232, 0x0239, 0x023f, 0x023f, 0x0245, 0x024a,
+ 0x024e, 0x0266, 0x027f, 0x0284, 0x028a, 0x028f, 0x0297, 0x029f,
+ 0x029f, 0x029f, 0x02a5, 0x02aa, 0x02aa, 0x02b1, 0x02ba, 0x02c9,
+ 0x02c9, 0x02c9, 0x02d1, 0x02da, 0x02da, 0x02e2, 0x02e6, 0x02e6,
+ 0x02f2, 0x02f2, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02ff, 0x02ff,
+ 0x0304, 0x030c, 0x0312, 0x0317, 0x031c, 0x031c, 0x031c, 0x0327,
+ 0x032f, 0x0347, 0x0358, 0x036b, 0x0373, 0x0386, 0x039d, 0x03a3,
+ 0x03ad, 0x03b2, 0x03bb, 0x03c1, 0x03c1, 0x03cb, 0x03da, 0x03e1,
+ // Entry 80 - BF
+ 0x03e1, 0x03e1, 0x03e1, 0x03ea, 0x03ea, 0x03f3, 0x03ff, 0x0404,
+ 0x0414, 0x0422, 0x0432, 0x043a, 0x043a, 0x0440, 0x0447, 0x044c,
+ 0x044c, 0x0454, 0x045a, 0x0461, 0x0469, 0x0470, 0x0476, 0x0480,
+ 0x0487, 0x0487, 0x048f, 0x0493, 0x04a2, 0x04a2, 0x04a2, 0x04ae,
+ 0x04cf, 0x04d1, 0x04d6, 0x04e9, 0x04f0, 0x0503, 0x0512, 0x053a,
+ },
+ },
+ {}, // rn
+ { // ro
+ roScriptStr,
+ roScriptIdx,
+ },
+ {}, // rof
+ { // ru
+ ruScriptStr,
+ ruScriptIdx,
+ },
+ {}, // rw
+ {}, // rwk
+ { // sah
+ "АрааптыыЭрмээннииНууччалыыКириэктииДьоппуоннууКэриэйдииЛатыынныыТаайдыыС" +
+ "урулла иликБиллибэт сурук",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, 0x0022,
+ 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
+ 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
+ 0x0022, 0x0022, 0x0022, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
+ 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
+ 0x0046, 0x0046, 0x0046, 0x0046, 0x005c, 0x005c, 0x005c, 0x005c,
+ // Entry 40 - 7F
+ 0x005c, 0x005c, 0x005c, 0x005c, 0x006e, 0x006e, 0x006e, 0x006e,
+ 0x006e, 0x006e, 0x006e, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ // Entry 80 - BF
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e,
+ 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x00a5, 0x00a5, 0x00c0,
+ },
+ },
+ {}, // saq
+ {}, // sbp
+ { // se
+ "arábakyrillalašgreikkalašhangulkiinnašálkiárbevirolašhiraganakatakanaláh" +
+ "tenašorrut chállojuvvotdovdameahttun chállin",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x001c, 0x001c, 0x001c, 0x0022, 0x002a, 0x002a,
+ 0x002f, 0x003c, 0x003c, 0x003c, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004c,
+ // Entry 40 - 7F
+ 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c,
+ 0x004c, 0x004c, 0x004c, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ // Entry 80 - BF
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0069, 0x0069, 0x007f,
+ },
+ },
+ { // se-FI
+ "arábalaškiinnálašálkes kiinnálašárbevirolaš kiinnálašorrut čállojuvvotdo" +
+ "vdameahttun čállin",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0015, 0x0015,
+ 0x0027, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ // Entry 40 - 7F
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ // Entry 80 - BF
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0053, 0x0053, 0x0069,
+ },
+ },
+ {}, // seh
+ {}, // ses
+ {}, // sg
+ {}, // shi
+ {}, // shi-Latn
+ { // si
+ siScriptStr,
+ siScriptIdx,
+ },
+ { // sk
+ skScriptStr,
+ skScriptIdx,
+ },
+ { // sl
+ slScriptStr,
+ slScriptIdx,
+ },
+ {}, // smn
+ {}, // sn
+ { // so
+ "Aan la qorinFar aan la aqoon amase aan saxnayn",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x002e,
+ },
+ },
+ { // sq
+ sqScriptStr,
+ sqScriptIdx,
+ },
+ { // sr
+ srScriptStr,
+ srScriptIdx,
+ },
+ { // sr-Latn
+ srLatnScriptStr,
+ srLatnScriptIdx,
+ },
+ { // sv
+ svScriptStr,
+ svScriptIdx,
+ },
+ {}, // sv-FI
+ { // sw
+ swScriptStr,
+ swScriptIdx,
+ },
+ {}, // sw-CD
+ { // ta
+ taScriptStr,
+ taScriptIdx,
+ },
+ { // te
+ teScriptStr,
+ teScriptIdx,
+ },
+ {}, // teo
+ { // th
+ thScriptStr,
+ thScriptIdx,
+ },
+ { // ti
+ "ፊደልላቲን",
+ []uint16{ // 76 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0009, 0x0009,
+ 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
+ 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
+ 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
+ // Entry 40 - 7F
+ 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
+ 0x0009, 0x0009, 0x0009, 0x0012,
+ },
+ },
+ { // to
+ "tohinima fakaʻafakatohinima fakaʻalapēnia-kaukasiatohinima fakaʻalepeato" +
+ "hinima fakaʻalāmiti-ʻemipaeatohinima fakaʻāmeniatohinima fakaʻavesit" +
+ "anitohinima fakapalitohinima fakapamumitohinima fakapasa-vātohinima " +
+ "fakapātakitohinima fakapengikalitohinima fakaʻilonga-pilisitohinima " +
+ "fakapopomofotohinima fakapalāmītohinima laukonga ki he kuitohinima f" +
+ "akapukisitohinima fakapuhititohinima fakasakimātohinima fakatupuʻi-k" +
+ "ānata-fakatahatahatohinima fakakalitohinima fakasamitohinima fakase" +
+ "lokītohinima fakakīlititohinima fakakopitikatohinima fakasaipalesito" +
+ "hinima fakalūsiatohinima fakalūsia-lotu-motuʻatohinima fakaʻinitia-t" +
+ "evanākalītohinima fakateseletitohinimanounou fakatupoloiētohinima te" +
+ "motika-fakaʻisipitetohinima hielatika-fakaʻisipitetohinima tongitapu" +
+ "-fakaʻisipitetohinima fakaʻelepasanitohinima fakaʻītiōpiatohinima fa" +
+ "kakutusuli-seōsiatohinima fakaseōsiatohinima fakakalakolititohinima " +
+ "fakakotikatohinima fakasilanitātohinima fakakalisitohinima fakaʻinit" +
+ "ia-kutalatitohinima fakakūmukitohinima fakakōlea-hāngūlutohinima fak" +
+ "asiainatohinima fakahanunōʻotohinima fakasiaina-fakafaingofuatohinim" +
+ "a fakasiaina-tukufakaholotohinima fakahepelūtohinima fakasiapani-hil" +
+ "akanatohinima tongitapu-fakaʻanatoliatohinima fakapahaumongitohinima" +
+ " fakasilapa-siapanitohinima fakahungakalia-motuʻatohinima fakaʻinitu" +
+ "sitohinima fakaʻītali-motuʻatohinima fakasavatohinima fakasiapanitoh" +
+ "inima fakaiūkenitohinima fakakaialītohinima fakasiapani-katakanatohi" +
+ "nima fakakalositītohinima fakakamipōtiatohinima fakakosikītohinima f" +
+ "akaʻinitia-kanatatohinima fakakōleatohinima fakakepeletohinima fakak" +
+ "aiatītohinima fakalanatohinima fakalautohinima fakalatina-falakituli" +
+ "tohinima fakalatina-kaelikitohinima fakalatinatohinima fakalepasātoh" +
+ "inima fakalimipūtohinima fakalinea-Atohinima fakalinea-Ptohinima fak" +
+ "afalāsetohinima fakalomatohinima fakalīsiatohinima fakalītiatohinima" +
+ " fakamahasanitohinima fakamanitaeatohinima fakamanikaeatohinima tong" +
+ "itapu fakamaiatohinima fakamēnititohinima fakameloue-heiheitohinima " +
+ "fakamelouetohinima fakaʻinitia-malāialamitohinima fakamotītohinima f" +
+ "akamongokōliatohinima laukonga ki he kui-māhinatohinima fakamolōtohi" +
+ "nima fakametei-maiekitohinima fakapematohinima fakaʻalepea-tokelau-m" +
+ "otuʻatohinima fakanapateatohinima fakanati-sepatohinima fakanikōtohi" +
+ "nima fakanasiūtohinima fakaʻokamitohinima fakaʻolisikitohinima fakaʻ" +
+ "olikonitohinima fakaʻinitia-ʻolāeatohinima fakaʻosimāniatohinima fak" +
+ "apalamilenetohinima fakapausinihautohinima fakapēmi-motuʻatohinima f" +
+ "akapākisipātohinima fakapālavi-tongitohinima fakapālavi-saametohinim" +
+ "a fakapālavi-tohitohinima fakafoinikiatohinima fakafonētiki-polātito" +
+ "hinima fakapātia-tongitohinima fakalesiangitohinima fakalongolongoto" +
+ "hinima fakalunikitohinima fakasamalitanetohinima fakasalatitohinima " +
+ "fakaʻalepea-tonga-motuʻatohinima fakasaulasitātohinima fakaʻilonga-t" +
+ "ohitohinima fakasiavitohinima fakasiālatātohinima fakasititamitohini" +
+ "ma fakakutauātitohinima fakasingihalatohinima fakasolasomipengitohin" +
+ "ima fakasunitātohinima fakasailoti-nakilitohinima fakasuliāiātohinim" +
+ "a fakasuliāiā-ʻesitelangelotohinima fakasuliāiā-hihifotohinima fakas" +
+ "uliāiā-hahaketohinima fakatakipaneuātohinima fakatakilitohinima faka" +
+ "tai-luetohinima fakatai-lue-foʻoutohinima fakatamilitohinima fakatan" +
+ "gutitohinima fakatai-vietitohinima fakaʻinitia-telukutohinima fakate" +
+ "ngiualitohinima fakatifinākitohinima fakatakalokatohinima fakatānato" +
+ "hinima fakatailanitohinima fakataipetitohinima fakatīhutatohinima fa" +
+ "kaʻūkalititohinima fakavaitohinima fakafonētiki-hāmaitohinima fakava" +
+ "langi-kisitītohinima fakauoleaitohinima fakapēsiamuʻatohinima fakama" +
+ "taʻingahau-sumelo-akatiatohinima fakaīītohinima hokositohinima fakam" +
+ "atematikatohinima fakaʻilongatohinima taʻetohitohiʻitohinima fakatat" +
+ "autohinima taʻeʻiloa",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0014, 0x0035, 0x0035, 0x004a, 0x006b, 0x0081, 0x0099,
+ 0x00aa, 0x00bd, 0x00d2, 0x00e6, 0x00fc, 0x0118, 0x012d, 0x0142,
+ 0x015d, 0x0170, 0x0183, 0x0197, 0x01c0, 0x01d1, 0x01e2, 0x01f6,
+ 0x020a, 0x021f, 0x0235, 0x0248, 0x0268, 0x028a, 0x029f, 0x02bb,
+ 0x02da, 0x02fa, 0x031a, 0x0332, 0x034a, 0x0367, 0x037b, 0x0392,
+ 0x03a5, 0x03bb, 0x03ce, 0x03ec, 0x0400, 0x041d, 0x0430, 0x0447,
+ 0x0468, 0x0488, 0x0488, 0x049c, 0x04b9, 0x04da, 0x04f1, 0x050c,
+ 0x052b, 0x0541, 0x055e, 0x056f, 0x0583, 0x0597, 0x05ab, 0x05c8,
+ // Entry 40 - 7F
+ 0x05de, 0x05f5, 0x0609, 0x0625, 0x0638, 0x064b, 0x065f, 0x0670,
+ 0x0680, 0x069e, 0x06b9, 0x06cc, 0x06e0, 0x06f4, 0x0708, 0x071c,
+ 0x0730, 0x0741, 0x0754, 0x0767, 0x077c, 0x0791, 0x07a6, 0x07c1,
+ 0x07d5, 0x07ef, 0x0802, 0x0823, 0x0835, 0x084d, 0x0870, 0x0882,
+ 0x089b, 0x089b, 0x08ac, 0x08d1, 0x08e5, 0x08fb, 0x090d, 0x0920,
+ 0x0934, 0x094a, 0x0960, 0x097e, 0x0996, 0x09ad, 0x09c4, 0x09de,
+ 0x09f5, 0x0a0f, 0x0a29, 0x0a42, 0x0a57, 0x0a75, 0x0a8e, 0x0aa3,
+ 0x0aba, 0x0acd, 0x0ae4, 0x0af7, 0x0b1a, 0x0b31, 0x0b4b, 0x0b5d,
+ // Entry 80 - BF
+ 0x0b73, 0x0b88, 0x0b9e, 0x0bb4, 0x0bce, 0x0be2, 0x0bfd, 0x0c13,
+ 0x0c38, 0x0c55, 0x0c72, 0x0c8a, 0x0c9d, 0x0cb1, 0x0ccc, 0x0cdf,
+ 0x0cf3, 0x0d09, 0x0d25, 0x0d3b, 0x0d51, 0x0d66, 0x0d78, 0x0d8c,
+ 0x0da0, 0x0db4, 0x0dcb, 0x0ddb, 0x0df8, 0x0e14, 0x0e27, 0x0e3f,
+ 0x0e67, 0x0e78, 0x0e87, 0x0e9e, 0x0eb3, 0x0ecc, 0x0ede, 0x0ef2,
+ },
+ },
+ { // tr
+ trScriptStr,
+ trScriptIdx,
+ },
+ {}, // twq
+ {}, // tzm
+ { // ug
+ "ئافاكائەرەبخان جەمەتى ئارامۇئەرمەنئاۋېستابالىبامۇمباسساباتاكبېنگالبىلىس " +
+ "بەلگىلىرىخەنچە پىنيىنبراخمىبرائىل ئەمالار يېزىقىبۇگىبۇخىتچاكمابىرلى" +
+ "ككە كەلگەن كانادا يەرلىك بوغۇم جەدۋىلىكارىياچامچېروكىكىرسچەكوپتىكسى" +
+ "پرۇسكىرىلقەدىمكى چىركاۋ سىلاۋيانچە كىرىلدېۋاناگارىدېزېرېتدۇپلويان ت" +
+ "ېز خاتىرىلەشدېموتىكچە مىسىرخىيەراتىكچە مىسىرتەسۋىرىي يېزىق مىسىرئېف" +
+ "ىيوپىيەچەخۇتسۇرى گىرۇزىنچەگىرۇزىنچەگىلاگوتچەگوتچەگىرانتاچەگىرېكچەگۇ" +
+ "جاراتچەگۇرمۇكىچەخەنچەخانۇنۇچەئاددىي خەنچەمۇرەككەپ خەنچەئىبرانىچەخىر" +
+ "اگانائاناتولىيە تەسۋىرىي يېزىقمۆڭچەياپونچە خىراگانا ياكى كاتاكاناقە" +
+ "دىمكى ماجارچەئىندۇسچەقەدىمكى ئىتاليانچەياۋاچەياپونچەجۇرچېنچەكاياھچە" +
+ "كاتاكاناكاروشتىچەكېخمېرچەخوجكىچەكانناداچەكورېيەچەكپېللېچەكاياتىچەلا" +
+ "نناچەلائوسچەفىراكتۇر لاتىنچەسىكوت لاتىنچەلاتىنچەلەپچاچەلىمبۇچەسىزىق" +
+ "لىق Aسىزىقلىق Bفراسېرچەلوماچەلىسىيانچەلىدىيەچەماندائىكچەمانەكېزەمچە" +
+ "ماياچە تەسۋىرىي يېزىقمېندېچەمېتروئىت يازمىچەمېتروئىتمالايامچەموڭغۇل" +
+ "چەكورىيەمروچەمانىپۇرىچەبىرماچەقەدىمكى شىمالىي ئەرەبچەئانباتچەناشىچە" +
+ "نىكوچەنۈشۇچەئوگەمچەئول-چىكىچەئورخۇنچەئورىياچەئوسمانيەپالمىراچەقەدىم" +
+ "كى پېرمىكچەپاسپاچەپەھلىۋىچە ئويما خەتپەھلىۋىچە شېئىرىي تىلپەھلىۋىچە" +
+ " كىتابى تىلفىنىكچەپوللارد تاۋۇشلىرىپارتىئانچە ئويما خەترېجاڭچەروڭگور" +
+ "وڭگورۇنىكچەسامارىچەساراتىچەقەدىمكى جەنۇبى ئەرەبچەسائۇراشتىراچەئىشار" +
+ "ەت تىلىشاۋىيانچەشاراداچەكۇداۋادچەسىنخالاچەسورا سامپىڭسۇنداچەسىيولوت" +
+ "ى-ناگرىچەسۈرىيەچەسۈرىيەچە ئەبجەتغەربىي سۈرىيەچەشەرقىي سۈرىيەچەتاگبا" +
+ "نۋاچەتاكرىچەتاي-لەچەيېڭى تاي-لەچەتامىلچەتاڭغۇتچەتايلاندچە-ۋىيېتنامچ" +
+ "ەتېلۇگۇچەتېڭۋارچەتىفىناغچەتاگالوگچەتاناچەتايلاندچەتىبەتچەتىرخۇتاچەئ" +
+ "ۇگارىتىكچەۋايچەكۆرۈنۈشچان تاۋۇشۋاراڭ كىشىتىۋولىئايقەدىمكى پارىسچەسۇ" +
+ "مېر-ئاككادىيان مىخ خەتيىچەئىرسىيەت ئاتالغۇماتېماتىكىلىق بەلگەبەلگەي" +
+ "ېزىلمىغانئورتاقيوچۇن يېزىق",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x000c, 0x000c, 0x0016, 0x0036, 0x0042, 0x0050,
+ 0x0058, 0x0062, 0x006c, 0x0076, 0x0082, 0x009f, 0x00b6, 0x00c2,
+ 0x00ea, 0x00f2, 0x00fc, 0x0106, 0x0157, 0x0163, 0x0169, 0x0175,
+ 0x0181, 0x018d, 0x0199, 0x01a3, 0x01de, 0x01f2, 0x0200, 0x022a,
+ 0x0247, 0x0268, 0x028e, 0x028e, 0x02a6, 0x02c7, 0x02d9, 0x02eb,
+ 0x02f5, 0x0307, 0x0315, 0x0327, 0x0339, 0x0339, 0x0343, 0x0353,
+ 0x036a, 0x0385, 0x0385, 0x0397, 0x03a7, 0x03d7, 0x03e1, 0x041a,
+ 0x0437, 0x0447, 0x046a, 0x0476, 0x0484, 0x0494, 0x04a2, 0x04b2,
+ // Entry 40 - 7F
+ 0x04c4, 0x04d4, 0x04e2, 0x04f4, 0x0504, 0x0514, 0x0524, 0x0532,
+ 0x0540, 0x055f, 0x0578, 0x0586, 0x0594, 0x05a2, 0x05b4, 0x05c6,
+ 0x05d6, 0x05e2, 0x05f4, 0x0604, 0x0604, 0x0618, 0x062e, 0x0656,
+ 0x0664, 0x0683, 0x0693, 0x06a5, 0x06a5, 0x06b5, 0x06c1, 0x06cb,
+ 0x06df, 0x06df, 0x06ed, 0x0719, 0x0729, 0x0735, 0x0741, 0x074d,
+ 0x075b, 0x076e, 0x077e, 0x078e, 0x079e, 0x07b0, 0x07b0, 0x07cf,
+ 0x07dd, 0x0801, 0x0829, 0x084f, 0x085d, 0x087e, 0x08a4, 0x08b2,
+ 0x08c6, 0x08d4, 0x08e4, 0x08f4, 0x091e, 0x0938, 0x094f, 0x0961,
+ // Entry 80 - BF
+ 0x0971, 0x0971, 0x0983, 0x0995, 0x09aa, 0x09b8, 0x09d7, 0x09e7,
+ 0x0a04, 0x0a21, 0x0a3e, 0x0a52, 0x0a60, 0x0a6f, 0x0a87, 0x0a95,
+ 0x0aa5, 0x0acc, 0x0adc, 0x0aec, 0x0afe, 0x0b10, 0x0b1c, 0x0b2e,
+ 0x0b3c, 0x0b4e, 0x0b64, 0x0b6e, 0x0b8d, 0x0ba4, 0x0bb2, 0x0bcf,
+ 0x0bfc, 0x0c04, 0x0c23, 0x0c48, 0x0c52, 0x0c66, 0x0c72, 0x0c87,
+ },
+ },
+ { // uk
+ ukScriptStr,
+ ukScriptIdx,
+ },
+ { // ur
+ urScriptStr,
+ urScriptIdx,
+ },
+ {}, // ur-IN
+ { // uz
+ uzScriptStr,
+ uzScriptIdx,
+ },
+ { // uz-Arab
+ "عربی",
+ []uint16{ // 5 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008,
+ },
+ },
+ { // uz-Cyrl
+ "АрабАрманБенгалиБопомофоБраиллеКирилДевангариҲабашГрузинЮнонГужаратиГурм" +
+ "ухиХангулХанСоддалаштирилганАнъанавийИбронийХираганаЯпонКатаканаХме" +
+ "рКаннадаКорейсЛаоЛотинМалайаламМўғулчаМьянмаОрияСинхалаТамилТелугуТ" +
+ "аанаТайТибетРамзларЁзилмаганУмумийНомаълум шрифт",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0020, 0x0020, 0x0030, 0x0030,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x0048, 0x0048, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x0064, 0x0064, 0x0070, 0x0070,
+ 0x0070, 0x0070, 0x0078, 0x0088, 0x0096, 0x00a2, 0x00a8, 0x00a8,
+ 0x00c8, 0x00da, 0x00da, 0x00e8, 0x00f8, 0x00f8, 0x00f8, 0x00f8,
+ 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0100, 0x0100, 0x0100, 0x0110,
+ // Entry 40 - 7F
+ 0x0110, 0x0118, 0x0118, 0x0126, 0x0132, 0x0132, 0x0132, 0x0132,
+ 0x0138, 0x0138, 0x0138, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142,
+ 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142,
+ 0x0142, 0x0142, 0x0142, 0x0154, 0x0154, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e,
+ 0x016e, 0x016e, 0x016e, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
+ 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
+ 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
+ // Entry 80 - BF
+ 0x0176, 0x0176, 0x0176, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184,
+ 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x018e,
+ 0x018e, 0x018e, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a4, 0x01aa,
+ 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4,
+ 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01c2, 0x01d4, 0x01e0, 0x01fb,
+ },
+ },
+ {}, // vai
+ {}, // vai-Latn
+ { // vi
+ viScriptStr,
+ viScriptIdx,
+ },
+ {}, // vun
+ { // wae
+ "ArabišArmenišBengališKirillišDevanagariEthiopišGeorgišGričišGujaratiVere" +
+ "ifačtTraditionellHebräišJapanišKhmerKannadaKorianišLaotišLatinišMala" +
+ "isišBurmesišOriyaSingalesišTamilišTeluguThánaThaiSchriftlosUnkodiert" +
+ "i Schrift",
+ []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, 0x000f,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0018, 0x0018,
+ 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
+ 0x0018, 0x0018, 0x0018, 0x0021, 0x0021, 0x002b, 0x002b, 0x002b,
+ 0x002b, 0x002b, 0x002b, 0x002b, 0x0034, 0x0034, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x0044, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c,
+ 0x0056, 0x0062, 0x0062, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073,
+ // Entry 40 - 7F
+ 0x0073, 0x0078, 0x0078, 0x007f, 0x0088, 0x0088, 0x0088, 0x0088,
+ 0x008f, 0x008f, 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,
+ 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,
+ 0x0097, 0x0097, 0x0097, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,
+ 0x00a0, 0x00a0, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9,
+ 0x00a9, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ // Entry 80 - BF
+ 0x00ae, 0x00ae, 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9,
+ 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c1,
+ 0x00c1, 0x00c1, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00cd, 0x00d1,
+ 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1,
+ 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00db, 0x00db, 0x00ed,
+ },
+ },
+ {}, // xog
+ {}, // yav
+ { // yi
+ "אַראַבישצירילישדעוואַנאַגאַריגריכישHebrגַלחיש",
+ []uint16{ // 76 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x001e, 0x001e, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046,
+ 0x0046, 0x0046, 0x0046, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a,
+ 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a,
+ // Entry 40 - 7F
+ 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a,
+ 0x004a, 0x004a, 0x004a, 0x0056,
+ },
+ },
+ {}, // yo
+ {}, // yo-BJ
+ {}, // zgh
+ { // zh
+ zhScriptStr,
+ zhScriptIdx,
+ },
+ { // zh-Hant
+ zhHantScriptStr,
+ zhHantScriptIdx,
+ },
+ { // zh-Hant-HK
+ "西里爾文梵文埃塞俄比亞文格魯吉亞文古木基文韓文字母簡體字繁體字坎納達文老撾文拉丁字母馬拉雅拉姆文奧里雅文僧伽羅文泰米爾文它拿字母藏文",
+ []uint16{ // 153 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0024, 0x0024, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x003f, 0x004b, 0x004b, 0x004b,
+ 0x0054, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
+ 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d,
+ // Entry 40 - 7F
+ 0x005d, 0x005d, 0x005d, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,
+ 0x0072, 0x0072, 0x0072, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e,
+ 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e,
+ 0x007e, 0x007e, 0x007e, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090,
+ 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090,
+ 0x0090, 0x0090, 0x0090, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c,
+ // Entry 80 - BF
+ 0x009c, 0x009c, 0x009c, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8,
+ 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b4,
+ 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00c0, 0x00c0,
+ 0x00c6,
+ },
+ },
+ { // zu
+ zuScriptStr,
+ zuScriptIdx,
+ },
+}
+
+var afScriptStr string = "" + // Size: 315 bytes
+ "ArabiesArmeensBengaalsBopomofoBrailleSirilliesDevanagariEtiopiesGeorgies" +
+ "GrieksGudjaratiGurmukhiHangulHanVereenvoudigde HanTradisionele HanHebree" +
+ "usHiraganaJapanneesKatakanaKhmerKannadaKoreaansLaoLatynMalabaarsMongools" +
+ "MianmarOriyaSinhalaTamilTeloegoeThaanaThaiTibettaansSimboleOngeskreweAlg" +
+ "emeenOnbekende skryfstelsel"
+
+var afScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x0016, 0x001e, 0x001e,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x002e, 0x002e, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0038, 0x0040, 0x0040, 0x0048, 0x0048,
+ 0x0048, 0x0048, 0x004e, 0x0057, 0x005f, 0x0065, 0x0068, 0x0068,
+ 0x007a, 0x008a, 0x008a, 0x0092, 0x009a, 0x009a, 0x009a, 0x009a,
+ 0x009a, 0x009a, 0x009a, 0x009a, 0x00a3, 0x00a3, 0x00a3, 0x00ab,
+ // Entry 40 - 7F
+ 0x00ab, 0x00b0, 0x00b0, 0x00b7, 0x00bf, 0x00bf, 0x00bf, 0x00bf,
+ 0x00c2, 0x00c2, 0x00c2, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df,
+ 0x00df, 0x00df, 0x00df, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
+ 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
+ 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4,
+ // Entry 80 - BF
+ 0x00e4, 0x00e4, 0x00e4, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb,
+ 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f0,
+ 0x00f0, 0x00f0, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00fe, 0x0102,
+ 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
+ 0x010c, 0x010c, 0x010c, 0x010c, 0x0113, 0x011d, 0x0125, 0x013b,
+} // Size: 360 bytes
+
+var amScriptStr string = "" + // Size: 505 bytes
+ "ዓረብኛአርሜንያዊቤንጋሊቦፖሞፎብሬይልሲይሪልክደቫንጋሪኢትዮፒክጆርጂያዊግሪክጉጃራቲጉርሙኪሐንጉልሃንቀለል ያለ ሃንባህላዊ" +
+ " ሃንእብራይስጥሂራጋናጃፓንኛካታካናክህመርካንአዳኮሪያኛላኦላቲንማላያልምሞንጎሊያኛምያንማርኦሪያሲንሃላታሚልተሉጉታናታይቲ" +
+ "ቤታንምልክቶችያልተጻፈየጋራያልታወቀ ስክሪፕት"
+
+var amScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x002a, 0x0036, 0x0036,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0042, 0x0051, 0x0051, 0x0060, 0x0060, 0x0060,
+ 0x0060, 0x0060, 0x0060, 0x0060, 0x006f, 0x006f, 0x007e, 0x007e,
+ 0x007e, 0x007e, 0x0087, 0x0093, 0x009f, 0x00ab, 0x00b1, 0x00b1,
+ 0x00c8, 0x00db, 0x00db, 0x00ed, 0x00f9, 0x00f9, 0x00f9, 0x00f9,
+ 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0105, 0x0105, 0x0105, 0x0111,
+ // Entry 40 - 7F
+ 0x0111, 0x011d, 0x011d, 0x0129, 0x0135, 0x0135, 0x0135, 0x0135,
+ 0x013b, 0x013b, 0x013b, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144,
+ 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144,
+ 0x0144, 0x0144, 0x0144, 0x0153, 0x0153, 0x0165, 0x0165, 0x0165,
+ 0x0165, 0x0165, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174,
+ 0x0174, 0x0174, 0x0174, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d,
+ 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d,
+ 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d,
+ // Entry 80 - BF
+ 0x017d, 0x017d, 0x017d, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
+ 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0192,
+ 0x0192, 0x0192, 0x019b, 0x019b, 0x019b, 0x019b, 0x01a1, 0x01a7,
+ 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01b3,
+ 0x01b3, 0x01b3, 0x01b3, 0x01b3, 0x01c2, 0x01d1, 0x01da, 0x01f9,
+} // Size: 360 bytes
+
+var arScriptStr string = "" + // Size: 2430 bytes
+ "العربيةالأرمينيةالباليةالباتاكالبنغاليةرموز بليسالبوبوموفوالهندوسيةالبرا" +
+ "يلالبجينيزالبهيديةمقاطع كندية أصلية موحدةالكاريةالتشاميةالشيروكيالسيرثا" +
+ "لقبطيةالقبرصيةالسيريليةالسيريلية السلافية الكنسية القديمةالديفاناجاريال" +
+ "ديسيريتالديموطيقيةالهيراطيقيةالهيروغليفيةالأثيوبيةالأبجدية الجورجية - أ" +
+ "سومتافرلي و نسخريالجورجيةالجلاجوليتيكالقوطيةاليونانيةالتاغجراتيةالجرمخي" +
+ "الهانغولالهانالهانونوالهان المبسطةالهان التقليديةالعبريةالهيراجاناالباه" +
+ "وه همونجالكتكانا أو الهيراجاناالمجرية القديمةاندس - هارابانالإيطالية ال" +
+ "قديمةالجاويةاليابانيةالكياه لىالكتكاناالخاروشتىالخميريةالكاناداالكوريةا" +
+ "لانااللاواللاتينية - متغير فراكتراللاتينية - متغير غيلىاللاتينيةالليبتش" +
+ "ا - رونجالليمبوالخطية أالخطية بالليسيةالليديةالمانداينيةالمايا الهيروغل" +
+ "يفيةالميرويتيكالماليالامالمغوليةمونالميانمارالعربية الشمالية القديمةأنك" +
+ "والأوجهامالأورخونالأورياالأوسمانياالبيرميكية القديمةالفاجسباالفينيقيةال" +
+ "صوتيات الجماءرنجورنجوالرونيالساراتيالعربية الجنوبية القديمةالشوانيالسين" +
+ "هالاالسوندانيةالسيلوتي ناغريالسريانيةالسريانية الأسترنجيليةالسريانية ال" +
+ "غربيةالسريانية الشرقيةالتاجبانواالتاي ليالتاى لى الجديدالتاميليةالتيلجو" +
+ "التينجوارالتيفيناغالتغالوغيةالثعنةالتايلانديةالتبتيةالأجاريتيكيةالفايال" +
+ "كلام المرئيالفارسية القديمةالكتابة المسمارية الأكدية السومريةالييالمورو" +
+ "ثرموزغير مكتوبعامنظام كتابة غير معروف"
+
+var arScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x0020, 0x0020,
+ 0x002e, 0x002e, 0x002e, 0x003c, 0x004e, 0x005f, 0x0073, 0x0085,
+ 0x0093, 0x00a3, 0x00b3, 0x00b3, 0x00de, 0x00ec, 0x00fc, 0x010c,
+ 0x0118, 0x0126, 0x0136, 0x0148, 0x0189, 0x01a1, 0x01b3, 0x01b3,
+ 0x01c9, 0x01df, 0x01f7, 0x01f7, 0x0209, 0x024f, 0x025f, 0x0277,
+ 0x0285, 0x0285, 0x0297, 0x02ad, 0x02bb, 0x02cb, 0x02d5, 0x02e5,
+ 0x02fe, 0x031b, 0x031b, 0x0329, 0x033d, 0x033d, 0x0356, 0x0380,
+ 0x039d, 0x03b6, 0x03d7, 0x03e5, 0x03f7, 0x03f7, 0x0408, 0x0418,
+ // Entry 40 - 7F
+ 0x042a, 0x043a, 0x043a, 0x044a, 0x0458, 0x0458, 0x0458, 0x0462,
+ 0x046c, 0x0498, 0x04c0, 0x04d2, 0x04ed, 0x04fb, 0x050a, 0x0519,
+ 0x0519, 0x0519, 0x0527, 0x0535, 0x0535, 0x054b, 0x054b, 0x0570,
+ 0x0570, 0x0570, 0x0584, 0x0598, 0x0598, 0x05a8, 0x05ae, 0x05ae,
+ 0x05ae, 0x05ae, 0x05c0, 0x05ee, 0x05ee, 0x05ee, 0x05f6, 0x05f6,
+ 0x0606, 0x0606, 0x0616, 0x0624, 0x0638, 0x0638, 0x0638, 0x065b,
+ 0x066b, 0x066b, 0x066b, 0x066b, 0x067d, 0x069a, 0x069a, 0x069a,
+ 0x06aa, 0x06b6, 0x06b6, 0x06c6, 0x06f4, 0x06f4, 0x06f4, 0x0702,
+ // Entry 80 - BF
+ 0x0702, 0x0702, 0x0702, 0x0714, 0x0714, 0x0728, 0x0743, 0x0755,
+ 0x0780, 0x07a1, 0x07c2, 0x07d6, 0x07d6, 0x07e5, 0x0801, 0x0813,
+ 0x0813, 0x0813, 0x0821, 0x0833, 0x0845, 0x0859, 0x0865, 0x087b,
+ 0x0889, 0x0889, 0x08a1, 0x08ab, 0x08c4, 0x08c4, 0x08c4, 0x08e3,
+ 0x0924, 0x092c, 0x093a, 0x093a, 0x0942, 0x0953, 0x0959, 0x097e,
+} // Size: 360 bytes
+
+var azScriptStr string = "" + // Size: 1043 bytes
+ "ərəbarmierməniavestanbalibatakbenqalblissymbolsbopomofobrahmibraylbuqinb" +
+ "uhidkakmbirləşmiş kanada yerli yazısıkariyançamçirokisirtkoptikkiprkiril" +
+ "qədimi kilsa kirilidevanaqarideseretmisir demotikmisir hiyeratikmisir hi" +
+ "yeroqlifefiopgürcü xutsurigürcüqlaqolitikqotikyunanqucaratqurmuxihanqılh" +
+ "anhanunuSadələşdirilmiş HanƏnənəvi Hanibraniiraqanapahav monqkatakana və" +
+ "ya hiraqanaqədimi macarhindistanqədimi italyalıcavayaponkayax likatakana" +
+ "xaroştikxmerkannadakoreyaktilannalaofraktur latınıgael latınılatınlepçəl" +
+ "imbulusianludianmandayenmaniçayenmaya hiyeroqlifimeroytikmalayalammonqol" +
+ "munmeytey mayekmyanmarnkooğamol çikiorxonoriyaosmanyaqədimi permikfaqs-p" +
+ "afliflpkitab paxlavifoenikpolard fonetikprtirecəngronqoronqoruniksamarit" +
+ "ansaratisaurastraişarət yazısışavyansinhalsundansiloti nəqrisiryakestran" +
+ "gela süryanicetaqbanvatay letəzə tay lutamiltavtteluqutengvartifinaqtaqa" +
+ "loqthanataytibetuqaritvaydanışma səsləriqədimi farssumer-akadyan kuneyfo" +
+ "rmyizmthsimvollaryazısızümumi yazınaməlum skript"
+
+var azScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0011, 0x0018,
+ 0x001c, 0x001c, 0x001c, 0x0021, 0x0027, 0x0032, 0x003a, 0x0040,
+ 0x0045, 0x004a, 0x004f, 0x0053, 0x0075, 0x007c, 0x0080, 0x0087,
+ 0x008b, 0x0091, 0x0095, 0x009a, 0x00ae, 0x00b8, 0x00bf, 0x00bf,
+ 0x00cc, 0x00db, 0x00eb, 0x00eb, 0x00f0, 0x00ff, 0x0106, 0x0110,
+ 0x0115, 0x0115, 0x011a, 0x0121, 0x0128, 0x012f, 0x0132, 0x0138,
+ 0x014f, 0x015d, 0x015d, 0x0163, 0x016a, 0x016a, 0x0174, 0x018b,
+ 0x0198, 0x01a1, 0x01b2, 0x01b6, 0x01bb, 0x01bb, 0x01c3, 0x01cb,
+ // Entry 40 - 7F
+ 0x01d3, 0x01d8, 0x01d8, 0x01df, 0x01e5, 0x01e5, 0x01e8, 0x01ed,
+ 0x01f0, 0x0200, 0x020d, 0x0213, 0x021a, 0x021f, 0x021f, 0x021f,
+ 0x021f, 0x021f, 0x0225, 0x022b, 0x022b, 0x0233, 0x023d, 0x024d,
+ 0x024d, 0x024d, 0x0255, 0x025e, 0x025e, 0x0264, 0x0267, 0x0267,
+ 0x0273, 0x0273, 0x027a, 0x027a, 0x027a, 0x027a, 0x027d, 0x027d,
+ 0x0282, 0x028a, 0x028f, 0x0294, 0x029b, 0x029b, 0x029b, 0x02a9,
+ 0x02b0, 0x02b3, 0x02b6, 0x02c3, 0x02c9, 0x02d7, 0x02db, 0x02e2,
+ 0x02ec, 0x02f1, 0x02fa, 0x0300, 0x0300, 0x0309, 0x031a, 0x0321,
+ // Entry 80 - BF
+ 0x0321, 0x0321, 0x0321, 0x0327, 0x0327, 0x032d, 0x033a, 0x0340,
+ 0x0355, 0x0355, 0x0355, 0x035d, 0x035d, 0x0363, 0x0370, 0x0375,
+ 0x0375, 0x0379, 0x037f, 0x0386, 0x038d, 0x0394, 0x0399, 0x039c,
+ 0x03a1, 0x03a1, 0x03a7, 0x03aa, 0x03bd, 0x03bd, 0x03bd, 0x03c9,
+ 0x03e0, 0x03e2, 0x03e2, 0x03e6, 0x03ef, 0x03f8, 0x0404, 0x0413,
+} // Size: 360 bytes
+
+var bgScriptStr string = "" + // Size: 2324 bytes
+ "арабскаАрамейскаарменскаАвестанскаБалийскиБатакскабенгалскаБлис символиб" +
+ "опомофоБрахмиБрайловаБугинскаБухидЧакмаУнифицирани символи на канадски " +
+ "аборигениКарийскаХамитскаЧерокиКиртКоптскаКипърскакирилицадеванагариДез" +
+ "еретЕгипетско демотично писмоЕгипетско йератично писмоЕгипетски йерогли" +
+ "фиетиопскаГрузинска хуцуригрузинскаГлаголическаГотическагръцкагуджарати" +
+ "гурмукхихангълкитайскаХанунуопростен китайскитрадиционен китайскиивритх" +
+ "ираганаПахау хмонгКатакана или ХираганаСтароунгарскаХарапскаДревно итал" +
+ "ийскаЯванскаяпонскаКая ЛикатаканаКхароштхикхмерскаканнадакорейскаКайтхи" +
+ "ЛанналаоскаЛатинска фрактураГалска латинскалатиницаЛепчаЛимбуЛинейна АЛ" +
+ "инейна БЛицийскаЛидийскаМандаринскаМанихейскаЙероглифи на МаитеМероитск" +
+ "амалаяламмонголскаМунМанипурибирманскаН’КоОгамическаОл ЧикиОрхоно-енисе" +
+ "йскаорияОсманскаДревно пермскаФагс-паПахлавскаФиникийскаПисменост Полар" +
+ "дРонго-ронгоРуническаСамаританскаСаратиСаураштрасинхалскаСунданскаСилот" +
+ "и НагриСирийскаСирийска естрангелоЗападна сирийскаИзточна сирийскаТагба" +
+ "нваТай ЛеНова Тай ЛетамилскателугуТагалогтаанатайскатибетскаУгаритскаВа" +
+ "йскаВидима речСтароперсийскаШумеро-акадски клинописЙиМатематически симв" +
+ "олисимволибез писменостобщанепозната писменост"
+
+var bgScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0020, 0x0030, 0x0044,
+ 0x0054, 0x0054, 0x0054, 0x0064, 0x0076, 0x008d, 0x009d, 0x00a9,
+ 0x00b9, 0x00c9, 0x00d3, 0x00dd, 0x012b, 0x013b, 0x014b, 0x0157,
+ 0x015f, 0x016d, 0x017d, 0x018d, 0x018d, 0x01a1, 0x01af, 0x01af,
+ 0x01df, 0x020f, 0x0234, 0x0234, 0x0244, 0x0263, 0x0275, 0x028d,
+ 0x029f, 0x029f, 0x02ab, 0x02bd, 0x02cd, 0x02d9, 0x02e9, 0x02f5,
+ 0x0316, 0x033d, 0x033d, 0x0347, 0x0357, 0x0357, 0x036c, 0x0394,
+ 0x03ae, 0x03be, 0x03dd, 0x03eb, 0x03f9, 0x03f9, 0x0404, 0x0414,
+ // Entry 40 - 7F
+ 0x0426, 0x0436, 0x0436, 0x0444, 0x0454, 0x0454, 0x0460, 0x046a,
+ 0x0476, 0x0497, 0x04b4, 0x04c4, 0x04ce, 0x04d8, 0x04e9, 0x04fa,
+ 0x04fa, 0x04fa, 0x050a, 0x051a, 0x051a, 0x0530, 0x0544, 0x0566,
+ 0x0566, 0x0566, 0x0578, 0x0588, 0x0588, 0x059a, 0x05a0, 0x05a0,
+ 0x05b0, 0x05b0, 0x05c2, 0x05c2, 0x05c2, 0x05c2, 0x05cb, 0x05cb,
+ 0x05df, 0x05ec, 0x060b, 0x0613, 0x0623, 0x0623, 0x0623, 0x063e,
+ 0x064b, 0x064b, 0x064b, 0x065d, 0x0671, 0x0690, 0x0690, 0x0690,
+ 0x06a5, 0x06b7, 0x06cf, 0x06db, 0x06db, 0x06ed, 0x06ed, 0x06ed,
+ // Entry 80 - BF
+ 0x06ed, 0x06ed, 0x06ed, 0x06ff, 0x06ff, 0x0711, 0x0728, 0x0738,
+ 0x075d, 0x077c, 0x079b, 0x07ab, 0x07ab, 0x07b6, 0x07ca, 0x07da,
+ 0x07da, 0x07da, 0x07e6, 0x07e6, 0x07e6, 0x07f4, 0x07fe, 0x080a,
+ 0x081a, 0x081a, 0x082c, 0x0838, 0x084b, 0x084b, 0x084b, 0x0867,
+ 0x0893, 0x0897, 0x0897, 0x08c0, 0x08ce, 0x08e7, 0x08ef, 0x0914,
+} // Size: 360 bytes
+
+var bnScriptStr string = "" + // Size: 3576 bytes
+ "আরবিআরমিআর্মেনীয়আভেসতানবালীয়বাটাকবাংলাব্লিসপ্রতীকবোপোমোফোব্রাহ্মীব্রেই" +
+ "লবুগিবুহিডচাকমাসংযুক্ত কানাডিয়ান অ্যাব্রোজিনিয়ান সিলেবিক্সক্যারিয়ান" +
+ "চ্যামচেরোকিকির্টকোপ্টিকসাইপ্রোয়েটসিরিলিকপ্রাচীন চার্চ স্লাভোনিক সিরিল" +
+ "িকদেবনাগরিদেসেরাতমিশরীয় ডেমোটিকমিশরীয় হায়রেটিকমিশরীয় হায়ারোগ্লিপই" +
+ "থিওপিয়জর্জিয় খুৎসুরিজর্জিয়ানগ্লাগোলিটিকগোথিকগ্রিকগুজরাটিগুরুমুখিহাঙ" +
+ "্গুলহ্যানহ্যানুনুসরলিকৃত হ্যানঐতিহ্যবাহী হ্যানহিব্রুহিরাগানাফাহাও মঙকা" +
+ "টাকানা অথবা হিরাগানাপুরোনো হাঙ্গেরীয়সিন্ধুপ্রাচীন ইতালিজাভানিজজাপানীক" +
+ "ায়াহ লিকাটাকানাখরোষ্ঠীখমেরকানাড়াকোরিয়ানকাইথিলান্নালাওফ্রাক্টুর ল্যা" +
+ "টিনগ্যালিক ল্যাটিনল্যাটিনলেপ্চালিম্বুলিনিয়ার এলিনিয়ার বিলাইসিয়ানলাই" +
+ "ডিয়ানম্যান্ডায়ীনম্যানিচাইনমায়ান হায়ারোগ্লিপমেরোইটিকমালায়ালামমোঙ্গ" +
+ "োলীয়মুনমেইটেই মায়েকমায়ানমারএনকোওঘামওল চিকিঅর্খোনওড়িয়াওসমানিয়প্রা" +
+ "চীন পার্মিকফাগ্স-পাখদিত পাহলভিসল্টার পাহলভিপুস্তক পাহলভিফিনিশিয়পোলার্" +
+ "ড ধ্বনিকপার্থিয়নরেজ্যাঙ্গরোঙ্গোরোঙ্গোরুনিকসমেরিটনসারাতিসৌরাষ্ট্রচিহ্ন" +
+ " লিখনসাভিয়ানসিংহলিসান্দানিজসিলেটি নাগরিসিরিয়াকএস্ট্রেঙ্গেলো সিরিয়াকপশ" +
+ "্চিমাঞ্চলীয় সিরিয়াকপূর্বাঞ্চলীয় সিরিয়াকটাগোওয়ানাতাইলেনতুন তাই লুত" +
+ "ামিলতাই ভিয়েৎতেলেগুতেঙ্গোয়ারতিফিনাগটাগালগথানাথাইতিব্বতিউগারিটিকভাইদৃ" +
+ "শ্যমান ভাষাপ্রাচীন ফার্সিসুমের-আক্কাদীয় কীলকরূপউইকাইগানিতিক চিহ্নপ্রত" +
+ "ীকসমুহঅলিখিতসাধারনঅজানা লিপি"
+
+var bnScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0018, 0x0033, 0x0048,
+ 0x005a, 0x005a, 0x005a, 0x0069, 0x0078, 0x0099, 0x00b1, 0x00c9,
+ 0x00db, 0x00e7, 0x00f6, 0x0105, 0x0186, 0x01a4, 0x01b3, 0x01c5,
+ 0x01d4, 0x01e9, 0x020a, 0x021f, 0x0276, 0x028e, 0x02a3, 0x02a3,
+ 0x02ce, 0x02ff, 0x0339, 0x0339, 0x0351, 0x037c, 0x0397, 0x03b8,
+ 0x03c7, 0x03c7, 0x03d6, 0x03eb, 0x0403, 0x0418, 0x0427, 0x043f,
+ 0x0464, 0x0492, 0x0492, 0x04a4, 0x04bc, 0x04bc, 0x04d2, 0x0510,
+ 0x0541, 0x0553, 0x0578, 0x058d, 0x059f, 0x059f, 0x05b8, 0x05d0,
+ // Entry 40 - 7F
+ 0x05e5, 0x05f1, 0x05f1, 0x0606, 0x061e, 0x061e, 0x062d, 0x063f,
+ 0x0648, 0x0679, 0x06a4, 0x06b9, 0x06cb, 0x06dd, 0x06f9, 0x0718,
+ 0x0718, 0x0718, 0x0733, 0x074e, 0x074e, 0x0772, 0x0790, 0x07c7,
+ 0x07c7, 0x07c7, 0x07df, 0x07fd, 0x07fd, 0x081b, 0x0824, 0x0824,
+ 0x0849, 0x0849, 0x0864, 0x0864, 0x0864, 0x0864, 0x0870, 0x0870,
+ 0x087c, 0x088f, 0x08a1, 0x08b6, 0x08ce, 0x08ce, 0x08ce, 0x08f9,
+ 0x090f, 0x092e, 0x0953, 0x0978, 0x0990, 0x09b8, 0x09d3, 0x09ee,
+ 0x0a12, 0x0a21, 0x0a36, 0x0a48, 0x0a48, 0x0a63, 0x0a7f, 0x0a97,
+ // Entry 80 - BF
+ 0x0a97, 0x0a97, 0x0a97, 0x0aa9, 0x0aa9, 0x0ac4, 0x0ae6, 0x0afe,
+ 0x0b3e, 0x0b81, 0x0bc1, 0x0bdf, 0x0bdf, 0x0bee, 0x0c0b, 0x0c1a,
+ 0x0c1a, 0x0c36, 0x0c48, 0x0c66, 0x0c7b, 0x0c8d, 0x0c99, 0x0ca2,
+ 0x0cb7, 0x0cb7, 0x0ccf, 0x0cd8, 0x0cfd, 0x0cfd, 0x0cfd, 0x0d25,
+ 0x0d66, 0x0d6c, 0x0d75, 0x0d9a, 0x0db8, 0x0dca, 0x0ddc, 0x0df8,
+} // Size: 360 bytes
+
+var caScriptStr string = "" + // Size: 1535 bytes
+ "afakaàrabarameu imperialarmeniavèsticbalinèsbamumbassa vahbatakbengalísí" +
+ "mbols Blissbopomofobrahmibraillebuginèsbuhidchakmasíl·labes dels aboríge" +
+ "ns canadencs unificatscariàchamcherokeecirthcoptexipriotaciríl·licciríl·" +
+ "lic de l’antic eslau eclesiàsticdevanagarideserettaquigrafia Duployédemò" +
+ "tic egipcihieràtic egipcijeroglífic egipcietiòpicgeorgià hucurigeorgiàgl" +
+ "agolíticgòticgranthagrecgujaratigurmukhihangulhanhanunoohan simplificath" +
+ "an tradicionalhebreuhiraganajeroglífic anatolipahawh hmongkatakana o hir" +
+ "aganahongarès anticescriptura de la vall de l’Induscursiva antigajavanès" +
+ "japonèsjürchenkayah likatakanakharosthikhmerkhojakannadacoreàkpellekaith" +
+ "ilannalaollatí frakturllatí gaèlicllatílepchalimbulineal Alineal Blisulo" +
+ "malicilidimandaicmaniqueujeroglífics maiesmendecursiva meroíticameroític" +
+ "malaiàlammongolmoonmromanipuríbirmàantic nord-aràbicnabateugeban’Konü sh" +
+ "uoghamsantaliorkhonoriyaosmanyapalmirèantic pèrmicphagspapahlavi inscrip" +
+ "cionalpsalter pahlavipahlavifenicipollard miaoparthià inscripcionalrejan" +
+ "grongo-rongorúnicsamaritàsaratisud-aràbic anticsaurashtraescriptura de s" +
+ "ignesshaviàshradadevangarisingalèssora sompengsundanèssyloti nagrisiríac" +
+ "siríac estrangelosiríac occidentalsiríac orientaltagbanwatakritai lenou " +
+ "tai luetàmiltanguttai viettelugutengwartifinaghtagàlogthaanatailandèstib" +
+ "etàtirhutugaríticvaillenguatge visiblevarang kshitiwoleaipersa anticcune" +
+ "ïforme sumeri-accadiyiheretatnotació matemàticasímbolssense escripturac" +
+ "omúescriptura desconeguda"
+
+var caScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0005, 0x0005, 0x000a, 0x0019, 0x001f, 0x0027,
+ 0x002f, 0x0034, 0x003d, 0x0042, 0x004a, 0x0058, 0x0060, 0x0066,
+ 0x006d, 0x0075, 0x007a, 0x0080, 0x00af, 0x00b5, 0x00b9, 0x00c1,
+ 0x00c6, 0x00cb, 0x00d3, 0x00de, 0x0109, 0x0113, 0x011a, 0x012e,
+ 0x013d, 0x014d, 0x015f, 0x015f, 0x0167, 0x0176, 0x017e, 0x0189,
+ 0x018f, 0x0196, 0x019a, 0x01a2, 0x01aa, 0x01b0, 0x01b3, 0x01ba,
+ 0x01c9, 0x01d8, 0x01d8, 0x01de, 0x01e6, 0x01f9, 0x0205, 0x0218,
+ 0x0227, 0x0249, 0x0257, 0x025f, 0x0267, 0x026f, 0x0277, 0x027f,
+ // Entry 40 - 7F
+ 0x0288, 0x028d, 0x0292, 0x0299, 0x029f, 0x02a5, 0x02ab, 0x02b0,
+ 0x02b3, 0x02c1, 0x02cf, 0x02d5, 0x02db, 0x02e0, 0x02e8, 0x02f0,
+ 0x02f4, 0x02f8, 0x02fc, 0x0300, 0x0300, 0x0307, 0x030f, 0x0321,
+ 0x0326, 0x0338, 0x0341, 0x034b, 0x034b, 0x0351, 0x0355, 0x0358,
+ 0x0361, 0x0361, 0x0367, 0x0379, 0x0380, 0x0384, 0x038a, 0x0391,
+ 0x0396, 0x039d, 0x03a3, 0x03a8, 0x03af, 0x03b7, 0x03b7, 0x03c4,
+ 0x03cb, 0x03e0, 0x03ef, 0x03f6, 0x03fc, 0x0408, 0x041e, 0x0424,
+ 0x042f, 0x0435, 0x043e, 0x0444, 0x0455, 0x045f, 0x0473, 0x047a,
+ // Entry 80 - BF
+ 0x0480, 0x0480, 0x0489, 0x0492, 0x049e, 0x04a7, 0x04b3, 0x04ba,
+ 0x04cc, 0x04de, 0x04ee, 0x04f6, 0x04fb, 0x0501, 0x050c, 0x0512,
+ 0x0518, 0x0520, 0x0526, 0x052d, 0x0535, 0x053d, 0x0543, 0x054d,
+ 0x0554, 0x055a, 0x0563, 0x0566, 0x0578, 0x0585, 0x058b, 0x0596,
+ 0x05af, 0x05b1, 0x05b8, 0x05cc, 0x05d4, 0x05e4, 0x05e9, 0x05ff,
+} // Size: 360 bytes
+
+var csScriptStr string = "" + // Size: 1891 bytes
+ "afakakavkazskoalbánskéarabskéaramejské (imperiální)arménskéavestánskébal" +
+ "ijskébamumskébassa vahbatackébengálskéBlissovo písmobopomofobráhmíBraill" +
+ "ovo písmobuginskébuhidskéčakmaslabičné písmo kanadských domorodcůkarijsk" +
+ "éčamčerokíkirtkoptskékyperskécyrilicecyrilce - staroslověnskádévanágárí" +
+ "deseretDuployého těsnopisegyptské démotickéegyptské hieratickéegyptské h" +
+ "ieroglyfyelbasanskéetiopskégruzínské chutsurigruzínskéhlaholicegotickégr" +
+ "anthařeckégudžarátígurmukhihangulhanhanunóohan (zjednodušené)han (tradič" +
+ "ní)hebrejskéhiraganaanatolské hieroglyfyhmongskéjaponské slabičnéstaroma" +
+ "ďarskéharappskéetruskéjavánskéjaponskédžürčenskékayah likatakanakháróšt" +
+ "híkhmerskéchodžikikannadskékorejskékpellekaithilannalaoskélatinka - lome" +
+ "nálatinka - galskálatinkalepčskélimbulineární Alineární BFraserovolomalý" +
+ "kijskélýdskémahádžanímandejskémanichejskémayské hieroglyfymendskémeroiti" +
+ "cké psacímeroitickémalajlámskémodímongolskéMoonovomromejtej majek (manip" +
+ "urské)myanmarskéstaroseveroarabskénabatejskénaxi geban’konü-šuogamskésan" +
+ "tálské (ol chiki)orchonskéurijskéosmansképalmýrsképau cin haustaropermsk" +
+ "éphags-papahlavské klínovépahlavské žalmovépahlavské knižnífénickéPolla" +
+ "rdova fonetická abecedaparthské klínovéredžanskérongorongorunovésamařské" +
+ "saratistarojihoarabskésaurášterskéSignWritingShawova abecedašáradásiddha" +
+ "mchudábádísinhálskésora sompengsundskésylhetskésyrskésyrské - estrangelo" +
+ "syrské - západnísyrské - východnítagbanwatakrítai letai lü novétamilskét" +
+ "anguttai viettelugskétengwarberberskétagalskéthaanathajskétibetskétirhut" +
+ "augaritské klínovévaividitelná řečvarang kšitikarolínské (woleai)starope" +
+ "rské klínové písmosumero-akkadské klínové písmoyimatematický zápissymbol" +
+ "ybez zápisuobecnéneznámé písmo"
+
+var csScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0018, 0x0018, 0x0020, 0x0039, 0x0043, 0x004f,
+ 0x0058, 0x0061, 0x006a, 0x0072, 0x007d, 0x008c, 0x0094, 0x009c,
+ 0x00ac, 0x00b5, 0x00be, 0x00c4, 0x00ec, 0x00f5, 0x00f9, 0x0101,
+ 0x0105, 0x010d, 0x0116, 0x011e, 0x0138, 0x0146, 0x014d, 0x0161,
+ 0x0176, 0x018b, 0x019f, 0x01aa, 0x01b3, 0x01c7, 0x01d2, 0x01db,
+ 0x01e3, 0x01ea, 0x01f1, 0x01fd, 0x0205, 0x020b, 0x020e, 0x0216,
+ 0x022a, 0x023a, 0x023a, 0x0244, 0x024c, 0x0261, 0x026a, 0x027e,
+ 0x028d, 0x0297, 0x029f, 0x02a9, 0x02b2, 0x02c0, 0x02c8, 0x02d0,
+ // Entry 40 - 7F
+ 0x02dd, 0x02e6, 0x02ef, 0x02f9, 0x0302, 0x0308, 0x030e, 0x0313,
+ 0x031a, 0x032b, 0x033c, 0x0343, 0x034c, 0x0351, 0x035d, 0x0369,
+ 0x0372, 0x0376, 0x0380, 0x0388, 0x0394, 0x039e, 0x03aa, 0x03bc,
+ 0x03c4, 0x03d6, 0x03e1, 0x03ee, 0x03f3, 0x03fd, 0x0404, 0x0407,
+ 0x0421, 0x0421, 0x042c, 0x043f, 0x044a, 0x0453, 0x0459, 0x0460,
+ 0x0468, 0x047e, 0x0488, 0x0490, 0x0499, 0x04a4, 0x04af, 0x04bc,
+ 0x04c4, 0x04d8, 0x04ec, 0x04ff, 0x0508, 0x0525, 0x0538, 0x0543,
+ 0x054d, 0x0554, 0x055e, 0x0564, 0x0575, 0x0584, 0x058f, 0x059e,
+ // Entry 80 - BF
+ 0x05a7, 0x05ae, 0x05ba, 0x05c5, 0x05d1, 0x05d9, 0x05e3, 0x05ea,
+ 0x05fe, 0x0611, 0x0625, 0x062d, 0x0633, 0x0639, 0x0646, 0x064f,
+ 0x0655, 0x065d, 0x0666, 0x066d, 0x0677, 0x0680, 0x0686, 0x068e,
+ 0x0697, 0x069e, 0x06b2, 0x06b5, 0x06c5, 0x06d2, 0x06e7, 0x0704,
+ 0x0725, 0x0727, 0x0727, 0x073a, 0x0741, 0x074c, 0x0753, 0x0763,
+} // Size: 360 bytes
+
+var daScriptStr string = "" + // Size: 1443 bytes
+ "afakaarabiskarmiarmenskavestanskbalinesiskbamumbassabatakbengaliblissymb" +
+ "olerbopomofobramiskbrailleskriftbuginesiskbuhidcakmoprindelige canadiske" +
+ " symbolerkarianskchamcherokeecirtkoptiskcypriotiskkyrilliskkyrillisk - o" +
+ "ldkirkeslavisk variantdevanagarideseretDuploya-stenografiegyptisk demoti" +
+ "skegyptisk hieratiskegyptiske hieroglyfferetiopiskgeorgisk kutsurigeorgi" +
+ "skglagolitiskgotiskgranthagræskgujaratigurmukhihangulhanhanunooforenklet" +
+ " hantraditionelt hanhebraiskhiraganaanatolske hieroglyfferpahawh hmongka" +
+ "takana eller hiraganaoldungarskindusOlditaliskjavanesiskjapanskjurchenka" +
+ "ya likatakanakharoshtikhmerkhojkikannadakoreanskkpellekthilannalaolatins" +
+ "k - frakturvariantlatinsk - gælisk variantlatinsklepchalimbulineær Aline" +
+ "ær Blisulomalykisklydiskmandaiskmanikæiskmayahieroglyffermendemetroitis" +
+ "k sammenhængendemeroitiskmalayalammongolskmoonmroomeitei-mayekburmesiskg" +
+ "ammelt nordarabisknabateisknakhi geban’konüshuoghamol-chikiorkhonoriyaos" +
+ "manniskpalmyrenskoldpermiskphags-paphliphlppahlavifønikiskpollardtegnprt" +
+ "irejangrongo-rongorunersamaritansksaratioldsørarabisksaurashtrategnskrif" +
+ "tshavisksharadakhudawadisingalesisksorasundanesisksyloti nagrisyrisksyri" +
+ "sk - estrangelovariantvestsyriskøstsyriakisktagbanwatakritai letai lueta" +
+ "milsktanguttavttelugutengwartifinaghtagalogthaanathailandsktibetansktirh" +
+ "utaugaritiskvaisynlig talevarang kshitiwoleaioldpersisksumero-akkadisk c" +
+ "uneiformyiarvetzmthzsymuden skriftsprogfællesukendt skriftsprog"
+
+var daScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0005, 0x0005, 0x000c, 0x0010, 0x0017, 0x0020,
+ 0x002a, 0x002f, 0x0034, 0x0039, 0x0040, 0x004c, 0x0054, 0x005b,
+ 0x0068, 0x0072, 0x0077, 0x007b, 0x0099, 0x00a1, 0x00a5, 0x00ad,
+ 0x00b1, 0x00b8, 0x00c2, 0x00cb, 0x00ee, 0x00f8, 0x00ff, 0x0111,
+ 0x0122, 0x0134, 0x014a, 0x014a, 0x0152, 0x0162, 0x016a, 0x0175,
+ 0x017b, 0x0182, 0x0188, 0x0190, 0x0198, 0x019e, 0x01a1, 0x01a8,
+ 0x01b5, 0x01c5, 0x01c5, 0x01cd, 0x01d5, 0x01eb, 0x01f7, 0x020e,
+ 0x0218, 0x021d, 0x0227, 0x0231, 0x0238, 0x023f, 0x0246, 0x024e,
+ // Entry 40 - 7F
+ 0x0257, 0x025c, 0x0262, 0x0269, 0x0271, 0x0277, 0x027b, 0x0280,
+ 0x0283, 0x029b, 0x02b4, 0x02bb, 0x02c1, 0x02c6, 0x02cf, 0x02d8,
+ 0x02dc, 0x02e0, 0x02e6, 0x02ec, 0x02ec, 0x02f4, 0x02fe, 0x030e,
+ 0x0313, 0x032d, 0x0336, 0x033f, 0x033f, 0x0347, 0x034b, 0x034f,
+ 0x035b, 0x035b, 0x0364, 0x0377, 0x0380, 0x038a, 0x0390, 0x0396,
+ 0x039b, 0x03a3, 0x03a9, 0x03ae, 0x03b7, 0x03c1, 0x03c1, 0x03cb,
+ 0x03d3, 0x03d7, 0x03db, 0x03e2, 0x03eb, 0x03f6, 0x03fa, 0x0400,
+ 0x040b, 0x0410, 0x041b, 0x0421, 0x042f, 0x0439, 0x0443, 0x044a,
+ // Entry 80 - BF
+ 0x0451, 0x0451, 0x045a, 0x0465, 0x0469, 0x0474, 0x0480, 0x0486,
+ 0x04a0, 0x04aa, 0x04b7, 0x04bf, 0x04c4, 0x04ca, 0x04d1, 0x04d8,
+ 0x04de, 0x04e2, 0x04e8, 0x04ef, 0x04f7, 0x04fe, 0x0504, 0x050e,
+ 0x0517, 0x051e, 0x0527, 0x052a, 0x0535, 0x0542, 0x0548, 0x0552,
+ 0x056b, 0x056d, 0x0572, 0x0576, 0x057a, 0x058a, 0x0591, 0x05a3,
+} // Size: 360 bytes
+
+var deScriptStr string = "" + // Size: 1682 bytes
+ "AfakaKaukasisch-AlbanischArabischArmiArmenischAvestischBalinesischBamunB" +
+ "assaBattakischBengalischBliss-SymboleBopomofoBrahmiBlindenschriftBugines" +
+ "ischBuhidChakmaUCASKarischChamCherokeeCirthKoptischZypriotischKyrillisch" +
+ "AltkirchenslawischDevanagariDeseretDuployanischÄgyptisch - DemotischÄgyp" +
+ "tisch - HieratischÄgyptische HieroglyphenElbasanischÄthiopischKhutsuriGe" +
+ "orgischGlagolitischGotischGranthaGriechischGujaratiGurmukhiHangulChinesi" +
+ "schHanunooVereinfachtes ChinesischTraditionelles ChinesischHebräischHira" +
+ "ganaHieroglyphen-LuwischPahawh HmongKatakana oder HiraganaAltungarischIn" +
+ "dus-SchriftAltitalischJavanesischJapanischJurchenKayah LiKatakanaKharosh" +
+ "thiKhmerKhojkiKannadaKoreanischKpelleKaithiLannaLaotischLateinisch - Fra" +
+ "ktur-VarianteLateinisch - Gälische VarianteLateinischLepchaLimbuLinear A" +
+ "Linear BFraserLomaLykischLydischMahajaniMandäischManichäischMaya-Hierogl" +
+ "yphenMendeMeroitisch kursivMeroitischMalayalamModiMongolischMoonMroMeite" +
+ "i MayekBirmanischAltnordarabischNabatäischGebaN’KoFrauenschriftOghamOl C" +
+ "hikiOrchon-RunenOriyaOsmanischPalmyrenischPau Cin HauAltpermischPhags-pa" +
+ "Buch-PahlaviPsalter-PahlaviPahlaviPhönizischPollard PhonetischParthischR" +
+ "ejangRongorongoRunenschriftSamaritanischSaratiAltsüdarabischSaurashtraGe" +
+ "bärdenspracheShaw-AlphabetSharadaSiddhamKhudawadiSinghalesischSora Sompe" +
+ "ngSundanesischSyloti NagriSyrischSyrisch - Estrangelo-VarianteWestsyrisc" +
+ "hOstsyrischTagbanwaTakriTai LeTai LueTamilischXixiaTai-VietTeluguTengwar" +
+ "TifinaghTagalogThaanaThaiTibetischTirhutaUgaritischVaiSichtbare SpracheV" +
+ "arang KshitiWoleaianischAltpersischSumerisch-akkadische KeilschriftYiGee" +
+ "rbter SchriftwertMathematische NotationSymboleSchriftlosUnbestimmtUnbeka" +
+ "nnte Schrift"
+
+var deScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0019, 0x0019, 0x0021, 0x0025, 0x002e, 0x0037,
+ 0x0042, 0x0047, 0x004c, 0x0056, 0x0060, 0x006d, 0x0075, 0x007b,
+ 0x0089, 0x0094, 0x0099, 0x009f, 0x00a3, 0x00aa, 0x00ae, 0x00b6,
+ 0x00bb, 0x00c3, 0x00ce, 0x00d8, 0x00ea, 0x00f4, 0x00fb, 0x0107,
+ 0x011d, 0x0134, 0x014c, 0x0157, 0x0162, 0x016a, 0x0173, 0x017f,
+ 0x0186, 0x018d, 0x0197, 0x019f, 0x01a7, 0x01ad, 0x01b7, 0x01be,
+ 0x01d6, 0x01ef, 0x01ef, 0x01f9, 0x0201, 0x0215, 0x0221, 0x0237,
+ 0x0243, 0x0250, 0x025b, 0x0266, 0x026f, 0x0276, 0x027e, 0x0286,
+ // Entry 40 - 7F
+ 0x0290, 0x0295, 0x029b, 0x02a2, 0x02ac, 0x02b2, 0x02b8, 0x02bd,
+ 0x02c5, 0x02e2, 0x0301, 0x030b, 0x0311, 0x0316, 0x031e, 0x0326,
+ 0x032c, 0x0330, 0x0337, 0x033e, 0x0346, 0x0350, 0x035c, 0x036d,
+ 0x0372, 0x0383, 0x038d, 0x0396, 0x039a, 0x03a4, 0x03a8, 0x03ab,
+ 0x03b7, 0x03b7, 0x03c1, 0x03d0, 0x03db, 0x03df, 0x03e5, 0x03f2,
+ 0x03f7, 0x03ff, 0x040b, 0x0410, 0x0419, 0x0425, 0x0430, 0x043b,
+ 0x0443, 0x044f, 0x045e, 0x0465, 0x0470, 0x0482, 0x048b, 0x0491,
+ 0x049b, 0x04a7, 0x04b4, 0x04ba, 0x04c9, 0x04d3, 0x04e3, 0x04f0,
+ // Entry 80 - BF
+ 0x04f7, 0x04fe, 0x0507, 0x0514, 0x0520, 0x052c, 0x0538, 0x053f,
+ 0x055c, 0x0567, 0x0571, 0x0579, 0x057e, 0x0584, 0x058b, 0x0594,
+ 0x0599, 0x05a1, 0x05a7, 0x05ae, 0x05b6, 0x05bd, 0x05c3, 0x05c7,
+ 0x05d0, 0x05d7, 0x05e1, 0x05e4, 0x05f5, 0x0602, 0x060e, 0x0619,
+ 0x0639, 0x063b, 0x064f, 0x0665, 0x066c, 0x0676, 0x0680, 0x0692,
+} // Size: 360 bytes
+
+var elScriptStr string = "" + // Size: 2635 bytes
+ "ΑραβικόΑυτοκρατορικό ΑραμαϊκόΑρμενικόΑβεστάνΜπαλινίζΜπατάκΜπενγκάλιΣύμβο" +
+ "λα BlissΜποπομόφοΜπραχμίΜπράιγΜπούγκιςΜπουχίντΤσάκμαΕνοποιημένοι Καναδε" +
+ "ζικοί Συλλαβισμοί ΙθαγενώνΚαριάνΤσαμΤσερόκιΣερθΚοπτικόΚυπριακόΚυριλλικό" +
+ "Παλαιό Εκκλησιαστικό Σλαβικό ΚυριλλικόΝτεβαναγκάριΝτεσερέΛαϊκό Αιγυπτια" +
+ "κόΙερατικό ΑιγυπτιακόΑιγυπτιακά ΙερογλυφικάΑιθιοπικόΓεωργιανό Κχουτσούρ" +
+ "ιΓεωργιανόΓκλαγκολιτικόΓοτθικόΕλληνικόΓκουγιαράτιΓκουρμουκχίΧανγκούλΧαν" +
+ "ΧανούνουΑπλοποιημένο ΧανΠαραδοσιακό ΧανΕβραϊκόΧιραγκάναΠαχάχ ΧμονγκΚατα" +
+ "κάνα ή ΧιραγκάναΠαλαιό ΟυγγρικόΊνδουςΠαλαιό ΙταλικόΙαβανεζικόΙαπωνικόΚα" +
+ "γιάχ ΛιΚατακάναΚαρόσθιΧμερΚανάνταΚορεατικόΚαϊθίΛάνναΛάοςΦράκτουρ Λατινι" +
+ "κόΓαελικό ΛατινικόΛατινικόΛέπτσαΛιμπούΓραμμικό ΑΓραμμικό ΒΛυκιανικόΛυδι" +
+ "ανικόΜανδαϊκόΜανιχαϊκόΙερογλυφικά ΜάγιαΜεροϊτικόΜαλαγιάλαμΜογγολικόΜουν" +
+ "Μεϊτέι ΜάγεκΜιανμάρΝ’ΚοΌγκχαμΟλ ΤσίκιΌρκχονΟρίγιαΟσμάνγιαΠαλαιό Περμικό" +
+ "Παγκς-παΕπιγραφικό ΠαχλάβιΨάλτερ ΠαχλάβιΜπουκ ΠαχλαβίΦοινικικόΦωνητικό " +
+ "ΠόλαρντΕπιγραφικό ΠαρθιάνΡετζάνγκΡονγκορόνγκοΡουνίκΣαμαριτικόΣαράθιΣαου" +
+ "ράστραΝοηματική γραφήΣαβιανόΣινχάλαΣουνδανικόΣυλότι ΝάγκριΣυριακόΕστραν" +
+ "τζέλο ΣυριακόΔυτικό ΣυριακόΑνατολικό ΣυριακόΤαγκμάνγουαΤάι ΛεΝέο Τάι Λο" +
+ "ύεΤαμίλΤάι ΒιέτΤελούγκουΤεγνγουάρΤιφινάγκΤαγκαλόγκΘαανάΤαϊλανδικόΘιβετι" +
+ "ανόΟυγκαριτικόΒάιΟρατή ομιλίαΠαλαιό ΠερσικόΣούμερο-Ακάντιαν ΚουνεϊφόρμΓ" +
+ "ιΚληρονομημένοΜαθηματική παράστασηΣύμβολαΆγραφοΚοινόΆγνωστη γραφή"
+
+var elScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0039, 0x0049, 0x0057,
+ 0x0067, 0x0067, 0x0067, 0x0073, 0x0085, 0x0099, 0x00ab, 0x00b9,
+ 0x00c5, 0x00d5, 0x00e5, 0x00f1, 0x0148, 0x0154, 0x015c, 0x016a,
+ 0x0172, 0x0180, 0x0190, 0x01a2, 0x01eb, 0x0203, 0x0211, 0x0211,
+ 0x0230, 0x0255, 0x0280, 0x0280, 0x0292, 0x02b9, 0x02cb, 0x02e5,
+ 0x02f3, 0x02f3, 0x0303, 0x0319, 0x032f, 0x033f, 0x0345, 0x0355,
+ 0x0374, 0x0391, 0x0391, 0x039f, 0x03b1, 0x03b1, 0x03c8, 0x03ee,
+ 0x040b, 0x0417, 0x0432, 0x0446, 0x0456, 0x0456, 0x0467, 0x0477,
+ // Entry 40 - 7F
+ 0x0485, 0x048d, 0x048d, 0x049b, 0x04ad, 0x04ad, 0x04b7, 0x04c1,
+ 0x04c9, 0x04ea, 0x0509, 0x0519, 0x0525, 0x0531, 0x0544, 0x0557,
+ 0x0557, 0x0557, 0x0569, 0x057b, 0x057b, 0x058b, 0x059d, 0x05be,
+ 0x05be, 0x05be, 0x05d0, 0x05e4, 0x05e4, 0x05f6, 0x05fe, 0x05fe,
+ 0x0615, 0x0615, 0x0623, 0x0623, 0x0623, 0x0623, 0x062c, 0x062c,
+ 0x0638, 0x0647, 0x0653, 0x065f, 0x066f, 0x066f, 0x066f, 0x068a,
+ 0x0699, 0x06bc, 0x06d7, 0x06f0, 0x0702, 0x0721, 0x0744, 0x0754,
+ 0x076c, 0x0778, 0x078c, 0x0798, 0x0798, 0x07ac, 0x07c9, 0x07d7,
+ // Entry 80 - BF
+ 0x07d7, 0x07d7, 0x07d7, 0x07e5, 0x07e5, 0x07f9, 0x0812, 0x0820,
+ 0x0845, 0x0860, 0x0881, 0x0897, 0x0897, 0x08a2, 0x08b8, 0x08c2,
+ 0x08c2, 0x08d1, 0x08e3, 0x08f5, 0x0905, 0x0917, 0x0921, 0x0935,
+ 0x0947, 0x0947, 0x095d, 0x0963, 0x097a, 0x097a, 0x097a, 0x0995,
+ 0x09c9, 0x09cd, 0x09e7, 0x0a0e, 0x0a1c, 0x0a28, 0x0a32, 0x0a4b,
+} // Size: 360 bytes
+
+var enScriptStr string = "" + // Size: 1531 bytes
+ "AfakaCaucasian AlbanianAhomArabicImperial AramaicArmenianAvestanBalinese" +
+ "BamumBassa VahBatakBengaliBlissymbolsBopomofoBrahmiBrailleBugineseBuhidC" +
+ "hakmaUnified Canadian Aboriginal SyllabicsCarianChamCherokeeCirthCopticC" +
+ "ypriotCyrillicOld Church Slavonic CyrillicDevanagariDeseretDuployan shor" +
+ "thandEgyptian demoticEgyptian hieraticEgyptian hieroglyphsElbasanEthiopi" +
+ "cGeorgian KhutsuriGeorgianGlagoliticGothicGranthaGreekGujaratiGurmukhiHa" +
+ "ngulHanHanunooSimplified HanTraditional HanHatranHebrewHiraganaAnatolian" +
+ " HieroglyphsPahawh HmongJapanese syllabariesOld HungarianIndusOld Italic" +
+ "JavaneseJapaneseJurchenKayah LiKatakanaKharoshthiKhmerKhojkiKannadaKorea" +
+ "nKpelleKaithiLannaLaoFraktur LatinGaelic LatinLatinLepchaLimbuLinear ALi" +
+ "near BFraserLomaLycianLydianMahajaniMandaeanManichaeanMayan hieroglyphsM" +
+ "endeMeroitic CursiveMeroiticMalayalamModiMongolianMoonMroMeitei MayekMul" +
+ "taniMyanmarOld North ArabianNabataeanNaxi GebaN’KoNüshuOghamOl ChikiOrkh" +
+ "onOriyaOsmanyaPalmyrenePau Cin HauOld PermicPhags-paInscriptional Pahlav" +
+ "iPsalter PahlaviBook PahlaviPhoenicianPollard PhoneticInscriptional Part" +
+ "hianRejangRongorongoRunicSamaritanSaratiOld South ArabianSaurashtraSignW" +
+ "ritingShavianSharadaSiddhamKhudawadiSinhalaSora SompengSundaneseSyloti N" +
+ "agriSyriacEstrangelo SyriacWestern SyriacEastern SyriacTagbanwaTakriTai " +
+ "LeNew Tai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaThaiTi" +
+ "betanTirhutaUgariticVaiVisible SpeechVarang KshitiWoleaiOld PersianSumer" +
+ "o-Akkadian CuneiformYiInheritedMathematical NotationSymbolsUnwrittenComm" +
+ "onUnknown Script"
+
+var enScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0017, 0x001b, 0x0021, 0x0031, 0x0039, 0x0040,
+ 0x0048, 0x004d, 0x0056, 0x005b, 0x0062, 0x006d, 0x0075, 0x007b,
+ 0x0082, 0x008a, 0x008f, 0x0095, 0x00ba, 0x00c0, 0x00c4, 0x00cc,
+ 0x00d1, 0x00d7, 0x00de, 0x00e6, 0x0102, 0x010c, 0x0113, 0x0125,
+ 0x0135, 0x0146, 0x015a, 0x0161, 0x0169, 0x017a, 0x0182, 0x018c,
+ 0x0192, 0x0199, 0x019e, 0x01a6, 0x01ae, 0x01b4, 0x01b7, 0x01be,
+ 0x01cc, 0x01db, 0x01e1, 0x01e7, 0x01ef, 0x0204, 0x0210, 0x0224,
+ 0x0231, 0x0236, 0x0240, 0x0248, 0x0250, 0x0257, 0x025f, 0x0267,
+ // Entry 40 - 7F
+ 0x0271, 0x0276, 0x027c, 0x0283, 0x0289, 0x028f, 0x0295, 0x029a,
+ 0x029d, 0x02aa, 0x02b6, 0x02bb, 0x02c1, 0x02c6, 0x02ce, 0x02d6,
+ 0x02dc, 0x02e0, 0x02e6, 0x02ec, 0x02f4, 0x02fc, 0x0306, 0x0317,
+ 0x031c, 0x032c, 0x0334, 0x033d, 0x0341, 0x034a, 0x034e, 0x0351,
+ 0x035d, 0x0364, 0x036b, 0x037c, 0x0385, 0x038e, 0x0394, 0x039a,
+ 0x039f, 0x03a7, 0x03ad, 0x03b2, 0x03b9, 0x03c2, 0x03cd, 0x03d7,
+ 0x03df, 0x03f4, 0x0403, 0x040f, 0x0419, 0x0429, 0x043f, 0x0445,
+ 0x044f, 0x0454, 0x045d, 0x0463, 0x0474, 0x047e, 0x0489, 0x0490,
+ // Entry 80 - BF
+ 0x0497, 0x049e, 0x04a7, 0x04ae, 0x04ba, 0x04c3, 0x04cf, 0x04d5,
+ 0x04e6, 0x04f4, 0x0502, 0x050a, 0x050f, 0x0515, 0x0520, 0x0525,
+ 0x052b, 0x0533, 0x0539, 0x0540, 0x0548, 0x054f, 0x0555, 0x0559,
+ 0x0560, 0x0567, 0x056f, 0x0572, 0x0580, 0x058d, 0x0593, 0x059e,
+ 0x05b7, 0x05b9, 0x05c2, 0x05d7, 0x05de, 0x05e7, 0x05ed, 0x05fb,
+} // Size: 360 bytes
+
+const enGBScriptStr string = ""
+
+var enGBScriptIdx = []uint16{ // 0 elements
+
+} // Size: 24 bytes
+
+var esScriptStr string = "" + // Size: 1165 bytes
+ "árabearmenioavésticobalinésbatakbengalísímbolos blisbopomofobrahmibraill" +
+ "ebuginésbuhidsímbolos aborígenes canadienses unificadoscariochamcherokee" +
+ "cirthcoptochipriotacirílicocirílico del antiguo eslavo eclesiásticodevan" +
+ "agarideseretegipcio demóticoegipcio hieráticojeroglíficos egipciosetiópi" +
+ "cogeorgiano eclesiásticogeorgianoglagolíticogóticogriegogujaratigurmujih" +
+ "angulhanhanunoohan simplificadohan tradicionalhebreohiraganapahawh hmong" +
+ "katakana o hiraganahúngaro antiguoIndio (harappan)antigua bastardillajav" +
+ "anésjaponéskayah likatakanakharosthijemercanaréscoreanolannalaolatino fr" +
+ "akturlatino gaélicolatínlepchalimbulineal Alineal Bliciolidiomandeojerog" +
+ "líficos mayasmeroíticomalayálammongolmoonmanipuribirmanon’kooghamol ciki" +
+ "orkhonoriyaosmaniyapermiano antiguophags-pafenicioPollard Miaorejangrong" +
+ "o-rongorúnicosaratisaurashtraSignWritingshavianocingaléssundanéssyloti n" +
+ "agrisiriacosiriaco estrangelosiriaco occidentalsiriaco orientaltagbanúat" +
+ "ai lenuevo tai luetamiltelugutengwartifinaghtagalothaanatailandéstibetan" +
+ "ougaríticovailenguaje visiblepersa antiguocuneiforme sumerio-acadioyiher" +
+ "edadosímbolosno escritocomúnalfabeto desconocido"
+
+var esScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, 0x0016,
+ 0x001e, 0x001e, 0x001e, 0x0023, 0x002b, 0x0039, 0x0041, 0x0047,
+ 0x004e, 0x0056, 0x005b, 0x005b, 0x0087, 0x008c, 0x0090, 0x0098,
+ 0x009d, 0x00a2, 0x00ab, 0x00b4, 0x00de, 0x00e8, 0x00ef, 0x00ef,
+ 0x0100, 0x0112, 0x0128, 0x0128, 0x0131, 0x0148, 0x0151, 0x015d,
+ 0x0164, 0x0164, 0x016a, 0x0172, 0x0179, 0x017f, 0x0182, 0x0189,
+ 0x0199, 0x01a8, 0x01a8, 0x01ae, 0x01b6, 0x01b6, 0x01c2, 0x01d5,
+ 0x01e5, 0x01f5, 0x0208, 0x0210, 0x0218, 0x0218, 0x0220, 0x0228,
+ // Entry 40 - 7F
+ 0x0231, 0x0236, 0x0236, 0x023e, 0x0245, 0x0245, 0x0245, 0x024a,
+ 0x024d, 0x025b, 0x026a, 0x0270, 0x0276, 0x027b, 0x0283, 0x028b,
+ 0x028b, 0x028b, 0x0290, 0x0295, 0x0295, 0x029b, 0x029b, 0x02ae,
+ 0x02ae, 0x02ae, 0x02b8, 0x02c2, 0x02c2, 0x02c8, 0x02cc, 0x02cc,
+ 0x02d4, 0x02d4, 0x02db, 0x02db, 0x02db, 0x02db, 0x02e1, 0x02e1,
+ 0x02e6, 0x02ed, 0x02f3, 0x02f8, 0x0300, 0x0300, 0x0300, 0x0310,
+ 0x0318, 0x0318, 0x0318, 0x0318, 0x031f, 0x032b, 0x032b, 0x0331,
+ 0x033c, 0x0343, 0x0343, 0x0349, 0x0349, 0x0353, 0x035e, 0x0366,
+ // Entry 80 - BF
+ 0x0366, 0x0366, 0x0366, 0x036f, 0x036f, 0x0378, 0x0384, 0x038b,
+ 0x039d, 0x03af, 0x03bf, 0x03c8, 0x03c8, 0x03ce, 0x03db, 0x03e0,
+ 0x03e0, 0x03e0, 0x03e6, 0x03ed, 0x03f5, 0x03fb, 0x0401, 0x040b,
+ 0x0413, 0x0413, 0x041d, 0x0420, 0x0430, 0x0430, 0x0430, 0x043d,
+ 0x0456, 0x0458, 0x0460, 0x0460, 0x0469, 0x0473, 0x0479, 0x048d,
+} // Size: 360 bytes
+
+const es419ScriptStr string = ""
+
+var es419ScriptIdx = []uint16{ // 0 elements
+
+} // Size: 24 bytes
+
+var etScriptStr string = "" + // Size: 1541 bytes
+ "afakaalbaaniahomiaraabiavanaarameaarmeeniaavestabalibamumibassabatakiben" +
+ "galiBlissi sümbolidbopomofobraahmipunktkiribugibuhiditšaakmaKanada põlis" +
+ "rahvaste ühtlustatud silpkirikaariatšaamitšerokiiCirthikoptiKüprose silp" +
+ "kirikirillitsakürilliline kirikuslaavidevanaagarideseretiDuployé kiirkir" +
+ "iegiptuse demootilineegiptuse hieraatilineegiptuse hieroglüüfkiriElbasan" +
+ "ietioopiahutsurigruusiaglagoolitsagootigranthakreekagudžaratigurmukhikor" +
+ "eahanihanunoolihtsustatud hanitraditsiooniline haniHatraheebreahiraganaA" +
+ "natoolia hieroglüüfkiriphahau-hmongi kirijaapani silpkirjadvanaungariInd" +
+ "usevanaitalijaavajaapanitšurtšenikaja-liikatakanakharoshthikhmeerihodžki" +
+ "kannadakorea segakirikpellekaithitai-thamilaoladina fraktuurkiriladina g" +
+ "aeliladinaleptšalimbulineaarkiri Alineaarkiri Blisulomalüükialüüdiamahaa" +
+ "džanimandeamanimaaja hieroglüüfkirimendemeroe kursiivkirimeroemalajalami" +
+ "modimongoliMoonimruumeiteiMultanibirmaPõhja-AraabiaNabateanasinkoonüšuog" +
+ "amsantaliOrhonioriaosmaniPalmyravanapermiphakpapahlavi raidkiripahlavi p" +
+ "salmikiripahlavi raamatukirifoiniikiaPollardi miaopartia raidkiriredžang" +
+ "irongorongoruunikiriSamaariasaratiLõuna-AraabiasauraštraviipekiriShaw’ k" +
+ "irišaaradasiddhamihudavadisingalisorasundasilotisüüriasüüria estrangelol" +
+ "äänesüüriaidasüüriatagbanvataakritai-lööuus tai-lõõtamilitanguuditai-vi" +
+ "etiteluguTengwaritifinagitagalogitaanataitiibetitirhutaugaritivainähtava" +
+ " kõnehoovoleaivanapärsiasumeri-akadi kiilkirijiipäritudmatemaatiline täh" +
+ "istussümbolidkirjakeeletaüldinemääramata kiri"
+
+var etScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x000c, 0x0011, 0x0018, 0x0022, 0x002a, 0x0030,
+ 0x0034, 0x003a, 0x003f, 0x0045, 0x004c, 0x005c, 0x0064, 0x006b,
+ 0x0074, 0x0078, 0x007e, 0x0086, 0x00b1, 0x00b7, 0x00be, 0x00c7,
+ 0x00cd, 0x00d2, 0x00e3, 0x00ed, 0x0106, 0x0111, 0x0119, 0x012a,
+ 0x013e, 0x0153, 0x016c, 0x0174, 0x017c, 0x0183, 0x018a, 0x0195,
+ 0x019a, 0x01a1, 0x01a7, 0x01b1, 0x01b9, 0x01be, 0x01c2, 0x01c9,
+ 0x01da, 0x01ef, 0x01f4, 0x01fb, 0x0203, 0x021d, 0x022f, 0x0241,
+ 0x024b, 0x0251, 0x025a, 0x025f, 0x0266, 0x0271, 0x0279, 0x0281,
+ // Entry 40 - 7F
+ 0x028b, 0x0292, 0x0299, 0x02a0, 0x02ae, 0x02b4, 0x02ba, 0x02c3,
+ 0x02c6, 0x02d9, 0x02e5, 0x02eb, 0x02f2, 0x02f7, 0x0304, 0x0311,
+ 0x0315, 0x0319, 0x0321, 0x0329, 0x0334, 0x033a, 0x033e, 0x0354,
+ 0x0359, 0x036a, 0x036f, 0x0379, 0x037d, 0x0384, 0x0389, 0x038d,
+ 0x0393, 0x039a, 0x039f, 0x03ad, 0x03b4, 0x03b8, 0x03bc, 0x03c2,
+ 0x03c6, 0x03cd, 0x03d3, 0x03d7, 0x03dd, 0x03e4, 0x03e4, 0x03ed,
+ 0x03f3, 0x0403, 0x0415, 0x0428, 0x0431, 0x043e, 0x044d, 0x0456,
+ 0x0460, 0x0469, 0x0471, 0x0477, 0x0485, 0x048f, 0x0498, 0x04a4,
+ // Entry 80 - BF
+ 0x04ac, 0x04b4, 0x04bc, 0x04c3, 0x04c7, 0x04cc, 0x04d2, 0x04da,
+ 0x04ed, 0x04fc, 0x0507, 0x050f, 0x0515, 0x051e, 0x052b, 0x0531,
+ 0x0539, 0x0542, 0x0548, 0x0550, 0x0558, 0x0560, 0x0565, 0x0568,
+ 0x056f, 0x0576, 0x057d, 0x0580, 0x058e, 0x0591, 0x0597, 0x05a2,
+ 0x05b7, 0x05ba, 0x05c2, 0x05d9, 0x05e2, 0x05ee, 0x05f5, 0x0605,
+} // Size: 360 bytes
+
+var faScriptStr string = "" + // Size: 1849 bytes
+ "آلبانیایی قفقازیعربیآرامی هخامنشیارمنیاوستاییبالیاییباتاکیبنگالینمادهای " +
+ "بلیسبوپوموفوبراهمیبریلبوگیاییبوهیدچاکماییکاریچمیچروکیاییکرتقبطیقبرسیسیر" +
+ "یلیدوناگریدیسرتیکاهنی مصریهیروگلیف مصریاتیوپیاییگرجی خوتسوریگرجیگلاگولی" +
+ "تیگوتییونانیگجراتیگورومخیهانگولهانهانونوییهان ساده\u200cشدههان سنتیعبری" +
+ "هیراگاناهیروگلیف آناتولیسیلابی\u200cهای ژاپنیمجاری باستانایندوسایتالی ب" +
+ "استانجاوه\u200cایژاپنیکایالیکاتاکاناخمریخواجکیکاناراکره\u200cایکثیلانای" +
+ "یلائوسیلاتینی فراکتورلاتینی گیلیلاتینیلیمباییخطی الفخطی بلسیاییلدیاییمن" +
+ "ده\u200cایمانویهیروگلیف مایاییمروییتیمالایالامیمغولیمونیمایک میتیمیانما" +
+ "رعربی شمالی باستاننبطیاوگامیاورخونیاوریه\u200cایپالمیراییپرمی باستانپهل" +
+ "وی کتیبه\u200cایپهلوی زبوریپهلوی کتابیفنیقیپارتی کتیبه\u200cایرجنگیرونی" +
+ "سامریساراتیعربی جنوبی باستانسوراشتراییشاویسینهالیسیلوتی نگاریسریانیسریا" +
+ "نی سطرنجیلیسریانی غربیسریانی شرقیتگبنواییتامیلیتلوگوییتنگوارتیفیناغیتاگ" +
+ "الوگیتانه\u200cایتایلندیتبتیاوگاریتیویاییگفتار قابل مشاهدهفارسی باستانم" +
+ "یخی سومری‐اکدیییموروثیعلائم ریاضیعلائمنانوشتهمشترکخط نامشخص"
+
+var faScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x001f, 0x001f, 0x0027, 0x0040, 0x004a, 0x0058,
+ 0x0066, 0x0066, 0x0066, 0x0072, 0x007e, 0x0095, 0x00a5, 0x00b1,
+ 0x00b9, 0x00c7, 0x00d1, 0x00df, 0x00df, 0x00e7, 0x00ed, 0x00fd,
+ 0x0103, 0x010b, 0x0115, 0x0121, 0x0121, 0x012f, 0x013b, 0x013b,
+ 0x013b, 0x014e, 0x0167, 0x0167, 0x0179, 0x0190, 0x0198, 0x01aa,
+ 0x01b2, 0x01b2, 0x01be, 0x01ca, 0x01d8, 0x01e4, 0x01ea, 0x01fa,
+ 0x0212, 0x0221, 0x0221, 0x0229, 0x0239, 0x0258, 0x0258, 0x0278,
+ 0x028f, 0x029b, 0x02b4, 0x02c3, 0x02cd, 0x02cd, 0x02d9, 0x02e9,
+ // Entry 40 - 7F
+ 0x02e9, 0x02f1, 0x02fd, 0x0309, 0x0316, 0x0316, 0x031c, 0x0328,
+ 0x0334, 0x034f, 0x0364, 0x0370, 0x0370, 0x037e, 0x038b, 0x0394,
+ 0x0394, 0x0394, 0x03a0, 0x03ac, 0x03ac, 0x03bb, 0x03c5, 0x03e2,
+ 0x03e2, 0x03e2, 0x03f0, 0x0404, 0x0404, 0x040e, 0x0416, 0x0416,
+ 0x0427, 0x0427, 0x0435, 0x0455, 0x045d, 0x045d, 0x045d, 0x045d,
+ 0x0469, 0x0469, 0x0477, 0x0488, 0x0488, 0x049a, 0x049a, 0x04af,
+ 0x04af, 0x04cb, 0x04e0, 0x04f5, 0x04ff, 0x04ff, 0x051b, 0x0525,
+ 0x0525, 0x052d, 0x0537, 0x0543, 0x0563, 0x0577, 0x0577, 0x057f,
+ // Entry 80 - BF
+ 0x057f, 0x057f, 0x057f, 0x058d, 0x058d, 0x058d, 0x05a4, 0x05b0,
+ 0x05cd, 0x05e2, 0x05f7, 0x0607, 0x0607, 0x0607, 0x0607, 0x0613,
+ 0x0613, 0x0613, 0x0621, 0x062d, 0x063d, 0x064d, 0x065c, 0x066a,
+ 0x0672, 0x0672, 0x0682, 0x068c, 0x06ac, 0x06ac, 0x06ac, 0x06c3,
+ 0x06e1, 0x06e5, 0x06f1, 0x0706, 0x0710, 0x071e, 0x0728, 0x0739,
+} // Size: 360 bytes
+
+var fiScriptStr string = "" + // Size: 2325 bytes
+ "afakakaukasianalbanialainenahomarabialainenvaltakunnanaramealainenarmeni" +
+ "alainenavestalainenbalilainenbamumbassabatakilainenbengalilainenbliss-sy" +
+ "mbolitbopomofobrahmibraille-pistekirjoitusbugilainenbuhidilainenchakmala" +
+ "inenkanadalaisten alkuperäiskansojen yhtenäistetty tavukirjoituskaariala" +
+ "inentšamilainencherokeelainencirthkoptilainenmuinaiskyproslainenkyrillin" +
+ "enkyrillinen muinaiskirkkoslaavimuunnelmadevanagarideseretDuployén pikak" +
+ "irjoitusegyptiläinen demoottinenegyptiläinen hieraattinenegyptiläiset hi" +
+ "eroglyfitelbasanilainenetiopialainenmuinaisgeorgialainengeorgialainengla" +
+ "goliittinengoottilainengranthakreikkalainengudžaratilainengurmukhihangul" +
+ "kiinalainen hanhanunoolainenkiinalainen yksinkertaistettu hankiinalainen" +
+ " perinteinen hanhatralainenheprealainenhiraganaanatolialaiset hieroglyfi" +
+ "tpahawh hmonghiragana tai katakanamuinaisunkarilaineninduslainenmuinaisi" +
+ "talialainenjaavalainenjapanilainendžurtšenkayah likatakanakharosthikhmer" +
+ "iläinenkhojkikannadalainenkorealainenkpellekaithilannalaolainenlatinalai" +
+ "nen fraktuuramuunnelmalatinalainen gaelimuunnelmalatinalainenlepchalaine" +
+ "nlimbulainenlineaari-Alineaari-BFraserin aakkosetlomalyykialainenlyydial" +
+ "ainenmahajanilainenmandealainenmanikealainenmaya-hieroglyfitmendemeroiit" +
+ "tinen kursiivikirjoitusmeroiittinenmalajalamilainenmodi-aakkosetmongolil" +
+ "ainenmoon-kohokirjoitusmromeiteimultanilainenburmalainenmuinaispohjoisar" +
+ "abialainennabatealainennaxi geban’konüshuogamol chikiorkhonorijalainenos" +
+ "manjalainenpalmyralainenzotuallaimuinaispermiläinenphags-papiirtokirjoit" +
+ "uspahlavilainenpsalttaripahlavilainenkirjapahlavilainenfoinikialainenPol" +
+ "lardin foneettinenpiirtokirjoitusparthialainenrejangrongorongoriimukirjo" +
+ "itussamarianaramealainensaratimuinaiseteläarabialainensaurashtraSignWrit" +
+ "ingshaw’lainenšaradasiddham-tavukirjoituskhudabadisinhalilainensorang so" +
+ "mpengsundalainensyloti nagrisyyrialainensyyrialainen estrangelo-muunnelm" +
+ "asyyrialainen läntinen muunnelmasyyrialainen itäinen muunnelmatagbanwala" +
+ "inentakritailelainenuusi tailuelainentamililainentanguttai viettelugulai" +
+ "nentengwartifinaghtagalogilainenthaanathailainentiibetiläinentirhutaugar" +
+ "itilainenvailainennäkyvä puhevarang kshitiwoleaimuinaispersialainensumer" +
+ "ilais-akkadilainen nuolenpääkirjoitusyiläinenperittymatemaattinensymboli" +
+ "tkirjoittamatonmäärittämätöntuntematon kirjoitusjärjestelmä"
+
+var fiScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x001b, 0x001f, 0x002b, 0x0042, 0x004f, 0x005b,
+ 0x0065, 0x006a, 0x006f, 0x007b, 0x0088, 0x0096, 0x009e, 0x00a4,
+ 0x00ba, 0x00c4, 0x00d0, 0x00dc, 0x011a, 0x0126, 0x0132, 0x0140,
+ 0x0145, 0x0150, 0x0163, 0x016d, 0x0194, 0x019e, 0x01a5, 0x01bc,
+ 0x01d5, 0x01ef, 0x0208, 0x0216, 0x0223, 0x0237, 0x0244, 0x0252,
+ 0x025e, 0x0265, 0x0272, 0x0282, 0x028a, 0x0290, 0x029f, 0x02ac,
+ 0x02cd, 0x02e8, 0x02f3, 0x02ff, 0x0307, 0x0321, 0x032d, 0x0342,
+ 0x0355, 0x0360, 0x0373, 0x037e, 0x038a, 0x0394, 0x039c, 0x03a4,
+ // Entry 40 - 7F
+ 0x03ad, 0x03ba, 0x03c0, 0x03cd, 0x03d8, 0x03de, 0x03e4, 0x03e9,
+ 0x03f2, 0x0411, 0x042c, 0x0438, 0x0444, 0x044f, 0x0459, 0x0463,
+ 0x0474, 0x0478, 0x0484, 0x0490, 0x049e, 0x04aa, 0x04b7, 0x04c7,
+ 0x04cc, 0x04ea, 0x04f6, 0x0506, 0x0513, 0x0520, 0x0532, 0x0535,
+ 0x053b, 0x0548, 0x0553, 0x056d, 0x057a, 0x0583, 0x0589, 0x058f,
+ 0x0593, 0x059b, 0x05a1, 0x05ac, 0x05b9, 0x05c6, 0x05cf, 0x05e2,
+ 0x05ea, 0x0606, 0x061c, 0x062e, 0x063c, 0x0651, 0x066d, 0x0673,
+ 0x067d, 0x068b, 0x069f, 0x06a5, 0x06be, 0x06c8, 0x06d3, 0x06e0,
+ // Entry 80 - BF
+ 0x06e7, 0x06fc, 0x0705, 0x0712, 0x0720, 0x072b, 0x0737, 0x0743,
+ 0x0764, 0x0784, 0x07a3, 0x07b1, 0x07b6, 0x07c1, 0x07d2, 0x07de,
+ 0x07e4, 0x07ec, 0x07f8, 0x07ff, 0x0807, 0x0815, 0x081b, 0x0825,
+ 0x0833, 0x083a, 0x0847, 0x0850, 0x085d, 0x086a, 0x0870, 0x0883,
+ 0x08af, 0x08b8, 0x08bf, 0x08cc, 0x08d4, 0x08e2, 0x08f4, 0x0915,
+} // Size: 360 bytes
+
+var filScriptStr string = "" + // Size: 311 bytes
+ "ArabicArmenianBengaliBopomofoBrailleCyrillicDevanagariEthiopicGeorgianGr" +
+ "eekGujaratiGurmukhiHangulHanPinasimpleng HanTradisyonal na HanHebrewHira" +
+ "ganaJapaneseKatakanaKhmerKannadaKoreanLaoLatinMalayalamMongolianMyanmarO" +
+ "riyaSinhalaTamilTeluguThaanaThaiTibetanMga SimboloHindi NakasulatKaraniw" +
+ "anHindi Kilalang Script"
+
+var filScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x0015, 0x0015, 0x001d, 0x001d,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
+ 0x0024, 0x0024, 0x0024, 0x002c, 0x002c, 0x0036, 0x0036, 0x0036,
+ 0x0036, 0x0036, 0x0036, 0x0036, 0x003e, 0x003e, 0x0046, 0x0046,
+ 0x0046, 0x0046, 0x004b, 0x0053, 0x005b, 0x0061, 0x0064, 0x0064,
+ 0x0074, 0x0086, 0x0086, 0x008c, 0x0094, 0x0094, 0x0094, 0x0094,
+ 0x0094, 0x0094, 0x0094, 0x0094, 0x009c, 0x009c, 0x009c, 0x00a4,
+ // Entry 40 - 7F
+ 0x00a4, 0x00a9, 0x00a9, 0x00b0, 0x00b6, 0x00b6, 0x00b6, 0x00b6,
+ 0x00b9, 0x00b9, 0x00b9, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be,
+ 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be,
+ 0x00be, 0x00be, 0x00be, 0x00c7, 0x00c7, 0x00d0, 0x00d0, 0x00d0,
+ 0x00d0, 0x00d0, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7,
+ 0x00d7, 0x00d7, 0x00d7, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc,
+ // Entry 80 - BF
+ 0x00dc, 0x00dc, 0x00dc, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3,
+ 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e8,
+ 0x00e8, 0x00e8, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f4, 0x00f8,
+ 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff,
+ 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x0119, 0x0122, 0x0137,
+} // Size: 360 bytes
+
+var frScriptStr string = "" + // Size: 1445 bytes
+ "arabearaméen impérialarménienavestiquebalinaisbatakbengalisymboles Bliss" +
+ "bopomofobrâhmîbraillebouguisbouhidechakmasyllabaire autochtone canadien " +
+ "unifiécarienchamcherokeecirthcoptesyllabaire chypriotecyrilliquecyrilliq" +
+ "ue (variante slavonne)dévanâgarîdéséretdémotique égyptienhiératique égyp" +
+ "tienhiéroglyphes égyptienséthiopiquegéorgien khoutsourigéorgienglagoliti" +
+ "quegotiquegrecgoudjarâtîgourmoukhîhangûlsinogrammeshanounóosinogrammes s" +
+ "implifiéssinogrammes traditionnelshébreuhiraganapahawh hmongkatakana ou " +
+ "hiraganaancien hongroisindusancien italiquejavanaisjaponaiskayah likatak" +
+ "anakharochthîkhmerkannaracoréenkaithîlannalaolatin (variante brisée)lati" +
+ "n (variante gaélique)latinlepchalimboulinéaire Alinéaire Blycienlydienma" +
+ "ndéenmanichéenhiéroglyphes mayasméroïtiquemalayalammongolmoonmeitei maye" +
+ "kbirmann’koogamol tchikiorkhonoriyaosmanaisancien permienphags papehlevi" +
+ " des inscriptionspehlevi des psautierspehlevi des livresphénicienphonéti" +
+ "que de Pollardparthe des inscriptionsrejangrongorongoruniquesamaritainsa" +
+ "ratisaurashtraécriture des signesshaviencinghalaissundanaissylotî nâgrîs" +
+ "yriaquesyriaque estranghélosyriaque occidentalsyriaque orientaltagbanoua" +
+ "taï-lenouveau taï-luetamoultaï viêttélougoutengwartifinaghtagalthânathaï" +
+ "tibétainougaritiquevaïparole visiblecunéiforme persépolitaincunéiforme s" +
+ "uméro-akkadienyihériténotation mathématiquesymbolesnon écritcommunécritu" +
+ "re inconnue"
+
+var frScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0017, 0x0020, 0x0029,
+ 0x0031, 0x0031, 0x0031, 0x0036, 0x003d, 0x004b, 0x0053, 0x005b,
+ 0x0062, 0x0069, 0x0070, 0x0076, 0x009c, 0x00a2, 0x00a6, 0x00ae,
+ 0x00b3, 0x00b8, 0x00cc, 0x00d6, 0x00f4, 0x0101, 0x010a, 0x010a,
+ 0x011e, 0x0133, 0x014b, 0x014b, 0x0156, 0x016a, 0x0173, 0x017f,
+ 0x0186, 0x0186, 0x018a, 0x0196, 0x01a1, 0x01a8, 0x01b3, 0x01bc,
+ 0x01d3, 0x01ec, 0x01ec, 0x01f3, 0x01fb, 0x01fb, 0x0207, 0x021b,
+ 0x022a, 0x022f, 0x023e, 0x0246, 0x024e, 0x024e, 0x0256, 0x025e,
+ // Entry 40 - 7F
+ 0x0269, 0x026e, 0x026e, 0x0275, 0x027c, 0x027c, 0x0283, 0x0288,
+ 0x028b, 0x02a3, 0x02bd, 0x02c2, 0x02c8, 0x02ce, 0x02d9, 0x02e4,
+ 0x02e4, 0x02e4, 0x02ea, 0x02f0, 0x02f0, 0x02f8, 0x0302, 0x0315,
+ 0x0315, 0x0315, 0x0321, 0x032a, 0x032a, 0x0330, 0x0334, 0x0334,
+ 0x0340, 0x0340, 0x0346, 0x0346, 0x0346, 0x0346, 0x034c, 0x034c,
+ 0x0350, 0x0359, 0x035f, 0x0364, 0x036c, 0x036c, 0x036c, 0x037a,
+ 0x0382, 0x039a, 0x03af, 0x03c1, 0x03cb, 0x03e1, 0x03f8, 0x03fe,
+ 0x0408, 0x040f, 0x0419, 0x041f, 0x041f, 0x0429, 0x043d, 0x0444,
+ // Entry 80 - BF
+ 0x0444, 0x0444, 0x0444, 0x044e, 0x044e, 0x0457, 0x0466, 0x046e,
+ 0x0483, 0x0496, 0x04a7, 0x04b0, 0x04b0, 0x04b7, 0x04c7, 0x04cd,
+ 0x04cd, 0x04d7, 0x04e0, 0x04e7, 0x04ef, 0x04f4, 0x04fa, 0x04ff,
+ 0x0508, 0x0508, 0x0513, 0x0517, 0x0525, 0x0525, 0x0525, 0x053f,
+ 0x055b, 0x055d, 0x0565, 0x057b, 0x0583, 0x058d, 0x0593, 0x05a5,
+} // Size: 360 bytes
+
+var frCAScriptStr string = "devanagarigujarati"
+
+var frCAScriptIdx = []uint16{ // 44 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x0012,
+} // Size: 112 bytes
+
+var guScriptStr string = "" + // Size: 3319 bytes
+ "અરબીઇમ્પિરિયલ આર્મનિકઅર્મેનિયનઅવેસ્તનબાલીનીઝબટાકબંગાળીબ્લિસિમ્બોલ્સબોપોમ" +
+ "ોફોબ્રહ્મીબ્રેલબગિનીસબુહિદચકમાયુનાઇટેડ કેનેડિયન એબોરિજનલ સિલેબિક્સકરૈન" +
+ "ચેરોકીસિર્થકોપ્ટિકસિપ્રાયટસિરિલિકઓલ્ડ ચર્ચ સ્લાવોનિક સિરિલિકદેવનાગરીડે" +
+ "સરેટઇજિપ્શિયન ડેમોટિકઇજિપ્શિયન હાઇરેટિકઇજિપ્શિયન હાઇરોગ્લિફ્સઇથિયોપિકજ" +
+ "્યોર્જિઅન ખુતસુરીજ્યોર્જિઅનગ્લેગોલિટિકગોથિકગ્રીકગુજરાતીગુરૂમુખીહંગુલહા" +
+ "નહનુનૂસરળીકૃત હાનપરંપરાગત હાનહીબ્રુહિરાગાનાપહાઉ મોન્ગકતાકના અને હિરાગન" +
+ "ાઓલ્ડ હંગેરિયનસિન્ધુજૂનુ ઇટાલિકજાવાનીસજાપાનીકાયાહ લીકટાકાનાખારોશ્થીખ્મ" +
+ "ેરકન્નડાકોરિયનકૈથીલાનાલાઓફ્રેકતુર લેટિનગૈલિક લેટિનલેટિનલેપચાલિમ્બૂલીનિ" +
+ "યર અલીનિયર બીલિશિયનલિડિયનમાન્ડાયીનમાનીચાયીનમયાન હાઇરોગ્લિફ્સમેરોઇટિકમલ" +
+ "યાલમમોંગોલિયનમૂનમેઇતેઇ માયેકમ્યાંમારએન’ કોઓઘામઓલ ચિકીઓરખોનઉડિયાઓસ્માન્" +
+ "યાઓલ્ડ પરમિકફાગ્સ-પાઇન્સ્ક્રિપ્શનલ પહલવીસાલટર પહલવીબુક પહલવીફોનિશિયનપો" +
+ "લાર્ડ ફોનેટિકઇન્સ્ક્રિપ્શનલ પાર્થિયનરીજાંગરોંગોરોંગોરૂનિકસમરિટાનસરાતીસ" +
+ "ૌરાષ્ટ્રસંકેત લિપીશાવિયાનસિંહલીસુદાનીઝસિલોતી નાગરીસિરિયેકએસ્ત્રેન્જેલો" +
+ " સિરિયાકપશ્ચિમ સિરિયાકપૂર્વ સિરિયાકતગબન્વાતાઇ લીનવીન તાઇ લૂતમિલતાઇ વેઇતત" +
+ "ેલુગુતેન્ગવારતિફિનાઘટેગાલોગથાનાથાઇટિબેટીયુગાતિટિકવાઇવિસિબલ સ્પીચજુની ફ" +
+ "ારસીસુમેરો અક્કાદિયન સુનિફોર્મયીવંશાગતગણિતીય સંકેતલિપિપ્રતીકોઅલિખિતસામ" +
+ "ાન્યઅજ્ઞાત લિપિ"
+
+var guScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x003d, 0x0058, 0x006d,
+ 0x0082, 0x0082, 0x0082, 0x008e, 0x00a0, 0x00c7, 0x00df, 0x00f4,
+ 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, 0x01a2, 0x01b4,
+ 0x01c3, 0x01d8, 0x01f0, 0x0205, 0x0250, 0x0268, 0x027a, 0x027a,
+ 0x02ab, 0x02df, 0x031f, 0x031f, 0x0337, 0x036b, 0x0389, 0x03aa,
+ 0x03b9, 0x03b9, 0x03c8, 0x03dd, 0x03f5, 0x0404, 0x040d, 0x041c,
+ 0x043b, 0x045d, 0x045d, 0x046f, 0x0487, 0x0487, 0x04a3, 0x04d5,
+ 0x04fa, 0x050c, 0x052b, 0x0540, 0x0552, 0x0552, 0x0568, 0x057d,
+ // Entry 40 - 7F
+ 0x0595, 0x05a4, 0x05a4, 0x05b6, 0x05c8, 0x05c8, 0x05d4, 0x05e0,
+ 0x05e9, 0x0611, 0x0630, 0x063f, 0x064e, 0x0660, 0x0676, 0x068f,
+ 0x068f, 0x068f, 0x06a1, 0x06b3, 0x06b3, 0x06ce, 0x06e9, 0x071a,
+ 0x071a, 0x071a, 0x0732, 0x0744, 0x0744, 0x075f, 0x0768, 0x0768,
+ 0x078a, 0x078a, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07b2, 0x07b2,
+ 0x07be, 0x07d1, 0x07e0, 0x07ef, 0x080a, 0x080a, 0x080a, 0x0826,
+ 0x083c, 0x0876, 0x0895, 0x08ae, 0x08c6, 0x08f1, 0x0934, 0x0946,
+ 0x0964, 0x0973, 0x0988, 0x0997, 0x0997, 0x09b2, 0x09ce, 0x09e3,
+ // Entry 80 - BF
+ 0x09e3, 0x09e3, 0x09e3, 0x09f5, 0x09f5, 0x0a0a, 0x0a2c, 0x0a41,
+ 0x0a7e, 0x0aa6, 0x0acb, 0x0ae0, 0x0ae0, 0x0af0, 0x0b0d, 0x0b19,
+ 0x0b19, 0x0b2f, 0x0b41, 0x0b59, 0x0b6e, 0x0b83, 0x0b8f, 0x0b98,
+ 0x0baa, 0x0baa, 0x0bc5, 0x0bce, 0x0bf0, 0x0bf0, 0x0bf0, 0x0c0c,
+ 0x0c56, 0x0c5c, 0x0c6e, 0x0c9c, 0x0cb1, 0x0cc3, 0x0cd8, 0x0cf7,
+} // Size: 360 bytes
+
+var heScriptStr string = "" + // Size: 849 bytes
+ "ערביארמניבאלינזיבנגליבופומופובריילצ׳אםצ׳ירוקיקופטיקפריסאיקיריליקירילי סל" +
+ "אבוני כנסייתי עתיקדוואנגריכתב חרטומיםאתיופיגאורגיגותייווניגוג׳רטיגורמוק" +
+ "יהאנגולהאןכתב האן פשוטכתב האן מסורתיעבריהירגאנההונגרי עתיקאינדוסאיטלקי " +
+ "עתיקג׳אוונזייפניקטקאנהקמריתקאנדהקוריאנילאיתלטיני גאלילטינימאיהמליאלאםמו" +
+ "נגולימיאנמראורייהפיניקירוניסינהלהסוריסורי מערביסורי מזרחיטמילטלוגוטגלוג" +
+ "כתב טאנהתאיטיבטיאוגריתיפרסי עתיקמורשסימון מתמטיסימניםלא כתוברגילכתב שאי" +
+ "נו ידוע"
+
+var heScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x002a, 0x002a, 0x003a, 0x003a,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x005a,
+ 0x005a, 0x0064, 0x0072, 0x007e, 0x00b1, 0x00c1, 0x00c1, 0x00c1,
+ 0x00c1, 0x00c1, 0x00d6, 0x00d6, 0x00e2, 0x00e2, 0x00ee, 0x00ee,
+ 0x00f6, 0x00f6, 0x0100, 0x010e, 0x011c, 0x0128, 0x012e, 0x012e,
+ 0x0144, 0x015e, 0x015e, 0x0166, 0x0174, 0x0174, 0x0174, 0x0174,
+ 0x0189, 0x0195, 0x01aa, 0x01ba, 0x01c2, 0x01c2, 0x01c2, 0x01ce,
+ // Entry 40 - 7F
+ 0x01ce, 0x01d8, 0x01d8, 0x01e2, 0x01f0, 0x01f0, 0x01f0, 0x01f0,
+ 0x01f8, 0x01f8, 0x020b, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
+ 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x021d,
+ 0x021d, 0x021d, 0x021d, 0x022b, 0x022b, 0x0239, 0x0239, 0x0239,
+ 0x0239, 0x0239, 0x0245, 0x0245, 0x0245, 0x0245, 0x0245, 0x0245,
+ 0x0245, 0x0245, 0x0245, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251,
+ 0x0251, 0x0251, 0x0251, 0x0251, 0x025d, 0x025d, 0x025d, 0x025d,
+ 0x025d, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265,
+ // Entry 80 - BF
+ 0x0265, 0x0265, 0x0265, 0x0271, 0x0271, 0x0271, 0x0271, 0x0279,
+ 0x0279, 0x028c, 0x029f, 0x029f, 0x029f, 0x029f, 0x029f, 0x02a7,
+ 0x02a7, 0x02a7, 0x02b1, 0x02b1, 0x02b1, 0x02bb, 0x02ca, 0x02d0,
+ 0x02da, 0x02da, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02f9,
+ 0x02f9, 0x02f9, 0x0301, 0x0316, 0x0322, 0x032f, 0x0337, 0x0351,
+} // Size: 360 bytes
+
+var hiScriptStr string = "" + // Size: 3328 bytes
+ "अरबीइम्पिरियल आर्मेनिकआर्मेनियाईअवेस्तनबालीबटकीबंगालीब्लिसिम्बॉल्सबोपोमो" +
+ "फ़ोब्रह्मीब्रेलबगिनीसबुहिदचकमायुनिफाइड कैनेडियन एबोरिजनल सिलेबिक्सकरैन" +
+ "चामचेरोकीकिर्थकॉप्टिककाइप्रायटसिरिलिकओल्ड चर्च स्लावोनिक सिरिलिकदेवनाग" +
+ "रीडेसरेटइजिप्शियन डेमोटिकइजिप्शियन हाइरेटिकइजिप्शियन हाइरोग्लिफ्सइथियो" +
+ "पियाईजॉर्जियन खुतसुरीजॉर्जियनग्लेगोलिटिकगोथिकग्रन्थयूनानीगुजरातीगुरमुख" +
+ "ीहंगुलहानहनुनूसरलीकृत हानपारंपरिक हानहिब्रूहिरागानापाहो ह्मोन्गकचाकना " +
+ "और हिरागनाऑल्ड हंगेरियनसिन्धुपुरानी इटलीजावानीसजापानीकायाह लीकाताकानाख" +
+ "ारोशथीखमेरकन्नड़कोरियाईकैथीलानालाओफ़्रैक्टुर लातिनीगेली लातिनीलैटिनलेप" +
+ "चालिम्बूलीनियर Aलीनियर बीलिशियनलिडियनमनडेनमनीशीनमयान हाइरोग्लिफ्समेरोइ" +
+ "टिकमलयालममंगोलियाईमूनमेइतेइ मायेकम्यांमारएन्‘कोओगमऑल चिकीओरखोनउड़ियाओस" +
+ "्मान्याओल्ड परमिकफाग्स-पाइंस्क्रिपश्नल पाहलवीसॉल्टर पाहलवीबुक पाहलवीफो" +
+ "निशियनपॉलार्ड फोनेटिकइंस्क्रिपश्नल पार्थियनरीजांगरोन्गोरोन्गोरूनिकसमरि" +
+ "टनसरातीसौराष्ट्रसांकेतिक लेखशावियानसिंहलीसूडानीसिलोती नागरीसिरियेकएस्त" +
+ "्रेन्जेलो सिरिएकपश्चिम सिरिएकपूर्व सिरिएकतगबन्वाताई लीनया ताई लुतमिलता" +
+ "ई विएततेलुगूतेन्गवारतिफिनाघटैगालोगथानाथाईतिब्बतीयुगारिटिकवाईविसिबल स्प" +
+ "ीचपुरानी फारसीसुमेरो अक्कादियन सुनिफॉर्मयीविरासतगणितीय संकेतनचिह्नअलिख" +
+ "ितसामान्यअज्ञात लिपि"
+
+var hiScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005e, 0x0073,
+ 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x00c4, 0x00df, 0x00f4,
+ 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, 0x01ab, 0x01bd,
+ 0x01cc, 0x01e1, 0x01fc, 0x0211, 0x025c, 0x0274, 0x0286, 0x0286,
+ 0x02b7, 0x02eb, 0x032b, 0x032b, 0x0349, 0x0377, 0x038f, 0x03b0,
+ 0x03bf, 0x03d1, 0x03e3, 0x03f8, 0x040d, 0x041c, 0x0425, 0x0434,
+ 0x0453, 0x0475, 0x0475, 0x0487, 0x049f, 0x049f, 0x04c1, 0x04f0,
+ 0x0515, 0x0527, 0x0546, 0x055b, 0x056d, 0x056d, 0x0583, 0x059b,
+ // Entry 40 - 7F
+ 0x05b0, 0x05bc, 0x05bc, 0x05ce, 0x05e3, 0x05e3, 0x05ef, 0x05fb,
+ 0x0604, 0x0635, 0x0654, 0x0663, 0x0672, 0x0684, 0x0698, 0x06b1,
+ 0x06b1, 0x06b1, 0x06c3, 0x06d5, 0x06d5, 0x06e4, 0x06f6, 0x0727,
+ 0x0727, 0x0727, 0x073f, 0x0751, 0x0751, 0x076c, 0x0775, 0x0775,
+ 0x0797, 0x0797, 0x07af, 0x07af, 0x07af, 0x07af, 0x07c1, 0x07c1,
+ 0x07ca, 0x07dd, 0x07ec, 0x07fe, 0x0819, 0x0819, 0x0819, 0x0835,
+ 0x084b, 0x0885, 0x08aa, 0x08c6, 0x08de, 0x0909, 0x0949, 0x095b,
+ 0x097f, 0x098e, 0x09a0, 0x09af, 0x09af, 0x09ca, 0x09ec, 0x0a01,
+ // Entry 80 - BF
+ 0x0a01, 0x0a01, 0x0a01, 0x0a13, 0x0a13, 0x0a25, 0x0a47, 0x0a5c,
+ 0x0a96, 0x0abb, 0x0add, 0x0af2, 0x0af2, 0x0b02, 0x0b1c, 0x0b28,
+ 0x0b28, 0x0b3e, 0x0b50, 0x0b68, 0x0b7d, 0x0b92, 0x0b9e, 0x0ba7,
+ 0x0bbc, 0x0bbc, 0x0bd7, 0x0be0, 0x0c02, 0x0c02, 0x0c02, 0x0c24,
+ 0x0c6e, 0x0c74, 0x0c86, 0x0cab, 0x0cba, 0x0ccc, 0x0ce1, 0x0d00,
+} // Size: 360 bytes
+
+var hrScriptStr string = "" + // Size: 2371 bytes
+ "afaka pismoarapsko pismoaramejsko pismoarmensko pismoavestansko pismobal" +
+ "ijsko pismobamum pismobassa vah pismobatak pismobengalsko pismoblissymbo" +
+ "lsbopomofo pismobrahmi pismobrajicabuginsko pismobuhid pismochakma pismo" +
+ "unificirani kanadski aboriđinski slogovikarijsko pismočamsko pismočeroki" +
+ " pismocirth pismokoptsko pismocypriot pismoćirilicastaroslavenska crkven" +
+ "a čirilicadevangari pismodeseret pismoegipatsko narodno pismoegipatsko h" +
+ "ijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khutsuri pis" +
+ "mogruzijsko pismoglagoljicagotičko pismograntha pismogrčko pismogudžarat" +
+ "sko pismogurmukhi pismohangul pismohan pismohanunoo pismopojednostavljen" +
+ "o hansko pismotradicionalno hansko pismohebrejsko pismohiragana pismoana" +
+ "tolijski hijeroglifipahawh hmong pismokatakana ili hiragana pismostaro m" +
+ "ađarsko pismoindijsko pismostaro talijansko pismojavansko pismojapansko " +
+ "pismojurchen pismokayah li pismokatakana pismokharoshthi pismokmersko pi" +
+ "smokhojki pismokannada pismokorejsko pismokpelle pismokaithi pismolanna " +
+ "pismolaosko pismofraktur latinicakeltska latinicalatinicalepcha pismolim" +
+ "bu pismolinear A pismolinear B pismofraser pismoloma pismolikijsko pismo" +
+ "lidijsko pismomandai pismomanihejsko pismomajanski hijeroglifimende pism" +
+ "omeroitski kurzivmeroitic pismomalajalamsko pismomongolsko pismomoon pis" +
+ "momro pismomeitei mayek pismomjanmarsko pismostaro sjevernoarapsko pismo" +
+ "nabatejsko pismonaxi geba pismon’ko pismonushu pismoogham pismool chiki " +
+ "pismoorkhon pismoorijsko pismoosmanya pismopalmyrene pismostaro permic p" +
+ "ismophags-pa pismopisani pahlavipsalter pahlavipahlavi pismofeničko pism" +
+ "opollard fonetsko pismopisani parthianrejang pismorongorongo pismorunsko" +
+ " pismosamaritansko pismosarati pismostaro južnoarapsko pismosaurashtra p" +
+ "ismoznakovno pismoshavian pismosharada pismokhudawadi pismosinhaleško pi" +
+ "smosora sompeng pismosundansko pismosyloti nagri pismosirijsko pismosiri" +
+ "jsko estrangelo pismopismo zapadne Sirijepismo istočne Sirijetagbanwa pi" +
+ "smotakri pismotai le pismonovo tai lue pismotamilsko pismotangut pismota" +
+ "i viet pismotelugu pismotengwar pismotifinartagalog pismothaana pismotaj" +
+ "landsko pismotibetansko pismotirhuta pismougaritsko pismovai pismoVisibl" +
+ "e Speechvarang kshiti pismowoleai pismostaro perzijsko pismosumersko-aka" +
+ "dsko cuneiform pismoYi pismonasljedno pismomatematičko znakovljesimbolij" +
+ "ezik bez pismenostizajedničko pismonepoznato pismo"
+
+var hrScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000b, 0x000b, 0x000b, 0x0018, 0x0027, 0x0035, 0x0045,
+ 0x0053, 0x005e, 0x006d, 0x0078, 0x0087, 0x0092, 0x00a0, 0x00ac,
+ 0x00b3, 0x00c1, 0x00cc, 0x00d8, 0x0101, 0x010f, 0x011c, 0x0129,
+ 0x0134, 0x0141, 0x014e, 0x0157, 0x0177, 0x0186, 0x0193, 0x0193,
+ 0x01aa, 0x01c4, 0x01d9, 0x01d9, 0x01e7, 0x01ff, 0x020e, 0x0218,
+ 0x0226, 0x0233, 0x023f, 0x0251, 0x025f, 0x026b, 0x0274, 0x0281,
+ 0x029e, 0x02b8, 0x02b8, 0x02c7, 0x02d5, 0x02ec, 0x02fe, 0x0319,
+ 0x032e, 0x033c, 0x0352, 0x0360, 0x036e, 0x037b, 0x0389, 0x0397,
+ // Entry 40 - 7F
+ 0x03a7, 0x03b4, 0x03c0, 0x03cd, 0x03db, 0x03e7, 0x03f3, 0x03fe,
+ 0x040a, 0x041a, 0x042a, 0x0432, 0x043e, 0x0449, 0x0457, 0x0465,
+ 0x0471, 0x047b, 0x0489, 0x0497, 0x0497, 0x04a3, 0x04b3, 0x04c7,
+ 0x04d2, 0x04e2, 0x04f0, 0x0502, 0x0502, 0x0511, 0x051b, 0x0524,
+ 0x0536, 0x0536, 0x0546, 0x0561, 0x0571, 0x0580, 0x058c, 0x0597,
+ 0x05a2, 0x05b0, 0x05bc, 0x05c9, 0x05d6, 0x05e5, 0x05e5, 0x05f7,
+ 0x0605, 0x0613, 0x0622, 0x062f, 0x063d, 0x0653, 0x0662, 0x066e,
+ 0x067e, 0x068a, 0x069c, 0x06a8, 0x06c1, 0x06d1, 0x06df, 0x06ec,
+ // Entry 80 - BF
+ 0x06f9, 0x06f9, 0x0708, 0x0719, 0x072b, 0x073a, 0x074c, 0x075a,
+ 0x0773, 0x0787, 0x079c, 0x07aa, 0x07b5, 0x07c1, 0x07d3, 0x07e1,
+ 0x07ed, 0x07fb, 0x0807, 0x0814, 0x081b, 0x0828, 0x0834, 0x0844,
+ 0x0854, 0x0861, 0x0870, 0x0879, 0x0887, 0x089a, 0x08a6, 0x08bb,
+ 0x08db, 0x08e3, 0x08f2, 0x0908, 0x090f, 0x0923, 0x0934, 0x0943,
+} // Size: 360 bytes
+
+var huScriptStr string = "" + // Size: 1273 bytes
+ "ArabBirodalmi arámiÖrményAvesztánBalinézBatakBengáliBliss jelképrendszer" +
+ "BopomofoBrámiVakírásBuginézBuhidCsakmaEgyesített kanadai őslakos jelekKa" +
+ "riCsámCserokiKoptCiprusiCirillÓegyházi szláv cirillDevanagáriDeseretEgyi" +
+ "ptomi demotikusEgyiptomi hieratikusEgyiptomi hieroglifákEtiópGrúz kucsur" +
+ "iGrúzGlagolitikusGótGörögGudzsarátiGurmukiHangulHanHanunooEgyszerűsített" +
+ " kínaiHagyományos kínaiHéberHiraganaPahawh hmongKatakana vagy hiraganaÓm" +
+ "agyarIndusRégi olaszJávaiJapánKajah liKatakanaKharoshthiKhmerKannadaKore" +
+ "aiKaithiLannaLaoFraktur latinGael latinLatinLepchaLimbuLineáris ALineári" +
+ "s BLíciaiLídiaiMandaiManicheusMaja hieroglifákMeroitikusMalajálamMongolM" +
+ "oonMeitei mayekBurmaiN’koOghamOl chikiOrhonOriyaOszmánÓpermikusPhags-paF" +
+ "elriatos pahlaviPsalter pahlaviKönyv pahlaviFőniciaiPollard fonetikusFel" +
+ "iratos parthianRedzsangRongorongoRunikusSzamaritánSzaratiSzaurastraJelír" +
+ "ásShaw ábécéSzingalézSzundanézSylheti nagáriSzíriaiEstrangelo szíriaiNy" +
+ "ugat-szíriaiKelet-szíriaiTagbanwaTai LeÚj tai lueTamilTai vietTeluguTeng" +
+ "warBerberTagalogThaanaThaiTibetiUgariVaiLátható beszédÓperzsaÉkírásos su" +
+ "méro-akkádJiSzármaztatottMatematikai jelrendszerSzimbólumÍratlan nyelvek" +
+ " kódjaMeghatározatlanIsmeretlen írásrendszer"
+
+var huScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x001c, 0x0025,
+ 0x002d, 0x002d, 0x002d, 0x0032, 0x003a, 0x004f, 0x0057, 0x005d,
+ 0x0066, 0x006e, 0x0073, 0x0079, 0x009b, 0x009f, 0x00a4, 0x00ab,
+ 0x00ab, 0x00af, 0x00b6, 0x00bc, 0x00d4, 0x00df, 0x00e6, 0x00e6,
+ 0x00f9, 0x010d, 0x0123, 0x0123, 0x0129, 0x0136, 0x013b, 0x0147,
+ 0x014b, 0x014b, 0x0152, 0x015d, 0x0164, 0x016a, 0x016d, 0x0174,
+ 0x018b, 0x019e, 0x019e, 0x01a4, 0x01ac, 0x01ac, 0x01b8, 0x01ce,
+ 0x01d6, 0x01db, 0x01e6, 0x01ec, 0x01f2, 0x01f2, 0x01fa, 0x0202,
+ // Entry 40 - 7F
+ 0x020c, 0x0211, 0x0211, 0x0218, 0x021e, 0x021e, 0x0224, 0x0229,
+ 0x022c, 0x0239, 0x0243, 0x0248, 0x024e, 0x0253, 0x025e, 0x0269,
+ 0x0269, 0x0269, 0x0270, 0x0277, 0x0277, 0x027d, 0x0286, 0x0297,
+ 0x0297, 0x0297, 0x02a1, 0x02ab, 0x02ab, 0x02b1, 0x02b5, 0x02b5,
+ 0x02c1, 0x02c1, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02cd, 0x02cd,
+ 0x02d2, 0x02da, 0x02df, 0x02e4, 0x02eb, 0x02eb, 0x02eb, 0x02f5,
+ 0x02fd, 0x030e, 0x031d, 0x032b, 0x0334, 0x0345, 0x0357, 0x035f,
+ 0x0369, 0x0370, 0x037b, 0x0382, 0x0382, 0x038c, 0x0395, 0x03a2,
+ // Entry 80 - BF
+ 0x03a2, 0x03a2, 0x03a2, 0x03ac, 0x03ac, 0x03b6, 0x03c5, 0x03cd,
+ 0x03e0, 0x03ef, 0x03fd, 0x0405, 0x0405, 0x040b, 0x0416, 0x041b,
+ 0x041b, 0x0423, 0x0429, 0x0430, 0x0436, 0x043d, 0x0443, 0x0447,
+ 0x044d, 0x044d, 0x0452, 0x0455, 0x0466, 0x0466, 0x0466, 0x046e,
+ 0x0488, 0x048a, 0x0498, 0x04af, 0x04b9, 0x04d0, 0x04e0, 0x04f9,
+} // Size: 360 bytes
+
+var hyScriptStr string = "" + // Size: 679 bytes
+ "արաբականհայկականբենգալականբոպոմոֆոբրայլիկյուրեղագիրդեվանագարիեթովպականվր" +
+ "ացականհունականգուջարաթիգուրմուխիհանգուլչինականպարզեցված չինականավանդակա" +
+ "ն չինականեբրայականհիրագանաճապոնականկատականաքմերականկաննադակորեականլաոսա" +
+ "կանլատինականմալայալամմոնղոլականմյանմարականօրիյասինհալականթամիլականթելու" +
+ "գութաանաթայականտիբեթականնշաններչգրվածընդհանուրանհայտ գիր"
+
+var hyScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, 0x0020,
+ 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0044, 0x0044,
+ 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050,
+ 0x0050, 0x0050, 0x0050, 0x0066, 0x0066, 0x007a, 0x007a, 0x007a,
+ 0x007a, 0x007a, 0x007a, 0x007a, 0x008c, 0x008c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x00ac, 0x00be, 0x00d0, 0x00de, 0x00ec, 0x00ec,
+ 0x010d, 0x012e, 0x012e, 0x0140, 0x0150, 0x0150, 0x0150, 0x0150,
+ 0x0150, 0x0150, 0x0150, 0x0150, 0x0162, 0x0162, 0x0162, 0x0172,
+ // Entry 40 - 7F
+ 0x0172, 0x0182, 0x0182, 0x0190, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
+ 0x01b0, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2,
+ 0x01c2, 0x01c2, 0x01c2, 0x01d4, 0x01d4, 0x01e8, 0x01e8, 0x01e8,
+ 0x01e8, 0x01e8, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe,
+ 0x01fe, 0x01fe, 0x01fe, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208,
+ 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208,
+ 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208,
+ // Entry 80 - BF
+ 0x0208, 0x0208, 0x0208, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c,
+ 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x021c, 0x022e,
+ 0x022e, 0x022e, 0x023e, 0x023e, 0x023e, 0x023e, 0x0248, 0x0256,
+ 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268,
+ 0x0268, 0x0268, 0x0268, 0x0268, 0x0276, 0x0282, 0x0294, 0x02a7,
+} // Size: 360 bytes
+
+var idScriptStr string = "" + // Size: 1396 bytes
+ "AfakaAlbania KaukasiaArabAram ImperialArmeniaAvestaBaliBamumBassa VahBat" +
+ "akBengaliBlissymbolBopomofoBrahmiBrailleBugisBuhidChakmaSimbol Aborigin " +
+ "Kanada KesatuanKariaChamCherokeeCirthKoptikSiprusSirilikGereja Slavonia " +
+ "Sirilik LamaDevanagariDeseretStenografi DuployanDemotik MesirHieratik Me" +
+ "sirHieroglip MesirEtiopiaGeorgian KhutsuriGeorgiaGlagoliticGothicGrantha" +
+ "YunaniGujaratiGurmukhiHangulHanHanunooHan SederhanaHan TradisionalIbrani" +
+ "HiraganaHieroglif AnatoliaPahawh HmongKatakana atau HiraganaHungaria Kun" +
+ "oIndusItalia LamaJawaJepangJurchenKayah LiKatakanaKharoshthiKhmerKhojkiK" +
+ "annadaKoreaKpelleKaithiLannaLaosLatin FrakturLatin GaelikLatinLepchaLimb" +
+ "uLinear ALinear BLisuLomaLyciaLydiaMandaeManikheiHieroglip MayaMendeKurs" +
+ "if MeroitikMeroitikMalayalamModiMongoliaMoonMroMeitei MayekMyanmarArab U" +
+ "tara KunoNabataeaNaxi GebaN’KoNushuOghamChiki LamaOrkhonOriyaOsmanyaPalm" +
+ "iraPermik KunoPhags-paPahleviMazmur PahleviKitab PahleviPhoenixFonetik P" +
+ "ollardPrasasti ParthiaRejangRongorongoRunikSamariaSaratiArab Selatan Kun" +
+ "oSaurashtraTulisan IsyaratShaviaSharadaSiddhamKhudawadiSinhalaSora Sompe" +
+ "ngSundaSyloti NagriSuriahSuriah EstrangeloSuriah BaratSuriah TimurTagban" +
+ "waTakriTai LeTai Lue BaruTamilTangutTai VietTeluguTenghwarTifinaghTagalo" +
+ "gThaanaThaiTibetTirhutaUgaritikVaiUcapan TerlihatVarang KshitiWoleaiPers" +
+ "ia KunoCuneiform Sumero-AkkadiaYiWarisanNotasi MatematikaSimbolTidak Ter" +
+ "tulisUmumSkrip Tak Dikenal"
+
+var idScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0015, 0x0015, 0x0019, 0x0026, 0x002d, 0x0033,
+ 0x0037, 0x003c, 0x0045, 0x004a, 0x0051, 0x005b, 0x0063, 0x0069,
+ 0x0070, 0x0075, 0x007a, 0x0080, 0x009f, 0x00a4, 0x00a8, 0x00b0,
+ 0x00b5, 0x00bb, 0x00c1, 0x00c8, 0x00e4, 0x00ee, 0x00f5, 0x0108,
+ 0x0115, 0x0123, 0x0132, 0x0132, 0x0139, 0x014a, 0x0151, 0x015b,
+ 0x0161, 0x0168, 0x016e, 0x0176, 0x017e, 0x0184, 0x0187, 0x018e,
+ 0x019b, 0x01aa, 0x01aa, 0x01b0, 0x01b8, 0x01ca, 0x01d6, 0x01ec,
+ 0x01f9, 0x01fe, 0x0209, 0x020d, 0x0213, 0x021a, 0x0222, 0x022a,
+ // Entry 40 - 7F
+ 0x0234, 0x0239, 0x023f, 0x0246, 0x024b, 0x0251, 0x0257, 0x025c,
+ 0x0260, 0x026d, 0x0279, 0x027e, 0x0284, 0x0289, 0x0291, 0x0299,
+ 0x029d, 0x02a1, 0x02a6, 0x02ab, 0x02ab, 0x02b1, 0x02b9, 0x02c7,
+ 0x02cc, 0x02db, 0x02e3, 0x02ec, 0x02f0, 0x02f8, 0x02fc, 0x02ff,
+ 0x030b, 0x030b, 0x0312, 0x0321, 0x0329, 0x0332, 0x0338, 0x033d,
+ 0x0342, 0x034c, 0x0352, 0x0357, 0x035e, 0x0365, 0x0365, 0x0370,
+ 0x0378, 0x037f, 0x038d, 0x039a, 0x03a1, 0x03b0, 0x03c0, 0x03c6,
+ 0x03d0, 0x03d5, 0x03dc, 0x03e2, 0x03f3, 0x03fd, 0x040c, 0x0412,
+ // Entry 80 - BF
+ 0x0419, 0x0420, 0x0429, 0x0430, 0x043c, 0x0441, 0x044d, 0x0453,
+ 0x0464, 0x0470, 0x047c, 0x0484, 0x0489, 0x048f, 0x049b, 0x04a0,
+ 0x04a6, 0x04ae, 0x04b4, 0x04bc, 0x04c4, 0x04cb, 0x04d1, 0x04d5,
+ 0x04da, 0x04e1, 0x04e9, 0x04ec, 0x04fb, 0x0508, 0x050e, 0x0519,
+ 0x0531, 0x0533, 0x053a, 0x054b, 0x0551, 0x055f, 0x0563, 0x0574,
+} // Size: 360 bytes
+
+var isScriptStr string = "" + // Size: 363 bytes
+ "arabísktarmensktbengalsktbopomofoblindraleturkyrillísktdevanagarieþíópís" +
+ "ktgeorgísktgrísktgújaratígurmukhihangulkínverskteinfaldað hanhefðbundið " +
+ "hanhebreskthiraganakatakana eða hiraganajapansktkatakanakmerkannadakóres" +
+ "ktlaolatnesktmalalajammongólsktmjanmarsktoriyasinhalatamílskttelúgúthaan" +
+ "ataílenskttíbeskttáknóskrifaðalmenntóþekkt letur"
+
+var isScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x0022, 0x0022,
+ 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0043, 0x0043, 0x0043,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x0050, 0x0050, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x0061, 0x006b, 0x0073, 0x0079, 0x0083, 0x0083,
+ 0x0091, 0x00a1, 0x00a1, 0x00a9, 0x00b1, 0x00b1, 0x00b1, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00cf, 0x00cf, 0x00cf, 0x00d7,
+ // Entry 40 - 7F
+ 0x00d7, 0x00db, 0x00db, 0x00e2, 0x00ea, 0x00ea, 0x00ea, 0x00ea,
+ 0x00ed, 0x00ed, 0x00ed, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5,
+ 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5,
+ 0x00f5, 0x00f5, 0x00f5, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0108,
+ 0x0108, 0x0108, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x0112, 0x0112, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117,
+ 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117,
+ 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117, 0x0117,
+ // Entry 80 - BF
+ 0x0117, 0x0117, 0x0117, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e,
+ 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0127,
+ 0x0127, 0x0127, 0x012f, 0x012f, 0x012f, 0x012f, 0x0135, 0x013f,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147,
+ 0x0147, 0x0147, 0x0147, 0x0147, 0x014c, 0x0156, 0x015d, 0x016b,
+} // Size: 360 bytes
+
+var itScriptStr string = "" + // Size: 1562 bytes
+ "afakaaraboaramaico imperialearmenoavesticobalinesebamumBassa Vahbatakben" +
+ "galesesimboli blissbopomofobrahmibraillebuginesebuhidchakmasimboli abori" +
+ "geni canadesi unificaticarianchamcherokeecirthcoptocipriotacirillicociri" +
+ "llico antica chiesa slavonicadevanagarideseretstenografia duployanegizia" +
+ "no demoticoieratico egizianogeroglifici egizianietiopekutsurigeorgianogl" +
+ "agoliticogoticogranthagrecogujaratigurmukhihangulhanhanunoohan semplific" +
+ "atohan tradizionaleebraicohiraganageroglifici anatolicipahawn hmongkatan" +
+ "aka o hiraganaantico unghereseinduitalico anticojavanesegiapponesejurche" +
+ "nkayah likatakanakharoshthikhmerkhojkikannadacoreanoKpellekaithilannalao" +
+ "variante fraktur del latinovariante gaelica del latinolatinolepchalimbul" +
+ "ineare Alineare Blisulomalycilydimandaicomanicheogeroglifici mayamendeco" +
+ "rsivo meroiticomeroiticomalayalammongolomoonmromeetei mayekbirmanoarabo " +
+ "settentrionale anticonabateogeba naxin’konushuoghamol chikiorkhonoriyaos" +
+ "manyapalmirenopermico anticophags-papahlavi delle iscrizionipahlavi psal" +
+ "terpahlavi bookfeniciofonetica di pollardpartico delle iscrizionirejangr" +
+ "ongorongorunicosamaritanosaratiarabo meridionale anticosaurashtralinguag" +
+ "gio dei segnishavianosharadakhudawadisingalesesora sompengsundanesesylot" +
+ "i nagrisirianosiriaco estrangelosiriaco occidentalesiriaco orientaletagb" +
+ "anwatakritai letai luetamiltanguttai viettelugutengwartifinaghtagalogtha" +
+ "anathailandesetibetanotirhutaugaritavaiialfabeto visivovarang kshitiwole" +
+ "aipersiano anticosumero-accadiano cuneiformeyiereditatonotazione matemat" +
+ "icasimbolinon scrittocomunescrittura sconosciuta"
+
+var itScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0005, 0x0005, 0x000a, 0x001c, 0x0022, 0x002a,
+ 0x0032, 0x0037, 0x0040, 0x0045, 0x004e, 0x005b, 0x0063, 0x0069,
+ 0x0070, 0x0078, 0x007d, 0x0083, 0x00a7, 0x00ad, 0x00b1, 0x00b9,
+ 0x00be, 0x00c3, 0x00cb, 0x00d4, 0x00f5, 0x00ff, 0x0106, 0x011a,
+ 0x012b, 0x013c, 0x0150, 0x0150, 0x0156, 0x015d, 0x0166, 0x0171,
+ 0x0177, 0x017e, 0x0183, 0x018b, 0x0193, 0x0199, 0x019c, 0x01a3,
+ 0x01b3, 0x01c3, 0x01c3, 0x01ca, 0x01d2, 0x01e7, 0x01f3, 0x0206,
+ 0x0216, 0x021a, 0x0228, 0x0230, 0x023a, 0x0241, 0x0249, 0x0251,
+ // Entry 40 - 7F
+ 0x025b, 0x0260, 0x0266, 0x026d, 0x0274, 0x027a, 0x0280, 0x0285,
+ 0x0288, 0x02a3, 0x02be, 0x02c4, 0x02ca, 0x02cf, 0x02d8, 0x02e1,
+ 0x02e5, 0x02e9, 0x02ed, 0x02f1, 0x02f1, 0x02f9, 0x0301, 0x0311,
+ 0x0316, 0x0327, 0x0330, 0x0339, 0x0339, 0x0340, 0x0344, 0x0347,
+ 0x0353, 0x0353, 0x035a, 0x0375, 0x037c, 0x0385, 0x038b, 0x0390,
+ 0x0395, 0x039d, 0x03a3, 0x03a8, 0x03af, 0x03b8, 0x03b8, 0x03c6,
+ 0x03ce, 0x03e6, 0x03f5, 0x0401, 0x0408, 0x041b, 0x0433, 0x0439,
+ 0x0443, 0x0449, 0x0453, 0x0459, 0x0471, 0x047b, 0x048f, 0x0497,
+ // Entry 80 - BF
+ 0x049e, 0x049e, 0x04a7, 0x04b0, 0x04bc, 0x04c5, 0x04d1, 0x04d8,
+ 0x04ea, 0x04fd, 0x050e, 0x0516, 0x051b, 0x0521, 0x0528, 0x052d,
+ 0x0533, 0x053b, 0x0541, 0x0548, 0x0550, 0x0557, 0x055d, 0x0568,
+ 0x0570, 0x0577, 0x057e, 0x0582, 0x0591, 0x059e, 0x05a4, 0x05b3,
+ 0x05ce, 0x05d0, 0x05d9, 0x05ed, 0x05f4, 0x05ff, 0x0605, 0x061a,
+} // Size: 360 bytes
+
+var jaScriptStr string = "" + // Size: 3253 bytes
+ "アファカ文字カフカス・アルバニア文字アラビア文字帝国アラム文字アルメニア文字アヴェスター文字バリ文字バムン文字バサ文字バタク文字ベンガル文字ブリ" +
+ "スシンボル注音字母ブラーフミー文字ブライユ点字ブギス文字ブヒッド文字チャクマ文字統合カナダ先住民音節文字カリア文字チャム文字チェロキー文字キ" +
+ "アス文字コプト文字キプロス文字キリル文字古代教会スラブ語キリル文字デーバナーガリー文字デセレット文字デュプロワエ式速記エジプト民衆文字エジプ" +
+ "ト神官文字エジプト聖刻文字エルバサン文字エチオピア文字ジョージア文字(フツリ)ジョージア文字グラゴル文字ゴート文字グランタ文字ギリシャ文字グ" +
+ "ジャラート文字グルムキー文字ハングル漢字ハヌノオ文字漢字(簡体字)漢字(繁体字)ヘブライ文字ひらがなアナトリア象形文字パハウ・フモン文字仮名" +
+ "古代ハンガリー文字インダス文字古イタリア文字ジャワ文字日本語の文字女真文字カヤー文字カタカナカローシュティー文字クメール文字ホジャ文字カンナ" +
+ "ダ文字韓国語の文字クペレ文字カイティ文字ラーンナー文字ラオ文字ラテン文字(ドイツ文字)ラテン文字 (ゲール文字)ラテン文字レプチャ文字リンブ" +
+ "文字線文字A線文字Bフレイザー文字ロマ文字リキア文字リディア文字マハージャニー文字マンダ文字マニ文字マヤ象形文字メンデ文字メロエ文字草書体メ" +
+ "ロエ文字マラヤーラム文字モーディー文字モンゴル文字ムーン文字ムロ文字メイテイ文字ミャンマー文字古代北アラビア文字ナバテア文字ナシ族ゲバ文字ン" +
+ "コ文字女書オガム文字オルチキ文字オルホン文字オリヤー文字オスマニア文字パルミラ文字パウ・チン・ハウ文字古ぺルム文字パスパ文字碑文パフラヴィー" +
+ "文字詩編用パフラヴィー文字書物用パフラヴィー文字フェニキア文字ポラード音声記号碑文パルティア文字ルジャン文字ロンゴロンゴ文字ルーン文字サマリ" +
+ "ア文字サラティ文字古代南アラビア文字サウラーシュトラ文字手話文字ショー文字シャーラダー文字梵字クダワディ文字シンハラ文字ソラング・ソンペング" +
+ "文字スンダ文字シロティ・ナグリ文字シリア文字シリア文字(エストランゲロ文字)シリア文字(西方シリア文字)シリア文字(東方シリア文字)タグバン" +
+ "ワ文字タークリー文字タイ・レ文字新タイ・ルー文字タミール文字西夏文字タイ・ヴェト文字テルグ文字テングワール文字ティフナグ文字タガログ文字ター" +
+ "ナ文字タイ文字チベット文字ティルフータ文字ウガリット文字ヴァイ文字視話法バラン・クシティ文字ウォレアイ文字古代ペルシア文字シュメール=アッカ" +
+ "ド語楔形文字イ文字基底文字の種別を継承する結合文字数学記号記号文字非表記共通文字未定義文字"
+
+var jaScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0012, 0x0036, 0x0036, 0x0048, 0x005d, 0x0072, 0x008a,
+ 0x0096, 0x00a5, 0x00b1, 0x00c0, 0x00d2, 0x00e7, 0x00f3, 0x010b,
+ 0x011d, 0x012c, 0x013e, 0x0150, 0x0174, 0x0183, 0x0192, 0x01a7,
+ 0x01b6, 0x01c5, 0x01d7, 0x01e6, 0x020d, 0x022b, 0x0240, 0x025b,
+ 0x0273, 0x028b, 0x02a3, 0x02b8, 0x02cd, 0x02ed, 0x0302, 0x0314,
+ 0x0323, 0x0335, 0x0347, 0x035f, 0x0374, 0x0380, 0x0386, 0x0398,
+ 0x03a9, 0x03ba, 0x03ba, 0x03cc, 0x03d8, 0x03f3, 0x040e, 0x0414,
+ 0x042f, 0x0441, 0x0456, 0x0465, 0x0477, 0x0483, 0x0492, 0x049e,
+ // Entry 40 - 7F
+ 0x04bc, 0x04ce, 0x04dd, 0x04ef, 0x0501, 0x0510, 0x0522, 0x0537,
+ 0x0543, 0x0563, 0x0584, 0x0593, 0x05a5, 0x05b4, 0x05be, 0x05c8,
+ 0x05dd, 0x05e9, 0x05f8, 0x060a, 0x0625, 0x0634, 0x0640, 0x0652,
+ 0x0661, 0x0679, 0x0688, 0x06a0, 0x06b5, 0x06c7, 0x06d6, 0x06e2,
+ 0x06f4, 0x06f4, 0x0709, 0x0724, 0x0736, 0x074b, 0x0757, 0x075d,
+ 0x076c, 0x077e, 0x0790, 0x07a2, 0x07b7, 0x07c9, 0x07e7, 0x07f9,
+ 0x0808, 0x0826, 0x0847, 0x0868, 0x087d, 0x0895, 0x08b0, 0x08c2,
+ 0x08da, 0x08e9, 0x08fb, 0x090d, 0x0928, 0x0946, 0x0952, 0x0961,
+ // Entry 80 - BF
+ 0x0979, 0x097f, 0x0994, 0x09a6, 0x09ca, 0x09d9, 0x09f7, 0x0a06,
+ 0x0a32, 0x0a58, 0x0a7e, 0x0a93, 0x0aa8, 0x0aba, 0x0ad2, 0x0ae4,
+ 0x0af0, 0x0b08, 0x0b17, 0x0b2f, 0x0b44, 0x0b56, 0x0b65, 0x0b71,
+ 0x0b83, 0x0b9b, 0x0bb0, 0x0bbf, 0x0bc8, 0x0be6, 0x0bfb, 0x0c13,
+ 0x0c40, 0x0c49, 0x0c79, 0x0c85, 0x0c91, 0x0c9a, 0x0ca6, 0x0cb5,
+} // Size: 360 bytes
+
+var kaScriptStr string = "" + // Size: 4008 bytes
+ "აფაკაარაბულიიმპერიული არამეულისომხურიავესტურიბალიურიბამუმიბასა ვაჰიბატაკ" +
+ "იბენგალურიბლისსიმბოლოებიბოპომოფობრაჰმიბრაილიბუჰიდიჩაკმაკარიულიჩამიჩერო" +
+ "კიკირთიკოპტურიკვიპროსულიკირილიცაძველი სლავური კირილიცადევანაგარიდეზერე" +
+ "ტისდუპლოის სტენოგრაფიაეგვიპტური დემოტიკურიეგვიპტური იერატიკულიეგვიპტურ" +
+ "ი იეროგლიფურიეთიოპიურიხუცურიქართულიგლაგოლიცაგოთურიგრანთაბერძნულიგუჯარა" +
+ "თულიგურმუხიჰანგულიჰანიჰანუნოოგამარტივებული ჰანიტრადიციული ჰანიებრაულიჰ" +
+ "ირაგანაანატოლიური იეროგლიფურიფაჰაუ-მონიიაპონური კანაძველი უნგრულიიავურ" +
+ "იიაპონურიჯურჯენულიკაიაჰ-ლიკატაკანაქაროშთიქმერულიქოჯკიკანადაკორეულიკპელ" +
+ "ეკაითილაოსურიგელური ლათინურილათინურილიმბუA-ხაზოვანიB-ხაზოვანილომალიკიუ" +
+ "რილიდიურიმანდეურიმანიქეურიმაიას იეროგლიფებიმენდემეროიტული კურსივიმეროი" +
+ "ტულიმალაიალამურიმონღოლურიმრომიანმურიძველი ჩრდილოეთ-არაბულინაბატეურინკო" +
+ "ნუშუოღამიოლ-ჩიკიორხონულიორიაოსმანიაპალმირულიძველი პერმულიფაგსპამონუმენ" +
+ "ტური ფალაურიფსალმუნური ფალაურიწიგნური ფალაურიფინიკიურიმონუმენტური პართ" +
+ "ულირეჯანგირონგორონგორუნულისამარიულისარატიძველი სამხრეთ-არაბულისაურაშტრ" +
+ "აჟესტთაშარადაქუდავადისინჰალურისორან-სომპენისუნდანურისილოტი ნაგრისირიულ" +
+ "ისირიული ესტრანგელოდასავლეთი სირიულიაღმოსავლეთი სირიულიტაგბანვატაკრიტა" +
+ "ი ლეახალი ტაი ლიუტამილურიტანღუტურიტაი-ვიეტიტელუგუტენგვარიტიფინაღითაანა" +
+ "ტაიტიბეტურიტირჰუტაუგარითულივაიხილული მეტყველებავარანგ-კშიტივოლეაიძველი" +
+ " სპარსულიშუმერულ-აქადური ლურსმნულიგადაღებულიმათემატიკური ნოტაციასიმბოლოე" +
+ "ბიუმწერლობოზოგადიუცნობი დამწერლობა"
+
+var kaScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x000f, 0x000f, 0x0024, 0x0058, 0x006d, 0x0085,
+ 0x009a, 0x00ac, 0x00c5, 0x00d7, 0x00f2, 0x011c, 0x0134, 0x0146,
+ 0x0158, 0x0158, 0x016a, 0x0179, 0x0179, 0x018e, 0x019a, 0x01ac,
+ 0x01bb, 0x01d0, 0x01ee, 0x0206, 0x0244, 0x0262, 0x027d, 0x02b4,
+ 0x02ee, 0x0328, 0x0365, 0x0365, 0x0380, 0x0392, 0x03a7, 0x03c2,
+ 0x03d4, 0x03e6, 0x03fe, 0x041c, 0x0431, 0x0446, 0x0452, 0x0467,
+ 0x049b, 0x04c6, 0x04c6, 0x04db, 0x04f3, 0x0533, 0x054f, 0x0574,
+ 0x0599, 0x0599, 0x0599, 0x05ab, 0x05c3, 0x05de, 0x05f4, 0x060c,
+ // Entry 40 - 7F
+ 0x0621, 0x0636, 0x0645, 0x0657, 0x066c, 0x067b, 0x068a, 0x068a,
+ 0x069f, 0x069f, 0x06ca, 0x06e2, 0x06e2, 0x06f1, 0x070b, 0x0725,
+ 0x0725, 0x0731, 0x0746, 0x075b, 0x075b, 0x0773, 0x078e, 0x07bf,
+ 0x07ce, 0x07ff, 0x081a, 0x083e, 0x083e, 0x0859, 0x0859, 0x0862,
+ 0x0862, 0x0862, 0x087a, 0x08b8, 0x08d3, 0x08d3, 0x08dc, 0x08e8,
+ 0x08f7, 0x090a, 0x0922, 0x092e, 0x0943, 0x095e, 0x095e, 0x0983,
+ 0x0995, 0x09cc, 0x0a00, 0x0a2b, 0x0a46, 0x0a46, 0x0a7d, 0x0a92,
+ 0x0ab0, 0x0ac2, 0x0add, 0x0aef, 0x0b2a, 0x0b45, 0x0b57, 0x0b57,
+ // Entry 80 - BF
+ 0x0b69, 0x0b69, 0x0b81, 0x0b9c, 0x0bc1, 0x0bdc, 0x0bfe, 0x0c13,
+ 0x0c47, 0x0c78, 0x0caf, 0x0cc7, 0x0cd6, 0x0ce6, 0x0d09, 0x0d21,
+ 0x0d3c, 0x0d55, 0x0d67, 0x0d7f, 0x0d97, 0x0d97, 0x0da6, 0x0daf,
+ 0x0dc7, 0x0ddc, 0x0df7, 0x0e00, 0x0e31, 0x0e53, 0x0e65, 0x0e8d,
+ 0x0ed4, 0x0ed4, 0x0ef2, 0x0f2c, 0x0f4a, 0x0f65, 0x0f77, 0x0fa8,
+} // Size: 360 bytes
+
+var kkScriptStr string = "" + // Size: 918 bytes
+ "араб жазуыармян жазуыбенгал жазуыбопомофо жазуБрайль жазуыкирилл жазуыде" +
+ "ванагари жазуыэфиоп жазугрузин жазуыгрек жазуыгуджарати жазуыгурмукхи ж" +
+ "азуыхангул жазуықытай жазуыжеңілдетілген қытай иероглифыдәстүрлі қытай " +
+ "иероглифыиврит жазуыхирагана жазуыжапон жазуыкатакана жазуыкхмер жазуык" +
+ "аннада жазуыкорей жазуылаос жазуылатын жазуымалаялам жазуымоңғол жазуым" +
+ "ьянма жазуыория жазуысингаль жазуытамиль жазуытелугу жазуытаана жазуыта" +
+ "й жазуытибет жазуытаңбаларжазусызжалпыбелгісіз жазу"
+
+var kkScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x003f, 0x003f, 0x0058, 0x0058,
+ 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f,
+ 0x006f, 0x006f, 0x006f, 0x0086, 0x0086, 0x00a5, 0x00a5, 0x00a5,
+ 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00b8, 0x00b8, 0x00cf, 0x00cf,
+ 0x00cf, 0x00cf, 0x00e2, 0x00ff, 0x011a, 0x0131, 0x0146, 0x0146,
+ 0x017e, 0x01ac, 0x01ac, 0x01c1, 0x01dc, 0x01dc, 0x01dc, 0x01dc,
+ 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01f1, 0x01f1, 0x01f1, 0x020c,
+ // Entry 40 - 7F
+ 0x020c, 0x0221, 0x0221, 0x023a, 0x024f, 0x024f, 0x024f, 0x024f,
+ 0x0262, 0x0262, 0x0262, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277,
+ 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277, 0x0277,
+ 0x0277, 0x0277, 0x0277, 0x0292, 0x0292, 0x02a9, 0x02a9, 0x02a9,
+ 0x02a9, 0x02a9, 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c0,
+ 0x02c0, 0x02c0, 0x02c0, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3,
+ 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3,
+ 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3,
+ // Entry 80 - BF
+ 0x02d3, 0x02d3, 0x02d3, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec,
+ 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x0303,
+ 0x0303, 0x0303, 0x031a, 0x031a, 0x031a, 0x031a, 0x032f, 0x0340,
+ 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355, 0x0355,
+ 0x0355, 0x0355, 0x0355, 0x0355, 0x0365, 0x0373, 0x037d, 0x0396,
+} // Size: 360 bytes
+
+var kmScriptStr string = "" + // Size: 957 bytes
+ "អារ៉ាប់អាម៉ានីបង់ក្លាដែសបូផូម៉ូហ្វូអក្សរ\u200bសម្រាប់មនុស្ស\u200bពិការ" +
+ "\u200bភ្នែកស៊ីរីលីកដាវ៉ាន់ណាការិអេត្យូពីហ្សកហ្ស៊ីក្រិចគូចារ៉ាទីកុមុយឃីហា" +
+ "ំងកុលហានអក្សរ\u200bហាន\u200bកាត់អក្សរ\u200bហាន\u200bពេញអ៊ីស្រាអែលហ៊ីរ៉" +
+ "ាកាណាជប៉ុនកាតាកាណាខ្មែរកន្នដកូរ៉េឡាវឡាតាំងមលយាល័មម៉ុងហ្គោលីភូមាអូរីយ៉ា" +
+ "ស៊ីនហាឡាតាមីលតេលុគុថាណាថៃទីបេនិមិត្តសញ្ញាគ្មានការសរសេរទូទៅអក្សរមិនស្គា" +
+ "ល់"
+
+var kmScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0015, 0x002a, 0x002a,
+ 0x002a, 0x002a, 0x002a, 0x002a, 0x0048, 0x0048, 0x0069, 0x0069,
+ 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6,
+ 0x00c6, 0x00c6, 0x00c6, 0x00de, 0x00de, 0x0105, 0x0105, 0x0105,
+ 0x0105, 0x0105, 0x0105, 0x0105, 0x011d, 0x011d, 0x0138, 0x0138,
+ 0x0138, 0x0138, 0x0147, 0x0162, 0x0177, 0x018c, 0x0195, 0x0195,
+ 0x01bf, 0x01e6, 0x01e6, 0x0204, 0x0222, 0x0222, 0x0222, 0x0222,
+ 0x0222, 0x0222, 0x0222, 0x0222, 0x0231, 0x0231, 0x0231, 0x0249,
+ // Entry 40 - 7F
+ 0x0249, 0x0258, 0x0258, 0x0267, 0x0276, 0x0276, 0x0276, 0x0276,
+ 0x027f, 0x027f, 0x027f, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291,
+ 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291, 0x0291,
+ 0x0291, 0x0291, 0x0291, 0x02a6, 0x02a6, 0x02c4, 0x02c4, 0x02c4,
+ 0x02c4, 0x02c4, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0,
+ 0x02d0, 0x02d0, 0x02d0, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5,
+ 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5,
+ 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5, 0x02e5,
+ // Entry 80 - BF
+ 0x02e5, 0x02e5, 0x02e5, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd,
+ 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x030c,
+ 0x030c, 0x030c, 0x031e, 0x031e, 0x031e, 0x031e, 0x032a, 0x0330,
+ 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c,
+ 0x033c, 0x033c, 0x033c, 0x033c, 0x0360, 0x0387, 0x0393, 0x03bd,
+} // Size: 360 bytes
+
+var knScriptStr string = "" + // Size: 3788 bytes
+ "ಅರೇಬಿಕ್ಇಂಪೀರಿಯಲ್ ಅರೆಮಾಯಿಕ್ಅರ್ಮೇನಿಯನ್ಅವೆಸ್ತಾನ್ಬಾಲಿನೀಸ್ಬಾಟಕ್ಬೆಂಗಾಲಿಬ್ಲಿಸ್" +
+ "\u200cಸಿಂಬಲ್ಸ್ಬೋಪೊಮೋಫೋಬ್ರಾಹ್ಮಿಬ್ರೈಲ್ಬಗಿನೀಸ್ಬುಹಿದ್ಕಾಕಂಯುನಿಟೆಡ್ ಕೆನೆಡಿಯನ್ " +
+ "ಅಬೊರಿಜಿನಲ್ ಸಿಲ್ಯಾಬಿಕ್ಸ್ಕರೇನ್ಚಾಮ್ಚೆರೋಕೀಸಿರ್ಥ್ಕಾಪ್ಟಿಕ್ಸಿಪ್ರಿಯಾಟ್ಸಿರಿಲಿಕ್" +
+ "ಪ್ರಾಚೀನ ಚರ್ಚ್ ಸ್ಲೋವಾನಿಕ್ ಸಿರಿಲಿಕ್ದೇವನಾಗರಿಡಸರ್ಟ್ಈಜಿಪ್ಟಿಯನ್ ಡೆಮೋಟಿಕ್ಈಜಿಪ" +
+ "್ಟಿಯನ್ ಹಯಾರಿಟಿಕ್ಈಜಿಪ್ಟಿಯನ್ ಹೀರೋಗ್ಲಿಫ್ಸ್ಇಥಿಯೋಪಿಕ್ಜಾರ್ಜಿಯನ್ ಖುಸ್ತುರಿಜಾರ್" +
+ "ಜಿಯನ್ಗ್ಲಾಗೋಲಿಟಿಕ್ಗೋತಿಕ್ಗ್ರೀಕ್ಗುಜರಾತಿಗುರ್ಮುಖಿಹ್ಯಾಂಗುಲ್ಹಾನ್ಹನೂನೂಸರಳೀಕೃತ " +
+ "ಹಾನ್ಸಾಂಪ್ರದಾಯಿಕ ಹಾನ್ಹೀಬ್ರೂಹಿರಗಾನಾಪಹವ್ ಹ್ಮೋಂಗ್ಕಟಕಾನಾ ಅಥವಾ ಹಿರಗಾನಾಪ್ರಾಚೀ" +
+ "ನ ಹಂಗೇರಿಯನ್ಸಿಂಧೂಪ್ರಾಚೀನ್ ಇಟಾಲಿಕ್ಜಾವನೀಸ್ಜಾಪನೀಸ್ಕೆಯಾ ಲಿಕಟಕಾನಾಖರೋಶ್ತಿಖಮೇಕ" +
+ "ನ್ನಡಕೊರಿಯನ್ಕೈಥಿಲಾನಾಲಾವೋಫ್ರಾಕ್ತರ್ ಲ್ಯಾಟಿನ್ಗೇಲಿಕ್ ಲ್ಯಾಟಿನ್ಲ್ಯಾಟಿನ್ಲೆಪ್ಚಾ" +
+ "ಲಿಂಬುಲೀನಯರ್ ಎಲೀನಯರ್ ಬಿಲೈಸಿಯನ್ಲಿಡಿಯನ್ಮಂಡೇಯನ್ಮನಿಚೈಯನ್ಮಯಾನ್ ಹೀರೋಗ್ಲಿಫ್ಸ್ಮ" +
+ "ೆರೊಯಿಟಿಕ್ಮಲಯಾಳಂಮಂಗೋಲಿಯನ್ಮೂನ್ಮೈತಿ ಮಯೆಕ್ಮ್ಯಾನ್ಮಾರ್ಎನ್\u200dಕೋಓಘಮ್ಓಲ್ ಚಿಕ" +
+ "ಿಓರ್ಖೋನ್ಒರಿಯಾಓಸ್ಮಾನ್ಯಾಪ್ರಾಚೀನ ಪೆರ್ಮಿಕ್ಫಾಗ್ಸ್-ಪಾಇನ್ಸ್\u200cಕ್ರಿಪ್ಶನಲ್ ಪ" +
+ "ಾಹ್ಲವಿಸಾಲ್ಟರ್ ಪಾಹ್ಲವಿಬುಕ್ ಪಾಹ್ಲವಿಫೀನಿಶಿಯನ್ಪೊಲ್ಲಾರ್ಡ್ ಫೊನೆಟಿಕ್ಇನ್ಸ್" +
+ "\u200cಕ್ರಿಪ್ಶನಲ್ ಪಾರ್ಥಿಯನ್ರೆಜಾಂಗ್ರೋಂಗೋರೋಂಗೋರೂನಿಕ್ಸಮಾರಿಟನ್ಸರಾಟಿಸೌರಾಷ್ಟ್ರಸ" +
+ "ೈನ್\u200cರೈಟಿಂಗ್ಶಾವಿಯಾನ್ಸಿಂಹಳಸುಂಡಾನೀಸ್ಸೈಲೋಟಿ ನಗ್ರಿಸಿರಿಯಾಕ್ಎಸ್ಟ್ರಾಂಜಿಲೋ" +
+ " ಸಿರಿಯಾಕ್ಪಶ್ಚಿಮ ಸಿರಿಯಾಕ್ಪೂರ್ವ ಸಿರಿಯಾಕ್ಟಾಗ್ಬಾನವಾಥಾಯ್ ಲಿನ್ಯೂ ಥಾಯ್ ಲುಇತಮಿಳು" +
+ "ಥಾಯ್ ವಿಯೆಟ್ತೆಲುಗುತೆಂಗ್\u200cವಾರ್ಟಿಫಿನಾಘ್ಟ್ಯಾಗಲೋಗ್ಥಾನಾಥಾಯ್ಟಿಬೇಟನ್ಉಗಾರಿಟ" +
+ "ಿಕ್ವಾಯ್ವಿಸಿಬಲ್ ಸ್ಪೀಚ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಸುಮೇರೋ-ಅಕ್ಕಾಡಿಯನ್ ಕ್ಯೂನಿಫಾರ್ಮ್ಯಿಇ" +
+ "ನ್\u200dಹೆರಿಟೆಡ್ಗಣೀತ ಸಂಕೇತಲಿಪಿಸಂಕೇತಗಳುಅಲಿಖಿತಸಾಮಾನ್ಯಗೊತ್ತಿಲ್ಲದ ಲಿಪಿ"
+
+var knScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x004c, 0x006a, 0x0085,
+ 0x009d, 0x009d, 0x009d, 0x00ac, 0x00c1, 0x00ee, 0x0106, 0x011e,
+ 0x0130, 0x0145, 0x0157, 0x0163, 0x01db, 0x01ea, 0x01f6, 0x0208,
+ 0x021a, 0x0232, 0x0250, 0x0268, 0x02c5, 0x02dd, 0x02ef, 0x02ef,
+ 0x0326, 0x0360, 0x03a3, 0x03a3, 0x03be, 0x03f2, 0x040d, 0x0431,
+ 0x0443, 0x0443, 0x0455, 0x046a, 0x0482, 0x049d, 0x04a9, 0x04b8,
+ 0x04da, 0x0508, 0x0508, 0x051a, 0x052f, 0x052f, 0x0551, 0x0586,
+ 0x05b7, 0x05c6, 0x05f4, 0x0609, 0x061e, 0x061e, 0x0631, 0x0643,
+ // Entry 40 - 7F
+ 0x0658, 0x0661, 0x0661, 0x0670, 0x0685, 0x0685, 0x0691, 0x069d,
+ 0x06a9, 0x06dd, 0x0708, 0x0720, 0x0732, 0x0741, 0x0757, 0x0770,
+ 0x0770, 0x0770, 0x0785, 0x079a, 0x079a, 0x07af, 0x07c7, 0x07fb,
+ 0x07fb, 0x07fb, 0x0819, 0x082b, 0x082b, 0x0846, 0x0852, 0x0852,
+ 0x086e, 0x086e, 0x088c, 0x088c, 0x088c, 0x088c, 0x089e, 0x089e,
+ 0x08aa, 0x08c0, 0x08d5, 0x08e4, 0x08ff, 0x08ff, 0x08ff, 0x092d,
+ 0x0946, 0x098c, 0x09b7, 0x09d9, 0x09f4, 0x0a2b, 0x0a77, 0x0a8c,
+ 0x0aaa, 0x0abc, 0x0ad4, 0x0ae3, 0x0ae3, 0x0afe, 0x0b22, 0x0b3a,
+ // Entry 80 - BF
+ 0x0b3a, 0x0b3a, 0x0b3a, 0x0b49, 0x0b49, 0x0b64, 0x0b86, 0x0b9e,
+ 0x0bdb, 0x0c06, 0x0c2e, 0x0c49, 0x0c49, 0x0c5c, 0x0c7f, 0x0c8e,
+ 0x0c8e, 0x0cad, 0x0cbf, 0x0cdd, 0x0cf5, 0x0d10, 0x0d1c, 0x0d28,
+ 0x0d3d, 0x0d3d, 0x0d58, 0x0d64, 0x0d8c, 0x0d8c, 0x0d8c, 0x0dba,
+ 0x0e10, 0x0e16, 0x0e3a, 0x0e62, 0x0e7a, 0x0e8c, 0x0ea1, 0x0ecc,
+} // Size: 360 bytes
+
+var koScriptStr string = "" + // Size: 2788 bytes
+ "아파카 문자코카시안 알바니아 문자아랍 문자아랍제국 문자아르메니아 문자아베스타 문자발리 문자바뭄 문자바사바흐 문자바타크 문자벵골 문" +
+ "자블리스기호 문자주음부호브라미브라유 점자부기 문자부히드 문자차크마 문자통합 캐나다 토착어카리 문자칸 고어체로키 문자키르쓰콥트 " +
+ "문자키프로스 문자키릴 문자고대교회슬라브어 키릴문자데바나가리 문자디저렛 문자듀플로이안 문자고대 이집트 민중문자고대 이집트 신관문" +
+ "자고대 이집트 신성문자엘바산 문자에티오피아 문자그루지야 쿠츠리 문자그루지야 문자글라골 문자고트 문자그란타 문자그리스 문자구쟈라" +
+ "티 문자구르무키 문자한글한자하누누 문자한자 간체한자 번체히브리 문자히라가나아나톨리아 상형문자파하우 몽 문자가나고대 헝가리 문자" +
+ "인더스 문자고대 이탈리아 문자자바 문자일본 문자줄첸 문자카야 리 문자가타카나카로슈티 문자크메르 문자코즈키 문자칸나다 문자한국어" +
+ "크펠레 문자카이시 문자란나 문자라오 문자독일식 로마자아일랜드식 로마자로마자렙차 문자림부 문자선형 문자(A)선형 문자(B)프레이" +
+ "저 문자로마 문자리키아 문자리디아 문자마하자니 문자만다이아 문자마니교 문자마야 상형 문자멘데 문자메로에 필기체메로에 문자말라얄" +
+ "람 문자몽골 문자문 문자므로 문자메이테이 마옉 문자미얀마 문자옛 북부 아라비아 문자나바테아 문자나시 게바 문자응코 문자누슈 문" +
+ "자오검 문자올 치키 문자오르혼어오리야 문자오스마니아 문자팔미라 문자고대 페름 문자파스파 문자명문 팔라비 문자솔터 팔라비 문자북" +
+ " 팔라비 문자페니키아 문자폴라드 표음 문자명문 파라티아 문자레장 문자롱고롱고룬 문자사마리아 문자사라티옛 남부 아라비아 문자사우라슈" +
+ "트라 문자수화 문자샤비안 문자사라다 문자실담자쿠다와디 문자신할라 문자소라 솜펭 문자순다 문자실헤티 나가리시리아 문자에스트랑겔로" +
+ "식 시리아 문자서부 시리아 문자동부 시리아 문자타그반와 문자타크리 문자타이 레 문자신 타이 루에타밀 문자탕구트 문자태국 베트남" +
+ " 문자텔루구 문자텡과르 문자티피나그 문자타갈로그 문자타나 문자타이 문자티베트 문자티르후타 문자우가리트 문자바이 문자시화법바랑 크시" +
+ "티 문자울레아이고대 페르시아 문자수메르-아카드어 설형문자이 문자구전 문자수학 기호기호구전일반 문자기록되지 않은 문자(구전)"
+
+var koScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0030, 0x0030, 0x003d, 0x0050, 0x0066, 0x0079,
+ 0x0086, 0x0093, 0x00a6, 0x00b6, 0x00c3, 0x00d9, 0x00e5, 0x00ee,
+ 0x00fe, 0x010b, 0x011b, 0x012b, 0x0145, 0x0152, 0x015c, 0x016c,
+ 0x0175, 0x0182, 0x0195, 0x01a2, 0x01c7, 0x01dd, 0x01ed, 0x0203,
+ 0x0220, 0x023d, 0x025a, 0x026a, 0x0280, 0x029d, 0x02b0, 0x02c0,
+ 0x02cd, 0x02dd, 0x02ed, 0x0300, 0x0313, 0x0319, 0x031f, 0x032f,
+ 0x033c, 0x0349, 0x0349, 0x0359, 0x0365, 0x0381, 0x0395, 0x039b,
+ 0x03b2, 0x03c2, 0x03dc, 0x03e9, 0x03f6, 0x0403, 0x0414, 0x0420,
+ // Entry 40 - 7F
+ 0x0433, 0x0443, 0x0453, 0x0463, 0x046c, 0x047c, 0x048c, 0x0499,
+ 0x04a6, 0x04b9, 0x04d2, 0x04db, 0x04e8, 0x04f5, 0x0505, 0x0515,
+ 0x0528, 0x0535, 0x0545, 0x0555, 0x0568, 0x057b, 0x058b, 0x059f,
+ 0x05ac, 0x05bf, 0x05cf, 0x05e2, 0x05e2, 0x05ef, 0x05f9, 0x0606,
+ 0x0620, 0x0620, 0x0630, 0x064e, 0x0661, 0x0675, 0x0682, 0x068f,
+ 0x069c, 0x06ad, 0x06b9, 0x06c9, 0x06df, 0x06ef, 0x06ef, 0x0703,
+ 0x0713, 0x072a, 0x0741, 0x0755, 0x0768, 0x077f, 0x0799, 0x07a6,
+ 0x07b2, 0x07bc, 0x07cf, 0x07d8, 0x07f6, 0x080f, 0x081c, 0x082c,
+ // Entry 80 - BF
+ 0x083c, 0x0845, 0x0858, 0x0868, 0x087c, 0x0889, 0x089c, 0x08ac,
+ 0x08d2, 0x08e9, 0x0900, 0x0913, 0x0923, 0x0934, 0x0945, 0x0952,
+ 0x0962, 0x0979, 0x0989, 0x0999, 0x09ac, 0x09bf, 0x09cc, 0x09d9,
+ 0x09e9, 0x09fc, 0x0a0f, 0x0a1c, 0x0a25, 0x0a3c, 0x0a48, 0x0a62,
+ 0x0a85, 0x0a8f, 0x0a9c, 0x0aa9, 0x0aaf, 0x0ab5, 0x0ac2, 0x0ae4,
+} // Size: 360 bytes
+
+var kyScriptStr string = "" + // Size: 491 bytes
+ "АрабАрмянБенгалБопомофоБрейлКириллДеванагариЭфиопГрузинГрекГужаратиГурму" +
+ "хиХангулХаньЖөн. КытайСалт. КытайИвритХираганаЖапанКатаканаКмерКаннадаК" +
+ "орейЛаоЛатынМалайаламМоңголМйанмарОрийаСингалаТамилТелуТаанаТайТибетБел" +
+ "гилерЖазылбаганЖалпыБелгисиз жазуу"
+
+var kyScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e,
+ 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0044, 0x0044, 0x0058, 0x0058, 0x0058,
+ 0x0058, 0x0058, 0x0058, 0x0058, 0x0062, 0x0062, 0x006e, 0x006e,
+ 0x006e, 0x006e, 0x0076, 0x0086, 0x0094, 0x00a0, 0x00a8, 0x00a8,
+ 0x00ba, 0x00ce, 0x00ce, 0x00d8, 0x00e8, 0x00e8, 0x00e8, 0x00e8,
+ 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f2, 0x00f2, 0x00f2, 0x0102,
+ // Entry 40 - 7F
+ 0x0102, 0x010a, 0x010a, 0x0118, 0x0122, 0x0122, 0x0122, 0x0122,
+ 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132,
+ 0x0132, 0x0132, 0x0132, 0x0144, 0x0144, 0x0150, 0x0150, 0x0150,
+ 0x0150, 0x0150, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e,
+ 0x015e, 0x015e, 0x015e, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
+ 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
+ 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168,
+ // Entry 80 - BF
+ 0x0168, 0x0168, 0x0168, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176,
+ 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0180,
+ 0x0180, 0x0180, 0x0188, 0x0188, 0x0188, 0x0188, 0x0192, 0x0198,
+ 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2,
+ 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01b2, 0x01c6, 0x01d0, 0x01eb,
+} // Size: 360 bytes
+
+var loScriptStr string = "" + // Size: 3892 bytes
+ "ອັບຟາກາອາລັບອິມພີຮຽນ ອາເມອິກອາເມນຽນອະເວສຕະບາລີບາມູມບັດຊາບາຕັກເບັງກາລິບລິ" +
+ "ກຊິມໂບລສຈູ້ອິນພຮາຫມີເບຣວບູກິສບູຮິດຊາກມາສັນຍາລັກຊົນເຜົ່າພື້ນເມືອງແຄນນາດ" +
+ "າຄາເຮຍຈາມເຊໂຮກີເຊີຮຄອບຕິກໄຊເປຍຊີຣິວລິກເຊຮັດສລາ ໂວນິກຊີຮິກລິກໂບຮານດີວານ" +
+ "າກາຣີເດເຊເຮຊົວເລດັບໂລຍັນດີໂມຕິກອີຍິບເຮຍຮາຕິກອີຍິບເຮຍໂຮກລິຟອີຍິບອີທິໂອປ" +
+ "ິກຄອດຊູຮີຈໍເຈຍຈໍຈຽນກລາໂກລິຕິກໂກຮິກເຄນທາກະເລັກຈູຈາຣາທີກົວມູຄີຮັນກູນຮານຮ" +
+ "ານູໂນໂອຈີນ (ແບບງ່າຍ)ຈີນ (ດັ້ງເດີມ)ຮີບຣິວຣິຣະງະນະອັກລຮະອານາໂຕເລຍປາເຮາເມ" +
+ "ັງຄະຕະກະນະຫຮືຮີຮະງະນະຮັງກາຮີໂບຮານອິນດັດອີຕາລີໂບຮານຈາວາຍີ່ປຸ່ນຈູຮເຊັນຄຍ" +
+ "າຄະຕະກະນະຂໍໂຮກສີຂະໝຽນຄໍຈຄີຄັນນາດາເກົາຫຼີເປລເລກາຍຕິລ້ານນາລາວລາຕິນ-ຟຮັ່ງ" +
+ "ເຕຣລາຕິນ-ແກລິກລາຕິນເລຊາລິມບູລີເນຍລີເນຍຣເຟຣເຊຮໂລມາໄລເຊຍລີເດຍແມນດຽນມານິແ" +
+ "ຊນມາຍາໄຮໂຮກລິບເມນເດເຄເລີຊີເມໂຮອິຕິກເມໂຮຕິກມາລາຍັນມົງໂກນມູນເມໂຮເມເທມາເຍ" +
+ "ກມຽນມາອາຮະເບຍເໜືອໂບຮານນາບາທາທຽນກີບາ-ນາຊີເອັນໂກນຸຊຸອອກຄອນໂອຊິກິອອກສມັນຍ" +
+ "າໂອຣິຢາພາລໄມຮິນເພີມີໂບຮານຟາກສ-ປາປະຫລາວີອິນສຄິບຊັນແນລປະຫລາວີຊອດເຕຮ໌ປະຫລ" +
+ "າວີບຸກຟີນິເຊຍສັດຕະສາດພໍຮລາພາຮ໌ເທຍອິນສຄຮິປຊັນແນລເຮຈັງຮອງໂກຮອງໂກຮູນິກຊາມ" +
+ "າເລຍຊາຮາຕິອາລະເບຍໃຕ້ໂບຮານໂສຮັດຕຣະໄຊນ໌ໄຮຕີ້ງຊອວຽນຊາຮາດາດຸດາວາດີສິນຫາລາໂ" +
+ "ສຮາສົມເປັງຊຸນດາຊີໂລຕິນາກຣີຊີເຮຍຊີເຮຍເອສທຮານຈີໂລຊີເຮຍຕາເວັນຕົກຊີເຮຍຕາເວ" +
+ "ັນອອກຕັກບັນວາທາຄຮີໄທເລໄທລື້ໃໝ່ທາມິລຕັນກັນໄທຫວຽດເຕລູກູເທງກວາຮທີຟີນາກຕາກ" +
+ "າລອກທານາໄທທິເບທັນເທຮຸທາຍູກາຮິດໄວຄຳເວົ້າທີ່ເບີ່ງເຫັນໄດ້ວາຮັງກສິຕິໂອລີເອ" +
+ "ເປຮເຊຍໂບຮານອັກສອນຮູບປລີ່ມສຸເມເຮຍ-ອັດຄາເດຍຍີອິນເຮຮິດເຄື່ອງໝາຍທາງຄະນິດສາ" +
+ "ດສັນຍາລັກບໍ່ມີພາສາຂຽນສາມັນການຂຽນທີ່ບໍ່ຮູ້ຈັກ"
+
+var loScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0015, 0x0015, 0x0015, 0x0024, 0x0052, 0x0067, 0x007c,
+ 0x0088, 0x0097, 0x00a6, 0x00b5, 0x00cd, 0x00ee, 0x0100, 0x0112,
+ 0x011e, 0x012d, 0x013c, 0x014b, 0x01ab, 0x01ba, 0x01c3, 0x01d5,
+ 0x01e1, 0x01f3, 0x0202, 0x021a, 0x0269, 0x0287, 0x0299, 0x02c0,
+ 0x02e4, 0x030b, 0x0335, 0x0335, 0x0350, 0x0374, 0x0383, 0x03a1,
+ 0x03b0, 0x03bf, 0x03d1, 0x03e9, 0x03fe, 0x0410, 0x0419, 0x0431,
+ 0x0452, 0x0476, 0x0476, 0x0488, 0x04a0, 0x04cd, 0x04e8, 0x0521,
+ 0x0545, 0x0557, 0x0578, 0x0584, 0x0599, 0x05ae, 0x05b7, 0x05cf,
+ // Entry 40 - 7F
+ 0x05e4, 0x05f3, 0x0602, 0x0617, 0x062c, 0x063b, 0x064a, 0x065c,
+ 0x0665, 0x068d, 0x06ac, 0x06bb, 0x06c7, 0x06d6, 0x06e5, 0x06f7,
+ 0x0709, 0x0715, 0x0724, 0x0733, 0x0733, 0x0745, 0x075a, 0x077e,
+ 0x078d, 0x07bd, 0x07d2, 0x07e7, 0x07e7, 0x07f9, 0x0802, 0x080e,
+ 0x0829, 0x0829, 0x0838, 0x0868, 0x0883, 0x089c, 0x08ae, 0x08ba,
+ 0x08cc, 0x08de, 0x08f9, 0x090b, 0x090b, 0x0923, 0x0923, 0x0941,
+ 0x0954, 0x0990, 0x09ba, 0x09d8, 0x09ed, 0x0a14, 0x0a53, 0x0a62,
+ 0x0a80, 0x0a8f, 0x0aa4, 0x0ab6, 0x0ae3, 0x0afb, 0x0b19, 0x0b28,
+ // Entry 80 - BF
+ 0x0b3a, 0x0b3a, 0x0b52, 0x0b67, 0x0b88, 0x0b97, 0x0bb8, 0x0bc7,
+ 0x0bf7, 0x0c21, 0x0c4b, 0x0c63, 0x0c72, 0x0c7e, 0x0c96, 0x0ca5,
+ 0x0cb7, 0x0cc9, 0x0cdb, 0x0cf0, 0x0d05, 0x0d1a, 0x0d26, 0x0d2c,
+ 0x0d41, 0x0d53, 0x0d68, 0x0d6e, 0x0db0, 0x0dce, 0x0de0, 0x0e01,
+ 0x0e59, 0x0e5f, 0x0e77, 0x0eb3, 0x0ecb, 0x0eef, 0x0efe, 0x0f34,
+} // Size: 360 bytes
+
+var ltScriptStr string = "" + // Size: 1634 bytes
+ "AfakaKaukazo Albanijosarabųimperinė aramaikųarmėnųavestanoBaliečiųBamumB" +
+ "assa Vahbatakbengalų„Bliss“ simboliaibopomofobrahmibrailiobuginezųbuhidč" +
+ "akmasuvienodinti Kanados aborigenų silabiniaikariųčamčerokiųkirtkoptųkip" +
+ "rokirilicasenoji bažnytinė slavų kirilicadevanagarideseretasDuplojė sten" +
+ "ografijaEgipto liaudiesEgipto žyniųegipto hieroglifaiElbasanoetiopųgruzi" +
+ "nų kutsurigruzinųglagolitikgotųGrantagraikųgudžaratųgurmukihangulhanhanu" +
+ "nosupaprastinti hantradiciniai hanhebrajųhiraganaAnatolijaus hieroglifai" +
+ "pahav hmongkatakana / hiraganasenasis vengrųindussenasis italųjaviečiųja" +
+ "ponųJurchenkajah likatakanakaroštikhmerųKhojkikanadųkorėjiečiųKpelųkaith" +
+ "ilanalaosiečiųfraktur lotynųgėlų lotynųlotynųlepčalimbulinijiniai Alinij" +
+ "iniai BFraserLomalicianlidianMahadžanimandėjųmaničųmalų hieroglifaiMende" +
+ "Merojitų rankraštinismeroitikmalajaliųModimongolųmūnMromeitei majekbirmi" +
+ "ečiųSenasis šiaurės arabųNabatėjųNaxi GebaenkoNüshuoghamol čikiorkonorij" +
+ "ųosmanųPalmirosPau Cin Hausenieji permėspagsa parašytiniai pahlavipselt" +
+ "er pahlavibuk pahvalifoenikųpolard fonetinėrašytiniai partųrejangrongoro" +
+ "ngorunųsamariečiųsaratisenoji pietų Arabijossauraštraženklų raštasšaviųŠ" +
+ "aradosSiddhamKhudawadisinhalųSora Sompengsundųsyloti nagrisirųestrangelo" +
+ " siriečiųvakarų sirųrytų sirųtagbanvaTakritai lenaujasis Tailando luetam" +
+ "ilųTanguttai vettelugųtengvartifinagtagalogųhanatajųtibetiečiųTirhutauga" +
+ "ritikvaimatoma kalbaVarang KshitiWoleaisenieji persųŠumero Akado dantira" +
+ "štisjipaveldėtasmatematiniai simboliaisimboliųneparašytabendrinežinomi " +
+ "rašmenys"
+
+var ltScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0016, 0x0016, 0x001c, 0x002f, 0x0037, 0x003f,
+ 0x0049, 0x004e, 0x0057, 0x005c, 0x0064, 0x0079, 0x0081, 0x0087,
+ 0x008e, 0x0097, 0x009c, 0x00a2, 0x00cc, 0x00d2, 0x00d6, 0x00df,
+ 0x00e3, 0x00e9, 0x00ee, 0x00f6, 0x0118, 0x0122, 0x012b, 0x0140,
+ 0x014f, 0x015d, 0x016f, 0x0177, 0x017e, 0x018e, 0x0196, 0x01a0,
+ 0x01a5, 0x01ab, 0x01b2, 0x01bd, 0x01c4, 0x01ca, 0x01cd, 0x01d3,
+ 0x01e4, 0x01f3, 0x01f3, 0x01fb, 0x0203, 0x021a, 0x0225, 0x0238,
+ 0x0247, 0x024c, 0x025a, 0x0264, 0x026b, 0x0272, 0x027a, 0x0282,
+ // Entry 40 - 7F
+ 0x028a, 0x0291, 0x0297, 0x029e, 0x02ab, 0x02b1, 0x02b7, 0x02bb,
+ 0x02c6, 0x02d5, 0x02e3, 0x02ea, 0x02f0, 0x02f5, 0x0301, 0x030d,
+ 0x0313, 0x0317, 0x031d, 0x0323, 0x032d, 0x0336, 0x033e, 0x034f,
+ 0x0354, 0x036b, 0x0373, 0x037d, 0x0381, 0x0389, 0x038d, 0x0390,
+ 0x039c, 0x039c, 0x03a7, 0x03bf, 0x03c9, 0x03d2, 0x03d6, 0x03dc,
+ 0x03e1, 0x03e9, 0x03ee, 0x03f4, 0x03fb, 0x0403, 0x040e, 0x041d,
+ 0x0425, 0x0438, 0x0447, 0x0452, 0x045a, 0x046a, 0x047c, 0x0482,
+ 0x048c, 0x0491, 0x049d, 0x04a3, 0x04b9, 0x04c3, 0x04d3, 0x04da,
+ // Entry 80 - BF
+ 0x04e2, 0x04e9, 0x04f2, 0x04fa, 0x0506, 0x050c, 0x0518, 0x051d,
+ 0x0532, 0x053f, 0x054a, 0x0552, 0x0557, 0x055d, 0x0572, 0x0579,
+ 0x057f, 0x0586, 0x058d, 0x0594, 0x059b, 0x05a4, 0x05a8, 0x05ad,
+ 0x05b9, 0x05c0, 0x05c8, 0x05cb, 0x05d7, 0x05e4, 0x05ea, 0x05f8,
+ 0x0612, 0x0614, 0x061f, 0x0635, 0x063e, 0x0649, 0x064f, 0x0662,
+} // Size: 360 bytes
+
+var lvScriptStr string = "" + // Size: 761 bytes
+ "arābuaramiešuarmēņubaliešubengāļubopomofobrahmiBraila rakstsirokēzukoptu" +
+ "kirilicasenslāvudevānagāridemotiskais rakstshierātiskais rakstsēģiptiešu" +
+ " hieroglifietiopiešugruzīnugotugrieķugudžaratupandžabuhangilaķīniešuhanu" +
+ " vienkāršotāhanu tradicionālāivritshiraganakatakana vai hiraganasenungār" +
+ "uvecitāļujaviešujapāņukatakanakhmerukannarukorejiešulaosiešulatīņulineār" +
+ "ā Alineārā BlīdiešumaijumalajalumongoļuMūna rakstsbirmiešuogamiskais ra" +
+ "kstsorijuosmaņu turkufeniķiešurongorongorūnu rakstssamariešusingāļuzundu" +
+ "sīriešurietumsīriešuaustrumsīriešutamilutelugutagalutaanatajutibetiešuse" +
+ "nperiešušumeru-akadiešu ķīļrakstsjimantotāmatemātiskais pierakstssimboli" +
+ "bez rakstībasvispārējānezināma rakstība"
+
+var lvScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000f, 0x0017, 0x0017,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x0028, 0x0028, 0x0030, 0x0036,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x004b,
+ 0x004b, 0x0050, 0x0050, 0x0058, 0x0061, 0x006d, 0x006d, 0x006d,
+ 0x007f, 0x0093, 0x00aa, 0x00aa, 0x00b4, 0x00b4, 0x00bc, 0x00bc,
+ 0x00c0, 0x00c0, 0x00c7, 0x00d1, 0x00da, 0x00e1, 0x00eb, 0x00eb,
+ 0x00fe, 0x0111, 0x0111, 0x0117, 0x011f, 0x011f, 0x011f, 0x0134,
+ 0x013e, 0x013e, 0x0148, 0x0150, 0x0158, 0x0158, 0x0158, 0x0160,
+ // Entry 40 - 7F
+ 0x0160, 0x0166, 0x0166, 0x016d, 0x0177, 0x0177, 0x0177, 0x0177,
+ 0x0180, 0x0180, 0x0180, 0x0188, 0x0188, 0x0188, 0x0193, 0x019e,
+ 0x019e, 0x019e, 0x019e, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01ac,
+ 0x01ac, 0x01ac, 0x01ac, 0x01b4, 0x01b4, 0x01bc, 0x01c8, 0x01c8,
+ 0x01c8, 0x01c8, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1,
+ 0x01e2, 0x01e2, 0x01e2, 0x01e7, 0x01f4, 0x01f4, 0x01f4, 0x01f4,
+ 0x01f4, 0x01f4, 0x01f4, 0x01f4, 0x01ff, 0x01ff, 0x01ff, 0x01ff,
+ 0x0209, 0x0215, 0x021f, 0x021f, 0x021f, 0x021f, 0x021f, 0x021f,
+ // Entry 80 - BF
+ 0x021f, 0x021f, 0x021f, 0x0228, 0x0228, 0x022d, 0x022d, 0x0236,
+ 0x0236, 0x0245, 0x0255, 0x0255, 0x0255, 0x0255, 0x0255, 0x025b,
+ 0x025b, 0x025b, 0x0261, 0x0261, 0x0261, 0x0267, 0x026c, 0x0270,
+ 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x027a, 0x0285,
+ 0x02a3, 0x02a5, 0x02ad, 0x02c5, 0x02cc, 0x02da, 0x02e6, 0x02f9,
+} // Size: 360 bytes
+
+var mkScriptStr string = "" + // Size: 3505 bytes
+ "афакакавкаскоалбанскиарапско писмоцарскоарамејскиерменско писмоавестанск" +
+ "обалискобамумскобасабатачкобенгалско писмоблиссимболибопомофобрамибрајо" +
+ "во писмобугискобухидскочакманскоканадско слоговнокарискочамскочерокиско" +
+ "кирткоптскокипарскокирилско писмостарословенска кирилицадеванагаридезер" +
+ "етскоДиплојеево стенографскоегипетско демотскоегипетско хиератскоегипет" +
+ "ски хиероглифиелбасанскоетиопско писмогрузиски хуцуригрузиско писмоглаг" +
+ "олицаготскогрантагрчко писмогуџаратигурмукихангулханско писмохануноовск" +
+ "опоедноставено ханско писмотрадиционално ханскохебрејско писмохираганаа" +
+ "надолски хиероглифипахауанско хмоншкојапонско слоговностароунгарскохара" +
+ "пскостароиталскојаванскојапонско писмоџурченскокаја ликатаканакароштикм" +
+ "ерско писмохоџкиканнадакорејско писмокпелскокајтилансколаошко писмофрак" +
+ "турна латиницагелска латиницалатинично писмолепчансколимбулинеарно Алин" +
+ "еарно БФрејзероволомсколикисколидискомахаџанимандејскоманихејскомајанск" +
+ "и хиероглифимендскомероитско ракописномероитскомалајаламско писмомодимо" +
+ "нголско писмоМуновомромејтејскомјанмарско писмостаросеверноарапсконабат" +
+ "ејсконасиска гебанконишуогамол чикистаротурскооријанско писмосомалископ" +
+ "алмирскоПаучинхауовостаропермскопагспанатписно средноперсископсалтирско" +
+ " средноперсискокнижевно староперсискофеникискоПолардовонатписно партиско" +
+ "реџаншкоронгоронгорунскосамарјанскосаратистаројужноарапскосаураштранско" +
+ "знаковно пишувањеШоовошарадасидамкудабадисинхалско писмосоранг сомпенгс" +
+ "унданскосилхетско нагарисирискоестрангелско сирискозападносирискоисточн" +
+ "осирискотагбанванскотакритај леново тај луетамилско писмотангутскотај в" +
+ "јеттелугутенгвартифинагтагалошкотанатајландско писмотибетско писмотирху" +
+ "таугаритсковајвидлив говорваранг кшитиволеајскостароперсискосумероакадс" +
+ "ко клинестојинаследеноматематичка нотацијасимболибез писмоопштонепознат" +
+ "о писмо"
+
+var mkScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000a, 0x002a, 0x002a, 0x0043, 0x0061, 0x007c, 0x0090,
+ 0x009e, 0x00ae, 0x00b6, 0x00c4, 0x00e1, 0x00f7, 0x0107, 0x0111,
+ 0x012a, 0x0138, 0x0148, 0x015a, 0x017b, 0x0189, 0x0195, 0x01a7,
+ 0x01af, 0x01bd, 0x01cd, 0x01e8, 0x0215, 0x0229, 0x023d, 0x026a,
+ 0x028d, 0x02b2, 0x02d9, 0x02ed, 0x0308, 0x0325, 0x0340, 0x0352,
+ 0x035e, 0x036a, 0x037f, 0x038f, 0x039d, 0x03a9, 0x03c0, 0x03d6,
+ 0x0408, 0x042f, 0x042f, 0x044c, 0x045c, 0x0483, 0x04a6, 0x04c7,
+ 0x04e1, 0x04f1, 0x0509, 0x0519, 0x0534, 0x0546, 0x0553, 0x0563,
+ // Entry 40 - 7F
+ 0x0571, 0x058a, 0x0594, 0x05a2, 0x05bd, 0x05cb, 0x05d5, 0x05e1,
+ 0x05f8, 0x061b, 0x0638, 0x0655, 0x0667, 0x0671, 0x0684, 0x0697,
+ 0x06ab, 0x06b7, 0x06c5, 0x06d3, 0x06e3, 0x06f5, 0x0709, 0x072e,
+ 0x073c, 0x0761, 0x0773, 0x0796, 0x079e, 0x07bb, 0x07c7, 0x07cd,
+ 0x07df, 0x07df, 0x07fe, 0x0824, 0x0838, 0x084f, 0x0855, 0x085d,
+ 0x0865, 0x0872, 0x0888, 0x08a5, 0x08b7, 0x08c9, 0x08e1, 0x08f9,
+ 0x0905, 0x0932, 0x0963, 0x098e, 0x09a0, 0x09b2, 0x09d3, 0x09e3,
+ 0x09f7, 0x0a03, 0x0a19, 0x0a25, 0x0a47, 0x0a61, 0x0a82, 0x0a8c,
+ // Entry 80 - BF
+ 0x0a98, 0x0aa2, 0x0ab2, 0x0acf, 0x0aea, 0x0afc, 0x0b1b, 0x0b29,
+ 0x0b50, 0x0b6c, 0x0b88, 0x0ba0, 0x0baa, 0x0bb5, 0x0bcb, 0x0be6,
+ 0x0bf8, 0x0c07, 0x0c13, 0x0c21, 0x0c2f, 0x0c41, 0x0c49, 0x0c68,
+ 0x0c83, 0x0c91, 0x0ca3, 0x0ca9, 0x0cc0, 0x0cd7, 0x0ce9, 0x0d03,
+ 0x0d2e, 0x0d32, 0x0d44, 0x0d6b, 0x0d79, 0x0d8a, 0x0d94, 0x0db1,
+} // Size: 360 bytes
+
+var mlScriptStr string = "" + // Size: 3465 bytes
+ "അറബിക്അർമിഅർമേനിയൻഅവെസ്ഥൻബാലിനീസ്ബട്ടക്ബംഗാളിബ്ലിസ് ചിത്ര ലിപിബോപ്പോമോഫോ" +
+ "ബ്രാഹ്മിബ്രെയ്\u200cലിബുഗിനീസ്ബുഹിഡ്ചകംഏകീകൃത കനേഡിയൻ ഗോത്രലിപിചരിയൻഛം" +
+ "ചെറോക്കിചിർത്ത്കോപ്റ്റിക്സൈപ്രിയോട്ട്സിറിലിക്പുരാതന ചർച്ച് സ്ലവോണിക് സ" +
+ "ിറിലിക്ദേവനാഗരിഡെസെർട്ട്ഈജിപ്ഷ്യൻ ഡിമോട്ടിക്ഈജിപ്ഷ്യൻ ഹിരാറ്റിക്ഈജിപ്ഷ" +
+ "്യൻ ചിത്രലിപിഎത്യോപിക്ജോർജ്ജിയൻ ഖുട്സുരിജോർജ്ജിയൻഗ്ലഗോലിറ്റിക്ഗോഥിക്ഗ്" +
+ "രീക്ക്ഗുജറാത്തിഗുരുമുഖിഹാംഗുൽഹാൻഹനുനൂലളിതവൽക്കരിച്ച ഹാൻപരമ്പരാഗത ഹാൻഹീ" +
+ "ബ്രുഹിരഗാനപഹ്വാ ഹമോംഗ്കടകാനയോ ഹിരാഗാനയോപുരാതന ഹംഗേറിയൻസിന്ധുപഴയ ഇറ്റാല" +
+ "ിയൻജാവനീസ്ജാപ്പനീസ്കയാ ലികറ്റക്കാനഖരോഷ്ടിഖമെർകന്നഡകൊറിയൻക്തിലന്നലാവോഫ്" +
+ "രാക്ടുർ ലാറ്റിൻഗെയ്\u200cലിക് ലാറ്റിൻലാറ്റിൻലെപ്ചലിംബുസമരേഖയിലുള്ള എലീ" +
+ "നിയർ ബിലൈസിൻലൈഡിയൻമൻഡേയൻമണിചേയൻമായൻ ചിത്രലിപിമെറോയിറ്റിക്മലയാളംമംഗോളിയ" +
+ "ൻമൂൺമേറ്റി മായക്മ്യാൻമാർഎൻകോഒഖാംഒൽ ചിക്കിഒർഖോൺഒഡിയഒസ്\u200cമാനിയപുരാതന" +
+ " പെർമിക്ഫഗസ് പഎഴുത്തു പഹൽവിസാൾട്ടർ പഹൽവിപഹൽവി ലിപിഫിനീഷ്യൻപൊള്ളാർഡ് ശബ്ദ" +
+ "ലിപിപൃതിറെജാംഗ്റൊംഗോറൊംഗോറുണിക്സമരിയസരതിസൗരാഷ്ട്രചിഹ്നലിപിഷാവിയൻസിംഹളസ" +
+ "ന്താനീസ്സൈലോതി നാഗരിസിറിയക്ക്എസ്റ്റ്രാംഗ്ലോ സിറിയക്പശ്ചിമസുറിയാനികിഴക്" +
+ "കൻ സിറിയക്തഗ്ബൻവാതായ് ലേപുതിയ തായ് ല്യൂതമിഴ്ത്വട്തെലുങ്ക്തെംഗ്വർതിഫിനാ" +
+ "ഗ്തഗലോഗ്ഥാനതായ്ടിബറ്റൻഉഗ്രൈറ്റിക്വൈദൃശ്യഭാഷപഴയ പേർഷ്യൻസുമേറോ അക്കാഡിയൻ" +
+ " ക്യുണിഫോംയിപാരമ്പര്യമായഗണിത രൂപംചിഹ്നങ്ങൾഎഴുതപ്പെടാത്തത്സാധാരണഅജ്ഞാത ലി" +
+ "പി"
+
+var mlScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x001e, 0x0036, 0x004b,
+ 0x0063, 0x0063, 0x0063, 0x0075, 0x0087, 0x00b6, 0x00d4, 0x00ec,
+ 0x0107, 0x011f, 0x0131, 0x013a, 0x017e, 0x018d, 0x0193, 0x01ab,
+ 0x01c0, 0x01de, 0x0202, 0x021a, 0x0274, 0x028c, 0x02a7, 0x02a7,
+ 0x02e1, 0x031b, 0x0352, 0x0352, 0x036d, 0x03a1, 0x03bc, 0x03e3,
+ 0x03f5, 0x03f5, 0x040d, 0x0428, 0x0440, 0x0452, 0x045b, 0x046a,
+ 0x049e, 0x04c3, 0x04c3, 0x04d5, 0x04e7, 0x04e7, 0x0509, 0x053a,
+ 0x0565, 0x0577, 0x059c, 0x05b1, 0x05cc, 0x05cc, 0x05dc, 0x05f7,
+ // Entry 40 - 7F
+ 0x060c, 0x0618, 0x0618, 0x0627, 0x0639, 0x0639, 0x0645, 0x0651,
+ 0x065d, 0x068e, 0x06bf, 0x06d4, 0x06e3, 0x06f2, 0x071a, 0x0733,
+ 0x0733, 0x0733, 0x0742, 0x0754, 0x0754, 0x0766, 0x077b, 0x07a3,
+ 0x07a3, 0x07a3, 0x07c7, 0x07d9, 0x07d9, 0x07f1, 0x07fa, 0x07fa,
+ 0x081c, 0x081c, 0x0834, 0x0834, 0x0834, 0x0834, 0x0840, 0x0840,
+ 0x084c, 0x0865, 0x0874, 0x0880, 0x089b, 0x089b, 0x089b, 0x08c3,
+ 0x08d3, 0x08f8, 0x091d, 0x0939, 0x0951, 0x0985, 0x0991, 0x09a6,
+ 0x09c4, 0x09d6, 0x09e5, 0x09f1, 0x09f1, 0x0a0c, 0x0a27, 0x0a39,
+ // Entry 80 - BF
+ 0x0a39, 0x0a39, 0x0a39, 0x0a48, 0x0a48, 0x0a63, 0x0a85, 0x0aa0,
+ 0x0ae0, 0x0b0a, 0x0b35, 0x0b4a, 0x0b4a, 0x0b5d, 0x0b86, 0x0b95,
+ 0x0b95, 0x0ba4, 0x0bbc, 0x0bd1, 0x0be9, 0x0bfb, 0x0c04, 0x0c10,
+ 0x0c25, 0x0c25, 0x0c46, 0x0c4c, 0x0c64, 0x0c64, 0x0c64, 0x0c83,
+ 0x0ccd, 0x0cd3, 0x0cf7, 0x0d10, 0x0d2b, 0x0d58, 0x0d6a, 0x0d89,
+} // Size: 360 bytes
+
+var mnScriptStr string = "" + // Size: 532 bytes
+ "арабарменбенгалвопомофобрайлкирилдеванагариэтиопгүржгрекгүжаратигурмукхи" +
+ "хангулханхялбаршуулсан ханзуламжлалт ханзеврейхираганаяпонкатаканакхмер" +
+ "каннадасолонгослаослатинмалаяламмонгол бичигмьянмарориясинхалатамилтэлү" +
+ "гүтанатайтөвдтэмдэгбичигдээгүйнийтлэгтодорхойгүй бичиг"
+
+var mnScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x002e, 0x002e,
+ 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038,
+ 0x0038, 0x0038, 0x0038, 0x0042, 0x0042, 0x0056, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x0056, 0x0056, 0x0060, 0x0060, 0x0068, 0x0068,
+ 0x0068, 0x0068, 0x0070, 0x0080, 0x0090, 0x009c, 0x00a2, 0x00a2,
+ 0x00c5, 0x00e0, 0x00e0, 0x00ea, 0x00fa, 0x00fa, 0x00fa, 0x00fa,
+ 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0112,
+ // Entry 40 - 7F
+ 0x0112, 0x011c, 0x011c, 0x012a, 0x013a, 0x013a, 0x013a, 0x013a,
+ 0x0142, 0x0142, 0x0142, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c,
+ 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c,
+ 0x014c, 0x014c, 0x014c, 0x015c, 0x015c, 0x0173, 0x0173, 0x0173,
+ 0x0173, 0x0173, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181,
+ 0x0181, 0x0181, 0x0181, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
+ 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
+ 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
+ // Entry 80 - BF
+ 0x0189, 0x0189, 0x0189, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197,
+ 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x01a1,
+ 0x01a1, 0x01a1, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b5, 0x01bb,
+ 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3,
+ 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01cf, 0x01e5, 0x01f3, 0x0214,
+} // Size: 360 bytes
+
+var mrScriptStr string = "" + // Size: 3386 bytes
+ "अरबीइम्पिरियल आर्मेनिकअर्मेनियनअवेस्तानबालीबटाकबंगालीब्लिसिम्बॉल्सबोपोमो" +
+ "फोब्रह्मीब्रेलबूगीबुहिदचकमायूनिफाइड कॅनेडियन अ\u200dॅबोरिदनल सिलॅबिक्स" +
+ "कॅरियनचामचेरोकीकिर्थकॉप्टिकसायप्रिऑटसीरिलिकपुरातन चर्च स्लाव्होनिक सिर" +
+ "िलिकदेवनागरीडेसर्टइजिप्शियन डेमोटिकइजिप्शियन हायरेटिकइजिप्शियन हायरोग्" +
+ "लिफ्सईथिओपिकजॉर्जियन खुत्सुरीजॉर्जियनग्लॅगोलिटिकगोथिकग्रीकगुजरातीगुरुम" +
+ "ुखीहंगुलहानहनुनूसरलीकृत हानपारंपारिक हानहिब्रूहिरागानापहाउ मंगकॅटाकना " +
+ "आणि हिरागानापुरातन हंगेरियनसिन्धुजुनी इटालिकजावानीसजपानीकायाह लीकॅटाका" +
+ "नाखारोश्थीख्मेरकन्नडकोरियनकाइथीलानालाओफ्रॅक्तुर लॅटिनगाएलिक लेटिनलॅटिन" +
+ "लेपचालिम्बूलीनियार अलीनियर बीलायशियानलायडियानमान्डायीनमानीचायीनमायान ह" +
+ "ाइरोग्लिफ्समेरोइटिकमल्याळममंगोलियनमूनमेइतेइ मायेकम्यानमारएन्‘कोओघामओल " +
+ "चिकिओर्खोनउडियाउस्मानियापुरातन पर्मिकफाग्स-पाइन्स्क्रिप्शनल पाहलवीसॉल्" +
+ "टर पाहलवीबुक पाहलवीफोनिशियनपोलार्ड फोनेटिकइन्स्क्रिप्शनल पर्थियनरीजांग" +
+ "रोन्गोरोन्गोरूनिकसमरिटानसरातीसौराष्ट्रसंकेत लिपीशॅव्हियनसिंहलासूदानीसि" +
+ "लोती नागरीसिरीयाकएस्त्ट्रेन्जेलो सिरियाकपश्चिमी सिरियाकपूर्वी सिरियाकत" +
+ "गोआन्वाताई लीनवीन ताई लूतामिळताई विएततेलगुतेन्गवारतिफिनाघटागालोगथानाथा" +
+ "ईतिबेटीयुगारिटिकवाईदृश्य संवादपुरातन फारसीदृश्यमान भाषायीवंशपरंपरागतगण" +
+ "िती संकेतलिपीप्रतीकअलिखितसामान्यअज्ञात लिपी"
+
+var mrScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005b, 0x0073,
+ 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x00c4, 0x00dc, 0x00f1,
+ 0x0100, 0x010c, 0x011b, 0x0127, 0x0193, 0x01a5, 0x01ae, 0x01c0,
+ 0x01cf, 0x01e4, 0x01ff, 0x0214, 0x026b, 0x0283, 0x0295, 0x0295,
+ 0x02c6, 0x02fa, 0x033a, 0x033a, 0x034f, 0x0380, 0x0398, 0x03b9,
+ 0x03c8, 0x03c8, 0x03d7, 0x03ec, 0x0404, 0x0413, 0x041c, 0x042b,
+ 0x044a, 0x046f, 0x046f, 0x0481, 0x0499, 0x0499, 0x04af, 0x04e7,
+ 0x0512, 0x0524, 0x0543, 0x0558, 0x0567, 0x0567, 0x057d, 0x0595,
+ // Entry 40 - 7F
+ 0x05ad, 0x05bc, 0x05bc, 0x05cb, 0x05dd, 0x05dd, 0x05ec, 0x05f8,
+ 0x0601, 0x062c, 0x064e, 0x065d, 0x066c, 0x067e, 0x0697, 0x06b0,
+ 0x06b0, 0x06b0, 0x06c8, 0x06e0, 0x06e0, 0x06fb, 0x0716, 0x074a,
+ 0x074a, 0x074a, 0x0762, 0x0777, 0x0777, 0x078f, 0x0798, 0x0798,
+ 0x07ba, 0x07ba, 0x07d2, 0x07d2, 0x07d2, 0x07d2, 0x07e4, 0x07e4,
+ 0x07f0, 0x0803, 0x0815, 0x0824, 0x083f, 0x083f, 0x083f, 0x0864,
+ 0x087a, 0x08b7, 0x08dc, 0x08f8, 0x0910, 0x093b, 0x097b, 0x098d,
+ 0x09b1, 0x09c0, 0x09d5, 0x09e4, 0x09e4, 0x09ff, 0x0a1b, 0x0a33,
+ // Entry 80 - BF
+ 0x0a33, 0x0a33, 0x0a33, 0x0a45, 0x0a45, 0x0a57, 0x0a79, 0x0a8e,
+ 0x0ad1, 0x0afc, 0x0b24, 0x0b3c, 0x0b3c, 0x0b4c, 0x0b69, 0x0b78,
+ 0x0b78, 0x0b8e, 0x0b9d, 0x0bb5, 0x0bca, 0x0bdf, 0x0beb, 0x0bf4,
+ 0x0c06, 0x0c06, 0x0c21, 0x0c2a, 0x0c49, 0x0c49, 0x0c49, 0x0c6b,
+ 0x0c90, 0x0c96, 0x0cb7, 0x0ce2, 0x0cf4, 0x0d06, 0x0d1b, 0x0d3a,
+} // Size: 360 bytes
+
+var msScriptStr string = "" + // Size: 289 bytes
+ "ArabArmeniaBaliBamuBengaliBopomofoBrailleCansCyrilDevanagariEthiopiaGeor" +
+ "giaGreekGujaratGurmukhiHangulHanHan RingkasHan TradisionalIbraniHiragana" +
+ "JepunKatakanaKhmerKannadaKoreaLaoLatinMalayalamMongoliaMyammarOriyaSinha" +
+ "laTamilTeluguThaanaThaiTibetSimbolTidak ditulisBiasaSkrip Tidak Diketahu" +
+ "i"
+
+var msScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x000b, 0x000b,
+ 0x000f, 0x0013, 0x0013, 0x0013, 0x001a, 0x001a, 0x0022, 0x0022,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x002d, 0x002d, 0x002d, 0x002d,
+ 0x002d, 0x002d, 0x002d, 0x0032, 0x0032, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x0044, 0x0044, 0x004b, 0x004b,
+ 0x004b, 0x004b, 0x0050, 0x0057, 0x005f, 0x0065, 0x0068, 0x0068,
+ 0x0073, 0x0082, 0x0082, 0x0088, 0x0090, 0x0090, 0x0090, 0x0090,
+ 0x0090, 0x0090, 0x0090, 0x0090, 0x0095, 0x0095, 0x0095, 0x009d,
+ // Entry 40 - 7F
+ 0x009d, 0x00a2, 0x00a2, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00b1, 0x00b1, 0x00b1, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6,
+ 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6,
+ 0x00b6, 0x00b6, 0x00b6, 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
+ 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
+ 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
+ // Entry 80 - BF
+ 0x00d3, 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da,
+ 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00df,
+ 0x00df, 0x00df, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00eb, 0x00ef,
+ 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4,
+ 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00fa, 0x0107, 0x010c, 0x0121,
+} // Size: 360 bytes
+
+var myScriptStr string = "" + // Size: 1208 bytes
+ "အာရေဗျအာမေးနီးယားဘင်္ဂါလီဘိုပိုဗြဟ္မမီဘရေစစ်ရိလစ်ဒီဗနာဂရီအီသီယိုးပီးယားဂ" +
+ "ျော်ဂျီယန်ဂရိဂုဂျာရသီဂူရူဟန်ဂူးလ်ဟန်ရိုးရှင်းသော ဟန်ရှေးရိုးစဉ်လာဟန်ဟီ" +
+ "ဗရူးဟိရဂဏခတခဏ သို့မဟုတ် ဟိရဂဏဂျာဗားနီးစ်ဂျပန်ကယားလီခတခဏခမာခန္နာဒါကိုးရ" +
+ "ီးယားလာအိုလက်တင်မာလာရာလန်မွန်ဂိုလီးယားမြန်မာအိုရာဆင်ဟာလတိုင်လီတမီးလ်တီ" +
+ "လုတဂလော့ဂ်သာအ်ထိုင်းတိဘက်မြင်နိုင်သော စကားပါရှန် အဟောင်းရီသင်္ကေတမရေးထ" +
+ "ားသောအများနှင့်သက်ဆိုင်သောမသိ သို့မဟုတ် မရှိသော စကားလုံး"
+
+var myScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x004b, 0x004b, 0x005d, 0x0072,
+ 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
+ 0x007b, 0x007b, 0x007b, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab,
+ 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00d5, 0x00d5, 0x00f6, 0x00f6,
+ 0x00f6, 0x00f6, 0x00ff, 0x0117, 0x0123, 0x013b, 0x0144, 0x0144,
+ 0x0172, 0x01a2, 0x01a2, 0x01b4, 0x01c3, 0x01c3, 0x01c3, 0x01fb,
+ 0x01fb, 0x01fb, 0x01fb, 0x021c, 0x022b, 0x022b, 0x023d, 0x0249,
+ // Entry 40 - 7F
+ 0x0249, 0x0252, 0x0252, 0x0267, 0x0285, 0x0285, 0x0285, 0x0285,
+ 0x0294, 0x0294, 0x0294, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6,
+ 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6,
+ 0x02a6, 0x02a6, 0x02a6, 0x02c1, 0x02c1, 0x02e8, 0x02e8, 0x02e8,
+ 0x02e8, 0x02e8, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa, 0x02fa,
+ 0x02fa, 0x02fa, 0x02fa, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309,
+ 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309,
+ 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309, 0x0309,
+ // Entry 80 - BF
+ 0x0309, 0x0309, 0x0309, 0x031b, 0x031b, 0x031b, 0x031b, 0x031b,
+ 0x031b, 0x031b, 0x031b, 0x031b, 0x031b, 0x0330, 0x0330, 0x0342,
+ 0x0342, 0x0342, 0x034e, 0x034e, 0x034e, 0x0366, 0x0372, 0x0384,
+ 0x0393, 0x0393, 0x0393, 0x0393, 0x03c4, 0x03c4, 0x03c4, 0x03ec,
+ 0x03ec, 0x03f2, 0x03f2, 0x03f2, 0x0407, 0x0425, 0x0464, 0x04b8,
+} // Size: 360 bytes
+
+var neScriptStr string = "" + // Size: 3010 bytes
+ "अरबीआर्मीआर्मेनियालीआभेस्टानबालीबाटकबङ्गालीब्लिजसिम्बोल्सबोपोमोफोब्राह्म" +
+ "ीब्रेलबुगिनिजबुहिदकाक्म्कारियनचामचेरोकीकिर्थकप्टिककप्रियटसिरिलिकदेवाना" +
+ "गरीडेसेरेटइजिप्टियन डेमोटिकइजिप्टियन हाइरटिकइजिप्टियन हाइरोग्लिफ्सइथिय" +
+ "ोपिकग्रुजियाली खुट्सुरीजोर्जियनग्लागोलिटिकगोथिकग्रीकगुजरातीगुरूमुखीहान" +
+ "्गुलहानहानुनुसरलिकृत चिनीपरम्परागत चिनीहिब्रुहिरागनापहावह हमोङ्गकाताका" +
+ "ना वा हिरागानापुरानो हङ्गेरियालीइन्दुसपुरानो इटालिकजाभानीजापानीकायाहली" +
+ "काताकानाखारोस्थितिखमेरकान्नाडाकोरियनक्थीलान्नालाओफ्राक्टुर ल्याटिनग्या" +
+ "लिक ल्याटिनल्याटिनलेप्चालिम्बुलाइसियनलाइडियनमान्डाएनमानिकाएनमाया हाइरो" +
+ "ग्लिफ्समेरियोटिकमलायालममङ्गोलजूनमाइटेइ मायेकम्यान्मारएन्कोओघामओलचिकीओर" +
+ "्खोनओडियाओस्मान्यापुरानो पर्मिकफाग्स-पाफ्लिफ्ल्पबुक पहल्भीफोनिसियनपोल्" +
+ "लार्ड फोनेटिकपिआरटीरेजाङरोङ्गोरोङ्गोरूनिकसमारिटनसारतीसौराष्ट्रसाइनराइट" +
+ "िङशाभियनसिन्हालास्ल्योटी नाग्रीसिरियाकइस्ट्रेनजेलो सिरियाकपश्चिमी सिरि" +
+ "याकपूर्वी सिरियाकटाग्वान्वाटाइलेन्यू टाइ लुइतामिलटाभ्टतेलुगुटेङ्वारटिफ" +
+ "िनाघटागालोगथानाथाईतिब्बतीयुगारिटिकभाइदृश्यमय वाणीपुरानो पर्सियनयीइन्हे" +
+ "रिटेडजमथप्रतीकहरूनलेखिएकोसाझाअज्ञात लिपि"
+
+var neScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x001b, 0x003c, 0x0054,
+ 0x0060, 0x0060, 0x0060, 0x006c, 0x0081, 0x00ab, 0x00c3, 0x00db,
+ 0x00ea, 0x00ff, 0x010e, 0x0120, 0x0120, 0x0132, 0x013b, 0x014d,
+ 0x015c, 0x016e, 0x0183, 0x0198, 0x0198, 0x01b3, 0x01c8, 0x01c8,
+ 0x01f9, 0x022a, 0x026a, 0x026a, 0x0282, 0x02b9, 0x02d1, 0x02f2,
+ 0x0301, 0x0301, 0x0310, 0x0325, 0x033d, 0x0352, 0x035b, 0x036d,
+ 0x038f, 0x03b7, 0x03b7, 0x03c9, 0x03de, 0x03de, 0x0400, 0x0438,
+ 0x046c, 0x047e, 0x04a3, 0x04b5, 0x04c7, 0x04c7, 0x04dc, 0x04f4,
+ // Entry 40 - 7F
+ 0x0512, 0x051e, 0x051e, 0x0536, 0x0548, 0x0548, 0x0554, 0x0566,
+ 0x056f, 0x05a0, 0x05cb, 0x05e0, 0x05f2, 0x0604, 0x0604, 0x0604,
+ 0x0604, 0x0604, 0x0619, 0x062e, 0x062e, 0x0646, 0x065e, 0x068f,
+ 0x068f, 0x068f, 0x06aa, 0x06bf, 0x06bf, 0x06d1, 0x06da, 0x06da,
+ 0x06fc, 0x06fc, 0x0717, 0x0717, 0x0717, 0x0717, 0x0726, 0x0726,
+ 0x0732, 0x0744, 0x0756, 0x0765, 0x0780, 0x0780, 0x0780, 0x07a5,
+ 0x07bb, 0x07c7, 0x07d6, 0x07f2, 0x080a, 0x083b, 0x084d, 0x085c,
+ 0x0880, 0x088f, 0x08a4, 0x08b3, 0x08b3, 0x08ce, 0x08ec, 0x08fe,
+ // Entry 80 - BF
+ 0x08fe, 0x08fe, 0x08fe, 0x0916, 0x0916, 0x0916, 0x0941, 0x0956,
+ 0x0990, 0x09bb, 0x09e3, 0x0a01, 0x0a01, 0x0a10, 0x0a30, 0x0a3f,
+ 0x0a3f, 0x0a4e, 0x0a60, 0x0a75, 0x0a8a, 0x0a9f, 0x0aab, 0x0ab4,
+ 0x0ac9, 0x0ac9, 0x0ae4, 0x0aed, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b37,
+ 0x0b37, 0x0b3d, 0x0b5b, 0x0b64, 0x0b7f, 0x0b97, 0x0ba3, 0x0bc2,
+} // Size: 360 bytes
+
+var nlScriptStr string = "" + // Size: 1633 bytes
+ "DefakaKaukasisch AlbaneesAhomArabischKeizerlijk ArameesArmeensAvestaansB" +
+ "alineesBamounBassa VahBatakBengaalsBlissymbolenBopomofoBrahmiBrailleBugi" +
+ "neesBuhidChakmaVerenigde Canadese Aboriginal-symbolenCarischChamCherokee" +
+ "CirthKoptischCyprischCyrillischOudkerkslavisch CyrillischDevanagariDeser" +
+ "etDuployan snelschriftEgyptisch demotischEgyptisch hiëratischEgyptische " +
+ "hiërogliefenElbasanEthiopischGeorgisch KhutsuriGeorgischGlagolitischGoth" +
+ "ischGranthaGrieksGujaratiGurmukhiHangulHanHanunoovereenvoudigd Chineestr" +
+ "aditioneel ChineesHatranHebreeuwsHiraganaAnatolische hiërogliefenPahawh " +
+ "HmongKatakana of HiraganaOudhongaarsIndusOud-italischJavaansJapansJurche" +
+ "nKayah LiKatakanaKharoshthiKhmerKhojkiKannadaKoreaansKpelleKaithiLannaLa" +
+ "otiaansGotisch LatijnsGaelisch LatijnsLatijnsLepchaLimbuLineair ALineair" +
+ " BFraserLomaLycischLydischMahajaniMandaeansManicheaansMayahiërogliefenMe" +
+ "ndeMeroitisch cursiefMeroïtischMalayalamModiMongoolsMoonMroMeiteiMultani" +
+ "BirmaansOud Noord-ArabischNabateaansNaxi GebaN’KoNüshuOghamOl ChikiOrkho" +
+ "nOdiaOsmanyaPalmyreensPau Cin HauOudpermischPhags-paInscriptioneel Pahla" +
+ "viPsalmen PahlaviBoek PahlaviFoenicischPollard-fonetischInscriptioneel P" +
+ "arthischRejangRongorongoRunicSamaritaansSaratiOud Zuid-ArabischSaurashtr" +
+ "aSignWritingShavianSharadaSiddhamSindhiSingaleesSora SompengSoendaneesSy" +
+ "loti NagriSyriacEstrangelo ArameesWest-ArameesOost-ArameesTagbanwaTakriT" +
+ "ai LeNieuw Tai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaT" +
+ "haiTibetaansTirhutaUgaritischVaiZichtbare spraakVarang KshitiWoleaiOudpe" +
+ "rzischSumero-Akkadian CuneiformYiOvergeërfdWiskundige notatieSymbolenong" +
+ "eschrevenalgemeenonbekend schriftsysteem"
+
+var nlScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0006, 0x0019, 0x001d, 0x0025, 0x0037, 0x003e, 0x0047,
+ 0x004f, 0x0055, 0x005e, 0x0063, 0x006b, 0x0077, 0x007f, 0x0085,
+ 0x008c, 0x0094, 0x0099, 0x009f, 0x00c5, 0x00cc, 0x00d0, 0x00d8,
+ 0x00dd, 0x00e5, 0x00ed, 0x00f7, 0x0111, 0x011b, 0x0122, 0x0136,
+ 0x0149, 0x015e, 0x0176, 0x017d, 0x0187, 0x0199, 0x01a2, 0x01ae,
+ 0x01b6, 0x01bd, 0x01c3, 0x01cb, 0x01d3, 0x01d9, 0x01dc, 0x01e3,
+ 0x01f8, 0x020c, 0x0212, 0x021b, 0x0223, 0x023c, 0x0248, 0x025c,
+ 0x0267, 0x026c, 0x0278, 0x027f, 0x0285, 0x028c, 0x0294, 0x029c,
+ // Entry 40 - 7F
+ 0x02a6, 0x02ab, 0x02b1, 0x02b8, 0x02c0, 0x02c6, 0x02cc, 0x02d1,
+ 0x02da, 0x02e9, 0x02f9, 0x0300, 0x0306, 0x030b, 0x0314, 0x031d,
+ 0x0323, 0x0327, 0x032e, 0x0335, 0x033d, 0x0346, 0x0351, 0x0362,
+ 0x0367, 0x0379, 0x0384, 0x038d, 0x0391, 0x0399, 0x039d, 0x03a0,
+ 0x03a6, 0x03ad, 0x03b5, 0x03c7, 0x03d1, 0x03da, 0x03e0, 0x03e6,
+ 0x03eb, 0x03f3, 0x03f9, 0x03fd, 0x0404, 0x040e, 0x0419, 0x0424,
+ 0x042c, 0x0442, 0x0451, 0x045d, 0x0467, 0x0478, 0x0490, 0x0496,
+ 0x04a0, 0x04a5, 0x04b0, 0x04b6, 0x04c7, 0x04d1, 0x04dc, 0x04e3,
+ // Entry 80 - BF
+ 0x04ea, 0x04f1, 0x04f7, 0x0500, 0x050c, 0x0516, 0x0522, 0x0528,
+ 0x053a, 0x0546, 0x0552, 0x055a, 0x055f, 0x0565, 0x0572, 0x0577,
+ 0x057d, 0x0585, 0x058b, 0x0592, 0x059a, 0x05a1, 0x05a7, 0x05ab,
+ 0x05b4, 0x05bb, 0x05c5, 0x05c8, 0x05d8, 0x05e5, 0x05eb, 0x05f6,
+ 0x060f, 0x0611, 0x061c, 0x062e, 0x0636, 0x0642, 0x064a, 0x0661,
+} // Size: 360 bytes
+
+var noScriptStr string = "" + // Size: 1588 bytes
+ "afakakaukasus-albanskahomarabiskarameiskarmenskavestiskbalinesiskbamumba" +
+ "ssa vahbatakbengalskblissymbolbopomofobrahmibraillebuginesiskbuhidchakma" +
+ "felles kanadiske urspråksstavelserkariskchamcherokeecirthkoptiskkyprioti" +
+ "skkyrilliskkirkeslavisk kyrilliskdevanagarideseretduployan stenografiegy" +
+ "ptisk demotiskegyptisk hieratiskegyptiske hieroglyferelbasisketiopiskgeo" +
+ "rgisk khutsurigeorgiskglagolittiskgotiskgammeltamilskgreskgujaratigurmuk" +
+ "hihangulhanhanunooforenklet hantradisjonell hanhatransk armenskhebraiskh" +
+ "iraganaanatoliske hieroglyferpahawh hmongkatakana eller hiraganagammelun" +
+ "garskindusgammelitaliskjavanesiskjapanskjurchenkayah likatakanakharoshth" +
+ "ikhmerkhojkikannadakoreanskkpellekaithisklannalaotiskfrakturlatinskgælis" +
+ "k latinsklatinsklepchalimbulineær Alineær Bfraserlomalykisklydiskmahajan" +
+ "imandaiskmanikeiskmaya-hieroglyfermendemeroitisk kursivmeroitiskmalayala" +
+ "mmodimongolskmoonmromeitei-mayekmultanimyanmargammelnordarabisknabataean" +
+ "sknaxi geban’konüshuoghamol-chikiorkhonoriyaosmanyapalmyrenskpau cin hau" +
+ "gammelpermiskphags-painskripsjonspahlavipsalter pahlavipahlavifønikiskpo" +
+ "llard-fonetiskinskripsjonsparthiskrejangrongorongorunersamaritansksarati" +
+ "gammelsørarabisksaurashtrategnskriftshavisksharadasiddhamkhudawadisinhal" +
+ "asora sompengsundanesisksyloti nagrisyriskestrangelosyriakiskvestlig syr" +
+ "iakiskøstlig syriakisktagbanwatakritai leny tai luetamilsktanguttai viet" +
+ "telugutengwartifinaghtagalogthaanathaitibetansktirhutaugaritiskvaisynlig" +
+ " talevarang kshitiwoleaigammelpersisksumersk-akkadisk kileskriftyinedarv" +
+ "etmatematisk notasjonsymbolerspråk uten skriftfellesukjent skrift"
+
+var noScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0015, 0x0019, 0x0020, 0x0028, 0x002f, 0x0037,
+ 0x0041, 0x0046, 0x004f, 0x0054, 0x005c, 0x0066, 0x006e, 0x0074,
+ 0x007b, 0x0085, 0x008a, 0x0090, 0x00b3, 0x00b9, 0x00bd, 0x00c5,
+ 0x00ca, 0x00d1, 0x00db, 0x00e4, 0x00fa, 0x0104, 0x010b, 0x011e,
+ 0x012f, 0x0141, 0x0156, 0x015e, 0x0166, 0x0177, 0x017f, 0x018b,
+ 0x0191, 0x019e, 0x01a3, 0x01ab, 0x01b3, 0x01b9, 0x01bc, 0x01c3,
+ 0x01d0, 0x01e0, 0x01f0, 0x01f8, 0x0200, 0x0216, 0x0222, 0x0239,
+ 0x0246, 0x024b, 0x0258, 0x0262, 0x0269, 0x0270, 0x0278, 0x0280,
+ // Entry 40 - 7F
+ 0x028a, 0x028f, 0x0295, 0x029c, 0x02a4, 0x02aa, 0x02b2, 0x02b7,
+ 0x02be, 0x02cc, 0x02db, 0x02e2, 0x02e8, 0x02ed, 0x02f6, 0x02ff,
+ 0x0305, 0x0309, 0x030f, 0x0315, 0x031d, 0x0325, 0x032e, 0x033e,
+ 0x0343, 0x0353, 0x035c, 0x0365, 0x0369, 0x0371, 0x0375, 0x0378,
+ 0x0384, 0x038b, 0x0392, 0x03a3, 0x03ae, 0x03b7, 0x03bd, 0x03c3,
+ 0x03c8, 0x03d0, 0x03d6, 0x03db, 0x03e2, 0x03ec, 0x03f7, 0x0404,
+ 0x040c, 0x041f, 0x042e, 0x0435, 0x043e, 0x044e, 0x0462, 0x0468,
+ 0x0472, 0x0477, 0x0482, 0x0488, 0x0499, 0x04a3, 0x04ad, 0x04b4,
+ // Entry 80 - BF
+ 0x04bb, 0x04c2, 0x04cb, 0x04d2, 0x04de, 0x04e9, 0x04f5, 0x04fb,
+ 0x050e, 0x051f, 0x0530, 0x0538, 0x053d, 0x0543, 0x054d, 0x0554,
+ 0x055a, 0x0562, 0x0568, 0x056f, 0x0577, 0x057e, 0x0584, 0x0588,
+ 0x0591, 0x0598, 0x05a1, 0x05a4, 0x05af, 0x05bc, 0x05c2, 0x05cf,
+ 0x05ea, 0x05ec, 0x05f4, 0x0607, 0x060f, 0x0621, 0x0627, 0x0634,
+} // Size: 360 bytes
+
+var paScriptStr string = "" + // Size: 740 bytes
+ "ਅਰਬੀਅਰਮੀਨੀਆਈਬੰਗਾਲੀਬੋਪੋਮੋਫੋਬਰੇਲਸਿਰੀਲਿਕਦੇਵਨਾਗਰੀਇਥੀਓਪਿਕਜਾਰਜੀਆਈਗ੍ਰੀਕਗੁਜਰਾਤੀਗ" +
+ "ੁਰਮੁਖੀਹੰਗੁਲਹਾਨਸਰਲ ਹਾਨਰਵਾਇਤੀ ਹਾਨਹਿਬਰੂਹਿਰਾਗਾਨਾਜਪਾਨੀਕਾਟਾਕਾਨਾਖਮੇਰਕੰਨੜਕੋਰੀਆ" +
+ "ਈਲਾਓਲਾਤੀਨੀਮਲਿਆਲਮਮੰਗੋਲੀਅਨਮਿਆਂਮਾਰਉੜੀਆਸਿੰਹਾਲਾਤਮਿਲਤੇਲਗੂਥਾਨਾਥਾਈਤਿੱਬਤੀਗਣਿਤ ਚ" +
+ "ਿੰਨ੍ਹ-ਲਿਪੀਚਿੰਨ੍ਹਅਲਿਖਤਸਧਾਰਨਅਣਪਛਾਤੀ ਲਿਪੀ"
+
+var paScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0024, 0x0024,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0036, 0x0036, 0x004e, 0x004e,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x006f, 0x006f, 0x0087, 0x0087, 0x0087,
+ 0x0087, 0x0087, 0x0087, 0x0087, 0x009c, 0x009c, 0x00b1, 0x00b1,
+ 0x00b1, 0x00b1, 0x00c0, 0x00d5, 0x00ea, 0x00f9, 0x0102, 0x0102,
+ 0x0115, 0x0131, 0x0131, 0x0140, 0x0158, 0x0158, 0x0158, 0x0158,
+ 0x0158, 0x0158, 0x0158, 0x0158, 0x0167, 0x0167, 0x0167, 0x017f,
+ // Entry 40 - 7F
+ 0x017f, 0x018b, 0x018b, 0x0197, 0x01a9, 0x01a9, 0x01a9, 0x01a9,
+ 0x01b2, 0x01b2, 0x01b2, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4,
+ 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01c4,
+ 0x01c4, 0x01c4, 0x01c4, 0x01d6, 0x01d6, 0x01ee, 0x01ee, 0x01ee,
+ 0x01ee, 0x01ee, 0x0203, 0x0203, 0x0203, 0x0203, 0x0203, 0x0203,
+ 0x0203, 0x0203, 0x0203, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f,
+ 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f,
+ 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f,
+ // Entry 80 - BF
+ 0x020f, 0x020f, 0x020f, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224,
+ 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0224, 0x0230,
+ 0x0230, 0x0230, 0x023f, 0x023f, 0x023f, 0x023f, 0x024b, 0x0254,
+ 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266,
+ 0x0266, 0x0266, 0x0266, 0x0292, 0x02a4, 0x02b3, 0x02c2, 0x02e4,
+} // Size: 360 bytes
+
+var plScriptStr string = "" + // Size: 1483 bytes
+ "arabskiearmiormiańskieawestyjskiebalijskiebamunbatakbengalskiesymbole Bl" +
+ "issabopomofobrahmiBraille’abugińskiebuhidchakmazunifikowane symbole kana" +
+ "dyjskich autochtonówkaryjskieczamskieczirokeskicirthkoptyjskiecypryjskie" +
+ "cyrylicacyrylica staro-cerkiewno-słowiańskadevanagarideseretegipskie dem" +
+ "otyczneegipskie hieratycznehieroglify egipskieetiopskiegruzińskie chucur" +
+ "igruzińskiegłagolicagotyckiegreckiegudźarackiegurmukhihangylhanhanunooup" +
+ "roszczone hantradycyjne hanhebrajskiehiraganapahawh hmongkatakana lub hi" +
+ "raganastarowęgierskieindusstarowłoskiejawajskiejapońskiekayah likatakana" +
+ "charostikhmerskiekannadakoreańskiekaithilannalaotańskiełaciński - fraktu" +
+ "rałaciński - odmiana gaelickałacińskielepchalimbulinearne Alinearne Blik" +
+ "ijskielidyjskiemandejskiemanichejskiehieroglify Majówmeroickiemalajalamm" +
+ "ongolskieMoon’ameitei mayekbirmańskien’kooghamol chikiorchońskieorijaosm" +
+ "anyastaropermskiephags-painskrypcyjne pahlawipahlawi psałterzowypahlawi " +
+ "książkowyfenickifonetyczny Pollard’apartyjski inskrypcyjnyrejangrongoron" +
+ "gorunicznesamarytańskisaratisaurashtrapismo znakoweshawasyngaleskiesunda" +
+ "jskiesyloti nagrisyryjskisyriacki estrangelosyryjski (odmiana zachodnia)" +
+ "syryjski (odmiana wschodnia)tagbanwatai lenowy tai luetamilskietai viett" +
+ "elugutengwartifinagh (berberski)tagalogthaanatajskietybetańskieugaryckie" +
+ "vaiVisible Speechstaroperskieklinowe sumero-akadyjskieyidziedziczonenota" +
+ "cja matematycznasymbolejęzyk bez systemu pismawspólnenieznane lub niepop" +
+ "rawne"
+
+var plScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0017, 0x0022,
+ 0x002b, 0x0030, 0x0030, 0x0035, 0x003f, 0x004d, 0x0055, 0x005b,
+ 0x0066, 0x0070, 0x0075, 0x007b, 0x00a9, 0x00b2, 0x00ba, 0x00c4,
+ 0x00c9, 0x00d3, 0x00dd, 0x00e5, 0x010a, 0x0114, 0x011b, 0x011b,
+ 0x012e, 0x0142, 0x0155, 0x0155, 0x015e, 0x0171, 0x017c, 0x0186,
+ 0x018e, 0x018e, 0x0195, 0x01a1, 0x01a9, 0x01af, 0x01b2, 0x01b9,
+ 0x01c8, 0x01d6, 0x01d6, 0x01e0, 0x01e8, 0x01e8, 0x01f4, 0x0209,
+ 0x0219, 0x021e, 0x022b, 0x0234, 0x023e, 0x023e, 0x0246, 0x024e,
+ // Entry 40 - 7F
+ 0x0256, 0x025f, 0x025f, 0x0266, 0x0271, 0x0271, 0x0277, 0x027c,
+ 0x0287, 0x029c, 0x02b9, 0x02c4, 0x02ca, 0x02cf, 0x02d9, 0x02e3,
+ 0x02e3, 0x02e3, 0x02ec, 0x02f5, 0x02f5, 0x02ff, 0x030b, 0x031c,
+ 0x031c, 0x031c, 0x0325, 0x032e, 0x032e, 0x0338, 0x0340, 0x0340,
+ 0x034c, 0x034c, 0x0357, 0x0357, 0x0357, 0x0357, 0x035d, 0x035d,
+ 0x0362, 0x036a, 0x0375, 0x037a, 0x0381, 0x0381, 0x0381, 0x038e,
+ 0x0396, 0x03aa, 0x03be, 0x03d1, 0x03d8, 0x03ee, 0x0404, 0x040a,
+ 0x0414, 0x041c, 0x0429, 0x042f, 0x042f, 0x0439, 0x0446, 0x044b,
+ // Entry 80 - BF
+ 0x044b, 0x044b, 0x044b, 0x0456, 0x0456, 0x0460, 0x046c, 0x0474,
+ 0x0487, 0x04a3, 0x04bf, 0x04c7, 0x04c7, 0x04cd, 0x04d9, 0x04e2,
+ 0x04e2, 0x04ea, 0x04f0, 0x04f7, 0x050b, 0x0512, 0x0518, 0x051f,
+ 0x052b, 0x052b, 0x0534, 0x0537, 0x0545, 0x0545, 0x0545, 0x0551,
+ 0x056a, 0x056c, 0x0578, 0x058c, 0x0593, 0x05ab, 0x05b3, 0x05cb,
+} // Size: 360 bytes
+
+var ptScriptStr string = "" + // Size: 1251 bytes
+ "árabearmiarmênioavésticobalinêsbamumbataquebengalisímbolos blissbopomofo" +
+ "brahmibraillebuginêsbuhidcakmescrita silábica unificada dos aborígenes c" +
+ "anadensescarianochamcherokeecirthcópticocipriotacirílicocirílico eslavo " +
+ "eclesiásticodevanágarideseretdemótico egípciohierático egípciohieróglifo" +
+ "s egípciosetiópicokhutsuri georgianogeorgianoglagolíticogóticogregogujer" +
+ "atigurmuquihangulhanhanunoohan simplificadohan tradicionalhebraicohiraga" +
+ "napahawh hmongkatakana ou hiraganahúngaro antigoindoitálico antigojavanê" +
+ "sjaponêskayah likatakanakharoshthikhmerkannadacoreanokthilannalaolatim f" +
+ "rakturlatim gaélicolatimlepchalimbulinear Alinear Blisulíciolídiomandaic" +
+ "omaniqueanohieróglifos maiasmeroítico cursivomeroíticomalaialamongolmoon" +
+ "meitei mayekbirmanêsn’koogâmicool chikiorkhonoriyaosmaniapérmico antigop" +
+ "hags-paphliphlppahlavi antigofeníciofonético pollardprtirejangrongorongo" +
+ "rúnicosamaritanosaratisaurashtrasignwritingshavianocingalêssundanêssylot" +
+ "i nagrisiríacosiríaco estrangelosiríaco ocidentalsiríaco orientaltagbanw" +
+ "atai Lenovo tai luetâmiltavttélugotengwartifinaghtagalothaanatailandêsti" +
+ "betanougaríticovaivisible speechpersa antigosumério-acadiano cuneiformey" +
+ "iherdadozmthzsymágrafocomumescrita desconhecida"
+
+var ptScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0012, 0x001b,
+ 0x0023, 0x0028, 0x0028, 0x002f, 0x0036, 0x0045, 0x004d, 0x0053,
+ 0x005a, 0x0062, 0x0067, 0x006b, 0x00a1, 0x00a8, 0x00ac, 0x00b4,
+ 0x00b9, 0x00c1, 0x00c9, 0x00d2, 0x00f0, 0x00fb, 0x0102, 0x0102,
+ 0x0114, 0x0127, 0x013d, 0x013d, 0x0146, 0x0158, 0x0161, 0x016d,
+ 0x0174, 0x0174, 0x0179, 0x0181, 0x0189, 0x018f, 0x0192, 0x0199,
+ 0x01a9, 0x01b8, 0x01b8, 0x01c0, 0x01c8, 0x01c8, 0x01d4, 0x01e8,
+ 0x01f7, 0x01fb, 0x020a, 0x0212, 0x021a, 0x021a, 0x0222, 0x022a,
+ // Entry 40 - 7F
+ 0x0234, 0x0239, 0x0239, 0x0240, 0x0247, 0x0247, 0x024b, 0x0250,
+ 0x0253, 0x0260, 0x026e, 0x0273, 0x0279, 0x027e, 0x0286, 0x028e,
+ 0x0292, 0x0292, 0x0298, 0x029e, 0x029e, 0x02a6, 0x02b0, 0x02c2,
+ 0x02c2, 0x02d4, 0x02de, 0x02e6, 0x02e6, 0x02ec, 0x02f0, 0x02f0,
+ 0x02fc, 0x02fc, 0x0305, 0x0305, 0x0305, 0x0305, 0x030b, 0x030b,
+ 0x0313, 0x031b, 0x0321, 0x0326, 0x032d, 0x032d, 0x032d, 0x033c,
+ 0x0344, 0x0348, 0x034c, 0x035a, 0x0362, 0x0373, 0x0377, 0x037d,
+ 0x0387, 0x038e, 0x0398, 0x039e, 0x039e, 0x03a8, 0x03b3, 0x03bb,
+ // Entry 80 - BF
+ 0x03bb, 0x03bb, 0x03bb, 0x03c4, 0x03c4, 0x03cd, 0x03d9, 0x03e1,
+ 0x03f4, 0x0406, 0x0417, 0x041f, 0x041f, 0x0425, 0x0431, 0x0437,
+ 0x0437, 0x043b, 0x0442, 0x0449, 0x0451, 0x0457, 0x045d, 0x0467,
+ 0x046f, 0x046f, 0x0479, 0x047c, 0x048a, 0x048a, 0x048a, 0x0496,
+ 0x04b2, 0x04b4, 0x04bb, 0x04bf, 0x04c3, 0x04ca, 0x04cf, 0x04e3,
+} // Size: 360 bytes
+
+var ptPTScriptStr string = "" + // Size: 103 bytes
+ "arménioegípcio demóticoegípcio hieráticoguzerateindussiloti nagritai let" +
+ "elugusímbolosnão escrito"
+
+var ptPTScriptIdx = []uint16{ // 166 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
+ 0x001a, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d,
+ 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ // Entry 40 - 7F
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a,
+ // Entry 80 - BF
+ 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0046, 0x0046,
+ 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x004c, 0x004c, 0x004c,
+ 0x004c, 0x004c, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x0052, 0x0052, 0x005b, 0x0067,
+} // Size: 356 bytes
+
+var roScriptStr string = "" + // Size: 825 bytes
+ "arabăarmeanăbalinezăbengalezăbopomofobraillesilabică aborigenă canadiană" +
+ " unificatăcoptăcipriotăchirilicăchirilică slavonă bisericească vechedeva" +
+ "nagarimormonădemotică egipteanăhieratică egipteanăhieroglife egipteneeti" +
+ "opianăgeorgiană bisericeascăgeorgianăglagoliticăgoticăgreacăgujaratigurm" +
+ "ukhihangulhanhan simplificatăhan tradiționalăebraicăhiraganakatakana sau" +
+ " hiraganamaghiară vecheindusitalică vechejavanezăjaponezăkatakanakhmerăk" +
+ "annadacoreeanălaoțianălatină Frakturlatină gaelicălatinălineară Alineară" +
+ " Blidianăhieroglife mayamalayalammongolăbirmanăoriyafenicianărunicăsinga" +
+ "lezăsiriacăsiriacă occidentalăsiriacă orientalătamilăteluguberberăthaana" +
+ "thailandezătibetanăpersană vechecuneiformă sumero-akkadianămoștenităsimb" +
+ "olurinescrisăcomunăscriere necunoscută"
+
+var roScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, 0x000e,
+ 0x0017, 0x0017, 0x0017, 0x0017, 0x0021, 0x0021, 0x0029, 0x0029,
+ 0x0030, 0x0030, 0x0030, 0x0030, 0x005a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x0060, 0x0069, 0x0073, 0x009a, 0x00a4, 0x00ac, 0x00ac,
+ 0x00c0, 0x00d5, 0x00e8, 0x00e8, 0x00f2, 0x010a, 0x0114, 0x0120,
+ 0x0127, 0x0127, 0x012e, 0x0136, 0x013e, 0x0144, 0x0147, 0x0147,
+ 0x0158, 0x016a, 0x016a, 0x0172, 0x017a, 0x017a, 0x017a, 0x018f,
+ 0x019e, 0x01a3, 0x01b1, 0x01ba, 0x01c3, 0x01c3, 0x01c3, 0x01cb,
+ // Entry 40 - 7F
+ 0x01cb, 0x01d2, 0x01d2, 0x01d9, 0x01e2, 0x01e2, 0x01e2, 0x01e2,
+ 0x01ec, 0x01fb, 0x020b, 0x0212, 0x0212, 0x0212, 0x021c, 0x0226,
+ 0x0226, 0x0226, 0x0226, 0x022e, 0x022e, 0x022e, 0x022e, 0x023d,
+ 0x023d, 0x023d, 0x023d, 0x0246, 0x0246, 0x024e, 0x024e, 0x024e,
+ 0x024e, 0x024e, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,
+ 0x0256, 0x0256, 0x0256, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b,
+ 0x025b, 0x025b, 0x025b, 0x025b, 0x0265, 0x0265, 0x0265, 0x0265,
+ 0x0265, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c, 0x026c,
+ // Entry 80 - BF
+ 0x026c, 0x026c, 0x026c, 0x0276, 0x0276, 0x0276, 0x0276, 0x027e,
+ 0x027e, 0x0293, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02ad,
+ 0x02ad, 0x02ad, 0x02b3, 0x02b3, 0x02bb, 0x02bb, 0x02c1, 0x02cd,
+ 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02e4,
+ 0x0301, 0x0301, 0x030c, 0x030c, 0x0315, 0x031e, 0x0325, 0x0339,
+} // Size: 360 bytes
+
+var ruScriptStr string = "" + // Size: 3384 bytes
+ "афакаарабицаарамейскаяармянскаяавестийскаябалийскаябамумбасса (вах)батак" +
+ "скаябенгальскаяблиссимволикабопомофобрахмиБрайлябугинизийскаябухидчакми" +
+ "йскаяканадское слоговое письмокарийскаячамскаячерокикирткоптскаякипрска" +
+ "якириллицастарославянскаядеванагаридезеретдуплоянская скорописьегипетск" +
+ "ая демотическаяегипетская иератическаяегипетская иероглифическаяэфиопск" +
+ "аягрузинская хуцуригрузинскаяглаголицаготскаягрантхагреческаягуджаратиг" +
+ "урмукхихангылькитайскаяханунуупрощенная китайскаятрадиционная китайская" +
+ "ивритхираганалувийские иероглифыпахау хмонгкатакана или хираганастарове" +
+ "нгерскаяхараппская (письменность долины Инда)староитальянскаяяванскаяяп" +
+ "онскаячжурчжэньскаякайакатаканакхароштхикхмерскаяходжикиканнадакорейска" +
+ "якпеллекайтхиланналаосскаялатинская фрактурагэльская латинскаялатиницал" +
+ "епхалимбулинейное письмо Алинейное письмо Блисуломалицианлидийскаяманде" +
+ "йскаяманихейскаямайямендемероитская курсивнаямероитскаямалаяльскаямонго" +
+ "льскаяазбука мунамроманипуримьянманскаясеверноаравийскоенабатейскаянаси" +
+ " гебанконюй-шуогамическаяол чикиорхоно-енисейскаяорияосманскаяпальмирыдр" +
+ "евнепермскаяпагспапехлевийскаяпахлави псалтирнаяпахлави книжнаяфиникийс" +
+ "каяполлардовская фонетикапарфянскаяреджангскаяронго-ронгоруническаясама" +
+ "ритянскаясаратистароюжноарабскаясаураштраязык знаковалфавит Шоушарадакх" +
+ "удавадисингальскаясора-сонпенгсунданскаясилоти нагрисирийскаясирийская " +
+ "эстрангелозападносирийскаявосточно-сирийскаятагбанватакритайский леновы" +
+ "й тайский летамильскаятангутское менятай-вьеттелугутенгварскаядревнелив" +
+ "ийскаятагалогтаанатайскаятибетскаятирхутаугаритскаявайскаявидимая речьв" +
+ "аранг-кшитиволеаистароперсидскаяшумеро-аккадская клинописьиунаследованн" +
+ "аяматематические обозначениясимволыбесписьменныйобщепринятаянеизвестная" +
+ " письменность"
+
+var ruScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000a, 0x000a, 0x000a, 0x0018, 0x002c, 0x003e, 0x0054,
+ 0x0066, 0x0070, 0x0083, 0x0095, 0x00ab, 0x00c5, 0x00d5, 0x00e1,
+ 0x00ed, 0x0107, 0x0111, 0x0125, 0x0155, 0x0167, 0x0175, 0x0181,
+ 0x0189, 0x0199, 0x01a9, 0x01bb, 0x01d9, 0x01ed, 0x01fb, 0x0224,
+ 0x0251, 0x027e, 0x02b1, 0x02b1, 0x02c3, 0x02e4, 0x02f8, 0x030a,
+ 0x0318, 0x0326, 0x0338, 0x034a, 0x035a, 0x0368, 0x037a, 0x0386,
+ 0x03ad, 0x03d8, 0x03d8, 0x03e2, 0x03f2, 0x0417, 0x042c, 0x0454,
+ 0x0472, 0x04b7, 0x04d7, 0x04e7, 0x04f7, 0x0511, 0x0519, 0x0529,
+ // Entry 40 - 7F
+ 0x053b, 0x054d, 0x055b, 0x0569, 0x057b, 0x0587, 0x0593, 0x059d,
+ 0x05ad, 0x05d0, 0x05f3, 0x0603, 0x060d, 0x0617, 0x0637, 0x0657,
+ 0x065f, 0x0667, 0x0673, 0x0685, 0x0685, 0x0699, 0x06af, 0x06b7,
+ 0x06c1, 0x06e8, 0x06fc, 0x0712, 0x0712, 0x0728, 0x073d, 0x0743,
+ 0x0753, 0x0753, 0x0769, 0x078b, 0x07a1, 0x07b2, 0x07b8, 0x07c3,
+ 0x07d9, 0x07e6, 0x0807, 0x080f, 0x0821, 0x0831, 0x0831, 0x084d,
+ 0x0859, 0x0871, 0x0894, 0x08b1, 0x08c7, 0x08f2, 0x0906, 0x091c,
+ 0x0931, 0x0945, 0x095f, 0x096b, 0x098d, 0x099f, 0x09b4, 0x09c9,
+ // Entry 80 - BF
+ 0x09d5, 0x09d5, 0x09e7, 0x09fd, 0x0a14, 0x0a28, 0x0a3f, 0x0a51,
+ 0x0a78, 0x0a98, 0x0abb, 0x0acb, 0x0ad5, 0x0ae8, 0x0b06, 0x0b1a,
+ 0x0b37, 0x0b46, 0x0b52, 0x0b68, 0x0b86, 0x0b94, 0x0b9e, 0x0bac,
+ 0x0bbe, 0x0bcc, 0x0be0, 0x0bee, 0x0c05, 0x0c1c, 0x0c28, 0x0c46,
+ 0x0c78, 0x0c7a, 0x0c96, 0x0cc9, 0x0cd7, 0x0cf1, 0x0d09, 0x0d38,
+} // Size: 360 bytes
+
+var siScriptStr string = "" + // Size: 809 bytes
+ "අරාබිආර්මේනියානුබෙංගාලිබොපොමොෆෝබ්\u200dරේල්සිරිලික්දේවනාගරීඉතියෝපියානුජෝ" +
+ "ර්ජියානුග්\u200dරීකගුජරාටිගුර්මුඛිහැන්ගුල්හන්සුළුකළ හෑන්සම්ප්\u200dරදා" +
+ "යික හෑන්හීබෲහිරඟනාජපන්කතකනාකමර්කණ්ණඩකොරියානුලාඕලතින්මලයාලම්මොන්ගෝලියාන" +
+ "ුමියන්මාරඔරියාසිංහලදෙමළතෙළිඟුතානතායිටි\u200dබෙට්සංකේතඅලිඛිතපොදු.නොදත් " +
+ "අක්ෂර මාලාව"
+
+var siScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x0030, 0x0030,
+ 0x0030, 0x0030, 0x0030, 0x0030, 0x0045, 0x0045, 0x005d, 0x005d,
+ 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
+ 0x0072, 0x0072, 0x0072, 0x008a, 0x008a, 0x00a2, 0x00a2, 0x00a2,
+ 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00c3, 0x00c3, 0x00e1, 0x00e1,
+ 0x00e1, 0x00e1, 0x00f3, 0x0108, 0x0120, 0x0138, 0x0141, 0x0141,
+ 0x0160, 0x0191, 0x0191, 0x019d, 0x01af, 0x01af, 0x01af, 0x01af,
+ 0x01af, 0x01af, 0x01af, 0x01af, 0x01bb, 0x01bb, 0x01bb, 0x01ca,
+ // Entry 40 - 7F
+ 0x01ca, 0x01d6, 0x01d6, 0x01e5, 0x01fd, 0x01fd, 0x01fd, 0x01fd,
+ 0x0206, 0x0206, 0x0206, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
+ 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
+ 0x0215, 0x0215, 0x0215, 0x022a, 0x022a, 0x024e, 0x024e, 0x024e,
+ 0x024e, 0x024e, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266,
+ 0x0266, 0x0266, 0x0266, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275,
+ 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275,
+ 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275, 0x0275,
+ // Entry 80 - BF
+ 0x0275, 0x0275, 0x0275, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284,
+ 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0290,
+ 0x0290, 0x0290, 0x02a2, 0x02a2, 0x02a2, 0x02a2, 0x02ab, 0x02b7,
+ 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
+ 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02db, 0x02ed, 0x02fa, 0x0329,
+} // Size: 360 bytes
+
+var skScriptStr string = "" + // Size: 487 bytes
+ "arabskéarménskebalijskýbengálskebopomofobraillovocyrilikadévanágaríegypt" +
+ "ské hieroglyfyetiópskegruzínskehlaholikagotickýgréckegudžarátígurmukhiha" +
+ "ngulčínskečínske zjednodušenéčínske tradičnéhebrejskéhiraganajaponskékat" +
+ "akanakhmérskekannadskékórejskélaoskélatinkalineárna Alineárna Bmayské hi" +
+ "eroglyfymalajálamskemongolskébarmskéuríjskeosmanskýRunové písmosinhálske" +
+ "tamilskételugskétánathajskétibetskésymbolybez zápisuvšeobecnéneznáme pís" +
+ "mo"
+
+var skScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0011,
+ 0x001a, 0x001a, 0x001a, 0x001a, 0x0024, 0x0024, 0x002c, 0x002c,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x004a, 0x004a, 0x004a,
+ 0x004a, 0x004a, 0x005e, 0x005e, 0x0067, 0x0067, 0x0071, 0x007a,
+ 0x0082, 0x0082, 0x0089, 0x0095, 0x009d, 0x00a3, 0x00ab, 0x00ab,
+ 0x00c2, 0x00d5, 0x00d5, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7,
+ 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f0, 0x00f8,
+ // Entry 40 - 7F
+ 0x00f8, 0x0101, 0x0101, 0x010b, 0x0115, 0x0115, 0x0115, 0x0115,
+ 0x011c, 0x011c, 0x011c, 0x0123, 0x0123, 0x0123, 0x012e, 0x0139,
+ 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x014b,
+ 0x014b, 0x014b, 0x014b, 0x0158, 0x0158, 0x0162, 0x0162, 0x0162,
+ 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a,
+ 0x016a, 0x016a, 0x016a, 0x0172, 0x017b, 0x017b, 0x017b, 0x017b,
+ 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b,
+ 0x017b, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189,
+ // Entry 80 - BF
+ 0x0189, 0x0189, 0x0189, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193,
+ 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x0193, 0x019c,
+ 0x019c, 0x019c, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01aa, 0x01b2,
+ 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01bb,
+ 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01c2, 0x01cd, 0x01d8, 0x01e7,
+} // Size: 360 bytes
+
+var slScriptStr string = "" + // Size: 1487 bytes
+ "arabskiimperialno-aramejskiarmenskiavestanskibalijskibataškibengalskizna" +
+ "kovna pisava Blissbopomofobramanskibraillova pisavabuginskibuhidskipoeno" +
+ "tena zlogovna pisava kanadskih staroselcevChamčerokeškikirtkoptskiciprsk" +
+ "icirilicastarocerkvenoslovanska cirilicadevanagarščicafonetska pisava de" +
+ "seretdemotska egipčanska pisavahieratska egipčanska pisavaegipčanska sli" +
+ "kovna pisavaetiopskicerkvenogruzijskigruzijskiglagoliškigotskigrškigudža" +
+ "ratskigurmukihangulkanjihanunskipoenostavljena pisava hantradicionalna p" +
+ "isava hanhebrejskihiraganapahavhmonska zlogovna pisavakatakana ali hirag" +
+ "anastaroogrskiinduškistaroitalskijavanskijaponskikarenskikatakanagandars" +
+ "kikmerskikanadskikorejskikajatskilaoškifrakturagelski latiničnilatinical" +
+ "epškilimbuškilinearna pisava Alinearna pisava Blicijskilidijskimandanski" +
+ "manihejskimajevska slikovna pisavameroitskimalajalamskimongolskaMoonova " +
+ "pisava za slepemanipurskimjanmarskiogamskisantalskiorkonskiorijskiosmans" +
+ "kistaropermijskipagpajskivrezani napisi pahlavipsalmski pahlaviknjižno p" +
+ "alavanskifeničanskiPollardova fonetska pisavarongorongorunskisamaritansk" +
+ "isaratskiznakovna pisavašojevskisinhalskisundanskisiletsko-nagarijskisir" +
+ "ijskisirska abeceda estrangelozahodnosirijskivzhodnosirijskitagbanskitam" +
+ "ilskitajsko-vietnamskiteluškitengvarskitifinajskitagaloškitanajskitajski" +
+ "tibetanskiugaritskizlogovna pisava vaividni govorstaroperzijskisumersko-" +
+ "akadski klinopispodedovanmatematična znamenjasimbolinenapisanosplošnonez" +
+ "nan ali neveljaven zapis"
+
+var slScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x001b, 0x0023, 0x002d,
+ 0x0035, 0x0035, 0x0035, 0x003d, 0x0046, 0x005b, 0x0063, 0x006c,
+ 0x007c, 0x0084, 0x008c, 0x008c, 0x00bb, 0x00bb, 0x00bf, 0x00ca,
+ 0x00ce, 0x00d5, 0x00dc, 0x00e4, 0x0103, 0x0113, 0x012a, 0x012a,
+ 0x0145, 0x0161, 0x017c, 0x017c, 0x0184, 0x0195, 0x019e, 0x01a9,
+ 0x01af, 0x01af, 0x01b5, 0x01c1, 0x01c8, 0x01ce, 0x01d3, 0x01db,
+ 0x01f4, 0x020c, 0x020c, 0x0215, 0x021d, 0x021d, 0x0239, 0x024e,
+ 0x0259, 0x0261, 0x026d, 0x0275, 0x027d, 0x027d, 0x0285, 0x028d,
+ // Entry 40 - 7F
+ 0x0296, 0x029d, 0x029d, 0x02a5, 0x02ad, 0x02ad, 0x02b5, 0x02b5,
+ 0x02bc, 0x02c4, 0x02d5, 0x02dd, 0x02e4, 0x02ed, 0x02fe, 0x030f,
+ 0x030f, 0x030f, 0x0317, 0x031f, 0x031f, 0x0328, 0x0332, 0x034a,
+ 0x034a, 0x034a, 0x0353, 0x035f, 0x035f, 0x0368, 0x037f, 0x037f,
+ 0x0389, 0x0389, 0x0393, 0x0393, 0x0393, 0x0393, 0x0393, 0x0393,
+ 0x039a, 0x03a3, 0x03ab, 0x03b2, 0x03ba, 0x03ba, 0x03ba, 0x03c8,
+ 0x03d1, 0x03e7, 0x03f7, 0x040a, 0x0415, 0x042f, 0x042f, 0x042f,
+ 0x0439, 0x043f, 0x044b, 0x0453, 0x0453, 0x0453, 0x0462, 0x046b,
+ // Entry 80 - BF
+ 0x046b, 0x046b, 0x046b, 0x0474, 0x0474, 0x047d, 0x0490, 0x0498,
+ 0x04b1, 0x04c0, 0x04cf, 0x04d8, 0x04d8, 0x04d8, 0x04d8, 0x04e0,
+ 0x04e0, 0x04f1, 0x04f9, 0x0503, 0x050d, 0x0517, 0x051f, 0x0525,
+ 0x052f, 0x052f, 0x0538, 0x054b, 0x0556, 0x0556, 0x0556, 0x0564,
+ 0x057d, 0x057d, 0x0586, 0x059b, 0x05a2, 0x05ac, 0x05b4, 0x05cf,
+} // Size: 360 bytes
+
+var sqScriptStr string = "" + // Size: 290 bytes
+ "arabikarmenbengalbopomofbrailishtcirilikdevanagaretiopikgjeorgjiangrekgu" +
+ "xharatgurmukhangulhanhan i thjeshtuarhan tradicionalhebraikhiraganjapone" +
+ "zkatakankmerkanadkoreanlaosishtlatinmalajalammongolbirmanorijasinhaltami" +
+ "ltelugtanishttajlandeztibetishtme simbolei pashkruari zakonshëmi panjohu" +
+ "r"
+
+var sqScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000b, 0x000b,
+ 0x000b, 0x000b, 0x000b, 0x000b, 0x0011, 0x0011, 0x0018, 0x0018,
+ 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
+ 0x0021, 0x0021, 0x0021, 0x0028, 0x0028, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x0031, 0x0031, 0x0031, 0x0038, 0x0038, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0046, 0x004e, 0x0054, 0x005a, 0x005d, 0x005d,
+ 0x006d, 0x007c, 0x007c, 0x0083, 0x008a, 0x008a, 0x008a, 0x008a,
+ 0x008a, 0x008a, 0x008a, 0x008a, 0x0091, 0x0091, 0x0091, 0x0098,
+ // Entry 40 - 7F
+ 0x0098, 0x009c, 0x009c, 0x00a1, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
+ 0x00af, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4,
+ 0x00b4, 0x00b4, 0x00b4, 0x00bd, 0x00bd, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9,
+ 0x00c9, 0x00c9, 0x00c9, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ // Entry 80 - BF
+ 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4,
+ 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d9,
+ 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e5, 0x00ee,
+ 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7,
+ 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x0101, 0x010c, 0x0118, 0x0122,
+} // Size: 360 bytes
+
+var srScriptStr string = "" + // Size: 3698 bytes
+ "арапско писмоимперијско арамејско писмојерменско писмоавестанско писмоба" +
+ "лијско писмобатак писмобенгалско писмоблисимболично писмобопомофо писмо" +
+ "браманско писмоБрајево писмобугинско писмобухидско писмочакманско писмо" +
+ "уједињени канадски абориџински силабицикаријско писмочамско писмоЧероки" +
+ "цирт писмокоптичко писмокипарско писмоћирилицаСтарословенска црквена ћи" +
+ "рилицадеванагариДезеретегипатско народно писмоегипатско хијератско писм" +
+ "оегипатски хијероглифиетиопско писмогрузијско кхутсури писмогрузијско п" +
+ "исмоглагољицаГотикагрчко писмогуџаратско писмогурмуки писмохангулханхан" +
+ "унопоједностављено хан писмотрадиционално хан писмохебрејско писмохираг" +
+ "анапахав хмонг писмоКатакана или Хираганастаромађарско писмоиндушко пис" +
+ "мостари италикјаванско писмојапанско писмокајах-ли писмокатаканакарошти" +
+ " писмокмерско писмоканада писмокорејско писмокаитиланна писмолаошко писм" +
+ "олатиница (фрактур варијанта)галска латиницалатиницалепча писмолимбу пи" +
+ "смолинеарно А писмолинеарно Б писмолисијско писмолидијско писмомандеанс" +
+ "ко писмоманихејско писмомајански хијероглифимероитик писмомалајалам пис" +
+ "момонголско писмомесечево писмомеитеи мајек писмомијанмарско писмон’ко " +
+ "писмоогамско писмоол чики писмоорконско писмооријанско писмоосмањанско " +
+ "писмостаро пермикско писмопагс-па писмописани пахлавипсалтер пахлавипах" +
+ "лави писмоФеничанско писмопоралд фонетско писмописани партианрејанг пис" +
+ "моронгоронго писморунско писмосамаританско писмосарати писмосаураштра п" +
+ "исмознаковно писмошавијанско писмосинхалско писмосунданско писмосилоти " +
+ "нагри писмосиријско писмосиријско естрангело писмозападносиријско писмо" +
+ "писмо источне Сиријетагбанва писмотаи ле писмонови таи луетамилско писм" +
+ "отаи виет писмотелугу писмотенгвар писмотифинаг писмоТагалогтхана писмо" +
+ "тајландско писмотибетанско писмоугаритско писмоваи писмовидљиви говорст" +
+ "ароперсијско писмосумерско-акадско кунеиформ писмоји писмонаследно писм" +
+ "оматематичка нотацијасимболинеписани језикзаједничко писмонепознато пис" +
+ "мо"
+
+var srScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, 0x0087,
+ 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00f9, 0x0114, 0x0131,
+ 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, 0x021a, 0x0226,
+ 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, 0x02dd, 0x02dd,
+ 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, 0x03ca, 0x03dc,
+ 0x03e8, 0x03e8, 0x03fd, 0x041c, 0x0435, 0x0441, 0x0447, 0x0453,
+ 0x0483, 0x04af, 0x04af, 0x04cc, 0x04dc, 0x04dc, 0x04fc, 0x0524,
+ 0x0549, 0x0562, 0x0579, 0x0594, 0x05af, 0x05af, 0x05c9, 0x05d9,
+ // Entry 40 - 7F
+ 0x05f2, 0x060b, 0x060b, 0x0622, 0x063d, 0x063d, 0x0647, 0x065c,
+ 0x0673, 0x06a7, 0x06c4, 0x06d4, 0x06e9, 0x06fe, 0x071c, 0x073a,
+ 0x073a, 0x073a, 0x0755, 0x0770, 0x0770, 0x078f, 0x07ae, 0x07d5,
+ 0x07d5, 0x07d5, 0x07f0, 0x080d, 0x080d, 0x082a, 0x0845, 0x0845,
+ 0x0867, 0x0867, 0x0888, 0x0888, 0x0888, 0x0888, 0x089c, 0x089c,
+ 0x08b5, 0x08cd, 0x08e8, 0x0905, 0x0924, 0x0924, 0x0924, 0x094c,
+ 0x0964, 0x097f, 0x099c, 0x09b5, 0x09d4, 0x09fc, 0x0a17, 0x0a2e,
+ 0x0a4d, 0x0a64, 0x0a87, 0x0a9e, 0x0a9e, 0x0abb, 0x0ad6, 0x0af5,
+ // Entry 80 - BF
+ 0x0af5, 0x0af5, 0x0af5, 0x0b12, 0x0b12, 0x0b2f, 0x0b51, 0x0b6c,
+ 0x0b9c, 0x0bc5, 0x0beb, 0x0c06, 0x0c06, 0x0c1c, 0x0c32, 0x0c4d,
+ 0x0c4d, 0x0c67, 0x0c7e, 0x0c97, 0x0cb0, 0x0cbe, 0x0cd3, 0x0cf2,
+ 0x0d11, 0x0d11, 0x0d2e, 0x0d3f, 0x0d58, 0x0d58, 0x0d58, 0x0d7f,
+ 0x0dbc, 0x0dcb, 0x0de6, 0x0e0d, 0x0e1b, 0x0e36, 0x0e55, 0x0e72,
+} // Size: 360 bytes
+
+var srLatnScriptStr string = "" + // Size: 1953 bytes
+ "arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismoba" +
+ "lijsko pismobatak pismobengalsko pismoblisimbolično pismobopomofo pismob" +
+ "ramansko pismoBrajevo pismobuginsko pismobuhidsko pismočakmansko pismouj" +
+ "edinjeni kanadski aboridžinski silabicikarijsko pismočamsko pismoČerokic" +
+ "irt pismokoptičko pismokiparsko pismoćirilicaStaroslovenska crkvena ćiri" +
+ "licadevanagariDezeretegipatsko narodno pismoegipatsko hijeratsko pismoeg" +
+ "ipatski hijeroglifietiopsko pismogruzijsko khutsuri pismogruzijsko pismo" +
+ "glagoljicaGotikagrčko pismogudžaratsko pismogurmuki pismohangulhanhanuno" +
+ "pojednostavljeno han pismotradicionalno han pismohebrejsko pismohiragana" +
+ "pahav hmong pismoKatakana ili Hiraganastaromađarsko pismoinduško pismost" +
+ "ari italikjavansko pismojapansko pismokajah-li pismokatakanakarošti pism" +
+ "okmersko pismokanada pismokorejsko pismokaitilanna pismolaoško pismolati" +
+ "nica (fraktur varijanta)galska latinicalatinicalepča pismolimbu pismolin" +
+ "earno A pismolinearno B pismolisijsko pismolidijsko pismomandeansko pism" +
+ "omanihejsko pismomajanski hijeroglifimeroitik pismomalajalam pismomongol" +
+ "sko pismomesečevo pismomeitei majek pismomijanmarsko pismon’ko pismoogam" +
+ "sko pismool čiki pismoorkonsko pismoorijansko pismoosmanjansko pismostar" +
+ "o permiksko pismopags-pa pismopisani pahlavipsalter pahlavipahlavi pismo" +
+ "Feničansko pismoporald fonetsko pismopisani partianrejang pismorongorong" +
+ "o pismorunsko pismosamaritansko pismosarati pismosauraštra pismoznakovno" +
+ " pismošavijansko pismosinhalsko pismosundansko pismosiloti nagri pismosi" +
+ "rijsko pismosirijsko estrangelo pismozapadnosirijsko pismopismo istočne " +
+ "Sirijetagbanva pismotai le pismonovi tai luetamilsko pismotai viet pismo" +
+ "telugu pismotengvar pismotifinag pismoTagalogthana pismotajlandsko pismo" +
+ "tibetansko pismougaritsko pismovai pismovidljivi govorstaropersijsko pis" +
+ "mosumersko-akadsko kuneiform pismoji pismonasledno pismomatematička nota" +
+ "cijasimbolinepisani jezikzajedničko pismonepoznato pismo"
+
+var srLatnScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0036, 0x0046,
+ 0x0054, 0x0054, 0x0054, 0x005f, 0x006e, 0x0082, 0x0090, 0x009f,
+ 0x00ac, 0x00ba, 0x00c8, 0x00d8, 0x0102, 0x0110, 0x011d, 0x0124,
+ 0x012e, 0x013d, 0x014b, 0x0154, 0x0174, 0x017e, 0x0185, 0x0185,
+ 0x019c, 0x01b6, 0x01cb, 0x01cb, 0x01d9, 0x01f1, 0x0200, 0x020a,
+ 0x0210, 0x0210, 0x021c, 0x022e, 0x023b, 0x0241, 0x0244, 0x024a,
+ 0x0264, 0x027b, 0x027b, 0x028a, 0x0292, 0x0292, 0x02a3, 0x02b8,
+ 0x02cc, 0x02da, 0x02e6, 0x02f4, 0x0302, 0x0302, 0x0310, 0x0318,
+ // Entry 40 - 7F
+ 0x0326, 0x0333, 0x0333, 0x033f, 0x034d, 0x034d, 0x0352, 0x035d,
+ 0x036a, 0x0386, 0x0395, 0x039d, 0x03a9, 0x03b4, 0x03c4, 0x03d4,
+ 0x03d4, 0x03d4, 0x03e2, 0x03f0, 0x03f0, 0x0400, 0x0410, 0x0424,
+ 0x0424, 0x0424, 0x0432, 0x0441, 0x0441, 0x0450, 0x045f, 0x045f,
+ 0x0471, 0x0471, 0x0482, 0x0482, 0x0482, 0x0482, 0x048e, 0x048e,
+ 0x049b, 0x04a9, 0x04b7, 0x04c6, 0x04d7, 0x04d7, 0x04d7, 0x04ec,
+ 0x04f9, 0x0507, 0x0516, 0x0523, 0x0534, 0x0549, 0x0557, 0x0563,
+ 0x0573, 0x057f, 0x0591, 0x059d, 0x059d, 0x05ad, 0x05bb, 0x05cc,
+ // Entry 80 - BF
+ 0x05cc, 0x05cc, 0x05cc, 0x05db, 0x05db, 0x05ea, 0x05fc, 0x060a,
+ 0x0623, 0x0638, 0x064d, 0x065b, 0x065b, 0x0667, 0x0673, 0x0681,
+ 0x0681, 0x068f, 0x069b, 0x06a8, 0x06b5, 0x06bc, 0x06c7, 0x06d7,
+ 0x06e7, 0x06e7, 0x06f6, 0x06ff, 0x070d, 0x070d, 0x070d, 0x0721,
+ 0x0741, 0x0749, 0x0757, 0x076c, 0x0773, 0x0781, 0x0792, 0x07a1,
+} // Size: 360 bytes
+
+var svScriptStr string = "" + // Size: 1661 bytes
+ "afakiskakaukasiska albanskaahomarabiskaimperisk arameiskaarmeniskaavesti" +
+ "skabalinesiskabamunskabassaiska vahbatakbengaliskablissymbolerbopomofobr" +
+ "amipunktskriftbuginesiskabuhidchakmakanadensiska stavelseteckenkariskach" +
+ "amcherokeecirtkoptiskacypriotiskakyrilliskafornkyrkoslavisk kyrilliskade" +
+ "vanagarideseretDuployéstenografiskademotiskahieratiskaegyptiska hierogly" +
+ "ferelbasiskaetiopiskakutsurigeorgiskaglagolitiskagotiskagammaltamilskagr" +
+ "ekiskagujaratigurmukhihangulhanhanunåförenklade han-teckentraditionella " +
+ "han-teckenhatranhebreiskahiraganahittitiska hieroglyferpahaw mongkatakan" +
+ "a/hiraganafornungerskaindusfornitaliskajavanskajapanskajurchenskakaya li" +
+ "katakanakharoshtikhmeriskakhojkiskakanaresiskakoreanskakpellékaithiskala" +
+ "nnalaotiskafrakturlatingaeliskt latinlatinskaronglimbulinjär Alinjär BFr" +
+ "aserlomalykiskalydiskamahajaniskamandaéiskamanikeanskamayahieroglyfermen" +
+ "dekursiv-meroitiskameroitiskamalayalammodiskamongoliskamoonmrumeitei-may" +
+ "ekmultaniskaburmesiskafornnordarabiskanabatateiskanaxi geban-kånüshuogha" +
+ "mol-chikiorkonoriyaosmanjapalmyreniskaPau Cin Hau-skriftfornpermiskaphag" +
+ "s-patidig pahlavipsaltaren-pahlavibokpahlavifenikiskapollardteckentidig " +
+ "parthianskarejangrongo-rongorunorsamaritiskasaratifornsydarabiskasaurash" +
+ "trateckningsskriftshawiskasharadasiddhamskasindhiskasingalesiskasora som" +
+ "pengsundanesiskasyloti nagrisyriskaestrangelosyriskavästsyriskaöstsyrisk" +
+ "atagbanwatakritiskatai letai luetamilskatangutiskatai viettelugutengwart" +
+ "ifinaghiskatagalogtaanathailändskatibetanskatirhutaugaritiskavajsynligt " +
+ "talvarang kshitiwoleaifornpersiskasumeo-akkadisk kilskriftyiärvdamatemat" +
+ "isk notationsymboleroskrivet språkgemensammaokänt skriftsystem"
+
+var svScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0008, 0x001b, 0x001f, 0x0027, 0x0039, 0x0042, 0x004b,
+ 0x0056, 0x005e, 0x006b, 0x0070, 0x007a, 0x0086, 0x008e, 0x0093,
+ 0x009e, 0x00a9, 0x00ae, 0x00b4, 0x00cf, 0x00d6, 0x00da, 0x00e2,
+ 0x00e6, 0x00ee, 0x00f9, 0x0103, 0x011e, 0x0128, 0x012f, 0x0144,
+ 0x014d, 0x0157, 0x016c, 0x0175, 0x017e, 0x0185, 0x018e, 0x019a,
+ 0x01a1, 0x01af, 0x01b7, 0x01bf, 0x01c7, 0x01cd, 0x01d0, 0x01d7,
+ 0x01ed, 0x0205, 0x020b, 0x0214, 0x021c, 0x0232, 0x023c, 0x024d,
+ 0x0259, 0x025e, 0x026a, 0x0272, 0x027a, 0x0284, 0x028b, 0x0293,
+ // Entry 40 - 7F
+ 0x029c, 0x02a5, 0x02ae, 0x02b9, 0x02c2, 0x02c9, 0x02d2, 0x02d7,
+ 0x02df, 0x02eb, 0x02f9, 0x0301, 0x0305, 0x030a, 0x0313, 0x031c,
+ 0x0322, 0x0326, 0x032d, 0x0334, 0x033f, 0x034a, 0x0355, 0x0364,
+ 0x0369, 0x037a, 0x0384, 0x038d, 0x0394, 0x039e, 0x03a2, 0x03a5,
+ 0x03b1, 0x03bb, 0x03c5, 0x03d5, 0x03e1, 0x03ea, 0x03ef, 0x03f5,
+ 0x03fa, 0x0402, 0x0407, 0x040c, 0x0413, 0x041f, 0x0431, 0x043d,
+ 0x0445, 0x0452, 0x0463, 0x046d, 0x0476, 0x0483, 0x0494, 0x049a,
+ 0x04a5, 0x04aa, 0x04b5, 0x04bb, 0x04ca, 0x04d4, 0x04e3, 0x04eb,
+ // Entry 80 - BF
+ 0x04f2, 0x04fc, 0x0505, 0x0511, 0x051d, 0x0529, 0x0535, 0x053c,
+ 0x054d, 0x0559, 0x0564, 0x056c, 0x0576, 0x057c, 0x0583, 0x058b,
+ 0x0595, 0x059d, 0x05a3, 0x05aa, 0x05b6, 0x05bd, 0x05c2, 0x05ce,
+ 0x05d8, 0x05df, 0x05e9, 0x05ec, 0x05f7, 0x0604, 0x060a, 0x0616,
+ 0x062e, 0x0630, 0x0636, 0x0649, 0x0651, 0x0660, 0x066a, 0x067d,
+} // Size: 360 bytes
+
+var swScriptStr string = "" + // Size: 346 bytes
+ "KiarabuKiarmeniaKibengaliKibopomofoBrailleKisirilikiKidevanagariKiethiop" +
+ "iaKijojiaKigirikiKigujaratiKigurmukhiKihangulKihanKihan RahisiKihan cha " +
+ "JadiKiebraniaKihiraganaKijapaniKikatakanaKikambodiaKikannadaKikoreaKilao" +
+ "siKilatiniKimalayalamKimongoliaMyamaKioriyaKisinhalaKitamilKiteluguKitha" +
+ "anaKitaiKitibetiAlamaHaijaandikwaKawaidaHati isiyojulikana"
+
+var swScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0023, 0x0023,
+ 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a,
+ 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x004a, 0x004a, 0x0051, 0x0051,
+ 0x0051, 0x0051, 0x0059, 0x0063, 0x006d, 0x0075, 0x007a, 0x007a,
+ 0x0086, 0x0094, 0x0094, 0x009d, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
+ 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00af, 0x00af, 0x00af, 0x00b9,
+ // Entry 40 - 7F
+ 0x00b9, 0x00c3, 0x00c3, 0x00cc, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
+ 0x00da, 0x00da, 0x00da, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2,
+ 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2,
+ 0x00e2, 0x00e2, 0x00e2, 0x00ed, 0x00ed, 0x00f7, 0x00f7, 0x00f7,
+ 0x00f7, 0x00f7, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
+ 0x00fc, 0x00fc, 0x00fc, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
+ 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
+ 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
+ // Entry 80 - BF
+ 0x0103, 0x0103, 0x0103, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c,
+ 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0113,
+ 0x0113, 0x0113, 0x011b, 0x011b, 0x011b, 0x011b, 0x0123, 0x0128,
+ 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130,
+ 0x0130, 0x0130, 0x0130, 0x0130, 0x0135, 0x0141, 0x0148, 0x015a,
+} // Size: 360 bytes
+
+var taScriptStr string = "" + // Size: 3904 bytes
+ "அரபிக்இம்பேரியல் அரமெய்க்அர்மேனியன்அவெஸ்தான்பாலினீஸ்பாடாக்வங்காளம்ப்லிஸ்" +
+ "ஸிமிபால்ஸ்போபோமோஃபோபிரம்மிபிரெயில்புகினீஸ்புகித்சக்மாயுனிஃபைடு கனடியன்" +
+ " அபொரிஜினல் சிலபிக்ஸ்கரியன்சாம்செரோக்கிகிர்த்காப்டிக்சைப்ரியாட்சிரிலிக்ப" +
+ "ழைய சர்ச் ஸ்லவோனிக் சிரிலிக்தேவநாகரிடெசராட்எகிப்தியன் டெமோட்டிக்எகிப்த" +
+ "ியன் ஹைரேட்டிக்எகிப்தியன் ஹைரோகிளிப்ஸ்எத்தியோபிக்ஜியார்ஜியன் குட்சுரிஜ" +
+ "ார்ஜியன்க்லாகோலிடிக்கோதிக்கிரேக்கம்குஜராத்திகுர்முகிஹங்குல்ஹன்ஹனுனூஎளி" +
+ "தாக்கப்பட்ட ஹன்பாரம்பரிய ஹன்ஹீப்ருஹிராகானாபஹாவ் மாங்க்கடாகானா அல்லது ஹ" +
+ "ிராகானாபழைய ஹங்கேரியன்சிந்துபழைய இத்தாலிஜாவனீஸ்ஜப்பானியம்கயாஹ் லீகதகான" +
+ "ாகரோஷ்டிகமெர்கன்னடம்கொரியன்காய்திலன்னாலாவோஃப்ரக்டூர் லெத்தின்கேலிக் லெ" +
+ "த்தின்லத்தின்லெப்சாலிம்புலினியர் ஏலினியர் பிலிசியன்லிடியன்மேன்டியன்மனி" +
+ "செய்ன்மயான் ஹைரோகிளிப்மெராய்டிக்மலையாளம்மங்கோலியன்மூன்மெய்தெய் மயக்மிய" +
+ "ான்மர்என்‘கோஒகாம்ஒல் சிக்கிஆர்கான்ஒரியாஒஸ்மான்யாபழைய பெர்மிக்பக்ஸ்-பாஇ" +
+ "ன்ஸ்கிரிப்ஷனல் பஹலவிசால்டர் பஹலவிபுக் பஹலவிஃபோனேஷியன்போலார்ட் ஃபொனெட்ட" +
+ "ிக்இன்ஸ்கிரிப்ஷனல் பார்த்தியன்ரெஜெய்ன்ரொங்கோரொங்கோருனிக்சமாரிடன்சாராதி" +
+ "சௌராஷ்ட்ராஸைன்எழுத்துஷவியான்சிங்களம்சுந்தானீஸ்சிலோடி நக்ரிசிரியாக்எஸ்ட" +
+ "்ரெங்கெலோ சிரியாக்மேற்கு சிரியாக்கிழக்கு சிரியாக்தகோவானாதாய் லேபுதிய த" +
+ "ை லூதமிழ்தை வியத்தெலுங்குதெங்வார்டிஃபினாக்தகலாக்தானாதாய்திபெத்தியன்உகா" +
+ "ரதிக்வைவிசிபிள் ஸ்பீச்பழைய பெர்ஷியன்சுமெரோ-அக்கடியன் க்யூனிஃபார்ம்யீபா" +
+ "ரம்பரியமானகணிதக்குறியீடுசின்னங்கள்எழுதப்படாததுபொதுஅறியப்படாத எழுத்து"
+
+var taScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0049, 0x0067, 0x0082,
+ 0x009a, 0x009a, 0x009a, 0x00ac, 0x00c4, 0x00f4, 0x010f, 0x0124,
+ 0x013c, 0x0154, 0x0166, 0x0175, 0x01e1, 0x01f3, 0x01ff, 0x0217,
+ 0x0229, 0x0241, 0x025f, 0x0277, 0x02c8, 0x02e0, 0x02f5, 0x02f5,
+ 0x0332, 0x036f, 0x03b2, 0x03b2, 0x03d3, 0x040d, 0x0428, 0x044c,
+ 0x045e, 0x045e, 0x0479, 0x0494, 0x04ac, 0x04c1, 0x04ca, 0x04d9,
+ 0x050d, 0x0532, 0x0532, 0x0544, 0x055c, 0x055c, 0x057e, 0x05bf,
+ 0x05ea, 0x05fc, 0x061e, 0x0633, 0x0651, 0x0651, 0x0667, 0x0679,
+ // Entry 40 - 7F
+ 0x068e, 0x069d, 0x069d, 0x06b2, 0x06c7, 0x06c7, 0x06d9, 0x06e8,
+ 0x06f4, 0x072b, 0x0756, 0x076b, 0x077d, 0x078f, 0x07a8, 0x07c4,
+ 0x07c4, 0x07c4, 0x07d9, 0x07ee, 0x07ee, 0x0809, 0x0824, 0x0852,
+ 0x0852, 0x0852, 0x0870, 0x0888, 0x0888, 0x08a6, 0x08b2, 0x08b2,
+ 0x08d7, 0x08d7, 0x08f2, 0x08f2, 0x08f2, 0x08f2, 0x0904, 0x0904,
+ 0x0913, 0x092f, 0x0944, 0x0953, 0x096e, 0x096e, 0x096e, 0x0993,
+ 0x09a9, 0x09e6, 0x0a0b, 0x0a27, 0x0a45, 0x0a7f, 0x0ace, 0x0ae6,
+ 0x0b0a, 0x0b1c, 0x0b34, 0x0b46, 0x0b46, 0x0b64, 0x0b85, 0x0b9a,
+ // Entry 80 - BF
+ 0x0b9a, 0x0b9a, 0x0b9a, 0x0bb2, 0x0bb2, 0x0bd0, 0x0bf2, 0x0c0a,
+ 0x0c4a, 0x0c75, 0x0ca3, 0x0cb8, 0x0cb8, 0x0ccb, 0x0ce8, 0x0cf7,
+ 0x0cf7, 0x0d0d, 0x0d25, 0x0d3d, 0x0d58, 0x0d6a, 0x0d76, 0x0d82,
+ 0x0da3, 0x0da3, 0x0dbb, 0x0dc1, 0x0dec, 0x0dec, 0x0dec, 0x0e14,
+ 0x0e6a, 0x0e70, 0x0e94, 0x0ebe, 0x0edc, 0x0f00, 0x0f0c, 0x0f40,
+} // Size: 360 bytes
+
+var teScriptStr string = "" + // Size: 3721 bytes
+ "అరబిక్ఇంపీరియల్ అరామాక్అర్మేనియన్అవేస్టాన్బాలినీస్బాటక్బెంగాలిబ్లిస్సింబ" +
+ "ల్స్బోపోమోఫోబ్రాహ్మిబ్రెయిల్బ్యుగినీస్బుహిడ్చక్మాయునిఫైడ్ కెనెడియన్ అబ" +
+ "ొరిజినల్ సిలబిక్స్కారియన్చామ్చిరోకిసిర్థ్కోప్టిక్సైప్రోట్సిరిలిక్ప్రాచ" +
+ "ీన చర్చ స్లావోనిక్ సిరిలిక్దేవనాగరిడేసెరెట్ఇజిప్షియన్ డెమోటిక్ఇజిప్షియ" +
+ "న్ హైరాటిక్ఇజిప్షియన్ హైరోగ్లైఫ్స్ఇథియోపిక్జార్జియన్ ఖట్సూరిజార్జియన్గ" +
+ "్లాగో లిటిక్గోతిక్గ్రీక్గుజరాతీగుర్ముఖిహంగుల్హాన్హనునూసరళీకృత హాన్సాంప" +
+ "్రదాయక హాన్హీబ్రుహిరాగానపాహవా హ్మోంగ్కాటాకాన లేదా హిరాగనప్రాచీన హంగేరి" +
+ "యన్సింధుప్రాచిన ఐటాలిక్జావనీస్జాపనీస్కాయాహ్ లికాటాకానఖరోషథిఖ్మేర్కన్నడ" +
+ "కొరియన్కైథిలన్నాలావోఫ్రాక్టూర్ లాటిన్గేలిక్ లాటిన్లాటిన్లేప్చాలింబులిన" +
+ "ియర్ ఎలినియర్ బిలిసియన్లిడియన్మాన్డియన్మానిచేన్మాయన్ హైరోగ్లైఫ్స్మెరోఇ" +
+ "టిక్మలయాళంమంగోలియన్మూన్మీటి మయెక్మయాన్మార్న్కోఒఘమ్ఓల్ చికిఓర్ఖోన్ఒరియా" +
+ "ఓసమాన్యప్రాచీన పెర్మిక్ఫాగ్స్-పాఇంస్క్రిప్షనాల్ పహ్లావిసల్టార్ పహ్లావి" +
+ "పుస్తక పహ్లావిఫోనిశియన్పోల్లర్డ్ ఫోనెటిక్ఇంస్క్రిప్షనాల్ పార్థియన్రేజా" +
+ "ంగ్రోంగో రోంగోరూనిక్సమారిటన్సరాటిసౌరాష్ట్రసంజ్ఞ లిపిషవియాన్సింహళంసుడాన" +
+ "ీస్స్లోటి నాగ్రిసిరియాక్ఎస్ట్రానజీలో సిరియాక్పశ్చిమ సిరియాక్తూర్పు సిర" +
+ "ియాక్టాగ్బానవాతై లీక్రొత్త టై లుఇతమిళముటై వియట్తెలుగుటేంగ్వార్టిఫీనాఘ్" +
+ "టగలాగ్థానాథాయ్టిబెటన్యుగారిటిక్వాయికనిపించే భాషప్రాచీన పర్షియన్సుమేరో-" +
+ " అక్కడియన్ క్యునిఫార్మ్యివారసత్వంగణిత సంకేతలిపిచిహ్నాలులిపి లేనిసామాన్యత" +
+ "ెలియని లిపి"
+
+var teScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, 0x007c,
+ 0x0094, 0x0094, 0x0094, 0x00a3, 0x00b8, 0x00e2, 0x00fa, 0x0112,
+ 0x012a, 0x0148, 0x015a, 0x0169, 0x01d8, 0x01ed, 0x01f9, 0x020b,
+ 0x021d, 0x0235, 0x024d, 0x0265, 0x02bf, 0x02d7, 0x02ef, 0x02ef,
+ 0x0326, 0x035d, 0x03a0, 0x03a0, 0x03bb, 0x03ec, 0x0407, 0x042c,
+ 0x043e, 0x043e, 0x0450, 0x0465, 0x047d, 0x048f, 0x049b, 0x04aa,
+ 0x04cc, 0x04f7, 0x04f7, 0x0509, 0x051e, 0x051e, 0x0543, 0x0578,
+ 0x05a9, 0x05b8, 0x05e3, 0x05f8, 0x060d, 0x060d, 0x0626, 0x063b,
+ // Entry 40 - 7F
+ 0x064d, 0x065f, 0x065f, 0x066e, 0x0683, 0x0683, 0x068f, 0x069e,
+ 0x06aa, 0x06db, 0x0700, 0x0712, 0x0724, 0x0733, 0x074c, 0x0768,
+ 0x0768, 0x0768, 0x077d, 0x0792, 0x0792, 0x07ad, 0x07c5, 0x07f9,
+ 0x07f9, 0x07f9, 0x0814, 0x0826, 0x0826, 0x0841, 0x084d, 0x084d,
+ 0x0869, 0x0869, 0x0884, 0x0884, 0x0884, 0x0884, 0x0890, 0x0890,
+ 0x089c, 0x08b2, 0x08c7, 0x08d6, 0x08eb, 0x08eb, 0x08eb, 0x0919,
+ 0x0932, 0x0975, 0x09a0, 0x09c8, 0x09e3, 0x0a17, 0x0a60, 0x0a75,
+ 0x0a94, 0x0aa6, 0x0abe, 0x0acd, 0x0acd, 0x0ae8, 0x0b04, 0x0b19,
+ // Entry 80 - BF
+ 0x0b19, 0x0b19, 0x0b19, 0x0b2b, 0x0b2b, 0x0b43, 0x0b68, 0x0b80,
+ 0x0bbd, 0x0be8, 0x0c13, 0x0c2e, 0x0c2e, 0x0c3b, 0x0c61, 0x0c73,
+ 0x0c73, 0x0c89, 0x0c9b, 0x0cb6, 0x0cce, 0x0ce0, 0x0cec, 0x0cf8,
+ 0x0d0d, 0x0d0d, 0x0d2b, 0x0d37, 0x0d59, 0x0d59, 0x0d59, 0x0d87,
+ 0x0ddb, 0x0de1, 0x0df9, 0x0e21, 0x0e39, 0x0e52, 0x0e67, 0x0e89,
+} // Size: 360 bytes
+
+var thScriptStr string = "" + // Size: 4317 bytes
+ "อะฟาคาแอลเบเนีย คอเคเซียอาหรับอิมพีเรียล อราเมอิกอาร์เมเนียอเวสตะบาหลีบา" +
+ "มุมบัสซาบาตักเบงกาลีบลิสซิมโบลส์ปอพอมอฟอพราหมีเบรลล์บูกิสบูฮิดชากมาสัญ" +
+ "ลักษณ์ชนเผ่าพื้นเมืองแคนาดาคาเรียจามเชอโรกีเซิร์ทคอปติกไซเปรียทซีริลลิ" +
+ "กเชอร์ชสลาโวนิกซีริลลิกโบราณเทวนาครีเดเซเรทชวเลขดัปโลยันดีโมติกอียิปต์" +
+ "เฮียราติกอียิปต์เฮียโรกลิฟส์อียิปต์เอลบ์ซานเอทิโอปิกคัตซูรีจอร์เจียจอร" +
+ "์เจียกลาโกลิติกโกธิกคฤณห์กรีกคุชราตกูร์มูคีฮันกูลฮั่นฮานูโนโอฮั่นตัวย่" +
+ "อฮั่นตัวเต็มฮีบรูฮิระงะนะอักขระอานาโตเลียปาเฮาห์ม้งคะตะกะนะหรือฮิระงะน" +
+ "ะฮังการีโบราณอินดัสอิตาลีโบราณชวาญี่ปุ่นจูร์เชนคยาห์คะตะกะนะขโรษฐีเขมร" +
+ "คอจคีกันนาดาเกาหลีเปลเลกายติล้านนาลาวลาติน - ฟรังเตอร์ลาติน - แกลิกละต" +
+ "ินเลปชาลิมบูลีเนียร์เอลีเนียร์บีเฟรเซอร์โลมาไลเซียลีเดียมหาชนีแมนเดียน" +
+ "มานิแชนมายาไฮโรกลิฟส์เมนเดเคอร์ซีฟ-เมโรอิติกเมโรติกมาลายาลัมโมฑีมองโกเ" +
+ "ลียมูนมโรเมเทมาเยกพม่าอาระเบียเหนือโบราณนาบาทาเอียนกีบา-นาซีเอ็นโกนุซุ" +
+ "โอคัมโอลชิกิออร์คอนโอริยาออสมันยาพาลไมรีนป่อจิ้งฮอเปอร์มิกโบราณฟากส์-ป" +
+ "าปะห์ลาวีอินสคริปชันแนลปะห์ลาวีซอลเตอร์ปะห์ลาวีบุ๊กฟินิเชียสัทศาสตร์พอ" +
+ "ลลาร์ดพาร์เทียอินสคริปชันแนลเรจังรองโกรองโกรูนิกซามาเรียซาราติอาระเบีย" +
+ "ใต้โบราณโสวรัสตระไซน์ไรติ้งซอเวียนชาราดาสิทธัมคุดาวาดีสิงหลโสราสมเป็งซ" +
+ "ุนดาซิโลตินากรีซีเรียซีเรียเอสทรานจีโลซีเรียตะวันตกซีเรียตะวันออกตักบั" +
+ "นวาทาครีไทเลไทลื้อใหม่ทมิฬตันกัทไทเวียตเทลูกูเทงกวาร์ทิฟินากตากาล็อกทา" +
+ "นาไทยทิเบตเทอฮุทายูการิตไวคำพูดที่มองเห็นได้วารังกสิติโอลีเอเปอร์เซียโ" +
+ "บราณอักษรรูปลิ่มสุเมเรีย-อัคคาเดียยิอินเฮอริตเครื่องหมายทางคณิตศาสตร์ซ" +
+ "ิมโบลส์ไม่มีภาษาเขียนสามัญสคริปต์ที่ไม่รู้จัก"
+
+var thScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0012, 0x0046, 0x0046, 0x0058, 0x008f, 0x00ad, 0x00bf,
+ 0x00ce, 0x00dd, 0x00ec, 0x00fb, 0x0110, 0x0134, 0x014c, 0x015e,
+ 0x0170, 0x017f, 0x018e, 0x019d, 0x01f7, 0x0209, 0x0212, 0x0227,
+ 0x0239, 0x024b, 0x0263, 0x027b, 0x02cc, 0x02e4, 0x02f9, 0x0320,
+ 0x034a, 0x037a, 0x03b3, 0x03cb, 0x03e6, 0x0413, 0x042b, 0x0449,
+ 0x0458, 0x0467, 0x0473, 0x0485, 0x049d, 0x04af, 0x04bb, 0x04d3,
+ 0x04f1, 0x0512, 0x0512, 0x0521, 0x0539, 0x0569, 0x0587, 0x05c3,
+ 0x05e7, 0x05f9, 0x061a, 0x0623, 0x0638, 0x064d, 0x065c, 0x0674,
+ // Entry 40 - 7F
+ 0x0686, 0x0692, 0x06a1, 0x06b6, 0x06c8, 0x06d7, 0x06e6, 0x06f8,
+ 0x0701, 0x072e, 0x074f, 0x075e, 0x076d, 0x077c, 0x079a, 0x07b8,
+ 0x07d0, 0x07dc, 0x07ee, 0x0800, 0x0812, 0x082a, 0x083f, 0x0869,
+ 0x0878, 0x08ac, 0x08c1, 0x08dc, 0x08e8, 0x0903, 0x090c, 0x0915,
+ 0x0930, 0x0930, 0x093c, 0x0972, 0x0993, 0x09ac, 0x09be, 0x09ca,
+ 0x09d9, 0x09ee, 0x0a03, 0x0a15, 0x0a2d, 0x0a45, 0x0a60, 0x0a87,
+ 0x0a9d, 0x0adf, 0x0b0f, 0x0b33, 0x0b4b, 0x0b7e, 0x0bc0, 0x0bcf,
+ 0x0bed, 0x0bfc, 0x0c14, 0x0c26, 0x0c56, 0x0c71, 0x0c8f, 0x0ca4,
+ // Entry 80 - BF
+ 0x0cb6, 0x0cc8, 0x0ce0, 0x0cef, 0x0d0d, 0x0d1c, 0x0d3d, 0x0d4f,
+ 0x0d82, 0x0da9, 0x0dd3, 0x0deb, 0x0dfa, 0x0e06, 0x0e24, 0x0e30,
+ 0x0e42, 0x0e57, 0x0e69, 0x0e81, 0x0e96, 0x0eae, 0x0eba, 0x0ec3,
+ 0x0ed2, 0x0ee7, 0x0efc, 0x0f02, 0x0f38, 0x0f56, 0x0f68, 0x0f92,
+ 0x0fea, 0x0ff0, 0x100b, 0x1053, 0x106b, 0x1095, 0x10a4, 0x10dd,
+} // Size: 360 bytes
+
+var trScriptStr string = "" + // Size: 1491 bytes
+ "AfakaKafkas AlbanyasıArapİmparatorluk AramicesiErmeniAvestaBali DiliBamu" +
+ "mBassa VahBatakBengalBlis SembolleriBopomofoBrahmiBrailleBugisBuhidChakm" +
+ "aUCASKaryaChamÇerokiCirthKıptiKıbrısKirilEski Kilise Slavcası KirilDevan" +
+ "agariDeseretDuployé StenografiDemotik MısırHiyeratik MısırMısır Hiyerogl" +
+ "ifleriElbasanEtiyopyaHutsuri GürcüGürcüGlagolitGotikGranthaYunanGüceratG" +
+ "urmukhiHangılHanHanunooBasitleştirilmiş HanGeleneksel HanİbraniHiraganaA" +
+ "nadolu HiyeroglifleriPahavh HmongKatakana veya HiraganaEski MacarIndusEs" +
+ "ki İtalyanCava DiliJaponJurchenKayah LiKatakanaKharoshthiKmerKhojkiKanna" +
+ "daKoreKpelleKaithiLannaLaoFraktur LatinGael LatinLatinLepchaLimbuLineer " +
+ "ALineer BFraserLomaLikyaLidyaMahajaniMandenManiMaya HiyeroglifleriMendeM" +
+ "eroitik El YazısıMeroitikMalayalamModiMoğolMoonMroMeitei MayekBurmaEski " +
+ "Kuzey ArapNebatiNaksi GebaN’KoNüshuOghamOl ChikiOrhunOriyaOsmanyaPalmira" +
+ "Pau Cin HauEski PermikPhags-paPehlevi Kitabe DiliPsalter PehleviKitap Pe" +
+ "hlevi DiliFenikePollard FonetikPartça Kitabe DiliRejangRongorongoRunikSa" +
+ "maritSaratiEski Güney ArapSaurashtraİşaret DiliShavianSharadaSiddhamKhud" +
+ "abadiSeylanSora SompengSundaSyloti NagriSüryaniEstrangela SüryaniBatı Sü" +
+ "ryaniDoğu SüryaniTagbanvaTakriTai LeNew Tai LueTamilTangutTai VietTelugu" +
+ "TengvarTifinaghTakalotThaanaTayTibetTirhutaUgarit Çivi YazısıVaiKonuşma " +
+ "Sesleri ÇizimlemesiVarang KshitiWoleaiEski FarsSümer-Akad Çivi YazısıYiK" +
+ "alıtsalMatematiksel GösterimSembolYazılı OlmayanOrtakBilinmeyen Alfabe"
+
+var trScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0005, 0x0016, 0x0016, 0x001a, 0x0031, 0x0037, 0x003d,
+ 0x0046, 0x004b, 0x0054, 0x0059, 0x005f, 0x006e, 0x0076, 0x007c,
+ 0x0083, 0x0088, 0x008d, 0x0093, 0x0097, 0x009c, 0x00a0, 0x00a7,
+ 0x00ac, 0x00b2, 0x00ba, 0x00bf, 0x00da, 0x00e4, 0x00eb, 0x00fe,
+ 0x010d, 0x011e, 0x0134, 0x013b, 0x0143, 0x0152, 0x0159, 0x0161,
+ 0x0166, 0x016d, 0x0172, 0x017a, 0x0182, 0x0189, 0x018c, 0x0193,
+ 0x01a9, 0x01b7, 0x01b7, 0x01be, 0x01c6, 0x01dc, 0x01e8, 0x01fe,
+ 0x0208, 0x020d, 0x021a, 0x0223, 0x0228, 0x022f, 0x0237, 0x023f,
+ // Entry 40 - 7F
+ 0x0249, 0x024d, 0x0253, 0x025a, 0x025e, 0x0264, 0x026a, 0x026f,
+ 0x0272, 0x027f, 0x0289, 0x028e, 0x0294, 0x0299, 0x02a1, 0x02a9,
+ 0x02af, 0x02b3, 0x02b8, 0x02bd, 0x02c5, 0x02cb, 0x02cf, 0x02e2,
+ 0x02e7, 0x02fb, 0x0303, 0x030c, 0x0310, 0x0316, 0x031a, 0x031d,
+ 0x0329, 0x0329, 0x032e, 0x033d, 0x0343, 0x034d, 0x0353, 0x0359,
+ 0x035e, 0x0366, 0x036b, 0x0370, 0x0377, 0x037e, 0x0389, 0x0394,
+ 0x039c, 0x03af, 0x03be, 0x03d0, 0x03d6, 0x03e5, 0x03f8, 0x03fe,
+ 0x0408, 0x040d, 0x0414, 0x041a, 0x042a, 0x0434, 0x0441, 0x0448,
+ // Entry 80 - BF
+ 0x044f, 0x0456, 0x045f, 0x0465, 0x0471, 0x0476, 0x0482, 0x048a,
+ 0x049d, 0x04ab, 0x04b9, 0x04c1, 0x04c6, 0x04cc, 0x04d7, 0x04dc,
+ 0x04e2, 0x04ea, 0x04f0, 0x04f7, 0x04ff, 0x0506, 0x050c, 0x050f,
+ 0x0514, 0x051b, 0x0530, 0x0533, 0x0550, 0x055d, 0x0563, 0x056c,
+ 0x0586, 0x0588, 0x0591, 0x05a7, 0x05ad, 0x05bd, 0x05c2, 0x05d3,
+} // Size: 360 bytes
+
+var ukScriptStr string = "" + // Size: 2925 bytes
+ "афакакавказька албанськаахомарабицяАрмівірменськаАвестійськийБалійськийБ" +
+ "амумбассаБатакбенгальськасимволи БліссабопомофоБрахмішрифт БрайляБугійс" +
+ "ькийБухідЧакмауніфіковані символи канадських тубільцівКаріанськийХамітс" +
+ "ькийЧерокіКиртКоптськийКіпрськийкирилицяДавньоцерковнословʼянськийдеван" +
+ "агаріДезеретЄгипетський демотичнийЄгипетський ієратичнийЄгипетський ієр" +
+ "огліфічнийефіопськаКхутсурігрузинськаГлаголичнийГотичнийгрецькагуджарат" +
+ "ігурмухіхангилькитайськаХанунукитайська спрощенакитайська традиційнаівр" +
+ "итхіраганаПахау хмонгКатакана чи хіраганаДавньоугорськийХарапськийДавнь" +
+ "оіталійськийЯванськийяпонськаКая ЛікатаканаКхароштхікхмерськаканнадакор" +
+ "ейськаКаїтіЛанналаоськаЛатинський фрактурнийЛатинський гельськийлатиниц" +
+ "яЛепчаЛімбуЛінійний АЛінійний Вабетка ФрейзераломаЛікійськийЛідійськийМ" +
+ "андейськийМаніхейськийМайя ієрогліфічнийМероїтськиймалаяламськамонгольс" +
+ "ькаМунМейтей майєкмʼянмськаНкоОгамічнийСантальськийОрхонськийоріяОсманс" +
+ "ькийДавньопермськийПхагс-паПехлеві написівПехлеві релігійнийПехлеві літ" +
+ "ературнийФінікійськийписемність ПоллардаПарфянськийРеджангРонго-ронгоРу" +
+ "нічнийСамаритянськийСаратіСаураштраЗнаковийШоусингальськаСунданськийСіл" +
+ "оті нагріСирійськийДавньосирійський естрангелоДавньосирійський західний" +
+ "Давньосирійський східнийТагбанваТай-ліНовий тайський луетамільськатангу" +
+ "тТай-вʼєттелугуТенгварТифінагТагальськийтаанатайськатибетськаУгаритськи" +
+ "йВаївидиме мовленняДавньоперськийШумеро-аккадський клінописЙїуспадкован" +
+ "аматематичнасимвольнабезписемназвичайнаневідома система письма"
+
+var ukScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000a, 0x002f, 0x0037, 0x0045, 0x004d, 0x0061, 0x0079,
+ 0x008d, 0x0097, 0x00a1, 0x00ab, 0x00c1, 0x00dc, 0x00ec, 0x00f8,
+ 0x010f, 0x0123, 0x012d, 0x0137, 0x0184, 0x019a, 0x01ae, 0x01ba,
+ 0x01c2, 0x01d4, 0x01e6, 0x01f6, 0x022a, 0x023e, 0x024c, 0x024c,
+ 0x0277, 0x02a2, 0x02d3, 0x02d3, 0x02e5, 0x02f5, 0x0309, 0x031f,
+ 0x032f, 0x032f, 0x033d, 0x034f, 0x035d, 0x036b, 0x037d, 0x0389,
+ 0x03ac, 0x03d3, 0x03d3, 0x03dd, 0x03ed, 0x03ed, 0x0402, 0x0428,
+ 0x0446, 0x045a, 0x047c, 0x048e, 0x049e, 0x049e, 0x04a9, 0x04b9,
+ // Entry 40 - 7F
+ 0x04cb, 0x04dd, 0x04dd, 0x04eb, 0x04fd, 0x04fd, 0x0507, 0x0511,
+ 0x051f, 0x0548, 0x056f, 0x057f, 0x0589, 0x0593, 0x05a6, 0x05b9,
+ 0x05d6, 0x05de, 0x05f2, 0x0606, 0x0606, 0x061c, 0x0634, 0x0657,
+ 0x0657, 0x0657, 0x066d, 0x0685, 0x0685, 0x069b, 0x06a1, 0x06a1,
+ 0x06b8, 0x06b8, 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06d0, 0x06d0,
+ 0x06e2, 0x06fa, 0x070e, 0x0716, 0x072a, 0x072a, 0x072a, 0x0748,
+ 0x0757, 0x0774, 0x0797, 0x07be, 0x07d6, 0x07fb, 0x0811, 0x081f,
+ 0x0834, 0x0844, 0x0860, 0x086c, 0x086c, 0x087e, 0x088e, 0x0894,
+ // Entry 80 - BF
+ 0x0894, 0x0894, 0x0894, 0x08aa, 0x08aa, 0x08c0, 0x08d7, 0x08eb,
+ 0x0920, 0x0951, 0x0980, 0x0990, 0x0990, 0x099b, 0x09bd, 0x09d1,
+ 0x09dd, 0x09ec, 0x09f8, 0x0a06, 0x0a14, 0x0a2a, 0x0a34, 0x0a42,
+ 0x0a54, 0x0a54, 0x0a6a, 0x0a70, 0x0a8d, 0x0a8d, 0x0a8d, 0x0aa9,
+ 0x0adb, 0x0adf, 0x0af5, 0x0b0b, 0x0b1d, 0x0b31, 0x0b41, 0x0b6d,
+} // Size: 360 bytes
+
+var urScriptStr string = "" + // Size: 492 bytes
+ "عربیآرمینیائیبنگالیبوپوموفوبریلسیریلکدیوناگریایتھوپیائیجارجیائییونانیگجر" +
+ "اتیگرمکھیہنگولہانآسان ہانروایتی ہانعبرانیہیراگیناجاپانیکٹاکاناخمیرکنڑکو" +
+ "ریائیلاؤلاطینیملیالممنگولیائیمیانماراڑیہسنہالاتملتیلگوتھاناتھائیتبتیعلا" +
+ "ماتغیر تحریر شدہعامنامعلوم رسم الخط"
+
+var urScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x001a, 0x001a,
+ 0x001a, 0x001a, 0x001a, 0x001a, 0x0026, 0x0026, 0x0036, 0x0036,
+ 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e,
+ 0x003e, 0x003e, 0x003e, 0x004a, 0x004a, 0x005a, 0x005a, 0x005a,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x006e, 0x006e, 0x007e, 0x007e,
+ 0x007e, 0x007e, 0x008a, 0x0096, 0x00a2, 0x00ac, 0x00b2, 0x00b2,
+ 0x00c1, 0x00d4, 0x00d4, 0x00e0, 0x00f0, 0x00f0, 0x00f0, 0x00f0,
+ 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00fc, 0x00fc, 0x00fc, 0x010a,
+ // Entry 40 - 7F
+ 0x010a, 0x0112, 0x0112, 0x0118, 0x0126, 0x0126, 0x0126, 0x0126,
+ 0x012c, 0x012c, 0x012c, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138,
+ 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138,
+ 0x0138, 0x0138, 0x0138, 0x0144, 0x0144, 0x0156, 0x0156, 0x0156,
+ 0x0156, 0x0156, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164,
+ 0x0164, 0x0164, 0x0164, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c,
+ // Entry 80 - BF
+ 0x016c, 0x016c, 0x016c, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,
+ 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x017e,
+ 0x017e, 0x017e, 0x0188, 0x0188, 0x0188, 0x0188, 0x0192, 0x019c,
+ 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4,
+ 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01b0, 0x01c8, 0x01ce, 0x01ec,
+} // Size: 360 bytes
+
+var uzScriptStr string = "" + // Size: 273 bytes
+ "arabarmanbengalbopomofoBraylkirilldevanagarhabashgruzingrekgujarotgurmuk" +
+ "xihangulxitoysoddalashgan xitoyan’anaviy xitoyibroniyhiraganayaponkataka" +
+ "naxmerkannadakoreyslaoslotinmalayalammo‘g‘ulmyanmaoriyasingaltamiltelugu" +
+ "taanataytibetbelgilaryozuvsizumumiynoma’lum yozuv"
+
+var uzScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, 0x0009,
+ 0x0009, 0x0009, 0x0009, 0x0009, 0x000f, 0x000f, 0x0017, 0x0017,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ 0x001c, 0x001c, 0x001c, 0x0022, 0x0022, 0x002b, 0x002b, 0x002b,
+ 0x002b, 0x002b, 0x002b, 0x002b, 0x0031, 0x0031, 0x0037, 0x0037,
+ 0x0037, 0x0037, 0x003b, 0x0042, 0x004a, 0x0050, 0x0055, 0x0055,
+ 0x0067, 0x0078, 0x0078, 0x007f, 0x0087, 0x0087, 0x0087, 0x0087,
+ 0x0087, 0x0087, 0x0087, 0x0087, 0x008c, 0x008c, 0x008c, 0x0094,
+ // Entry 40 - 7F
+ 0x0094, 0x0098, 0x0098, 0x009f, 0x00a5, 0x00a5, 0x00a5, 0x00a5,
+ 0x00a9, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00b7, 0x00b7, 0x00c2, 0x00c2, 0x00c2,
+ 0x00c2, 0x00c2, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
+ 0x00c8, 0x00c8, 0x00c8, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd,
+ // Entry 80 - BF
+ 0x00cd, 0x00cd, 0x00cd, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3,
+ 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d8,
+ 0x00d8, 0x00d8, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e3, 0x00e6,
+ 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb,
+ 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00f3, 0x00fb, 0x0101, 0x0111,
+} // Size: 360 bytes
+
+var viScriptStr string = "" + // Size: 2484 bytes
+ "Chữ AfakaChữ Ả RậpChữ Imperial AramaicChữ ArmeniaChữ AvestanChữ BaliChữ " +
+ "BamumChữ Bassa VahChữ BatakChữ BengaliChữ BlissymbolsChữ BopomofoChữ Bra" +
+ "hmiChữ nổi BrailleChữ BuginChữ BuhidChữ ChakmaÂm tiết Thổ dân Canada Hợp" +
+ " nhấtChữ CariaChữ ChămChữ CherokeeChữ CirthChữ CopticChứ SípChữ KirinChữ" +
+ " Kirin Slavơ Nhà thờ cổChữ DevanagariChữ DeseretChữ tốc ký DuployanChữ A" +
+ "i Cập bình dânChữ Ai Cập thày tuChữ tượng hình Ai CậpChữ EthiopiaChữ Khu" +
+ "tsuri GeorgiaChữ GruziaChữ GlagoliticChữ Gô-tíchChữ GranthaChữ Hy LạpChữ" +
+ " GujaratiChữ GurmukhiChữ HangulChữ HánChữ HanunooChữ Hán giản thểChữ Hán" +
+ " phồn thểChữ Do TháiChữ HiraganaChữ tượng hình AnatoliaChữ Pahawh HmongB" +
+ "ảng ký hiệu âm tiết Tiếng NhậtChữ Hungary cổChữ IndusChữ Italic cổChữ " +
+ "JavaChữ Nhật BảnChữ JurchenChữ Kayah LiChữ KatakanaChữ KharoshthiChữ Khơ" +
+ "-meChữ KhojkiChữ KannadaChữ Hàn QuốcChữ KpelleChữ KaithiChữ LannaChữ Lào" +
+ "Chữ La-tinh FrakturChữ La-tinh Xcốt-lenChữ La tinhChữ LepchaChữ LimbuChữ" +
+ " Linear AChữ Linear BChữ FraserChữ LomaChữ LyciaChữ LydiaChữ MandaeanChữ" +
+ " ManichaeanChữ tượng hình MayaChữ MendeChữ Meroitic Nét thảoChữ Meroitic" +
+ "Chữ MalayalamChữ Mông CổChữ nổi MoonChữ MroChữ Meitei MayekMyanmaChữ Bắc" +
+ " Ả Rập cổChữ NabataeanChữ Naxi GebaChữ N’KoChữ NüshuChữ OghamChữ Ol Chik" +
+ "iChữ OrkhonChữ OriyaChữ OsmanyaChữ PalmyreneChữ Permic cổChữ Phags-paChữ" +
+ " Pahlavi Văn biaChữ Pahlavi Thánh caChữ Pahlavi SáchChữ PhoeniciaNgữ âm " +
+ "PollardChữ Parthia Văn biaChữ RejangChữ RongorongoChữ RunicChữ Samaritan" +
+ "Chữ SaratiChữ Nam Ả Rập cổChữ SaurashtraChữ viết Ký hiệuChữ ShavianChữ S" +
+ "haradaChữ KhudawadiChữ SinhalaChữ Sora SompengChữ Xu-đăngChữ Syloti Nagr" +
+ "iChữ SyriaChữ Estrangelo SyriacChữ Tây SyriaChữ Đông SyriaChữ TagbanwaCh" +
+ "ữ TakriChữ Thái NaChữ Thái Lặc mớiChữ TamilChữ TangutChữ Thái ViệtChữ " +
+ "TeluguChữ TengwarChữ TifinaghChữ TagalogChữ ThaanaChữ TháiChữ Tây TạngCh" +
+ "ữ TirhutaChữ UgaritChữ VaiTiếng nói Nhìn thấy đượcChữ Varang KshitiChữ" +
+ " WoleaiChữ Ba Tư cổChữ hình nêm Sumero-AkkadianChữ DiChữ Kế thừaKý hiệu " +
+ "Toán họcKý hiệuChưa có chữ viếtChungChữ viết không xác định"
+
+var viScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000b, 0x000b, 0x000b, 0x001a, 0x0030, 0x003d, 0x004a,
+ 0x0054, 0x005f, 0x006e, 0x0079, 0x0086, 0x0097, 0x00a5, 0x00b1,
+ 0x00c4, 0x00cf, 0x00da, 0x00e6, 0x010f, 0x011a, 0x0125, 0x0133,
+ 0x013e, 0x014a, 0x0154, 0x015f, 0x0181, 0x0191, 0x019e, 0x01b6,
+ 0x01cf, 0x01e6, 0x0203, 0x0203, 0x0211, 0x0227, 0x0233, 0x0243,
+ 0x0252, 0x025f, 0x026d, 0x027b, 0x0289, 0x0295, 0x029f, 0x02ac,
+ 0x02c3, 0x02da, 0x02da, 0x02e8, 0x02f6, 0x0313, 0x0325, 0x0350,
+ 0x0362, 0x036d, 0x037e, 0x0388, 0x039a, 0x03a7, 0x03b5, 0x03c3,
+ // Entry 40 - 7F
+ 0x03d3, 0x03e0, 0x03ec, 0x03f9, 0x040a, 0x0416, 0x0422, 0x042d,
+ 0x0437, 0x044c, 0x0464, 0x0471, 0x047d, 0x0488, 0x0496, 0x04a4,
+ 0x04b0, 0x04ba, 0x04c5, 0x04d0, 0x04d0, 0x04de, 0x04ee, 0x0507,
+ 0x0512, 0x052c, 0x053a, 0x0549, 0x0549, 0x0559, 0x0569, 0x0572,
+ 0x0584, 0x0584, 0x058a, 0x05a4, 0x05b3, 0x05c2, 0x05ce, 0x05da,
+ 0x05e5, 0x05f3, 0x05ff, 0x060a, 0x0617, 0x0626, 0x0626, 0x0637,
+ 0x0645, 0x065b, 0x0672, 0x0685, 0x0694, 0x06a5, 0x06bb, 0x06c7,
+ 0x06d7, 0x06e2, 0x06f1, 0x06fd, 0x0715, 0x0725, 0x073c, 0x0749,
+ // Entry 80 - BF
+ 0x0756, 0x0756, 0x0765, 0x0772, 0x0784, 0x0793, 0x07a5, 0x07b0,
+ 0x07c7, 0x07d7, 0x07e9, 0x07f7, 0x0802, 0x0810, 0x0827, 0x0832,
+ 0x083e, 0x0850, 0x085c, 0x0869, 0x0877, 0x0884, 0x0890, 0x089b,
+ 0x08ac, 0x08b9, 0x08c5, 0x08ce, 0x08f0, 0x0903, 0x090f, 0x0920,
+ 0x0940, 0x0948, 0x0959, 0x096f, 0x0979, 0x098f, 0x0994, 0x09b4,
+} // Size: 360 bytes
+
+var zhScriptStr string = "" + // Size: 2184 bytes
+ "阿法卡文阿拉伯文皇室亚拉姆文亚美尼亚文阿维斯陀文巴厘文巴姆穆文巴萨文巴塔克文孟加拉文布列斯符号汉语拼音婆罗米文字布莱叶盲文布吉文布希德文查克马文" +
+ "加拿大土著统一音节卡里亚文占文切罗基文色斯文克普特文塞浦路斯文西里尔文西里尔文字(古教会斯拉夫文的变体)天城文德塞莱特文杜普洛伊速记后期埃及" +
+ "文古埃及僧侣书写体古埃及象形文埃塞俄比亚文格鲁吉亚文(教堂体)格鲁吉亚文格拉哥里文哥特文格兰塔文希腊文古吉拉特文果鲁穆奇文韩文字汉字汉奴罗文" +
+ "简体中文繁体中文希伯来文平假名安那托利亚象形文字杨松录苗文片假名或平假名古匈牙利文古希腊哈拉潘古意大利文爪哇文日文女真文克耶李文字片假名卡罗" +
+ "须提文高棉文克吉奇文字卡纳达文韩文克佩列文凯提文兰拿文老挝文拉丁文(哥特式字体变体)拉丁文(盖尔文变体)拉丁文雷布查文林布文线形文字(A)线" +
+ "形文字(B)傈僳文洛马文利西亚文吕底亚文阿拉米文摩尼教文玛雅圣符文门迪文麦罗埃草书麦若提克文马拉雅拉姆文蒙古文韩文语系谬文曼尼普尔文缅甸文古" +
+ "北方阿拉伯文纳巴泰文纳西格巴文西非书面文字(N’Ko)女书欧甘文桑塔利文鄂尔浑文奥里亚文奥斯曼亚文帕尔迈拉文古彼尔姆文八思巴文巴列维文碑铭体" +
+ "巴列维文(圣诗体)巴列维文(书体)腓尼基文波拉德音标文字帕提亚文碑铭体拉让文朗格朗格文古代北欧文撒马利亚文沙拉堤文古南阿拉伯文索拉什特拉文书" +
+ "写符号萧伯纳式文夏拉达文信德文僧伽罗文索朗桑朋文巽他文锡尔赫特文叙利亚文福音体叙利亚文西叙利亚文东叙利亚文塔格班瓦文泰克里文泰乐文新傣文泰米" +
+ "尔文唐古特文越南傣文泰卢固文腾格瓦文字提非纳文塔加路文塔安那文泰文藏文迈蒂利文乌加里特文瓦依文可见语言瓦郎奇蒂文字沃莱艾文古波斯文苏美尔-阿" +
+ "卡德楔形文字彝文遗传学术语数学符号符号非书面文字通用未知文字"
+
+var zhScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x000c, 0x000c, 0x0018, 0x002a, 0x0039, 0x0048,
+ 0x0051, 0x005d, 0x0066, 0x0072, 0x007e, 0x008d, 0x0099, 0x00a8,
+ 0x00b7, 0x00c0, 0x00cc, 0x00d8, 0x00f3, 0x00ff, 0x0105, 0x0111,
+ 0x011a, 0x0126, 0x0135, 0x0141, 0x0174, 0x017d, 0x018c, 0x019e,
+ 0x01ad, 0x01c5, 0x01d7, 0x01d7, 0x01e9, 0x0207, 0x0216, 0x0225,
+ 0x022e, 0x023a, 0x0243, 0x0252, 0x0261, 0x026a, 0x0270, 0x027c,
+ 0x0288, 0x0294, 0x0294, 0x02a0, 0x02a9, 0x02c4, 0x02d3, 0x02e8,
+ 0x02f7, 0x0309, 0x0318, 0x0321, 0x0327, 0x0330, 0x033f, 0x0348,
+ // Entry 40 - 7F
+ 0x0357, 0x0360, 0x036f, 0x037b, 0x0381, 0x038d, 0x0396, 0x039f,
+ 0x03a8, 0x03cc, 0x03ea, 0x03f3, 0x03ff, 0x0408, 0x041b, 0x042e,
+ 0x0437, 0x0440, 0x044c, 0x0458, 0x0458, 0x0464, 0x0470, 0x047f,
+ 0x0488, 0x0497, 0x04a6, 0x04b8, 0x04b8, 0x04c1, 0x04cd, 0x04d3,
+ 0x04e2, 0x04e2, 0x04eb, 0x0500, 0x050c, 0x051b, 0x0539, 0x053f,
+ 0x0548, 0x0554, 0x0560, 0x056c, 0x057b, 0x058a, 0x058a, 0x0599,
+ 0x05a5, 0x05ba, 0x05d5, 0x05ed, 0x05f9, 0x060e, 0x0623, 0x062c,
+ 0x063b, 0x064a, 0x0659, 0x0665, 0x0677, 0x0689, 0x0695, 0x06a4,
+ // Entry 80 - BF
+ 0x06b0, 0x06b0, 0x06b9, 0x06c5, 0x06d4, 0x06dd, 0x06ec, 0x06f8,
+ 0x070d, 0x071c, 0x072b, 0x073a, 0x0746, 0x074f, 0x0758, 0x0764,
+ 0x0770, 0x077c, 0x0788, 0x0797, 0x07a3, 0x07af, 0x07bb, 0x07c1,
+ 0x07c7, 0x07d3, 0x07e2, 0x07eb, 0x07f7, 0x0809, 0x0815, 0x0821,
+ 0x0840, 0x0846, 0x0855, 0x0861, 0x0867, 0x0876, 0x087c, 0x0888,
+} // Size: 360 bytes
+
+var zhHantScriptStr string = "" + // Size: 2409 bytes
+ "阿法卡文字高加索阿爾巴尼亞文阿拉伯文皇室亞美尼亞文亞美尼亞文阿維斯陀文峇里文巴姆穆文巴薩文巴塔克文孟加拉文布列斯文注音符號婆羅米文盲人用點字布吉" +
+ "斯文布希德文查克馬文加拿大原住民通用字符卡里亞文占文柴羅基文色斯文科普特文塞浦路斯文斯拉夫文西里爾文(古教會斯拉夫文變體)天城文德瑟雷特文杜" +
+ "普洛伊速記古埃及世俗體古埃及僧侶體古埃及象形文字愛爾巴桑文衣索比亞文喬治亞語系(阿索他路里和努斯克胡里文)喬治亞文格拉哥里文歌德文格蘭他文字" +
+ "希臘文古吉拉特文古魯穆奇文韓文字漢語哈努諾文簡體中文繁體中文希伯來文平假名安那托利亞象形文字楊松錄苗文片假名或平假名古匈牙利文印度河流域(哈" +
+ "拉帕文)古意大利文爪哇文日文女真文字克耶李文片假名卡羅須提文高棉文克吉奇文字坎那達文韓文克培列文凱提文藍拿文寮國文拉丁文(尖角體活字變體)拉" +
+ "丁文(蓋爾語變體)拉丁文雷布查文林佈文線性文字(A)線性文字(B)栗僳文洛馬文呂西亞語里底亞語曼底安文摩尼教文瑪雅象形文字門德文麥羅埃文(曲" +
+ "線字體)麥羅埃文馬來亞拉姆文蒙古文蒙氏點字謬文曼尼普爾文緬甸文古北阿拉伯文納巴泰文字納西格巴文西非書面語言 (N’Ko)女書文字歐甘文桑塔利" +
+ "文鄂爾渾文歐利亞文歐斯曼亞文帕米瑞拉文字古彼爾姆諸文八思巴文巴列維文(碑銘體)巴列維文(聖詩體)巴列維文(書體)腓尼基文柏格理拼音符帕提亞文" +
+ "(碑銘體)拉讓文朗格朗格象形文古北歐文字撒馬利亞文沙拉堤文古南阿拉伯文索拉什特拉文手語書寫符號簫柏納字符夏拉達文悉曇文字信德文錫蘭文索朗桑朋" +
+ "文字巽他文希洛弟納格里文敍利亞文敘利亞文(福音體文字變體)敘利亞文(西方文字變體)敘利亞文(東方文字變體)南島文塔卡里文字傣哪文西雙版納新傣" +
+ "文坦米爾文西夏文傣擔文泰盧固文談格瓦文提非納文塔加拉文塔安那文泰文西藏文邁蒂利文烏加列文瓦依文視覺語音文字瓦郎奇蒂文字沃雷艾文古波斯文蘇米魯" +
+ "亞甲文楔形文字彞文繼承文字(Unicode)數學符號符號非書寫語言一般文字未知文字"
+
+var zhHantScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x002a, 0x002a, 0x0036, 0x004b, 0x005a, 0x0069,
+ 0x0072, 0x007e, 0x0087, 0x0093, 0x009f, 0x00ab, 0x00b7, 0x00c3,
+ 0x00d2, 0x00de, 0x00ea, 0x00f6, 0x0114, 0x0120, 0x0126, 0x0132,
+ 0x013b, 0x0147, 0x0156, 0x0162, 0x018f, 0x0198, 0x01a7, 0x01b9,
+ 0x01cb, 0x01dd, 0x01f2, 0x0201, 0x0210, 0x0249, 0x0255, 0x0264,
+ 0x026d, 0x027c, 0x0285, 0x0294, 0x02a3, 0x02ac, 0x02b2, 0x02be,
+ 0x02ca, 0x02d6, 0x02d6, 0x02e2, 0x02eb, 0x0306, 0x0315, 0x032a,
+ 0x0339, 0x035a, 0x0369, 0x0372, 0x0378, 0x0384, 0x0390, 0x0399,
+ // Entry 40 - 7F
+ 0x03a8, 0x03b1, 0x03c0, 0x03cc, 0x03d2, 0x03de, 0x03e7, 0x03f0,
+ 0x03f9, 0x041d, 0x043b, 0x0444, 0x0450, 0x0459, 0x046c, 0x047f,
+ 0x0488, 0x0491, 0x049d, 0x04a9, 0x04a9, 0x04b5, 0x04c1, 0x04d3,
+ 0x04dc, 0x04fa, 0x0506, 0x0518, 0x0518, 0x0521, 0x052d, 0x0533,
+ 0x0542, 0x0542, 0x054b, 0x055d, 0x056c, 0x057b, 0x0596, 0x05a2,
+ 0x05ab, 0x05b7, 0x05c3, 0x05cf, 0x05de, 0x05f0, 0x05f0, 0x0602,
+ 0x060e, 0x0629, 0x0644, 0x065c, 0x0668, 0x067a, 0x0695, 0x069e,
+ 0x06b3, 0x06c2, 0x06d1, 0x06dd, 0x06ef, 0x0701, 0x0713, 0x0722,
+ // Entry 80 - BF
+ 0x072e, 0x073a, 0x0743, 0x074c, 0x075e, 0x0767, 0x077c, 0x0788,
+ 0x07af, 0x07d3, 0x07f7, 0x0800, 0x080f, 0x0818, 0x082d, 0x0839,
+ 0x0842, 0x084b, 0x0857, 0x0863, 0x086f, 0x087b, 0x0887, 0x088d,
+ 0x0896, 0x08a2, 0x08ae, 0x08b7, 0x08c9, 0x08db, 0x08e7, 0x08f3,
+ 0x0911, 0x0917, 0x0930, 0x093c, 0x0942, 0x0951, 0x095d, 0x0969,
+} // Size: 360 bytes
+
+var zuScriptStr string = "" + // Size: 371 bytes
+ "i-Arabi-Armeniani-Bengalii-Bopomofoi-Braillei-Cyrillici-Devanagarii-Ethi" +
+ "opici-Georgiani-Greeki-Gujaratii-Gurmukhii-Hanguli-Hani-Simplified Hani-" +
+ "Traditional Hani-Hebrewi-Hiraganai-Japanesei-Katakanai-Khmeri-Kannadai-K" +
+ "oreani-Laoi-Latini-Malayami-Mongoliani-Myanmari-Oriyai-Sinhalai-Tamili-T" +
+ "elegui-Thaanai-Thaii-Tibetanamasimbuliokungabhaliweejwayelekileiskripthi" +
+ " esingaziwa"
+
+var zuScriptIdx = []uint16{ // 168 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0023, 0x0023,
+ 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x0036, 0x0036, 0x0042, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x004c, 0x004c, 0x0056, 0x0056,
+ 0x0056, 0x0056, 0x005d, 0x0067, 0x0071, 0x0079, 0x007e, 0x007e,
+ 0x008e, 0x009f, 0x009f, 0x00a7, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
+ 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00bb, 0x00c5,
+ // Entry 40 - 7F
+ 0x00c5, 0x00cc, 0x00cc, 0x00d5, 0x00dd, 0x00dd, 0x00dd, 0x00dd,
+ 0x00e2, 0x00e2, 0x00e2, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9,
+ 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9,
+ 0x00e9, 0x00e9, 0x00e9, 0x00f2, 0x00f2, 0x00fd, 0x00fd, 0x00fd,
+ 0x00fd, 0x00fd, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106,
+ 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d,
+ 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d,
+ 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d,
+ // Entry 80 - BF
+ 0x010d, 0x010d, 0x010d, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116,
+ 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x011d,
+ 0x011d, 0x011d, 0x0125, 0x0125, 0x0125, 0x0125, 0x012d, 0x0133,
+ 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c,
+ 0x013c, 0x013c, 0x013c, 0x013c, 0x0146, 0x0153, 0x015f, 0x0173,
+} // Size: 360 bytes
+
+// Total size for script: 230112 bytes (230 KB)
+
+// Number of keys: 290
+var (
+ regionIndex = tagIndex{
+ "ACADAEAFAGAIALAMANAOAQARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBV" +
+ "BWBYBZCACCCDCFCGCHCICKCLCMCNCOCPCRCUCVCWCXCYCZDEDGDJDKDMDODZEAECEEEG" +
+ "EHERESETEUFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHR" +
+ "HTHUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLR" +
+ "LSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNI" +
+ "NLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQAQORERORSRURWSASBSCSDSESG" +
+ "SHSISJSKSLSMSNSOSRSSSTSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUG" +
+ "UMUSUYUZVAVCVEVGVIVNVUWFWSXKYEYTZAZMZWZZ",
+ "001002003005009011013014015017018019021029030034035039053054057061142143" +
+ "145150151154155419",
+ "",
+ }
+)
+
+var regionHeaders = [218]header{
+ { // af
+ afRegionStr,
+ afRegionIdx,
+ },
+ { // agq
+ "ÀndolàYùnaetɛ Alab ɛmelɛ̀Àfɨ̀ganìsɨ̀tânÀntigwà à BàbudàÀŋgwilàÀabɛnìaÀmɛ" +
+ "nyìaNedàlân AntàeÀŋgolàÀdzɛ̀ntinàÀmɛlekan SamwàUsɨtɨ̀làÙsɨ̀tɛ̀lɛlìaÀ" +
+ "lubàÀzɨbɛ̀dzânBosɨnyìa à Hɛ̀zɛ̀gòvinàBàbadòsBaŋgɨ̀làdɛ̂BɛɛdzwùmBùkin" +
+ "à FasòBùugɛlìaBàlaenBùlundìBɛ̀nɨ̂ŋBɛ̀mudàBɨ̀lunèBòlevàBɨ̀làzîiBàham" +
+ "àsMbutànBòtɨ̀swǎnàBɛlàlûsBɛ̀lezɨ̀KanadàDɛ̀mùkàlatì Lèkpubèlè è Kuŋg" +
+ "ùSɛnta Afɨlekan LèkpobèlèKuŋgùSuezàlânKu Dɨ̀vûaChwɨla ŋ̀ KûʔChilèKà" +
+ "màlûŋChaenàKòlombìaKòsɨ̀tà LekàKuuwbàChwɨla ŋ̀ Kɛ̀b Vɛ̂ɛSaekpùlùChɛ̂" +
+ " LèkpubèlèDzamanèDzìbuwtìDɛnɨmàDòmenekàDòmenekà LèkpubèlèÀadzɛlìaEkw" +
+ "adòÈsɨ̀tonyìaEdzìÈletɨ̀làSɨ̀kpɛ̂nÈtyǒpìaFɨnlànFidziChwɨlà fɨ Fakɨlàn" +
+ "MaekòlòneshìaFàlâŋnsìGàbûnYùnaetɛ Kiŋdɔ̀mGɨ̀lɛnadàDzɔɔdzìaGàyanà è F" +
+ "àlâŋnsìGaanàDzibɨ̀latàGɨ̀lenlânGambìaGinèGwadalukpɛ̀Èkwɛ̀tolia Ginè" +
+ "Gɨ̀lêsGwàtɨ̀malàGwamGinè BìsawùGùyanàHɔndulàsKòwɛshìaHǎetìHɔŋgàlèÈnd" +
+ "òneshìaAelɨ̀lânEzɨ̀lɛ̂EndìaDɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì " +
+ "kòÈlâkɨ̀ÈlânAesɨ̀lânEtalèDzàmɛkàDzodànDzàkpânKɨnyàKìdzisɨ̀tânKàmbodì" +
+ "aKèlèbatiKomolòsSɛ̀n Kî à NevìKùulîa, EkùwKùulîa, EmàmKùwɛ̂Chwɨlà ŋ̀" +
+ " KaemànKàzasɨ̀tânLàwosLɛbanèSɛ̀n LushìaLetɨnshɨ̀nSɨ̀le LaŋkàLàebɛlìa" +
+ "Lɛ̀sotùLètwǎnyìaLuzɨmbùʔLàtɨvaLebìaMòlokòMùnakuMòodovàMàdàgasɨkàChwɨ" +
+ "là fɨ MashàMɨ̀sɨ̀donyìaMalèMǐanmàMùŋgolìaChwɨlà m̀ Màlǐanà mɨ̀ Ekùw " +
+ "mòMàtìnekìMùlètanyìaMùŋtselàMaatàMùleshwɨ̀sMàdivèMàlawìMɛkɨzikùMàlɛs" +
+ "hìaMùzàmbîNàmibìaKàlèdonyìa È fūghūNaedzàChwɨlà fɨ NufòʔGɨ̀anyɨNikàl" +
+ "agwàNedàlânNoowɛ̂ɛNɛkpâaNàwulùNiyuZìlân È fūghūUmànKpanàmaKpɛlûKpole" +
+ "neshìa è FàlâŋnsìKpakpua Ginè È fūghūFelèkpîKpakìsɨ̀tânKpulànSɛ̀n Kp" +
+ "iyɛ̀ à MikelɔŋKpitɨ̀kalèKpǒto LekoAdzɨmā kɨ ŋgùŋ kɨ Palɛsɨtɨnyia à k" +
+ "ɨ Gazà kòKputuwgàKpàlawùKpalàgwɛ̂KatàLèyunyɔ̀ŋLùmanyìaLoshìaLùwandà" +
+ "Sawudi AlabiChwɨlà fɨ Solomwɨ̀nSɛchɛ̀lɛ̀sSùdânSuedɨ̀nSiŋgàkpôoSɛ̀n È" +
+ "lenàSɨ̀lòvɨnyìaSɨ̀lòvɨkɨ̀aSilìa lûŋSàn MàlenùSɛ̀nɛ̀gâaSòmalìaSulènam" +
+ "èSawo Tɔ̀me à Kpèlènsikpɛ̀EsàvadòSilîaShǔazìlânChwɨla n Tɨtê à Kaek" +
+ "ùsChâTugùTaelànTàdzikìsɨ̀tânTuwkelawùÊs TaemòTekɨmènèsɨ̀tânTùneshìa" +
+ "TuŋgàTeekìTèlenedà à TòbagùTuwvalùwTaewànTàanzanyìaYùkɛ̀lɛ̂YùgandàUS" +
+ "AYulùgwɛ̂Yùzɨ̀bɛkìsɨ̀tânVatikàn Sɨ̀tɛ̂Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tēVɛ" +
+ "̀nɛ̀zǔɛɛlàChwɨlà m̀ Vidzinyìa m̀ Bɨ̀letì mòU. S. Chwɨlà fɨ MbuʔmbuV" +
+ "ìyɛnàmVànǔatùwWales à FùwtuwnàSàmowàYɛmɛ̀nMàyotìAfɨlekà ghɨ Emàm gh" +
+ "òZambìaZìmbagbɛ̀",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x0020, 0x0035, 0x004a, 0x0054, 0x005e,
+ 0x0068, 0x0078, 0x0081, 0x0081, 0x008f, 0x00a0, 0x00ac, 0x00bf,
+ 0x00c6, 0x00c6, 0x00d5, 0x00f5, 0x00fe, 0x010f, 0x011a, 0x0128,
+ 0x0133, 0x013a, 0x0143, 0x014f, 0x014f, 0x0159, 0x0163, 0x016b,
+ 0x016b, 0x0177, 0x0180, 0x0187, 0x0187, 0x0196, 0x01a0, 0x01ac,
+ 0x01b3, 0x01b3, 0x01db, 0x01f8, 0x01ff, 0x0209, 0x0215, 0x0227,
+ 0x022d, 0x0238, 0x023f, 0x0249, 0x0249, 0x025a, 0x0261, 0x027c,
+ 0x027c, 0x027c, 0x0286, 0x0299, 0x02a1, 0x02a1, 0x02ab, 0x02b4,
+ // Entry 40 - 7F
+ 0x02be, 0x02d5, 0x02e0, 0x02e0, 0x02e7, 0x02f5, 0x02fa, 0x02fa,
+ 0x0306, 0x0312, 0x031c, 0x031c, 0x0324, 0x0329, 0x033f, 0x034f,
+ 0x034f, 0x035b, 0x0362, 0x0376, 0x0383, 0x038e, 0x03a6, 0x03a6,
+ 0x03ac, 0x03b9, 0x03c5, 0x03cc, 0x03d1, 0x03de, 0x03f1, 0x03fa,
+ 0x03fa, 0x0408, 0x040c, 0x041a, 0x0422, 0x0422, 0x0422, 0x042c,
+ 0x0437, 0x043e, 0x0449, 0x0449, 0x0456, 0x0461, 0x046c, 0x046c,
+ 0x0472, 0x04aa, 0x04b4, 0x04ba, 0x04c5, 0x04cb, 0x04cb, 0x04d5,
+ 0x04dc, 0x04e5, 0x04ec, 0x04fb, 0x0505, 0x050f, 0x0517, 0x052a,
+ // Entry 80 - BF
+ 0x0539, 0x0548, 0x0550, 0x0565, 0x0573, 0x0579, 0x0581, 0x058f,
+ 0x059c, 0x05ab, 0x05b6, 0x05c0, 0x05cc, 0x05d7, 0x05df, 0x05e5,
+ 0x05ed, 0x05f4, 0x05fd, 0x05fd, 0x05fd, 0x060b, 0x061e, 0x062f,
+ 0x0634, 0x063c, 0x0647, 0x0647, 0x066e, 0x0679, 0x0686, 0x0691,
+ 0x0697, 0x06a4, 0x06ac, 0x06b4, 0x06bf, 0x06ca, 0x06d4, 0x06dd,
+ 0x06f5, 0x06fc, 0x0710, 0x071a, 0x0725, 0x072e, 0x0738, 0x0740,
+ 0x0748, 0x074c, 0x075e, 0x0763, 0x076b, 0x0772, 0x078e, 0x07a6,
+ 0x07af, 0x07be, 0x07c5, 0x07e1, 0x07ee, 0x07f9, 0x0832, 0x083b,
+ // Entry C0 - FF
+ 0x0844, 0x0850, 0x0855, 0x0855, 0x0862, 0x086c, 0x086c, 0x0873,
+ 0x087c, 0x0888, 0x08a0, 0x08af, 0x08b6, 0x08bf, 0x08cb, 0x08d9,
+ 0x08e9, 0x08e9, 0x08fa, 0x0906, 0x0913, 0x0921, 0x092a, 0x0934,
+ 0x0934, 0x0954, 0x095d, 0x095d, 0x0963, 0x096f, 0x096f, 0x098a,
+ 0x098e, 0x098e, 0x0993, 0x099a, 0x09ac, 0x09b6, 0x09c0, 0x09d4,
+ 0x09de, 0x09e5, 0x09eb, 0x0a01, 0x0a0a, 0x0a11, 0x0a1d, 0x0a2a,
+ 0x0a33, 0x0a33, 0x0a36, 0x0a41, 0x0a58, 0x0a6b, 0x0a8f, 0x0aa3,
+ 0x0acd, 0x0ae8, 0x0af2, 0x0afd, 0x0b10, 0x0b18, 0x0b18, 0x0b21,
+ // Entry 100 - 13F
+ 0x0b29, 0x0b42, 0x0b49, 0x0b55,
+ },
+ },
+ { // ak
+ "AndoraUnited Arab EmiratesAfganistanAntigua ne BaabudaAnguilaAlbeniaAame" +
+ "niaNɛdɛland AntelezAngolaAgyɛntinaAmɛrika SamoaƆstriaƆstreliaArubaAz" +
+ "ebaegyanBosnia ne HɛzegovinaBaabadosBangladɛhyeBɛlgyiumBɔkina FasoBɔ" +
+ "lgeriaBarenBurundiBɛninBɛmudaBrunaeBoliviaBrazilBahamaButanBɔtswanaB" +
+ "ɛlarusBelizKanadaKongo (Zair)Afrika Finimfin ManKongoSwetzalandLa C" +
+ "ôte d’IvoireKook NsupɔwKyiliKamɛrunKyaenaKolombiaKɔsta RikaKubaKepv" +
+ "ɛdfo IslandsSaeprɔsKyɛk KurokɛseGyaamanGyibutiDɛnmakDɔmenekaDɔmenek" +
+ "a KurokɛseƆlgyeriaIkuwadɔƐstoniaNisrimƐritreaSpainIthiopiaFinlandFig" +
+ "yiFɔlkman AelandMaekronehyiaFrɛnkyemanGabɔnAhendiman NkabomGrenadaGy" +
+ "ɔgyeaFrɛnkye GayanaGaanaGyebraltaGreenmanGambiaGiniGuwadelupGini Ik" +
+ "uwetaGreekmanGuwatemalaGuamGini BisawGayanaHɔndurasKrowehyiaHeitiHan" +
+ "gariIndɔnehyiaAerelandIsraelIndiaBritenfo Hɔn Man Wɔ India Po No MuI" +
+ "rakIranAeslandItaliGyamekaGyɔdanGyapanKɛnyaKɛɛgestanKambodiaKiribati" +
+ "KɔmɔrɔsSaint Kitts ne NɛvesEtifi KoriaAnaafo KoriaKuweteKemanfo Isla" +
+ "ndsKazakstanLaosLɛbanɔnSaint LuciaLektenstaenSri LankaLaeberiaLɛsutu" +
+ "LituweniaLaksembɛgLatviaLibyaMorokoMɔnakoMɔldovaMadagaskaMarshall Is" +
+ "landsMasedoniaMaliMiyanmaMɔngoliaNorthern Mariana IslandsMatinikMɔre" +
+ "teniaMantseratMɔltaMɔrehyeɔsMaldivesMalawiMɛksikoMalehyiaMozambikNam" +
+ "ibiaKaledonia FoforoNigyɛNɔfolk AelandNaegyeriaNekaraguwaNɛdɛlandNɔɔ" +
+ "weNɛpɔlNaworuNiyuZiland FoforoOmanPanamaPeruFrɛnkye PɔlenehyiaPapua " +
+ "Guinea FoforoPhilippinesPakistanPolandSaint Pierre ne MiquelonPitcai" +
+ "rnPuɛto RikoPalestaen West Bank ne GazaPɔtugalPalauParaguayKataReyun" +
+ "iɔnRomeniaRɔhyeaRwandaSaudi ArabiaSolomon IslandsSeyhyɛlSudanSwedenS" +
+ "ingapɔSaint HelenaSloviniaSlovakiaSierra LeoneSan MarinoSenegalSomal" +
+ "iaSurinameSão Tomé and PríncipeƐl SalvadɔSiriaSwazilandTurks ne Caic" +
+ "os IslandsKyadTogoTaelandTajikistanTokelauTimɔ BokaTɛkmɛnistanTunihy" +
+ "iaTongaTɛɛkiTrinidad ne TobagoTuvaluTaiwanTanzaniaUkrenUgandaAmɛrika" +
+ "YurugwaeUzbɛkistanVatican ManSaint Vincent ne GrenadinesVenezuelaBri" +
+ "tainfo Virgin IslandsAmɛrika Virgin IslandsViɛtnamVanuatuWallis ne F" +
+ "utunaSamoaYɛmenMayɔteAfrika AnaafoZambiaZembabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x001a, 0x0024, 0x0036, 0x003d, 0x0044,
+ 0x004b, 0x005d, 0x0063, 0x0063, 0x006d, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x009a, 0x00af, 0x00b7, 0x00c3, 0x00cc, 0x00d8,
+ 0x00e1, 0x00e6, 0x00ed, 0x00f3, 0x00f3, 0x00fa, 0x0100, 0x0107,
+ 0x0107, 0x010d, 0x0113, 0x0118, 0x0118, 0x0121, 0x0129, 0x012e,
+ 0x0134, 0x0134, 0x0140, 0x0153, 0x0158, 0x0162, 0x0175, 0x0181,
+ 0x0186, 0x018e, 0x0194, 0x019c, 0x019c, 0x01a7, 0x01ab, 0x01bc,
+ 0x01bc, 0x01bc, 0x01c4, 0x01d3, 0x01da, 0x01da, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f1, 0x0204, 0x020d, 0x020d, 0x0215, 0x021d, 0x0223, 0x0223,
+ 0x022b, 0x0230, 0x0238, 0x0238, 0x023f, 0x0244, 0x0253, 0x025f,
+ 0x025f, 0x026a, 0x0270, 0x0280, 0x0287, 0x028f, 0x029e, 0x029e,
+ 0x02a3, 0x02ac, 0x02b4, 0x02ba, 0x02be, 0x02c7, 0x02d3, 0x02db,
+ 0x02db, 0x02e5, 0x02e9, 0x02f3, 0x02f9, 0x02f9, 0x02f9, 0x0302,
+ 0x030b, 0x0310, 0x0317, 0x0317, 0x0322, 0x032a, 0x0330, 0x0330,
+ 0x0335, 0x0359, 0x035d, 0x0361, 0x0368, 0x036d, 0x036d, 0x0374,
+ 0x037b, 0x0381, 0x0387, 0x0392, 0x039a, 0x03a2, 0x03ac, 0x03c1,
+ // Entry 80 - BF
+ 0x03cc, 0x03d8, 0x03de, 0x03ed, 0x03f6, 0x03fa, 0x0403, 0x040e,
+ 0x0419, 0x0422, 0x042a, 0x0431, 0x043a, 0x0444, 0x044a, 0x044f,
+ 0x0455, 0x045c, 0x0464, 0x0464, 0x0464, 0x046d, 0x047d, 0x0486,
+ 0x048a, 0x0491, 0x049a, 0x049a, 0x04b2, 0x04b9, 0x04c3, 0x04cc,
+ 0x04d2, 0x04dd, 0x04e5, 0x04eb, 0x04f3, 0x04fb, 0x0503, 0x050a,
+ 0x051a, 0x0520, 0x052e, 0x0537, 0x0541, 0x054b, 0x0552, 0x0559,
+ 0x055f, 0x0563, 0x0570, 0x0574, 0x057a, 0x057e, 0x0592, 0x05a5,
+ 0x05b0, 0x05b8, 0x05be, 0x05d6, 0x05de, 0x05e9, 0x0604, 0x060c,
+ // Entry C0 - FF
+ 0x0611, 0x0619, 0x061d, 0x061d, 0x0626, 0x062d, 0x062d, 0x0634,
+ 0x063a, 0x0646, 0x0655, 0x065d, 0x0662, 0x0668, 0x0670, 0x067c,
+ 0x0684, 0x0684, 0x068c, 0x0698, 0x06a2, 0x06a9, 0x06b0, 0x06b8,
+ 0x06b8, 0x06d0, 0x06dc, 0x06dc, 0x06e1, 0x06ea, 0x06ea, 0x0701,
+ 0x0705, 0x0705, 0x0709, 0x0710, 0x071a, 0x0721, 0x072b, 0x0738,
+ 0x0740, 0x0745, 0x074c, 0x075e, 0x0764, 0x076a, 0x0772, 0x0777,
+ 0x077d, 0x077d, 0x0785, 0x078d, 0x0798, 0x07a3, 0x07be, 0x07c7,
+ 0x07df, 0x07f6, 0x07fe, 0x0805, 0x0815, 0x081a, 0x081a, 0x0820,
+ // Entry 100 - 13F
+ 0x0827, 0x0834, 0x083a, 0x0842,
+ },
+ },
+ { // am
+ amRegionStr,
+ amRegionIdx,
+ },
+ { // ar
+ arRegionStr,
+ arRegionIdx,
+ },
+ {}, // ar-EG
+ { // as
+ "এন্টাৰ্টিকাব্ৰাজিলবভেট দ্বীপচীনজাৰ্মানিফ্ৰান্সসংযুক্ত ৰাজ্যদক্ষিণ জৰ্জিয" +
+ "়া আৰু দক্ষিণ চেণ্ডৱিচ্\u200c দ্বীপহাৰ্ড দ্বীপ আৰু মেক্\u200cডোনাল" +
+ "্ড দ্বীপভাৰতব্ৰিটিশ্ব ইণ্ডিয়ান মহাসাগৰৰ অঞ্চলইটালিজাপানৰুচদক্ষিণ " +
+ "ফ্ৰান্সৰ অঞ্চলযুক্তৰাষ্ট্ৰঅজ্ঞাত বা অবৈধ অঞ্চল",
+ []uint16{ // 261 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
+ 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
+ 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021,
+ 0x0021, 0x0036, 0x0036, 0x0036, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,
+ 0x0052, 0x0052, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
+ 0x005b, 0x005b, 0x005b, 0x005b, 0x0073, 0x0073, 0x0073, 0x0073,
+ // Entry 40 - 7F
+ 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073,
+ 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073,
+ 0x0073, 0x0088, 0x0088, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
+ 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
+ 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0182, 0x0182,
+ 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182,
+ 0x018e, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01fd, 0x01fd, 0x01fd,
+ 0x01fd, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ // Entry 80 - BF
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c,
+ // Entry C0 - FF
+ 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, 0x0215,
+ 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
+ 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
+ 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215,
+ 0x0215, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
+ 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250,
+ 0x0250, 0x0250, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274,
+ 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274,
+ // Entry 100 - 13F
+ 0x0274, 0x0274, 0x0274, 0x0274, 0x02aa,
+ },
+ },
+ { // asa
+ "AndoraFalme dha KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArme" +
+ "niaAntili za UholandhiAngolaAjentinaThamoa ya MarekaniAuthtriaAuthtr" +
+ "aliaArubaAdhabajaniBothnia na HedhegovinaBabadothiBangladeshiUbelgij" +
+ "iBukinafathoBulgariaBahareniBurundiBeniniBermudaBruneiBraziliBahamaB" +
+ "utaniBotthwanaBelaruthiBelidheKanadaJamhuri ya Kidemokrathia ya Kong" +
+ "oJamhuri ya Afrika ya KatiKongoUthwithiKodivaaVithiwa vya CookChileK" +
+ "ameruniChinaKolombiaKothtarikaKubaKepuvedeKuprothiJamhuri ya ChekiUj" +
+ "erumaniJibutiDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEthtonia" +
+ "MithriEritreaHithpaniaUhabeshiUfiniFijiVithiwa vya FalklandMikroneth" +
+ "iaUfaranthaGaboniUingeredhaGrenadaJojiaGwiyana ya UfaranthaGhanaJibr" +
+ "altaGrinlandiGambiaGineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebis" +
+ "auGuyanaHondurathiKorathiaHaitiHungariaIndonethiaAyalandiIthraeliInd" +
+ "iaIeneo la Uingeredha katika Bahari HindiIrakiUajemiAithlandiItaliaJ" +
+ "amaikaYordaniJapaniKenyaKirigizithtaniKambodiaKiribatiKomoroThantaki" +
+ "tdhi na NevithKorea KathkaziniKorea KuthiniKuwaitiVithiwa vya Kayman" +
+ "KazakithtaniLaothiLebanoniThantaluthiaLishenteniThirilankaLiberiaLet" +
+ "hotoLitwaniaLathembagiLativiaLibyaMorokoMonakoMoldovaBukiniVithiwa v" +
+ "ya MarshalMathedoniaMaliMyamaMongoliaVithiwa vya Mariana vya Kathkaz" +
+ "iniMartinikiMoritaniaMonttherratiMaltaMorithiModivuMalawiMekthikoMal" +
+ "ethiaMthumbijiNamibiaNyukaledoniaNijeriKithiwa cha NorfokNijeriaNika" +
+ "ragwaUholandhiNorweNepaliNauruNiueNyudhilandiOmaniPanamaPeruPolinesi" +
+ "a ya UfaranthaPapuaFilipinoPakithtaniPolandiThantapieri na MikeloniP" +
+ "itkairniPwetorikoPalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUr" +
+ "uthiRwandaThaudiVithiwa vya TholomonShelisheliThudaniUthwidiThingapo" +
+ "oThantahelenaThloveniaTholvakiaThiera LeoniThamarinoThenegaliThomali" +
+ "aThurinamuThao Tome na PrincipeElsavadoThiriaUthwadhiVithiwa vya Tur" +
+ "ki na KaikoChadiTogoTailandiTajikithtaniTokelauTimori ya MasharikiTu" +
+ "rukimenithtaniTunithiaTongaUturukiTrinidad na TobagoTuvaluTaiwaniTad" +
+ "haniaUgandaMarekaniUrugwaiUdhibekithtaniVatikaniThantavithenti na Gr" +
+ "enadiniVenezuelaVithiwa vya Virgin vya UingeredhaVithiwa vya Virgin " +
+ "vya MarekaniVietinamuVanuatuWalith na FutunaThamoaYemeniMayotteAfrik" +
+ "a KuthiniDhambiaDhimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0044,
+ 0x004b, 0x005e, 0x0064, 0x0064, 0x006c, 0x007e, 0x0086, 0x0090,
+ 0x0095, 0x0095, 0x009f, 0x00b5, 0x00be, 0x00c9, 0x00d1, 0x00dc,
+ 0x00e4, 0x00ec, 0x00f3, 0x00f9, 0x00f9, 0x0100, 0x0106, 0x0106,
+ 0x0106, 0x010d, 0x0113, 0x0119, 0x0119, 0x0122, 0x012b, 0x0132,
+ 0x0138, 0x0138, 0x0159, 0x0172, 0x0177, 0x017f, 0x0186, 0x0196,
+ 0x019b, 0x01a3, 0x01a8, 0x01b0, 0x01b0, 0x01ba, 0x01be, 0x01c6,
+ 0x01c6, 0x01c6, 0x01ce, 0x01de, 0x01e7, 0x01e7, 0x01ed, 0x01f4,
+ // Entry 40 - 7F
+ 0x01fc, 0x020f, 0x0216, 0x0216, 0x021c, 0x0224, 0x022a, 0x022a,
+ 0x0231, 0x023a, 0x0242, 0x0242, 0x0247, 0x024b, 0x025f, 0x026a,
+ 0x026a, 0x0273, 0x0279, 0x0283, 0x028a, 0x028f, 0x02a3, 0x02a3,
+ 0x02a8, 0x02b0, 0x02b9, 0x02bf, 0x02c3, 0x02cc, 0x02d5, 0x02dc,
+ 0x02dc, 0x02e5, 0x02e9, 0x02f2, 0x02f8, 0x02f8, 0x02f8, 0x0302,
+ 0x030a, 0x030f, 0x0317, 0x0317, 0x0321, 0x0329, 0x0331, 0x0331,
+ 0x0336, 0x035d, 0x0362, 0x0368, 0x0371, 0x0377, 0x0377, 0x037e,
+ 0x0385, 0x038b, 0x0390, 0x039e, 0x03a6, 0x03ae, 0x03b4, 0x03ca,
+ // Entry 80 - BF
+ 0x03da, 0x03e7, 0x03ee, 0x0400, 0x040c, 0x0412, 0x041a, 0x0426,
+ 0x0430, 0x043a, 0x0441, 0x0448, 0x0450, 0x045a, 0x0461, 0x0466,
+ 0x046c, 0x0472, 0x0479, 0x0479, 0x0479, 0x047f, 0x0492, 0x049c,
+ 0x04a0, 0x04a5, 0x04ad, 0x04ad, 0x04cf, 0x04d8, 0x04e1, 0x04ed,
+ 0x04f2, 0x04f9, 0x04ff, 0x0505, 0x050d, 0x0515, 0x051e, 0x0525,
+ 0x0531, 0x0537, 0x0549, 0x0550, 0x0559, 0x0562, 0x0567, 0x056d,
+ 0x0572, 0x0576, 0x0581, 0x0586, 0x058c, 0x0590, 0x05a6, 0x05ab,
+ 0x05b3, 0x05bd, 0x05c4, 0x05db, 0x05e4, 0x05ed, 0x05f6, 0x05fb,
+ // Entry C0 - FF
+ 0x0600, 0x0608, 0x060e, 0x060e, 0x0617, 0x061e, 0x061e, 0x0624,
+ 0x062a, 0x0630, 0x0644, 0x064e, 0x0655, 0x065c, 0x0665, 0x0671,
+ 0x067a, 0x067a, 0x0683, 0x068f, 0x0698, 0x06a1, 0x06a9, 0x06b2,
+ 0x06b2, 0x06c7, 0x06cf, 0x06cf, 0x06d5, 0x06dd, 0x06dd, 0x06f7,
+ 0x06fc, 0x06fc, 0x0700, 0x0708, 0x0714, 0x071b, 0x072e, 0x073e,
+ 0x0746, 0x074b, 0x0752, 0x0764, 0x076a, 0x0771, 0x0779, 0x0779,
+ 0x077f, 0x077f, 0x0787, 0x078e, 0x079c, 0x07a4, 0x07bf, 0x07c8,
+ 0x07e9, 0x0808, 0x0811, 0x0818, 0x0828, 0x082e, 0x082e, 0x0834,
+ // Entry 100 - 13F
+ 0x083b, 0x0849, 0x0850, 0x0859,
+ },
+ },
+ { // ast
+ "Islla AscensiónAndorraEmiratos Árabes XuníosAfganistánAntigua y BarbudaA" +
+ "nguilaAlbaniaArmeniaAngolaL’AntártidaArxentinaSamoa AmericanaAustria" +
+ "AustraliaArubaIslles AlandAzerbaixánBosnia y HerzegovinaBarbadosBang" +
+ "ladexBélxicaBurkina FasuBulgariaBaḥréinBurundiBenínSan BartoloméLes " +
+ "BermudesBrunéiBoliviaCaribe neerlandésBrasilLes BahamesButánIslla Bo" +
+ "uvetBotsuanaBielorrusiaBelizeCanadáIslles Cocos (Keeling)Congu - Kin" +
+ "xasaRepública CentroafricanaCongu - BrazzavilleSuizaCosta de MarfilI" +
+ "slles CookChileCamerúnChinaColombiaIslla ClippertonCosta RicaCubaCab" +
+ "u VerdeCuraçaoIslla ChristmasXipreChequiaAlemañaDiego GarciaXibutiDi" +
+ "namarcaDominicaRepública DominicanaArxeliaCeuta y MelillaEcuadorEsto" +
+ "niaExiptuSáḥara OccidentalEritreaEspañaEtiopíaXunión EuropeaFinlandi" +
+ "aIslles FixiFalkland IslandsMicronesiaIslles FeroeFranciaGabónReinu " +
+ "XuníuGranadaXeorxaGuyana FrancesaGuernseyGhanaXibraltarGroenlandiaGa" +
+ "mbiaGuineaGuadalupeGuinea EcuatorialGreciaIslles Xeorxa del Sur y Sa" +
+ "ndwich del SurGuatemalaGuamGuinea-BisáuGuyanaARE China de Ḥong KongI" +
+ "slles Heard y McDonaldHonduresCroaciaHaitíHungríaIslles CanariesIndo" +
+ "nesiaIrlandaIsraelIslla de ManIndiaTerritoriu Británicu del Océanu Í" +
+ "ndicuIraqIránIslandiaItaliaJerseyXamaicaXordaniaXapónKeniaKirguistán" +
+ "CamboyaKiribatiLes ComoresSaint Kitts y NevisCorea del NorteCorea de" +
+ "l SurKuwaitIslles CaimánKazakstánLaosLíbanuSanta LlucíaLiechtenstein" +
+ "Sri LankaLiberiaLesothuLituaniaLuxemburguLetoniaLibiaMarruecosMónacu" +
+ "MoldaviaMontenegruSaint MartinMadagascarIslles MarshallMacedoniaMalí" +
+ "Myanmar (Birmania)MongoliaARE China de MacáuIslles Marianes del Nort" +
+ "eLa MartinicaMauritaniaMontserratMaltaMauriciuLes MaldivesMalauiMéxi" +
+ "cuMalasiaMozambiqueNamibiaNueva CaledoniaEl NíxerIslla NorfolkNixeri" +
+ "aNicaraguaPaíses BaxosNoruegaNepalNauruNiueNueva ZelandaOmánPanamáPe" +
+ "rúPolinesia FrancesaPapúa Nueva GuineaFilipinesPaquistánPoloniaSaint" +
+ " Pierre y MiquelonIslles PitcairnPuertu RicuTerritorios PalestinosPo" +
+ "rtugalPaláuParaguáiQatarOceanía esteriorReuniónRumaníaSerbiaRusiaRua" +
+ "ndaArabia SauditaIslles SalomónLes SeixelesSudánSueciaSingapurSanta " +
+ "HelenaEsloveniaSvalbard ya Islla Jan MayenEslovaquiaSierra LleonaSan" +
+ " MarínSenegalSomaliaSurinamSudán del SurSantu Tomé y PríncipeEl Salv" +
+ "adorSint MaartenSiriaSuazilandiaTristán da CunhaIslles Turques y Cai" +
+ "cosChadTierres Australes FrancesesToguTailandiaTaxiquistánTokeláuTim" +
+ "or OrientalTurkmenistánTuniciaTongaTurquíaTrinidá y TobaguTuvaluTaiw" +
+ "ánTanzaniaUcraínaUgandaIslles Perifériques Menores de los EE.XX.Est" +
+ "aos XuníosUruguáiUzbequistánCiudá del VaticanuSan Vicente y Granadin" +
+ "esVenezuelaIslles Vírxenes BritániquesIslles Vírxenes AmericanesViet" +
+ "namVanuatuWallis y FutunaSamoaKosovuYemenMayotteSudáfricaZambiaZimba" +
+ "bueRexón desconocidaMunduÁfricaNorteaméricaAmérica del SurOceaníaÁfr" +
+ "ica OccidentalAmérica CentralÁfrica OrientalÁfrica del NorteÁfrica C" +
+ "entralÁfrica del SurAméricaAmérica del NorteCaribeAsia OrientalAsia " +
+ "del SurSureste AsiáticuEuropa del SurAustralasiaMelanesiaRexón de Mi" +
+ "cronesiaPolinesiaAsiaAsia CentralAsia OccidentalEuropaEuropa Orienta" +
+ "lEuropa del NorteEuropa OccidentalAmérica Llatina",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0017, 0x002f, 0x003a, 0x004b, 0x0052, 0x0059,
+ 0x0060, 0x0060, 0x0066, 0x0074, 0x007d, 0x008c, 0x0093, 0x009c,
+ 0x00a1, 0x00ad, 0x00b8, 0x00cc, 0x00d4, 0x00dd, 0x00e5, 0x00f1,
+ 0x00f9, 0x0103, 0x010a, 0x0110, 0x011e, 0x012a, 0x0131, 0x0138,
+ 0x014a, 0x0150, 0x015b, 0x0161, 0x016d, 0x0175, 0x0180, 0x0186,
+ 0x018d, 0x01a3, 0x01b2, 0x01cb, 0x01de, 0x01e3, 0x01f2, 0x01fd,
+ 0x0202, 0x020a, 0x020f, 0x0217, 0x0227, 0x0231, 0x0235, 0x023f,
+ 0x0247, 0x0256, 0x025b, 0x0262, 0x026a, 0x0276, 0x027c, 0x0285,
+ // Entry 40 - 7F
+ 0x028d, 0x02a2, 0x02a9, 0x02b8, 0x02bf, 0x02c6, 0x02cc, 0x02e0,
+ 0x02e7, 0x02ee, 0x02f6, 0x0305, 0x030e, 0x0319, 0x0329, 0x0333,
+ 0x033f, 0x0346, 0x034c, 0x0358, 0x035f, 0x0365, 0x0374, 0x037c,
+ 0x0381, 0x038a, 0x0395, 0x039b, 0x03a1, 0x03aa, 0x03bb, 0x03c1,
+ 0x03e9, 0x03f2, 0x03f6, 0x0403, 0x0409, 0x0421, 0x0438, 0x0440,
+ 0x0447, 0x044d, 0x0455, 0x0464, 0x046d, 0x0474, 0x047a, 0x0486,
+ 0x048b, 0x04b4, 0x04b8, 0x04bd, 0x04c5, 0x04cb, 0x04d1, 0x04d8,
+ 0x04e0, 0x04e6, 0x04eb, 0x04f6, 0x04fd, 0x0505, 0x0510, 0x0523,
+ // Entry 80 - BF
+ 0x0532, 0x053f, 0x0545, 0x0553, 0x055d, 0x0561, 0x0568, 0x0575,
+ 0x0582, 0x058b, 0x0592, 0x0599, 0x05a1, 0x05ab, 0x05b2, 0x05b7,
+ 0x05c0, 0x05c7, 0x05cf, 0x05d9, 0x05e5, 0x05ef, 0x05fe, 0x0607,
+ 0x060c, 0x061e, 0x0626, 0x0639, 0x0652, 0x065e, 0x0668, 0x0672,
+ 0x0677, 0x067f, 0x068b, 0x0691, 0x0698, 0x069f, 0x06a9, 0x06b0,
+ 0x06bf, 0x06c8, 0x06d5, 0x06dc, 0x06e5, 0x06f2, 0x06f9, 0x06fe,
+ 0x0703, 0x0707, 0x0714, 0x0719, 0x0720, 0x0725, 0x0737, 0x074a,
+ 0x0753, 0x075d, 0x0764, 0x077b, 0x078a, 0x0795, 0x07ab, 0x07b3,
+ // Entry C0 - FF
+ 0x07b9, 0x07c2, 0x07c7, 0x07d8, 0x07e0, 0x07e8, 0x07ee, 0x07f3,
+ 0x07f9, 0x0807, 0x0816, 0x0822, 0x0828, 0x082e, 0x0836, 0x0842,
+ 0x084b, 0x0866, 0x0870, 0x087d, 0x0887, 0x088e, 0x0895, 0x089c,
+ 0x08aa, 0x08c1, 0x08cc, 0x08d8, 0x08dd, 0x08e8, 0x08f9, 0x0910,
+ 0x0914, 0x092f, 0x0933, 0x093c, 0x0948, 0x0950, 0x095e, 0x096b,
+ 0x0972, 0x0977, 0x097f, 0x0990, 0x0996, 0x099d, 0x09a5, 0x09ad,
+ 0x09b3, 0x09dd, 0x09eb, 0x09f3, 0x09ff, 0x0a12, 0x0a2a, 0x0a33,
+ 0x0a50, 0x0a6b, 0x0a72, 0x0a79, 0x0a88, 0x0a8d, 0x0a93, 0x0a98,
+ // Entry 100 - 13F
+ 0x0a9f, 0x0aa9, 0x0aaf, 0x0ab7, 0x0ac9, 0x0ace, 0x0ad5, 0x0ae2,
+ 0x0af2, 0x0afa, 0x0b0c, 0x0b1c, 0x0b2c, 0x0b3d, 0x0b4c, 0x0b5b,
+ 0x0b63, 0x0b75, 0x0b7b, 0x0b88, 0x0b94, 0x0ba5, 0x0bb3, 0x0bbe,
+ 0x0bc7, 0x0bdb, 0x0be4, 0x0be8, 0x0bf4, 0x0c03, 0x0c09, 0x0c18,
+ 0x0c28, 0x0c39, 0x0c49,
+ },
+ },
+ { // az
+ azRegionStr,
+ azRegionIdx,
+ },
+ { // az-Cyrl
+ "АзәрбајҹанБразилијаЧинАлманијаФрансаҺиндистанИталијаЈапонијаРусијаАмерик" +
+ "а Бирләшмиш Штатлары",
+ []uint16{ // 243 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014,
+ 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014,
+ 0x0014, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
+ 0x0026, 0x0026, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x002c, 0x003c, 0x003c, 0x003c, 0x003c,
+ // Entry 40 - 7F
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
+ 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
+ 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
+ 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
+ 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0068, 0x0068, 0x0068,
+ 0x0068, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ // Entry 80 - BF
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,
+ // Entry C0 - FF
+ 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0084,
+ 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,
+ 0x0084, 0x0084, 0x00b6,
+ },
+ },
+ { // bas
+ "Àŋdɔ̂rÀdnà i Bilɔ̀ŋ bi ArābìàÀfgànìstâŋÀŋtigà ɓɔ BàrbudàÀŋgiyàÀlbanìàÀrm" +
+ "enìàÀŋtîy ǹlɛ̀ndiÀŋgolàÀrgàŋtinàÒstrǐkÒstralìàÀrubàÀzɛ̀rbajàŋBòhnià " +
+ "ƐrzègòvinàBàrbadòBàŋglàdɛ̂sBɛlgyùmBùrkìnà FasòBùlgarìàBàraìnBùrundì" +
+ "Bènɛ̂ŋBɛ̀rmudàBruneiBòlivìàBràsîlBàhamàsBùtânBòdsùanàBèlarùsBèlîsKàn" +
+ "adàKòŋgo ìkɛŋiŊ̀ɛm AfrīkàKòŋgoSùwîsMàŋ mi Njɔ̂kBìòn bi KookKìlîKàmɛ̀" +
+ "rûnKinàKɔ̀lɔmbìàKòstà RikàKubàKabwɛ᷆rKipròJamânJìbutìDànmârkDòmnîkDò" +
+ "mnikàÀlgerìàÈkwàtorìàÈstonìàÈgîptòÈrìtrěàPànyaÈtìopìàFìnlândFijiBìòn" +
+ " bi FalklandMìkrònesìàPùlàsi / Fɛ̀lɛ̀nsi /Gàbɔ̂ŋÀdnà i Lɔ̂ŋGrènadàGè" +
+ "ɔrgìàGùyanà PùlàsiGanàGìlbràtârGrǐnlàndGàmbiàGìnêGwàdèlûpGìne Èkwàt" +
+ "orìàGrǐkyàGwàtèmalàGùâmGìne BìsàôGùyanàƆ̀ŋduràsKròasìàÀitìƆ̀ŋgriìInd" +
+ "ònèsiàÌrlândIsràɛ̂lIndìàBìtèk bi Ŋgisì i Tūyɛ ĪndìàÌrâkÌrâŋÌslandìà" +
+ "ÌtalìàJàmàikàYɔ̀rdaniàKenìàKìrgìzìstàŋKàmbodìàKìrìbatìKɔ̀mɔ̂rNûmpub" +
+ "i Kîts nì NevìsKɔ̀re ì Ŋ̀ɔmbɔkKɔ̀re ì Ŋ̀wɛ̀lmbɔkKòwêtBìòn bi KaymànK" +
+ "àzàkstâŋLàôsLèbanònNûmpubi LusìLigstɛntànSrìlaŋkàLìberìàLesòtòLìtùa" +
+ "nìàLùgsàmbûrLàdviàLibìàMàrokòMònakòMoldavìàMàdàgàskârBìòn bi MarcàlM" +
+ "àsèdonìàMàliMyànmârMòŋgolìàBìòn bi Marìanà ŋ̀ɔmbɔkMàrtìnîkMòrìtanìà" +
+ "Mɔ̀ŋseràtMaltàMòrîsMàldîfMàlàwiMɛ̀gsîkMàlɛ̀sìàMòsàmbîkNàmibìàKàlèdon" +
+ "ìà Yɔ̀ndɔNìjɛ̂rÒn i Nɔrfɔ̂kNìgerìàNìkàragwàǸlɛndiNɔ̀rvegìàNèpâlNerù" +
+ "Nìuɛ̀Sìlând Yɔ̀ndɔÒmânPànàmaPèrûPòlìnesìà PùlàsiGìne ì PàpuFìlìpînPà" +
+ "kìstânPòlàndNûmpubi Petrò nì MikèlônPìdkaìrnPɔ̀rtò RikòPàlɛ̀htinà Hy" +
+ "ɔ̀ŋg nì GazàPɔ̀tɔkìPàlaùPàràgwêKàtârRèunyɔ̂ŋRùmanìàRuslàndRùandàSàu" +
+ "di ÀrabìàBìòn bi SalōmòSèsɛ̂lSùdâŋSwedɛ̀nSìŋgàpûrNûmpubi ƐlēnàSlòvan" +
+ "ìàSlòvakìàSièra Lèɔ̂nNûmpubi MāatìnSènègâlSòmalìàSùrinâmSào Tòme ɓɔ" +
+ " Prɛ̀ŋcipèSàlvàdɔ̂rSirìàSwàzìlândBìòn bi Tûrks nì KalkòsCâdTògoTaylà" +
+ "ndTàjìkìstaŋTòkèlaòTìmɔ̂r lìkòlTùrgmènìstânTùnisìàTɔŋgàTùrkâyTrìnidà" +
+ "d ɓɔ TòbagòTùvàlùTàywânTànzàniàÙkrɛ̌nÙgandàÀdnà i Bilɔ̀ŋ bi AmerkàÙr" +
+ "ùgwêyÙzbèkìstânVàtìkâŋNûmpubi Vɛ̂ŋsâŋ nì grènàdînVènèzùelàBìòn bi k" +
+ "ɔnji bi ŊgisìBìòn bi kɔnji bi U.S.Vìɛ̀dnâmVànùatùWàlîs nì FùtunàSàm" +
+ "oàYèmɛ̂nMàyɔ̂tÀfrǐkà Sɔ̀ZàmbiàZìmbàbwê",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000a, 0x0029, 0x0038, 0x0050, 0x0059, 0x0063,
+ 0x006d, 0x0080, 0x0089, 0x0089, 0x0096, 0x0096, 0x009e, 0x00a9,
+ 0x00b0, 0x00b0, 0x00bf, 0x00d6, 0x00df, 0x00ee, 0x00f7, 0x0107,
+ 0x0112, 0x011a, 0x0123, 0x012d, 0x012d, 0x0138, 0x013e, 0x0148,
+ 0x0148, 0x0150, 0x0159, 0x0160, 0x0160, 0x016b, 0x0174, 0x017b,
+ 0x0183, 0x0183, 0x0193, 0x01a3, 0x01aa, 0x01b1, 0x01c1, 0x01cf,
+ 0x01d5, 0x01e1, 0x01e6, 0x01f4, 0x01f4, 0x0201, 0x0206, 0x0210,
+ 0x0210, 0x0210, 0x0216, 0x0216, 0x021c, 0x021c, 0x0224, 0x022d,
+ // Entry 40 - 7F
+ 0x0235, 0x023e, 0x0248, 0x0248, 0x0255, 0x025f, 0x0268, 0x0268,
+ 0x0273, 0x0279, 0x0284, 0x0284, 0x028d, 0x0291, 0x02a3, 0x02b1,
+ 0x02b1, 0x02cb, 0x02d5, 0x02e5, 0x02ee, 0x02f9, 0x030a, 0x030a,
+ 0x030f, 0x031b, 0x0325, 0x032d, 0x0333, 0x033e, 0x0351, 0x0359,
+ 0x0359, 0x0365, 0x036b, 0x0379, 0x0381, 0x0381, 0x0381, 0x038d,
+ 0x0397, 0x039d, 0x03a8, 0x03a8, 0x03b4, 0x03bc, 0x03c6, 0x03c6,
+ 0x03cd, 0x03f1, 0x03f7, 0x03fe, 0x0409, 0x0412, 0x0412, 0x041c,
+ 0x0428, 0x0428, 0x042f, 0x043f, 0x044a, 0x0455, 0x0460, 0x0479,
+ // Entry 80 - BF
+ 0x048f, 0x04a9, 0x04b0, 0x04c1, 0x04ce, 0x04d4, 0x04dd, 0x04eb,
+ 0x04f7, 0x0502, 0x050c, 0x0514, 0x0520, 0x052c, 0x0534, 0x053b,
+ 0x0543, 0x054b, 0x0555, 0x0555, 0x0555, 0x0563, 0x0574, 0x0581,
+ 0x0586, 0x058f, 0x059b, 0x059b, 0x05ba, 0x05c5, 0x05d2, 0x05df,
+ 0x05e5, 0x05ec, 0x05f4, 0x05fc, 0x0606, 0x0613, 0x061e, 0x0628,
+ 0x063f, 0x0648, 0x0658, 0x0662, 0x066e, 0x0676, 0x0683, 0x068a,
+ 0x068f, 0x0697, 0x06a9, 0x06af, 0x06b7, 0x06bd, 0x06d3, 0x06e1,
+ 0x06eb, 0x06f6, 0x06fe, 0x071b, 0x0725, 0x0734, 0x0756, 0x0761,
+ // Entry C0 - FF
+ 0x0768, 0x0772, 0x0779, 0x0779, 0x0785, 0x078f, 0x078f, 0x0797,
+ 0x079f, 0x07af, 0x07c1, 0x07ca, 0x07d2, 0x07db, 0x07e7, 0x07f8,
+ 0x0803, 0x0803, 0x080e, 0x081d, 0x082e, 0x0838, 0x0842, 0x084b,
+ 0x084b, 0x0868, 0x0875, 0x0875, 0x087c, 0x0888, 0x0888, 0x08a4,
+ 0x08a8, 0x08a8, 0x08ad, 0x08b5, 0x08c3, 0x08cd, 0x08de, 0x08ee,
+ 0x08f8, 0x0900, 0x0908, 0x0920, 0x0929, 0x0931, 0x093c, 0x0945,
+ 0x094d, 0x094d, 0x096a, 0x0974, 0x0982, 0x098d, 0x09b2, 0x09bf,
+ 0x09da, 0x09f2, 0x09fe, 0x0a08, 0x0a1c, 0x0a23, 0x0a23, 0x0a2c,
+ // Entry 100 - 13F
+ 0x0a35, 0x0a44, 0x0a4c, 0x0a57,
+ },
+ },
+ { // be
+ "Востраў УшэсцяАндораАб’яднаныя Арабскія ЭміратыАфганістанАнтыгуа і Барбу" +
+ "даАнгільяАлбаніяАрменіяНідэрландскія АнтылыАнголаАнтарктыкаАргенцін" +
+ "аАмерыканскае СамоаАўстрыяАўстраліяАрубаАландскія астравыАзербайджа" +
+ "нБоснія і ГерцагавінаБарбадасБангладэшБельгіяБуркіна-ФасоБалгарыяБа" +
+ "хрэйнБурундзіБенінСен-БартэльміБермудскія астравыБрунейБалівіяКарыб" +
+ "скія НідэрландыБразіліяБагамыБутанВостраў БувэБатсванаБеларусьБеліз" +
+ "КанадаКакосавыя астравыКонга (Кіншаса)Цэнтральна-Афрыканская Рэспуб" +
+ "лікаКонга (Бразавіль)ШвейцарыяКот-д’ІвуарАстравы КукаЧыліКамерунКіт" +
+ "айКалумбіяВостраў КліпертонКоста-РыкаКубаКаба-ВердэВостраў КюрасааВ" +
+ "остраў РастваКіпрЧэхіяГерманіяВостраў Дыега-ГарсіяДжыбуціДаніяДамін" +
+ "ікаДамініканская РэспублікаАлжырСеўта і МелільяЭквадорЭстоніяЕгіпет" +
+ "Заходняя СахараЭрытрэяІспаніяЭфіопіяЕўрапейскі саюзФінляндыяФіджыФа" +
+ "лклендскія астравыМікранезіяФарэрскія астравыФранцыяГабонВялікабрыт" +
+ "аніяГрэнадаГрузіяФранцузская ГвіянаВостраў ГернсіГанаГібралтарГрэнл" +
+ "андыяГамбіяГвінеяГвадэлупаЭкватарыяльная ГвінеяГрэцыяПаўднёвая Джор" +
+ "джыя і Паўднёвыя Сандвічавы астравыГватэмалаГуамГвінея-БісауГаянаГа" +
+ "нконг, САР (Кітай)Востраў Херд і астравы МакдональдГандурасХарватыя" +
+ "ГаіціВенгрыяКанарскія астравыІнданезіяІрландыяІзраільВостраў МэнІнд" +
+ "ыяБрытанская тэрыторыя ў Індыйскім акіянеІракІранІсландыяІталіяВост" +
+ "раў ДжэрсіЯмайкаІарданіяЯпоніяКеніяКыргызстанКамбоджаКірыбаціКаморс" +
+ "кія АстравыСент-Кітс і НевісПаўночная КарэяПаўднёвая КарэяКувейтКай" +
+ "манавы астравыКазахстанЛаосЛіванСент-ЛюсіяЛіхтэнштэйнШры-ЛанкаЛібер" +
+ "ыяЛесотаЛітваЛюксембургЛатвіяЛівіяМарокаМанакаМалдоваЧарнагорыяСен-" +
+ "МартэнМадагаскарМаршалавы АстравыМакедоніяМаліМ’янма (Бірма)Манголі" +
+ "яМакаа, САР (Кітай)Паўночныя Марыянскія астравыМарцінікаМаўрытаніяМ" +
+ "антсератМальтаМаўрыкійМальдывыМалавіМексікаМалайзіяМазамбікНамібіяН" +
+ "овая КаледоніяНігерВостраў НорфалкНігерыяНікарагуаНідэрландыНарвегі" +
+ "яНепалНауруНіуэНовая ЗеландыяАманПанамаПеруФранцузская ПалінезіяПап" +
+ "уа — Новая ГвінеяФіліпіныПакістанПольшчаСен-П’ер і МікелонАстравы П" +
+ "іткэрнПуэрта-РыкаПалестынскія тэрыторыіПартугаліяПалауПарагвайКатар" +
+ "Вонкавая АкіяніяРэюньёнРумыніяСербіяРасіяРуандаСаудаўская АравіяСал" +
+ "амонавы АстравыСейшэльскія АстравыСуданШвецыяСінгапурВостраў Святой" +
+ " АленыСлавеніяСвальбард (Паўночна-Усходняя Зямля) і Ян-МаенСлавакіяС" +
+ "ьера-ЛеонэСан-МарынаСенегалСамаліСурынамПаўднёвы СуданСан-Тамэ і Пр" +
+ "ынсіпіСальвадорСінт-МартэнСірыяСвазілендТрыстан-да-КуньяЦёркс і Кай" +
+ "касЧадФранцузскія Паўднёвыя тэрыторыіТогаТайландТаджыкістанТакелауУ" +
+ "сходні ТыморТуркменістанТунісТонгаТурцыяТрынідад і ТабагаТувалуТайв" +
+ "аньТанзаніяУкраінаУгандаЗнешнія малыя астравы ЗШАЗлучаныя Штаты Аме" +
+ "рыкіУругвайУзбекістанВатыканСент-Вінсент і ГрэнадзіныВенесуэлаБрыта" +
+ "нскія Віргінскія астравыАмерыканскія Віргінскія астравыВ’етнамВануа" +
+ "туУоліс і ФутунаСамоаКосаваЕменВостраў МаётаПаўднёва-Афрыканская Рэ" +
+ "спублікаЗамбіяЗімбабвэНевядомы рэгіёнСветАфрыкаПаўночная АмерыкаПаў" +
+ "днёвая АмерыкаАкіяніяЗаходняя АфрыкаЦэнтральная АмерыкаУсходняя Афр" +
+ "ыкаПаўночная АфрыкаЦэнтральная АфрыкаПаўднёвая АфрыкаПаўночная і Па" +
+ "ўднёвая АмерыкіПаўночнаамерыканскі рэгіёнКарыбскія астравыУсходняя " +
+ "АзіяПаўднёвая АзіяПаўднёва-Усходняя АзіяПаўднёвая ЕўропаАўстралазія" +
+ "МеланезіяМікранезійскі рэгіёнПалінезіяАзіяЦэнтральная АзіяЗаходняя " +
+ "АзіяЕўропаУсходняя ЕўропаПаўночная ЕўропаЗаходняя ЕўропаЛацінская А" +
+ "мерыка",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001b, 0x0027, 0x005c, 0x0070, 0x0090, 0x009e, 0x00ac,
+ 0x00ba, 0x00e1, 0x00ed, 0x0101, 0x0113, 0x0136, 0x0144, 0x0156,
+ 0x0160, 0x0181, 0x0197, 0x01bd, 0x01cd, 0x01df, 0x01ed, 0x0204,
+ 0x0214, 0x0222, 0x0232, 0x023c, 0x0255, 0x0278, 0x0284, 0x0292,
+ 0x02b9, 0x02c9, 0x02d5, 0x02df, 0x02f6, 0x0306, 0x0316, 0x0320,
+ 0x032c, 0x034d, 0x0368, 0x03a8, 0x03c7, 0x03d9, 0x03ef, 0x0406,
+ 0x040e, 0x041c, 0x0426, 0x0436, 0x0457, 0x046a, 0x0472, 0x0485,
+ 0x04a2, 0x04bd, 0x04c5, 0x04cf, 0x04df, 0x0505, 0x0513, 0x051d,
+ // Entry 40 - 7F
+ 0x052d, 0x055c, 0x0566, 0x0582, 0x0590, 0x059e, 0x05aa, 0x05c7,
+ 0x05d5, 0x05e3, 0x05f1, 0x060e, 0x0620, 0x062a, 0x0651, 0x0665,
+ 0x0686, 0x0694, 0x069e, 0x06ba, 0x06c8, 0x06d4, 0x06f7, 0x0712,
+ 0x071a, 0x072c, 0x0740, 0x074c, 0x0758, 0x076a, 0x0793, 0x079f,
+ 0x07fc, 0x080e, 0x0816, 0x082d, 0x0837, 0x085a, 0x0898, 0x08a8,
+ 0x08b8, 0x08c2, 0x08d0, 0x08f1, 0x0903, 0x0913, 0x0921, 0x0936,
+ 0x0940, 0x098a, 0x0992, 0x099a, 0x09aa, 0x09b6, 0x09d1, 0x09dd,
+ 0x09ed, 0x09f9, 0x0a03, 0x0a17, 0x0a27, 0x0a37, 0x0a58, 0x0a77,
+ // Entry 80 - BF
+ 0x0a94, 0x0ab1, 0x0abd, 0x0ade, 0x0af0, 0x0af8, 0x0b02, 0x0b15,
+ 0x0b2b, 0x0b3c, 0x0b4a, 0x0b56, 0x0b60, 0x0b74, 0x0b80, 0x0b8a,
+ 0x0b96, 0x0ba2, 0x0bb0, 0x0bc4, 0x0bd7, 0x0beb, 0x0c0c, 0x0c1e,
+ 0x0c26, 0x0c40, 0x0c50, 0x0c6f, 0x0ca5, 0x0cb7, 0x0ccb, 0x0cdd,
+ 0x0ce9, 0x0cf9, 0x0d09, 0x0d15, 0x0d23, 0x0d33, 0x0d43, 0x0d51,
+ 0x0d6e, 0x0d78, 0x0d95, 0x0da3, 0x0db5, 0x0dc9, 0x0dd9, 0x0de3,
+ 0x0ded, 0x0df5, 0x0e10, 0x0e18, 0x0e24, 0x0e2c, 0x0e55, 0x0e7b,
+ 0x0e8b, 0x0e9b, 0x0ea9, 0x0ecb, 0x0ee8, 0x0efd, 0x0f28, 0x0f3c,
+ // Entry C0 - FF
+ 0x0f46, 0x0f56, 0x0f60, 0x0f7f, 0x0f8d, 0x0f9b, 0x0fa7, 0x0fb1,
+ 0x0fbd, 0x0fde, 0x1001, 0x1026, 0x1030, 0x103c, 0x104c, 0x1072,
+ 0x1082, 0x10d4, 0x10e4, 0x10f9, 0x110c, 0x111a, 0x1126, 0x1134,
+ 0x114f, 0x1172, 0x1184, 0x1199, 0x11a3, 0x11b5, 0x11d3, 0x11ed,
+ 0x11f3, 0x122f, 0x1237, 0x1245, 0x125b, 0x1269, 0x1282, 0x129a,
+ 0x12a4, 0x12ae, 0x12ba, 0x12da, 0x12e6, 0x12f4, 0x1304, 0x1312,
+ 0x131e, 0x134d, 0x1377, 0x1385, 0x1399, 0x13a7, 0x13d6, 0x13e8,
+ 0x1420, 0x145c, 0x146b, 0x1479, 0x1493, 0x149d, 0x14a9, 0x14b1,
+ // Entry 100 - 13F
+ 0x14ca, 0x1506, 0x1512, 0x1522, 0x153f, 0x1547, 0x1553, 0x1574,
+ 0x1595, 0x15a3, 0x15c0, 0x15e5, 0x1602, 0x1621, 0x1644, 0x1663,
+ 0x169a, 0x16cd, 0x16ee, 0x1707, 0x1722, 0x174c, 0x176b, 0x1781,
+ 0x1793, 0x17ba, 0x17cc, 0x17d4, 0x17f3, 0x180c, 0x1818, 0x1835,
+ 0x1854, 0x1871, 0x1892,
+ },
+ },
+ { // bem
+ "Zambia",
+ []uint16{ // 259 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 100 - 13F
+ 0x0000, 0x0000, 0x0006,
+ },
+ },
+ { // bez
+ "HuandolaHufalme dza HihalabuHuafuganistaniHuantigua na HubarubudaHuangui" +
+ "laHualbaniaHuameniaHuantili dza HuuholanziHuangolaHuajendinaHusamoa " +
+ "ya HumalekaniHuastliaHuaustlaliaHualubaHuazabajaniHubosinia na Huhez" +
+ "egovinaHubabadosiHubangaladeshiHuubelgijiHubukinafasoHubulgariaHubah" +
+ "aleniHuburundiHubeniniHubelmudaHubruneiHuboliviaHublaziliHubahamaHub" +
+ "utaniHubotiswanaHubelalusiHubelizeHukanadaIjamhuri ya Hidemokrasi ya" +
+ " HukongoIjamhuri ya Afrika ya PagatiHukongoHuuswisiHukodivaaIfisima " +
+ "fya KookHuchileHukameruniHuchinaHukolombiaHukostarikaHukubaHukepuved" +
+ "eHukuprosiIjamhuri ya ChekiHuujerumaniHujibutiHudenmakiHudominikaIja" +
+ "mhuri ya HudominikaHualjeliaHuekwadoHuestoniaHumisriHueritreaHuhispa" +
+ "niaHuuhabeshiHuufiniHufijiIfisima fya FalklandHumikronesiaHuufaransa" +
+ "HugaboniHuuingerezaHugrenadaHujojiaHugwiyana ya HuufaransaHughanaHuj" +
+ "iblaltaHujinlandiHugambiaHujineHugwadelupeHuginekwetaHuugilikiHugwat" +
+ "emalaHugwamHuginebisauHuguyanaHuhondulasiHukorasiaHuhaitiHuhungaliaH" +
+ "uindonesiaHuayalandiHuislaheliHuindiaUlubali lwa Hubahari ya Hindi l" +
+ "wa HuingerezaHuilakiHuuajemiHuaislandiHuitaliaHujamaikaHuyolodaniHuj" +
+ "apaniHukenyaHukiligizistaniHukambodiaHukilibatiHukomoroHusantakitzi " +
+ "na HunevisHukolea KaskaziniHukolea KusiniHukuwaitiIfisima fya Kayman" +
+ "HukazakistaniHulaosiHulebanoniHusantalusiaHulishenteniHusirilankaHul" +
+ "ibeliaHulesotoHulitwaniaHulasembagiHulativiaHulibiyaHumolokoHumonako" +
+ "HumoldovaHubukiniIfisima fya MarshalHumasedoniaHumaliHumyamaHumongol" +
+ "iaIfisima fya Mariana fya HukaskaziniHumartinikiHumolitaniaHumontser" +
+ "ratiHumaltaHumolisiHumodivuHumalawiHumeksikoHumalesiaHumusumbijiHuna" +
+ "mibiaHunyukaledoniaHunijeliIhisima sha NorfokHunijeliaHunikaragwaHuu" +
+ "holanziHunolweHunepaliHunauruHuniueHunyuzilandiHuomaniHupanamaHupelu" +
+ "Hupolinesia ya HuufaransaHupapuaHufilipinoHupakistaniHupolandiHusant" +
+ "apieri na HumikeloniHupitkainiHupwetorikoUlubali lwa Magharibi nu Ga" +
+ "za wa HupalestinaHuulenoHupalauHupalagwaiHukataliHuliyunioniHulomani" +
+ "aHuulusiHulwandaHusaudiIfisima fya SolomonHushelisheliHusudaniHuuswi" +
+ "diHusingapooHusantahelenaHusloveniaHuslovakiaHusiela LioniHusamalino" +
+ "HusenegaliHusomaliaHusurinamuHusaotome na HuprinsipeHuelsavadoHusili" +
+ "aHuuswaziIfisima fya Turki na KaikoHuchadiHutogoHutailandiHutajikist" +
+ "aniHutokelauHutimori ya MasharikiHuuturukimenistaniHutunisiaHutongaH" +
+ "uuturukiHutrinad na HutobagoHutuvaluHutaiwaniHutanzaniaHuukrainiHuug" +
+ "andaHumalekaniHuulugwaiHuuzibekistaniHuvatikaniHusantavisenti na Hug" +
+ "renadiniHuvenezuelaIfisima fya Virgin fya HuingerezaIfisima fya Virg" +
+ "in fya HumelekaniHuvietinamuHuvanuatuHuwalis na HufutunaHusamoaHuyem" +
+ "eniHumayotteHuafrika iya HukusiniHuzambiaHuzimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x001c, 0x002a, 0x0041, 0x004a, 0x0053,
+ 0x005b, 0x0072, 0x007a, 0x007a, 0x0084, 0x0099, 0x00a1, 0x00ac,
+ 0x00b3, 0x00b3, 0x00be, 0x00d7, 0x00e1, 0x00ef, 0x00f9, 0x0105,
+ 0x010f, 0x0119, 0x0122, 0x012a, 0x012a, 0x0133, 0x013b, 0x0144,
+ 0x0144, 0x014d, 0x0155, 0x015d, 0x015d, 0x0168, 0x0172, 0x017a,
+ 0x0182, 0x0182, 0x01a4, 0x01c0, 0x01c7, 0x01cf, 0x01d8, 0x01e8,
+ 0x01ef, 0x01f9, 0x0200, 0x020a, 0x020a, 0x0215, 0x021b, 0x0225,
+ 0x0225, 0x0225, 0x022e, 0x023f, 0x024a, 0x024a, 0x0252, 0x025b,
+ // Entry 40 - 7F
+ 0x0265, 0x027b, 0x0284, 0x0284, 0x028c, 0x0295, 0x029c, 0x029c,
+ 0x02a5, 0x02af, 0x02b9, 0x02b9, 0x02c0, 0x02c6, 0x02da, 0x02e6,
+ 0x02e6, 0x02f0, 0x02f8, 0x0303, 0x030c, 0x0313, 0x032a, 0x032a,
+ 0x0331, 0x033b, 0x0345, 0x034d, 0x0353, 0x035e, 0x0369, 0x0372,
+ 0x0372, 0x037d, 0x0383, 0x038e, 0x0396, 0x0396, 0x0396, 0x03a1,
+ 0x03aa, 0x03b1, 0x03bb, 0x03bb, 0x03c6, 0x03d0, 0x03da, 0x03da,
+ 0x03e1, 0x040d, 0x0414, 0x041c, 0x0426, 0x042e, 0x042e, 0x0437,
+ 0x0441, 0x0449, 0x0450, 0x045f, 0x0469, 0x0473, 0x047b, 0x0492,
+ // Entry 80 - BF
+ 0x04a3, 0x04b1, 0x04ba, 0x04cc, 0x04d9, 0x04e0, 0x04ea, 0x04f6,
+ 0x0502, 0x050d, 0x0516, 0x051e, 0x0528, 0x0533, 0x053c, 0x0544,
+ 0x054c, 0x0554, 0x055d, 0x055d, 0x055d, 0x0565, 0x0578, 0x0583,
+ 0x0589, 0x0590, 0x059a, 0x059a, 0x05bd, 0x05c8, 0x05d3, 0x05e0,
+ 0x05e7, 0x05ef, 0x05f7, 0x05ff, 0x0608, 0x0611, 0x061c, 0x0625,
+ 0x0633, 0x063b, 0x064d, 0x0656, 0x0661, 0x066b, 0x0672, 0x067a,
+ 0x0681, 0x0687, 0x0693, 0x069a, 0x06a2, 0x06a8, 0x06c1, 0x06c8,
+ 0x06d2, 0x06dd, 0x06e6, 0x0700, 0x070a, 0x0715, 0x0741, 0x0748,
+ // Entry C0 - FF
+ 0x074f, 0x0759, 0x0761, 0x0761, 0x076c, 0x0775, 0x0775, 0x077c,
+ 0x0784, 0x078b, 0x079e, 0x07aa, 0x07b2, 0x07ba, 0x07c4, 0x07d1,
+ 0x07db, 0x07db, 0x07e5, 0x07f2, 0x07fc, 0x0806, 0x080f, 0x0819,
+ 0x0819, 0x0830, 0x083a, 0x083a, 0x0841, 0x0849, 0x0849, 0x0863,
+ 0x086a, 0x086a, 0x0870, 0x087a, 0x0887, 0x0890, 0x08a5, 0x08b7,
+ 0x08c0, 0x08c7, 0x08d0, 0x08e4, 0x08ec, 0x08f5, 0x08ff, 0x0908,
+ 0x0910, 0x0910, 0x091a, 0x0923, 0x0931, 0x093b, 0x0958, 0x0963,
+ 0x0984, 0x09a5, 0x09b0, 0x09b9, 0x09cc, 0x09d3, 0x09d3, 0x09db,
+ // Entry 100 - 13F
+ 0x09e4, 0x09f9, 0x0a01, 0x0a0b,
+ },
+ },
+ { // bg
+ bgRegionStr,
+ bgRegionIdx,
+ },
+ { // bm
+ "AndɔrArabu mara kafoliAfiganistaŋAntiga-ni-BarbudaAngiyaAlibaniArimeniPe" +
+ "yiba ka AntiyiAngolaArizantinSamowa amerikaniOtirisiOsitiraliArubaAz" +
+ "ɛrbayjaŋBozni-ƐrizigoviniBarbadiBɛngiladɛsiBɛlizikiBurukina FasoBul" +
+ "igariBareyiniBurundiBenɛnBermudiBurinɛyiBoliviBereziliBahamasiButaŋB" +
+ "ɔtisiwanaBelarusiBeliziKanadaKongo ka republiki demɔkratikiSantaraf" +
+ "irikiKongoSuwisiKodiwariKuki GunSiliKameruniSiniwajamanaKolombiKɔsit" +
+ "arikaKubaCapivɛrdiCipriCeki republikiAlimaɲiJibutiDanemarkiDɔminikiD" +
+ "ɔmimiki republikiAlizeriEkwatɔrEsetoniEziputiEritereEsipaɲiEtiopiFi" +
+ "nilandiFijiMaluwini GunMikironesiFaransiGabɔŋAngilɛtɛriGranadiZeyɔrz" +
+ "iFaransi ka gwiyaniGanaZibralitariGɔrɔhenelandiGanbiGineGwadelupGine" +
+ " ekwatɔriGɛrɛsiGwatemalaGwamGine BisawoGwiyanaHɔndirasiKroasiAyitiHɔ" +
+ "ngriƐndoneziIrilandiIsirayeliƐndujamanaAngilɛ ka ɛndu dugukoloIrakiI" +
+ "raŋIsilandiItaliZamayikiZɔrdaniZapɔnKeniyaKirigizisitaŋKambojiKiriba" +
+ "tiKomɔriKristɔfo-Senu-ni-ƝevɛsKɛɲɛka KoreWorodugu KoreKowɛtiBama Gun" +
+ "KazakistaŋLayosiLibaŋLusi-SenuLisɛnsitayiniSirilankaLiberiyaLesotoLi" +
+ "tuyaniLikisanburuLetoniLibiMarɔkuMonakoMolidaviMadagasikariMarisali " +
+ "GunMacedɔniMaliMyanimariMoŋoliKɛɲɛka Mariyani GunMaritinikiMɔritaniM" +
+ "oŋseraMaltiMorisiMaldiviMalawiMeksikiMalɛziMozanbikiNamibiKaledoni K" +
+ "ouraNizɛriNɔrofoliki GunNizeriyaNikaragwaPeyibaNɔriwɛziNepaliNawuruN" +
+ "yuweZelandi KouraOmaŋPanamaPeruFaransi ka polineziPapuwasi-Gine-Kour" +
+ "aFilipiniPakisitaŋPoloɲiPiyɛri-Senu-ni-MikelɔŋPitikariniPɔrotorikoPa" +
+ "lesitiniPɔritigaliPalawuParaguwayiKatariReyuɲɔŋRumaniIrisiRuwandaAra" +
+ "biya SawudiyaSalomo GunSesɛliSudaŋSuwɛdiSɛngapuriƐlɛni SenuSloveniSl" +
+ "owakiSiyera LewɔniMarini-SenuSenegaliSomaliSurinamiSawo Tome-ni-Prin" +
+ "icipeSalivadɔrSiriSwazilandiTuriki Gun ni KayikiCadiTogoTayilandiTaj" +
+ "ikisitaniTokeloKɔrɔn TimɔrTurikimenisitaniTuniziTongaTurikiTrinite-n" +
+ "i-TobagoTuvaluTayiwaniTanzaniUkɛrɛniUgandaAmerikiUrugwayiUzebekisita" +
+ "niVatikaŋVinisɛn-Senu-ni-GrenadiniVenezuwelaAngilɛ ka Sungurunnin Gu" +
+ "nAmeriki ka Sungurunnin GunWiyɛtinamuVanuwatuWalisi-ni-FutunaSamowaY" +
+ "emɛniMayotiWorodugu AfrikiZanbiZimbabuwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0034, 0x003a, 0x0041,
+ 0x0048, 0x0058, 0x005e, 0x005e, 0x0067, 0x0077, 0x007e, 0x0087,
+ 0x008c, 0x008c, 0x0098, 0x00aa, 0x00b1, 0x00be, 0x00c7, 0x00d4,
+ 0x00dc, 0x00e4, 0x00eb, 0x00f1, 0x00f1, 0x00f8, 0x0101, 0x0107,
+ 0x0107, 0x010f, 0x0117, 0x011d, 0x011d, 0x0128, 0x0130, 0x0136,
+ 0x013c, 0x013c, 0x015b, 0x0168, 0x016d, 0x0173, 0x017b, 0x0183,
+ 0x0187, 0x018f, 0x019b, 0x01a2, 0x01a2, 0x01ad, 0x01b1, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c0, 0x01ce, 0x01d6, 0x01d6, 0x01dc, 0x01e5,
+ // Entry 40 - 7F
+ 0x01ee, 0x0201, 0x0208, 0x0208, 0x0210, 0x0217, 0x021e, 0x021e,
+ 0x0225, 0x022d, 0x0233, 0x0233, 0x023c, 0x0240, 0x024c, 0x0256,
+ 0x0256, 0x025d, 0x0264, 0x0270, 0x0277, 0x027f, 0x0291, 0x0291,
+ 0x0295, 0x02a0, 0x02af, 0x02b4, 0x02b8, 0x02c0, 0x02ce, 0x02d6,
+ 0x02d6, 0x02df, 0x02e3, 0x02ee, 0x02f5, 0x02f5, 0x02f5, 0x02ff,
+ 0x0305, 0x030a, 0x0311, 0x0311, 0x031a, 0x0322, 0x032b, 0x032b,
+ 0x0336, 0x034f, 0x0354, 0x0359, 0x0361, 0x0366, 0x0366, 0x036e,
+ 0x0376, 0x037c, 0x0382, 0x0390, 0x0397, 0x039f, 0x03a6, 0x03bf,
+ // Entry 80 - BF
+ 0x03cd, 0x03da, 0x03e1, 0x03e9, 0x03f4, 0x03fa, 0x0400, 0x0409,
+ 0x0417, 0x0420, 0x0428, 0x042e, 0x0436, 0x0441, 0x0447, 0x044b,
+ 0x0452, 0x0458, 0x0460, 0x0460, 0x0460, 0x046c, 0x0478, 0x0481,
+ 0x0485, 0x048e, 0x0495, 0x0495, 0x04ab, 0x04b5, 0x04be, 0x04c6,
+ 0x04cb, 0x04d1, 0x04d8, 0x04de, 0x04e5, 0x04ec, 0x04f5, 0x04fb,
+ 0x0509, 0x0510, 0x051f, 0x0527, 0x0530, 0x0536, 0x0540, 0x0546,
+ 0x054c, 0x0551, 0x055e, 0x0563, 0x0569, 0x056d, 0x0580, 0x0593,
+ 0x059b, 0x05a5, 0x05ac, 0x05c5, 0x05cf, 0x05da, 0x05e4, 0x05ef,
+ // Entry C0 - FF
+ 0x05f5, 0x05ff, 0x0605, 0x0605, 0x060f, 0x0615, 0x0615, 0x061a,
+ 0x0621, 0x0631, 0x063b, 0x0642, 0x0648, 0x064f, 0x0659, 0x0665,
+ 0x066c, 0x066c, 0x0673, 0x0681, 0x068c, 0x0694, 0x069a, 0x06a2,
+ 0x06a2, 0x06b8, 0x06c2, 0x06c2, 0x06c6, 0x06d0, 0x06d0, 0x06e4,
+ 0x06e8, 0x06e8, 0x06ec, 0x06f5, 0x0701, 0x0707, 0x0715, 0x0725,
+ 0x072b, 0x0730, 0x0736, 0x0747, 0x074d, 0x0755, 0x075c, 0x0765,
+ 0x076b, 0x076b, 0x0772, 0x077a, 0x0787, 0x078f, 0x07a9, 0x07b3,
+ 0x07cd, 0x07e7, 0x07f2, 0x07fa, 0x080a, 0x0810, 0x0810, 0x0817,
+ // Entry 100 - 13F
+ 0x081d, 0x082c, 0x0831, 0x083a,
+ },
+ },
+ { // bn
+ bnRegionStr,
+ bnRegionIdx,
+ },
+ { // bo
+ "རྒྱ་ནགའཇར་མན་དབྱིན་ཇི་རྒྱ་གར་ཨི་ཀྲར་ལི་ཉི་ཧོང་ལྷོ་ཀོ་རི་ཡ།བལ་ཡུལ་ཨུ་རུ་ས" +
+ "ུ་ཨ་མེ་རི་ཀ།མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུགའཛམ་གླིང་།",
+ []uint16{ // 262 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0027, 0x0027, 0x0027, 0x0027,
+ // Entry 40 - 7F
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a,
+ // Entry 80 - BF
+ 0x008a, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3,
+ // Entry C0 - FF
+ 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
+ 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc,
+ // Entry 100 - 13F
+ 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x015f, 0x017d,
+ },
+ },
+ { // bo-IN
+ "ཨོཤི་ཡཱན་ན།",
+ []uint16{ // 266 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 100 - 13F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0021,
+ },
+ },
+ { // br
+ "Enez AscensionAndorraEmirelezhioù Arab UnanetAfghanistanAntigua ha Barbu" +
+ "daAnguillaAlbaniaArmeniaAntilhez NederlandatAngolaAntarktikaArcʼhant" +
+ "inaSamoa AmerikanAostriaAostraliaArubaInizi ÅlandAzerbaidjanBosnia h" +
+ "a HerzegovinaBarbadosBangladeshBelgiaBurkina FasoBulgariaBahreinBuru" +
+ "ndiBeninSaint BarthélemyBermudaBruneiBoliviaKarib NederlandatBrazilB" +
+ "ahamasBhoutanEnez BouvetBotswanaBelarusBelizeKanadaInizi KokozKongo " +
+ "- KinshasaRepublik KreizafrikanKongo - BrazzavilleSuisAod an Olifant" +
+ "Inizi CookChileKamerounSinaKolombiaEnez ClippertonCosta RicaKubaKab-" +
+ "GlasCuraçaoEnez ChristmasKiprenezRepublik TchekAlamagnDiego GarciaDj" +
+ "iboutiDanmarkDominicaRepublik DominikanAljeriaCeuta ha MelillaEcuado" +
+ "rEstoniaEgiptSahara ar CʼhornôgEritreaSpagnEtiopiaUnaniezh EuropaFin" +
+ "landFidjiInizi FalklandMikroneziaInizi FaeroFrañsGabonRouantelezh-Un" +
+ "anetGrenadaJorjiaGwiana cʼhallGwernenezGhanaJibraltarGreunlandGambia" +
+ "GineaGwadeloupGinea ar CʼhehederGresInizi Georgia ar Su hag Inizi Sa" +
+ "ndwich ar SuGuatemalaGuamGinea-BissauGuyanaHong Kong RMD SinaInizi H" +
+ "eard ha McDonaldHondurasKroatiaHaitiHungariaInizi KanariezIndoneziaI" +
+ "werzhonIsraelEnez VanavIndiaTiriad breizhveurat Meurvor IndezIraqIra" +
+ "nIslandItaliaJerzenezJamaikaJordaniaJapanKenyaKyrgyzstanKambodjaKiri" +
+ "batiKomorezSaint Kitts ha NevisKorea an NorzhKorea ar SuKoweitInizi " +
+ "CaymanKazakstanLaosLibanSaint LuciaLiechtensteinSri LankaLiberiaLeso" +
+ "thoLituaniaLuksembourgLatviaLibiaMarokoMonacoMoldovaMontenegroSaint " +
+ "MartinMadagaskarInizi MarshallMakedoniaMaliMyanmar (Birmania)Mongoli" +
+ "aMacau RMD SinaInizi Mariana an NorzhMartinikMaouritaniaMontserratMa" +
+ "ltaMorisMaldivezMalawiMecʼhikoMalaysiaMozambikNamibiaKaledonia Nevez" +
+ "NigerEnez NorfolkNigeriaNicaraguaIzelvroioùNorvegiaNepalNauruNiueZel" +
+ "and-NevezOmanPanamáPerouPolinezia CʼhallPapoua Ginea-NevezFilipinezP" +
+ "akistanPoloniaSant-Pêr-ha-MikelonEnez PitcairnPuerto RicoTiriadoù Pa" +
+ "lestinaPortugalPalauParaguayQatarOseania diabellAr ReünionRoumaniaSe" +
+ "rbiaRusiaRwandaArabia SaoudatInizi SalomonSechelezSoudanSvedenSingap" +
+ "ourSaint-HelenaSloveniaSvalbardSlovakiaSierra LeoneSan MarinoSenegal" +
+ "SomaliaSurinamSusoudanSão Tomé ha PríncipeSalvadorSint MaartenSiriaS" +
+ "wazilandTristan da CunhaInizi Turks ha CaicosTchadDouaroù aostral Fr" +
+ "añsTogoThailandTadjikistanTokelauTimor-LesteTurkmenistanTuniziaTonga" +
+ "TurkiaTrinidad ha TobagoTuvaluTaiwanTanzaniaUkrainaOugandaInizi diab" +
+ "ell ar Stadoù-UnanetStadoù-UnanetUruguayOuzbekistanVatikanSant Visan" +
+ "t hag ar GrenadinezVenezuelaInizi Gwercʼh Breizh-VeurInizi Gwercʼh a" +
+ "r Stadoù-UnanetViêt NamVanuatuWallis ha FutunaSamoaKosovoYemenMayott" +
+ "eSuafrikaZambiaZimbabweRannved dianavBedAfrikaNorzhamerikaSuamerikaO" +
+ "seaniaAfrika ar CʼhornôgKreizamerikaAfrika ar ReterAfrika an NorzhAf" +
+ "rika ar CʼhreizAfrika ar SuAmerikaoùAmerika an NorzhKaribAzia ar Ret" +
+ "erAzia ar SuAzia ar GevredEuropa ar SuAostralaziaMelaneziaRannved Mi" +
+ "kroneziaPolineziaAziaAzia ar CʼhreizAzia ar CʼhornôgEuropaEuropa ar " +
+ "ReterEuropa an NorzhEuropa ar CʼhornôgAmerika Latin",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x0015, 0x002e, 0x0039, 0x004b, 0x0053, 0x005a,
+ 0x0061, 0x0075, 0x007b, 0x0085, 0x0091, 0x009f, 0x00a6, 0x00af,
+ 0x00b4, 0x00c0, 0x00cb, 0x00e0, 0x00e8, 0x00f2, 0x00f8, 0x0104,
+ 0x010c, 0x0113, 0x011a, 0x011f, 0x0130, 0x0137, 0x013d, 0x0144,
+ 0x0155, 0x015b, 0x0162, 0x0169, 0x0174, 0x017c, 0x0183, 0x0189,
+ 0x018f, 0x019a, 0x01aa, 0x01bf, 0x01d2, 0x01d6, 0x01e4, 0x01ee,
+ 0x01f3, 0x01fb, 0x01ff, 0x0207, 0x0216, 0x0220, 0x0224, 0x022c,
+ 0x0234, 0x0242, 0x024a, 0x0258, 0x025f, 0x026b, 0x0273, 0x027a,
+ // Entry 40 - 7F
+ 0x0282, 0x0294, 0x029b, 0x02ab, 0x02b2, 0x02b9, 0x02be, 0x02d2,
+ 0x02d9, 0x02de, 0x02e5, 0x02f4, 0x02fb, 0x0300, 0x030e, 0x0318,
+ 0x0323, 0x0329, 0x032e, 0x0340, 0x0347, 0x034d, 0x035b, 0x0364,
+ 0x0369, 0x0372, 0x037b, 0x0381, 0x0386, 0x038f, 0x03a2, 0x03a6,
+ 0x03d2, 0x03db, 0x03df, 0x03eb, 0x03f1, 0x0403, 0x041a, 0x0422,
+ 0x0429, 0x042e, 0x0436, 0x0444, 0x044d, 0x0455, 0x045b, 0x0465,
+ 0x046a, 0x048b, 0x048f, 0x0493, 0x0499, 0x049f, 0x04a7, 0x04ae,
+ 0x04b6, 0x04bb, 0x04c0, 0x04ca, 0x04d2, 0x04da, 0x04e1, 0x04f5,
+ // Entry 80 - BF
+ 0x0503, 0x050e, 0x0514, 0x0520, 0x0529, 0x052d, 0x0532, 0x053d,
+ 0x054a, 0x0553, 0x055a, 0x0561, 0x0569, 0x0574, 0x057a, 0x057f,
+ 0x0585, 0x058b, 0x0592, 0x059c, 0x05a8, 0x05b2, 0x05c0, 0x05c9,
+ 0x05cd, 0x05df, 0x05e7, 0x05f5, 0x060b, 0x0613, 0x061e, 0x0628,
+ 0x062d, 0x0632, 0x063a, 0x0640, 0x0649, 0x0651, 0x0659, 0x0660,
+ 0x066f, 0x0674, 0x0680, 0x0687, 0x0690, 0x069b, 0x06a3, 0x06a8,
+ 0x06ad, 0x06b1, 0x06bd, 0x06c1, 0x06c8, 0x06cd, 0x06de, 0x06f0,
+ 0x06f9, 0x0701, 0x0708, 0x071c, 0x0729, 0x0734, 0x0747, 0x074f,
+ // Entry C0 - FF
+ 0x0754, 0x075c, 0x0761, 0x0770, 0x077b, 0x0783, 0x0789, 0x078e,
+ 0x0794, 0x07a2, 0x07af, 0x07b7, 0x07bd, 0x07c3, 0x07cc, 0x07d8,
+ 0x07e0, 0x07e8, 0x07f0, 0x07fc, 0x0806, 0x080d, 0x0814, 0x081b,
+ 0x0823, 0x083a, 0x0842, 0x084e, 0x0853, 0x085c, 0x086c, 0x0881,
+ 0x0886, 0x089d, 0x08a1, 0x08a9, 0x08b4, 0x08bb, 0x08c6, 0x08d2,
+ 0x08d9, 0x08de, 0x08e4, 0x08f6, 0x08fc, 0x0902, 0x090a, 0x0911,
+ 0x0918, 0x0937, 0x0945, 0x094c, 0x0957, 0x095e, 0x097b, 0x0984,
+ 0x099e, 0x09be, 0x09c7, 0x09ce, 0x09de, 0x09e3, 0x09e9, 0x09ee,
+ // Entry 100 - 13F
+ 0x09f5, 0x09fd, 0x0a03, 0x0a0b, 0x0a19, 0x0a1c, 0x0a22, 0x0a2e,
+ 0x0a37, 0x0a3e, 0x0a52, 0x0a5e, 0x0a6d, 0x0a7c, 0x0a8e, 0x0a9a,
+ 0x0aa4, 0x0ab4, 0x0ab9, 0x0ac6, 0x0ad0, 0x0ade, 0x0aea, 0x0af5,
+ 0x0afe, 0x0b10, 0x0b19, 0x0b1d, 0x0b2d, 0x0b3f, 0x0b45, 0x0b54,
+ 0x0b63, 0x0b77, 0x0b84,
+ },
+ },
+ { // brx
+ "ऍन्डोरासंयुक्त अरब अमीरातअफ़ग़ानिस्तानएन्टिगुआ एवं बारबूडाएंगीलाअल्बानिय" +
+ "ाआर्मेनियानीदरलैंड्स एंटिलीज़अंगोलाअंटार्कटिकाअर्जेण्टिनाअमरिकी सम" +
+ "ोआऑस्ट्रियाऑस्ट्रेलियाअरूबाआलाँड द्वीपअज़रबैजानबोसनिया हर्ज़ेगोविन" +
+ "ाबारबाडोसबंगलादेशबेल्जियमबुर्किना फासोबल्गैरियाबहरैनबुरुंडीबेनेँसे" +
+ "ँ बार्थेलेमीबरमूडाब्रूनइबोलीवियाब्राज़ीलबहामाभूटानबुवे द्वीपबोत्स्" +
+ "वानाबेलारूसबेलिज़कैनाडाकोकोस द्वीपकॉंगो किनशासासेंट्रल अफ्रीकन रिप" +
+ "ब्लिककॉंगो ब्राज़्ज़ावीलस्वित्ज़रलैंडआईवरी कोस्टकुक द्वीपचिलीकोमेर" +
+ "ानचीनकोलम्बियाकोस्टारीकाक्यूबाकैप वेर्देक्रिस्मस द्वीपसाइप्रसचेक ग" +
+ "णराज्यजर्मनीद्जिबूतीडेनमार्कडोमिनिकाडोमिनिकन गणराज्यअल्जीरियाएक्वा" +
+ "डोरएस्टोनियामिस्रपश्चिमी सहाराएरिट्रियास्पेनइथिओपियायूरोपीय संघफिन" +
+ "लैंडफिजीफ़ॉल्कलैंड द्वीपमाइक्रोनेशियाफरो द्वीपफ्राँसगैबॉनब्रितनग्र" +
+ "ेनडाजॉर्जियाफ्राँसीसी गिआनागेर्नसेघानाजिब्राल्टरग्रीनलैण्डगाम्बिया" +
+ "गिनीग्वादलुपइक्वेटोरियल गिनीग्रीसदक्षिण जोर्जिया एवं दक्षिण सैंडवी" +
+ "च द्वीपगोतेदालागुआमगीनी-बिसाउगुयानाहाँगकाँग विशेष प्रशासनिक क्षेत्" +
+ "र चीनहर्ड द्वीप एवं मैकडोनॉल्ड द्वीपहौण्डूरासक्रोएशियाहाइतीहंगरीइं" +
+ "डोनेशियाआयरलैंडइस्राइलआईल ऑफ़ मैनभारतब्रिटिश हिंद महासागरिय क्षेत्" +
+ "रईराक़ईरानआइसलैंडइटलीजर्सीजमाइकाजॉर्डनजापानकेन्याकिर्गिज़कम्बोडिया" +
+ "किरिबातीकोमोरोज़सेंट किट्स एवं नेविसउत्तर कोरियादक्षिण कोरियाकुवैत" +
+ "केमैन द्वीपकज़ाखस्तानलाओसलेबनोनसेंट लूसियालिक्टैनस्टाईनश्री लँकाला" +
+ "इबेरियालसोथोलिथुआनियालक्समबर्गलाट्वीयालीबियामोरोक्कोमोनाकोमोल्डेवि" +
+ "यामोंटेनेग्रोसेँ मार्टेँमदागास्करमार्शल द्वीपमैसेडोनियामालीम्यानमा" +
+ "रमंगोलियामकाओ विशेष प्रशासनिक क्षेत्र (चीन)उत्तरी मारियाना द्वीपमा" +
+ "र्टीनिकमॉरिटेनियामॉंसेरामाल्टामॉरिसमालदीवमलावीमैक्सिकोमलेशियामोज़ा" +
+ "म्बिकनामीबियान्यू कैलेडोनियानाइजेरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआन" +
+ "ेदरलैण्डनॉर्वेनेपालनाउरूनीयूएन्यूज़ीलैंडओमानपनामापेरूफ्राँसीसी पॉल" +
+ "िनीशियापापुआ न्यू गिनीफिलीपिन्सपाकिस्तानपोलैण्डसेँ पीएर एवं मि" +
+ "\u200dकेलॉंपिटकेर्नपुएर्टो रीकोफ़िलिस्तीनपुर्तगालपलाऊपारागुएक़तारबाह" +
+ "रिय ओशेआनियारेयूनियॉंरोमानियासर्बियारूसरूआण्डासऊदी अरबसॉलोमन द्वीप" +
+ "सेशेल्ससूदानस्वीडनसिंगापुरसेण्\u200dट हेलेनास्लोवेनियास्वाल्बार्ड " +
+ "एवं यान मायेनस्लोवाकियासियेरा लेओनसैन मरीनोसेनेगालसोमालियासुरिनामस" +
+ "ाउँ-तोमे एवं प्रिंसिपऍल साल्वाडोरसीरियास्वाज़ीलैंडतुर्की एवं कैकोज" +
+ "़ द्वीपचाडफ्राँसीसी उत्तरी क्षेत्रोंटोगोथाइलैण्डताजिकिस्तानटोकेलौप" +
+ "ूर्वी तिमोरतुर्कमेनीस्तानत्युनिशियाटॉंगातुर्कीट्रिनिडाड एवं टोबैगो" +
+ "तुवालुताइवानतंज़ानियायूक्रेनयुगाँडायुनाइटेड स्टेट्स के छोटे बाहरिय" +
+ " द्वीपसंयुक्त राज्य अमरिकायुरूगुएउज़बेकिस्तानवैटिकनसेंट विंसंट एवं द" +
+ "ी ग्रनाडीन्स्वेनेज़ुएलाब्रिटिश वर्जीन आईलंड्सयु.एस. वर्जीन आईलंड्स" +
+ "वियतनामवानाऊटुवॉलेस एवं फ़्यूचूनासमोआयमनमैयौटदक्षिण अफ्रीकाज़ाम्बि" +
+ "याज़ीम्बाब्वेअज्ञात या अवैध प्रदेशदुनियाअफ्रीकाउत्तर अमरिकादक्षिण " +
+ "अमरिकाओशेआनियापश्चिमी अफ्रीकामध्य अमरिकापूर्वी अफ्रीकाउत्तरी अफ्री" +
+ "कामध्य अफ्रीकादक्षिणी अफ्रीकाअमरिकाज़्उत्तरी अमरिकाकैरिबियनपूर्वी " +
+ "एशियादक्षिणी एशियादक्षिण-पूर्वी एशियादक्षिणी यूरोपऑस्ट्रेलिया एवं " +
+ "न्यूजीलैंडमेलीनेशियामाईक्रोनेशियापोलीनेशियाएशियामध्य एशियापश्चिमी " +
+ "ऐशियायूरोपपूर्वी यूरोपउत्तरी यूरोपपश्चिमी यूरोप्लैटिन अमरिका एवं क" +
+ "रीबी",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0015, 0x0047, 0x006e, 0x00a6, 0x00b8, 0x00d3,
+ 0x00ee, 0x0125, 0x0137, 0x0158, 0x0179, 0x0198, 0x01b3, 0x01d4,
+ 0x01e3, 0x0202, 0x021d, 0x0257, 0x026f, 0x0287, 0x029f, 0x02c4,
+ 0x02df, 0x02ee, 0x0303, 0x0312, 0x033a, 0x034c, 0x035e, 0x0376,
+ 0x0376, 0x038e, 0x039d, 0x03ac, 0x03c8, 0x03e6, 0x03fb, 0x040d,
+ 0x041f, 0x043e, 0x0463, 0x04a7, 0x04de, 0x0505, 0x0524, 0x053d,
+ 0x0549, 0x055e, 0x0567, 0x0582, 0x0582, 0x05a0, 0x05b2, 0x05ce,
+ 0x05ce, 0x05f6, 0x060b, 0x062a, 0x063c, 0x063c, 0x0654, 0x066c,
+ // Entry 40 - 7F
+ 0x0684, 0x06b2, 0x06cd, 0x06cd, 0x06e5, 0x0700, 0x070f, 0x0734,
+ 0x074f, 0x075e, 0x0776, 0x0795, 0x07aa, 0x07b6, 0x07e4, 0x080b,
+ 0x0824, 0x0836, 0x0845, 0x0857, 0x086c, 0x0884, 0x08af, 0x08c4,
+ 0x08d0, 0x08ee, 0x090c, 0x0924, 0x0930, 0x0948, 0x0976, 0x0985,
+ 0x09f3, 0x0a0b, 0x0a17, 0x0a33, 0x0a45, 0x0aa9, 0x0afe, 0x0b19,
+ 0x0b34, 0x0b43, 0x0b52, 0x0b52, 0x0b70, 0x0b85, 0x0b9a, 0x0bb7,
+ 0x0bc3, 0x0c17, 0x0c26, 0x0c32, 0x0c47, 0x0c53, 0x0c62, 0x0c74,
+ 0x0c86, 0x0c95, 0x0ca7, 0x0cbf, 0x0cda, 0x0cf2, 0x0d0a, 0x0d40,
+ // Entry 80 - BF
+ 0x0d62, 0x0d87, 0x0d96, 0x0db5, 0x0dd3, 0x0ddf, 0x0df1, 0x0e10,
+ 0x0e37, 0x0e50, 0x0e6b, 0x0e7a, 0x0e95, 0x0eb0, 0x0ec8, 0x0eda,
+ 0x0ef2, 0x0f04, 0x0f22, 0x0f43, 0x0f62, 0x0f7d, 0x0f9f, 0x0fbd,
+ 0x0fc9, 0x0fe1, 0x0ff9, 0x1053, 0x108e, 0x10a9, 0x10c7, 0x10dc,
+ 0x10ee, 0x10fd, 0x110f, 0x111e, 0x1136, 0x114b, 0x1169, 0x1181,
+ 0x11ac, 0x11be, 0x11e3, 0x11fe, 0x1219, 0x1234, 0x1246, 0x1255,
+ 0x1264, 0x1273, 0x1294, 0x12a0, 0x12af, 0x12bb, 0x12f5, 0x131e,
+ 0x1339, 0x1354, 0x1369, 0x13a2, 0x13ba, 0x13dc, 0x13fa, 0x1412,
+ // Entry C0 - FF
+ 0x141e, 0x1433, 0x1442, 0x146d, 0x1488, 0x14a0, 0x14b5, 0x14be,
+ 0x14d3, 0x14e9, 0x150b, 0x1520, 0x152f, 0x1541, 0x1559, 0x157e,
+ 0x159c, 0x15e1, 0x15ff, 0x161e, 0x1637, 0x164c, 0x1664, 0x1679,
+ 0x1679, 0x16b5, 0x16d7, 0x16d7, 0x16e9, 0x170a, 0x170a, 0x1749,
+ 0x1752, 0x179c, 0x17a8, 0x17c0, 0x17e1, 0x17f3, 0x1815, 0x183f,
+ 0x185d, 0x186c, 0x187e, 0x18b6, 0x18c8, 0x18da, 0x18f5, 0x190a,
+ 0x191f, 0x1984, 0x19bc, 0x19d1, 0x19f5, 0x1a07, 0x1a59, 0x1a77,
+ 0x1ab5, 0x1aec, 0x1b01, 0x1b16, 0x1b4b, 0x1b57, 0x1b57, 0x1b60,
+ // Entry 100 - 13F
+ 0x1b6f, 0x1b97, 0x1bb2, 0x1bd3, 0x1c0c, 0x1c1e, 0x1c33, 0x1c55,
+ 0x1c7a, 0x1c92, 0x1cbd, 0x1cdc, 0x1d04, 0x1d2c, 0x1d4e, 0x1d79,
+ 0x1d94, 0x1db9, 0x1dd1, 0x1df3, 0x1e18, 0x1e4d, 0x1e72, 0x1ebc,
+ 0x1eda, 0x1f01, 0x1f1f, 0x1f2e, 0x1f4a, 0x1f6f, 0x1f7e, 0x1fa0,
+ 0x1fc2, 0x1fea, 0x2026,
+ },
+ },
+ { // bs
+ "Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigva i Barbu" +
+ "daAngvilaAlbanijaJermenijaHolandski AntiliAngolaAntarktikaArgentinaA" +
+ "merička SamoaAustrijaAustralijaArubaAlandska OstrvaAzerbejdžanBosna " +
+ "i HercegovinaBarbadosBangladešBelgijaBurkina FasoBugarskaBahreinBuru" +
+ "ndiBeninSveti BartolomejBermudaBrunejBolivijaKaripska HolandijaBrazi" +
+ "lBahamiButanBuve OstrvaBocvanaBjelorusijaBelizeKanadaKokosova (Kilin" +
+ "gova) ostrvaDemokratska Republika KongoCentralnoafrička RepublikaKon" +
+ "goŠvicarskaObala SlonovačeKukova OstrvaČileKamerunKinaKolumbijaOstrv" +
+ "o KlipertonKostarikaKubaKape VerdeKurasaoBožićna OstrvaKiparČeškaNje" +
+ "mačkaDijego GarsijaDžibutiDanskaDominikaDominikanska RepublikaAlžirS" +
+ "euta i MeliljaEkvadorEstonijaEgipatZapadna SaharaEritrejaŠpanijaEtio" +
+ "pijaEvropska UnijaFinskaFidžiFolklandska OstrvaMikronezijaFarska Ost" +
+ "rvaFrancuskaGabonVelika BritanijaGrenadaGruzijaFrancuska GvajanaGern" +
+ "ziGanaGibraltarGrenlandGambijaGvinejaGvadelupeEkvatorijalna GvinejaG" +
+ "rčkaJužna Džordžija i Južna Sendvič OstrvaGvatemalaGuamGvineja-Bisao" +
+ "GvajanaHong Kong (S. A. R. Kina)Heard i arhipelag McDonaldHondurasHr" +
+ "vatskaHaitiMađarskaKanarska ostrvaIndonezijaIrskaIzraelOstrvo ManInd" +
+ "ijaBritanska Territorija u Indijskom OkeanuIrakIranIslandItalijaDžer" +
+ "siJamajkaJordanJapanKenijaKirgizstanKambodžaKiribatiKomorska OstrvaS" +
+ "ent Kits i NevisSjeverna KorejaJužna KorejaKuvajtKajmanska OstrvaKaz" +
+ "ahstanLaosLibanSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvani" +
+ "jaLuksemburgLetonijaLibijaMarokoMonakoMoldavijaCrna GoraSv. MartinMa" +
+ "dagaskarMaršalska OstrvaMakedonijaMaliMijanmarMongolijaMakao (S. A. " +
+ "R. Kina)Sjeverna Marijanska OstrvaMartinikMauritanijaMonseratMaltaMa" +
+ "uriciusMaldiviMalaviMeksikoMalezijaMozambikNamibijaNova KaledonijaNi" +
+ "gerNorfolk OstrvoNigerijaNikaragvaHolandijaNorveškaNepalNauruNiueNov" +
+ "i ZelandOmanPanamaPeruFrancuska PolinezijaPapua Nova GvinejaFilipini" +
+ "PakistanPoljskaSveti Petar i MikelonPitkernPorto RikoPalestinska Ter" +
+ "itorijaPortugalPalauParagvajKatarOstala OkeanijaRejunionRumunijaSrbi" +
+ "jaRusijaRuandaSaudijska ArabijaSolomonska OstrvaSejšeliSudanŠvedskaS" +
+ "ingapurSveta HelenaSlovenijaSvalbard i Jan MajenSlovačkaSijera Leone" +
+ "San MarinoSenegalSomalijaSurinamJužni SudanSao Tome i PrincipeSalvad" +
+ "orSint MartenSirijaSvazilendTristan da KunjaOstrva Turks i CaicosČad" +
+ "Francuske Južne TeritorijeTogoTajlandTadžikistanTokelauTimor LesteTu" +
+ "rkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkra" +
+ "jinaUgandaUdaljena ostrva SADSjedinjene Američke DržaveUrugvajUzbeki" +
+ "stanVatikanSveti Vincent i GrenadiniVenecuelaBritanska Djevičanska O" +
+ "strvaDjevičanska Ostrva SADVijetnamVanuatuWallis i FutunaSamoaKosovo" +
+ "JemenMajoteJužnoafrička RepublikaZambijaZimbabveNepoznata oblastSvij" +
+ "etAfrikaSjevernoamerički kontinentJužna AmerikaOkeanijaZapadna Afrik" +
+ "aCentralna AmerikaIstočna AfrikaSjeverna AfrikaCentralna AfrikaJužna" +
+ " AfrikaAmerikaSjeverna AmerikaKaribiIstočna AzijaJužna AzijaJugoisto" +
+ "čna AzijaJužna EvropaAustralazijaMelanezijaMikronezijski RegionPoli" +
+ "nezijaAzijaCentralna AzijaZapadna AzijaEvropaIstočna EvropaSjeverna " +
+ "EvropaZapadna EvropaLatinska Amerika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0015, 0x002f, 0x0039, 0x004a, 0x0051, 0x0059,
+ 0x0062, 0x0072, 0x0078, 0x0082, 0x008b, 0x009a, 0x00a2, 0x00ac,
+ 0x00b1, 0x00c0, 0x00cc, 0x00df, 0x00e7, 0x00f1, 0x00f8, 0x0104,
+ 0x010c, 0x0113, 0x011a, 0x011f, 0x012f, 0x0136, 0x013c, 0x0144,
+ 0x0156, 0x015c, 0x0162, 0x0167, 0x0172, 0x0179, 0x0184, 0x018a,
+ 0x0190, 0x01ab, 0x01c6, 0x01e1, 0x01e6, 0x01f0, 0x0200, 0x020d,
+ 0x0212, 0x0219, 0x021d, 0x0226, 0x0236, 0x023f, 0x0243, 0x024d,
+ 0x0254, 0x0264, 0x0269, 0x0270, 0x0279, 0x0287, 0x028f, 0x0295,
+ // Entry 40 - 7F
+ 0x029d, 0x02b3, 0x02b9, 0x02c8, 0x02cf, 0x02d7, 0x02dd, 0x02eb,
+ 0x02f3, 0x02fb, 0x0303, 0x0311, 0x0317, 0x031d, 0x032f, 0x033a,
+ 0x0347, 0x0350, 0x0355, 0x0365, 0x036c, 0x0373, 0x0384, 0x038a,
+ 0x038e, 0x0397, 0x039f, 0x03a6, 0x03ad, 0x03b6, 0x03cb, 0x03d1,
+ 0x03fc, 0x0405, 0x0409, 0x0416, 0x041d, 0x0436, 0x0450, 0x0458,
+ 0x0460, 0x0465, 0x046e, 0x047d, 0x0487, 0x048c, 0x0492, 0x049c,
+ 0x04a2, 0x04ca, 0x04ce, 0x04d2, 0x04d8, 0x04df, 0x04e6, 0x04ed,
+ 0x04f3, 0x04f8, 0x04fe, 0x0508, 0x0511, 0x0519, 0x0528, 0x0539,
+ // Entry 80 - BF
+ 0x0548, 0x0555, 0x055b, 0x056b, 0x0574, 0x0578, 0x057d, 0x0589,
+ 0x0595, 0x059f, 0x05a7, 0x05ad, 0x05b6, 0x05c0, 0x05c8, 0x05ce,
+ 0x05d4, 0x05da, 0x05e3, 0x05ec, 0x05f6, 0x0600, 0x0611, 0x061b,
+ 0x061f, 0x0627, 0x0630, 0x0645, 0x065f, 0x0667, 0x0672, 0x067a,
+ 0x067f, 0x0688, 0x068f, 0x0695, 0x069c, 0x06a4, 0x06ac, 0x06b4,
+ 0x06c3, 0x06c8, 0x06d6, 0x06de, 0x06e7, 0x06f0, 0x06f9, 0x06fe,
+ 0x0703, 0x0707, 0x0712, 0x0716, 0x071c, 0x0720, 0x0734, 0x0746,
+ 0x074e, 0x0756, 0x075d, 0x0772, 0x0779, 0x0783, 0x0799, 0x07a1,
+ // Entry C0 - FF
+ 0x07a6, 0x07ae, 0x07b3, 0x07c2, 0x07ca, 0x07d2, 0x07d8, 0x07de,
+ 0x07e4, 0x07f5, 0x0806, 0x080e, 0x0813, 0x081b, 0x0823, 0x082f,
+ 0x0838, 0x084c, 0x0855, 0x0861, 0x086b, 0x0872, 0x087a, 0x0881,
+ 0x088d, 0x08a0, 0x08a8, 0x08b3, 0x08b9, 0x08c2, 0x08d2, 0x08e7,
+ 0x08eb, 0x0906, 0x090a, 0x0911, 0x091d, 0x0924, 0x092f, 0x093b,
+ 0x0940, 0x0945, 0x094b, 0x095c, 0x0962, 0x0968, 0x0971, 0x0979,
+ 0x097f, 0x0992, 0x09ae, 0x09b5, 0x09bf, 0x09c6, 0x09df, 0x09e8,
+ 0x0a05, 0x0a1c, 0x0a24, 0x0a2b, 0x0a3a, 0x0a3f, 0x0a45, 0x0a4a,
+ // Entry 100 - 13F
+ 0x0a50, 0x0a68, 0x0a6f, 0x0a77, 0x0a87, 0x0a8d, 0x0a93, 0x0aae,
+ 0x0abc, 0x0ac4, 0x0ad2, 0x0ae3, 0x0af2, 0x0b01, 0x0b11, 0x0b1e,
+ 0x0b25, 0x0b35, 0x0b3b, 0x0b49, 0x0b55, 0x0b67, 0x0b74, 0x0b80,
+ 0x0b8a, 0x0b9e, 0x0ba8, 0x0bad, 0x0bbc, 0x0bc9, 0x0bcf, 0x0bde,
+ 0x0bed, 0x0bfb, 0x0c0b,
+ },
+ },
+ { // bs-Cyrl
+ "Острво АсенсионАндораУједињени Арапски ЕмиратиАвганистанАнтигва и Барбуд" +
+ "аАнгвилаАлбанијаАрменијаХоландски АнтилиАнголаАнтарктикАргентинаАме" +
+ "ричка СамоаАустријаАустралијаАрубаАландска острваАзербејџанБосна и " +
+ "ХерцеговинаБарбадосБангладешБелгијаБуркина ФасоБугарскаБахреинБурун" +
+ "диБенинСвети БартоломејБермудаБрунејБоливијаБразилБахамиБутанБуве О" +
+ "стрваБоцванаБелорусијаБелизеКанадаКокос (Келинг) ОстрваКонго - Кинш" +
+ "асаЦентрално Афричка РепубликаКонго - БразавилШвајцарскаОбала Слоно" +
+ "вачеКукова ОстрваЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаК" +
+ "убаКапе ВердеБожићна острваКипарЧешкаНемачкаДијего ГарсијаЏибутиДан" +
+ "скаДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстонија" +
+ "ЕгипатЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска УнијаФинскаФиџи" +
+ "Фокландска острваМикронезијаФарска ОстрваФранцускаГабонВелика Брита" +
+ "нијаГренадаГрузијаФранцуска ГвајанаГурнсиГанаГибралтарГренландГамби" +
+ "јаГвинејаГваделупеЕкваторијална ГвинејаГрчкаЈужна Џорџија и Јужна С" +
+ "ендвич ОстрваГватемалаГуамГвинеја-БисаоГвајанаХонг Конг С. А. Р. Ки" +
+ "наХерд и Мекдоналд ОстрваХондурасХрватскаХаитиМађарскаКанарска остр" +
+ "ваИндонезијаИрскаИзраелОстрво МанИндијаБританска територија у Индиј" +
+ "ском океануИракИранИсландИталијаЏерсиЈамајкаЈорданЈапанКенијаКиргиз" +
+ "станКамбоџаКирибатиКоморска ОстрваСент Китс и НевисСеверна КорејаЈу" +
+ "жна КорејаКувајтКајманска ОстрваКазахстанЛаосЛибанСент ЛуцијаЛихтен" +
+ "штајнШри ЛанкаЛиберијаЛесотоЛитванијаЛуксембургЛетонијаЛибијаМароко" +
+ "МонакоМолдавијаЦрна ГораСент МартинМадагаскарМаршалска ОстрваМакедо" +
+ "нијаМалиМијанмар (Бурма)МонголијаМакао С. А. Р. КинаСеверна Маријан" +
+ "ска ОстрваМартиникМауританијаМонсератМалтаМаурицијусМалдивиМалавиМе" +
+ "ксикоМалезијаМозамбикНамибијаНова КаледонијаНигерНорфолк ОстрвоНиге" +
+ "ријаНикарагваХоландијаНорвешкаНепалНауруНиуеНови ЗеландОманПанамаПе" +
+ "руФранцуска ПолинезијаПапуа Нова ГвинејаФилипиниПакистанПољскаСен П" +
+ "јер и МикелонПиткернПорто РикоПалестинске територијеПортугалијаПала" +
+ "уПарагвајКатарОстала океанијаРеинионРумунијаСрбијаРусијаРуандаСауди" +
+ "јска АрабијаСоломонска ОстрваСејшелиСуданШведскаСингапурСвета Јелен" +
+ "аСловенијаСвалбард и Јанмајен ОстрваСловачкаСијера ЛеонеСан МариноС" +
+ "енегалСомалијаСуринамСао Томе и ПринципеСалвадорСиријаСвазилендТрис" +
+ "тан да КуњаТуркс и Кајкос ОстрваЧадФранцуске Јужне ТериторијеТогоТа" +
+ "јландТаџикистанТокелауИсточни ТиморТуркменистанТунисТонгаТурскаТрин" +
+ "идад и ТобагоТувалуТајванТанзанијаУкрајинаУгандаМања удаљена острва" +
+ " САДСједињене Америчке ДржавеУругвајУзбекистанВатиканСент Винсент и " +
+ "ГренадиниВенецуелаБританска Девичанска ОстрваС.А.Д. Девичанска Остр" +
+ "ваВијетнамВануатуВалис и Футуна ОстрваСамоаЈеменМајотеЈужноафричка " +
+ "РепубликаЗамбијаЗимбабвеНепозната или неважећа областСветАфрикаСеве" +
+ "рноамерички континентЈужна АмерикаОкеанијаЗападна АфрикаЦентрална А" +
+ "мерикаИсточна АфрикаСеверна АфрикаЦентрална АфрикаЈужна АфрикаАмери" +
+ "кеСеверна АмерикаКарибиИсточна АзијаЈужна АзијаЈугоисточна АзијаЈуж" +
+ "на ЕвропаАустралија и Нови ЗеландМеланезијаМикронезијски регионПоли" +
+ "незијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверна " +
+ "ЕвропаЗападна ЕвропаЛатинска Америка",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab,
+ 0x00bb, 0x00da, 0x00e6, 0x00f8, 0x010a, 0x0125, 0x0135, 0x0149,
+ 0x0153, 0x0170, 0x0184, 0x01a8, 0x01b8, 0x01ca, 0x01d8, 0x01ef,
+ 0x01ff, 0x020d, 0x021b, 0x0225, 0x0244, 0x0252, 0x025e, 0x026e,
+ 0x026e, 0x027a, 0x0286, 0x0290, 0x02a5, 0x02b3, 0x02c7, 0x02d3,
+ 0x02df, 0x0305, 0x0320, 0x0354, 0x0371, 0x0385, 0x03a2, 0x03bb,
+ 0x03c3, 0x03d1, 0x03d9, 0x03eb, 0x040a, 0x041c, 0x0424, 0x0437,
+ 0x0437, 0x0452, 0x045c, 0x0466, 0x0474, 0x048f, 0x049b, 0x04a7,
+ // Entry 40 - 7F
+ 0x04b7, 0x04e2, 0x04ec, 0x0506, 0x0514, 0x0524, 0x0530, 0x054b,
+ 0x055b, 0x0569, 0x0579, 0x0594, 0x05a0, 0x05a8, 0x05c9, 0x05df,
+ 0x05f8, 0x060a, 0x0614, 0x0633, 0x0641, 0x064f, 0x0670, 0x067c,
+ 0x0684, 0x0696, 0x06a6, 0x06b4, 0x06c2, 0x06d4, 0x06fd, 0x0707,
+ 0x074a, 0x075c, 0x0764, 0x077d, 0x078b, 0x07b1, 0x07dc, 0x07ec,
+ 0x07fc, 0x0806, 0x0816, 0x0833, 0x0847, 0x0851, 0x085d, 0x0870,
+ 0x087c, 0x08c6, 0x08ce, 0x08d6, 0x08e2, 0x08f0, 0x08fa, 0x0908,
+ 0x0914, 0x091e, 0x092a, 0x093e, 0x094c, 0x095c, 0x0979, 0x0998,
+ // Entry 80 - BF
+ 0x09b3, 0x09ca, 0x09d6, 0x09f5, 0x0a07, 0x0a0f, 0x0a19, 0x0a2e,
+ 0x0a44, 0x0a55, 0x0a65, 0x0a71, 0x0a83, 0x0a97, 0x0aa7, 0x0ab3,
+ 0x0abf, 0x0acb, 0x0add, 0x0aee, 0x0b03, 0x0b17, 0x0b36, 0x0b4a,
+ 0x0b52, 0x0b6f, 0x0b81, 0x0ba0, 0x0bd0, 0x0be0, 0x0bf6, 0x0c06,
+ 0x0c10, 0x0c24, 0x0c32, 0x0c3e, 0x0c4c, 0x0c5c, 0x0c6c, 0x0c7c,
+ 0x0c99, 0x0ca3, 0x0cbe, 0x0cce, 0x0ce0, 0x0cf2, 0x0d02, 0x0d0c,
+ 0x0d16, 0x0d1e, 0x0d33, 0x0d3b, 0x0d47, 0x0d4f, 0x0d76, 0x0d98,
+ 0x0da8, 0x0db8, 0x0dc4, 0x0de5, 0x0df3, 0x0e06, 0x0e31, 0x0e47,
+ // Entry C0 - FF
+ 0x0e51, 0x0e61, 0x0e6b, 0x0e88, 0x0e96, 0x0ea6, 0x0eb2, 0x0ebe,
+ 0x0eca, 0x0eeb, 0x0f0c, 0x0f1a, 0x0f24, 0x0f32, 0x0f42, 0x0f59,
+ 0x0f6b, 0x0f9c, 0x0fac, 0x0fc3, 0x0fd6, 0x0fe4, 0x0ff4, 0x1002,
+ 0x1002, 0x1025, 0x1035, 0x1035, 0x1041, 0x1053, 0x106f, 0x1096,
+ 0x109c, 0x10ce, 0x10d6, 0x10e4, 0x10f8, 0x1106, 0x111f, 0x1137,
+ 0x1141, 0x114b, 0x1157, 0x1177, 0x1183, 0x118f, 0x11a1, 0x11b1,
+ 0x11bd, 0x11e8, 0x1218, 0x1226, 0x123a, 0x1248, 0x1275, 0x1287,
+ 0x12bb, 0x12e6, 0x12f6, 0x1304, 0x132b, 0x1335, 0x1335, 0x133f,
+ // Entry 100 - 13F
+ 0x134b, 0x1376, 0x1384, 0x1394, 0x13cb, 0x13d3, 0x13df, 0x1410,
+ 0x1429, 0x1439, 0x1454, 0x1475, 0x1490, 0x14ab, 0x14ca, 0x14e1,
+ 0x14ef, 0x150c, 0x1518, 0x1531, 0x1546, 0x1567, 0x157e, 0x15ab,
+ 0x15bf, 0x15e6, 0x15fa, 0x1604, 0x1621, 0x163a, 0x1646, 0x1661,
+ 0x167c, 0x1697, 0x16b6,
+ },
+ },
+ { // ca
+ caRegionStr,
+ caRegionIdx,
+ },
+ { // ce
+ "Айъадаларан гӀайреАндорраӀарбийн Цхьанатоьхна ЭмираташОвхӀан-пачхьалкхАн" +
+ "тигуа а, Барбуда аАнгильяАлбаниЭрмалойчоьАнголаАнтарктидаАргентинаА" +
+ "мерикан СамоаАвстриАвстралиАрубаАландан гӀайренашАзербайджанБосни а" +
+ ", Герцеговина аБарбадосБангладешБельгиБуркина- ФасоБолгариБахрейнБур" +
+ "ундиБенинСен-БартельмиБермудан гӀайренашБруней-ДаруссаламБоливиБонэ" +
+ "йр, Синт-Эстатиус а, Саба аБразилиБагаман гӀайренашБутанБувен гӀайр" +
+ "еБотсванаБелоруссиБелизКанадаКокосийн гӀайренашДемократин Республик" +
+ "а КонгоЮккъерчу Африкин РеспубликаРеспублика КонгоШвейцариКот-Д’иву" +
+ "арКукан гӀайренашЧилиКамерунКитайКолумбиКлиппертонКоста-РикаКубаКаб" +
+ "о-ВердеКюрасаоГӀайре ӏиса пайхӏамар вина деКипрЧехиГерманиДиего-Гар" +
+ "сиДжибутиДаниДоминикаДоминикан РеспубликаАлжирСеута а, Мелилья аЭкв" +
+ "адорЭстониМисарМалхбузен СаьхьараЭритрейИспаниЭфиопиЕвробартФинлянд" +
+ "иФиджиФолклендан гӀайренашМикронезин Федеративни штаташФарерийн гӀа" +
+ "йренашФранциГабонЙоккха БританиГренадаГуьржийчоьФранцузийн ГвианаГе" +
+ "рнсиГанаГибралтарГренландиГамбиГвинейГваделупаЭкваторан ГвинейГреци" +
+ "Къилба Джорджи а, Къилба Гавайн гӀайренаш аГватемалаГуамГвиней-Биса" +
+ "уГайанаГонконг (ша-къаьстина кӀошт)Херд гӀайре а, Макдональд гӀайре" +
+ "наш аГондурасХорватиГаитиВенгриКанаран гӀайренашИндонезиИрландиИзра" +
+ "ильМэн гӀайреИндиБританин латта Индин океанехьӀиракъГӀажарийчоьИсла" +
+ "ндиИталиДжерсиЯмайкаУрданЯпониКениКиргизиКамбоджаКирибатиКоморашСен" +
+ "т-Китс а, Невис аКъилбаседа КорейКъилба КорейКувейтКайман гӀайренаш" +
+ "КазахстанЛаосЛиванСент-ЛюсиЛихтенштейнШри-ЛанкаЛибериЛесотоЛитваЛюк" +
+ "сембургЛатвиЛивиМароккоМонакоМолдавиӀаьржаламанхойчоьСен-МартенМада" +
+ "гаскарМаршаллан гӀайренашМакедониМалиМьянма (Бирма)МонголиМакао (ша" +
+ "-къаьстина кӀошт)Къилбаседа Марианан гӀайренашМартиникаМавританиМонт" +
+ "серратМальтаМаврикиМальдивашМалавиМексикаМалайзиМозамбикНамибиКерла" +
+ " КаледониНигерНорфолк гӀайреНигериНикарагуаНидерландашНорвегиНепалНа" +
+ "уруНиуэКерла ЗеландиОманПанамаПеруФранцузийн ПолинезиПапуа — Керла " +
+ "ГвинейФилиппинашПакистанПольшаСен-Пьер а, Микелон аПиткэрн гӀайрена" +
+ "шПуэрто-РикоПалестинан латтанашПортугалиПалауПарагвайКатарАрахьара " +
+ "ОкеаниРеюньонРумыниСербиРоссиРуандаСаӀудийн АравиСоломонан гӀайрена" +
+ "шСейшелан гӀайренашСуданШвециСингапурСийлахьчу Еленин гӀайреСловени" +
+ "Шпицберген а, Ян-Майен аСловакиСьерра- ЛеонеСан-МариноСенегалСомали" +
+ "СуринамКъилба СуданСан-Томе а, Принсипи аСальвадорСинт-МартенШемаСв" +
+ "азилендТристан-да- КуньяТёркс а, Кайкос а гӀайренашЧадФранцузийн къ" +
+ "илба латтанашТогоТаиландТаджикистанТокелауМалхбален ТиморТуркмениТу" +
+ "нисТонгаТуркойчоьТринидад а, Тобаго аТувалуТайваньТанзаниУкраинаУга" +
+ "ндаАЦШн арахьара кегийн гӀайренашЦхьанатоьхна ШтаташУругвайУзбекист" +
+ "анВатиканСент-Винсент а, Гренадинаш аВенесуэлаВиргинийн гӀайренаш (" +
+ "Британи)Виргинийн гӀайренаш (АЦШ)ВьетнамВануатуУоллис а, Футуна аСа" +
+ "моаКосовоЙеменМайоттаКъилба-Африкин РеспубликаЗамбиЗимбабвеЙоьвзуш " +
+ "йоцу регионДерригдуьненанАфрикаКъилбаседа АмерикаКъилба АмерикаОкеа" +
+ "ниМалхбузен АфрикаЮккъера АмерикаМалхбален АфрикаКъилбаседа АфрикаЮ" +
+ "ккъера АфрикаКъилба АфрикаКъилбаседа а, къилба а АмерикаКъилбаседа " +
+ "Америка – АЦШ а, Канада аКарибашЮккъера АзиКъилба АзиКъилба-малхбал" +
+ "ен АзиКъилба ЕвропаАвстралазиМеланезиМикронезиПолинезиАзиЮккъера Ма" +
+ "лхбалеЮккъера а, Гергара а МалхбалеЕвропаМалхбален ЕвропаКъилбаседа" +
+ " ЕвропаМалхбузен ЕвропаЛатинан Америка",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0023, 0x0031, 0x0069, 0x0088, 0x00ac, 0x00ba, 0x00c6,
+ 0x00da, 0x00da, 0x00e6, 0x00fa, 0x010c, 0x0127, 0x0133, 0x0143,
+ 0x014d, 0x016e, 0x0184, 0x01ac, 0x01bc, 0x01ce, 0x01da, 0x01f2,
+ 0x0200, 0x020e, 0x021c, 0x0226, 0x023f, 0x0262, 0x0283, 0x028f,
+ 0x02c6, 0x02d4, 0x02f5, 0x02ff, 0x0316, 0x0326, 0x0338, 0x0342,
+ 0x034e, 0x0371, 0x03a5, 0x03d9, 0x03f8, 0x0408, 0x041e, 0x043b,
+ 0x0443, 0x0451, 0x045b, 0x0469, 0x047d, 0x0490, 0x0498, 0x04ab,
+ 0x04b9, 0x04ef, 0x04f7, 0x04ff, 0x050d, 0x0522, 0x0530, 0x0538,
+ // Entry 40 - 7F
+ 0x0548, 0x056f, 0x0579, 0x0599, 0x05a7, 0x05b3, 0x05bd, 0x05e0,
+ 0x05ee, 0x05fa, 0x0606, 0x0616, 0x0626, 0x0630, 0x0657, 0x068f,
+ 0x06b2, 0x06be, 0x06c8, 0x06e3, 0x06f1, 0x0705, 0x0726, 0x0732,
+ 0x073a, 0x074c, 0x075e, 0x0768, 0x0774, 0x0786, 0x07a5, 0x07af,
+ 0x07fe, 0x0810, 0x0818, 0x082f, 0x083b, 0x086e, 0x08b2, 0x08c2,
+ 0x08d0, 0x08da, 0x08e6, 0x0907, 0x0917, 0x0925, 0x0933, 0x0946,
+ 0x094e, 0x0985, 0x0991, 0x09a7, 0x09b5, 0x09bf, 0x09cb, 0x09d7,
+ 0x09e1, 0x09eb, 0x09f3, 0x0a01, 0x0a11, 0x0a21, 0x0a2f, 0x0a52,
+ // Entry 80 - BF
+ 0x0a71, 0x0a88, 0x0a94, 0x0ab3, 0x0ac5, 0x0acd, 0x0ad7, 0x0ae8,
+ 0x0afe, 0x0b0f, 0x0b1b, 0x0b27, 0x0b31, 0x0b45, 0x0b4f, 0x0b57,
+ 0x0b65, 0x0b71, 0x0b7f, 0x0ba1, 0x0bb4, 0x0bc8, 0x0bed, 0x0bfd,
+ 0x0c05, 0x0c1e, 0x0c2c, 0x0c5b, 0x0c93, 0x0ca5, 0x0cb7, 0x0ccb,
+ 0x0cd7, 0x0ce5, 0x0cf7, 0x0d03, 0x0d11, 0x0d1f, 0x0d2f, 0x0d3b,
+ 0x0d56, 0x0d60, 0x0d7b, 0x0d87, 0x0d99, 0x0daf, 0x0dbd, 0x0dc7,
+ 0x0dd1, 0x0dd9, 0x0df2, 0x0dfa, 0x0e06, 0x0e0e, 0x0e33, 0x0e59,
+ 0x0e6d, 0x0e7d, 0x0e89, 0x0eae, 0x0ecf, 0x0ee4, 0x0f09, 0x0f1b,
+ // Entry C0 - FF
+ 0x0f25, 0x0f35, 0x0f3f, 0x0f5c, 0x0f6a, 0x0f76, 0x0f80, 0x0f8a,
+ 0x0f96, 0x0fb1, 0x0fd6, 0x0ff9, 0x1003, 0x100d, 0x101d, 0x1049,
+ 0x1057, 0x1082, 0x1090, 0x10a8, 0x10bb, 0x10c9, 0x10d5, 0x10e3,
+ 0x10fa, 0x1121, 0x1133, 0x1148, 0x1150, 0x1162, 0x1181, 0x11b2,
+ 0x11b8, 0x11ea, 0x11f2, 0x1200, 0x1216, 0x1224, 0x1241, 0x1251,
+ 0x125b, 0x1265, 0x1277, 0x129b, 0x12a7, 0x12b5, 0x12c3, 0x12d1,
+ 0x12dd, 0x1316, 0x133b, 0x1349, 0x135d, 0x136b, 0x139e, 0x13b0,
+ 0x13e6, 0x1414, 0x1422, 0x1430, 0x1450, 0x145a, 0x1466, 0x1470,
+ // Entry 100 - 13F
+ 0x147e, 0x14ae, 0x14b8, 0x14c8, 0x14ec, 0x1508, 0x1514, 0x1537,
+ 0x1552, 0x155e, 0x157d, 0x159a, 0x15b9, 0x15da, 0x15f5, 0x160e,
+ 0x1645, 0x1687, 0x1695, 0x16aa, 0x16bd, 0x16e3, 0x16fc, 0x1710,
+ 0x1720, 0x1732, 0x1742, 0x1748, 0x1767, 0x179c, 0x17a8, 0x17c7,
+ 0x17e8, 0x1807, 0x1824,
+ },
+ },
+ { // cgg
+ "AndoraAmahanga ga Buharabu ageeteereineAfuganistaniAngiguwa na BabudaAng" +
+ "wiraArubaniaArimeniyaAntiri za HoorandiAngoraArigentinaSamowa ya Ame" +
+ "erikaOsituriaOsitureeriyaArubaAzabagyaniBoziniya na HezegovinaBabado" +
+ "siBangaradeshiBubirigiBokina FasoBurugariyaBahareniBurundiBeniniBeri" +
+ "mudaBuruneiBoriiviyaBuraziiriBahamaButaniBotswanaBararusiBerizeKanad" +
+ "aDemokoratika Ripaaburika ya KongoEihanga rya Rwagati ya AfirikaKong" +
+ "oSwisiAivore KositiEbizinga bya KuukuChileKameruuniChinaKorombiyaKos" +
+ "itarikaCubaEbizinga bya KepuvadeSaipurasiRipaaburika ya ZeekiBugirim" +
+ "aaniGyibutiDeenimaakaDominikaRipaaburika ya DominicaArigyeriyaIkweda" +
+ "EsitoniyaMisiriEriteriyaSipeyiniEthiyopiyaBufiniFigyiEbizinga bya Fa" +
+ "akilandaMikironesiyaBufaransaGabooniBungyerezaGurenadaGyogiyaGuyana " +
+ "ya BufaransaGanaGiburaataGuriinirandiGambiyaGineGwaderupeGuniGuriisi" +
+ "GwatemaraGwamuGinebisauGuyanaHondurasiKorasiyaHaitiHangareIndoneeziy" +
+ "aIrerandiIsirairiIndiyaIraakaIraaniAisilandiItareGyamaikaYorudaaniGy" +
+ "apaaniKenyaKirigizistaniKambodiyaKiribatiKoromoSenti Kittis na Nevis" +
+ "iKoreya AmatembaKoreya AmashuumaKuweitiEbizinga bya KayimaniKazakisi" +
+ "taniLayosiLebanoniSenti RusiyaLishenteniSirirankaLiberiyaLesothoLith" +
+ "uaniaLakizembaagaLatviyaLibyaMoroccoMonacoMoridovaMadagasikaEbizinga" +
+ " bya MarshaaMasedooniaMariMyanamarMongoriaEbizinga by’amatemba ga Ma" +
+ "rianaMartiniqueMauriteeniyaMontserratiMaritaMaurishiasiMaridivesMara" +
+ "wiMexicomarayiziaMozambiqueNamibiyaNiukaredoniaNaigyaEkizinga Norifo" +
+ "koNaigyeriyaNikaragwaHoorandiNoorweNepoNauruNiueNiuzirandiOmaaniPana" +
+ "maPeruPolinesia ya BufaransaPapuaFiripinoPakisitaaniPoorandiSenti Pi" +
+ "yerre na MikweronPitkainiPwetorikoPocugoPalaawuParagwaiKataRiyuniyon" +
+ "iRomaniyaRrashaRwandaSaudi AreebiyaEbizinga bya SurimaaniShesheresiS" +
+ "udaniSwideniSingapoSenti HerenaSirovaaniyaSirovaakiyaSirra RiyooniSa" +
+ "marinoSenegoSomaariyaSurinaamuSawo Tome na PurinsipoEri SalivadoSiri" +
+ "yaSwazirandiEbizinga bya Buturuki na KaikoChadiTogoTairandiTajikisit" +
+ "aniTokerawuBurugweizooba bwa TimoriTurukimenisitaniTuniziaTongaButur" +
+ "uki /TakeTurinidad na TobagoTuvaruTayiwaaniTanzaniaUkureiniUgandaAme" +
+ "rikaUrugwaiUzibekisitaniVatikaniSenti Vinsent na GurenadiniVenezuwer" +
+ "aEbizinga bya Virigini ebya BungyerezaEbizinga bya Virigini ebya Ame" +
+ "rikaViyetinaamuVanuatuWarris na FutunaSamowaYemeniMayoteSausi Afirik" +
+ "aZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054,
+ 0x005d, 0x006f, 0x0075, 0x0075, 0x007f, 0x0091, 0x0099, 0x00a5,
+ 0x00aa, 0x00aa, 0x00b4, 0x00ca, 0x00d2, 0x00de, 0x00e6, 0x00f1,
+ 0x00fb, 0x0103, 0x010a, 0x0110, 0x0110, 0x0118, 0x011f, 0x0128,
+ 0x0128, 0x0131, 0x0137, 0x013d, 0x013d, 0x0145, 0x014d, 0x0153,
+ 0x0159, 0x0159, 0x017a, 0x0198, 0x019d, 0x01a2, 0x01af, 0x01c1,
+ 0x01c6, 0x01cf, 0x01d4, 0x01dd, 0x01dd, 0x01e7, 0x01eb, 0x0200,
+ 0x0200, 0x0200, 0x0209, 0x021d, 0x0228, 0x0228, 0x022f, 0x0239,
+ // Entry 40 - 7F
+ 0x0241, 0x0258, 0x0262, 0x0262, 0x0268, 0x0271, 0x0277, 0x0277,
+ 0x0280, 0x0288, 0x0292, 0x0292, 0x0298, 0x029d, 0x02b4, 0x02c0,
+ 0x02c0, 0x02c9, 0x02d0, 0x02da, 0x02e2, 0x02e9, 0x02fc, 0x02fc,
+ 0x0300, 0x0309, 0x0315, 0x031c, 0x0320, 0x0329, 0x032d, 0x0334,
+ 0x0334, 0x033d, 0x0342, 0x034b, 0x0351, 0x0351, 0x0351, 0x035a,
+ 0x0362, 0x0367, 0x036e, 0x036e, 0x0379, 0x0381, 0x0389, 0x0389,
+ 0x038f, 0x038f, 0x0395, 0x039b, 0x03a4, 0x03a9, 0x03a9, 0x03b1,
+ 0x03ba, 0x03c2, 0x03c7, 0x03d4, 0x03dd, 0x03e5, 0x03eb, 0x0401,
+ // Entry 80 - BF
+ 0x0410, 0x0420, 0x0427, 0x043c, 0x0448, 0x044e, 0x0456, 0x0462,
+ 0x046c, 0x0475, 0x047d, 0x0484, 0x048d, 0x0499, 0x04a0, 0x04a5,
+ 0x04ac, 0x04b2, 0x04ba, 0x04ba, 0x04ba, 0x04c4, 0x04d8, 0x04e2,
+ 0x04e6, 0x04ee, 0x04f6, 0x04f6, 0x0517, 0x0521, 0x052d, 0x0538,
+ 0x053e, 0x0549, 0x0552, 0x0558, 0x055e, 0x0567, 0x0571, 0x0579,
+ 0x0585, 0x058b, 0x059c, 0x05a6, 0x05af, 0x05b7, 0x05bd, 0x05c1,
+ 0x05c6, 0x05ca, 0x05d4, 0x05da, 0x05e0, 0x05e4, 0x05fa, 0x05ff,
+ 0x0607, 0x0612, 0x061a, 0x0633, 0x063b, 0x0644, 0x0644, 0x064a,
+ // Entry C0 - FF
+ 0x0651, 0x0659, 0x065d, 0x065d, 0x0667, 0x066f, 0x066f, 0x0675,
+ 0x067b, 0x0689, 0x069f, 0x06a9, 0x06af, 0x06b6, 0x06bd, 0x06c9,
+ 0x06d4, 0x06d4, 0x06df, 0x06ec, 0x06f4, 0x06fa, 0x0703, 0x070c,
+ 0x070c, 0x0722, 0x072e, 0x072e, 0x0734, 0x073e, 0x073e, 0x075c,
+ 0x0761, 0x0761, 0x0765, 0x076d, 0x0779, 0x0781, 0x0799, 0x07a9,
+ 0x07b0, 0x07b5, 0x07c3, 0x07d6, 0x07dc, 0x07e5, 0x07ed, 0x07f5,
+ 0x07fb, 0x07fb, 0x0802, 0x0809, 0x0816, 0x081e, 0x0839, 0x0843,
+ 0x0868, 0x088a, 0x0895, 0x089c, 0x08ac, 0x08b2, 0x08b2, 0x08b8,
+ // Entry 100 - 13F
+ 0x08be, 0x08cb, 0x08d1, 0x08d9,
+ },
+ },
+ { // chr
+ "ᎠᏂᏙᎳᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᎡᎳᏈ ᎢᎹᎵᏘᏏᎠᏫᎨᏂᏍᏖᏂᎤᏪᏘ ᎠᎴ ᏆᏊᏓᎠᏂᎩᎳᎠᎵᏇᏂᏯᎠᎵᎻᏂᎠᎠᏂᎪᎳᏧᏁᏍᏓᎸᎠᏥᏂᏘᏂᎠᎠᎺ" +
+ "ᎵᎧ ᏌᎼᎠᎠᏍᏟᏯᎡᎳᏗᏜᎠᎷᏆᎣᎴᏅᏓ ᏚᎦᏚᏛᎢᎠᏏᎵᏆᏌᏂᏉᏏᏂᎠ ᎠᎴ ᎲᏤᎪᏫᏆᏇᏙᏍᏆᏂᎦᎵᏕᏍᏇᎵᏥᎥᎻᏋᎩᎾ ᏩᏐ" +
+ "ᏊᎵᎨᎵᎠᏆᎭᎴᎢᏂᏋᎷᏂᏗᏆᏂᎢᏂᎠᏥᎸᏉᏗ ᏆᏕᎳᎻᏆᏊᏓᏊᎾᎢᏉᎵᏫᎠᏆᏏᎵᎢᎾᏍᎩ ᏆᎭᎹᏍᏊᏔᏂᏊᏪ ᎤᎦᏚᏛᎢᏆᏣᏩᎾᏇ" +
+ "ᎳᎷᏍᏇᎵᏍᎨᎾᏓᎪᎪᏍ (ᎩᎵᏂ) ᏚᎦᏚᏛᎧᏂᎪᎬᎿᎨᏍᏛ ᎠᏰᏟ ᏍᎦᏚᎩᎧᏂᎪ (ᏍᎦᏚᎩ)ᏍᏫᏍᎢᏬᎵ ᎾᎿ ᎠᎹᏳᎶᏗᎠ" +
+ "ᏓᏍᏓᏴᎲᏍᎩ ᎤᎦᏚᏛᏥᎵᎧᎹᎷᏂᏓᎶᏂᎨᏍᏛᎪᎸᎻᏈᎢᎠᎪᏍᏓ ᎵᎧᎫᏆᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗᏂᎦᏓ ᎤᏂᎲ ᎾᎿ ᎫᎳᎨᎣᏓᏂ" +
+ "ᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢᏌᎢᏆᏍᏤᎩ ᏍᎦᏚᎩᎠᏂᏛᏥᏥᏊᏗᏗᏂᎹᎦᏙᎻᏂᎧᏙᎻᏂᎧᏂ ᏍᎦᏚᎩᎠᎵᏥᎵᏯᎡᏆᏙᎵᎡᏍᏙᏂᏯᎢᏥᏈᎢᎡ" +
+ "ᎵᏟᏯᎠᏂᏍᏆᏂᏱᏫᏂᎦᏙᎯᏫᏥᏩᎩ ᏚᎦᏚᏛᎢᎠᏰᏟ ᏧᎾᎵᎪᎯ ᎾᎿ ᎹᎢᏉᏂᏏᏯᏪᎶ ᏚᎦᏚᏛᎢᎦᎸᏥᏱᎦᏉᏂᎩᎵᏏᏲᏋᎾᏓᏣ" +
+ "ᎠᏥᎢᎠᏂᎦᎸᏥ ᎩᎠᎬᏂᏏᎦᎠᎾᏥᏆᎵᏓᎢᏤᏍᏛᏱᎦᎹᏈᎢᎠᎫᏇᏩᏓᎷᏇᎡᏆᏙᎵᎠᎵ ᎩᎢᏂᎪᎢᎯᏧᎦᏃᏮ ᏣᏥᏱ ᎠᎴ ᎾᏍᎩ " +
+ "ᏧᎦᏃᏮ ᎠᏍᏛᎭᏟ ᏚᎦᏚᏛᏩᏔᎹᎳᏆᎻᎫᏇ-ᏈᏌᎤᏫᎦᏯᎾᎰᏂᎩ ᎪᏂᎩᎲᏗ ᎤᎦᏚᏛᎢ ᎠᎴ ᎺᎩᏓᎾᎵᏗ ᏚᎦᏚᏛᎢᎧᎶᎡᏏ" +
+ "ᎠᎮᎢᏘᎲᏂᎦᎵᎢᏂᏙᏂᏍᏯᎠᎢᎴᏂᏗᎢᏏᎵᏱᎤᏍᏗ ᎤᎦᏚᏛᎢ ᎾᎿ ᎠᏍᎦᏯᎢᏅᏗᎾᏈᏗᏏ ᏴᏫᏯ ᎠᎺᏉ ᎢᎬᎾᏕᏅᎢᎳᎩᎢᎴ" +
+ "ᏂᏧᏁᏍᏓᎸᎯᏲᎶᏨᎵᏏᏣᎺᎢᎧᏦᏓᏂᏣᏩᏂᏏᎨᏂᏯᎩᎵᏣᎢᏍᎧᎹᏉᏗᎠᏂᎧᎵᏆᏘᎪᎼᎳᏍᎠᏰᏟ ᎾᎿ ᎨᏥᎸᏉᏗ ᎠᏂᏪᏌ ᎠᎴ " +
+ "ᎠᏂᏁᏫᏍᏧᏴᏢ ᎪᎵᎠᏧᎦᏃᏮ ᎪᎵᎠᎫᏪᎢᏘᎨᎢᎹᏂ ᏚᎦᏚᏛᎢᎧᏎᎧᏍᏕᏂᎴᎣᏍᎴᏆᎾᏂᎵᎦᏗᏂᏍᏓᏂᏍᎵ ᎳᏂᎧᎳᏈᎵᏯᎴᏐ" +
+ "ᏙᎵᏗᏪᏂᎠᎸᎧᏎᏋᎩᎳᏘᏫᎠᎵᏈᏯᎼᎶᎪᎹᎾᎪᎹᎵᏙᏫᎠᎼᏂᏔᏁᎦᎶᎠᏥᎸᏉᏗ ᏡᏡᎹᏓᎦᏍᎧᎵᎹᏌᎵ ᏚᎪᏚᏛᎹᏏᏙᏂᎢᎠᎹᎵᎹ" +
+ "ᏯᎹᎵᎹᏂᎪᎵᎠᎹᎧᎣ (ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎢᎬᎾᏕᎾ) ᏣᎢᎾᏍᎩ ᎤᏴᏢ ᏗᏜ ᎹᎵᎠᎾ ᏚᎦᏚᏛᎹᏘᏂᎨᎹᏘᎢᏯᎹ" +
+ "ᏂᏘᏌᎳᏗᎹᎵᏔᎼᎵᏏᎥᏍᎹᎵᏗᏫᏍᎹᎳᏫᏍᏆᏂᏱᎹᎴᏏᎢᎠᎼᏎᎻᏇᎩᎾᎻᏈᎢᏯᎢᏤ ᎧᎵᏙᏂᎠᏂᏃᎵᏬᎵᎩ ᎤᎦᏚᏛᎢᏂᏥᎵᏯᏂᎧ" +
+ "ᎳᏆᏁᏛᎳᏂᏃᏪᏁᏆᎵᏃᎤᎷᏂᏳᎢᏤ ᏏᎢᎴᏂᏗᎣᎺᏂᏆᎾᎹᏇᎷᎠᏂᎦᎸᏣ ᏆᎵᏂᏏᎠᏆᏇ ᎢᏤ ᎩᏂᎠᏂᏈᎵᎩᏃᏆᎩᏍᏖᏂᏉᎳᏂᏎ" +
+ "ᏂᏘ ᏈᏓ ᎠᎴ ᎻᏇᎶᏂᏈᎧᎵᏂ ᎤᎦᏚᏛᎢᏇᎡᏙ ᎵᎢᎪᏆᎴᏍᏗᏂᎠᏂ ᏄᎬᏫᏳᏌᏕᎩᏉᏥᎦᎳᏆᎴᎠᏫᏆᎳᏇᎢᏯᎧᏔᎵᎶᎹᏂᏯᏒ" +
+ "ᏈᏯᏲᏂᎢᎶᏩᏂᏓᏌᎤᏗ ᎡᎴᏈᎠᏐᎶᎹᏂ ᏚᎦᏚᏛᎢᏏᎡᏥᎵᏍᏑᏕᏂᏍᏫᏕᏂᏏᏂᎦᏉᎵᎠᏥᎸᏉᏗ ᎮᎵᎾᏍᎶᏫᏂᎠᏍᎶᏩᎩᎠᏏᎡᎳ" +
+ " ᎴᎣᏂᎠᎹᏰᏟᏄᏬᎵᏍᏛᎾ ᎤᏔᏂᏗᎦᏙᎯᎡᎶᎯᏧᏴᏢ ᎠᎺᎵᎦᏧᎦᏃᏮ ᎠᎺᎵᎦᎠᎺᎵᎦᎢ",
+ []uint16{ // 273 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000c, 0x0042, 0x0057, 0x0071, 0x007d, 0x008c,
+ 0x009b, 0x009b, 0x00a7, 0x00b6, 0x00c8, 0x00de, 0x00ea, 0x00f6,
+ 0x00ff, 0x011b, 0x012d, 0x014d, 0x0159, 0x016b, 0x017a, 0x018a,
+ 0x0199, 0x01a8, 0x01b4, 0x01c0, 0x01dc, 0x01e5, 0x01ee, 0x01fa,
+ 0x01fa, 0x0206, 0x021c, 0x0225, 0x023b, 0x0247, 0x0253, 0x025c,
+ 0x0265, 0x0287, 0x0290, 0x02b6, 0x02ce, 0x02d7, 0x02f7, 0x031c,
+ 0x0322, 0x032e, 0x0340, 0x0352, 0x0352, 0x0362, 0x0368, 0x0387,
+ 0x03ae, 0x03d3, 0x03df, 0x03f2, 0x03fe, 0x03fe, 0x0407, 0x0413,
+ // Entry 40 - 7F
+ 0x041f, 0x043b, 0x044a, 0x044a, 0x0456, 0x0465, 0x0471, 0x0471,
+ 0x047d, 0x048f, 0x048f, 0x048f, 0x049e, 0x04a4, 0x04ba, 0x04ed,
+ 0x0503, 0x050f, 0x0518, 0x0524, 0x052d, 0x0539, 0x054f, 0x0558,
+ 0x0561, 0x056d, 0x057c, 0x058b, 0x0591, 0x059d, 0x05b9, 0x05c2,
+ 0x0613, 0x061f, 0x0625, 0x0638, 0x0641, 0x0654, 0x0694, 0x0694,
+ 0x06a3, 0x06ac, 0x06b8, 0x06b8, 0x06ca, 0x06d9, 0x06e5, 0x0712,
+ 0x071e, 0x074b, 0x0754, 0x075d, 0x076f, 0x0775, 0x077e, 0x078a,
+ 0x0793, 0x079f, 0x07a8, 0x07b7, 0x07c9, 0x07d5, 0x07e1, 0x0825,
+ // Entry 80 - BF
+ 0x0838, 0x084e, 0x085a, 0x0876, 0x0888, 0x0891, 0x089d, 0x089d,
+ 0x08b2, 0x08c2, 0x08ce, 0x08d7, 0x08e6, 0x08f5, 0x0901, 0x090a,
+ 0x0913, 0x091c, 0x092b, 0x093d, 0x0953, 0x0965, 0x097b, 0x098d,
+ 0x0993, 0x099f, 0x09ae, 0x09f9, 0x0a2d, 0x0a39, 0x0a45, 0x0a57,
+ 0x0a60, 0x0a6f, 0x0a7e, 0x0a87, 0x0a93, 0x0aa2, 0x0ab1, 0x0ac0,
+ 0x0ad9, 0x0ad9, 0x0af8, 0x0b04, 0x0b10, 0x0b1c, 0x0b22, 0x0b2b,
+ 0x0b34, 0x0b3a, 0x0b50, 0x0b59, 0x0b62, 0x0b68, 0x0b87, 0x0b9b,
+ 0x0bad, 0x0bbc, 0x0bc5, 0x0be9, 0x0c05, 0x0c18, 0x0c43, 0x0c4f,
+ // Entry C0 - FF
+ 0x0c5b, 0x0c6a, 0x0c73, 0x0c73, 0x0c73, 0x0c7f, 0x0c88, 0x0c91,
+ 0x0c9d, 0x0cb3, 0x0ccf, 0x0cde, 0x0ce7, 0x0cf3, 0x0d02, 0x0d1b,
+ 0x0d2a, 0x0d2a, 0x0d39, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c,
+ 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c,
+ 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c,
+ 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c, 0x0d4c,
+ 0x0d4c, 0x0d4c, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58,
+ 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d58,
+ // Entry 100 - 13F
+ 0x0d58, 0x0d58, 0x0d58, 0x0d58, 0x0d80, 0x0d89, 0x0d89, 0x0d9f,
+ 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8, 0x0db8,
+ 0x0dc7,
+ },
+ },
+ { // ckb
+ "ئەورووپای باشووریئاسیای ناوەندیئاسیای ڕۆژاوا",
+ []uint16{ // 286 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 100 - 13F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x0021,
+ 0x0021, 0x0021, 0x0021, 0x0021, 0x003c, 0x0055,
+ },
+ },
+ { // cs
+ csRegionStr,
+ csRegionIdx,
+ },
+ { // cy
+ "Ynys AscensionAndorraEmiradau Arabaidd UnedigAfghanistanAntigua a Barbud" +
+ "aAnguillaAlbaniaArmeniaYnysoedd Caribî yr IseldiroeddAngolaAntarctic" +
+ "aYr ArianninSamoa AmericaAwstriaAwstraliaArubaYnysoedd ÅlandAzerbaij" +
+ "anBosnia a HercegovinaBarbadosBangladeshGwlad BelgBurkina FasoBwlgar" +
+ "iaBahrainBurundiBeninSaint BarthélemyBermudaBruneiBolifiaAntilles yr" +
+ " IseldiroeddBrasilY BahamasBhutanYnys BouvetBotswanaBelarwsBelizeCan" +
+ "adaYnysoedd Cocos (Keeling)Y Congo - KinshasaGweriniaeth Canolbarth " +
+ "AffricaY Congo - BrazzavilleY SwistirCôte d’IvoireYnysoedd CookChile" +
+ "CamerŵnTsieinaColombiaYnys ClippertonCosta RicaCiwbaCabo VerdeCuraça" +
+ "oYnys y NadoligCyprusGweriniaeth TsiecYr AlmaenDiego GarciaDjiboutiD" +
+ "enmarcDominicaGweriniaeth DominicaAlgeriaCeuta a MelillaEcuadorEston" +
+ "iaYr AifftGorllewin SaharaEritreaSbaenEthiopiaYr Undeb EwropeaiddY F" +
+ "findirFijiYnysoedd y Falkland/MalvinasMicronesiaYnysoedd FfaroFfrain" +
+ "cGabonY Deyrnas UnedigGrenadaGeorgiaGuyane FfrengigYnys y GarnGhanaG" +
+ "ibraltarYr Ynys LasGambiaGuinéeGuadeloupeGuinea GyhydeddolGwlad Groe" +
+ "gDe Georgia ac Ynysoedd Sandwich y DeGuatemalaGuamGuiné-BissauGuyana" +
+ "Hong Kong RhGA TsieinaYnys Heard ac Ynysoedd McDonaldHondurasCroatia" +
+ "HaitiHwngariYr Ynysoedd DedwyddIndonesiaIwerddonIsraelYnys ManawIndi" +
+ "aTiriogaeth Brydeinig Cefnfor IndiaIracIranGwlad yr IâYr EidalJersey" +
+ "JamaicaGwlad IorddonenJapanKenyaKyrgyzstanCambodiaKiribatiComorosSai" +
+ "nt Kitts a NevisGogledd KoreaDe KoreaKuwaitYnysoedd CaymanKazakstanL" +
+ "aosLibanusSaint LuciaLiechtensteinSri LankaLiberiaLesothoLithuaniaLw" +
+ "csembwrgLatfiaLibyaMorocoMonacoMoldofaMontenegroSaint MartinMadagasc" +
+ "arYnysoedd MarshallMacedoniaMaliMyanmar (Burma)MongoliaMacau RhGA Ts" +
+ "ieinaYnysoedd Gogledd MarianaMartiniqueMauritaniaMontserratMaltaMaur" +
+ "itiusY MaldivesMalawiMecsicoMalaysiaMozambiqueNamibiaCaledonia Newyd" +
+ "dNigerYnys NorfolkNigeriaNicaraguaYr IseldiroeddNorwyNepalNauruNiueS" +
+ "eland NewyddOmanPanamaPeriwPolynesia FfrengigPapua Guinea NewyddY Ph" +
+ "ilipinauPakistanGwlad PwylSaint-Pierre-et-MiquelonYnysoedd PitcairnP" +
+ "uerto RicoTiriogaethau PalesteinaiddPortiwgalPalauParaguayQatarOcean" +
+ "ia BellennigRéunionRwmaniaSerbiaRwsiaRwandaSaudi ArabiaYnysoedd Solo" +
+ "monSeychellesSwdanSwedenSingaporeSaint HelenaSlofeniaSvalbard a Jan " +
+ "MayenSlofaciaSierra LeoneSan MarinoSenegalSomaliaSurinameDe SwdanSão" +
+ " Tomé a PríncipeEl SalvadorSint MaartenSyriaGwlad SwaziTristan da Cu" +
+ "nhaYnysoedd Turks a CaicosTchadTiroedd Deheuol ac Antarctig FfraincT" +
+ "ogoGwlad ThaiTajikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTwr" +
+ "ciTrinidad a TobagoTuvaluTaiwanTanzaniaWcráinUgandaYnysoedd Pellenni" +
+ "g UDAYr Unol DaleithiauUruguayUzbekistanY FaticanSaint Vincent a’r G" +
+ "renadinesVenezuelaYnysoedd Gwyryf PrydainYnysoedd Gwyryf yr Unol Dal" +
+ "eithiauFietnamVanuatuWallis a FutunaSamoaKosovoYemenMayotteDe Affric" +
+ "aZambiaZimbabweRhanbarth AnhysbysY BydAffricaGogledd AmericaDe Ameri" +
+ "caOceaniaGorllewin AffricaCanolbarth AmericaDwyrain AffricaGogledd A" +
+ "ffricaCanol AffricaDeheudir AffricaYr AmerigAmerica i’r Gogledd o Fe" +
+ "csicoY CaribîDwyrain AsiaDe AsiaDe-Ddwyrain AsiaDe EwropAwstralasiaM" +
+ "elanesiaRhanbarth MicronesiaPolynesiaAsiaCanol AsiaGorllewin AsiaEwr" +
+ "opDwyrain EwropGogledd EwropGorllewin EwropAmerica Ladin",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x0015, 0x002d, 0x0038, 0x0049, 0x0051, 0x0058,
+ 0x005f, 0x007e, 0x0084, 0x008e, 0x0099, 0x00a6, 0x00ad, 0x00b6,
+ 0x00bb, 0x00ca, 0x00d4, 0x00e8, 0x00f0, 0x00fa, 0x0104, 0x0110,
+ 0x0118, 0x011f, 0x0126, 0x012b, 0x013c, 0x0143, 0x0149, 0x0150,
+ 0x0167, 0x016d, 0x0176, 0x017c, 0x0187, 0x018f, 0x0196, 0x019c,
+ 0x01a2, 0x01ba, 0x01cc, 0x01ea, 0x01ff, 0x0208, 0x0218, 0x0225,
+ 0x022a, 0x0232, 0x0239, 0x0241, 0x0250, 0x025a, 0x025f, 0x0269,
+ 0x0271, 0x027f, 0x0285, 0x0296, 0x029f, 0x02ab, 0x02b3, 0x02ba,
+ // Entry 40 - 7F
+ 0x02c2, 0x02d6, 0x02dd, 0x02ec, 0x02f3, 0x02fa, 0x0302, 0x0312,
+ 0x0319, 0x031e, 0x0326, 0x0339, 0x0342, 0x0346, 0x0362, 0x036c,
+ 0x037a, 0x0381, 0x0386, 0x0396, 0x039d, 0x03a4, 0x03b3, 0x03be,
+ 0x03c3, 0x03cc, 0x03d7, 0x03dd, 0x03e4, 0x03ee, 0x03ff, 0x040a,
+ 0x042e, 0x0437, 0x043b, 0x0448, 0x044e, 0x0464, 0x0483, 0x048b,
+ 0x0492, 0x0497, 0x049e, 0x04b1, 0x04ba, 0x04c2, 0x04c8, 0x04d2,
+ 0x04d7, 0x04f9, 0x04fd, 0x0501, 0x050d, 0x0515, 0x051b, 0x0522,
+ 0x0531, 0x0536, 0x053b, 0x0545, 0x054d, 0x0555, 0x055c, 0x056f,
+ // Entry 80 - BF
+ 0x057c, 0x0584, 0x058a, 0x0599, 0x05a2, 0x05a6, 0x05ad, 0x05b8,
+ 0x05c5, 0x05ce, 0x05d5, 0x05dc, 0x05e5, 0x05ef, 0x05f5, 0x05fa,
+ 0x0600, 0x0606, 0x060d, 0x0617, 0x0623, 0x062d, 0x063e, 0x0647,
+ 0x064b, 0x065a, 0x0662, 0x0674, 0x068c, 0x0696, 0x06a0, 0x06aa,
+ 0x06af, 0x06b8, 0x06c2, 0x06c8, 0x06cf, 0x06d7, 0x06e1, 0x06e8,
+ 0x06f8, 0x06fd, 0x0709, 0x0710, 0x0719, 0x0727, 0x072c, 0x0731,
+ 0x0736, 0x073a, 0x0747, 0x074b, 0x0751, 0x0756, 0x0768, 0x077b,
+ 0x0787, 0x078f, 0x0799, 0x07b1, 0x07c2, 0x07cd, 0x07e7, 0x07f0,
+ // Entry C0 - FF
+ 0x07f5, 0x07fd, 0x0802, 0x0813, 0x081b, 0x0822, 0x0828, 0x082d,
+ 0x0833, 0x083f, 0x084f, 0x0859, 0x085e, 0x0864, 0x086d, 0x0879,
+ 0x0881, 0x0895, 0x089d, 0x08a9, 0x08b3, 0x08ba, 0x08c1, 0x08c9,
+ 0x08d1, 0x08e7, 0x08f2, 0x08fe, 0x0903, 0x090e, 0x091e, 0x0935,
+ 0x093a, 0x095e, 0x0962, 0x096c, 0x0976, 0x097d, 0x0988, 0x0994,
+ 0x099b, 0x09a0, 0x09a5, 0x09b6, 0x09bc, 0x09c2, 0x09ca, 0x09d1,
+ 0x09d7, 0x09ed, 0x09ff, 0x0a06, 0x0a10, 0x0a19, 0x0a37, 0x0a40,
+ 0x0a57, 0x0a79, 0x0a80, 0x0a87, 0x0a96, 0x0a9b, 0x0aa1, 0x0aa6,
+ // Entry 100 - 13F
+ 0x0aad, 0x0ab7, 0x0abd, 0x0ac5, 0x0ad7, 0x0adc, 0x0ae3, 0x0af2,
+ 0x0afc, 0x0b03, 0x0b14, 0x0b26, 0x0b35, 0x0b44, 0x0b51, 0x0b61,
+ 0x0b6a, 0x0b89, 0x0b92, 0x0b9e, 0x0ba5, 0x0bb5, 0x0bbd, 0x0bc8,
+ 0x0bd1, 0x0be5, 0x0bee, 0x0bf2, 0x0bfc, 0x0c0a, 0x0c0f, 0x0c1c,
+ 0x0c29, 0x0c38, 0x0c45,
+ },
+ },
+ { // da
+ daRegionStr,
+ daRegionIdx,
+ },
+ { // dav
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // de
+ deRegionStr,
+ deRegionIdx,
+ },
+ { // de-CH
+ "BangladeshBruneiBotswanaWeissrusslandGrossbritannienMarshall-InselnÄusse" +
+ "res OzeanienSalomon-InselnZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0018, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ // Entry 40 - 7F
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ // Entry 80 - BF
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034,
+ 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0043, 0x0043,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
+ 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,
+ // Entry C0 - FF
+ 0x0043, 0x0043, 0x0043, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
+ 0x0055, 0x0055, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063,
+ // Entry 100 - 13F
+ 0x0063, 0x0063, 0x0063, 0x006b,
+ },
+ },
+ { // dje
+ "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" +
+ "lbaaniArmeeniHollandu Antiiyey LabooAngoolaArgentineAmeriki SamoaOtr" +
+ "išiOstraaliAruubaAzerbaayijaŋBosni nda HerzegovineBarbaadosBangladeš" +
+ "iBelgiikiBurkina fasoBulgaariBahareenBurundiBeniŋBermudaBruuneeBooli" +
+ "viBreezilBahamasBuutaŋBotswaanaBilorišiBeliiziKanaadaKongoo demookar" +
+ "atiki labooCentraafriki koyraKongooSwisuKudwarKuuk gungeyŠiiliKameru" +
+ "unŠiinKolombiKosta rikaKuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuu" +
+ "tiDanemarkDoominiki labooAlžeeriEkwateerEstooniMisraEritreeEspaaɲeEc" +
+ "ioopiFinlanduFijiKalkan gungeyMikroneziFaransiGaabonAlbaasalaama Mar" +
+ "gantaGrenaadaGorgiFaransi GuyaanGaanaGibraltarGrinlandGambiGineGwade" +
+ "luupGinee EkwatorialGreeceGwatemaalaGuamGine-BissoGuyaaneHondurasKrw" +
+ "aasiHaitiHungaariIndoneeziIrlanduIsrayelIndu labooBritiši Indu teeko" +
+ "o laamaIraakIraanAyselandItaaliJamaayikUrdunJaapoŋKeeniyaKyrgyzstank" +
+ "amboogiKiribaatiKomoorSeŋ Kitts nda NevisGurma KooreeHawsa KooreeKuw" +
+ "eetKayman gungeyKaazakstanLaawosLubnaanSeŋ LussiaLiechtensteinSrilan" +
+ "kaLiberiaLeesotoLituaaniLuxembourgLetooniLiibiMaarokMonakoMoldoviMad" +
+ "agascarMaršal gungeyMaacedooniMaaliMaynamarMongooliMariana Gurma Gun" +
+ "geyMartiniikiMooritaaniMontserratMaltaMooris gungeyMaldiivuMalaawiMe" +
+ "xikiMaleeziMozambikNaamibiKaaledooni TaagaaNižerNorfolk GungooNaajir" +
+ "iiaNikaragwaHollanduNorveejNeepalNauruNiueZeelandu TaagaOmaanPanamaP" +
+ "eeruFaransi PolineeziPapua Ginee TaagaFilipinePaakistanPoloɲeSeŋ Piy" +
+ "er nda MikelonPitikarinPorto RikoPalestine Dangay nda GaazaPortugaal" +
+ "PaluParaguweyKataarReenioŋRumaaniIriši labooRwandaSaudiyaSolomon Gun" +
+ "geySeešelSuudaŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSeera LeonSan" +
+ " MarinoSenegalSomaaliSurinaamSao Tome nda PrinsipeSalvador labooSuur" +
+ "iaSwazilandTurk nda Kayikos GungeyCaaduTogoTaayilandTaažikistanTokel" +
+ "auTimoor hawsaTurkmenistaŋTuniziTongaTurkiTrinidad nda TobaagoTuvalu" +
+ "TaayiwanTanzaaniUkreenUgandaAmeriki Laabu MarganteyUruguweyUzbeekist" +
+ "anVaatikan LaamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiši Virgin gu" +
+ "ngeyAmeerik Virgin GungeyVietnaamVanautuWallis nda FutunaSamoaYamanM" +
+ "ayootiHawsa Afriki LabooZambiZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e,
+ 0x0055, 0x006c, 0x0073, 0x0073, 0x007c, 0x0089, 0x0090, 0x0098,
+ 0x009e, 0x009e, 0x00ab, 0x00c0, 0x00c9, 0x00d4, 0x00dc, 0x00e8,
+ 0x00f0, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0113, 0x011a,
+ 0x011a, 0x0121, 0x0128, 0x012f, 0x012f, 0x0138, 0x0141, 0x0148,
+ 0x014f, 0x014f, 0x0169, 0x017b, 0x0181, 0x0186, 0x018c, 0x0197,
+ 0x019d, 0x01a5, 0x01aa, 0x01b1, 0x01b1, 0x01bb, 0x01c0, 0x01ce,
+ 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e5, 0x01e5, 0x01ec, 0x01f4,
+ // Entry 40 - 7F
+ 0x01f4, 0x0203, 0x020b, 0x020b, 0x0213, 0x021a, 0x021f, 0x021f,
+ 0x0226, 0x022e, 0x0235, 0x0235, 0x023d, 0x0241, 0x024e, 0x0257,
+ 0x0257, 0x025e, 0x0264, 0x0279, 0x0281, 0x0286, 0x0294, 0x0294,
+ 0x0299, 0x02a2, 0x02aa, 0x02af, 0x02b3, 0x02bc, 0x02cc, 0x02d2,
+ 0x02d2, 0x02dc, 0x02e0, 0x02ea, 0x02f1, 0x02f1, 0x02f1, 0x02f9,
+ 0x0300, 0x0305, 0x030d, 0x030d, 0x0316, 0x031d, 0x0324, 0x0324,
+ 0x032e, 0x0348, 0x034d, 0x0352, 0x035a, 0x0360, 0x0360, 0x0368,
+ 0x036d, 0x0374, 0x037b, 0x0385, 0x038d, 0x0396, 0x039c, 0x03b0,
+ // Entry 80 - BF
+ 0x03bc, 0x03c8, 0x03ce, 0x03db, 0x03e5, 0x03eb, 0x03f2, 0x03fd,
+ 0x040a, 0x0412, 0x0419, 0x0420, 0x0428, 0x0432, 0x0439, 0x043e,
+ 0x0444, 0x044a, 0x0451, 0x0451, 0x0451, 0x045b, 0x0469, 0x0473,
+ 0x0478, 0x0480, 0x0488, 0x0488, 0x049c, 0x04a6, 0x04b0, 0x04ba,
+ 0x04bf, 0x04cc, 0x04d4, 0x04db, 0x04e1, 0x04e8, 0x04f0, 0x04f7,
+ 0x0508, 0x050e, 0x051c, 0x0525, 0x052e, 0x0536, 0x053d, 0x0543,
+ 0x0548, 0x054c, 0x055a, 0x055f, 0x0565, 0x056a, 0x057b, 0x058c,
+ 0x0594, 0x059d, 0x05a4, 0x05ba, 0x05c3, 0x05cd, 0x05e7, 0x05f0,
+ // Entry C0 - FF
+ 0x05f4, 0x05fd, 0x0603, 0x0603, 0x060b, 0x0612, 0x0612, 0x061e,
+ 0x0624, 0x062b, 0x0639, 0x0640, 0x0647, 0x064d, 0x0655, 0x0660,
+ 0x0668, 0x0668, 0x0670, 0x067a, 0x0684, 0x068b, 0x0692, 0x069a,
+ 0x069a, 0x06af, 0x06bd, 0x06bd, 0x06c3, 0x06cc, 0x06cc, 0x06e3,
+ 0x06e8, 0x06e8, 0x06ec, 0x06f5, 0x0701, 0x0708, 0x0714, 0x0721,
+ 0x0727, 0x072c, 0x0731, 0x0745, 0x074b, 0x0753, 0x075b, 0x0761,
+ 0x0767, 0x0767, 0x077e, 0x0786, 0x0791, 0x079f, 0x07b8, 0x07c4,
+ 0x07da, 0x07ef, 0x07f7, 0x07fe, 0x080f, 0x0814, 0x0814, 0x0819,
+ // Entry 100 - 13F
+ 0x0820, 0x0832, 0x0837, 0x083f,
+ },
+ },
+ { // dsb
+ "AscensionAndorraZjadnośone arabiske emiratyAfghanistanAntigua a BarbudaA" +
+ "nguillaAlbańskaArmeńskaAngolaAntarktisArgentinskaAmeriska SamoaAwstr" +
+ "iskaAwstralskaArubaÅlandAzerbajdžanBosniska a HercegowinaBarbadosBan" +
+ "gladešBelgiskaBurkina FasoBulgarskaBahrainBurundiBeninSt. Barthélemy" +
+ "BermudyBruneiBoliwiskaKaribiska NižozemskaBrazilskaBahamyBhutanBouve" +
+ "towa kupaBotswanaBěłoruskaBelizeKanadaKokosowe kupyKongo-KinshasaCen" +
+ "tralnoafriska republikaKongo-BrazzavilleŠwicarskaCôte d’IvoireCookow" +
+ "e kupyChilskaKamerunChinaKolumbiskaClippertonowa kupaKosta RikaKubaK" +
+ "ap VerdeCuraçaoGódowne kupyCypriskaČeska republikaNimskaDiego Garcia" +
+ "DžibutiDańskaDominikaDominikańska republikaAlgeriskaCeuta a MelillaE" +
+ "kwadorEstniskaEgyptojskaPódwjacorna SaharaEritrejaŠpańskaEtiopiskaEu" +
+ "ropska unijaFinskaFidžiFalklandske kupyMikroneziskaFäröjeFrancojskaG" +
+ "abunZjadnośone kralejstwoGrenadaGeorgiskaFrancojska GuyanaGuernseyGh" +
+ "anaGibraltarGrönlandskaGambijaGinejaGuadeloupeEkwatorialna GinejaGri" +
+ "chiskaPódpołdnjowa Georgiska a Pódpołdnjowe Sandwichowe kupyGuatemal" +
+ "aGuamGineja-BissauGuyanaWósebna zastojnstwowa cona HongkongHeardowa " +
+ "kupa a McDonaldowe kupyHondurasChorwatskaHaitiHungorskaKanariske kup" +
+ "yIndoneziskaIrskaIsraelManIndiskaBritiski indiskooceaniski teritoriu" +
+ "mIrakIranIslandskaItalskaJerseyJamaikaJordaniskaJapańskaKeniaKirgizi" +
+ "stanKambodžaKiribatiKomorySt. Kitts a NevisPódpołnocna KorejaPódpołd" +
+ "njowa KorejaKuwaitKajmaniske kupyKazachstanLaosLibanonSt. LuciaLiech" +
+ "tensteinSri LankaLiberijaLesothoLitawskaLuxemburgskaLetiskaLibyskaMa" +
+ "rokkoMonacoMoldawskaCarna GóraSt. MartinMadagaskarMarshallowe kupyMa" +
+ "kedońskaMaliMyanmarMongolskaWósebna zastojnstwowa cona MacaoPódpołno" +
+ "cne MarianyMartiniqueMawretańskaMontserratMaltaMauritiusMalediwyMala" +
+ "wiMexikoMalajzijaMosambikNamibijaNowa KaledoniskaNigerNorfolkowa kup" +
+ "aNigerijaNikaraguaNižozemskaNorwegskaNepalNauruNiueNowoseelandskaOma" +
+ "nPanamaPeruFrancojska PolyneziskaPapua-NeuguineaFilipinyPakistanPóls" +
+ "kaSt. Pierre a MiquelonPitcairnowe kupyPuerto RicoPalestinski awtono" +
+ "mny teritoriumPortugalskaPalauParaguayKatarwenkowna OceaniskaRéunion" +
+ "RumuńskaSerbiskaRuskaRuandaSaudi-ArabiskaSalomonySeychelleSudanŠweds" +
+ "kaSingapurSt. HelenaSłowjeńskaSvalbard a Jan MayenSłowakskaSierra Le" +
+ "oneSan MarinoSenegalSomalijaSurinamskaPódpołdnjowy SudanSão Tomé a P" +
+ "ríncipeEl SalvadorSint MaartenSyriskaSwasiskaTristan da CunhaTurks a" +
+ " Caicos kupyČadFrancojski pódpołdnjowy a antarktiski teritoriumTogoT" +
+ "hailandskaTadźikistanTokelauTimor-LesteTurkmeniskaTuneziskaTongaTurk" +
+ "ojskaTrinidad a TobagoTuvaluTaiwanTansanijaUkrainaUgandaAmeriska Oce" +
+ "aniskaZjadnośone staty AmerikiUruguayUzbekistanVatikańske městoSt. V" +
+ "incent a GrenadinyVenezuelaBritiske kněžniske kupyAmeriske kněžniske" +
+ " kupyVietnamVanuatuWallis a FutunaSamoaKosowoJemenMayottePódpołdnjow" +
+ "a Afrika (Republika)SambijaSimbabwenjeznaty regionswětAfrikaPódpołno" +
+ "cna AmerikaPódpołdnjowa AmerikaOceaniskaPódwjacorna AfrikaSrjejźna A" +
+ "merikapódzajtšna Afrikapódpołnocna Afrikasrjejźna Afrikapódpołdnjowa" +
+ " AfrikaAmerikapódpołnocny ameriski kontinentKaribiskapódzajtšna Azij" +
+ "apódpołdnjowa Azijakrotkozajtšna Azijapódpołdnjowa EuropaAwstralazij" +
+ "aMelaneziskaMikroneziska (kupowy region)PolyneziskaAzijacentralna Az" +
+ "ijapódwjacorna AzijaEuropapódzajtšna Europapódpołnocna Europapódwjac" +
+ "orna EuropaŁatyńska Amerika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0048, 0x0050, 0x0059,
+ 0x0062, 0x0062, 0x0068, 0x0071, 0x007c, 0x008a, 0x0093, 0x009d,
+ 0x00a2, 0x00a8, 0x00b4, 0x00ca, 0x00d2, 0x00dc, 0x00e4, 0x00f0,
+ 0x00f9, 0x0100, 0x0107, 0x010c, 0x011b, 0x0122, 0x0128, 0x0131,
+ 0x0146, 0x014f, 0x0155, 0x015b, 0x0169, 0x0171, 0x017c, 0x0182,
+ 0x0188, 0x0195, 0x01a3, 0x01bd, 0x01ce, 0x01d8, 0x01e8, 0x01f4,
+ 0x01fb, 0x0202, 0x0207, 0x0211, 0x0223, 0x022d, 0x0231, 0x023a,
+ 0x0242, 0x024f, 0x0257, 0x0267, 0x026d, 0x0279, 0x0281, 0x0288,
+ // Entry 40 - 7F
+ 0x0290, 0x02a7, 0x02b0, 0x02bf, 0x02c6, 0x02ce, 0x02d8, 0x02eb,
+ 0x02f3, 0x02fc, 0x0305, 0x0313, 0x0319, 0x031f, 0x032f, 0x033b,
+ 0x0343, 0x034d, 0x0352, 0x0368, 0x036f, 0x0378, 0x0389, 0x0391,
+ 0x0396, 0x039f, 0x03ab, 0x03b2, 0x03b8, 0x03c2, 0x03d5, 0x03de,
+ 0x0418, 0x0421, 0x0425, 0x0432, 0x0438, 0x045c, 0x047c, 0x0484,
+ 0x048e, 0x0493, 0x049c, 0x04aa, 0x04b5, 0x04ba, 0x04c0, 0x04c3,
+ 0x04ca, 0x04ee, 0x04f2, 0x04f6, 0x04ff, 0x0506, 0x050c, 0x0513,
+ 0x051d, 0x0526, 0x052b, 0x0536, 0x053f, 0x0547, 0x054d, 0x055e,
+ // Entry 80 - BF
+ 0x0572, 0x0587, 0x058d, 0x059c, 0x05a6, 0x05aa, 0x05b1, 0x05ba,
+ 0x05c7, 0x05d0, 0x05d8, 0x05df, 0x05e7, 0x05f3, 0x05fa, 0x0601,
+ 0x0608, 0x060e, 0x0617, 0x0622, 0x062c, 0x0636, 0x0646, 0x0651,
+ 0x0655, 0x065c, 0x0665, 0x0686, 0x069b, 0x06a5, 0x06b1, 0x06bb,
+ 0x06c0, 0x06c9, 0x06d1, 0x06d7, 0x06dd, 0x06e6, 0x06ee, 0x06f6,
+ 0x0706, 0x070b, 0x071a, 0x0722, 0x072b, 0x0736, 0x073f, 0x0744,
+ 0x0749, 0x074d, 0x075b, 0x075f, 0x0765, 0x0769, 0x077f, 0x078e,
+ 0x0796, 0x079e, 0x07a5, 0x07ba, 0x07ca, 0x07d5, 0x07f5, 0x0800,
+ // Entry C0 - FF
+ 0x0805, 0x080d, 0x0812, 0x0824, 0x082c, 0x0835, 0x083d, 0x0842,
+ 0x0848, 0x0856, 0x085e, 0x0867, 0x086c, 0x0874, 0x087c, 0x0886,
+ 0x0892, 0x08a6, 0x08b0, 0x08bc, 0x08c6, 0x08cd, 0x08d5, 0x08df,
+ 0x08f3, 0x0909, 0x0914, 0x0920, 0x0927, 0x092f, 0x093f, 0x0952,
+ 0x0956, 0x0988, 0x098c, 0x0997, 0x09a3, 0x09aa, 0x09b5, 0x09c0,
+ 0x09c9, 0x09ce, 0x09d7, 0x09e8, 0x09ee, 0x09f4, 0x09fd, 0x0a04,
+ 0x0a0a, 0x0a1c, 0x0a35, 0x0a3c, 0x0a46, 0x0a58, 0x0a6f, 0x0a78,
+ 0x0a91, 0x0aaa, 0x0ab1, 0x0ab8, 0x0ac7, 0x0acc, 0x0ad2, 0x0ad7,
+ // Entry 100 - 13F
+ 0x0ade, 0x0aff, 0x0b06, 0x0b0e, 0x0b1d, 0x0b22, 0x0b28, 0x0b3d,
+ 0x0b53, 0x0b5c, 0x0b6f, 0x0b80, 0x0b93, 0x0ba7, 0x0bb7, 0x0bcc,
+ 0x0bd3, 0x0bf3, 0x0bfc, 0x0c0e, 0x0c22, 0x0c36, 0x0c4b, 0x0c57,
+ 0x0c62, 0x0c7e, 0x0c89, 0x0c8e, 0x0c9d, 0x0caf, 0x0cb5, 0x0cc8,
+ 0x0cdc, 0x0cef, 0x0d01,
+ },
+ },
+ { // dua
+ "Cameroun",
+ []uint16{ // 50 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0008,
+ },
+ },
+ { // dyo
+ "AndorraAfganistanAntigua di BarbudaAngiiyaAlbaniArmeniAngolaArsantinSamo" +
+ "a yati AmerikOtrisOstraaliaArubaAserbaysanBosni di HersegovinBarbadB" +
+ "angladesBelsikBurukiina FasoBulgariBahraynBurundiBeneBermudBuruneyBo" +
+ "liiviBresilBahamaButanBoswanaBelarusBeliisKanadaMofam demokratik mat" +
+ "i KongoKongoKoddiwarCiliKamerunSiinKolombiKosta RikaKubaKap VerSiipr" +
+ "Mofam mati CekAlmaañJibutiDanmarkDominikaMofam mati DominikAlseriEku" +
+ "adorEstoniEsíptEritreeEspaañEcoopiFinlandFijiFransGabonGrenadaSeorsi" +
+ "GaanaSipraltaarGreenlandGambiGinéGuwadalupGresGuatemalaGuamGiné Bisa" +
+ "auGiyanOndurasKroasiAytiOŋriEndonesiIrlandIsraelEndIrakIranIislandIt" +
+ "aliSamaikSapoŋKeniyaKambojKomorSaŋ LusiaSiri LankaLiberiaMadagaskaar" +
+ "MaliEcinkey yati NoorfokAbari SaudiSudanSingapurSloveniSlovakiSerra " +
+ "LeonSenegalSomaliSalvadoorCadTogoTailand",
+ []uint16{ // 228 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0023, 0x002a, 0x0030,
+ 0x0036, 0x0036, 0x003c, 0x003c, 0x0044, 0x0055, 0x005a, 0x0063,
+ 0x0068, 0x0068, 0x0072, 0x0085, 0x008b, 0x0094, 0x009a, 0x00a8,
+ 0x00af, 0x00b6, 0x00bd, 0x00c1, 0x00c1, 0x00c7, 0x00ce, 0x00d5,
+ 0x00d5, 0x00db, 0x00e1, 0x00e6, 0x00e6, 0x00ed, 0x00f4, 0x00fa,
+ 0x0100, 0x0100, 0x011b, 0x011b, 0x0120, 0x0120, 0x0128, 0x0128,
+ 0x012c, 0x0133, 0x0137, 0x013e, 0x013e, 0x0148, 0x014c, 0x0153,
+ 0x0153, 0x0153, 0x0158, 0x0166, 0x016d, 0x016d, 0x0173, 0x017a,
+ // Entry 40 - 7F
+ 0x0182, 0x0194, 0x019a, 0x019a, 0x01a1, 0x01a7, 0x01ad, 0x01ad,
+ 0x01b4, 0x01bb, 0x01c1, 0x01c1, 0x01c8, 0x01cc, 0x01cc, 0x01cc,
+ 0x01cc, 0x01d1, 0x01d6, 0x01d6, 0x01dd, 0x01e3, 0x01e3, 0x01e3,
+ 0x01e8, 0x01f2, 0x01fb, 0x0200, 0x0205, 0x020e, 0x020e, 0x0212,
+ 0x0212, 0x021b, 0x021f, 0x022b, 0x0230, 0x0230, 0x0230, 0x0237,
+ 0x023d, 0x0241, 0x0246, 0x0246, 0x024e, 0x0254, 0x025a, 0x025a,
+ 0x025d, 0x025d, 0x0261, 0x0265, 0x026c, 0x0271, 0x0271, 0x0277,
+ 0x0277, 0x027d, 0x0283, 0x0283, 0x0289, 0x0289, 0x028e, 0x028e,
+ // Entry 80 - BF
+ 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x0298,
+ 0x0298, 0x02a2, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9,
+ 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02b4, 0x02b4, 0x02b4,
+ 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8,
+ 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8,
+ 0x02b8, 0x02b8, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
+ 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
+ 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
+ // Entry C0 - FF
+ 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc,
+ 0x02cc, 0x02d7, 0x02d7, 0x02d7, 0x02dc, 0x02dc, 0x02e4, 0x02e4,
+ 0x02eb, 0x02eb, 0x02f2, 0x02fc, 0x02fc, 0x0303, 0x0309, 0x0309,
+ 0x0309, 0x0309, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312,
+ 0x0315, 0x0315, 0x0319, 0x0320,
+ },
+ },
+ { // dz
+ "ཨེ་སེན་ཤུན་ཚོ་གླིང༌ཨཱན་དོ་རཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊསཨཕ་གྷ་ནི་སཏཱནཨན་" +
+ "ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌཨང་གི་ལཨཱལ་བེ་ནི་ཡཨར་མི་ནི་ཡཨང་གྷོ་ལའཛམ་གླ" +
+ "ིང་ལྷོ་མཐའི་ཁྱགས་གླིངཨར་ཇེན་ཊི་ནས་མོ་ཨ་ཡུ་ཨེས་ཨེ་མངའ་ཁོངསཨཱོས་ཊྲི་" +
+ "ཡཨཱོས་ཊྲེལ་ལི་ཡཨ་རུ་བཱཨ་ལནཌ་གླིང་ཚོམཨ་ཛར་བྷའི་ཇཱནབྷོས་ནི་ཡ་ ཨེནཌ་ " +
+ "ཧར་ཛི་གྷོ་བི་ནབྷར་བེ་ཌོསབངྒ་ལ་དེཤབྷེལ་ཇམབྷར་ཀི་ན་ ཕེ་སོབུལ་ག་རི་ཡབ" +
+ "ྷ་རེནབྷུ་རུན་ཌིབྷེ་ནིནསེནཊ་ བར་ཐོ་ལོམ་མིའུབར་མུ་ཌབྷྲུ་ནའིབྷེ་ལི་བི" +
+ "་ཡཀེ་རི་བི་ཡེན་ནེ་དར་ལནཌས྄བྲ་ཛིལབྷ་ཧ་མས྄འབྲུགབོའུ་ཝེཊ་མཚོ་གླིངབྷོཙ" +
+ "་ཝ་ནབེལ་ཨ་རུ་སུབྷེ་ལིཛཀེ་ན་ཌཀོ་ཀོས་གླིང་ཚོམཀོང་གྷོ ཀིན་ཤ་སསེན་ཊལ་ " +
+ "ཨཕ་རི་ཀཱན་ རི་པབ་ལིཀཀོང་གྷོ བྷྲ་ཛ་བིལསུ་ཝིཊ་ཛར་ལེནཌཀོ་ཊེ་ ཌི་ཨི་ཝོ" +
+ "་རེཀུག་གླིང་ཚོམཅི་ལིཀེ་མ་རུནརྒྱ་ནགཀོ་ལོམ་བྷི་ཡཀི་ལི་པེར་ཊོན་མཚོ་གླ" +
+ "ིང་ཀོས་ཊ་རི་ཀཀིའུ་བྷཀེཔ་བཱཌཀྱཱུར་ར་ཀོཁི་རིསྟ་མེས་མཚོ་གླིངསཱའི་པྲསཅ" +
+ "ེཀ་ རི་པབ་ལིཀཇཱར་མ་ནིཌི་ཡེ་གོ་གར་སིའོཇི་བྷུ་ཊིཌེན་མཱཀཌོ་མི་ནི་ཀཌོ་" +
+ "མི་ནི་ཀཱན་ རི་པབ་ལིཀཨཱལ་ཇི་རི་ཡསེ་ཨུ་ཏ་ ཨེནཌ་ མེལ་ལི་ལཨེ་ཁྭ་ཌོརཨེས" +
+ "་ཊོ་ནི་ཡཨི་ཇིབཊནུབ་ཕྱོགས་ ས་ཧཱ་རཨེ་རི་ཊྲེ་ཡཨིས་པེནཨི་ཐི་ཡོ་པི་ཡཡུ་" +
+ "རོབ་གཅིག་བསྡོམས་ཚོགས་པཕིན་ལེནཌཕི་ཇིཕལྐ་ལནྜ་གླིང་ཚོམམའི་ཀྲོ་ནི་ཤི་ཡ" +
+ "ཕཱའེ་རོ་གླིང་ཚོམཕྲཱནསགྷ་བྷོནཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམགྲྀ་ན་ཌཇཽར་ཇཱགུའི་ཡ" +
+ "་ན་ ཕྲནས྄་མངའ་ཁོངསགུ་ཨེརྣ་སིགྷ་ནཇིབ་རཱལ་ཊརགིརཱིན་ལནཌ྄གྷེམ་བི་ཡགྷི་" +
+ "ནིགོ་ཌེ་ལུ་པེཨེ་ཀུ་ཊོ་རེལ་ གི་ནིགིརིས྄སཱའུཐ་ཇཽར་ཇཱ་ དང་ སཱའུཐ་སེནཌ" +
+ "྄་ཝིཅ་གླིང་ཚོམགྷོ་ཊ་མ་ལགུ་འམ་ མཚོ་གླིངགྷི་ནི་ བྷི་སཱའུགྷ་ཡ་ནཧོང་ཀོ" +
+ "ང་ཅཱའི་ནཧཱརཌ་མཚོ་གླིང་ དང་ མེཀ་ཌོ་ནལཌ྄་གླིང་ཚོམཧཱན་ཌུ་རཱས྄ཀྲོ་ཨེ་ཤ" +
+ "ཧེ་ཊིཧཱང་གྷ་རིཀ་ནེ་རི་གླིང་ཚོམཨིན་ཌོ་ནེ་ཤི་ཡཨཱ་ཡ་ལེནཌཨིས་ར་ཡེལཨ་ཡུ" +
+ "ལ་ ཨོཕ་ མཱནརྒྱ་གརབྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངསཨི་རཱཀཨི་རཱནཨཱའི" +
+ "ས་ལེནཌཨི་ཊ་ལིཇེར་སིཇཱ་མཻ་ཀཇོར་ཌནཇ་པཱནཀེན་ཡཀིར་གིས་སཏཱནཀམ་བྷོ་ཌི་ཡཀ" +
+ "ི་རི་བ་ཏི་མཚོ་གླིངཀོ་མོ་རོསསེནཊ་ ཀིཊས་ དང་ ནེ་བིསབྱང་ ཀོ་རི་ཡལྷོ་ " +
+ "ཀོ་རི་ཡཀུ་ཝེཊཁེ་མེན་གླིང་ཚོམཀ་ཛགས་སཏཱནལཱ་ཝོསལེ་བ་ནོནསེནཊ་ ལུ་སི་ཡལ" +
+ "ིཀ་ཏནས་ཏ་ཡིནཤྲཱི་ལང་ཀལཱའི་བེ་རི་ཡལཻ་སོ་ཐོལི་ཐུ་ཝེ་ནི་ཡལག་ཛམ་བོརྒལཊ" +
+ "་བི་ཡལི་བི་ཡམོ་རོ་ཀོམོ་ན་ཀོམོལ་དོ་བཱམོན་ཊི་ནེག་རོསེནཊ་ མཱར་ཊིནམ་དཱ" +
+ "་གེས་ཀརམར་ཤེལ་གླིང་ཚོམམ་སེ་ཌོ་ནི་ཡམཱ་ལིམི་ཡཱན་མར་ (བྷར་མ)སོག་པོ་ཡུ" +
+ "ལམཀ་ཨའུ་ཅཱའི་ནབྱང་ཕྱོགས་ཀྱི་མ་ར་ཡ་ན་གླིང་ཚོམམཱར་ཊི་ནིཀམོ་རི་ཊེ་ནི་" +
+ "ཡམོན་ས་རཊམཱལ་ཊམོ་རི་ཤཱསམཱལ་དིབསམ་ལ་ཝིམེཀ་སི་ཀོམ་ལེ་ཤི་ཡམོ་ཛམ་བྷིཀན" +
+ "་མི་བི་ཡནིའུ་ཀ་ལི་དོ་ནི་ཡནཱའི་ཇཱནོར་ཕོལཀ་མཚོ་གླིང༌ནཱའི་ཇི་རི་ཡནི་ཀ" +
+ "ྲ་ཝ་གནེ་དར་ལནཌས྄ནོར་ཝེབལ་ཡུལནའུ་རུ་ནི་ཨུ་ཨཻནིའུ་ཛི་ལེནཌཨོ་མཱནཔ་ན་མ" +
+ "པེ་རུཕྲཱནས྄་ཀྱི་པོ་ལི་ནི་ཤི་ཡཔ་པུ་ ནིའུ་གི་ནིཕི་ལི་པིནསཔ་ཀི་སཏཱནཔོ" +
+ "་ལེནཌསིནཊ་པི་ཡེར་ ཨེནཌ་ མིཀོ་ལེནཔིཊ་ཀེ་ཡེརན་གླིང་ཚོམཔུ་འེར་ཊོ་རི་ཁ" +
+ "ོཔེ་ལིསི་ཊི་ནི་ཡན་ཊེ་རི་ཐོ་རིཔོར་ཅུ་གཱལཔ་ལའུཔ་ར་གུ་ཝའིཀ་ཊརཨོཤི་ཡཱན" +
+ "་ན་གྱི་མཐའ་མཚམསརེ་ཡུ་ནི་ཡོནརོ་མེ་ནི་ཡསཱར་བྷི་ཡཨུ་རུ་སུརུ་ཝན་ཌསཱཝ་ད" +
+ "ི་ ཨ་རེ་བྷི་ཡསོ་ལོ་མོན་ གླིང་ཚོམསེ་ཤཱལསསུ་ཌཱནསུའི་ཌེནསིང་ག་པོརསེནཊ" +
+ "་ ཧེ་ལི་ནསུ་ལོ་བི་ནི་ཡསྭཱལ་བྷརྡ་ ཨེནཌ་ ཇཱན་མ་ཡེནསུ་ལོ་བཱ་ཀི་ཡསི་ར་" +
+ " ལི་འོནསཱན་མ་རི་ནོསེ་ནི་གྷལསོ་མ་ལི་ཡསུ་རི་ནཱམསཱའུཐ་ སུ་ཌཱནསཝ་ ཊོ་མེ་" +
+ " ཨེནཌ་ པྲྀན་སི་པེཨེལ་སལ་བ་ཌོརསིནཊ་ མཱར་ཊེནསི་རི་ཡསུ་ཝ་ཛི་ལེནཌཏྲིས་ཏན" +
+ "་ད་ཀུན་ཧཏུརྐས྄་ ཨེནཌ་ ཀ་ཀོས་གླིང་ཚོམཅཱཌཕྲནཅ་གི་ལྷོ་ཕྱོགས་མངའ་ཁོངསཊ" +
+ "ོ་གྷོཐཱའི་ལེནཌཏ་ཇིག་གི་སཏཱནཏོ་ཀེ་ལའུ་ མཚོ་གླིངཏི་་མོར་ལེ་ཨེསཊཊཱརཀ་" +
+ "མེནའི་སཏཱནཊུ་ནི་ཤི་ཡཊོང་གྷཊཱར་ཀིཊི་ནི་ཌཱཌ་ ཨེནཌ་ ཊོ་བྷེ་གྷོཏུ་ཝ་ལུ" +
+ "ཊཱའི་ཝཱནཊཱན་ཛཱ་ནི་ཡཡུ་ཀརེནཡུ་གྷན་ཌཡུ་ཨེས་གྱི་མཐའ་མཚམས་མཚོ་གླིང་ཡུ་" +
+ "ཨེས་ཨེཡུ་རུ་གུ་ཝའིཨུས་བེག་གི་སཏཱནབ་ཊི་ཀཱན་ སི་ཊིསེནཊ་ཝིན་སེནཌ྄ ཨེན" +
+ "ཌ་ གི་རེ་ན་དིནས྄བེ་ནི་ཛུ་ཝེ་ལཝརཇིན་གླིང་ཚོམ་ བྲཱི་ཊིཤ་མངའ་ཁོངསཝརཇི" +
+ "ན་གླིང་ཚོམ་ ཡུ་ཨེས་ཨེ་མངའ་ཁོངསབེཊ་ནཱམཝ་ནུ་ཨ་ཏུཝལ་ལིས྄་ ཨེནཌ་ ཕུ་ཏུ" +
+ "་ན་ས་མོ་ཨཡེ་མེནམེ་ཡོཊསཱའུཐ་ ཨཕ་རི་ཀཛམ་བྷི་ཡཛིམ་བྷབ་ཝེངོ་མ་ཤེས་པའི་" +
+ "ལུང་ཕྱོགསའཛམ་གླིང༌ཨཕ་རི་ཀབྱང་ཨ་མི་རི་ཀལྷོ་ཨ་མི་རི་ཀཨོཤི་ཡཱན་ནནུབ་ཕ" +
+ "ྱོགས་ཀྱི་ཨཕ་རི་ཀབར་ཕྱོགས་ཨ་མི་རི་ཀཤར་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀབྱང་ཕྱོགས་ཀྱ" +
+ "ི་ཨཕ་རི་ཀསྦུག་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀལྷོའི་ཨཕ་རི་ཀཨ་མི་རི་ཀ་ཚུབྱང་ཕྱོགས་" +
+ "ཀྱི་ཨ་མི་རི་ཀཀེ་རི་བི་ཡེནཤར་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཨེ་ཤི་ཡལྷོ་ཤར་ཕ" +
+ "ྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཡུ་རོབཨཱོས་ཊྲེལ་ཨེ་ཤི་ཡམེ་ལ་ནི་ཤི་ཡལུང་ཕྱོགས" +
+ "་མའི་ཀྲོ་ནི་ཤི་ཡཔོ་ལི་ནི་ཤི་ཡཨེ་ཤི་ཡསྦུག་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡནུབ་ཕྱོག" +
+ "ས་ཀྱི་ཨེ་ཤི་ཡཡུ་རོབཤར་ཕྱོགས་ཀྱི་ཡུ་རོབབྱང་ཕྱོགས་ཀྱི་ཡུ་རོབནུབ་ཕྱོག" +
+ "ས་ཀྱི་ཡུ་རོབལེ་ཊིནཨ་མི་རི་ཀ",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0039, 0x0051, 0x00a4, 0x00cb, 0x0118, 0x012d, 0x014e,
+ 0x016c, 0x016c, 0x0184, 0x01d5, 0x01f6, 0x0241, 0x025f, 0x0289,
+ 0x029e, 0x02c8, 0x02ef, 0x0348, 0x0366, 0x0381, 0x0396, 0x03c1,
+ 0x03df, 0x03f1, 0x040f, 0x0424, 0x045e, 0x0473, 0x048b, 0x04ac,
+ 0x04f4, 0x0506, 0x051e, 0x052d, 0x0560, 0x0578, 0x0599, 0x05ae,
+ 0x05c0, 0x05ed, 0x0618, 0x0668, 0x0699, 0x06c3, 0x06f7, 0x071b,
+ 0x072a, 0x0742, 0x0754, 0x0778, 0x07bd, 0x07db, 0x07f0, 0x0805,
+ 0x0823, 0x085f, 0x0877, 0x089f, 0x08b7, 0x08e7, 0x0902, 0x0917,
+ // Entry 40 - 7F
+ 0x0935, 0x0978, 0x0999, 0x09da, 0x09f5, 0x0a16, 0x0a2b, 0x0a5c,
+ 0x0a7d, 0x0a92, 0x0ab9, 0x0b04, 0x0b1c, 0x0b2b, 0x0b5b, 0x0b88,
+ 0x0bb8, 0x0bc7, 0x0bdc, 0x0c13, 0x0c28, 0x0c3a, 0x0c80, 0x0c9e,
+ 0x0caa, 0x0cc8, 0x0ce9, 0x0d04, 0x0d16, 0x0d37, 0x0d6e, 0x0d80,
+ 0x0dfa, 0x0e15, 0x0e40, 0x0e6e, 0x0e80, 0x0eaa, 0x0f1b, 0x0f3c,
+ 0x0f54, 0x0f63, 0x0f7e, 0x0fae, 0x0fd8, 0x0ff3, 0x100e, 0x1037,
+ 0x1049, 0x10ac, 0x10be, 0x10d0, 0x10ee, 0x1103, 0x1115, 0x112a,
+ 0x113c, 0x114b, 0x115a, 0x117e, 0x119f, 0x11d8, 0x11f3, 0x122f,
+ // Entry 80 - BF
+ 0x1251, 0x1273, 0x1285, 0x12b2, 0x12d0, 0x12e2, 0x12fa, 0x131f,
+ 0x1346, 0x1361, 0x1385, 0x139d, 0x13c4, 0x13e2, 0x13f7, 0x140c,
+ 0x1424, 0x1439, 0x1454, 0x147b, 0x14a0, 0x14c1, 0x14ee, 0x1512,
+ 0x1521, 0x1551, 0x156f, 0x1596, 0x15f0, 0x160e, 0x1635, 0x164d,
+ 0x165c, 0x1677, 0x168f, 0x16a1, 0x16bc, 0x16d7, 0x16f5, 0x1710,
+ 0x1743, 0x1758, 0x178e, 0x17b2, 0x17cd, 0x17ee, 0x1800, 0x1812,
+ 0x1827, 0x183f, 0x1863, 0x1875, 0x1884, 0x1893, 0x18db, 0x1909,
+ 0x1927, 0x1942, 0x1957, 0x19a4, 0x19e0, 0x1a0d, 0x1a61, 0x1a7f,
+ // Entry C0 - FF
+ 0x1a8e, 0x1aac, 0x1ab8, 0x1afd, 0x1b21, 0x1b3f, 0x1b5a, 0x1b72,
+ 0x1b87, 0x1bbb, 0x1bf2, 0x1c07, 0x1c19, 0x1c31, 0x1c4c, 0x1c71,
+ 0x1c98, 0x1ce2, 0x1d09, 0x1d2b, 0x1d4c, 0x1d67, 0x1d82, 0x1d9d,
+ 0x1dc2, 0x1e0d, 0x1e31, 0x1e56, 0x1e6b, 0x1e8f, 0x1ebc, 0x1f0c,
+ 0x1f15, 0x1f63, 0x1f75, 0x1f90, 0x1fb7, 0x1fee, 0x201b, 0x2048,
+ 0x2066, 0x2078, 0x208a, 0x20d7, 0x20ec, 0x2104, 0x2125, 0x213a,
+ 0x2152, 0x21a9, 0x21c4, 0x21e8, 0x2215, 0x2240, 0x22a2, 0x22c9,
+ 0x232a, 0x238e, 0x23a3, 0x23be, 0x23ff, 0x2411, 0x2411, 0x2423,
+ // Entry 100 - 13F
+ 0x2435, 0x245d, 0x2475, 0x2493, 0x24d5, 0x24f0, 0x2505, 0x252c,
+ 0x2553, 0x2571, 0x25b0, 0x25e6, 0x2622, 0x2661, 0x26a3, 0x26ca,
+ 0x26ee, 0x2733, 0x2757, 0x2793, 0x27ba, 0x2802, 0x2826, 0x2859,
+ 0x287d, 0x28c8, 0x28ef, 0x2904, 0x2946, 0x2985, 0x2997, 0x29d0,
+ 0x2a0c, 0x2a48, 0x2a75,
+ },
+ },
+ { // ebu
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // ee
+ "Ascension ƒudomekpo nutomeAndorra nutomeUnited Arab Emirates nutomeAfgha" +
+ "nistan nutoméAntigua kple Barbuda nutomeAnguilla nutomeAlbania nuto" +
+ "meArmenia nutomeNedalands Antilis nutomeAngola nutomeAntartica nutom" +
+ "eArgentina nutomeAmerika Samoa nutomeAustria nutomeAustralia nutomeA" +
+ "ruba nutomeÅland ƒudomekpo nutomeAzerbaijan nutomeBosnia kple Herzer" +
+ "govina nutomeBarbados nutomeBangladesh nutomeBelgium nutomeBurkina F" +
+ "aso nutomeBulgaria nutomeBahrain nutomeBurundi nutomeBenin nutomeSai" +
+ "nt Barthélemy nutomeBermuda nutomeBrunei nutomeBolivia nutomeBrazil " +
+ "nutomeBahamas nutomeBhutan nutomeBouvet ƒudomekpo nutomeBotswana nut" +
+ "omeBelarus nutomeBelize nutomeCanada nutomeKokos (Kiling) fudomekpo " +
+ "nutomeKongo Kinshasa nutomeTitina Afrika repɔblik nutomeKongo Brazza" +
+ "ville nutomeSwitzerland nutomeKote d’Ivoire nutomeKook ƒudomekpo nut" +
+ "omeTsile nutomeKamerun nutomeTsaina nutomeKolombia nutomeKlipaton ƒu" +
+ "domekpo nutomeKosta Rika nutomeKuba nutomeKape Verde nutomeKristmas " +
+ "ƒudomekpo nutomeSaiprus nutomeTsɛk repɔblik nutomeGermania nutomeDi" +
+ "ego Garsia nutomeDzibuti nutomeDenmark nutomeDominika nutomeDominika" +
+ " repɔblik nutomeAlgeria nutomeKeuta and Melilla nutomeEkuadɔ nutomeE" +
+ "stonia nutomeEgypte nutomeƔetoɖoƒe Sahara nutomeEritrea nutomeSpain " +
+ "nutomeEtiopia nutomeEuropa Wɔɖeka nutomeFinland nutomeFidzi nutomeFa" +
+ "lkland ƒudomekpowo nutomeMikronesia nutomeFaroe ƒudomekpowo nutomeFr" +
+ "ance nutomeGabɔn nutomeUnited Kingdom nutomeGrenada nutomeGeorgia nu" +
+ "tomeFrentsi Gayana nutomeGuernse nutomeGhana nutomeGibraltar nutomeG" +
+ "rinland nutomeGambia nutomeGuini nutomeGuadelupe nutomeEkuatorial Gu" +
+ "ini nutomeGreece nutomeAnyiehe Georgia kple Anyiehe Sandwich ƒudomek" +
+ "powo nutomeGuatemala nutomeGuam nutomeGini-Bisao nutomeGuyanaduHɔng " +
+ "Kɔng SAR Tsaina nutomeHeard kple Mcdonald ƒudomekpowo nutomeHonduras" +
+ "duKroatsia nutomeHaiti nutomeHungari nutomeKanari ƒudomekpowo nutome" +
+ "Indonesia nutomeIreland nutomeIsrael nutomeAisle of Man nutomeIndia " +
+ "nutomeBritaintɔwo ƒe india ƒudome nutomeiraqdukɔIran nutomeAiseland " +
+ "nutomeItalia nutomeDzɛse nutomeDzamaika nutomeYordan nutomeDzapan nu" +
+ "tomeKenya nutomeKirgizstan nutomeKambodia nutomeKiribati nutomeKomor" +
+ "os nutomeSaint Kitis kple Nevis nutomeDziehe Korea nutomeAnyiehe Kor" +
+ "ea nutomeKuwait nutomeKayman ƒudomekpowo nutomeKazakstan nutomeLaos " +
+ "nutomeLebanɔn nutomeSaint Lusia nutomeLitsenstein nutomeSri Lanka nu" +
+ "tomeLiberia nutomeLɛsoto nutomeLituania nutomeLazembɔg nutomeLatvia " +
+ "nutomeLibya nutomeMoroko nutomeMonako nutomeMoldova nutomeMontenegro" +
+ " nutomeSaint Martin nutomeMadagaska nutomeMarshal ƒudomekpowo nutome" +
+ "Makedonia nutomeMali nutomeMyanmar (Burma) nutomeMongolia nutomeMaca" +
+ "u SAR Tsaina nutomeDziehe Marina ƒudomekpowo nutomeMartiniki nutomeM" +
+ "auritania nutomeMontserrat nutomeMalta nutomemauritiusdukɔmaldivesdu" +
+ "kɔMalawi nutomeMexico nutomeMalaysia nutomeMozambiki nutomeNamibia n" +
+ "utomeNew Kaledonia nutomeNiger nutomeNorfolk ƒudomekpo nutomeNigeria" +
+ " nutomeNicaraguadukɔNetherlands nutomeNorway nutomeNepal nutomeNauru" +
+ " nutomeNiue nutomeNew Zealand nutomeOman nutomePanama nutomePeru nut" +
+ "omeFrentsi Pɔlinesia nutomePapua New Gini nutomeFilipini nutomePakis" +
+ "tan nutomePoland nutomeSaint Pierre kple Mikelɔn nutomePitkairn ƒudo" +
+ "mekpo nutomePuerto Riko nutomePalestinia nutomePortugal nutomePalau " +
+ "nutomeParagua nutomeKatar nutomeOutlaying Oceania nutomeRéunion nuto" +
+ "meRomania nutomeRussia nutomeRwanda nutomeSaudi Arabia nutomeSolomon" +
+ " ƒudomekpowo nutomeSeshɛls nutomeSudan nutomeSweden nutomeSingapɔr n" +
+ "utomeSaint Helena nutomeSlovenia nutomeSvalbard kple Yan Mayen nutom" +
+ "eSlovakia nutomeSierra Leone nutomeSan Marino nutomeSenegal nutomeSo" +
+ "malia nutomeSuriname nutomeSão Tomé kple Príncipe nutomeEl Salvadɔ n" +
+ "utomeSiria nutomeSwaziland nutomeTristan da Kunha nutomeTɛks kple Ka" +
+ "ikos ƒudomekpowo nutomeTsad nutomeAnyiehe Franseme nutomeTogo nutome" +
+ "Thailand nutomeTajikistan nutomeTokelau nutomeTimor-Leste nutomeTɛkm" +
+ "enistan nutomeTunisia nutomeTonga nutomeTɛki nutomeTrinidad kple Tob" +
+ "ago nutomeTuvalu nutomeTaiwan nutomeTanzania nutomeUkraine nutomeUga" +
+ "nda nutomeU.S. Minor Outlaying ƒudomekpowo nutomeUSA nutomeuruguaydu" +
+ "kɔUzbekistan nutomeVatikandu nutomeSaint Vincent kple Grenadine nuto" +
+ "meVenezuela nutomeBritaintɔwo ƒe Virgin ƒudomekpowo nutomeU.S. Vɛrgi" +
+ "n ƒudomekpowo nutomeVietnam nutomeVanuatu nutomeWallis kple Futuna n" +
+ "utomeSamoa nutomeYemen nutomeMayotte nutomeAnyiehe Africa nutomeZamb" +
+ "ia nutomeZimbabwe nutomenutome manyaxexemeAfrika nutomeDziehe Amerik" +
+ "a nutomeAnyiehe Amerika nutomeOceania nutomeƔetoɖoƒelɔƒo Afrika nuto" +
+ "meTitina Amerika nutomeƔedzeƒe Afrika nutomeDziehe Afrika nutomeTiti" +
+ "na Afrika nutomeAnyiehelɔƒo Afrika nutomeAmerika nutomeDziehelɔƒo Am" +
+ "erika nutomeKaribbea nutomeƔedzeƒe Asia nutomeAnyiehelɔƒo Asia nutom" +
+ "eAnyiehe Ɣedzeƒe Afrika nutomeAnyiehelɔƒo Europa nutomeAustralia kpl" +
+ "e New Zealand nutomeMelanesia nutomeMikronesiaPɔlinesia nutomeAsia n" +
+ "utomeTitina Asia nutomeƔetoɖoƒelɔƒo Asia nutomeEuropa nutomeƔedzeƒe " +
+ "Europa nutomeDziehelɔƒo Europa nutomeƔetoɖoƒelɔƒo Europa nutomeLatin" +
+ " Amerika nutome",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001b, 0x0029, 0x0044, 0x0056, 0x0073, 0x0082, 0x0090,
+ 0x009e, 0x00b6, 0x00c3, 0x00d3, 0x00e3, 0x00f7, 0x0105, 0x0115,
+ 0x0121, 0x0139, 0x014a, 0x0169, 0x0178, 0x0189, 0x0197, 0x01aa,
+ 0x01b9, 0x01c7, 0x01d5, 0x01e1, 0x01f9, 0x0207, 0x0214, 0x0222,
+ 0x0222, 0x022f, 0x023d, 0x024a, 0x0262, 0x0271, 0x027f, 0x028c,
+ 0x0299, 0x02b8, 0x02cd, 0x02eb, 0x0303, 0x0315, 0x032b, 0x0341,
+ 0x034d, 0x035b, 0x0368, 0x0377, 0x0391, 0x03a2, 0x03ad, 0x03be,
+ 0x03be, 0x03d8, 0x03e6, 0x03fc, 0x040b, 0x041e, 0x042c, 0x043a,
+ // Entry 40 - 7F
+ 0x0449, 0x0462, 0x0470, 0x0488, 0x0496, 0x04a4, 0x04b1, 0x04ca,
+ 0x04d8, 0x04e4, 0x04f2, 0x0508, 0x0516, 0x0522, 0x053e, 0x054f,
+ 0x0568, 0x0575, 0x0582, 0x0597, 0x05a5, 0x05b3, 0x05c8, 0x05d6,
+ 0x05e2, 0x05f2, 0x0601, 0x060e, 0x061a, 0x062a, 0x0641, 0x064e,
+ 0x0687, 0x0697, 0x06a2, 0x06b3, 0x06bb, 0x06d8, 0x06ff, 0x0709,
+ 0x0718, 0x0724, 0x0732, 0x074c, 0x075c, 0x076a, 0x0777, 0x078a,
+ 0x0796, 0x07bb, 0x07c4, 0x07cf, 0x07de, 0x07eb, 0x07f8, 0x0807,
+ 0x0814, 0x0821, 0x082d, 0x083e, 0x084d, 0x085c, 0x086a, 0x0887,
+ // Entry 80 - BF
+ 0x089a, 0x08ae, 0x08bb, 0x08d5, 0x08e5, 0x08f0, 0x08ff, 0x0911,
+ 0x0923, 0x0933, 0x0941, 0x094f, 0x095e, 0x096e, 0x097b, 0x0987,
+ 0x0994, 0x09a1, 0x09af, 0x09c0, 0x09d3, 0x09e3, 0x09fe, 0x0a0e,
+ 0x0a19, 0x0a2f, 0x0a3e, 0x0a55, 0x0a76, 0x0a86, 0x0a97, 0x0aa8,
+ 0x0ab4, 0x0ac2, 0x0acf, 0x0adc, 0x0ae9, 0x0af8, 0x0b08, 0x0b16,
+ 0x0b2a, 0x0b36, 0x0b4f, 0x0b5d, 0x0b6b, 0x0b7d, 0x0b8a, 0x0b96,
+ 0x0ba2, 0x0bad, 0x0bbf, 0x0bca, 0x0bd7, 0x0be2, 0x0bfb, 0x0c10,
+ 0x0c1f, 0x0c2e, 0x0c3b, 0x0c5c, 0x0c76, 0x0c88, 0x0c99, 0x0ca8,
+ // Entry C0 - FF
+ 0x0cb4, 0x0cc2, 0x0cce, 0x0ce6, 0x0cf5, 0x0d03, 0x0d03, 0x0d10,
+ 0x0d1d, 0x0d30, 0x0d4b, 0x0d5a, 0x0d66, 0x0d73, 0x0d83, 0x0d96,
+ 0x0da5, 0x0dc3, 0x0dd2, 0x0de5, 0x0df6, 0x0e04, 0x0e12, 0x0e21,
+ 0x0e21, 0x0e41, 0x0e53, 0x0e53, 0x0e5f, 0x0e6f, 0x0e86, 0x0eab,
+ 0x0eb6, 0x0ecd, 0x0ed8, 0x0ee7, 0x0ef8, 0x0f06, 0x0f18, 0x0f2b,
+ 0x0f39, 0x0f45, 0x0f51, 0x0f6c, 0x0f79, 0x0f86, 0x0f95, 0x0fa3,
+ 0x0fb0, 0x0fd8, 0x0fe2, 0x0fee, 0x0fff, 0x100f, 0x1032, 0x1042,
+ 0x106d, 0x108d, 0x109b, 0x10a9, 0x10c2, 0x10ce, 0x10ce, 0x10da,
+ // Entry 100 - 13F
+ 0x10e8, 0x10fd, 0x110a, 0x1119, 0x1125, 0x112b, 0x1138, 0x114d,
+ 0x1163, 0x1171, 0x1190, 0x11a5, 0x11bc, 0x11d0, 0x11e4, 0x11ff,
+ 0x120d, 0x1228, 0x1237, 0x124c, 0x1265, 0x1284, 0x129f, 0x12c0,
+ 0x12d0, 0x12da, 0x12eb, 0x12f6, 0x1308, 0x1325, 0x1332, 0x1349,
+ 0x1363, 0x1382, 0x1396,
+ },
+ },
+ { // el
+ elRegionStr,
+ elRegionIdx,
+ },
+ { // en
+ enRegionStr,
+ enRegionIdx,
+ },
+ {}, // en-AU
+ { // en-GB
+ enGBRegionStr,
+ enGBRegionIdx,
+ },
+ { // eo
+ "AndoroUnuiĝintaj Arabaj EmirlandosAfganujoAntigvo-BarbudoAngviloAlbanujo" +
+ "ArmenujoNederlandaj AntilojAngoloAntarktoArgentinoAŭstrujoAŭstralioA" +
+ "ruboAzerbajĝanoBosnio-HercegovinoBarbadoBangladeŝoBelgujoBurkinoBulg" +
+ "arujoBarejnoBurundoBeninoBermudojBrunejoBolivioBraziloBahamojButanoB" +
+ "ocvanoBelorusujoBelizoKanadoCentr-Afrika RespublikoKongoloSvisujoEbu" +
+ "r-BordoKukinsulojĈilioKamerunoĈinujoKolombioKostarikoKuboKabo-VerdoK" +
+ "iproĈeĥujoGermanujoĜibutioDanujoDominikoDomingoAlĝerioEkvadoroEstonu" +
+ "joEgiptoOkcidenta SaharoEritreoHispanujoEtiopujoFinnlandoFiĝojMikron" +
+ "ezioFeroojFrancujoGabonoUnuiĝinta ReĝlandoGrenadoKartvelujoFranca Gv" +
+ "ianoGanaoĜibraltaroGronlandoGambioGvineoGvadelupoEkvatora GvineoGrek" +
+ "ujoSud-Georgio kaj Sud-SandviĉinsulojGvatemaloGvamoGvineo-BisaŭoGuja" +
+ "noHerda kaj Makdonaldaj InsulojHonduroKroatujoHaitioHungarujoIndonez" +
+ "ioIrlandoIsraeloHindujoBrita Hindoceana TeritorioIrakoIranoIslandoIt" +
+ "alujoJamajkoJordanioJapanujoKenjoKirgizistanoKamboĝoKiribatoKomorojS" +
+ "ent-Kristofo kaj NevisoNord-KoreoSud-KoreoKuvajtoKejmanojKazaĥstanoL" +
+ "aosoLibanoSent-LucioLiĥtenŝtejnoSri-LankoLiberioLesotoLitovujoLuksem" +
+ "burgoLatvujoLibioMarokoMonakoMoldavujoMadagaskaroMarŝalojMakedonujoM" +
+ "alioMjanmaoMongolujoNord-MarianojMartinikoMaŭritanujoMaltoMaŭricioMa" +
+ "ldivojMalavioMeksikoMalajzioMozambikoNamibioNov-KaledonioNiĝeroNorfo" +
+ "lkinsuloNiĝerioNikaragvoNederlandoNorvegujoNepaloNauroNiuoNov-Zeland" +
+ "oOmanoPanamoPeruoFranca PolinezioPapuo-Nov-GvineoFilipinojPakistanoP" +
+ "ollandoSent-Piero kaj MikelonoPitkarna InsuloPuerto-RikoPortugalujoB" +
+ "elaŭoParagvajoKataroReunioRumanujoRusujoRuandoSaŭda ArabujoSalomonoj" +
+ "SejŝelojSudanoSvedujoSingapuroSent-HelenoSlovenujoSvalbardo kaj Jan-" +
+ "Majen-insuloSlovakujoSiera-LeonoSan-MarinoSenegaloSomalujoSurinamoSa" +
+ "o-Tomeo kaj PrincipeoSalvadoroSirioSvazilandoĈadoTogoloTajlandoTaĝik" +
+ "ujoTurkmenujoTunizioTongoTurkujoTrinidado kaj TobagoTuvaloTajvanoTan" +
+ "zanioUkrajnoUgandoUsonaj malgrandaj insulojUsonoUrugvajoUzbekujoVati" +
+ "kanoSent-Vincento kaj la GrenadinojVenezueloBritaj VirgulininsulojUs" +
+ "onaj VirgulininsulojVjetnamoVanuatuoValiso kaj FutunoSamooJemenoMajo" +
+ "toSud-AfrikoZambioZimbabvo",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0023, 0x002b, 0x003a, 0x0041, 0x0049,
+ 0x0051, 0x0064, 0x006a, 0x0072, 0x007b, 0x007b, 0x0084, 0x008e,
+ 0x0093, 0x0093, 0x009f, 0x00b1, 0x00b8, 0x00c3, 0x00ca, 0x00d1,
+ 0x00da, 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f6, 0x00fd, 0x0104,
+ 0x0104, 0x010b, 0x0112, 0x0118, 0x0118, 0x011f, 0x0129, 0x012f,
+ 0x0135, 0x0135, 0x0135, 0x014c, 0x0153, 0x015a, 0x0164, 0x016e,
+ 0x0174, 0x017c, 0x0183, 0x018b, 0x018b, 0x0194, 0x0198, 0x01a2,
+ 0x01a2, 0x01a2, 0x01a7, 0x01af, 0x01b8, 0x01b8, 0x01c0, 0x01c6,
+ // Entry 40 - 7F
+ 0x01ce, 0x01d5, 0x01dd, 0x01dd, 0x01e5, 0x01ed, 0x01f3, 0x0203,
+ 0x020a, 0x0213, 0x021b, 0x021b, 0x0224, 0x022a, 0x022a, 0x0234,
+ 0x023a, 0x0242, 0x0248, 0x025c, 0x0263, 0x026d, 0x027a, 0x027a,
+ 0x027f, 0x028a, 0x0293, 0x0299, 0x029f, 0x02a8, 0x02b7, 0x02be,
+ 0x02e1, 0x02ea, 0x02ef, 0x02fd, 0x0303, 0x0303, 0x0320, 0x0327,
+ 0x032f, 0x0335, 0x033e, 0x033e, 0x0347, 0x034e, 0x0355, 0x0355,
+ 0x035c, 0x0376, 0x037b, 0x0380, 0x0387, 0x038e, 0x038e, 0x0395,
+ 0x039d, 0x03a5, 0x03aa, 0x03b6, 0x03be, 0x03c6, 0x03cd, 0x03e5,
+ // Entry 80 - BF
+ 0x03ef, 0x03f8, 0x03ff, 0x0407, 0x0412, 0x0417, 0x041d, 0x0427,
+ 0x0435, 0x043e, 0x0445, 0x044b, 0x0453, 0x045e, 0x0465, 0x046a,
+ 0x0470, 0x0476, 0x047f, 0x047f, 0x047f, 0x048a, 0x0493, 0x049d,
+ 0x04a2, 0x04a9, 0x04b2, 0x04b2, 0x04bf, 0x04c8, 0x04d4, 0x04d4,
+ 0x04d9, 0x04e2, 0x04ea, 0x04f1, 0x04f8, 0x0500, 0x0509, 0x0510,
+ 0x051d, 0x0524, 0x0531, 0x0539, 0x0542, 0x054c, 0x0555, 0x055b,
+ 0x0560, 0x0564, 0x056f, 0x0574, 0x057a, 0x057f, 0x058f, 0x059f,
+ 0x05a8, 0x05b1, 0x05b9, 0x05d0, 0x05df, 0x05ea, 0x05ea, 0x05f5,
+ // Entry C0 - FF
+ 0x05fc, 0x0605, 0x060b, 0x060b, 0x0611, 0x0619, 0x0619, 0x061f,
+ 0x0625, 0x0633, 0x063c, 0x0645, 0x064b, 0x0652, 0x065b, 0x0666,
+ 0x066f, 0x068d, 0x0696, 0x06a1, 0x06ab, 0x06b3, 0x06bb, 0x06c3,
+ 0x06c3, 0x06da, 0x06e3, 0x06e3, 0x06e8, 0x06f2, 0x06f2, 0x06f2,
+ 0x06f7, 0x06f7, 0x06fd, 0x0705, 0x070e, 0x070e, 0x070e, 0x0718,
+ 0x071f, 0x0724, 0x072b, 0x073f, 0x0745, 0x074c, 0x0754, 0x075b,
+ 0x0761, 0x077a, 0x077f, 0x0787, 0x078f, 0x0797, 0x07b6, 0x07bf,
+ 0x07d5, 0x07eb, 0x07f3, 0x07fb, 0x080c, 0x0811, 0x0811, 0x0817,
+ // Entry 100 - 13F
+ 0x081d, 0x0827, 0x082d, 0x0835,
+ },
+ },
+ { // es
+ esRegionStr,
+ esRegionIdx,
+ },
+ { // es-419
+ es419RegionStr,
+ es419RegionIdx,
+ },
+ { // es-CL
+ "Sahara Occidental",
+ []uint16{ // 72 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0011,
+ },
+ },
+ { // es-MX
+ "BangladeshIslas Cocos (Keeling)GuernseyRegión Administrativa Especial de" +
+ " Hong Kong de la República Popular ChinaIslas CanariasRegión Adminis" +
+ "trativa Especial de Macao de la República Popular ChinaTristán de Ac" +
+ "uñaIslas Ultramarinas Menores de Estados UnidosIslas Vírgenes de los" +
+ " Estados UnidosÁfrica OccidentalÁfrica OrientalÁfrica del NorteÁfric" +
+ "a CentralÁfrica del SurAméricasAsia OrientalAsia del SurSudeste Asiá" +
+ "ticoEuropa del SurAsia CentralAsia OccidentalEuropa OrientalEuropa d" +
+ "el NorteEuropa Occidental",
+ []uint16{ // 290 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ // Entry 40 - 7F
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f,
+ 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0072, 0x0072, 0x0072,
+ 0x0072, 0x0072, 0x0072, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ // Entry 80 - BF
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080,
+ 0x0080, 0x0080, 0x0080, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ // Entry C0 - FF
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7,
+ 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105,
+ 0x0105, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a,
+ // Entry 100 - 13F
+ 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a,
+ 0x012a, 0x012a, 0x013c, 0x013c, 0x014c, 0x015d, 0x016c, 0x017b,
+ 0x0184, 0x0184, 0x0184, 0x0191, 0x019d, 0x01ae, 0x01bc, 0x01bc,
+ 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01c8, 0x01d7, 0x01d7, 0x01e6,
+ 0x01f6, 0x0207,
+ },
+ },
+ { // et
+ etRegionStr,
+ etRegionIdx,
+ },
+ { // eu
+ "Ascension uharteaAndorraArabiar Emirerri BatuakAfganistanAntigua eta Bar" +
+ "budaAngilaAlbaniaArmeniaHolandarren AntillakAngolaAntartikaArgentina" +
+ "Amerikar SamoaAustriaAustraliaArubaAland uharteakAzerbaijanBosnia-He" +
+ "rzegovinaBarbadosBangladeshBelgikaBurkina FasoBulgariaBahrainBurundi" +
+ "BeninSaint BarthélemyBermudaBruneiBoliviaKaribeko HerbehereakBrasilB" +
+ "ahamakBhutanBouvet uharteaBotswanaBielorrusiaBelizeKanadaCocos uhart" +
+ "eakKongoko Errepublika DemokratikoaAfrika Erdiko ErrepublikaKongo (B" +
+ "razzaville)SuitzaBoli KostaCook uharteakTxileKamerunTxinaKolonbiaCli" +
+ "pperton uharteaCosta RicaKubaCabo VerdeCuraçaoChristmas uharteaZipre" +
+ "Txekiar ErrepublikaAlemaniaDiego GarciaDjibutiDanimarkaDominikaDomin" +
+ "ikar ErrepublikaAljeriaCeuta eta MelillaEkuadorEstoniaEgiptoMendebal" +
+ "deko SaharaEritreaEspainiaEtiopiaEuropar BatasunaFinlandiaFijiMalvin" +
+ "akMikronesiaFaroe uharteakFrantziaGabonErresuma BatuaGrenadaGeorgiaG" +
+ "uyana FrantsesaGuerneseyGhanaGibraltarGroenlandiaGambiaGineaGuadalup" +
+ "eEkuatore GineaGreziaHegoaldeko Georgia eta Hegoaldeko Sandwich uhar" +
+ "teakGuatemalaGuamGinea-BissauGuyanaHong Kong AEB TxinaHeard eta McDo" +
+ "nald uharteakHondurasKroaziaHaitiHungariaKanariakIndonesiaIrlandaIsr" +
+ "aelMan uharteaIndiaIndiako Ozeanoko lurralde britainiarraIrakIranIsl" +
+ "andiaItaliaJerseyJamaikaJordaniaJaponiaKenyaKirgizistanKanbodiaKirib" +
+ "atiKomoreakSaint Kitts eta NevisIpar KoreaHego KoreaKuwaitKaiman uha" +
+ "rteakKazakhstanLaosLibanoSanta LuziaLiechtensteinSri LankaLiberiaLes" +
+ "othoLituaniaLuxenburgoLetoniaLibiaMarokoMonakoMoldaviaMontenegroSain" +
+ "t MartinMadagaskarMarshall uharteakMazedoniaMaliMyanmarMongoliaMacau" +
+ " AEB TxinaIparraldeko Mariana uharteakMartinikaMauritaniaMontserratM" +
+ "altaMaurizioMaldivakMalawiMexikoMalaysiaMozambikeNamibiaKaledonia Be" +
+ "rriaNigerNorfolk uharteaNigeriaNikaraguaHerbehereakNorvegiaNepalNaur" +
+ "uNiueZeelanda BerriaOmanPanamaPeruPolinesia FrantsesaPapua Ginea Ber" +
+ "riaFilipinakPakistanPoloniaSaint-Pierre eta MikelunePitcairn uhartea" +
+ "kPuerto RicoPalestinako LurraldeakPortugalPalauParaguaiQatarMugaz ka" +
+ "npoko OzeaniaReunionErrumaniaSerbiaErrusiaRuandaSaudi ArabiaSalomon " +
+ "uharteakSeychelleakSudanSuediaSingapurSaint HelenaEsloveniaSvalbard " +
+ "eta Jan Mayen uharteakEslovakiaSierra LeonaSan MarinoSenegalSomaliaS" +
+ "urinamHego SudanSao Tome eta PrincipeEl SalvadorSint MaartenSiriaSwa" +
+ "zilandiaTristan da CunhaTurk eta Caicos uharteakTxadHegoaldeko lurra" +
+ "lde frantsesakTogoThailandiaTajikistanTokelauEkialdeko TimorTurkmeni" +
+ "stanTunisiaTongaTurkiaTrinidad eta TobagoTuvaluTaiwanTanzaniaUkraina" +
+ "UgandaAmeriketako Estatu Batuetako Kanpoaldeko Uharte TxikiakAmerike" +
+ "tako Estatu BatuakUruguaiUzbekistanVatikano HiriaSaint Vincent eta G" +
+ "renadinakVenezuelaBirjina uharte britainiarrakBirjina uharte amerika" +
+ "rrakVietnamVanuatuWallis eta FutunaSamoaKosovoYemenMayotteHegoafrika" +
+ "ZambiaZimbabweEskualde ezezagunaMunduaAfrikaIpar AmerikaHego Amerika" +
+ "OzeaniaAfrika mendebaldeaErdialdeko AmerikaAfrika ekialdeaAfrika ipa" +
+ "rraldeaErdialdeko AfrikaAfrika hegoaldeaAmerikaAmerika iparraldeaKar" +
+ "ibeaAsia ekialdeaAsia hegoaldeaAsia hego-ekialdeaEuropa hegoaldeaAus" +
+ "tralasiaMelanesiaMikronesia eskualdeaPolinesiaAsiaAsia erdialdeaAsia" +
+ " mendebaldeaEuropaEuropa ekialdeaEuropa iparraldeaEuropa mendebaldea" +
+ "Latinoamerika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0011, 0x0018, 0x002f, 0x0039, 0x004c, 0x0052, 0x0059,
+ 0x0060, 0x0074, 0x007a, 0x0083, 0x008c, 0x009a, 0x00a1, 0x00aa,
+ 0x00af, 0x00bd, 0x00c7, 0x00d9, 0x00e1, 0x00eb, 0x00f2, 0x00fe,
+ 0x0106, 0x010d, 0x0114, 0x0119, 0x012a, 0x0131, 0x0137, 0x013e,
+ 0x0152, 0x0158, 0x015f, 0x0165, 0x0173, 0x017b, 0x0186, 0x018c,
+ 0x0192, 0x01a0, 0x01c0, 0x01d9, 0x01ec, 0x01f2, 0x01fc, 0x0209,
+ 0x020e, 0x0215, 0x021a, 0x0222, 0x0234, 0x023e, 0x0242, 0x024c,
+ 0x0254, 0x0265, 0x026a, 0x027d, 0x0285, 0x0291, 0x0298, 0x02a1,
+ // Entry 40 - 7F
+ 0x02a9, 0x02be, 0x02c5, 0x02d6, 0x02dd, 0x02e4, 0x02ea, 0x02fd,
+ 0x0304, 0x030c, 0x0313, 0x0323, 0x032c, 0x0330, 0x0338, 0x0342,
+ 0x0350, 0x0358, 0x035d, 0x036b, 0x0372, 0x0379, 0x0389, 0x0392,
+ 0x0397, 0x03a0, 0x03ab, 0x03b1, 0x03b6, 0x03bf, 0x03cd, 0x03d3,
+ 0x0406, 0x040f, 0x0413, 0x041f, 0x0425, 0x0438, 0x0453, 0x045b,
+ 0x0462, 0x0467, 0x046f, 0x0477, 0x0480, 0x0487, 0x048d, 0x0498,
+ 0x049d, 0x04c3, 0x04c7, 0x04cb, 0x04d3, 0x04d9, 0x04df, 0x04e6,
+ 0x04ee, 0x04f5, 0x04fa, 0x0505, 0x050d, 0x0515, 0x051d, 0x0532,
+ // Entry 80 - BF
+ 0x053c, 0x0546, 0x054c, 0x055b, 0x0565, 0x0569, 0x056f, 0x057a,
+ 0x0587, 0x0590, 0x0597, 0x059e, 0x05a6, 0x05b0, 0x05b7, 0x05bc,
+ 0x05c2, 0x05c8, 0x05d0, 0x05da, 0x05e6, 0x05f0, 0x0601, 0x060a,
+ 0x060e, 0x0615, 0x061d, 0x062c, 0x0648, 0x0651, 0x065b, 0x0665,
+ 0x066a, 0x0672, 0x067a, 0x0680, 0x0686, 0x068e, 0x0697, 0x069e,
+ 0x06ae, 0x06b3, 0x06c2, 0x06c9, 0x06d2, 0x06dd, 0x06e5, 0x06ea,
+ 0x06ef, 0x06f3, 0x0702, 0x0706, 0x070c, 0x0710, 0x0723, 0x0735,
+ 0x073e, 0x0746, 0x074d, 0x0766, 0x0777, 0x0782, 0x0798, 0x07a0,
+ // Entry C0 - FF
+ 0x07a5, 0x07ad, 0x07b2, 0x07c7, 0x07ce, 0x07d7, 0x07dd, 0x07e4,
+ 0x07ea, 0x07f6, 0x0806, 0x0811, 0x0816, 0x081c, 0x0824, 0x0830,
+ 0x0839, 0x0858, 0x0861, 0x086d, 0x0877, 0x087e, 0x0885, 0x088c,
+ 0x0896, 0x08ab, 0x08b6, 0x08c2, 0x08c7, 0x08d2, 0x08e2, 0x08fa,
+ 0x08fe, 0x091c, 0x0920, 0x092a, 0x0934, 0x093b, 0x094a, 0x0956,
+ 0x095d, 0x0962, 0x0968, 0x097b, 0x0981, 0x0987, 0x098f, 0x0996,
+ 0x099c, 0x09d3, 0x09ec, 0x09f3, 0x09fd, 0x0a0b, 0x0a27, 0x0a30,
+ 0x0a4c, 0x0a66, 0x0a6d, 0x0a74, 0x0a85, 0x0a8a, 0x0a90, 0x0a95,
+ // Entry 100 - 13F
+ 0x0a9c, 0x0aa6, 0x0aac, 0x0ab4, 0x0ac6, 0x0acc, 0x0ad2, 0x0ade,
+ 0x0aea, 0x0af1, 0x0b03, 0x0b15, 0x0b24, 0x0b35, 0x0b46, 0x0b56,
+ 0x0b5d, 0x0b6f, 0x0b76, 0x0b83, 0x0b91, 0x0ba3, 0x0bb3, 0x0bbe,
+ 0x0bc7, 0x0bdb, 0x0be4, 0x0be8, 0x0bf6, 0x0c06, 0x0c0c, 0x0c1b,
+ 0x0c2c, 0x0c3e, 0x0c4b,
+ },
+ },
+ { // ewo
+ "AndórBemirá yá Arábə uníAfəganisətánAntígwa ai BarəbúdaAngíyəAləbániaArə" +
+ "méniaAnətíyə NɛdəlániaAngoláArəhenətínaBəsamóa yá Amə́rəkaOsətəlíaOs" +
+ "ətəlalíArúbaAzɛrəbaidzáŋBosəní ai ɛrəzegovínBarəbádBangaladɛ́sBɛləh" +
+ "ígBuləkiná FasóBuləgaríBahərɛ́nBurundíBəníŋBɛrəmúdBulunéBolíviaBəla" +
+ "zílBahámasButáŋBotswanáBəlarúsBəlískanadáǹnam Kongó Demokəlatígǹnam " +
+ "Zǎŋ AfirikáKongóSuísKód Divɔ́rMinlán Mí kúgTsilíKamərúnTsáinaKolɔmbí" +
+ "Kosta RíkaKubáMinlán Mí Káb VɛrSipəlúsǸnam Tsɛ́gNdzámanDzibutíDanəmá" +
+ "rəgDómənikaRépublique dominicaineAləyériaEkwatórEsetoníEhíbətɛnElitə" +
+ "léKpənyáEtiopíFinəlánFidzíMinlán Mi FóləkəlanMikoronésiaFulɛnsíGabóŋ" +
+ "Ǹnam EngəlisGələnádəHorə́yiaGuyán yá FulɛnsíGanáYiləbalatárGoelánGa" +
+ "mbíGinéGuadəlúbGiné EkwatóGəlɛ́sGuatemaláGuámGiné BisaóGuyánOndurásK" +
+ "əlowásiaAitíOngiríɛndonésiaIrəlándəIsəraɛ́lɛ́ndəǹnam ɛngəlís yá Máŋ" +
+ " mə́ ɛ́ndəIrágIránIsəlándəItáliɛnHamaíkaHorədaníHapɔ́nKeniáKirigisət" +
+ "ánkambodíaKiribatíKomɔ́rǸfúfúb-Kilisətóv-ai-NevisKoré yá NórKoré yá" +
+ " SúdKowɛ́dMinlán Mí KalimáŋKazakətáŋLaósLibáŋǸfúfúb-LúsiaLísə́sə́tái" +
+ "nSəri LaŋkáLibériaLəsotóLituaníLukəzambúdLətoníLibíMarɔ́gMɔnakóMoləd" +
+ "avíMadagasəkárəMinlán Mí MaresálMasedóniaMalíMianəmárMɔngɔ́liaMinlán" +
+ " Mi Marián yá NórMarətinígMoritaníMɔ́ntserádMálətəMorísMalədívəMalaw" +
+ "íMɛkəsígMalɛ́ziaMozambígNamibíǸkpámɛn KaledóniaNihɛ́rMinlán Nɔrəfɔ́" +
+ "ləkəNihériaNikaráguaPɛíbáNɔrəvɛ́sNepálNaurúNiuéǸkpámɛn ZeláŋOmánPana" +
+ "máPerúPolinesí yá FulɛnsíPapwazi yá Ǹkpámɛ́n GinéFilipínPakisətánfól" +
+ "isǸfúfúb-Píɛr-ai-Mikəlɔ́ŋPítə́kɛ́rɛnəPwɛrəto RíkoǸnam Palɛsətínfɔrət" +
+ "ugɛ́sPalauParaguéKatárReuniɔ́ŋRumaníRúsianRuwandáArabí SaudíMinlán M" +
+ "í Solomɔ́nSɛsɛ́lSudáŋSuwɛ́dSingapúrǸfúfúb-Ɛlɛ́naSəlovéniaSəlovakíSi" +
+ "erá-leónəǸfúfúb MarínoSenegálSomáliaSurinámSaó Tomé ai PəlinəsípeSal" +
+ "əvadórSiríSwazilándəMinlán Mí túrə́g-ai-KaígTsádTogóTailánTadzikisə" +
+ "táŋTokelóTimôrTurəkəmənisətáŋTunisíTɔngáTurəkíTəlinité-ai-TobágoTuva" +
+ "lúTaiwánTaŋəzaníUkərɛ́nUgandáǸnam AmɛrəkəUruguéUzubekisətánǸnam Vati" +
+ "kánǸfúfúb-Vɛngəsáŋ-ai-Bə GələnadínVenezuélańnam Minlán ɛ́ngəlísMinlá" +
+ "n Mi AmɛrəkəViɛdənámVanuátuWalís-ai-FutúnaSamoáYemɛ́nMayɔ́dAfiríka y" +
+ "á SúdZambíZimbabwé",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x001e, 0x002d, 0x0043, 0x004b, 0x0055,
+ 0x005f, 0x0076, 0x007d, 0x007d, 0x008b, 0x00a4, 0x00af, 0x00bb,
+ 0x00c1, 0x00c1, 0x00d1, 0x00ea, 0x00f3, 0x0100, 0x010a, 0x011a,
+ 0x0124, 0x012f, 0x0137, 0x013f, 0x013f, 0x0149, 0x0150, 0x0158,
+ 0x0158, 0x0161, 0x0169, 0x0170, 0x0170, 0x0179, 0x0182, 0x0189,
+ 0x0190, 0x0190, 0x01aa, 0x01be, 0x01c4, 0x01c9, 0x01d6, 0x01e6,
+ 0x01ec, 0x01f5, 0x01fc, 0x0205, 0x0205, 0x0210, 0x0215, 0x022a,
+ 0x022a, 0x022a, 0x0233, 0x0240, 0x0248, 0x0248, 0x0250, 0x025c,
+ // Entry 40 - 7F
+ 0x0266, 0x027d, 0x0287, 0x0287, 0x028f, 0x0297, 0x02a2, 0x02a2,
+ 0x02ab, 0x02b3, 0x02ba, 0x02ba, 0x02c3, 0x02c9, 0x02e0, 0x02ec,
+ 0x02ec, 0x02f5, 0x02fc, 0x030a, 0x0316, 0x0320, 0x0334, 0x0334,
+ 0x0339, 0x0346, 0x034d, 0x0353, 0x0358, 0x0362, 0x036f, 0x0378,
+ 0x0378, 0x0382, 0x0387, 0x0393, 0x0399, 0x0399, 0x0399, 0x03a1,
+ 0x03ac, 0x03b1, 0x03b8, 0x03b8, 0x03c3, 0x03ce, 0x03d9, 0x03d9,
+ 0x03e1, 0x040a, 0x040f, 0x0414, 0x041f, 0x0428, 0x0428, 0x0430,
+ 0x043a, 0x0442, 0x0448, 0x0455, 0x045e, 0x0467, 0x046f, 0x048d,
+ // Entry 80 - BF
+ 0x049b, 0x04a9, 0x04b1, 0x04c6, 0x04d2, 0x04d7, 0x04de, 0x04ee,
+ 0x0500, 0x050d, 0x0515, 0x051d, 0x0525, 0x0531, 0x0539, 0x053e,
+ 0x0546, 0x054e, 0x0558, 0x0558, 0x0558, 0x0567, 0x057b, 0x0585,
+ 0x058a, 0x0594, 0x05a0, 0x05a0, 0x05bb, 0x05c6, 0x05cf, 0x05dc,
+ 0x05e5, 0x05eb, 0x05f6, 0x05fd, 0x0607, 0x0611, 0x061a, 0x0621,
+ 0x0636, 0x063e, 0x0657, 0x065f, 0x0669, 0x0671, 0x067d, 0x0683,
+ 0x0689, 0x068e, 0x06a0, 0x06a5, 0x06ac, 0x06b1, 0x06c8, 0x06e6,
+ 0x06ee, 0x06f9, 0x06ff, 0x071f, 0x0732, 0x0741, 0x0753, 0x0761,
+ // Entry C0 - FF
+ 0x0766, 0x076e, 0x0774, 0x0774, 0x077f, 0x0786, 0x0786, 0x078d,
+ 0x0795, 0x07a2, 0x07b8, 0x07c1, 0x07c8, 0x07d0, 0x07d9, 0x07ec,
+ 0x07f7, 0x07f7, 0x0801, 0x080f, 0x0820, 0x0828, 0x0830, 0x0838,
+ 0x0838, 0x0853, 0x085e, 0x085e, 0x0863, 0x086f, 0x086f, 0x088d,
+ 0x0892, 0x0892, 0x0897, 0x089e, 0x08ad, 0x08b4, 0x08ba, 0x08cf,
+ 0x08d6, 0x08dd, 0x08e5, 0x08fa, 0x0901, 0x0908, 0x0913, 0x091d,
+ 0x0924, 0x0924, 0x0934, 0x093b, 0x0949, 0x0957, 0x0981, 0x098b,
+ 0x09a5, 0x09ba, 0x09c5, 0x09cd, 0x09de, 0x09e4, 0x09e4, 0x09ec,
+ // Entry 100 - 13F
+ 0x09f4, 0x0a05, 0x0a0b, 0x0a14,
+ },
+ },
+ { // fa
+ faRegionStr,
+ faRegionIdx,
+ },
+ { // fa-AF
+ "اندوراانتیگوا و باربوداالبانیاانگولاارجنتاینآسترالیابوسنیا و هرزه\u200cگ" +
+ "وینابنگله\u200cدیشبلجیمبلغاریابرونیبولیویابرازیلبهاماسروسیهٔ سفیدکا" +
+ "نگو - کینشاساکانگو - برازویلسویسچلیکولمبیاکاستریکاکیوبادنمارکاستونی" +
+ "ااریتریاهسپانیهایتوپیافنلندمیکرونزیاگریناداگینیاگینیا استواییگواتیم" +
+ "الاگینیا بیسائوگیاناهاندوراسکروشیاهایتیاندونیزیاآیرلندآیسلندجاپانکی" +
+ "نیاقرغزستانکمپوچیاکوریای شمالیکوریای جنوبیسریلانکالیسوتولتوانیالاتو" +
+ "یالیبیامادغاسکرمنگولیاموریتانیامالتامکسیکومالیزیاموزمبیقنیجریانیکار" +
+ "اگواهالندناروینیپالزیلاند جدیدپانامهپیروپاپوا نیو گینیاپولندپرتگالپ" +
+ "اراگوایرومانیاروآنداسویدنسینگاپورسلونیاسلواکیاسیرالیونسینیگالسومالی" +
+ "هالسلوادورتاجکستاناکراینیوروگوایونزویلازیمبابوی",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x002c, 0x002c, 0x003a,
+ 0x003a, 0x003a, 0x0046, 0x0046, 0x0056, 0x0056, 0x0056, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x008b, 0x008b, 0x009e, 0x00a8, 0x00a8,
+ 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c0, 0x00ce,
+ 0x00ce, 0x00da, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00fb, 0x00fb,
+ 0x00fb, 0x00fb, 0x0116, 0x0116, 0x0131, 0x0139, 0x0139, 0x0139,
+ 0x013f, 0x013f, 0x013f, 0x014d, 0x014d, 0x015d, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0173,
+ // Entry 40 - 7F
+ 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0181, 0x0181, 0x0181,
+ 0x018f, 0x019d, 0x01ab, 0x01ab, 0x01b5, 0x01b5, 0x01b5, 0x01c7,
+ 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01d5, 0x01d5, 0x01d5, 0x01d5,
+ 0x01d5, 0x01d5, 0x01d5, 0x01d5, 0x01df, 0x01df, 0x01f8, 0x01f8,
+ 0x01f8, 0x020a, 0x020a, 0x0221, 0x022b, 0x022b, 0x022b, 0x023b,
+ 0x0247, 0x0251, 0x0251, 0x0251, 0x0263, 0x026f, 0x026f, 0x026f,
+ 0x026f, 0x026f, 0x026f, 0x026f, 0x027b, 0x027b, 0x027b, 0x027b,
+ 0x027b, 0x0285, 0x028f, 0x029f, 0x02ad, 0x02ad, 0x02ad, 0x02ad,
+ // Entry 80 - BF
+ 0x02c4, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db, 0x02db,
+ 0x02db, 0x02eb, 0x02eb, 0x02f7, 0x0305, 0x0305, 0x0311, 0x031b,
+ 0x031b, 0x031b, 0x031b, 0x031b, 0x031b, 0x032b, 0x032b, 0x032b,
+ 0x032b, 0x032b, 0x0339, 0x0339, 0x0339, 0x0339, 0x034b, 0x034b,
+ 0x0355, 0x0355, 0x0355, 0x0355, 0x0361, 0x036f, 0x037d, 0x037d,
+ 0x037d, 0x037d, 0x037d, 0x0389, 0x039b, 0x03a5, 0x03af, 0x03b9,
+ 0x03b9, 0x03b9, 0x03ce, 0x03ce, 0x03da, 0x03e2, 0x03e2, 0x03fe,
+ 0x03fe, 0x03fe, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0414,
+ // Entry C0 - FF
+ 0x0414, 0x0424, 0x0424, 0x0424, 0x0424, 0x0432, 0x0432, 0x0432,
+ 0x043e, 0x043e, 0x043e, 0x043e, 0x043e, 0x0448, 0x0458, 0x0458,
+ 0x0464, 0x0464, 0x0472, 0x0482, 0x0482, 0x0490, 0x049e, 0x049e,
+ 0x049e, 0x049e, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b0,
+ 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04c0, 0x04c0, 0x04c0, 0x04c0,
+ 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04cc,
+ 0x04cc, 0x04cc, 0x04cc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04ea,
+ 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea, 0x04ea,
+ // Entry 100 - 13F
+ 0x04ea, 0x04ea, 0x04ea, 0x04fa,
+ },
+ },
+ { // ff
+ "AnndooraEmiraat Araab DenntuɗeAfganistaanAntiguwaa e BarbudaaAnngiyaaAlb" +
+ "aniiArmeniiAntiiye NederlanndeejeAnngolaaArjantiinSamowa AmerikOtiri" +
+ "isOstaraaliiAruubaAjerbayjaanBosnii HersegowiinBarbadoosBanglaadeesB" +
+ "eljikBurkibaa FaasoBulgariiBahreynBurunndiBeneeBermudaaBurnaayBoliwi" +
+ "iBeresiilBahamaasButaanBotswaanaBelaruusBeliiseKanadaaNdenndaandi De" +
+ "mokaraasiire KonngoNdenndaandi SantarafrikKonngoSuwiisKodduwaarDuuɗe" +
+ " KuukCiliiKameruunSiinKolombiyaKosta RikaaKubaaDuuɗe Kap WeerSiiparN" +
+ "denndaandi CekAlmaañJibutiiDanmarkDominikaNdenndanndi DominikaAlaser" +
+ "iEkuwatoorEstoniEjiptEritereeEspaañEcoppiFenlandFijjiDuuɗe FalklandM" +
+ "ikoronesiiFarayseGabooLaamateeri RentundiGarnaadJeorgiiGiyaan Farays" +
+ "eGanaaJibraltaarGorwendlandGammbiGineGwaadalupGinee EkuwaatoriyaalGe" +
+ "reesGwaatemalaaGuwamGine-BisaawoGiyaanOnnduraasKorwasiiHaytiiOnngiri" +
+ "EnndonesiiIrlanndaIsraa’iilaEnndoKeeriindi britaani to maayo enndoIr" +
+ "aakIraanIslanndaItaliJamaykaJordaniSapooKeñaaKirgistaanKambodsoKirib" +
+ "ariKomoorSent Kits e NewisKoree RewoKoree WorgoKuweytiDuuɗe KaymaaKa" +
+ "sakstaanLawoosLibaaSent LusiyaaLincenstaynSiri LankaLiberiyaaLesotoL" +
+ "ituaaniiLiksembuurLetoniiLibiMarukMonaakooMoldawiiMadagaskaarDuuɗe M" +
+ "arsaalMeceduwaanMaaliMiyamaarMonngoliiDuuɗe Mariyaana RewoMartinikMu" +
+ "ritaniMonseraatMalteMoriisMaldiiweMalaawiMeksikMalesiiMosammbikNamib" +
+ "iiNuwel KaledoniiNijeerDuuɗe NorfolkNijeriyaaNikaraguwaaNederlanndaN" +
+ "orweesNepaalNawuruNiuweNuwel SelanndaOmaanPanamaaPeruPolinesii Faray" +
+ "sePapuwaa Nuwel GineFilipiinPakistaanPoloñSee Piyeer e MikelooPitker" +
+ "nPorto RikooPalestiin Sisjordani e GaasaaPurtugaalPalawuParaguwaayKa" +
+ "taarRewiñooRumaniiRiisiiRuwanndaaArabii SawditDuuɗe SolomonSeyselSud" +
+ "aanSuweedSinngapuurSent HelenSloweniiSlowakiiSeraa liyonSee MareeSen" +
+ "egaalSomaliiSurinaamSawo Tome e PerensipeEl SalwadorSiriiSwaasilannd" +
+ "aDuuɗe Turke e KeikoosCaadTogooTaylanndaTajikistaanTokelaawTimoor Fu" +
+ "ɗnaangeTurkmenistaanTunisiiTonngaaTurkiiTirnidaad e TobaagoTuwaluuT" +
+ "aywaanTansaniiUkereenUnganndaaDowlaaji Dentuɗi AmerikUruguwaayUsbeki" +
+ "staanDowla WaticaanSee Weesaa e GarnadiinWenesuwelaaduuɗe kecce brit" +
+ "aniiDuuɗe Kecce AmerikWiyetnaamWanuwaatuuWalis e FutunaSamowaaYemenM" +
+ "ayootAfrik bŋ WorgoSammbiSimbaabuwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x001f, 0x002a, 0x003e, 0x0046, 0x004d,
+ 0x0054, 0x006a, 0x0072, 0x0072, 0x007b, 0x0088, 0x008f, 0x0099,
+ 0x009f, 0x009f, 0x00aa, 0x00bc, 0x00c5, 0x00d0, 0x00d6, 0x00e4,
+ 0x00ec, 0x00f3, 0x00fb, 0x0100, 0x0100, 0x0108, 0x010f, 0x0116,
+ 0x0116, 0x011e, 0x0126, 0x012c, 0x012c, 0x0135, 0x013d, 0x0144,
+ 0x014b, 0x014b, 0x016c, 0x0183, 0x0189, 0x018f, 0x0198, 0x01a3,
+ 0x01a8, 0x01b0, 0x01b4, 0x01bd, 0x01bd, 0x01c8, 0x01cd, 0x01dc,
+ 0x01dc, 0x01dc, 0x01e2, 0x01f1, 0x01f8, 0x01f8, 0x01ff, 0x0206,
+ // Entry 40 - 7F
+ 0x020e, 0x0222, 0x0229, 0x0229, 0x0232, 0x0238, 0x023d, 0x023d,
+ 0x0245, 0x024c, 0x0252, 0x0252, 0x0259, 0x025e, 0x026d, 0x0278,
+ 0x0278, 0x027f, 0x0284, 0x0297, 0x029e, 0x02a5, 0x02b3, 0x02b3,
+ 0x02b8, 0x02c2, 0x02cd, 0x02d3, 0x02d7, 0x02e0, 0x02f4, 0x02fa,
+ 0x02fa, 0x0305, 0x030a, 0x0316, 0x031c, 0x031c, 0x031c, 0x0325,
+ 0x032d, 0x0333, 0x033a, 0x033a, 0x0344, 0x034c, 0x0358, 0x0358,
+ 0x035d, 0x037e, 0x0383, 0x0388, 0x0390, 0x0395, 0x0395, 0x039c,
+ 0x03a3, 0x03a8, 0x03ae, 0x03b8, 0x03c0, 0x03c8, 0x03ce, 0x03df,
+ // Entry 80 - BF
+ 0x03e9, 0x03f4, 0x03fb, 0x0408, 0x0412, 0x0418, 0x041d, 0x0429,
+ 0x0434, 0x043e, 0x0447, 0x044d, 0x0456, 0x0460, 0x0467, 0x046b,
+ 0x0470, 0x0478, 0x0480, 0x0480, 0x0480, 0x048b, 0x0499, 0x04a3,
+ 0x04a8, 0x04b0, 0x04b9, 0x04b9, 0x04ce, 0x04d6, 0x04de, 0x04e7,
+ 0x04ec, 0x04f2, 0x04fa, 0x0501, 0x0507, 0x050e, 0x0517, 0x051e,
+ 0x052d, 0x0533, 0x0541, 0x054a, 0x0555, 0x0560, 0x0567, 0x056d,
+ 0x0573, 0x0578, 0x0586, 0x058b, 0x0592, 0x0596, 0x05a7, 0x05b9,
+ 0x05c1, 0x05ca, 0x05d0, 0x05e4, 0x05eb, 0x05f6, 0x0613, 0x061c,
+ // Entry C0 - FF
+ 0x0622, 0x062c, 0x0632, 0x0632, 0x063a, 0x0641, 0x0641, 0x0647,
+ 0x0650, 0x065d, 0x066b, 0x0671, 0x0677, 0x067d, 0x0687, 0x0691,
+ 0x0699, 0x0699, 0x06a1, 0x06ac, 0x06b5, 0x06bd, 0x06c4, 0x06cc,
+ 0x06cc, 0x06e1, 0x06ec, 0x06ec, 0x06f1, 0x06fd, 0x06fd, 0x0713,
+ 0x0717, 0x0717, 0x071c, 0x0725, 0x0730, 0x0738, 0x0749, 0x0756,
+ 0x075d, 0x0764, 0x076a, 0x077d, 0x0784, 0x078b, 0x0793, 0x079a,
+ 0x07a3, 0x07a3, 0x07bb, 0x07c4, 0x07cf, 0x07dd, 0x07f3, 0x07fe,
+ 0x0813, 0x0826, 0x082f, 0x0839, 0x0847, 0x084e, 0x084e, 0x0853,
+ // Entry 100 - 13F
+ 0x0859, 0x0868, 0x086e, 0x0878,
+ },
+ },
+ { // fi
+ fiRegionStr,
+ fiRegionIdx,
+ },
+ { // fil
+ filRegionStr,
+ filRegionIdx,
+ },
+ { // fo
+ "AscensionAndorraSameindu EmirríkiniAfganistanAntigua & BarbudaAnguillaAl" +
+ "baniaArmeniaNiðurlendsku AntilloyggjarnarAngolaAntarktisArgentinaAme" +
+ "rikanska SamoaEysturríkiAvstraliaArubaÁlandAserbadjanBosnia-Hersegov" +
+ "inaBarbadosBangladesjBelgiaBurkina FasoBulgariaBareinBurundiBeninSt-" +
+ "BarthélemyBermudaBruneiBoliviaNiðurlonds KaribiaBrasilBahamaoyggjarB" +
+ "utanBouvetoyggjBotsvanaHvítarusslandBelisKanadaKokosoyggjarKongo, De" +
+ "m. LýðveldiðMiðafrikalýðveldiðKongoSveisFílabeinsstrondinCooksoyggja" +
+ "rKiliKamerunKinaKolombiaClippertonKosta RikaKubaGrønhøvdaoyggjarCura" +
+ "çaoJólaoyggjinKýprosKekkiaTýsklandDiego GarciaDjibutiDanmarkDominik" +
+ "aDominikalýðveldiðAlgeriaCeuta og MelillaEkvadorEstlandEgyptalandVes" +
+ "tursaharaEritreaSpaniaEtiopiaEvropasamveldiðFinnlandFijiFalklandsoyg" +
+ "gjarMikronesiasamveldiðFøroyarFraklandGabonStórabretlandGrenadaGeorg" +
+ "iaFranska GujanaGuernseyGanaGibraltarGrønlandGambiaGuineaGuadeloupeE" +
+ "kvatorguineaGrikkalandSuðurgeorgia og SuðursandwichoyggjarGuatemalaG" +
+ "uamGuinea-BissauGujanaHong Kong SAR KinaHeard og McDonaldoyggjarHond" +
+ "urasKroatiaHaitiUngarnKanariuoyggjarIndonesiaÍrlandÍsraelIsle of Man" +
+ "IndiaStóra Bretlands IndiahavoyggjarIrakIranÍslandItaliaJerseyJamaik" +
+ "aJordanJapanKenjaKirgisiaKambodjaKiribatiKomoroyggjarSt. Kitts & Nev" +
+ "isNorðurkoreaSuðurkoreaKuvaitCaymanoyggjarKasakstanLaosLibanonSt. Lu" +
+ "siaLiktinsteinSri LankaLiberiaLesotoLitavaLuksemborgLettlandLibyaMar" +
+ "okkoMonakoMoldovaMontenegroSt-MartinMadagaskarMarshalloyggjarMakedón" +
+ "iaMaliMyanmar (Burma)MongoliaMakao SAR KinaNorðaru MariuoyggjarMarti" +
+ "niqueMóritaniaMontserratMaltaMóritiusMaldivoyggjarMalaviMeksikoMalai" +
+ "siaMosambikNamibiaNýkaledóniaNigerNorfolksoyggjNigeriaNikaraguaNiður" +
+ "londNoregNepalNauruNiueNýsælandOmanPanamaPeruFranska PolynesiaPapua " +
+ "NýguineaFilipsoyggjarPakistanPóllandSaint Pierre og MiquelonPitcairn" +
+ "oyggjarPuerto RikoPalestinskt landøkiPortugalPalauParaguaiKatarfjars" +
+ "koti OsianiaRéunionRumeniaSerbiaRusslandRuandaSaudiarabiaSalomonoygg" +
+ "jarSeyskelloyggjarSudanSvøríkiSingaporSt. HelenaSloveniaSvalbard & J" +
+ "an MayenSlovakiaSierra LeonaSan MarinoSenegalSomaliaSurinamSuðursuda" +
+ "nSao Tome & PrinsipiEl SalvadorSint MaartenSýriaSvasilandTristan da " +
+ "CunhaTurks- og CaicosoyggjarKjadFronsku sunnaru landaøkiTogoTailandT" +
+ "adsjikistanTokelauEysturtimorTurkmenistanTunesiaTongaTurkalandTrinid" +
+ "ad & TobagoTuvaluTaivanTansaniaUkrainaUgandaSambandsríki Amerikas fj" +
+ "arskotnu oyggjarSambandsríki AmerikaUruguaiUsbekistanVatikanbýurSt. " +
+ "Vinsent & GrenadinoyggjarVenesuelaStóra Bretlands JomfrúoyggjarSamba" +
+ "ndsríki Amerikas JomfrúoyggjarVjetnamVanuatuWallis- og Futunaoyggjar" +
+ "SamoaKosovoJemenMayotteSuðurafrikaSambiaSimbabviókent økiheimurAfrik" +
+ "aNorðuramerikaSuðuramerikaOsianiaVesturafrikaMiðamerikaEysturafrikaN" +
+ "orðurafrikaMiðafrikasunnari partur av AfrikaAmerikaAmerika norðanfyr" +
+ "i MeksikoKaribiaEysturasiaSuðurasiaÚtsynningsasiaSuðurevropaAvstrala" +
+ "siaMelanesiaMikronesi økiPolynesiaAsiaMiðasiaVesturasiaEvropaEysture" +
+ "vropaNorðurevropaVesturevropaLatínamerika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x0024, 0x002e, 0x003f, 0x0047, 0x004e,
+ 0x0055, 0x0073, 0x0079, 0x0082, 0x008b, 0x009c, 0x00a7, 0x00b0,
+ 0x00b5, 0x00bb, 0x00c5, 0x00d7, 0x00df, 0x00e9, 0x00ef, 0x00fb,
+ 0x0103, 0x0109, 0x0110, 0x0115, 0x0123, 0x012a, 0x0130, 0x0137,
+ 0x014a, 0x0150, 0x015d, 0x0162, 0x016d, 0x0175, 0x0183, 0x0188,
+ 0x018e, 0x019a, 0x01b2, 0x01c8, 0x01cd, 0x01d2, 0x01e4, 0x01f0,
+ 0x01f4, 0x01fb, 0x01ff, 0x0207, 0x0211, 0x021b, 0x021f, 0x0231,
+ 0x0239, 0x0245, 0x024c, 0x0252, 0x025b, 0x0267, 0x026e, 0x0275,
+ // Entry 40 - 7F
+ 0x027d, 0x0291, 0x0298, 0x02a8, 0x02af, 0x02b6, 0x02c0, 0x02cc,
+ 0x02d3, 0x02d9, 0x02e0, 0x02f0, 0x02f8, 0x02fc, 0x030c, 0x0320,
+ 0x0328, 0x0330, 0x0335, 0x0343, 0x034a, 0x0351, 0x035f, 0x0367,
+ 0x036b, 0x0374, 0x037d, 0x0383, 0x0389, 0x0393, 0x03a0, 0x03aa,
+ 0x03d0, 0x03d9, 0x03dd, 0x03ea, 0x03f0, 0x0402, 0x041a, 0x0422,
+ 0x0429, 0x042e, 0x0434, 0x0442, 0x044b, 0x0452, 0x0459, 0x0464,
+ 0x0469, 0x0489, 0x048d, 0x0491, 0x0498, 0x049e, 0x04a4, 0x04ab,
+ 0x04b1, 0x04b6, 0x04bb, 0x04c3, 0x04cb, 0x04d3, 0x04df, 0x04f0,
+ // Entry 80 - BF
+ 0x04fc, 0x0507, 0x050d, 0x051a, 0x0523, 0x0527, 0x052e, 0x0537,
+ 0x0542, 0x054b, 0x0552, 0x0558, 0x055e, 0x0568, 0x0570, 0x0575,
+ 0x057c, 0x0582, 0x0589, 0x0593, 0x059c, 0x05a6, 0x05b5, 0x05bf,
+ 0x05c3, 0x05d2, 0x05da, 0x05e8, 0x05fd, 0x0607, 0x0611, 0x061b,
+ 0x0620, 0x0629, 0x0636, 0x063c, 0x0643, 0x064b, 0x0653, 0x065a,
+ 0x0667, 0x066c, 0x0679, 0x0680, 0x0689, 0x0693, 0x0698, 0x069d,
+ 0x06a2, 0x06a6, 0x06b0, 0x06b4, 0x06ba, 0x06be, 0x06cf, 0x06de,
+ 0x06eb, 0x06f3, 0x06fb, 0x0713, 0x0722, 0x072d, 0x0741, 0x0749,
+ // Entry C0 - FF
+ 0x074e, 0x0756, 0x075b, 0x076c, 0x0774, 0x077b, 0x0781, 0x0789,
+ 0x078f, 0x079a, 0x07a8, 0x07b7, 0x07bc, 0x07c5, 0x07cd, 0x07d7,
+ 0x07df, 0x07f3, 0x07fb, 0x0807, 0x0811, 0x0818, 0x081f, 0x0826,
+ 0x0831, 0x0844, 0x084f, 0x085b, 0x0861, 0x086a, 0x087a, 0x0891,
+ 0x0895, 0x08ae, 0x08b2, 0x08b9, 0x08c5, 0x08cc, 0x08d7, 0x08e3,
+ 0x08ea, 0x08ef, 0x08f8, 0x0909, 0x090f, 0x0915, 0x091d, 0x0924,
+ 0x092a, 0x0953, 0x0968, 0x096f, 0x0979, 0x0985, 0x09a2, 0x09ab,
+ 0x09ca, 0x09ef, 0x09f6, 0x09fd, 0x0a15, 0x0a1a, 0x0a20, 0x0a25,
+ // Entry 100 - 13F
+ 0x0a2c, 0x0a38, 0x0a3e, 0x0a46, 0x0a51, 0x0a57, 0x0a5d, 0x0a6b,
+ 0x0a78, 0x0a7f, 0x0a8b, 0x0a96, 0x0aa2, 0x0aaf, 0x0ab9, 0x0ad1,
+ 0x0ad8, 0x0af3, 0x0afa, 0x0b04, 0x0b0e, 0x0b1d, 0x0b29, 0x0b34,
+ 0x0b3d, 0x0b4b, 0x0b54, 0x0b58, 0x0b60, 0x0b6a, 0x0b70, 0x0b7c,
+ 0x0b89, 0x0b95, 0x0ba2,
+ },
+ },
+ { // fr
+ frRegionStr,
+ frRegionIdx,
+ },
+ { // fr-CA
+ frCARegionStr,
+ frCARegionIdx,
+ },
+ {}, // fr-CH
+ { // fur
+ "AndorraEmirâts araps unîtsAfghanistanAntigua e BarbudaAnguillaAlbanieArm" +
+ "enieAntilis olandesisAngolaAntarticArgjentineSamoa merecanisAustrieA" +
+ "ustralieArubaIsulis AlandAzerbaigianBosnie e ErcegovineBarbadosBangl" +
+ "adeshBelgjicheBurkina FasoBulgarieBahrainBurundiBeninSant Barthélemy" +
+ "BermudaBruneiBolivieBrasîlBahamasBhutanIsule BouvetBotswanaBieloruss" +
+ "ieBelizeCanadeIsulis CocosRepubliche Democratiche dal CongoRepublich" +
+ "e centri africaneCongo - BrazzavilleSvuizareCueste di AvoliIsulis Co" +
+ "okCileCamerunCineColombieIsule ClippertonCosta RicaCubaCjâf vertIsul" +
+ "e ChristmasCipriRepubliche cecheGjermanieDiego GarciaGibutiDanimarcj" +
+ "eDominicheRepubliche dominicaneAlzerieCeuta e MelillaEcuadorEstonieE" +
+ "gjitSahara ocidentâlEritreeSpagneEtiopieUnion europeaneFinlandieFizi" +
+ "Isulis FalklandMicronesieIsulis FaroeFranceGabonReam unîtGrenadaGjeo" +
+ "rgjieGuiana francêsGuernseyGhanaGjibraltarGroenlandeGambiaGuineeGuad" +
+ "alupeGuinee ecuatoriâlGrecieGeorgia dal Sud e Isulis Sandwich dal Su" +
+ "dGuatemalaGuamGuinea-BissauGuyanaRegjon aministrative speciâl de Cin" +
+ "e di Hong KongIsule Heard e Isulis McDonaldHondurasCravuazieHaitiOng" +
+ "jarieIsulis CanariisIndonesieIrlandeIsraêlIsule di ManIndiaTeritori " +
+ "britanic dal Ocean IndianIraqIranIslandeItalieJerseyGjamaicheJordani" +
+ "eGjaponKenyaKirghizstanCambozeKiribatiComorisSan Kitts e NevisCoree " +
+ "dal nordCoree dal sudKuwaitIsulis CaymanKazachistanLaosLibanSante Lu" +
+ "sieLiechtensteinSri LankaLiberieLesothoLituanieLussemburcLetonieLibi" +
+ "eMarocMonacoMoldavieMontenegroSant MartinMadagascarIsulis MarshallMa" +
+ "cedonieMaliBirmanieMongolieRegjon aministrative speciâl de Cine di M" +
+ "acaoIsulis Mariana dal NordMartinicheMauritanieMontserratMaltaMauriz" +
+ "iMaldivisMalawiMessicMalaysiaMozambicNamibieGnove CaledonieNigerIsol" +
+ "e NorfolkNigerieNicaraguaPaîs basNorvegjeNepalNauruNiueGnove Zelande" +
+ "OmanPanamàPerùPolinesie francêsPapue Gnove GuineeFilipinisPakistanPo" +
+ "lonieSan Pierre e MiquelonPitcairnPorto RicoTeritoris palestinêsPort" +
+ "ugalPalauParaguayQatarOceanie perifericheReunionRomanieSerbieRussieR" +
+ "uandeArabie SaudideIsulis SalomonSeychellesSudanSvezieSingaporeSante" +
+ " ElineSlovenieSvalbard e Jan MayenSlovachieSierra LeoneSan MarinSene" +
+ "galSomalieSurinameSao Tomè e PrincipeEl SalvadorSirieSwazilandTrista" +
+ "n da CunhaIsulis Turks e CaicosÇadTeritoris meridionâi francêsTogoTa" +
+ "ilandieTazikistanTokelauTimor orientâlTurkmenistanTunisieTongaTurchi" +
+ "eTrinidad e TobagoTuvaluTaiwanTanzanieUcraineUgandaIsulis periferich" +
+ "is minôrs dai Stâts UnîtsStâts UnîtsUruguayUzbechistanVaticanSan Vin" +
+ "cent e lis GrenadinisVenezuelaIsulis vergjinis britanichisIsulis ver" +
+ "gjinis americanisVietnamVanuatuWallis e FutunaSamoaYemenMayotteSud A" +
+ "fricheZambiaZimbabweRegjon no cognossude o no valideMontAfricheAmeri" +
+ "che dal NordAmeriche meridionâlOceanieAfriche ocidentâlAmeriche cent" +
+ "râlAfriche orientâlAfriche setentrionâlAfriche di mieçAfriche meridi" +
+ "onâlAmerichisAmeriche setentrionâlcaraibicAsie orientâlAsie meridion" +
+ "âlAsie sud orientâlEurope meridionâlAustralie e Gnove ZelandeMelane" +
+ "sieRegjon de MicronesiePolinesieAsieAsie centrâlAsie ocidentâlEurope" +
+ "Europe orientâlEurope setentrionâlEurope ocidentâlAmeriche latine",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x001c, 0x0027, 0x0038, 0x0040, 0x0047,
+ 0x004e, 0x005f, 0x0065, 0x006d, 0x0077, 0x0086, 0x008d, 0x0096,
+ 0x009b, 0x00a7, 0x00b2, 0x00c5, 0x00cd, 0x00d7, 0x00e0, 0x00ec,
+ 0x00f4, 0x00fb, 0x0102, 0x0107, 0x0117, 0x011e, 0x0124, 0x012b,
+ 0x012b, 0x0132, 0x0139, 0x013f, 0x014b, 0x0153, 0x015e, 0x0164,
+ 0x016a, 0x0176, 0x0197, 0x01b1, 0x01c4, 0x01cc, 0x01db, 0x01e6,
+ 0x01ea, 0x01f1, 0x01f5, 0x01fd, 0x020d, 0x0217, 0x021b, 0x0225,
+ 0x0225, 0x0234, 0x0239, 0x0249, 0x0252, 0x025e, 0x0264, 0x026e,
+ // Entry 40 - 7F
+ 0x0277, 0x028c, 0x0293, 0x02a2, 0x02a9, 0x02b0, 0x02b5, 0x02c6,
+ 0x02cd, 0x02d3, 0x02da, 0x02e9, 0x02f2, 0x02f6, 0x0305, 0x030f,
+ 0x031b, 0x0321, 0x0326, 0x0330, 0x0337, 0x0340, 0x034f, 0x0357,
+ 0x035c, 0x0366, 0x0370, 0x0376, 0x037c, 0x0385, 0x0397, 0x039d,
+ 0x03c6, 0x03cf, 0x03d3, 0x03e0, 0x03e6, 0x0418, 0x0435, 0x043d,
+ 0x0446, 0x044b, 0x0453, 0x0462, 0x046b, 0x0472, 0x0479, 0x0485,
+ 0x048a, 0x04ac, 0x04b0, 0x04b4, 0x04bb, 0x04c1, 0x04c7, 0x04d0,
+ 0x04d8, 0x04de, 0x04e3, 0x04ee, 0x04f5, 0x04fd, 0x0504, 0x0515,
+ // Entry 80 - BF
+ 0x0523, 0x0530, 0x0536, 0x0543, 0x054e, 0x0552, 0x0557, 0x0562,
+ 0x056f, 0x0578, 0x057f, 0x0586, 0x058e, 0x0598, 0x059f, 0x05a4,
+ 0x05a9, 0x05af, 0x05b7, 0x05c1, 0x05cc, 0x05d6, 0x05e5, 0x05ee,
+ 0x05f2, 0x05fa, 0x0602, 0x0630, 0x0647, 0x0651, 0x065b, 0x0665,
+ 0x066a, 0x0671, 0x0679, 0x067f, 0x0685, 0x068d, 0x0695, 0x069c,
+ 0x06ab, 0x06b0, 0x06bd, 0x06c4, 0x06cd, 0x06d6, 0x06de, 0x06e3,
+ 0x06e8, 0x06ec, 0x06f9, 0x06fd, 0x0704, 0x0709, 0x071b, 0x072d,
+ 0x0736, 0x073e, 0x0745, 0x075a, 0x0762, 0x076c, 0x0781, 0x0789,
+ // Entry C0 - FF
+ 0x078e, 0x0796, 0x079b, 0x07ae, 0x07b5, 0x07bc, 0x07c2, 0x07c8,
+ 0x07ce, 0x07dc, 0x07ea, 0x07f4, 0x07f9, 0x07ff, 0x0808, 0x0813,
+ 0x081b, 0x082f, 0x0838, 0x0844, 0x084d, 0x0854, 0x085b, 0x0863,
+ 0x0863, 0x0877, 0x0882, 0x0882, 0x0887, 0x0890, 0x08a0, 0x08b5,
+ 0x08b9, 0x08d7, 0x08db, 0x08e4, 0x08ee, 0x08f5, 0x0904, 0x0910,
+ 0x0917, 0x091c, 0x0923, 0x0934, 0x093a, 0x0940, 0x0948, 0x094f,
+ 0x0955, 0x0982, 0x098f, 0x0996, 0x09a1, 0x09a8, 0x09c4, 0x09cd,
+ 0x09e9, 0x0a04, 0x0a0b, 0x0a12, 0x0a21, 0x0a26, 0x0a26, 0x0a2b,
+ // Entry 100 - 13F
+ 0x0a32, 0x0a3d, 0x0a43, 0x0a4b, 0x0a6b, 0x0a6f, 0x0a76, 0x0a87,
+ 0x0a9b, 0x0aa2, 0x0ab4, 0x0ac5, 0x0ad6, 0x0aeb, 0x0afb, 0x0b0e,
+ 0x0b17, 0x0b2d, 0x0b35, 0x0b43, 0x0b53, 0x0b65, 0x0b77, 0x0b90,
+ 0x0b99, 0x0bad, 0x0bb6, 0x0bba, 0x0bc7, 0x0bd6, 0x0bdc, 0x0bec,
+ 0x0c00, 0x0c11, 0x0c20,
+ },
+ },
+ { // fy
+ "AscensionAndorraVerenigde Arabyske EmiratenAfghanistanAntigua en Barbuda" +
+ "AnguillaAlbaniëArmeniëNederlânske AntillenAngolaAntarcticaArgentinië" +
+ "Amerikaansk SamoaEastenrykAustraliëArubaÅlânAzerbeidzjanBosnië en He" +
+ "rzegovinaBarbadosBangladeshBelgiëBurkina FasoBulgarijeBahreinBurundi" +
+ "BeninSaint BarthélemyBermudaBruneiBoliviaKaribysk NederlânBraziliëBa" +
+ "hama’sBhutanBouveteilânBotswanaWit-RuslânBelizeCanadaKokosilanenCong" +
+ "o-KinshasaSintraal-Afrikaanske RepublykCongo-BrazzavilleSwitserlânIv" +
+ "oorkustCookeilannenChiliKameroenSinaKolombiaClippertonCosta RicaKuba" +
+ "KaapverdiëCuraçaoKrysteilanSyprusTsjechjeDútslânDiego GarciaDjibouti" +
+ "DenemarkenDominikaDominikaanske RepublykAlgerijeCeuta en MelillaEcua" +
+ "dorEstlânEgypteWestelijke SaharaEritreaSpanjeEthiopiëEuropeeske Unie" +
+ "FinlânFijiFalklâneilannenMicronesiëFaeröerFrankrijkGabonVerenigd Kon" +
+ "inkrijkGrenadaGeorgiëFrans-GuyanaGuernseyGhanaGibraltarGrienlânGambi" +
+ "aGuineeGuadeloupeEquatoriaal-GuineaGrikelânSûd-Georgia en Sûdlike Sa" +
+ "ndwicheilannenGuatemalaGuamGuinee-BissauGuyanaHongkong SAR van SinaH" +
+ "eard- en McDonaldeilannenHondurasKroatiëHaïtiHongarijeKanaryske Eilâ" +
+ "nnenYndonesiëIerlânIsraëlIsle of ManIndiaBritse Gebieden yn de Indys" +
+ "ke OseaanIrakIranYslânItaliëJerseyJamaicaJordaniëJapanKeniaKirgiziëC" +
+ "ambodjaKiribatiComorenSaint Kitts en NevisNoard-KoreaSûd-KoreaKoewei" +
+ "tCaymaneilannenKazachstanLaosLibanonSaint LuciaLiechtensteinSri Lank" +
+ "aLiberiaLesothoLitouwenLuxemburgLetlânLibiëMarokkoMonacoMoldaviëMont" +
+ "enegroSaint-MartinMadeiaskarMarshalleilannenMacedoniëMaliMyanmar (Bi" +
+ "rma)MongoliëMacao SAR van SinaNoardlike MarianeneilannenMartiniqueMa" +
+ "uritaniëMontserratMaltaMauritiusMaldivenMalawiMexicoMaleisiëMozambiq" +
+ "ueNamibiëNij-CaledoniëNigerNorfolkeilânNigeriaNicaraguaNederlânNoarw" +
+ "egenNepalNauruNiueNij-SeelânOmanPanamaPeruFrans-PolynesiëPapoea-Nij-" +
+ "GuineaFilipijnenPakistanPolenSaint-Pierre en MiquelonPitcairneilanne" +
+ "nPuerto RicoPalestynske gebietenPortugalPalauParaguayQatarOerig Ocea" +
+ "niëRéunionRoemeniëServiëRuslânRwandaSaoedi-ArabiëSalomonseilannenSey" +
+ "chellenSoedanZwedenSingaporeSint-HelenaSloveniëSpitsbergen en Jan Ma" +
+ "yenSlowakijeSierra LeoneSan MarinoSenegalSomaliëSurinameSûd-SoedanSa" +
+ "o Tomé en PrincipeEl SalvadorSint-MaartenSyriëSwazilânTristan da Cun" +
+ "haTurks- en CaicoseilannenTsjaadFranse Gebieden in de zuidelijke Ind" +
+ "yske OseaanTogoThailânTadzjikistanTokelauEast-TimorTurkmenistanTunes" +
+ "iëTongaTurkijeTrinidad en TobagoTuvaluTaiwanTanzaniaOekraïneOegandaL" +
+ "yts ôflizzen eilannen fan de Ferienigde StatenFerienigde StatenUrugu" +
+ "ayOezbekistanVaticaanstêdSaint Vincent en de GrenadinesVenezuelaBrit" +
+ "se MaagdeneilannenAmerikaanske MaagdeneilannenVietnamVanuatuWallis e" +
+ "n FutunaSamoaKosovoJemenMayotteSûd-AfrikaZambiaZimbabweUnbekend gebi" +
+ "etWrâldAfrikaNoard-AmerikaSûd-AmerikaOceaniëWest-AfrikaMidden-Amerik" +
+ "aEast-AfrikaNoard-AfrikaSintraal-AfrikaSûdelijk AfrikaAmerikaNoardli" +
+ "k AmerikaKaribysk gebietEast-AziëSûd-AziëSûdoost-AziëSûd-EuropaAustr" +
+ "alaziëMelanesiëMicronesyske regioPolynesiëAziëSintraal-AziëWest-Azië" +
+ "EuropaEast-EuropaNoard-EuropaWest-EuropaLatynsk-Amearika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0048, 0x0050, 0x0058,
+ 0x0060, 0x0075, 0x007b, 0x0085, 0x0090, 0x00a1, 0x00aa, 0x00b4,
+ 0x00b9, 0x00bf, 0x00cb, 0x00e1, 0x00e9, 0x00f3, 0x00fa, 0x0106,
+ 0x010f, 0x0116, 0x011d, 0x0122, 0x0133, 0x013a, 0x0140, 0x0147,
+ 0x0159, 0x0162, 0x016c, 0x0172, 0x017e, 0x0186, 0x0191, 0x0197,
+ 0x019d, 0x01a8, 0x01b6, 0x01d3, 0x01e4, 0x01ef, 0x01f8, 0x0204,
+ 0x0209, 0x0211, 0x0215, 0x021d, 0x0227, 0x0231, 0x0235, 0x0240,
+ 0x0248, 0x0252, 0x0258, 0x0260, 0x0269, 0x0275, 0x027d, 0x0287,
+ // Entry 40 - 7F
+ 0x028f, 0x02a5, 0x02ad, 0x02bd, 0x02c4, 0x02cb, 0x02d1, 0x02e2,
+ 0x02e9, 0x02ef, 0x02f8, 0x0307, 0x030e, 0x0312, 0x0322, 0x032d,
+ 0x0335, 0x033e, 0x0343, 0x0356, 0x035d, 0x0365, 0x0371, 0x0379,
+ 0x037e, 0x0387, 0x0390, 0x0396, 0x039c, 0x03a6, 0x03b8, 0x03c1,
+ 0x03ea, 0x03f3, 0x03f7, 0x0404, 0x040a, 0x041f, 0x0439, 0x0441,
+ 0x0449, 0x044f, 0x0458, 0x046b, 0x0475, 0x047c, 0x0483, 0x048e,
+ 0x0493, 0x04b7, 0x04bb, 0x04bf, 0x04c5, 0x04cc, 0x04d2, 0x04d9,
+ 0x04e2, 0x04e7, 0x04ec, 0x04f5, 0x04fd, 0x0505, 0x050c, 0x0520,
+ // Entry 80 - BF
+ 0x052b, 0x0535, 0x053c, 0x054a, 0x0554, 0x0558, 0x055f, 0x056a,
+ 0x0577, 0x0580, 0x0587, 0x058e, 0x0596, 0x059f, 0x05a6, 0x05ac,
+ 0x05b3, 0x05b9, 0x05c2, 0x05cc, 0x05d8, 0x05e2, 0x05f2, 0x05fc,
+ 0x0600, 0x060f, 0x0618, 0x062a, 0x0644, 0x064e, 0x0659, 0x0663,
+ 0x0668, 0x0671, 0x0679, 0x067f, 0x0685, 0x068e, 0x0698, 0x06a0,
+ 0x06ae, 0x06b3, 0x06c0, 0x06c7, 0x06d0, 0x06d9, 0x06e2, 0x06e7,
+ 0x06ec, 0x06f0, 0x06fb, 0x06ff, 0x0705, 0x0709, 0x0719, 0x072a,
+ 0x0734, 0x073c, 0x0741, 0x0759, 0x0769, 0x0774, 0x0788, 0x0790,
+ // Entry C0 - FF
+ 0x0795, 0x079d, 0x07a2, 0x07b0, 0x07b8, 0x07c1, 0x07c8, 0x07cf,
+ 0x07d5, 0x07e3, 0x07f3, 0x07fd, 0x0803, 0x0809, 0x0812, 0x081d,
+ 0x0826, 0x083e, 0x0847, 0x0853, 0x085d, 0x0864, 0x086c, 0x0874,
+ 0x087f, 0x0894, 0x089f, 0x08ab, 0x08b1, 0x08ba, 0x08ca, 0x08e2,
+ 0x08e8, 0x0917, 0x091b, 0x0923, 0x092f, 0x0936, 0x0940, 0x094c,
+ 0x0954, 0x0959, 0x0960, 0x0972, 0x0978, 0x097e, 0x0986, 0x098f,
+ 0x0996, 0x09c6, 0x09d7, 0x09de, 0x09e9, 0x09f6, 0x0a14, 0x0a1d,
+ 0x0a33, 0x0a4f, 0x0a56, 0x0a5d, 0x0a6d, 0x0a72, 0x0a78, 0x0a7d,
+ // Entry 100 - 13F
+ 0x0a84, 0x0a8f, 0x0a95, 0x0a9d, 0x0aac, 0x0ab2, 0x0ab8, 0x0ac5,
+ 0x0ad1, 0x0ad9, 0x0ae4, 0x0af2, 0x0afd, 0x0b09, 0x0b18, 0x0b28,
+ 0x0b2f, 0x0b3f, 0x0b4e, 0x0b58, 0x0b62, 0x0b70, 0x0b7b, 0x0b87,
+ 0x0b91, 0x0ba3, 0x0bad, 0x0bb2, 0x0bc0, 0x0bca, 0x0bd0, 0x0bdb,
+ 0x0be7, 0x0bf2, 0x0c02,
+ },
+ },
+ { // ga
+ "Oileán na DeascabhálaAndóraAontas na nÉimíríochtaí ArabachaAn Afganastái" +
+ "nAntigua agus BarbúdaAngaíleAn AlbáinAn AirméinAintillí na hÍsiltíre" +
+ "AngólaAn AntartaiceAn AirgintínSamó MeiriceánachAn OstairAn AstráilA" +
+ "rúbaOileáin ÅlandAn AsarbaiseáinAn Bhoisnia agus An HeirseagaivéinBa" +
+ "rbadósAn BhanglaidéisAn BheilgBuircíne FasóAn BhulgáirBairéinAn Bhur" +
+ "úinBeininSaint BarthélemyBeirmiúdaBrúinéAn BholaivAn Ísiltír Chairi" +
+ "beachAn BhrasaílNa BahámaíAn BhútáinOileán BouvetAn BhotsuáinAn Bhea" +
+ "larúisAn BheilísCeanadaOileáin Cocos (Keeling)Poblacht Dhaonlathach " +
+ "an ChongóPoblacht na hAfraice LáirAn CongóAn EilvéisAn Cósta Eabhair" +
+ "Oileáin CookAn tSileCamarúnAn tSínAn CholóimOileán ClippertonCósta R" +
+ "íceCúbaRinn VerdeCuraçaoOileán na NollagAn ChipirPoblacht na SeiceA" +
+ "n GhearmáinDiego GarciaDjiboutiAn DanmhairgDoiminiceAn Phoblacht Dho" +
+ "iminiceachAn AilgéirCeuta agus MelillaEacuadórAn EastóinAn ÉigiptAn " +
+ "Sahára ThiarAn EiritréAn SpáinnAn AetóipAn tAontas EorpachAn Fhionla" +
+ "innFidsíOileáin FháclainneAn MhicrinéisOileáin FharóAn FhraincAn Gha" +
+ "búinAn Ríocht AontaitheGreanádaAn tSeoirsiaGuáin na FrainceGeansaíGá" +
+ "naGiobráltarAn GhraonlainnAn GhaimbiaAn GhuineGuadalúipAn Ghuine Mhe" +
+ "ánchriosachAn GhréigAn tSeoirsia Theas agus Oileáin Sandwich TheasG" +
+ "uatamalaGuamGuine BissauAn GhuáinS.R.R. na Síne Hong CongOileán Hear" +
+ "d agus Oileáin McDonaldHondúrasAn ChróitHáítíAn UngáirNa hOileáin Ch" +
+ "anárachaAn IndinéisÉireIosraelOileán MhanannAn IndiaCríoch Aigéan In" +
+ "diach na BreataineAn IaráicAn IaráinAn ÍoslainnAn IodáilGeirsíIamáic" +
+ "eAn IordáinAn tSeapáinAn ChéiniaAn ChirgeastáinAn ChambóidCireabaití" +
+ "Oileáin ChomóraSan Críostóir-NimheasAn Chóiré ThuaidhAn Chóiré Theas" +
+ "CuáitOileáin CaymanAn ChasacstáinLaosAn LiobáinSaint LuciaLichtinsté" +
+ "inSrí LancaAn LibéirLeosótaAn LiotuáinLucsamburgAn LaitviaAn LibiaMa" +
+ "racóMonacóAn MholdóivMontainéagróSaint-MartinMadagascarOileáin Marsh" +
+ "allAn MhacadóinMailíMaenmar (Burma)An MhongóilS.R.R. na Síne MacaoNa" +
+ " hOileáin Mháirianacha ThuaidhMartiniqueAn MháratáinMontsaratMáltaOi" +
+ "leán MhuirísOileáin MhaildíveAn MhaláivMeicsiceoAn MhalaeisiaMósaimb" +
+ "ícAn NamaibAn Nua-ChaladóinAn NígirOileán NorfolkAn NigéirNicearagu" +
+ "aAn ÍsiltírAn IoruaNeipealNárúNiueAn Nua-ShéalainnÓmanPanamaPeiriúPo" +
+ "lainéis na FrainceNua-Ghuine PhapuaNa hOileáin FhilipíneachaAn Phaca" +
+ "stáinAn PholainnSaint-Pierre-et-MiquelonOileáin PitcairnPortó RíceNa" +
+ " Críocha PalaistíneachaAn PhortaingéilPalauParaguaCatarAn Aigéine Im" +
+ "eallachRéunionAn RómáinAn tSeirbiaAn RúisRuandaAn Araib ShádachOileá" +
+ "in SholomónNa SéiséilAn tSúdáinAn tSualainnSingeapórSan HéilinAn tSl" +
+ "óivéinSvalbard agus Jan MayenAn tSlóvaicSiarra LeonSan MairíneAn tS" +
+ "eineagáilAn tSomáilSuranamAn tSúdáin TheasSão Tomé agus PríncipeAn t" +
+ "SalvadóirSint MaartenAn tSiriaAn tSuasalainnTristan da CunhaOileáin " +
+ "na dTurcach agus CaicosSeadCríocha Francacha Dheisceart an DomhainTó" +
+ "gaAn TéalainnAn TáidsíceastáinTócaláTíomór ThoirAn TuircméanastáinAn" +
+ " TúinéisTongaAn TuircOileán na Tríonóide agus TobágaTuvaluAn Téaváin" +
+ "An TansáinAn ÚcráinUgandaOileáin Imeallacha S.A.M.Stáit Aontaithe Mh" +
+ "eiriceáUruguaAn ÚisbéiceastáinAn VatacáinSan Uinseann agus na Greaná" +
+ "idíníVeiniséalaOileáin Bhriotanacha na MaighdeanOileáin Mheiriceánac" +
+ "ha na MaighdeanVítneamVanuatúVailís agus FutúnaSamóAn ChosaivÉiminMa" +
+ "yotteAn Afraic TheasAn tSaimbiaAn tSiombáibRéigiún AnaithnidAn Domha" +
+ "nAn AfraicMeiriceá ThuaidhMeiriceá TheasAn AigéineIarthar na hAfraic" +
+ "eMeiriceá LáirOirthear na hAfraiceTuaisceart na hAfraiceAn Afraic Lá" +
+ "irDeisceart na hAfraiceCríocha MheiriceáTuaisceart MheiriceáAn Mhuir" +
+ " ChairibOirthear na hÁiseDeisceart na hÁiseOirdheisceart na hÁiseDei" +
+ "sceart na hEorpaAn AstraláiseAn MheilinéisAn Réigiún MicrinéiseachAn" +
+ " PholainéisAn ÁiseAn Áise LáirIarthar na hÁiseAn EoraipOirthear na h" +
+ "EorpaTuaisceart na hEorpaIarthar na hEorpaMeiriceá Laidineach",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0017, 0x001e, 0x0042, 0x0051, 0x0066, 0x006e, 0x0078,
+ 0x0083, 0x009b, 0x00a2, 0x00af, 0x00bc, 0x00cf, 0x00d8, 0x00e3,
+ 0x00e9, 0x00f8, 0x0108, 0x012b, 0x0134, 0x0144, 0x014d, 0x015c,
+ 0x0168, 0x0170, 0x017b, 0x0181, 0x0192, 0x019c, 0x01a4, 0x01ae,
+ 0x01c6, 0x01d2, 0x01de, 0x01ea, 0x01f8, 0x0205, 0x0213, 0x021e,
+ 0x0225, 0x023d, 0x025d, 0x0277, 0x0280, 0x028b, 0x029c, 0x02a9,
+ 0x02b1, 0x02b9, 0x02c1, 0x02cc, 0x02de, 0x02ea, 0x02ef, 0x02f9,
+ 0x0301, 0x0312, 0x031b, 0x032c, 0x0339, 0x0345, 0x034d, 0x0359,
+ // Entry 40 - 7F
+ 0x0362, 0x037c, 0x0387, 0x0399, 0x03a2, 0x03ad, 0x03b7, 0x03c7,
+ 0x03d2, 0x03dc, 0x03e6, 0x03f8, 0x0405, 0x040b, 0x041f, 0x042d,
+ 0x043c, 0x0446, 0x0451, 0x0465, 0x046e, 0x047a, 0x048b, 0x0493,
+ 0x0498, 0x04a3, 0x04b1, 0x04bc, 0x04c5, 0x04cf, 0x04e8, 0x04f2,
+ 0x0521, 0x052a, 0x052e, 0x053a, 0x0544, 0x055d, 0x0581, 0x058a,
+ 0x0594, 0x059c, 0x05a6, 0x05be, 0x05ca, 0x05cf, 0x05d6, 0x05e5,
+ 0x05ed, 0x0611, 0x061b, 0x0625, 0x0631, 0x063b, 0x0642, 0x064a,
+ 0x0655, 0x0661, 0x066c, 0x067c, 0x0688, 0x0693, 0x06a4, 0x06bb,
+ // Entry 80 - BF
+ 0x06ce, 0x06df, 0x06e5, 0x06f4, 0x0703, 0x0707, 0x0712, 0x071d,
+ 0x072a, 0x0734, 0x073e, 0x0746, 0x0752, 0x075c, 0x0766, 0x076e,
+ 0x0775, 0x077c, 0x0788, 0x0796, 0x07a2, 0x07ac, 0x07bd, 0x07ca,
+ 0x07d0, 0x07df, 0x07eb, 0x0800, 0x0822, 0x082c, 0x083a, 0x0843,
+ 0x0849, 0x0859, 0x086c, 0x0877, 0x0880, 0x088d, 0x0898, 0x08a1,
+ 0x08b2, 0x08bb, 0x08ca, 0x08d4, 0x08de, 0x08ea, 0x08f2, 0x08f9,
+ 0x08ff, 0x0903, 0x0914, 0x0919, 0x091f, 0x0926, 0x093b, 0x094c,
+ 0x0967, 0x0975, 0x0980, 0x0998, 0x09a9, 0x09b5, 0x09d0, 0x09e0,
+ // Entry C0 - FF
+ 0x09e5, 0x09ec, 0x09f1, 0x0a06, 0x0a0e, 0x0a19, 0x0a24, 0x0a2c,
+ 0x0a32, 0x0a43, 0x0a55, 0x0a61, 0x0a6d, 0x0a79, 0x0a83, 0x0a8e,
+ 0x0a9c, 0x0ab3, 0x0abf, 0x0aca, 0x0ad6, 0x0ae5, 0x0af0, 0x0af7,
+ 0x0b09, 0x0b22, 0x0b30, 0x0b3c, 0x0b45, 0x0b53, 0x0b63, 0x0b83,
+ 0x0b87, 0x0baf, 0x0bb4, 0x0bc0, 0x0bd4, 0x0bdc, 0x0bea, 0x0bfe,
+ 0x0c0a, 0x0c0f, 0x0c17, 0x0c3a, 0x0c40, 0x0c4c, 0x0c57, 0x0c62,
+ 0x0c68, 0x0c82, 0x0c9d, 0x0ca3, 0x0cb7, 0x0cc3, 0x0ce6, 0x0cf1,
+ 0x0d13, 0x0d38, 0x0d40, 0x0d48, 0x0d5c, 0x0d61, 0x0d6b, 0x0d71,
+ // Entry 100 - 13F
+ 0x0d78, 0x0d87, 0x0d92, 0x0d9f, 0x0db2, 0x0dbb, 0x0dc4, 0x0dd5,
+ 0x0de4, 0x0def, 0x0e02, 0x0e11, 0x0e25, 0x0e3b, 0x0e4a, 0x0e5f,
+ 0x0e72, 0x0e87, 0x0e97, 0x0ea9, 0x0ebc, 0x0ed3, 0x0ee6, 0x0ef4,
+ 0x0f02, 0x0f1d, 0x0f2b, 0x0f33, 0x0f41, 0x0f52, 0x0f5b, 0x0f6d,
+ 0x0f81, 0x0f92, 0x0fa6,
+ },
+ },
+ { // gd
+ "Eilean na DeasgabhalachAndorraNa h-Iomaratan Arabach AonaichteAfghanastà" +
+ "nAintìoga is BarbudaAnguillaAlbàiniaAirmeiniaEileanan Aintilia nan T" +
+ "ìrean ÌsleAngòlaAn AntartaigAn ArgantainSamotha na h-AimeireagaAn O" +
+ "stairAstràiliaArùbaNa h-Eileanan ÅlandAsarbaideànBosna agus Hearsago" +
+ "bhanaBarbadosBangladaisA’ BheilgBuirciona FasoA’ BhulgairBachrainBur" +
+ "undaidhBeininSaint BarthélemyBearmùdaBrùnaighBoilibhiaNa Tìrean Ìsle" +
+ " CaraibeachBraisilNa h-Eileanan BhathamaButànEilean BouvetBotsuanaA’" +
+ " BhealaruisA’ BheilìsCanadaNa h-Eileanan Cocos (Keeling)Congo - Kins" +
+ "hasaPoblachd Meadhan AfragaA’ Chongo - BrazzavilleAn EilbheisCôte d’" +
+ "IvoireEileanan CookAn t-SileCamarunAn t-SìnColoimbiaEilean Clipperto" +
+ "nCosta RìceaCùbaAn Ceap UaineCuraçaoEilean na NollaigCìoprasPoblachd" +
+ " na SeiceA’ GhearmailtDiego GarciaDiobùtaidhAn DanmhairgDoiminiceaA’" +
+ " Phoblachd DhoiminiceachAildiriaCeuta agus MelillaEacuadorAn Eastoin" +
+ "An ÈiphitSathara an IarEartraAn SpàinnAn ItiopAn t-Aonadh EòrpachAn " +
+ "FhionnlannFìdiNa h-Eileanan FàclannachNa Meanbh-EileananNa h-Eileana" +
+ "n FàroAn FhraingGabonAn Rìoghachd AonaichteGreanàdaA’ ChairtbheilGui" +
+ "dheàna na FraingeGeàrnsaidhGànaDiobraltarA’ GhraonlannA’ GhaimbiaGin" +
+ "iGuadalupGini Mheadhan-ChriosachA’ GhreugSeòrsea a Deas is na h-Eile" +
+ "anan Sandwich a DeasGuatamalaGuamGini-BiosoGuidheànaHong Kong SAR na" +
+ " SìneEilean Heard is MhicDhòmhnaillHondùrasA’ ChròthaisHaidhtiAn Ung" +
+ "airNa h-Eileanan CanàrachNa h-Innd InnseÈirinnIosraelEilean Mhanainn" +
+ "Na h-InnseachanRanntair Breatannach Cuan nan InnseachanIoràcIorànInn" +
+ "is TìleAn EadailtDeàrsaidhDiameugaIòrdanAn t-SeapanCeiniaCìorgastanC" +
+ "ambuideaCiribeasComorosNaomh Crìstean is NibheisCoirèa a TuathCoirèa" +
+ " a DeasCuibhèitNa h-Eileanan CaimeanCasachstànLàthosLeabanonNaomh Lù" +
+ "iseaLichtensteinSri LancaLibèirLeasotoAn LiotuainLugsamburgAn Laitbh" +
+ "eLibiaMorocoMonacoA’ MholdobhaAm Monadh NeagrachNaomh MàrtainnMadaga" +
+ "sgarEileanan MharshallA’ MhasadonMàiliMiànmarDùthaich nam MongolMacà" +
+ "thu SAR na SìneNa h-Eileanan Mairianach a TuathMairtinicMoratàineaMo" +
+ "ntsaratMaltaNa h-Eileanan MhoiriseasNa h-Eileanan MhaladaibhMalabhai" +
+ "dhMeagsagoMalaidhseaMòsaimbicAn NamaibCailleann NuadhNìgeirEilean No" +
+ "rfolkNigèiriaNiocaraguaNa Tìrean ÌsleAn NirribhidhNeapàlNabhruNiueSe" +
+ "alainn NuadhOmànPanamaPearùPoilinèis na FraingeGini Nuadh Phaputhach" +
+ "Na h-Eileanan FilipineachPagastànA’ PhòlainnSaint Pierre agus Miquel" +
+ "onEilean Peit a’ ChàirnPorto RìceoNa Ranntairean PalastaineachA’ Pho" +
+ "rtagailPalabhParaguaidhCatarRoinn Iomallach a’ Chuain SèimhRéunionRo" +
+ "màiniaAn t-SèirbAn RuisRubhandaAràibia nan SabhdEileanan SholaimhNa " +
+ "h-Eileanan SheiseallSudànAn t-SuainSingeapòrEilean Naomh EilidhAn t-" +
+ "SlòbhainSvalbard agus Jan MayenAn t-SlòbhacSiarra LeòmhannSan Marino" +
+ "SeanagalSomàiliaSuranamSudàn a DeasSão Tomé agus PríncipeAn Salbhado" +
+ "rSint MaartenSiridheaDùthaich nan SuasaidhTristan da CunhaNa h-Eilea" +
+ "nan Turcach is CaiceoAn t-SeàdRanntairean a Deas na FraingeTogoDùtha" +
+ "ich nan TàidhTaidigeastànTokelauTimor-LesteTurcmanastànTuiniseaTonga" +
+ "An TuircTrianaid agus TobagoTubhaluTaidh-BhànAn TansanAn UcràinUgand" +
+ "aMeanbh-Eileanan Iomallach nan SANa Stàitean AonaichteUruguaidhUsbag" +
+ "astànCathair na BhatacainNaomh Bhionsant agus Eileanan GreanadachA’ " +
+ "BheinisealaEileanan Breatannach na MaighdinnEileanan Aimeireagach na" +
+ " MaighdinnBhiet-NamVanuatuUallas agus FutunaSamothaA’ ChosobhoAn Eam" +
+ "anMayotteAfraga a DeasSàimbiaAn t-SìombabRoinn-dùthcha neo-aithnicht" +
+ "eAn SaoghalAfragaAimeireaga a TuathAimeireaga a DeasRoinn a’ Chuain " +
+ "SèimhAfraga an IarMeadhan AimeireagaAfraga an EarAfraga a TuathMeadh" +
+ "an AfragaCeann a Deas AfragaAn Dà AimeireagaCeann a Tuath Aimeireaga" +
+ "Am Muir CaraibeachÀisia an EarÀisia a DeasÀisia an Ear-dheasAn Roinn" +
+ "-Eòrpa a DeasAstràilia is Sealainn NuadhNa h-Eileanan DubhaRoinn nam" +
+ " Meanbh-EileananPoilinèisÀisiaMeadhan ÀisiaÀisia an IarAn Roinn-Eòrp" +
+ "aAn Roinn-Eòrpa an EarAn Roinn-Eòrpa a TuathAn Roinn-Eòrpa an IarAim" +
+ "eireaga Laidinneach",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0017, 0x001e, 0x003e, 0x004a, 0x005e, 0x0066, 0x006f,
+ 0x0078, 0x009b, 0x00a2, 0x00ae, 0x00ba, 0x00d1, 0x00da, 0x00e4,
+ 0x00ea, 0x00fe, 0x010a, 0x0122, 0x012a, 0x0134, 0x013f, 0x014d,
+ 0x015a, 0x0162, 0x016c, 0x0172, 0x0183, 0x018c, 0x0195, 0x019e,
+ 0x01b9, 0x01c0, 0x01d6, 0x01dc, 0x01e9, 0x01f1, 0x0200, 0x020d,
+ 0x0213, 0x0230, 0x0240, 0x0257, 0x0270, 0x027b, 0x028b, 0x0298,
+ 0x02a1, 0x02a8, 0x02b1, 0x02ba, 0x02cb, 0x02d7, 0x02dc, 0x02e9,
+ 0x02f1, 0x0302, 0x030a, 0x031b, 0x032a, 0x0336, 0x0341, 0x034d,
+ // Entry 40 - 7F
+ 0x0357, 0x0373, 0x037b, 0x038d, 0x0395, 0x039f, 0x03a9, 0x03b7,
+ 0x03bd, 0x03c7, 0x03cf, 0x03e3, 0x03f0, 0x03f5, 0x040e, 0x0420,
+ 0x0433, 0x043d, 0x0442, 0x0459, 0x0462, 0x0472, 0x0487, 0x0492,
+ 0x0497, 0x04a1, 0x04b0, 0x04bd, 0x04c1, 0x04c9, 0x04e0, 0x04eb,
+ 0x051b, 0x0524, 0x0528, 0x0532, 0x053c, 0x0552, 0x0571, 0x057a,
+ 0x0589, 0x0590, 0x0599, 0x05b0, 0x05bf, 0x05c6, 0x05cd, 0x05dc,
+ 0x05eb, 0x0613, 0x0619, 0x061f, 0x062a, 0x0634, 0x063e, 0x0646,
+ 0x064d, 0x0658, 0x065e, 0x0669, 0x0672, 0x067a, 0x0681, 0x069b,
+ // Entry 80 - BF
+ 0x06aa, 0x06b8, 0x06c1, 0x06d6, 0x06e1, 0x06e8, 0x06f0, 0x06fd,
+ 0x0709, 0x0712, 0x0719, 0x0720, 0x072b, 0x0735, 0x073f, 0x0744,
+ 0x074a, 0x0750, 0x075e, 0x0770, 0x077f, 0x0789, 0x079b, 0x07a8,
+ 0x07ae, 0x07b6, 0x07ca, 0x07df, 0x07ff, 0x0808, 0x0813, 0x081c,
+ 0x0821, 0x0839, 0x0851, 0x085b, 0x0863, 0x086d, 0x0877, 0x0880,
+ 0x088f, 0x0896, 0x08a4, 0x08ad, 0x08b7, 0x08c7, 0x08d4, 0x08db,
+ 0x08e1, 0x08e5, 0x08f3, 0x08f8, 0x08fe, 0x0904, 0x0919, 0x092e,
+ 0x0947, 0x0950, 0x095e, 0x0978, 0x0990, 0x099c, 0x09b8, 0x09c7,
+ // Entry C0 - FF
+ 0x09cd, 0x09d7, 0x09dc, 0x09fe, 0x0a06, 0x0a0f, 0x0a1a, 0x0a21,
+ 0x0a29, 0x0a3b, 0x0a4c, 0x0a63, 0x0a69, 0x0a73, 0x0a7d, 0x0a90,
+ 0x0a9e, 0x0ab5, 0x0ac2, 0x0ad2, 0x0adc, 0x0ae4, 0x0aed, 0x0af4,
+ 0x0b01, 0x0b1a, 0x0b26, 0x0b32, 0x0b3a, 0x0b50, 0x0b60, 0x0b7f,
+ 0x0b89, 0x0ba6, 0x0baa, 0x0bbe, 0x0bcb, 0x0bd2, 0x0bdd, 0x0bea,
+ 0x0bf2, 0x0bf7, 0x0bff, 0x0c13, 0x0c1a, 0x0c25, 0x0c2e, 0x0c38,
+ 0x0c3e, 0x0c5e, 0x0c74, 0x0c7d, 0x0c88, 0x0c9c, 0x0cc4, 0x0cd4,
+ 0x0cf5, 0x0d17, 0x0d20, 0x0d27, 0x0d39, 0x0d40, 0x0d4d, 0x0d55,
+ // Entry 100 - 13F
+ 0x0d5c, 0x0d69, 0x0d71, 0x0d7e, 0x0d9b, 0x0da5, 0x0dab, 0x0dbd,
+ 0x0dce, 0x0de6, 0x0df3, 0x0e05, 0x0e12, 0x0e20, 0x0e2e, 0x0e41,
+ 0x0e52, 0x0e6a, 0x0e7c, 0x0e89, 0x0e96, 0x0ea9, 0x0ebf, 0x0edb,
+ 0x0eee, 0x0f07, 0x0f11, 0x0f17, 0x0f25, 0x0f32, 0x0f41, 0x0f57,
+ 0x0f6e, 0x0f84, 0x0f9a,
+ },
+ },
+ { // gl
+ "Illa de AscensiónAndorraEmiratos Árabes UnidosAfganistánAntiga e Barbuda" +
+ "AnguilaAlbaniaArmeniaAntillas HolandesasAngolaAntártidaArxentinaSamo" +
+ "a AmericanaAustriaAustraliaArubaIllas AlandAcerbaixánBosnia e Herceg" +
+ "ovinaBarbadosBangladeshBélxicaBurkina FasoBulgariaBahreinBurundiBeni" +
+ "nSan BartoloméBermudasBruneiBoliviaCaribe neerlandésBrasilBahamasBut" +
+ "ánIlla BouvetBotsuanaBielorrusiaBeliceCanadáIllas Cocos (Keeling)Re" +
+ "pública Democrática do CongoRepública CentroafricanaCongoSuízaCosta " +
+ "de MarfilIllas CookChileCamerúnChinaColombiaIlla ClippertonCosta Ric" +
+ "aCubaCabo VerdeCuraçaoIlla ChristmasChipreRepública ChecaAlemañaDieg" +
+ "o GarcíaDjibutiDinamarcaDominicaRepública DominicanaArxeliaCeuta e M" +
+ "elillaEcuadorEstoniaExiptoSáhara OccidentalEritreaEspañaEtiopíaUnión" +
+ " EuropeaFinlandiaFixiIllas MalvinasMicronesiaIllas FeroeFranciaGabón" +
+ "Reino UnidoGranadaXeorxiaGüiana FrancesaGuernseyGanaXibraltarGrenlan" +
+ "diaGambiaGuineaGuadalupeGuinea EcuatorialGreciaXeorxia do Sur e Illa" +
+ "s SandwichGuatemalaGuamGuinea-BissauGüianaHong Kong RAE de ChinaIlla" +
+ " Heard e Illas McDonaldHondurasCroaciaHaitíHungríaIllas CanariasIndo" +
+ "nesiaIrlandaIsraelIlla de ManIndiaTerritorio Británico do Océano Índ" +
+ "icoIraqIránIslandiaItaliaJerseyXamaicaXordaniaXapónKenyaQuirguicistá" +
+ "nCambodiaKiribatiComoresSan Cristovo e NevisCorea do NorteCorea do S" +
+ "urKuwaitIllas CaimánKazakhstanLaosLíbanoSanta LucíaLiechtensteinSri " +
+ "LankaLiberiaLesothoLituaniaLuxemburgoLetoniaLibiaMarrocosMónacoMoldo" +
+ "vaMontenegroSan MartiñoMadagascarIllas MarshallMacedoniaMaliMyanmar " +
+ "(Birmania)MongoliaMacau RAE de ChinaIllas Marianas do norteMartinica" +
+ "MauritaniaMontserratMaltaMauricioMaldivasMalauiMéxicoMalaisiaMozambi" +
+ "queNamibiaNova CaledoniaNíxerIlla NorfolkNixeriaNicaraguaPaíses Baix" +
+ "osNoruegaNepalNauruNiueNova CelandiaOmánPanamáPerúPolinesia Francesa" +
+ "Papúa Nova GuineaFilipinasPaquistánPoloniaSan Pedro e MiguelónIllas " +
+ "PitcairnPorto RicoTerritorios palestinosPortugalPalauParaguaiQatarOc" +
+ "eanía DistanteReuniónRomaníaSerbiaRusiaRuandaArabia SauditaIllas Sal" +
+ "omónSeixelesSudánSueciaSingapurSanta HelenaEsloveniaSvalbard e Jan M" +
+ "ayenEslovaquiaSerra LeoaSan MarinoSenegalSomaliaSurinamSudán do surS" +
+ "an Tomé e PríncipeEl SalvadorSint MaartenSiriaSuacilandiaTristán da " +
+ "CunhaIllas Turks e CaicosChadTerritorios Franceses do SulTogoTailand" +
+ "iaTaxiquistánTokelauTimor LesteTurkmenistánTunisiaTongaTurquíaTrinda" +
+ "de e TobagoTuvaluTaiwánTanzaniaUcraínaUgandaIllas Menores Distantes " +
+ "dos EUA.Estados Unidos de AméricaUruguaiUzbekistánCidade do Vaticano" +
+ "San Vicente e GranadinasVenezuelaIllas Virxes BritánicasIllas Virxes" +
+ " EstadounidensesVietnamVanuatuWallis e FutunaSamoaKosovoIemenMayotte" +
+ "SudáfricaZambiaCimbabueRexión descoñecidaMundoÁfricaNorteaméricaSuda" +
+ "méricaOceaníaÁfrica OccidentalAmérica CentralÁfrica OrientalÁfrica S" +
+ "eptentrionalÁfrica CentralÁfrica MeridionalAméricaAmérica do NorteCa" +
+ "ribeAsia OrientalSul de AsiaSureste AsiáticoEuropa MeridionalAustral" +
+ "asiaMelanesiaRexión da MicronesiaPolinesiaAsiaAsia CentralAsia Occid" +
+ "entalEuropaEuropa do LesteEuropa SeptentrionalEuropa OccidentalAméri" +
+ "ca Latina",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0012, 0x0019, 0x0030, 0x003b, 0x004b, 0x0052, 0x0059,
+ 0x0060, 0x0073, 0x0079, 0x0083, 0x008c, 0x009b, 0x00a2, 0x00ab,
+ 0x00b0, 0x00bb, 0x00c6, 0x00da, 0x00e2, 0x00ec, 0x00f4, 0x0100,
+ 0x0108, 0x010f, 0x0116, 0x011b, 0x0129, 0x0131, 0x0137, 0x013e,
+ 0x0150, 0x0156, 0x015d, 0x0163, 0x016e, 0x0176, 0x0181, 0x0187,
+ 0x018e, 0x01a3, 0x01c3, 0x01dc, 0x01e1, 0x01e7, 0x01f6, 0x0200,
+ 0x0205, 0x020d, 0x0212, 0x021a, 0x0229, 0x0233, 0x0237, 0x0241,
+ 0x0249, 0x0257, 0x025d, 0x026d, 0x0275, 0x0282, 0x0289, 0x0292,
+ // Entry 40 - 7F
+ 0x029a, 0x02af, 0x02b6, 0x02c5, 0x02cc, 0x02d3, 0x02d9, 0x02eb,
+ 0x02f2, 0x02f9, 0x0301, 0x030f, 0x0318, 0x031c, 0x032a, 0x0334,
+ 0x033f, 0x0346, 0x034c, 0x0357, 0x035e, 0x0365, 0x0375, 0x037d,
+ 0x0381, 0x038a, 0x0394, 0x039a, 0x03a0, 0x03a9, 0x03ba, 0x03c0,
+ 0x03df, 0x03e8, 0x03ec, 0x03f9, 0x0400, 0x0416, 0x0431, 0x0439,
+ 0x0440, 0x0446, 0x044e, 0x045c, 0x0465, 0x046c, 0x0472, 0x047d,
+ 0x0482, 0x04aa, 0x04ae, 0x04b3, 0x04bb, 0x04c1, 0x04c7, 0x04ce,
+ 0x04d6, 0x04dc, 0x04e1, 0x04ef, 0x04f7, 0x04ff, 0x0506, 0x051a,
+ // Entry 80 - BF
+ 0x0528, 0x0534, 0x053a, 0x0547, 0x0551, 0x0555, 0x055c, 0x0568,
+ 0x0575, 0x057e, 0x0585, 0x058c, 0x0594, 0x059e, 0x05a5, 0x05aa,
+ 0x05b2, 0x05b9, 0x05c0, 0x05ca, 0x05d6, 0x05e0, 0x05ee, 0x05f7,
+ 0x05fb, 0x060d, 0x0615, 0x0627, 0x063e, 0x0647, 0x0651, 0x065b,
+ 0x0660, 0x0668, 0x0670, 0x0676, 0x067d, 0x0685, 0x068f, 0x0696,
+ 0x06a4, 0x06aa, 0x06b6, 0x06bd, 0x06c6, 0x06d4, 0x06db, 0x06e0,
+ 0x06e5, 0x06e9, 0x06f6, 0x06fb, 0x0702, 0x0707, 0x0719, 0x072b,
+ 0x0734, 0x073e, 0x0745, 0x075a, 0x0768, 0x0772, 0x0788, 0x0790,
+ // Entry C0 - FF
+ 0x0795, 0x079d, 0x07a2, 0x07b3, 0x07bb, 0x07c3, 0x07c9, 0x07ce,
+ 0x07d4, 0x07e2, 0x07f0, 0x07f8, 0x07fe, 0x0804, 0x080c, 0x0818,
+ 0x0821, 0x0835, 0x083f, 0x0849, 0x0853, 0x085a, 0x0861, 0x0868,
+ 0x0875, 0x088a, 0x0895, 0x08a1, 0x08a6, 0x08b1, 0x08c2, 0x08d6,
+ 0x08da, 0x08f6, 0x08fa, 0x0903, 0x090f, 0x0916, 0x0921, 0x092e,
+ 0x0935, 0x093a, 0x0942, 0x0953, 0x0959, 0x0960, 0x0968, 0x0970,
+ 0x0976, 0x0996, 0x09b0, 0x09b7, 0x09c2, 0x09d4, 0x09ec, 0x09f5,
+ 0x0a0d, 0x0a29, 0x0a30, 0x0a37, 0x0a46, 0x0a4b, 0x0a51, 0x0a56,
+ // Entry 100 - 13F
+ 0x0a5d, 0x0a67, 0x0a6d, 0x0a75, 0x0a89, 0x0a8e, 0x0a95, 0x0aa2,
+ 0x0aad, 0x0ab5, 0x0ac7, 0x0ad7, 0x0ae7, 0x0afc, 0x0b0b, 0x0b1d,
+ 0x0b25, 0x0b36, 0x0b3c, 0x0b49, 0x0b54, 0x0b65, 0x0b76, 0x0b81,
+ 0x0b8a, 0x0b9f, 0x0ba8, 0x0bac, 0x0bb8, 0x0bc7, 0x0bcd, 0x0bdc,
+ 0x0bf0, 0x0c01, 0x0c10,
+ },
+ },
+ { // gsw
+ "AndorraVeräinigti Arabischi EmirateAfganischtanAntigua und BarbudaAnguil" +
+ "laAlbaanieArmeenieNiderländischi AntilleAngoolaAntarktisArgentiinieA" +
+ "merikaanisch-SamoaÖöschtriichAuschtraalieArubaAaland-InsleAserbäidsc" +
+ "hanBosnie und HerzegowinaBarbadosBangladeschBelgieBurkina FaasoBulga" +
+ "arieBachräinBurundiBeninSt. BarthelemiBermuudaBrunäi TarussalamBolii" +
+ "vieBrasilieBahaamasBhutanBouvet-InsleBotswanaWiissrusslandBelizeKana" +
+ "daKokos-InsleTemokraatischi Republik KongoZentraalafrikaanischi Repu" +
+ "blikKongoSchwiizElfebäiküschteCook-InsleTschileKamerunChiinaKolumbie" +
+ "Coschta RicaKubaKap VerdeWienachts-InsleZypereTschechischi RepublikT" +
+ "üütschlandTschibuutiTänemarkTominicaTominikaanischi RepublikAlgeeri" +
+ "eEcuadorEestlandÄgüpteWeschtsaharaÄritreeaSchpanieÄthiopieEuropääisc" +
+ "hi UnioonFinnlandFitschiFalkland-InsleMikroneesieFäröerFrankriichGab" +
+ "unVeräinigts ChönigriichGrenadaGeoorgieFranzösisch-GuäjaanaGäärnsiGa" +
+ "anaGibraltarGröönlandGambiaGineeaGuadälupÄquatoriaalgineeaGriechelan" +
+ "dSüüdgeorgie und d’süüdlichi Sändwitsch-InsleGuatemaalaGuamGineea-Bi" +
+ "ssauGuäjaanaSonderverwaltigszone HongkongHöörd- und MäcDonald-InsleH" +
+ "ondurasKroaazieHaitiUngarnIndoneesieIrlandIsraelInsle vo MänIndieBri" +
+ "tischs Territoorium im Indische OozeanIraakIraanIislandItaalieDschör" +
+ "siDschamäikaJordaanieJapanKeeniaKirgiisischtanKambodschaKiribaatiKom" +
+ "ooreSt. Kitts und NiuwisDemokraatischi Volksrepublik KoreeaRepublik " +
+ "KoreeaKuwäitKäimän-InsleKasachschtanLaaosLibanonSt. LutschiiaLiächte" +
+ "schtäiSchri LankaLibeeriaLesootoLittaueLuxemburgLettlandLüübieMarokk" +
+ "oMonacoRepublik MoldauMonteneegroSt. MartinMadagaschkarMarshallinsle" +
+ "MazedoonieMaaliMyanmar (Burma)MongoleiSonderverwaltigszone MacaoNörd" +
+ "lichi MariaaneMartiniggMauretaanieMoosörratMaltaMauriiziusMalediiweM" +
+ "alaawiMexikoMaläisiaMosambikNamiibiaNöikaledoonieNigerNorfolk-InsleN" +
+ "igeeriaNicaraaguaHollandNorweegeNeepalNauruNiueNöiseelandOmaanPanama" +
+ "PeruFranzösisch-PolineesiePapua-NeuguineaPhilippiinePakischtanPooleS" +
+ "t. Pierr und MiggeloPitggäärnPuerto RiggoPaläschtinänsischi GebietPo" +
+ "rtugalPalauParaguaiGgatarÜssers OzeaanieReünioonRumäänieSärbieRussla" +
+ "ndRuandaSaudi-AraabieSalomooneSeischälleSudanSchweedeSingapuurSt. He" +
+ "lenaSloweenieSvalbard und Jaan MääieSlowakäiSierra LeooneSan Mariino" +
+ "SenegalSomaalieSurinamSao Tome und PrinssipeEl SalvadorSüürieSwasila" +
+ "ndTörks- und Gaiggos-InsleTschadFranzösischi Süüd- und Antarktisgebi" +
+ "etToogoThailandTadschikischtanTokelauOschttimorTurkmeenischtanTunees" +
+ "ieTongaTürggeiTrinidad und TobaagoTuvaluTaiwanTansaniiaUkraiineUgand" +
+ "aAmerikanisch-OzeaanieVeräinigti SchtaateUruguayUschbeekischtanVatik" +
+ "anstadtSt. Vincent und d’GrönadiineVenezueelaBritischi Jungfere-Insl" +
+ "eAmerikaanischi Jungfere-InsleWietnamWanuatuWallis und FutuunaSamooa" +
+ "JeemeMajottSüüdafrikaSambiaSimbabweUnbekannti oder ungültigi Regioon" +
+ "WältAfrikaNordameerikaSüüdameerikaOzeaanieWeschtafrikaMittelameerika" +
+ "OschtafrikaNordafrikaZentraalafrikaSüüdlichs AfrikaNord-, Mittel- un" +
+ "d SüüdameerikaNördlichs AmeerikaKaribikOschtaasieSüüdaasieSüüdoschta" +
+ "asieSüüdeuropaAuschtraalie und NöiseelandMelaneesieMikroneesischs In" +
+ "selgebietPolineesieAasieZentraalaasieWeschtaasieEuroopaOschteuroopaN" +
+ "ordeuroopaWeschteuroopaLatiinameerika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0024, 0x0030, 0x0043, 0x004b, 0x0053,
+ 0x005b, 0x0072, 0x0079, 0x0082, 0x008d, 0x00a0, 0x00ad, 0x00b9,
+ 0x00be, 0x00ca, 0x00d8, 0x00ee, 0x00f6, 0x0101, 0x0107, 0x0114,
+ 0x011d, 0x0126, 0x012d, 0x0132, 0x0140, 0x0148, 0x015a, 0x0162,
+ 0x0162, 0x016a, 0x0172, 0x0178, 0x0184, 0x018c, 0x0199, 0x019f,
+ 0x01a5, 0x01b0, 0x01cd, 0x01eb, 0x01f0, 0x01f7, 0x0207, 0x0211,
+ 0x0218, 0x021f, 0x0225, 0x022d, 0x022d, 0x0239, 0x023d, 0x0246,
+ 0x0246, 0x0255, 0x025b, 0x0270, 0x027d, 0x027d, 0x0287, 0x0290,
+ // Entry 40 - 7F
+ 0x0298, 0x02b0, 0x02b8, 0x02b8, 0x02bf, 0x02c7, 0x02cf, 0x02db,
+ 0x02e4, 0x02ec, 0x02f5, 0x030a, 0x0312, 0x0319, 0x0327, 0x0332,
+ 0x033a, 0x0344, 0x0349, 0x0361, 0x0368, 0x0370, 0x0386, 0x038f,
+ 0x0394, 0x039d, 0x03a8, 0x03ae, 0x03b4, 0x03bd, 0x03cf, 0x03da,
+ 0x040d, 0x0417, 0x041b, 0x0428, 0x0431, 0x044e, 0x046b, 0x0473,
+ 0x047b, 0x0480, 0x0486, 0x0486, 0x0490, 0x0496, 0x049c, 0x04a9,
+ 0x04ae, 0x04d7, 0x04dc, 0x04e1, 0x04e8, 0x04ef, 0x04f8, 0x0503,
+ 0x050c, 0x0511, 0x0517, 0x0525, 0x052f, 0x0538, 0x053f, 0x0553,
+ // Entry 80 - BF
+ 0x0576, 0x0585, 0x058c, 0x059a, 0x05a6, 0x05ab, 0x05b2, 0x05bf,
+ 0x05ce, 0x05d9, 0x05e1, 0x05e8, 0x05ef, 0x05f8, 0x0600, 0x0608,
+ 0x060f, 0x0615, 0x0624, 0x062f, 0x0639, 0x0645, 0x0652, 0x065c,
+ 0x0661, 0x0670, 0x0678, 0x0692, 0x06a5, 0x06ae, 0x06b9, 0x06c3,
+ 0x06c8, 0x06d2, 0x06db, 0x06e2, 0x06e8, 0x06f1, 0x06f9, 0x0701,
+ 0x070f, 0x0714, 0x0721, 0x0729, 0x0733, 0x073a, 0x0742, 0x0748,
+ 0x074d, 0x0751, 0x075c, 0x0761, 0x0767, 0x076b, 0x0782, 0x0791,
+ 0x079c, 0x07a6, 0x07ab, 0x07c0, 0x07cb, 0x07d7, 0x07f2, 0x07fa,
+ // Entry C0 - FF
+ 0x07ff, 0x0807, 0x080d, 0x081d, 0x0826, 0x0830, 0x0837, 0x083f,
+ 0x0845, 0x0852, 0x085b, 0x0866, 0x086b, 0x0873, 0x087c, 0x0886,
+ 0x088f, 0x08a8, 0x08b1, 0x08be, 0x08c9, 0x08d0, 0x08d8, 0x08df,
+ 0x08df, 0x08f5, 0x0900, 0x0900, 0x0908, 0x0911, 0x0911, 0x092a,
+ 0x0930, 0x0959, 0x095e, 0x0966, 0x0975, 0x097c, 0x0986, 0x0995,
+ 0x099d, 0x09a2, 0x09aa, 0x09be, 0x09c4, 0x09ca, 0x09d3, 0x09db,
+ 0x09e1, 0x09f6, 0x0a0a, 0x0a11, 0x0a20, 0x0a2c, 0x0a4b, 0x0a55,
+ 0x0a6d, 0x0a8a, 0x0a91, 0x0a98, 0x0aaa, 0x0ab0, 0x0ab0, 0x0ab5,
+ // Entry 100 - 13F
+ 0x0abb, 0x0ac7, 0x0acd, 0x0ad5, 0x0af7, 0x0afc, 0x0b02, 0x0b0e,
+ 0x0b1c, 0x0b24, 0x0b30, 0x0b3e, 0x0b49, 0x0b53, 0x0b61, 0x0b73,
+ 0x0b94, 0x0ba7, 0x0bae, 0x0bb8, 0x0bc3, 0x0bd3, 0x0bdf, 0x0bfb,
+ 0x0c05, 0x0c1f, 0x0c29, 0x0c2e, 0x0c3b, 0x0c46, 0x0c4d, 0x0c59,
+ 0x0c64, 0x0c71, 0x0c7f,
+ },
+ },
+ { // gu
+ guRegionStr,
+ guRegionIdx,
+ },
+ { // guz
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // gv
+ "Rywvaneth UnysEllan Vannin",
+ []uint16{ // 112 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x001a,
+ },
+ },
+ { // ha
+ "AndoraHaɗaɗɗiyar Daular LarabawaAfaganistanAntigwa da BarbubaAngilaAlban" +
+ "iyaArmeniyaAntiya Na HolanAngolaArjantiniyaSamowa Ta AmurkaOstiriyaO" +
+ "stareliyaArubaAzarbaijanBosniya HarzagobinaBarbadasBangiladasBelgiyo" +
+ "mBurkina FasoBulgariyaBaharanBurundiBininBarmudaBuruneBolibiyaBirazi" +
+ "lBahamasButanBaswanaBelarusBelizKanadaJamhuriyar Dimokuraɗiyyar Kong" +
+ "oJamhuriyar Afirka Ta TsakiyaKongoSuwizalanAibari KwasTsibiran KukuC" +
+ "ayileKamaruCaina, SinKolambiyaKwasta RikaKyubaTsibiran Kap BardeSifu" +
+ "rusJamhuriyar CakJamusJibutiDanmarkDominikaJamhuriyar DominikaAljeri" +
+ "yaEkwadorEstoniyaMasar, MisiraEritireyaSipenHabashaFinlanFijiTsibira" +
+ "n FalkilanMikuronesiyaFaransaGabonBirtaniyaGirnadaJiwarjiyaGini Ta F" +
+ "aransaGanaJibaraltarGrinlanGambiyaGiniGwadalufGini Ta IkwaitaGirkaGw" +
+ "atamalaGwamGini BisauGuyanaHondurasKurowaishiyaHaitiHungariIndunusiy" +
+ "aAyalanIziraʼilaIndiyaYankin Birtaniya Na Tekun IndiyaIraƙiIranAisal" +
+ "anItaliyaJamaikaJordanJapanKenyaKirgizistanKambodiyaKiribatiKwamoras" +
+ "San Kiti Da NebisKoreya Ta ArewaKoreya Ta KuduKwiyatTsibiran KaimanK" +
+ "azakistanLawasLabananSan LusiyaLicansitanSiri LankaLaberiyaLesotoLit" +
+ "uweniyaLukusamburlatibiyaLibiyaMarokoMonakoMaldobaMadagaskarTsibiran" +
+ " MarshalMasedoniyaMaliBurma, MiyamarMangoliyaTsibiran Mariyana Na Ar" +
+ "ewaMartinikMoritaniyaManseratiMaltaMoritusMaldibiMalawiMakasikoMalai" +
+ "siyaMozambikNamibiyaKaledoniya SabuwaNijarTsibirin NarfalkNajeriyaNi" +
+ "karaguwaHolanNorweNefalNauruNiyuNuzilanOmanPanamaPeruFolinesiya Ta F" +
+ "aransaPapuwa NuginiFilipinPakistanPolanSan Piyar Da MikelanPitakarin" +
+ "Porto RikoPalasɗinuPortugalPalauParagaiKwatarRawuniyanRomaniyaRashaR" +
+ "uwandaƘasar MakkaTsibiran SalamanSaishalSudanSuwedanSingapurSan Hele" +
+ "naSulobeniyaSulobakiyaSalewoSan MarinoSinigalSomaliyaSurinameSawo To" +
+ "me Da ParansipEl SalbadorSham, SiriyaSuwazilanTurkis Da Tsibiran Kai" +
+ "kwasCadiTogoTailanTajikistanTakelauTimor Ta GabasTurkumenistanTunisi" +
+ "yaTangaTurkiyyaTirinidad Da TobagoTubaluTaiwanTanzaniyaYukaranYugand" +
+ "aAmurkaYurugaiUzubekistanBatikanSan Binsan Da GirnadinBenezuwelaTsib" +
+ "irin Birjin Na BirtaniyaTsibiran Birjin Ta AmurkaBiyetinamBanuwatuWa" +
+ "lis Da FutunaSamowaYamalMayotiAfirka Ta KuduZambiyaZimbabuwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0023, 0x002e, 0x0040, 0x0046, 0x004e,
+ 0x0056, 0x0065, 0x006b, 0x006b, 0x0076, 0x0086, 0x008e, 0x0098,
+ 0x009d, 0x009d, 0x00a7, 0x00ba, 0x00c2, 0x00cc, 0x00d4, 0x00e0,
+ 0x00e9, 0x00f0, 0x00f7, 0x00fc, 0x00fc, 0x0103, 0x0109, 0x0111,
+ 0x0111, 0x0118, 0x011f, 0x0124, 0x0124, 0x012b, 0x0132, 0x0137,
+ 0x013d, 0x013d, 0x015d, 0x0179, 0x017e, 0x0187, 0x0192, 0x019f,
+ 0x01a5, 0x01ab, 0x01b5, 0x01be, 0x01be, 0x01c9, 0x01ce, 0x01e0,
+ 0x01e0, 0x01e0, 0x01e7, 0x01f5, 0x01fa, 0x01fa, 0x0200, 0x0207,
+ // Entry 40 - 7F
+ 0x020f, 0x0222, 0x022a, 0x022a, 0x0231, 0x0239, 0x0246, 0x0246,
+ 0x024f, 0x0254, 0x025b, 0x025b, 0x0261, 0x0265, 0x0276, 0x0282,
+ 0x0282, 0x0289, 0x028e, 0x0297, 0x029e, 0x02a7, 0x02b6, 0x02b6,
+ 0x02ba, 0x02c4, 0x02cb, 0x02d2, 0x02d6, 0x02de, 0x02ed, 0x02f2,
+ 0x02f2, 0x02fb, 0x02ff, 0x0309, 0x030f, 0x030f, 0x030f, 0x0317,
+ 0x0323, 0x0328, 0x032f, 0x032f, 0x0339, 0x033f, 0x0349, 0x0349,
+ 0x034f, 0x036f, 0x0375, 0x0379, 0x0380, 0x0387, 0x0387, 0x038e,
+ 0x0394, 0x0399, 0x039e, 0x03a9, 0x03b2, 0x03ba, 0x03c2, 0x03d3,
+ // Entry 80 - BF
+ 0x03e2, 0x03f0, 0x03f6, 0x0405, 0x040f, 0x0414, 0x041b, 0x0425,
+ 0x042f, 0x0439, 0x0441, 0x0447, 0x0451, 0x045b, 0x0463, 0x0469,
+ 0x046f, 0x0475, 0x047c, 0x047c, 0x047c, 0x0486, 0x0496, 0x04a0,
+ 0x04a4, 0x04b2, 0x04bb, 0x04bb, 0x04d5, 0x04dd, 0x04e7, 0x04f0,
+ 0x04f5, 0x04fc, 0x0503, 0x0509, 0x0511, 0x051a, 0x0522, 0x052a,
+ 0x053b, 0x0540, 0x0550, 0x0558, 0x0562, 0x0567, 0x056c, 0x0571,
+ 0x0576, 0x057a, 0x0581, 0x0585, 0x058b, 0x058f, 0x05a4, 0x05b1,
+ 0x05b8, 0x05c0, 0x05c5, 0x05d9, 0x05e2, 0x05ec, 0x05f6, 0x05fe,
+ // Entry C0 - FF
+ 0x0603, 0x060a, 0x0610, 0x0610, 0x0619, 0x0621, 0x0621, 0x0626,
+ 0x062d, 0x0639, 0x0649, 0x0650, 0x0655, 0x065c, 0x0664, 0x066e,
+ 0x0678, 0x0678, 0x0682, 0x0688, 0x0692, 0x0699, 0x06a1, 0x06a9,
+ 0x06a9, 0x06be, 0x06c9, 0x06c9, 0x06d5, 0x06de, 0x06de, 0x06f8,
+ 0x06fc, 0x06fc, 0x0700, 0x0706, 0x0710, 0x0717, 0x0725, 0x0732,
+ 0x073a, 0x073f, 0x0747, 0x075a, 0x0760, 0x0766, 0x076f, 0x0776,
+ 0x077d, 0x077d, 0x0783, 0x078a, 0x0795, 0x079c, 0x07b2, 0x07bc,
+ 0x07d8, 0x07f1, 0x07fa, 0x0802, 0x0811, 0x0817, 0x0817, 0x081c,
+ // Entry 100 - 13F
+ 0x0822, 0x0830, 0x0837, 0x0840,
+ },
+ },
+ { // haw
+ "NūhōlaniKanakāKinaKelemāniaKenemakaKepaniaPalaniAupuni Mōʻī Hui Pū ʻIaHe" +
+ "leneʻIlelaniʻIseraʻelaʻĪniaʻĪkāliaIāpanaMekikoHōlaniAotearoaʻĀina Pi" +
+ "lipinoLūkiaʻAmelika Hui Pū ʻIa",
+ []uint16{ // 243 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x001f, 0x001f, 0x0027,
+ // Entry 40 - 7F
+ 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,
+ 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e,
+ 0x002e, 0x0034, 0x0034, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
+ 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x0055,
+ 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,
+ 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x005e, 0x006a, 0x006a,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b, 0x007b, 0x007b,
+ 0x007b, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
+ // Entry 80 - BF
+ 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
+ 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
+ 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
+ 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082,
+ 0x0082, 0x0082, 0x0082, 0x0082, 0x0088, 0x0088, 0x0088, 0x0088,
+ 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,
+ 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7,
+ // Entry C0 - FF
+ 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00ad,
+ 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
+ 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
+ 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
+ 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
+ 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad,
+ 0x00ad, 0x00ad, 0x00c3,
+ },
+ },
+ { // he
+ heRegionStr,
+ heRegionIdx,
+ },
+ { // hi
+ hiRegionStr,
+ hiRegionIdx,
+ },
+ { // hr
+ hrRegionStr,
+ hrRegionIdx,
+ },
+ { // hsb
+ "AscensionAndorraZjednoćene arabske emiratyAfghanistanAntigua a BarbudaAn" +
+ "guillaAlbanskaArmenskaAngolaAntarktikaArgentinskaAmeriska SamoaAwstr" +
+ "iskaAwstralskaArubaÅlandAzerbajdźanBosniska a HercegowinaBarbadosBan" +
+ "gladešBelgiskaBurkina FasoBołharskaBahrainBurundiBeninSt. Barthélemy" +
+ "BermudyBruneiBoliwiskaKaribiska NižozemskaBrazilskaBahamyBhutanBouve" +
+ "towa kupaBotswanaBěłoruskaBelizeKanadaKokosowe kupyKongo-KinshasaCen" +
+ "tralnoafriska republikaKongo-BrazzavilleŠwicarskaCôte d’IvoireCookow" +
+ "e kupyChilskaKamerunChinaKolumbiskaClippertonowa kupaKosta RikaKubaK" +
+ "ap VerdeCuraçaoHodowna kupaCypernČěska republikaNěmskaDiego GarciaDź" +
+ "ibutiDanskaDominikaDominikanska republikaAlgeriskaCeuta a MelillaEkw" +
+ "adorEstiskaEgyptowskaZapadna SaharaEritrejaŠpaniskaEtiopiskaEuropska" +
+ " unijaFinskaFidźiFalklandske kupyMikroneziskaFäröske kupyFrancoskaGa" +
+ "bunZjednoćene kralestwoGrenadaGeorgiskaFrancoska GuyanaGuernseyGhana" +
+ "GibraltarGrönlandskaGambijaGinejaGuadeloupeEkwatorialna GinejaGrjeks" +
+ "kaJužna Georgiska a Južne Sandwichowe kupyGuatemalaGuamGineja-Bissau" +
+ "GuyanaWosebita zarjadniska cona HongkongHeardowa kupa a McDonaldowe " +
+ "kupyHondurasChorwatskaHaitiMadźarskaKanariske kupyIndoneskaIrskaIsra" +
+ "elManIndiskaBritiski teritorij w Indiskim oceanjeIrakIranIslandskaIt" +
+ "alskaJerseyJamaikaJordaniskaJapanskaKenijaKirgizistanKambodźaKiribat" +
+ "iKomorySt. Kitts a NevisSewjerna KorejaJužna KorejaKuwaitKajmanske k" +
+ "upyKazachstanLaosLibanonSt. LuciaLiechtensteinSri LankaLiberijaLesot" +
+ "hoLitawskaLuxemburgskaLetiskaLibyskaMarokkoMonacoMoldawskaMontenegro" +
+ "St. MartinMadagaskarMarshallowe kupyMakedonskaMaliMyanmarMongolskaWo" +
+ "sebita zarjadniska cona MacaoSewjerne MarianyMartiniqueMawretanskaMo" +
+ "ntserratMaltaMauritiusMalediwyMalawiMexikoMalajzijaMosambikNamibijaN" +
+ "owa KaledoniskaNigerNorfolkowa kupaNigerijaNikaraguaNižozemskaNorweg" +
+ "skaNepalNauruNiueNowoseelandskaOmanPanamaPeruFrancoska PolyneziskaPa" +
+ "puwa-Nowa GinejaFilipinyPakistanPólskaSt. Pierre a MiquelonPitcairno" +
+ "we kupyPuerto RicoPalestinski awtonomny teritorijPortugalskaPalauPar" +
+ "aguayKatarWonkowna OceaniskaRéunionRumunskaSerbiskaRuskaRuandaSawdi-" +
+ "ArabskaSalomonySeychelleSudanŠwedskaSingapurSt. HelenaSłowjenskaSval" +
+ "bard a Jan MayenSłowakskaSierra LeoneSan MarinoSenegalSomalijaSurina" +
+ "mJužny SudanSão Tomé a PríncipeEl SalvadorSint MaartenSyriskaSwazisk" +
+ "aTristan da Cunhakupy Turks a CaicosČadFrancoski južny a antarktiski" +
+ " teritorijTogoThailandskaTadźikistanTokelauTimor-LesteTurkmeniskaTun" +
+ "eziskaTongaTurkowskaTrinidad a TobagoTuvaluTaiwanTansanijaUkrainaUga" +
+ "ndaAmeriska OceaniskaZjednoćene staty AmerikiUruguayUzbekistanVatika" +
+ "nske městoSt. Vincent a GrenadinyVenezuelaBritiske knježniske kupyAm" +
+ "eriske knježniske kupyVietnamVanuatuWallis a FutunaSamoaKosowoJemenM" +
+ "ayotteJužna Afrika (Republika)SambijaSimbabwenjeznaty regionswětAfri" +
+ "kaSewjerna AmerikaJužna AmerikaOceaniskazapadna AfrikaSrjedźna Ameri" +
+ "kawuchodna Afrikasewjerna Afrikasrjedźna Afrikajužna AfrikaAmerikase" +
+ "wjerny ameriski kontinentKaribikawuchodna Azijajužna Azijajuhowuchod" +
+ "na Azijajužna EuropaAwstralazijaMelaneziskaMikroneziska (kupowy regi" +
+ "on)PolyneziskaAzijacentralna Azijazapadna AzijaEuropawuchodna Europa" +
+ "sewjerna Europazapadna EuropaŁaćonska Amerika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0047, 0x004f, 0x0057,
+ 0x005f, 0x005f, 0x0065, 0x006f, 0x007a, 0x0088, 0x0091, 0x009b,
+ 0x00a0, 0x00a6, 0x00b2, 0x00c8, 0x00d0, 0x00da, 0x00e2, 0x00ee,
+ 0x00f8, 0x00ff, 0x0106, 0x010b, 0x011a, 0x0121, 0x0127, 0x0130,
+ 0x0145, 0x014e, 0x0154, 0x015a, 0x0168, 0x0170, 0x017b, 0x0181,
+ 0x0187, 0x0194, 0x01a2, 0x01bc, 0x01cd, 0x01d7, 0x01e7, 0x01f3,
+ 0x01fa, 0x0201, 0x0206, 0x0210, 0x0222, 0x022c, 0x0230, 0x0239,
+ 0x0241, 0x024d, 0x0253, 0x0264, 0x026b, 0x0277, 0x027f, 0x0285,
+ // Entry 40 - 7F
+ 0x028d, 0x02a3, 0x02ac, 0x02bb, 0x02c2, 0x02c9, 0x02d3, 0x02e1,
+ 0x02e9, 0x02f2, 0x02fb, 0x0309, 0x030f, 0x0315, 0x0325, 0x0331,
+ 0x033f, 0x0348, 0x034d, 0x0362, 0x0369, 0x0372, 0x0382, 0x038a,
+ 0x038f, 0x0398, 0x03a4, 0x03ab, 0x03b1, 0x03bb, 0x03ce, 0x03d6,
+ 0x0400, 0x0409, 0x040d, 0x041a, 0x0420, 0x0442, 0x0462, 0x046a,
+ 0x0474, 0x0479, 0x0483, 0x0491, 0x049a, 0x049f, 0x04a5, 0x04a8,
+ 0x04af, 0x04d4, 0x04d8, 0x04dc, 0x04e5, 0x04ec, 0x04f2, 0x04f9,
+ 0x0503, 0x050b, 0x0511, 0x051c, 0x0525, 0x052d, 0x0533, 0x0544,
+ // Entry 80 - BF
+ 0x0553, 0x0560, 0x0566, 0x0574, 0x057e, 0x0582, 0x0589, 0x0592,
+ 0x059f, 0x05a8, 0x05b0, 0x05b7, 0x05bf, 0x05cb, 0x05d2, 0x05d9,
+ 0x05e0, 0x05e6, 0x05ef, 0x05f9, 0x0603, 0x060d, 0x061d, 0x0627,
+ 0x062b, 0x0632, 0x063b, 0x065a, 0x066a, 0x0674, 0x067f, 0x0689,
+ 0x068e, 0x0697, 0x069f, 0x06a5, 0x06ab, 0x06b4, 0x06bc, 0x06c4,
+ 0x06d4, 0x06d9, 0x06e8, 0x06f0, 0x06f9, 0x0704, 0x070d, 0x0712,
+ 0x0717, 0x071b, 0x0729, 0x072d, 0x0733, 0x0737, 0x074c, 0x075e,
+ 0x0766, 0x076e, 0x0775, 0x078a, 0x079a, 0x07a5, 0x07c4, 0x07cf,
+ // Entry C0 - FF
+ 0x07d4, 0x07dc, 0x07e1, 0x07f3, 0x07fb, 0x0803, 0x080b, 0x0810,
+ 0x0816, 0x0823, 0x082b, 0x0834, 0x0839, 0x0841, 0x0849, 0x0853,
+ 0x085e, 0x0872, 0x087c, 0x0888, 0x0892, 0x0899, 0x08a1, 0x08a8,
+ 0x08b4, 0x08ca, 0x08d5, 0x08e1, 0x08e8, 0x08f0, 0x0900, 0x0913,
+ 0x0917, 0x093f, 0x0943, 0x094e, 0x095a, 0x0961, 0x096c, 0x0977,
+ 0x0980, 0x0985, 0x098e, 0x099f, 0x09a5, 0x09ab, 0x09b4, 0x09bb,
+ 0x09c1, 0x09d3, 0x09ec, 0x09f3, 0x09fd, 0x0a0e, 0x0a25, 0x0a2e,
+ 0x0a47, 0x0a60, 0x0a67, 0x0a6e, 0x0a7d, 0x0a82, 0x0a88, 0x0a8d,
+ // Entry 100 - 13F
+ 0x0a94, 0x0aad, 0x0ab4, 0x0abc, 0x0acb, 0x0ad0, 0x0ad6, 0x0ae6,
+ 0x0af4, 0x0afd, 0x0b0b, 0x0b1c, 0x0b2b, 0x0b3a, 0x0b4a, 0x0b57,
+ 0x0b5e, 0x0b79, 0x0b81, 0x0b8f, 0x0b9b, 0x0bad, 0x0bba, 0x0bc6,
+ 0x0bd1, 0x0bed, 0x0bf8, 0x0bfd, 0x0c0c, 0x0c19, 0x0c1f, 0x0c2e,
+ 0x0c3d, 0x0c4b, 0x0c5d,
+ },
+ },
+ { // hu
+ huRegionStr,
+ huRegionIdx,
+ },
+ { // hy
+ hyRegionStr,
+ hyRegionIdx,
+ },
+ { // id
+ idRegionStr,
+ idRegionIdx,
+ },
+ { // ig
+ "BininBemudaChainaHatiComorosuLibyiaMaldivesaNigeria",
+ []uint16{ // 172 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x000b, 0x000b, 0x000b,
+ 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
+ 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
+ 0x000b, 0x000b, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ // Entry 40 - 7F
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011,
+ 0x0011, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x001d,
+ // Entry 80 - BF
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0023,
+ 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
+ 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023,
+ 0x0023, 0x0023, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x0033,
+ },
+ },
+ { // ii
+ "ꀠꑭꍏꇩꄓꇩꃔꇩꑱꇩꑴꄗꑴꄊꆺꏝꀪꊉꇆꌦꂰꇩꃅꄷꅉꀋꐚꌠ",
+ []uint16{ // 261 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x0012, 0x0012, 0x0012, 0x0012,
+ // Entry 40 - 7F
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0018, 0x0018, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x002d, 0x002d, 0x002d,
+ 0x002d, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ // Entry 80 - BF
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033,
+ // Entry C0 - FF
+ 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c,
+ 0x003c, 0x003c, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042,
+ // Entry 100 - 13F
+ 0x0042, 0x0042, 0x0042, 0x0042, 0x0054,
+ },
+ },
+ { // is
+ isRegionStr,
+ isRegionIdx,
+ },
+ { // it
+ itRegionStr,
+ itRegionIdx,
+ },
+ { // ja
+ jaRegionStr,
+ jaRegionIdx,
+ },
+ { // jgo
+ "Aŋgɔ́laAjɛntînMbulukína FásɔMbulundíMbɛnɛ̂ŋMbɔlivîMbɛlazîlMbɔtswánaKanad" +
+ "âKɔ́ŋgɔ-KinshásaKɔ́ŋgɔ-MbɛlazavîlSẅísɛKɔ́t NdivwâCíllɛKamɛlûnShînKɔ" +
+ "llɔmbîKúbaNjámanNjimbútiAljɛlîƐkwandɔ̂ƐjíptɛƐlitɛlɛ́yaƐspániyaƐtiyɔp" +
+ "îFɛlánciŊgabɔ̂ŋŊgánaŊgambîŊginɛ̂Ŋginɛ̂ ƐkwatɔliyâlŊgɛlɛ̂kŊginɛ̂ Mbi" +
+ "sáwuIslayɛ̂lÁndɛIlâkItalîJapɔ̂nKɛ́nyaKɔmɔ́lɔshiLibɛrîLɛsɔ́tɔLibîMɔlɔ" +
+ "̂kMándaŋgasɛkâMalîMɔlitanîMaláwiMɛksîkMɔzambîkNamimbîNijɛ̂Ninjɛliyâ" +
+ "Nɔlɛvɛ́jɛPɛlûLɛ́uniyɔ̂nSɛlɛbîLusîLuwándaPɛsɛ́shɛlSundânSiyɛ́la Lɛɔ̂n" +
+ "SɛnɛgâlSɔmalîSáwɔŋ Tɔmɛ́ nɛ́ PɛlínsipɛSwazilânCâtTɔ́ŋgɔTunizîTanzanî" +
+ "UŋgándaVɛnɛzwɛ́laMayɔ̂tZambîZimbámbwɛŋgɔŋ yi pɛ́ ká kɛ́ jʉɔMbíAfɛlîk" +
+ "AmɛlîkAzîɄlôp",
+ []uint16{ // 287 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x000a, 0x000a, 0x0013, 0x0013, 0x0013, 0x0013,
+ 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0024,
+ 0x0024, 0x0024, 0x002d, 0x0038, 0x0038, 0x0038, 0x0038, 0x0041,
+ 0x0041, 0x004b, 0x004b, 0x004b, 0x004b, 0x0056, 0x0056, 0x0056,
+ 0x005d, 0x005d, 0x0071, 0x0071, 0x0088, 0x0091, 0x009f, 0x009f,
+ 0x00a6, 0x00af, 0x00b4, 0x00bf, 0x00bf, 0x00bf, 0x00c4, 0x00c4,
+ 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00d4, 0x00d4,
+ // Entry 40 - 7F
+ 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00e7, 0x00e7, 0x00f0, 0x00f0,
+ 0x00fe, 0x0108, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112,
+ 0x0112, 0x011b, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,
+ 0x012d, 0x012d, 0x012d, 0x0135, 0x013e, 0x013e, 0x0156, 0x0161,
+ 0x0161, 0x0161, 0x0161, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173,
+ 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x017d, 0x017d,
+ 0x0183, 0x0183, 0x0188, 0x0188, 0x0188, 0x018e, 0x018e, 0x018e,
+ 0x018e, 0x0196, 0x019e, 0x019e, 0x019e, 0x019e, 0x01ac, 0x01ac,
+ // Entry 80 - BF
+ 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac,
+ 0x01ac, 0x01ac, 0x01b4, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01c4,
+ 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01dd, 0x01dd, 0x01dd,
+ 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01ec, 0x01ec,
+ 0x01ec, 0x01ec, 0x01ec, 0x01f3, 0x01fb, 0x01fb, 0x0205, 0x020d,
+ 0x020d, 0x0214, 0x0214, 0x021f, 0x021f, 0x021f, 0x022d, 0x022d,
+ 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x0233, 0x0233, 0x0233,
+ 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233,
+ // Entry C0 - FF
+ 0x0233, 0x0233, 0x0233, 0x0233, 0x0241, 0x0241, 0x024a, 0x024f,
+ 0x0257, 0x0257, 0x0257, 0x0264, 0x026b, 0x026b, 0x026b, 0x026b,
+ 0x026b, 0x026b, 0x026b, 0x027d, 0x027d, 0x0287, 0x028f, 0x028f,
+ 0x028f, 0x02b3, 0x02b3, 0x02b3, 0x02b3, 0x02bc, 0x02bc, 0x02bc,
+ 0x02c0, 0x02c0, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca,
+ 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d9, 0x02d9,
+ 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02f0,
+ 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0,
+ // Entry 100 - 13F
+ 0x02f8, 0x02f8, 0x02fe, 0x0309, 0x0329, 0x032d, 0x0335, 0x0335,
+ 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335,
+ 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d,
+ 0x033d, 0x033d, 0x033d, 0x0341, 0x0341, 0x0341, 0x0347,
+ },
+ },
+ { // jmc
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // ka
+ kaRegionStr,
+ kaRegionIdx,
+ },
+ { // kab
+ "UnduraTigeldunin Yedduklen TaɛrabinAfɣanistanUntiga d BarbudaUngiyaLalba" +
+ "niArminyaAntilles n Tmura-YessakesrenUngulaArjuntinSamwa Tamarikanit" +
+ "UstriyaUstraliArubaAzrabijanBusna d HersekBarbadusBangladacBelǧikBur" +
+ "kina FasuBulgariBaḥrinBurandiBininBermudaBruneyBuliviBrizilBahamasBh" +
+ "utanBustwanaBilarusBilizKanadaTigduda Tagdudant n KunguTigduda n Tef" +
+ "riqt TalemmastKunguSwisKuṭ DivwarTigzirin n KukCiliKamirunLacinKulum" +
+ "biKusta RikaKubaTigzirin n yixef azegzawCiprČčekLalmanǦibutiDenmarkD" +
+ "uminikTigduda TaduminikitLezzayerIkwaṭurIstunyaMaṣrIritiriaSpanyaUty" +
+ "upiFinlundFijiTigzirin n FalklandMikrunizyaFransaGabunTagelda Yedduk" +
+ "lenGrunadJiyurjiƔana tafransistƔanaJibraltarGrunlandGambyaƔinyaGwada" +
+ "lupiƔinya TasebgastLagrisGwatimalaGwamƔinya-BisawGuwanaHundurasKerwa" +
+ "syaHaytiHungriInduniziLirlundIzrayilLhendAkal Aglizi deg Ugaraw Ahen" +
+ "diLɛiraqIranIslandṬelyanJamyikaLajurdaniJappuKinyaKirigistanCambudya" +
+ "KiribatiKumurSan Kits d NivisKurya, UfellaKurya, WaddaKuwaytTigzirin" +
+ " n KamyanKazaxistanLawsLubnanSan LučyaLayctenstanSri LankaLibiryaLiz" +
+ "uṭuLiṭwanyaLuksamburgLatviaLibyaLmerrukMunakuMuldabiMadaɣecqerTigzir" +
+ "in n MarcalMasidwanMaliMyanmarMungulyaTigzirin n Maryan UfellaMartin" +
+ "ikMuriṭanyaMunsiratMalṭMurisMaldibMalawiMeksikMalizyaMuzembiqNamibya" +
+ "Kalidunya TamaynutNijerTigzirin TinawfukinNijiryaNikaragwaTimura-Yes" +
+ "sakesrenNurvijNipalNuruNiwiZiland TamaynutƐumanPanamPiruPulunizi taf" +
+ "ransistƔinya Tamaynut TapaputFilipinPakistanPulundSan Pyar d MiklunP" +
+ "itkarinPurtu RikuFalisṭin d ƔezzaPurtugalPaluParagwayQaṭarTimlilitRu" +
+ "maniRrusRuwandaSuɛudiya TaɛrabtTigzirin n SulumunSeycelSudanSwidSing" +
+ "afurSant IlinaSluvinyaSluvakyaSira LyunSan MarinuSinigalṢumalSurinam" +
+ "Saw Tumi d PransipSalvadurSuryaSwazilundṬurk d Tegzirin n KaykusČadṬ" +
+ "uguṬaylandTajikistanṬukluTumur AsamarṬurkmanistanTunesṬungaṬurkṬrind" +
+ "ad d ṬubaguṬuvaluṬaywanṬanzanyaUkranUɣandaWDMUrugwayUzbaxistanAwanek" +
+ " n VatikanSan Vansu d GrunadinVenzwilaTigzirin Tiverjiniyin Tigliziy" +
+ "inW.D. Tigzirin n VirginyaVyeṭnamVanwatuWallis d FutunaSamwaLyamenMa" +
+ "yuṭTafriqt WaddaZambyaZimbabwi",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0024, 0x002f, 0x003f, 0x0045, 0x004c,
+ 0x0053, 0x006f, 0x0075, 0x0075, 0x007d, 0x008e, 0x0095, 0x009c,
+ 0x00a1, 0x00a1, 0x00aa, 0x00b8, 0x00c0, 0x00c9, 0x00d0, 0x00dc,
+ 0x00e3, 0x00eb, 0x00f2, 0x00f7, 0x00f7, 0x00fe, 0x0104, 0x010a,
+ 0x010a, 0x0110, 0x0117, 0x011d, 0x011d, 0x0125, 0x012c, 0x0131,
+ 0x0137, 0x0137, 0x0150, 0x016b, 0x0170, 0x0174, 0x0180, 0x018e,
+ 0x0192, 0x0199, 0x019e, 0x01a5, 0x01a5, 0x01af, 0x01b3, 0x01cb,
+ 0x01cb, 0x01cb, 0x01cf, 0x01d5, 0x01db, 0x01db, 0x01e2, 0x01e9,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020b, 0x020b, 0x0214, 0x021b, 0x0221, 0x0221,
+ 0x0229, 0x022f, 0x0235, 0x0235, 0x023c, 0x0240, 0x0253, 0x025d,
+ 0x025d, 0x0263, 0x0268, 0x0279, 0x027f, 0x0286, 0x0296, 0x0296,
+ 0x029b, 0x02a4, 0x02ac, 0x02b2, 0x02b8, 0x02c1, 0x02d1, 0x02d7,
+ 0x02d7, 0x02e0, 0x02e4, 0x02f0, 0x02f6, 0x02f6, 0x02f6, 0x02fe,
+ 0x0306, 0x030b, 0x0311, 0x0311, 0x0319, 0x0320, 0x0327, 0x0327,
+ 0x032c, 0x0349, 0x0350, 0x0354, 0x035a, 0x0362, 0x0362, 0x0369,
+ 0x0372, 0x0377, 0x037c, 0x0386, 0x038e, 0x0396, 0x039b, 0x03ab,
+ // Entry 80 - BF
+ 0x03b8, 0x03c4, 0x03ca, 0x03db, 0x03e5, 0x03e9, 0x03ef, 0x03f9,
+ 0x0404, 0x040d, 0x0414, 0x041c, 0x0426, 0x0430, 0x0436, 0x043b,
+ 0x0442, 0x0448, 0x044f, 0x044f, 0x044f, 0x045a, 0x046b, 0x0473,
+ 0x0477, 0x047e, 0x0486, 0x0486, 0x049e, 0x04a6, 0x04b1, 0x04b9,
+ 0x04bf, 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e5, 0x04ec,
+ 0x04fe, 0x0503, 0x0516, 0x051d, 0x0526, 0x0538, 0x053e, 0x0543,
+ 0x0547, 0x054b, 0x055a, 0x0560, 0x0565, 0x0569, 0x057c, 0x0593,
+ 0x059a, 0x05a2, 0x05a8, 0x05b9, 0x05c1, 0x05cb, 0x05de, 0x05e6,
+ // Entry C0 - FF
+ 0x05ea, 0x05f2, 0x05f9, 0x05f9, 0x0601, 0x0607, 0x0607, 0x060b,
+ 0x0612, 0x0624, 0x0636, 0x063c, 0x0641, 0x0645, 0x064d, 0x0657,
+ 0x065f, 0x065f, 0x0667, 0x0670, 0x067a, 0x0681, 0x0688, 0x068f,
+ 0x068f, 0x06a1, 0x06a9, 0x06a9, 0x06ae, 0x06b7, 0x06b7, 0x06d1,
+ 0x06d5, 0x06d5, 0x06db, 0x06e4, 0x06ee, 0x06f5, 0x0701, 0x070f,
+ 0x0714, 0x071b, 0x0721, 0x0735, 0x073d, 0x0745, 0x074f, 0x0754,
+ 0x075b, 0x075b, 0x075e, 0x0765, 0x076f, 0x077f, 0x0793, 0x079b,
+ 0x07bb, 0x07d3, 0x07dc, 0x07e3, 0x07f2, 0x07f7, 0x07f7, 0x07fd,
+ // Entry 100 - 13F
+ 0x0804, 0x0811, 0x0817, 0x081f,
+ },
+ },
+ { // kam
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniMbulundiBeniniBermudaBruneiBoliviaBraziliBahamaBut" +
+ "aniBotswanaBelarusiBelizeKanandaJamhuri ya Kidemokrasia ya KongoJamh" +
+ "uri ya Afrika ya KatiKongoUswisiKodivaaIsiwa sya CookChileKameluniKy" +
+ "ainaKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJib" +
+ "utiDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisiliEritr" +
+ "eaHispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUvalanzaGabo" +
+ "niUingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGamb" +
+ "iaGineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasi" +
+ "KorasiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza k" +
+ "atika Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenya" +
+ "KirigizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea Kaskazin" +
+ "iKorea KusiniKuwaitiIsiwa sya KaymanKazakistaniLaosiLebanoniSantalus" +
+ "iaLishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorok" +
+ "oMonakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisi" +
+ "wa vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisi" +
+ "ModivuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa ch" +
+ "a NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniP" +
+ "anamaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapier" +
+ "i na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza" +
+ " wa PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiLwandaSaud" +
+ "iIsiwa sya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaS" +
+ "lovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Princip" +
+ "eElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajiki" +
+ "staniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTri" +
+ "nidad na TobagoTuvaluTaiwaniTanzaniaUkrainiUkandaMarekaniUrugwaiUzib" +
+ "ekistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin " +
+ "vya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na " +
+ "FutunaSamoaYemeniMayotteAfrika KusiniNzambiaNzimbambwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00ea, 0x00f0, 0x00f0, 0x00f7, 0x00fd, 0x0104,
+ 0x0104, 0x010b, 0x0111, 0x0117, 0x0117, 0x011f, 0x0127, 0x012d,
+ 0x0134, 0x0134, 0x0154, 0x016d, 0x0172, 0x0178, 0x017f, 0x018d,
+ 0x0192, 0x019a, 0x01a0, 0x01a8, 0x01a8, 0x01b1, 0x01b5, 0x01bd,
+ 0x01bd, 0x01bd, 0x01c4, 0x01d4, 0x01dd, 0x01dd, 0x01e3, 0x01ea,
+ // Entry 40 - 7F
+ 0x01f2, 0x0205, 0x020c, 0x020c, 0x0212, 0x0219, 0x021f, 0x021f,
+ 0x0226, 0x022e, 0x0236, 0x0236, 0x023b, 0x023f, 0x0252, 0x025c,
+ 0x025c, 0x0264, 0x026a, 0x0273, 0x027a, 0x027f, 0x0292, 0x0292,
+ 0x0297, 0x029f, 0x02a8, 0x02ae, 0x02b2, 0x02bb, 0x02c4, 0x02cb,
+ 0x02cb, 0x02d4, 0x02d8, 0x02e1, 0x02e7, 0x02e7, 0x02e7, 0x02f0,
+ 0x02f7, 0x02fc, 0x0304, 0x0304, 0x030d, 0x0315, 0x031c, 0x031c,
+ 0x0321, 0x0346, 0x034b, 0x0351, 0x0359, 0x035f, 0x035f, 0x0366,
+ 0x036d, 0x0373, 0x0378, 0x0385, 0x038d, 0x0395, 0x039b, 0x03ae,
+ // Entry 80 - BF
+ 0x03bd, 0x03c9, 0x03d0, 0x03e0, 0x03eb, 0x03f0, 0x03f8, 0x0402,
+ 0x040c, 0x0415, 0x041c, 0x0422, 0x042a, 0x0433, 0x043a, 0x043f,
+ 0x0445, 0x044b, 0x0452, 0x0452, 0x0452, 0x0458, 0x046a, 0x0473,
+ 0x0477, 0x047c, 0x0484, 0x0484, 0x04a4, 0x04ad, 0x04b6, 0x04c1,
+ 0x04c6, 0x04cc, 0x04d2, 0x04d8, 0x04df, 0x04e6, 0x04ee, 0x04f5,
+ 0x0501, 0x0507, 0x0518, 0x051f, 0x0528, 0x0530, 0x0535, 0x053b,
+ 0x0540, 0x0544, 0x054e, 0x0553, 0x0559, 0x055d, 0x0572, 0x0577,
+ 0x057f, 0x0588, 0x058f, 0x05a5, 0x05ae, 0x05b7, 0x05e9, 0x05ee,
+ // Entry C0 - FF
+ 0x05f3, 0x05fb, 0x0601, 0x0601, 0x060a, 0x0611, 0x0611, 0x0616,
+ 0x061c, 0x0621, 0x0632, 0x063c, 0x0642, 0x0648, 0x0650, 0x065b,
+ 0x0663, 0x0663, 0x066b, 0x0676, 0x067e, 0x0686, 0x068d, 0x0695,
+ 0x0695, 0x06a9, 0x06b1, 0x06b1, 0x06b6, 0x06bc, 0x06bc, 0x06d5,
+ 0x06da, 0x06da, 0x06de, 0x06e6, 0x06f1, 0x06f8, 0x070b, 0x071a,
+ 0x0721, 0x0726, 0x072d, 0x073f, 0x0745, 0x074c, 0x0754, 0x075b,
+ 0x0761, 0x0761, 0x0769, 0x0770, 0x077c, 0x0784, 0x079d, 0x07a6,
+ 0x07c5, 0x07e3, 0x07ec, 0x07f3, 0x0802, 0x0807, 0x0807, 0x080d,
+ // Entry 100 - 13F
+ 0x0814, 0x0821, 0x0828, 0x0832,
+ },
+ },
+ { // kde
+ "AndolaDimiliki dya Vakulungwa va ChalabuAfuganistaniAntigua na BalbudaAn" +
+ "gwilaAlbaniaAlmeniaAntili za UholanziAngolaAdyentinaSamoa ya Malekan" +
+ "iAustliaAustlaliaAlubaAzabadyaniBosnia na HezegovinaBabadosiBanglade" +
+ "shiUbelgidiBuchinafasoBulgaliaBahaleniBulundiBeniniBelmudaBluneiBoli" +
+ "viaBlaziliBahamaButaniBotswanaBelalusiBelizeKanadaJamuhuli ya Chidem" +
+ "oklasia ya kuKongoJamuhuli ya Afilika ya Paching’atiKongoUswisiKodiv" +
+ "aaChisiwa cha CookChileKameluniChinaKolombiaKostalikaKubaKepuvedeKup" +
+ "losiJamuhuli ya ChechiUdyerumaniDyibutiDenmakiDominikaJamuhuli ya Do" +
+ "minikaAljeliaEkwadoEstoniaMisliElitileaHispaniaUhabeshiUfiniFijiChis" +
+ "iwa cha FalklandMikilonesiaUfalansaGaboniNngalesaGlenadaDyodyaGwiyan" +
+ "a ya UfalansaGhanaDiblaltaGlinlandiGambiaGineGwadelupeGinekwetaUgili" +
+ "chiGwatemalaGwamGinebisauGuyanaHondulasiKolasiaHaitiHungaliaIndonesi" +
+ "aAyalandiIslaeliIndiaLieneo lyaki Nngalesa Nbahali ya HindiIlakiUady" +
+ "emiAislandiItaliaDyamaikaYordaniDyapaniKenyaKiligizistaniKambodiaKil" +
+ "ibatiKomoloSantakitzi na NevisKolea KasikaziniKolea KusiniKuwaitiChi" +
+ "siwa cha KemenKazachistaniLaosiLebanoniSantalusiaLishenteniSililanka" +
+ "LibeliaLesotoLitwaniaLasembagiLativiaLibyaMolokoMonakoMoldovaBukiniC" +
+ "hisiwa cha MalushalMasedoniaMaliMyamaMongoliaChisiwa cha Marian cha " +
+ "KasikaziniMalitinikiMolitaniaMonselatiMaltaMolisiModivuMalawiMeksiko" +
+ "MalesiaMsumbijiNamibiaNyukaledoniaNidyeliChisiwa cha NolufokNidyelia" +
+ "NikalagwaUholanziNorweNepaliNauluNiueNyuzilandiOmaniPanamaPeluPoline" +
+ "sia ya UfalansaPapuaFilipinoPakistaniPolandiSantapieli na MikeloniPi" +
+ "tikeluniPwetolikoNchingu wa Magalibi wa Mpanda wa kuGaza wa kuPalesU" +
+ "lenoPalauPalagwaiKataliLiyunioniLomaniaUlusiLwandaSaudiaChisiwa cha " +
+ "SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiel" +
+ "a LeoniSamalinoSenegaliSomaliaSulinamuSaotome na PrinsipeElsavadoSil" +
+ "iaUswaziChisiwa cha Tuluchi na KaikoChadiTogoTailandiTadikistaniToke" +
+ "lauTimoli ya MashalikiTuluchimenistaniTunisiaTongaUtuluchiTilinidad " +
+ "na TobagoTuvaluTaiwaniTanzaniaUklainiUgandaMalekaniUlugwaiUzibechist" +
+ "aniVatikaniSantavisenti na GlenadiniVenezuelaChisiwa Chivihi cha Win" +
+ "galesaChisiwa Chivihi cha MalekaniVietinamuVanuatuWalis na FutunaSam" +
+ "oaYemeniMaoleAfilika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0028, 0x0034, 0x0046, 0x004d, 0x0054,
+ 0x005b, 0x006d, 0x0073, 0x0073, 0x007c, 0x008d, 0x0094, 0x009d,
+ 0x00a2, 0x00a2, 0x00ac, 0x00c0, 0x00c8, 0x00d3, 0x00db, 0x00e6,
+ 0x00ee, 0x00f6, 0x00fd, 0x0103, 0x0103, 0x010a, 0x0110, 0x0117,
+ 0x0117, 0x011e, 0x0124, 0x012a, 0x012a, 0x0132, 0x013a, 0x0140,
+ 0x0146, 0x0146, 0x016a, 0x018e, 0x0193, 0x0199, 0x01a0, 0x01b0,
+ 0x01b5, 0x01bd, 0x01c2, 0x01ca, 0x01ca, 0x01d3, 0x01d7, 0x01df,
+ 0x01df, 0x01df, 0x01e6, 0x01f8, 0x0202, 0x0202, 0x0209, 0x0210,
+ // Entry 40 - 7F
+ 0x0218, 0x022c, 0x0233, 0x0233, 0x0239, 0x0240, 0x0245, 0x0245,
+ 0x024d, 0x0255, 0x025d, 0x025d, 0x0262, 0x0266, 0x027a, 0x0285,
+ 0x0285, 0x028d, 0x0293, 0x029b, 0x02a2, 0x02a8, 0x02bb, 0x02bb,
+ 0x02c0, 0x02c8, 0x02d1, 0x02d7, 0x02db, 0x02e4, 0x02ed, 0x02f5,
+ 0x02f5, 0x02fe, 0x0302, 0x030b, 0x0311, 0x0311, 0x0311, 0x031a,
+ 0x0321, 0x0326, 0x032e, 0x032e, 0x0337, 0x033f, 0x0346, 0x0346,
+ 0x034b, 0x0371, 0x0376, 0x037d, 0x0385, 0x038b, 0x038b, 0x0393,
+ 0x039a, 0x03a1, 0x03a6, 0x03b3, 0x03bb, 0x03c3, 0x03c9, 0x03dc,
+ // Entry 80 - BF
+ 0x03ec, 0x03f8, 0x03ff, 0x0410, 0x041c, 0x0421, 0x0429, 0x0433,
+ 0x043d, 0x0446, 0x044d, 0x0453, 0x045b, 0x0464, 0x046b, 0x0470,
+ 0x0476, 0x047c, 0x0483, 0x0483, 0x0483, 0x0489, 0x049d, 0x04a6,
+ 0x04aa, 0x04af, 0x04b7, 0x04b7, 0x04d8, 0x04e2, 0x04eb, 0x04f4,
+ 0x04f9, 0x04ff, 0x0505, 0x050b, 0x0512, 0x0519, 0x0521, 0x0528,
+ 0x0534, 0x053b, 0x054e, 0x0556, 0x055f, 0x0567, 0x056c, 0x0572,
+ 0x0577, 0x057b, 0x0585, 0x058a, 0x0590, 0x0594, 0x05a9, 0x05ae,
+ 0x05b6, 0x05bf, 0x05c6, 0x05dc, 0x05e6, 0x05ef, 0x0621, 0x0626,
+ // Entry C0 - FF
+ 0x062b, 0x0633, 0x0639, 0x0639, 0x0642, 0x0649, 0x0649, 0x064e,
+ 0x0654, 0x065a, 0x066d, 0x0677, 0x067d, 0x0683, 0x068b, 0x0696,
+ 0x069e, 0x069e, 0x06a6, 0x06b1, 0x06b9, 0x06c1, 0x06c8, 0x06d0,
+ 0x06d0, 0x06e3, 0x06eb, 0x06eb, 0x06f0, 0x06f6, 0x06f6, 0x0712,
+ 0x0717, 0x0717, 0x071b, 0x0723, 0x072e, 0x0735, 0x0748, 0x0758,
+ 0x075f, 0x0764, 0x076c, 0x077f, 0x0785, 0x078c, 0x0794, 0x079b,
+ 0x07a1, 0x07a1, 0x07a9, 0x07b0, 0x07bd, 0x07c5, 0x07de, 0x07e7,
+ 0x0804, 0x0820, 0x0829, 0x0830, 0x083f, 0x0844, 0x0844, 0x084a,
+ // Entry 100 - 13F
+ 0x084f, 0x085d, 0x0863, 0x086b,
+ },
+ },
+ { // kea
+ "Ilha di AsensãuAndoraEmiradus Arabi UniduAfeganistãuAntigua i BarbudaAng" +
+ "ilaAlbaniaArmeniaAntilhas OlandezaAngolaAntartikaArjentinaSamoa Merk" +
+ "anuAustriaAustraliaArubaIlhas ÅlandAzerbaijãuBosnia-ErzegovinaBarbad" +
+ "usBangladexiBéljikaBurkina FasuBulgariaBarainBurundiBeninSãu Bartolo" +
+ "meuBermudasBruneiBolíviaKaraibas OlandezasBrazilBaamasButãuIlha Buve" +
+ "BotsuanaBelarusBeliziKanadáIlhas KokusKongu - KinxasaRepublika Sentr" +
+ "u-AfrikanuKongu - BrazaviliSuisaKosta di MarfinIlhas KukXiliKamarõis" +
+ "XinaKolômbiaIlha KlipertonKosta RikaKubaKabu VerdiKurasauIlha di Nat" +
+ "alXipriRepublika TxekaAlimanhaDiegu GarsiaDjibutiDinamarkaDominikaRe" +
+ "públika DominikanaArjeliaSeuta i MelilaEkuadorStoniaEjituSara Osiden" +
+ "talIritreiaSpanhaItiopiaUniãu EuropeiaFinlandiaFidjiIlhas MalvinasMi" +
+ "kroneziaIlhas FaroeFransaGabãuReinu UniduGranadaJiorjiaGiana Fransez" +
+ "aGernziGanaJibraltarGronelándiaGambiaGineGuadalupiGine EkuatorialGre" +
+ "siaJeórjia di Sul i Ilhas di Sanduixi di SulGuatimalaGuamGine-BisauG" +
+ "ianaRejiãu Administrativu Special di Hong KongIlha Heard i Ilhas McD" +
+ "onaldOndurasKroasiaAitíUngriaKanáriasIndoneziaIrlandaIsraelIlha di M" +
+ "anIndiaIlhas Britanika di IndikuIrakiIronIslandiaItaliaJersiJamaikaJ" +
+ "ordaniaJapãuKeniaKirgistonKambodjaKiribatiKamorisSãu Kristovãu i Nev" +
+ "isKoreia di NortiKoreia di SulKueitiIlhas KaimãuKazakistãuLausLibanu" +
+ "Santa LúsiaLixenstainSri LankaLiberiaLezotuLituaniaLuxemburguLetonia" +
+ "LibiaMarokusMonakuMoldaviaMontenegruSãu Martinhu di FransaMadagaskar" +
+ "Ilhas MarxalMasidoniaMaliMianmarMongoliaRejiãu Administrativu Specia" +
+ "l di MakauIlhas Marianas di NortiMartinikaMauritaniaMonseratMaltaIlh" +
+ "as MaurisiaMaldivasMalauiMéxikuMalaziaMusambikiNamibiaNova Kalidonia" +
+ "NijerIlhas NorfolkNijeriaNikaráguaOlandaNoruegaNepalNauruNiueNova Zi" +
+ "landiaOmanPanamáPeruPolinezia FransezaPapua-Nova GineFilipinasPakist" +
+ "ãuPuloniaSan Piere i MikelonPirkairnPortu RikuPalistinaPurtugalPala" +
+ "uParaguaiKatarIlhas di OseaniaRunionRomeniaServiaRúsiaRuandaArabia S" +
+ "auditaIlhas SalumonSeixelisSudãuSuesiaSingapuraSanta IlenaSloveniaSv" +
+ "albard i Jan MaienSlovakiaSera LioaSan MarinuSenegalSumaliaSurinamiS" +
+ "udãu di SulSãu Tume i PrinsipiEl SalvadorSãu Martinhu di OlandaSiria" +
+ "SuazilándiaTristan da KunhaIlhas Turkas i KaikusTxadiTerras Franses " +
+ "di SulToguTailandiaTadjikistãuTokelauTimor LestiTurkumenistãuTunizia" +
+ "TongaTurkiaTrinidad i TobaguTuvaluTaiuanTanzaniaUkraniaUgandaIlhas M" +
+ "inoris Distantis de Stadus UnidusStadus Unidos di MerkaUruguaiUzbeki" +
+ "stãuVatikanuSãu Bisenti i GranadinasVinizuelaIlhas Virjens Britanika" +
+ "sIlhas Virjens MerkanasVietnamVanuatuUalis i FutunaSamoaKozovuIemenM" +
+ "aioteAfrika di SulZambiaZimbabuiRejiãu DiskonxeduMunduÁfrikaMerka di" +
+ " NortiMerka di SulOseaniaÁfrika OsidentalMerka SentralÁfrika Orienta" +
+ "lNorti di ÁfrikaÁfrika SentralSul di ÁfrikaMerkasNorti di MerkaKarai" +
+ "basÁzia OrientalSul di ÁziaSudesti AziátikuEuropa di SulAustraláziaM" +
+ "elanéziaRejiãu di MikronéziaPolinéziaÁziaÁzia SentralÁzia OsidentalE" +
+ "uropaEuropa OrientalEuropa di NortiEuropa OsidentalMerka Latinu",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0016, 0x002a, 0x0036, 0x0047, 0x004d, 0x0054,
+ 0x005b, 0x006c, 0x0072, 0x007b, 0x0084, 0x0091, 0x0098, 0x00a1,
+ 0x00a6, 0x00b2, 0x00bd, 0x00ce, 0x00d6, 0x00e0, 0x00e8, 0x00f4,
+ 0x00fc, 0x0102, 0x0109, 0x010e, 0x011d, 0x0125, 0x012b, 0x0133,
+ 0x0145, 0x014b, 0x0151, 0x0157, 0x0160, 0x0168, 0x016f, 0x0175,
+ 0x017c, 0x0187, 0x0196, 0x01af, 0x01c0, 0x01c5, 0x01d4, 0x01dd,
+ 0x01e1, 0x01ea, 0x01ee, 0x01f7, 0x0205, 0x020f, 0x0213, 0x021d,
+ 0x0224, 0x0231, 0x0236, 0x0245, 0x024d, 0x0259, 0x0260, 0x0269,
+ // Entry 40 - 7F
+ 0x0271, 0x0286, 0x028d, 0x029b, 0x02a2, 0x02a8, 0x02ad, 0x02bb,
+ 0x02c3, 0x02c9, 0x02d0, 0x02df, 0x02e8, 0x02ed, 0x02fb, 0x0305,
+ 0x0310, 0x0316, 0x031c, 0x0327, 0x032e, 0x0335, 0x0343, 0x0349,
+ 0x034d, 0x0356, 0x0362, 0x0368, 0x036c, 0x0375, 0x0384, 0x038a,
+ 0x03b4, 0x03bd, 0x03c1, 0x03cb, 0x03d0, 0x03fb, 0x0416, 0x041d,
+ 0x0424, 0x0429, 0x042f, 0x0438, 0x0441, 0x0448, 0x044e, 0x0459,
+ 0x045e, 0x0477, 0x047c, 0x0480, 0x0488, 0x048e, 0x0493, 0x049a,
+ 0x04a2, 0x04a8, 0x04ad, 0x04b6, 0x04be, 0x04c6, 0x04cd, 0x04e4,
+ // Entry 80 - BF
+ 0x04f3, 0x0500, 0x0506, 0x0513, 0x051e, 0x0522, 0x0528, 0x0534,
+ 0x053e, 0x0547, 0x054e, 0x0554, 0x055c, 0x0566, 0x056d, 0x0572,
+ 0x0579, 0x057f, 0x0587, 0x0591, 0x05a8, 0x05b2, 0x05be, 0x05c7,
+ 0x05cb, 0x05d2, 0x05da, 0x0601, 0x0618, 0x0621, 0x062b, 0x0633,
+ 0x0638, 0x0646, 0x064e, 0x0654, 0x065b, 0x0662, 0x066b, 0x0672,
+ 0x0680, 0x0685, 0x0692, 0x0699, 0x06a3, 0x06a9, 0x06b0, 0x06b5,
+ 0x06ba, 0x06be, 0x06cb, 0x06cf, 0x06d6, 0x06da, 0x06ec, 0x06fb,
+ 0x0704, 0x070d, 0x0714, 0x0727, 0x072f, 0x0739, 0x0742, 0x074a,
+ // Entry C0 - FF
+ 0x074f, 0x0757, 0x075c, 0x076c, 0x0772, 0x0779, 0x077f, 0x0785,
+ 0x078b, 0x0799, 0x07a6, 0x07ae, 0x07b4, 0x07ba, 0x07c3, 0x07ce,
+ 0x07d6, 0x07ea, 0x07f2, 0x07fb, 0x0805, 0x080c, 0x0813, 0x081b,
+ 0x0828, 0x083c, 0x0847, 0x085e, 0x0863, 0x086f, 0x087f, 0x0894,
+ 0x0899, 0x08ae, 0x08b2, 0x08bb, 0x08c7, 0x08ce, 0x08d9, 0x08e7,
+ 0x08ee, 0x08f3, 0x08f9, 0x090a, 0x0910, 0x0916, 0x091e, 0x0925,
+ 0x092b, 0x0953, 0x0969, 0x0970, 0x097b, 0x0983, 0x099c, 0x09a5,
+ 0x09bd, 0x09d3, 0x09da, 0x09e1, 0x09ef, 0x09f4, 0x09fa, 0x09ff,
+ // Entry 100 - 13F
+ 0x0a05, 0x0a12, 0x0a18, 0x0a20, 0x0a32, 0x0a37, 0x0a3e, 0x0a4c,
+ 0x0a58, 0x0a5f, 0x0a70, 0x0a7d, 0x0a8d, 0x0a9d, 0x0aac, 0x0aba,
+ 0x0ac0, 0x0ace, 0x0ad6, 0x0ae4, 0x0af0, 0x0b01, 0x0b0e, 0x0b1a,
+ 0x0b24, 0x0b3a, 0x0b44, 0x0b49, 0x0b56, 0x0b65, 0x0b6b, 0x0b7a,
+ 0x0b89, 0x0b99, 0x0ba5,
+ },
+ },
+ { // khq
+ "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" +
+ "lbaaniArmeeniHollandu Antiiyey LabooAngoolaArgentineAmeriki SamoaOtr" +
+ "išiOstraaliAruubaAzerbaayijaŋBosni nda HerzegovineBarbaadosBangladeš" +
+ "iBelgiikiBurkina fasoBulgaariBahareenBurundiBeniŋBermudaBruuneeBooli" +
+ "viBreezilBahamasBuutaŋBotswaanaBilorišiBeliiziKanaadaKongoo demookar" +
+ "atiki labooCentraafriki koyraKongooSwisuKudwarKuuk gungeyŠiiliKameru" +
+ "unŠiinKolombiKosta rikaKuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuu" +
+ "tiDanemarkDoominikiDoominiki labooAlžeeriEkwateerEstooniMisraEritree" +
+ "EspaaɲeEcioopiFinlanduFijiKalkan gungeyMikroneziFaransiGaabonAlbaasa" +
+ "laama MargantaGrenaadaGorgiFaransi GuyaanGaanaGibraltarGrinlandGambi" +
+ "GineGwadeluupGinee EkwatorialGreeceGwatemaalaGuamGine-BissoGuyaaneHo" +
+ "ndurasKrwaasiHaitiHungaariIndoneeziIrlanduIsrayelIndu labooBritiši I" +
+ "ndu teekoo laamaIraakIraanAycelandItaaliJamaayikUrdunJaapoŋKeeniyaKy" +
+ "rgyzstanKamboogiKiribaatiKomoorSeŋ Kitts nda NevisKooree, GurmaKoore" +
+ "e, HawsaKuweetKayman gungeyKaazakstanLaawosLubnaanSeŋ LussiaLiechten" +
+ "steinSrilankaLiberiaLeesotoLituaaniLuxembourgLetooniLiibiMaarokMonak" +
+ "oMoldoviMadagascarMaršal gungeyMaacedooniMaaliMaynamarMongooliMarian" +
+ "a Gurma GungeyMartiniikiMooritaaniMontserratMaltaMooris gungeyMaldii" +
+ "vuMalaawiMexikiMaleeziMozambikNaamibiKaaledooni TaagaaNižerNorfolk G" +
+ "ungooNaajiriiaNikaragwaHollanduNorveejNeepalNauruNiueZeelandu TaagaO" +
+ "maanPanamaPeeruFaransi PolineeziPapua Ginee TaagaFilipinePaakistanPo" +
+ "loɲeSeŋ Piyer nda MikelonPitikarinPorto RikoPalestine Dangay nda Gaa" +
+ "zaPortugaalPaluParaguweyKataarReenioŋRumaaniIriši labooRwandaSaudiya" +
+ "Solomon GungeySeešelSuudaŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSe" +
+ "era LeonSan MarinoSenegalSomaaliSurinaamSao Tome nda PrinsipeSalvado" +
+ "r labooSuuriaSwazilandTurk nda Kayikos GungeyCaaduTogoTaayilandTaaži" +
+ "kistanTokelauTimoor hawsaTurkmenistaŋTuniziTongaTurkiTrinidad nda To" +
+ "baagoTuvaluTaayiwanTanzaaniUkreenUgandaAmeriki Laabu MarganteyUruguw" +
+ "eyUzbeekistanVaatikan LaamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiš" +
+ "i Virgin gungeyAmeerik Virgin GungeyVietnaamVanautuWallis nda Futuna" +
+ "SamoaYamanMayootiHawsa Afriki LabooZambiZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e,
+ 0x0055, 0x006c, 0x0073, 0x0073, 0x007c, 0x0089, 0x0090, 0x0098,
+ 0x009e, 0x009e, 0x00ab, 0x00c0, 0x00c9, 0x00d4, 0x00dc, 0x00e8,
+ 0x00f0, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0113, 0x011a,
+ 0x011a, 0x0121, 0x0128, 0x012f, 0x012f, 0x0138, 0x0141, 0x0148,
+ 0x014f, 0x014f, 0x0169, 0x017b, 0x0181, 0x0186, 0x018c, 0x0197,
+ 0x019d, 0x01a5, 0x01aa, 0x01b1, 0x01b1, 0x01bb, 0x01c0, 0x01ce,
+ 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e5, 0x01e5, 0x01ec, 0x01f4,
+ // Entry 40 - 7F
+ 0x01fd, 0x020c, 0x0214, 0x0214, 0x021c, 0x0223, 0x0228, 0x0228,
+ 0x022f, 0x0237, 0x023e, 0x023e, 0x0246, 0x024a, 0x0257, 0x0260,
+ 0x0260, 0x0267, 0x026d, 0x0282, 0x028a, 0x028f, 0x029d, 0x029d,
+ 0x02a2, 0x02ab, 0x02b3, 0x02b8, 0x02bc, 0x02c5, 0x02d5, 0x02db,
+ 0x02db, 0x02e5, 0x02e9, 0x02f3, 0x02fa, 0x02fa, 0x02fa, 0x0302,
+ 0x0309, 0x030e, 0x0316, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d,
+ 0x0337, 0x0351, 0x0356, 0x035b, 0x0363, 0x0369, 0x0369, 0x0371,
+ 0x0376, 0x037d, 0x0384, 0x038e, 0x0396, 0x039f, 0x03a5, 0x03b9,
+ // Entry 80 - BF
+ 0x03c6, 0x03d3, 0x03d9, 0x03e6, 0x03f0, 0x03f6, 0x03fd, 0x0408,
+ 0x0415, 0x041d, 0x0424, 0x042b, 0x0433, 0x043d, 0x0444, 0x0449,
+ 0x044f, 0x0455, 0x045c, 0x045c, 0x045c, 0x0466, 0x0474, 0x047e,
+ 0x0483, 0x048b, 0x0493, 0x0493, 0x04a7, 0x04b1, 0x04bb, 0x04c5,
+ 0x04ca, 0x04d7, 0x04df, 0x04e6, 0x04ec, 0x04f3, 0x04fb, 0x0502,
+ 0x0513, 0x0519, 0x0527, 0x0530, 0x0539, 0x0541, 0x0548, 0x054e,
+ 0x0553, 0x0557, 0x0565, 0x056a, 0x0570, 0x0575, 0x0586, 0x0597,
+ 0x059f, 0x05a8, 0x05af, 0x05c5, 0x05ce, 0x05d8, 0x05f2, 0x05fb,
+ // Entry C0 - FF
+ 0x05ff, 0x0608, 0x060e, 0x060e, 0x0616, 0x061d, 0x061d, 0x0629,
+ 0x062f, 0x0636, 0x0644, 0x064b, 0x0652, 0x0658, 0x0660, 0x066b,
+ 0x0673, 0x0673, 0x067b, 0x0685, 0x068f, 0x0696, 0x069d, 0x06a5,
+ 0x06a5, 0x06ba, 0x06c8, 0x06c8, 0x06ce, 0x06d7, 0x06d7, 0x06ee,
+ 0x06f3, 0x06f3, 0x06f7, 0x0700, 0x070c, 0x0713, 0x071f, 0x072c,
+ 0x0732, 0x0737, 0x073c, 0x0750, 0x0756, 0x075e, 0x0766, 0x076c,
+ 0x0772, 0x0772, 0x0789, 0x0791, 0x079c, 0x07aa, 0x07c3, 0x07cf,
+ 0x07e5, 0x07fa, 0x0802, 0x0809, 0x081a, 0x081f, 0x081f, 0x0824,
+ // Entry 100 - 13F
+ 0x082b, 0x083d, 0x0842, 0x084a,
+ },
+ },
+ { // ki
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniMburundiBeniniBermudaBruneiBoliviaBraziliBahamaBut" +
+ "aniBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhu" +
+ "ri ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniCa" +
+ "inaKolombiaKostarikaKiumbaKepuvedeKuprosiJamhuri ya ChekiNjeremaniJi" +
+ "butiDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritr" +
+ "eaHispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUbaranjaGabo" +
+ "niNgerethaGrenadaJojiaGwiyana ya UfaransaNganaJibraltaGrinlandiGambi" +
+ "aGineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiK" +
+ "orasiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza ka" +
+ "tika Bahari HindiIrakiUajemiAislandiItaliaJamaikaNjorondaniNjabaniKe" +
+ "nyaKirigizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea Kaska" +
+ "ziniKorea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSant" +
+ "alusiaLishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaM" +
+ "orokoMonakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongolia" +
+ "Visiwa vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMo" +
+ "risiModivuMalawiMeksikoMalesiaMsumbijiNamimbiaNyukaledoniaNijeriKisi" +
+ "wa cha NorfokNainjeriaNikaragwaUholanziNorweNepaliNauruNiueNyuziland" +
+ "iOmaniPanamaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSa" +
+ "ntapieri na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda " +
+ "wa Gaza wa PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwa" +
+ "ndaSaudiVisiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaS" +
+ "loveniaSlovakiaSiera LeoniSamarinoSenegaliSomariaSurinamuSao Tome na" +
+ " PrincipeElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailan" +
+ "diTajikistaniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUt" +
+ "urukiTrinidad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaAmerikaUrug" +
+ "waiUzibekistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya " +
+ "Virgin vya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWa" +
+ "lis na FutunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00ea, 0x00f0, 0x00f0, 0x00f7, 0x00fd, 0x0104,
+ 0x0104, 0x010b, 0x0111, 0x0117, 0x0117, 0x011f, 0x0127, 0x012d,
+ 0x0133, 0x0133, 0x0153, 0x016c, 0x0171, 0x0177, 0x017e, 0x018d,
+ 0x0192, 0x019a, 0x019f, 0x01a7, 0x01a7, 0x01b0, 0x01b6, 0x01be,
+ 0x01be, 0x01be, 0x01c5, 0x01d5, 0x01de, 0x01de, 0x01e4, 0x01eb,
+ // Entry 40 - 7F
+ 0x01f3, 0x0206, 0x020d, 0x020d, 0x0213, 0x021a, 0x021f, 0x021f,
+ 0x0226, 0x022e, 0x0236, 0x0236, 0x023b, 0x023f, 0x0252, 0x025c,
+ 0x025c, 0x0264, 0x026a, 0x0272, 0x0279, 0x027e, 0x0291, 0x0291,
+ 0x0296, 0x029e, 0x02a7, 0x02ad, 0x02b1, 0x02ba, 0x02c3, 0x02ca,
+ 0x02ca, 0x02d3, 0x02d7, 0x02e0, 0x02e6, 0x02e6, 0x02e6, 0x02ef,
+ 0x02f6, 0x02fb, 0x0303, 0x0303, 0x030c, 0x0314, 0x031b, 0x031b,
+ 0x0320, 0x0345, 0x034a, 0x0350, 0x0358, 0x035e, 0x035e, 0x0365,
+ 0x036f, 0x0376, 0x037b, 0x0388, 0x0390, 0x0398, 0x039e, 0x03b1,
+ // Entry 80 - BF
+ 0x03c0, 0x03cc, 0x03d3, 0x03e4, 0x03ef, 0x03f4, 0x03fc, 0x0406,
+ 0x0410, 0x0419, 0x0420, 0x0426, 0x042e, 0x0437, 0x043e, 0x0443,
+ 0x0449, 0x044f, 0x0456, 0x0456, 0x0456, 0x045c, 0x046e, 0x0477,
+ 0x047b, 0x0480, 0x0488, 0x0488, 0x04a8, 0x04b1, 0x04ba, 0x04c5,
+ 0x04ca, 0x04d0, 0x04d6, 0x04dc, 0x04e3, 0x04ea, 0x04f2, 0x04fa,
+ 0x0506, 0x050c, 0x051d, 0x0526, 0x052f, 0x0537, 0x053c, 0x0542,
+ 0x0547, 0x054b, 0x0555, 0x055a, 0x0560, 0x0564, 0x0579, 0x057e,
+ 0x0586, 0x058f, 0x0596, 0x05ac, 0x05b5, 0x05be, 0x05f0, 0x05f5,
+ // Entry C0 - FF
+ 0x05fa, 0x0602, 0x0608, 0x0608, 0x0611, 0x0618, 0x0618, 0x061d,
+ 0x0623, 0x0628, 0x063a, 0x0644, 0x064a, 0x0650, 0x0658, 0x0663,
+ 0x066b, 0x066b, 0x0673, 0x067e, 0x0686, 0x068e, 0x0695, 0x069d,
+ 0x069d, 0x06b1, 0x06b9, 0x06b9, 0x06be, 0x06c4, 0x06c4, 0x06dd,
+ 0x06e2, 0x06e2, 0x06e6, 0x06ee, 0x06f9, 0x0700, 0x0713, 0x0722,
+ 0x0729, 0x072e, 0x0735, 0x0747, 0x074d, 0x0754, 0x075c, 0x0763,
+ 0x0769, 0x0769, 0x0770, 0x0777, 0x0783, 0x078b, 0x07a4, 0x07ad,
+ 0x07cc, 0x07ea, 0x07f3, 0x07fa, 0x0809, 0x080e, 0x080e, 0x0814,
+ // Entry 100 - 13F
+ 0x081b, 0x0828, 0x082e, 0x0836,
+ },
+ },
+ { // kk
+ kkRegionStr,
+ kkRegionIdx,
+ },
+ { // kkj
+ "Kamɛrun",
+ []uint16{ // 50 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0008,
+ },
+ },
+ { // kl
+ "Kalaallit Nunaat",
+ []uint16{ // 91 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0010,
+ },
+ },
+ { // kln
+ "Emetab AndorraEmetab kibagenge nebo arabukEmetab AfghanistanEmetab Antig" +
+ "ua ak BarbudaEmetab AnguillaEmetab AlbaniaEmetab ArmeniaEmetab Antil" +
+ "e nebo HolandEmetab AngolaEmetab ArgentinaEmetab American SamoaEmeta" +
+ "b AustriaEmetab AustraliaEmetab ArubaEmetab AzerbaijanEmetab Bosnia " +
+ "ak HerzegovinaEmetab BarbadosEmetab BangladeshEmetab BelgiumEmetab B" +
+ "urkina FasoEmetab BulgariaEmetab BahrainEmetab BurundiEmetab BeninEm" +
+ "etab BermudaEmetab BruneiEmetab BoliviaEmetab BrazilEmetab BahamasEm" +
+ "etab BhutanEmetab BotswanaEmetab BelarusEmetab BelizeEmetab CanadaEm" +
+ "etab Congo - KinshasaEmetab Afrika nebo KwenEmetab Congo - Brazzavil" +
+ "leEmetab SwitzerlandEmetab Côte d’IvoireIkwembeyotab CookEmetab Chil" +
+ "eEmetab CameroonEmetab ChinaEmetab ColombiaEmetab Costa RicaEmetab C" +
+ "ubaIkwembeyotab Cape VerdeEmetab CyprusEmetab Czech RepublicEmetab G" +
+ "erumanEmetab DjiboutiEmetab DenmarkEmetab DominicaEmetab Dominican R" +
+ "epublicEmetab AlgeriaEmetab EcuadorEmetab EstoniaEmetab MisiriEmetab" +
+ " EritreaEmetab SpainEmetab EthiopiaEmetab FinlandEmetab FijiIkwembey" +
+ "otab FalklandEmetab MicronesiaEmetab FranceEmetab GabonEmetab Kibage" +
+ "nge nebo UingerezaEmetab GrenadaEmetab GeorgiaEmetab Guiana nebo Ufa" +
+ "ransaEmetab GhanaEmetab GibraltarEmetab GreenlandEmetab GambiaEmetab" +
+ " GuineaEmetab GuadeloupeEmetab Equatorial GuineaEmetab GreeceEmetab " +
+ "GuatemalaEmetab GuamEmetab Guinea-BissauEmetab GuyanaEmetab Honduras" +
+ "Emetab CroatiaEmetab HaitiEmetab HungaryEmetab IndonesiaEmetab Irela" +
+ "ndEmetab IsraelEmetab IndiaKebebertab araraitab indian Ocean nebo Ui" +
+ "ngeresaEmetab IraqEmetab IranEmetab IcelandEmetab ItalyEmetab Jamaic" +
+ "aEmetab JordanEmetab JapanEmetab KenyaEmetab KyrgyzstanEmetab Cambod" +
+ "iaEmetab KiribatiEmetab ComorosEmetab Saint Kitts ak NevisEmetab Kor" +
+ "ea nebo murot katamEmetab korea nebo murot taiEmetab KuwaitIkwembeyo" +
+ "tab CaymanEmetab KazakhstanEmetab LaosEmetab LebanonEmetab Lucia NeE" +
+ "metab LiechtensteinEmetab Sri LankaEmetab LiberiaEmetab LesothoEmeta" +
+ "b LithuaniaEmetab LuxembourgEmetab LatviaEmetab LibyaEmetab MoroccoE" +
+ "metab MonacoEmetab MoldovaEmetab MadagascarIkwembeiyotab MarshallEme" +
+ "tab MacedoniaEmetab MaliEmetab MyanmarEmetab MongoliaIkwembeiyotab M" +
+ "ariana nebo murot katamEmetab MartiniqueEmetab MauritaniaEmetab Mont" +
+ "serratEmetab MaltaEmetab MauritiusEmetab MaldivesEmetab MalawiEmetab" +
+ " MexicoEmetab MalaysiaEmetab MozambiqueEmetab NamibiaEmetab New Cale" +
+ "doniaEmetab nigerIkwembeiyotab NorforkEmetab NigeriaEmetab Nicaragua" +
+ "Emetab HolandEmetab NorwayEmetab NepalEmetab NauruEmetab NiueEmetab " +
+ "New ZealandEmetab OmanEmetab PanamaEmetab PeruEmetab Polynesia nebo " +
+ "ufaransaEmetab Papua New GuineaEmetab PhilippinesEmetab PakistanEmet" +
+ "ab PolandEmetab Peter Ne titil ak MiquelonEmetab PitcairnEmetab Puer" +
+ "to RicoEmetab PalestineEmetab PortugalEmetab PalauEmetab ParaguayEme" +
+ "tab QatarEmetab RéunionEmetab RomaniaEmetab RussiaEmetab RwandaEmeta" +
+ "b Saudi ArabiaIkwembeiyotab SolomonEmetab SeychellesEmetab SudanEmet" +
+ "ab SwedenEmetab SingaporeEmetab Helena Ne tililEmetab SloveniaEmetab" +
+ " SlovakiaEmetab Sierra LeoneEmetab San MarinoEmetab SenegalEmetab So" +
+ "maliaEmetab SurinameEmetab São Tomé and PríncipeEmetab El SalvadorEm" +
+ "etab SyriaEmetab SwazilandIkwembeiyotab Turks ak CaicosEmetab ChadEm" +
+ "etab TogoEmetab ThailandEmetab TajikistanEmetab TokelauEmetab Timor " +
+ "nebo Murot taiEmetab TurkmenistanEmetab TunisiaEmetab TongaEmetab Tu" +
+ "rkeyEmetab Trinidad ak TobagoEmetab TuvaluEmetab TaiwanEmetab Tanzan" +
+ "iaEmetab UkrainieEmetab UgandaEmetab amerikaEmetab UruguayEmetab Uzi" +
+ "bekistaniEmetab VaticanEmetab Vincent netilil ak GrenadinesEmetab Ve" +
+ "nezuelaIkwembeyotab British VirginIkwemweiyotab AmerikaEmetab Vietna" +
+ "mEmetab VanuatuEmetab Walis ak FutunaEmetab SamoaEmetab YemenEmetab " +
+ "MayotteEmetab Afrika nebo Murot taiEmetab ZambiaEmetab Zimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000e, 0x002a, 0x003c, 0x0055, 0x0064, 0x0072,
+ 0x0080, 0x0099, 0x00a6, 0x00a6, 0x00b6, 0x00cb, 0x00d9, 0x00e9,
+ 0x00f5, 0x00f5, 0x0106, 0x0122, 0x0131, 0x0142, 0x0150, 0x0163,
+ 0x0172, 0x0180, 0x018e, 0x019a, 0x019a, 0x01a8, 0x01b5, 0x01c3,
+ 0x01c3, 0x01d0, 0x01de, 0x01eb, 0x01eb, 0x01fa, 0x0208, 0x0215,
+ 0x0222, 0x0222, 0x0239, 0x0250, 0x026a, 0x027c, 0x0293, 0x02a4,
+ 0x02b0, 0x02bf, 0x02cb, 0x02da, 0x02da, 0x02eb, 0x02f6, 0x030d,
+ 0x030d, 0x030d, 0x031a, 0x032f, 0x033d, 0x033d, 0x034c, 0x035a,
+ // Entry 40 - 7F
+ 0x0369, 0x0382, 0x0390, 0x0390, 0x039e, 0x03ac, 0x03b9, 0x03b9,
+ 0x03c7, 0x03d3, 0x03e2, 0x03e2, 0x03f0, 0x03fb, 0x0410, 0x0421,
+ 0x0421, 0x042e, 0x043a, 0x0459, 0x0467, 0x0475, 0x0490, 0x0490,
+ 0x049c, 0x04ac, 0x04bc, 0x04c9, 0x04d6, 0x04e7, 0x04ff, 0x050c,
+ 0x050c, 0x051c, 0x0527, 0x053b, 0x0548, 0x0548, 0x0548, 0x0557,
+ 0x0565, 0x0571, 0x057f, 0x057f, 0x058f, 0x059d, 0x05aa, 0x05aa,
+ 0x05b6, 0x05e6, 0x05f1, 0x05fc, 0x060a, 0x0616, 0x0616, 0x0624,
+ 0x0631, 0x063d, 0x0649, 0x065a, 0x0669, 0x0678, 0x0686, 0x06a1,
+ // Entry 80 - BF
+ 0x06be, 0x06d9, 0x06e6, 0x06f9, 0x070a, 0x0715, 0x0723, 0x0732,
+ 0x0746, 0x0756, 0x0764, 0x0772, 0x0782, 0x0793, 0x07a0, 0x07ac,
+ 0x07ba, 0x07c7, 0x07d5, 0x07d5, 0x07d5, 0x07e6, 0x07fc, 0x080c,
+ 0x0817, 0x0825, 0x0834, 0x0834, 0x085a, 0x086b, 0x087c, 0x088d,
+ 0x0899, 0x08a9, 0x08b8, 0x08c5, 0x08d2, 0x08e1, 0x08f2, 0x0900,
+ 0x0914, 0x0920, 0x0935, 0x0943, 0x0953, 0x0960, 0x096d, 0x0979,
+ 0x0985, 0x0990, 0x09a2, 0x09ad, 0x09ba, 0x09c5, 0x09e3, 0x09fa,
+ 0x0a0c, 0x0a1b, 0x0a28, 0x0a49, 0x0a58, 0x0a6a, 0x0a7a, 0x0a89,
+ // Entry C0 - FF
+ 0x0a95, 0x0aa4, 0x0ab0, 0x0ab0, 0x0abf, 0x0acd, 0x0acd, 0x0ada,
+ 0x0ae7, 0x0afa, 0x0b0f, 0x0b20, 0x0b2c, 0x0b39, 0x0b49, 0x0b5f,
+ 0x0b6e, 0x0b6e, 0x0b7d, 0x0b90, 0x0ba1, 0x0baf, 0x0bbd, 0x0bcc,
+ 0x0bcc, 0x0beb, 0x0bfd, 0x0bfd, 0x0c09, 0x0c19, 0x0c19, 0x0c36,
+ 0x0c41, 0x0c41, 0x0c4c, 0x0c5b, 0x0c6c, 0x0c7a, 0x0c95, 0x0ca8,
+ 0x0cb6, 0x0cc2, 0x0ccf, 0x0ce8, 0x0cf5, 0x0d02, 0x0d11, 0x0d20,
+ 0x0d2d, 0x0d2d, 0x0d3b, 0x0d49, 0x0d5c, 0x0d6a, 0x0d8e, 0x0d9e,
+ 0x0db9, 0x0dce, 0x0ddc, 0x0dea, 0x0e00, 0x0e0c, 0x0e0c, 0x0e18,
+ // Entry 100 - 13F
+ 0x0e26, 0x0e42, 0x0e4f, 0x0e5e,
+ },
+ },
+ { // km
+ kmRegionStr,
+ kmRegionIdx,
+ },
+ { // kn
+ knRegionStr,
+ knRegionIdx,
+ },
+ { // ko
+ koRegionStr,
+ koRegionIdx,
+ },
+ { // kok
+ "भारत",
+ []uint16{ // 113 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x000c,
+ },
+ },
+ { // ks
+ "اٮ۪نڑورامُتحدہ عرَب اماراتاَفغانَستاناٮ۪نٹِگُوا تہٕ باربوڑاانگوئیلااٮ۪لب" +
+ "انِیااَرمانِیانَیدَرلینٛڑٕس اٮ۪نٹَیلٕسانگولااینٹارٹِکاأرجَنٹینااَمر" +
+ "یٖکَن سَمواآسٹِیاآسٹریلِیااَروٗباایلینٛڑ جٔزیٖرٕآزَرباجانبوسنِیا تہ" +
+ "ٕ ہَرزِگووِناباربیڈاسبَنٛگلادیشبیٛلجِیَمبُرکِنا فیسوبَلجیرِیابحریٖن" +
+ "بورَنڈِبِنِنسینٛٹ بارتَھیلمیبٔرمیوڈابُرنٔےبولِوِیابرطانوی قُطبہِ جَ" +
+ "نوٗبی علاقہٕبرٛازِلبَہامَسبوٗٹانبووَٹ جٔزیٖرٕبوتَسوانابیلاروٗسبیلِج" +
+ "کینَڑاکوکَس کیٖلِنٛگ جٔزیٖرٕکونٛگو کِنشاسامرکٔزی اَفریٖکی جموٗریَتک" +
+ "ونٛگو بٔرٛزاوِلیسُوِزَرلینٛڑاَیوٕری کوسٹکُک جٔزیٖرٕچِلیکیٚمِروٗنچیٖ" +
+ "نکولَمبِیاکوسٹا رِکاکیوٗباکیپ ؤرڑیکرِسمَس جٔزیٖرٕسایفرٛسچیک جَموٗرِ" +
+ "یَتجرمٔنیجِبوٗتیڈینٛمارٕکڈومِنِکاڈومِنِکَن جموٗرِیَتاٮ۪لجیرِیااِکوا" +
+ "ڑورایسٹونِیامِسٔرمشرِقی سَہارااِرٕٹِیاسٕپیناِتھوپِیافِنلینٛڑفِجیفٕل" +
+ "اکلینٛڑ جٔزیٖرٕفرٛانسگیبانیُنایٹِڑ کِنٛگڈَمگرٛنیڑاجارجِیافرٛانسِسی " +
+ "گِاناگیوَنَرسےگاناجِبرالٹَرگریٖنلینٛڑگَمبِیاگِنیگَواڑیلوپاِکوِٹورِی" +
+ "َل گِنیگریٖسجنوٗبی جارجِیا تہٕ جنوٗبی سینٛڑوٕچ جٔزیٖرٕگوتیدالاگُوام" +
+ "گیٖنی بِساوگُیاناہانٛگ کانٛگ ایس اے آر چیٖنہَرٕڑ جٔزیٖرٕ تہٕ مٮ۪کڈو" +
+ "نالڑٕ جٔزیٖرٕہانٛڈوٗرِسکرٛوشِیاہایتیہَنٛگریاِنڑونیشِیااَیَرلینٛڑاِس" +
+ "رایٖلآیِل آف میٛنہِنٛدوستانبرطانوی بحرِ ہِنٛدۍ علاقہٕایٖراقایٖراناَ" +
+ "یِسلینٛڑاِٹلیجٔرسیجَمایکاجاپانکِنٛیاکِرگِستانکَمبوڑِیاکِرٕباتیکَمور" +
+ "َسسینٛٹ کِٹَس تہٕ نیوِسشُمٲلی کورِیاجنوٗبی کورِیاکُویتکیمَن جٔزیٖرٕ" +
+ "کَزاکِستانلاسلٮ۪بنانسینٛٹ لوٗسِیالِکٹیٛسٹیٖنسِریٖلَنٛکالایبیرِیالیس" +
+ "وتھولِتھُوانِیالَکسَمبٔرٕگلیٛٹوِیالِبیاموروکومونیٚکومولڑاوِیاموٹونی" +
+ "ٛگِریوسینٛٹ مارٹِنمیڑاگاسکارمارشَل جٔزیٖرٕمٮ۪سوڑونِیامالیمَیَنما بٔ" +
+ "رمامَنٛگولِیامَکاوو ایس اے آر چیٖنشُمٲلی مارِیانا جٔزیٖرٕمارٹِنِکما" +
+ "رٕٹانِیامانٛٹسیراٹمالٹامورِشَسمالدیٖوملاویمٮ۪کسِکومَلیشِیاموزَمبِکن" +
+ "امِبِیانِو کیلِڑونِیانایجَرنارفاک جٔزیٖرٕنایجیرِیاناکاراگُوانیٖدَرل" +
+ "ینٛڑناروےنیپالنارووٗنیوٗنیوٗزِلینٛڑاومانپَناماپیٖروٗفرٛانسی پولِنیش" +
+ "ِیاپاپُوا نیوٗ گیٖنیفِلِپِینسپاکِستانپولینٛڑسینٛٹ پیٖری تہٕ موکیلِی" +
+ "َنپِٹکیرٕنۍ جٔزیٖرٕپٔرٹو رِکوفَلَستیٖنپُرتِگالپَلاوپَراگُےقَطِرآوُٹ" +
+ "لاینِگ اوشینِیارِیوٗنِیَنرومانِیاسَربِیاروٗسروٗوانٛڈاسوٗدی عربِیہسو" +
+ "لامان جٔزیٖرٕسیشَلِسسوٗڈانسُوِڈَنٛسِنٛگاپوٗرسینٛٹ ہٮ۪لِناسَلووینِیا" +
+ "سَوالبریڑ تہٕ جان ماییڑسَلوواکِیاسیٖرالیوونسین میرِنوسینیگَلسومالِی" +
+ "اسُرِنامساو توم تہٕ پرٛنسِپیاٮ۪ل سَلواڑورشامسُوزِلینٛڑتُرُک تہٕ کیک" +
+ "وس جٔزیٖرٕچاڑفرٛانسِسی جَنوٗبی عَلاقہٕٹوگوتھایلینٛڑتاجکِستانتوکیلاو" +
+ "مَشرِقی تایمورتُرمِنِستانٹونیشِیاٹونٛگاتُرکیٹرٛنِنداد تہٕ ٹوبیگوتوٗ" +
+ "والوٗتایوانتَنجانِیایوٗرِکینیوٗگانٛڑایوٗنایٹِڑ سِٹیٹِس ماینَر آوُٹل" +
+ "ییِنٛگ جٔزیٖرٕیوٗنایٹِڑ سِٹیٹِسیوٗروگےاُزبِکِستانویٹِکَن سِٹیسینٛٹ " +
+ "وینسٮ۪ٹ تہٕ گرٛیناڑاینٕزوینازوٗلابَرطانوی ؤرجِن جٔزیٖرٕیوٗ ایس ؤرجِ" +
+ "ن جٔزیٖرٕویٹِناموانوٗتوٗوالِس تہٕ فیوٗچوٗناسیمووایَمَنمَییٹجَنوٗبی " +
+ "اَفریٖکاجامبِیازِمبابےنامعلوٗم تہٕ نالَگہار عَلاقہٕدُنیااَفریٖکاشُم" +
+ "ٲلی اَمریٖکاجَنوٗنی اَمرٖیٖکااوشَنیامَغریٖبی اَفریٖکامرکٔزی اَمریٖک" +
+ "امَشرِقی اَفریٖکاشُمٲلی اَفریٖکاوسطی اَفریٖکاجنوٗبی اَفریٖکااَمریٖک" +
+ "َسشُمٲلی اَمریٖکا خٕطہٕکَرِببیٖنمَشرِقی ایشیاجنوٗبی ایشیاجنوٗبہِ مَ" +
+ "شرِقی ایشیاجنوٗبی یوٗرَپآسٹریلیا تہٕ نِوزِلینٛڑمٮ۪لَنیٖشِیامَیکرونَ" +
+ "یشِیَن خٕطہٕپالنیشِیاایشیامرکٔزی ایشیامَغرِبی ایشیایوٗرَپمشرِقی یوٗ" +
+ "رَپشُمٲلی یوٗرَپمغرِبی یوٗرَپلاطیٖنی اَمریٖکا تہٕ کیرَبیٖن",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0010, 0x0032, 0x0048, 0x0072, 0x0082, 0x0096,
+ 0x00a8, 0x00d7, 0x00e3, 0x00f7, 0x0109, 0x0126, 0x0132, 0x0144,
+ 0x0152, 0x016f, 0x0181, 0x01ad, 0x01bd, 0x01d1, 0x01e3, 0x01fa,
+ 0x020c, 0x0218, 0x0226, 0x0230, 0x024f, 0x025f, 0x026b, 0x027b,
+ 0x02b2, 0x02c0, 0x02ce, 0x02da, 0x02f3, 0x0305, 0x0315, 0x031f,
+ 0x032b, 0x0355, 0x0370, 0x039e, 0x03bf, 0x03d7, 0x03ee, 0x0403,
+ 0x040b, 0x041d, 0x0425, 0x0437, 0x0437, 0x044a, 0x0456, 0x0465,
+ 0x0465, 0x0482, 0x0490, 0x04ab, 0x04b7, 0x04b7, 0x04c5, 0x04d7,
+ // Entry 40 - 7F
+ 0x04e7, 0x050c, 0x0520, 0x0520, 0x0530, 0x0542, 0x054c, 0x0565,
+ 0x0575, 0x057f, 0x0591, 0x0591, 0x05a1, 0x05a9, 0x05cc, 0x05cc,
+ 0x05cc, 0x05d8, 0x05e2, 0x0603, 0x0611, 0x061f, 0x063c, 0x064e,
+ 0x0656, 0x0668, 0x067c, 0x068a, 0x0692, 0x06a4, 0x06c5, 0x06cf,
+ 0x071e, 0x072e, 0x0738, 0x074d, 0x0759, 0x0788, 0x07ce, 0x07e2,
+ 0x07f2, 0x07fc, 0x080a, 0x080a, 0x0820, 0x0834, 0x0844, 0x085a,
+ 0x086e, 0x089f, 0x08ab, 0x08b7, 0x08cb, 0x08d5, 0x08df, 0x08ed,
+ 0x08ed, 0x08f7, 0x0903, 0x0915, 0x0927, 0x0937, 0x0945, 0x096c,
+ // Entry 80 - BF
+ 0x0985, 0x099e, 0x09a8, 0x09c1, 0x09d5, 0x09db, 0x09e9, 0x0a02,
+ 0x0a18, 0x0a2e, 0x0a40, 0x0a4e, 0x0a64, 0x0a7a, 0x0a8a, 0x0a94,
+ 0x0aa0, 0x0aae, 0x0ac0, 0x0ad8, 0x0aef, 0x0b03, 0x0b1e, 0x0b34,
+ 0x0b3c, 0x0b55, 0x0b69, 0x0b8f, 0x0bbb, 0x0bcb, 0x0bdf, 0x0bf3,
+ 0x0bfd, 0x0c0b, 0x0c19, 0x0c23, 0x0c33, 0x0c43, 0x0c53, 0x0c63,
+ 0x0c7e, 0x0c8a, 0x0ca5, 0x0cb7, 0x0ccb, 0x0ce1, 0x0ceb, 0x0cf5,
+ 0x0d01, 0x0d09, 0x0d1f, 0x0d29, 0x0d35, 0x0d41, 0x0d64, 0x0d84,
+ 0x0d96, 0x0da6, 0x0db4, 0x0de3, 0x0e04, 0x0e17, 0x0e29, 0x0e39,
+ // Entry C0 - FF
+ 0x0e43, 0x0e51, 0x0e5b, 0x0e80, 0x0e94, 0x0ea4, 0x0eb2, 0x0eba,
+ 0x0ecc, 0x0ee3, 0x0f00, 0x0f0e, 0x0f1a, 0x0f28, 0x0f3e, 0x0f57,
+ 0x0f6b, 0x0f96, 0x0faa, 0x0fbe, 0x0fd1, 0x0fdf, 0x0fef, 0x0ffd,
+ 0x0ffd, 0x1022, 0x103b, 0x103b, 0x1041, 0x1055, 0x1055, 0x1080,
+ 0x1086, 0x10b6, 0x10be, 0x10d0, 0x10e2, 0x10f0, 0x110b, 0x1121,
+ 0x1131, 0x113d, 0x1147, 0x116d, 0x117d, 0x1189, 0x119b, 0x11ab,
+ 0x11bd, 0x1211, 0x1232, 0x1240, 0x1256, 0x126d, 0x12a6, 0x12b8,
+ 0x12e2, 0x1309, 0x1317, 0x1327, 0x134b, 0x1357, 0x1357, 0x1361,
+ // Entry 100 - 13F
+ 0x136b, 0x138a, 0x1398, 0x13a6, 0x13dd, 0x13e7, 0x13f7, 0x1414,
+ 0x1435, 0x1443, 0x1464, 0x1481, 0x14a0, 0x14bd, 0x14d6, 0x14f3,
+ 0x1505, 0x152d, 0x153f, 0x1558, 0x156f, 0x1597, 0x15b0, 0x15dc,
+ 0x15f4, 0x161b, 0x162d, 0x1637, 0x164e, 0x1667, 0x1673, 0x168c,
+ 0x16a5, 0x16be, 0x16f5,
+ },
+ },
+ { // ksb
+ "AndolaFalme za KialabuAfuganistaniAntigua na BalbudaAnguillaAlbaniaAlmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MalekaniAustliaAustlaliaA" +
+ "lubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiBukinafasoBulgal" +
+ "iaBahaleniBulundiBeniniBelmudaBluneiBoliviaBlaziliBahamaButaniBotswa" +
+ "naBelalusiBelizeKanadaJamhuli ya Kidemoklasia ya KongoJamhuli ya Afr" +
+ "ika ya GatiKongoUswisiKodivaaVisiwa vya CookChileKameluniChinaKolomb" +
+ "iaKostalikaKubaKepuvedeKuplosiJamhuli ya ChekiUjeumaniJibutiDenmakiD" +
+ "ominikaJamhuli ya DominikaAljeliaEkwadoEstoniaMisliElitleaHispaniaUh" +
+ "abeshiUfiniFijiVisiwa vya FalklandMiklonesiaUfalansaGaboniUingeezaGl" +
+ "enadaJojiaGwiyana ya UfalansaGhanaJiblaltaGlinlandiGambiaGineGwadelu" +
+ "peGinekwetaUgiikiGwatemalaGwamGinebisauGuyanaHonduasiKolasiaHaitiHun" +
+ "galiaIndonesiaAyalandiIslaeliIndiaEneo ja Uingeeza mwe Bahali HindiI" +
+ "lakiUajemiAislandiItaliaJamaikaYoldaniJapaniKenyaKiigizistaniKambodi" +
+ "aKiibatiKomoloSantakitzi na NevisKolea KaskaziniKolea KusiniKuwaitiV" +
+ "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSililank" +
+ "aLibeliaLesotoLitwaniaLasembagiLativiaLibyaMolokoMonakoMoldovaBukini" +
+ "Visiwa vya MashalMasedoniaMaliMyamaMongoliaVisiwa vya Maliana vya Ka" +
+ "skaziniMaltinikiMaulitaniaMontselatiMaltaMolisiModivuMalawiMeksikoMa" +
+ "lesiaMsumbijiNamibiaNyukaledoniaNaijaKisiwa cha NolfokNaijeliaNikala" +
+ "gwaUholanziNolweiNepaliNauluNiueNyuzilandiOmaniPanamaPeluPolinesia y" +
+ "a UfalansaPapuaFilipinoPakistaniPolandiSantapieli na MikeloniPitkail" +
+ "niPwetolikoUkingo wa Maghalibi na Ukanda wa Gaza wa PalestinaUlenoPa" +
+ "lauPalagwaiKataliLiyunioniLomaniaUlusiLwandaSaudiVisiwa vya SolomonS" +
+ "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiela LeoniS" +
+ "amalinoSenegaliSomaliaSulinamuSao Tome na PlincipeElsavadoSiliaUswaz" +
+ "iVisiwa vya Tulki na KaikoChadiTogoTailandiTajikistaniTokelauTimoli " +
+ "ya MashalikiTulukimenistaniTunisiaTongaUtulukiTlinidad na TobagoTuva" +
+ "luTaiwaniTanzaniaUklainiUgandaMalekaniUlugwaiUzibekistaniVatikaniSan" +
+ "tavisenti na GlenadiniVenezuelaVisiwa vya Vilgin vya UingeezaVisiwa " +
+ "vya Vilgin vya MalekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMay" +
+ "otteAflika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c0, 0x00ca,
+ 0x00d2, 0x00da, 0x00e1, 0x00e7, 0x00e7, 0x00ee, 0x00f4, 0x00fb,
+ 0x00fb, 0x0102, 0x0108, 0x010e, 0x010e, 0x0116, 0x011e, 0x0124,
+ 0x012a, 0x012a, 0x014a, 0x0163, 0x0168, 0x016e, 0x0175, 0x0184,
+ 0x0189, 0x0191, 0x0196, 0x019e, 0x019e, 0x01a7, 0x01ab, 0x01b3,
+ 0x01b3, 0x01b3, 0x01ba, 0x01ca, 0x01d2, 0x01d2, 0x01d8, 0x01df,
+ // Entry 40 - 7F
+ 0x01e7, 0x01fa, 0x0201, 0x0201, 0x0207, 0x020e, 0x0213, 0x0213,
+ 0x021a, 0x0222, 0x022a, 0x022a, 0x022f, 0x0233, 0x0246, 0x0250,
+ 0x0250, 0x0258, 0x025e, 0x0266, 0x026d, 0x0272, 0x0285, 0x0285,
+ 0x028a, 0x0292, 0x029b, 0x02a1, 0x02a5, 0x02ae, 0x02b7, 0x02bd,
+ 0x02bd, 0x02c6, 0x02ca, 0x02d3, 0x02d9, 0x02d9, 0x02d9, 0x02e1,
+ 0x02e8, 0x02ed, 0x02f5, 0x02f5, 0x02fe, 0x0306, 0x030d, 0x030d,
+ 0x0312, 0x0333, 0x0338, 0x033e, 0x0346, 0x034c, 0x034c, 0x0353,
+ 0x035a, 0x0360, 0x0365, 0x0371, 0x0379, 0x0380, 0x0386, 0x0399,
+ // Entry 80 - BF
+ 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee,
+ 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b,
+ 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0455, 0x045e,
+ 0x0462, 0x0467, 0x046f, 0x046f, 0x048f, 0x0498, 0x04a2, 0x04ac,
+ 0x04b1, 0x04b7, 0x04bd, 0x04c3, 0x04ca, 0x04d1, 0x04d9, 0x04e0,
+ 0x04ec, 0x04f1, 0x0502, 0x050a, 0x0513, 0x051b, 0x0521, 0x0527,
+ 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563,
+ 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da,
+ // Entry C0 - FF
+ 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602,
+ 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648,
+ 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682,
+ 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2,
+ 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707,
+ 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748,
+ 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, 0x0793,
+ 0x07b1, 0x07cf, 0x07d8, 0x07df, 0x07ee, 0x07f3, 0x07f3, 0x07f9,
+ // Entry 100 - 13F
+ 0x0800, 0x080d, 0x0813, 0x081b,
+ },
+ },
+ { // ksf
+ "andɔrǝbǝlɔŋ bǝ kaksa bɛ táatáaŋzǝnafganistáŋantiga ri barbúdaangiyaalban" +
+ "íarmɛníantíyǝ nɛlandéangólaarjǝntínsamɔa a amɛrikaotricɔstralíaruba" +
+ "azabecánbɔsnyɛ ri hɛrsǝgɔvínbaabaadǝbaŋladɛ́cbɛljíkbukína fǝ́ asɔbul" +
+ "garíbarǝ́nburundíbɛnǝ́nbɛɛmúdǝbrunǝ́bɔɔlívíbrɛsílbaamásbutánbotswana" +
+ "bɛlarisbɛlizkanadakɔngó anyɔ́nsantrafríkkɔngóswískɔtiwuárzɛ i kúkcíl" +
+ "ikamɛrúncínkolɔmbíkɔstaríkakubakapvɛrcíprɛcɛ́kdjɛrmandyibutídanmakdɔ" +
+ "minikdɔminik rɛpublíkaljɛríɛkwatɛǝ́ɛstoníɛjíptɛritrɛ́kpanyáɛtyɔpífín" +
+ "lanfíjizǝ maalwínmikronɛ́sipɛrɛsǝ́gabɔŋkǝlɔŋ kǝ kǝtáatáaŋzǝngrɛnadǝj" +
+ "ɔrjíguyán i pɛrɛsǝ́gánajibraltágrínlangambíginɛ́gwadɛlúpginɛ́ ɛkwat" +
+ "ɔrialgrɛ́kgwátǝmalagwámginɛ́ bisɔ́guyánɔnduraskrwasíayitiɔngríindon" +
+ "ɛsíilánisraɛ́lindízǝ ingɛrís ncɔ́m wa indiirákiráŋzǝ i glásitalíjam" +
+ "aíkjɔrdánjapɔ́ŋkɛnyakigistáŋkambodjkiribátikomɔrsɛnkrǝstɔ́f ri nyɛ́v" +
+ "ǝkorɛanɔ́rkorɛasudkuwɛitzǝ i gankazakstáŋlaɔslibáŋsɛntlísílictɛnstɛ" +
+ "́nsrílaŋkalibɛryalǝsótolitwaníluksɛmbúrlɛtonílibímarɔkmonakomɔldaví" +
+ "madagaskazǝ i marcálmásǝdwánmalimyanmármɔŋolízǝ maryánnɔ́rmatiníkmwa" +
+ "ritanímɔnsɛratmaltǝmwarísmaldivǝmalawimɛksíkmalɛsímosambíknamibíkalɛ" +
+ "doní anyɔ́nnijɛ́rzɛ nɔ́fɔlknijɛ́ryaníkarágwakǝlɔŋ kǝ ázǝnɔrvɛjǝnɛpal" +
+ "nwarúniwɛ́zɛlan anyɔ́nomanpanamapɛrúpɔlinɛsí a pɛrɛsǝ́papwazí ginɛ́ " +
+ "anyɔ́nfilipǝ́npakistáŋpolɔ́nsɛnpyɛr ri mikɛlɔŋpitkɛ́npɔtoríkozǝ palɛ" +
+ "stínǝportugálpalwaparagwɛ́katárɛunyɔŋrɔmanírisírwandaarabí saodízǝ s" +
+ "alomɔ́nsɛcɛlsudanswɛdǝsiŋapósɛntɛ́lenslovɛníslovakísyɛraleonsɛnmarǝn" +
+ "sɛnɛgalsomalísurinamsaotomɛ́ ri priŋsibsalvadɔrsiríswazilanzǝ tirk r" +
+ "i kakɔscaádtogotɛlantadjikistaŋtokǝlaotimor anǝ á ɛsttirkmɛnistaŋtun" +
+ "ɛsítɔŋatirkítɛrinitɛ ri tobagotuwalutɛwántanzaníukrainugandaamɛrika" +
+ "urugwɛ́usbɛkistaŋwatikáŋsɛnvǝnsǝŋ ri grɛnadínwɛnǝzwɛlazǝ bɛ gɔn inɛ " +
+ "a ingɛríszǝ bɛ gɔn inɛ á amɛrikawyɛtnámwanwatuwalis ri futunasamɔayɛ" +
+ "mɛnmayɔ́tafrik anǝ a sudzambízimbabwɛ́",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x002d, 0x0039, 0x004b, 0x0051, 0x0058,
+ 0x0060, 0x0072, 0x0079, 0x0079, 0x0083, 0x0094, 0x0099, 0x00a2,
+ 0x00a7, 0x00a7, 0x00b0, 0x00ca, 0x00d3, 0x00df, 0x00e7, 0x00f9,
+ 0x0101, 0x0109, 0x0111, 0x011a, 0x011a, 0x0125, 0x012d, 0x0138,
+ 0x0138, 0x0140, 0x0147, 0x014d, 0x014d, 0x0155, 0x015d, 0x0163,
+ 0x0169, 0x0169, 0x0179, 0x0184, 0x018b, 0x0190, 0x019a, 0x01a4,
+ 0x01a9, 0x01b2, 0x01b6, 0x01bf, 0x01bf, 0x01ca, 0x01ce, 0x01d5,
+ 0x01d5, 0x01d5, 0x01dc, 0x01e2, 0x01ea, 0x01ea, 0x01f2, 0x01f8,
+ // Entry 40 - 7F
+ 0x0200, 0x0213, 0x021b, 0x021b, 0x0227, 0x022f, 0x0236, 0x0236,
+ 0x0240, 0x0247, 0x0250, 0x0250, 0x0257, 0x025c, 0x0268, 0x0274,
+ 0x0274, 0x027f, 0x0286, 0x02a4, 0x02ad, 0x02b4, 0x02c8, 0x02c8,
+ 0x02cd, 0x02d6, 0x02de, 0x02e4, 0x02eb, 0x02f5, 0x0309, 0x0310,
+ 0x0310, 0x031b, 0x0320, 0x032f, 0x0335, 0x0335, 0x0335, 0x033d,
+ 0x0344, 0x0349, 0x0350, 0x0350, 0x035a, 0x035f, 0x0368, 0x0368,
+ 0x036d, 0x038a, 0x038f, 0x0395, 0x03a0, 0x03a6, 0x03a6, 0x03ad,
+ 0x03b5, 0x03be, 0x03c4, 0x03ce, 0x03d5, 0x03de, 0x03e4, 0x0400,
+ // Entry 80 - BF
+ 0x040c, 0x0415, 0x041c, 0x0425, 0x0430, 0x0435, 0x043c, 0x0447,
+ 0x0455, 0x045f, 0x0467, 0x046f, 0x0477, 0x0482, 0x048a, 0x048f,
+ 0x0495, 0x049b, 0x04a4, 0x04a4, 0x04a4, 0x04ad, 0x04ba, 0x04c5,
+ 0x04c9, 0x04d1, 0x04da, 0x04da, 0x04eb, 0x04f3, 0x04fd, 0x0507,
+ 0x050d, 0x0514, 0x051c, 0x0522, 0x052a, 0x0532, 0x053b, 0x0542,
+ 0x0555, 0x055d, 0x056b, 0x0575, 0x0580, 0x0592, 0x059c, 0x05a2,
+ 0x05a8, 0x05af, 0x05be, 0x05c2, 0x05c8, 0x05ce, 0x05e7, 0x0600,
+ 0x060a, 0x0614, 0x061c, 0x0633, 0x063c, 0x0646, 0x0656, 0x065f,
+ // Entry C0 - FF
+ 0x0664, 0x066e, 0x0673, 0x0673, 0x067d, 0x0685, 0x0685, 0x068a,
+ 0x0690, 0x069d, 0x06ab, 0x06b2, 0x06b7, 0x06be, 0x06c6, 0x06d2,
+ 0x06db, 0x06db, 0x06e3, 0x06ed, 0x06f7, 0x0700, 0x0707, 0x070e,
+ 0x070e, 0x0724, 0x072d, 0x072d, 0x0732, 0x073a, 0x073a, 0x074c,
+ 0x0751, 0x0751, 0x0755, 0x075b, 0x0767, 0x076f, 0x0781, 0x078f,
+ 0x0797, 0x079d, 0x07a3, 0x07b7, 0x07bd, 0x07c4, 0x07cc, 0x07d2,
+ 0x07d8, 0x07d8, 0x07e0, 0x07e9, 0x07f5, 0x07fe, 0x0819, 0x0825,
+ 0x0842, 0x085f, 0x0868, 0x086f, 0x087e, 0x0884, 0x0884, 0x088b,
+ // Entry 100 - 13F
+ 0x0893, 0x08a3, 0x08a9, 0x08b4,
+ },
+ },
+ { // ksh
+ "AßensionAndorraVereinschte Arrabesche EmmirateAfjaanistahnAntigwa un Bar" +
+ "budaAnggwillaAlbaanijeArrmeenijede Nederlängsche AntilleAngjoolader " +
+ "SödpolAjjentiinijeAmmerikaanesch SammohaÖösterischAustraalijeArubade" +
+ " Ohland-EnselleAsserbaidschahnBoßnije un Herzegovinade Ensel Barbado" +
+ "sBangladeschBelljeBukkinna-FaaseBulljaarijeBachrainBurundidä Beninde" +
+ " Zint Battälmi-Ensellede BermudasBruneiBolliivijede karribbesche Ned" +
+ "erlängBrasilijede BahamasButtaande Buvee-EnselBozwaanaWießrußlandBel" +
+ "izeKanadade Kokkos-Enselledä Konggo (Kinschasa)de Zäntraalaffrikaane" +
+ "sche Republikdä Konggo (Brassavill)de SchweizÄlfebeijn-Kößde Kuuk-En" +
+ "selleSchiileKammeruhnSchiinaKolumbijede Klipperton-EnselKostarikaKub" +
+ "ade kapvärdesche EnselleCuraçaode Weihnaachs-EnselZüpperede Tschäsch" +
+ "eiDoütschlandde Diego-Garcia-EnselDschibuttiDänemarkDominnikade Domm" +
+ "enekaanesche ReppublikAlljeerijeZe’uta un MeliijaÄkwadorÄßlandÄjüpte" +
+ "Wäß-SaharaÄritrejaSchpaanijeÄttijoopijede Europäjesche UnijonFinnlan" +
+ "dde Fidschi-Endellede Falkland-EnselleMikroneesijede Färrör-EnselleF" +
+ "rankrischJabuhnJruußbrettannijeJrenaadaJeorrjijeFranzüüsesch Jujaana" +
+ "JöönseiJaanaJibralltaaJröhnlandJambijaJinnehaJuadeluppÄquatorial Jin" +
+ "eejaJrieschelandSöd-Jeorjie un de södlijje Botteramms-EnselleJuwatem" +
+ "aalaJuhamJinneha_BißauJujaanaHongkongde Heart Ensel un de McDonald-E" +
+ "nselleHondurasKrowazijeHa’ittiUnjannde Kannaresche EnselleIndoneesij" +
+ "eIrrlandIßraälde Ensel MänIndijeBrettesche Besezunge em indesche Ooz" +
+ "ejahnIrakPersijeIßlandItaalijeJöösehJammaikaJordaanijeJapanKeenijaKi" +
+ "rrjiisijeKambodschaKiribatide KommooreZint Kitts un NevisNood-Koreja" +
+ "Söd-KorejaKuweitde Kaiman-EnselleKassakstahnLa’osLebbannonde Ensel Z" +
+ "int-LutschaLischteschteinSri LankaLibeerijaLesootoLittaueLuxembursch" +
+ "LätlandLibbijeMarokkoMonakkoMoldaavijeet Monteneejrode Zint-Määtes-E" +
+ "nselMaddajaskade Machschall-EnselleMazedoonijeMaaliBirmaMongjoleiMak" +
+ "aude nöödlijje Marijanne-EnselleMachtinikMautitaanijeMongßerratMalta" +
+ "MaurizijusMallediiveMalawiMäxikoMalaisijeMosambikNamiibijeNeuschottl" +
+ "andNijerde Noofok-EnselNikaraaguaNikaraaguwade NederlängNorrweejeNep" +
+ "allNauruNiueNeuseelandOmanPannamaPerruhFranzüüsesch PollineesijePapu" +
+ "wa NeujineejaFillipiinePakistahnPoleZint Pjäär un Mikelongde Pitkärn" +
+ "-EnselPochtorikoPalästinaPochtojallPallauParraguwaiKataaOzejaanije u" +
+ "ßerhallefRehunjohnRomäänijeSärbijeRußlandRuandaSaudi Arraabijede So" +
+ "lomone-Ensellede SeischälleNoodsudahnSchweedeSingjapuurde Ensel Zint" +
+ " Hellenaẞloveenijede Enselle Svalbard un Jan MayenẞlovakeiSjärra Lej" +
+ "oneSan-Marinoder SennejallSomaalijeSürinammSödsudahnZint Tommeh un P" +
+ "rintschipeÄl SlavadoorZint MaartenSürijeẞwaasilandTristan da Cunjade" +
+ " Enselle Turks un Kaikosder TschaddFranzüüsesche Södsee-EnselleToojo" +
+ "TailandTadschikistahnTokelauOß-TimorTurkmenistahnTuneesijeTonggade T" +
+ "örkeiTrinidad un TobääjoTuvaluTaiwanTansanijade Ukra’iineUjandade V" +
+ "ereineschte Schtaate vun Amärrika ier ußerhallef jelääje Enselschede" +
+ " vereineschte Schtaate vun AmmärrikaUrrujwaiUßbeekistahnder Vattikah" +
+ "nZint Vinzänz un de Jrenadines-EnselleVenezuelade brettesche Juffer-" +
+ "Ensellede ammärrikahnesche Juffer-EnselleVijätnammVanuatuWallis un F" +
+ "utunaSammohaKosovoJämmeMajottde Republik SödaffrikaSambijaSimbabwe- " +
+ "Jääjend onbikannt -de ÄädAffrikaNood-AmärrikaSöd-AmärrikaOzejaanijeW" +
+ "äß-AffrikaMeddelammärrikaOß-AffrikaNood-AffrikaMeddel-AffrikaSöd-Af" +
+ "frikaAmmärrikader Norde vun Amärrikade KarribikOß-AasijeSöd-AasijeSö" +
+ "d-Oß-AasijeSöd-Europpade Rejjohn öm AustraalijeMellaneesijede Rejohn" +
+ " vun MikroneesejePolineesijeAasijeMeddelaasijeWäß-AasijeEuroppaOß-Eu" +
+ "roppaNood-EuroppaWäß-EuroppaLateinamärrika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002f, 0x003b, 0x004d, 0x0056, 0x005f,
+ 0x0069, 0x0082, 0x008a, 0x0095, 0x00a1, 0x00b7, 0x00c3, 0x00ce,
+ 0x00d3, 0x00e4, 0x00f3, 0x010a, 0x011b, 0x0126, 0x012c, 0x013a,
+ 0x0145, 0x014d, 0x0154, 0x015d, 0x0176, 0x0181, 0x0187, 0x0191,
+ 0x01ab, 0x01b4, 0x01be, 0x01c5, 0x01d3, 0x01db, 0x01e8, 0x01ee,
+ 0x01f4, 0x0205, 0x021b, 0x023e, 0x0255, 0x025f, 0x026f, 0x027e,
+ 0x0285, 0x028e, 0x0295, 0x029e, 0x02b1, 0x02ba, 0x02be, 0x02d6,
+ 0x02de, 0x02f1, 0x02f9, 0x0307, 0x0313, 0x0328, 0x0332, 0x033b,
+ // Entry 40 - 7F
+ 0x0344, 0x0361, 0x036b, 0x037e, 0x0386, 0x038e, 0x0396, 0x03a2,
+ 0x03ab, 0x03b5, 0x03c1, 0x03d8, 0x03e0, 0x03f2, 0x0405, 0x0411,
+ 0x0424, 0x042e, 0x0434, 0x0445, 0x044d, 0x0456, 0x046c, 0x0475,
+ 0x047a, 0x0484, 0x048e, 0x0495, 0x049c, 0x04a5, 0x04b8, 0x04c4,
+ 0x04f3, 0x04fe, 0x0503, 0x0511, 0x0518, 0x0520, 0x0545, 0x054d,
+ 0x0556, 0x055f, 0x0565, 0x057b, 0x0586, 0x058d, 0x0595, 0x05a2,
+ 0x05a8, 0x05d1, 0x05d5, 0x05dc, 0x05e3, 0x05eb, 0x05f3, 0x05fb,
+ 0x0605, 0x060a, 0x0611, 0x061c, 0x0626, 0x062e, 0x0639, 0x064c,
+ // Entry 80 - BF
+ 0x0657, 0x0662, 0x0668, 0x0679, 0x0684, 0x068b, 0x0694, 0x06a9,
+ 0x06b7, 0x06c0, 0x06c9, 0x06d0, 0x06d7, 0x06e2, 0x06ea, 0x06f1,
+ 0x06f8, 0x06ff, 0x0709, 0x0717, 0x072d, 0x0737, 0x074c, 0x0757,
+ 0x075c, 0x0761, 0x076a, 0x076f, 0x078f, 0x0798, 0x07a4, 0x07af,
+ 0x07b4, 0x07be, 0x07c8, 0x07ce, 0x07d5, 0x07de, 0x07e6, 0x07ef,
+ 0x07fc, 0x0801, 0x0810, 0x081a, 0x0825, 0x0832, 0x083b, 0x0841,
+ 0x0846, 0x084a, 0x0854, 0x0858, 0x085f, 0x0865, 0x0880, 0x0891,
+ 0x089b, 0x08a4, 0x08a8, 0x08c0, 0x08d1, 0x08db, 0x08e5, 0x08ef,
+ // Entry C0 - FF
+ 0x08f5, 0x08ff, 0x0904, 0x091a, 0x0923, 0x092e, 0x0936, 0x093e,
+ 0x0944, 0x0953, 0x0966, 0x0974, 0x097e, 0x0986, 0x0990, 0x09a5,
+ 0x09b1, 0x09d1, 0x09db, 0x09e9, 0x09f3, 0x0a00, 0x0a09, 0x0a12,
+ 0x0a1c, 0x0a36, 0x0a43, 0x0a4f, 0x0a56, 0x0a62, 0x0a72, 0x0a8c,
+ 0x0a97, 0x0ab6, 0x0abb, 0x0ac2, 0x0ad0, 0x0ad7, 0x0ae0, 0x0aed,
+ 0x0af6, 0x0afc, 0x0b06, 0x0b1b, 0x0b21, 0x0b27, 0x0b30, 0x0b3e,
+ 0x0b44, 0x0b8e, 0x0bb5, 0x0bbd, 0x0bca, 0x0bd7, 0x0bfd, 0x0c06,
+ 0x0c22, 0x0c45, 0x0c4f, 0x0c56, 0x0c66, 0x0c6d, 0x0c73, 0x0c79,
+ // Entry 100 - 13F
+ 0x0c7f, 0x0c96, 0x0c9d, 0x0ca5, 0x0cbc, 0x0cc4, 0x0ccb, 0x0cd9,
+ 0x0ce7, 0x0cf1, 0x0cfe, 0x0d0e, 0x0d19, 0x0d25, 0x0d33, 0x0d3f,
+ 0x0d49, 0x0d60, 0x0d6b, 0x0d75, 0x0d80, 0x0d8f, 0x0d9b, 0x0db5,
+ 0x0dc1, 0x0ddb, 0x0de6, 0x0dec, 0x0df8, 0x0e04, 0x0e0b, 0x0e16,
+ 0x0e22, 0x0e2f, 0x0e3e,
+ },
+ },
+ { // kw
+ "Rywvaneth Unys",
+ []uint16{ // 84 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x000e,
+ },
+ },
+ { // ky
+ kyRegionStr,
+ kyRegionIdx,
+ },
+ { // lag
+ "AndóraɄtemi wa KɨaráabuAfuganisitáaniAntigúua na BaribúudaAnguíilaAlubán" +
+ "iaAriméniaAntili ya ɄholáanziAngóolaAjentíinaSamóoa ya Amerɨ́kaÁusit" +
+ "iriaAusiteréeliaArúubaAzabajáaniBósiniaBabadóosiBangaladéeshiɄbeligí" +
+ "ijiBukinafáasoBuligaríaBaharéeniBurúundiBeníiniBerimúudaBurunéeiBolí" +
+ "viaBrasíiliBaháamaButáaniBotiswáanaBelarúusiBelíiseKánadaJamuhúuri y" +
+ "a Kɨdemokurasía ya KóongoJuhúuri ya Afɨrɨka ya katɨ katɨKóongoUswíis" +
+ "iIvori KositiVisíiwa vya KúukuChíileKamerúuniChíinaKolómbiaKósita Rɨ" +
+ "́ɨkaKyúubaKepuvéedeKupuróosiJamuhúuri ya ChéekiɄjerumáaniJibúutiDen" +
+ "imakiDomínɨkaJamuhúuri ya DominɨkaAlijériaÍkwadoEstoníaMísiriEritere" +
+ "aHisipániaɄhabéeshiUfíiniFíijiVisíiwa vya FakulandiMikironésiaɄfaráa" +
+ "nsaGabóoniɄɨngeréesaGirenáadaJójiaGwiyáana yʉ ɄfaráansaGáanaJiburáli" +
+ "taGiriniláandiGámbiaGíineGwadelúupeGíine IkwéetaUgiríkiGwatemáalaGwa" +
+ "niGíine BisáauGuyáanaHonduráasiKoréshiaHaíitiHungáriaIndonésiaAyaláa" +
+ "ndiIsiraéeliÍndiaƗsɨ yʉ Ʉɨngeréesa irivii ra HíindiIráakiɄajéemiAisi" +
+ "láandiItáliaJamáikaJódaniJapáaniKéenyaKirigisitáaniKambódiaKiribáati" +
+ "KomóoroMʉtakatíifu kitisi na NevíisiKoréa yʉ ʉtʉrʉkoKoréa ya SaameKʉ" +
+ "wáitiVisíiwa vya KayimaniKazakasitáaniLaóosiLebanóoniMʉtakatíifu Lus" +
+ "íiaLishentéeniSiriláankaLiibériaLesóotoLisuániaLasembáagiLativiaLíb" +
+ "iaMoróokoMonáakoMolidóovaBukíiniVisíiwa vya MarisháaliMasedóniaMáali" +
+ "MiáamaMongóliaVisiwa vya Mariana vya KaskaziniMaritiníikiMoritániaMo" +
+ "nteráatiMálitaMoríisiModíivuMaláawiMekisikoMaleísiaMusumbíijiNamíbia" +
+ "Kaledónia IfyaNíijaKisíiwa cha NofifóokiNiijériaNikarágʉaɄholáanziNo" +
+ "rweNepáaliNaúuruNiúueNyuzílandiÓmaniPanáamaPéeruPolinésia yʉ Ʉfaráan" +
+ "saPapúuaUfilipíinoPakisitáaniPólandiMʉtakatíifu Peéteri na MɨkaéeliP" +
+ "atikaíriniPwetorɨ́ɨkoMweemberera wa kʉmweeri wa GáazaɄréenoPaláauPar" +
+ "aguáaiKatáariReyunióoniRomaníiaUrúusiRwáandaSaudíia ArabíiaVisíiwa v" +
+ "ya SolomóoniShelishéeliSudáaniUswíidiSingapooMʉtakatíifu HeléenaSulo" +
+ "véniaSulováakiaSeraleóoniSamaríinoSenegáaliSomáliaSurináamuSao Tóome" +
+ " na PirinsipeElisalivadoSíriaɄswáaziVisíiwa vya Turíiki na KaíikoChá" +
+ "adiTóogoTáilandiTajikisitáaniTokeláauTimóori yi ItʉʉmbaUturukimenisi" +
+ "táaniTunísiaTóongaUturúukiTiriníida ya TobáagoTuváaluTaiwáaniTaansan" +
+ "íaɄkɨréeniɄgáandaAmerɨkaUruguáaiUsibekisitáaniVatikáaniMʉtakatíifu " +
+ "Viséenti na GernadíiniVenezuéelaVisíiwa vya Vigíini vya ɄɨngeréesaVi" +
+ "síiwa vya Vigíini vya Amerɨ́kaVietináamuVanuáatuWalíisi na FutúunaSa" +
+ "móoaYémeniMayóoteAfɨrɨka ya SaameSámbiaSimbáabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x001b, 0x002a, 0x0041, 0x004a, 0x0053,
+ 0x005c, 0x0071, 0x0079, 0x0079, 0x0083, 0x0098, 0x00a2, 0x00af,
+ 0x00b6, 0x00b6, 0x00c1, 0x00c9, 0x00d3, 0x00e1, 0x00ed, 0x00f9,
+ 0x0103, 0x010d, 0x0116, 0x011e, 0x011e, 0x0128, 0x0131, 0x0139,
+ 0x0139, 0x0142, 0x014a, 0x0152, 0x0152, 0x015d, 0x0167, 0x016f,
+ 0x0176, 0x0176, 0x019e, 0x01c2, 0x01c9, 0x01d1, 0x01dd, 0x01f0,
+ 0x01f7, 0x0201, 0x0208, 0x0211, 0x0211, 0x0222, 0x0229, 0x0233,
+ 0x0233, 0x0233, 0x023d, 0x0252, 0x025e, 0x025e, 0x0266, 0x026e,
+ // Entry 40 - 7F
+ 0x0278, 0x028f, 0x0298, 0x0298, 0x029f, 0x02a7, 0x02ae, 0x02ae,
+ 0x02b6, 0x02c0, 0x02cb, 0x02cb, 0x02d2, 0x02d8, 0x02ee, 0x02fa,
+ 0x02fa, 0x0305, 0x030d, 0x031a, 0x0324, 0x032a, 0x0343, 0x0343,
+ 0x0349, 0x0354, 0x0361, 0x0368, 0x036e, 0x0379, 0x0388, 0x0390,
+ 0x0390, 0x039b, 0x03a0, 0x03ae, 0x03b6, 0x03b6, 0x03b6, 0x03c1,
+ 0x03ca, 0x03d1, 0x03da, 0x03da, 0x03e4, 0x03ee, 0x03f8, 0x03f8,
+ 0x03fe, 0x0427, 0x042e, 0x0437, 0x0442, 0x0449, 0x0449, 0x0451,
+ 0x0458, 0x0460, 0x0467, 0x0475, 0x047e, 0x0488, 0x0490, 0x04b0,
+ // Entry 80 - BF
+ 0x04c5, 0x04d4, 0x04dd, 0x04f2, 0x0500, 0x0507, 0x0511, 0x0526,
+ 0x0532, 0x053d, 0x0546, 0x054e, 0x0557, 0x0562, 0x0569, 0x056f,
+ 0x0577, 0x057f, 0x0589, 0x0589, 0x0589, 0x0591, 0x05a9, 0x05b3,
+ 0x05b9, 0x05c0, 0x05c9, 0x05c9, 0x05e9, 0x05f5, 0x05ff, 0x060a,
+ 0x0611, 0x0619, 0x0621, 0x0629, 0x0631, 0x063a, 0x0645, 0x064d,
+ 0x065c, 0x0662, 0x0679, 0x0682, 0x068d, 0x0698, 0x069d, 0x06a5,
+ 0x06ac, 0x06b2, 0x06bd, 0x06c3, 0x06cb, 0x06d1, 0x06eb, 0x06f2,
+ 0x06fd, 0x0709, 0x0711, 0x0735, 0x0741, 0x074f, 0x0771, 0x0779,
+ // Entry C0 - FF
+ 0x0780, 0x078a, 0x0792, 0x0792, 0x079d, 0x07a6, 0x07a6, 0x07ad,
+ 0x07b5, 0x07c6, 0x07dd, 0x07e9, 0x07f1, 0x07f9, 0x0801, 0x0817,
+ 0x0821, 0x0821, 0x082c, 0x0837, 0x0841, 0x084b, 0x0853, 0x085d,
+ 0x085d, 0x0874, 0x087f, 0x087f, 0x0885, 0x088e, 0x088e, 0x08ae,
+ 0x08b5, 0x08b5, 0x08bb, 0x08c4, 0x08d2, 0x08db, 0x08f0, 0x0903,
+ 0x090b, 0x0912, 0x091b, 0x0931, 0x0939, 0x0942, 0x094c, 0x0957,
+ 0x0960, 0x0960, 0x0968, 0x0971, 0x0980, 0x098a, 0x09b0, 0x09bb,
+ 0x09e2, 0x0a06, 0x0a11, 0x0a1a, 0x0a2e, 0x0a35, 0x0a35, 0x0a3c,
+ // Entry 100 - 13F
+ 0x0a44, 0x0a56, 0x0a5d, 0x0a67,
+ },
+ },
+ { // lb
+ "AscensionAndorraVereenegt Arabesch EmiraterAfghanistanAntigua a BarbudaA" +
+ "nguillaAlbanienArmenienAngolaAntarktisArgentinienAmerikanesch-SamoaÉ" +
+ "isträichAustralienArubaÅlandinselenAserbaidschanBosnien an Herzegowi" +
+ "naBarbadosBangladeschBelschBurkina FasoBulgarienBahrainBurundiBeninS" +
+ "aint-BarthélemyBermudaBruneiBolivienKaribescht HollandBrasilienBaham" +
+ "asBhutanBouvetinselBotsuanaWäissrusslandBelizeKanadaKokosinselenKong" +
+ "o-KinshasaZentralafrikanesch RepublikKongo-BrazzavilleSchwäizCôte d’" +
+ "IvoireCookinselenChileKamerunChinaKolumbienClipperton-InselCosta Ric" +
+ "aKubaKap VerdeCuraçaoChrëschtdagsinselZypernTschechienDäitschlandDie" +
+ "go GarciaDschibutiDänemarkDominicaDominikanesch RepublikAlgerienCeut" +
+ "a a MelillaEcuadorEstlandEgyptenWestsaharaEritreaSpanienEthiopienEur" +
+ "opäesch UniounFinnlandFidschiFalklandinselenMikronesienFäröerFrankrä" +
+ "ichGabunGroussbritannienGrenadaGeorgienGuayaneGuernseyGhanaGibraltar" +
+ "GrönlandGambiaGuineaGuadeloupeEquatorialguineaGriichelandSüdgeorgien" +
+ " an déi Südlech SandwichinselenGuatemalaGuamGuinea-BissauGuyanaSpezi" +
+ "alverwaltungszon Hong KongHeard- a McDonald-InselenHondurasKroatienH" +
+ "aitiUngarnKanaresch InselenIndonesienIrlandIsraelIsle of ManIndienBr" +
+ "itescht Territorium am Indeschen OzeanIrakIranIslandItalienJerseyJam" +
+ "aikaJordanienJapanKeniaKirgisistanKambodschaKiribatiKomorenSt. Kitts" +
+ " an NevisNordkoreaSüdkoreaKuwaitKaimaninselenKasachstanLaosLibanonSt" +
+ ". LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLëtzebuergLettland" +
+ "LibyenMarokkoMonacoMoldawienMontenegroSt. MartinMadagaskarMarshallin" +
+ "selenMazedonienMaliMyanmarMongoleiSpezialverwaltungszon MacauNërdlec" +
+ "h MarianenMartiniqueMauretanienMontserratMaltaMauritiusMaldivenMalaw" +
+ "iMexikoMalaysiaMosambikNamibiaNeikaledonienNigerNorfolkinselNigeriaN" +
+ "icaraguaHollandNorwegenNepalNauruNiueNeiséilandOmanPanamaPeruFranséi" +
+ "sch-PolynesienPapua-NeiguineaPhilippinnenPakistanPolenSt. Pierre a M" +
+ "iquelonPitcairninselenPuerto RicoPalestinensesch AutonomiegebidderPo" +
+ "rtugalPalauParaguayKatarBaussecht OzeanienRéunionRumänienSerbienRuss" +
+ "landRuandaSaudi-ArabienSalomonenSeychellenSudanSchwedenSingapurSt. H" +
+ "elenaSlowenienSvalbard a Jan MayenSlowakeiSierra LeoneSan MarinoSene" +
+ "galSomaliaSurinameSüdsudanSão Tomé a PríncipeEl SalvadorSint Maarten" +
+ "SyrienSwasilandTristan da CunhaTurks- a CaicosinselenTschadFranséisc" +
+ "h Süd- an AntarktisgebidderTogoThailandTadschikistanTokelauOsttimorT" +
+ "urkmenistanTunesienTongaTierkeiTrinidad an TobagoTuvaluTaiwanTansani" +
+ "aUkrainUgandaAmerikanesch-OzeanienVereenegt Staate vun AmerikaUrugua" +
+ "yUsbekistanVatikanstadSt. Vincent an d’GrenadinnenVenezuelaBritesch " +
+ "JoffereninselenAmerikanesch JoffereninselenVietnamVanuatuWallis a Fu" +
+ "tunaSamoaKosovoJemenMayotteSüdafrikaSambiaSimbabweOnbekannt RegiounW" +
+ "eltAfrikaNordamerikaSüdamerikaOzeanienWestafrikaMëttelamerikaOstafri" +
+ "kaNordafrikaZentralafrikaSüdlecht AfrikaAmerikaNërdlecht AmerikaKari" +
+ "bikOstasienSüdasienSüdostasienSüdeuropaAustralien an NeiséilandMelan" +
+ "esienMikronesescht InselgebittPolynesienAsienZentralasienWestasienEu" +
+ "ropaOsteuropaNordeuropaWesteuropaLatäinamerika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0047, 0x004f, 0x0057,
+ 0x005f, 0x005f, 0x0065, 0x006e, 0x0079, 0x008b, 0x0096, 0x00a0,
+ 0x00a5, 0x00b2, 0x00bf, 0x00d5, 0x00dd, 0x00e8, 0x00ee, 0x00fa,
+ 0x0103, 0x010a, 0x0111, 0x0116, 0x0127, 0x012e, 0x0134, 0x013c,
+ 0x014e, 0x0157, 0x015e, 0x0164, 0x016f, 0x0177, 0x0185, 0x018b,
+ 0x0191, 0x019d, 0x01ab, 0x01c6, 0x01d7, 0x01df, 0x01ef, 0x01fa,
+ 0x01ff, 0x0206, 0x020b, 0x0214, 0x0224, 0x022e, 0x0232, 0x023b,
+ 0x0243, 0x0255, 0x025b, 0x0265, 0x0271, 0x027d, 0x0286, 0x028f,
+ // Entry 40 - 7F
+ 0x0297, 0x02ad, 0x02b5, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e3,
+ 0x02ea, 0x02f1, 0x02fa, 0x030c, 0x0314, 0x031b, 0x032a, 0x0335,
+ 0x033d, 0x0348, 0x034d, 0x035d, 0x0364, 0x036c, 0x0373, 0x037b,
+ 0x0380, 0x0389, 0x0392, 0x0398, 0x039e, 0x03a8, 0x03b8, 0x03c3,
+ 0x03f0, 0x03f9, 0x03fd, 0x040a, 0x0410, 0x042f, 0x0448, 0x0450,
+ 0x0458, 0x045d, 0x0463, 0x0474, 0x047e, 0x0484, 0x048a, 0x0495,
+ 0x049b, 0x04c3, 0x04c7, 0x04cb, 0x04d1, 0x04d8, 0x04de, 0x04e5,
+ 0x04ee, 0x04f3, 0x04f8, 0x0503, 0x050d, 0x0515, 0x051c, 0x052e,
+ // Entry 80 - BF
+ 0x0537, 0x0540, 0x0546, 0x0553, 0x055d, 0x0561, 0x0568, 0x0571,
+ 0x057e, 0x0587, 0x058e, 0x0595, 0x059c, 0x05a7, 0x05af, 0x05b5,
+ 0x05bc, 0x05c2, 0x05cb, 0x05d5, 0x05df, 0x05e9, 0x05f8, 0x0602,
+ 0x0606, 0x060d, 0x0615, 0x0630, 0x0642, 0x064c, 0x0657, 0x0661,
+ 0x0666, 0x066f, 0x0677, 0x067d, 0x0683, 0x068b, 0x0693, 0x069a,
+ 0x06a7, 0x06ac, 0x06b8, 0x06bf, 0x06c8, 0x06cf, 0x06d7, 0x06dc,
+ 0x06e1, 0x06e5, 0x06f0, 0x06f4, 0x06fa, 0x06fe, 0x0714, 0x0723,
+ 0x072f, 0x0737, 0x073c, 0x0751, 0x0760, 0x076b, 0x078c, 0x0794,
+ // Entry C0 - FF
+ 0x0799, 0x07a1, 0x07a6, 0x07b8, 0x07c0, 0x07c9, 0x07d0, 0x07d8,
+ 0x07de, 0x07eb, 0x07f4, 0x07fe, 0x0803, 0x080b, 0x0813, 0x081d,
+ 0x0826, 0x083a, 0x0842, 0x084e, 0x0858, 0x085f, 0x0866, 0x086e,
+ 0x0877, 0x088d, 0x0898, 0x08a4, 0x08aa, 0x08b3, 0x08c3, 0x08d9,
+ 0x08df, 0x0905, 0x0909, 0x0911, 0x091e, 0x0925, 0x092d, 0x0939,
+ 0x0941, 0x0946, 0x094d, 0x095f, 0x0965, 0x096b, 0x0973, 0x0979,
+ 0x097f, 0x0994, 0x09b0, 0x09b7, 0x09c1, 0x09cc, 0x09ea, 0x09f3,
+ 0x0a0b, 0x0a27, 0x0a2e, 0x0a35, 0x0a44, 0x0a49, 0x0a4f, 0x0a54,
+ // Entry 100 - 13F
+ 0x0a5b, 0x0a65, 0x0a6b, 0x0a73, 0x0a84, 0x0a88, 0x0a8e, 0x0a99,
+ 0x0aa4, 0x0aac, 0x0ab6, 0x0ac4, 0x0acd, 0x0ad7, 0x0ae4, 0x0af4,
+ 0x0afb, 0x0b0d, 0x0b14, 0x0b1c, 0x0b25, 0x0b31, 0x0b3b, 0x0b54,
+ 0x0b5e, 0x0b77, 0x0b81, 0x0b86, 0x0b92, 0x0b9b, 0x0ba1, 0x0baa,
+ 0x0bb4, 0x0bbe, 0x0bcc,
+ },
+ },
+ { // lg
+ "AndoraEmireetiAfaganisitaniAntigwa ne BarabudaAngwilaAlibaniyaArameniyaB" +
+ "izinga bya Antile eby’abaHolandiAngolaArigentinaSamowa omumerikaAwus" +
+ "ituriyaAwusitureliyaArubaAzerebayijaaniBoziniya HezegovinaBarabadosi" +
+ "BangaladesiBubirigiBurukina FasoBulugariyaBaareeniBurundiBeniniBerem" +
+ "udaBurunayiBoliviyaBuraziiriBahamasiButaaniBotiswanaBelarusiBelizeKa" +
+ "nadaKongo - ZayireLipubulika eya SenturafirikiKongoSwitizirandiKote " +
+ "DivwaBizinga bya KkukiCileKameruuniCayinaKolombyaKosita RikaCubaBizi" +
+ "nga by’e Kepu VerediSipuriyaLipubulika ya CeekaBudaakiJjibutiDenimaa" +
+ "kaDominikaLipubulika ya DominikaAligeryaEkwadoEsitoniyaMisiriEriture" +
+ "yaSipeyiniEsyopyaFinilandiFijiBizinga by’eFalikalandiMikuronezyaBufa" +
+ "lansaGaboniBungerezaGurenadaGyogyaGuyana enfalansaGanaGiburalitaGure" +
+ "nelandiGambyaGiniGwadalupeGayana ey’oku ekwetaBugereeki/BuyonaaniGwa" +
+ "temalaGwamuGini-BisawuGayanaHundurasiKurowesyaHayitiHangareYindonezy" +
+ "aAyalandiYisirayeriBuyindiBizinga by’eCagoYiraakaYiraaniAyisirandiYi" +
+ "taleJamayikaYorodaniJapaniKenyaKirigizisitaaniKambodyaKiribatiBizing" +
+ "a by’eKomoroSenti Kitisi ne NevisiKoreya ey’omumambukaKoreya ey’omum" +
+ "aserengetaKuwetiBizinga ebya KayimaaniKazakisitaaniLawosiLebanoniSen" +
+ "ti LuciyaLicitensitayiniSirilankaLiberyaLesosoLisuwenyaLukisembaagaL" +
+ "ativyaLibyaMorokoMonakoMolodovaMadagasikaBizinga bya MarisoMasedoniy" +
+ "aMaliMyanimaMongoliyaBizinga bya Mariyana eby’omumambukaMaritiniikiM" +
+ "awulitenyaMonteseraatiMalitaMawulisyasiBizinga by’eMalidiveMalawiMek" +
+ "isikoMalezyaMozambiikiNamibiyaKaledonya mupyaNijeKizinga ky’eNorofok" +
+ "oNayijeryaNikaraguwaHolandiNoweNepaloNawuruNiyuweNiyuziirandiOmaaniP" +
+ "anamaPeruPolinesiya enfalansaPapwa NyuginiBizinga bya FiripinoPakisi" +
+ "taaniPolandiSenti Piyere ne MikeloniPitikeeniPotorikoPalesitayiniPot" +
+ "ugaaliPalawuParagwayiKataaLeyunyoniLomaniyaLasaRwandaSawudarebya - B" +
+ "uwarabuBizanga by’eSolomooniSesereSudaaniSwideniSingapowaSenti Heren" +
+ "aSirovenyaSirovakyaSiyeralewoneSanimarinoSenegaaloSomaliyaSurinaamuS" +
+ "anitome ne PurincipeEl salivadoSiriyaSwazirandiBizinga by’eTaaka ne " +
+ "KayikosiCaadiTogoTayirandiTajikisitaaniTokelawuTimowaTakimenesitaani" +
+ "TunisyaTongaTtakeTurindaadi ne TobagoTuvaluTayiwaniTanzaniyaYukurayi" +
+ "neYugandaAmerikaWurugwayiWuzibekisitaaniVatikaaniSenti Vinsenti ne G" +
+ "urendadiiniVenzweraBizinga ebya Virigini ebitwalibwa BungerezaBizing" +
+ "a bya Virigini eby’AmerikaVyetinaamuVanawuwatuWalisi ne FutunaSamowa" +
+ "YemeniMayotteSawusafirikaZambyaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x000e, 0x001b, 0x002e, 0x0035, 0x003e,
+ 0x0047, 0x006a, 0x0070, 0x0070, 0x007a, 0x008a, 0x0095, 0x00a2,
+ 0x00a7, 0x00a7, 0x00b5, 0x00c8, 0x00d2, 0x00dd, 0x00e5, 0x00f2,
+ 0x00fc, 0x0104, 0x010b, 0x0111, 0x0111, 0x0119, 0x0121, 0x0129,
+ 0x0129, 0x0132, 0x013a, 0x0141, 0x0141, 0x014a, 0x0152, 0x0158,
+ 0x015e, 0x015e, 0x016c, 0x0188, 0x018d, 0x0199, 0x01a3, 0x01b4,
+ 0x01b8, 0x01c1, 0x01c7, 0x01cf, 0x01cf, 0x01da, 0x01de, 0x01f8,
+ 0x01f8, 0x01f8, 0x0200, 0x0213, 0x021a, 0x021a, 0x0221, 0x022a,
+ // Entry 40 - 7F
+ 0x0232, 0x0248, 0x0250, 0x0250, 0x0256, 0x025f, 0x0265, 0x0265,
+ 0x026e, 0x0276, 0x027d, 0x027d, 0x0286, 0x028a, 0x02a3, 0x02ae,
+ 0x02ae, 0x02b7, 0x02bd, 0x02c6, 0x02ce, 0x02d4, 0x02e4, 0x02e4,
+ 0x02e8, 0x02f2, 0x02fd, 0x0303, 0x0307, 0x0310, 0x0326, 0x0339,
+ 0x0339, 0x0342, 0x0347, 0x0352, 0x0358, 0x0358, 0x0358, 0x0361,
+ 0x036a, 0x0370, 0x0377, 0x0377, 0x0381, 0x0389, 0x0393, 0x0393,
+ 0x039a, 0x03ac, 0x03b3, 0x03ba, 0x03c4, 0x03ca, 0x03ca, 0x03d2,
+ 0x03da, 0x03e0, 0x03e5, 0x03f4, 0x03fc, 0x0404, 0x0418, 0x042e,
+ // Entry 80 - BF
+ 0x0444, 0x045e, 0x0464, 0x047a, 0x0487, 0x048d, 0x0495, 0x04a1,
+ 0x04b0, 0x04b9, 0x04c0, 0x04c6, 0x04cf, 0x04db, 0x04e2, 0x04e7,
+ 0x04ed, 0x04f3, 0x04fb, 0x04fb, 0x04fb, 0x0505, 0x0517, 0x0521,
+ 0x0525, 0x052c, 0x0535, 0x0535, 0x055a, 0x0565, 0x0570, 0x057c,
+ 0x0582, 0x058d, 0x05a3, 0x05a9, 0x05b1, 0x05b8, 0x05c2, 0x05ca,
+ 0x05d9, 0x05dd, 0x05f3, 0x05fc, 0x0606, 0x060d, 0x0611, 0x0617,
+ 0x061d, 0x0623, 0x062f, 0x0635, 0x063b, 0x063f, 0x0653, 0x0660,
+ 0x0674, 0x067f, 0x0686, 0x069e, 0x06a7, 0x06af, 0x06bb, 0x06c4,
+ // Entry C0 - FF
+ 0x06ca, 0x06d3, 0x06d8, 0x06d8, 0x06e1, 0x06e9, 0x06e9, 0x06ed,
+ 0x06f3, 0x0709, 0x0720, 0x0726, 0x072d, 0x0734, 0x073d, 0x0749,
+ 0x0752, 0x0752, 0x075b, 0x0767, 0x0771, 0x077a, 0x0782, 0x078b,
+ 0x078b, 0x07a0, 0x07ab, 0x07ab, 0x07b1, 0x07bb, 0x07bb, 0x07da,
+ 0x07df, 0x07df, 0x07e3, 0x07ec, 0x07f9, 0x0801, 0x0807, 0x0816,
+ 0x081d, 0x0822, 0x0827, 0x083b, 0x0841, 0x0849, 0x0852, 0x085c,
+ 0x0863, 0x0863, 0x086a, 0x0873, 0x0882, 0x088b, 0x08a9, 0x08b1,
+ 0x08dc, 0x08fe, 0x0908, 0x0912, 0x0922, 0x0928, 0x0928, 0x092e,
+ // Entry 100 - 13F
+ 0x0935, 0x0941, 0x0947, 0x094f,
+ },
+ },
+ { // lkt
+ "Uŋčíyapi MakȟóčhePȟečhókaŋhaŋska MakȟóčheIyášiča MakȟóčheSpayólaȟče Makȟ" +
+ "óčheKisúŋla MakȟóčheSpayóla MakȟóčheMílahaŋska TȟamákȟočheMakȟásito" +
+ "mniHásapa MakȟáwitaKhéya WítaHazíla MakȟáwitaWašíču Makȟáwita",
+ []uint16{ // 287 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,
+ 0x0017, 0x0017, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037,
+ 0x0037, 0x0037, 0x0037, 0x0037, 0x004d, 0x004d, 0x004d, 0x004d,
+ // Entry 40 - 7F
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
+ 0x004d, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,
+ 0x0066, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
+ // Entry 80 - BF
+ 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
+ 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
+ 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
+ 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b,
+ 0x007b, 0x007b, 0x007b, 0x007b, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ // Entry C0 - FF
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f,
+ 0x008f, 0x008f, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
+ 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab,
+ // Entry 100 - 13F
+ 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b9, 0x00cc, 0x00cc,
+ 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc,
+ 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8,
+ 0x00d8, 0x00d8, 0x00d8, 0x00eb, 0x00eb, 0x00eb, 0x0100,
+ },
+ },
+ { // ln
+ "AndorɛLɛmila alaboAfiganisitáAntiga mpé BarbudaAngiyɛAlibaniAmɛniAntiyɛ " +
+ "ya OlandɛAngólaAntarctiqueArizantinɛSamoa ya AmerikiOtilisiOsitáliAr" +
+ "ubaAzɛlɛbaizáBosini mpé HezegovineBarɛbadɛBengalidɛsiBelezikiBukina " +
+ "FasoBiligariBahrɛnɛBurundiBenɛBermudaBrineyiBoliviBrezílɛBahamasɛBut" +
+ "ániBotswanaByelorisiBelizɛKanadaRepibiki demokratiki ya KongóRepibi" +
+ "ki ya Afríka ya KátiKongoSwisɛKotídivualɛBisanga bya KookɛSíliKamɛru" +
+ "neSinɛKolombiKositarikaKibaBisanga bya KapevɛrɛSípɛlɛRepibiki TsekɛA" +
+ "lemaniDzibutiDanɛmarikeDomínikeRepibiki ya DomínikɛAlizɛriEkwatɛ́lɛE" +
+ "sitoniEzípiteElitelɛEsipanyeEtsíopiFilandɛFidziBisanga bya MaluniMik" +
+ "roneziFalánsɛGabɔAngɛlɛtɛ́lɛGelenadɛZorziGiyanɛ ya FalánsɛGuerneseyG" +
+ "anaZibatalɛGowelandeGambiGinɛGwadɛlupɛGinɛ́kwatɛ́lɛGelekiÎles de Géo" +
+ "rgie du Sud et Sandwich du SudGwatémalaGwamɛGinɛbisauGiyaneIle Heard" +
+ " et Iles McDonaldOndurasɛKrowasiAyitiOngiliIndoneziIrelandɛIsirayelɛ" +
+ "ÍndɛMabelé ya Angɛlɛtɛ́lɛ na mbú ya IndiyaIrakiIrâIsilandɛItaliZama" +
+ "ikiZɔdaniZapɔKenyaKigizisitáKambodzaKiribatiKomorɛSántu krístofe mpé" +
+ " Nevɛ̀sKorɛ ya nɔ́rdiKorɛ ya súdiKowetiBisanga bya KayímaKazakisitáL" +
+ "awosiLibáSántu lisiLishɛteniSirilankaLibériyaLesotoLitwaniLikisambul" +
+ "uLetoniLibíMarokɛMonakoMolidaviMonténégroMadagasikariBisanga bya Mar" +
+ "ishalɛMasedwanɛMalíBirmanieMongolíBisanga bya Marianɛ ya nɔ́rdiMarti" +
+ "nikiMoritaniMɔseraMalitɛMorisɛMadívɛMalawiMeksikeMaleziMozambíkiNami" +
+ "biKaledoni ya sikaNizɛrɛEsanga NorfokɛNizeryaNikaragwaOlandɛNorivezɛ" +
+ "NepálɛNauruNyuéZelandɛ ya sikaOmánɛPanamaPéruPolinezi ya FalánsɛPapw" +
+ "azi Ginɛ ya sikaFilipinɛPakisitáPoloniSántu pététo mpé MikelɔPikairn" +
+ "iPɔtorikoPalɛsinePutúlugɛsiPalauPalagweiKatariLenyoRomaniSerbieRisíR" +
+ "wandaAlabi SawuditɛBisanga SolomɔSɛshɛlɛSudáSwédɛSingapurɛSántu elen" +
+ "iSiloveniSilovakiSiera LeonɛSántu MarinɛSenegalɛSomaliSurinamɛSao To" +
+ "mé mpé PresipɛSavadɔrɛSiríSwazilandiBisanga bya Turki mpé KaikoTsádi" +
+ "Terres australes et antarctiques françaisesTogoTailandɛTazikisitáTok" +
+ "elauTimorɛ ya MoniɛlɛTikɛménisitáTiniziTongaTilikiTinidadɛ mpé Tobag" +
+ "oTuvaluTaiwaninTanzaniIkrɛniUgandaAmerikiIrigweiUzibɛkisitáVatikáSán" +
+ "tu vesá mpé GelenadinɛVenézuelaBisanga bya Vierzi ya Angɛlɛtɛ́lɛBisa" +
+ "nga bya Vierzi ya AmerikiViyetinamɛVanuatuWalisɛ mpé FutunaSamoaYemɛ" +
+ "nɛMayotɛAfríka ya SúdiZambiZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0014, 0x0020, 0x0033, 0x003a, 0x0041,
+ 0x0047, 0x0059, 0x0060, 0x006b, 0x0076, 0x0086, 0x008d, 0x0095,
+ 0x009a, 0x009a, 0x00a7, 0x00bd, 0x00c7, 0x00d3, 0x00db, 0x00e6,
+ 0x00ee, 0x00f7, 0x00fe, 0x0103, 0x0103, 0x010a, 0x0111, 0x0117,
+ 0x0117, 0x0120, 0x0129, 0x0130, 0x0130, 0x0138, 0x0141, 0x0148,
+ 0x014e, 0x014e, 0x016c, 0x0188, 0x018d, 0x0193, 0x01a0, 0x01b2,
+ 0x01b7, 0x01c0, 0x01c5, 0x01cc, 0x01cc, 0x01d6, 0x01da, 0x01f0,
+ 0x01f0, 0x01f0, 0x01f9, 0x0208, 0x020f, 0x020f, 0x0216, 0x0221,
+ // Entry 40 - 7F
+ 0x022a, 0x0240, 0x0248, 0x0248, 0x0254, 0x025b, 0x0263, 0x0263,
+ 0x026b, 0x0273, 0x027b, 0x027b, 0x0283, 0x0288, 0x029a, 0x02a3,
+ 0x02a3, 0x02ac, 0x02b1, 0x02c1, 0x02ca, 0x02cf, 0x02e3, 0x02ec,
+ 0x02f0, 0x02f9, 0x0302, 0x0307, 0x030c, 0x0317, 0x0329, 0x032f,
+ 0x035a, 0x0364, 0x036a, 0x0374, 0x037a, 0x037a, 0x0394, 0x039d,
+ 0x03a4, 0x03a9, 0x03af, 0x03af, 0x03b7, 0x03c0, 0x03ca, 0x03ca,
+ 0x03d0, 0x03fd, 0x0402, 0x0406, 0x040f, 0x0414, 0x0414, 0x041b,
+ 0x0422, 0x0427, 0x042c, 0x0437, 0x043f, 0x0447, 0x044e, 0x046c,
+ // Entry 80 - BF
+ 0x047d, 0x048b, 0x0491, 0x04a4, 0x04af, 0x04b5, 0x04ba, 0x04c5,
+ 0x04cf, 0x04d8, 0x04e1, 0x04e7, 0x04ee, 0x04f9, 0x04ff, 0x0504,
+ 0x050b, 0x0511, 0x0519, 0x0525, 0x0525, 0x0531, 0x0547, 0x0551,
+ 0x0556, 0x055e, 0x0566, 0x0566, 0x0586, 0x058f, 0x0597, 0x059e,
+ 0x05a5, 0x05ac, 0x05b4, 0x05ba, 0x05c1, 0x05c7, 0x05d1, 0x05d7,
+ 0x05e7, 0x05ef, 0x05fe, 0x0605, 0x060e, 0x0615, 0x061e, 0x0626,
+ 0x062b, 0x0630, 0x0640, 0x0647, 0x064d, 0x0652, 0x0667, 0x067c,
+ 0x0685, 0x068e, 0x0694, 0x06b0, 0x06b8, 0x06c1, 0x06ca, 0x06d6,
+ // Entry C0 - FF
+ 0x06db, 0x06e3, 0x06e9, 0x06e9, 0x06ee, 0x06f4, 0x06fa, 0x06ff,
+ 0x0705, 0x0714, 0x0723, 0x072d, 0x0732, 0x0739, 0x0743, 0x074f,
+ 0x0757, 0x0757, 0x075f, 0x076b, 0x0779, 0x0782, 0x0788, 0x0791,
+ 0x0791, 0x07a8, 0x07b2, 0x07b2, 0x07b7, 0x07c1, 0x07c1, 0x07dd,
+ 0x07e3, 0x080f, 0x0813, 0x081c, 0x0827, 0x082e, 0x0842, 0x0851,
+ 0x0857, 0x085c, 0x0862, 0x0877, 0x087d, 0x0885, 0x088c, 0x0893,
+ 0x0899, 0x0899, 0x08a0, 0x08a7, 0x08b4, 0x08bb, 0x08d8, 0x08e2,
+ 0x0908, 0x0925, 0x0930, 0x0937, 0x094a, 0x094f, 0x094f, 0x0957,
+ // Entry 100 - 13F
+ 0x095e, 0x096e, 0x0973, 0x097b,
+ },
+ },
+ { // lo
+ loRegionStr,
+ loRegionIdx,
+ },
+ { // lrc
+ "بئرئزیلچینآلمانفأرانسەبیریتانیا گأپھئنئیتالیاجاپوٙنروٙسیەڤولاتیا یأکاگئر" +
+ "تەراساگە نادیاردونیائفریقائمریکا شومالیئمریکا ھارگەھوم پئڤأند جأھوٙ" +
+ "ن آڤمینجا ئمریکائمریکائمریکا ڤاروکارائیبآسیائوروٙپائمریکا لاتین",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014,
+ 0x0014, 0x0014, 0x0014, 0x0014, 0x001e, 0x001e, 0x001e, 0x001e,
+ // Entry 40 - 7F
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x002c, 0x002c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045,
+ 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0059, 0x0059, 0x0059,
+ 0x0059, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ // Entry 80 - BF
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065,
+ // Entry C0 - FF
+ 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
+ 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071,
+ 0x0071, 0x0071, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
+ 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092,
+ // Entry 100 - 13F
+ 0x0092, 0x0092, 0x0092, 0x0092, 0x00ab, 0x00b5, 0x00c1, 0x00da,
+ 0x00f1, 0x0116, 0x0116, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d,
+ 0x0139, 0x014e, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c,
+ 0x015c, 0x015c, 0x015c, 0x0164, 0x0164, 0x0164, 0x0172, 0x0172,
+ 0x0172, 0x0172, 0x0189,
+ },
+ },
+ { // lt
+ ltRegionStr,
+ ltRegionIdx,
+ },
+ { // lu
+ "AndoreLemila alabuAfuganisitaAntiga ne BarbudaAngiyeAlubaniAmeniAntiye w" +
+ "a OlandeAngolaAlijantineSamoa wa AmerikiOtilisiOsitaliArubaAjelbayid" +
+ "jaMbosini ne HezegovineBarebadeBenguladeshiBelejikiBukinafasoBiligar" +
+ "iBahreneBurundiBeneBermudaBrineyiMboliviMnulezileBahamaseButaniMbots" +
+ "wanaByelorisiBelizeKanadaDitunga wa KonguDitunga dya Afrika wa munka" +
+ "tshiKonguSwiseKotedivualeLutanda lua KookɛShiliKameruneShineKolombiK" +
+ "ositarikaKubaLutanda lua KapeveleShipeleDitunga dya TshekaAlemanuDji" +
+ "butiDanemalakuDuminikuDitunga wa DuminikuAlijeriEkwateleEsitoniMushi" +
+ "diEliteleNsipaniEtshiopiFilandeFujiLutanda lua MaluniMikroneziNfalan" +
+ "seNgabuAngeleteleNgelenadeJorijiGiyane wa NfalanseNganaJibeletaleNgo" +
+ "welandeGambiNgineNgwadelupeGine EkwateleNgelekaNgwatemalaNgwameNgine" +
+ "bisauNgiyaneOnduraseKrowasiAyitiOngiliIndoneziIrelandeIsirayeleIndeL" +
+ "utanda lwa Angeletele ku mbu wa IndiyaIrakiIraIsilandeItaliJamaikiJo" +
+ "daniJapuKenyaKigizisitaKambodzaKiribatiKomoruSantu krístofe ne Neves" +
+ "Kore wa muuluKore wa mwinshiKowetiLutanda lua KayimaKazakusitaLawosi" +
+ "LibaSantu lisiLishuteniSirilankaLiberiyaLesotoLitwaniLikisambuluLeto" +
+ "niLibiMarokeMonakuMolidaviMadagasikariLutanda lua MarishaleMasedwane" +
+ "MaliMyamareMongoliLutanda lua Mariane wa muuluMartinikiMoritaniMuser" +
+ "aMaliteMoriseMadiveMalawiMeksikeMaleziMozambikiNamibiKaledoni wa mum" +
+ "uNijereLutanda lua NorfokNijeryaNikaragwaOlandɛNorivejeNepálɛNauruNy" +
+ "ueZelanda wa mumuOmanePanamaPeruPolinezi wa NfalansePapwazi wa Nginɛ" +
+ " wa mumuNfilipiPakisitaMpoloniSantu pététo ne MikeluPikairniMpotorik" +
+ "uPalesineMputulugeshiPalauPalagweiKatariLenyoRomaniRisiRwandaAlabu N" +
+ "sawudiLutanda lua SolomuSesheleSudaSuwediSingapureSantu eleniSiloven" +
+ "iSilovakiSiera LeoneSantu MarineSenegaleSomaliSurinameSao Tome ne Pr" +
+ "esipɛSavadoreSiriSwazilandiLutanda lua Tuluki ne KaikoTshadiToguTayi" +
+ "landaTazikisitaTokelauTimoru wa dibokuTukemenisitaTiniziTongaTulukiT" +
+ "inidade ne TobagoTuvaluTaiwaniTanzaniUkreniUgandaAmerikiIrigweiUzibe" +
+ "kisitaNvatikaSantu vesa ne NgelenadineVenezuelaLutanda lua Vierzi wa" +
+ " AngeleteleLutanda lua Vierzi wa AmerikiViyetinameVanuatuWalise ne F" +
+ "utunaSamoaYemenuMayoteAfrika ya SúdiZambiZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0012, 0x001d, 0x002e, 0x0034, 0x003b,
+ 0x0040, 0x0050, 0x0056, 0x0056, 0x0060, 0x0070, 0x0077, 0x007e,
+ 0x0083, 0x0083, 0x008e, 0x00a3, 0x00ab, 0x00b7, 0x00bf, 0x00c9,
+ 0x00d1, 0x00d8, 0x00df, 0x00e3, 0x00e3, 0x00ea, 0x00f1, 0x00f8,
+ 0x00f8, 0x0101, 0x0109, 0x010f, 0x010f, 0x0118, 0x0121, 0x0127,
+ 0x012d, 0x012d, 0x013d, 0x015c, 0x0161, 0x0166, 0x0171, 0x0183,
+ 0x0188, 0x0190, 0x0195, 0x019c, 0x019c, 0x01a6, 0x01aa, 0x01be,
+ 0x01be, 0x01be, 0x01c5, 0x01d7, 0x01de, 0x01de, 0x01e5, 0x01ef,
+ // Entry 40 - 7F
+ 0x01f7, 0x020a, 0x0211, 0x0211, 0x0219, 0x0220, 0x0227, 0x0227,
+ 0x022e, 0x0235, 0x023d, 0x023d, 0x0244, 0x0248, 0x025a, 0x0263,
+ 0x0263, 0x026b, 0x0270, 0x027a, 0x0283, 0x0289, 0x029b, 0x029b,
+ 0x02a0, 0x02aa, 0x02b4, 0x02b9, 0x02be, 0x02c8, 0x02d5, 0x02dc,
+ 0x02dc, 0x02e6, 0x02ec, 0x02f6, 0x02fd, 0x02fd, 0x02fd, 0x0305,
+ 0x030c, 0x0311, 0x0317, 0x0317, 0x031f, 0x0327, 0x0330, 0x0330,
+ 0x0334, 0x035b, 0x0360, 0x0363, 0x036b, 0x0370, 0x0370, 0x0377,
+ 0x037d, 0x0381, 0x0386, 0x0390, 0x0398, 0x03a0, 0x03a6, 0x03be,
+ // Entry 80 - BF
+ 0x03cb, 0x03da, 0x03e0, 0x03f2, 0x03fc, 0x0402, 0x0406, 0x0410,
+ 0x0419, 0x0422, 0x042a, 0x0430, 0x0437, 0x0442, 0x0448, 0x044c,
+ 0x0452, 0x0458, 0x0460, 0x0460, 0x0460, 0x046c, 0x0481, 0x048a,
+ 0x048e, 0x0495, 0x049c, 0x049c, 0x04b8, 0x04c1, 0x04c9, 0x04cf,
+ 0x04d5, 0x04db, 0x04e1, 0x04e7, 0x04ee, 0x04f4, 0x04fd, 0x0503,
+ 0x0513, 0x0519, 0x052b, 0x0532, 0x053b, 0x0542, 0x054a, 0x0552,
+ 0x0557, 0x055b, 0x056a, 0x056f, 0x0575, 0x0579, 0x058d, 0x05a6,
+ 0x05ad, 0x05b5, 0x05bc, 0x05d4, 0x05dc, 0x05e5, 0x05ed, 0x05f9,
+ // Entry C0 - FF
+ 0x05fe, 0x0606, 0x060c, 0x060c, 0x0611, 0x0617, 0x0617, 0x061b,
+ 0x0621, 0x062e, 0x0640, 0x0647, 0x064b, 0x0651, 0x065a, 0x0665,
+ 0x066d, 0x066d, 0x0675, 0x0680, 0x068c, 0x0694, 0x069a, 0x06a2,
+ 0x06a2, 0x06b6, 0x06be, 0x06be, 0x06c2, 0x06cc, 0x06cc, 0x06e7,
+ 0x06ed, 0x06ed, 0x06f1, 0x06fa, 0x0704, 0x070b, 0x071b, 0x0727,
+ 0x072d, 0x0732, 0x0738, 0x074a, 0x0750, 0x0757, 0x075e, 0x0764,
+ 0x076a, 0x076a, 0x0771, 0x0778, 0x0783, 0x078a, 0x07a3, 0x07ac,
+ 0x07cc, 0x07e9, 0x07f3, 0x07fa, 0x080a, 0x080f, 0x080f, 0x0815,
+ // Entry 100 - 13F
+ 0x081b, 0x082a, 0x082f, 0x0837,
+ },
+ },
+ { // luo
+ "AndorraUnited Arab EmiratesAfghanistanAntigua gi BarbudaAnguillaAlbaniaA" +
+ "rmeniaNetherlands AntillesAngolaArgentinaAmerican SamoaAustriaAustra" +
+ "liaArubaAzerbaijanBosnia gi HerzegovinaBarbadosBangladeshBelgiumBurk" +
+ "ina FasoBulgariaBahrainBurundiBeninBermudaBruneiBoliviaBrazilBahamas" +
+ "BhutanBotswanaBelarusBelizeCanadaDemocratic Republic of the CongoCen" +
+ "tral African RepublicCongoSwitzerlandCôte dCook IslandsChileCameroon" +
+ "ChinaColombiaCosta RicaCubaCape Verde IslandsCyprusCzech RepublicGer" +
+ "manyDjiboutiDenmarkDominicaDominican RepublicAlgeriaEcuadorEstoniaEg" +
+ "yptEritreaSpainEthiopiaFinlandFijiChuia mar FalklandMicronesiaFrance" +
+ "GabonUnited KingdomGrenadaGeorgiaFrench GuianaGhanaGibraltarGreenlan" +
+ "dGambiaGuineaGuadeloupeEquatorial GuineaGreeceGuatemalaGuamGuinea-Bi" +
+ "ssauGuyanaHondurasCroatiaHaitiHungaryIndonesiaIrelandIsraelIndiaBrit" +
+ "ish Indian Ocean TerritoryIraqIranIcelandItalyJamaicaJordanJapanKeny" +
+ "aKyrgyzstanCambodiaKiribatiComorosSaint Kitts gi NevisKorea MasawaKo" +
+ "rea MilamboKuwaitCayman IslandsKazakhstanLaosLebanonSaint LuciaLiech" +
+ "tensteinSri LankaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMorocco" +
+ "MonacoMoldovaMadagascarChuia mar MarshallMacedoniaMaliMyanmarMongoli" +
+ "aNorthern Mariana IslandsMartiniqueMauritaniaMontserratMaltaMauritiu" +
+ "sMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNigerChui" +
+ "a mar NorfolkNigeriaNicaraguaNetherlandsNorwayNepalNauruNiueNew Zeal" +
+ "andOmanPanamaPeruFrench PolynesiaPapua New GuineaPhilippinesPakistan" +
+ "PolandSaint Pierre gi MiquelonPitcairnPuerto RicoPalestinian West Ba" +
+ "nk gi GazaPortugalPalauParaguayQatarRéunionRomaniaRussiaRwandaSaudi " +
+ "ArabiaSolomon IslandsSeychellesSudanSwedenSingaporeSaint HelenaSlove" +
+ "niaSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSão Tomé gi P" +
+ "ríncipeEl SalvadorSyriaSwazilandTurks gi Caicos IslandsChadTogoThail" +
+ "andTajikistanTokelauEast TimorTurkmenistanTunisiaTongaTurkeyTrinidad" +
+ " gi TobagoTuvaluTaiwanTanzaniaUkraineUgandaUSAUruguayUzbekistanVatic" +
+ "an StateSaint Vincent gi GrenadinesVenezuelaBritish Virgin IslandsU." +
+ "S. Virgin IslandsVietnamVanuatuWallis gi FutunaSamoaYemenMayotteSout" +
+ "h AfricaZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x001b, 0x0026, 0x0038, 0x0040, 0x0047,
+ 0x004e, 0x0062, 0x0068, 0x0068, 0x0071, 0x007f, 0x0086, 0x008f,
+ 0x0094, 0x0094, 0x009e, 0x00b3, 0x00bb, 0x00c5, 0x00cc, 0x00d8,
+ 0x00e0, 0x00e7, 0x00ee, 0x00f3, 0x00f3, 0x00fa, 0x0100, 0x0107,
+ 0x0107, 0x010d, 0x0114, 0x011a, 0x011a, 0x0122, 0x0129, 0x012f,
+ 0x0135, 0x0135, 0x0155, 0x016d, 0x0172, 0x017d, 0x0184, 0x0190,
+ 0x0195, 0x019d, 0x01a2, 0x01aa, 0x01aa, 0x01b4, 0x01b8, 0x01ca,
+ 0x01ca, 0x01ca, 0x01d0, 0x01de, 0x01e5, 0x01e5, 0x01ed, 0x01f4,
+ // Entry 40 - 7F
+ 0x01fc, 0x020e, 0x0215, 0x0215, 0x021c, 0x0223, 0x0228, 0x0228,
+ 0x022f, 0x0234, 0x023c, 0x023c, 0x0243, 0x0247, 0x0259, 0x0263,
+ 0x0263, 0x0269, 0x026e, 0x027c, 0x0283, 0x028a, 0x0297, 0x0297,
+ 0x029c, 0x02a5, 0x02ae, 0x02b4, 0x02ba, 0x02c4, 0x02d5, 0x02db,
+ 0x02db, 0x02e4, 0x02e8, 0x02f5, 0x02fb, 0x02fb, 0x02fb, 0x0303,
+ 0x030a, 0x030f, 0x0316, 0x0316, 0x031f, 0x0326, 0x032c, 0x032c,
+ 0x0331, 0x034f, 0x0353, 0x0357, 0x035e, 0x0363, 0x0363, 0x036a,
+ 0x0370, 0x0375, 0x037a, 0x0384, 0x038c, 0x0394, 0x039b, 0x03af,
+ // Entry 80 - BF
+ 0x03bb, 0x03c8, 0x03ce, 0x03dc, 0x03e6, 0x03ea, 0x03f1, 0x03fc,
+ 0x0409, 0x0412, 0x0419, 0x0420, 0x0429, 0x0433, 0x0439, 0x043e,
+ 0x0445, 0x044b, 0x0452, 0x0452, 0x0452, 0x045c, 0x046e, 0x0477,
+ 0x047b, 0x0482, 0x048a, 0x048a, 0x04a2, 0x04ac, 0x04b6, 0x04c0,
+ 0x04c5, 0x04ce, 0x04d6, 0x04dc, 0x04e2, 0x04ea, 0x04f4, 0x04fb,
+ 0x0508, 0x050d, 0x051e, 0x0525, 0x052e, 0x0539, 0x053f, 0x0544,
+ 0x0549, 0x054d, 0x0558, 0x055c, 0x0562, 0x0566, 0x0576, 0x0586,
+ 0x0591, 0x0599, 0x059f, 0x05b7, 0x05bf, 0x05ca, 0x05e7, 0x05ef,
+ // Entry C0 - FF
+ 0x05f4, 0x05fc, 0x0601, 0x0601, 0x0609, 0x0610, 0x0610, 0x0616,
+ 0x061c, 0x0628, 0x0637, 0x0641, 0x0646, 0x064c, 0x0655, 0x0661,
+ 0x0669, 0x0669, 0x0671, 0x067d, 0x0687, 0x068e, 0x0695, 0x069d,
+ 0x069d, 0x06b4, 0x06bf, 0x06bf, 0x06c4, 0x06cd, 0x06cd, 0x06e4,
+ 0x06e8, 0x06e8, 0x06ec, 0x06f4, 0x06fe, 0x0705, 0x070f, 0x071b,
+ 0x0722, 0x0727, 0x072d, 0x073f, 0x0745, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0763, 0x076a, 0x0774, 0x0781, 0x079c, 0x07a5,
+ 0x07bb, 0x07ce, 0x07d5, 0x07dc, 0x07ec, 0x07f1, 0x07f1, 0x07f6,
+ // Entry 100 - 13F
+ 0x07fd, 0x0809, 0x080f, 0x0817,
+ },
+ },
+ { // luy
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa lya MarekaniAustriaAustralia" +
+ "ArubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinaf" +
+ "asoBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaBut" +
+ "aniBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhu" +
+ "ri ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniCh" +
+ "inaKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibu" +
+ "tiDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritrea" +
+ "HispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboni" +
+ "UingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambia" +
+ "GineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKo" +
+ "rasiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kat" +
+ "ika Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKi" +
+ "rigizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniK" +
+ "orea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusi" +
+ "aLishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMoroko" +
+ "MonakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiw" +
+ "a vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiM" +
+ "odivuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha" +
+ " NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPa" +
+ "namaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri" +
+ " na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza " +
+ "wa PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudi" +
+ "Visiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaS" +
+ "lovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Princip" +
+ "eElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajiki" +
+ "staniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTri" +
+ "nidad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzib" +
+ "ekistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin " +
+ "vya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na " +
+ "FutunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007c, 0x0083, 0x008c,
+ 0x0091, 0x0091, 0x009a, 0x00ae, 0x00b6, 0x00c1, 0x00c9, 0x00d3,
+ 0x00db, 0x00e3, 0x00ea, 0x00f0, 0x00f0, 0x00f7, 0x00fd, 0x0104,
+ 0x0104, 0x010b, 0x0111, 0x0117, 0x0117, 0x011f, 0x0127, 0x012d,
+ 0x0133, 0x0133, 0x0153, 0x016c, 0x0171, 0x0177, 0x017e, 0x018d,
+ 0x0192, 0x019a, 0x019f, 0x01a7, 0x01a7, 0x01b0, 0x01b4, 0x01bc,
+ 0x01bc, 0x01bc, 0x01c3, 0x01d3, 0x01dc, 0x01dc, 0x01e2, 0x01e9,
+ // Entry 40 - 7F
+ 0x01f1, 0x0204, 0x020b, 0x020b, 0x0211, 0x0218, 0x021d, 0x021d,
+ 0x0224, 0x022c, 0x0234, 0x0234, 0x0239, 0x023d, 0x0250, 0x025a,
+ 0x025a, 0x0262, 0x0268, 0x0271, 0x0278, 0x027d, 0x0290, 0x0290,
+ 0x0295, 0x029d, 0x02a6, 0x02ac, 0x02b0, 0x02b9, 0x02c2, 0x02c9,
+ 0x02c9, 0x02d2, 0x02d6, 0x02df, 0x02e5, 0x02e5, 0x02e5, 0x02ee,
+ 0x02f5, 0x02fa, 0x0302, 0x0302, 0x030b, 0x0313, 0x031a, 0x031a,
+ 0x031f, 0x0344, 0x0349, 0x034f, 0x0357, 0x035d, 0x035d, 0x0364,
+ 0x036b, 0x0371, 0x0376, 0x0383, 0x038b, 0x0393, 0x0399, 0x03ac,
+ // Entry 80 - BF
+ 0x03bb, 0x03c7, 0x03ce, 0x03df, 0x03ea, 0x03ef, 0x03f7, 0x0401,
+ 0x040b, 0x0414, 0x041b, 0x0421, 0x0429, 0x0432, 0x0439, 0x043e,
+ 0x0444, 0x044a, 0x0451, 0x0451, 0x0451, 0x0457, 0x0469, 0x0472,
+ 0x0476, 0x047b, 0x0483, 0x0483, 0x04a3, 0x04ac, 0x04b5, 0x04c0,
+ 0x04c5, 0x04cb, 0x04d1, 0x04d7, 0x04de, 0x04e5, 0x04ed, 0x04f4,
+ 0x0500, 0x0506, 0x0517, 0x051e, 0x0527, 0x052f, 0x0534, 0x053a,
+ 0x053f, 0x0543, 0x054d, 0x0552, 0x0558, 0x055c, 0x0571, 0x0576,
+ 0x057e, 0x0587, 0x058e, 0x05a4, 0x05ad, 0x05b6, 0x05e8, 0x05ed,
+ // Entry C0 - FF
+ 0x05f2, 0x05fa, 0x0600, 0x0600, 0x0609, 0x0610, 0x0610, 0x0615,
+ 0x061b, 0x0620, 0x0632, 0x063c, 0x0642, 0x0648, 0x0650, 0x065b,
+ 0x0663, 0x0663, 0x066b, 0x0676, 0x067e, 0x0686, 0x068d, 0x0695,
+ 0x0695, 0x06a9, 0x06b1, 0x06b1, 0x06b6, 0x06bc, 0x06bc, 0x06d5,
+ 0x06da, 0x06da, 0x06de, 0x06e6, 0x06f1, 0x06f8, 0x070b, 0x071a,
+ 0x0721, 0x0726, 0x072d, 0x073f, 0x0745, 0x074c, 0x0754, 0x075b,
+ 0x0761, 0x0761, 0x0769, 0x0770, 0x077c, 0x0784, 0x079d, 0x07a6,
+ 0x07c5, 0x07e3, 0x07ec, 0x07f3, 0x0802, 0x0807, 0x0807, 0x080d,
+ // Entry 100 - 13F
+ 0x0814, 0x0821, 0x0827, 0x082f,
+ },
+ },
+ { // lv
+ lvRegionStr,
+ lvRegionIdx,
+ },
+ { // mas
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTansaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniSambiaSimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // mer
+ "AndoraFalme cia KiarabuAfuganistaniAntigua na BarbudaAnguillaAlubaniaArm" +
+ "eniaAntili cia HolandiAngolaAjentinaSamoa ya AmerikaAustiriaAustrĩli" +
+ "aArubaAzebaijaniBosnia na HezegovinaBabadosiBangiradeshiBeronjiamuBu" +
+ "kinafasoBulgariaBahariniBurundiBeniniBamudaBruneiBoliviaBraziluBaham" +
+ "asiButaniBotswanaBelarusiBelizeKanadaNthĩ ya Kidemokrasĩ ya KongoNth" +
+ "ĩ ya Afrika gatĩgatĩKongoSwizilandiKodivaaAĩrandi cia CookChileKame" +
+ "runiChinaKolombiaKostarikaKiubaKepuvedeCaipurasiNthĩ ya ChekiNjamanĩ" +
+ "JibutiDenimakiDominikaNthĩ ya DominikaAngiriaEkwadoEstoniaMisiriErit" +
+ "reaSpĩniIthiopiaFinilandiFijiAĩrandi cia FalklandiMikronesiaFransiGa" +
+ "boniNgerethaGrenadaJojiaGwiyana ya FransiGhanaNgĩbrataNgirinilandiGa" +
+ "mbiaGineGwadelupeGine ya IquitaNgirikiGwatemalaGwamGinebisauGuyanaHo" +
+ "ndurasiKoroashiaHaitiHangarĩIndonesiaAelandiIsiraeliIndiaNthĩ cia Ng" +
+ "eretha gatagatĩ ka ĩria ria HindiIrakiIraniAisilandiItalĩJamaikaJoro" +
+ "ndaniJapaniKenyaKirigizistaniKambodiaKiribatiKomoroSantakitzi na Nev" +
+ "isKorea NothiKorea SaũthiKuwĩ tiAĩrandi cia KaymanKazakistaniLaosiLe" +
+ "banoniSantalusiaLishenteniSirilankaLiberiaLesothoLithuaniaLuxemboguL" +
+ "ativiaLĩbiaMorokoMonakoMoldovaMadagasikaAĩrandi cia MarshalMacedonia" +
+ "MaliMyanimaMongoliaAĩrandi cia Mariana ya nothiMartinikiMauritaniaMo" +
+ "ntserratiMaltaMaurĩtiasiModivuMalawiMexikoMalĩsiaMozambikiNamibiaKal" +
+ "endoia ĨnjeruNijaAĩrandi cia NorfokNijeriaNikaragwaHolandiNorwiNepal" +
+ "iNauruNiueNiuzilandiOmaniPanamaPeruPolinesia ya FransiPapuaFilipinoP" +
+ "akistaniPolandiSantapieri na MikeloniPitkairniPwetorikoRũtere rwa We" +
+ "sti banki na Gaza cia PalestinaPotogoPalauParagwaiKataRiyunioniRoman" +
+ "iaRashiaRwandaSaudiAirandi Cia SolomonShelisheliSudaniSwideniSingapo" +
+ "oSantahelenaSloveniaSlovakiaSiera LeoniSamarinoSenegoSomaliaSurinamu" +
+ "Sao Tome na PrincipeElsavadoSiriaSwazilandiAĩrandi cia Takĩ na Kaiko" +
+ "ChadiTogoThaĩlandiTajikistaniTokelauTimori ya IstiTukumenistaniTunis" +
+ "iaTongaTakĩTrinidad na TobagoTuvaluTaiwaniTanzaniaUkirĩniUgandaAmeri" +
+ "kaUrugwĩUzibekistaniVatikaniSantavisenti na GrenadiniVenezuelaAĩrand" +
+ "i cia Virgin cia NgerethaAĩrandi cia Virgin cia AmerikaVietinamuVanu" +
+ "atuWalis na FutunaSamoaYemeniMayotteAfrika ya SouthiZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0045,
+ 0x004c, 0x005e, 0x0064, 0x0064, 0x006c, 0x007c, 0x0084, 0x008e,
+ 0x0093, 0x0093, 0x009d, 0x00b1, 0x00b9, 0x00c5, 0x00cf, 0x00d9,
+ 0x00e1, 0x00e9, 0x00f0, 0x00f6, 0x00f6, 0x00fc, 0x0102, 0x0109,
+ 0x0109, 0x0110, 0x0118, 0x011e, 0x011e, 0x0126, 0x012e, 0x0134,
+ 0x013a, 0x013a, 0x0158, 0x0172, 0x0177, 0x0181, 0x0188, 0x0199,
+ 0x019e, 0x01a6, 0x01ab, 0x01b3, 0x01b3, 0x01bc, 0x01c1, 0x01c9,
+ 0x01c9, 0x01c9, 0x01d2, 0x01e0, 0x01e8, 0x01e8, 0x01ee, 0x01f6,
+ // Entry 40 - 7F
+ 0x01fe, 0x020f, 0x0216, 0x0216, 0x021c, 0x0223, 0x0229, 0x0229,
+ 0x0230, 0x0236, 0x023e, 0x023e, 0x0247, 0x024b, 0x0261, 0x026b,
+ 0x026b, 0x0271, 0x0277, 0x027f, 0x0286, 0x028b, 0x029c, 0x029c,
+ 0x02a1, 0x02aa, 0x02b6, 0x02bc, 0x02c0, 0x02c9, 0x02d7, 0x02de,
+ 0x02de, 0x02e7, 0x02eb, 0x02f4, 0x02fa, 0x02fa, 0x02fa, 0x0303,
+ 0x030c, 0x0311, 0x0319, 0x0319, 0x0322, 0x0329, 0x0331, 0x0331,
+ 0x0336, 0x0365, 0x036a, 0x036f, 0x0378, 0x037e, 0x037e, 0x0385,
+ 0x038e, 0x0394, 0x0399, 0x03a6, 0x03ae, 0x03b6, 0x03bc, 0x03cf,
+ // Entry 80 - BF
+ 0x03da, 0x03e7, 0x03ef, 0x0402, 0x040d, 0x0412, 0x041a, 0x0424,
+ 0x042e, 0x0437, 0x043e, 0x0445, 0x044e, 0x0457, 0x045e, 0x0464,
+ 0x046a, 0x0470, 0x0477, 0x0477, 0x0477, 0x0481, 0x0495, 0x049e,
+ 0x04a2, 0x04a9, 0x04b1, 0x04b1, 0x04ce, 0x04d7, 0x04e1, 0x04ec,
+ 0x04f1, 0x04fc, 0x0502, 0x0508, 0x050e, 0x0516, 0x051f, 0x0526,
+ 0x0537, 0x053b, 0x054e, 0x0555, 0x055e, 0x0565, 0x056a, 0x0570,
+ 0x0575, 0x0579, 0x0583, 0x0588, 0x058e, 0x0592, 0x05a5, 0x05aa,
+ 0x05b2, 0x05bb, 0x05c2, 0x05d8, 0x05e1, 0x05ea, 0x0617, 0x061d,
+ // Entry C0 - FF
+ 0x0622, 0x062a, 0x062e, 0x062e, 0x0637, 0x063e, 0x063e, 0x0644,
+ 0x064a, 0x064f, 0x0662, 0x066c, 0x0672, 0x0679, 0x0681, 0x068c,
+ 0x0694, 0x0694, 0x069c, 0x06a7, 0x06af, 0x06b5, 0x06bc, 0x06c4,
+ 0x06c4, 0x06d8, 0x06e0, 0x06e0, 0x06e5, 0x06ef, 0x06ef, 0x070a,
+ 0x070f, 0x070f, 0x0713, 0x071d, 0x0728, 0x072f, 0x073d, 0x074a,
+ 0x0751, 0x0756, 0x075b, 0x076d, 0x0773, 0x077a, 0x0782, 0x078a,
+ 0x0790, 0x0790, 0x0797, 0x079e, 0x07aa, 0x07b2, 0x07cb, 0x07d4,
+ 0x07f4, 0x0813, 0x081c, 0x0823, 0x0832, 0x0837, 0x0837, 0x083d,
+ // Entry 100 - 13F
+ 0x0844, 0x0854, 0x085a, 0x0862,
+ },
+ },
+ { // mfe
+ "AndorEmira arab iniAfganistanAntigua-ek-BarbudaAnguillaAlbaniArmeniAntiy" +
+ " neerlandeAngolaLarzantinnSamoa amerikinLostrisLostraliArubaAzerbaïd" +
+ "janBosni-HerzegovinnBarbadBangladesBelzikBurkina FasoBilgariBahreïnB" +
+ "urundiBeninBermidBruneiBoliviBrezilBahamasBoutanBotswanaBelarisBeliz" +
+ "KanadaRepiblik demokratik KongoRepiblik Lafrik SantralKongoLaswisCôt" +
+ "e d’IvoireZil CookShiliKamerounnLasinnKolonbiCosta RicaCubaKap-VerCy" +
+ "prusRepiblik ChekAlmagnDjiboutiDannmarkDominikRepiblik dominikinAlze" +
+ "riEkwaterEstoniLeziptErythreLespagnLetiopiFinlandFidjiZil malwinnMik" +
+ "roneziLafransGabonUnited KingdomGrenadZeorziGwiyann franseGhanaZibra" +
+ "ltarGreenlandGambiGineGuadloupGine ekwatoryalGresGuatemalaGuamGine-B" +
+ "isauGuyanaHondurasKroasiAytiOngriIndoneziIrlandIzraelLennTeritwar Br" +
+ "itanik Losean IndienIrakIranIslandItaliZamaikZordaniZaponKenyaKirghi" +
+ "zistanKambodjKiribatiKomorSaint-Christophe-ek-NiévèsLakore-dinorLako" +
+ "re-disidKoweitZil KaymanKazakstanLaosLibanSainte-LucieLiechtensteinS" +
+ "ri LankaLiberiaLezotoLituaniLuxembourgLetoniLibiMarokMonakoMoldaviMa" +
+ "dagaskarZil MarshallMasedwannMaliMyanmarMongoliZil Maryann dinorMart" +
+ "inikMoritaniMontseraMaltMorisMaldivMalawiMexikMaleziMozambikNamibiNo" +
+ "uvel-KaledoniNizerLil NorfolkNizeriaNicaraguaOlandNorvezNepalNauruNi" +
+ "oweNouvel ZelandOmanPanamaPerouPolinezi fransePapouazi-Nouvel-GineFi" +
+ "lipinnPakistanPolognSaint-Pierre-ek-MiquelonPitcairnPorto RicoTeritw" +
+ "ar PalestinnPortigalPalauParaguayKatarLarenionRoumaniLarisiRwandaLar" +
+ "abi SaouditZil SalomonSeselSoudanLaswedSingapourSainte-HélèneSloveni" +
+ "SlovakiSierra LeoneSaint-MarinSenegalSomaliSurinamSão Tome-ek-Prínsi" +
+ "pSalvadorLasiriSwazilandZil Tirk ek CaïcosTchadTogoThaylandTadjikist" +
+ "anTokelauTimor oriantalTurkmenistanTiniziTongaTirkiTrinite-ek-Tobago" +
+ "TuvaluTaiwanTanzaniIkrennOugandaLamerikUruguayOuzbekistanLata Vatika" +
+ "nSaint-Vincent-ek-GrenadinesVenezuelaZil vierz britanikZil Vierz Lam" +
+ "erikVietnamVanuatuWallis-ek-FutunaSamoaYemennMayotSid-AfrikZambiZimb" +
+ "abwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0005, 0x0013, 0x001d, 0x002f, 0x0037, 0x003d,
+ 0x0043, 0x0052, 0x0058, 0x0058, 0x0062, 0x0070, 0x0077, 0x007f,
+ 0x0084, 0x0084, 0x0090, 0x00a1, 0x00a7, 0x00b0, 0x00b6, 0x00c2,
+ 0x00c9, 0x00d1, 0x00d8, 0x00dd, 0x00dd, 0x00e3, 0x00e9, 0x00ef,
+ 0x00ef, 0x00f5, 0x00fc, 0x0102, 0x0102, 0x010a, 0x0111, 0x0116,
+ 0x011c, 0x011c, 0x0135, 0x014c, 0x0151, 0x0157, 0x0167, 0x016f,
+ 0x0174, 0x017d, 0x0183, 0x018a, 0x018a, 0x0194, 0x0198, 0x019f,
+ 0x019f, 0x019f, 0x01a5, 0x01b2, 0x01b8, 0x01b8, 0x01c0, 0x01c8,
+ // Entry 40 - 7F
+ 0x01cf, 0x01e1, 0x01e7, 0x01e7, 0x01ee, 0x01f4, 0x01fa, 0x01fa,
+ 0x0201, 0x0208, 0x020f, 0x020f, 0x0216, 0x021b, 0x0226, 0x022f,
+ 0x022f, 0x0236, 0x023b, 0x0249, 0x024f, 0x0255, 0x0263, 0x0263,
+ 0x0268, 0x0271, 0x027a, 0x027f, 0x0283, 0x028b, 0x029a, 0x029e,
+ 0x029e, 0x02a7, 0x02ab, 0x02b5, 0x02bb, 0x02bb, 0x02bb, 0x02c3,
+ 0x02c9, 0x02cd, 0x02d2, 0x02d2, 0x02da, 0x02e0, 0x02e6, 0x02e6,
+ 0x02ea, 0x0309, 0x030d, 0x0311, 0x0317, 0x031c, 0x031c, 0x0322,
+ 0x0329, 0x032e, 0x0333, 0x033f, 0x0346, 0x034e, 0x0353, 0x036f,
+ // Entry 80 - BF
+ 0x037b, 0x0387, 0x038d, 0x0397, 0x03a0, 0x03a4, 0x03a9, 0x03b5,
+ 0x03c2, 0x03cb, 0x03d2, 0x03d8, 0x03df, 0x03e9, 0x03ef, 0x03f3,
+ 0x03f8, 0x03fe, 0x0405, 0x0405, 0x0405, 0x040f, 0x041b, 0x0424,
+ 0x0428, 0x042f, 0x0436, 0x0436, 0x0447, 0x044f, 0x0457, 0x045f,
+ 0x0463, 0x0468, 0x046e, 0x0474, 0x0479, 0x047f, 0x0487, 0x048d,
+ 0x049c, 0x04a1, 0x04ac, 0x04b3, 0x04bc, 0x04c1, 0x04c7, 0x04cc,
+ 0x04d1, 0x04d6, 0x04e3, 0x04e7, 0x04ed, 0x04f2, 0x0501, 0x0515,
+ 0x051d, 0x0525, 0x052b, 0x0543, 0x054b, 0x0555, 0x0567, 0x056f,
+ // Entry C0 - FF
+ 0x0574, 0x057c, 0x0581, 0x0581, 0x0589, 0x0590, 0x0590, 0x0596,
+ 0x059c, 0x05aa, 0x05b5, 0x05ba, 0x05c0, 0x05c6, 0x05cf, 0x05de,
+ 0x05e5, 0x05e5, 0x05ec, 0x05f8, 0x0603, 0x060a, 0x0610, 0x0617,
+ 0x0617, 0x062c, 0x0634, 0x0634, 0x063a, 0x0643, 0x0643, 0x0656,
+ 0x065b, 0x065b, 0x065f, 0x0667, 0x0672, 0x0679, 0x0687, 0x0693,
+ 0x0699, 0x069e, 0x06a3, 0x06b4, 0x06ba, 0x06c0, 0x06c7, 0x06cd,
+ 0x06d4, 0x06d4, 0x06db, 0x06e2, 0x06ed, 0x06f9, 0x0714, 0x071d,
+ 0x072f, 0x0740, 0x0747, 0x074e, 0x075e, 0x0763, 0x0763, 0x0769,
+ // Entry 100 - 13F
+ 0x076e, 0x0777, 0x077c, 0x0784,
+ },
+ },
+ { // mg
+ "AndorraEmirà Arabo mitambatraAfghanistanAntiga sy BarbodaAnguillaAlbania" +
+ "ArmeniaVondronosy karaiba holandeyAngolaArzantinaSamoa amerikaninaAo" +
+ "trisyAostraliaArobàAzerbaidjanBosnia sy HerzegovinaBarbadyBangladesy" +
+ "BelzikaBorkina FasoBiolgariaBahrainBorondiBeninBermiodaBruneiBolivia" +
+ "BrezilaBahamasBhotanaBotsoanaBelarosyBelizeKanadaRepoblikan’i KongoR" +
+ "epoblika Ivon’AfrikaKôngôSoisaCôte d’IvoireNosy KookShiliKameronaSin" +
+ "aKôlômbiaKosta RikàKiobàNosy Cap-VertSypraRepoblikan’i TsekyAlemaina" +
+ "DjibotiDanmarkaDominikaRepoblika DominikaninaAlzeriaEkoateraEstoniaE" +
+ "jyptaEritreaEspainaEthiopiaFinlandyFidjiNosy FalkandMikrôneziaFrants" +
+ "aGabonAngleteraGrenadyZeorziaGuyana frantsayGhanaZibraltaraGroenland" +
+ "GambiaGineaGoadelopyGuinea EkoateraGresyGoatemalàGuamGiné-BisaoGuyan" +
+ "aHondiorasyKroasiaHaitiHongriaIndoneziaIrlandyIsraelyIndyFaridranoma" +
+ "sina indiana britanikaIrakIranIslandyItaliaJamaïkaJordaniaJapanaKeny" +
+ "aKiordistanKambôdjaKiribatiKômaoroSaint-Christophe-et-NiévèsKorea Av" +
+ "aratraKorea AtsimoKôeityNosy KaymanKazakhstanLaôsLibanaSainte-LucieL" +
+ "istensteinSri LankaLiberiaLesothoLitoaniaLioksamboroLetoniaLibyaMarô" +
+ "kaMônakôMôldaviaMadagasikaraNosy MarshallMakedoniaMaliMyanmarMôngôli" +
+ "aNosy Mariana AtsinananaMartinikaMaoritaniaMontserratMaltaMaorisyMal" +
+ "divaMalaoìMeksikaMalaiziaMozambikaNamibiaNouvelle-CalédonieNigerNosy" +
+ " NorfolkNizeriaNikaragoàHolandaNôrvezyNepalaNaoròNioéNouvelle-Zéland" +
+ "eOmanPanamaPeroaPolynezia frantsayPapouasie-Nouvelle-GuinéeFilipinaP" +
+ "akistanPôlônaSaint-Pierre-et-MiquelonPitkairnPôrtô RikôPalestinaPôrt" +
+ "iogalaPalaoParagoayKatarLarenionRomaniaRosiaRoandaArabia saoditaNosy" +
+ " SalomonaSeyshelaSodanSoedySingaporoSainte-HélèneSloveniaSlovakiaSie" +
+ "rra LeoneSaint-MarinSenegalSomaliaSorinamSão Tomé-et-PríncipeEl Salv" +
+ "adorSyriaSoazilandyNosy Turks sy CaïquesTsadyTogoThailandyTajikistan" +
+ "TokelaoTimor AtsinananaTorkmenistanToniziaTongàTorkiaTrinidad sy Tob" +
+ "agôTovalòTaioanaTanzaniaOkrainaOgandaEtazoniaOrogoayOzbekistanFirene" +
+ "n’i VatikanaSaint-Vincent-et-les GrenadinesVenezoelàNosy britanika v" +
+ "irijinyNosy Virijiny EtazoniaVietnamVanoatòWallis sy FutunaSamoaYeme" +
+ "nMayôtyAfrika AtsimoZambiaZimbaboe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x001e, 0x0029, 0x003a, 0x0042, 0x0049,
+ 0x0050, 0x006b, 0x0071, 0x0071, 0x007a, 0x008b, 0x0092, 0x009b,
+ 0x00a1, 0x00a1, 0x00ac, 0x00c1, 0x00c8, 0x00d2, 0x00d9, 0x00e5,
+ 0x00ee, 0x00f5, 0x00fc, 0x0101, 0x0101, 0x0109, 0x010f, 0x0116,
+ 0x0116, 0x011d, 0x0124, 0x012b, 0x012b, 0x0133, 0x013b, 0x0141,
+ 0x0147, 0x0147, 0x015b, 0x0172, 0x0179, 0x017e, 0x018e, 0x0197,
+ 0x019c, 0x01a4, 0x01a8, 0x01b2, 0x01b2, 0x01bd, 0x01c3, 0x01d0,
+ 0x01d0, 0x01d0, 0x01d5, 0x01e9, 0x01f1, 0x01f1, 0x01f8, 0x0200,
+ // Entry 40 - 7F
+ 0x0208, 0x021e, 0x0225, 0x0225, 0x022d, 0x0234, 0x023a, 0x023a,
+ 0x0241, 0x0248, 0x0250, 0x0250, 0x0258, 0x025d, 0x0269, 0x0274,
+ 0x0274, 0x027b, 0x0280, 0x0289, 0x0290, 0x0297, 0x02a6, 0x02a6,
+ 0x02ab, 0x02b5, 0x02be, 0x02c4, 0x02c9, 0x02d2, 0x02e1, 0x02e6,
+ 0x02e6, 0x02f0, 0x02f4, 0x02ff, 0x0305, 0x0305, 0x0305, 0x030f,
+ 0x0316, 0x031b, 0x0322, 0x0322, 0x032b, 0x0332, 0x0339, 0x0339,
+ 0x033d, 0x035e, 0x0362, 0x0366, 0x036d, 0x0373, 0x0373, 0x037b,
+ 0x0383, 0x0389, 0x038e, 0x0398, 0x03a1, 0x03a9, 0x03b1, 0x03cd,
+ // Entry 80 - BF
+ 0x03db, 0x03e7, 0x03ee, 0x03f9, 0x0403, 0x0408, 0x040e, 0x041a,
+ 0x0425, 0x042e, 0x0435, 0x043c, 0x0444, 0x044f, 0x0456, 0x045b,
+ 0x0462, 0x046a, 0x0473, 0x0473, 0x0473, 0x047f, 0x048c, 0x0495,
+ 0x0499, 0x04a0, 0x04aa, 0x04aa, 0x04c1, 0x04ca, 0x04d4, 0x04de,
+ 0x04e3, 0x04ea, 0x04f1, 0x04f8, 0x04ff, 0x0507, 0x0510, 0x0517,
+ 0x052a, 0x052f, 0x053b, 0x0542, 0x054c, 0x0553, 0x055b, 0x0561,
+ 0x0567, 0x056c, 0x057d, 0x0581, 0x0587, 0x058c, 0x059e, 0x05b8,
+ 0x05c0, 0x05c8, 0x05d0, 0x05e8, 0x05f0, 0x05fd, 0x0606, 0x0611,
+ // Entry C0 - FF
+ 0x0616, 0x061e, 0x0623, 0x0623, 0x062b, 0x0632, 0x0632, 0x0637,
+ 0x063d, 0x064b, 0x0658, 0x0660, 0x0665, 0x066a, 0x0673, 0x0682,
+ 0x068a, 0x068a, 0x0692, 0x069e, 0x06a9, 0x06b0, 0x06b7, 0x06be,
+ 0x06be, 0x06d5, 0x06e0, 0x06e0, 0x06e5, 0x06ef, 0x06ef, 0x0705,
+ 0x070a, 0x070a, 0x070e, 0x0717, 0x0721, 0x0728, 0x0738, 0x0744,
+ 0x074b, 0x0751, 0x0757, 0x076a, 0x0771, 0x0778, 0x0780, 0x0787,
+ 0x078d, 0x078d, 0x0795, 0x079c, 0x07a6, 0x07ba, 0x07d9, 0x07e3,
+ 0x07fa, 0x0810, 0x0817, 0x081f, 0x082f, 0x0834, 0x0834, 0x0839,
+ // Entry 100 - 13F
+ 0x0840, 0x084d, 0x0853, 0x085b,
+ },
+ },
+ { // mgh
+ "UandoraUfugustaniUalbaniaUsamoa ya MarekaniUazabajaniUrundiUbelinUkanada" +
+ "UkongoUswisiUkodivaUchileUchinaUkolombiaUkubaUkuprosiUchekiUjibutiUd" +
+ "enimakaUdominikaAlujeriaUmisiriUritereaUhispaniaUhabeshiUfiniUfijiUf" +
+ "aransaUgaboniUgrenadaUjojiaUfaransa yo GwayaUganaUjibraltaUgrinlandi" +
+ "UgambiaUgineUgwadelupeUgwatemalaUgwamUginebisauUguyanaUhondurasiUkor" +
+ "asiaUhaitiUhungariaUndonesiaUayalandiUisraeliUhindiniWirakiItaliaUja" +
+ "maikaUyordaniUjapaniUkenyaUkambodiaUkomoroUsantakitzi na NevisUkorea" +
+ " KaskaziniUkorea KusiniUkazakistaniUlebanoniUsantalusiaUshenteniUsir" +
+ "ilankaUliberiaUlesotoUtwaniaUsembajiUlativiaUlibyaUmantegroUbukiniUm" +
+ "asedoniaUmalawiUmozambikiUnijeriUnijeriaUnorweUomaniUpanamaUperuuUfa" +
+ "ransa yo PotinaUpapuaUfilipinoUpakistaniUpolandiUsantapieri na Mikel" +
+ "oniUpitkairniUpwetorikoParagwaiUkatariUriyunioniUromaniaUrwandaUsaud" +
+ "iUshelisheliUsudaniUswidiUsingapooUsantahelenaUsloveniaUslovakiaUsam" +
+ "arinoUsenegaliUsomaliaUsurinamuUsao Tome na PrincipeUsalavadoUsiriaU" +
+ "swaziUchadiUtogoUtailandiUjikistaniUtokelauUtimo MasharikiUturukimen" +
+ "istaniUtunisiaUtongaUtukiUtrinidad na TobagoUtuvaluUtanzaniaUmarekan" +
+ "iUvatikaniUsantavisenti na GrenadiniUvenezuelaUvietinamuUvanuatuUwal" +
+ "is na FutunaUsamoaUyemeniAfrika du SuluUzambiaUzimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, 0x0019,
+ 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x002b, 0x002b, 0x002b,
+ 0x002b, 0x002b, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x003b, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
+ 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,
+ 0x0048, 0x0048, 0x0048, 0x0048, 0x004e, 0x0054, 0x005b, 0x005b,
+ 0x0061, 0x0061, 0x0067, 0x0070, 0x0070, 0x0070, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x007d, 0x0083, 0x0083, 0x0083, 0x008a, 0x0093,
+ // Entry 40 - 7F
+ 0x009c, 0x009c, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ab, 0x00ab,
+ 0x00b3, 0x00bc, 0x00c4, 0x00c4, 0x00c9, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00d6, 0x00dd, 0x00dd, 0x00e5, 0x00eb, 0x00fc, 0x00fc,
+ 0x0101, 0x010a, 0x0114, 0x011b, 0x0120, 0x012a, 0x012a, 0x012a,
+ 0x012a, 0x0134, 0x0139, 0x0143, 0x014a, 0x014a, 0x014a, 0x0154,
+ 0x015c, 0x0162, 0x016b, 0x016b, 0x0174, 0x017d, 0x0185, 0x0185,
+ 0x018d, 0x018d, 0x0193, 0x0193, 0x0193, 0x0199, 0x0199, 0x01a1,
+ 0x01a9, 0x01b0, 0x01b6, 0x01b6, 0x01bf, 0x01bf, 0x01c6, 0x01da,
+ // Entry 80 - BF
+ 0x01ea, 0x01f7, 0x01f7, 0x01f7, 0x0203, 0x0203, 0x020c, 0x0217,
+ 0x0220, 0x022a, 0x0232, 0x0239, 0x0240, 0x0248, 0x0250, 0x0256,
+ 0x0256, 0x0256, 0x0256, 0x025f, 0x025f, 0x0266, 0x0266, 0x0270,
+ 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270,
+ 0x0270, 0x0270, 0x0270, 0x0277, 0x0277, 0x0277, 0x0281, 0x0281,
+ 0x0281, 0x0288, 0x0288, 0x0290, 0x0290, 0x0290, 0x0296, 0x0296,
+ 0x0296, 0x0296, 0x0296, 0x029c, 0x02a3, 0x02a9, 0x02bb, 0x02c1,
+ 0x02ca, 0x02d4, 0x02dc, 0x02f3, 0x02fd, 0x0307, 0x0307, 0x0307,
+ // Entry C0 - FF
+ 0x0307, 0x030f, 0x0316, 0x0316, 0x0320, 0x0328, 0x0328, 0x0328,
+ 0x032f, 0x0335, 0x0335, 0x0340, 0x0347, 0x034d, 0x0356, 0x0362,
+ 0x036b, 0x036b, 0x0374, 0x0374, 0x037d, 0x0386, 0x038e, 0x0397,
+ 0x0397, 0x03ac, 0x03b5, 0x03b5, 0x03bb, 0x03c1, 0x03c1, 0x03c1,
+ 0x03c7, 0x03c7, 0x03cc, 0x03d5, 0x03df, 0x03e7, 0x03f6, 0x0406,
+ 0x040e, 0x0414, 0x0419, 0x042c, 0x0433, 0x0433, 0x043c, 0x043c,
+ 0x043c, 0x043c, 0x0445, 0x0445, 0x0445, 0x044e, 0x0468, 0x0472,
+ 0x0472, 0x0472, 0x047c, 0x0484, 0x0494, 0x049a, 0x049a, 0x04a1,
+ // Entry 100 - 13F
+ 0x04a1, 0x04af, 0x04b6, 0x04bf,
+ },
+ },
+ { // mgo
+ "Kamalunaba aben tisɔ̀",
+ []uint16{ // 261 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ // Entry 40 - 7F
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ // Entry 80 - BF
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ // Entry C0 - FF
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,
+ // Entry 100 - 13F
+ 0x0007, 0x0007, 0x0007, 0x0007, 0x0017,
+ },
+ },
+ { // mk
+ mkRegionStr,
+ mkRegionIdx,
+ },
+ { // ml
+ mlRegionStr,
+ mlRegionIdx,
+ },
+ { // mn
+ mnRegionStr,
+ mnRegionIdx,
+ },
+ { // mr
+ mrRegionStr,
+ mrRegionIdx,
+ },
+ { // ms
+ msRegionStr,
+ msRegionIdx,
+ },
+ { // mt
+ "AndorraEmirati Għarab MaqgħudaAfganistanAntigua and BarbudaAngwillaAlban" +
+ "ijaArmenjaAntilles OlandiżiAngolaAntartikaArġentinaSamoa AmerikanaAw" +
+ "strijaAwstraljaArubaGżejjer AlandAżerbajġanBożnija ĦerżegovinaBarbad" +
+ "osBangladexxBelġjuBurkina FasoBulgarijaBaħrajnBurundiBeninBermudaBru" +
+ "nejBolivjaIl-BrażilBaħamasButanBouvet IslandBotswanaBjelorussjaBeliż" +
+ "eKanadaCocos (Keeling) IslandsDemocratic Republic of the CongoRepubb" +
+ "lika Afrikana ĊentraliKongoSvizzeraKosta ta’ l-AvorjuCook IslandsĊil" +
+ "iKamerunIċ-ĊinaKolombjaKosta RikaKubaKape VerdeChristmas IslandĊipru" +
+ "Repubblika ĊekaIl-ĠermanjaĠibutiDanimarkaDominikaRepublikka Domenika" +
+ "naAlġerijaEkwadorEstonjaEġittuSahara tal-PunentEritreaSpanjaEtijopja" +
+ "Unjoni EwropeaFinlandjaFiġiFalkland IslandsMikronesjaGżejjer FaroeFr" +
+ "anzaGabonL-IngilterraGrenadaĠeorġjaGujana FranċiżaGanaGibraltarGrinl" +
+ "andjaGambjaGineaGwadelupeGinea EkwatorjaliGreċjaSouth Georgia and th" +
+ "e South Sandwich IslandsGwatemalaGwamGinea-BissawGujanaĦong Kong S.A" +
+ ".R. ĊinaHeard Island and McDonald IslandsĦondurasKroazjaĦaitiUngerij" +
+ "aIndoneżjaIrlandaIżraelIsle of ManL-IndjaBritish Indian Ocean Territ" +
+ "oryIraqIranIslandaL-ItaljaĠamajkaĠordanIl-ĠappunKenjaKirgistanKambod" +
+ "jaKiribatiKomorosSaint Kitts and NevisKoreja ta’ FuqKoreja t’IsfelKu" +
+ "wajtGżejjer KajmaniKażakstanLaosLibanuSanta LuċijaLiechtensteinSri L" +
+ "ankaLiberjaLesotoLitwanjaLussemburguLatvjaLibjaMarokkMonakoMoldovaMa" +
+ "dagaskarGżejjer ta’ MarshallMaċedonjaMaliMjanmarMongoljaMacao S.A.R." +
+ ", ChinaGżejjer Marjana ta’ FuqMartinikMawritanjaMontserratMaltaMawri" +
+ "zjuMaldivesMalawiMessikuMalasjaMożambikNamibjaNew CaledoniaNiġerNorf" +
+ "olk IslandNiġerjaNikaragwaOlandaNorveġjaNepalNauruNiueNew ZealandOma" +
+ "nPanamaPeruPolinesja FranċiżaPapwa-Ginea ĠdidaFilippiniPakistanPolon" +
+ "jaSaint Pierre and MiquelonPitcairnPuerto RicoTerritorju Palestinjan" +
+ "PortugallPalauParagwajQatarRéunionRumanijaIr-RussjaRwandaGħarabja Sa" +
+ "wditaSolomon IslandsSeychellesSudanŻvezjaSingaporSaint HelenaSlovenj" +
+ "aSvalbard and Jan MayenSlovakkjaSierra LeoneSan MarinoSenegalSomalja" +
+ "SurinamSao Tome and PrincipeEl SalvadorSirjaSważilandTurks and Caico" +
+ "s IslandsĊadTerritorji Franċiżi ta’ NofsinharTogoTajlandjaTaġikistan" +
+ "TokelawTimor tal-LvantTurkmenistanTuneżTongaTurkijaTrinidad u Tobago" +
+ "TuvaluTajwanTanżanijaUkrainaUgandaUnited States Minor Outlying Islan" +
+ "dsL-Istati UnitiUrugwajUżbekistanVatikanSaint Vincent and the Grenad" +
+ "inesVenezwelaBritish Virgin IslandsU.S. Virgin IslandsVjetnamVanwatu" +
+ "Wallis and FutunaSamoaJemenMajotteAfrika t’IsfelŻambjaŻimbabweReġjun" +
+ " Mhux MagħrufDinjaAffrikaAmerika t’IsfelOċejanjaAffrika tal-PunentAm" +
+ "erika ĊentraliAffrika tal-LvantAffrika ta’ FuqAffrika NofsaniAffrika" +
+ " t’IsfelAmerikaKaribewAsja tal-LvantAsja t’Isfel ĊentraliAsja tax-Xl" +
+ "okkEwropa t’IsfelAwstralja u New ZealandMelanesjaReġjun ta’ Mikroneż" +
+ "jaPolinesjaAsjaAsja ĊentraliAsja tal-PunentEwropaEwropa tal-LvantEwr" +
+ "opa ta’ FuqEwropa tal-PunentAmerika Latina",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0020, 0x002a, 0x003d, 0x0045, 0x004d,
+ 0x0054, 0x0066, 0x006c, 0x0075, 0x007f, 0x008e, 0x0096, 0x009f,
+ 0x00a4, 0x00b2, 0x00be, 0x00d4, 0x00dc, 0x00e6, 0x00ed, 0x00f9,
+ 0x0102, 0x010a, 0x0111, 0x0116, 0x0116, 0x011d, 0x0123, 0x012a,
+ 0x012a, 0x0134, 0x013c, 0x0141, 0x014e, 0x0156, 0x0161, 0x0168,
+ 0x016e, 0x0185, 0x01a5, 0x01c2, 0x01c7, 0x01cf, 0x01e3, 0x01ef,
+ 0x01f4, 0x01fb, 0x0204, 0x020c, 0x020c, 0x0216, 0x021a, 0x0224,
+ 0x0224, 0x0234, 0x023a, 0x024a, 0x0256, 0x0256, 0x025d, 0x0266,
+ // Entry 40 - 7F
+ 0x026e, 0x0283, 0x028c, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02b2,
+ 0x02b9, 0x02bf, 0x02c7, 0x02d5, 0x02de, 0x02e3, 0x02f3, 0x02fd,
+ 0x030b, 0x0311, 0x0316, 0x0322, 0x0329, 0x0332, 0x0343, 0x0343,
+ 0x0347, 0x0350, 0x035a, 0x0360, 0x0365, 0x036e, 0x037f, 0x0386,
+ 0x03b2, 0x03bb, 0x03bf, 0x03cb, 0x03d1, 0x03e8, 0x0409, 0x0412,
+ 0x0419, 0x041f, 0x0427, 0x0427, 0x0431, 0x0438, 0x043f, 0x044a,
+ 0x0451, 0x046f, 0x0473, 0x0477, 0x047e, 0x0486, 0x0486, 0x048e,
+ 0x0495, 0x049f, 0x04a4, 0x04ad, 0x04b5, 0x04bd, 0x04c4, 0x04d9,
+ // Entry 80 - BF
+ 0x04e9, 0x04f9, 0x04ff, 0x050f, 0x0519, 0x051d, 0x0523, 0x0530,
+ 0x053d, 0x0546, 0x054d, 0x0553, 0x055b, 0x0566, 0x056c, 0x0571,
+ 0x0577, 0x057d, 0x0584, 0x0584, 0x0584, 0x058e, 0x05a5, 0x05af,
+ 0x05b3, 0x05ba, 0x05c2, 0x05d5, 0x05ef, 0x05f7, 0x0601, 0x060b,
+ 0x0610, 0x0618, 0x0620, 0x0626, 0x062d, 0x0634, 0x063d, 0x0644,
+ 0x0651, 0x0657, 0x0665, 0x066d, 0x0676, 0x067c, 0x0685, 0x068a,
+ 0x068f, 0x0693, 0x069e, 0x06a2, 0x06a8, 0x06ac, 0x06c0, 0x06d2,
+ 0x06db, 0x06e3, 0x06ea, 0x0703, 0x070b, 0x0716, 0x072c, 0x0735,
+ // Entry C0 - FF
+ 0x073a, 0x0742, 0x0747, 0x0747, 0x074f, 0x0757, 0x0757, 0x0760,
+ 0x0766, 0x0777, 0x0786, 0x0790, 0x0795, 0x079c, 0x07a4, 0x07b0,
+ 0x07b8, 0x07ce, 0x07d7, 0x07e3, 0x07ed, 0x07f4, 0x07fb, 0x0802,
+ 0x0802, 0x0817, 0x0822, 0x0822, 0x0827, 0x0831, 0x0831, 0x0849,
+ 0x084d, 0x0872, 0x0876, 0x087f, 0x088a, 0x0891, 0x08a0, 0x08ac,
+ 0x08b2, 0x08b7, 0x08be, 0x08cf, 0x08d5, 0x08db, 0x08e5, 0x08ec,
+ 0x08f2, 0x0916, 0x0924, 0x092b, 0x0936, 0x093d, 0x095d, 0x0966,
+ 0x097c, 0x098f, 0x0996, 0x099d, 0x09ae, 0x09b3, 0x09b3, 0x09b8,
+ // Entry 100 - 13F
+ 0x09bf, 0x09cf, 0x09d6, 0x09df, 0x09f4, 0x09f9, 0x0a00, 0x0a00,
+ 0x0a11, 0x0a1a, 0x0a2c, 0x0a3d, 0x0a4e, 0x0a5f, 0x0a6e, 0x0a7f,
+ 0x0a86, 0x0a86, 0x0a8d, 0x0a9b, 0x0ab3, 0x0ac1, 0x0ad1, 0x0ae8,
+ 0x0af1, 0x0b0a, 0x0b13, 0x0b17, 0x0b25, 0x0b34, 0x0b3a, 0x0b4a,
+ 0x0b5a, 0x0b6b, 0x0b79,
+ },
+ },
+ { // mua
+ "andorraSǝr Arabiya ma tainiafghanistaŋantiguan ne Barbudaanguiyaalbaniya" +
+ "armeniyaSǝr ma kasǝŋ ma laŋneangolaargentiniyasamoa Amerikaaustriyaa" +
+ "ustraliyaarubaazerbaijaŋbosniya ne Herzegovinabarbadiyabangladeshiya" +
+ "belgikaburkina Fasobulgariyabahraiŋburundibeniŋbermudiyabruniyaboliv" +
+ "iyabrazilyabahamasbutaŋbotswanabelarussiyabeliziyakanadaSǝr Kongo ma" +
+ " dii ne zaircentrafrikakongoSǝr Swissser Ivoiriyakook ma laŋnesyilik" +
+ "ameruŋsyiŋkolombiyakosta RikaKubakap ma laŋneSyipriyaSǝr SyekGermani" +
+ "yaDjiboutiDaŋmarkDominikSǝr Dominik ma liialgeriyaEkwatǝrEstoniyaSǝr" +
+ " EgyptSǝr EritreEspaŋiyaEtiopiaSǝr FinlandSǝr FijiSǝr malouniya ma l" +
+ "aŋneMicronesiyaFranssǝGaboŋSǝr AnglofoŋGrenadǝGeorgiyaSǝr Guyana ma " +
+ "FranssǝGanaSǝr GibraltarSǝr GroenlandGambiyaGuineSǝr GwadeloupǝSǝr G" +
+ "uineSǝr GrekGwatemalaGwamGuine ma BissaoGuyanaSǝr HonduraskroatiyaSǝ" +
+ "r HaitiHungriyaIndonesiyaSǝr IrelandSǝr IsraelSǝr Indǝanglofoŋ ma In" +
+ "diyaIrakIraŋSǝr IslandItaliyaJamaikaJordaniyaJapaŋSǝr KenyaKirgizsta" +
+ "ŋkambodiyaSǝr KiribatikomoraSǝr Kristof ne NievǝSǝr Kore fah sǝŋSǝr" +
+ " Kore nekǝsǝŋSǝr Kowaitkayman ma laŋneKazakstaŋSǝr LaosLibaŋSǝr Luci" +
+ "aLichtǝnsteiŋSǝr LankaLiberiyaSǝr LesothoLituaniyaSǝr LuxemburgLeton" +
+ "iyaLibiyaMarokMonakoMoldoviyaMadagaskarSǝr Marshall ma laŋneMacedoni" +
+ "yaSǝr MaliSǝr MyanmarMongoliyaSǝr Maria ma laŋneMartinikaMauritaniya" +
+ "Sǝr MontserratSǝr MaltaSǝr MauricǝMaldivǝSǝr MalawiMexikoMalaysiyaMo" +
+ "zambikaNamibiyaKaledoniya mafuuSǝr NigerNorfolk ma laŋneNigeriyaNika" +
+ "ragwaSǝr ma kasǝŋNorvegǝSǝr NepalSǝr NauruNiweZeland mafuuOmaŋSǝr Pa" +
+ "namaPeruSǝr Polynesiya ma FranssǝPapuasiya Guine mafuuFilipiŋPakista" +
+ "ŋPologŋSǝr Pǝtar ne MikǝlonPitkairnPorto RikoSǝr PalestiniyaSǝr Por" +
+ "tugalSǝr PalauParagwaiKatarSǝr ReunionRomaniyaRussiyaRwandaSǝr Arabi" +
+ "yaSǝr Salomon ma laŋneSaichelSudaŋSǝr SuedSingapurSǝr HelenaSloveniy" +
+ "aSlovakiyaSierra LeonǝSǝr MarinoSenegalSomaliyaSǝr SurinamSao Tome n" +
+ "e PrincipeSǝr SalvadorSyriaSǝr SwazilandTurkiya ne kaicos ma laŋnesy" +
+ "adSǝr TogoTailandTajikistaŋSǝr TokelauTimoriyaTurkmenistaŋTunisiyaSǝ" +
+ "r TongaTurkiyaTrinite ne TobagoSǝr TuvaluTaiwaŋTanzaniyaUkraiŋUganda" +
+ "AmerikaUrugwaiUzbekistaŋVaticaŋSǝr Vinceŋ ne GrenadiŋSǝr Venezuelase" +
+ "r Anglofon ma laŋneSǝr amerika ma laŋneSǝr VietnamSǝr VanuatuWallis " +
+ "ne FutunaSǝr SamoaYemeŋMayotAfrika nekǝsǝŋZambiyaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x001c, 0x0028, 0x003b, 0x0042, 0x004a,
+ 0x0052, 0x006b, 0x0071, 0x0071, 0x007c, 0x0089, 0x0091, 0x009b,
+ 0x00a0, 0x00a0, 0x00ab, 0x00c1, 0x00ca, 0x00d7, 0x00de, 0x00ea,
+ 0x00f3, 0x00fb, 0x0102, 0x0108, 0x0108, 0x0111, 0x0118, 0x0120,
+ 0x0120, 0x0128, 0x012f, 0x0135, 0x0135, 0x013d, 0x0148, 0x0150,
+ 0x0156, 0x0156, 0x016f, 0x017a, 0x017f, 0x0189, 0x0195, 0x01a3,
+ 0x01a8, 0x01b0, 0x01b5, 0x01be, 0x01be, 0x01c8, 0x01cc, 0x01d9,
+ 0x01d9, 0x01d9, 0x01e1, 0x01ea, 0x01f3, 0x01f3, 0x01fb, 0x0203,
+ // Entry 40 - 7F
+ 0x020a, 0x021d, 0x0225, 0x0225, 0x022d, 0x0235, 0x023f, 0x023f,
+ 0x024a, 0x0253, 0x025a, 0x025a, 0x0266, 0x026f, 0x0287, 0x0292,
+ 0x0292, 0x029a, 0x02a0, 0x02ae, 0x02b6, 0x02be, 0x02d5, 0x02d5,
+ 0x02d9, 0x02e7, 0x02f5, 0x02fc, 0x0301, 0x0311, 0x031b, 0x0324,
+ 0x0324, 0x032d, 0x0331, 0x0340, 0x0346, 0x0346, 0x0346, 0x0353,
+ 0x035b, 0x0365, 0x036d, 0x036d, 0x0377, 0x0383, 0x038e, 0x038e,
+ 0x0398, 0x03ab, 0x03af, 0x03b4, 0x03bf, 0x03c6, 0x03c6, 0x03cd,
+ 0x03d6, 0x03dc, 0x03e6, 0x03f1, 0x03fa, 0x0407, 0x040d, 0x0423,
+ // Entry 80 - BF
+ 0x0436, 0x044a, 0x0455, 0x0465, 0x046f, 0x0478, 0x047e, 0x0488,
+ 0x0496, 0x04a0, 0x04a8, 0x04b4, 0x04bd, 0x04cb, 0x04d3, 0x04d9,
+ 0x04de, 0x04e4, 0x04ed, 0x04ed, 0x04ed, 0x04f7, 0x050e, 0x0518,
+ 0x0521, 0x052d, 0x0536, 0x0536, 0x054a, 0x0553, 0x055e, 0x056d,
+ 0x0577, 0x0584, 0x058c, 0x0597, 0x059d, 0x05a6, 0x05af, 0x05b7,
+ 0x05c7, 0x05d1, 0x05e2, 0x05ea, 0x05f3, 0x0602, 0x060a, 0x0614,
+ 0x061e, 0x0622, 0x062e, 0x0633, 0x063e, 0x0642, 0x065d, 0x0672,
+ 0x067a, 0x0683, 0x068a, 0x06a1, 0x06a9, 0x06b3, 0x06c3, 0x06d0,
+ // Entry C0 - FF
+ 0x06da, 0x06e2, 0x06e7, 0x06e7, 0x06f3, 0x06fb, 0x06fb, 0x0702,
+ 0x0708, 0x0714, 0x072a, 0x0731, 0x0737, 0x0740, 0x0748, 0x0753,
+ 0x075c, 0x075c, 0x0765, 0x0772, 0x077d, 0x0784, 0x078c, 0x0798,
+ 0x0798, 0x07ac, 0x07b9, 0x07b9, 0x07be, 0x07cc, 0x07cc, 0x07e7,
+ 0x07eb, 0x07eb, 0x07f4, 0x07fb, 0x0806, 0x0812, 0x081a, 0x0827,
+ 0x082f, 0x0839, 0x0840, 0x0851, 0x085c, 0x0863, 0x086c, 0x0873,
+ 0x0879, 0x0879, 0x0880, 0x0887, 0x0892, 0x089a, 0x08b3, 0x08c1,
+ 0x08d7, 0x08ed, 0x08f9, 0x0905, 0x0915, 0x091f, 0x091f, 0x0925,
+ // Entry 100 - 13F
+ 0x092a, 0x093b, 0x0942, 0x094a,
+ },
+ },
+ { // my
+ myRegionStr,
+ myRegionIdx,
+ },
+ { // mzn
+ "آسنسیون جزیرهآندورامتحده عربی اماراتافغانستونآنتیگوا و باربوداآنگویلاآلب" +
+ "انیارمنستونآنگولاجنوبی یخ\u200cبزه قطبآرژانتینآمریکای ِساموآاتریشاس" +
+ "ترالیاآروباآلند جزیرهآذربایجونبوسنی و هرزگوینباربادوسبنگلادشبلژیکبو" +
+ "رکینا فاسوبلغارستونبحرینبوروندیبنینسنت بارتلمیبرمودابرونئیبولیویهلن" +
+ "د ِکاراییبی جزایربرزیلباهامابوتانبووت جزیرهبوتساوانابلاروسبلیزکاناد" +
+ "اکوک (کیلینگ) جزایرکنگو کینشاسامرکزی آفریقای جمهوریکنگو برازاویلسوی" +
+ "یسعاج ِساحلکوک جزایرشیلیکامرونچینکلمبیاکلیپرتون جزیرهکاستاریکاکوباک" +
+ "یپ وردکوراسائوکریسمس جزیرهقبرسچک جمهوریآلماندیگو گارسیاجیبوتیدانمار" +
+ "کدومنیکادومنیکن جمهوریالجزیرهسوتا و ملیلهاکوادراستونیمصرغربی صحراار" +
+ "یترهایسپانیااتیوپیاروپا اتحادیهفنلاندفیجیفالکلند جزیره\u200cئونمیکر" +
+ "ونزیفارو جزایرفرانسهگابونبریتانیاگراناداگرجستونفرانسه\u200cی ِگویان" +
+ "گرنزیغناجبل طارقگرینلندگامبیاگینهگوادلوپاستوایی گینهیونانجنوبی جورج" +
+ "یا و جنوبی ساندویچ جزایرگواتمالاگوئامگینه بیسائوگویانهنگ کنگهارد و " +
+ "مک\u200cدونالد جزایرهندوراسکرواسیهاییتیمجارستونقناری جزایراندونزیای" +
+ "رلندایسراییلمن ِجزیرههندبریتانیای هند ِاوقیانوس ِمناطقعراقایرانایسل" +
+ "ندایتالیاجرسیجاماییکااردنجاپونکنیاقرقیزستونکامبوجکیریباتیکومورسنت ک" +
+ "یتس و نویسشمالی کُرهجنوبی کُرهکویتکیمن جزیره\u200cئونقزاقستونلائوسل" +
+ "بنانسنت لوسیالیختن اشتاینسریلانکالیبریالسوتولتونیلوکزامبورگلاتویالی" +
+ "بیمراکشموناکومولداویمونته\u200cنگروسنت مارتینماداگاسکارمارشال جزایر" +
+ "مقدونیهمالیمیانمارمغولستونماکائو (چین دله)شمالی ماریانا جزایرمارتین" +
+ "یک جزیره\u200cئونموریتانیمونتسراتمالتمورى تيوسمالدیومالاویمکزیکمالز" +
+ "یموزامبیکنامبیانیو کالیدونیانیجرنورفولک جزیرهنیجریهنیکاراگوئههلندنر" +
+ "وژنپالنائورونیئونیوزلندعمانپاناماپروفرانسه\u200cی پولی\u200cنزیپاپو" +
+ "ا نو گینهفیلیپینپاکستونلهستونسن پییر و میکلنپیتکارین جزایرپورتوریکو" +
+ "فلسطین ِسرزمینپرتغالپالائوپاراگوئهقطراوقیانوسیه\u200cی ِپرت ِجائونر" +
+ "ئونیونرومانیصربستونروسیهروآنداعربستونسلیمون جزیرهسیشلسودانسوئدسنگاپ" +
+ "ورسنت هلنااسلوونیسوالبارد و يان مايناسلواکیسیرالئونسن مارینوسنگالسو" +
+ "مالیسورینامجنوبی سودانسائوتومه و پرینسیپالسالوادورسنت مارتنسوریهسوا" +
+ "زیلندتریستان دا جونهاتورکس و کایکوس جزایرچادفرانسه\u200cی جنوبی منا" +
+ "طقتوگوتایلندتاجیکستونتوکلائوتیمور شرقیترکمونستونتونستونگاترکیهترینی" +
+ "داد و توباگوتووالوتایوانتانزانیااوکرایناوگانداآمریکای پَرتِ\u200cپِ" +
+ "لا جزیره\u200cئونمتحده ایالاتاروگوئهازبکستونواتیکانسنت وینسنت و گرن" +
+ "ادینونزوئلابریتانیای ویرجینآمریکای ویرجینویتناموانواتووالیس و فوتون" +
+ "اساموآکوزوویمنمایوتجنوبی افریقازامبیازیمبابوهنامَیِّن منطقهجهونآفری" +
+ "قاشمالی آمریکاجنوبی آمریکااوقیانوسیهغربی آفریقامیونی آمریکاشرقی آفر" +
+ "یقاشمالی ۀفریقامیونی آفریقاجنوبی آفریقاآمریکاشمالی امریکاکاراییبشرق" +
+ "ی آسیاجنوبی آسیاآسیای ِجنوب\u200cشرقی\u200cوَرجنوبی اروپااوسترالزیم" +
+ "لانزیمیکرونزی منقطهپولی\u200cنزیآسیامیونی آسیاغربی آسیااروپاشرقی ار" +
+ "وپاشمالی اروپاغربی اروپالاتین آمریکا",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0019, 0x0025, 0x0045, 0x0057, 0x0077, 0x0085, 0x0091,
+ 0x00a1, 0x00a1, 0x00ad, 0x00cc, 0x00dc, 0x00f7, 0x0101, 0x0111,
+ 0x011b, 0x012e, 0x0140, 0x015c, 0x016c, 0x017a, 0x0184, 0x019b,
+ 0x01ad, 0x01b7, 0x01c5, 0x01cd, 0x01e2, 0x01ee, 0x01fa, 0x0206,
+ 0x022c, 0x0236, 0x0242, 0x024c, 0x025f, 0x0271, 0x027d, 0x0285,
+ 0x0291, 0x02b1, 0x02c8, 0x02ee, 0x0307, 0x0311, 0x0322, 0x0333,
+ 0x033b, 0x0347, 0x034d, 0x0359, 0x0374, 0x0386, 0x038e, 0x039b,
+ 0x03ab, 0x03c2, 0x03ca, 0x03db, 0x03e5, 0x03fa, 0x0406, 0x0414,
+ // Entry 40 - 7F
+ 0x0422, 0x043d, 0x044b, 0x0461, 0x046d, 0x0479, 0x047f, 0x0490,
+ 0x049c, 0x04ac, 0x04b8, 0x04d1, 0x04dd, 0x04e5, 0x0507, 0x0517,
+ 0x052a, 0x0536, 0x0540, 0x0550, 0x055e, 0x056c, 0x058a, 0x0594,
+ 0x059a, 0x05a9, 0x05b7, 0x05c3, 0x05cb, 0x05d9, 0x05f0, 0x05fa,
+ 0x0639, 0x0649, 0x0653, 0x0668, 0x0672, 0x067f, 0x06a9, 0x06b7,
+ 0x06c3, 0x06cf, 0x06df, 0x06f4, 0x0702, 0x070e, 0x071e, 0x072f,
+ 0x0735, 0x076e, 0x0776, 0x0780, 0x078c, 0x079a, 0x07a2, 0x07b2,
+ 0x07ba, 0x07c4, 0x07cc, 0x07de, 0x07ea, 0x07fa, 0x0804, 0x081f,
+ // Entry 80 - BF
+ 0x0832, 0x0845, 0x084d, 0x0869, 0x0879, 0x0883, 0x088d, 0x089e,
+ 0x08b5, 0x08c5, 0x08d1, 0x08db, 0x08e5, 0x08f9, 0x0905, 0x090d,
+ 0x0917, 0x0923, 0x0931, 0x0946, 0x0959, 0x096d, 0x0984, 0x0992,
+ 0x099a, 0x09a8, 0x09b8, 0x09d4, 0x09f8, 0x0a1c, 0x0a2c, 0x0a3c,
+ 0x0a44, 0x0a55, 0x0a61, 0x0a6d, 0x0a77, 0x0a81, 0x0a91, 0x0a9d,
+ 0x0ab6, 0x0abe, 0x0ad7, 0x0ae3, 0x0af7, 0x0aff, 0x0b07, 0x0b0f,
+ 0x0b1b, 0x0b23, 0x0b31, 0x0b39, 0x0b45, 0x0b4b, 0x0b6e, 0x0b86,
+ 0x0b94, 0x0ba2, 0x0bae, 0x0bc9, 0x0be4, 0x0bf6, 0x0c11, 0x0c1d,
+ // Entry C0 - FF
+ 0x0c29, 0x0c39, 0x0c3f, 0x0c6e, 0x0c7c, 0x0c88, 0x0c96, 0x0ca0,
+ 0x0cac, 0x0cba, 0x0cd1, 0x0cd9, 0x0ce3, 0x0ceb, 0x0cf9, 0x0d08,
+ 0x0d16, 0x0d39, 0x0d47, 0x0d57, 0x0d68, 0x0d72, 0x0d7e, 0x0d8c,
+ 0x0da1, 0x0dc3, 0x0dd7, 0x0de8, 0x0df2, 0x0e02, 0x0e20, 0x0e45,
+ 0x0e4b, 0x0e72, 0x0e7a, 0x0e86, 0x0e98, 0x0ea6, 0x0eb9, 0x0ecd,
+ 0x0ed5, 0x0edf, 0x0ee9, 0x0f09, 0x0f15, 0x0f21, 0x0f31, 0x0f3f,
+ 0x0f4d, 0x0f85, 0x0f9c, 0x0faa, 0x0fba, 0x0fc8, 0x0fed, 0x0ffb,
+ 0x101a, 0x1035, 0x1041, 0x104f, 0x1069, 0x1073, 0x107d, 0x1083,
+ // Entry 100 - 13F
+ 0x108d, 0x10a4, 0x10b0, 0x10c0, 0x10db, 0x10e3, 0x10ef, 0x1106,
+ 0x111d, 0x1131, 0x1146, 0x115d, 0x1172, 0x1189, 0x11a0, 0x11b7,
+ 0x11c3, 0x11da, 0x11e8, 0x11f9, 0x120c, 0x1235, 0x124a, 0x125c,
+ 0x1268, 0x1283, 0x1294, 0x129c, 0x12af, 0x12c0, 0x12ca, 0x12dd,
+ 0x12f2, 0x1305, 0x131c,
+ },
+ },
+ { // naq
+ "AndorrabUnited Arab EmiratesAfghanistanniAntiguab tsî BarbudabAnguillabA" +
+ "lbaniabArmeniabNetherlands AntillesAngolabArgentinabAmericab SamoabA" +
+ "ustriabAustraliebArubabAzerbaijanniBosniab tsî HerzegovinabBarbadosB" +
+ "angladesBelgiummiBurkina FasobBulgariabBahrainBurundibBeninsBermudas" +
+ "BruneiBoliviabBraziliabBahamasBhutansBotswanabBelarusBelizeKanadabDe" +
+ "mocratic Republic of the CongoCentral African RepublikiCongobSwitzer" +
+ "landiIvoorkusiCook IslandsChilibCameroonniChinabColombiabCosta RicaC" +
+ "ubabCape Verde IslandsCyprusCzech RepublikiDuitslandiDjiboutiDenmark" +
+ "iDominicabDominican RepublicAlgeriabEcuadoriEstoniabEgiptebEritreabS" +
+ "paniebEthiopiabFinlandiFijibFalkland IslandsMicronesiaFrankreikiGabo" +
+ "niUnited KingdomGrenadaGeorgiabFrench GuianaGhanabGibraltarGreenland" +
+ "GambiabGuineabGuadeloupeEquatorial GuineabXrikelandiGuatemalaGuamGui" +
+ "nea-BissauGuyanaHondurasCroatiabHaitiHongareiebIndonesiabIrlandiIsra" +
+ "eliIndiabBritish Indian Ocean TerritoryIraqiIranniIcelandItaliabJama" +
+ "icabJordanniJapanniKenyabKyrgyzstanniCambodiabKiribatiComorosSaint K" +
+ "itts and NevisKoreab, NoordKoreab, SuidKuwaitiCayman IslandsKazakhst" +
+ "anniLaosLebanonniSaint LuciaLiechtensteinniSri LankabLiberiabLesotho" +
+ "bLithuaniabLuxembourgiLatviaLibyabMoroccoMonacoMoldovaMadagascariMar" +
+ "shall IslandsMacedoniabMalibMyanmarMongoliaNorthern Mariana IslandsM" +
+ "artiniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawibMexicobMal" +
+ "aysiabMozambikiNamibiabNew CaledoniaNigeriNorfolk IslandNigeriebNica" +
+ "raguabNetherlandsNoorweebNepaliNauruNiueNew ZealandiOmanPanamaPerubF" +
+ "rench PolynesiaPapua New GuineabPhilippinniPakistanniPolandiSaint Pi" +
+ "erre and MiquelonPitcairnPuerto RicoPalestinian West Bank and GazaPo" +
+ "rtugaliPalauParaguaibQatarRéunionRomaniaRasiabRwandabSaudi ArabiabSo" +
+ "lomon IslandsSeychellesSudanniSwedebSingaporeSaint HelenaSloveniaSlo" +
+ "vakiaSierra LeoneSan MarinoSenegaliSomaliabSurinameSão Tomé and Prín" +
+ "cipeEl SalvadoriSyriabSwazilandiTurks and Caicos IslandsChadiTogobTh" +
+ "ailandiTajikistanTokelauEast TimorTurkmenistanTunisiabTongaTurkeiebT" +
+ "rinidad and TobagoTuvaluTaiwanTanzaniabUkraineUgandabAmerikabUruguai" +
+ "bUzbekistanVatican StateSaint Vincent and the GrenadinesVenezuelabBr" +
+ "itish Virgin IslandsU.S. Virgin IslandsVietnammiVanuatuWallis and Fu" +
+ "tunaSamoaYemenMayotteSuid AfrikabZambiabZimbabweb",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x001c, 0x0029, 0x003f, 0x0048, 0x0050,
+ 0x0058, 0x006c, 0x0073, 0x0073, 0x007d, 0x008c, 0x0094, 0x009e,
+ 0x00a4, 0x00a4, 0x00b0, 0x00c9, 0x00d1, 0x00da, 0x00e3, 0x00f0,
+ 0x00f9, 0x0100, 0x0108, 0x010e, 0x010e, 0x0116, 0x011c, 0x0124,
+ 0x0124, 0x012d, 0x0134, 0x013b, 0x013b, 0x0144, 0x014b, 0x0151,
+ 0x0158, 0x0158, 0x0178, 0x0191, 0x0197, 0x01a3, 0x01ac, 0x01b8,
+ 0x01be, 0x01c8, 0x01ce, 0x01d7, 0x01d7, 0x01e1, 0x01e6, 0x01f8,
+ 0x01f8, 0x01f8, 0x01fe, 0x020d, 0x0217, 0x0217, 0x021f, 0x0227,
+ // Entry 40 - 7F
+ 0x0230, 0x0242, 0x024a, 0x024a, 0x0252, 0x025a, 0x0261, 0x0261,
+ 0x0269, 0x0270, 0x0279, 0x0279, 0x0281, 0x0286, 0x0296, 0x02a0,
+ 0x02a0, 0x02aa, 0x02b0, 0x02be, 0x02c5, 0x02cd, 0x02da, 0x02da,
+ 0x02e0, 0x02e9, 0x02f2, 0x02f9, 0x0300, 0x030a, 0x031c, 0x0326,
+ 0x0326, 0x032f, 0x0333, 0x0340, 0x0346, 0x0346, 0x0346, 0x034e,
+ 0x0356, 0x035b, 0x0365, 0x0365, 0x036f, 0x0376, 0x037d, 0x037d,
+ 0x0383, 0x03a1, 0x03a6, 0x03ac, 0x03b3, 0x03ba, 0x03ba, 0x03c2,
+ 0x03ca, 0x03d1, 0x03d7, 0x03e3, 0x03ec, 0x03f4, 0x03fb, 0x0410,
+ // Entry 80 - BF
+ 0x041d, 0x0429, 0x0430, 0x043e, 0x044a, 0x044e, 0x0457, 0x0462,
+ 0x0471, 0x047b, 0x0483, 0x048b, 0x0495, 0x04a0, 0x04a6, 0x04ac,
+ 0x04b3, 0x04b9, 0x04c0, 0x04c0, 0x04c0, 0x04cb, 0x04db, 0x04e5,
+ 0x04ea, 0x04f1, 0x04f9, 0x04f9, 0x0511, 0x051b, 0x0525, 0x052f,
+ 0x0534, 0x053d, 0x0545, 0x054c, 0x0553, 0x055c, 0x0565, 0x056d,
+ 0x057a, 0x0580, 0x058e, 0x0596, 0x05a0, 0x05ab, 0x05b3, 0x05b9,
+ 0x05be, 0x05c2, 0x05ce, 0x05d2, 0x05d8, 0x05dd, 0x05ed, 0x05fe,
+ 0x0609, 0x0613, 0x061a, 0x0633, 0x063b, 0x0646, 0x0664, 0x066d,
+ // Entry C0 - FF
+ 0x0672, 0x067b, 0x0680, 0x0680, 0x0688, 0x068f, 0x068f, 0x0695,
+ 0x069c, 0x06a9, 0x06b8, 0x06c2, 0x06c9, 0x06cf, 0x06d8, 0x06e4,
+ 0x06ec, 0x06ec, 0x06f4, 0x0700, 0x070a, 0x0712, 0x071a, 0x0722,
+ 0x0722, 0x073a, 0x0746, 0x0746, 0x074c, 0x0756, 0x0756, 0x076e,
+ 0x0773, 0x0773, 0x0778, 0x0781, 0x078b, 0x0792, 0x079c, 0x07a8,
+ 0x07b0, 0x07b5, 0x07bd, 0x07d0, 0x07d6, 0x07dc, 0x07e5, 0x07ec,
+ 0x07f3, 0x07f3, 0x07fb, 0x0803, 0x080d, 0x081a, 0x083a, 0x0844,
+ 0x085a, 0x086d, 0x0876, 0x087d, 0x088e, 0x0893, 0x0893, 0x0898,
+ // Entry 100 - 13F
+ 0x089f, 0x08ab, 0x08b2, 0x08bb,
+ },
+ },
+ { // nd
+ "AndoraUnited Arab EmiratesAfghanistanAntigua le BarbudaAnguillaAlbaniaAr" +
+ "meniaNetherlands AntillesAngolaAjentinaSamoa ye AmelikaAustriaAustra" +
+ "liaArubhaAzerbaijanBhosnia le HerzegovinaBhabhadosiBhangiladeshiBhel" +
+ "giumBhukina FasoBhulgariyaBhahareniBhurundiBheniniBhemudaBruneiBholi" +
+ "viyaBraziliBhahamasBhutaniBotswanaBhelarusiBhelizeKhanadaDemocratic " +
+ "Republic of the CongoCentral African RepublicKhongoSwitzerlandIvory " +
+ "CoastCook IslandsChileKhameruniChinaKholombiyaKhosta RikhaCubaCape V" +
+ "erde IslandsCyprusCzech RepublicGermanyDjiboutiDenmakhiDominikhaDomi" +
+ "nican RepublicAljeriyaEcuadorEstoniaEgyptEritreaSpainEthiopiaFinland" +
+ "FijiFalkland IslandsMicronesiaFuransiGabhoniUnited KingdomGrenadaGeo" +
+ "rgiaGwiyana ye FuransiGhanaGibraltarGreenlandGambiyaGuineaGuadeloupe" +
+ "Equatorial GuineaGreeceGuatemalaGuamGuinea-BissauGuyanaHondurasCroat" +
+ "iaHayitiHungaryIndonesiyaIrelandIsuraeliIndiyaBritish Indian Ocean T" +
+ "erritoryIrakiIranIcelandItaliJamaicaJodaniJapanKhenyaKyrgyzstanCambo" +
+ "diaKhiribatiKhomoroSaint Kitts and NevisNorth KoreaSouth KoreaKhuwei" +
+ "tiCayman IslandsKazakhstanLaosLebhanoniSaint LuciaLiechtensteinSri L" +
+ "ankaLibheriyaLesothoLithuaniaLuxembourgLatviaLibhiyaMorokhoMonakhoMo" +
+ "ldovaMadagaskaMarshall IslandsMacedoniaMaliMyanmarMongoliaNorthern M" +
+ "ariana IslandsMartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMa" +
+ "lawiMeksikhoMalezhiyaMozambiqueNamibhiyaNew CaledoniaNigerNorfolk Is" +
+ "landNigeriyaNicaraguaNetherlandsNoweyiNephaliNauruNiueNew ZealandOma" +
+ "niPanamaPheruPholinesiya ye FulansiPapua New GuineaPhilippinesPhakis" +
+ "taniPholandiSaint Pierre and MiquelonPitcairnPuerto RicoPalestinian " +
+ "West Bank and GazaPortugalPalauParaguayKathariRéunionRomaniaRashiyaR" +
+ "uwandaSaudi ArabiaSolomon IslandsSeychellesSudaniSwedenSingaporeSain" +
+ "t HelenaSloveniaSlovakiaSierra LeoneSan MarinoSenegaliSomaliyaSurina" +
+ "meSão Tomé and PríncipeEl SalvadorSyriaSwazilandTurks and Caicos Isl" +
+ "andsChadiThogoThayilandiTajikistanThokelawuEast TimorTurkmenistanTun" +
+ "isiyaThongaThekhiTrinidad le TobagoThuvaluThayiwaniTanzaniyaYukreini" +
+ "UgandaAmelikaYurugwaiUzbekistanVatican StateSaint Vincent and the Gr" +
+ "enadinesVenezuelaBritish Virgin IslandsU.S. Virgin IslandsVietnamVha" +
+ "nuatuWallis and FutunaSamowaYemeniMayotteMzansi ye AfrikaZambiyaZimb" +
+ "abwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x001a, 0x0025, 0x0037, 0x003f, 0x0046,
+ 0x004d, 0x0061, 0x0067, 0x0067, 0x006f, 0x007f, 0x0086, 0x008f,
+ 0x0095, 0x0095, 0x009f, 0x00b5, 0x00bf, 0x00cc, 0x00d4, 0x00e0,
+ 0x00ea, 0x00f3, 0x00fb, 0x0102, 0x0102, 0x0109, 0x010f, 0x0118,
+ 0x0118, 0x011f, 0x0127, 0x012e, 0x012e, 0x0136, 0x013f, 0x0146,
+ 0x014d, 0x014d, 0x016d, 0x0185, 0x018b, 0x0196, 0x01a1, 0x01ad,
+ 0x01b2, 0x01bb, 0x01c0, 0x01ca, 0x01ca, 0x01d6, 0x01da, 0x01ec,
+ 0x01ec, 0x01ec, 0x01f2, 0x0200, 0x0207, 0x0207, 0x020f, 0x0217,
+ // Entry 40 - 7F
+ 0x0220, 0x0232, 0x023a, 0x023a, 0x0241, 0x0248, 0x024d, 0x024d,
+ 0x0254, 0x0259, 0x0261, 0x0261, 0x0268, 0x026c, 0x027c, 0x0286,
+ 0x0286, 0x028d, 0x0294, 0x02a2, 0x02a9, 0x02b0, 0x02c2, 0x02c2,
+ 0x02c7, 0x02d0, 0x02d9, 0x02e0, 0x02e6, 0x02f0, 0x0301, 0x0307,
+ 0x0307, 0x0310, 0x0314, 0x0321, 0x0327, 0x0327, 0x0327, 0x032f,
+ 0x0336, 0x033c, 0x0343, 0x0343, 0x034d, 0x0354, 0x035c, 0x035c,
+ 0x0362, 0x0380, 0x0385, 0x0389, 0x0390, 0x0395, 0x0395, 0x039c,
+ 0x03a2, 0x03a7, 0x03ad, 0x03b7, 0x03bf, 0x03c8, 0x03cf, 0x03e4,
+ // Entry 80 - BF
+ 0x03ef, 0x03fa, 0x0402, 0x0410, 0x041a, 0x041e, 0x0427, 0x0432,
+ 0x043f, 0x0448, 0x0451, 0x0458, 0x0461, 0x046b, 0x0471, 0x0478,
+ 0x047f, 0x0486, 0x048d, 0x048d, 0x048d, 0x0496, 0x04a6, 0x04af,
+ 0x04b3, 0x04ba, 0x04c2, 0x04c2, 0x04da, 0x04e4, 0x04ee, 0x04f8,
+ 0x04fd, 0x0506, 0x050e, 0x0514, 0x051c, 0x0525, 0x052f, 0x0538,
+ 0x0545, 0x054a, 0x0558, 0x0560, 0x0569, 0x0574, 0x057a, 0x0581,
+ 0x0586, 0x058a, 0x0595, 0x059a, 0x05a0, 0x05a5, 0x05bb, 0x05cb,
+ 0x05d6, 0x05e0, 0x05e8, 0x0601, 0x0609, 0x0614, 0x0632, 0x063a,
+ // Entry C0 - FF
+ 0x063f, 0x0647, 0x064e, 0x064e, 0x0656, 0x065d, 0x065d, 0x0664,
+ 0x066b, 0x0677, 0x0686, 0x0690, 0x0696, 0x069c, 0x06a5, 0x06b1,
+ 0x06b9, 0x06b9, 0x06c1, 0x06cd, 0x06d7, 0x06df, 0x06e7, 0x06ef,
+ 0x06ef, 0x0707, 0x0712, 0x0712, 0x0717, 0x0720, 0x0720, 0x0738,
+ 0x073d, 0x073d, 0x0742, 0x074c, 0x0756, 0x075f, 0x0769, 0x0775,
+ 0x077d, 0x0783, 0x0789, 0x079b, 0x07a2, 0x07ab, 0x07b4, 0x07bc,
+ 0x07c2, 0x07c2, 0x07c9, 0x07d1, 0x07db, 0x07e8, 0x0808, 0x0811,
+ 0x0827, 0x083a, 0x0841, 0x0849, 0x085a, 0x0860, 0x0860, 0x0866,
+ // Entry 100 - 13F
+ 0x086d, 0x087d, 0x0884, 0x088c,
+ },
+ },
+ { // ne
+ neRegionStr,
+ neRegionIdx,
+ },
+ { // nl
+ nlRegionStr,
+ nlRegionIdx,
+ },
+ { // nmg
+ "Andɔ́raMinlambɔ́ Nsaŋ́nsa mí ArabiaAfganistaŋAntíga bá BarbúdaAnguíllaAl" +
+ "baniaArméniaB’Antilles bó NedɛrlandAngolaArgentínaSamoa m ́Amɛ́rkaÖt" +
+ "rishÖstraliáÁrúbaAzerbaïjaŋBosnia na ƐrzegovinaBarbadoBɛŋgladɛshBɛlg" +
+ "ikBurkina FasoBulgariaBahrainBurundiBeninBɛrmudaBrunɛiBoliviaBrésilB" +
+ "ahamasButaŋBotswanaBelarusBɛlizKanadaKongó ZaïreSentrafríkaKongoSwit" +
+ "zɛrlandKote d´IvoireMaŋ́ má KookTshiliKamerunShineKɔlɔ́mbiaKosta Rík" +
+ "aKubaMaŋ́ má KapvɛrSipriaNlambɔ́ bó tschɛkJamanJibútiDanemarkDominík" +
+ "aNlambɔ́ DominíkaAlgeriaEkuateurƐstoniaÄgyptɛnErytreaPaŋáEthiopiáFin" +
+ "landeFijiáMaŋ má FalklandMikronesiaFalaGabɔŋNlambɔ́ NgɛlɛnGrenadaJɔr" +
+ "giaGuyane FalaGánaGilbratarGreenlandGambiaGuineGuadeloupGuine Ekuato" +
+ "rialGrɛceGuatemalaGuamGuine BissoGuyanaƆndúrasKroasiaHaïtiƆngríaIndo" +
+ "nesiaIrlandÄsrɛlIndiaNlambɔ́ ngɛlɛn ma yí maŋ ntsiɛhIrakIranIslandIt" +
+ "aliaJamaikaJɔrdaniaJapɔnKɛnyaKyrgystaŋKambodiaKiribatiKɔmɔrSaint Kit" +
+ "ts na NevisKoré yí bvuɔKoré yí síKowɛitMaŋ́ má kumbiKazakstaŋLaosLib" +
+ "aŋSaint LuciaLishensteinSri LankaLiberiaLesotoLituaniáLuxembourgLatv" +
+ "iaLibyaMarɔkMonakoMɔldaviaMadagaskarMaŋ́ má MarshallMacedoniaMaliMya" +
+ "nmarMɔngoliaMaŋ́ MariáMartinikaMoritaniaMɔnserratMaltaMorisseMaldivi" +
+ "aMalawiMɛxikMalaysiaMozambikNamibiaKaledoni nwanahNigerMaŋ́ má Nɔrfɔ" +
+ "rkNigeriaNikaraguaNedɛrlandNɔrvɛgNepalNoruNiuɛZeland nwanahOmanPanam" +
+ "aPeruPolynesia FalaGuine PapuasiFilipinPakistanPɔlɔŋSaint Peter ba M" +
+ "ikelɔnPitkairnPuɛrto RikoPalɛstinPɔrtugalPaloParaguayKatarRéuniɔnRou" +
+ "maniaRussiRwandaSaudi ArabiaMaŋ́ má SalomɔnSeychɛlleSudaŋSuɛdSingapu" +
+ "rSaint LinaSloveniaSlovakiaSierra LeɔnSan MarinoSenegalSomáliaSurina" +
+ "mSao Tomé ba PrinshipSalvadɔrSyriaSwazilandMaŋ́ má Turk na KaikoTsha" +
+ "dTogoTaïlandTajikistaŋTokeloTimɔr tsindikēhTurkmɛnistaŋTunisiáTɔngaT" +
+ "urkiTrinidad ba TobágóTuvalúTaïwanTanzáníaUkrɛnUgandaAmɛŕkaUruguayUs" +
+ "bǝkistaŋVatikaŋSaint Vincent ba GrenadinesVǝnǝzuelaMinsilɛ́ mímaŋ mí" +
+ " ngɛ̄lɛ̄nMinsilɛ mí maŋ́ m´AmɛrkaViɛtnamVanuatuWallis ba FutunaSamoa" +
+ "YǝmɛnMayɔtAfríka yí síZambiaZimbabwǝ",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0009, 0x002a, 0x0035, 0x0049, 0x0052, 0x0059,
+ 0x0061, 0x007c, 0x0082, 0x0082, 0x008c, 0x009f, 0x00a6, 0x00b0,
+ 0x00b7, 0x00b7, 0x00c3, 0x00d8, 0x00df, 0x00ec, 0x00f3, 0x00ff,
+ 0x0107, 0x010e, 0x0115, 0x011a, 0x011a, 0x0122, 0x0129, 0x0130,
+ 0x0130, 0x0137, 0x013e, 0x0144, 0x0144, 0x014c, 0x0153, 0x0159,
+ 0x015f, 0x015f, 0x016c, 0x0178, 0x017d, 0x0189, 0x0197, 0x01a6,
+ 0x01ac, 0x01b3, 0x01b8, 0x01c4, 0x01c4, 0x01cf, 0x01d3, 0x01e5,
+ 0x01e5, 0x01e5, 0x01eb, 0x0200, 0x0205, 0x0205, 0x020c, 0x0214,
+ // Entry 40 - 7F
+ 0x021d, 0x0230, 0x0237, 0x0237, 0x023f, 0x0247, 0x0250, 0x0250,
+ 0x0257, 0x025d, 0x0266, 0x0266, 0x026e, 0x0274, 0x0285, 0x028f,
+ 0x028f, 0x0293, 0x029a, 0x02ac, 0x02b3, 0x02ba, 0x02c5, 0x02c5,
+ 0x02ca, 0x02d3, 0x02dc, 0x02e2, 0x02e7, 0x02f0, 0x0300, 0x0306,
+ 0x0306, 0x030f, 0x0313, 0x031e, 0x0324, 0x0324, 0x0324, 0x032d,
+ 0x0334, 0x033a, 0x0342, 0x0342, 0x034b, 0x0351, 0x0358, 0x0358,
+ 0x035d, 0x0383, 0x0387, 0x038b, 0x0391, 0x0397, 0x0397, 0x039e,
+ 0x03a7, 0x03ad, 0x03b3, 0x03bd, 0x03c5, 0x03cd, 0x03d4, 0x03e8,
+ // Entry 80 - BF
+ 0x03f7, 0x0404, 0x040b, 0x041b, 0x0425, 0x0429, 0x042f, 0x043a,
+ 0x0445, 0x044e, 0x0455, 0x045b, 0x0464, 0x046e, 0x0474, 0x0479,
+ 0x047f, 0x0485, 0x048e, 0x048e, 0x048e, 0x0498, 0x04ab, 0x04b4,
+ 0x04b8, 0x04bf, 0x04c8, 0x04c8, 0x04d5, 0x04de, 0x04e7, 0x04f1,
+ 0x04f6, 0x04fd, 0x0505, 0x050b, 0x0511, 0x0519, 0x0521, 0x0528,
+ 0x0537, 0x053c, 0x0550, 0x0557, 0x0560, 0x056a, 0x0572, 0x0577,
+ 0x057b, 0x0580, 0x058d, 0x0591, 0x0597, 0x059b, 0x05a9, 0x05b6,
+ 0x05bd, 0x05c5, 0x05cd, 0x05e4, 0x05ec, 0x05f8, 0x0601, 0x060a,
+ // Entry C0 - FF
+ 0x060e, 0x0616, 0x061b, 0x061b, 0x0624, 0x062c, 0x062c, 0x0631,
+ 0x0637, 0x0643, 0x0656, 0x0660, 0x0666, 0x066b, 0x0673, 0x067d,
+ 0x0685, 0x0685, 0x068d, 0x0699, 0x06a3, 0x06aa, 0x06b2, 0x06b9,
+ 0x06b9, 0x06ce, 0x06d7, 0x06d7, 0x06dc, 0x06e5, 0x06e5, 0x06fd,
+ 0x0702, 0x0702, 0x0706, 0x070e, 0x0719, 0x071f, 0x0730, 0x073e,
+ 0x0746, 0x074c, 0x0751, 0x0765, 0x076c, 0x0773, 0x077d, 0x0783,
+ 0x0789, 0x0789, 0x0791, 0x0798, 0x07a4, 0x07ac, 0x07c7, 0x07d2,
+ 0x07f5, 0x0813, 0x081b, 0x0822, 0x0832, 0x0837, 0x0837, 0x083e,
+ // Entry 100 - 13F
+ 0x0844, 0x0853, 0x0859, 0x0862,
+ },
+ },
+ { // nn
+ "AscensionAndorraDei sameinte arabiske emirataAfghanistanAntigua og Barbu" +
+ "daAnguillaAlbaniaArmeniaDei nederlandske AntillaneAngolaAntarktisArg" +
+ "entinaAmerikansk SamoaAusterrikeAustraliaArubaÅlandAserbajdsjanBosni" +
+ "a og HercegovinaBarbadosBangladeshBelgiaBurkina FasoBulgariaBahrainB" +
+ "urundiBeninSaint BarthélemyBermudaBrunei DarussalamBoliviaBrasilBaha" +
+ "masBhutanBouvetøyaBotswanaKviterusslandBelizeCanadaKokosøyaneKongo-K" +
+ "inshasaDen sentralafrikanske republikkenKongo-BrazzavilleSveitsElfen" +
+ "beinskystenCookøyaneChileKamerunKinaColombiaClippertonøyaCosta RicaC" +
+ "ubaKapp VerdeChristmasøyaKyprosTsjekkiaTysklandDiego GarciaDjiboutiD" +
+ "anmarkDominicaDen dominikanske republikkenAlgerieCeuta og MelillaEcu" +
+ "adorEstlandEgyptVest-SaharaEritreaSpaniaEtiopiaDen europeiske unione" +
+ "nFinlandFijiFalklandsøyaneMikronesiaføderasjonenFærøyaneFrankrikeGab" +
+ "onStorbritanniaGrenadaGeorgiaFransk GuyanaGuernseyGhanaGibraltarGrøn" +
+ "landGambiaGuineaGuadeloupeEkvatorial-GuineaHellasSør-Georgia og Sør-" +
+ "Sandwich-øyaneGuatemalaGuamGuinea-BissauGuyanaHongkong S.A.R. KinaHe" +
+ "ard- og McDonaldsøyaneHondurasKroatiaHaitiUngarnKanariøyaneIndonesia" +
+ "IrlandIsraelManIndiaBritiske område i Det indiske havIrakIranIslandI" +
+ "taliaJerseyJamaicaJordanJapanKenyaKirgisistanKambodsjaKiribatiKomore" +
+ "neSt. Christopher og NevisNord-KoreaSør-KoreaKuwaitCaymanøyaneKasakh" +
+ "stanLaosLibanonSt. LuciaLiechtensteinSri LankaLiberiaLesothoLitauenL" +
+ "uxembourgLatviaLibyaMarokkoMonacoMoldovaMontenegroSaint MartinMadaga" +
+ "skarMarshalløyaneMakedoniaMaliMyanmarMongoliaMacao S.A.R. KinaNord-M" +
+ "ariananeMartiniqueMauritaniaMontserratMaltaMauritiusMaldivaneMalawiM" +
+ "exicoMalaysiaMosambikNamibiaNy-CaledoniaNigerNorfolkøyaneNigeriaNica" +
+ "raguaNederlandNoregNepalNauruNiueNew ZealandOmanPanamaPeruFransk Pol" +
+ "ynesiaPapua Ny-GuineaFilippinanePakistanPolenSt. Pierre og MiquelonP" +
+ "itcairnPuerto RicoPalestinsk territoriumPortugalPalauParaguayQatarYt" +
+ "re OseaniaRéunionRomaniaSerbiaRusslandRwandaSaudi ArabiaSalomonøyane" +
+ "SeychellaneSudanSverigeSingaporeSaint HelenaSloveniaSvalbard og Jan " +
+ "MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinamSão Tomé og " +
+ "PríncipeEl SalvadorSyriaSwazilandTristan da CunhaTurks- og Caicosøya" +
+ "neTchadFranske sørområdeTogoThailandTadsjikistanTokelauAust-TimorTur" +
+ "kmenistanTunisiaTongaTyrkiaTrinidad og TobagoTuvaluTaiwanTanzaniaUkr" +
+ "ainaUgandaUSAs ytre småøyarUSAUruguayUsbekistanVatikanstatenSt. Vinc" +
+ "ent og GrenadinaneVenezuelaDei britiske jomfruøyaneDei amerikanske j" +
+ "omfruøyaneVietnamVanuatuWallis og FutunaSamoaYemenMayotteSør-AfrikaZ" +
+ "ambiaZimbabweukjent områdeverdaAfrikaNord-AmerikaSør-AmerikaOseaniaV" +
+ "est-AfrikaSentral-AmerikaAust-AfrikaNord-AfrikaSentral-AfrikaSørlege" +
+ " AfrikaAmerikanordlege AmerikaKaribiaAust-AsiaSør-AsiaSøraust-AsiaSø" +
+ "r-EuropaAustralia og New ZealandMelanesiaMikronesiaPolynesiaAsiaSent" +
+ "ral-AsiaVest-AsiaEuropaAust-EuropaNord-EuropaVest-EuropaLatin-Amerik" +
+ "a",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002d, 0x0038, 0x004a, 0x0052, 0x0059,
+ 0x0060, 0x007a, 0x0080, 0x0089, 0x0092, 0x00a2, 0x00ac, 0x00b5,
+ 0x00ba, 0x00c0, 0x00cc, 0x00e1, 0x00e9, 0x00f3, 0x00f9, 0x0105,
+ 0x010d, 0x0114, 0x011b, 0x0120, 0x0131, 0x0138, 0x0149, 0x0150,
+ 0x0150, 0x0156, 0x015d, 0x0163, 0x016d, 0x0175, 0x0182, 0x0188,
+ 0x018e, 0x0199, 0x01a7, 0x01c8, 0x01d9, 0x01df, 0x01ef, 0x01f9,
+ 0x01fe, 0x0205, 0x0209, 0x0211, 0x021f, 0x0229, 0x022d, 0x0237,
+ 0x0237, 0x0244, 0x024a, 0x0252, 0x025a, 0x0266, 0x026e, 0x0275,
+ // Entry 40 - 7F
+ 0x027d, 0x0299, 0x02a0, 0x02b0, 0x02b7, 0x02be, 0x02c3, 0x02ce,
+ 0x02d5, 0x02db, 0x02e2, 0x02f8, 0x02ff, 0x0303, 0x0312, 0x0329,
+ 0x0333, 0x033c, 0x0341, 0x034e, 0x0355, 0x035c, 0x0369, 0x0371,
+ 0x0376, 0x037f, 0x0388, 0x038e, 0x0394, 0x039e, 0x03af, 0x03b5,
+ 0x03d9, 0x03e2, 0x03e6, 0x03f3, 0x03f9, 0x040d, 0x0426, 0x042e,
+ 0x0435, 0x043a, 0x0440, 0x044c, 0x0455, 0x045b, 0x0461, 0x0464,
+ 0x0469, 0x048b, 0x048f, 0x0493, 0x0499, 0x049f, 0x04a5, 0x04ac,
+ 0x04b2, 0x04b7, 0x04bc, 0x04c7, 0x04d0, 0x04d8, 0x04e0, 0x04f8,
+ // Entry 80 - BF
+ 0x0502, 0x050c, 0x0512, 0x051e, 0x0528, 0x052c, 0x0533, 0x053c,
+ 0x0549, 0x0552, 0x0559, 0x0560, 0x0567, 0x0571, 0x0577, 0x057c,
+ 0x0583, 0x0589, 0x0590, 0x059a, 0x05a6, 0x05b0, 0x05be, 0x05c7,
+ 0x05cb, 0x05d2, 0x05da, 0x05eb, 0x05f9, 0x0603, 0x060d, 0x0617,
+ 0x061c, 0x0625, 0x062e, 0x0634, 0x063a, 0x0642, 0x064a, 0x0651,
+ 0x065d, 0x0662, 0x066f, 0x0676, 0x067f, 0x0688, 0x068d, 0x0692,
+ 0x0697, 0x069b, 0x06a6, 0x06aa, 0x06b0, 0x06b4, 0x06c4, 0x06d3,
+ 0x06de, 0x06e6, 0x06eb, 0x0701, 0x0709, 0x0714, 0x072a, 0x0732,
+ // Entry C0 - FF
+ 0x0737, 0x073f, 0x0744, 0x0750, 0x0758, 0x075f, 0x0765, 0x076d,
+ 0x0773, 0x077f, 0x078c, 0x0797, 0x079c, 0x07a3, 0x07ac, 0x07b8,
+ 0x07c0, 0x07d5, 0x07dd, 0x07e9, 0x07f3, 0x07fa, 0x0801, 0x0808,
+ 0x0808, 0x081f, 0x082a, 0x082a, 0x082f, 0x0838, 0x0848, 0x085e,
+ 0x0863, 0x0876, 0x087a, 0x0882, 0x088e, 0x0895, 0x089f, 0x08ab,
+ 0x08b2, 0x08b7, 0x08bd, 0x08cf, 0x08d5, 0x08db, 0x08e3, 0x08ea,
+ 0x08f0, 0x0903, 0x0906, 0x090d, 0x0917, 0x0924, 0x093e, 0x0947,
+ 0x0960, 0x097c, 0x0983, 0x098a, 0x099a, 0x099f, 0x099f, 0x09a4,
+ // Entry 100 - 13F
+ 0x09ab, 0x09b6, 0x09bc, 0x09c4, 0x09d2, 0x09d7, 0x09dd, 0x09e9,
+ 0x09f5, 0x09fc, 0x0a07, 0x0a16, 0x0a21, 0x0a2c, 0x0a3a, 0x0a49,
+ 0x0a50, 0x0a60, 0x0a67, 0x0a70, 0x0a79, 0x0a86, 0x0a91, 0x0aa9,
+ 0x0ab2, 0x0abc, 0x0ac5, 0x0ac9, 0x0ad5, 0x0ade, 0x0ae4, 0x0aef,
+ 0x0afa, 0x0b05, 0x0b12,
+ },
+ },
+ { // nnh
+ "Kàmalûm",
+ []uint16{ // 50 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0009,
+ },
+ },
+ { // no
+ noRegionStr,
+ noRegionIdx,
+ },
+ { // nus
+ "AndoraAbganithtanAntiguaa kɛnɛ BarbudaAŋguɛlaAlbäniaAɛrmäniaAŋgolaAɛrgen" +
+ "tinAmerika thamowAthtɛriaAthɔra̱liaArubaAdhe̱rbe̱ja̱nBothnia kɛnɛ ɣä" +
+ "rgobiniaBärbadothBengeladiecBe̱lgimBurkinɛ pa̱thuBulga̱a̱riaBa̱reenB" +
+ "urundiBe̱ni̱nBe̱rmudaaBurunɛyBulibiaBäraadhiilBämuɔthButa̱nBothiwaan" +
+ "aBe̱lɛruthBilidhaKänɛdaCɛntrɔl aprika repuɔblicKɔŋgɔKodibo̱o̱Kuk ɣa̱" +
+ "ylɛnCili̱KɛmɛrunCaynaKolombiaKothtirikaKɛp bedi ɣa̱ylɛnAlgeriaKorwaa" +
+ "tiaBurutic ɣe̱ndian oce̱nKombodiaKomruthKaymɛn ɣa̱ylɛnSudanCa̱dBurut" +
+ "ic dhuɔ̱ɔ̱l be̱rgin",
+ []uint16{ // 249 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0006, 0x0011, 0x0028, 0x0031, 0x0039,
+ 0x0043, 0x0043, 0x004a, 0x004a, 0x0054, 0x0062, 0x006b, 0x0077,
+ 0x007c, 0x007c, 0x008c, 0x00a7, 0x00b1, 0x00bc, 0x00c4, 0x00d4,
+ 0x00e1, 0x00e9, 0x00f0, 0x00f9, 0x00f9, 0x0103, 0x010b, 0x0112,
+ 0x0112, 0x011d, 0x0126, 0x012d, 0x012d, 0x0137, 0x0142, 0x0149,
+ 0x0151, 0x0151, 0x0151, 0x016c, 0x0174, 0x0174, 0x017f, 0x018d,
+ 0x0193, 0x019c, 0x01a1, 0x01a9, 0x01a9, 0x01b3, 0x01b3, 0x01c7,
+ 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7,
+ // Entry 40 - 7F
+ 0x01c7, 0x01c7, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
+ 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
+ 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
+ 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
+ 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce,
+ 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7,
+ 0x01d7, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0,
+ 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f8, 0x01f8, 0x01ff, 0x01ff,
+ // Entry 80 - BF
+ 0x01ff, 0x01ff, 0x01ff, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ // Entry C0 - FF
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211,
+ 0x0211, 0x0211, 0x0211, 0x0211, 0x0216, 0x0216, 0x0216, 0x0216,
+ 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216,
+ 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216,
+ 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b,
+ 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b,
+ 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b,
+ 0x0238,
+ },
+ },
+ { // nyn
+ "AndoraAmahanga ga Buharabu ageeteereineAfuganistaniAngiguwa na BabudaAng" +
+ "wiraArubaniaArimeniyaAntiri za HoorandiAngoraArigentinaSamowa ya Ame" +
+ "erikaOsituriaOsitureeriyaArubaAzabagyaniBoziniya na HezegovinaBabado" +
+ "siBangaradeshiBubirigiBokina FasoBurugariyaBahareniBurundiBeniniBeri" +
+ "mudaBuruneiBoriiviyaBuraziiriBahamaButaniBotswanaBararusiBerizeKanad" +
+ "aDemokoratika Ripaaburika ya KongoEihanga rya Rwagati ya AfirikaKong" +
+ "oSwisiAivore KositiEbizinga bya KuukuChileKameruuniChinaKorombiyaKos" +
+ "itarikaCubaEbizinga bya KepuvadeSaipurasiRipaaburika ya ZeekiBugirim" +
+ "aaniGyibutiDeenimaakaDominikaRipaaburika ya DominicaArigyeriyaIkweda" +
+ "EsitoniyaMisiriEriteriyaSipeyiniEthiyopiyaBufiniFigyiEbizinga bya Fa" +
+ "akilandaMikironesiyaBufaransaGabooniBungyerezaGurenadaGyogiyaGuyana " +
+ "ya BufaransaGanaGiburaataGuriinirandiGambiyaGineGwaderupeGuniGuriisi" +
+ "GwatemaraGwamuGinebisauGuyanaHondurasiKorasiyaHaitiHangareIndoneeziy" +
+ "aIrerandiIsirairiIndiyaEbizinga bya Indian ebya BungyerezaIraakaIraa" +
+ "niAisilandiItareGyamaikaYorudaaniGyapaaniKenyaKirigizistaniKambodiya" +
+ "KiribatiKoromoSenti Kittis na NevisiKoreya AmatembaKoreya AmashuumaK" +
+ "uweitiEbizinga bya KayimaniKazakisitaniLayosiLebanoniSenti RusiyaLis" +
+ "henteniSirirankaLiberiyaLesothoLithuaniaLakizembaagaLatviyaLibyaMoro" +
+ "ccoMonacoMoridovaMadagasikaEbizinga bya MarshaaMasedooniaMariMyanama" +
+ "rMongoriaEbizinga by’amatemba ga MarianaMartiniqueMauriteeniyaMontse" +
+ "rratiMaritaMaurishiasiMaridivesMarawiMexicomarayiziaMozambiqueNamibi" +
+ "yaNiukaredoniaNaigyaEkizinga NorifokoNaigyeriyaNikaragwaHoorandiNoor" +
+ "weNepoNauruNiueNiuzirandiOmaaniPanamaPeruPolinesia ya BufaransaPapua" +
+ "FiripinoPakisitaaniPoorandiSenti Piyerre na MikweronPitkainiPwetorik" +
+ "oParestiina na GazaPocugoPalaawuParagwaiKataRiyuniyoniRomaniyaRrasha" +
+ "RwandaSaudi AreebiyaEbizinga bya SurimaaniShesheresiSudaniSwideniSin" +
+ "gapoSenti HerenaSirovaaniyaSirovaakiyaSirra RiyooniSamarinoSenegoSom" +
+ "aariyaSurinaamuSawo Tome na PurinsipoEri SalivadoSiriyaSwazirandiEbi" +
+ "zinga bya Buturuki na KaikoChadiTogoTairandiTajikisitaniTokerawuBuru" +
+ "gweizooba bwa TimoriTurukimenisitaniTuniziaTongaButuruki /TakeTurini" +
+ "dad na TobagoTuvaruTayiwaaniTanzaniaUkureiniUgandaAmerikaUrugwaiUzib" +
+ "ekisitaniVatikaniSenti Vinsent na GurenadiniVenezuweraEbizinga bya V" +
+ "irigini ebya BungyerezaEbizinga bya Virigini ebya AmerikaViyetinaamu" +
+ "VanuatuWarris na FutunaSamowaYemeniMayoteSausi AfirikaZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054,
+ 0x005d, 0x006f, 0x0075, 0x0075, 0x007f, 0x0091, 0x0099, 0x00a5,
+ 0x00aa, 0x00aa, 0x00b4, 0x00ca, 0x00d2, 0x00de, 0x00e6, 0x00f1,
+ 0x00fb, 0x0103, 0x010a, 0x0110, 0x0110, 0x0118, 0x011f, 0x0128,
+ 0x0128, 0x0131, 0x0137, 0x013d, 0x013d, 0x0145, 0x014d, 0x0153,
+ 0x0159, 0x0159, 0x017a, 0x0198, 0x019d, 0x01a2, 0x01af, 0x01c1,
+ 0x01c6, 0x01cf, 0x01d4, 0x01dd, 0x01dd, 0x01e7, 0x01eb, 0x0200,
+ 0x0200, 0x0200, 0x0209, 0x021d, 0x0228, 0x0228, 0x022f, 0x0239,
+ // Entry 40 - 7F
+ 0x0241, 0x0258, 0x0262, 0x0262, 0x0268, 0x0271, 0x0277, 0x0277,
+ 0x0280, 0x0288, 0x0292, 0x0292, 0x0298, 0x029d, 0x02b4, 0x02c0,
+ 0x02c0, 0x02c9, 0x02d0, 0x02da, 0x02e2, 0x02e9, 0x02fc, 0x02fc,
+ 0x0300, 0x0309, 0x0315, 0x031c, 0x0320, 0x0329, 0x032d, 0x0334,
+ 0x0334, 0x033d, 0x0342, 0x034b, 0x0351, 0x0351, 0x0351, 0x035a,
+ 0x0362, 0x0367, 0x036e, 0x036e, 0x0379, 0x0381, 0x0389, 0x0389,
+ 0x038f, 0x03b2, 0x03b8, 0x03be, 0x03c7, 0x03cc, 0x03cc, 0x03d4,
+ 0x03dd, 0x03e5, 0x03ea, 0x03f7, 0x0400, 0x0408, 0x040e, 0x0424,
+ // Entry 80 - BF
+ 0x0433, 0x0443, 0x044a, 0x045f, 0x046b, 0x0471, 0x0479, 0x0485,
+ 0x048f, 0x0498, 0x04a0, 0x04a7, 0x04b0, 0x04bc, 0x04c3, 0x04c8,
+ 0x04cf, 0x04d5, 0x04dd, 0x04dd, 0x04dd, 0x04e7, 0x04fb, 0x0505,
+ 0x0509, 0x0511, 0x0519, 0x0519, 0x053a, 0x0544, 0x0550, 0x055b,
+ 0x0561, 0x056c, 0x0575, 0x057b, 0x0581, 0x058a, 0x0594, 0x059c,
+ 0x05a8, 0x05ae, 0x05bf, 0x05c9, 0x05d2, 0x05da, 0x05e0, 0x05e4,
+ 0x05e9, 0x05ed, 0x05f7, 0x05fd, 0x0603, 0x0607, 0x061d, 0x0622,
+ 0x062a, 0x0635, 0x063d, 0x0656, 0x065e, 0x0667, 0x0679, 0x067f,
+ // Entry C0 - FF
+ 0x0686, 0x068e, 0x0692, 0x0692, 0x069c, 0x06a4, 0x06a4, 0x06aa,
+ 0x06b0, 0x06be, 0x06d4, 0x06de, 0x06e4, 0x06eb, 0x06f2, 0x06fe,
+ 0x0709, 0x0709, 0x0714, 0x0721, 0x0729, 0x072f, 0x0738, 0x0741,
+ 0x0741, 0x0757, 0x0763, 0x0763, 0x0769, 0x0773, 0x0773, 0x0791,
+ 0x0796, 0x0796, 0x079a, 0x07a2, 0x07ae, 0x07b6, 0x07ce, 0x07de,
+ 0x07e5, 0x07ea, 0x07f8, 0x080b, 0x0811, 0x081a, 0x0822, 0x082a,
+ 0x0830, 0x0830, 0x0837, 0x083e, 0x084b, 0x0853, 0x086e, 0x0878,
+ 0x089d, 0x08bf, 0x08ca, 0x08d1, 0x08e1, 0x08e7, 0x08e7, 0x08ed,
+ // Entry 100 - 13F
+ 0x08f3, 0x0900, 0x0906, 0x090e,
+ },
+ },
+ { // om
+ "BrazilChinaGermanyItoophiyaaFranceUnited KingdomIndiaItalyJapanKeeniyaaR" +
+ "ussiaUnited States",
+ []uint16{ // 243 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b,
+ 0x000b, 0x000b, 0x000b, 0x000b, 0x0012, 0x0012, 0x0012, 0x0012,
+ // Entry 40 - 7F
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ 0x001c, 0x0022, 0x0022, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+ 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+ 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+ 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003a, 0x003a, 0x003a,
+ 0x003a, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ // Entry 80 - BF
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047,
+ // Entry C0 - FF
+ 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x004d,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
+ 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d,
+ 0x004d, 0x004d, 0x005a,
+ },
+ },
+ { // or
+ "ଆଣ୍ଡୋରାସଂଯୁକ୍ତ ଆରବ ଏମିରେଟସ୍ଆଫାଗାନିସ୍ତାନ୍ଆଣ୍ଟିଗୁଆ ଏବଂ ବାରବୁଦାଆଙ୍ଗୁଇଲ୍ଲାଆଲ" +
+ "ବାନିଆଆର୍ମେନିଆନେଦରଲ୍ୟାଣ୍ଡସ୍ ଆଣ୍ଟିଲିଜ୍ଆଙ୍ଗୋଲାଆର୍ଣ୍ଟକଟିକାଆର୍ଜେଣ୍ଟିନାଆ" +
+ "ମେରିକାନ୍ ସାମୋଆଅଷ୍ଟ୍ରିଆଅଷ୍ଟ୍ରେଲିଆଆରୁବାଆଲାଣ୍ଡ ଆଇସଲ୍ୟାଣ୍ଡଆଜେରବାଇଜାନ୍ବ" +
+ "ୋସନିଆ ଏବଂ ହର୍ଜଗୋଭିନାବାରବାଡୋସ୍ବାଙ୍ଗଲାଦେଶ୍ବେଲଜିୟମ୍ବୁର୍କିନୋ ଫାସୋବୁଲଗେ" +
+ "ରିଆବାହାରିନ୍ବୁରୁନ୍ଦିବେନିନ୍ସେଣ୍ଟ ବାର୍ଥେଲେମିବରମୁଡାବ୍ରୁନେଇବୋଲଭିଆବ୍ରାଜି" +
+ "ଲ୍ବାହାମାସ୍ଭୁଟାନ୍ବୌଭେଟ୍ ଆଇସଲ୍ୟାଣ୍ଡବୋଟସ୍ବାନ୍ବେଲାରୁଷ୍ବେଲିଜ୍କାନାଡାକୋକୋ" +
+ "ସ୍ ଆଇସଲ୍ୟାଣ୍ଡକଙ୍ଗୋ-କିନସାସାମଧ୍ୟ ଆଫ୍ରିକୀୟ ଗଣତନ୍ତ୍ରକଙ୍ଗୋ-ବ୍ରାଜିଭିଲ୍ଲେ" +
+ "ସ୍ବିଜରଲ୍ୟାଣ୍ଡଆଇବରୀ କୋଷ୍ଟକୁକ୍ ଆଇସଲ୍ୟାଣ୍ଡଚିଲ୍ଲୀକାମେରୁନ୍ଚିନ୍କୋଲମ୍ବିଆକ" +
+ "ୋଷ୍ଟା ରିକାକ୍ୱିବାକେପ୍ ଭର୍ଦେଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡସାଇପ୍ରସ୍ଚେକ୍ ସାଧାରଣତ" +
+ "ନ୍ତ୍ରଜର୍ମାନୀଡିବୌଟିଡେନମାର୍କଡୋମିନାକାଡୋମିନକାନ୍ ପ୍ରଜାତନ୍ତ୍ରଆଲଜେରିଆଇକ୍ୱ" +
+ "ାଡୋର୍ଏସ୍ତୋନିଆଇଜିପ୍ଟପଶ୍ଚିମ ସାହାରାଇରିଟ୍ରିୟାସ୍ପେନ୍ଇଥିଓପିଆୟୁରୋପିଆନ୍ ୟୁ" +
+ "ନିଅନ୍ଫିନଲ୍ୟାଣ୍ଡଫିଜିଫଲ୍କଲ୍ୟାଣ୍ଡ ଦ୍ବୀପପୁଞ୍ଜମାଇକ୍ରୋନେସିଆଫାରୋଇ ଦ୍ବୀପପୁ" +
+ "ଞ୍ଜଫ୍ରାନ୍ସଗାବୋନ୍ବ୍ରିଟେନ୍ଗ୍ରେନାଡାଜର୍ଜିଆଫ୍ରେଞ୍ଚ ଗୁଇନାଗୁଏରନେସିଘାନାଜିବ" +
+ "୍ରାଲ୍ଟର୍ଗ୍ରୀନଲ୍ୟାଣ୍ଡଗାମ୍ବିଆଗୁଏନେଆଗୌଡେଲୌପେଇକ୍ବାଟେରିଆଲ୍ ଗୁଇନିଆଗ୍ରୀସ୍" +
+ "ଦକ୍ଷିଣ ଜର୍ଜିଆ ଏବଂ ଦକ୍ଷିଣ ସାଣ୍ଡୱିଚ୍ ଦ୍ବୀପପୁଞ୍ଜଗୁଏତମାଲାଗୁଆମ୍ଗୁଇନିଆ-ବ" +
+ "ିସାଉଗୁଇନାହଂକଂ ବିଶେଷ ପ୍ରଶାସନିକ କ୍ଷେତ୍ର ଚୀନ୍ହାର୍ଡ ଦ୍ବୀପପୁଞ୍ଜ ଏବଂ ମ୍ୟ" +
+ "ାକଡୋନାଲ୍ ଦ୍ବୀପପୁଞ୍ଜହୋଣ୍ଡାରୁସ୍କ୍ରୋଆଟିଆହାଇତିହଙ୍ଗେରୀଇଣ୍ଡୋନେସିଆଆୟରଲ୍ୟା" +
+ "ଣ୍ଡଇସ୍ରାଏଲ୍ଆଇଲ୍ ଅଫ୍ ମୈନ୍ଭାରତବ୍ରିଟିଶ୍ ଭାରତୀୟ ସାମୁଦ୍ରିକ କ୍ଷେତ୍ରଇରାକ୍" +
+ "ଇରାନ୍ଆଇସଲ୍ୟାଣ୍ଡଇଟାଲୀଜର୍ସିଜାମାଇକାଜୋର୍ଡାନ୍ଜାପାନ୍କେନିୟାକିର୍ଗିଜିସ୍ଥାନକ" +
+ "ାମ୍ବୋଡିଆକିରିବାଟୀକାମୋରସ୍ସେଣ୍ଟ କିଟସ୍ ଏଣ୍ଡ ନେଭିସ୍ଉତ୍ତର କୋରିଆଦକ୍ଷିଣ କୋ" +
+ "ରିଆକୁଏତ୍କେମ୍ୟାନ୍ ଦ୍ବୀପପୁଞ୍ଜକାଜାକାସ୍ଥାନ୍ଲାଓସ୍ଲେବାନନ୍ସେଣ୍ଟ ଲୁସିଆଲିଚେ" +
+ "ସ୍ତିଆନାନ୍ଶ୍ରୀଲଙ୍କାଲିବେରିଆଲେସୋଥୋଲିଥାଆନିଆଲକ୍ସେମବର୍ଗଲାଟଭିଆଲିବିଆମୋରୋକ୍" +
+ "କୋମୋନାକୋମାଲଡୋଭାମଣ୍ଟେଗ୍ରୋସେଣ୍ଟ ମାର୍ଟିନ୍ମାଡାଗାସ୍କର୍ମାର୍ଶଲ୍ ଦ୍ବୀପପୁଞ୍" +
+ "ଜମାସେଡୋନିଆମାଳୀମିୟାମାର୍ମଙ୍ଗୋଲିଆମାକାଉ SAR ଚିନ୍ଉତ୍ତର ମାରିଆନା ଦ୍ବୀପପୁଞ" +
+ "୍ଜମାର୍ଟିନିକ୍ୟୁମାଉରିଟାନିଆମଣ୍ଟେସେରାଟ୍ମାଲ୍ଟାମୌରିସସ୍ମାଳଦ୍ବୀପମାଲୱିମେକ୍ସ" +
+ "ିକୋମାଲେସିଆମୋଜାମ୍ବିକ୍ୟୁନାମ୍ବିଆନୂତନ କାଲେଡୋନିଆନାଇଜର୍ନରଫ୍ଲକ୍ ଦ୍ବୀପନାଇଜ" +
+ "େରିଆନିକାରାଗୁଆନେଦରଲ୍ୟାଣ୍ଡନରୱେନେପାଳନାଉରୁନିଉନ୍ୟୁଜିଲାଣ୍ଡଓମାନ୍ପାନାମାପେର" +
+ "ୁଫ୍ରେଞ୍ଚ ପଲିନେସିଆପପୁଆ ନ୍ୟୁ ଗୁଏନିଆଫିଲିପାଇନସ୍ପାକିସ୍ତାନପୋଲାଣ୍ଡସେଣ୍ଟ ପ" +
+ "ିଏରେ ଏବଂ ମିକ୍ବାଲୋନ୍ପିଟକାଇରିନ୍ପୁଏର୍ତ୍ତୋ ରିକୋପାଲେସ୍ତେନିଆପର୍ତ୍ତୁଗାଲ୍ପ" +
+ "ାଲାଉପାରାଗୁଏକତାର୍ଆଉଟଲେଇଂ ଓସେନିଆରିୟୁନିଅନ୍ରୋମାନିଆସର୍ବିଆରୁଷିଆରାୱାଣ୍ଡାସ" +
+ "ାଉଦି ଆରବିଆସୋଲୋମନ୍ ଦ୍ବୀପପୁଞ୍ଜସେଚେଲସ୍ସୁଦାନ୍ସ୍ୱେଡେନ୍ସିଙ୍ଗାପୁର୍ସେଣ୍ଟ ହ" +
+ "େଲେନାସ୍ଲୋଭେନିଆସାଲ୍ଭାର୍ଡ ଏବଂ ଜାନ୍ ମାୟୋନ୍ସ୍ଲୋଭାକିଆସିଓରା ଲିଓନ୍ସାନ୍ ମା" +
+ "ରିନୋସେନେଗାଲ୍ସୋମାଲିଆସୁରିନାମସାଓ ଟୋମେ ଏବଂ ପ୍ରିନସିପିଏଲ୍ ସାଲଭାଡୋର୍ସିରିଆ" +
+ "ସ୍ବାଜିଲାଣ୍ଡତୁର୍କସ୍ ଏବଂ ସାଇକସ୍ ଦ୍ବୀପପୁଞ୍ଜଚାଦ୍ଫରାସୀ ଦକ୍ଷିଣ କ୍ଷେତ୍ରଟୋ" +
+ "ଗୋଥାଇଲାଣ୍ଡତାଜିକିସ୍ଥାନ୍ଟୋକେଲାଉପୁର୍ବ ତିମୋର୍ତୁର୍କମେନିସ୍ତାନ୍ତୁନିସିଆଟୋଙ" +
+ "୍ଗାତୁର୍କୀତ୍ରିନିଦାଦ୍ ଏବଂ ଟୋବାଗୋଟୁଭାଲୁତାଇୱାନ୍ତାଞ୍ଜାନିଆୟୁକ୍ରାଇନ୍ଉଗାଣ୍" +
+ "ଡାୟୁନାଇଟେଡ୍ ଷ୍ଟେଟସ୍ ମାଇନର୍ ଆଉଟଲେଇଂ ଦ୍ବୀପପୁଞ୍ଜଯୁକ୍ତ ରାଷ୍ଟ୍ର ଆମେରିକା" +
+ "ଉରୁଗୁଏଉଜବେକିସ୍ଥାନ୍ଭାଟିକାନ୍ସେଣ୍ଟ ଭିନସେଣ୍ଟ ଏବଂ ଦି ଗ୍ରେନାଡିସ୍ଭେନଜୁଏଲା" +
+ "ବ୍ରିଟିଶ୍ ଭର୍ଜିନ୍ ଦ୍ବୀପପୁଞ୍ଜୟୁଏସ୍ ଭର୍ଜିନ୍ ଦ୍ବୀପପୁଞ୍ଜଭିଏତନାମ୍ଭାନୁଆତୁ" +
+ "ୱାଲିସ୍ ଏବଂ ଫୁତୁନାସାମୋଆୟେମେନ୍ମାୟୋଟେଦକ୍ଷିଣ ଆଫ୍ରିକାଜାମ୍ବିଆଜିମ୍ବାୱେଅଜଣ" +
+ "ା କିମ୍ବା ଅବୈଧ ପ୍ରଦେଶବିଶ୍ବଆଫ୍ରିକାଉତ୍ତର ଆମେରିକାଦକ୍ଷିଣ ଆମେରିକାଓସୋନିଆନ" +
+ "୍ପଶ୍ଚିମ ଆଫ୍ରିକାମଧ୍ୟ ଆମେରିକାପୂର୍ବ ଆଫ୍ରିକାଉତ୍ତର ଆଫ୍ରିକାମଧ୍ୟ ଆଫ୍ରିକାଦ" +
+ "କ୍ଷିଣସ୍ଥ ଆଫ୍ରିକାଆମେରିକାସ୍ଉତ୍ତରସ୍ଥ ଆମେରିକାକାରିବିଆନ୍ପୂର୍ବ ଏସିଆଦକ୍ଷିଣ" +
+ " ଏସିଆଦକ୍ଷିଣ-ପୂର୍ବ ଏସିଆଦକ୍ଷିଣ ୟୁରୋପ୍ଅଷ୍ଟ୍ରେଲିଆ ଏବଂ ନ୍ୟୁଜିଲ୍ୟାଣ୍ଡମେଲାନ" +
+ "େସିଆମାଇକ୍ରୋନେସିଆନ୍ ଅଞ୍ଚଳପଲିନେସିଆଏସିଆମଧ୍ୟ ଏସିଆପଶ୍ଚିମ ଏସିଆୟୁରୋପ୍ପୂର୍" +
+ "ବ ୟୁରୋପ୍ଉତ୍ତର ୟୁରୋପ୍ପଶ୍ଚିମ ୟୁରୋପ୍ଲାଟିନ୍ ଆମେରିକା ଏବଂ କାରିବିଆନ୍",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0015, 0x004d, 0x0074, 0x00ac, 0x00ca, 0x00df,
+ 0x00f7, 0x013a, 0x014f, 0x0170, 0x0191, 0x01bc, 0x01d4, 0x01f2,
+ 0x0201, 0x0232, 0x0253, 0x028e, 0x02a9, 0x02ca, 0x02e2, 0x0307,
+ 0x031f, 0x0337, 0x034f, 0x0361, 0x038f, 0x03a1, 0x03b6, 0x03c8,
+ 0x03c8, 0x03e0, 0x03f8, 0x040a, 0x043b, 0x0456, 0x046e, 0x0480,
+ 0x0492, 0x04c3, 0x04e8, 0x0526, 0x055a, 0x0581, 0x05a0, 0x05cb,
+ 0x05dd, 0x05f5, 0x0601, 0x0619, 0x0619, 0x0638, 0x064a, 0x0666,
+ 0x0666, 0x06a0, 0x06b8, 0x06e9, 0x06fe, 0x06fe, 0x0710, 0x0728,
+ // Entry 40 - 7F
+ 0x0740, 0x077d, 0x0792, 0x0792, 0x07ad, 0x07c5, 0x07d7, 0x07fc,
+ 0x0817, 0x0829, 0x083e, 0x086f, 0x088d, 0x0899, 0x08d9, 0x08fd,
+ 0x092b, 0x0940, 0x0952, 0x096a, 0x0982, 0x0994, 0x09b9, 0x09d1,
+ 0x09dd, 0x09fe, 0x0a22, 0x0a37, 0x0a49, 0x0a61, 0x0a98, 0x0aaa,
+ 0x0b27, 0x0b3f, 0x0b4e, 0x0b70, 0x0b7f, 0x0bda, 0x0c53, 0x0c71,
+ 0x0c89, 0x0c98, 0x0cad, 0x0cad, 0x0ccb, 0x0ce9, 0x0d01, 0x0d24,
+ 0x0d30, 0x0d8d, 0x0d9c, 0x0dab, 0x0dc9, 0x0dd8, 0x0de7, 0x0dfc,
+ 0x0e14, 0x0e26, 0x0e38, 0x0e5f, 0x0e7a, 0x0e92, 0x0ea7, 0x0ee6,
+ // Entry 80 - BF
+ 0x0f05, 0x0f27, 0x0f36, 0x0f6d, 0x0f91, 0x0fa0, 0x0fb5, 0x0fd4,
+ 0x0ffb, 0x1016, 0x102b, 0x103d, 0x1055, 0x1073, 0x1085, 0x1094,
+ 0x10ac, 0x10be, 0x10d3, 0x10ee, 0x1116, 0x1137, 0x116b, 0x1186,
+ 0x1192, 0x11aa, 0x11c2, 0x11e2, 0x1226, 0x124a, 0x1268, 0x1289,
+ 0x129b, 0x12b0, 0x12c8, 0x12d7, 0x12ef, 0x1304, 0x1328, 0x133d,
+ 0x1365, 0x1377, 0x139c, 0x13b4, 0x13cf, 0x13f0, 0x13fc, 0x140b,
+ 0x141a, 0x1423, 0x1444, 0x1453, 0x1465, 0x1471, 0x149f, 0x14cb,
+ 0x14e9, 0x1504, 0x1519, 0x1561, 0x157f, 0x15a7, 0x15c8, 0x15e9,
+ // Entry C0 - FF
+ 0x15f8, 0x160d, 0x161c, 0x1644, 0x165f, 0x1674, 0x1686, 0x1695,
+ 0x16ad, 0x16cc, 0x1700, 0x1715, 0x1727, 0x173f, 0x175d, 0x177f,
+ 0x179a, 0x17df, 0x17fa, 0x1819, 0x1838, 0x1850, 0x1865, 0x187a,
+ 0x187a, 0x18b6, 0x18db, 0x18db, 0x18ea, 0x190b, 0x190b, 0x195c,
+ 0x1968, 0x19a0, 0x19ac, 0x19c4, 0x19e8, 0x19fd, 0x1a1f, 0x1a4c,
+ 0x1a61, 0x1a73, 0x1a85, 0x1ac0, 0x1ad2, 0x1ae7, 0x1b02, 0x1b1d,
+ 0x1b32, 0x1bab, 0x1be6, 0x1bf8, 0x1c1c, 0x1c34, 0x1c8c, 0x1ca4,
+ 0x1cf1, 0x1d35, 0x1d4d, 0x1d62, 0x1d91, 0x1da0, 0x1da0, 0x1db2,
+ // Entry 100 - 13F
+ 0x1dc4, 0x1dec, 0x1e01, 0x1e19, 0x1e58, 0x1e67, 0x1e7c, 0x1ea1,
+ 0x1ec9, 0x1ee1, 0x1f09, 0x1f2b, 0x1f50, 0x1f75, 0x1f97, 0x1fc8,
+ 0x1fe3, 0x2011, 0x202c, 0x2048, 0x2067, 0x2096, 0x20bb, 0x210b,
+ 0x2126, 0x2160, 0x2178, 0x2184, 0x219d, 0x21bc, 0x21ce, 0x21f0,
+ 0x2212, 0x2237, 0x2285,
+ },
+ },
+ { // os
+ "БразилиКитайГерманФранцСтыр БританиГуырдзыстонИндиИталиЯпонУӕрӕсеАИШНӕзо" +
+ "нгӕ бӕстӕДунеАфрикӕОкеаниАмерикӕАзиЕвропӕ",
+ []uint16{ // 287 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e,
+ 0x000e, 0x000e, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
+ 0x0018, 0x0018, 0x0018, 0x0018, 0x0024, 0x0024, 0x0024, 0x0024,
+ // Entry 40 - 7F
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
+ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024,
+ 0x0024, 0x002e, 0x002e, 0x0045, 0x0045, 0x005b, 0x005b, 0x005b,
+ 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
+ 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
+ 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
+ 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x006d, 0x006d,
+ 0x006d, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ // Entry 80 - BF
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075,
+ // Entry C0 - FF
+ 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
+ 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087,
+ // Entry 100 - 13F
+ 0x0087, 0x0087, 0x0087, 0x0087, 0x00a0, 0x00a8, 0x00b4, 0x00b4,
+ 0x00b4, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0,
+ 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce,
+ 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00e0,
+ },
+ },
+ { // pa
+ paRegionStr,
+ paRegionIdx,
+ },
+ { // pa-Arab
+ "پکستان",
+ []uint16{ // 186 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x000c,
+ },
+ },
+ { // pl
+ plRegionStr,
+ plRegionIdx,
+ },
+ {}, // prg
+ { // ps
+ "افغانستانالبانیهانګولاانتارکتیکااتریشبنګله\u200cدیشبلغاریهکاناډاسویسچینک" +
+ "ولمبیاکیوباالمانډنمارکالجزایرمصرهسپانیهحبشهفنلینډفرانسهبرتانیهګاناګ" +
+ "یانایونانګواتیمالاهانډوراسمجارستاناندونیزیاهندعراقآیسلینډایټالیهجمی" +
+ "کاجاپانکمبودیاکویټلاوسلبنانلایبریالیبیامراکشمغولستانمالیزیانایجیریا" +
+ "نکاراګواهالېنډناروېنیپالنیوزیلنډپاکستانپولنډفلسطینپورتګالروسیهروندا" +
+ "سعودی عربستانسویډنسالوېډورسوریهتاجکستانتنزانیایوروګواییمن",
+ []uint16{ // 256 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0020,
+ 0x0020, 0x0020, 0x002c, 0x0040, 0x0040, 0x0040, 0x004a, 0x004a,
+ 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x005d, 0x005d, 0x005d,
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
+ 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b,
+ 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x007f, 0x007f, 0x007f,
+ 0x007f, 0x007f, 0x0085, 0x0093, 0x0093, 0x0093, 0x009d, 0x009d,
+ 0x009d, 0x009d, 0x009d, 0x009d, 0x00a7, 0x00a7, 0x00a7, 0x00b3,
+ // Entry 40 - 7F
+ 0x00b3, 0x00b3, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c7, 0x00c7,
+ 0x00c7, 0x00d5, 0x00dd, 0x00dd, 0x00e9, 0x00e9, 0x00e9, 0x00e9,
+ 0x00e9, 0x00f5, 0x00f5, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103,
+ 0x010b, 0x010b, 0x010b, 0x010b, 0x0115, 0x0115, 0x0115, 0x011f,
+ 0x011f, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0141,
+ 0x0141, 0x0141, 0x0151, 0x0151, 0x0163, 0x0163, 0x0163, 0x0163,
+ 0x0169, 0x0169, 0x0171, 0x0171, 0x017f, 0x018d, 0x018d, 0x0197,
+ 0x0197, 0x01a1, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01af, 0x01af,
+ // Entry 80 - BF
+ 0x01af, 0x01af, 0x01b7, 0x01b7, 0x01b7, 0x01bf, 0x01c9, 0x01c9,
+ 0x01c9, 0x01c9, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01e1,
+ 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb, 0x01eb,
+ 0x01eb, 0x01eb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb,
+ 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x0209, 0x0209, 0x0209,
+ 0x0209, 0x0209, 0x0209, 0x0219, 0x0229, 0x0235, 0x023f, 0x0249,
+ 0x0249, 0x0249, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259, 0x0259,
+ 0x0259, 0x0267, 0x0271, 0x0271, 0x0271, 0x0271, 0x027d, 0x028b,
+ // Entry C0 - FF
+ 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x0295,
+ 0x029f, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02c2, 0x02c2, 0x02c2,
+ 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2,
+ 0x02c2, 0x02c2, 0x02d2, 0x02d2, 0x02dc, 0x02dc, 0x02dc, 0x02dc,
+ 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02ec, 0x02ec, 0x02ec, 0x02ec,
+ 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02ec, 0x02fa, 0x02fa,
+ 0x02fa, 0x02fa, 0x02fa, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a,
+ 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x030a, 0x0310,
+ },
+ },
+ { // pt
+ ptRegionStr,
+ ptRegionIdx,
+ },
+ { // pt-PT
+ ptPTRegionStr,
+ ptPTRegionIdx,
+ },
+ { // qu
+ "AndorraAfganistánAlbaniaArmeniaAngolaArgentinaSamoa AmericanaAustriaAust" +
+ "raliaAzerbaiyánBangladeshBélgicaBulgariaBaréinBurundiBenínBrunéiBoli" +
+ "viaBonaireBrasilBahamasButánBotsuanaBelarúsIslas CocosCongo (RDC)Con" +
+ "goSuizaCôte d’IvoireChileCamerúnChinaColombiaCosta RicaCubaCurazaoIs" +
+ "la ChristmasChipreAlemaniaYibutiDinamarcaDominicaArgeliaEcuadorEston" +
+ "iaEgiptoEritreaEspañaEtiopíaFinlandiaFiyiMicronesiaFranciaGabónReino" +
+ " UnidoGuerneseyGhanaGambiaGuineaGuinea EcuatorialGreciaGuatemalaGuam" +
+ "Guinea-BisáuGuyanaHong Kong (RAE)Islas Heard y McDonaldHondurasCroac" +
+ "iaHaitíIndonesiaIsraelIndiaIrakIránIslandiaItaliaJerseyJordaniaKenia" +
+ "KirguistánCamboyaKiribatiComorasSan Cristóbal y NievesCorea del Nort" +
+ "eCorea del SurKuwaitKazajistánLaosLíbanoLiechtensteinSri LankaLiberi" +
+ "aLesotoLituaniaLuxemburgoLetoniaMarruecosMónacoMoldovaSan MartínMada" +
+ "gascarIslas MarshallERY MacedoniaMalíMyanmarMacao RAEIslas Marianas " +
+ "del NorteMauritaniaMaltaMauricioMaldivasMalawiMéxicoMozambiqueNamibi" +
+ "aNueva CaledoniaNígerIsla NorfolkNigeriaNicaraguaPaíses BajosNoruega" +
+ "NepalNauruOmánPanamáPerúPolinesia FrancesaPapúa Nueva GuineaFilipina" +
+ "sPakistánPoloniaSan Pedro y MiquelónIslas PitcairnPuerto RicoPalesti" +
+ "na KamachikuqPortugalPalaosParaguayQatarSerbiaRusiaRuandaArabia Saud" +
+ "íSeychellesSudánSueciaSingapurEsloveniaEslovaquiaSierra LeonaSan Ma" +
+ "rinoSenegalSomaliaSurinamSudán del SurSanto Tomé y PríncipeEl Salvad" +
+ "orSint MaartenSiriaSuazilandiaChadTerritorios Australes FrancesesTog" +
+ "oTailandiaTayikistánTimor-LesteTúnezTongaTurquíaTrinidad y TobagoTan" +
+ "zaniaUgandaIslas menores alejadas de los EE.UU.Estados UnidosUruguay" +
+ "UzbekistánSanta Sede (Ciudad del Vaticano)VenezuelaEE.UU. Islas Vírg" +
+ "enesVietnamVanuatuWallis y FutunaSamoaYemenSudáfricaZambiaZimbabue",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0007, 0x0012, 0x0012, 0x0012, 0x0019,
+ 0x0020, 0x0020, 0x0026, 0x0026, 0x002f, 0x003e, 0x0045, 0x004e,
+ 0x004e, 0x004e, 0x0059, 0x0059, 0x0059, 0x0063, 0x006b, 0x006b,
+ 0x0073, 0x007a, 0x0081, 0x0087, 0x0087, 0x0087, 0x008e, 0x0095,
+ 0x009c, 0x00a2, 0x00a9, 0x00af, 0x00af, 0x00b7, 0x00bf, 0x00bf,
+ 0x00bf, 0x00ca, 0x00d5, 0x00d5, 0x00da, 0x00df, 0x00ef, 0x00ef,
+ 0x00f4, 0x00fc, 0x0101, 0x0109, 0x0109, 0x0113, 0x0117, 0x0117,
+ 0x011e, 0x012c, 0x0132, 0x0132, 0x013a, 0x013a, 0x0140, 0x0149,
+ // Entry 40 - 7F
+ 0x0151, 0x0151, 0x0158, 0x0158, 0x015f, 0x0166, 0x016c, 0x016c,
+ 0x0173, 0x017a, 0x0182, 0x0182, 0x018b, 0x018f, 0x018f, 0x0199,
+ 0x0199, 0x01a0, 0x01a6, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01ba,
+ 0x01bf, 0x01bf, 0x01bf, 0x01c5, 0x01cb, 0x01cb, 0x01dc, 0x01e2,
+ 0x01e2, 0x01eb, 0x01ef, 0x01fc, 0x0202, 0x0211, 0x0227, 0x022f,
+ 0x0236, 0x023c, 0x023c, 0x023c, 0x0245, 0x0245, 0x024b, 0x024b,
+ 0x0250, 0x0250, 0x0254, 0x0259, 0x0261, 0x0267, 0x026d, 0x026d,
+ 0x0275, 0x0275, 0x027a, 0x0285, 0x028c, 0x0294, 0x029b, 0x02b2,
+ // Entry 80 - BF
+ 0x02c1, 0x02ce, 0x02d4, 0x02d4, 0x02df, 0x02e3, 0x02ea, 0x02ea,
+ 0x02f7, 0x0300, 0x0307, 0x030d, 0x0315, 0x031f, 0x0326, 0x0326,
+ 0x032f, 0x0336, 0x033d, 0x033d, 0x0348, 0x0352, 0x0360, 0x036d,
+ 0x0372, 0x0379, 0x0379, 0x0382, 0x039a, 0x039a, 0x03a4, 0x03a4,
+ 0x03a9, 0x03b1, 0x03b9, 0x03bf, 0x03c6, 0x03c6, 0x03d0, 0x03d7,
+ 0x03e6, 0x03ec, 0x03f8, 0x03ff, 0x0408, 0x0415, 0x041c, 0x0421,
+ 0x0426, 0x0426, 0x0426, 0x042b, 0x0432, 0x0437, 0x0449, 0x045c,
+ 0x0465, 0x046e, 0x0475, 0x048a, 0x0498, 0x04a3, 0x04b7, 0x04bf,
+ // Entry C0 - FF
+ 0x04c5, 0x04cd, 0x04d2, 0x04d2, 0x04d2, 0x04d2, 0x04d8, 0x04dd,
+ 0x04e3, 0x04f0, 0x04f0, 0x04fa, 0x0500, 0x0506, 0x050e, 0x050e,
+ 0x0517, 0x0517, 0x0521, 0x052d, 0x0537, 0x053e, 0x0545, 0x054c,
+ 0x055a, 0x0571, 0x057c, 0x0588, 0x058d, 0x0598, 0x0598, 0x0598,
+ 0x059c, 0x05bb, 0x05bf, 0x05c8, 0x05d3, 0x05d3, 0x05de, 0x05de,
+ 0x05e4, 0x05e9, 0x05f1, 0x0602, 0x0602, 0x0602, 0x060a, 0x060a,
+ 0x0610, 0x0634, 0x0642, 0x0649, 0x0654, 0x0674, 0x0674, 0x067d,
+ 0x067d, 0x0693, 0x069a, 0x06a1, 0x06b0, 0x06b5, 0x06b5, 0x06ba,
+ // Entry 100 - 13F
+ 0x06ba, 0x06c4, 0x06ca, 0x06d2,
+ },
+ },
+ { // rm
+ "AndorraEmirats Arabs UnidsAfghanistanAntigua e BarbudaAnguillaAlbaniaArm" +
+ "eniaAntillas OllandaisasAngolaAntarcticaArgentiniaSamoa AmericanaAus" +
+ "triaAustraliaArubaInslas AlandAserbaidschanBosnia ed ErzegovinaBarba" +
+ "dosBangladeschBelgiaBurkina FasoBulgariaBahrainBurundiBeninSon Barth" +
+ "élemyBermudasBruneiBoliviaBrasilaBahamasBhutanInsla BouvetBotswanaB" +
+ "ielorussiaBelizeCanadaInslas CocosRepublica Democratica dal CongoRep" +
+ "ublica CentralafricanaCongoSvizraCosta d’IvurInslas CookChileCamerun" +
+ "ChinaColumbiaCosta RicaCubaCap VerdInsla da ChristmasCipraRepublica " +
+ "TschecaGermaniaDschibutiDanemarcDominicaRepublica DominicanaAlgeriaE" +
+ "cuadorEstoniaEgiptaSahara OccidentalaEritreaSpagnaEtiopiaUniun europ" +
+ "eicaFinlandaFidschiInslas dal FalklandMicronesiaInslas FeroeFrantsch" +
+ "aGabunReginavel UnìGrenadaGeorgiaGuyana FranzosaGuernseyGhanaGibralt" +
+ "arGrönlandaGambiaGuineaGuadeloupeGuinea EquatorialaGreziaGeorgia dal" +
+ " Sid e las Inslas Sandwich dal SidGuatemalaGuamGuinea-BissauGuyanaRe" +
+ "giun d’administraziun speziala da Hongkong, ChinaInslas da Heard e d" +
+ "a McDonladHondurasCroaziaHaitiUngariaIndonesiaIrlandaIsraelInsla da " +
+ "ManIndiaTerritori Britannic en l’Ocean IndicIracIranIslandaItaliaJer" +
+ "seyGiamaicaJordaniaGiapunKeniaKirghisistanCambodschaKiribatiComorasS" +
+ "aint Kitts e NevisCorea dal NordCorea dal SidKuwaitInslas CaymanKasa" +
+ "chstanLaosLibanonSaint LuciaLiechtensteinSri LankaLiberiaLesothoLitu" +
+ "aniaLuxemburgLettoniaLibiaMarocMonacoMoldaviaMontenegroSaint MartinM" +
+ "adagascarInslas da MarshallMacedoniaMaliMyanmarMongoliaRegiun d’admi" +
+ "nistraziun speziala Macao, ChinaInslas Mariannas dal NordMartiniqueM" +
+ "auretaniaMontserratMaltaMauritiusMaldivasMalawiMexicoMalaisiaMosambi" +
+ "cNamibiaNova CaledoniaNigerInsla NorfolkNigeriaNicaraguaPajais BassN" +
+ "orvegiaNepalNauruNiueNova ZelandaOmanPanamaPeruPolinesia FranzosaPap" +
+ "ua Nova GuineaFilippinasPakistanPolognaSaint Pierre e MiquelonPitcai" +
+ "rnPuerto RicoTerritori PalestinaisPortugalPalauParaguaiKatarOceania " +
+ "PerifericaRéunionRumeniaSerbiaRussiaRuandaArabia SauditaSalomonasSey" +
+ "chellasSudanSveziaSingapurSontg’ElenaSloveniaSvalbard e Jan MayenSlo" +
+ "vachiaSierra LeoneSan MarinoSenegalSomaliaSurinamSão Tomé e Principe" +
+ "El SalvadorSiriaSwazilandInslas Turks e CaicosTschadTerritoris Franz" +
+ "os MeridiunalsTogoTailandaTadschikistanTokelauTimor da l’OstTurkmeni" +
+ "stanTunesiaTongaTirchiaTrinidad e TobagoTuvaluTaiwanTansaniaUcrainaU" +
+ "gandaInslas pitschnas perifericas dals Stadis Unids da l’AmericaStad" +
+ "is Unids da l’AmericaUruguayUsbekistanCitad dal VaticanSaint Vincent" +
+ " e las GrenadinasVenezuelaInslas Verginas BritannicasInslas Verginas" +
+ " AmericanasVietnamVanuatuWallis e FutunaSamoaJemenMayotteAfrica dal " +
+ "SidSambiaSimbabweRegiun betg encouschenta u nunvalaivlamundAfricaAme" +
+ "rica dal NordAmerica dal SidOceaniaAfrica dal VestAmerica CentralaAf" +
+ "rica da l’OstAfrica dal NordAfrica CentralaAfrica MeridiunalaAmerica" +
+ " dal Nord, America Centrala ed America dal SidCaribicaAsia da l’OstA" +
+ "sia dal SidAsia dal SidostEuropa dal SidAustralia e Nova ZelandaMela" +
+ "nesiaRegiun MicronesicaPolinesiaAsiaAsia CentralaAsia dal VestEuropa" +
+ "Europa OrientalaEuropa dal NordEuropa dal VestAmerica Latina",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x001a, 0x0025, 0x0036, 0x003e, 0x0045,
+ 0x004c, 0x0060, 0x0066, 0x0070, 0x007a, 0x0089, 0x0090, 0x0099,
+ 0x009e, 0x00aa, 0x00b7, 0x00cb, 0x00d3, 0x00de, 0x00e4, 0x00f0,
+ 0x00f8, 0x00ff, 0x0106, 0x010b, 0x011a, 0x0122, 0x0128, 0x012f,
+ 0x012f, 0x0136, 0x013d, 0x0143, 0x014f, 0x0157, 0x0162, 0x0168,
+ 0x016e, 0x017a, 0x0199, 0x01b2, 0x01b7, 0x01bd, 0x01cb, 0x01d6,
+ 0x01db, 0x01e2, 0x01e7, 0x01ef, 0x01ef, 0x01f9, 0x01fd, 0x0205,
+ 0x0205, 0x0217, 0x021c, 0x022d, 0x0235, 0x0235, 0x023e, 0x0246,
+ // Entry 40 - 7F
+ 0x024e, 0x0262, 0x0269, 0x0269, 0x0270, 0x0277, 0x027d, 0x028f,
+ 0x0296, 0x029c, 0x02a3, 0x02b2, 0x02ba, 0x02c1, 0x02d4, 0x02de,
+ 0x02ea, 0x02f3, 0x02f8, 0x0306, 0x030d, 0x0314, 0x0323, 0x032b,
+ 0x0330, 0x0339, 0x0343, 0x0349, 0x034f, 0x0359, 0x036b, 0x0371,
+ 0x039e, 0x03a7, 0x03ab, 0x03b8, 0x03be, 0x03f3, 0x0410, 0x0418,
+ 0x041f, 0x0424, 0x042b, 0x042b, 0x0434, 0x043b, 0x0441, 0x044d,
+ 0x0452, 0x0478, 0x047c, 0x0480, 0x0487, 0x048d, 0x0493, 0x049b,
+ 0x04a3, 0x04a9, 0x04ae, 0x04ba, 0x04c4, 0x04cc, 0x04d3, 0x04e6,
+ // Entry 80 - BF
+ 0x04f4, 0x0501, 0x0507, 0x0514, 0x051e, 0x0522, 0x0529, 0x0534,
+ 0x0541, 0x054a, 0x0551, 0x0558, 0x0560, 0x0569, 0x0571, 0x0576,
+ 0x057b, 0x0581, 0x0589, 0x0593, 0x059f, 0x05a9, 0x05bb, 0x05c4,
+ 0x05c8, 0x05cf, 0x05d7, 0x0606, 0x061f, 0x0629, 0x0633, 0x063d,
+ 0x0642, 0x064b, 0x0653, 0x0659, 0x065f, 0x0667, 0x066f, 0x0676,
+ 0x0684, 0x0689, 0x0696, 0x069d, 0x06a6, 0x06b1, 0x06b9, 0x06be,
+ 0x06c3, 0x06c7, 0x06d3, 0x06d7, 0x06dd, 0x06e1, 0x06f3, 0x0704,
+ 0x070e, 0x0716, 0x071d, 0x0734, 0x073c, 0x0747, 0x075c, 0x0764,
+ // Entry C0 - FF
+ 0x0769, 0x0771, 0x0776, 0x0788, 0x0790, 0x0797, 0x079d, 0x07a3,
+ 0x07a9, 0x07b7, 0x07c0, 0x07ca, 0x07cf, 0x07d5, 0x07dd, 0x07ea,
+ 0x07f2, 0x0806, 0x080f, 0x081b, 0x0825, 0x082c, 0x0833, 0x083a,
+ 0x083a, 0x084f, 0x085a, 0x085a, 0x085f, 0x0868, 0x0868, 0x087d,
+ 0x0883, 0x08a1, 0x08a5, 0x08ad, 0x08ba, 0x08c1, 0x08d1, 0x08dd,
+ 0x08e4, 0x08e9, 0x08f0, 0x0901, 0x0907, 0x090d, 0x0915, 0x091c,
+ 0x0922, 0x095f, 0x097a, 0x0981, 0x098b, 0x099c, 0x09ba, 0x09c3,
+ 0x09de, 0x09f8, 0x09ff, 0x0a06, 0x0a15, 0x0a1a, 0x0a1a, 0x0a1f,
+ // Entry 100 - 13F
+ 0x0a26, 0x0a34, 0x0a3a, 0x0a42, 0x0a68, 0x0a6c, 0x0a72, 0x0a82,
+ 0x0a91, 0x0a98, 0x0aa7, 0x0ab7, 0x0ac8, 0x0ad7, 0x0ae6, 0x0af8,
+ 0x0b2d, 0x0b2d, 0x0b35, 0x0b44, 0x0b50, 0x0b5f, 0x0b6d, 0x0b85,
+ 0x0b8e, 0x0ba0, 0x0ba9, 0x0bad, 0x0bba, 0x0bc7, 0x0bcd, 0x0bdd,
+ 0x0bec, 0x0bfb, 0x0c09,
+ },
+ },
+ { // rn
+ "AndoraLeta Zunze Ubumwe z’AbarabuAfuganisitaniAntigwa na BaribudaAngwila" +
+ "AlubaniyaArumeniyaAntiye y’AbaholandiAngolaArijantineSamowa nyamerik" +
+ "aOtirisheOsitaraliyaArubaAzerubayijaniBosiniya na HerigozevineBaruba" +
+ "dosiBangaladeshiUbubiligiBurukina FasoBuligariyaBahareyiniUburundiBe" +
+ "neBerimudaBuruneyiBoliviyaBureziliBahamasiButaniBotswanaBelausiBeliz" +
+ "eKanadaRepubulika Iharanira Demokarasi ya KongoRepubulika ya Santara" +
+ "furikaKongoUbusuwisiKotedivuwareIzinga rya KukuShiliKameruniUbushinw" +
+ "aKolombiyaKositarikaKibaIbirwa bya KapuveriIzinga rya ShipureRepubul" +
+ "ika ya CekeUbudageJibutiDanimarikiDominikaRepubulika ya DominikaAlij" +
+ "eriyaEkwateriEsitoniyaMisiriElitereyaHisipaniyaEtiyopiyaFinilandiFij" +
+ "iIzinga rya FilikilandiMikoroniziyaUbufaransaGaboUbwongerezaGerenada" +
+ "JeworujiyaGwayana y’AbafaransaGanaJuburalitariGurunilandiGambiyaGune" +
+ "yaGwadelupeGineya EkwatoriyaliUbugerekiGwatemalaGwamuGineya BisawuGu" +
+ "yaneHondurasiKorowasiyaHayitiHungariyaIndoneziyaIrilandiIsiraheliUbu" +
+ "hindiIntara y’Ubwongereza yo mu birwa by’AbahindiIrakiIraniAyisiland" +
+ "iUbutaliyaniJamayikaYorudaniyaUbuyapaniKenyaKirigisitaniKambojeKirib" +
+ "atiIzinga rya KomoreSekitsi na NevisiKoreya y’amajaruguruKoreya y’am" +
+ "ajepfoKowetiIbirwa bya KeyimaniKazakisitaniLayosiLibaniSelusiyaLishy" +
+ "itenshitayiniSirilankaLiberiyaLesotoLituwaniyaLukusamburuLativaLibiy" +
+ "aMarokeMonakoMoludaviMadagasikariIzinga rya MarishariMasedoniyaMaliB" +
+ "irimaniyaMongoliyaAmazinga ya Mariyana ryo mu majaruguruMaritinikiMo" +
+ "ritaniyaMonteseratiMalitaIzinga rya MoriseMoludaveMalawiMigizikeMale" +
+ "ziyaMozambikiNamibiyaNiyukaledoniyaNijeriizinga rya NorufolukeNijeri" +
+ "yaNikaragwaUbuholandiNoruvejiNepaliNawuruNiyuweNuvelizelandiOmaniPan" +
+ "amaPeruPolineziya y’AbafaransaPapuwa NiyugineyaAmazinga ya FilipineP" +
+ "akisitaniPolonyeSempiyeri na MikeloniPitikeyiriniPuwetorikoPalesitin" +
+ "a Wesitibanka na GazaPorutugaliPalawuParagweKatariAmazinga ya Reyini" +
+ "yoRumaniyaUburusiyau RwandaArabiya SawuditeAmazinga ya SalumoniAmazi" +
+ "nga ya SeyisheliSudaniSuwediSingapuruSeheleneSiloveniyaSilovakiyaSiy" +
+ "eralewoneSanimarinoSenegaliSomaliyaSurinameSawotome na PerensipeEli " +
+ "SaluvatoriSiriyaSuwazilandiAmazinga ya Turkisi na CayikosiCadiTogoTa" +
+ "yilandiTajikisitaniTokelawuTimoru y’iburasirazubaTurukumenisitaniTun" +
+ "iziyaTongaTurukiyaTirinidadi na TobagoTuvaluTayiwaniTanzaniyaIkerene" +
+ "UbugandeLeta Zunze Ubumwe za AmerikaIrigweUzubekisitaniUmurwa wa Vat" +
+ "ikaniSevensa na GerenadineVenezuwelaIbirwa by’isugi by’AbongerezaAma" +
+ "zinga y’Isugi y’AbanyamerikaViyetinamuVanuwatuWalisi na FutunaSamowa" +
+ "YemeniMayoteAfurika y’EpfoZambiyaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0023, 0x0030, 0x0043, 0x004a, 0x0053,
+ 0x005c, 0x0071, 0x0077, 0x0077, 0x0081, 0x0091, 0x0099, 0x00a4,
+ 0x00a9, 0x00a9, 0x00b6, 0x00ce, 0x00d8, 0x00e4, 0x00ed, 0x00fa,
+ 0x0104, 0x010e, 0x0116, 0x011a, 0x011a, 0x0122, 0x012a, 0x0132,
+ 0x0132, 0x013a, 0x0142, 0x0148, 0x0148, 0x0150, 0x0157, 0x015d,
+ 0x0163, 0x0163, 0x018b, 0x01a6, 0x01ab, 0x01b4, 0x01c0, 0x01cf,
+ 0x01d4, 0x01dc, 0x01e5, 0x01ee, 0x01ee, 0x01f8, 0x01fc, 0x020f,
+ 0x020f, 0x020f, 0x0221, 0x0233, 0x023a, 0x023a, 0x0240, 0x024a,
+ // Entry 40 - 7F
+ 0x0252, 0x0268, 0x0271, 0x0271, 0x0279, 0x0282, 0x0288, 0x0288,
+ 0x0291, 0x029b, 0x02a4, 0x02a4, 0x02ad, 0x02b1, 0x02c7, 0x02d3,
+ 0x02d3, 0x02dd, 0x02e1, 0x02ec, 0x02f4, 0x02fe, 0x0314, 0x0314,
+ 0x0318, 0x0324, 0x032f, 0x0336, 0x033c, 0x0345, 0x0358, 0x0361,
+ 0x0361, 0x036a, 0x036f, 0x037c, 0x0382, 0x0382, 0x0382, 0x038b,
+ 0x0395, 0x039b, 0x03a4, 0x03a4, 0x03ae, 0x03b6, 0x03bf, 0x03bf,
+ 0x03c7, 0x03f7, 0x03fc, 0x0401, 0x040b, 0x0416, 0x0416, 0x041e,
+ 0x0428, 0x0431, 0x0436, 0x0442, 0x0449, 0x0451, 0x0462, 0x0473,
+ // Entry 80 - BF
+ 0x0489, 0x049c, 0x04a2, 0x04b5, 0x04c1, 0x04c7, 0x04cd, 0x04d5,
+ 0x04e7, 0x04f0, 0x04f8, 0x04fe, 0x0508, 0x0513, 0x0519, 0x051f,
+ 0x0525, 0x052b, 0x0533, 0x0533, 0x0533, 0x053f, 0x0553, 0x055d,
+ 0x0561, 0x056b, 0x0574, 0x0574, 0x059a, 0x05a4, 0x05ae, 0x05b9,
+ 0x05bf, 0x05d0, 0x05d8, 0x05de, 0x05e6, 0x05ee, 0x05f7, 0x05ff,
+ 0x060d, 0x0613, 0x0628, 0x0630, 0x0639, 0x0643, 0x064b, 0x0651,
+ 0x0657, 0x065d, 0x066a, 0x066f, 0x0675, 0x0679, 0x0692, 0x06a3,
+ 0x06b7, 0x06c1, 0x06c8, 0x06dd, 0x06e9, 0x06f3, 0x0711, 0x071b,
+ // Entry C0 - FF
+ 0x0721, 0x0728, 0x072e, 0x072e, 0x0742, 0x074a, 0x074a, 0x0753,
+ 0x075b, 0x076b, 0x077f, 0x0794, 0x079a, 0x07a0, 0x07a9, 0x07b1,
+ 0x07bb, 0x07bb, 0x07c5, 0x07d1, 0x07db, 0x07e3, 0x07eb, 0x07f3,
+ 0x07f3, 0x0808, 0x0816, 0x0816, 0x081c, 0x0827, 0x0827, 0x0846,
+ 0x084a, 0x084a, 0x084e, 0x0857, 0x0863, 0x086b, 0x0883, 0x0893,
+ 0x089b, 0x08a0, 0x08a8, 0x08bc, 0x08c2, 0x08ca, 0x08d3, 0x08da,
+ 0x08e2, 0x08e2, 0x08fe, 0x0904, 0x0911, 0x0923, 0x0938, 0x0942,
+ 0x0963, 0x0986, 0x0990, 0x0998, 0x09a8, 0x09ae, 0x09ae, 0x09b4,
+ // Entry 100 - 13F
+ 0x09ba, 0x09ca, 0x09d1, 0x09d9,
+ },
+ },
+ { // ro
+ roRegionStr,
+ roRegionIdx,
+ },
+ { // rof
+ "AndoroFalme za KiarabuAfuganistaniAntigua na BabudaAnguilaAlbaniaAmeniaA" +
+ "ntili za UholanziAngoloAjentinaSamoa ya MarekaniOstriaAustraliaAruba" +
+ "AzabajaniBosnia na HezegovinaBabadoBangladeshiUbelgijiBukinafasoBulg" +
+ "ariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamasiButaniBo" +
+ "tswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya" +
+ " Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKo" +
+ "lombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDen" +
+ "makiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispa" +
+ "niaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUinge" +
+ "rezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineG" +
+ "wadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasia" +
+ "HaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika B" +
+ "ahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigiz" +
+ "istaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea " +
+ "KusiniKuwaitiVisiwa vya KaimaiKazakistaniLaosiLebanoniSantalusiaLish" +
+ "enteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonak" +
+ "oMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya" +
+ " Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiModivu" +
+ "MalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha Norf" +
+ "okNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaP" +
+ "eruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri na M" +
+ "ikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa Pa" +
+ "lestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiw" +
+ "a vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSlovak" +
+ "iaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsa" +
+ "vadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikistani" +
+ "TokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad" +
+ " na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekist" +
+ "aniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya U" +
+ "ingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na Futun" +
+ "aSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0033, 0x003a, 0x0041,
+ 0x0047, 0x0059, 0x005f, 0x005f, 0x0067, 0x0078, 0x007e, 0x0087,
+ 0x008c, 0x008c, 0x0095, 0x00a9, 0x00af, 0x00ba, 0x00c2, 0x00cc,
+ 0x00d4, 0x00dc, 0x00e3, 0x00e9, 0x00e9, 0x00f0, 0x00f6, 0x00fd,
+ 0x00fd, 0x0104, 0x010c, 0x0112, 0x0112, 0x011a, 0x0122, 0x0128,
+ 0x012e, 0x012e, 0x014e, 0x0167, 0x016c, 0x0172, 0x0179, 0x0188,
+ 0x018d, 0x0195, 0x019a, 0x01a2, 0x01a2, 0x01ab, 0x01af, 0x01b7,
+ 0x01b7, 0x01b7, 0x01be, 0x01ce, 0x01d7, 0x01d7, 0x01dd, 0x01e4,
+ // Entry 40 - 7F
+ 0x01ec, 0x01ff, 0x0206, 0x0206, 0x020c, 0x0213, 0x0218, 0x0218,
+ 0x021f, 0x0227, 0x022f, 0x022f, 0x0234, 0x0238, 0x024b, 0x0255,
+ 0x0255, 0x025d, 0x0263, 0x026c, 0x0273, 0x0278, 0x028b, 0x028b,
+ 0x0290, 0x0298, 0x02a1, 0x02a7, 0x02ab, 0x02b4, 0x02bd, 0x02c4,
+ 0x02c4, 0x02cd, 0x02d1, 0x02da, 0x02e0, 0x02e0, 0x02e0, 0x02e9,
+ 0x02f0, 0x02f5, 0x02fd, 0x02fd, 0x0306, 0x030e, 0x0315, 0x0315,
+ 0x031a, 0x033f, 0x0344, 0x034a, 0x0352, 0x0358, 0x0358, 0x035f,
+ 0x0366, 0x036c, 0x0371, 0x037e, 0x0386, 0x038e, 0x0394, 0x03a7,
+ // Entry 80 - BF
+ 0x03b6, 0x03c2, 0x03c9, 0x03da, 0x03e5, 0x03ea, 0x03f2, 0x03fc,
+ 0x0406, 0x040f, 0x0416, 0x041c, 0x0424, 0x042d, 0x0434, 0x0439,
+ 0x043f, 0x0445, 0x044c, 0x044c, 0x044c, 0x0452, 0x0464, 0x046d,
+ 0x0471, 0x0476, 0x047e, 0x047e, 0x049e, 0x04a7, 0x04b0, 0x04bb,
+ 0x04c0, 0x04c6, 0x04cc, 0x04d2, 0x04d9, 0x04e0, 0x04e8, 0x04ef,
+ 0x04fb, 0x0501, 0x0512, 0x0519, 0x0522, 0x052a, 0x052f, 0x0535,
+ 0x053a, 0x053e, 0x0548, 0x054d, 0x0553, 0x0557, 0x056c, 0x0571,
+ 0x0579, 0x0582, 0x0589, 0x059f, 0x05a8, 0x05b1, 0x05e3, 0x05e8,
+ // Entry C0 - FF
+ 0x05ed, 0x05f5, 0x05fb, 0x05fb, 0x0604, 0x060b, 0x060b, 0x0610,
+ 0x0616, 0x061b, 0x062d, 0x0637, 0x063d, 0x0643, 0x064b, 0x0656,
+ 0x065e, 0x065e, 0x0666, 0x0671, 0x0679, 0x0681, 0x0688, 0x0690,
+ 0x0690, 0x06a4, 0x06ac, 0x06ac, 0x06b1, 0x06b7, 0x06b7, 0x06d0,
+ 0x06d5, 0x06d5, 0x06d9, 0x06e1, 0x06ec, 0x06f3, 0x0706, 0x0715,
+ 0x071c, 0x0721, 0x0728, 0x073a, 0x0740, 0x0747, 0x074f, 0x0756,
+ 0x075c, 0x075c, 0x0764, 0x076b, 0x0777, 0x077f, 0x0798, 0x07a1,
+ 0x07c0, 0x07de, 0x07e7, 0x07ee, 0x07fd, 0x0802, 0x0802, 0x0808,
+ // Entry 100 - 13F
+ 0x080f, 0x081c, 0x0822, 0x082a,
+ },
+ },
+ { // ru
+ ruRegionStr,
+ ruRegionIdx,
+ },
+ { // rw
+ "RwandaIgitonga",
+ []uint16{ // 234 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 80 - BF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry C0 - FF
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
+ 0x0006, 0x000e,
+ },
+ },
+ { // rwk
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // sah
+ "КытайАрассыыйаАан дойдуАапырыкаХотугу ЭмиэрикэСоҕуруу Эмиэрикэ",
+ []uint16{ // 265 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ // Entry 40 - 7F
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ // Entry 80 - BF
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a,
+ // Entry C0 - FF
+ 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x001c,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c,
+ // Entry 100 - 13F
+ 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x002d, 0x003d, 0x005a,
+ 0x0079,
+ },
+ },
+ { // saq
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // sbp
+ "AndolaWutwa wa shiyalabuAfuganisitaniAnitiguya ni BalubudaAnguillaAluban" +
+ "iyaAlimeniyaAnitili sa UholansiAngolaAjentinaSamoya ya MalekaniAwusi" +
+ "tiliyaAwusitilaliyaAlubaAsabajaniBosiniya ni HesegovinaBabadosiBangi" +
+ "ladeshiUbeligijiBukinafasoBuligaliyaBahaleniBulundiBeniniBelimudaBul" +
+ "uneyiBoliviyaBulasiliBahamaButaniBotiswanaBelalusiBeliseKanadaJamuhu" +
+ "li ya Kidemokilasiya ya KongoJamuhuli ya Afilika ya PakhatiKongoUswi" +
+ "siKodivayaFigunguli fya KookiShileKameruniShinaKolombiyaKositalikaKu" +
+ "baKepuvedeKupilosiJamuhuli ya ShekiWujelumaniJibutiDenimakiDominikaJ" +
+ "amuhuli ya DominikaAlijeliyaEkwadoEsitoniyaMisiliElitileyaHisipaniya" +
+ "UhabeshiWufiniFijiFigunguli fya FokolendiMikilonesiyaWufalansaGaboni" +
+ "UwingelesaGilenadaJojiyaGwiyana ya WufalansaKhanaJibulalitaGilinilan" +
+ "diGambiyaGineGwadelupeGinekwetaWugilikiGwatemalaGwamuGinebisawuGuyan" +
+ "aHondulasiKolasiyaHayitiHungaliyaIndonesiyaAyalandiIsilaeliIndiyaUlu" +
+ "vala lwa Uwingelesa ku Bahali ya HindiIlakiUwajemiAyisilendiItaliyaJ" +
+ "amaikaYolodaniJapaniKenyaKiligisisitaniKambodiyaKilibatiKomoloSantak" +
+ "itisi ni NevisiKoleya ya luvala lwa KunyamandeKoleya ya KusiniKuwait" +
+ "iFigunguli ifya KayimayiKasakisitaniLayosiLebanoniSantalusiyaLisheni" +
+ "teniSililankaLibeliyaLesotoLitwaniyaLasembagiLativiyaLibiyaMolokoMon" +
+ "akoMolidovaBukiniFigunguli ifya MalishaliMasedoniyaMaliMuyamaMongoli" +
+ "yaFigunguli fya Maliyana ifya luvala lwa KunyamandeMalitinikiMolitan" +
+ "iyaMonitiselatiMalitaMolisiModivuMalawiMekisikoMalesiyaMusumbijiNami" +
+ "biyaNyukaledoniyaNijeliShigunguli sha NolifokiNijeliyaNikalagwaWuhol" +
+ "ansiNolweNepaliNawuluNiwueNyusilendiOmaniPanamaPeluPolinesiya ya Wuf" +
+ "alansaPapuwaFilipinoPakisitaniPolandiSantapieli ni MikeloniPitikaili" +
+ "niPwetolikoMunjema gwa Kusikha nu Luvala lwa Gasa lwa PalesitWulenoP" +
+ "alawuPalagwayiKataliLiyunioniLomaniyaWulusiLwandaSawudiFigunguli fya" +
+ " SolomoniShelisheliSudaniUswidiSingapooSantahelenaSiloveniyaSilovaki" +
+ "yaSiela LiyoniSamalinoSenegaliSomaliyaSulinamuSayo Tome ni Pilinikip" +
+ "eElisavadoSiliyaUswasiFigunguli fya Tuliki ni KaikoShadiTogoTailandi" +
+ "TajikisitaniTokelawuTimoli ya kunenaTulukimenisitaniTunisiyaTongaUtu" +
+ "lukiTilinidadi ni TobagoTuvaluTaiwaniTansaniyaYukileiniUgandaMalekan" +
+ "iUlugwayiUsibekisitaniVatikaniSantavisenti na GilenadiniVenesuelaFig" +
+ "unguli ifya Viliginiya ifya UwingelesaFigunguli fya Viliginiya ifya " +
+ "MalekaniVietinamuVanuatuWalisi ni FutunaSamoyaYemeniMayoteAfilika Ku" +
+ "siniSambiyaSimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0018, 0x0025, 0x003a, 0x0042, 0x004b,
+ 0x0054, 0x0067, 0x006d, 0x006d, 0x0075, 0x0087, 0x0092, 0x009f,
+ 0x00a4, 0x00a4, 0x00ad, 0x00c3, 0x00cb, 0x00d7, 0x00e0, 0x00ea,
+ 0x00f4, 0x00fc, 0x0103, 0x0109, 0x0109, 0x0111, 0x0119, 0x0121,
+ 0x0121, 0x0129, 0x012f, 0x0135, 0x0135, 0x013e, 0x0146, 0x014c,
+ 0x0152, 0x0152, 0x0175, 0x0193, 0x0198, 0x019e, 0x01a6, 0x01b9,
+ 0x01be, 0x01c6, 0x01cb, 0x01d4, 0x01d4, 0x01de, 0x01e2, 0x01ea,
+ 0x01ea, 0x01ea, 0x01f2, 0x0203, 0x020d, 0x020d, 0x0213, 0x021b,
+ // Entry 40 - 7F
+ 0x0223, 0x0237, 0x0240, 0x0240, 0x0246, 0x024f, 0x0255, 0x0255,
+ 0x025e, 0x0268, 0x0270, 0x0270, 0x0276, 0x027a, 0x0291, 0x029d,
+ 0x029d, 0x02a6, 0x02ac, 0x02b6, 0x02be, 0x02c4, 0x02d8, 0x02d8,
+ 0x02dd, 0x02e7, 0x02f2, 0x02f9, 0x02fd, 0x0306, 0x030f, 0x0317,
+ 0x0317, 0x0320, 0x0325, 0x032f, 0x0335, 0x0335, 0x0335, 0x033e,
+ 0x0346, 0x034c, 0x0355, 0x0355, 0x035f, 0x0367, 0x036f, 0x036f,
+ 0x0375, 0x039e, 0x03a3, 0x03aa, 0x03b4, 0x03bb, 0x03bb, 0x03c2,
+ 0x03ca, 0x03d0, 0x03d5, 0x03e3, 0x03ec, 0x03f4, 0x03fa, 0x040f,
+ // Entry 80 - BF
+ 0x042e, 0x043e, 0x0445, 0x045c, 0x0468, 0x046e, 0x0476, 0x0481,
+ 0x048c, 0x0495, 0x049d, 0x04a3, 0x04ac, 0x04b5, 0x04bd, 0x04c3,
+ 0x04c9, 0x04cf, 0x04d7, 0x04d7, 0x04d7, 0x04dd, 0x04f5, 0x04ff,
+ 0x0503, 0x0509, 0x0512, 0x0512, 0x0543, 0x054d, 0x0557, 0x0563,
+ 0x0569, 0x056f, 0x0575, 0x057b, 0x0583, 0x058b, 0x0594, 0x059c,
+ 0x05a9, 0x05af, 0x05c6, 0x05ce, 0x05d7, 0x05e0, 0x05e5, 0x05eb,
+ 0x05f1, 0x05f6, 0x0600, 0x0605, 0x060b, 0x060f, 0x0626, 0x062c,
+ 0x0634, 0x063e, 0x0645, 0x065b, 0x0666, 0x066f, 0x06a1, 0x06a7,
+ // Entry C0 - FF
+ 0x06ad, 0x06b6, 0x06bc, 0x06bc, 0x06c5, 0x06cd, 0x06cd, 0x06d3,
+ 0x06d9, 0x06df, 0x06f5, 0x06ff, 0x0705, 0x070b, 0x0713, 0x071e,
+ 0x0728, 0x0728, 0x0732, 0x073e, 0x0746, 0x074e, 0x0756, 0x075e,
+ 0x075e, 0x0775, 0x077e, 0x077e, 0x0784, 0x078a, 0x078a, 0x07a7,
+ 0x07ac, 0x07ac, 0x07b0, 0x07b8, 0x07c4, 0x07cc, 0x07dc, 0x07ec,
+ 0x07f4, 0x07f9, 0x0800, 0x0814, 0x081a, 0x0821, 0x082a, 0x0833,
+ 0x0839, 0x0839, 0x0841, 0x0849, 0x0856, 0x085e, 0x0878, 0x0881,
+ 0x08aa, 0x08d0, 0x08d9, 0x08e0, 0x08f0, 0x08f6, 0x08f6, 0x08fc,
+ // Entry 100 - 13F
+ 0x0902, 0x0910, 0x0917, 0x091f,
+ },
+ },
+ { // se
+ "AscensionAndorraOvttastuvvan ArábaemiráhtatAfghanistanAntigua ja Barbuda" +
+ "AnguillaAlbániaArmeniaAngolaAntárktisArgentinaAmerihká SamoaNuortari" +
+ "ikaAustráliaArubaÅlándaAserbaižanBosnia-HercegovinaBarbadosBanglades" +
+ "hBelgiaBurkina FasoBulgáriaBahrainBurundiBeninSaint BarthélemyBermud" +
+ "aBruneiBoliviaBrasilBahamasBhutanBouvet-sullotBotswanaVilges-RuoššaB" +
+ "elizeKanádaCocos-sullotKongo-KinshasaGaska-Afrihká dásseváldiKongo-B" +
+ "razzavilleŠveicaElfenbenaridduCook-sullotČiileKamerunKiinnáKolombiaC" +
+ "lipperton-sullotCosta RicaKubaKap VerdeCuraçaoJuovllat-sullotKyprosČ" +
+ "eahkkaDuiskaDiego GarciaDjiboutiDánmárkuDominicaDominikána dásseváld" +
+ "iAlgeriaCeuta ja MelillaEcuadorEstlándaEgyptaOarje-SaháraEritreaSpán" +
+ "iaEtiopiaEurohpa UniovdnaSuopmaFijisullotFalklandsullotMikronesiaFea" +
+ "rsullotFrankriikaGabonStuorra-BritánniaGrenadaGeorgiaFrankriikka Gua" +
+ "yanaGuernseyGhanaGibraltarKalaallit NunaatGámbiaGuineaGuadeloupeEkva" +
+ "toriála GuineaGreikaLulli Georgia ja Lulli Sandwich-sullotGuatemalaG" +
+ "uamGuinea-BissauGuyanaHongkongHeard- ja McDonald-sullotHondurasKroát" +
+ "iaHaitiUngárKanáriasullotIndonesiaIrlándaIsraelMann-sullotIndiaIrakI" +
+ "ranIslándaItáliaJerseyJamaicaJordániaJapánaKeniaKirgisistanKambodžaK" +
+ "iribatiKomorosSaint Kitts ja NevisDavvi-KoreaMátta-KoreaKuwaitCayman" +
+ "-sullotKasakstanLaosLibanonSaint LuciaLiechtensteinSri LankaLiberiaL" +
+ "esothoLietuvaLuxembourgLátviaLibyaMarokkoMonacoMoldáviaMontenegroFra" +
+ "nkriikka Saint MartinMadagaskarMarshallsullotMakedoniaMaliBurmaMongo" +
+ "liaMakáoDavvi-MariánatMartiniqueMauretániaMontserratMáltaMauritiusMa" +
+ "lediivvatMalawiMeksikoMalesiaMosambikNamibiaOđđa-KaledoniaNigerNorfo" +
+ "lksullotNigeriaNicaraguaVuolleeatnamatNorgaNepalNauruNiueOđđa-Selánd" +
+ "aOmanPanamaPeruFrankriikka PolynesiaPapua-Ođđa-GuineaFilippiinnatPak" +
+ "istanPolenSaint Pierre ja MiquelonPitcairnPuerto RicoPalestinaPortug" +
+ "álaPalauParaguayQatarRéunionRomániaSerbiaRuoššaRwandaSaudi-ArábiaSa" +
+ "lomon-sullotSeychellsullotDavvisudanRuoŧŧaSingaporeSaint HelenaSlove" +
+ "niaSvalbárda ja Jan MayenSlovákiaSierra LeoneSan MarinoSenegalSomáli" +
+ "aSurinamMáttasudanSão Tomé ja PríncipeEl SalvadorVuolleeatnamat Sain" +
+ "t MartinSyriaSvazieanaTristan da CunhaTurks ja Caicos-sullotTčadTogo" +
+ "ThaieanaTažikistanTokelauNuorta-TimorTurkmenistanTunisiaTongaDurkaTr" +
+ "inidad ja TobagoTuvaluTaiwanTanzániaUkrainaUgandaAmerihká ovttastuvv" +
+ "an stáhtatUruguayUsbekistanVatikánaSaint Vincent ja GrenadineVenezue" +
+ "laBrittania Virgin-sullotAOS Virgin-sullotVietnamVanuatuWallis ja Fu" +
+ "tunaSamoaKosovoJemenMayotteMátta-AfrihkáZambiaZimbabwedovdameahttun " +
+ "guovlumáilbmiAfrihkkádávvi-Amerihkká ja gaska-Amerihkkámátta-Amerihk" +
+ "káOseaniaoarji-Afrihkkágaska-Amerihkkánuorta-Afrihkkádavvi-Afrihkkág" +
+ "aska-Afrihkkámátta-AfrihkkáAmerihkkádávvi-AmerihkkáKaribianuorta-Ási" +
+ "amátta-Ásiamátta-nuorta-Ásiamátta-EurohpáAustrália ja Ođđa-SelándaMe" +
+ "lanesiaMikronesia guovllusPolynesiaÁsiagaska-Ásiaoarji-ÁsiaEurohpánu" +
+ "orta-Eurohpádavvi-Eurohpáoarji-Eurohpálulli-Amerihkká",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002d, 0x0038, 0x004a, 0x0052, 0x005a,
+ 0x0061, 0x0061, 0x0067, 0x0071, 0x007a, 0x0089, 0x0094, 0x009e,
+ 0x00a3, 0x00ab, 0x00b6, 0x00c8, 0x00d0, 0x00da, 0x00e0, 0x00ec,
+ 0x00f5, 0x00fc, 0x0103, 0x0108, 0x0119, 0x0120, 0x0126, 0x012d,
+ 0x012d, 0x0133, 0x013a, 0x0140, 0x014d, 0x0155, 0x0164, 0x016a,
+ 0x0171, 0x017d, 0x018b, 0x01a6, 0x01b7, 0x01be, 0x01cc, 0x01d7,
+ 0x01dd, 0x01e4, 0x01eb, 0x01f3, 0x0204, 0x020e, 0x0212, 0x021b,
+ 0x0223, 0x0232, 0x0238, 0x0240, 0x0246, 0x0252, 0x025a, 0x0264,
+ // Entry 40 - 7F
+ 0x026c, 0x0284, 0x028b, 0x029b, 0x02a2, 0x02ab, 0x02b1, 0x02be,
+ 0x02c5, 0x02cc, 0x02d3, 0x02e3, 0x02e9, 0x02f3, 0x0301, 0x030b,
+ 0x0315, 0x031f, 0x0324, 0x0336, 0x033d, 0x0344, 0x0357, 0x035f,
+ 0x0364, 0x036d, 0x037d, 0x0384, 0x038a, 0x0394, 0x03a7, 0x03ad,
+ 0x03d3, 0x03dc, 0x03e0, 0x03ed, 0x03f3, 0x03fb, 0x0414, 0x041c,
+ 0x0424, 0x0429, 0x042f, 0x043d, 0x0446, 0x044e, 0x0454, 0x045f,
+ 0x0464, 0x0464, 0x0468, 0x046c, 0x0474, 0x047b, 0x0481, 0x0488,
+ 0x0491, 0x0498, 0x049d, 0x04a8, 0x04b1, 0x04b9, 0x04c0, 0x04d4,
+ // Entry 80 - BF
+ 0x04df, 0x04eb, 0x04f1, 0x04fe, 0x0507, 0x050b, 0x0512, 0x051d,
+ 0x052a, 0x0533, 0x053a, 0x0541, 0x0548, 0x0552, 0x0559, 0x055e,
+ 0x0565, 0x056b, 0x0574, 0x057e, 0x0596, 0x05a0, 0x05ae, 0x05b7,
+ 0x05bb, 0x05c0, 0x05c8, 0x05ce, 0x05dd, 0x05e7, 0x05f2, 0x05fc,
+ 0x0602, 0x060b, 0x0616, 0x061c, 0x0623, 0x062a, 0x0632, 0x0639,
+ 0x0649, 0x064e, 0x065b, 0x0662, 0x066b, 0x0679, 0x067e, 0x0683,
+ 0x0688, 0x068c, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06be, 0x06d1,
+ 0x06dd, 0x06e5, 0x06ea, 0x0702, 0x070a, 0x0715, 0x071e, 0x0728,
+ // Entry C0 - FF
+ 0x072d, 0x0735, 0x073a, 0x073a, 0x0742, 0x074a, 0x0750, 0x0758,
+ 0x075e, 0x076b, 0x0779, 0x0787, 0x0791, 0x0799, 0x07a2, 0x07ae,
+ 0x07b6, 0x07cd, 0x07d6, 0x07e2, 0x07ec, 0x07f3, 0x07fb, 0x0802,
+ 0x080d, 0x0824, 0x082f, 0x084a, 0x084f, 0x0858, 0x0868, 0x087e,
+ 0x0883, 0x0883, 0x0887, 0x088f, 0x089a, 0x08a1, 0x08ad, 0x08b9,
+ 0x08c0, 0x08c5, 0x08ca, 0x08dc, 0x08e2, 0x08e8, 0x08f1, 0x08f8,
+ 0x08fe, 0x08fe, 0x091d, 0x0924, 0x092e, 0x0937, 0x0951, 0x095a,
+ 0x0971, 0x0982, 0x0989, 0x0990, 0x09a0, 0x09a5, 0x09ab, 0x09b0,
+ // Entry 100 - 13F
+ 0x09b7, 0x09c6, 0x09cc, 0x09d4, 0x09e8, 0x09f0, 0x09f9, 0x0a1e,
+ 0x0a2f, 0x0a36, 0x0a45, 0x0a55, 0x0a65, 0x0a74, 0x0a83, 0x0a93,
+ 0x0a9d, 0x0aae, 0x0ab5, 0x0ac1, 0x0acd, 0x0ae0, 0x0aef, 0x0b0c,
+ 0x0b15, 0x0b28, 0x0b31, 0x0b36, 0x0b41, 0x0b4c, 0x0b54, 0x0b63,
+ 0x0b71, 0x0b7f, 0x0b8f,
+ },
+ },
+ { // se-FI
+ "Bosnia ja HercegovinaKambožaSudanChadDavvi-Amerihkká ja Gaska-AmerihkkáL" +
+ "ulli-AmerihkkáGaska-AmerihkkáDavvi-AmerihkkáLatiinnalaš-Amerihkká",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ // Entry 40 - 7F
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,
+ 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x001d, 0x001d, 0x001d,
+ // Entry 80 - BF
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ // Entry C0 - FF
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x0022, 0x0022, 0x0022, 0x0022,
+ 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
+ 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022,
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,
+ // Entry 100 - 13F
+ 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x004a,
+ 0x005a, 0x005a, 0x005a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a,
+ 0x006a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a,
+ 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a,
+ 0x007a, 0x007a, 0x0091,
+ },
+ },
+ { // seh
+ "AndorraEmirados Árabes UnidosAfeganistãoAntígua e BarbudaAnguillaAlbânia" +
+ "ArmêniaAntilhas HolandesasAngolaArgentinaSamoa AmericanaÁustriaAustr" +
+ "áliaArubaAzerbaijãoBósnia-HerzegovinaBarbadosBangladeshBélgicaBurqu" +
+ "ina FasoBulgáriaBahrainBurundiBeninBermudasBruneiBolíviaBrasilBahama" +
+ "sButãoBotsuanaBelarusBelizeCanadáCongo-KinshasaRepública Centro-Afri" +
+ "canaCongoSuíçaCosta do MarfimIlhas CookChileRepública dos CamarõesCh" +
+ "inaColômbiaCosta RicaCubaCabo VerdeChipreRepública TchecaAlemanhaDji" +
+ "butiDinamarcaDominicaRepública DominicanaArgéliaEquadorEstôniaEgitoE" +
+ "ritréiaEspanhaEtiópiaFinlândiaFijiIlhas MalvinasMicronésiaFrançaGabã" +
+ "oReino UnidoGranadaGeórgiaGuiana FrancesaGanaGibraltarGroênlandiaGâm" +
+ "biaGuinéGuadalupeGuiné EquatorialGréciaGuatemalaGuamGuiné BissauGuia" +
+ "naHondurasCroáciaHaitiHungriaIndonésiaIrlandaIsraelÍndiaTerritório B" +
+ "ritânico do Oceano ÍndicoIraqueIrãIslândiaItáliaJamaicaJordâniaJapão" +
+ "QuêniaQuirguistãoCambojaQuiribatiComoresSão Cristovão e NevisCoréia " +
+ "do NorteCoréia do SulKuwaitIlhas CaimanCasaquistãoLaosLíbanoSanta Lú" +
+ "ciaLiechtensteinSri LankaLibériaLesotoLituâniaLuxemburgoLetôniaLíbia" +
+ "MarrocosMônacoMoldáviaMadagascarIlhas MarshallMacedôniaMaliMianmarMo" +
+ "ngóliaIlhas Marianas do NorteMartinicaMauritâniaMontserratMaltaMaurí" +
+ "cioMaldivasMalawiMéxicoMalásiaMoçambiqueNamíbiaNova CaledôniaNígerIl" +
+ "has NorfolkNigériaNicaráguaHolandaNoruegaNepalNauruNiueNova Zelândia" +
+ "OmãPanamáPeruPolinésia FrancesaPapua-Nova GuinéFilipinasPaquistãoPol" +
+ "ôniaSaint Pierre e MiquelonPitcairnPorto RicoTerritório da Palestin" +
+ "aPortugalPalauParaguaiCatarReuniãoRomêniaRússiaRuandaArábia SauditaI" +
+ "lhas SalomãoSeychellesSudãoSuéciaCingapuraSanta HelenaEslovêniaEslov" +
+ "áquiaSerra LeoaSan MarinoSenegalSomáliaSurinameSão Tomé e PríncipeE" +
+ "l SalvadorSíriaSuazilândiaIlhas Turks e CaicosChadeTogoTailândiaTadj" +
+ "iquistãoTokelauTimor LesteTurcomenistãoTunísiaTongaTurquiaTrinidad e" +
+ " TobagoTuvaluTaiwanUcrâniaUgandaEstados UnidosUruguaiUzbequistãoVati" +
+ "canoSão Vicente e GranadinasVenezuelaIlhas Virgens BritânicasIlhas V" +
+ "irgens dos EUAVietnãVanuatuWallis e FutunaSamoaIêmenMayotteÁfrica do" +
+ " SulZâmbiaZimbábue",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x001e, 0x002a, 0x003c, 0x0044, 0x004c,
+ 0x0054, 0x0067, 0x006d, 0x006d, 0x0076, 0x0085, 0x008d, 0x0097,
+ 0x009c, 0x009c, 0x00a7, 0x00ba, 0x00c2, 0x00cc, 0x00d4, 0x00e1,
+ 0x00ea, 0x00f1, 0x00f8, 0x00fd, 0x00fd, 0x0105, 0x010b, 0x0113,
+ 0x0113, 0x0119, 0x0120, 0x0126, 0x0126, 0x012e, 0x0135, 0x013b,
+ 0x0142, 0x0142, 0x0150, 0x016a, 0x016f, 0x0176, 0x0185, 0x018f,
+ 0x0194, 0x01ac, 0x01b1, 0x01ba, 0x01ba, 0x01c4, 0x01c8, 0x01d2,
+ 0x01d2, 0x01d2, 0x01d8, 0x01e9, 0x01f1, 0x01f1, 0x01f8, 0x0201,
+ // Entry 40 - 7F
+ 0x0209, 0x021e, 0x0226, 0x0226, 0x022d, 0x0235, 0x023a, 0x023a,
+ 0x0243, 0x024a, 0x0252, 0x0252, 0x025c, 0x0260, 0x026e, 0x0279,
+ 0x0279, 0x0280, 0x0286, 0x0291, 0x0298, 0x02a0, 0x02af, 0x02af,
+ 0x02b3, 0x02bc, 0x02c8, 0x02cf, 0x02d5, 0x02de, 0x02ef, 0x02f6,
+ 0x02f6, 0x02ff, 0x0303, 0x0310, 0x0316, 0x0316, 0x0316, 0x031e,
+ 0x0326, 0x032b, 0x0332, 0x0332, 0x033c, 0x0343, 0x0349, 0x0349,
+ 0x034f, 0x0377, 0x037d, 0x0381, 0x038a, 0x0391, 0x0391, 0x0398,
+ 0x03a1, 0x03a7, 0x03ae, 0x03ba, 0x03c1, 0x03ca, 0x03d1, 0x03e8,
+ // Entry 80 - BF
+ 0x03f8, 0x0406, 0x040c, 0x0418, 0x0424, 0x0428, 0x042f, 0x043b,
+ 0x0448, 0x0451, 0x0459, 0x045f, 0x0468, 0x0472, 0x047a, 0x0480,
+ 0x0488, 0x048f, 0x0498, 0x0498, 0x0498, 0x04a2, 0x04b0, 0x04ba,
+ 0x04be, 0x04c5, 0x04ce, 0x04ce, 0x04e5, 0x04ee, 0x04f9, 0x0503,
+ 0x0508, 0x0511, 0x0519, 0x051f, 0x0526, 0x052e, 0x0539, 0x0541,
+ 0x0550, 0x0556, 0x0563, 0x056b, 0x0575, 0x057c, 0x0583, 0x0588,
+ 0x058d, 0x0591, 0x059f, 0x05a3, 0x05aa, 0x05ae, 0x05c1, 0x05d2,
+ 0x05db, 0x05e5, 0x05ed, 0x0604, 0x060c, 0x0616, 0x062e, 0x0636,
+ // Entry C0 - FF
+ 0x063b, 0x0643, 0x0648, 0x0648, 0x0650, 0x0658, 0x0658, 0x065f,
+ 0x0665, 0x0674, 0x0682, 0x068c, 0x0692, 0x0699, 0x06a2, 0x06ae,
+ 0x06b8, 0x06b8, 0x06c3, 0x06cd, 0x06d7, 0x06de, 0x06e6, 0x06ee,
+ 0x06ee, 0x0704, 0x070f, 0x070f, 0x0715, 0x0721, 0x0721, 0x0735,
+ 0x073a, 0x073a, 0x073e, 0x0748, 0x0755, 0x075c, 0x0767, 0x0775,
+ 0x077d, 0x0782, 0x0789, 0x079a, 0x07a0, 0x07a6, 0x07a6, 0x07ae,
+ 0x07b4, 0x07b4, 0x07c2, 0x07c9, 0x07d5, 0x07dd, 0x07f6, 0x07ff,
+ 0x0818, 0x082d, 0x0834, 0x083b, 0x084a, 0x084f, 0x084f, 0x0855,
+ // Entry 100 - 13F
+ 0x085c, 0x086a, 0x0871, 0x087a,
+ },
+ },
+ { // ses
+ "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" +
+ "lbaaniArmeeniHollandu Antiiyey LabooAngoolaArgentineAmeriki SamoaOtr" +
+ "išiOstraaliAruubaAzerbaayijaŋBosni nda HerzegovineBarbaadosBangladeš" +
+ "iBelgiikiBurkina fasoBulgaariBahareenBurundiBeniŋBermudaBruuneeBooli" +
+ "viBreezilBahamasBuutaŋBotswaanaBilorišiBeliiziKanaadaKongoo demookar" +
+ "atiki labooCentraafriki koyraKongooSwisuKudwarKuuk gungeyŠiiliKameru" +
+ "unŠiinKolombiKosta rikaKuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuu" +
+ "tiDanemarkDoominikiDoominiki labooAlžeeriEkwateerEstooniMisraEritree" +
+ "EspaaɲeEcioopiFinlanduFijiKalkan gungeyMikroneziFaransiGaabonAlbaasa" +
+ "laama MargantaGrenaadaGorgiFaransi GuyaanGaanaGibraltarGrinlandGambi" +
+ "GineGwadeluupGinee EkwatorialGreeceGwatemaalaGuamGine-BissoGuyaaneHo" +
+ "ndurasKrwaasiHaitiHungaariIndoneeziIrlanduIsrayelIndu labooBritiši I" +
+ "ndu teekoo laamaIraakIraanAycelandItaaliJamaayikUrdunJaapoŋKeeniyaKy" +
+ "rgyzstanKamboogiKiribaatiKomoorSeŋ Kitts nda NevisKooree, GurmaKoore" +
+ "e, HawsaKuweetKayman gungeyKaazakstanLaawosLubnaanSeŋ LussiaLiechten" +
+ "steinSrilankaLiberiaLeesotoLituaaniLuxembourgLetooniLiibiMaarokMonak" +
+ "oMoldoviMadagascarMaršal gungeyMaacedooniMaaliMaynamarMongooliMarian" +
+ "a Gurma GungeyMartiniikiMooritaaniMontserratMaltaMooris gungeyMaldii" +
+ "vuMalaawiMexikiMaleeziMozambikNaamibiKaaledooni TaagaaNižerNorfolk G" +
+ "ungooNaajiriiaNikaragwaHollanduNorveejNeepalNauruNiueZeelandu TaagaO" +
+ "maanPanamaPeeruFaransi PolineeziPapua Ginee TaagaFilipinePaakistanPo" +
+ "loɲeSeŋ Piyer nda MikelonPitikarinPorto RikoPalestine Dangay nda Gaa" +
+ "zaPortugaalPaluParaguweyKataarReenioŋRumaaniIriši labooRwandaSaudiya" +
+ "Solomon GungeySeešelSuudaŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSe" +
+ "era LeonSan MarinoSenegalSomaaliSurinaamSao Tome nda PrinsipeSalvado" +
+ "r labooSuuriaSwazilandTurk nda Kayikos GungeyCaaduTogoTaayilandTaaži" +
+ "kistanTokelauTimoor hawsaTurkmenistaŋTuniziTongaTurkiTrinidad nda To" +
+ "baagoTuvaluTaayiwanTanzaaniUkreenUgandaAmeriki Laabu MarganteyUruguw" +
+ "eyUzbeekistanVaatikan LaamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiš" +
+ "i Virgin gungeyAmeerik Virgin GungeyVietnaamVanautuWallis nda Futuna" +
+ "SamoaYamanMayootiHawsa Afriki LabooZambiZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e,
+ 0x0055, 0x006c, 0x0073, 0x0073, 0x007c, 0x0089, 0x0090, 0x0098,
+ 0x009e, 0x009e, 0x00ab, 0x00c0, 0x00c9, 0x00d4, 0x00dc, 0x00e8,
+ 0x00f0, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0113, 0x011a,
+ 0x011a, 0x0121, 0x0128, 0x012f, 0x012f, 0x0138, 0x0141, 0x0148,
+ 0x014f, 0x014f, 0x0169, 0x017b, 0x0181, 0x0186, 0x018c, 0x0197,
+ 0x019d, 0x01a5, 0x01aa, 0x01b1, 0x01b1, 0x01bb, 0x01c0, 0x01ce,
+ 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e5, 0x01e5, 0x01ec, 0x01f4,
+ // Entry 40 - 7F
+ 0x01fd, 0x020c, 0x0214, 0x0214, 0x021c, 0x0223, 0x0228, 0x0228,
+ 0x022f, 0x0237, 0x023e, 0x023e, 0x0246, 0x024a, 0x0257, 0x0260,
+ 0x0260, 0x0267, 0x026d, 0x0282, 0x028a, 0x028f, 0x029d, 0x029d,
+ 0x02a2, 0x02ab, 0x02b3, 0x02b8, 0x02bc, 0x02c5, 0x02d5, 0x02db,
+ 0x02db, 0x02e5, 0x02e9, 0x02f3, 0x02fa, 0x02fa, 0x02fa, 0x0302,
+ 0x0309, 0x030e, 0x0316, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d,
+ 0x0337, 0x0351, 0x0356, 0x035b, 0x0363, 0x0369, 0x0369, 0x0371,
+ 0x0376, 0x037d, 0x0384, 0x038e, 0x0396, 0x039f, 0x03a5, 0x03b9,
+ // Entry 80 - BF
+ 0x03c6, 0x03d3, 0x03d9, 0x03e6, 0x03f0, 0x03f6, 0x03fd, 0x0408,
+ 0x0415, 0x041d, 0x0424, 0x042b, 0x0433, 0x043d, 0x0444, 0x0449,
+ 0x044f, 0x0455, 0x045c, 0x045c, 0x045c, 0x0466, 0x0474, 0x047e,
+ 0x0483, 0x048b, 0x0493, 0x0493, 0x04a7, 0x04b1, 0x04bb, 0x04c5,
+ 0x04ca, 0x04d7, 0x04df, 0x04e6, 0x04ec, 0x04f3, 0x04fb, 0x0502,
+ 0x0513, 0x0519, 0x0527, 0x0530, 0x0539, 0x0541, 0x0548, 0x054e,
+ 0x0553, 0x0557, 0x0565, 0x056a, 0x0570, 0x0575, 0x0586, 0x0597,
+ 0x059f, 0x05a8, 0x05af, 0x05c5, 0x05ce, 0x05d8, 0x05f2, 0x05fb,
+ // Entry C0 - FF
+ 0x05ff, 0x0608, 0x060e, 0x060e, 0x0616, 0x061d, 0x061d, 0x0629,
+ 0x062f, 0x0636, 0x0644, 0x064b, 0x0652, 0x0658, 0x0660, 0x066b,
+ 0x0673, 0x0673, 0x067b, 0x0685, 0x068f, 0x0696, 0x069d, 0x06a5,
+ 0x06a5, 0x06ba, 0x06c8, 0x06c8, 0x06ce, 0x06d7, 0x06d7, 0x06ee,
+ 0x06f3, 0x06f3, 0x06f7, 0x0700, 0x070c, 0x0713, 0x071f, 0x072c,
+ 0x0732, 0x0737, 0x073c, 0x0750, 0x0756, 0x075e, 0x0766, 0x076c,
+ 0x0772, 0x0772, 0x0789, 0x0791, 0x079c, 0x07aa, 0x07c3, 0x07cf,
+ 0x07e5, 0x07fa, 0x0802, 0x0809, 0x081a, 0x081f, 0x081f, 0x0824,
+ // Entry 100 - 13F
+ 0x082b, 0x083d, 0x0842, 0x084a,
+ },
+ },
+ { // sg
+ "AndôroArâbo Emirâti ÔkoFaganïta, AfganïstäanAntîgua na BarbûdaAngûîlaAlb" +
+ "anïiArmenïiAntîyi tî HolândeAngoläaArzantînaSamöa tî AmerîkaOtrîsiOs" +
+ "tralïi, SotralïiArûbaZerebaidyäan, Azerbaidyäan,Bosnïi na Herzegovîn" +
+ "niBarabâdaBengladêshiBêleze, BelezîkiBurkina FasoBulugarïiBahrâinaBu" +
+ "rundïiBenëenBeremûdaBrunêiBolivïiBrezîliBahâmasaButäanBotswanaBelarü" +
+ "siBelîziKanadäaKödörösêse tî Ngunuhalëzo tî kongöKödörösêse tî Bêafr" +
+ "îkaKongöSûîsiKôdivüäraâzûâ KûkuShilïiKamerûneShînaKolombïiKôsta Rîk" +
+ "aKubäaAzûâ tî Kâpo-VêreSîpriKödörösêse tî TyêkiZâmaniDibutùiiDanemêr" +
+ "keDömïnîkaKödörösêse tî DominîkaAlzerïiEkuatëreEstonïiKâmitâEritrëeE" +
+ "spânyeEtiopïiFëlândeFidyïiÂzûâ tî MälüîniMikronezïiFarânziGaböonKödö" +
+ "rögbïä--ÔkoGrenâdaZorzïiGüyâni tî farânziGanäaZibraltära, Zibaratära" +
+ "GorolândeGambïiGinëeGuadelûpuGinëe tî EkuatëreGerêsiGuatêmäläGuâmGni" +
+ "nëe-BisauGayânaHonduräsiKroasïiHaitïiHongirùiiÊnndonezïiIrlândeIsraë" +
+ "liÊnndeSêse tî Anglëe na Ngûyämä tî ÊnndeIrâkiIräanIslândeItalùiiZam" +
+ "aîkaZordanïiZapöonKenyäaKirigizitùaanKämbôziKiribatiKömôroSên-Krïstô" +
+ "fo-na-NevîsiKorëe tî BangaKorëe tî MbongoKöwêtiÂzûâ Ngundë, KaimäniK" +
+ "azakisitäanLùaôsiLibùaanSênt-LisïiLiechtenstein,Sirî-LankaLiberïaLes" +
+ "ôthoLituanïiLugzambûruLetonùiiLibïiMarôkoMonaköoMoldavùiiMadagaskär" +
+ "aÂzûâ MärshâlMaseduäniMalïiMyämâraMongolïiÂzûâ Märïâni tî BangaMärtï" +
+ "nîkiMoritanïiMonserâteMâltaMörîsiMaldîvaMalawïiMekisîkiMalezïiMözämb" +
+ "îkaNamibùiiFinî KaledonïiNizëreZûâ NôrfôlkoNizerïaNikaraguaHoländeN" +
+ "örvêziNëpâliNauruNiueFinî ZelândeOmâniPanamaPerüuPolinezïi tî farân" +
+ "ziPapû Finî Ginëe, PapuazïiFilipîniPakistäanPölôniSên-Pyêre na Mikel" +
+ "öonPitikêrniPorto RîkoSêse tî PalestîniPörtugäle, Ködörö PûraPalauP" +
+ "araguëeKatäraReinïonRumanïiRusïiRuandäaSaûdi ArabïiZûâ SalomöonSëysh" +
+ "êleSudäanSuêdeSïngäpûruSênt-HelênaSolovenïiSolovakïiSierä-LeôneSên-" +
+ "MarëenSenegäleSomalïiSurinämSâô Tömê na PrinsîpeSalvadöroSirïiSwäzïl" +
+ "ândeÂzûâ Turku na KaîkiTyâdeTogöTailândeTaazikiistäanTokelauTimôro " +
+ "tî TöTurkumenistäanTunizïiTongaTurukïiTrinitùee na TobagöTüvalüTâiwâ" +
+ "niTanzanïiUkrêniUgandäaÂLeaa-Ôko tî AmerikaUruguëeUzbekistäanLetëe t" +
+ "î VatikäanSên-Vensäan na âGrenadîniVenezueläaÂzôâ Viîrîggo tî Anglë" +
+ "eÂzûâ Virîgo tî AmerîkaVietnämVanuatüWalîsi na FutunaSamoäaYëmêniMäy" +
+ "ôteMbongo-AfrîkaZambïiZimbäbwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x001b, 0x0033, 0x0047, 0x0050, 0x0058,
+ 0x0060, 0x0074, 0x007c, 0x007c, 0x0086, 0x0099, 0x00a0, 0x00b4,
+ 0x00ba, 0x00ba, 0x00d7, 0x00ef, 0x00f8, 0x0104, 0x0116, 0x0122,
+ 0x012c, 0x0135, 0x013e, 0x0145, 0x0145, 0x014e, 0x0155, 0x015d,
+ 0x015d, 0x0165, 0x016e, 0x0175, 0x0175, 0x017d, 0x0186, 0x018d,
+ 0x0195, 0x0195, 0x01bf, 0x01dc, 0x01e2, 0x01e9, 0x01f5, 0x0202,
+ 0x0209, 0x0212, 0x0218, 0x0221, 0x0221, 0x022d, 0x0233, 0x0249,
+ 0x0249, 0x0249, 0x024f, 0x0268, 0x026f, 0x026f, 0x0278, 0x0282,
+ // Entry 40 - 7F
+ 0x028d, 0x02a9, 0x02b1, 0x02b1, 0x02ba, 0x02c2, 0x02ca, 0x02ca,
+ 0x02d2, 0x02da, 0x02e2, 0x02e2, 0x02eb, 0x02f2, 0x0308, 0x0313,
+ 0x0313, 0x031b, 0x0322, 0x0337, 0x033f, 0x0346, 0x035b, 0x035b,
+ 0x0361, 0x0379, 0x0383, 0x038a, 0x0390, 0x039a, 0x03ae, 0x03b5,
+ 0x03b5, 0x03c1, 0x03c6, 0x03d3, 0x03da, 0x03da, 0x03da, 0x03e4,
+ 0x03ec, 0x03f3, 0x03fd, 0x03fd, 0x0409, 0x0411, 0x0419, 0x0419,
+ 0x041f, 0x0449, 0x044f, 0x0455, 0x045d, 0x0465, 0x0465, 0x046d,
+ 0x0476, 0x047d, 0x0484, 0x0492, 0x049b, 0x04a3, 0x04ab, 0x04c5,
+ // Entry 80 - BF
+ 0x04d5, 0x04e6, 0x04ee, 0x0507, 0x0514, 0x051c, 0x0524, 0x0530,
+ 0x053e, 0x0549, 0x0551, 0x0559, 0x0562, 0x056d, 0x0576, 0x057c,
+ 0x0583, 0x058b, 0x0595, 0x0595, 0x0595, 0x05a1, 0x05b2, 0x05bc,
+ 0x05c2, 0x05cb, 0x05d4, 0x05d4, 0x05f0, 0x05fc, 0x0606, 0x0610,
+ 0x0616, 0x061e, 0x0626, 0x062e, 0x0637, 0x063f, 0x064b, 0x0654,
+ 0x0664, 0x066b, 0x067b, 0x0683, 0x068c, 0x0694, 0x069d, 0x06a5,
+ 0x06aa, 0x06ae, 0x06bc, 0x06c2, 0x06c8, 0x06ce, 0x06e5, 0x0702,
+ 0x070b, 0x0715, 0x071d, 0x0735, 0x073f, 0x074a, 0x075e, 0x077a,
+ // Entry C0 - FF
+ 0x077f, 0x0788, 0x078f, 0x078f, 0x0797, 0x079f, 0x079f, 0x07a5,
+ 0x07ad, 0x07bb, 0x07ca, 0x07d4, 0x07db, 0x07e1, 0x07ed, 0x07fa,
+ 0x0804, 0x0804, 0x080e, 0x081b, 0x0827, 0x0830, 0x0838, 0x0840,
+ 0x0840, 0x0859, 0x0863, 0x0863, 0x0869, 0x0876, 0x0876, 0x088d,
+ 0x0893, 0x0893, 0x0898, 0x08a1, 0x08af, 0x08b6, 0x08c5, 0x08d4,
+ 0x08dc, 0x08e1, 0x08e9, 0x08fe, 0x0906, 0x090f, 0x0918, 0x091f,
+ 0x0927, 0x0927, 0x093e, 0x0946, 0x0952, 0x0966, 0x0983, 0x098e,
+ 0x09ac, 0x09c8, 0x09d0, 0x09d8, 0x09e9, 0x09f0, 0x09f0, 0x09f8,
+ // Entry 100 - 13F
+ 0x0a00, 0x0a0e, 0x0a15, 0x0a1e,
+ },
+ },
+ { // shi
+ "ⴰⵏⴷⵓⵔⴰⵍⵉⵎⴰⵔⴰⵜⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰⴰⵏⴳⵉⵍⴰⴰⵍⴱⴰⵏⵢⴰⴰⵔⵎⵉⵏⵢⴰⴰⵏⵜⵉⵢ ⵏ ⵀⵓⵍⴰⵏⴷ" +
+ "ⴰⴰⵏⴳⵓⵍⴰⴰⵔⵊⴰⵏⵜⵉⵏⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜⵏⵏⵎⵙⴰⵓⵙⵜⵔⴰⵍⵢⴰⴰⵔⵓⴱⴰⴰⴷⵔⴰⴱⵉⵊⴰⵏⴱⵓⵙⵏⴰ ⴷ" +
+ " ⵀⵉⵔⵙⵉⴽⴱⴰⵔⴱⴰⴷⴱⴰⵏⴳⵍⴰⴷⵉⵛⴱⵍⵊⵉⴽⴰⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓⴱⵍⵖⴰⵔⵢⴰⴱⵃⵔⴰⵢⵏⴱⵓⵔⵓⵏⴷⵉⴱⵉⵏⵉⵏⴱⵔⵎ" +
+ "ⵓⴷⴰⴱⵔⵓⵏⵉⴱⵓⵍⵉⴼⵢⴰⴱⵔⴰⵣⵉⵍⴱⴰⵀⴰⵎⴰⵙⴱⵀⵓⵜⴰⵏⴱⵓⵜⵙⵡⴰⵏⴰⴱⵉⵍⴰⵔⵓⵙⵢⴰⴱⵉⵍⵉⵣⴽⴰⵏⴰⴷⴰⵜⴰⴳⴷ" +
+ "ⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰⴽⵓⵏⴳⵓⵙⵡⵉⵙⵔⴰ" +
+ "ⴽⵓⵜ ⴷⵉⴼⵡⴰⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽⵛⵛⵉⵍⵉⴽⴰⵎⵉⵔⵓⵏⵛⵛⵉⵏⵡⴰⴽⵓⵍⵓⵎⴱⵢⴰⴽⵓⵙⵜⴰ ⵔⵉⴽⴰⴽⵓⴱⴰⵜⵉ" +
+ "ⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉⵇⵓⴱⵔⵓⵙⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜⴰⵍⵎⴰⵏⵢⴰⴷⵊⵉⴱⵓⵜⵉⴷⴰⵏⵎⴰⵔⴽⴷⵓⵎⵉ" +
+ "ⵏⵉⴽⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜⴷⵣⴰⵢⵔⵉⴽⵡⴰⴷⵓⵔⵉⵙⵜⵓⵏⵢⴰⵎⵉⵚⵕⵉⵔⵉⵜⵉⵔⵢⴰⵙⴱⴰⵏⵢⴰⵉⵜⵢⵓⴱⵢ" +
+ "ⴰⴼⵉⵍⵍⴰⵏⴷⴰⴼⵉⴷⵊⵉⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰⴼⵔⴰⵏⵙⴰⴳⴰⴱⵓⵏⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏⵖ" +
+ "ⵔⵏⴰⵟⴰⵊⵓⵔⵊⵢⴰⴳⵡⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵖⴰⵏⴰⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇⴳⵔⵉⵍⴰⵏⴷⴳⴰⵎⴱⵢⴰⵖⵉⵏⵢⴰⴳⵡⴰ" +
+ "ⴷⴰⵍⵓⴱⵖⵉⵏⵢⴰ ⵏ ⵉⴽⵡⴰⴷⵓⵔⵍⵢⵓⵏⴰⵏⴳⵡⴰⵜⵉⵎⴰⵍⴰⴳⵡⴰⵎⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡⴳⵡⵉⵢⴰⵏⴰⵀⵓⵏⴷⵓⵔⴰⵙⴽ" +
+ "ⵔⵡⴰⵜⵢⴰⵀⴰⵢⵜⵉⵀⵏⵖⴰⵔⵢⴰⴰⵏⴷⵓⵏⵉⵙⵢⴰⵉⵔⵍⴰⵏⴷⴰⵉⵙⵔⴰⵢⵉⵍⵍⵀⵉⵏⴷⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ " +
+ "ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉⵍⵄⵉⵔⴰⵇⵉⵔⴰⵏⵉⵙⵍⴰⵏⴷⵉⵟⴰⵍⵢⴰⵊⴰⵎⴰⵢⴽⴰⵍⵓⵔⴷⵓⵏⵍⵢⴰⴱⴰⵏⴽⵉⵏⵢⴰⴽⵉⵔⵖⵉⵣⵉⵙ" +
+ "ⵜⴰⵏⴽⴰⵎⴱⵓⴷⵢⴰⴽⵉⵔⵉⴱⴰⵜⵉⵇⵓⵎⵓⵔⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙ" +
+ "ⵍⴽⵡⵉⵜⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⵢⵎⴰⵏⴽⴰⵣⴰⵅⵙⵜⴰⵏⵍⴰⵡⵙⵍⵓⴱⵏⴰⵏⵙⴰⵏⵜⵍⵓⵙⵉⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏⵙⵔⵉⵍⴰⵏⴽ" +
+ "ⴰⵍⵉⴱⵉⵔⵢⴰⵍⵉⵚⵓⵟⵓⵍⵉⵜⵡⴰⵏⵢⴰⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳⵍⴰⵜⴼⵢⴰⵍⵉⴱⵢⴰⵍⵎⵖⵔⵉⴱⵎⵓⵏⴰⴽⵓⵎⵓⵍⴷⵓⴼⵢⴰⵎⴰⴷ" +
+ "ⴰⵖⴰⵛⵇⴰⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍⵎⴰⵙⵉⴷⵓⵏⵢⴰⵎⴰⵍⵉⵎⵢⴰⵏⵎⴰⵔⵎⵏⵖⵓⵍⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢ" +
+ "ⴰⵏ ⵏ ⵉⵥⵥⵍⵎⴹⵎⴰⵔⵜⵉⵏⵉⴽⵎⵓⵕⵉⵟⴰⵏⵢⴰⵎⵓⵏⵙⵉⵔⴰⵜⵎⴰⵍⵟⴰⵎⵓⵔⵉⵙⵎⴰⵍⴷⵉⴼⵎⴰⵍⴰⵡⵉⵎⵉⴽⵙⵉⴽⵎⴰ" +
+ "ⵍⵉⵣⵢⴰⵎⵓⵣⵏⴱⵉⵇⵏⴰⵎⵉⴱⵢⴰⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⵏⵏⵉⵊⵉⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽⵏⵉⵊⵉⵔ" +
+ "ⵢⴰⵏⵉⴽⴰⵔⴰⴳⵡⴰⵀⵓⵍⴰⵏⴷⴰⵏⵏⵔⵡⵉⵊⵏⵉⴱⴰⵍⵏⴰⵡⵔⵓⵏⵉⵡⵉⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰⵄⵓⵎⴰⵏⴱⴰⵏⴰⵎⴰⴱⵉⵔⵓⴱⵓⵍ" +
+ "ⵉⵏⵉⵣⵢⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⴼⵉⵍⵉⴱⴱⵉⵏⴱⴰⴽⵉⵙⵜⴰⵏⴱⵓⵍⵓⵏⵢⴰⵙⴰⵏⴱⵢⵉ" +
+ "ⵔ ⴷ ⵎⵉⴽⵍⵓⵏⴱⵉⵜⴽⴰⵢⵔⵏⴱⵓⵔⵜⵓ ⵔⵉⴽⵓⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰⴱⵕⵟⵇⵉⵣⴱⴰⵍⴰⵡⴱⴰⵔⴰⴳⵡ" +
+ "ⴰⵢⵇⴰⵜⴰⵔⵔⵉⵢⵓⵏⵢⵓⵏⵔⵓⵎⴰⵏⵢⴰⵔⵓⵙⵢⴰⵔⵡⴰⵏⴷⴰⵙⵙⴰⵄⵓⴷⵉⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏⵙⵙⵉⵛⵉⵍ" +
+ "ⵙⵙⵓⴷⴰⵏⵙⵙⵡⵉⴷⵙⵏⵖⴰⴼⵓⵔⴰⵙⴰⵏⵜⵉⵍⵉⵏⵙⵍⵓⴼⵉⵏⵢⴰⵙⵍⵓⴼⴰⴽⵢⴰⵙⵙⵉⵔⴰⵍⵢⵓⵏⵙⴰⵏⵎⴰⵔⵉⵏⵓⵙⵙⵉⵏⵉ" +
+ "ⴳⴰⵍⵚⵚⵓⵎⴰⵍⵙⵓⵔⵉⵏⴰⵎⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱⵙⴰⵍⴼⴰⴷⵓⵔⵙⵓⵔⵢⴰⵙⵡⴰⵣⵉⵍⴰⵏⴷⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ" +
+ " ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽⵜⵛⴰⴷⵟⵓⴳⵓⵟⴰⵢⵍⴰⵏⴷⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏⵟⵓⴽⵍⴰⵡⵜⵉⵎⵓⵔ ⵏ ⵍⵇⴱⵍⵜⵜⵓⵔⴽⵎⴰⵏⵙⵜ" +
+ "ⴰⵏⵜⵓⵏⵙⵟⵓⵏⴳⴰⵜⵓⵔⴽⵢⴰⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓⵜⵓⴼⴰⵍⵓⵟⴰⵢⵡⴰⵏⵟⴰⵏⵥⴰⵏⵢⴰⵓⴽⵔⴰⵏⵢⴰⵓⵖⴰⵏⴷ" +
+ "ⴰⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏⵓⵔⵓⴳⵡⴰⵢⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏⴰⵡⴰⵏⴽ ⵏ ⴼⴰⵜⵉⴽⴰⵏⵙⴰⵏⴼⴰⵏⵙⴰⵏ " +
+ "ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏⴼⵉⵏⵣⵡⵉⵍⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ" +
+ " ⵎⵓⵏⵏⵉⵏⴼⵉⵜⵏⴰⵎⴼⴰⵏⵡⴰⵟⵓⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰⵙⴰⵎⵡⴰⵢⴰⵎⴰⵏⵎⴰⵢⵓⵟⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵣⴰⵎⴱ" +
+ "ⵢⴰⵣⵉⵎⴱⴰⴱⵡⵉ",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0012, 0x0027, 0x0045, 0x006e, 0x0080, 0x0095,
+ 0x00aa, 0x00d3, 0x00e5, 0x00e5, 0x00fd, 0x012e, 0x013d, 0x0155,
+ 0x0164, 0x0164, 0x017f, 0x01a5, 0x01b7, 0x01d2, 0x01e4, 0x0206,
+ 0x021b, 0x022d, 0x0242, 0x0251, 0x0251, 0x0263, 0x0272, 0x0287,
+ 0x0287, 0x0299, 0x02ae, 0x02c0, 0x02c0, 0x02d8, 0x02f3, 0x0302,
+ 0x0314, 0x0314, 0x0368, 0x03b9, 0x03c8, 0x03da, 0x03f6, 0x041c,
+ 0x042b, 0x0440, 0x0452, 0x046a, 0x046a, 0x0486, 0x0492, 0x04c7,
+ 0x04c7, 0x04c7, 0x04d9, 0x050d, 0x0522, 0x0522, 0x0537, 0x054c,
+ // Entry 40 - 7F
+ 0x0561, 0x059b, 0x05aa, 0x05aa, 0x05bf, 0x05d4, 0x05e0, 0x05e0,
+ 0x05f8, 0x060a, 0x061f, 0x061f, 0x0637, 0x0646, 0x0675, 0x0693,
+ 0x0693, 0x06a5, 0x06b4, 0x06d9, 0x06eb, 0x06fd, 0x072e, 0x072e,
+ 0x073a, 0x075d, 0x0772, 0x0784, 0x0793, 0x07ab, 0x07d4, 0x07e6,
+ 0x07e6, 0x0801, 0x080d, 0x082c, 0x0841, 0x0841, 0x0841, 0x0859,
+ 0x086e, 0x087d, 0x0892, 0x0892, 0x08ad, 0x08c2, 0x08d7, 0x08d7,
+ 0x08e6, 0x093e, 0x0950, 0x095c, 0x096e, 0x0980, 0x0980, 0x0995,
+ 0x09a7, 0x09b9, 0x09c8, 0x09e9, 0x0a01, 0x0a19, 0x0a28, 0x0a51,
+ // Entry 80 - BF
+ 0x0a77, 0x0a9a, 0x0aa9, 0x0ad8, 0x0af3, 0x0aff, 0x0b11, 0x0b29,
+ 0x0b47, 0x0b5f, 0x0b74, 0x0b86, 0x0b9e, 0x0bbc, 0x0bce, 0x0bdd,
+ 0x0bef, 0x0c01, 0x0c19, 0x0c19, 0x0c19, 0x0c37, 0x0c66, 0x0c81,
+ 0x0c8d, 0x0ca2, 0x0cb7, 0x0cb7, 0x0cfd, 0x0d15, 0x0d30, 0x0d48,
+ 0x0d57, 0x0d66, 0x0d78, 0x0d8a, 0x0d9c, 0x0db1, 0x0dc6, 0x0ddb,
+ 0x0e0f, 0x0e21, 0x0e53, 0x0e68, 0x0e83, 0x0e98, 0x0eaa, 0x0eb9,
+ 0x0ec8, 0x0ed4, 0x0ef2, 0x0f01, 0x0f13, 0x0f1f, 0x0f59, 0x0f91,
+ 0x0fa9, 0x0fc1, 0x0fd6, 0x1002, 0x101a, 0x1036, 0x106d, 0x107f,
+ // Entry C0 - FF
+ 0x108e, 0x10a6, 0x10b5, 0x10b5, 0x10cd, 0x10e2, 0x10e2, 0x10f1,
+ 0x1103, 0x111e, 0x1150, 0x1162, 0x1174, 0x1183, 0x119b, 0x11b3,
+ 0x11cb, 0x11cb, 0x11e3, 0x11fe, 0x1219, 0x1231, 0x1243, 0x1258,
+ 0x1258, 0x1287, 0x129f, 0x129f, 0x12ae, 0x12cc, 0x12cc, 0x130c,
+ 0x1318, 0x1318, 0x1324, 0x1339, 0x135a, 0x136c, 0x138f, 0x13b0,
+ 0x13bc, 0x13cb, 0x13dd, 0x140c, 0x141e, 0x1430, 0x1448, 0x145d,
+ 0x146f, 0x146f, 0x14ae, 0x14c3, 0x14e1, 0x150a, 0x1542, 0x155a,
+ 0x159c, 0x15f1, 0x1603, 0x1618, 0x163e, 0x164d, 0x164d, 0x165c,
+ // Entry 100 - 13F
+ 0x166b, 0x1694, 0x16a6, 0x16be,
+ },
+ },
+ { // shi-Latn
+ "anduralimaratafɣanistanantiga d brbudaangilaalbanyaarminyaantiy n huland" +
+ "aangulaarjantinsamwa tamirikanitnnmsaustralyaarubaadrabijanbusna d h" +
+ "irsikbarbadbangladicbljikaburkina fasublɣarabḥraynburundibininbrmuda" +
+ "brunibulibyabrazilbahamasbhutanbutswanabilarusyabilizkanadatagdudant" +
+ " tadimukratit n Kongotagdudant tanammast n ifriqyakunguswisrakut dif" +
+ "wartigzirin n kukccilikamirunccinwaculumbyakusta rikakubatigzirin n " +
+ "kabbirdiqubrustagdudant tatcikitalmanyadjibutidanmarkduminiktagdudan" +
+ "t taduminiktdzayrikwaduristunyamiṣṛiritiryasbanyaityubyafillandafidj" +
+ "itigzirin n malawimikrunizyafransagabuntagldit imunnɣrnaṭajurjyagwiy" +
+ "an tafransistɣanaadrar n ṭaṛiqgrilandgambyaɣinyagwadalubɣinya n ikwa" +
+ "durlyunangwatimalagwamɣinya bisawgwiyanahunduraskrwatyahaytihnɣaryaa" +
+ "ndunisyairlandaisrayillhindtamnaḍt tanglizit n ugaru ahindilɛiraqira" +
+ "nislandiṭalyajamaykalurdunlyabankinyakirɣizistankambudyakiribaticumu" +
+ "rsankris d nifiskurya n iẓẓlmḍkurya n iffuslkwittigzirin n kaymankaz" +
+ "axstanlawslubnansantlusilikinctaynsrilankalibiryaliṣuṭulitwanyaluksa" +
+ "nburglatfyalibyalmɣribmunakumuldufyamadaɣacqartigzirin n marcalmasid" +
+ "unyamalimyanmarmnɣulyatigzirin n maryan n iẓẓlmḍmartinikmuṛiṭanyamun" +
+ "siratmalṭamurismaldifmalawimiksikmalizyamuznbiqnamibyakalidunya tama" +
+ "ynutnnijirtigzirin n nurfulknijiryanikaragwahulandannrwijnibalnawrun" +
+ "iwinyuzilandaɛumanbanamabirubulinizya tafransistbabwa ɣinya tamaynut" +
+ "filibbinbakistanbulunyasanbyir d miklunbitkayrnburtu rikuagmmaḍ n ta" +
+ "gut d ɣzzabṛṭqizbalawbaragwayqatarriyunyunrumanyarusyarwandassaɛudiy" +
+ "atigzirin n salumanssicilssudansswidsnɣafurasantilinslufinyaslufakya" +
+ "ssiralyunsanmarinussinigalṣṣumalsurinamsawṭumi d bransibsalfadursury" +
+ "aswazilandatigzirin n turkya d kayktcadṭuguṭaylandtadjakistanṭuklawt" +
+ "imur n lqbltturkmanstantunsṭungaturkyatrinidad d ṭubagutufaluṭaywanṭ" +
+ "anẓanyaukranyauɣandaiwunak munnin n mirikanurugwayuzbakistanawank n " +
+ "fatikansanfansan d grinadinfinzwilatigzirin timgad n nngliztigzirin " +
+ "timgad n iwunak munninfitnamfanwaṭuwalis d futunasamwayamanmayuṭafri" +
+ "qya n iffuszambyazimbabwi",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x000d, 0x0018, 0x0027, 0x002d, 0x0034,
+ 0x003b, 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x006e, 0x0076,
+ 0x007b, 0x007b, 0x0084, 0x0092, 0x0098, 0x00a1, 0x00a7, 0x00b3,
+ 0x00ba, 0x00c2, 0x00c9, 0x00ce, 0x00ce, 0x00d4, 0x00d9, 0x00e0,
+ 0x00e0, 0x00e6, 0x00ed, 0x00f3, 0x00f3, 0x00fb, 0x0104, 0x0109,
+ 0x010f, 0x010f, 0x012d, 0x014a, 0x014f, 0x0155, 0x015f, 0x016d,
+ 0x0172, 0x0179, 0x017f, 0x0187, 0x0187, 0x0191, 0x0195, 0x01a8,
+ 0x01a8, 0x01a8, 0x01ae, 0x01c0, 0x01c7, 0x01c7, 0x01ce, 0x01d5,
+ // Entry 40 - 7F
+ 0x01dc, 0x01f0, 0x01f5, 0x01f5, 0x01fc, 0x0203, 0x020b, 0x020b,
+ 0x0213, 0x0219, 0x0220, 0x0220, 0x0228, 0x022d, 0x023e, 0x0248,
+ 0x0248, 0x024e, 0x0253, 0x0260, 0x0269, 0x026f, 0x0280, 0x0280,
+ 0x0285, 0x0296, 0x029d, 0x02a3, 0x02a9, 0x02b1, 0x02c1, 0x02c7,
+ 0x02c7, 0x02d0, 0x02d4, 0x02e0, 0x02e7, 0x02e7, 0x02e7, 0x02ef,
+ 0x02f6, 0x02fb, 0x0303, 0x0303, 0x030c, 0x0313, 0x031a, 0x031a,
+ 0x031f, 0x0341, 0x0348, 0x034c, 0x0352, 0x035a, 0x035a, 0x0361,
+ 0x0367, 0x036d, 0x0372, 0x037e, 0x0386, 0x038e, 0x0393, 0x03a2,
+ // Entry 80 - BF
+ 0x03b6, 0x03c3, 0x03c8, 0x03d9, 0x03e2, 0x03e6, 0x03ec, 0x03f4,
+ 0x03fe, 0x0406, 0x040d, 0x0417, 0x041f, 0x0429, 0x042f, 0x0434,
+ 0x043b, 0x0441, 0x0449, 0x0449, 0x0449, 0x0454, 0x0465, 0x046e,
+ 0x0472, 0x0479, 0x0481, 0x0481, 0x04a1, 0x04a9, 0x04b6, 0x04be,
+ 0x04c5, 0x04ca, 0x04d0, 0x04d6, 0x04dc, 0x04e3, 0x04ea, 0x04f1,
+ 0x0503, 0x0509, 0x051b, 0x0522, 0x052b, 0x0532, 0x0538, 0x053d,
+ 0x0542, 0x0546, 0x0550, 0x0556, 0x055c, 0x0560, 0x0574, 0x0589,
+ 0x0591, 0x0599, 0x05a0, 0x05b0, 0x05b8, 0x05c2, 0x05da, 0x05e4,
+ // Entry C0 - FF
+ 0x05e9, 0x05f1, 0x05f6, 0x05f6, 0x05fe, 0x0605, 0x0605, 0x060a,
+ 0x0610, 0x061a, 0x062c, 0x0632, 0x0638, 0x063d, 0x0646, 0x064e,
+ 0x0656, 0x0656, 0x065e, 0x0667, 0x0670, 0x0678, 0x0682, 0x0689,
+ 0x0689, 0x069c, 0x06a4, 0x06a4, 0x06a9, 0x06b3, 0x06b3, 0x06cb,
+ 0x06cf, 0x06cf, 0x06d5, 0x06de, 0x06e9, 0x06f1, 0x06fe, 0x0709,
+ 0x070d, 0x0714, 0x071a, 0x072d, 0x0733, 0x073b, 0x0747, 0x074e,
+ 0x0755, 0x0755, 0x076c, 0x0773, 0x077d, 0x078c, 0x07a0, 0x07a8,
+ 0x07c0, 0x07df, 0x07e5, 0x07ee, 0x07fc, 0x0801, 0x0801, 0x0806,
+ // Entry 100 - 13F
+ 0x080d, 0x081c, 0x0822, 0x082a,
+ },
+ },
+ { // si
+ siRegionStr,
+ siRegionIdx,
+ },
+ { // sk
+ skRegionStr,
+ skRegionIdx,
+ },
+ { // sl
+ slRegionStr,
+ slRegionIdx,
+ },
+ { // smn
+ "Suomâ",
+ []uint16{ // 77 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ // Entry 40 - 7F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0006,
+ },
+ },
+ { // sn
+ "AndoraUnited Arab EmiratesAfuganistaniAntigua ne BarbudaAnguilaAlbaniaAr" +
+ "meniaNetherlands AntillesAngolaAjentinaSamoa ye AmerikaAustriaAustra" +
+ "liaArubhaAzabajaniBoznia ne HerzegovinaBarbadosBangladeshiBeljiumBuk" +
+ "inafasoBulgariaBahareniBurundiBeniniBermudaBuruneiBoliviaBrazilBaham" +
+ "aBhutaniBotswanaBelarusiBelizeKanadaDemocratic Republic of the Congo" +
+ "Central African RepublicKongoSwitzerlandIvory CoastZvitsuwa zveCookC" +
+ "hileKameruniChinaKolombiaKostarikaCubaZvitsuwa zveCape VerdeCyprusCz" +
+ "ech RepublicGermanyDjiboutiDenmarkDominicaDominican RepublicAljeriaE" +
+ "cuadorEstoniaEgyptEritreaSpainEtiopiaFinlandFijiZvitsuwa zveFalkland" +
+ "sMicronesiaFranceGabonUnited KingdomGrenadaGeorgiaFrench GuianaGhana" +
+ "GibraltarGreenlandGambiaGuineaGuadeloupeEquatorial GuineaGreeceGuate" +
+ "malaGuamGuinea-BissauGuyanaHondurasKorasiaHaitiHungaryIndonesiaIrela" +
+ "ndIzuraeriIndiaBritish Indian Ocean TerritoryIraqIranIcelandItalyJam" +
+ "aicaJordanJapanKenyaKyrgyzstanKambodiaKiribatiKomoroSaint Kitts and " +
+ "NevisKorea, NorthKorea, SouthKuwaitZvitsuwa zveCaymanKazakhstanLaosL" +
+ "ebanonSaint LuciaLiechtensteinSri LankaLiberiaLesothoLithuaniaLuxemb" +
+ "ourgLatviaLibyaMoroccoMonacoMoldovaMadagascarZvitsuwa zveMarshallMac" +
+ "edoniaMaliMyanmarMongoliaZvitsuwa zvekumaodzanyemba eMarianaMartiniq" +
+ "ueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMoza" +
+ "mbiqueNamibiaNew CaledoniaNigerChitsuwa cheNorfolkNigeriaNicaraguaNe" +
+ "therlandsNorwayNepalNauruNiueNew ZealandOmanPanamaPeruFrench Polynes" +
+ "iaPapua New GuineaPhilippinesPakistanPolandSaint Pierre and Miquelon" +
+ "PitcairnPuerto RicoPortugalPalauParaguayQatarRéunionRomaniaRussiaRwa" +
+ "ndaSaudi ArabiaZvitsuwa zvaSolomonSeychellesSudanSwedenSingaporeSain" +
+ "t HelenaSloveniaSlovakiaSierra LeoneSan MarinoSenegalSomaliaSuriname" +
+ "São Tomé and PríncipeEl SalvadorSyriaSwazilandZvitsuwa zveTurk neCai" +
+ "coChadiTogoThailandTajikistanTokelauEast TimorTurkmenistanTunisiaTon" +
+ "gaTurkeyTrinidad and TobagoTuvaluTaiwanTanzaniaUkraineUgandaAmerikaU" +
+ "ruguayUzbekistanVatican StateSaint Vincent and the GrenadinesVenezue" +
+ "laZvitsuwa zveHingirandiZvitsuwa zveAmerikaVietnamVanuatuWallis and " +
+ "FutunaSamoaYemenMayotteSouth AfricaZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x001a, 0x0026, 0x0038, 0x003f, 0x0046,
+ 0x004d, 0x0061, 0x0067, 0x0067, 0x006f, 0x007f, 0x0086, 0x008f,
+ 0x0095, 0x0095, 0x009e, 0x00b3, 0x00bb, 0x00c6, 0x00cd, 0x00d7,
+ 0x00df, 0x00e7, 0x00ee, 0x00f4, 0x00f4, 0x00fb, 0x0102, 0x0109,
+ 0x0109, 0x010f, 0x0115, 0x011c, 0x011c, 0x0124, 0x012c, 0x0132,
+ 0x0138, 0x0138, 0x0158, 0x0170, 0x0175, 0x0180, 0x018b, 0x019b,
+ 0x01a0, 0x01a8, 0x01ad, 0x01b5, 0x01b5, 0x01be, 0x01c2, 0x01d8,
+ 0x01d8, 0x01d8, 0x01de, 0x01ec, 0x01f3, 0x01f3, 0x01fb, 0x0202,
+ // Entry 40 - 7F
+ 0x020a, 0x021c, 0x0223, 0x0223, 0x022a, 0x0231, 0x0236, 0x0236,
+ 0x023d, 0x0242, 0x0249, 0x0249, 0x0250, 0x0254, 0x0269, 0x0273,
+ 0x0273, 0x0279, 0x027e, 0x028c, 0x0293, 0x029a, 0x02a7, 0x02a7,
+ 0x02ac, 0x02b5, 0x02be, 0x02c4, 0x02ca, 0x02d4, 0x02e5, 0x02eb,
+ 0x02eb, 0x02f4, 0x02f8, 0x0305, 0x030b, 0x030b, 0x030b, 0x0313,
+ 0x031a, 0x031f, 0x0326, 0x0326, 0x032f, 0x0336, 0x033e, 0x033e,
+ 0x0343, 0x0361, 0x0365, 0x0369, 0x0370, 0x0375, 0x0375, 0x037c,
+ 0x0382, 0x0387, 0x038c, 0x0396, 0x039e, 0x03a6, 0x03ac, 0x03c1,
+ // Entry 80 - BF
+ 0x03cd, 0x03d9, 0x03df, 0x03f1, 0x03fb, 0x03ff, 0x0406, 0x0411,
+ 0x041e, 0x0427, 0x042e, 0x0435, 0x043e, 0x0448, 0x044e, 0x0453,
+ 0x045a, 0x0460, 0x0467, 0x0467, 0x0467, 0x0471, 0x0485, 0x048e,
+ 0x0492, 0x0499, 0x04a1, 0x04a1, 0x04c4, 0x04ce, 0x04d8, 0x04e2,
+ 0x04e7, 0x04f0, 0x04f8, 0x04fe, 0x0504, 0x050c, 0x0516, 0x051d,
+ 0x052a, 0x052f, 0x0542, 0x0549, 0x0552, 0x055d, 0x0563, 0x0568,
+ 0x056d, 0x0571, 0x057c, 0x0580, 0x0586, 0x058a, 0x059a, 0x05aa,
+ 0x05b5, 0x05bd, 0x05c3, 0x05dc, 0x05e4, 0x05ef, 0x05ef, 0x05f7,
+ // Entry C0 - FF
+ 0x05fc, 0x0604, 0x0609, 0x0609, 0x0611, 0x0618, 0x0618, 0x061e,
+ 0x0624, 0x0630, 0x0643, 0x064d, 0x0652, 0x0658, 0x0661, 0x066d,
+ 0x0675, 0x0675, 0x067d, 0x0689, 0x0693, 0x069a, 0x06a1, 0x06a9,
+ 0x06a9, 0x06c1, 0x06cc, 0x06cc, 0x06d1, 0x06da, 0x06da, 0x06f2,
+ 0x06f7, 0x06f7, 0x06fb, 0x0703, 0x070d, 0x0714, 0x071e, 0x072a,
+ 0x0731, 0x0736, 0x073c, 0x074f, 0x0755, 0x075b, 0x0763, 0x076a,
+ 0x0770, 0x0770, 0x0777, 0x077e, 0x0788, 0x0795, 0x07b5, 0x07be,
+ 0x07d4, 0x07e7, 0x07ee, 0x07f5, 0x0806, 0x080b, 0x080b, 0x0810,
+ // Entry 100 - 13F
+ 0x0817, 0x0823, 0x0829, 0x0831,
+ },
+ },
+ { // so
+ "AndoraImaaraadka Carabta ee MidoobayAfgaanistaanAntigua iyo BarbudaAngui" +
+ "llaAlbaaniyaArmeeniyaNetherlands AntillesAngoolaArjantiinSamowa Amee" +
+ "rikaAwsteriyaAwstaraaliyaArubaAzerbajaanBosniya HersigoviinaBaarbado" +
+ "osBangaaladheeshBiljamBurkiina FaasoBulgaariyaBaxreynBurundiBiniinBe" +
+ "rmuudaBuruneeyaBoliifiyaBraasiilBahaamasBhutanBotuswaanaBelarusBeliz" +
+ "eKanadaJamhuuriyadda Dimuquraadiga KongoJamhuuriyadda Afrikada Dhexe" +
+ "KongoSwiiserlaandIvory coastJaziiradda CookJiliKaameruunShiinahaKolo" +
+ "mbiyaKosta RiikaKuubaCape Verde IslandsQubrusJamhuuriyadda JekJarmal" +
+ "JabuutiDenmarkDomeenikaJamhuuriyadda DomeenikaAljeeriyaIkuwadoorEsto" +
+ "oniyaMasarEretereeyaIsbeynItoobiyaFinlandFijiJaziiradaha FooklaanMic" +
+ "ronesiaFaransiisGaaboonUnited KingdomGiriinaadaJoorjiyaFrench Guiana" +
+ "GaanaGibraltarGreenlandGambiyaGiniGuadeloupeEquatorial GuineaGiriigG" +
+ "uwaatamaalaGuamGini-BisaawGuyanaHondurasKorweeshiyaHaytiHangeriIndon" +
+ "eesiyaAyrlaandIsraaʼiilHindiyaBritish Indian Ocean TerritoryCiraaqIi" +
+ "raanIislaandTalyaaniJameykaUrdunJabaanKiiniyaKirgistaanKamboodiyaKir" +
+ "ibatiKomoorosSaint Kitts and NevisKuuriyada WaqooyiKuuriyada Koonfur" +
+ "eedKuwaytCayman IslandsKasaakhistaanLaosLubnaanSaint LuciaLiechtenst" +
+ "einSirilaankaLaybeeriyaLosootoLituweeniyaLuksemboorgLatfiyaLiibiyaMa" +
+ "rookoMoonakoMoldofaMadagaskarMarshall IslandsMakadooniyaMaaliMyanmar" +
+ "MongooliyaNorthern Mariana IslandsMartiniqueMuritaaniyaMontserratMaa" +
+ "ldaMurishiyoosMaaldiqeenMalaawiMeksikoMalaysiaMusambiigNamiibiyaNew " +
+ "CaledoniaNayjerNorfolk IslandNayjeeriyaNikaraaguwaNetherlandsNoorwee" +
+ "yNebaalNauruNiueNeyuusilaandCumaanPanamaPeruFrench PolynesiaPapua Ne" +
+ "w GuineaFilibiinBakistaanBoolandSaint Pierre and MiquelonPitcairnPue" +
+ "rto RicoFalastiin Daanka galbeed iyo QasaBortuqaalPalauParaguayQadar" +
+ "RéunionRumaaniyaRuushRuwandaSacuudi CarabiyaSolomon IslandsSishelisS" +
+ "uudaanIswidhanSingaboorSaint HelenaSloveniaSlovakiaSiraaliyoonSan Ma" +
+ "rinoSinigaalSoomaaliyaSurinameSão Tomé and PríncipeEl SalvadorSuuriy" +
+ "aIswaasilaandTurks and Caicos IslandsJaadToogoTaylaandTajikistanToke" +
+ "lauTimorka bariTurkmenistanTuniisiyaTongaTurkiTrinidad and TobagoTuv" +
+ "aluTaywaanTansaaniyaUkraynUgaandaMaraykankaUruguwaayUusbakistaanFaat" +
+ "ikaanSaint Vincent and the GrenadinesFenisuweelaBritish Virgin Islan" +
+ "dsU.S. Virgin IslandsFiyetnaamVanuatuWallis and FutunaSamoaYamanMayo" +
+ "tteKoonfur AfrikaSaambiyaSimbaabweFar aan la aqoon amase aan saxnayn",
+ []uint16{ // 261 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0024, 0x0030, 0x0043, 0x004b, 0x0054,
+ 0x005d, 0x0071, 0x0078, 0x0078, 0x0081, 0x0090, 0x0099, 0x00a5,
+ 0x00aa, 0x00aa, 0x00b4, 0x00c8, 0x00d2, 0x00e0, 0x00e6, 0x00f4,
+ 0x00fe, 0x0105, 0x010c, 0x0112, 0x0112, 0x011a, 0x0123, 0x012c,
+ 0x012c, 0x0134, 0x013c, 0x0142, 0x0142, 0x014c, 0x0153, 0x0159,
+ 0x015f, 0x015f, 0x0180, 0x019c, 0x01a1, 0x01ad, 0x01b8, 0x01c7,
+ 0x01cb, 0x01d4, 0x01dc, 0x01e5, 0x01e5, 0x01f0, 0x01f5, 0x0207,
+ 0x0207, 0x0207, 0x020d, 0x021e, 0x0224, 0x0224, 0x022b, 0x0232,
+ // Entry 40 - 7F
+ 0x023b, 0x0252, 0x025b, 0x025b, 0x0264, 0x026d, 0x0272, 0x0272,
+ 0x027c, 0x0282, 0x028a, 0x028a, 0x0291, 0x0295, 0x02a9, 0x02b3,
+ 0x02b3, 0x02bc, 0x02c3, 0x02d1, 0x02db, 0x02e3, 0x02f0, 0x02f0,
+ 0x02f5, 0x02fe, 0x0307, 0x030e, 0x0312, 0x031c, 0x032d, 0x0333,
+ 0x0333, 0x033f, 0x0343, 0x034e, 0x0354, 0x0354, 0x0354, 0x035c,
+ 0x0367, 0x036c, 0x0373, 0x0373, 0x037e, 0x0386, 0x0390, 0x0390,
+ 0x0397, 0x03b5, 0x03bb, 0x03c1, 0x03c9, 0x03d1, 0x03d1, 0x03d8,
+ 0x03dd, 0x03e3, 0x03ea, 0x03f4, 0x03fe, 0x0406, 0x040e, 0x0423,
+ // Entry 80 - BF
+ 0x0434, 0x0448, 0x044e, 0x045c, 0x0469, 0x046d, 0x0474, 0x047f,
+ 0x048c, 0x0496, 0x04a0, 0x04a7, 0x04b2, 0x04bd, 0x04c4, 0x04cb,
+ 0x04d2, 0x04d9, 0x04e0, 0x04e0, 0x04e0, 0x04ea, 0x04fa, 0x0505,
+ 0x050a, 0x0511, 0x051b, 0x051b, 0x0533, 0x053d, 0x0548, 0x0552,
+ 0x0558, 0x0563, 0x056d, 0x0574, 0x057b, 0x0583, 0x058c, 0x0595,
+ 0x05a2, 0x05a8, 0x05b6, 0x05c0, 0x05cb, 0x05d6, 0x05de, 0x05e4,
+ 0x05e9, 0x05ed, 0x05f9, 0x05ff, 0x0605, 0x0609, 0x0619, 0x0629,
+ 0x0631, 0x063a, 0x0641, 0x065a, 0x0662, 0x066d, 0x068e, 0x0697,
+ // Entry C0 - FF
+ 0x069c, 0x06a4, 0x06a9, 0x06a9, 0x06b1, 0x06ba, 0x06ba, 0x06bf,
+ 0x06c6, 0x06d6, 0x06e5, 0x06ed, 0x06f4, 0x06fc, 0x0705, 0x0711,
+ 0x0719, 0x0719, 0x0721, 0x072c, 0x0736, 0x073e, 0x0748, 0x0750,
+ 0x0750, 0x0768, 0x0773, 0x0773, 0x077a, 0x0786, 0x0786, 0x079e,
+ 0x07a2, 0x07a2, 0x07a7, 0x07af, 0x07b9, 0x07c0, 0x07cc, 0x07d8,
+ 0x07e1, 0x07e6, 0x07eb, 0x07fe, 0x0804, 0x080b, 0x0815, 0x081b,
+ 0x0822, 0x0822, 0x082c, 0x0835, 0x0841, 0x084a, 0x086a, 0x0875,
+ 0x088b, 0x089e, 0x08a7, 0x08ae, 0x08bf, 0x08c4, 0x08c4, 0x08c9,
+ // Entry 100 - 13F
+ 0x08d0, 0x08de, 0x08e6, 0x08ef, 0x0911,
+ },
+ },
+ { // sq
+ sqRegionStr,
+ sqRegionIdx,
+ },
+ { // sr
+ srRegionStr,
+ srRegionIdx,
+ },
+ { // sr-Latn
+ srLatnRegionStr,
+ srLatnRegionIdx,
+ },
+ { // sv
+ svRegionStr,
+ svRegionIdx,
+ },
+ {}, // sv-FI
+ { // sw
+ swRegionStr,
+ swRegionIdx,
+ },
+ { // sw-CD
+ "AfuganistaniBeniniKongoKodivaaKuprosiUajemiLishenteniBukiniMyamaKisiwa c" +
+ "ha NorfokNijeriaTimori ya Mashariki",
+ []uint16{ // 231 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c,
+ 0x000c, 0x000c, 0x000c, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,
+ 0x0012, 0x0012, 0x0012, 0x0012, 0x0017, 0x0017, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e,
+ 0x001e, 0x001e, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ // Entry 40 - 7F
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025,
+ 0x0025, 0x0025, 0x0025, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+ 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+ // Entry 80 - BF
+ 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,
+ 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003b, 0x003b, 0x003b,
+ 0x003b, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040,
+ 0x0040, 0x0040, 0x0051, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
+ 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
+ 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
+ // Entry C0 - FF
+ 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
+ 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
+ 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
+ 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,
+ 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x006b,
+ },
+ },
+ { // ta
+ taRegionStr,
+ taRegionIdx,
+ },
+ { // te
+ teRegionStr,
+ teRegionIdx,
+ },
+ { // teo
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKeniaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // th
+ thRegionStr,
+ thRegionIdx,
+ },
+ {}, // ti
+ { // to
+ "Motu ʻAsenisiniʻAnitolaʻAlepea FakatahatahaʻAfikānisitaniAnitikua mo Pal" +
+ "aputaAnikuilaʻAlipaniaʻĀmeniaAnitila fakahōlaniʻAngikolaʻAnitātikaʻA" +
+ "senitinaHaʻamoa ʻAmelikaʻAosituliaʻAositelēliaʻAlupaʻOtumotu ʻAlaniʻ" +
+ "AsapaisaniPosinia mo HesikōvinaPāpeitosiPengilātesiPelesiumePekano F" +
+ "asoPulukaliaPaleiniPulunitiPeniniSā PatēlemiPēmutaPuluneiPolīviaKali" +
+ "piane fakahōlaniPalāsiliPahamaPūtaniMotu PuvetiPotisiuanaPelalusiPel" +
+ "iseKānataʻOtumotu KokoKongo - KinisasaLipapilika ʻAfilika LotolotoKo" +
+ "ngo - PalasavilaSuisilaniMatafonua ʻAivolīʻOtumotu KukiSiliKameluniS" +
+ "iainaKolomipiaMotu KilipatoniKosita LikaKiupaMuiʻi VēteKulasaoMotu K" +
+ "ilisimasiSaipalesiLipapilika SekiSiamaneTieko KāsiaSiputiTenimaʻakeT" +
+ "ominikaLipapilika TominikaʻAisiliaSiuta mo MelilaʻEkuetoaʻEsitōniaʻI" +
+ "sipiteSahala fakahihifoʻElituliaSipeiniʻĪtiōpiaʻIulope fakatahatahaF" +
+ "inilaniFisiʻOtumotu FokulaniMikolonīsiaʻOtumotu FaloeFalanisēKaponiP" +
+ "ilitāniaKelenatāSeōsiaKuiana fakafalanisēKuenisīKanaSipalālitāKulini" +
+ "laniKamipiaKiniKuatalupeʻEkueta KiniKalisiʻOtumotu Seōsia-tonga mo S" +
+ "aniuisi-tongaKuatamalaKuamuKini-PisauKuianaHongi Kongi SAR SiainaʻOt" +
+ "umotu Heati mo MakitonaliHonitulasiKuloisiaHaitiHungakaliaʻOtumotu K" +
+ "aneliʻInitonēsiaʻAealaniʻIsileliMotu ManiʻInitiaPotu fonua moana ʻIn" +
+ "itia fakapilitāniaʻIlaakiʻIlaaniʻAisilaniʻĪtaliSelusīSamaikaSoataneS" +
+ "iapaniKeniāKīkisitaniKamipōtiaKilipasiKomolosiSā Kitisi mo NevisiKōl" +
+ "ea tokelauKōlea tongaKueitiʻOtumotu KeimeniKasakitaniLauLepanoniSā L" +
+ "ūsiaLikitenisiteiniSīlangikāLaipeliaLesotoLituaniaLakisimipekiLativ" +
+ "iaLīpiaMolokoMonakoMolotovaMonitenikaloSā Mātini (fakafalanisē)Matak" +
+ "asikaʻOtumotu MāsoloMasetōniaMāliPemaMongokōliaMakau SAR SiainaʻOtum" +
+ "otu Maliana tokelauMātenikiMauliteniaMoʻungaselatiMalitaMaulitiusiMa" +
+ "lativisiMalauiMekisikouMalēsiaMosēmipikiNamipiaNiu KaletōniaNisiaMot" +
+ "u NōfolikiNaisiliaNikalakuaHōlaniNoauēNepaliNauluNiuēNuʻusilaʻOmaniP" +
+ "anamāPelūPolinisia fakafalanisēPapuaniukiniFilipainiPākisitaniPolani" +
+ "Sā Piea mo MikeloniʻOtumotu PitikeniPueto LikoPotu PalesitainePotuka" +
+ "liPalauPalakuaiKatāʻOsēnia mamaʻoLēunioniLomēniaSēpiaLūsiaLuanitāSau" +
+ "te ʻAlepeaʻOtumotu SolomoneʻOtumotu SeiseliSūteniSuēteniSingapoaSā H" +
+ "elenaSilōveniaSivolopāti mo Sani MaieniSilōvakiaSiela LeoneSā Malino" +
+ "SenekaloSōmaliaSulinameSūtani fakatongaSao Tomē mo PilinisipeʻEle Sa" +
+ "lavatoaSā Mātini (fakahōlani)SīliaSuasilaniTulisiteni ta KunuhaʻOtum" +
+ "otu Tuki mo KaikosiSātiPotu fonua tonga fakafalanisēTokoTailaniTasik" +
+ "itaniTokelauTimoa hahakeTūkimenisitaniTunīsiaTongaToakeTilinitati mo" +
+ " TopakoTūvaluTaiuaniTenisāniaʻŪkalaʻineʻIukanitāʻOtumotu siʻi ʻo ʻAm" +
+ "elikaPuleʻanga fakatahataha ʻAmelikaʻUlukuaiʻUsipekitaniKolo Vatikan" +
+ "iSā Viniseni mo KulenatiniVenesuelaʻOtumotu Vilikini fakapilitāniaʻO" +
+ "tumotu Vilikini fakaʻamelikaVietinamiVanuatuʻUvea mo FutunaHaʻamoaKō" +
+ "sovoIemeniMaioteʻAfilika tongaSemipiaSimipapueiPotu fonua taʻeʻiloa " +
+ "pe halaMāmaniʻAfilikaʻAmelika tokelauʻAmelika tongaʻOsēniaʻAfilika f" +
+ "akahihifoʻAmelika lotolotoʻAfilika fakahahakeʻAfilika fakatokelauʻAf" +
+ "ilika lotolotoʻAfilika fakatongaOngo ʻAmelikaʻAmelika fakatokelauKal" +
+ "ipianeʻĒsia fakahahakeʻĒsia fakatongaʻĒsia fakatongahahakeʻIulope fa" +
+ "katongaʻAositelēlēsiaMelanīsiaPotu fonua MikolonīsiaPolinīsiaʻĒsiaʻĒ" +
+ "sia lotolotoʻĒsia fakahihifoʻIulopeʻIulope fakahahakeʻIulope fakatok" +
+ "elauʻIulope fakahihifoʻAmelika fakalatina",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0019, 0x002e, 0x003e, 0x0052, 0x005a, 0x0064,
+ 0x006d, 0x0080, 0x008a, 0x0096, 0x00a1, 0x00b3, 0x00be, 0x00cc,
+ 0x00d3, 0x00e4, 0x00f0, 0x0106, 0x0110, 0x011c, 0x0125, 0x0130,
+ 0x0139, 0x0140, 0x0148, 0x014e, 0x015b, 0x0162, 0x0169, 0x0171,
+ 0x0186, 0x018f, 0x0195, 0x019c, 0x01a7, 0x01b1, 0x01b9, 0x01bf,
+ 0x01c6, 0x01d4, 0x01e4, 0x0201, 0x0213, 0x021c, 0x022f, 0x023d,
+ 0x0241, 0x0249, 0x024f, 0x0258, 0x0267, 0x0272, 0x0277, 0x0283,
+ 0x028a, 0x0299, 0x02a2, 0x02b1, 0x02b8, 0x02c4, 0x02ca, 0x02d5,
+ // Entry 40 - 7F
+ 0x02dd, 0x02f0, 0x02f9, 0x0308, 0x0311, 0x031c, 0x0325, 0x0336,
+ 0x0340, 0x0347, 0x0352, 0x0367, 0x036f, 0x0373, 0x0385, 0x0391,
+ 0x03a0, 0x03a9, 0x03af, 0x03b9, 0x03c2, 0x03c9, 0x03dd, 0x03e5,
+ 0x03e9, 0x03f5, 0x03ff, 0x0406, 0x040a, 0x0413, 0x0420, 0x0426,
+ 0x044f, 0x0458, 0x045d, 0x0467, 0x046d, 0x0483, 0x04a0, 0x04aa,
+ 0x04b2, 0x04b7, 0x04c1, 0x04d1, 0x04de, 0x04e7, 0x04f0, 0x04f9,
+ 0x0501, 0x0529, 0x0531, 0x0539, 0x0543, 0x054b, 0x0552, 0x0559,
+ 0x0560, 0x0567, 0x056d, 0x0578, 0x0582, 0x058a, 0x0592, 0x05a6,
+ // Entry 80 - BF
+ 0x05b4, 0x05c0, 0x05c6, 0x05d7, 0x05e1, 0x05e4, 0x05ec, 0x05f6,
+ 0x0605, 0x0610, 0x0618, 0x061e, 0x0626, 0x0632, 0x0639, 0x063f,
+ 0x0645, 0x064b, 0x0653, 0x065f, 0x067a, 0x0684, 0x0695, 0x069f,
+ 0x06a4, 0x06a8, 0x06b3, 0x06c3, 0x06dc, 0x06e5, 0x06ef, 0x06fd,
+ 0x0703, 0x070d, 0x0717, 0x071d, 0x0726, 0x072e, 0x0739, 0x0740,
+ 0x074e, 0x0753, 0x0761, 0x0769, 0x0772, 0x0779, 0x077f, 0x0785,
+ 0x078a, 0x078f, 0x0798, 0x079f, 0x07a6, 0x07ab, 0x07c2, 0x07ce,
+ 0x07d7, 0x07e2, 0x07e8, 0x07fc, 0x080e, 0x0818, 0x0828, 0x0830,
+ // Entry C0 - FF
+ 0x0835, 0x083d, 0x0842, 0x0853, 0x085c, 0x0864, 0x086a, 0x0870,
+ 0x0878, 0x0886, 0x0898, 0x08a9, 0x08b0, 0x08b8, 0x08c0, 0x08ca,
+ 0x08d4, 0x08ee, 0x08f8, 0x0903, 0x090d, 0x0915, 0x091d, 0x0925,
+ 0x0936, 0x094d, 0x095c, 0x0975, 0x097b, 0x0984, 0x0998, 0x09b1,
+ 0x09b6, 0x09d4, 0x09d8, 0x09df, 0x09e9, 0x09f0, 0x09fc, 0x0a0b,
+ 0x0a13, 0x0a18, 0x0a1d, 0x0a31, 0x0a38, 0x0a3f, 0x0a49, 0x0a56,
+ 0x0a61, 0x0a7e, 0x0a9f, 0x0aa8, 0x0ab5, 0x0ac2, 0x0adc, 0x0ae5,
+ 0x0b06, 0x0b26, 0x0b2f, 0x0b36, 0x0b46, 0x0b4e, 0x0b55, 0x0b5b,
+ // Entry 100 - 13F
+ 0x0b61, 0x0b70, 0x0b77, 0x0b81, 0x0b9f, 0x0ba6, 0x0baf, 0x0bc0,
+ 0x0bcf, 0x0bd8, 0x0bec, 0x0bfe, 0x0c12, 0x0c27, 0x0c39, 0x0c4c,
+ 0x0c5a, 0x0c6f, 0x0c78, 0x0c8a, 0x0c9b, 0x0cb2, 0x0cc4, 0x0cd5,
+ 0x0cdf, 0x0cf6, 0x0d00, 0x0d07, 0x0d17, 0x0d29, 0x0d31, 0x0d44,
+ 0x0d58, 0x0d6b, 0x0d7f,
+ },
+ },
+ { // tr
+ trRegionStr,
+ trRegionIdx,
+ },
+ { // twq
+ "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" +
+ "lbaaniArmeeniHollandu Antiiyey LabooAngoolaArgentineAmeriki SamoaOtr" +
+ "išiOstraaliAruubaAzerbaayijaŋBosni nda HerzegovineBarbaadosBangladeš" +
+ "iBelgiikiBurkina fasoBulgaariBahareenBurundiBeniŋBermudaBruuneeBooli" +
+ "viBreezilBahamasBuutaŋBotswaanaBilorišiBeliiziKanaadaKongoo demookar" +
+ "atiki labooCentraafriki koyraKongooSwisuKudwarKuuk gungeyŠiiliKameru" +
+ "unŠiinKolombiKosta rikaKuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuu" +
+ "tiDanemarkDoominikiDoominiki labooAlžeeriEkwateerEstooniMisraEritree" +
+ "EspaaɲeEcioopiFinlanduFijiKalkan gungeyMikroneziFaransiGaabonAlbaasa" +
+ "laama MargantaGrenaadaGorgiFaransi GuyaanGaanaGibraltarGrinlandGambi" +
+ "GineGwadeluupGinee EkwatorialGreeceGwatemaalaGuamGine-BissoGuyaaneHo" +
+ "ndurasKrwaasiHaitiHungaariIndoneeziIrlanduIsrayelIndu labooBritiši I" +
+ "ndu teekoo laamaIraakIraanAyselandItaaliJamaayikUrdunJaapoŋKeeniyaKy" +
+ "rgyzstankamboogiKiribaatiKomoorSeŋ Kitts nda NevisKooree, GurmaKoore" +
+ "e, HawsaKuweetKayman gungeyKaazakstanLaawosLubnaanSeŋ LussiaLiechten" +
+ "steinSrilankaLiberiaLeesotoLituaaniLuxembourgLetooniLiibiMaarokMonak" +
+ "oMoldoviMadagascarMaršal gungeyMaacedooniMaaliMaynamarMongooliMarian" +
+ "a Gurma GungeyMartiniikiMooritaaniMontserratMaltaMooris gungeyMaldii" +
+ "vuMalaawiMexikiMaleeziMozambikNaamibiKaaledooni TaagaaNižerNorfolk G" +
+ "ungooNaajiriiaNikaragwaHollanduNorveejNeepalNauruNiueZeelandu TaagaO" +
+ "maanPanamaPeeruFaransi PolineeziPapua Ginee TaagaFilipinePaakistanPo" +
+ "loɲeSeŋ Piyer nda MikelonPitikarinPorto RikoPalestine Dangay nda Gaa" +
+ "zaPortugaalPaluParaguweyKataarReenioŋRumaaniIriši labooRwandaSaudiya" +
+ "Solomon GungeySeešelSuudaŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSe" +
+ "era LeonSan MarinoSenegalSomaaliSurinaamSao Tome nda PrinsipeSalvado" +
+ "r labooSuuriaSwazilandTurk nda Kayikos GungeyCaaduTogoTaayilandTaaži" +
+ "kistanTokelauTimoor hawsaTurkmenistaŋTuniziTongaTurkiTrinidad nda To" +
+ "baagoTuvaluTaayiwanTanzaaniUkreenUgandaAmeriki Laabu MarganteyUruguw" +
+ "eyUzbeekistanVaatikan LaamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiš" +
+ "i Virgin gungeyAmeerik Virgin GungeyVietnaamVanautuWallis nda Futuna" +
+ "SamoaYamanMayootiHawsa Afriki LabooZambiZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e,
+ 0x0055, 0x006c, 0x0073, 0x0073, 0x007c, 0x0089, 0x0090, 0x0098,
+ 0x009e, 0x009e, 0x00ab, 0x00c0, 0x00c9, 0x00d4, 0x00dc, 0x00e8,
+ 0x00f0, 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0113, 0x011a,
+ 0x011a, 0x0121, 0x0128, 0x012f, 0x012f, 0x0138, 0x0141, 0x0148,
+ 0x014f, 0x014f, 0x0169, 0x017b, 0x0181, 0x0186, 0x018c, 0x0197,
+ 0x019d, 0x01a5, 0x01aa, 0x01b1, 0x01b1, 0x01bb, 0x01c0, 0x01ce,
+ 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e5, 0x01e5, 0x01ec, 0x01f4,
+ // Entry 40 - 7F
+ 0x01fd, 0x020c, 0x0214, 0x0214, 0x021c, 0x0223, 0x0228, 0x0228,
+ 0x022f, 0x0237, 0x023e, 0x023e, 0x0246, 0x024a, 0x0257, 0x0260,
+ 0x0260, 0x0267, 0x026d, 0x0282, 0x028a, 0x028f, 0x029d, 0x029d,
+ 0x02a2, 0x02ab, 0x02b3, 0x02b8, 0x02bc, 0x02c5, 0x02d5, 0x02db,
+ 0x02db, 0x02e5, 0x02e9, 0x02f3, 0x02fa, 0x02fa, 0x02fa, 0x0302,
+ 0x0309, 0x030e, 0x0316, 0x0316, 0x031f, 0x0326, 0x032d, 0x032d,
+ 0x0337, 0x0351, 0x0356, 0x035b, 0x0363, 0x0369, 0x0369, 0x0371,
+ 0x0376, 0x037d, 0x0384, 0x038e, 0x0396, 0x039f, 0x03a5, 0x03b9,
+ // Entry 80 - BF
+ 0x03c6, 0x03d3, 0x03d9, 0x03e6, 0x03f0, 0x03f6, 0x03fd, 0x0408,
+ 0x0415, 0x041d, 0x0424, 0x042b, 0x0433, 0x043d, 0x0444, 0x0449,
+ 0x044f, 0x0455, 0x045c, 0x045c, 0x045c, 0x0466, 0x0474, 0x047e,
+ 0x0483, 0x048b, 0x0493, 0x0493, 0x04a7, 0x04b1, 0x04bb, 0x04c5,
+ 0x04ca, 0x04d7, 0x04df, 0x04e6, 0x04ec, 0x04f3, 0x04fb, 0x0502,
+ 0x0513, 0x0519, 0x0527, 0x0530, 0x0539, 0x0541, 0x0548, 0x054e,
+ 0x0553, 0x0557, 0x0565, 0x056a, 0x0570, 0x0575, 0x0586, 0x0597,
+ 0x059f, 0x05a8, 0x05af, 0x05c5, 0x05ce, 0x05d8, 0x05f2, 0x05fb,
+ // Entry C0 - FF
+ 0x05ff, 0x0608, 0x060e, 0x060e, 0x0616, 0x061d, 0x061d, 0x0629,
+ 0x062f, 0x0636, 0x0644, 0x064b, 0x0652, 0x0658, 0x0660, 0x066b,
+ 0x0673, 0x0673, 0x067b, 0x0685, 0x068f, 0x0696, 0x069d, 0x06a5,
+ 0x06a5, 0x06ba, 0x06c8, 0x06c8, 0x06ce, 0x06d7, 0x06d7, 0x06ee,
+ 0x06f3, 0x06f3, 0x06f7, 0x0700, 0x070c, 0x0713, 0x071f, 0x072c,
+ 0x0732, 0x0737, 0x073c, 0x0750, 0x0756, 0x075e, 0x0766, 0x076c,
+ 0x0772, 0x0772, 0x0789, 0x0791, 0x079c, 0x07aa, 0x07c3, 0x07cf,
+ 0x07e5, 0x07fa, 0x0802, 0x0809, 0x081a, 0x081f, 0x081f, 0x0824,
+ // Entry 100 - 13F
+ 0x082b, 0x083d, 0x0842, 0x084a,
+ },
+ },
+ { // tzm
+ "AnḍurraImarat Tiεrabin TidduklinAfɣanistanAntigwa d BarbudaAngwillaAlban" +
+ "yaArminyaAntil TihulanḍiyyinAngulaArjuntinSamwa ImirikaniyyinUstriyy" +
+ "aUsṭralyaArubaAzerbiǧanBusna-d-HirsikBarbadusBangladicBeljikaBurkina" +
+ " FasuBelɣaryaBaḥraynBurundiBininBirmudaBrunayBulivyaBṛazilBahamasBuṭ" +
+ "anButswanaBilarusyaBilizKanadaTagduda Tadimuqraṭit n KunguTagduda n " +
+ "Afrika WammasKunguSwisraTaɣazut n UszerTigzirin n KukCciliKamerunṢṣi" +
+ "nKulumbyaKusṭa RikakubaTigzirin n Iɣf UzegzawQubrusTagduda n ČikAlma" +
+ "nyaǦibutiDanmarkḌuminikaTagduda n ḌuminikanDzayerIkwaḍurIsṭunyaMiṣrI" +
+ "ritryaSbanyaItyupyaFinlanḍaFijiTigzirin n FalklandMikrunizyaFṛansaGa" +
+ "bunTagelda TaddukeltGrinadaJyurjyaGuyana TafransistƔanaJibralṭarGrin" +
+ "lanḍaGambyaƔinyaGwadalupƔinya Tikwaṭur itYunanGwatimalaGwamƔinya-Bis" +
+ "sawGuyanaHindurasKrwatyaHaytiHenɣaryaIndunizyaIrlanḍaIsraeilHindAmur" +
+ " n Agaraw Uhindi UbṛiṭaniƐiraqIranIslanḍaIṭalyaJamaykaUrḍunJjappunKi" +
+ "nyaKirɣistanKambudjKiribatiQumurSantekits d NivisKurya TugafatKurya " +
+ "TunẓultKuwwaytTigzirin n KaymanKazaxistanLawsLubnanSantelusyaLictenc" +
+ "ṭaynSrilankaLibiryaLisuṭuLitwanyaLiksumburgLiṭṭunyaLibyaMeṛṛukMuna" +
+ "kuMulḍavyaMadaɣacqarTigzirin n MarcalMaqdunyaMaliMyanmarManɣulyaTigz" +
+ "irin n Maryana TugafatMartinikMuritanyaMuntsirraMalṭaMurisMaldivMala" +
+ "wiMiksikMalizyaMuzambiqNamibyakalidunya TamaynutNnijerTigzirt Nurful" +
+ "kNijiriaNikaragwaHulanḍaNnurwijNippalNawruNiwiZilanḍa TamaynutƐumman" +
+ "PanamaPiruPulinizya TafransistPapwa Ɣinya TamaynutFilippinPakistanPu" +
+ "lunyaSantepyir d MikelunPitkirnPurturikuAgemmaḍ Ugut d Ɣazza Ifilisṭ" +
+ "iniyenPurtuɣalPaluParagwayQaṭarRiyyunyunṚumanyaRusyaRuwwanḍaSsaεudiy" +
+ "ya TaεrabtTigzirin n SalumunSsicilSsudanSsewwidSanɣafuraSantehilinSl" +
+ "uvinyaSluvakyaSiralyunSanmarinuSsiniɣalṢṣumalSurinamSawṭumi d Prinsi" +
+ "pSalvaḍurSuryaSwazilanḍaTigzirin Turkiyyin d TikaykusinTcadṬṭuguṬayl" +
+ "anḍaṬaǧikistanTukluTimur TagmuṭTurkmanistanTunesṬungaTurkyaTrinidad " +
+ "d ṬubaguṬuvaluṬaywanṬanzanyaUkranyaUɣandaIwunak Idduklen n AmirikaUr" +
+ "ugwayUzbakistanAwank iɣrem n VatikanSantevinsent d GrinadinVinzwilla" +
+ "Tigzirin (Virgin) TibṛiṭaniyinTigzirin n Virjin n Iwunak YedduklenVi" +
+ "ṭnamVanwatuWalis d FutunaSamwaYamanMayuṭTafrikt TunẓulZambyaZimbab" +
+ "wi",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0009, 0x0023, 0x002e, 0x003f, 0x0047, 0x004e,
+ 0x0055, 0x006a, 0x0070, 0x0070, 0x0078, 0x008b, 0x0093, 0x009d,
+ 0x00a2, 0x00a2, 0x00ac, 0x00ba, 0x00c2, 0x00cb, 0x00d2, 0x00de,
+ 0x00e7, 0x00f0, 0x00f7, 0x00fc, 0x00fc, 0x0103, 0x0109, 0x0110,
+ 0x0110, 0x0118, 0x011f, 0x0126, 0x0126, 0x012e, 0x0137, 0x013c,
+ 0x0142, 0x0142, 0x0160, 0x0177, 0x017c, 0x0182, 0x0192, 0x01a0,
+ 0x01a5, 0x01ac, 0x01b4, 0x01bc, 0x01bc, 0x01c8, 0x01cc, 0x01e3,
+ 0x01e3, 0x01e3, 0x01e9, 0x01f7, 0x01fe, 0x01fe, 0x0205, 0x020c,
+ // Entry 40 - 7F
+ 0x0216, 0x022b, 0x0231, 0x0231, 0x023a, 0x0243, 0x0249, 0x0249,
+ 0x0250, 0x0256, 0x025d, 0x025d, 0x0267, 0x026b, 0x027e, 0x0288,
+ 0x0288, 0x0290, 0x0295, 0x02a6, 0x02ad, 0x02b4, 0x02c5, 0x02c5,
+ 0x02ca, 0x02d5, 0x02e0, 0x02e6, 0x02ec, 0x02f4, 0x0308, 0x030d,
+ 0x030d, 0x0316, 0x031a, 0x0327, 0x032d, 0x032d, 0x032d, 0x0335,
+ 0x033c, 0x0341, 0x034a, 0x034a, 0x0353, 0x035c, 0x0363, 0x0363,
+ 0x0367, 0x0388, 0x038e, 0x0392, 0x039b, 0x03a3, 0x03a3, 0x03aa,
+ 0x03b1, 0x03b8, 0x03bd, 0x03c7, 0x03ce, 0x03d6, 0x03db, 0x03ec,
+ // Entry 80 - BF
+ 0x03f9, 0x0408, 0x040f, 0x0420, 0x042a, 0x042e, 0x0434, 0x043e,
+ 0x044b, 0x0453, 0x045a, 0x0462, 0x046a, 0x0474, 0x0480, 0x0485,
+ 0x048f, 0x0495, 0x049f, 0x049f, 0x049f, 0x04aa, 0x04bb, 0x04c3,
+ 0x04c7, 0x04ce, 0x04d7, 0x04d7, 0x04f1, 0x04f9, 0x0502, 0x050b,
+ 0x0512, 0x0517, 0x051d, 0x0523, 0x0529, 0x0530, 0x0538, 0x053f,
+ 0x0551, 0x0557, 0x0566, 0x056d, 0x0576, 0x057f, 0x0586, 0x058c,
+ 0x0591, 0x0595, 0x05a7, 0x05ae, 0x05b4, 0x05b8, 0x05cc, 0x05e1,
+ 0x05e9, 0x05f1, 0x05f8, 0x060b, 0x0612, 0x061b, 0x0642, 0x064b,
+ // Entry C0 - FF
+ 0x064f, 0x0657, 0x065e, 0x065e, 0x0667, 0x0670, 0x0670, 0x0675,
+ 0x067f, 0x0693, 0x06a5, 0x06ab, 0x06b1, 0x06b8, 0x06c2, 0x06cc,
+ 0x06d4, 0x06d4, 0x06dc, 0x06e4, 0x06ed, 0x06f6, 0x0700, 0x0707,
+ 0x0707, 0x071a, 0x0724, 0x0724, 0x0729, 0x0735, 0x0735, 0x0754,
+ 0x0758, 0x0758, 0x0761, 0x076d, 0x077a, 0x077f, 0x078d, 0x0799,
+ 0x079e, 0x07a5, 0x07ab, 0x07be, 0x07c6, 0x07ce, 0x07d8, 0x07df,
+ 0x07e6, 0x07e6, 0x07ff, 0x0806, 0x0810, 0x0826, 0x083d, 0x0846,
+ 0x0868, 0x088c, 0x0894, 0x089b, 0x08a9, 0x08ae, 0x08ae, 0x08b3,
+ // Entry 100 - 13F
+ 0x08ba, 0x08ca, 0x08d0, 0x08d8,
+ },
+ },
+ { // ug
+ "ئاسسېنسىيون ئارىلىئاندوررائەرەب بىرلەشمە خەلىپىلىكىئافغانىستانئانتىگۋا ۋ" +
+ "ە باربۇدائانگۋىللائالبانىيەئەرمېنىيەئانگولائانتاركتىكائارگېنتىنائام" +
+ "ېرىكا تەۋەلىكىدىكى ساموئائاۋسترىيەئاۋسترالىيەئارۇبائالاند ئاراللىرى" +
+ "ئەزەربەيجانبوسنىيە-گېرتسېگوۋىناباربادوسباڭلادىشبېلگىيەبۇركىنا-فاسوب" +
+ "ۇلغارىيەبەھرەينبۇرۇندىبېنىنساينىت-بارتھېلەمي ئاراللىرىبېرمۇدابىرۇنې" +
+ "يبولىۋىيەكارىب دېڭىزى گوللاندىيەبىرازىلىيەباھامابۇتانبۇۋېت ئاراللىر" +
+ "ىبوتسۋانابېلارۇسىيەبېلىزكاناداكەئەلىڭ كوكۇس ئاراللىرىكونگو - كىنشاس" +
+ "ائوتتۇرا ئافرىقا جۇمھۇرىيىتىكونگو - بىراززاۋىلشىۋىتسارىيەكوتې دې ئى" +
+ "ۋوئىركۇك ئاراللىرىچىلىكامېرونجۇڭگوكولومبىيەكىلىپپېرتون ئاراللىرىكوس" +
+ "تارىكاكۇبايېشىل تۇمشۇقكۇراسوروژدېستۋو ئارىلىسىپرۇسچېخ جۇمھۇرىيىتىگې" +
+ "رمانىيەدېگو-گارشىياجىبۇتىدانىيەدومىنىكادومىنىكا جۇمھۇرىيىتىئالجىرىي" +
+ "ەسېيتا ۋە مېلىلائېكۋادورئېستونىيەمىسىرغەربىي ساخارائېرىترېيەئىسپانى" +
+ "يەئېفىيوپىيەياۋروپا ئىتتىپاقىفىنلاندىيەفىجىفالكلاند ئاراللىرىمىكرون" +
+ "ېزىيەفائېرو ئاراللىرىفىرانسىيەگابونئەنگلىيە پادىشاھلىقىگىرېناداگىرو" +
+ "زىيەفىرانسىيەگە قاراشلىق گىۋىياناگېرىنسىگاناجەبىلتارىقگىرېنلاندگامب" +
+ "ىيەگىۋىنېيەگىۋادېلۇپئېكۋاتور گىۋىنېيەسىگىرېتسىيەجەنۇبىي جورجىيە ۋە " +
+ "جەنۇبىي ساندىۋىچ ئاراللىرىگىۋاتېمالاگۇئامگىۋىنېيە-بىسسائۇگىۋىياناشي" +
+ "اڭگاڭ ئالاھىدە مەمۇرىي رايونى (جۇڭگو)خېرد ۋە ماك-دونالد ئارىلىھوندۇ" +
+ "راسكىرودىيەھايتىۋېنگىرىيەكانارى ئاراللىرىھىندونېزىيەئىرېلاندىيەئىسر" +
+ "ائىلىيەمېن ئارىلىھىندىستانئەنگلىيەنىڭ ھىندى ئوكياندىكى تەۋەلىكىئىرا" +
+ "قئىرانئىسلاندىيەئىتالىيەجېرسېييامايكائىيوردانىيەياپونىيەكېنىيەقىرغى" +
+ "زىستانكامبودژاكىرىباتىكوموروساينىت-كىرىستوفېر ۋە نېۋىسشىمالىي كورىي" +
+ "ەجەنۇبىي كورىيەكۇۋەيتكايمان ئاراللىرىقازاقىستانلائوسلىۋانساينىت-لۇس" +
+ "ىيەلىچتېنشتېين بەگلىكىسىرىلانكالىبېرىيەلېسوتولىتۋانىيەلىيۇكسېمبۇرگل" +
+ "اتۋىيەلىۋىيەماراكەشموناكومولدوۋامونتېنېگروساينىت-مارتېنماداغاسقارما" +
+ "رشال ئاراللىرىماكېدونىيەمالىبىرماموڭغۇلىيەئاۋمېن ئالاھىدە مەمۇرىي ر" +
+ "ايونى (جۇڭگو)شىمالىي مارىيانا ئاراللىرىمارتىنىكاماۋرىتانىيەمونتسېرر" +
+ "اتمالتاماۋرىتىئۇسمالدىۋېمالاۋىمېكسىكامالايشىياموزامبىكنامىبىيەيېڭى " +
+ "كالېدونىيەنېگىرنورفولك ئارىلىنىگېرىيەنىكاراگۇئاگوللاندىيەنورۋېگىيەن" +
+ "ېپالناۋرۇنىيۇئېيېڭى زېلاندىيەئومانپاناماپېرۇفىرانسىيەگە قاراشلىق پو" +
+ "لىنېزىيەپاپۇئا يېڭى گىۋىنېيەسىفىلىپپىنپاكىستانپولشاساينىت-پىئېر ۋە " +
+ "مىكېلون ئاراللىرىپىتكاير ئاراللىرىپۇئېرتو-رىكوپەلەستىن زېمىنىپورتۇگ" +
+ "الىيەپالاۋپاراگۋايقاتارئوكيانىيە ئەتراپىدىكى ئاراللاررېئونىيونرۇمىن" +
+ "ىيەسېربىيەرۇسىيەرىۋانداسەئۇدى ئەرەبىستانسولومون ئاراللىرىسېيشېلسۇدا" +
+ "نشىۋېتسىيەسىنگاپورساينىت ھېلېناسىلوۋېنىيەسىۋالبارد ۋە يان-مايېن ئار" +
+ "ىلىسىلوۋاكىيەسېررالېئونسان-مارىنوسېنېگالسومالىسۇرىنامجەنۇبىي سۇدانس" +
+ "ان تومې ۋە پرىنسىپېئەل سالۋادورسىنت مارتېنسۈرىيەسىۋېزىلاندترىستان د" +
+ "اكۇنھاتۇركس ۋە كايكوس ئاراللىرىچادفىرانسىيەگە قاراشلىق جەنۇبتىكى زې" +
+ "مىنلىرىتوگوتايلاندتاجىكىستانتوكېلاۋشەرقىي تىمورتۈركمەنىستانتۇنىستون" +
+ "گاتۈركىيەتىرىنىداد ۋە توباگوتۇۋالۇتەيۋەنتانزانىيەئۇكرائىنائۇگاندائا" +
+ "مېرىكا تەۋەلىكىدىكى سىرتقى كىچىك ئاراللارئامېرىكا قوشما شتاتلىرىئۇر" +
+ "ۇگۋايئۆزبېكىستانۋاتىكان شەھىرىساينىت-ۋىنسېنت ۋە گىرېنادىنېسۋېنېزۇئې" +
+ "لائەنگلىيەگە قاراشلىق ۋىرجىن ئارىلىئامېرىكا تەۋەلىكىدىكى ۋىرجىن تاق" +
+ "ىم ئاراللىرىۋىيېتنامۋانۇئاتۇۋالىس ۋە فۇتۇناساموئاكوسوۋويەمەنمايوتتې" +
+ "جەنۇبىي ئافرىقازامبىيەزىمبابۋېيوچۇن جايدۇنيائافرىقاشىمالىي ئامېرىكا" +
+ "جەنۇبىي ئامېرىكائوكيانىيەغەربىي ئافرىقائوتتۇرا ئامېرىكاشەرقىي ئافرى" +
+ "قاشىمالىي ئافرىقائوتتۇرا ئافرىقاجەنۇبىي ئافرىقا رايونىئامېرىكاشىمال" +
+ "ىي ئامېرىكا رايونىكارىب دېڭىزىشەرقىي ئاسىياجەنۇبىي ئاسىياشەرقىي جەن" +
+ "ۇبىي ئاسىياجەنۇبىي ياۋروپائاۋسترالئاسىيامېلانېسىيەمىكرونېزىيە رايون" +
+ "ىپولىنىزىيەئاسىيائوتتۇرا ئاسىياغەربىي ئاسىياياۋروپاشەرقىي ياۋروپاشى" +
+ "مالىي ياۋروپاغەربىي ياۋروپالاتىن ئامېرىكا",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0023, 0x0033, 0x0063, 0x0079, 0x009d, 0x00af, 0x00c1,
+ 0x00d3, 0x00d3, 0x00e1, 0x00f7, 0x010b, 0x0141, 0x0153, 0x0169,
+ 0x0175, 0x0194, 0x01aa, 0x01d1, 0x01e1, 0x01f1, 0x01ff, 0x0216,
+ 0x0228, 0x0236, 0x0244, 0x024e, 0x0282, 0x0290, 0x029e, 0x02ae,
+ 0x02da, 0x02ee, 0x02fa, 0x0304, 0x0321, 0x0331, 0x0345, 0x034f,
+ 0x035b, 0x0387, 0x03a2, 0x03d6, 0x03f7, 0x040d, 0x0429, 0x0442,
+ 0x044a, 0x0458, 0x0462, 0x0474, 0x049d, 0x04af, 0x04b7, 0x04ce,
+ 0x04da, 0x04f9, 0x0505, 0x0522, 0x0534, 0x054b, 0x0557, 0x0563,
+ // Entry 40 - 7F
+ 0x0573, 0x059a, 0x05ac, 0x05c8, 0x05d8, 0x05ea, 0x05f4, 0x060d,
+ 0x061f, 0x0631, 0x0645, 0x0666, 0x067a, 0x0682, 0x06a5, 0x06bb,
+ 0x06da, 0x06ec, 0x06f6, 0x071d, 0x072d, 0x073d, 0x0775, 0x0783,
+ 0x078b, 0x079f, 0x07b1, 0x07bf, 0x07cf, 0x07e1, 0x0806, 0x0818,
+ 0x086d, 0x0881, 0x088b, 0x08aa, 0x08ba, 0x0902, 0x0930, 0x0940,
+ 0x0950, 0x095a, 0x096c, 0x098b, 0x09a1, 0x09b7, 0x09cd, 0x09e0,
+ 0x09f2, 0x0a39, 0x0a43, 0x0a4d, 0x0a61, 0x0a71, 0x0a7d, 0x0a8b,
+ 0x0aa1, 0x0ab1, 0x0abd, 0x0ad3, 0x0ae3, 0x0af3, 0x0aff, 0x0b30,
+ // Entry 80 - BF
+ 0x0b4b, 0x0b66, 0x0b72, 0x0b91, 0x0ba5, 0x0baf, 0x0bb9, 0x0bd2,
+ 0x0bf7, 0x0c09, 0x0c19, 0x0c25, 0x0c37, 0x0c4f, 0x0c5d, 0x0c69,
+ 0x0c77, 0x0c83, 0x0c91, 0x0ca5, 0x0cbe, 0x0cd2, 0x0cf1, 0x0d05,
+ 0x0d0d, 0x0d17, 0x0d29, 0x0d6f, 0x0da1, 0x0db3, 0x0dc9, 0x0ddd,
+ 0x0de7, 0x0dfb, 0x0e09, 0x0e15, 0x0e23, 0x0e35, 0x0e45, 0x0e55,
+ 0x0e72, 0x0e7c, 0x0e97, 0x0ea7, 0x0ebb, 0x0ecf, 0x0ee1, 0x0eeb,
+ 0x0ef5, 0x0f01, 0x0f1c, 0x0f26, 0x0f32, 0x0f3a, 0x0f76, 0x0fa0,
+ 0x0fb0, 0x0fc0, 0x0fca, 0x1008, 0x1029, 0x1040, 0x105d, 0x1073,
+ // Entry C0 - FF
+ 0x107d, 0x108d, 0x1097, 0x10d1, 0x10e3, 0x10f3, 0x1101, 0x110d,
+ 0x111b, 0x113c, 0x115d, 0x1169, 0x1173, 0x1185, 0x1195, 0x11ae,
+ 0x11c2, 0x11f8, 0x120c, 0x1220, 0x1233, 0x1241, 0x124d, 0x125b,
+ 0x1274, 0x1299, 0x12b0, 0x12c5, 0x12d1, 0x12e5, 0x1302, 0x1331,
+ 0x1337, 0x1384, 0x138c, 0x139a, 0x13ae, 0x13bc, 0x13d3, 0x13eb,
+ 0x13f5, 0x13ff, 0x140d, 0x1431, 0x143d, 0x1449, 0x145b, 0x146d,
+ 0x147b, 0x14cd, 0x14f9, 0x1509, 0x151f, 0x153a, 0x1571, 0x1585,
+ 0x15c4, 0x1618, 0x1628, 0x1638, 0x1654, 0x1660, 0x166c, 0x1676,
+ // Entry 100 - 13F
+ 0x1684, 0x16a1, 0x16af, 0x16bf, 0x16d0, 0x16da, 0x16e8, 0x1707,
+ 0x1726, 0x1738, 0x1753, 0x1772, 0x178d, 0x17aa, 0x17c7, 0x17f1,
+ 0x1801, 0x182d, 0x1844, 0x185d, 0x1878, 0x18a0, 0x18bd, 0x18d9,
+ 0x18ed, 0x1910, 0x1924, 0x1930, 0x194b, 0x1964, 0x1972, 0x198d,
+ 0x19aa, 0x19c5, 0x19e0,
+ },
+ },
+ { // uk
+ ukRegionStr,
+ ukRegionIdx,
+ },
+ { // ur
+ urRegionStr,
+ urRegionIdx,
+ },
+ { // ur-IN
+ "جزیرہ اسینشنجزائر آلینڈجزیرہ بوویتجزائر (کیلنگ) کوکوسکوت داوواغجزائر ککج" +
+ "زیرہ کلپرٹنڈیگو گارشیاجزائر فاکلینڈجزائر فیروفرانسیسی گیاناجزائر ہر" +
+ "ڈ و مکڈونلڈجزائر کناریبرطانوی بحرہند خطہجزائر مارشلجزائر شمالی ماری" +
+ "اناجزیرہ نارفوکجزائر پٹکیرنجزائر سلیمانترسٹان دا کونیاجزائر کیکس و " +
+ "ترکیہامریکی بیرونی جزائربرطانوی جزائر ورجنامریکی جزائر ورجن",
+ []uint16{ // 250 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,
+ 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,
+ 0x0017, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c,
+ 0x002c, 0x002c, 0x002c, 0x002c, 0x0041, 0x0041, 0x0041, 0x0041,
+ 0x0041, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0076, 0x0085,
+ 0x0085, 0x0085, 0x0085, 0x0085, 0x009c, 0x009c, 0x009c, 0x009c,
+ 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x00b1, 0x00b1, 0x00b1,
+ // Entry 40 - 7F
+ 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1,
+ 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00ca, 0x00ca,
+ 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00f8, 0x00f8,
+ 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8,
+ 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x011b, 0x011b,
+ 0x011b, 0x011b, 0x011b, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130,
+ 0x0130, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
+ 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
+ // Entry 80 - BF
+ 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
+ 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152,
+ 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, 0x0167, 0x0167,
+ 0x0167, 0x0167, 0x0167, 0x0167, 0x018b, 0x018b, 0x018b, 0x018b,
+ 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b, 0x018b,
+ 0x018b, 0x018b, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2,
+ 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2,
+ 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01b9, 0x01b9, 0x01b9, 0x01b9,
+ // Entry C0 - FF
+ 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01b9,
+ 0x01b9, 0x01b9, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
+ 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0,
+ 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01ec, 0x020d,
+ 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d,
+ 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d,
+ 0x020d, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231, 0x0231,
+ 0x0253, 0x0273,
+ },
+ },
+ { // uz
+ uzRegionStr,
+ uzRegionIdx,
+ },
+ { // uz-Arab
+ "افغانستان",
+ []uint16{ // 5 elements
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0012,
+ },
+ },
+ { // uz-Cyrl
+ "Вознесение оролиАндорраБирлашган Араб АмирликлариАфғонистонАнтигуа ва Ба" +
+ "рбадосАнгилаАлбанияАрманистонАнголаАнтарктикаАргентинаАмерика Самоа" +
+ "сиАвстрияАвстралияАрубаАланд ороллариОзарбайжонБосния ва Герцеговин" +
+ "аБарбадосБангладешБельгияБуркина-ФасоБолгарияБаҳрайнБурундиБенинМуқ" +
+ "аддас ВарфаломейБермудаБрунейБоливияКариб НидерландиясиБразилияБага" +
+ "ма ороллариБутанБувет оролиБотсваннаБелорусияБелизКанадаКокос (Кили" +
+ "нг) ороллариКонго-КиншасаМарказий Африка РеспубликасиКонго Браззави" +
+ "льШвейцарияКот-д-ИвуарКук ороллариЧилиКамерунХитойКолумбияКлипперто" +
+ "н оролиКоста-РикаКубаКабо-ВердеКурасаоРождество оролиКипрЧехия Респ" +
+ "убликасиОлмонияДиего ГарсияДжибутиДанияДоминикаДоминикан Республика" +
+ "сиЖазоирСейта ва МелиллаЭквадорЭстонияМисрҒарбий Саҳрои КабирЭритре" +
+ "яИспанияЭфиопияЕвропа ИттифоқиФинляндияФижи ороллариФолькленд оролл" +
+ "ариМикронезияФарер ороллариФранцияГабонБирлашган ҚиролликГренадаГру" +
+ "зияФранцуз ГвианасиГернсиГанаГибралтарГренландияГамбияГвинеяГваделу" +
+ "пеЭкваториал ГвинеяГрецияЖанубий Джорджия ва Жанубий Сендвич оролла" +
+ "риГватемалаГуамГвинея-БисауГаянаГонконг Хитой ММҲГерд ороли ва МакД" +
+ "оналд ороллариГондурасХорватияГаитиВенгрияКанар ороллариИндонезияИр" +
+ "ландияИсроилМэн оролиҲиндистонБритания Ҳинд океани ҳудудиИроқЭронИс" +
+ "ландияИталияДжерсиЯмайкаИорданияЯпонияКенияҚирғизистонКамбоджаКириб" +
+ "атиКомор ороллариСент-Китс ва НевисШимолий КореяЖанубий КореяКувайт" +
+ "Кайман ороллариҚозоғистонЛаосЛиванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиб" +
+ "ерияЛесотоЛитваЛюксембургЛатвияЛивияМарокашМонакоМолдоваЧерногорияС" +
+ "ент-МартинМадагаскарМаршал ороллариМакедонияМалиМьянма (Бирма)Муғул" +
+ "истонМакао Хитой ММҲШимолий Марианна ороллариМартиникаМавританияМон" +
+ "тсерратМальтаМаврикийМальдив ороллариМалавиМексикаМалайзияМозамбикН" +
+ "амибияЯнги КаледонияНигерНорфолк ороллариНигерияНикарагуаНидерланди" +
+ "яНорвегияНепалНауруНиуеЯнги ЗеландияУммонПанамаПеруФранцуз Полинези" +
+ "ясиПапуа Янги ГвинеяФилиппинПокистонПольшаСент-Пьер ва МикелонПитка" +
+ "рин ороллариПуэрто-РикоФаластин ҳудудиПортугалияПалауПарагвайҚатарЁ" +
+ "ндош ОкеанияРеюньонРуминияСербияРоссияРуандаСаудия АрабистониСоломо" +
+ "н ороллариСейшел ороллариСуданШвецияСингапурМуқаддас Елена ороллари" +
+ "СловенияСавльбард ва Жан МаенСловакияСьерра-ЛеонеСан-МариноСенегалС" +
+ "омалиСуринамЖанубий СуданСан-Томе ва ПринсипиЭль-СальвадорСинт-Маар" +
+ "тенСурияСвазилендТристан де КунаТуркс ва Кайкос ороллариЧадФранция " +
+ "жанубий худудлариТогоТайландТожикистонТокелауШарқий-ТиморТуркманист" +
+ "онТунисТонгаТуркияТринидад ва ТобагоТувалуТайванТанзанияУкраинаУган" +
+ "даАҚШ ёндош ороллариҚўшма ШтатларУругвайЎзбекистонВатиканСент-Винсе" +
+ "нт ва ГренадинВенесуэлаБритания Вирджиния ороллариАҚШ Вирджиния оро" +
+ "ллариВьетнамВануатуУэллис ва ФутунаСамоаКосовоЯманМайоттаЖанубий Аф" +
+ "рикаЗамбияЗимбабвеНомаълум минтақаДунёАфрикаШимолий АмерикаЖанубий " +
+ "АмерикаОкеанияҒарбий АфрикаМарказий АмерикаШарқий АфрикаШимолий Афр" +
+ "икаМарказий АфрикаЖануби-АфрикаАмерикаШимоли-АмерикаКариб ҳавзасиШа" +
+ "рқий ОсиёЖанубий ОсиёЖанубий-Шарқий ОсиёЖанубий ЕвропаАвстралазияМе" +
+ "ланезияМикронезия минтақасиПолинезияОсиёМарказий ОсиёҒарбий ОсиёЕвр" +
+ "опаШарқий ЕвропаШимолий ЕвропаҒарбий ЕвропаЛотин Америкаси",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001f, 0x002d, 0x005f, 0x0073, 0x0097, 0x00a3, 0x00b1,
+ 0x00c5, 0x00c5, 0x00d1, 0x00e5, 0x00f7, 0x0114, 0x0122, 0x0134,
+ 0x013e, 0x0159, 0x016d, 0x0195, 0x01a5, 0x01b7, 0x01c5, 0x01dc,
+ 0x01ec, 0x01fa, 0x0208, 0x0212, 0x0237, 0x0245, 0x0251, 0x025f,
+ 0x0284, 0x0294, 0x02b1, 0x02bb, 0x02d0, 0x02e2, 0x02f4, 0x02fe,
+ 0x030a, 0x0334, 0x034d, 0x0383, 0x03a2, 0x03b4, 0x03c8, 0x03df,
+ 0x03e7, 0x03f5, 0x03ff, 0x040f, 0x042e, 0x0441, 0x0449, 0x045c,
+ 0x046a, 0x0487, 0x048f, 0x04b2, 0x04c0, 0x04d7, 0x04e5, 0x04ef,
+ // Entry 40 - 7F
+ 0x04ff, 0x052a, 0x0536, 0x0554, 0x0562, 0x0570, 0x0578, 0x059c,
+ 0x05aa, 0x05b8, 0x05c6, 0x05e3, 0x05f5, 0x060e, 0x0631, 0x0645,
+ 0x0660, 0x066e, 0x0678, 0x069b, 0x06a9, 0x06b5, 0x06d4, 0x06e0,
+ 0x06e8, 0x06fa, 0x070e, 0x071a, 0x0726, 0x0738, 0x0759, 0x0765,
+ 0x07b8, 0x07ca, 0x07d2, 0x07e9, 0x07f3, 0x0813, 0x084f, 0x085f,
+ 0x086f, 0x0879, 0x0887, 0x08a2, 0x08b4, 0x08c4, 0x08d0, 0x08e1,
+ 0x08f3, 0x0926, 0x092e, 0x0936, 0x0946, 0x0952, 0x095e, 0x096a,
+ 0x097a, 0x0986, 0x0990, 0x09a6, 0x09b6, 0x09c6, 0x09e1, 0x0a02,
+ // Entry 80 - BF
+ 0x0a1b, 0x0a34, 0x0a40, 0x0a5d, 0x0a71, 0x0a79, 0x0a83, 0x0a96,
+ 0x0aac, 0x0abd, 0x0acb, 0x0ad7, 0x0ae1, 0x0af5, 0x0b01, 0x0b0b,
+ 0x0b19, 0x0b25, 0x0b33, 0x0b47, 0x0b5c, 0x0b70, 0x0b8d, 0x0b9f,
+ 0x0ba7, 0x0bc0, 0x0bd4, 0x0bf0, 0x0c20, 0x0c32, 0x0c46, 0x0c5a,
+ 0x0c66, 0x0c76, 0x0c95, 0x0ca1, 0x0caf, 0x0cbf, 0x0ccf, 0x0cdd,
+ 0x0cf8, 0x0d02, 0x0d21, 0x0d2f, 0x0d41, 0x0d57, 0x0d67, 0x0d71,
+ 0x0d7b, 0x0d83, 0x0d9c, 0x0da6, 0x0db2, 0x0dba, 0x0ddf, 0x0dff,
+ 0x0e0f, 0x0e1f, 0x0e2b, 0x0e50, 0x0e71, 0x0e86, 0x0ea3, 0x0eb7,
+ // Entry C0 - FF
+ 0x0ec1, 0x0ed1, 0x0edb, 0x0ef4, 0x0f02, 0x0f10, 0x0f1c, 0x0f28,
+ 0x0f34, 0x0f55, 0x0f74, 0x0f91, 0x0f9b, 0x0fa7, 0x0fb7, 0x0fe3,
+ 0x0ff3, 0x101a, 0x102a, 0x1041, 0x1054, 0x1062, 0x106e, 0x107c,
+ 0x1095, 0x10ba, 0x10d3, 0x10ea, 0x10f4, 0x1106, 0x1122, 0x114f,
+ 0x1155, 0x1185, 0x118d, 0x119b, 0x11af, 0x11bd, 0x11d4, 0x11ec,
+ 0x11f6, 0x1200, 0x120c, 0x122e, 0x123a, 0x1246, 0x1256, 0x1264,
+ 0x1270, 0x1292, 0x12ab, 0x12b9, 0x12cd, 0x12db, 0x1308, 0x131a,
+ 0x134e, 0x1378, 0x1386, 0x1394, 0x13b2, 0x13bc, 0x13c8, 0x13d0,
+ // Entry 100 - 13F
+ 0x13de, 0x13f9, 0x1405, 0x1415, 0x1434, 0x143c, 0x1448, 0x1465,
+ 0x1482, 0x1490, 0x14a9, 0x14c8, 0x14e1, 0x14fc, 0x1519, 0x1532,
+ 0x1540, 0x155b, 0x1574, 0x1589, 0x15a0, 0x15c4, 0x15df, 0x15f5,
+ 0x1607, 0x162e, 0x1640, 0x1648, 0x1661, 0x1676, 0x1682, 0x169b,
+ 0x16b6, 0x16cf, 0x16ec,
+ },
+ },
+ { // vai
+ "ꕉꖆꕟꖳꕯꔤꗳ ꕉꕟꔬ ꗡꕆꔓꔻꕉꔱꕭꔕꔻꕚꘋꕉꘋꔳꖶꕎ ꗪ ꕑꖜꕜꕉꕄꕞꕉꔷꕑꕇꕩꕉꕆꕯꘉꕜ ꖨꕮꕊ ꕉꘋꔳꔷꕉꖐꕞꕉꘀꘋꔳꕯꕶꕱ ꕢꕹꕎꖺꔻ" +
+ "ꖤꕎꖺꖬꖤꔃꔷꕩꕉꖩꕑꕉꕤꕑꔤꕧꘋꕷꔻꕇꕰ ꗪ ꗥꕤꖑꔲꕯꕑꔆꖁꔻꕑꕅꕞꗵꔼꗩꕀꗚꘋꕷꕃꕯ ꕘꖇꗂꔠꔸꕩꕑꗸꘋꖜꖩꔺꗩꕇꘋꗩꖷꕜꖜꖩ" +
+ "ꘉꔧꕷꔷꔲꕩꖜꕟꔘꔀꕑꕌꕮꔻꖜꕚꘋꕷꖬꕎꕯꗩꕞꖩꔻꔆꔷꔘꕪꕯꕜꖏꖐ ꗵꗞꖴꕟꔎ ꕸꖃꔀꕉꔱꔸꕪ ꗳ ꗳ ꕸꖃꔀꖏꖐꖬꔃꕤ ꖨꕮꕊꖏꔳ" +
+ " ꕾꕎꖏꕃ ꔳꘋꗣꔚꔷꕪꔈꖩꘋꕦꔤꕯꗛꗏꔭꕩꖏꔻꕚ ꔸꕪꕃꖳꕑꔞꔪ ꗲꔵ ꔳꘋꗣꕢꗡꖛꗐꔻꗿꕃ ꕸꖃꔀꕧꕮꔧꕀꖜꔳꕜꕇꕮꕃꖁꕆꕇꕪꖁꕆꕇ" +
+ "ꕪꘋ ꕸꕱꔀꕉꔷꔠꔸꕩꗡꖴꔃꗍꗡꔻꕿꕇꕰꕆꔖꕞꔀꔸꔳꕟꕐꘊꔧꔤꔳꖎꔪꕩꔱꘋ ꖨꕮꕊꔱꔤꕀꕘꔷꕃ ꖨꕮ ꔳꘋꗣꕆꖏꕇꔻꕩꖢꕟꘋꔻꕭꕷꘋ" +
+ "ꖕꕯꔤꗳꖶꕟꕯꕜꗘꖺꕀꕩꗱꘋꔻ ꖶꕎꕯꕭꕌꕯꕀꖜꕟꕚꕧꕓ ꖴꕎ ꖨꕮꕊꕭꔭꕩꕅꔤꕇꖶꕎꔐꖨꔅꖦꕰꕊ ꗳ ꕅꔤꕇꗥꗷꘋꖶꕎꔎꕮꕞꖶꕎꕆ" +
+ "ꕅꔤꕇ ꔫꕢꕴꖶꕩꕯꖽꖫꕟꖏꔓꔻꕩꕌꔤꔳꖽꘋꕭꔓꔤꖆꕇꔻꕩꕉꔓ ꖨꕮꕊꕑꕇꔻꕞꔤꕞꔤꔺꕩꔛꔟꔻ ꔤꔺꕩ ꗛꔤꘂ ꕗꕴꔀ ꕮꔤꕟꕃꔤꕟ" +
+ "ꘋꕉꔤꔻ ꖨꕮꕊꔤꕚꔷꕧꕮꔧꕪꗘꖺꗵꘋꔛꗨꗢꔞꕰꕃꕅꔻꕚꘋꕪꕹꔵꕩꕃꔸꕑꔳꖏꕹꖄꔻꔻꘋ ꕃꔳꔻ ꗪ ꔕꔲꔻꖏꔸꕩ ꗛꔤ ꕪꘋꗒꖏꔸꕩ" +
+ " ꗛꔤ ꔒꘋꗣ ꗏꖴꔃꔳꔞꔀꕮꘋ ꔳꘋꗣꕪꕤꔻꕚꘋꕞꕴꔻꔒꕑꗟꘋꔻꘋ ꖨꔻꕩꔷꗿꘋꔻꗳꘋꖬꔸ ꕞꘋꕪꕞꔤꔫꕩꔷꖇꕿꔷꖤꔃꕇꕰꗏꔻꘋꗂꖺꕞ" +
+ "ꔳꔲꕩꔒꔫꕩꗞꕟꖏꗞꕯꖏꖒꔷꖁꕙꕮꕜꕭꔻꕪꕮꕊꕣ ꔳꘋꗣꕮꔖꖁꕇꕰꕮꔷꕆꕩꘋꕮꗞꖐꔷꕩꗛꔤ ꕪꘋꗒ ꕮꔸꕩꕯ ꔳꘋꗣꕮꔳꕇꕃꗞꔓꔎꕇ" +
+ "ꕰꗞꘋꔖꕟꔳꕮꕊꕚꗞꔓꗔꕮꔷꕜꔍꕮꕞꕌꔨꘈꔻꖏꕮꔒꔻꕩꕹꕤꔭꕃꕯꕆꔫꕩꕪꔷꖁꕇꕰ ꕯꕮꕊꕯꔤꕧꗟꖺꗉ ꔳꘋꗣꕯꔤꕀꔸꕩꕇꕪꕟꖶꕎꘉꕜ" +
+ " ꖨꕮꕊꗟꖺꔃꕇꕐꔷꖆꖩꖸꔃꔤꔽꔤ ꖨꕮ ꕯꕮꕊꕱꕮꘋꕐꕯꕮꗨꗡꖩꗱꘋꔻ ꕶꔷꕇꔻꕩꕐꖛꕎ ꕅꔤꕇ ꕯꕮꕊꔱꔒꔪꘋꕐꕃꔻꕚꘋꕶꗷꘋꔻꘋ " +
+ "ꔪꘂ ꗪ ꕆꔞꗏꘋꔪꔳꕪꕆꔪꖳꕿ ꔸꖏꕐꔒꔻꔳꕯ ꔎꔒ ꕀꔤ ꗛꔤ ꕞ ꗱ ꗪ ꕭꕌꕤꕶꕿꕃꔤ ꕸꖃꔀꕐꖃꕐꕟꗝꔀꕪꕚꕌꔓꗠꖻꖄꕆꕇ" +
+ "ꕰꗐꖺꔻꕩꕟꖙꕡꕞꕌꖝ ꕸꖃꔀꖬꕞꔤꕮꕊꕯ ꔳꘋꗣꔖꗼꔷꖬꗵꘋꖬꔨꗵꘋꔻꕬꕶꕱꔻꘋ ꗥꔷꕯꔻꖃꔍꕇꕰꔻꖃꕙꕃꕩꔋꕩ ꕒꕌꖺ ꕸꖃꔀꕮ" +
+ "ꔸꖆ ꕢꘋꔻꕇꕭꕌꖇꕮꔷꕩꖬꔸꕯꔈꕢꕴ ꕿꔈ ꗪ ꕉ ꕮꔧ ꕗꕴꔀꗡꗷ ꕢꔍꗍꖺꔻꕩꘋꖬꕎꔽ ꖨꕮꕊꗋꖺꕃꔻ ꗪ ꕪꔤꖏꔻ ꔳꘋꗣꕦ" +
+ "ꔵꕿꖑꕚꔤ ꖨꕮꕊꕚꕀꕃꔻꕚꘋꕿꔞꖃꔎꔒ ꗃ ꔳꗞꖻꗋꖺꕃꕮꕇꔻꕚꘋꖤꕇꔻꕩꗋꕬꗋꖺꕃꖤꔸꔕꕜ ꗪ ꕿꔆꖑꕚꖣꖨꕚꔤꕎꘋꕚꘋꕤꕇꕰꖳ" +
+ "ꖴꔓꘋꖳꕭꕡꕶꕱꖳꔓꗝꔀꖳꗩꕃꔻꕚꘋꔻꘋ ꔲꘋꔻꘋ ꗪ ꖶꔓꕯꔵꘋ ꖸꕙꔳꕪꘋ ꕸꖃꔀꔛꔟꔻ ꗩꗡ ꗏ ꖷꖬ ꔳꘋꗣꕶꕱ ꗩꗡ ꗏ " +
+ "ꖷꖬ ꔳꘋꗣꗲꕇꖮꔃꕞꕙꖸꕎꖤꕎꔷꔻ ꗪ ꖢꖤꕯꕢꕹꖙꕉꔝꘈꘋꕮꗚꔎꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ꗏ ꕸꖃꔀꕤꔭꕩꔽꕓꖜꔃ",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0009, 0x002c, 0x0041, 0x005e, 0x0067, 0x0076,
+ 0x007f, 0x009c, 0x00a5, 0x00a5, 0x00b4, 0x00c4, 0x00d0, 0x00e2,
+ 0x00eb, 0x00eb, 0x00fd, 0x011d, 0x0129, 0x0138, 0x0144, 0x0154,
+ 0x0160, 0x0169, 0x0172, 0x017b, 0x017b, 0x0184, 0x0190, 0x019c,
+ 0x019c, 0x01a8, 0x01b4, 0x01bd, 0x01bd, 0x01c9, 0x01d5, 0x01de,
+ 0x01e7, 0x01e7, 0x0207, 0x0225, 0x022b, 0x023e, 0x024b, 0x025b,
+ 0x0261, 0x026d, 0x0276, 0x0282, 0x0282, 0x0292, 0x029b, 0x02b2,
+ 0x02b2, 0x02b2, 0x02c1, 0x02d1, 0x02da, 0x02da, 0x02e3, 0x02ef,
+ // Entry 40 - 7F
+ 0x02fb, 0x0314, 0x0323, 0x0323, 0x032f, 0x033e, 0x0347, 0x0347,
+ 0x0353, 0x035c, 0x036b, 0x036b, 0x037b, 0x0384, 0x039e, 0x03ad,
+ 0x03ad, 0x03b9, 0x03c2, 0x03ce, 0x03da, 0x03e6, 0x03f9, 0x03f9,
+ 0x0402, 0x040e, 0x0425, 0x042e, 0x0437, 0x0446, 0x045d, 0x0466,
+ 0x0466, 0x0475, 0x047e, 0x0491, 0x049a, 0x049a, 0x049a, 0x04a3,
+ 0x04af, 0x04b8, 0x04c4, 0x04c4, 0x04d3, 0x04e3, 0x04f5, 0x04f5,
+ 0x04fe, 0x0529, 0x0532, 0x053b, 0x054e, 0x0557, 0x0557, 0x0563,
+ 0x056f, 0x0578, 0x057e, 0x058d, 0x0599, 0x05a5, 0x05b1, 0x05cf,
+ // Entry 80 - BF
+ 0x05e9, 0x0607, 0x0610, 0x0626, 0x0635, 0x063e, 0x064a, 0x065a,
+ 0x066c, 0x067c, 0x0688, 0x0691, 0x06a0, 0x06af, 0x06bb, 0x06c4,
+ 0x06cd, 0x06d6, 0x06e2, 0x06e2, 0x06e2, 0x06f1, 0x0704, 0x0713,
+ 0x0719, 0x0725, 0x0731, 0x0731, 0x0758, 0x0764, 0x0773, 0x0782,
+ 0x078b, 0x0794, 0x07a0, 0x07ac, 0x07b5, 0x07c1, 0x07cd, 0x07d9,
+ 0x07f2, 0x07fb, 0x080e, 0x081d, 0x082c, 0x083c, 0x0845, 0x084e,
+ 0x0854, 0x085d, 0x0874, 0x087d, 0x0886, 0x088f, 0x08a8, 0x08c5,
+ 0x08d1, 0x08e0, 0x08e9, 0x0907, 0x0913, 0x0923, 0x095d, 0x0973,
+ // Entry C0 - FF
+ 0x0979, 0x0985, 0x098e, 0x098e, 0x0997, 0x09a3, 0x09a3, 0x09af,
+ 0x09b8, 0x09cb, 0x09e7, 0x09f0, 0x09f9, 0x0a05, 0x0a11, 0x0a21,
+ 0x0a30, 0x0a30, 0x0a3f, 0x0a59, 0x0a69, 0x0a75, 0x0a81, 0x0a8d,
+ 0x0a8d, 0x0ab3, 0x0ac6, 0x0ac6, 0x0acf, 0x0ae2, 0x0ae2, 0x0b09,
+ 0x0b0f, 0x0b0f, 0x0b15, 0x0b25, 0x0b37, 0x0b40, 0x0b54, 0x0b6c,
+ 0x0b78, 0x0b7e, 0x0b87, 0x0ba1, 0x0baa, 0x0bb6, 0x0bc5, 0x0bd1,
+ 0x0bda, 0x0bda, 0x0be0, 0x0bec, 0x0bfe, 0x0bfe, 0x0c29, 0x0c3f,
+ 0x0c64, 0x0c86, 0x0c95, 0x0ca1, 0x0cb8, 0x0cc4, 0x0cc4, 0x0ccd,
+ // Entry 100 - 13F
+ 0x0cd6, 0x0d01, 0x0d0a, 0x0d16,
+ },
+ },
+ { // vai-Latn
+ "AŋdóraYunaitɛ Arabhi ƐmireAfigándesitaŋAŋtígwa ƁahabhudaAŋgílaAbhaniyaAm" +
+ "éniyaNidɔlɛŋ AŋtiliAŋgólaAjɛŋtínaPoo SambowaƆ́situwaƆsituwéeliyaAru" +
+ "bhaAzabhaijaŋBhɔsiniyaBhabhedoBhangiladɛ̀shiBhɛgiyɔŋBhokina FásoBhɔg" +
+ "eriyaBharɛŋBhurundiBhɛniBhɛmudaBhurunɛĩBholiviyaBhurazeliBahámasiBhu" +
+ "taŋBhosuwanaBhɛlarusiBhelizKánádaAvorekooÁfíríka Lumaã Tɛ BoloeKóngo" +
+ "Suweza LumaãKódivówaKóki TiŋŋɛChéliKameruŋCháínaKɔlɔmbiyaKósíta Ríko" +
+ "KiyubhaKepi Vɛdi TiŋŋɛSaɛpurɔChɛki BoloeJamáĩJibhutiDanimahaDomíiník" +
+ "aDomíiníka ƁoloeAgiriyaƐ́kúwédɔƐsitóninyaMísélaƐriteraPanyɛĩÍtiyópiy" +
+ "aFiŋlɛŋFíjiFáháki Luma TiŋŋɛMikonisiyaFɛŋsiGabhɔŋYunaitɛ KíŋdɔŋGurin" +
+ "édaJɔɔjiyaFɛŋsi GiwanaGanaJibhurataJamba Kuwa LumaãGambiyaGiniGuwad" +
+ "elupeDúúnyá Tɛ GiiniHɛlɛŋGuwatɛmalaGuwamiGini BhisawoGuyanaHɔnduraKo" +
+ "resiyaHáitiHɔ́ngareÍndonisiyaÁre LumaãBhanísiláilaÍndiyaJengéesi Gba" +
+ "woe Índiya Kɔiyɛ LɔIrakiIraŋÁisi LumaãÍtaliJamaikaJɔɔdaŋJapaŋKényaKi" +
+ "gisitaŋKaŋbhodiyaKiribhatiKomorosiSiŋ Kisi ɓɛ́ NevisiKoriya Kɔi Kaŋn" +
+ "dɔKoriya Kɔi Leŋŋɛ LɔKuwetiKeemaŋ TiŋŋɛKazasitaŋLawosiLebhanɔSiŋ Lus" +
+ "iyaSuri LaŋkaLaibhiyaLisótoLituweninyaLusimbɔLativiyaLebhiyaMɔrokoMɔ" +
+ "nakoMɔlidovaMadagasitaMasha TiŋŋɛMasedoninyaMaliMiyamahaMɔngoliyaKɔi" +
+ " Kaŋndɔ Mariyana TiŋŋɛMatinikiMɔretaninyaMɔseratiMalitaMɔreshɔMalida" +
+ "viMalawiMɛsíkoMalesiyaMozambikiNamibiyaKalidoninya NámaáNaĩjaNɔfɔ Ti" +
+ "ŋŋɛNaĩjiriyaNikaraguwaNidɔlɛŋNɔɔweNepaNoruNiweZilɛŋ NámaáOmaŋPanama" +
+ "PɛruFɛŋsi PolinísiyaPapuwa Gini NámaáFélepiŋPakisitaŋPólɛŋSiŋ Piiyɛ " +
+ "ɓɛ́ MikelɔŋPitikɛŋPiyuto RikoPalesitininya Tele Jii Kɔiyɛ lá hĩ Gaz" +
+ "aPotokíiPaloParagɔeKatahaRenyɔɔ̃RomininyaRɔshiyaRawundaLahabuSulaima" +
+ "ãna TiŋŋɛSeshɛɛSudɛŋSuwidɛŋSíingapooSiŋ HɛlinaSuloveninyaSulovakiya" +
+ "Gbeya BahawɔSaŋ MarindoSinigahaSomaliyaSurinambeSawo Tombe ɓɛ a Gbaw" +
+ "oeƐlɛ SávádɔSíyaŋSuwazi LumaãTukisi ɓɛ̀ Kaikóosi TiŋŋɛChádiTogoTai L" +
+ "umaãTajikisitaŋTokeloTele Ɓɔ́ Timɔɔ̃TukimɛnisitaŋTunisiyaTɔngaTɔ́ɔ́k" +
+ "iTurindeda ɓɛ́ TobhegoTuváluTaiwaŋTaŋzaninyaYukuréŋYugandaPooYuwegɔw" +
+ "eYubhɛkisitaŋVatikaŋ ƁoloeSiŋ ViŋsiVɛnɛzuwelaJengéesi Bhɛɛ Lɔ Musu T" +
+ "iŋŋɛPoo Bhɛɛ lɔ Musu TiŋŋɛViyanamiVanuwátuWalísiSamowaYemɛniMavoteAf" +
+ "irika Kɔi Leŋŋɛ LɔZambiyaZimbabhuwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x001e, 0x002d, 0x0041, 0x0049, 0x0051,
+ 0x0059, 0x006b, 0x0073, 0x0073, 0x007e, 0x0089, 0x0093, 0x00a1,
+ 0x00a7, 0x00a7, 0x00b2, 0x00bc, 0x00c4, 0x00d4, 0x00df, 0x00ec,
+ 0x00f6, 0x00fe, 0x0106, 0x010c, 0x010c, 0x0114, 0x011e, 0x0127,
+ 0x0127, 0x0130, 0x0139, 0x0140, 0x0140, 0x0149, 0x0153, 0x0159,
+ 0x0161, 0x0161, 0x0169, 0x0184, 0x018a, 0x0197, 0x01a1, 0x01af,
+ 0x01b5, 0x01bd, 0x01c5, 0x01d0, 0x01d0, 0x01de, 0x01e5, 0x01f8,
+ 0x01f8, 0x01f8, 0x0201, 0x020d, 0x0214, 0x0214, 0x021b, 0x0223,
+ // Entry 40 - 7F
+ 0x022e, 0x0240, 0x0247, 0x0247, 0x0254, 0x0260, 0x0268, 0x0268,
+ 0x0270, 0x0278, 0x0283, 0x0283, 0x028c, 0x0291, 0x02a7, 0x02b1,
+ 0x02b1, 0x02b8, 0x02c0, 0x02d3, 0x02dc, 0x02e5, 0x02f3, 0x02f3,
+ 0x02f7, 0x0300, 0x0311, 0x0318, 0x031c, 0x0326, 0x0339, 0x0341,
+ 0x0341, 0x034c, 0x0352, 0x035e, 0x0364, 0x0364, 0x0364, 0x036c,
+ 0x0374, 0x037a, 0x0384, 0x0384, 0x038f, 0x039a, 0x03a8, 0x03a8,
+ 0x03af, 0x03d3, 0x03d8, 0x03dd, 0x03e9, 0x03ef, 0x03ef, 0x03f6,
+ 0x03ff, 0x0405, 0x040b, 0x0415, 0x0420, 0x0429, 0x0431, 0x0448,
+ // Entry 80 - BF
+ 0x045c, 0x0474, 0x047a, 0x048a, 0x0494, 0x049a, 0x04a2, 0x04ad,
+ 0x04ad, 0x04b8, 0x04c0, 0x04c7, 0x04d2, 0x04da, 0x04e2, 0x04e9,
+ 0x04f0, 0x04f7, 0x0500, 0x0500, 0x0500, 0x050a, 0x0518, 0x0523,
+ 0x0527, 0x052f, 0x0539, 0x0539, 0x0558, 0x0560, 0x056c, 0x0575,
+ 0x057b, 0x0584, 0x058c, 0x0592, 0x059a, 0x05a2, 0x05ab, 0x05b3,
+ 0x05c6, 0x05cc, 0x05db, 0x05e5, 0x05ef, 0x05f9, 0x0600, 0x0604,
+ 0x0608, 0x060c, 0x061b, 0x0620, 0x0626, 0x062b, 0x063e, 0x0651,
+ 0x065a, 0x0664, 0x066c, 0x0688, 0x0691, 0x069c, 0x06c7, 0x06cf,
+ // Entry C0 - FF
+ 0x06d3, 0x06db, 0x06e1, 0x06e1, 0x06eb, 0x06f4, 0x06f4, 0x06fc,
+ 0x0703, 0x0709, 0x071d, 0x0725, 0x072c, 0x0735, 0x073f, 0x074b,
+ 0x0756, 0x0756, 0x0760, 0x076d, 0x0779, 0x0781, 0x0789, 0x0792,
+ 0x0792, 0x07aa, 0x07b9, 0x07b9, 0x07c0, 0x07cd, 0x07cd, 0x07ed,
+ 0x07f3, 0x07f3, 0x07f7, 0x0801, 0x080d, 0x0813, 0x0828, 0x0837,
+ 0x083f, 0x0845, 0x0850, 0x0868, 0x086f, 0x0876, 0x0881, 0x088a,
+ 0x0891, 0x0891, 0x0894, 0x089d, 0x08ab, 0x08ba, 0x08c5, 0x08d1,
+ 0x08f3, 0x090f, 0x0917, 0x0920, 0x0927, 0x092d, 0x092d, 0x0934,
+ // Entry 100 - 13F
+ 0x093a, 0x0953, 0x095a, 0x0964,
+ },
+ },
+ { // vi
+ viRegionStr,
+ viRegionIdx,
+ },
+ { // vun
+ "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" +
+ "iaAntili za UholanziAngolaAjentinaSamoa ya MarekaniAustriaAustraliaA" +
+ "rubaAzabajaniBosnia na HezegovinaBabadosiBangladeshiUbelgijiBukinafa" +
+ "soBulgariaBahareniBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButa" +
+ "niBotswanaBelarusiBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhur" +
+ "i ya Afrika ya KatiKongoUswisiKodivaaVisiwa vya CookChileKameruniChi" +
+ "naKolombiaKostarikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibut" +
+ "iDenmakiDominikaJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaH" +
+ "ispaniaUhabeshiUfiniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniU" +
+ "ingerezaGrenadaJojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaG" +
+ "ineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKor" +
+ "asiaHaitiHungariaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza kati" +
+ "ka Bahari HindiIrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKir" +
+ "igizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKo" +
+ "rea KusiniKuwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusia" +
+ "LishenteniSirilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoM" +
+ "onakoMoldovaBukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa" +
+ " vya Mariana vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiMo" +
+ "divuMalawiMeksikoMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha " +
+ "NorfokNijeriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPan" +
+ "amaPeruPolinesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri " +
+ "na MikeloniPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza w" +
+ "a PalestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiV" +
+ "isiwa vya SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSl" +
+ "ovakiaSiera LeoniSamarinoSenegaliSomaliaSurinamuSao Tome na Principe" +
+ "ElsavadoSiriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikis" +
+ "taniTokelauTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrin" +
+ "idad na TobagoTuvaluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibe" +
+ "kistaniVatikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin v" +
+ "ya UingerezaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na F" +
+ "utunaSamoaYemeniMayotteAfrika KusiniZambiaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043,
+ 0x004a, 0x005c, 0x0062, 0x0062, 0x006a, 0x007b, 0x0082, 0x008b,
+ 0x0090, 0x0090, 0x0099, 0x00ad, 0x00b5, 0x00c0, 0x00c8, 0x00d2,
+ 0x00da, 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f6, 0x00fc, 0x0103,
+ 0x0103, 0x010a, 0x0110, 0x0116, 0x0116, 0x011e, 0x0126, 0x012c,
+ 0x0132, 0x0132, 0x0152, 0x016b, 0x0170, 0x0176, 0x017d, 0x018c,
+ 0x0191, 0x0199, 0x019e, 0x01a6, 0x01a6, 0x01af, 0x01b3, 0x01bb,
+ 0x01bb, 0x01bb, 0x01c2, 0x01d2, 0x01db, 0x01db, 0x01e1, 0x01e8,
+ // Entry 40 - 7F
+ 0x01f0, 0x0203, 0x020a, 0x020a, 0x0210, 0x0217, 0x021c, 0x021c,
+ 0x0223, 0x022b, 0x0233, 0x0233, 0x0238, 0x023c, 0x024f, 0x0259,
+ 0x0259, 0x0261, 0x0267, 0x0270, 0x0277, 0x027c, 0x028f, 0x028f,
+ 0x0294, 0x029c, 0x02a5, 0x02ab, 0x02af, 0x02b8, 0x02c1, 0x02c8,
+ 0x02c8, 0x02d1, 0x02d5, 0x02de, 0x02e4, 0x02e4, 0x02e4, 0x02ed,
+ 0x02f4, 0x02f9, 0x0301, 0x0301, 0x030a, 0x0312, 0x0319, 0x0319,
+ 0x031e, 0x0343, 0x0348, 0x034e, 0x0356, 0x035c, 0x035c, 0x0363,
+ 0x036a, 0x0370, 0x0375, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ab,
+ // Entry 80 - BF
+ 0x03ba, 0x03c6, 0x03cd, 0x03de, 0x03e9, 0x03ee, 0x03f6, 0x0400,
+ 0x040a, 0x0413, 0x041a, 0x0420, 0x0428, 0x0431, 0x0438, 0x043d,
+ 0x0443, 0x0449, 0x0450, 0x0450, 0x0450, 0x0456, 0x0468, 0x0471,
+ 0x0475, 0x047a, 0x0482, 0x0482, 0x04a2, 0x04ab, 0x04b4, 0x04bf,
+ 0x04c4, 0x04ca, 0x04d0, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f3,
+ 0x04ff, 0x0505, 0x0516, 0x051d, 0x0526, 0x052e, 0x0533, 0x0539,
+ 0x053e, 0x0542, 0x054c, 0x0551, 0x0557, 0x055b, 0x0570, 0x0575,
+ 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b5, 0x05e7, 0x05ec,
+ // Entry C0 - FF
+ 0x05f1, 0x05f9, 0x05ff, 0x05ff, 0x0608, 0x060f, 0x060f, 0x0614,
+ 0x061a, 0x061f, 0x0631, 0x063b, 0x0641, 0x0647, 0x064f, 0x065a,
+ 0x0662, 0x0662, 0x066a, 0x0675, 0x067d, 0x0685, 0x068c, 0x0694,
+ 0x0694, 0x06a8, 0x06b0, 0x06b0, 0x06b5, 0x06bb, 0x06bb, 0x06d4,
+ 0x06d9, 0x06d9, 0x06dd, 0x06e5, 0x06f0, 0x06f7, 0x070a, 0x0719,
+ 0x0720, 0x0725, 0x072c, 0x073e, 0x0744, 0x074b, 0x0753, 0x075a,
+ 0x0760, 0x0760, 0x0768, 0x076f, 0x077b, 0x0783, 0x079c, 0x07a5,
+ 0x07c4, 0x07e2, 0x07eb, 0x07f2, 0x0801, 0x0806, 0x0806, 0x080c,
+ // Entry 100 - 13F
+ 0x0813, 0x0820, 0x0826, 0x082e,
+ },
+ },
+ { // wae
+ "HimmelfártsinslaAndorraVereinigti Arabiše EmiratAfganištanAntigua und Ba" +
+ "rbudaAnguillaAlbanieArmenieHoländiši AntilläAngolaAntarktisArgentini" +
+ "eAmerikaniš SamoaÖštričAustralieArubaAlandinsläAserbaidšanBosnie und" +
+ " HerzegovinaBarbadosBangladešBelgieBurkina FasoBulgarieBačrainBurund" +
+ "iBeninSt. Bartholomäus-InslaBermudaBruneiBoliwieBrasilieBahamasBhuta" +
+ "nBouvetinslaBotswanaWísrusslandBelizeKanadaKokosinsläKongo-KinshasaZ" +
+ "entralafrikaniši RebublikKongo BrazzavilleSchwizElfebeiküštaCookinsl" +
+ "äTšileKamerunChinaKolumbieClipperton InslaCosta RicaKubaKap VerdeWi" +
+ "enäčtsinsläZypreTšečieTitšlandDiego GarciaDšibutiDänemarkDoninicaDom" +
+ "inikaniši RebublikAlgerieCeuta und MelillaEcuadorEštlandEgypteWeštsa" +
+ "haraEritreaSchpanieEthiopieEuropäiši UnioFinnlandFidšiFalklandinsläM" +
+ "ikronesieFäröeFrankričGabonEnglandGrenadaGeorgieFranzösiš GuianaGuer" +
+ "nseyGanaGibraltarGrönlandGambiaGineaGuadeloupeEquatorialgineaGričela" +
+ "ndSüdgeorgie und d’südliče SenwičinsläGuatemalaGuamGinea BissauGuyan" +
+ "aSonderverwaltigszona HongkongHeard- und McDonald-InsläHondurasKroat" +
+ "ieHaitiUngareKanariše InsläIndonesieIrlandIsraelIsle of ManIndieBrit" +
+ "išes Territorium em indiše OzeanIrakIranIslandItalieJerseyJamaikaJor" +
+ "danieJapanKenyaKirgištanKambodšaKiribatiKomoreSt. Kitts und NevisNor" +
+ "dkoreaSüdkoreaKuweitKaimaninsläKasačstanLaosLibanonSt. LuciaLiečtešt" +
+ "eiSri LankaLiberiaLesothoLitaueLuxeburgLettlandLübieMarokoMonagoMold" +
+ "auMontenegroSt. MartinMadagaskarMaršalinsläMazedonieMaliBurmaMongole" +
+ "iSonderverwaltigszona MakauNördliči MarianeMartiniqueMauretanieMonse" +
+ "rratMaltaMauritiusMalediweMalawiMexikoMalaysiaMosambikNamibiaNiwkale" +
+ "donieNigerNorfolkinslaNigeriaNicaraguaHolandNorwägeNepalNauruNiueNiw" +
+ "sélandOmanPanamaPeruFranzösiš PolinesiePapua NiwgineaPhilippinePakiš" +
+ "tanPoleSt. Pierre und MiquelonPitcairnPuerto RicoPaleštinaPortugalPa" +
+ "lauParaguaiKatarÜssers OzeanieRéunionRumänieSerbieRusslandRuandaSaud" +
+ "i ArabieSalomoneSečelleSudanSchwedeSingapurSt. HelenaSlowenieSvalbar" +
+ "d und Jan MayenSlowakeiSierra LeoneSan MarinoSenegalSomaliaSurinameS" +
+ "ão Tomé and PríncipeEl SalvadorSürieSwasilandTristan da CunhaTurks-" +
+ " und CaicosinsläTšadFranzösiši Süd- und AntarktisgebietTogoThailandT" +
+ "adšikistanTokelauOšttimorTurkmeništanTunesieTongaTürkeiTrinidad und " +
+ "TobagoTuvaluTaiwanTansaniaUkraineUgandaAmerikaniš OzeanieAmerikaUrug" +
+ "auyUsbekištanVatikanSt. Vincent und d’GrenadineVenezuelaBritiši Jung" +
+ "fröiwinsläAmerikaniši JungfröiwinsläVietnamVanuatuWallis und FutunaS" +
+ "amoaJémeMoyetteSüdafrikaSambiaSimbabweUnbekannti RegioWäldAfrikaNord" +
+ "amerikaSüdamerikaOzeanieWeštafrikaZentralamerikaOštafrikaNordafrikaM" +
+ "ittelafrikaSüdličs AfrikaAmerikaniš KontinäntNördličs AmerikaKaribik" +
+ "OštasieSüdasieSüdoštasieSüdeuropaAuštralie und NiwsélandMelanesieMik" +
+ "ronesišes InselgebietPolinesieAsieZentralasieWeštasieEuropaOšteuropa" +
+ "NordeuropaWešteuropaLatíamerika",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0011, 0x0018, 0x0032, 0x003d, 0x0050, 0x0058, 0x005f,
+ 0x0066, 0x007a, 0x0080, 0x0089, 0x0093, 0x00a4, 0x00ad, 0x00b6,
+ 0x00bb, 0x00c6, 0x00d2, 0x00e8, 0x00f0, 0x00fa, 0x0100, 0x010c,
+ 0x0114, 0x011c, 0x0123, 0x0128, 0x013f, 0x0146, 0x014c, 0x0153,
+ 0x0153, 0x015b, 0x0162, 0x0168, 0x0173, 0x017b, 0x0187, 0x018d,
+ 0x0193, 0x019e, 0x01ac, 0x01c7, 0x01d8, 0x01de, 0x01ec, 0x01f6,
+ 0x01fc, 0x0203, 0x0208, 0x0210, 0x0220, 0x022a, 0x022e, 0x0237,
+ 0x0237, 0x0247, 0x024c, 0x0254, 0x025d, 0x0269, 0x0271, 0x027a,
+ // Entry 40 - 7F
+ 0x0282, 0x0298, 0x029f, 0x02b0, 0x02b7, 0x02bf, 0x02c5, 0x02d0,
+ 0x02d7, 0x02df, 0x02e7, 0x02f7, 0x02ff, 0x0305, 0x0313, 0x031d,
+ 0x0324, 0x032d, 0x0332, 0x0339, 0x0340, 0x0347, 0x0359, 0x0361,
+ 0x0365, 0x036e, 0x0377, 0x037d, 0x0382, 0x038c, 0x039b, 0x03a5,
+ 0x03d0, 0x03d9, 0x03dd, 0x03e9, 0x03ef, 0x040c, 0x0426, 0x042e,
+ 0x0435, 0x043a, 0x0440, 0x0450, 0x0459, 0x045f, 0x0465, 0x0470,
+ 0x0475, 0x049b, 0x049f, 0x04a3, 0x04a9, 0x04af, 0x04b5, 0x04bc,
+ 0x04c4, 0x04c9, 0x04ce, 0x04d8, 0x04e1, 0x04e9, 0x04ef, 0x0502,
+ // Entry 80 - BF
+ 0x050b, 0x0514, 0x051a, 0x0526, 0x0530, 0x0534, 0x053b, 0x0544,
+ 0x0550, 0x0559, 0x0560, 0x0567, 0x056d, 0x0575, 0x057d, 0x0583,
+ 0x0589, 0x058f, 0x0595, 0x059f, 0x05a9, 0x05b3, 0x05c0, 0x05c9,
+ 0x05cd, 0x05d2, 0x05da, 0x05f4, 0x0606, 0x0610, 0x061a, 0x0623,
+ 0x0628, 0x0631, 0x0639, 0x063f, 0x0645, 0x064d, 0x0655, 0x065c,
+ 0x0668, 0x066d, 0x0679, 0x0680, 0x0689, 0x068f, 0x0697, 0x069c,
+ 0x06a1, 0x06a5, 0x06af, 0x06b3, 0x06b9, 0x06bd, 0x06d2, 0x06e0,
+ 0x06ea, 0x06f3, 0x06f7, 0x070e, 0x0716, 0x0721, 0x072b, 0x0733,
+ // Entry C0 - FF
+ 0x0738, 0x0740, 0x0745, 0x0754, 0x075c, 0x0764, 0x076a, 0x0772,
+ 0x0778, 0x0784, 0x078c, 0x0794, 0x0799, 0x07a0, 0x07a8, 0x07b2,
+ 0x07ba, 0x07d0, 0x07d8, 0x07e4, 0x07ee, 0x07f5, 0x07fc, 0x0804,
+ 0x0804, 0x081c, 0x0827, 0x0827, 0x082d, 0x0836, 0x0846, 0x085d,
+ 0x0862, 0x0888, 0x088c, 0x0894, 0x08a0, 0x08a7, 0x08b0, 0x08bd,
+ 0x08c4, 0x08c9, 0x08d0, 0x08e3, 0x08e9, 0x08ef, 0x08f7, 0x08fe,
+ 0x0904, 0x0917, 0x091e, 0x0925, 0x0930, 0x0937, 0x0954, 0x095d,
+ 0x0976, 0x0993, 0x099a, 0x09a1, 0x09b2, 0x09b7, 0x09b7, 0x09bc,
+ // Entry 100 - 13F
+ 0x09c3, 0x09cd, 0x09d3, 0x09db, 0x09eb, 0x09f0, 0x09f6, 0x0a01,
+ 0x0a0c, 0x0a13, 0x0a1e, 0x0a2c, 0x0a36, 0x0a40, 0x0a4c, 0x0a5c,
+ 0x0a72, 0x0a84, 0x0a8b, 0x0a93, 0x0a9b, 0x0aa7, 0x0ab1, 0x0aca,
+ 0x0ad3, 0x0aec, 0x0af5, 0x0af9, 0x0b04, 0x0b0d, 0x0b13, 0x0b1d,
+ 0x0b27, 0x0b32, 0x0b3e,
+ },
+ },
+ { // xog
+ "AndoraEmireetiAfaganisitaniAntigwa ni BarabudaAngwilaAlibaniyaArameniyaE" +
+ "bizinga bya Antile by’abaHolandiAngolaArigentinaSamowa omumerikaAwus" +
+ "ituriyaAwusitureliyaArubaAzerebayijaaniBoziniya HezegovinaBarabadosi" +
+ "BangaladesiBubirigiBurukina FasoBulugariyaBaareeniBurundiBeniniBerem" +
+ "udaBurunayiBoliviyaBuraziiriBahamasiButaaniBotiswanaBelarusiBelizeKa" +
+ "nadaKongo - ZayireLipabulika ya SenturafirikiKongoSwitizirandiKote D" +
+ "ivwaEbizinga bya KkukiCileKameruuniCayinaKolombyaKosita RikaCubaEbiz" +
+ "inga bya Kepu VerediSipuriyaLipabulika ya CeekaBudaakiJjibutiDenimaa" +
+ "kaDominikaLipabulika ya DominikaAligeryaEkwadoEsitoniyaMisiriEriture" +
+ "yaSipeyiniEsyopyaFinilandiFijiEbiizinga bya FalikalandiMikuronezyaBu" +
+ "falansaGaboniBungerezaGurenadaGyogyaGuyana enfalansaGanaGiburalitaGu" +
+ "renelandiGambyaGiniGwadalupeGayana yaku ekwetaBuyonaaniGwatemalaGwam" +
+ "uGini-BisawuGayanaHundurasiKurowesyaHayitiHangareYindonezyaAyalandiY" +
+ "isirayeriBuyindiEbizinga bya CagoYiraakaYiraaniAyisirandiYitaleJamay" +
+ "ikaYorodaniJapaniKenyaKirigizisitaaniKambodyaKiribatiEbizinga bya Ko" +
+ "moroSenti Kitisi ne NevisiKoreya eya mumambukaKoreya eya mumaserenge" +
+ "taKuwetiEbizinga bya KayimaaniKazakisitaaniLawosiLebanoniSenti Luciy" +
+ "aLicitensitayiniSirilankaLiberyaLesosoLisuwenyaLukisembaagaLativyaLi" +
+ "byaMorokoMonakoMolodovaMadagasikaBizinga bya MarisoMasedoniyaMaliMya" +
+ "nimaMongoliyaBizinga bya Mariyana ebyamumambukaMaritiniikiMawuliteny" +
+ "aMonteseraatiMalitaMawulisyasiEbizinga bya MalidiveMalawiMekisikoMal" +
+ "ezyaMozambiikiNamibiyaKaledonya mupyaNijeKizinga ky’eNorofokoNayijer" +
+ "yaNikaraguwaHolandiNoweNepaloNawuruNiyuweNiyuziirandiOmaaniPanamaPer" +
+ "uPolinesiya enfalansaPapwa NyuginiEbizinga bya FiripinoPakisitaaniPo" +
+ "landiSenti Piyere ni MikeloniPitikeeniPotorikoPalesitayini ni GazaPo" +
+ "tugaaliPalawuParagwayiKataaLeyunyoniLomaniyaLasaRwandaSawudarebyaEbi" +
+ "zanga bya SolomooniSesereSudaaniSwideniSingapowaSenti HerenaSiroveny" +
+ "aSirovakyaSiyeralewoneSanimarinoSenegaaloSomaliyaSurinaamuSanitome n" +
+ "i PurincipeEl salivadoSiriyaSwazirandiEbizinga bya Taaka ni Kayikosi" +
+ "CaadiTogoTayirandiTajikisitaaniTokelawuTimowaTakimenesitaaniTunisyaT" +
+ "ongaTtakeTurindaadi ni TobagoTuvaluTayiwaniYukurayineYugandaAmerikaW" +
+ "urugwayiWuzibekisitaaniVatikaaniSenti Vinsenti ni GurendadiiniVenzwe" +
+ "raEbizinga bya Virigini ebitwalibwa BungerezaEbizinga bya Virigini e" +
+ "by’AmerikaVyetinaamuVanawuwatuWalisi ni FutunaSamowaYemeniMayotteSaw" +
+ "usafirikaZambyaZimbabwe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0006, 0x000e, 0x001b, 0x002e, 0x0035, 0x003e,
+ 0x0047, 0x006a, 0x0070, 0x0070, 0x007a, 0x008a, 0x0095, 0x00a2,
+ 0x00a7, 0x00a7, 0x00b5, 0x00c8, 0x00d2, 0x00dd, 0x00e5, 0x00f2,
+ 0x00fc, 0x0104, 0x010b, 0x0111, 0x0111, 0x0119, 0x0121, 0x0129,
+ 0x0129, 0x0132, 0x013a, 0x0141, 0x0141, 0x014a, 0x0152, 0x0158,
+ 0x015e, 0x015e, 0x016c, 0x0187, 0x018c, 0x0198, 0x01a2, 0x01b4,
+ 0x01b8, 0x01c1, 0x01c7, 0x01cf, 0x01cf, 0x01da, 0x01de, 0x01f6,
+ 0x01f6, 0x01f6, 0x01fe, 0x0211, 0x0218, 0x0218, 0x021f, 0x0228,
+ // Entry 40 - 7F
+ 0x0230, 0x0246, 0x024e, 0x024e, 0x0254, 0x025d, 0x0263, 0x0263,
+ 0x026c, 0x0274, 0x027b, 0x027b, 0x0284, 0x0288, 0x02a1, 0x02ac,
+ 0x02ac, 0x02b5, 0x02bb, 0x02c4, 0x02cc, 0x02d2, 0x02e2, 0x02e2,
+ 0x02e6, 0x02f0, 0x02fb, 0x0301, 0x0305, 0x030e, 0x0320, 0x0329,
+ 0x0329, 0x0332, 0x0337, 0x0342, 0x0348, 0x0348, 0x0348, 0x0351,
+ 0x035a, 0x0360, 0x0367, 0x0367, 0x0371, 0x0379, 0x0383, 0x0383,
+ 0x038a, 0x039b, 0x03a2, 0x03a9, 0x03b3, 0x03b9, 0x03b9, 0x03c1,
+ 0x03c9, 0x03cf, 0x03d4, 0x03e3, 0x03eb, 0x03f3, 0x0406, 0x041c,
+ // Entry 80 - BF
+ 0x0430, 0x0448, 0x044e, 0x0464, 0x0471, 0x0477, 0x047f, 0x048b,
+ 0x049a, 0x04a3, 0x04aa, 0x04b0, 0x04b9, 0x04c5, 0x04cc, 0x04d1,
+ 0x04d7, 0x04dd, 0x04e5, 0x04e5, 0x04e5, 0x04ef, 0x0501, 0x050b,
+ 0x050f, 0x0516, 0x051f, 0x051f, 0x0541, 0x054c, 0x0557, 0x0563,
+ 0x0569, 0x0574, 0x0589, 0x058f, 0x0597, 0x059e, 0x05a8, 0x05b0,
+ 0x05bf, 0x05c3, 0x05d9, 0x05e2, 0x05ec, 0x05f3, 0x05f7, 0x05fd,
+ 0x0603, 0x0609, 0x0615, 0x061b, 0x0621, 0x0625, 0x0639, 0x0646,
+ 0x065b, 0x0666, 0x066d, 0x0685, 0x068e, 0x0696, 0x06aa, 0x06b3,
+ // Entry C0 - FF
+ 0x06b9, 0x06c2, 0x06c7, 0x06c7, 0x06d0, 0x06d8, 0x06d8, 0x06dc,
+ 0x06e2, 0x06ed, 0x0703, 0x0709, 0x0710, 0x0717, 0x0720, 0x072c,
+ 0x0735, 0x0735, 0x073e, 0x074a, 0x0754, 0x075d, 0x0765, 0x076e,
+ 0x076e, 0x0783, 0x078e, 0x078e, 0x0794, 0x079e, 0x079e, 0x07bc,
+ 0x07c1, 0x07c1, 0x07c5, 0x07ce, 0x07db, 0x07e3, 0x07e9, 0x07f8,
+ 0x07ff, 0x0804, 0x0809, 0x081d, 0x0823, 0x082b, 0x082b, 0x0835,
+ 0x083c, 0x083c, 0x0843, 0x084c, 0x085b, 0x0864, 0x0882, 0x088a,
+ 0x08b5, 0x08d8, 0x08e2, 0x08ec, 0x08fc, 0x0902, 0x0902, 0x0908,
+ // Entry 100 - 13F
+ 0x090f, 0x091b, 0x0921, 0x0929,
+ },
+ },
+ { // yav
+ "Aŋtúlaimiláat i paaláapAfkanistáŋAŋtíka na PalpútaAŋkílaAlpaníAlmaníaand" +
+ "íiy u nitililáandAŋkúlaAlsaŋtínSámua u AmelíkaOtilísOtalalíAlúpaAsɛ" +
+ "lpaisáŋPusiní-ɛlkofínaPalpatósPaŋkalatɛsPɛlsíikPulikínafásóPulukalíi" +
+ "PalɛŋPúlúndíPenɛŋPɛlmútaPulunéyPolífiaPilesílPahámasPutaŋPosuánaPela" +
+ "lúsPelíseKánátakitɔŋ kí kongóSantalafilíikKongósuwíisKótifualɛKúukeS" +
+ "ilíKemelúnSíineKɔlɔ́mbíaKóstálíkakúpaKápfɛlsíplɛkitɔŋ kí cɛ́knsámans" +
+ "íputítanemálktúmúnékekitɔŋ kí tumunikɛ́ŋAlselíekuatɛ́lɛstoniisípite" +
+ "litéepanyáetiopífɛnlándfísimaluwínmikolonesífelensíkapɔ́ŋingilíískel" +
+ "enáatsɔlsíikuyáan u felensíkanásílpalatáalkuluɛnlándkambíikiinékuate" +
+ "lúupkinéekuatolialkilɛ́ɛkkuatemalákuamiɛkiinépisaókuyáanɔndúlasKolow" +
+ "asíiayítiɔngilíɛndonesíililándísilayɛ́lɛ́ɛndKɔɔ́m kí ndián yi ngilís" +
+ "ilákiláŋisláanditalísamayíiksɔltanísapɔ́ɔŋkéniakilikisistáŋKámbóseki" +
+ "lipatíKɔmɔ́ɔlsɛ́ŋkilistɔ́f eniɛ́fkɔlé u muɛnɛ́kɔlé wu mbátkowéetKáyí" +
+ "manɛkasaksitáŋlawóslipáŋsɛ́ŋtɛ́lusílístɛ́nsitáyinsilíláŋkalipéliales" +
+ "otólitiyaníliksambúulletonílipíimalóokmonakómoltafímatakaskáalílmala" +
+ "sáalmasetuánmalímiaŋmáalmongolíil maliyanɛ u muɛnɛ́maltiníikmolitaní" +
+ "mɔŋsilámálɛ́tmolísmaletíifmalawímɛksíikmalesímosambíknamipínufɛ́l ka" +
+ "letonínisɛ́ɛlil nɔ́lfɔ́lɔknisélianikalakánitililáandnɔlfɛ́ɛsnepáalna" +
+ "wulúniyuwénufɛ́l seláandomáŋpanamápelúpolinesí u felensípapuasí nufɛ" +
+ "́l kiinéfilipíinpakistáŋpɔlɔ́ɔnysɛ́ŋpiɛ́l e mikelɔ́ŋpitikɛ́ɛlínɛ́pó" +
+ "lótolíkokitɔŋ ki palɛstíinpɔltukáalpalawúpalakúékatáalelewuniɔ́ŋulum" +
+ "aníulusíuluándáalapísawutíitil salomɔ́ŋsesɛ́ɛlsutáaŋsuɛ́tsingapúulsɛ" +
+ "́ŋtɛ́ elɛ́ɛnɛsilofenísilofakísieláleyɔ́ɔnsan malínosenekáalsomalísu" +
+ "lináamsáwó tomé e pelensípesalfatɔ́ɔlsuasiláandtúluk na káyiikSáatto" +
+ "kótayiláandtasikistáaŋtokelótimɔ́ɔl u nipálɛ́ntulukmenisitáaŋtunusít" +
+ "ɔ́ŋkatulukíitilinitáat na tupákɔtufalútayiwáantaŋsaníukilɛ́ɛnukánda" +
+ "amálíkaulukuéyusupekistáaŋfatikáaŋsɛ́ŋ fɛŋsáŋ elekelenatíinfenesuwel" +
+ "áFilisíin ungilíspindisúlɛ́ pi amálíkafiɛtnáamfanuatúwalíis na futú" +
+ "nasamowáyémɛnmayɔ́ɔtafilí mbátɛ́saambíisimbapuwé",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0008, 0x001b, 0x0027, 0x003b, 0x0043, 0x004a,
+ 0x0052, 0x0068, 0x0070, 0x0070, 0x007a, 0x008b, 0x0092, 0x009a,
+ 0x00a0, 0x00a0, 0x00ad, 0x00bf, 0x00c8, 0x00d4, 0x00dd, 0x00ec,
+ 0x00f6, 0x00fd, 0x0107, 0x010e, 0x010e, 0x0117, 0x011f, 0x0127,
+ 0x0127, 0x012f, 0x0137, 0x013d, 0x013d, 0x0145, 0x014d, 0x0154,
+ 0x015c, 0x015c, 0x016e, 0x017c, 0x0182, 0x0189, 0x0194, 0x019a,
+ 0x019f, 0x01a7, 0x01ad, 0x01ba, 0x01ba, 0x01c6, 0x01cb, 0x01d3,
+ 0x01d3, 0x01d3, 0x01da, 0x01ec, 0x01f3, 0x01f3, 0x01fb, 0x0204,
+ // Entry 40 - 7F
+ 0x020f, 0x0228, 0x022f, 0x022f, 0x0239, 0x0240, 0x0247, 0x0247,
+ 0x024e, 0x0254, 0x025b, 0x025b, 0x0264, 0x0269, 0x0271, 0x027c,
+ 0x027c, 0x0284, 0x028d, 0x0297, 0x02a0, 0x02a8, 0x02ba, 0x02ba,
+ 0x02bf, 0x02cc, 0x02d8, 0x02df, 0x02e5, 0x02ef, 0x02fe, 0x0308,
+ 0x0308, 0x0312, 0x0319, 0x0325, 0x032c, 0x032c, 0x032c, 0x0335,
+ 0x033f, 0x0345, 0x034d, 0x034d, 0x0357, 0x035f, 0x036b, 0x036b,
+ 0x0373, 0x0391, 0x0396, 0x039c, 0x03a4, 0x03aa, 0x03aa, 0x03b3,
+ 0x03bc, 0x03c7, 0x03cd, 0x03db, 0x03e4, 0x03ed, 0x03f8, 0x0413,
+ // Entry 80 - BF
+ 0x0425, 0x0434, 0x043b, 0x0446, 0x0452, 0x0458, 0x045f, 0x0470,
+ 0x0482, 0x048e, 0x0496, 0x049d, 0x04a6, 0x04b1, 0x04b8, 0x04be,
+ 0x04c5, 0x04cc, 0x04d4, 0x04d4, 0x04d4, 0x04e0, 0x04ec, 0x04f5,
+ 0x04fa, 0x0504, 0x050c, 0x050c, 0x0524, 0x052e, 0x0537, 0x0541,
+ 0x054a, 0x0550, 0x0559, 0x0560, 0x0569, 0x0570, 0x0579, 0x0580,
+ 0x0592, 0x059c, 0x05ae, 0x05b6, 0x05bf, 0x05cb, 0x05d7, 0x05de,
+ 0x05e5, 0x05ec, 0x05fd, 0x0603, 0x060a, 0x060f, 0x0623, 0x063b,
+ 0x0644, 0x064e, 0x065a, 0x0676, 0x0689, 0x0696, 0x06ac, 0x06b7,
+ // Entry C0 - FF
+ 0x06be, 0x06c7, 0x06ce, 0x06ce, 0x06db, 0x06e3, 0x06e3, 0x06e9,
+ 0x06f2, 0x0701, 0x070f, 0x0719, 0x0721, 0x0728, 0x0732, 0x074a,
+ 0x0753, 0x0753, 0x075c, 0x076c, 0x0777, 0x0780, 0x0787, 0x0790,
+ 0x0790, 0x07a9, 0x07b6, 0x07b6, 0x07b6, 0x07c1, 0x07c1, 0x07d2,
+ 0x07d7, 0x07d7, 0x07dc, 0x07e6, 0x07f3, 0x07fa, 0x0812, 0x0823,
+ 0x082a, 0x0833, 0x083b, 0x0852, 0x0859, 0x0862, 0x086b, 0x0876,
+ 0x087d, 0x087d, 0x0886, 0x088e, 0x089c, 0x08a6, 0x08c7, 0x08d2,
+ 0x08e4, 0x08fe, 0x0908, 0x0910, 0x0922, 0x0929, 0x0929, 0x0930,
+ // Entry 100 - 13F
+ 0x093a, 0x094a, 0x0952, 0x095c,
+ },
+ },
+ { // yi
+ "אַנדארעאַפֿגהאַניסטאַןאַנטיגוע און באַרבודעאַלבאַניעאַרמעניעאַנגאלעאַנטא" +
+ "ַרקטיקעאַרגענטינעעסטרייךאויסטראַליעאַרובאַבאסניע הערצעגאווינעבאַרבא" +
+ "ַדאסבאַנגלאַדעשבעלגיעבורקינע פֿאַסאבולגאַריעבורונדיבעניןבערמודעברונ" +
+ "ייבאליוויעבראַזילבאַהאַמאַסבהוטאַןבאצוואַנעבעלאַרוסבעליזקאַנאַדעקאנ" +
+ "גא־קינשאַזעצענטראַל־אַפֿריקאַנישע רעפּובליקשווייץהעלפֿאַ נדביין באר" +
+ "טןקוק אינזלעןטשילעקאַמערוןכינעקאלאמביעקאסטאַ ריקאַקובאַקאַפּווערדיש" +
+ "ע אינזלעןקוראַסאַאטשעכיידייטשלאַנדדזשיבוטידענמאַרקדאמיניקעדאמיניקאַ" +
+ "נישע רעפּובליקעקוואַדארעסטלאַנדעגיפּטןעריטרעעשפּאַניעעטיאפּיעאייראפ" +
+ "ּעישער פֿאַרבאַנדפֿינלאַנדפֿידזשיפֿאַלקלאַנד אינזלעןמיקראנעזיעפֿאַר" +
+ "א אינזלעןפֿראַנקרייךגאַבאןפֿאַראייניגטע קעניגרייךגרענאַדאַגרוזיעפֿר" +
+ "אַנצויזישע גויאַנעגערנזיגהאַנעגיבראַלטאַרגרינלאַנדגאַמביעגינעגוואַד" +
+ "עלופעקוואַטארישע גינעגריכנלאַנדגוואַטעמאַלעגוואַםגינע־ביסאַוגויאַנע" +
+ "האנדוראַסקראאַטיעהאַיטיאונגערןקאַנאַרישע אינזלעןאינדאנעזיעאירלאַנדי" +
+ "שראלאינדיעאיראַןאיסלאַנדאיטאַליעדזשערזידזשאַמייקעיאַפּאַןקעניעקאַמב" +
+ "אדיעקיריבאַטיקאמאראסקיימאַן אינזלעןלאַאסלבנוןליכטנשטייןסרי־לאַנקאַל" +
+ "יבעריעלעסאטאליטעלוקסעמבורגלעטלאַנדליביעמאַראקאמאנאַקאמאלדאוועמאנטענ" +
+ "עגראמאַדאַגאַסקאַרמאַרשאַל אינזלעןמאַקעדאניעמאַלימיאַנמאַרמאנגאליימ" +
+ "אַרטיניקמאַריטאַניעמאנטסעראַטמאַלטאַמאריציוסמאַלדיווןמאַלאַווימעקסי" +
+ "קעמאַלייזיעמאזאַמביקנאַמיביענײַ קאַלעדאניעניזשערנארפֿאלק אינזלניגער" +
+ "יעניקאַראַגועהאלאַנדנארוועגיענעפּאַלניו זילאַנדפּאַנאַמאַפּערופֿראַ" +
+ "נצויזישע פּאלינעזיעפּאַפּואַ נײַ גינעפֿיליפּינעןפּאַקיסטאַןפּוילןפּ" +
+ "יטקערן אינזלעןפּארטא־ריקאפּארטוגאַלפּאַראַגווײַקאַטאַררעאוניאןרומענ" +
+ "יעסערביערוסלאַנדרוואַנדעסאלאמאן אינזלעןסיישעלסודאַןשוועדןסינגאַפּור" +
+ "סט העלענעסלאוועניעסלאוואַקייסיערע לעאנעסאַן מאַרינאסענעגאַלסאמאַליע" +
+ "סורינאַםדרום־סודאַןסאַא טאמע און פּרינסיפּעעל סאַלוואַדארסיריעסוואַ" +
+ "זילאַנדטשאַדטאגאטיילאַנדטורקמעניסטאַןטוניסיעטאנגאַטערקייטרינידאַד א" +
+ "ון טאבאַגאטואוואַלוטאַנזאַניעאוקראַינעאוגאַנדעפֿאַראייניגטע שטאַטןא" +
+ "ורוגווייוואַטיקאַן שטאָטווענעזועלעוויעטנאַםוואַנואַטוסאַמאאַקאסאווא" +
+ "תימןמאַיאטדרום־אַפֿריקעזאַמביעזימבאַבוועאומבאַוואוסטער ראַיאןוועלטא" +
+ "ַפֿריקעצפון־אַמעריקעדרום־אַמעריקעאקעאַניעצענטראַל־אַמעריקעאַמעריקעצ" +
+ "פונדיקע אַמעריקעקאַראַאיבעמזרח אַזיעדרום־אַזיעדרום־מזרח אַזיעדרום־א" +
+ "ייראפּעפּאלינעזיעאַזיעצענטראַל־אַזיעמערב־אַזיעאייראפּעמזרח־אייראפּע" +
+ "צפֿון־אייראפּעמערב־אייראפּעלאַטיין־אַמעריקע",
+ []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x000e, 0x000e, 0x002c, 0x0054, 0x0054, 0x0066,
+ 0x0076, 0x0076, 0x0084, 0x009c, 0x00b0, 0x00b0, 0x00be, 0x00d4,
+ 0x00e2, 0x00e2, 0x00e2, 0x0107, 0x011b, 0x0131, 0x013d, 0x0158,
+ 0x016a, 0x016a, 0x0178, 0x0182, 0x0182, 0x0190, 0x019c, 0x01ac,
+ 0x01ac, 0x01ba, 0x01ce, 0x01dc, 0x01dc, 0x01ee, 0x01fe, 0x0208,
+ 0x0218, 0x0218, 0x0234, 0x0273, 0x0273, 0x027f, 0x02a5, 0x02ba,
+ 0x02c4, 0x02d4, 0x02dc, 0x02ec, 0x02ec, 0x0303, 0x030d, 0x0336,
+ 0x0348, 0x0348, 0x0348, 0x0354, 0x0368, 0x0368, 0x0378, 0x0388,
+ // Entry 40 - 7F
+ 0x0398, 0x03c5, 0x03c5, 0x03c5, 0x03d7, 0x03e7, 0x03f5, 0x03f5,
+ 0x0403, 0x0413, 0x0423, 0x0450, 0x0462, 0x0470, 0x0495, 0x04a9,
+ 0x04c4, 0x04da, 0x04e6, 0x0513, 0x0525, 0x0531, 0x055a, 0x0566,
+ 0x0572, 0x0588, 0x059a, 0x05a8, 0x05b0, 0x05c4, 0x05e5, 0x05f9,
+ 0x05f9, 0x0611, 0x061d, 0x0633, 0x0641, 0x0641, 0x0641, 0x0653,
+ 0x0663, 0x066f, 0x067d, 0x06a0, 0x06b4, 0x06c4, 0x06ce, 0x06ce,
+ 0x06da, 0x06da, 0x06da, 0x06e6, 0x06f6, 0x0706, 0x0714, 0x0728,
+ 0x0728, 0x0738, 0x0742, 0x0742, 0x0754, 0x0766, 0x0774, 0x0774,
+ // Entry 80 - BF
+ 0x0774, 0x0774, 0x0774, 0x0791, 0x0791, 0x079b, 0x07a5, 0x07a5,
+ 0x07b9, 0x07cf, 0x07dd, 0x07e9, 0x07f1, 0x0805, 0x0815, 0x081f,
+ 0x082d, 0x083b, 0x084b, 0x085f, 0x085f, 0x087b, 0x089a, 0x08ae,
+ 0x08b8, 0x08ca, 0x08da, 0x08da, 0x08da, 0x08ec, 0x0902, 0x0916,
+ 0x0924, 0x0934, 0x0946, 0x0958, 0x0966, 0x0978, 0x098a, 0x099a,
+ 0x09b5, 0x09c1, 0x09dc, 0x09ea, 0x0a00, 0x0a0e, 0x0a20, 0x0a2e,
+ 0x0a2e, 0x0a2e, 0x0a43, 0x0a43, 0x0a57, 0x0a61, 0x0a90, 0x0ab2,
+ 0x0ac8, 0x0ade, 0x0aea, 0x0aea, 0x0b09, 0x0b1f, 0x0b1f, 0x0b33,
+ // Entry C0 - FF
+ 0x0b33, 0x0b4b, 0x0b59, 0x0b59, 0x0b69, 0x0b77, 0x0b83, 0x0b93,
+ 0x0ba3, 0x0ba3, 0x0bc0, 0x0bcc, 0x0bd8, 0x0be4, 0x0bf8, 0x0c09,
+ 0x0c1b, 0x0c1b, 0x0c2f, 0x0c44, 0x0c5b, 0x0c6b, 0x0c7b, 0x0c8b,
+ 0x0ca1, 0x0cce, 0x0ce9, 0x0ce9, 0x0cf3, 0x0d0b, 0x0d0b, 0x0d0b,
+ 0x0d15, 0x0d15, 0x0d1d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d47,
+ 0x0d55, 0x0d61, 0x0d6d, 0x0d95, 0x0da7, 0x0da7, 0x0dbb, 0x0dcd,
+ 0x0ddd, 0x0ddd, 0x0e04, 0x0e16, 0x0e16, 0x0e35, 0x0e35, 0x0e49,
+ 0x0e49, 0x0e49, 0x0e5b, 0x0e6f, 0x0e6f, 0x0e7d, 0x0e8b, 0x0e93,
+ // Entry 100 - 13F
+ 0x0e9f, 0x0eb9, 0x0ec7, 0x0edb, 0x0f04, 0x0f0e, 0x0f1e, 0x0f38,
+ 0x0f52, 0x0f62, 0x0f62, 0x0f84, 0x0f84, 0x0f84, 0x0f84, 0x0f84,
+ 0x0f94, 0x0fb5, 0x0fc9, 0x0fdc, 0x0ff0, 0x100d, 0x1027, 0x1027,
+ 0x1027, 0x1027, 0x103b, 0x1045, 0x1061, 0x1075, 0x1085, 0x109f,
+ 0x10bb, 0x10d5, 0x10f5,
+ },
+ },
+ { // yo
+ "Orílẹ́ède ÀàndóràOrílẹ́ède Ẹmirate ti Awọn ArabuOrílẹ́ède ÀfùgànístánìOr" +
+ "ílẹ́ède Ààntígúà àti BáríbúdàOrílẹ́ède ÀàngúlílàOrílẹ́ède Àlùbàníán" +
+ "ìOrílẹ́ède AméníàOrílẹ́ède Nedalandi ti AntelisiOrílẹ́ède ÀàngólàOr" +
+ "ílẹ́ède AgentínàSámóánì ti Orílẹ́ède ÀméríkàOrílẹ́ède AsítíríàOrílẹ" +
+ "́ède ÁstràlìáOrílẹ́ède ÁrúbàOrílẹ́ède Asẹ́bájánìOrílẹ́ède Bọ̀síníà " +
+ "àti ẸtisẹgófínàOrílẹ́ède BábádósìOrílẹ́ède BángáládésìOrílẹ́ède Bég" +
+ "íọ́mùOrílẹ́ède Bùùkíná FasòOrílẹ́ède BùùgáríàOrílẹ́ède BáránìOrílẹ́" +
+ "ède BùùrúndìOrílẹ́ède Bẹ̀nẹ̀Orílẹ́ède BémúdàOrílẹ́ède Búrúnẹ́lìOríl" +
+ "ẹ́ède Bọ̀lífíyàOrílẹ́ède BàràsílìOrílẹ́ède BàhámásìOrílẹ́ède Bútán" +
+ "ìOrílẹ́ède Bọ̀tìsúwánàOrílẹ́ède BélárúsìOrílẹ́ède Bèlísẹ̀Orílẹ́ède " +
+ "KánádàOrilẹ́ède KóngòOrílẹ́ède Àrin gùngun ÁfíríkàOrílẹ́ède KóngòOrí" +
+ "lẹ́ède switiṣilandiOrílẹ́ède Kóútè foràOrílẹ́ède Etíokun KùúkùOrílẹ́" +
+ "ède ṣílèOrílẹ́ède KamerúúnìOrílẹ́ède ṣáínàOrílẹ́ède KòlómíbìaOrílẹ́" +
+ "ède Kuusita RíkàOrílẹ́ède KúbàOrílẹ́ède Etíokun Kápé féndèOrílẹ́ède" +
+ " KúrúsìOrílẹ́ède ṣẹ́ẹ́kìOrílẹ́ède GemaniOrílẹ́ède Díbọ́ótìOrílẹ́ède " +
+ "Dẹ́mákìOrílẹ́ède DòmíníkàOrilẹ́ède DòmíníkánìOrílẹ́ède ÀlùgèríánìOrí" +
+ "lẹ́ède EkuádòOrílẹ́ède EsitoniaOrílẹ́ède ÉgípítìOrílẹ́ède EritiraOrí" +
+ "lẹ́ède SipaniOrílẹ́ède EtopiaOrílẹ́ède FilandiOrílẹ́ède FijiOrílẹ́èd" +
+ "e Etikun FakalandiOrílẹ́ède MakoronesiaOrílẹ́ède FaranseOrílẹ́ède Ga" +
+ "bonOrílẹ́ède OmobabirinOrílẹ́ède GenadaOrílẹ́ède GọgiaOrílẹ́ède Fire" +
+ "nṣi GuanaOrílẹ́ède GanaOrílẹ́ède GibarataraOrílẹ́ède GerelandiOrílẹ́" +
+ "ède GambiaOrílẹ́ède GeneOrílẹ́ède GadelopeOrílẹ́ède Ekutoria GiniOr" +
+ "ílẹ́ède GeriisiOrílẹ́ède GuatemalaOrílẹ́ède GuamuOrílẹ́ède Gene-Bus" +
+ "auOrílẹ́ède GuyanaOrílẹ́ède HondurasiOrílẹ́ède KòróátíàOrílẹ́ède Haa" +
+ "tiOrílẹ́ède HungariOrílẹ́ède IndonesiaOrílẹ́ède AilandiOrílẹ́ède Ise" +
+ "rẹliOrílẹ́ède IndiaOrílẹ́ède Etíkun Índíánì ti Ìlú BírítísìOrílẹ́ède" +
+ " IrakiOrílẹ́ède IraniOrílẹ́ède AṣilandiOrílẹ́ède ItaliyiOrílẹ́ède Ja" +
+ "maikaOrílẹ́ède JọdaniOrílẹ́ède JapaniOrílẹ́ède KenyaOrílẹ́ède Kuriṣi" +
+ "sitaniOrílẹ́ède KàmùbódíàOrílẹ́ède KiribatiOrílẹ́ède KòmòrósìOrílẹ́è" +
+ "de Kiiti ati NeefiOrílẹ́ède Guusu KọriaOrílẹ́ède Ariwa KọriaOrílẹ́èd" +
+ "e KuwetiOrílẹ́ède Etíokun KámánìOrílẹ́ède KaṣaṣataniOrílẹ́ède LaosiO" +
+ "rílẹ́ède LebanoniOrílẹ́ède LuṣiaOrílẹ́ède LẹṣitẹnisiteniOrílẹ́ède Si" +
+ "ri LankaOrílẹ́ède LaberiaOrílẹ́ède LesotoOrílẹ́ède LituaniaOrílẹ́ède" +
+ " LusemogiOrílẹ́ède LatifiaOrílẹ́ède LibiyaOrílẹ́ède MorokoOrílẹ́ède " +
+ "MonakoOrílẹ́ède ModofiaOrílẹ́ède MadasikaOrílẹ́ède Etikun MáṣaliOríl" +
+ "ẹ́ède MasidoniaOrílẹ́ède MaliOrílẹ́ède ManamariOrílẹ́ède MogoliaOr" +
+ "ílẹ́ède Etikun Guusu MarianaOrílẹ́ède MatinikuwiOrílẹ́ède Maritania" +
+ "Orílẹ́ède MotseratiOrílẹ́ède MalataOrílẹ́ède MaritiusiOrílẹ́ède Mala" +
+ "difiOrílẹ́ède MalawiOrílẹ́ède MesikoOrílẹ́ède MalasiaOrílẹ́ède Moṣam" +
+ "ibikuOrílẹ́ède NamibiaOrílẹ́ède Kaledonia TitunOrílẹ́ède NàìjáOrílẹ́" +
+ "ède Etikun Nọ́úfókìOrílẹ́ède NàìjíríàOrílẹ́ède NIkaraguaOrílẹ́ède N" +
+ "edalandiOrílẹ́ède NọọwiiOrílẹ́ède NepaOrílẹ́ède NauruOrílẹ́ède NiueO" +
+ "rílẹ́ède ṣilandi TitunOrílẹ́ède ỌọmaOrílẹ́ède PanamaOrílẹ́ède PeruOr" +
+ "ílẹ́ède Firenṣi PolinesiaOrílẹ́ède Paapu ti GiiniOrílẹ́ède filipini" +
+ "Orílẹ́ède PakisitanOrílẹ́ède PolandiOrílẹ́ède Pẹẹri ati mikuloniOríl" +
+ "ẹ́ède PikariniOrílẹ́ède Pọto RikoOrílẹ́ède Iwọorun Pakisitian ati " +
+ "GaṣaOrílẹ́ède PọtugiOrílẹ́ède PaaluOrílẹ́ède ParaguyeOrílẹ́ède KotaO" +
+ "rílẹ́ède RiuniyanOrílẹ́ède RomaniyaOrílẹ́ède RọṣiaOrílẹ́ède RuwandaO" +
+ "rílẹ́ède Saudi ArabiaOrílẹ́ède Etikun SolomoniOrílẹ́ède seṣẹlẹsiOríl" +
+ "ẹ́ède SudaniOrílẹ́ède SwidiniOrílẹ́ède SingapoOrílẹ́ède HẹlenaOríl" +
+ "ẹ́ède SilofaniaOrílẹ́ède SilofakiaOrílẹ́ède Siria looniOrílẹ́ède S" +
+ "ani MarinoOrílẹ́ède SẹnẹgaOrílẹ́ède SomaliaOrílẹ́ède SurinamiOrílẹ́è" +
+ "de Sao tomi ati piriiṣipiOrílẹ́ède ẸẹsáfádòOrílẹ́ède SiriaOrílẹ́ède " +
+ "SaṣilandOrílẹ́ède Tọọki ati Etikun KakọsiOrílẹ́ède ṣààdìOrílẹ́ède To" +
+ "goOrílẹ́ède TailandiOrílẹ́ède TakisitaniOrílẹ́ède TokelauOrílẹ́ède Ì" +
+ "làOòrùn Tímọ̀Orílẹ́ède TọọkimenisitaOrílẹ́ède TuniṣiaOrílẹ́ède Tonga" +
+ "Orílẹ́ède TọọkiOrílẹ́ède Tirinida ati TobagaOrílẹ́ède TufaluOrílẹ́èd" +
+ "e TaiwaniOrílẹ́ède TanṣaniaOrílẹ́ède UkariniOrílẹ́ède UgandaOrílẹ́èd" +
+ "e Orilẹede AmerikaOrílẹ́ède NruguayiOrílẹ́ède NṣibẹkisitaniOrílẹ́ède" +
+ " FatikaniOrílẹ́ède Fisẹnnti ati GenadinaOrílẹ́ède FẹnẹṣuẹlaOrílẹ́ède" +
+ " Etíkun Fágínì ti ìlú BírítísìOrílẹ́ède Etikun Fagini ti AmẹrikaOríl" +
+ "ẹ́ède FẹtinamiOrílẹ́ède FaniatuOrílẹ́ède Wali ati futunaOrílẹ́ède " +
+ "SamọOrílẹ́ède yemeniOrílẹ́ède MayoteOrílẹ́ède Ariwa AfirikaOrílẹ́ède" +
+ " ṣamibiaOrílẹ́ède ṣimibabe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x001a, 0x0042, 0x0063, 0x0091, 0x00ae, 0x00cd,
+ 0x00e5, 0x0109, 0x0123, 0x0123, 0x013c, 0x0165, 0x0180, 0x019b,
+ 0x01b2, 0x01b2, 0x01d1, 0x0206, 0x0221, 0x0240, 0x025d, 0x027d,
+ 0x0299, 0x02b1, 0x02cc, 0x02e7, 0x02e7, 0x02ff, 0x031d, 0x033b,
+ 0x033b, 0x0356, 0x0371, 0x0389, 0x0389, 0x03aa, 0x03c5, 0x03e0,
+ 0x03f8, 0x03f8, 0x040d, 0x0435, 0x044b, 0x0468, 0x0485, 0x04a5,
+ 0x04bc, 0x04d7, 0x04f0, 0x050c, 0x050c, 0x0529, 0x053e, 0x0564,
+ 0x0564, 0x0564, 0x057c, 0x059b, 0x05b0, 0x05b0, 0x05cd, 0x05e8,
+ // Entry 40 - 7F
+ 0x0603, 0x0620, 0x063f, 0x063f, 0x0656, 0x066d, 0x0687, 0x0687,
+ 0x069d, 0x06b2, 0x06c7, 0x06c7, 0x06dd, 0x06f0, 0x070f, 0x0729,
+ 0x0729, 0x073f, 0x0753, 0x076c, 0x0781, 0x0797, 0x07b5, 0x07b5,
+ 0x07c8, 0x07e1, 0x07f9, 0x080e, 0x0821, 0x0838, 0x0854, 0x086a,
+ 0x086a, 0x0882, 0x0896, 0x08af, 0x08c4, 0x08c4, 0x08c4, 0x08dc,
+ 0x08f8, 0x090c, 0x0922, 0x0922, 0x093a, 0x0950, 0x0968, 0x0968,
+ 0x097c, 0x09b4, 0x09c8, 0x09dc, 0x09f5, 0x0a0b, 0x0a0b, 0x0a21,
+ 0x0a38, 0x0a4d, 0x0a61, 0x0a7e, 0x0a9b, 0x0ab2, 0x0acd, 0x0aeb,
+ // Entry 80 - BF
+ 0x0b07, 0x0b23, 0x0b38, 0x0b59, 0x0b76, 0x0b8a, 0x0ba1, 0x0bb7,
+ 0x0bda, 0x0bf3, 0x0c09, 0x0c1e, 0x0c35, 0x0c4c, 0x0c62, 0x0c77,
+ 0x0c8c, 0x0ca1, 0x0cb7, 0x0cb7, 0x0cb7, 0x0cce, 0x0ced, 0x0d05,
+ 0x0d18, 0x0d2f, 0x0d45, 0x0d45, 0x0d68, 0x0d81, 0x0d99, 0x0db1,
+ 0x0dc6, 0x0dde, 0x0df5, 0x0e0a, 0x0e1f, 0x0e35, 0x0e50, 0x0e66,
+ 0x0e84, 0x0e9b, 0x0ebf, 0x0edb, 0x0ef3, 0x0f0b, 0x0f24, 0x0f37,
+ 0x0f4b, 0x0f5e, 0x0f7c, 0x0f93, 0x0fa8, 0x0fbb, 0x0fdd, 0x0ffa,
+ 0x1011, 0x1029, 0x103f, 0x1064, 0x107b, 0x1095, 0x10c3, 0x10da,
+ // Entry C0 - FF
+ 0x10ee, 0x1105, 0x1118, 0x1118, 0x112f, 0x1146, 0x1146, 0x115e,
+ 0x1174, 0x118f, 0x11ad, 0x11ca, 0x11df, 0x11f5, 0x120b, 0x1222,
+ 0x123a, 0x123a, 0x1252, 0x126c, 0x1286, 0x129f, 0x12b5, 0x12cc,
+ 0x12cc, 0x12f3, 0x1311, 0x1311, 0x1325, 0x133e, 0x133e, 0x136a,
+ 0x1383, 0x1383, 0x1396, 0x13ad, 0x13c6, 0x13dc, 0x1401, 0x1421,
+ 0x1439, 0x144d, 0x1465, 0x1487, 0x149c, 0x14b2, 0x14cb, 0x14e1,
+ 0x14f6, 0x14f6, 0x1517, 0x152e, 0x154e, 0x1565, 0x158b, 0x15ab,
+ 0x15e1, 0x160a, 0x1623, 0x1639, 0x1657, 0x166c, 0x166c, 0x1681,
+ // Entry 100 - 13F
+ 0x1696, 0x16b2, 0x16ca, 0x16e3,
+ },
+ },
+ { // yo-BJ
+ "Orílɛ́ède ÀàndóràOrílɛ́ède Ɛmirate ti Awɔn ArabuOrílɛ́ède ÀfùgànístánìOr" +
+ "ílɛ́ède Ààntígúà àti BáríbúdàOrílɛ́ède ÀàngúlílàOrílɛ́ède Àlùbàníán" +
+ "ìOrílɛ́ède AméníàOrílɛ́ède Nedalandi ti AntelisiOrílɛ́ède ÀàngólàOr" +
+ "ílɛ́ède AgentínàSámóánì ti Orílɛ́ède ÀméríkàOrílɛ́ède AsítíríàOrílɛ" +
+ "́ède ÁstràlìáOrílɛ́ède ÁrúbàOrílɛ́ède Asɛ́bájánìOrílɛ́ède Bɔ̀síníà " +
+ "àti ƐtisɛgófínàOrílɛ́ède BábádósìOrílɛ́ède BángáládésìOrílɛ́ède Bég" +
+ "íɔ́mùOrílɛ́ède Bùùkíná FasòOrílɛ́ède BùùgáríàOrílɛ́ède BáránìOrílɛ́" +
+ "ède BùùrúndìOrílɛ́ède Bɛ̀nɛ̀Orílɛ́ède BémúdàOrílɛ́ède Búrúnɛ́lìOríl" +
+ "ɛ́ède Bɔ̀lífíyàOrílɛ́ède BàràsílìOrílɛ́ède BàhámásìOrílɛ́ède Bútánì" +
+ "Orílɛ́ède Bɔ̀tìsúwánàOrílɛ́ède BélárúsìOrílɛ́ède Bèlísɛ̀Orílɛ́ède Ká" +
+ "nádàOrilɛ́ède KóngòOrílɛ́ède Àrin gùngun ÁfíríkàOrílɛ́ède KóngòOrílɛ" +
+ "́ède switishilandiOrílɛ́ède Kóútè foràOrílɛ́ède Etíokun KùúkùOrílɛ́" +
+ "ède shílèOrílɛ́ède KamerúúnìOrílɛ́ède sháínàOrílɛ́ède KòlómíbìaOríl" +
+ "ɛ́ède Kuusita RíkàOrílɛ́ède KúbàOrílɛ́ède Etíokun Kápé féndèOrílɛ́è" +
+ "de KúrúsìOrílɛ́ède shɛ́ɛ́kìOrílɛ́ède GemaniOrílɛ́ède Díbɔ́ótìOrílɛ́è" +
+ "de Dɛ́mákìOrílɛ́ède DòmíníkàOrilɛ́ède DòmíníkánìOrílɛ́ède Àlùgèríánì" +
+ "Orílɛ́ède EkuádòOrílɛ́ède EsitoniaOrílɛ́ède ÉgípítìOrílɛ́ède Eritira" +
+ "Orílɛ́ède SipaniOrílɛ́ède EtopiaOrílɛ́ède FilandiOrílɛ́ède FijiOrílɛ" +
+ "́ède Etikun FakalandiOrílɛ́ède MakoronesiaOrílɛ́ède FaranseOrílɛ́èd" +
+ "e GabonOrílɛ́ède OmobabirinOrílɛ́ède GenadaOrílɛ́ède GɔgiaOrílɛ́ède " +
+ "Firenshi GuanaOrílɛ́ède GanaOrílɛ́ède GibarataraOrílɛ́ède GerelandiO" +
+ "rílɛ́ède GambiaOrílɛ́ède GeneOrílɛ́ède GadelopeOrílɛ́ède Ekutoria Gi" +
+ "niOrílɛ́ède GeriisiOrílɛ́ède GuatemalaOrílɛ́ède GuamuOrílɛ́ède Gene-" +
+ "BusauOrílɛ́ède GuyanaOrílɛ́ède HondurasiOrílɛ́ède KòróátíàOrílɛ́ède " +
+ "HaatiOrílɛ́ède HungariOrílɛ́ède IndonesiaOrílɛ́ède AilandiOrílɛ́ède " +
+ "IserɛliOrílɛ́ède IndiaOrílɛ́ède Etíkun Índíánì ti Ìlú BírítísìOrílɛ́" +
+ "ède IrakiOrílɛ́ède IraniOrílɛ́ède AshilandiOrílɛ́ède ItaliyiOrílɛ́è" +
+ "de JamaikaOrílɛ́ède JɔdaniOrílɛ́ède JapaniOrílɛ́ède KenyaOrílɛ́ède K" +
+ "urishisitaniOrílɛ́ède KàmùbódíàOrílɛ́ède KiribatiOrílɛ́ède KòmòrósìO" +
+ "rílɛ́ède Kiiti ati NeefiOrílɛ́ède Guusu KɔriaOrílɛ́ède Ariwa KɔriaOr" +
+ "ílɛ́ède KuwetiOrílɛ́ède Etíokun KámánìOrílɛ́ède KashashataniOrílɛ́è" +
+ "de LaosiOrílɛ́ède LebanoniOrílɛ́ède LushiaOrílɛ́ède LɛshitɛnisiteniO" +
+ "rílɛ́ède Siri LankaOrílɛ́ède LaberiaOrílɛ́ède LesotoOrílɛ́ède Lituan" +
+ "iaOrílɛ́ède LusemogiOrílɛ́ède LatifiaOrílɛ́ède LibiyaOrílɛ́ède Morok" +
+ "oOrílɛ́ède MonakoOrílɛ́ède ModofiaOrílɛ́ède MadasikaOrílɛ́ède Etikun" +
+ " MáshaliOrílɛ́ède MasidoniaOrílɛ́ède MaliOrílɛ́ède ManamariOrílɛ́ède" +
+ " MogoliaOrílɛ́ède Etikun Guusu MarianaOrílɛ́ède MatinikuwiOrílɛ́ède " +
+ "MaritaniaOrílɛ́ède MotseratiOrílɛ́ède MalataOrílɛ́ède MaritiusiOrílɛ" +
+ "́ède MaladifiOrílɛ́ède MalawiOrílɛ́ède MesikoOrílɛ́ède MalasiaOrílɛ" +
+ "́ède MoshamibikuOrílɛ́ède NamibiaOrílɛ́ède Kaledonia TitunOrílɛ́ède" +
+ " NàìjáOrílɛ́ède Etikun Nɔ́úfókìOrílɛ́ède NàìjíríàOrílɛ́ède NIkaragua" +
+ "Orílɛ́ède NedalandiOrílɛ́ède NɔɔwiiOrílɛ́ède NepaOrílɛ́ède NauruOríl" +
+ "ɛ́ède NiueOrílɛ́ède shilandi TitunOrílɛ́ède ƆɔmaOrílɛ́ède PanamaOrí" +
+ "lɛ́ède PeruOrílɛ́ède Firenshi PolinesiaOrílɛ́ède Paapu ti GiiniOrílɛ" +
+ "́ède filipiniOrílɛ́ède PakisitanOrílɛ́ède PolandiOrílɛ́ède Pɛɛri at" +
+ "i mikuloniOrílɛ́ède PikariniOrílɛ́ède Pɔto RikoOrílɛ́ède Iwɔorun Pak" +
+ "isitian ati GashaOrílɛ́ède PɔtugiOrílɛ́ède PaaluOrílɛ́ède ParaguyeOr" +
+ "ílɛ́ède KotaOrílɛ́ède RiuniyanOrílɛ́ède RomaniyaOrílɛ́ède RɔshiaOrí" +
+ "lɛ́ède RuwandaOrílɛ́ède Saudi ArabiaOrílɛ́ède Etikun SolomoniOrílɛ́è" +
+ "de seshɛlɛsiOrílɛ́ède SudaniOrílɛ́ède SwidiniOrílɛ́ède SingapoOrílɛ́" +
+ "ède HɛlenaOrílɛ́ède SilofaniaOrílɛ́ède SilofakiaOrílɛ́ède Siria loo" +
+ "niOrílɛ́ède Sani MarinoOrílɛ́ède SɛnɛgaOrílɛ́ède SomaliaOrílɛ́ède Su" +
+ "rinamiOrílɛ́ède Sao tomi ati piriishipiOrílɛ́ède ƐɛsáfádòOrílɛ́ède S" +
+ "iriaOrílɛ́ède SashilandOrílɛ́ède Tɔɔki ati Etikun KakɔsiOrílɛ́ède sh" +
+ "ààdìOrílɛ́ède TogoOrílɛ́ède TailandiOrílɛ́ède TakisitaniOrílɛ́ède T" +
+ "okelauOrílɛ́ède ÌlàOòrùn Tímɔ̀Orílɛ́ède TɔɔkimenisitaOrílɛ́ède Tunis" +
+ "hiaOrílɛ́ède TongaOrílɛ́ède TɔɔkiOrílɛ́ède Tirinida ati TobagaOrílɛ́" +
+ "ède TufaluOrílɛ́ède TaiwaniOrílɛ́ède TanshaniaOrílɛ́ède UkariniOríl" +
+ "ɛ́ède UgandaOrílɛ́ède Orilɛede AmerikaOrílɛ́ède NruguayiOrílɛ́ède N" +
+ "shibɛkisitaniOrílɛ́ède FatikaniOrílɛ́ède Fisɛnnti ati GenadinaOrílɛ́" +
+ "ède FɛnɛshuɛlaOrílɛ́ède Etíkun Fágínì ti ìlú BírítísìOrílɛ́ède Etik" +
+ "un Fagini ti AmɛrikaOrílɛ́ède FɛtinamiOrílɛ́ède FaniatuOrílɛ́ède Wal" +
+ "i ati futunaOrílɛ́ède SamɔOrílɛ́ède yemeniOrílɛ́ède MayoteOrílɛ́ède " +
+ "Ariwa AfirikaOrílɛ́ède shamibiaOrílɛ́ède shimibabe",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0019, 0x003e, 0x005e, 0x008b, 0x00a7, 0x00c5,
+ 0x00dc, 0x00ff, 0x0118, 0x0118, 0x0130, 0x0158, 0x0172, 0x018c,
+ 0x01a2, 0x01a2, 0x01bf, 0x01f0, 0x020a, 0x0228, 0x0243, 0x0262,
+ 0x027d, 0x0294, 0x02ae, 0x02c6, 0x02c6, 0x02dd, 0x02f9, 0x0315,
+ 0x0315, 0x032f, 0x0349, 0x0360, 0x0360, 0x037f, 0x0399, 0x03b2,
+ 0x03c9, 0x03c9, 0x03dd, 0x0404, 0x0419, 0x0434, 0x0450, 0x046f,
+ 0x0484, 0x049e, 0x04b5, 0x04d0, 0x04d0, 0x04ec, 0x0500, 0x0525,
+ 0x0525, 0x0525, 0x053c, 0x0557, 0x056b, 0x056b, 0x0586, 0x059f,
+ // Entry 40 - 7F
+ 0x05b9, 0x05d5, 0x05f3, 0x05f3, 0x0609, 0x061f, 0x0638, 0x0638,
+ 0x064d, 0x0661, 0x0675, 0x0675, 0x068a, 0x069c, 0x06ba, 0x06d3,
+ 0x06d3, 0x06e8, 0x06fb, 0x0713, 0x0727, 0x073b, 0x0757, 0x0757,
+ 0x0769, 0x0781, 0x0798, 0x07ac, 0x07be, 0x07d4, 0x07ef, 0x0804,
+ 0x0804, 0x081b, 0x082e, 0x0846, 0x085a, 0x085a, 0x085a, 0x0871,
+ 0x088c, 0x089f, 0x08b4, 0x08b4, 0x08cb, 0x08e0, 0x08f6, 0x08f6,
+ 0x0909, 0x0940, 0x0953, 0x0966, 0x097d, 0x0992, 0x0992, 0x09a7,
+ 0x09bc, 0x09d0, 0x09e3, 0x09fe, 0x0a1a, 0x0a30, 0x0a4a, 0x0a67,
+ // Entry 80 - BF
+ 0x0a81, 0x0a9b, 0x0aaf, 0x0acf, 0x0ae9, 0x0afc, 0x0b12, 0x0b26,
+ 0x0b45, 0x0b5d, 0x0b72, 0x0b86, 0x0b9c, 0x0bb2, 0x0bc7, 0x0bdb,
+ 0x0bef, 0x0c03, 0x0c18, 0x0c18, 0x0c18, 0x0c2e, 0x0c4b, 0x0c62,
+ 0x0c74, 0x0c8a, 0x0c9f, 0x0c9f, 0x0cc1, 0x0cd9, 0x0cf0, 0x0d07,
+ 0x0d1b, 0x0d32, 0x0d48, 0x0d5c, 0x0d70, 0x0d85, 0x0d9e, 0x0db3,
+ 0x0dd0, 0x0de6, 0x0e08, 0x0e23, 0x0e3a, 0x0e51, 0x0e67, 0x0e79,
+ 0x0e8c, 0x0e9e, 0x0eba, 0x0ece, 0x0ee2, 0x0ef4, 0x0f14, 0x0f30,
+ 0x0f46, 0x0f5d, 0x0f72, 0x0f94, 0x0faa, 0x0fc2, 0x0fed, 0x1002,
+ // Entry C0 - FF
+ 0x1015, 0x102b, 0x103d, 0x103d, 0x1053, 0x1069, 0x1069, 0x107e,
+ 0x1093, 0x10ad, 0x10ca, 0x10e3, 0x10f7, 0x110c, 0x1121, 0x1136,
+ 0x114d, 0x114d, 0x1164, 0x117d, 0x1196, 0x11ac, 0x11c1, 0x11d7,
+ 0x11d7, 0x11fc, 0x1217, 0x1217, 0x122a, 0x1241, 0x1241, 0x1269,
+ 0x1280, 0x1280, 0x1292, 0x12a8, 0x12c0, 0x12d5, 0x12f8, 0x1315,
+ 0x132b, 0x133e, 0x1353, 0x1374, 0x1388, 0x139d, 0x13b4, 0x13c9,
+ 0x13dd, 0x13dd, 0x13fc, 0x1412, 0x142f, 0x1445, 0x1469, 0x1484,
+ 0x14b9, 0x14e0, 0x14f7, 0x150c, 0x1529, 0x153c, 0x153c, 0x1550,
+ // Entry 100 - 13F
+ 0x1564, 0x157f, 0x1595, 0x15ac,
+ },
+ },
+ { // zgh
+ "ⴰⵏⴷⵓⵔⴰⵍⵉⵎⴰⵔⴰⵜⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰⴰⵏⴳⵉⵍⴰⴰⵍⴱⴰⵏⵢⴰⴰⵔⵎⵉⵏⵢⴰⴰⵏⴳⵓⵍⴰⴰⵔⵊⴰⵏⵜⵉⵏ" +
+ "ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜⵏⵏⵎⵙⴰⵓⵙⵜⵔⴰⵍⵢⴰⴰⵔⵓⴱⴰⴰⴷⵔⴰⴱⵉⵊⴰⵏⴱⵓⵙⵏⴰ ⴷ ⵀⵉⵔⵙⵉⴽⴱⴰⵔⴱⴰⴷⴱⴰ" +
+ "ⵏⴳⵍⴰⴷⵉⵛⴱⵍⵊⵉⴽⴰⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓⴱⵍⵖⴰⵔⵢⴰⴱⵃⵔⴰⵢⵏⴱⵓⵔⵓⵏⴷⵉⴱⵉⵏⵉⵏⴱⵔⵎⵓⴷⴰⴱⵔⵓⵏⵉⴱⵓⵍⵉⴱ" +
+ "ⵢⴰⴱⵔⴰⵣⵉⵍⴱⴰⵀⴰⵎⴰⵙⴱⵀⵓⵜⴰⵏⴱⵓⵜⵙⵡⴰⵏⴰⴱⵉⵍⴰⵔⵓⵙⵢⴰⴱⵉⵍⵉⵣⴽⴰⵏⴰⴷⴰⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇ" +
+ "ⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰⴽⵓⵏⴳⵓⵙⵡⵉⵙⵔⴰⴽⵓⵜ ⴷⵉⴼⵡⴰⵔⵜⵉⴳ" +
+ "ⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽⵛⵛⵉⵍⵉⴽⴰⵎⵉⵔⵓⵏⵛⵛⵉⵏⵡⴰⴽⵓⵍⵓⵎⴱⵢⴰⴽⵓⵙⵜⴰ ⵔⵉⴽⴰⴽⵓⴱⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱ" +
+ "ⵉⵔⴷⵉⵇⵓⴱⵔⵓⵙⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜⴰⵍⵎⴰⵏⵢⴰⴷⵊⵉⴱⵓⵜⵉⴷⴰⵏⵎⴰⵔⴽⴷⵓⵎⵉⵏⵉⴽⵜⴰⴳⴷⵓⴷⴰⵏⵜ " +
+ "ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜⴷⵣⴰⵢⵔⵉⴽⵡⴰⴷⵓⵔⵉⵙⵜⵓⵏⵢⴰⵎⵉⵚⵕⵉⵔⵉⵜⵉⵔⵢⴰⵙⴱⴰⵏⵢⴰⵉⵜⵢⵓⴱⵢⴰⴼⵉⵍⵍⴰⵏⴷⴰⴼⵉⴷⵊ" +
+ "ⵉⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰⴼⵔⴰⵏⵙⴰⴳⴰⴱⵓⵏⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏⵖⵔⵏⴰⵟⴰⵊⵓⵔⵊⵢⴰⴳⵡ" +
+ "ⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵖⴰⵏⴰⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇⴳⵔⵉⵍⴰⵏⴷⴳⴰⵎⴱⵢⴰⵖⵉⵏⵢⴰⴳⵡⴰⴷⴰⵍⵓⴱⵖⵉⵏⵢⴰ ⵏ " +
+ "ⵉⴽⵡⴰⴷⵓⵔⵍⵢⵓⵏⴰⵏⴳⵡⴰⵜⵉⵎⴰⵍⴰⴳⵡⴰⵎⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡⴳⵡⵉⵢⴰⵏⴰⵀⵓⵏⴷⵓⵔⴰⵙⴽⵔⵡⴰⵜⵢⴰⵀⴰⵢⵜⵉⵀⵏ" +
+ "ⵖⴰⵔⵢⴰⴰⵏⴷⵓⵏⵉⵙⵢⴰⵉⵔⵍⴰⵏⴷⴰⵉⵙⵔⴰⵢⵉⵍⵍⵀⵉⵏⴷⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉⵍ" +
+ "ⵄⵉⵔⴰⵇⵉⵔⴰⵏⵉⵙⵍⴰⵏⴷⵉⵟⴰⵍⵢⴰⵊⴰⵎⴰⵢⴽⴰⵍⵓⵔⴷⵓⵏⵍⵢⴰⴱⴰⵏⴽⵉⵏⵢⴰⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰⵏⴽⴰⵎⴱⵓⴷⵢⴰⴽⵉ" +
+ "ⵔⵉⴱⴰⵜⵉⵇⵓⵎⵓⵔⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵍⴽⵡⵉⵜⵜⵉⴳⵣⵉⵔⵉⵏ" +
+ " ⵏ ⴽⴰⵢⵎⴰⵏⴽⴰⵣⴰⵅⵙⵜⴰⵏⵍⴰⵡⵙⵍⵓⴱⵏⴰⵏⵙⴰⵏⵜⵍⵓⵙⵉⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏⵙⵔⵉⵍⴰⵏⴽⴰⵍⵉⴱⵉⵔⵢⴰⵍⵉⵚⵓⵟⵓⵍ" +
+ "ⵉⵜⵡⴰⵏⵢⴰⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳⵍⴰⵜⴼⵢⴰⵍⵉⴱⵢⴰⵍⵎⵖⵔⵉⴱⵎⵓⵏⴰⴽⵓⵎⵓⵍⴷⵓⴼⵢⴰⵎⵓⵏⵜⵉⵏⵉⴳⵔⵓⵎⴰⴷⴰⵖⴰⵛⵇ" +
+ "ⴰⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍⵎⴰⵙⵉⴷⵓⵏⵢⴰⵎⴰⵍⵉⵎⵢⴰⵏⵎⴰⵔⵎⵏⵖⵓⵍⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢⴰⵏ ⵏ " +
+ "ⵉⵥⵥⵍⵎⴹⵎⴰⵔⵜⵉⵏⵉⴽⵎⵓⵕⵉⵟⴰⵏⵢⴰⵎⵓⵏⵙⵉⵔⴰⵜⵎⴰⵍⵟⴰⵎⵓⵔⵉⵙⵎⴰⵍⴷⵉⴼⵎⴰⵍⴰⵡⵉⵎⵉⴽⵙⵉⴽⵎⴰⵍⵉⵣⵢⴰ" +
+ "ⵎⵓⵣⵏⴱⵉⵇⵏⴰⵎⵉⴱⵢⴰⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⵏⵏⵉⵊⵉⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽⵏⵉⵊⵉⵔⵢⴰⵏⵉⴽ" +
+ "ⴰⵔⴰⴳⵡⴰⵀⵓⵍⴰⵏⴷⴰⵏⵏⵔⵡⵉⵊⵏⵉⴱⴰⵍⵏⴰⵡⵔⵓⵏⵉⵡⵉⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰⵄⵓⵎⴰⵏⴱⴰⵏⴰⵎⴰⴱⵉⵔⵓⴱⵓⵍⵉⵏⵉⵣⵢ" +
+ "ⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⴼⵉⵍⵉⴱⴱⵉⵏⴱⴰⴽⵉⵙⵜⴰⵏⴱⵓⵍⵓⵏⵢⴰⵙⴰⵏⴱⵢⵉⵔ ⴷ ⵎ" +
+ "ⵉⴽⵍⵓⵏⴱⵉⵜⴽⴰⵢⵔⵏⴱⵓⵔⵜⵓ ⵔⵉⴽⵓⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰⴱⵕⵟⵇⵉⵣⴱⴰⵍⴰⵡⴱⴰⵔⴰⴳⵡⴰⵢⵇⴰⵜ" +
+ "ⴰⵔⵔⵉⵢⵓⵏⵢⵓⵏⵔⵓⵎⴰⵏⵢⴰⵙⵉⵔⴱⵢⴰⵔⵓⵙⵢⴰⵔⵡⴰⵏⴷⴰⵙⵙⴰⵄⵓⴷⵉⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏⵙⵙⵉⵛⵉ" +
+ "ⵍⵙⵙⵓⴷⴰⵏⵙⵙⵡⵉⴷⵙⵏⵖⴰⴼⵓⵔⴰⵙⴰⵏⵜⵉⵍⵉⵏⵙⵍⵓⴼⵉⵏⵢⴰⵙⵍⵓⴼⴰⴽⵢⴰⵙⵙⵉⵔⴰⵍⵢⵓⵏⵙⴰⵏⵎⴰⵔⵉⵏⵓⵙⵙⵉⵏ" +
+ "ⵉⴳⴰⵍⵚⵚⵓⵎⴰⵍⵙⵓⵔⵉⵏⴰⵎⵙⵙⵓⴷⴰⵏ ⵏ ⵉⴼⴼⵓⵙⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱⵙⴰⵍⴼⴰⴷⵓⵔⵙⵓⵔⵢⴰⵙⵡⴰⵣⵉ" +
+ "ⵍⴰⵏⴷⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽⵜⵛⴰⴷⵟⵓⴳⵓⵟⴰⵢⵍⴰⵏⴷⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏⵟⵓⴽⵍⴰⵡⵜⵉⵎⵓⵔ" +
+ " ⵏ ⵍⵇⴱⵍⵜⵜⵓⵔⴽⵎⴰⵏⵙⵜⴰⵏⵜⵓⵏⵙⵟⵓⵏⴳⴰⵜⵓⵔⴽⵢⴰⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓⵜⵓⴼⴰⵍⵓⵟⴰⵢⵡⴰⵏⵟⴰⵏⵥⴰ" +
+ "ⵏⵢⴰⵓⴽⵔⴰⵏⵢⴰⵓⵖⴰⵏⴷⴰⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏⵓⵔⵓⴳⵡⴰⵢⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏⴰⵡⴰⵏⴽ ⵏ ⴼⴰ" +
+ "ⵜⵉⴽⴰⵏⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏⴼⵉⵏⵣⵡⵉⵍⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣⵜⵉⴳⵣⵉⵔⵉⵏ " +
+ "ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏⴼⵉⵜⵏⴰⵎⴼⴰⵏⵡⴰⵟⵓⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰⵙⴰⵎⵡⴰⵢⴰⵎⴰⵏⵎⴰⵢⵓⵟⴰⴼ" +
+ "ⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵣⴰⵎⴱⵢⴰⵣⵉⵎⴱⴰⴱⵡⵉ",
+ []uint16{ // 260 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0012, 0x0027, 0x0045, 0x006e, 0x0080, 0x0095,
+ 0x00aa, 0x00aa, 0x00bc, 0x00bc, 0x00d4, 0x0105, 0x0114, 0x012c,
+ 0x013b, 0x013b, 0x0156, 0x017c, 0x018e, 0x01a9, 0x01bb, 0x01dd,
+ 0x01f2, 0x0204, 0x0219, 0x0228, 0x0228, 0x023a, 0x0249, 0x025e,
+ 0x025e, 0x0270, 0x0285, 0x0297, 0x0297, 0x02af, 0x02ca, 0x02d9,
+ 0x02eb, 0x02eb, 0x033f, 0x0390, 0x039f, 0x03b1, 0x03cd, 0x03f3,
+ 0x0402, 0x0417, 0x0429, 0x0441, 0x0441, 0x045d, 0x0469, 0x049e,
+ 0x049e, 0x049e, 0x04b0, 0x04e4, 0x04f9, 0x04f9, 0x050e, 0x0523,
+ // Entry 40 - 7F
+ 0x0538, 0x0572, 0x0581, 0x0581, 0x0596, 0x05ab, 0x05b7, 0x05b7,
+ 0x05cf, 0x05e1, 0x05f6, 0x05f6, 0x060e, 0x061d, 0x064c, 0x066a,
+ 0x066a, 0x067c, 0x068b, 0x06b0, 0x06c2, 0x06d4, 0x0705, 0x0705,
+ 0x0711, 0x0734, 0x0749, 0x075b, 0x076a, 0x0782, 0x07ab, 0x07bd,
+ 0x07bd, 0x07d8, 0x07e4, 0x0803, 0x0818, 0x0818, 0x0818, 0x0830,
+ 0x0845, 0x0854, 0x0869, 0x0869, 0x0884, 0x0899, 0x08ae, 0x08ae,
+ 0x08bd, 0x0915, 0x0927, 0x0933, 0x0945, 0x0957, 0x0957, 0x096c,
+ 0x097e, 0x0990, 0x099f, 0x09c0, 0x09d8, 0x09f0, 0x09ff, 0x0a28,
+ // Entry 80 - BF
+ 0x0a4e, 0x0a71, 0x0a80, 0x0aaf, 0x0aca, 0x0ad6, 0x0ae8, 0x0b00,
+ 0x0b1e, 0x0b36, 0x0b4b, 0x0b5d, 0x0b75, 0x0b93, 0x0ba5, 0x0bb4,
+ 0x0bc6, 0x0bd8, 0x0bf0, 0x0c0e, 0x0c0e, 0x0c2c, 0x0c5b, 0x0c76,
+ 0x0c82, 0x0c97, 0x0cac, 0x0cac, 0x0cf2, 0x0d0a, 0x0d25, 0x0d3d,
+ 0x0d4c, 0x0d5b, 0x0d6d, 0x0d7f, 0x0d91, 0x0da6, 0x0dbb, 0x0dd0,
+ 0x0e04, 0x0e16, 0x0e48, 0x0e5d, 0x0e78, 0x0e8d, 0x0e9f, 0x0eae,
+ 0x0ebd, 0x0ec9, 0x0ee7, 0x0ef6, 0x0f08, 0x0f14, 0x0f4e, 0x0f86,
+ 0x0f9e, 0x0fb6, 0x0fcb, 0x0ff7, 0x100f, 0x102b, 0x1062, 0x1074,
+ // Entry C0 - FF
+ 0x1083, 0x109b, 0x10aa, 0x10aa, 0x10c2, 0x10d7, 0x10e9, 0x10f8,
+ 0x110a, 0x1125, 0x1157, 0x1169, 0x117b, 0x118a, 0x11a2, 0x11ba,
+ 0x11d2, 0x11d2, 0x11ea, 0x1205, 0x1220, 0x1238, 0x124a, 0x125f,
+ 0x1285, 0x12b4, 0x12cc, 0x12cc, 0x12db, 0x12f9, 0x12f9, 0x1339,
+ 0x1345, 0x1345, 0x1351, 0x1366, 0x1387, 0x1399, 0x13bc, 0x13dd,
+ 0x13e9, 0x13f8, 0x140a, 0x1439, 0x144b, 0x145d, 0x1475, 0x148a,
+ 0x149c, 0x149c, 0x14db, 0x14f0, 0x150e, 0x1537, 0x156f, 0x1587,
+ 0x15c9, 0x161e, 0x1630, 0x1645, 0x166b, 0x167a, 0x167a, 0x1689,
+ // Entry 100 - 13F
+ 0x1698, 0x16c1, 0x16d3, 0x16eb,
+ },
+ },
+ { // zh
+ zhRegionStr,
+ zhRegionIdx,
+ },
+ { // zh-Hant
+ zhHantRegionStr,
+ zhHantRegionIdx,
+ },
+ { // zh-Hant-HK
+ "阿拉伯聯合酋長國安提瓜和巴布達阿魯巴阿塞拜疆波斯尼亞和黑塞哥維那巴巴多斯布基納法索布隆迪貝寧聖巴泰勒米鮑威特島博茨瓦納伯利茲可可斯群島剛果 - " +
+ "金夏沙剛果 - 布拉薩科特迪瓦克里珀頓島哥斯達黎加佛得角塞浦路斯吉布提多米尼加共和國厄瓜多爾厄立特里亞埃塞俄比亞加蓬格林納達格魯吉亞" +
+ "加納岡比亞南佐治亞島與南桑威奇群島危地馬拉幾內亞比紹圭亞那洪都拉斯克羅地亞馬恩島英屬印度洋領土意大利肯雅科摩羅聖基茨和尼維斯老撾聖盧" +
+ "西亞列支敦士登利比里亞萊索托黑山馬里毛里塔尼亞蒙特塞拉特馬耳他毛里裘斯馬爾代夫馬拉維莫桑比克尼日爾尼日利亞瑙魯阿曼法屬波利尼西亞巴布" +
+ "亞新幾內亞皮特凱恩島卡塔爾盧旺達沙特阿拉伯所羅門群島塞舌爾斯洛文尼亞斯瓦爾巴特群島及揚馬延島塞拉利昂索馬里蘇里南聖多美和普林西比斯威" +
+ "士蘭特克斯和凱科斯群島乍得法屬南部地區多哥共和國湯加千里達和多巴哥圖瓦盧坦桑尼亞聖文森特和格林納丁斯英屬維爾京群島美屬維爾京群島瓦努" +
+ "阿圖也門贊比亞津巴布韋中美洲加勒比波利尼西亞",
+ []uint16{ // 283 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0018, 0x0018, 0x002d, 0x002d, 0x002d,
+ 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d,
+ 0x0036, 0x0036, 0x0042, 0x0060, 0x006c, 0x006c, 0x006c, 0x007b,
+ 0x007b, 0x007b, 0x0084, 0x008a, 0x0099, 0x0099, 0x0099, 0x0099,
+ 0x0099, 0x0099, 0x0099, 0x0099, 0x00a5, 0x00b1, 0x00b1, 0x00ba,
+ 0x00ba, 0x00c9, 0x00db, 0x00db, 0x00ed, 0x00ed, 0x00f9, 0x00f9,
+ 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0108, 0x0117, 0x0117, 0x0120,
+ 0x0120, 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x0135, 0x0135,
+ // Entry 40 - 7F
+ 0x0135, 0x014a, 0x014a, 0x014a, 0x0156, 0x0156, 0x0156, 0x0156,
+ 0x0165, 0x0165, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174,
+ 0x0174, 0x0174, 0x017a, 0x017a, 0x0186, 0x0192, 0x0192, 0x0192,
+ 0x0198, 0x0198, 0x0198, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1,
+ 0x01c5, 0x01d1, 0x01d1, 0x01e0, 0x01e9, 0x01e9, 0x01e9, 0x01f5,
+ 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x0201, 0x020a,
+ 0x020a, 0x021f, 0x021f, 0x021f, 0x021f, 0x0228, 0x0228, 0x0228,
+ 0x0228, 0x0228, 0x022e, 0x022e, 0x022e, 0x022e, 0x0237, 0x024c,
+ // Entry 80 - BF
+ 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, 0x0252, 0x0252, 0x025e,
+ 0x026d, 0x026d, 0x0279, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282,
+ 0x0282, 0x0282, 0x0282, 0x0288, 0x0288, 0x0288, 0x0288, 0x0288,
+ 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x029d, 0x02ac,
+ 0x02b5, 0x02c1, 0x02cd, 0x02d6, 0x02d6, 0x02d6, 0x02e2, 0x02e2,
+ 0x02e2, 0x02eb, 0x02eb, 0x02f7, 0x02f7, 0x02f7, 0x02f7, 0x02f7,
+ 0x02fd, 0x02fd, 0x02fd, 0x0303, 0x0303, 0x0303, 0x0318, 0x032d,
+ 0x032d, 0x032d, 0x032d, 0x032d, 0x033c, 0x033c, 0x033c, 0x033c,
+ // Entry C0 - FF
+ 0x033c, 0x033c, 0x0345, 0x0345, 0x0345, 0x0345, 0x0345, 0x0345,
+ 0x034e, 0x035d, 0x036c, 0x0375, 0x0375, 0x0375, 0x0375, 0x0375,
+ 0x0384, 0x03a8, 0x03a8, 0x03b4, 0x03b4, 0x03b4, 0x03bd, 0x03c6,
+ 0x03c6, 0x03de, 0x03de, 0x03de, 0x03de, 0x03ea, 0x03ea, 0x0405,
+ 0x040b, 0x041d, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c,
+ 0x042c, 0x0432, 0x0432, 0x0447, 0x0450, 0x0450, 0x045c, 0x045c,
+ 0x045c, 0x045c, 0x045c, 0x045c, 0x045c, 0x045c, 0x047a, 0x047a,
+ 0x048f, 0x04a4, 0x04a4, 0x04b0, 0x04b0, 0x04b0, 0x04b0, 0x04b6,
+ // Entry 100 - 13F
+ 0x04b6, 0x04b6, 0x04bf, 0x04cb, 0x04cb, 0x04cb, 0x04cb, 0x04cb,
+ 0x04cb, 0x04cb, 0x04cb, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4,
+ 0x04d4, 0x04d4, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd, 0x04dd,
+ 0x04dd, 0x04dd, 0x04ec,
+ },
+ },
+ { // zu
+ zuRegionStr,
+ zuRegionIdx,
+ },
+}
+
+var afRegionStr string = "" + // Size: 3021 bytes
+ "AscensioneilandAndorraVerenigde Arabiese EmirateAfganistanAntigua en Bar" +
+ "budaAnguillaAlbaniëArmeniëNederlands-AntilleAngolaAntarktikaArgentiniëAm" +
+ "erikaans-SamoaOostenrykAustraliëArubaÅlandeilandeAzerbeidjanBosnië en He" +
+ "rzegowinaBarbadosBangladesjBelgiëBurkina FasoBulgaryeBahreinBurundiBenin" +
+ "Sint BarthélemyBermudaBroeneiBoliviëKaribiese NederlandBrasiliëBahamasBh" +
+ "oetanBouvet-eilandBotswanaBelarusBelizeKanadaKokos-eilandeDemokratiese R" +
+ "epubliek van die KongoSentraal-Afrikaanse RepubliekKongo - BrazzavilleSw" +
+ "itserlandIvoorkusCookeilandeChiliKameroenSjinaColombiëClippertoneilandCo" +
+ "sta RicaKubaKaap VerdeCuraçaoKerseilandSiprusTjeggiese RepubliekDuitslan" +
+ "dDiego GarciaDjiboetiDenemarkeDominicaDominikaanse RepubliekAlgeriëCeuta" +
+ " en MelillaEcuadorEstlandEgipteWes-SaharaEritreaSpanjeEthiopiëEuropese U" +
+ "nieFinlandFidjiFalklandeilandeMikronesiëFaroëreilandeFrankrykGaboenVeren" +
+ "igde KoninkrykGrenadaGeorgiëFrans-GuyanaGuernseyGhanaGibraltarGroenlandG" +
+ "ambiëGuineeGuadeloupeEkwatoriaal-GuineeGriekelandSuid-Georgië en die Sui" +
+ "delike SandwicheilandeGuatemalaGuamGuinee-BissauGuyanaHongkong SAS Sjina" +
+ "Heard- en McDonaldeilandeHondurasKroasiëHaïtiHongaryeKanariese EilandeIn" +
+ "donesiëIerlandIsraelEiland ManIndiëBrits-Indiese OseaangebiedIrakIranYsl" +
+ "andItaliëJerseyJamaikaJordaniëJapanKeniaKirgisiëKambodjaKiribatiComoreSt" +
+ ". Kitts en NevisNoord-KoreaSuid-KoreaKoeweitKaaimanseilandeKazakstanLaos" +
+ "LibanonSt. LuciaLiechtensteinSri LankaLiberiëLesothoLitaueLuxemburgLetla" +
+ "ndLibiëMarokkoMonacoMoldowaMontenegroSt. MartinMadagaskarMarshalleilande" +
+ "MacedoniëMaliMianmar (Birma)MongoliëMacau SAS SjinaNoord-Mariane-eilande" +
+ "MartiniqueMauritaniëMontserratMaltaMauritiusMalediveMalawiMeksikoMaleisi" +
+ "ëMosambiekNamibiëNieu-KaledoniëNigerNorfolkeilandNigeriëNicaraguaNederl" +
+ "andNoorweëNepalNauruNiueNieu-SeelandOmanPanamaPeruFrans-PolinesiëPapoea-" +
+ "Nieu-GuineeFilippynePakistanPoleSt. Pierre en MiquelonPitcairneilandePue" +
+ "rto RicoPalestynse gebiedePortugalPalauParaguayKatarOmliggende OseaniëRé" +
+ "unionRoemeniëSerwiëRuslandRwandaSaoedi-ArabiëSalomonseilandeSeychelleSoe" +
+ "danSwedeSingapoerSint HelenaSloweniëSvalbard en Jan MayenSlowakyeSierra " +
+ "LeoneSan MarinoSenegalSomaliëSurinameSuid-SoedanSão Tomé en PríncipeEl S" +
+ "alvadorSint MaartenSiriëSwazilandTristan da CunhaTurks- en Caicoseilande" +
+ "TsjadFranse Suidelike GebiedeTogoThailandTadjikistanTokelauOos-TimorTurk" +
+ "meniëTunisiëTongaTurkyeTrinidad en TobagoTuvaluTaiwanTanzaniëOekraïneUga" +
+ "ndaVS klein omliggende eilandeVerenigde State van AmerikaUruguayOesbekis" +
+ "tanVatikaanstadSt. Vincent en die GrenadineVenezuelaBritse Maagde-eiland" +
+ "eAmerikaanse Maagde-eilandeViëtnamVanuatuWallis en FutunaSamoaKosovoJeme" +
+ "nMayotteSuid-AfrikaZambiëZimbabweOnbekende gebiedWêreldAfrikaNoord-Ameri" +
+ "kaSuid-AmerikaOseaniëWes-AfrikaSentraal-AmerikaOos-AfrikaNoord-AfrikaMid" +
+ "de-AfrikaSuider-AfrikaAmerikasNoordelike AmerikaKaribiesOos-AsiëSuid-Asi" +
+ "ëSuidoos-AsiëSuid-EuropaAustralasiëMelanesiëMikronesiese streekPolinesi" +
+ "ëAsiëSentraal-AsiëWes-AsiëEuropaOos-EuropaNoord-EuropaWes-EuropaLatyns-" +
+ "Amerika"
+
+var afRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0016, 0x0030, 0x003a, 0x004c, 0x0054, 0x005c,
+ 0x0064, 0x0076, 0x007c, 0x0086, 0x0091, 0x00a1, 0x00aa, 0x00b4,
+ 0x00b9, 0x00c6, 0x00d1, 0x00e7, 0x00ef, 0x00f9, 0x0100, 0x010c,
+ 0x0114, 0x011b, 0x0122, 0x0127, 0x0137, 0x013e, 0x0145, 0x014d,
+ 0x0160, 0x0169, 0x0170, 0x0177, 0x0184, 0x018c, 0x0193, 0x0199,
+ 0x019f, 0x01ac, 0x01d0, 0x01ed, 0x0200, 0x020b, 0x0213, 0x021e,
+ 0x0223, 0x022b, 0x0230, 0x0239, 0x0249, 0x0253, 0x0257, 0x0261,
+ 0x0269, 0x0273, 0x0279, 0x028c, 0x0295, 0x02a1, 0x02a9, 0x02b2,
+ // Entry 40 - 7F
+ 0x02ba, 0x02d0, 0x02d8, 0x02e8, 0x02ef, 0x02f6, 0x02fc, 0x0306,
+ 0x030d, 0x0313, 0x031c, 0x0329, 0x0330, 0x0335, 0x0344, 0x034f,
+ 0x035d, 0x0365, 0x036b, 0x037e, 0x0385, 0x038d, 0x0399, 0x03a1,
+ 0x03a6, 0x03af, 0x03b8, 0x03bf, 0x03c5, 0x03cf, 0x03e1, 0x03eb,
+ 0x0419, 0x0422, 0x0426, 0x0433, 0x0439, 0x044b, 0x0464, 0x046c,
+ 0x0474, 0x047a, 0x0482, 0x0493, 0x049d, 0x04a4, 0x04aa, 0x04b4,
+ 0x04ba, 0x04d4, 0x04d8, 0x04dc, 0x04e2, 0x04e9, 0x04ef, 0x04f6,
+ 0x04ff, 0x0504, 0x0509, 0x0512, 0x051a, 0x0522, 0x0528, 0x053a,
+ // Entry 80 - BF
+ 0x0545, 0x054f, 0x0556, 0x0565, 0x056e, 0x0572, 0x0579, 0x0582,
+ 0x058f, 0x0598, 0x05a0, 0x05a7, 0x05ad, 0x05b6, 0x05bd, 0x05c3,
+ 0x05ca, 0x05d0, 0x05d7, 0x05e1, 0x05eb, 0x05f5, 0x0604, 0x060e,
+ 0x0612, 0x0621, 0x062a, 0x0639, 0x064e, 0x0658, 0x0663, 0x066d,
+ 0x0672, 0x067b, 0x0683, 0x0689, 0x0690, 0x0699, 0x06a2, 0x06aa,
+ 0x06b9, 0x06be, 0x06cb, 0x06d3, 0x06dc, 0x06e5, 0x06ed, 0x06f2,
+ 0x06f7, 0x06fb, 0x0707, 0x070b, 0x0711, 0x0715, 0x0725, 0x0737,
+ 0x0740, 0x0748, 0x074c, 0x0762, 0x0771, 0x077c, 0x078e, 0x0796,
+ // Entry C0 - FF
+ 0x079b, 0x07a3, 0x07a8, 0x07bb, 0x07c3, 0x07cc, 0x07d3, 0x07da,
+ 0x07e0, 0x07ee, 0x07fd, 0x0806, 0x080c, 0x0811, 0x081a, 0x0825,
+ 0x082e, 0x0843, 0x084b, 0x0857, 0x0861, 0x0868, 0x0870, 0x0878,
+ 0x0883, 0x089a, 0x08a5, 0x08b1, 0x08b7, 0x08c0, 0x08d0, 0x08e7,
+ 0x08ec, 0x0904, 0x0908, 0x0910, 0x091b, 0x0922, 0x092b, 0x0935,
+ 0x093d, 0x0942, 0x0948, 0x095a, 0x0960, 0x0966, 0x096f, 0x0978,
+ 0x097e, 0x0999, 0x09b4, 0x09bb, 0x09c6, 0x09d2, 0x09ee, 0x09f7,
+ 0x0a0c, 0x0a26, 0x0a2e, 0x0a35, 0x0a45, 0x0a4a, 0x0a50, 0x0a55,
+ // Entry 100 - 13F
+ 0x0a5c, 0x0a67, 0x0a6e, 0x0a76, 0x0a86, 0x0a8d, 0x0a93, 0x0aa0,
+ 0x0aac, 0x0ab4, 0x0abe, 0x0ace, 0x0ad8, 0x0ae4, 0x0af0, 0x0afd,
+ 0x0b05, 0x0b17, 0x0b1f, 0x0b28, 0x0b32, 0x0b3f, 0x0b4a, 0x0b56,
+ 0x0b60, 0x0b73, 0x0b7d, 0x0b82, 0x0b90, 0x0b99, 0x0b9f, 0x0ba9,
+ 0x0bb5, 0x0bbf, 0x0bcd,
+} // Size: 606 bytes
+
+var amRegionStr string = "" + // Size: 5336 bytes
+ "አሴንሽን ደሴትአንዶራየተባበሩት አረብ ኤምሬትስአፍጋኒስታንአንቲጓ እና ባሩዳአንጉኢላአልባኒያአርሜኒያኔዘርላንድስ አን" +
+ "ቲልስአንጐላአንታርክቲካአርጀንቲናየአሜሪካ ሳሞአኦስትሪያአውስትራልያአሩባየአላንድ ደሴቶችአዘርባጃንቦስኒያ እና ሄር" +
+ "ዞጎቪኒያባርቤዶስባንግላዲሽቤልጄምቡርኪና ፋሶቡልጌሪያባህሬንብሩንዲቤኒንቅዱስ በርቴሎሜቤርሙዳብሩኒቦሊቪያየካሪቢያን " +
+ "ኔዘርላንድስብራዚልባሃማስቡህታንቡቬት ደሴትቦትስዋናቤላሩስቤሊዘካናዳኮኮስ(ኬሊንግ) ደሴቶችኮንጎ-ኪንሻሳየመካከለኛው" +
+ " አፍሪካ ሪፐብሊክኮንጎ ብራዛቪልስዊዘርላንድኮት ዲቯርኩክ ደሴቶችቺሊካሜሩንቻይናኮሎምቢያክሊፐርቶን ደሴትኮስታ ሪካኩባ" +
+ "ኬፕ ቬርዴኩራሳዎየገና ደሴትሳይፕረስቼክ ሪፑብሊክጀርመንዲዬጎ ጋርሺያጂቡቲዴንማርክዶሚኒካዶሚኒክ ሪፑብሊክአልጄሪያሴ" +
+ "ኡታና ሜሊላኢኳዶርኤስቶኒያግብጽምዕራባዊ ሳህራኤርትራስፔንኢትዮጵያየአውሮፓ ህብረትፊንላንድፊጂየፎክላንድ ደሴቶችሚክ" +
+ "ሮኔዢያየፋሮ ደሴቶችፈረንሳይጋቦንእንግሊዝግሬናዳጆርጂያየፈረንሳይ ጉዊአናጉርነሲጋናጂብራልተርግሪንላንድጋምቢያጊኒጉዋ" +
+ "ደሉፕኢኳቶሪያል ጊኒግሪክደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶችጉዋቲማላጉዋምጊኒ ቢሳኦጉያናሆንግ ኮንግ SAR" +
+ " ቻይናኽርድ ደሴቶችና ማክዶናልድ ደሴቶችሆንዱራስክሮኤሽያሀይቲሀንጋሪየካናሪ ደሴቶችኢንዶኔዢያአየርላንድእስራኤልአይል " +
+ "ኦፍ ማንህንድየብሪታኒያ ህንድ ውቂያኖስ ግዛትኢራቅኢራንአይስላንድጣሊያንጀርሲጃማይካጆርዳንጃፓንኬንያኪርጊስታንካምቦ" +
+ "ዲያኪሪባቲኮሞሮስቅዱስ ኪትስ እና ኔቪስሰሜን ኮሪያደቡብ ኮሪያክዌትካይማን ደሴቶችካዛኪስታንላኦስሊባኖስሴንት ሉቺያ" +
+ "ሊችተንስታይንሲሪላንካላይቤሪያሌሶቶሊቱዌኒያሉክሰምበርግላትቪያሊቢያሞሮኮሞናኮሞልዶቫሞንተኔግሮሴንት ማርቲንማዳጋስካር" +
+ "ማርሻል አይላንድመቄዶንያማሊማይናማር(በርማ)ሞንጎሊያማካኡ ልዩ የአስተዳደር ክልል ቻይናየሰሜናዊ ማሪያና ደሴቶችማ" +
+ "ርቲኒክሞሪቴኒያሞንትሴራትማልታሞሪሸስማልዲቭስማላዊሜክሲኮማሌዢያሞዛምቢክናሚቢያኒው ካሌዶኒያኒጀርኖርፎልክ ደሴትናይጄ" +
+ "ሪያኒካራጓኔዘርላንድኖርዌይኔፓልናኡሩኒኡይኒው ዚላንድኦማንፓናማፔሩየፈረንሳይ ፖሊኔዢያፓፑዋ ኒው ጊኒፊሊፒንስፓኪስታ" +
+ "ንፖላንድቅዱስ ፒዬር እና ሚኩኤሎንፒትካኢርን አይስላንድፖርታ ሪኮየፍልስጤም ግዛትፖርቱጋልፓላውፓራጓይኳታርአውትላይ" +
+ "ንግ ኦሽንያሪዩኒየንሮሜኒያሰርብያራሽያሩዋንዳሳውድአረቢያሰሎሞን ደሴትሲሼልስሱዳንስዊድንሲንጋፖርሴንት ሄለናስሎቬኒያ" +
+ "ስቫልባርድ እና ጃን ማየንስሎቫኪያሴራሊዮንሳን ማሪኖሴኔጋልሱማሌሱሪናምደቡብ ሱዳንሳኦ ቶሜ እና ፕሪንሲፔኤል ሳልቫ" +
+ "ዶርሲንት ማርተንሲሪያሱዋዚላንድትሪስታን ዲ ኩንሃየቱርኮችና የካኢኮስ ደሴቶችቻድየፈረንሳይ ደቡባዊ ግዛቶችቶጐታይላ" +
+ "ንድታጃኪስታንቶክላውምስራቅ ሌስትቱርክሜኒስታንቱኒዚያቶንጋቱርክትሪናዳድ እና ቶቤጎቱቫሉታይዋንታንዛኒያዩክሬንዩጋንዳ" +
+ "የዩ ኤስ ጠረፍ ላይ ያሉ ደሴቶችዩናይትድ ስቴትስኡራጓይኡዝቤኪስታንቫቲካን ከተማቅዱስ ቪንሴንት እና ግሬናዲንስቬን" +
+ "ዙዌላየእንግሊዝ ቨርጂን ደሴቶችየአሜሪካ ቨርጂን ደሴቶችቬትናምቫኑአቱዋሊስ እና ፉቱና ደሴቶችሳሞአኮሶቮየመንሜይኦቴ" +
+ "ደቡብ አፍሪካዛምቢያዚምቧቤያልታወቀ ክልልዓለምአፍሪካሰሜን አሜሪካደቡብ አሜሪካኦሽኒአምስራቃዊ አፍሪካመካከለኛው አ" +
+ "ሜሪካምዕራባዊ አፍሪካሰሜናዊ አፍሪካመካከለኛው አፍሪካደቡባዊ አፍሪካአሜሪካሰሜናዊ አሜሪካካሪቢያንምዕራባዊ እሲያደ" +
+ "ቡባዊ እሲያምዕራባዊ ደቡብ እሲያደቡባዊ አውሮፓአውስትራሊያሜላኔዥያየማይክሮኔዥያን ክልልፖሊኔዥያእሲያመካከለኛው እ" +
+ "ሲያምስራቃዊ እሲያአውሮፓምዕራባዊ አውሮፓሰሜናዊ አውሮፓምስራቃዊ አውሮፓላቲን አሜሪካ"
+
+var amRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0019, 0x0025, 0x0051, 0x0066, 0x0083, 0x0092, 0x00a1,
+ 0x00b0, 0x00d5, 0x00e1, 0x00f6, 0x0108, 0x0121, 0x0130, 0x0145,
+ 0x014e, 0x016a, 0x017c, 0x01a5, 0x01b4, 0x01c6, 0x01d2, 0x01e5,
+ 0x01f4, 0x0200, 0x020c, 0x0215, 0x022e, 0x023a, 0x0243, 0x024f,
+ 0x0277, 0x0283, 0x028f, 0x029b, 0x02ae, 0x02bd, 0x02c9, 0x02d2,
+ 0x02db, 0x02ff, 0x0315, 0x0347, 0x0360, 0x0375, 0x0385, 0x0398,
+ 0x039e, 0x03aa, 0x03b3, 0x03c2, 0x03de, 0x03ee, 0x03f4, 0x0404,
+ 0x0410, 0x0423, 0x0432, 0x0448, 0x0454, 0x046a, 0x0473, 0x0482,
+ // Entry 40 - 7F
+ 0x048e, 0x04aa, 0x04b9, 0x04cf, 0x04db, 0x04ea, 0x04f3, 0x050c,
+ 0x0518, 0x0521, 0x0530, 0x054c, 0x055b, 0x0561, 0x0580, 0x0592,
+ 0x05a8, 0x05b7, 0x05c0, 0x05cf, 0x05db, 0x05e7, 0x0606, 0x0612,
+ 0x0618, 0x062a, 0x063c, 0x0648, 0x064e, 0x065d, 0x0676, 0x067f,
+ 0x06c6, 0x06d5, 0x06de, 0x06ee, 0x06f7, 0x0718, 0x0751, 0x0760,
+ 0x076f, 0x0778, 0x0784, 0x079d, 0x07af, 0x07c1, 0x07d0, 0x07e7,
+ 0x07f0, 0x0826, 0x082f, 0x0838, 0x084a, 0x0856, 0x085f, 0x086b,
+ 0x0877, 0x0880, 0x0889, 0x089b, 0x08aa, 0x08b6, 0x08c2, 0x08e6,
+ // Entry 80 - BF
+ 0x08f9, 0x090c, 0x0915, 0x092e, 0x0940, 0x0949, 0x0955, 0x0968,
+ 0x0980, 0x098f, 0x099e, 0x09a7, 0x09b6, 0x09cb, 0x09d7, 0x09e0,
+ 0x09e9, 0x09f2, 0x09fe, 0x0a10, 0x0a26, 0x0a38, 0x0a54, 0x0a63,
+ 0x0a69, 0x0a83, 0x0a92, 0x0acc, 0x0af5, 0x0b04, 0x0b13, 0x0b25,
+ 0x0b2e, 0x0b3a, 0x0b49, 0x0b52, 0x0b5e, 0x0b6a, 0x0b79, 0x0b85,
+ 0x0b9b, 0x0ba4, 0x0bbd, 0x0bcc, 0x0bd8, 0x0bea, 0x0bf6, 0x0bff,
+ 0x0c08, 0x0c11, 0x0c24, 0x0c2d, 0x0c36, 0x0c3c, 0x0c5e, 0x0c75,
+ 0x0c84, 0x0c93, 0x0c9f, 0x0cc9, 0x0cee, 0x0cfe, 0x0d1a, 0x0d29,
+ // Entry C0 - FF
+ 0x0d32, 0x0d3e, 0x0d47, 0x0d69, 0x0d78, 0x0d84, 0x0d90, 0x0d99,
+ 0x0da5, 0x0dba, 0x0dd0, 0x0ddc, 0x0de5, 0x0df1, 0x0e00, 0x0e13,
+ 0x0e22, 0x0e4c, 0x0e5b, 0x0e6a, 0x0e7a, 0x0e86, 0x0e8f, 0x0e9b,
+ 0x0eae, 0x0ed2, 0x0ee8, 0x0efe, 0x0f07, 0x0f19, 0x0f36, 0x0f65,
+ 0x0f6b, 0x0f97, 0x0f9d, 0x0fac, 0x0fbe, 0x0fca, 0x0fe0, 0x0ff8,
+ 0x1004, 0x100d, 0x1016, 0x1036, 0x103f, 0x104b, 0x105a, 0x1066,
+ 0x1072, 0x10a4, 0x10c0, 0x10cc, 0x10e1, 0x10f7, 0x112a, 0x1139,
+ 0x1165, 0x118e, 0x119a, 0x11a6, 0x11cd, 0x11d6, 0x11df, 0x11e8,
+ // Entry 100 - 13F
+ 0x11f4, 0x120a, 0x1216, 0x1222, 0x123b, 0x1244, 0x1250, 0x1266,
+ 0x127c, 0x1288, 0x12a4, 0x12c3, 0x12df, 0x12f8, 0x1317, 0x1330,
+ 0x133c, 0x1355, 0x1364, 0x137d, 0x1393, 0x13b6, 0x13cf, 0x13e4,
+ 0x13f3, 0x1418, 0x1427, 0x1430, 0x144c, 0x1465, 0x1471, 0x148d,
+ 0x14a6, 0x14c2, 0x14d8,
+} // Size: 606 bytes
+
+var arRegionStr string = "" + // Size: 5380 bytes
+ "جزيرة أسينشيونأندوراالإمارات العربية المتحدةأفغانستانأنتيغوا وبربوداأنغو" +
+ "يلاألبانياأرمينياجزر الأنتيل الهولنديةأنغولاأنتاركتيكاالأرجنتينساموا ال" +
+ "أمريكيةالنمساأسترالياأروباجزر آلاندأذربيجانالبوسنة والهرسكبربادوسبنجلاد" +
+ "يشبلجيكابوركينا فاسوبلغارياالبحرينبورونديبنينسان بارتليميبرمودابرونايبو" +
+ "ليفياهولندا الكاريبيةالبرازيلالبهامابوتانجزيرة بوفيهبتسوانابيلاروسبليزك" +
+ "نداجزر كوكوس (كيلينغ)الكونغو - كينشاساجمهورية أفريقيا الوسطىالكونغو - ب" +
+ "رازافيلسويسراساحل العاججزر كوكتشيليالكاميرونالصينكولومبياجزيرة كليبيرتو" +
+ "نكوستاريكاكوباالرأس الأخضركوراساوجزيرة الكريسماسقبرصجمهورية التشيكألمان" +
+ "يادييغو غارسياجيبوتيالدانمركدومينيكاجمهورية الدومينيكالجزائرسيوتا وميلي" +
+ "لاالإكوادورإستونيامصرالصحراء الغربيةإريترياإسبانياإثيوبياالاتحاد الأورو" +
+ "بيفنلندافيجيجزر فوكلاندميكرونيزياجزر فاروفرنساالجابونالمملكة المتحدةغري" +
+ "ناداجورجياغويانا الفرنسيةغيرنزيغاناجبل طارقغرينلاندغامبياغينياغوادلوبغي" +
+ "نيا الإستوائيةاليونانجورجيا الجنوبية وجزر ساندويتش الجنوبيةغواتيمالاغوا" +
+ "مغينيا بيساوغياناهونغ كونغ الصينيةجزيرة هيرد وجزر ماكدونالدهندوراسكروات" +
+ "ياهايتيهنغارياجزر الكناريإندونيسياأيرلنداإسرائيلجزيرة مانالهندالإقليم ا" +
+ "لبريطاني في المحيط الهنديالعراقإيرانأيسلنداإيطالياجيرسيجامايكاالأردنالي" +
+ "ابانكينياقرغيزستانكمبودياكيريباتيجزر القمرسانت كيتس ونيفيسكوريا الشمالي" +
+ "ةكوريا الجنوبيةالكويتجزر الكايمنكازاخستانلاوسلبنانسانت لوسياليختنشتاينس" +
+ "ريلانكاليبيرياليسوتوليتوانيالوكسمبورغلاتفياليبياالمغربموناكومولدافياالج" +
+ "بل الأسودسانت مارتنمدغشقرجزر المارشالمقدونياماليميانمار -بورمامنغوليامك" +
+ "او الصينية (منطقة إدارية خاصة)جزر ماريانا الشماليةمارتينيكموريتانيامونت" +
+ "سراتمالطاموريشيوسجزر المالديفملاويالمكسيكماليزياموزمبيقناميبياكاليدونيا" +
+ " الجديدةالنيجرجزيرة نورفوكنيجيريانيكاراغواهولنداالنرويجنيبالناورونيوينيو" +
+ "زيلنداعُمانبنمابيروبولينيزيا الفرنسيةبابوا غينيا الجديدةالفلبينباكستانب" +
+ "ولنداسانت بيير وميكولونجزر بيتكيرنبورتوريكوالأراضي الفلسطينيةالبرتغالبا" +
+ "لاوباراغوايقطرأوقيانوسيا النائيةروينيونرومانياصربياروسياروانداالمملكة ا" +
+ "لعربية السعوديةجزر سليمانسيشلالسودانالسويدسنغافورةسانت هيلناسلوفينياسفا" +
+ "لبارد وجان مايانسلوفاكياسيراليونسان مارينوالسنغالالصومالسورينامجنوب الس" +
+ "ودانساو تومي وبرينسيبيالسلفادورسينت مارتنسورياسوازيلاندتريستان دي كونها" +
+ "جزر توركس وكايكوستشادالأقاليم الجنوبية الفرنسيةتوغوتايلاندطاجيكستانتوكي" +
+ "لوتيمور الشرقيةتركمانستانتونستونغاتركياترينيداد وتوباغوتوفالوتايوانتنزا" +
+ "نياأوكرانياأوغنداجزر الولايات المتحدة النائيةالولايات المتحدةأورغوايأوز" +
+ "بكستانالفاتيكانسانت فنسنت وغرنادينفنزويلاجزر فرجين البريطانيةجزر فرجين " +
+ "الأمريكيةفيتنامفانواتوجزر والس وفوتوناسامواكوسوفواليمنمايوتجنوب أفريقيا" +
+ "زامبيازيمبابويمنطقة غير معروفةالعالمأفريقياأمريكا الشماليةأمريكا الجنوب" +
+ "يةأوقيانوسياغرب أفريقياأمريكا الوسطىشرق أفريقياشمال أفريقياوسط أفريقياأ" +
+ "فريقيا الجنوبيةالأمريكتانشمال أمريكاالكاريبيشرق آسياجنوب آسياجنوب شرق آ" +
+ "سياجنوب أوروباأسترالاسياميلانيزياالجزر الميكرونيزيةبولينيزياآسياوسط آسي" +
+ "اغرب آسياأوروباشرق أوروباشمال أوروباغرب أوروباأمريكا اللاتينية"
+
+var arRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001b, 0x0027, 0x0055, 0x0067, 0x0084, 0x0092, 0x00a0,
+ 0x00ae, 0x00d6, 0x00e2, 0x00f6, 0x0108, 0x0125, 0x0131, 0x0141,
+ 0x014b, 0x015c, 0x016c, 0x0189, 0x0197, 0x01a7, 0x01b3, 0x01ca,
+ 0x01d8, 0x01e6, 0x01f4, 0x01fc, 0x0213, 0x021f, 0x022b, 0x0239,
+ 0x0258, 0x0268, 0x0276, 0x0280, 0x0295, 0x02a3, 0x02b1, 0x02b9,
+ 0x02c1, 0x02e1, 0x0300, 0x032a, 0x034b, 0x0357, 0x036a, 0x0377,
+ 0x0381, 0x0393, 0x039d, 0x03ad, 0x03ca, 0x03dc, 0x03e4, 0x03fb,
+ 0x0409, 0x0426, 0x042e, 0x0449, 0x0457, 0x046e, 0x047a, 0x048a,
+ // Entry 40 - 7F
+ 0x049a, 0x04bb, 0x04c9, 0x04e2, 0x04f4, 0x0502, 0x0508, 0x0525,
+ 0x0533, 0x0541, 0x054f, 0x056e, 0x057a, 0x0582, 0x0597, 0x05ab,
+ 0x05ba, 0x05c4, 0x05d2, 0x05ef, 0x05fd, 0x0609, 0x0626, 0x0632,
+ 0x063a, 0x0649, 0x0659, 0x0665, 0x066f, 0x067d, 0x069c, 0x06aa,
+ 0x06f2, 0x0704, 0x070c, 0x0721, 0x072b, 0x074b, 0x077a, 0x0788,
+ 0x0796, 0x07a0, 0x07ae, 0x07c3, 0x07d5, 0x07e3, 0x07f1, 0x0802,
+ 0x080c, 0x084c, 0x0858, 0x0862, 0x0870, 0x087e, 0x0888, 0x0896,
+ 0x08a2, 0x08b0, 0x08ba, 0x08cc, 0x08da, 0x08ea, 0x08fb, 0x0919,
+ // Entry 80 - BF
+ 0x0934, 0x094f, 0x095b, 0x0970, 0x0982, 0x098a, 0x0994, 0x09a7,
+ 0x09bb, 0x09cb, 0x09d9, 0x09e5, 0x09f5, 0x0a07, 0x0a13, 0x0a1d,
+ 0x0a29, 0x0a35, 0x0a45, 0x0a5c, 0x0a6f, 0x0a7b, 0x0a92, 0x0aa0,
+ 0x0aa8, 0x0ac2, 0x0ad0, 0x0b0a, 0x0b30, 0x0b40, 0x0b52, 0x0b62,
+ 0x0b6c, 0x0b7c, 0x0b93, 0x0b9d, 0x0bab, 0x0bb9, 0x0bc7, 0x0bd5,
+ 0x0bf6, 0x0c02, 0x0c19, 0x0c27, 0x0c39, 0x0c45, 0x0c53, 0x0c5d,
+ 0x0c67, 0x0c6f, 0x0c81, 0x0c8b, 0x0c93, 0x0c9b, 0x0cbe, 0x0ce2,
+ 0x0cf0, 0x0cfe, 0x0d0a, 0x0d2c, 0x0d41, 0x0d53, 0x0d76, 0x0d86,
+ // Entry C0 - FF
+ 0x0d90, 0x0da0, 0x0da6, 0x0dc9, 0x0dd7, 0x0de5, 0x0def, 0x0df9,
+ 0x0e05, 0x0e33, 0x0e46, 0x0e4e, 0x0e5c, 0x0e68, 0x0e78, 0x0e8b,
+ 0x0e9b, 0x0ebf, 0x0ecf, 0x0edf, 0x0ef2, 0x0f00, 0x0f0e, 0x0f1c,
+ 0x0f33, 0x0f55, 0x0f67, 0x0f7a, 0x0f84, 0x0f96, 0x0fb4, 0x0fd4,
+ 0x0fdc, 0x100e, 0x1016, 0x1024, 0x1036, 0x1042, 0x105b, 0x106f,
+ 0x1077, 0x1081, 0x108b, 0x10aa, 0x10b6, 0x10c2, 0x10d0, 0x10e0,
+ 0x10ec, 0x1121, 0x1140, 0x114e, 0x1160, 0x1172, 0x1196, 0x11a4,
+ 0x11ca, 0x11ee, 0x11fa, 0x1208, 0x1226, 0x1230, 0x123c, 0x1246,
+ // Entry 100 - 13F
+ 0x1250, 0x1267, 0x1273, 0x1283, 0x12a1, 0x12ad, 0x12bb, 0x12d8,
+ 0x12f5, 0x1309, 0x131e, 0x1337, 0x134c, 0x1363, 0x1378, 0x1397,
+ 0x13ab, 0x13c0, 0x13d0, 0x13df, 0x13f0, 0x1408, 0x141d, 0x1431,
+ 0x1443, 0x1466, 0x1478, 0x1480, 0x148f, 0x149e, 0x14aa, 0x14bd,
+ 0x14d2, 0x14e5, 0x1504,
+} // Size: 606 bytes
+
+var azRegionStr string = "" + // Size: 3197 bytes
+ "Yüksəliş AdasıAndorraBirləşmiş Ərəb ƏmirlikləriƏfqanıstanAntiqua və Barb" +
+ "udaAngilaAlbaniyaErmənistanHollandiya antilleriAnqolaAntarktikaArgentina" +
+ "Amerika SamoasıAvstriyaAvstraliyaArubaAland AdalarıAzərbaycanBosniya və " +
+ "HersoqovinaBarbadosBanqladeşBelçikaBurkina FasoBolqariyaBəhreynBurundiBe" +
+ "ninSan BartolomeyBermudaBruneyBoliviyaKarib NiderlandıBraziliyaBaham Ada" +
+ "larıButanBuve AdasıBotsvanaBelarusBelizKanadaKokos AdalarıKonqo - Kinşas" +
+ "aMərkəzi Afrika RespublikasıKonqo - BrazzavilİsveçrəFil Dişi SahiliKuk A" +
+ "dalarıÇiliKamerunÇinKolumbiyaKlipperton AdasıKosta RikaKubaKape VerdeKur" +
+ "asaoMilad AdasıKiprÇexiyaAlmaniyaDieqo QarsiyaCibutiDanimarkaDominikaDom" +
+ "inikan RespublikasıƏlcəzairSeuta və MelilyaEkvadorEstoniyaMisirQərbi Sah" +
+ "araEritreyaİspaniyaEfiopiyaAvropa BirliyiFinlandiyaFiciFolklend AdalarıM" +
+ "ikroneziyaFarer AdalarıFransaQabonBirləşmiş KrallıqQrenadaGürcüstanFrans" +
+ "ız QviyanasıGernseyQanaGibraltarQrenlandiyaQambiyaQvineyaQvadelupaEkvat" +
+ "orial QvineyaYunanıstanCənubi Corciya və Cənubi Sendviç AdalarıQvatemala" +
+ "QuamQvineya-BisauQviyanaHonq Konq Xüsusi İnzibati Ərazi ÇinHerd və Mak D" +
+ "onald AdalarıHondurasXorvatiyaHaitiMacarıstanKanar Adalarıİndoneziyaİrla" +
+ "ndiyaİsrailMen AdasıHindistanBritaniya Hind Okeanı Ərazisiİraqİranİsland" +
+ "iyaİtaliyaCersiYamaykaİordaniyaYaponiyaKeniyaQırğızıstanKambocaKiribatiK" +
+ "omor AdalarıSan Kits və NevisŞimali KoreyaCənubi KoreyaKüveytKayman Adal" +
+ "arıQazaxıstanLaosLivanSan LüsiyaLixtenşteynŞri LankaLiberiyaLesotoLitvaL" +
+ "üksemburqLatviyaLiviyaMərakeşMonakoMoldovaMonteneqroSan MartinMadaqaska" +
+ "rMarşal AdalarıMakedoniyaMaliMyanmaMonqoliyaMakao Xüsusi İnzibati Ərazi " +
+ "ÇinŞimali Mariana AdalarıMartinikMavritaniyaMonseratMaltaMavrikiMaldiv " +
+ "AdalarıMalaviMeksikaMalayziyaMozambikNamibiyaYeni KaledoniyaNigerNorfolk" +
+ " AdasıNigeriyaNikaraquaNiderlandNorveçNepalNauruNiueYeni ZelandiyaOmanPa" +
+ "namaPeruFransız PolineziyasıPapua Yeni QvineyaFilippinPakistanPolşaSan P" +
+ "ier və MikelonPitkern AdalarıPuerto RikoFələstin ƏraziləriPortuqalPalauP" +
+ "araqvayQatarUzaq OkeaniyaReunionRumıniyaSerbiyaRusiyaRuandaSəudiyyə Ərəb" +
+ "istanıSolomon AdalarıSeyşel AdalarıSudanİsveçSinqapurMüqəddəs YelenaSlov" +
+ "eniyaSvalbard və Yan MayenSlovakiyaSiera LeonSan MarinoSeneqalSomaliSuri" +
+ "namCənubi SudanSao Tome və PrinsipSalvadorSint MaartenSuriyaSvazilendTri" +
+ "stan da KunyaTurks və Kaikos AdalarıÇadFransa Cənub ƏraziləriToqoTayland" +
+ "TacikistanTokelauŞərqi TimorTürkmənistanTunisTonqaTürkiyaTrinidad və Tob" +
+ "aqoTuvaluTayvanTanzaniyaUkraynaUqandaBirləşmiş Ştatlar Uzaq AdalarAmerik" +
+ "a Birləşmiş ŞtatlarıUruqvayÖzbəkistanVatikanSan Vinsent və QrenadaVenesu" +
+ "elaBritaniya Vircin AdalarıABŞ Vircin AdalarıVyetnamVanuatuUolis və Futu" +
+ "naSamoaKosovoYəmənMayotCənub AfrikaZambiyaZimbabveNaməlum RegionDünyaAfr" +
+ "ikaŞimali AmerikaCənubi AmerikaOkeaniyaQərbi AfrikaMərkəzi AmerikaŞərqi " +
+ "AfrikaŞimali AfrikaMərkəzi AfrikaCənubi AfrikaAmerikalarŞimal AmerikasıK" +
+ "aribŞərqi AsiyaCənubi AsiyaCənub-Şərqi AsiyaCənubi AvropaAvstralaziyaMel" +
+ "aneziyaMikroneziya RegionuPolineziyaAsiyaMərkəzi AsiyaQərbi AsiyaAvropaŞ" +
+ "ərqi AvropaŞimali AvropaQərbi AvropaLatın Amerikası"
+
+var azRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0012, 0x0019, 0x003a, 0x0046, 0x0059, 0x005f, 0x0067,
+ 0x0072, 0x0086, 0x008c, 0x0096, 0x009f, 0x00af, 0x00b7, 0x00c1,
+ 0x00c6, 0x00d4, 0x00df, 0x00f6, 0x00fe, 0x0108, 0x0110, 0x011c,
+ 0x0125, 0x012d, 0x0134, 0x0139, 0x0147, 0x014e, 0x0154, 0x015c,
+ 0x016d, 0x0176, 0x0184, 0x0189, 0x0194, 0x019c, 0x01a3, 0x01a8,
+ 0x01ae, 0x01bc, 0x01cc, 0x01ea, 0x01fb, 0x0205, 0x0215, 0x0221,
+ 0x0226, 0x022d, 0x0231, 0x023a, 0x024b, 0x0255, 0x0259, 0x0263,
+ 0x026a, 0x0276, 0x027a, 0x0281, 0x0289, 0x0296, 0x029c, 0x02a5,
+ // Entry 40 - 7F
+ 0x02ad, 0x02c4, 0x02ce, 0x02df, 0x02e6, 0x02ee, 0x02f3, 0x0300,
+ 0x0308, 0x0311, 0x0319, 0x0327, 0x0331, 0x0335, 0x0346, 0x0351,
+ 0x035f, 0x0365, 0x036a, 0x037f, 0x0386, 0x0391, 0x03a4, 0x03ab,
+ 0x03af, 0x03b8, 0x03c3, 0x03ca, 0x03d1, 0x03da, 0x03ec, 0x03f7,
+ 0x0424, 0x042d, 0x0431, 0x043e, 0x0445, 0x046c, 0x0488, 0x0490,
+ 0x0499, 0x049e, 0x04a9, 0x04b7, 0x04c2, 0x04cc, 0x04d3, 0x04dd,
+ 0x04e6, 0x0505, 0x050a, 0x050f, 0x0519, 0x0521, 0x0526, 0x052d,
+ 0x0537, 0x053f, 0x0545, 0x0554, 0x055b, 0x0563, 0x0571, 0x0583,
+ // Entry 80 - BF
+ 0x0591, 0x059f, 0x05a6, 0x05b5, 0x05c0, 0x05c4, 0x05c9, 0x05d4,
+ 0x05e0, 0x05ea, 0x05f2, 0x05f8, 0x05fd, 0x0608, 0x060f, 0x0615,
+ 0x061e, 0x0624, 0x062b, 0x0635, 0x063f, 0x0649, 0x0659, 0x0663,
+ 0x0667, 0x066d, 0x0676, 0x0699, 0x06b1, 0x06b9, 0x06c4, 0x06cc,
+ 0x06d1, 0x06d8, 0x06e7, 0x06ed, 0x06f4, 0x06fd, 0x0705, 0x070d,
+ 0x071c, 0x0721, 0x072f, 0x0737, 0x0740, 0x0749, 0x0750, 0x0755,
+ 0x075a, 0x075e, 0x076c, 0x0770, 0x0776, 0x077a, 0x0790, 0x07a2,
+ 0x07aa, 0x07b2, 0x07b8, 0x07cc, 0x07dc, 0x07e7, 0x07fd, 0x0805,
+ // Entry C0 - FF
+ 0x080a, 0x0812, 0x0817, 0x0824, 0x082b, 0x0834, 0x083b, 0x0841,
+ 0x0847, 0x085f, 0x086f, 0x087f, 0x0884, 0x088b, 0x0893, 0x08a5,
+ 0x08ae, 0x08c4, 0x08cd, 0x08d7, 0x08e1, 0x08e8, 0x08ee, 0x08f5,
+ 0x0902, 0x0916, 0x091e, 0x092a, 0x0930, 0x0939, 0x0949, 0x0962,
+ 0x0966, 0x097f, 0x0983, 0x098a, 0x0994, 0x099b, 0x09a8, 0x09b6,
+ 0x09bb, 0x09c0, 0x09c8, 0x09db, 0x09e1, 0x09e7, 0x09f0, 0x09f7,
+ 0x09fd, 0x0a1e, 0x0a3d, 0x0a44, 0x0a50, 0x0a57, 0x0a6e, 0x0a77,
+ 0x0a90, 0x0aa4, 0x0aab, 0x0ab2, 0x0ac2, 0x0ac7, 0x0acd, 0x0ad4,
+ // Entry 100 - 13F
+ 0x0ad9, 0x0ae6, 0x0aed, 0x0af5, 0x0b04, 0x0b0a, 0x0b10, 0x0b1f,
+ 0x0b2e, 0x0b36, 0x0b43, 0x0b54, 0x0b62, 0x0b70, 0x0b80, 0x0b8e,
+ 0x0b98, 0x0ba9, 0x0bae, 0x0bbb, 0x0bc8, 0x0bdc, 0x0bea, 0x0bf6,
+ 0x0c00, 0x0c13, 0x0c1d, 0x0c22, 0x0c31, 0x0c3d, 0x0c43, 0x0c51,
+ 0x0c5f, 0x0c6c, 0x0c7d,
+} // Size: 606 bytes
+
+var bgRegionStr string = "" + // Size: 5899 bytes
+ "остров ВъзнесениеАндораОбединени арабски емирстваАфганистанАнтигуа и Бар" +
+ "будаАнгуилаАлбанияАрменияХоландски АнтилиАнголаАнтарктикаАржентинаАмери" +
+ "канска СамоаАвстрияАвстралияАрубаОландски островиАзербайджанБосна и Хер" +
+ "цеговинаБарбадосБангладешБелгияБуркина ФасоБългарияБахрейнБурундиБенинС" +
+ "ен БартелемиБермудаБруней ДаруссаламБоливияКарибска НидерландияБразилия" +
+ "БахамиБутаностров БувеБотсванаБеларусБелизКанадаКокосови острови (остро" +
+ "ви Кийлинг)Конго (Киншаса)Централноафриканска републикаКонго (Бразавил)" +
+ "ШвейцарияКот д’Ивоарострови КукЧилиКамерунКитайКолумбияостров Клипертон" +
+ "Коста РикаКубаКабо ВердеКюрасаоостров РождествоКипърЧешка републикаГерм" +
+ "анияДиего ГарсияДжибутиДанияДоминикаДоминиканска републикаАлжирСеута и " +
+ "МелияЕквадорЕстонияЕгипетЗападна СахараЕритреяИспанияЕтиопияЕвропейски " +
+ "съюзФинландияФиджиФолклендски островиМикронезияФарьорски островиФранция" +
+ "ГабонОбединеното кралствоГренадаГрузияФренска ГвианаГърнзиГанаГибралтар" +
+ "ГренландияГамбияГвинеяГваделупаЕкваториална ГвинеяГърцияЮжна Джорджия и" +
+ " Южни Сандвичеви островиГватемалаГуамГвинея-БисауГаянаХонконг, САР на Ки" +
+ "тайостров Хърд и острови МакдоналдХондурасХърватияХаитиУнгарияКанарски " +
+ "островиИндонезияИрландияИзраелостров МанИндияБританска територия в Инди" +
+ "йския океанИракИранИсландияИталияДжърсиЯмайкаЙорданияЯпонияКенияКиргизс" +
+ "танКамбоджаКирибатиКоморски островиСейнт Китс и НевисСеверна КореяЮжна " +
+ "КореяКувейтКайманови островиКазахстанЛаосЛиванСейнт ЛусияЛихтенщайнШри " +
+ "ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛибияМарокоМонакоМолдоваЧерна го" +
+ "раСен МартенМадагаскарМаршалови островиМакедонияМалиМианмар (Бирма)Монг" +
+ "олияМакао, САР на КитайСеверни Мариански островиМартиникаМавританияМонт" +
+ "сератМалтаМаврицийМалдивиМалавиМексикоМалайзияМозамбикНамибияНова Калед" +
+ "онияНигеростров НорфолкНигерияНикарагуаНидерландияНорвегияНепалНауруНиу" +
+ "еНова ЗеландияОманПанамаПеруФренска ПолинезияПапуа-Нова ГвинеяФилипиниП" +
+ "акистанПолшаСен Пиер и МикелонОстрови ПиткернПуерто РикоПалестински тер" +
+ "иторииПортугалияПалауПарагвайКатарОтдалечени острови на ОкеанияРеюнионР" +
+ "умънияСърбияРусияРуандаСаудитска АрабияСоломонови островиСейшелиСуданШв" +
+ "ецияСингапурСвета ЕленаСловенияСвалбард и Ян МайенСловакияСиера ЛеонеСа" +
+ "н МариноСенегалСомалияСуринамЮжен СуданСао Томе и ПринсипиСалвадорСинт " +
+ "МартенСирияСвазилендТристан да Куняострови Търкс и КайкосЧадФренски южн" +
+ "и територииТогоТайландТаджикистанТокелауИзточен ТиморТуркменистанТунисТ" +
+ "онгаТурцияТринидад и ТобагоТувалуТайванТанзанияУкрайнаУгандаОтдалечени " +
+ "острови на САЩСъединени щатиУругвайУзбекистанВатиканСейнт Винсънт и Гре" +
+ "надиниВенецуелаБритански Вирджински островиАмерикански Вирджински остро" +
+ "виВиетнамВануатуУолис и ФутунаСамоаКосовоЙеменМайотЮжна АфрикаЗамбияЗим" +
+ "бабвенепознат регионСвятАфрикаСеверноамерикански континентЮжна АмерикаО" +
+ "кеанияЗападна АфиркаЦентрална АмерикаИзточна АфрикаСеверна АфрикаЦентра" +
+ "лна АфрикаЮжноафрикански регионАмерикаСеверна АмерикаКарибски регионИзт" +
+ "очна АзияЮжна АзияЮгоизточна АзияЮжна ЕвропаАвстралазияМеланезияМикроне" +
+ "зийски регионПолинезияАзияЦентрална АзияЗападна АзияЕвропаИзточна Европ" +
+ "аСеверна ЕвропаЗападна ЕвропаЛатинска Америка"
+
+var bgRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0021, 0x002d, 0x005f, 0x0073, 0x0093, 0x00a1, 0x00af,
+ 0x00bd, 0x00dc, 0x00e8, 0x00fc, 0x010e, 0x012f, 0x013d, 0x014f,
+ 0x0159, 0x0178, 0x018e, 0x01b2, 0x01c2, 0x01d4, 0x01e0, 0x01f7,
+ 0x0207, 0x0215, 0x0223, 0x022d, 0x0246, 0x0254, 0x0275, 0x0283,
+ 0x02aa, 0x02ba, 0x02c6, 0x02d0, 0x02e5, 0x02f5, 0x0303, 0x030d,
+ 0x0319, 0x0358, 0x0373, 0x03ac, 0x03c9, 0x03db, 0x03f1, 0x0406,
+ 0x040e, 0x041c, 0x0426, 0x0436, 0x0455, 0x0468, 0x0470, 0x0483,
+ 0x0491, 0x04b0, 0x04ba, 0x04d7, 0x04e7, 0x04fe, 0x050c, 0x0516,
+ // Entry 40 - 7F
+ 0x0526, 0x0551, 0x055b, 0x0573, 0x0581, 0x058f, 0x059b, 0x05b6,
+ 0x05c4, 0x05d2, 0x05e0, 0x05fd, 0x060f, 0x0619, 0x063e, 0x0652,
+ 0x0673, 0x0681, 0x068b, 0x06b2, 0x06c0, 0x06cc, 0x06e7, 0x06f3,
+ 0x06fb, 0x070d, 0x0721, 0x072d, 0x0739, 0x074b, 0x0770, 0x077c,
+ 0x07c5, 0x07d7, 0x07df, 0x07f6, 0x0800, 0x0826, 0x0860, 0x0870,
+ 0x0880, 0x088a, 0x0898, 0x08b7, 0x08c9, 0x08d9, 0x08e5, 0x08f8,
+ 0x0902, 0x0948, 0x0950, 0x0958, 0x0968, 0x0974, 0x0980, 0x098c,
+ 0x099c, 0x09a8, 0x09b2, 0x09c6, 0x09d6, 0x09e6, 0x0a05, 0x0a26,
+ // Entry 80 - BF
+ 0x0a3f, 0x0a52, 0x0a5e, 0x0a7f, 0x0a91, 0x0a99, 0x0aa3, 0x0ab8,
+ 0x0acc, 0x0add, 0x0aeb, 0x0af7, 0x0b01, 0x0b15, 0x0b21, 0x0b2b,
+ 0x0b37, 0x0b43, 0x0b51, 0x0b64, 0x0b77, 0x0b8b, 0x0bac, 0x0bbe,
+ 0x0bc6, 0x0be1, 0x0bf1, 0x0c13, 0x0c43, 0x0c55, 0x0c69, 0x0c7b,
+ 0x0c85, 0x0c95, 0x0ca3, 0x0caf, 0x0cbd, 0x0ccd, 0x0cdd, 0x0ceb,
+ 0x0d06, 0x0d10, 0x0d2b, 0x0d39, 0x0d4b, 0x0d61, 0x0d71, 0x0d7b,
+ 0x0d85, 0x0d8d, 0x0da6, 0x0dae, 0x0dba, 0x0dc2, 0x0de3, 0x0e03,
+ 0x0e13, 0x0e23, 0x0e2d, 0x0e4e, 0x0e6b, 0x0e80, 0x0ea9, 0x0ebd,
+ // Entry C0 - FF
+ 0x0ec7, 0x0ed7, 0x0ee1, 0x0f18, 0x0f26, 0x0f34, 0x0f40, 0x0f4a,
+ 0x0f56, 0x0f75, 0x0f98, 0x0fa6, 0x0fb0, 0x0fbc, 0x0fcc, 0x0fe1,
+ 0x0ff1, 0x1014, 0x1024, 0x1039, 0x104c, 0x105a, 0x1068, 0x1076,
+ 0x1089, 0x10ac, 0x10bc, 0x10d1, 0x10db, 0x10ed, 0x1109, 0x1132,
+ 0x1138, 0x1162, 0x116a, 0x1178, 0x118e, 0x119c, 0x11b5, 0x11cd,
+ 0x11d7, 0x11e1, 0x11ed, 0x120d, 0x1219, 0x1225, 0x1235, 0x1243,
+ 0x124f, 0x127e, 0x1299, 0x12a7, 0x12bb, 0x12c9, 0x12f8, 0x130a,
+ 0x1340, 0x137a, 0x1388, 0x1396, 0x13b0, 0x13ba, 0x13c6, 0x13d0,
+ // Entry 100 - 13F
+ 0x13da, 0x13ef, 0x13fb, 0x140b, 0x1428, 0x1430, 0x143c, 0x1473,
+ 0x148a, 0x1498, 0x14b3, 0x14d4, 0x14ef, 0x150a, 0x1529, 0x1552,
+ 0x1560, 0x157d, 0x159a, 0x15b1, 0x15c2, 0x15df, 0x15f4, 0x160a,
+ 0x161c, 0x1643, 0x1655, 0x165d, 0x1678, 0x168f, 0x169b, 0x16b6,
+ 0x16d1, 0x16ec, 0x170b,
+} // Size: 606 bytes
+
+var bnRegionStr string = "" + // Size: 9571 bytes
+ "অ্যাসসেনশন আইল্যান্ডএ্যান্ডোরাসংযুক্ত আরব আমিরাতআফগানিস্তানএন্টিগুয়া ও " +
+ "বারবুডাএ্যাঙ্গুইলাআলব্যানিয়াআর্মেনিয়ানেদারল্যান্ডস এ্যান্টিলিসঅ্যাঙ্" +
+ "গোলাঅ্যান্টার্কটিকাআর্জেন্টিনাআমেরিকান সামোয়াঅস্ট্রিয়াঅস্ট্রেলিয়াআর" +
+ "ুবাআলান্ড দ্বীপপুঞ্জআজারবাইজানবসনিয়া ও হার্জেগোভিনাবারবাদোসবাংলাদেশবে" +
+ "লজিয়ামবুরকিনা ফাসোবুলগেরিয়াবাহরাইনবুরুন্ডিবেনিনসেন্ট বারথেলিমিবারমুড" +
+ "াব্রুনেইবোলিভিয়াক্যারিবিয়ান নেদারল্যান্ডসব্রাজিলবাহামা দ্বীপপুঞ্জভুট" +
+ "ানবোভেট দ্বীপবতসোয়ানাবেলোরুশিয়াবেলিজকানাডাকোকোস (কিলিং)দ্বীপপুঞ্জকঙ্" +
+ "গো-কিনশাসামধ্য আফ্রিকার প্রজাতন্ত্রকঙ্গো - ব্রাজাভিলসুইজারল্যান্ডআইভরি" +
+ " কোস্টকুক দ্বীপপুঞ্জচিলিক্যামেরুনচীনকোলোম্বিয়াক্লিপারটন আইল্যান্ডকোস্টা" +
+ "রিকাকিউবাকেপভার্দেকিউরাসাওক্রিসমাস দ্বীপসাইপ্রাসচেক প্রজাতন্ত্রজার্মান" +
+ "িদিয়েগো গার্সিয়াজিবুতিডেনমার্কডোমিনিকাডোমেনিকান প্রজাতন্ত্রআলজেরিয়া" +
+ "কুউটা এবং মেলিলাইকুয়েডরএস্তোনিয়ামিশরপশ্চিম সাহারাইরিত্রিয়াস্পেনইফিও" +
+ "পিয়াইউরোপীয় ইউনিয়নফিনল্যান্ডফিজিফকল্যান্ড দ্বীপপুঞ্জমাইক্রোনেশিয়াফ" +
+ "্যারও দ্বীপপুঞ্জফ্রান্সগ্যাবনযুক্তরাজ্যগ্রেনেডাজর্জিয়াফরাসী গায়ানাগ্" +
+ "রাঞ্জিঘানাজিব্রাল্টারগ্রীনল্যান্ডগাম্বিয়াগিনিগুয়াদেলৌপনিরক্ষীয় গিনি" +
+ "গ্রীসদক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জগোয়াতেমালাগুয়ামগি" +
+ "নি-বিসাউগিয়ানাহংকং এসএআর চীনাহার্ড দ্বীপ এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জহ" +
+ "ণ্ডুরাসক্রোয়েশিয়াহাইতিহাঙ্গেরিক্যানারি দ্বীপপুঞ্জইন্দোনেশিয়াআয়ারল্" +
+ "যান্ডইজরায়েলআইল অফ ম্যানভারতব্রিটিশ ভারত মহাসাগরীয় অঞ্চলইরাকইরানআইসল" +
+ "্যান্ডইতালীজার্সিজামাইকাজর্ডনজাপানকেনিয়াকির্গিজিয়াকম্বোডিয়াকিরিবাতি" +
+ "কমোরোসসেন্ট কিটস ও নেভিসউত্তর কোরিয়াদক্ষিণ কোরিয়াকুয়েতকেম্যান দ্বীপ" +
+ "পুঞ্জকাজাখস্তানলাওসলেবাননসেন্ট লুসিয়ালিচেনস্টেইনশ্রীলঙ্কালাইবেরিয়ালে" +
+ "সোথোলিথুয়ানিয়ালাক্সেমবার্গলাত্ভিয়ালিবিয়ামোরক্কোমোনাকোমোল্দাভিয়ামন" +
+ "্টিনিগ্রোসেন্ট মার্টিনমাদাগাস্কারমার্শাল দ্বীপপুঞ্জম্যাসাডোনিয়ামালিমা" +
+ "য়ানমার (বার্মা)মঙ্গোলিয়াম্যাকাও এস এ আর চায়নাউত্তরাঞ্চলীয় মারিয়ান" +
+ "া দ্বীপপুঞ্জমার্টিনিকমরিতানিয়ামন্টসেরাটমাল্টামরিশাসমালদ্বীপমালাউইমেক্" +
+ "সিকোমালয়েশিয়ামোজাম্বিকনামিবিয়ানিউ ক্যালেডোনিয়ানাইজারনিরফোক দ্বীপনা" +
+ "ইজেরিয়ানিকারাগুয়ানেদারল্যান্ডসনরওয়েনেপালনাউরুনিউয়েনিউজিল্যান্ডওমান" +
+ "পানামাপিরুফরাসী পলিনেশিয়াপাপুয়া নিউ গিনিফিলিপাইনপাকিস্তানপোল্যান্ডসে" +
+ "ন্ট পিয়ের ও মিকুয়েলনপিটকেয়ার্ন দ্বীপপুঞ্জপুয়ের্তো রিকোফিলিস্তিন অঞ" +
+ "্চলসমূহপর্তুগালপালাউপ্যারাগুয়েকাতারআউটলাইনিং ওসানিয়ারিইউনিয়নরুমানিয" +
+ "়াসার্বিয়ারাশিয়ারুয়ান্ডাসৌদি আরবসলোমন দ্বীপপুঞ্জসিসিলিসুদানসুইডেনসি" +
+ "ঙ্গাপুরসেন্ট হেলেনাস্লোভানিয়াস্বালবার্ড ও জান মেয়েনশ্লোভাকিয়াসিয়ের" +
+ "ালিওনসান মারিনোসেনেগালসোমালিয়াসুরিনামদক্ষিন সুদানসাওটোমা ও প্রিন্সিপি" +
+ "এল সালভেদরসিন্ট মার্টেনসিরিয়াসোয়াজিল্যান্ডট্রিস্টান ডা কুনহাতুর্কস ও" +
+ " কাইকোস দ্বীপপুঞ্জচাদফরাসী দক্ষিণাঞ্চলটোগোথাইল্যান্ডতাজিকস্থানটোকেলাউতিম" +
+ "ুর-লেস্তেতুর্কমেনিস্তানতিউনিশিয়াটোঙ্গাতুরস্কত্রিনিনাদ ও টোব্যাগোটুভাল" +
+ "ুতাইওয়ানতাঞ্জানিয়াইউক্রেইনউগান্ডাযুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপু" +
+ "ঞ্জমার্কিন যুক্তরাষ্ট্রউরুগুয়েউজবেকিস্তানভ্যাটিকান সিটিসেন্ট ভিনসেন্ট" +
+ " ও দ্যা গ্রেনাডিনসভেনেজুয়েলাব্রিটিশ ভার্জিন দ্বীপপুঞ্জমার্কিন ভার্জিন দ" +
+ "্বীপপুঞ্জভিয়েতনামভানুয়াটুওয়ালিস ও ফুটুনাসামোয়াকসোভোইয়েমেনমায়োত্ত" +
+ "েদক্ষিণ আফ্রিকাজাম্বিয়াজিম্বাবোয়েঅজানা স্থানপৃথিবীআফ্রিকাউত্তর আমেরি" +
+ "কাদক্ষিণ আমেরিকাওশিয়ানিয়াপশ্চিম আফ্রিকামধ্য আমেরিকাপূর্ব আফ্রিকাউত্ত" +
+ "র আফ্রিকামধ্য আফ্রিকাদক্ষিন আফ্রিকাআমেরিকাসউত্তরাঞ্চলীয় আমেরিকাক্যারা" +
+ "বিয়ানপূর্ব এশিয়াদক্ষিণ এশিয়াদক্ষিণ পূর্ব এশিয়াদক্ষিণ ইউরোপঅস্ট্রাল" +
+ "েশিয়াম্যালেনেশিয়াম্যালেনিশা অঞ্চলপলিনেশিয়াএশিয়ামধ্য এশিয়াপশ্চিম এ" +
+ "শিয়াইউরোপপূর্ব ইউরোপউত্তর ইউরোপপশ্চিম ইউরোপল্যাটিন আমেরিকা"
+
+var bnRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x003a, 0x0058, 0x008a, 0x00ab, 0x00e3, 0x0104, 0x0125,
+ 0x0143, 0x018c, 0x01aa, 0x01d7, 0x01f8, 0x0226, 0x0244, 0x0268,
+ 0x0277, 0x02a8, 0x02c6, 0x0304, 0x031c, 0x0334, 0x034f, 0x0371,
+ 0x038f, 0x03a4, 0x03bc, 0x03cb, 0x03f6, 0x040b, 0x0420, 0x043b,
+ 0x0487, 0x049c, 0x04cd, 0x04dc, 0x04fb, 0x0516, 0x0537, 0x0546,
+ 0x0558, 0x0597, 0x05bc, 0x0603, 0x0630, 0x0657, 0x0676, 0x069e,
+ 0x06aa, 0x06c5, 0x06ce, 0x06ef, 0x0726, 0x0744, 0x0753, 0x076e,
+ 0x0786, 0x07ae, 0x07c6, 0x07f1, 0x0809, 0x083a, 0x084c, 0x0864,
+ // Entry 40 - 7F
+ 0x087c, 0x08b9, 0x08d4, 0x0900, 0x0918, 0x0936, 0x0942, 0x0967,
+ 0x0985, 0x0994, 0x09af, 0x09dd, 0x09fb, 0x0a07, 0x0a41, 0x0a6b,
+ 0x0a9c, 0x0ab1, 0x0ac3, 0x0ae1, 0x0af9, 0x0b11, 0x0b36, 0x0b4e,
+ 0x0b5a, 0x0b7b, 0x0b9f, 0x0bba, 0x0bc6, 0x0be4, 0x0c0c, 0x0c1b,
+ 0x0c9b, 0x0cbc, 0x0cce, 0x0cea, 0x0cff, 0x0d28, 0x0d95, 0x0dad,
+ 0x0dd1, 0x0de0, 0x0df8, 0x0e2f, 0x0e53, 0x0e77, 0x0e8f, 0x0eaf,
+ 0x0ebb, 0x0f0c, 0x0f18, 0x0f24, 0x0f42, 0x0f51, 0x0f63, 0x0f78,
+ 0x0f87, 0x0f96, 0x0fab, 0x0fcc, 0x0fea, 0x1002, 0x1014, 0x1044,
+ // Entry 80 - BF
+ 0x1069, 0x1091, 0x10a3, 0x10d7, 0x10f5, 0x1101, 0x1113, 0x1138,
+ 0x1159, 0x1174, 0x1192, 0x11a4, 0x11c8, 0x11ec, 0x1207, 0x121c,
+ 0x1231, 0x1243, 0x1264, 0x1285, 0x12aa, 0x12cb, 0x12ff, 0x1326,
+ 0x1332, 0x1362, 0x1380, 0x13ba, 0x141c, 0x1437, 0x1455, 0x1470,
+ 0x1482, 0x1494, 0x14ac, 0x14be, 0x14d6, 0x14f7, 0x1512, 0x152d,
+ 0x155e, 0x1570, 0x1592, 0x15b0, 0x15d1, 0x15f8, 0x160a, 0x1619,
+ 0x1628, 0x163a, 0x165e, 0x166a, 0x167c, 0x1688, 0x16b6, 0x16e2,
+ 0x16fa, 0x1715, 0x1730, 0x1772, 0x17b2, 0x17da, 0x1811, 0x1829,
+ // Entry C0 - FF
+ 0x1838, 0x1859, 0x1868, 0x189c, 0x18b7, 0x18d2, 0x18ed, 0x1902,
+ 0x191d, 0x1933, 0x1961, 0x1973, 0x1982, 0x1994, 0x19af, 0x19d1,
+ 0x19f2, 0x1a31, 0x1a52, 0x1a73, 0x1a8f, 0x1aa4, 0x1abf, 0x1ad4,
+ 0x1af6, 0x1b2e, 0x1b4a, 0x1b6f, 0x1b84, 0x1bae, 0x1be0, 0x1c28,
+ 0x1c31, 0x1c62, 0x1c6e, 0x1c8c, 0x1caa, 0x1cbf, 0x1ce1, 0x1d0b,
+ 0x1d29, 0x1d3b, 0x1d4d, 0x1d85, 0x1d97, 0x1daf, 0x1dd0, 0x1de8,
+ 0x1dfd, 0x1e6b, 0x1ea5, 0x1ebd, 0x1ede, 0x1f06, 0x1f5e, 0x1f7f,
+ 0x1fc9, 0x2013, 0x202e, 0x2049, 0x2075, 0x208a, 0x2099, 0x20ae,
+ // Entry 100 - 13F
+ 0x20c9, 0x20f1, 0x210c, 0x212d, 0x214c, 0x215e, 0x2173, 0x2198,
+ 0x21c0, 0x21e1, 0x2209, 0x222b, 0x2250, 0x2275, 0x2297, 0x22bf,
+ 0x22d7, 0x2314, 0x2338, 0x235a, 0x237f, 0x23b4, 0x23d6, 0x2400,
+ 0x2427, 0x2455, 0x2473, 0x2485, 0x24a4, 0x24c9, 0x24d8, 0x24f7,
+ 0x2516, 0x2538, 0x2563,
+} // Size: 606 bytes
+
+var caRegionStr string = "" + // Size: 3171 bytes
+ "Illa de l’AscensióAndorraEmirats Àrabs UnitsAfganistanAntigua i BarbudaA" +
+ "nguillaAlbàniaArmèniaAntilles NeerlandesesAngolaAntàrtidaArgentinaSamoa " +
+ "Nord-americanaÀustriaAustràliaArubaIlles ÅlandAzerbaidjanBòsnia i Herceg" +
+ "ovinaBarbadosBangla DeshBèlgicaBurkina FasoBulgàriaBahrainBurundiBenínSa" +
+ "int BarthélemyBermudesBruneiBolíviaCarib NeerlandèsBrasilBahamesBhutanBo" +
+ "uvetBotswanaBelarúsBelizeCanadàIlles CocosCongo - KinshasaRepública Cent" +
+ "reafricanaCongo - BrazzavilleSuïssaCosta d’IvoriIlles CookXileCamerunXin" +
+ "aColòmbiaIlla ClippertonCosta RicaCubaCap VerdCuraçaoIlla ChristmasXipre" +
+ "República TxecaAlemanyaDiego GarciaDjiboutiDinamarcaDominicaRepública Do" +
+ "minicanaAlgèriaCeuta i MelillaEquadorEstòniaEgipteSàhara OccidentalEritr" +
+ "eaEspanyaEtiòpiaUnió EuropeaFinlàndiaFijiIlles MalvinesMicronèsiaIlles F" +
+ "èroeFrançaGabonRegne UnitGrenadaGeòrgiaGuaiana FrancesaGuernseyGhanaGib" +
+ "raltarGrenlàndiaGàmbiaGuineaGuadeloupeGuinea EquatorialGrèciaIlles Geòrg" +
+ "ia del Sud i Sandwich del SudGuatemalaGuamGuinea BissauGuyanaHong Kong (" +
+ "RAE Xina)Illa Heard i Illes McDonaldHonduresCroàciaHaitíHongriaIlles Can" +
+ "àriesIndonèsiaIrlandaIsraelIlla de ManÍndiaTerritori Britànic de l’Oceà" +
+ " ÍndicIraqIranIslàndiaItàliaJerseyJamaicaJordàniaJapóKenyaKirguizistanCa" +
+ "mbodjaKiribatiComoresSaint Christopher i NevisCorea del NordCorea del Su" +
+ "dKuwaitIlles CaimanKazakhstanLaosLíbanSaint LuciaLiechtensteinSri LankaL" +
+ "ibèriaLesothoLituàniaLuxemburgLetòniaLíbiaMarrocMònacoMoldàviaMontenegro" +
+ "Saint MartinMadagascarIlles MarshallMacedòniaMaliMyanmar (Birmània)Mongò" +
+ "liaMacau (RAE Xina)Illes Mariannes del NordMartinicaMauritàniaMontserrat" +
+ "MaltaMauriciMaldivesMalawiMèxicMalàisiaMoçambicNamíbiaNova CaledòniaNíge" +
+ "rNorfolkNigèriaNicaraguaPaïsos BaixosNoruegaNepalNauruNiueNova ZelandaOm" +
+ "anPanamàPerúPolinèsia FrancesaPapua Nova GuineaFilipinesPakistanPolòniaS" +
+ "aint-Pierre-et-MiquelonIlles PitcairnPuerto RicoPalestinaPortugalPalauPa" +
+ "raguaiQatarTerritoris allunyats d’OceaniaIlla de la ReunióRomaniaSèrbiaR" +
+ "ússiaRuandaAràbia SauditaIlles SalomóSeychellesSudanSuèciaSingapurSaint" +
+ " HelenaEslovèniaSvalbard i Jan MayenEslovàquiaSierra LeoneSan MarinoSene" +
+ "galSomàliaSurinamSudan del SudSão Tomé i PríncipeEl SalvadorSint Maarten" +
+ "SíriaSwazilàndiaTristão da CunhaIlles Turks i CaicosTxadTerritoris Franc" +
+ "esos del SudTogoTailàndiaTadjikistanTokelauTimor OrientalTurkmenistanTun" +
+ "ísiaTongaTurquiaTrinitat i TobagoTuvaluTaiwanTanzàniaUcraïnaUgandaIlles" +
+ " Perifèriques Menors dels EUAEstats UnitsUruguaiUzbekistanCiutat del Vat" +
+ "icàSaint Vincent i les GrenadinesVeneçuelaIlles Verges BritàniquesIlles " +
+ "Verges Nord-americanesVietnamVanuatuWallis i FutunaSamoaKosovoIemenMayot" +
+ "teRepública de Sud-àfricaZàmbiaZimbàbueRegió desconegudaMónÀfricaAmèrica" +
+ " del NordAmèrica del SudOceaniaÀfrica occidentalAmèrica CentralÀfrica or" +
+ "ientalÀfrica septentrionalÀfrica centralÀfrica meridionalAmèricaAmèrica " +
+ "septentrionalCaribÀsia orientalÀsia meridionalÀsia sud-orientalEuropa me" +
+ "ridionalAustralàsiaMelanèsiaRegió de la MicronèsiaPolinèsiaÀsiaÀsia cent" +
+ "ralÀsia occidentalEuropaEuropa orientalEuropa septentrionalEuropa occide" +
+ "ntalAmèrica Llatina"
+
+var caRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0015, 0x001c, 0x0030, 0x003a, 0x004b, 0x0053, 0x005b,
+ 0x0063, 0x0078, 0x007e, 0x0088, 0x0091, 0x00a5, 0x00ad, 0x00b7,
+ 0x00bc, 0x00c8, 0x00d3, 0x00e8, 0x00f0, 0x00fb, 0x0103, 0x010f,
+ 0x0118, 0x011f, 0x0126, 0x012c, 0x013d, 0x0145, 0x014b, 0x0153,
+ 0x0164, 0x016a, 0x0171, 0x0177, 0x017d, 0x0185, 0x018d, 0x0193,
+ 0x019a, 0x01a5, 0x01b5, 0x01ce, 0x01e1, 0x01e8, 0x01f7, 0x0201,
+ 0x0205, 0x020c, 0x0210, 0x0219, 0x0228, 0x0232, 0x0236, 0x023e,
+ 0x0246, 0x0254, 0x0259, 0x0269, 0x0271, 0x027d, 0x0285, 0x028e,
+ // Entry 40 - 7F
+ 0x0296, 0x02ab, 0x02b3, 0x02c2, 0x02c9, 0x02d1, 0x02d7, 0x02e9,
+ 0x02f0, 0x02f7, 0x02ff, 0x030c, 0x0316, 0x031a, 0x0328, 0x0333,
+ 0x033f, 0x0346, 0x034b, 0x0355, 0x035c, 0x0364, 0x0374, 0x037c,
+ 0x0381, 0x038a, 0x0395, 0x039c, 0x03a2, 0x03ac, 0x03bd, 0x03c4,
+ 0x03ed, 0x03f6, 0x03fa, 0x0407, 0x040d, 0x0421, 0x043c, 0x0444,
+ 0x044c, 0x0452, 0x0459, 0x0468, 0x0472, 0x0479, 0x047f, 0x048a,
+ 0x0490, 0x04b7, 0x04bb, 0x04bf, 0x04c8, 0x04cf, 0x04d5, 0x04dc,
+ 0x04e5, 0x04ea, 0x04ef, 0x04fb, 0x0503, 0x050b, 0x0512, 0x052b,
+ // Entry 80 - BF
+ 0x0539, 0x0546, 0x054c, 0x0558, 0x0562, 0x0566, 0x056c, 0x0577,
+ 0x0584, 0x058d, 0x0595, 0x059c, 0x05a5, 0x05ae, 0x05b6, 0x05bc,
+ 0x05c2, 0x05c9, 0x05d2, 0x05dc, 0x05e8, 0x05f2, 0x0600, 0x060a,
+ 0x060e, 0x0621, 0x062a, 0x063a, 0x0652, 0x065b, 0x0666, 0x0670,
+ 0x0675, 0x067c, 0x0684, 0x068a, 0x0690, 0x0699, 0x06a2, 0x06aa,
+ 0x06b9, 0x06bf, 0x06c6, 0x06ce, 0x06d7, 0x06e5, 0x06ec, 0x06f1,
+ 0x06f6, 0x06fa, 0x0706, 0x070a, 0x0711, 0x0716, 0x0729, 0x073a,
+ 0x0743, 0x074b, 0x0753, 0x076b, 0x0779, 0x0784, 0x078d, 0x0795,
+ // Entry C0 - FF
+ 0x079a, 0x07a2, 0x07a7, 0x07c7, 0x07d9, 0x07e0, 0x07e7, 0x07ee,
+ 0x07f4, 0x0803, 0x0810, 0x081a, 0x081f, 0x0826, 0x082e, 0x083a,
+ 0x0844, 0x0858, 0x0863, 0x086f, 0x0879, 0x0880, 0x0888, 0x088f,
+ 0x089c, 0x08b2, 0x08bd, 0x08c9, 0x08cf, 0x08db, 0x08ec, 0x0900,
+ 0x0904, 0x0920, 0x0924, 0x092e, 0x0939, 0x0940, 0x094e, 0x095a,
+ 0x0962, 0x0967, 0x096e, 0x097f, 0x0985, 0x098b, 0x0994, 0x099c,
+ 0x09a2, 0x09c5, 0x09d1, 0x09d8, 0x09e2, 0x09f4, 0x0a12, 0x0a1c,
+ 0x0a35, 0x0a51, 0x0a58, 0x0a5f, 0x0a6e, 0x0a73, 0x0a79, 0x0a7e,
+ // Entry 100 - 13F
+ 0x0a85, 0x0a9e, 0x0aa5, 0x0aae, 0x0ac0, 0x0ac4, 0x0acb, 0x0adc,
+ 0x0aec, 0x0af3, 0x0b05, 0x0b15, 0x0b25, 0x0b3a, 0x0b49, 0x0b5b,
+ 0x0b63, 0x0b79, 0x0b7e, 0x0b8c, 0x0b9c, 0x0bae, 0x0bbf, 0x0bcb,
+ 0x0bd5, 0x0bed, 0x0bf7, 0x0bfc, 0x0c09, 0x0c19, 0x0c1f, 0x0c2e,
+ 0x0c42, 0x0c53, 0x0c63,
+} // Size: 606 bytes
+
+var csRegionStr string = "" + // Size: 3229 bytes
+ "AscensionAndorraSpojené arabské emirátyAfghánistánAntigua a BarbudaAngui" +
+ "llaAlbánieArménieNizozemské AntilyAngolaAntarktidaArgentinaAmerická Samo" +
+ "aRakouskoAustrálieArubaÅlandyÁzerbájdžánBosna a HercegovinaBarbadosBangl" +
+ "adéšBelgieBurkina FasoBulharskoBahrajnBurundiBeninSvatý BartolomějBermud" +
+ "yBrunejBolívieKaribské NizozemskoBrazílieBahamyBhútánBouvetův ostrovBots" +
+ "wanaBěloruskoBelizeKanadaKokosové ostrovyKongo – KinshasaStředoafrická r" +
+ "epublikaKongo – BrazzavilleŠvýcarskoPobřeží slonovinyCookovy ostrovyChil" +
+ "eKamerunČínaKolumbieClippertonův ostrovKostarikaKubaKapverdyCuraçaoVánoč" +
+ "ní ostrovKyprČeská republikaNěmeckoDiego GarcíaDžibutskoDánskoDominikaDo" +
+ "minikánská republikaAlžírskoCeuta a MelillaEkvádorEstonskoEgyptZápadní S" +
+ "aharaEritreaŠpanělskoEtiopieEvropská unieFinskoFidžiFalklandské ostrovyM" +
+ "ikronésieFaerské ostrovyFrancieGabonVelká BritánieGrenadaGruzieFrancouzs" +
+ "ká GuyanaGuernseyGhanaGibraltarGrónskoGambieGuineaGuadeloupeRovníková Gu" +
+ "ineaŘeckoJižní Georgie a Jižní Sandwichovy ostrovyGuatemalaGuamGuinea-Bi" +
+ "ssauGuyanaHongkong – ZAO ČínyHeardův ostrov a McDonaldovy ostrovyHondura" +
+ "sChorvatskoHaitiMaďarskoKanárské ostrovyIndonésieIrskoIzraelOstrov ManIn" +
+ "dieBritské indickooceánské územíIrákÍránIslandItálieJerseyJamajkaJordáns" +
+ "koJaponskoKeňaKyrgyzstánKambodžaKiribatiKomorySvatý Kryštof a NevisSever" +
+ "ní KoreaJižní KoreaKuvajtKajmanské ostrovyKazachstánLaosLibanonSvatá Luc" +
+ "ieLichtenštejnskoSrí LankaLibérieLesothoLitvaLucemburskoLotyšskoLibyeMar" +
+ "okoMonakoMoldavskoČerná HoraSvatý Martin (Francie)MadagaskarMarshallovy " +
+ "ostrovyMakedonieMaliMyanmar (Barma)MongolskoMacao – ZAO ČínySeverní Mari" +
+ "anyMartinikMauritánieMontserratMaltaMauriciusMaledivyMalawiMexikoMalajsi" +
+ "eMosambikNamibieNová KaledonieNigerNorfolkNigérieNikaraguaNizozemskoNors" +
+ "koNepálNauruNiueNový ZélandOmánPanamaPeruFrancouzská PolynésiePapua-Nová" +
+ " GuineaFilipínyPákistánPolskoSaint-Pierre a MiquelonPitcairnovy ostrovyP" +
+ "ortorikoPalestinská územíPortugalskoPalauParaguayKatarVnější OceánieRéun" +
+ "ionRumunskoSrbskoRuskoRwandaSaúdská ArábieŠalamounovy ostrovySeychelySúd" +
+ "ánŠvédskoSingapurSvatá HelenaSlovinskoŠpicberky a Jan MayenSlovenskoSie" +
+ "rra LeoneSan MarinoSenegalSomálskoSurinamJižní SúdánSvatý Tomáš a Princů" +
+ "v ostrovSalvadorSvatý Martin (Nizozemsko)SýrieSvazijskoTristan da CunhaT" +
+ "urks a CaicosČadFrancouzská jižní územíTogoThajskoTádžikistánTokelauVých" +
+ "odní TimorTurkmenistánTuniskoTongaTureckoTrinidad a TobagoTuvaluTchaj-wa" +
+ "nTanzanieUkrajinaUgandaMenší odlehlé ostrovy USASpojené státyUruguayUzbe" +
+ "kistánVatikánSvatý Vincenc a GrenadinyVenezuelaBritské Panenské ostrovyA" +
+ "merické Panenské ostrovyVietnamVanuatuWallis a FutunaSamoaKosovoJemenMay" +
+ "otteJihoafrická republikaZambieZimbabweNeznámá oblastSvětAfrikaSeverní A" +
+ "merikaJižní AmerikaOceánieZápadní AfrikaStřední AmerikaVýchodní AfrikaSe" +
+ "verní AfrikaStřední AfrikaJižní AfrikaAmerikaSeverní Amerika (oblast)Kar" +
+ "ibikVýchodní AsieJižní AsieJihovýchodní AsieJižní EvropaAustralasieMelan" +
+ "ésieMikronésie (region)PolynésieAsieStřední AsieZápadní AsieEvropaVýcho" +
+ "dní EvropaSeverní EvropaZápadní EvropaLatinská Amerika"
+
+var csRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002a, 0x0037, 0x0048, 0x0050, 0x0058,
+ 0x0060, 0x0072, 0x0078, 0x0082, 0x008b, 0x009a, 0x00a2, 0x00ac,
+ 0x00b1, 0x00b8, 0x00c7, 0x00da, 0x00e2, 0x00ed, 0x00f3, 0x00ff,
+ 0x0108, 0x010f, 0x0116, 0x011b, 0x012d, 0x0134, 0x013a, 0x0142,
+ 0x0156, 0x015f, 0x0165, 0x016d, 0x017d, 0x0185, 0x018f, 0x0195,
+ 0x019b, 0x01ac, 0x01be, 0x01d7, 0x01ec, 0x01f7, 0x020b, 0x021a,
+ 0x021f, 0x0226, 0x022c, 0x0234, 0x0248, 0x0251, 0x0255, 0x025d,
+ 0x0265, 0x0276, 0x027a, 0x028b, 0x0293, 0x02a0, 0x02aa, 0x02b1,
+ // Entry 40 - 7F
+ 0x02b9, 0x02d1, 0x02db, 0x02ea, 0x02f2, 0x02fa, 0x02ff, 0x030f,
+ 0x0316, 0x0321, 0x0328, 0x0336, 0x033c, 0x0342, 0x0356, 0x0361,
+ 0x0371, 0x0378, 0x037d, 0x038d, 0x0394, 0x039a, 0x03ad, 0x03b5,
+ 0x03ba, 0x03c3, 0x03cb, 0x03d1, 0x03d7, 0x03e1, 0x03f3, 0x03f9,
+ 0x0426, 0x042f, 0x0433, 0x0440, 0x0446, 0x045d, 0x0482, 0x048a,
+ 0x0494, 0x0499, 0x04a2, 0x04b4, 0x04be, 0x04c3, 0x04c9, 0x04d3,
+ 0x04d8, 0x04fa, 0x04ff, 0x0505, 0x050b, 0x0512, 0x0518, 0x051f,
+ 0x0529, 0x0531, 0x0536, 0x0541, 0x054a, 0x0552, 0x0558, 0x056f,
+ // Entry 80 - BF
+ 0x057d, 0x058a, 0x0590, 0x05a2, 0x05ad, 0x05b1, 0x05b8, 0x05c4,
+ 0x05d4, 0x05de, 0x05e6, 0x05ed, 0x05f2, 0x05fd, 0x0606, 0x060b,
+ 0x0611, 0x0617, 0x0620, 0x062c, 0x0643, 0x064d, 0x0660, 0x0669,
+ 0x066d, 0x067c, 0x0685, 0x0699, 0x06a9, 0x06b1, 0x06bc, 0x06c6,
+ 0x06cb, 0x06d4, 0x06dc, 0x06e2, 0x06e8, 0x06f0, 0x06f8, 0x06ff,
+ 0x070e, 0x0713, 0x071a, 0x0722, 0x072b, 0x0735, 0x073b, 0x0741,
+ 0x0746, 0x074a, 0x0757, 0x075c, 0x0762, 0x0766, 0x077d, 0x078f,
+ 0x0798, 0x07a2, 0x07a8, 0x07bf, 0x07d2, 0x07db, 0x07ef, 0x07fa,
+ // Entry C0 - FF
+ 0x07ff, 0x0807, 0x080c, 0x081e, 0x0826, 0x082e, 0x0834, 0x0839,
+ 0x083f, 0x0850, 0x0864, 0x086c, 0x0873, 0x087c, 0x0884, 0x0891,
+ 0x089a, 0x08b0, 0x08b9, 0x08c5, 0x08cf, 0x08d6, 0x08df, 0x08e6,
+ 0x08f5, 0x0915, 0x091d, 0x0937, 0x093d, 0x0946, 0x0956, 0x0964,
+ 0x0968, 0x0984, 0x0988, 0x098f, 0x099d, 0x09a4, 0x09b4, 0x09c1,
+ 0x09c8, 0x09cd, 0x09d4, 0x09e5, 0x09eb, 0x09f4, 0x09fc, 0x0a04,
+ 0x0a0a, 0x0a26, 0x0a35, 0x0a3c, 0x0a47, 0x0a4f, 0x0a69, 0x0a72,
+ 0x0a8c, 0x0aa7, 0x0aae, 0x0ab5, 0x0ac4, 0x0ac9, 0x0acf, 0x0ad4,
+ // Entry 100 - 13F
+ 0x0adb, 0x0af1, 0x0af7, 0x0aff, 0x0b0f, 0x0b14, 0x0b1a, 0x0b2a,
+ 0x0b39, 0x0b41, 0x0b51, 0x0b62, 0x0b73, 0x0b82, 0x0b92, 0x0ba0,
+ 0x0ba7, 0x0bc0, 0x0bc7, 0x0bd6, 0x0be2, 0x0bf5, 0x0c03, 0x0c0e,
+ 0x0c18, 0x0c2c, 0x0c36, 0x0c3a, 0x0c48, 0x0c56, 0x0c5c, 0x0c6d,
+ 0x0c7c, 0x0c8c, 0x0c9d,
+} // Size: 606 bytes
+
+var daRegionStr string = "" + // Size: 2956 bytes
+ "AscensionøenAndorraDe Forenede Arabiske EmiraterAfghanistanAntigua og Ba" +
+ "rbudaAnguillaAlbanienArmenienHollandske AntillerAngolaAntarktisArgentina" +
+ "Amerikansk SamoaØstrigAustralienArubaÅlandAserbajdsjanBosnien-Hercegovin" +
+ "aBarbadosBangladeshBelgienBurkina FasoBulgarienBahrainBurundiBeninSaint " +
+ "BarthélemyBermudaBruneiBoliviaDe Nederlandske AntillerBrasilienBahamasBh" +
+ "utanBouvetøenBotswanaHvideruslandBelizeCanadaCocosøerneCongo-KinshasaDen" +
+ " Centralafrikanske RepublikCongo-BrazzavilleSchweizElfenbenskystenCookøe" +
+ "rneChileCamerounKinaColombiaClippertonøenCosta RicaCubaKap VerdeCuraçaoJ" +
+ "uleøenCypernTjekkietTysklandDiego GarciaDjiboutiDanmarkDominicaDen Domin" +
+ "ikanske RepublikAlgerietCeuta og MelillaEcuadorEstlandEgyptenVestsaharaE" +
+ "ritreaSpanienEtiopienDen Europæiske UnionFinlandFijiFalklandsøerneMikron" +
+ "esiens Forenede StaterFærøerneFrankrigGabonStorbritannienGrenadaGeorgien" +
+ "Fransk GuyanaGuernseyGhanaGibraltarGrønlandGambiaGuineaGuadeloupeÆkvator" +
+ "ialguineaGrækenlandSouth Georgia og South Sandwich IslandsGuatemalaGuamG" +
+ "uinea-BissauGuyanaHongkong SARHeard Island og McDonald IslandsHondurasKr" +
+ "oatienHaitiUngarnKanariske øerIndonesienIrlandIsraelIsle of ManIndienDet" +
+ " britiske territorium i Det Indiske OceanIrakIranIslandItalienJerseyJama" +
+ "icaJordanJapanKenyaKirgisistanCambodjaKiribatiComorerneSaint Kitts og Ne" +
+ "visNordkoreaSydkoreaKuwaitCaymanøerneKasakhstanLaosLibanonSaint LuciaLie" +
+ "chtensteinSri LankaLiberiaLesothoLitauenLuxembourgLetlandLibyenMarokkoMo" +
+ "nacoMoldovaMontenegroSaint MartinMadagaskarMarshalløerneMakedonienMaliMy" +
+ "anmar (Burma)MongolietMacao SARNordmarianerneMartiniqueMauretanienMontse" +
+ "rratMaltaMauritiusMaldiverneMalawiMexicoMalaysiaMozambiqueNamibiaNy Kale" +
+ "donienNigerNorfolk IslandNigeriaNicaraguaNederlandeneNorgeNepalNauruNiue" +
+ "New ZealandOmanPanamaPeruFransk PolynesienPapua Ny GuineaFilippinernePak" +
+ "istanPolenSaint Pierre og MiquelonPitcairnPuerto RicoDe palæstinensiske " +
+ "områderPortugalPalauParaguayQatarYdre OceanienRéunionRumænienSerbienRusl" +
+ "andRwandaSaudi-ArabienSalomonøerneSeychellerneSudanSverigeSingaporeSt. H" +
+ "elenaSlovenienSvalbard og Jan MayenSlovakietSierra LeoneSan MarinoSenega" +
+ "lSomaliaSurinamSydsudanSão Tomé og PríncipeEl SalvadorSint MaartenSyrien" +
+ "SwazilandTristan da CunhaTurks- og CaicosøerneTchadDe franske besiddelse" +
+ "r i Det Sydlige Indiske OceanTogoThailandTadsjikistanTokelauTimor-LesteT" +
+ "urkmenistanTunesienTongaTyrkietTrinidad og TobagoTuvaluTaiwanTanzaniaUkr" +
+ "aineUgandaAmerikanske oversøiske øerUSAUruguayUsbekistanVatikanstatenSai" +
+ "nt Vincent og GrenadinerneVenezuelaDe Britiske JomfruøerDe Amerikanske J" +
+ "omfruøerVietnamVanuatuWallis og FutunaSamoaKosovoYemenMayotteSydafrikaZa" +
+ "mbiaZimbabweUkendt områdeVerdenAfrikaNordamerikaSydamerikaOceanienVestaf" +
+ "rikaMellemamerikaØstafrikaNordafrikaCentralafrikaDet sydlige AfrikaAmeri" +
+ "kaDet nordlige AmerikaCaribienØstasienSydasienSydøstasienSydeuropaAustra" +
+ "lasienMelanesienMikronesienPolynesienAsienCentralasienVestasienEuropaØst" +
+ "europaNordeuropaVesteuropaLatinamerika"
+
+var daRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000d, 0x0014, 0x0031, 0x003c, 0x004e, 0x0056, 0x005e,
+ 0x0066, 0x0079, 0x007f, 0x0088, 0x0091, 0x00a1, 0x00a8, 0x00b2,
+ 0x00b7, 0x00bd, 0x00c9, 0x00dc, 0x00e4, 0x00ee, 0x00f5, 0x0101,
+ 0x010a, 0x0111, 0x0118, 0x011d, 0x012e, 0x0135, 0x013b, 0x0142,
+ 0x015a, 0x0163, 0x016a, 0x0170, 0x017a, 0x0182, 0x018e, 0x0194,
+ 0x019a, 0x01a5, 0x01b3, 0x01d1, 0x01e2, 0x01e9, 0x01f8, 0x0202,
+ 0x0207, 0x020f, 0x0213, 0x021b, 0x0229, 0x0233, 0x0237, 0x0240,
+ 0x0248, 0x0250, 0x0256, 0x025e, 0x0266, 0x0272, 0x027a, 0x0281,
+ // Entry 40 - 7F
+ 0x0289, 0x02a2, 0x02aa, 0x02ba, 0x02c1, 0x02c8, 0x02cf, 0x02d9,
+ 0x02e0, 0x02e7, 0x02ef, 0x0304, 0x030b, 0x030f, 0x031e, 0x033a,
+ 0x0344, 0x034c, 0x0351, 0x035f, 0x0366, 0x036e, 0x037b, 0x0383,
+ 0x0388, 0x0391, 0x039a, 0x03a0, 0x03a6, 0x03b0, 0x03c1, 0x03cc,
+ 0x03f3, 0x03fc, 0x0400, 0x040d, 0x0413, 0x041f, 0x043f, 0x0447,
+ 0x044f, 0x0454, 0x045a, 0x0468, 0x0472, 0x0478, 0x047e, 0x0489,
+ 0x048f, 0x04bb, 0x04bf, 0x04c3, 0x04c9, 0x04d0, 0x04d6, 0x04dd,
+ 0x04e3, 0x04e8, 0x04ed, 0x04f8, 0x0500, 0x0508, 0x0511, 0x0525,
+ // Entry 80 - BF
+ 0x052e, 0x0536, 0x053c, 0x0548, 0x0552, 0x0556, 0x055d, 0x0568,
+ 0x0575, 0x057e, 0x0585, 0x058c, 0x0593, 0x059d, 0x05a4, 0x05aa,
+ 0x05b1, 0x05b7, 0x05be, 0x05c8, 0x05d4, 0x05de, 0x05ec, 0x05f6,
+ 0x05fa, 0x0609, 0x0612, 0x061b, 0x0629, 0x0633, 0x063e, 0x0648,
+ 0x064d, 0x0656, 0x0660, 0x0666, 0x066c, 0x0674, 0x067e, 0x0685,
+ 0x0692, 0x0697, 0x06a5, 0x06ac, 0x06b5, 0x06c1, 0x06c6, 0x06cb,
+ 0x06d0, 0x06d4, 0x06df, 0x06e3, 0x06e9, 0x06ed, 0x06fe, 0x070d,
+ 0x0719, 0x0721, 0x0726, 0x073e, 0x0746, 0x0751, 0x076d, 0x0775,
+ // Entry C0 - FF
+ 0x077a, 0x0782, 0x0787, 0x0794, 0x079c, 0x07a5, 0x07ac, 0x07b3,
+ 0x07b9, 0x07c6, 0x07d3, 0x07df, 0x07e4, 0x07eb, 0x07f4, 0x07fe,
+ 0x0807, 0x081c, 0x0825, 0x0831, 0x083b, 0x0842, 0x0849, 0x0850,
+ 0x0858, 0x086f, 0x087a, 0x0886, 0x088c, 0x0895, 0x08a5, 0x08bb,
+ 0x08c0, 0x08f2, 0x08f6, 0x08fe, 0x090a, 0x0911, 0x091c, 0x0928,
+ 0x0930, 0x0935, 0x093c, 0x094e, 0x0954, 0x095a, 0x0962, 0x0969,
+ 0x096f, 0x098b, 0x098e, 0x0995, 0x099f, 0x09ac, 0x09c9, 0x09d2,
+ 0x09e8, 0x0a01, 0x0a08, 0x0a0f, 0x0a1f, 0x0a24, 0x0a2a, 0x0a2f,
+ // Entry 100 - 13F
+ 0x0a36, 0x0a3f, 0x0a45, 0x0a4d, 0x0a5b, 0x0a61, 0x0a67, 0x0a72,
+ 0x0a7c, 0x0a84, 0x0a8e, 0x0a9b, 0x0aa5, 0x0aaf, 0x0abc, 0x0ace,
+ 0x0ad5, 0x0ae9, 0x0af1, 0x0afa, 0x0b02, 0x0b0e, 0x0b17, 0x0b23,
+ 0x0b2d, 0x0b38, 0x0b42, 0x0b47, 0x0b53, 0x0b5c, 0x0b62, 0x0b6c,
+ 0x0b76, 0x0b80, 0x0b8c,
+} // Size: 606 bytes
+
+var deRegionStr string = "" + // Size: 3107 bytes
+ "AscensionAndorraVereinigte Arabische EmirateAfghanistanAntigua und Barbu" +
+ "daAnguillaAlbanienArmenienNiederländische AntillenAngolaAntarktisArgenti" +
+ "nienAmerikanisch-SamoaÖsterreichAustralienArubaÅlandinselnAserbaidschanB" +
+ "osnien und HerzegowinaBarbadosBangladeschBelgienBurkina FasoBulgarienBah" +
+ "rainBurundiBeninSt. BarthélemyBermudaBrunei DarussalamBolivienBonaire, S" +
+ "int Eustatius und SabaBrasilienBahamasBhutanBouvetinselBotsuanaBelarusBe" +
+ "lizeKanadaKokosinselnKongo-KinshasaZentralafrikanische RepublikKongo-Bra" +
+ "zzavilleSchweizCôte d’IvoireCookinselnChileKamerunChinaKolumbienClippert" +
+ "on-InselCosta RicaKubaKap VerdeCuraçaoWeihnachtsinselZypernTschechische " +
+ "RepublikDeutschlandDiego GarciaDschibutiDänemarkDominicaDominikanische R" +
+ "epublikAlgerienCeuta und MelillaEcuadorEstlandÄgyptenWestsaharaEritreaSp" +
+ "anienÄthiopienEuropäische UnionFinnlandFidschiFalklandinselnMikronesienF" +
+ "äröerFrankreichGabunVereinigtes KönigreichGrenadaGeorgienFranzösisch-Gu" +
+ "ayanaGuernseyGhanaGibraltarGrönlandGambiaGuineaGuadeloupeÄquatorialguine" +
+ "aGriechenlandSüdgeorgien und die Südlichen SandwichinselnGuatemalaGuamGu" +
+ "inea-BissauGuyanaSonderverwaltungszone HongkongHeard und McDonaldinselnH" +
+ "ondurasKroatienHaitiUngarnKanarische InselnIndonesienIrlandIsraelIsle of" +
+ " ManIndienBritisches Territorium im Indischen OzeanIrakIranIslandItalien" +
+ "JerseyJamaikaJordanienJapanKeniaKirgisistanKambodschaKiribatiKomorenSt. " +
+ "Kitts und NevisNordkoreaSüdkoreaKuwaitKaimaninselnKasachstanLaosLibanonS" +
+ "t. LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLettlandLiby" +
+ "enMarokkoMonacoRepublik MoldauMontenegroSt. MartinMadagaskarMarshallinse" +
+ "lnMazedonienMaliMyanmarMongoleiSonderverwaltungsregion MacauNördliche Ma" +
+ "rianenMartiniqueMauretanienMontserratMaltaMauritiusMaledivenMalawiMexiko" +
+ "MalaysiaMosambikNamibiaNeukaledonienNigerNorfolkinselNigeriaNicaraguaNie" +
+ "derlandeNorwegenNepalNauruNiueNeuseelandOmanPanamaPeruFranzösisch-Polyne" +
+ "sienPapua-NeuguineaPhilippinenPakistanPolenSt. Pierre und MiquelonPitcai" +
+ "rninselnPuerto RicoPalästinensische AutonomiegebietePortugalPalauParagua" +
+ "yKatarÄußeres OzeanienRéunionRumänienSerbienRusslandRuandaSaudi-ArabienS" +
+ "alomonenSeychellenSudanSchwedenSingapurSt. HelenaSlowenienSvalbard und J" +
+ "an MayenSlowakeiSierra LeoneSan MarinoSenegalSomaliaSurinameSüdsudanSão " +
+ "Tomé und PríncipeEl SalvadorSint MaartenSyrienSwasilandTristan da CunhaT" +
+ "urks- und CaicosinselnTschadFranzösische Süd- und AntarktisgebieteTogoTh" +
+ "ailandTadschikistanTokelauTimor-LesteTurkmenistanTunesienTongaTürkeiTrin" +
+ "idad und TobagoTuvaluTaiwanTansaniaUkraineUgandaAmerikanische Überseeins" +
+ "elnVereinigte StaatenUruguayUsbekistanVatikanstadtSt. Vincent und die Gr" +
+ "enadinenVenezuelaBritische JungferninselnAmerikanische JungferninselnVie" +
+ "tnamVanuatuWallis und FutunaSamoaKosovoJemenMayotteSüdafrikaSambiaSimbab" +
+ "weUnbekannte RegionWeltAfrikaNordamerikaSüdamerikaOzeanienWestafrikaMitt" +
+ "elamerikaOstafrikaNordafrikaZentralafrikaSüdliches AfrikaAmerikaNördlich" +
+ "es AmerikaKaribikOstasienSüdasienSüdostasienSüdeuropaAustralasienMelanes" +
+ "ienMikronesisches InselgebietPolynesienAsienZentralasienWestasienEuropaO" +
+ "steuropaNordeuropaWesteuropaLateinamerika"
+
+var deRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x004a, 0x0052, 0x005a,
+ 0x0062, 0x007b, 0x0081, 0x008a, 0x0095, 0x00a7, 0x00b2, 0x00bc,
+ 0x00c1, 0x00cd, 0x00da, 0x00f1, 0x00f9, 0x0104, 0x010b, 0x0117,
+ 0x0120, 0x0127, 0x012e, 0x0133, 0x0142, 0x0149, 0x015a, 0x0162,
+ 0x0182, 0x018b, 0x0192, 0x0198, 0x01a3, 0x01ab, 0x01b2, 0x01b8,
+ 0x01be, 0x01c9, 0x01d7, 0x01f3, 0x0204, 0x020b, 0x021b, 0x0225,
+ 0x022a, 0x0231, 0x0236, 0x023f, 0x024f, 0x0259, 0x025d, 0x0266,
+ 0x026e, 0x027d, 0x0283, 0x0298, 0x02a3, 0x02af, 0x02b8, 0x02c1,
+ // Entry 40 - 7F
+ 0x02c9, 0x02e0, 0x02e8, 0x02f9, 0x0300, 0x0307, 0x030f, 0x0319,
+ 0x0320, 0x0327, 0x0331, 0x0343, 0x034b, 0x0352, 0x0360, 0x036b,
+ 0x0373, 0x037d, 0x0382, 0x0399, 0x03a0, 0x03a8, 0x03bc, 0x03c4,
+ 0x03c9, 0x03d2, 0x03db, 0x03e1, 0x03e7, 0x03f1, 0x0402, 0x040e,
+ 0x043c, 0x0445, 0x0449, 0x0456, 0x045c, 0x047a, 0x0492, 0x049a,
+ 0x04a2, 0x04a7, 0x04ad, 0x04be, 0x04c8, 0x04ce, 0x04d4, 0x04df,
+ 0x04e5, 0x050e, 0x0512, 0x0516, 0x051c, 0x0523, 0x0529, 0x0530,
+ 0x0539, 0x053e, 0x0543, 0x054e, 0x0558, 0x0560, 0x0567, 0x057a,
+ // Entry 80 - BF
+ 0x0583, 0x058c, 0x0592, 0x059e, 0x05a8, 0x05ac, 0x05b3, 0x05bc,
+ 0x05c9, 0x05d2, 0x05d9, 0x05e0, 0x05e7, 0x05f0, 0x05f8, 0x05fe,
+ 0x0605, 0x060b, 0x061a, 0x0624, 0x062e, 0x0638, 0x0646, 0x0650,
+ 0x0654, 0x065b, 0x0663, 0x0680, 0x0693, 0x069d, 0x06a8, 0x06b2,
+ 0x06b7, 0x06c0, 0x06c9, 0x06cf, 0x06d5, 0x06dd, 0x06e5, 0x06ec,
+ 0x06f9, 0x06fe, 0x070a, 0x0711, 0x071a, 0x0725, 0x072d, 0x0732,
+ 0x0737, 0x073b, 0x0745, 0x0749, 0x074f, 0x0753, 0x076a, 0x0779,
+ 0x0784, 0x078c, 0x0791, 0x07a8, 0x07b6, 0x07c1, 0x07e3, 0x07eb,
+ // Entry C0 - FF
+ 0x07f0, 0x07f8, 0x07fd, 0x080f, 0x0817, 0x0820, 0x0827, 0x082f,
+ 0x0835, 0x0842, 0x084b, 0x0855, 0x085a, 0x0862, 0x086a, 0x0874,
+ 0x087d, 0x0893, 0x089b, 0x08a7, 0x08b1, 0x08b8, 0x08bf, 0x08c7,
+ 0x08d0, 0x08e8, 0x08f3, 0x08ff, 0x0905, 0x090e, 0x091e, 0x0935,
+ 0x093b, 0x0963, 0x0967, 0x096f, 0x097c, 0x0983, 0x098e, 0x099a,
+ 0x09a2, 0x09a7, 0x09ae, 0x09c1, 0x09c7, 0x09cd, 0x09d5, 0x09dc,
+ 0x09e2, 0x09fe, 0x0a10, 0x0a17, 0x0a21, 0x0a2d, 0x0a4b, 0x0a54,
+ 0x0a6c, 0x0a88, 0x0a8f, 0x0a96, 0x0aa7, 0x0aac, 0x0ab2, 0x0ab7,
+ // Entry 100 - 13F
+ 0x0abe, 0x0ac8, 0x0ace, 0x0ad6, 0x0ae7, 0x0aeb, 0x0af1, 0x0afc,
+ 0x0b07, 0x0b0f, 0x0b19, 0x0b26, 0x0b2f, 0x0b39, 0x0b46, 0x0b57,
+ 0x0b5e, 0x0b71, 0x0b78, 0x0b80, 0x0b89, 0x0b95, 0x0b9f, 0x0bab,
+ 0x0bb5, 0x0bcf, 0x0bd9, 0x0bde, 0x0bea, 0x0bf3, 0x0bf9, 0x0c02,
+ 0x0c0c, 0x0c16, 0x0c23,
+} // Size: 606 bytes
+
+var elRegionStr string = "" + // Size: 6260 bytes
+ "Νήσος ΑσενσιόνΑνδόραΗνωμένα Αραβικά ΕμιράταΑφγανιστάνΑντίγκουα και Μπαρμ" +
+ "πούνταΑνγκουίλαΑλβανίαΑρμενίαΟλλανδικές ΑντίλλεςΑνγκόλαΑνταρκτικήΑργεντ" +
+ "ινήΑμερικανική ΣαμόαΑυστρίαΑυστραλίαΑρούμπαΝήσοι ΌλαντΑζερμπαϊτζάνΒοσνί" +
+ "α - ΕρζεγοβίνηΜπαρμπάντοςΜπανγκλαντέςΒέλγιοΜπουρκίνα ΦάσοΒουλγαρίαΜπαχρ" +
+ "έινΜπουρούντιΜπενίνΆγιος ΒαρθολομαίοςΒερμούδεςΜπρουνέιΒολιβίαΟλλανδία Κ" +
+ "αραϊβικήςΒραζιλίαΜπαχάμεςΜπουτάνΝήσος ΜπουβέΜποτσουάναΛευκορωσίαΜπελίζΚ" +
+ "αναδάςΝήσοι Κόκος (Κίλινγκ)Κονγκό - ΚινσάσαΚεντροαφρικανική ΔημοκρατίαΚ" +
+ "ονγκό - ΜπραζαβίλΕλβετίαΑκτή ΕλεφαντοστούΝήσοι ΚουκΧιλήΚαμερούνΚίναΚολο" +
+ "μβίαΝήσος ΚλίπερτονΚόστα ΡίκαΚούβαΠράσινο ΑκρωτήριοΚουρασάοΝήσος των Χρ" +
+ "ιστουγέννωνΚύπροςΤσεχική ΔημοκρατίαΓερμανίαΝτιέγκο ΓκαρσίαΤζιμπουτίΔανί" +
+ "αΝτομίνικαΔομινικανή ΔημοκρατίαΑλγερίαΘεούτα και ΜελίλαΕκουαδόρΕσθονίαΑ" +
+ "ίγυπτοςΔυτική ΣαχάραΕρυθραίαΙσπανίαΑιθιοπίαΕυρωπαϊκή ΈνωσηΦινλανδίαΦίτζ" +
+ "ιΝήσοι ΦόκλαντΜικρονησίαΝήσοι ΦερόεςΓαλλίαΓκαμπόνΗνωμένο ΒασίλειοΓρενάδ" +
+ "αΓεωργίαΓαλλική ΓουιάναΓκέρνζιΓκάναΓιβραλτάρΓροιλανδίαΓκάμπιαΓουινέαΓου" +
+ "αδελούπηΙσημερινή ΓουινέαΕλλάδαΝήσοι Νότια Γεωργία και Νότιες Σάντουιτς" +
+ "ΓουατεμάλαΓκουάμΓουινέα ΜπισάουΓουιάναΧονγκ Κονγκ ΕΔΠ ΚίναςΝήσοι Χερντ " +
+ "και ΜακντόναλντΟνδούραΚροατίαΑϊτήΟυγγαρίαΚανάριοι ΝήσοιΙνδονησίαΙρλανδί" +
+ "αΙσραήλΝήσος ΜανΙνδίαΒρετανικά Εδάφη Ινδικού ΩκεανούΙράκΙράνΙσλανδίαΙτα" +
+ "λίαΤζέρζιΤζαμάικαΙορδανίαΙαπωνίαΚένυαΚιργιστάνΚαμπότζηΚιριμπάτιΚομόρεςΆ" +
+ "γιος Χριστόφορος και ΝέβιςΒόρεια ΚορέαΝότια ΚορέαΚουβέιτΝήσοι ΚάιμανΚαζ" +
+ "ακστάνΛάοςΛίβανοςΑγία ΛουκίαΛιχτενστάινΣρι ΛάνκαΛιβερίαΛεσότοΛιθουανίαΛ" +
+ "ουξεμβούργοΛετονίαΛιβύηΜαρόκοΜονακόΜολδαβίαΜαυροβούνιοΆγιος Μαρτίνος (Γ" +
+ "αλλικό τμήμα)ΜαδαγασκάρηΝήσοι ΜάρσαλΠρώην Γιουγκοσλαβική Δημοκρατία της" +
+ " ΜακεδονίαςΜάλιΜιανμάρ/ΒιρμανίαΜογγολίαΜακάο ΕΔΠ ΚίναςΝήσοι Βόρειες Μαρι" +
+ "άνεςΜαρτινίκαΜαυριτανίαΜονσεράτΜάλταΜαυρίκιοςΜαλδίβεςΜαλάουιΜεξικόΜαλαι" +
+ "σίαΜοζαμβίκηΝαμίμπιαΝέα ΚαληδονίαΝίγηραςΝήσος ΝόρφολκΝιγηρίαΝικαράγουαΟ" +
+ "λλανδίαΝορβηγίαΝεπάλΝαουρούΝιούεΝέα ΖηλανδίαΟμάνΠαναμάςΠερούΓαλλική Πολ" +
+ "υνησίαΠαπούα Νέα ΓουινέαΦιλιππίνεςΠακιστάνΠολωνίαΣεν Πιερ και ΜικελόνΝή" +
+ "σοι ΠίτκερνΠουέρτο ΡίκοΠαλαιστινιακά ΕδάφηΠορτογαλίαΠαλάουΠαραγουάηΚατά" +
+ "ρΠεριφερειακή ΩκεανίαΡεϊνιόνΡουμανίαΣερβίαΡωσίαΡουάνταΣαουδική ΑραβίαΝή" +
+ "σοι ΣολομώντοςΣεϋχέλλεςΣουδάνΣουηδίαΣιγκαπούρηΑγία ΕλένηΣλοβενίαΣβάλμπα" +
+ "ρντ και Γιαν ΜαγιένΣλοβακίαΣιέρα ΛεόνεΆγιος ΜαρίνοςΣενεγάληΣομαλίαΣουρι" +
+ "νάμΝότιο ΣουδάνΣάο Τομέ και ΠρίνσιπεΕλ ΣαλβαδόρΆγιος Μαρτίνος (Ολλανδικ" +
+ "ό τμήμα)ΣυρίαΣουαζιλάνδηΤριστάν ντα ΚούνιαΝήσοι Τερκ και ΚάικοςΤσαντΓαλ" +
+ "λικές περιοχές του νοτίου ημισφαιρίουΤόγκοΤαϊλάνδηΤατζικιστάνΤοκελάουΤι" +
+ "μόρ-ΛέστεΤουρκμενιστάνΤυνησίαΤόνγκαΤουρκίαΤρινιντάντ και ΤομπάγκοΤουβαλ" +
+ "ούΤαϊβάνΤανζανίαΟυκρανίαΟυγκάνταΑπομακρυσμένες Νησίδες ΗΠΑΗνωμένες Πολι" +
+ "τείεςΟυρουγουάηΟυζμπεκιστάνΒατικανόΆγιος Βικέντιος και ΓρεναδίνεςΒενεζο" +
+ "υέλαΒρετανικές Παρθένοι ΝήσοιΑμερικανικές Παρθένοι ΝήσοιΒιετνάμΒανουάτο" +
+ "υΟυάλις και ΦουτούναΣαμόαΚόσοβοΥεμένηΜαγιότΝότια ΑφρικήΖάμπιαΖιμπάμπουε" +
+ "Άγνωστη περιοχήΚόσμοςΑφρικήΒόρεια ΑμερικήΝότια ΑμερικήΩκεανίαΔυτική Αφρ" +
+ "ικήΚεντρική ΑμερικήΑνατολική ΑφρικήΒόρεια ΑφρικήΜέση ΑφρικήΝότιος Αφρικ" +
+ "ήΑμερικήΒόρειος ΑμερικήΚαραϊβικήΑνατολική ΑσίαΝότια ΑσίαΝοτιοανατολική " +
+ "ΑσίαΝότια ΕυρώπηΑυστραλασίαΜελανησίαΠεριοχή ΜικρονησίαςΠολυνησίαΑσίαΚεν" +
+ "τρική ΑσίαΔυτική ΑσίαΕυρώπηΑνατολική ΕυρώπηΒόρεια ΕυρώπηΔυτική ΕυρώπηΛα" +
+ "τινική Αμερική"
+
+var elRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001b, 0x0027, 0x0053, 0x0067, 0x0097, 0x00a9, 0x00b7,
+ 0x00c5, 0x00ea, 0x00f8, 0x010c, 0x011e, 0x013f, 0x014d, 0x015f,
+ 0x016d, 0x0182, 0x019a, 0x01bd, 0x01d3, 0x01eb, 0x01f7, 0x0212,
+ 0x0224, 0x0234, 0x0248, 0x0254, 0x0277, 0x0289, 0x0299, 0x02a7,
+ 0x02cc, 0x02dc, 0x02ec, 0x02fa, 0x0311, 0x0325, 0x0339, 0x0345,
+ 0x0353, 0x0379, 0x0396, 0x03cb, 0x03ec, 0x03fa, 0x041b, 0x042e,
+ 0x0436, 0x0446, 0x044e, 0x045e, 0x047b, 0x048e, 0x0498, 0x04b9,
+ 0x04c9, 0x04f5, 0x0501, 0x0524, 0x0534, 0x0551, 0x0563, 0x056d,
+ // Entry 40 - 7F
+ 0x057f, 0x05a8, 0x05b6, 0x05d6, 0x05e6, 0x05f4, 0x0604, 0x061d,
+ 0x062d, 0x063b, 0x064b, 0x0668, 0x067a, 0x0684, 0x069d, 0x06b1,
+ 0x06c8, 0x06d4, 0x06e2, 0x0701, 0x070f, 0x071d, 0x073a, 0x0748,
+ 0x0752, 0x0764, 0x0778, 0x0786, 0x0794, 0x07aa, 0x07cb, 0x07d7,
+ 0x0822, 0x0836, 0x0842, 0x085f, 0x086d, 0x0894, 0x08c7, 0x08d5,
+ 0x08e3, 0x08eb, 0x08fb, 0x0916, 0x0928, 0x0938, 0x0944, 0x0955,
+ 0x095f, 0x099a, 0x09a2, 0x09aa, 0x09ba, 0x09c6, 0x09d2, 0x09e2,
+ 0x09f2, 0x0a00, 0x0a0a, 0x0a1c, 0x0a2c, 0x0a3e, 0x0a4c, 0x0a7f,
+ // Entry 80 - BF
+ 0x0a96, 0x0aab, 0x0ab9, 0x0ad0, 0x0ae2, 0x0aea, 0x0af8, 0x0b0d,
+ 0x0b23, 0x0b34, 0x0b42, 0x0b4e, 0x0b60, 0x0b78, 0x0b86, 0x0b90,
+ 0x0b9c, 0x0ba8, 0x0bb8, 0x0bce, 0x0c05, 0x0c1b, 0x0c32, 0x0c8a,
+ 0x0c92, 0x0cb1, 0x0cc1, 0x0cdd, 0x0d07, 0x0d19, 0x0d2d, 0x0d3d,
+ 0x0d47, 0x0d59, 0x0d69, 0x0d77, 0x0d83, 0x0d93, 0x0da5, 0x0db5,
+ 0x0dce, 0x0ddc, 0x0df5, 0x0e03, 0x0e17, 0x0e27, 0x0e37, 0x0e41,
+ 0x0e4f, 0x0e59, 0x0e70, 0x0e78, 0x0e86, 0x0e90, 0x0eb1, 0x0ed3,
+ 0x0ee7, 0x0ef7, 0x0f05, 0x0f2a, 0x0f43, 0x0f5a, 0x0f7f, 0x0f93,
+ // Entry C0 - FF
+ 0x0f9f, 0x0fb1, 0x0fbb, 0x0fe2, 0x0ff0, 0x1000, 0x100c, 0x1016,
+ 0x1024, 0x1041, 0x1060, 0x1072, 0x107e, 0x108c, 0x10a0, 0x10b3,
+ 0x10c3, 0x10f4, 0x1104, 0x1119, 0x1132, 0x1142, 0x1150, 0x1160,
+ 0x1177, 0x119e, 0x11b3, 0x11ee, 0x11f8, 0x120e, 0x1230, 0x1257,
+ 0x1261, 0x12ad, 0x12b7, 0x12c7, 0x12dd, 0x12ed, 0x1302, 0x131c,
+ 0x132a, 0x1336, 0x1344, 0x1370, 0x1380, 0x138c, 0x139c, 0x13ac,
+ 0x13bc, 0x13ee, 0x1411, 0x1425, 0x143d, 0x144d, 0x1486, 0x149a,
+ 0x14ca, 0x14fe, 0x150c, 0x151e, 0x1542, 0x154c, 0x1558, 0x1564,
+ // Entry 100 - 13F
+ 0x1570, 0x1587, 0x1593, 0x15a7, 0x15c4, 0x15d0, 0x15dc, 0x15f7,
+ 0x1610, 0x161e, 0x1637, 0x1656, 0x1675, 0x168e, 0x16a3, 0x16bc,
+ 0x16ca, 0x16e7, 0x16f9, 0x1714, 0x1727, 0x174c, 0x1763, 0x1779,
+ 0x178b, 0x17b0, 0x17c2, 0x17ca, 0x17e3, 0x17f8, 0x1804, 0x1823,
+ 0x183c, 0x1855, 0x1874,
+} // Size: 606 bytes
+
+var enRegionStr string = "" + // Size: 2940 bytes
+ "Ascension IslandAndorraUnited Arab EmiratesAfghanistanAntigua & BarbudaA" +
+ "nguillaAlbaniaArmeniaNetherlands AntillesAngolaAntarcticaArgentinaAmeric" +
+ "an SamoaAustriaAustraliaArubaÅland IslandsAzerbaijanBosnia & Herzegovina" +
+ "BarbadosBangladeshBelgiumBurkina FasoBulgariaBahrainBurundiBeninSt. Bart" +
+ "hélemyBermudaBruneiBoliviaCaribbean NetherlandsBrazilBahamasBhutanBouvet" +
+ " IslandBotswanaBelarusBelizeCanadaCocos (Keeling) IslandsCongo - Kinshas" +
+ "aCentral African RepublicCongo - BrazzavilleSwitzerlandCôte d’IvoireCook" +
+ " IslandsChileCameroonChinaColombiaClipperton IslandCosta RicaCubaCape Ve" +
+ "rdeCuraçaoChristmas IslandCyprusCzech RepublicGermanyDiego GarciaDjibout" +
+ "iDenmarkDominicaDominican RepublicAlgeriaCeuta & MelillaEcuadorEstoniaEg" +
+ "yptWestern SaharaEritreaSpainEthiopiaEuropean UnionFinlandFijiFalkland I" +
+ "slandsMicronesiaFaroe IslandsFranceGabonUnited KingdomGrenadaGeorgiaFren" +
+ "ch GuianaGuernseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupeEquatorial" +
+ " GuineaGreeceSouth Georgia & South Sandwich IslandsGuatemalaGuamGuinea-B" +
+ "issauGuyanaHong Kong SAR ChinaHeard & McDonald IslandsHondurasCroatiaHai" +
+ "tiHungaryCanary IslandsIndonesiaIrelandIsraelIsle of ManIndiaBritish Ind" +
+ "ian Ocean TerritoryIraqIranIcelandItalyJerseyJamaicaJordanJapanKenyaKyrg" +
+ "yzstanCambodiaKiribatiComorosSt. Kitts & NevisNorth KoreaSouth KoreaKuwa" +
+ "itCayman IslandsKazakhstanLaosLebanonSt. LuciaLiechtensteinSri LankaLibe" +
+ "riaLesothoLithuaniaLuxembourgLatviaLibyaMoroccoMonacoMoldovaMontenegroSt" +
+ ". MartinMadagascarMarshall IslandsMacedoniaMaliMyanmar (Burma)MongoliaMa" +
+ "cau SAR ChinaNorthern Mariana IslandsMartiniqueMauritaniaMontserratMalta" +
+ "MauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNiger" +
+ "Norfolk IslandNigeriaNicaraguaNetherlandsNorwayNepalNauruNiueNew Zealand" +
+ "OmanPanamaPeruFrench PolynesiaPapua New GuineaPhilippinesPakistanPolandS" +
+ "t. Pierre & MiquelonPitcairn IslandsPuerto RicoPalestinian TerritoriesPo" +
+ "rtugalPalauParaguayQatarOutlying OceaniaRéunionRomaniaSerbiaRussiaRwanda" +
+ "Saudi ArabiaSolomon IslandsSeychellesSudanSwedenSingaporeSt. HelenaSlove" +
+ "niaSvalbard & Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurin" +
+ "ameSouth SudanSão Tomé & PríncipeEl SalvadorSint MaartenSyriaSwazilandTr" +
+ "istan da CunhaTurks & Caicos IslandsChadFrench Southern TerritoriesTogoT" +
+ "hailandTajikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTurkeyTrinida" +
+ "d & TobagoTuvaluTaiwanTanzaniaUkraineUgandaU.S. Outlying IslandsUnited S" +
+ "tatesUruguayUzbekistanVatican CitySt. Vincent & GrenadinesVenezuelaBriti" +
+ "sh Virgin IslandsU.S. Virgin IslandsVietnamVanuatuWallis & FutunaSamoaKo" +
+ "sovoYemenMayotteSouth AfricaZambiaZimbabweUnknown RegionWorldAfricaNorth" +
+ " AmericaSouth AmericaOceaniaWestern AfricaCentral AmericaEastern AfricaN" +
+ "orthern AfricaMiddle AfricaSouthern AfricaAmericasNorthern AmericaCaribb" +
+ "eanEastern AsiaSouthern AsiaSoutheast AsiaSouthern EuropeAustralasiaMela" +
+ "nesiaMicronesian RegionPolynesiaAsiaCentral AsiaWestern AsiaEuropeEaster" +
+ "n EuropeNorthern EuropeWestern EuropeLatin America"
+
+var enRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0017, 0x002b, 0x0036, 0x0047, 0x004f, 0x0056,
+ 0x005d, 0x0071, 0x0077, 0x0081, 0x008a, 0x0098, 0x009f, 0x00a8,
+ 0x00ad, 0x00bb, 0x00c5, 0x00d9, 0x00e1, 0x00eb, 0x00f2, 0x00fe,
+ 0x0106, 0x010d, 0x0114, 0x0119, 0x0128, 0x012f, 0x0135, 0x013c,
+ 0x0151, 0x0157, 0x015e, 0x0164, 0x0171, 0x0179, 0x0180, 0x0186,
+ 0x018c, 0x01a3, 0x01b3, 0x01cb, 0x01de, 0x01e9, 0x01f9, 0x0205,
+ 0x020a, 0x0212, 0x0217, 0x021f, 0x0230, 0x023a, 0x023e, 0x0248,
+ 0x0250, 0x0260, 0x0266, 0x0274, 0x027b, 0x0287, 0x028f, 0x0296,
+ // Entry 40 - 7F
+ 0x029e, 0x02b0, 0x02b7, 0x02c6, 0x02cd, 0x02d4, 0x02d9, 0x02e7,
+ 0x02ee, 0x02f3, 0x02fb, 0x0309, 0x0310, 0x0314, 0x0324, 0x032e,
+ 0x033b, 0x0341, 0x0346, 0x0354, 0x035b, 0x0362, 0x036f, 0x0377,
+ 0x037c, 0x0385, 0x038e, 0x0394, 0x039a, 0x03a4, 0x03b5, 0x03bb,
+ 0x03e1, 0x03ea, 0x03ee, 0x03fb, 0x0401, 0x0414, 0x042c, 0x0434,
+ 0x043b, 0x0440, 0x0447, 0x0455, 0x045e, 0x0465, 0x046b, 0x0476,
+ 0x047b, 0x0499, 0x049d, 0x04a1, 0x04a8, 0x04ad, 0x04b3, 0x04ba,
+ 0x04c0, 0x04c5, 0x04ca, 0x04d4, 0x04dc, 0x04e4, 0x04eb, 0x04fc,
+ // Entry 80 - BF
+ 0x0507, 0x0512, 0x0518, 0x0526, 0x0530, 0x0534, 0x053b, 0x0544,
+ 0x0551, 0x055a, 0x0561, 0x0568, 0x0571, 0x057b, 0x0581, 0x0586,
+ 0x058d, 0x0593, 0x059a, 0x05a4, 0x05ae, 0x05b8, 0x05c8, 0x05d1,
+ 0x05d5, 0x05e4, 0x05ec, 0x05fb, 0x0613, 0x061d, 0x0627, 0x0631,
+ 0x0636, 0x063f, 0x0647, 0x064d, 0x0653, 0x065b, 0x0665, 0x066c,
+ 0x0679, 0x067e, 0x068c, 0x0693, 0x069c, 0x06a7, 0x06ad, 0x06b2,
+ 0x06b7, 0x06bb, 0x06c6, 0x06ca, 0x06d0, 0x06d4, 0x06e4, 0x06f4,
+ 0x06ff, 0x0707, 0x070d, 0x0722, 0x0732, 0x073d, 0x0754, 0x075c,
+ // Entry C0 - FF
+ 0x0761, 0x0769, 0x076e, 0x077e, 0x0786, 0x078d, 0x0793, 0x0799,
+ 0x079f, 0x07ab, 0x07ba, 0x07c4, 0x07c9, 0x07cf, 0x07d8, 0x07e2,
+ 0x07ea, 0x07fe, 0x0806, 0x0812, 0x081c, 0x0823, 0x082a, 0x0832,
+ 0x083d, 0x0853, 0x085e, 0x086a, 0x086f, 0x0878, 0x0888, 0x089e,
+ 0x08a2, 0x08bd, 0x08c1, 0x08c9, 0x08d3, 0x08da, 0x08e5, 0x08f1,
+ 0x08f8, 0x08fd, 0x0903, 0x0914, 0x091a, 0x0920, 0x0928, 0x092f,
+ 0x0935, 0x094a, 0x0957, 0x095e, 0x0968, 0x0974, 0x098c, 0x0995,
+ 0x09ab, 0x09be, 0x09c5, 0x09cc, 0x09db, 0x09e0, 0x09e6, 0x09eb,
+ // Entry 100 - 13F
+ 0x09f2, 0x09fe, 0x0a04, 0x0a0c, 0x0a1a, 0x0a1f, 0x0a25, 0x0a32,
+ 0x0a3f, 0x0a46, 0x0a54, 0x0a63, 0x0a71, 0x0a80, 0x0a8d, 0x0a9c,
+ 0x0aa4, 0x0ab4, 0x0abd, 0x0ac9, 0x0ad6, 0x0ae4, 0x0af3, 0x0afe,
+ 0x0b07, 0x0b19, 0x0b22, 0x0b26, 0x0b32, 0x0b3e, 0x0b44, 0x0b52,
+ 0x0b61, 0x0b6f, 0x0b7c,
+} // Size: 606 bytes
+
+const enGBRegionStr string = ""
+
+var enGBRegionIdx = []uint16{ // 0 elements
+
+} // Size: 24 bytes
+
+var esRegionStr string = "" + // Size: 3128 bytes
+ "Isla de la AscensiónAndorraEmiratos Árabes UnidosAfganistánAntigua y Bar" +
+ "budaAnguilaAlbaniaArmeniaAntillas NeerlandesasAngolaAntártidaArgentinaSa" +
+ "moa AmericanaAustriaAustraliaArubaIslas ÅlandAzerbaiyánBosnia-Herzegovin" +
+ "aBarbadosBangladésBélgicaBurkina FasoBulgariaBaréinBurundiBenínSan Barto" +
+ "loméBermudasBrunéiBoliviaCaribe neerlandésBrasilBahamasButánIsla BouvetB" +
+ "otsuanaBielorrusiaBeliceCanadáIslas CocosRepública Democrática del Congo" +
+ "República CentroafricanaRepública del CongoSuizaCosta de MarfilIslas Coo" +
+ "kChileCamerúnChinaColombiaIsla ClippertonCosta RicaCubaCabo VerdeCurazao" +
+ "Isla de NavidadChipreRepública ChecaAlemaniaDiego GarcíaYibutiDinamarcaD" +
+ "ominicaRepública DominicanaArgeliaCeuta y MelillaEcuadorEstoniaEgiptoSáh" +
+ "ara OccidentalEritreaEspañaEtiopíaUnión EuropeaFinlandiaFiyiIslas Malvin" +
+ "asMicronesiaIslas FeroeFranciaGabónReino UnidoGranadaGeorgiaGuayana Fran" +
+ "cesaGuerneseyGhanaGibraltarGroenlandiaGambiaGuineaGuadalupeGuinea Ecuato" +
+ "rialGreciaIslas Georgia del Sur y Sandwich del SurGuatemalaGuamGuinea-Bi" +
+ "sáuGuyanaRAE de Hong Kong (China)Islas Heard y McDonaldHondurasCroaciaHa" +
+ "itíHungríaCanariasIndonesiaIrlandaIsraelIsla de ManIndiaTerritorio Britá" +
+ "nico del Océano ÍndicoIrakIránIslandiaItaliaJerseyJamaicaJordaniaJapónKe" +
+ "niaKirguistánCamboyaKiribatiComorasSan Cristóbal y NievesCorea del Norte" +
+ "Corea del SurKuwaitIslas CaimánKazajistánLaosLíbanoSanta LucíaLiechtenst" +
+ "einSri LankaLiberiaLesotoLituaniaLuxemburgoLetoniaLibiaMarruecosMónacoMo" +
+ "ldaviaMontenegroSan MartínMadagascarIslas MarshallMacedoniaMaliMyanmar (" +
+ "Birmania)MongoliaRAE de Macao (China)Islas Marianas del NorteMartinicaMa" +
+ "uritaniaMontserratMaltaMauricioMaldivasMalauiMéxicoMalasiaMozambiqueNami" +
+ "biaNueva CaledoniaNígerIsla NorfolkNigeriaNicaraguaPaíses BajosNoruegaNe" +
+ "palNauruNiueNueva ZelandaOmánPanamáPerúPolinesia FrancesaPapúa Nueva Gui" +
+ "neaFilipinasPakistánPoloniaSan Pedro y MiquelónIslas PitcairnPuerto Rico" +
+ "Territorios PalestinosPortugalPalaosParaguayCatarTerritorios alejados de" +
+ " OceaníaReuniónRumaníaSerbiaRusiaRuandaArabia SaudíIslas SalomónSeychell" +
+ "esSudánSueciaSingapurSanta ElenaEsloveniaSvalbard y Jan MayenEslovaquiaS" +
+ "ierra LeonaSan MarinoSenegalSomaliaSurinamSudán del SurSanto Tomé y Prín" +
+ "cipeEl SalvadorSint MaartenSiriaSuazilandiaTristán da CunhaIslas Turcas " +
+ "y CaicosChadTerritorios Australes FrancesesTogoTailandiaTayikistánTokela" +
+ "uTimor OrientalTurkmenistánTúnezTongaTurquíaTrinidad y TobagoTuvaluTaiwá" +
+ "nTanzaniaUcraniaUgandaIslas menores alejadas de EE. UU.Estados UnidosUru" +
+ "guayUzbekistánCiudad del VaticanoSan Vicente y las GranadinasVenezuelaIs" +
+ "las Vírgenes BritánicasIslas Vírgenes de EE. UU.VietnamVanuatuWallis y F" +
+ "utunaSamoaKosovoYemenMayotteSudáfricaZambiaZimbabueRegión desconocidaMun" +
+ "doÁfricaAmérica del NorteSudaméricaOceaníaÁfrica occidentalCentroamérica" +
+ "África orientalÁfrica septentrionalÁfrica centralÁfrica meridionalAméri" +
+ "caNorteaméricaCaribeAsia orientalAsia meridionalSudeste asiáticoEuropa m" +
+ "eridionalAustralasiaMelanesiaRegión de MicronesiaPolinesiaAsiaAsia centr" +
+ "alAsia occidentalEuropaEuropa orientalEuropa septentrionalEuropa occiden" +
+ "talLatinoamérica"
+
+var esRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0015, 0x001c, 0x0033, 0x003e, 0x004f, 0x0056, 0x005d,
+ 0x0064, 0x0079, 0x007f, 0x0089, 0x0092, 0x00a1, 0x00a8, 0x00b1,
+ 0x00b6, 0x00c2, 0x00cd, 0x00df, 0x00e7, 0x00f1, 0x00f9, 0x0105,
+ 0x010d, 0x0114, 0x011b, 0x0121, 0x012f, 0x0137, 0x013e, 0x0145,
+ 0x0157, 0x015d, 0x0164, 0x016a, 0x0175, 0x017d, 0x0188, 0x018e,
+ 0x0195, 0x01a0, 0x01c1, 0x01da, 0x01ee, 0x01f3, 0x0202, 0x020c,
+ 0x0211, 0x0219, 0x021e, 0x0226, 0x0235, 0x023f, 0x0243, 0x024d,
+ 0x0254, 0x0263, 0x0269, 0x0279, 0x0281, 0x028e, 0x0294, 0x029d,
+ // Entry 40 - 7F
+ 0x02a5, 0x02ba, 0x02c1, 0x02d0, 0x02d7, 0x02de, 0x02e4, 0x02f6,
+ 0x02fd, 0x0304, 0x030c, 0x031a, 0x0323, 0x0327, 0x0335, 0x033f,
+ 0x034a, 0x0351, 0x0357, 0x0362, 0x0369, 0x0370, 0x0380, 0x0389,
+ 0x038e, 0x0397, 0x03a2, 0x03a8, 0x03ae, 0x03b7, 0x03c8, 0x03ce,
+ 0x03f6, 0x03ff, 0x0403, 0x0410, 0x0416, 0x042e, 0x0444, 0x044c,
+ 0x0453, 0x0459, 0x0461, 0x0469, 0x0472, 0x0479, 0x047f, 0x048a,
+ 0x048f, 0x04b8, 0x04bc, 0x04c1, 0x04c9, 0x04cf, 0x04d5, 0x04dc,
+ 0x04e4, 0x04ea, 0x04ef, 0x04fa, 0x0501, 0x0509, 0x0510, 0x0527,
+ // Entry 80 - BF
+ 0x0536, 0x0543, 0x0549, 0x0556, 0x0561, 0x0565, 0x056c, 0x0578,
+ 0x0585, 0x058e, 0x0595, 0x059b, 0x05a3, 0x05ad, 0x05b4, 0x05b9,
+ 0x05c2, 0x05c9, 0x05d1, 0x05db, 0x05e6, 0x05f0, 0x05fe, 0x0607,
+ 0x060b, 0x061d, 0x0625, 0x0639, 0x0651, 0x065a, 0x0664, 0x066e,
+ 0x0673, 0x067b, 0x0683, 0x0689, 0x0690, 0x0697, 0x06a1, 0x06a8,
+ 0x06b7, 0x06bd, 0x06c9, 0x06d0, 0x06d9, 0x06e6, 0x06ed, 0x06f2,
+ 0x06f7, 0x06fb, 0x0708, 0x070d, 0x0714, 0x0719, 0x072b, 0x073e,
+ 0x0747, 0x0750, 0x0757, 0x076c, 0x077a, 0x0785, 0x079b, 0x07a3,
+ // Entry C0 - FF
+ 0x07a9, 0x07b1, 0x07b6, 0x07d6, 0x07de, 0x07e6, 0x07ec, 0x07f1,
+ 0x07f7, 0x0804, 0x0812, 0x081c, 0x0822, 0x0828, 0x0830, 0x083b,
+ 0x0844, 0x0858, 0x0862, 0x086e, 0x0878, 0x087f, 0x0886, 0x088d,
+ 0x089b, 0x08b2, 0x08bd, 0x08c9, 0x08ce, 0x08d9, 0x08ea, 0x08ff,
+ 0x0903, 0x0922, 0x0926, 0x092f, 0x093a, 0x0941, 0x094f, 0x095c,
+ 0x0962, 0x0967, 0x096f, 0x0980, 0x0986, 0x098d, 0x0995, 0x099c,
+ 0x09a2, 0x09c3, 0x09d1, 0x09d8, 0x09e3, 0x09f6, 0x0a12, 0x0a1b,
+ 0x0a36, 0x0a50, 0x0a57, 0x0a5e, 0x0a6d, 0x0a72, 0x0a78, 0x0a7d,
+ // Entry 100 - 13F
+ 0x0a84, 0x0a8e, 0x0a94, 0x0a9c, 0x0aaf, 0x0ab4, 0x0abb, 0x0acd,
+ 0x0ad8, 0x0ae0, 0x0af2, 0x0b00, 0x0b10, 0x0b25, 0x0b34, 0x0b46,
+ 0x0b4e, 0x0b5b, 0x0b61, 0x0b6e, 0x0b7d, 0x0b8e, 0x0b9f, 0x0baa,
+ 0x0bb3, 0x0bc8, 0x0bd1, 0x0bd5, 0x0be1, 0x0bf0, 0x0bf6, 0x0c05,
+ 0x0c19, 0x0c2a, 0x0c38,
+} // Size: 606 bytes
+
+const es419RegionStr string = ""
+
+var es419RegionIdx = []uint16{ // 0 elements
+
+} // Size: 24 bytes
+
+var etRegionStr string = "" + // Size: 2993 bytes
+ "Ascensioni saarAndorraAraabia ÜhendemiraadidAfganistanAntigua ja Barbuda" +
+ "AnguillaAlbaaniaArmeeniaHollandi AntillidAngolaAntarktisArgentinaAmeerik" +
+ "a SamoaAustriaAustraaliaArubaAhvenamaaAserbaidžaanBosnia ja Hertsegoviin" +
+ "aBarbadosBangladeshBelgiaBurkina FasoBulgaariaBahreinBurundiBeninSaint B" +
+ "arthélemyBermudaBruneiBoliiviaHollandi Kariibi mere saaredBrasiiliaBaham" +
+ "aBhutanBouvet’ saarBotswanaValgeveneBelizeKanadaKookossaaredKongo DVKesk" +
+ "-Aafrika VabariikKongo VabariikŠveitsCôte d’IvoireCooki saaredTšiiliKame" +
+ "runHiinaColombiaClippertoni saarCosta RicaKuubaRoheneemesaaredCuraçaoJõu" +
+ "lusaarKüprosTšehhiSaksamaaDiego GarciaDjiboutiTaaniDominicaDominikaani V" +
+ "abariikAlžeeriaCeuta ja MelillaEcuadorEestiEgiptusLääne-SaharaEritreaHis" +
+ "paaniaEtioopiaEuroopa LiitSoomeFidžiFalklandi saaredMikroneesiaFääri saa" +
+ "redPrantsusmaaGabonSuurbritanniaGrenadaGruusiaPrantsuse GuajaanaGuernsey" +
+ "GhanaGibraltarGröönimaaGambiaGuineaGuadeloupeEkvatoriaal-GuineaKreekaLõu" +
+ "na-Georgia ja Lõuna-Sandwichi saaredGuatemalaGuamGuinea-BissauGuyanaHong" +
+ "kongi erihalduspiirkondHeardi ja McDonaldi saaredHondurasHorvaatiaHaitiU" +
+ "ngariKanaari saaredIndoneesiaIirimaaIisraelMani saarIndiaBriti India ook" +
+ "eani alaIraakIraanIslandItaaliaJerseyJamaicaJordaaniaJaapanKeeniaKõrgõzs" +
+ "tanKambodžaKiribatiKomooridSaint Kitts ja NevisPõhja-KoreaLõuna-KoreaKuv" +
+ "eitKaimanisaaredKasahstanLaosLiibanonSaint LuciaLiechtensteinSri LankaLi" +
+ "beeriaLesothoLeeduLuksemburgLätiLiibüaMarokoMonacoMoldovaMontenegroSaint" +
+ "-MartinMadagaskarMarshalli SaaredMakedooniaMaliMyanmar (Birma)MongooliaM" +
+ "acau erihalduspiirkondPõhja-MariaanidMartiniqueMauritaaniaMontserratMalt" +
+ "aMauritiusMaldiividMalawiMehhikoMalaisiaMosambiikNamiibiaUus-KaledooniaN" +
+ "igerNorfolkNigeeriaNicaraguaHollandNorraNepalNauruNiueUus-MeremaaOmaanPa" +
+ "namaPeruuPrantsuse PolüneesiaPaapua Uus-GuineaFilipiinidPakistanPoolaSai" +
+ "nt Pierre ja MiquelonPitcairni saaredPuerto RicoPalestiina aladPortugalB" +
+ "elauParaguayKatarOkeaania hajasaaredRéunionRumeeniaSerbiaVenemaaRwandaSa" +
+ "udi AraabiaSaalomoni SaaredSeišellidSudaanRootsiSingapurSaint HelenaSlov" +
+ "eeniaSvalbard ja Jan MayenSlovakkiaSierra LeoneSan MarinoSenegalSomaalia" +
+ "SurinameLõuna-SudaanSão Tomé ja PríncipeEl SalvadorSint MaartenSüüriaSva" +
+ "asimaaTristan da CunhaTurks ja CaicosTšaadPrantsuse LõunaaladTogoTaiTadž" +
+ "ikistanTokelauIda-TimorTürkmenistanTuneesiaTongaTürgiTrinidad ja TobagoT" +
+ "uvaluTaiwanTansaaniaUkrainaUgandaÜhendriikide hajasaaredAmeerika Ühendri" +
+ "igidUruguayUsbekistanVatikanSaint Vincent ja GrenadiinidVenezuelaBriti N" +
+ "eitsisaaredUSA NeitsisaaredVietnamVanuatuWallis ja FutunaSamoaKosovoJeem" +
+ "enMayotteLõuna-Aafrika VabariikSambiaZimbabweTundmatu piirkondmaailmAafr" +
+ "ikaPõhja-AmeerikaLõuna-AmeerikaOkeaaniaLääne-AafrikaKesk-AmeerikaIda-Aaf" +
+ "rikaPõhja-AafrikaKesk-AafrikaLõuna-AafrikaAmeerikaAmeerika põhjaosaKarii" +
+ "bi piirkondIda-AasiaLõuna-AasiaKagu-AasiaLõuna-EuroopaAustralaasiaMelane" +
+ "esiaMikroneesia (piirkond)PolüneesiaAasiaKesk-AasiaLääne-AasiaEuroopaIda" +
+ "-EuroopaPõhja-EuroopaLääne-EuroopaLadina-Ameerika"
+
+var etRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0016, 0x002d, 0x0037, 0x0049, 0x0051, 0x0059,
+ 0x0061, 0x0072, 0x0078, 0x0081, 0x008a, 0x0098, 0x009f, 0x00a9,
+ 0x00ae, 0x00b7, 0x00c4, 0x00db, 0x00e3, 0x00ed, 0x00f3, 0x00ff,
+ 0x0108, 0x010f, 0x0116, 0x011b, 0x012c, 0x0133, 0x0139, 0x0141,
+ 0x015d, 0x0166, 0x016c, 0x0172, 0x0180, 0x0188, 0x0191, 0x0197,
+ 0x019d, 0x01a9, 0x01b1, 0x01c6, 0x01d4, 0x01db, 0x01eb, 0x01f7,
+ 0x01fe, 0x0205, 0x020a, 0x0212, 0x0222, 0x022c, 0x0231, 0x0240,
+ 0x0248, 0x0252, 0x0259, 0x0260, 0x0268, 0x0274, 0x027c, 0x0281,
+ // Entry 40 - 7F
+ 0x0289, 0x029d, 0x02a6, 0x02b6, 0x02bd, 0x02c2, 0x02c9, 0x02d7,
+ 0x02de, 0x02e7, 0x02ef, 0x02fb, 0x0300, 0x0306, 0x0316, 0x0321,
+ 0x032f, 0x033a, 0x033f, 0x034c, 0x0353, 0x035a, 0x036c, 0x0374,
+ 0x0379, 0x0382, 0x038d, 0x0393, 0x0399, 0x03a3, 0x03b5, 0x03bb,
+ 0x03e4, 0x03ed, 0x03f1, 0x03fe, 0x0404, 0x041f, 0x0439, 0x0441,
+ 0x044a, 0x044f, 0x0455, 0x0463, 0x046d, 0x0474, 0x047b, 0x0484,
+ 0x0489, 0x04a0, 0x04a5, 0x04aa, 0x04b0, 0x04b7, 0x04bd, 0x04c4,
+ 0x04cd, 0x04d3, 0x04d9, 0x04e5, 0x04ee, 0x04f6, 0x04fe, 0x0512,
+ // Entry 80 - BF
+ 0x051e, 0x052a, 0x0530, 0x053d, 0x0546, 0x054a, 0x0552, 0x055d,
+ 0x056a, 0x0573, 0x057b, 0x0582, 0x0587, 0x0591, 0x0596, 0x059d,
+ 0x05a3, 0x05a9, 0x05b0, 0x05ba, 0x05c6, 0x05d0, 0x05e0, 0x05ea,
+ 0x05ee, 0x05fd, 0x0606, 0x061d, 0x062d, 0x0637, 0x0642, 0x064c,
+ 0x0651, 0x065a, 0x0663, 0x0669, 0x0670, 0x0678, 0x0681, 0x0689,
+ 0x0697, 0x069c, 0x06a3, 0x06ab, 0x06b4, 0x06bb, 0x06c0, 0x06c5,
+ 0x06ca, 0x06ce, 0x06d9, 0x06de, 0x06e4, 0x06e9, 0x06fe, 0x070f,
+ 0x0719, 0x0721, 0x0726, 0x073e, 0x074e, 0x0759, 0x0768, 0x0770,
+ // Entry C0 - FF
+ 0x0775, 0x077d, 0x0782, 0x0795, 0x079d, 0x07a5, 0x07ab, 0x07b2,
+ 0x07b8, 0x07c5, 0x07d5, 0x07df, 0x07e5, 0x07eb, 0x07f3, 0x07ff,
+ 0x0808, 0x081d, 0x0826, 0x0832, 0x083c, 0x0843, 0x084b, 0x0853,
+ 0x0860, 0x0877, 0x0882, 0x088e, 0x0896, 0x089f, 0x08af, 0x08be,
+ 0x08c4, 0x08d8, 0x08dc, 0x08df, 0x08eb, 0x08f2, 0x08fb, 0x0908,
+ 0x0910, 0x0915, 0x091b, 0x092d, 0x0933, 0x0939, 0x0942, 0x0949,
+ 0x094f, 0x0967, 0x097c, 0x0983, 0x098d, 0x0994, 0x09b0, 0x09b9,
+ 0x09cb, 0x09db, 0x09e2, 0x09e9, 0x09f9, 0x09fe, 0x0a04, 0x0a0a,
+ // Entry 100 - 13F
+ 0x0a11, 0x0a28, 0x0a2e, 0x0a36, 0x0a47, 0x0a4d, 0x0a54, 0x0a63,
+ 0x0a72, 0x0a7a, 0x0a89, 0x0a96, 0x0aa1, 0x0aaf, 0x0abb, 0x0ac9,
+ 0x0ad1, 0x0ae3, 0x0af3, 0x0afc, 0x0b08, 0x0b12, 0x0b20, 0x0b2c,
+ 0x0b36, 0x0b4c, 0x0b57, 0x0b5c, 0x0b66, 0x0b73, 0x0b7a, 0x0b85,
+ 0x0b93, 0x0ba2, 0x0bb1,
+} // Size: 606 bytes
+
+var faRegionStr string = "" + // Size: 5002 bytes
+ "جزایر آسنسیونآندوراامارات متحدهٔ عربیافغانستانآنتیگوا و باربوداآنگویلاآل" +
+ "بانیارمنستانآنتیل هلندآنگولاجنوبگانآرژانتینساموآی امریکااتریشاسترالیاآر" +
+ "وباجزایر آلاندجمهوری آذربایجانبوسنی و هرزگوینباربادوسبنگلادشبلژیکبورکین" +
+ "افاسوبلغارستانبحرینبوروندیبنینسن بارتلمیبرمودابرونئیبولیویجزایر کارائیب" +
+ " هلندبرزیلباهامابوتانجزیرهٔ بووهبوتسوانابلاروسبلیزکاناداجزایر کوکوسکنگو " +
+ "- کینشاساجمهوری افریقای مرکزیکنگو - برازویلسوئیسساحل عاججزایر کوکشیلیکام" +
+ "رونچینکلمبیاجزایر کلیپرتونکاستاریکاکوباکیپ\u200cوردکوراسائوجزیرهٔ کریسم" +
+ "سقبرسجمهوری چکآلماندیه\u200cگو گارسیاجیبوتیدانمارکدومینیکاجمهوری دومینی" +
+ "کنالجزایرسبته و ملیلهاکوادوراستونیمصرصحرای غربیاریترهاسپانیااتیوپیاتحاد" +
+ "یهٔ اروپافنلاندفیجیجزایر فالکلندمیکرونزیجزایر فاروفرانسهگابنبریتانیاگرن" +
+ "اداگرجستانگویان فرانسهگرنزیغناجبل\u200cالطارقگرینلندگامبیاگینهگوادلوپگی" +
+ "نهٔ استوایییونانجورجیای جنوبی و جزایر ساندویچ جنوبیگواتمالاگوامگینهٔ بی" +
+ "سائوگویانهنگ\u200cکنگ، ناحیهٔ ویژهٔ حکومتی چینجزیرهٔ هرد و جزایر مک" +
+ "\u200cدونالدهندوراسکرواسیهائیتیمجارستانجزایر قناریاندونزیایرلنداسرائیلجز" +
+ "یرهٔ منهندقلمرو بریتانیا در اقیانوس هندعراقایرانایسلندایتالیاجرزیجامائی" +
+ "کااردنژاپنکنیاقرقیزستانکامبوجکیریباتیکوموروسنت کیتس و نویسکرهٔ شمالیکره" +
+ "ٔ جنوبیکویتجزایر کِیمنقزاقستانلائوسلبنانسنت لوسیالیختن\u200cاشتاینسری" +
+ "\u200cلانکالیبریالسوتولیتوانیلوکزامبورگلتونیلیبیمراکشموناکومولداویمونته" +
+ "\u200cنگروسنت مارتینماداگاسکارجزایر مارشالمقدونیهمالیمیانمار (برمه)مغولس" +
+ "تانماکائو، ناحیهٔ ویژهٔ حکومتی چینجزایر ماریانای شمالیمارتینیکموریتانیم" +
+ "ونت\u200cسراتمالتموریسمالدیومالاویمکزیکمالزیموزامبیکنامیبیاکالدونیای جد" +
+ "یدنیجرجزیرهٔ نورفولکنیجریهنیکاراگوئههلندنروژنپالنائورونیوئهنیوزیلندعمان" +
+ "پاناماپروپلی\u200cنزی فرانسهپاپوا گینهٔ نوفیلیپینپاکستانلهستانسن پیر و " +
+ "میکلنجزایر پیت\u200cکرنپورتوریکوسرزمین\u200cهای فلسطینیپرتغالپالائوپارا" +
+ "گوئهقطربخش\u200cهای دورافتادهٔ اقیانوسیهرئونیونرومانیصربستانروسیهرواندا" +
+ "عربستان سعودیجزایر سلیمانسیشلسودانسوئدسنگاپورسنت هلناسلوونیاسوالبارد و " +
+ "جان\u200cمایناسلواکیسیرالئونسان\u200cمارینوسنگالسومالیسورینامسودان جنوب" +
+ "یپرینسیپ و سائوتومهالسالوادورسنت مارتنسوریهسوازیلندتریستان دا کوناجزایر" +
+ " تورکس و کایکوسچادقلمروهای جنوبی فرانسهتوگوتایلندتاجیکستانتوکلائوتیمور-ل" +
+ "ستهترکمنستانتونستونگاترکیهترینیداد و توباگوتووالوتایوانتانزانیااوکراینا" +
+ "وگانداجزایر دورافتادهٔ ایالات متحدهایالات متحدهاروگوئهازبکستانواتیکانسن" +
+ "ت وینسنت و گرنادین\u200cهاونزوئلاجزایر ویرجین بریتانیاجزایر ویرجین ایال" +
+ "ات متحدهویتناموانواتووالیس و فوتوناساموآکوزوویمنمایوتافریقای جنوبیزامبی" +
+ "ازیمبابوهناحیهٔ نامشخصجهانافریقاامریکای شمالیامریکای جنوبیاقیانوسیهغرب " +
+ "افریقاامریکای مرکزیشرق افریقاشمال افریقامرکز افریقاجنوب افریقاامریکاشما" +
+ "ل امریکاکارائیبشرق آسیاجنوب آسیاجنوب شرق آسیاجنوب اروپااسترالزیملانزینا" +
+ "حیهٔ میکرونزیپلی\u200cنزیآسیاآسیای مرکزیغرب آسیااروپاشرق اروپاشمال اروپ" +
+ "اغرب اروپاامریکای لاتین"
+
+var faRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0019, 0x0025, 0x0047, 0x0059, 0x0079, 0x0087, 0x0093,
+ 0x00a3, 0x00b6, 0x00c2, 0x00d0, 0x00e0, 0x00f9, 0x0103, 0x0113,
+ 0x011d, 0x0132, 0x0151, 0x016d, 0x017d, 0x018b, 0x0195, 0x01ab,
+ 0x01bd, 0x01c7, 0x01d5, 0x01dd, 0x01f0, 0x01fc, 0x0208, 0x0214,
+ 0x0236, 0x0240, 0x024c, 0x0256, 0x026b, 0x027b, 0x0287, 0x028f,
+ 0x029b, 0x02b0, 0x02c9, 0x02ef, 0x0308, 0x0312, 0x0321, 0x0332,
+ 0x033a, 0x0346, 0x034c, 0x0358, 0x0373, 0x0385, 0x038d, 0x039c,
+ 0x03ac, 0x03c5, 0x03cd, 0x03de, 0x03e8, 0x0402, 0x040e, 0x041c,
+ // Entry 40 - 7F
+ 0x042c, 0x0449, 0x0457, 0x046d, 0x047b, 0x0487, 0x048d, 0x04a0,
+ 0x04ac, 0x04ba, 0x04c6, 0x04e1, 0x04ed, 0x04f5, 0x050e, 0x051e,
+ 0x0531, 0x053d, 0x0545, 0x0555, 0x0561, 0x056f, 0x0586, 0x0590,
+ 0x0596, 0x05ab, 0x05b9, 0x05c5, 0x05cd, 0x05db, 0x05f4, 0x05fe,
+ 0x063f, 0x064f, 0x0657, 0x066e, 0x0678, 0x06b5, 0x06ea, 0x06f8,
+ 0x0704, 0x0710, 0x0720, 0x0735, 0x0743, 0x074f, 0x075d, 0x076e,
+ 0x0774, 0x07aa, 0x07b2, 0x07bc, 0x07c8, 0x07d6, 0x07de, 0x07ee,
+ 0x07f6, 0x07fe, 0x0806, 0x0818, 0x0824, 0x0834, 0x0840, 0x085b,
+ // Entry 80 - BF
+ 0x086e, 0x0881, 0x0889, 0x089e, 0x08ae, 0x08b8, 0x08c2, 0x08d3,
+ 0x08ec, 0x08ff, 0x090b, 0x0915, 0x0923, 0x0937, 0x0941, 0x0949,
+ 0x0953, 0x095f, 0x096d, 0x0982, 0x0995, 0x09a9, 0x09c0, 0x09ce,
+ 0x09d6, 0x09ef, 0x09ff, 0x0a39, 0x0a5f, 0x0a6f, 0x0a7f, 0x0a92,
+ 0x0a9a, 0x0aa4, 0x0ab0, 0x0abc, 0x0ac6, 0x0ad0, 0x0ae0, 0x0aee,
+ 0x0b09, 0x0b11, 0x0b2c, 0x0b38, 0x0b4c, 0x0b54, 0x0b5c, 0x0b64,
+ 0x0b70, 0x0b7a, 0x0b8a, 0x0b92, 0x0b9e, 0x0ba4, 0x0bc0, 0x0bda,
+ 0x0be8, 0x0bf6, 0x0c02, 0x0c1b, 0x0c35, 0x0c47, 0x0c6b, 0x0c77,
+ // Entry C0 - FF
+ 0x0c83, 0x0c93, 0x0c99, 0x0cd0, 0x0cde, 0x0cea, 0x0cf8, 0x0d02,
+ 0x0d0e, 0x0d27, 0x0d3e, 0x0d46, 0x0d50, 0x0d58, 0x0d66, 0x0d73,
+ 0x0d81, 0x0da8, 0x0db6, 0x0dc6, 0x0ddb, 0x0de5, 0x0df1, 0x0dff,
+ 0x0e14, 0x0e36, 0x0e4a, 0x0e5b, 0x0e65, 0x0e75, 0x0e91, 0x0eb6,
+ 0x0ebc, 0x0ee4, 0x0eec, 0x0ef8, 0x0f0a, 0x0f18, 0x0f2b, 0x0f3d,
+ 0x0f45, 0x0f4f, 0x0f59, 0x0f79, 0x0f85, 0x0f91, 0x0fa1, 0x0faf,
+ 0x0fbd, 0x0ff4, 0x100b, 0x1019, 0x1029, 0x1037, 0x1063, 0x1071,
+ 0x1099, 0x10c8, 0x10d4, 0x10e2, 0x10fc, 0x1106, 0x1110, 0x1116,
+ // Entry 100 - 13F
+ 0x1120, 0x1139, 0x1145, 0x1155, 0x116e, 0x1176, 0x1182, 0x119b,
+ 0x11b4, 0x11c6, 0x11d9, 0x11f2, 0x1205, 0x121a, 0x122f, 0x1244,
+ 0x1250, 0x1265, 0x1273, 0x1282, 0x1293, 0x12ab, 0x12be, 0x12ce,
+ 0x12da, 0x12f7, 0x1306, 0x130e, 0x1323, 0x1332, 0x133c, 0x134d,
+ 0x1360, 0x1371, 0x138a,
+} // Size: 606 bytes
+
+var fiRegionStr string = "" + // Size: 3017 bytes
+ "Ascension-saariAndorraArabiemiirikunnatAfganistanAntigua ja BarbudaAngui" +
+ "llaAlbaniaArmeniaAlankomaiden AntillitAngolaAntarktisArgentiinaAmerikan " +
+ "SamoaItävaltaAustraliaArubaAhvenanmaaAzerbaidžanBosnia ja HertsegovinaBa" +
+ "rbadosBangladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint-Barth" +
+ "élemyBermudaBruneiBoliviaKaribian AlankomaatBrasiliaBahamaBhutanBouvet’" +
+ "nsaariBotswanaValko-VenäjäBelizeKanadaKookossaaret (Keelingsaaret)Kongon" +
+ " demokraattinen tasavaltaKeski-Afrikan tasavaltaKongon tasavaltaSveitsiN" +
+ "orsunluurannikkoCookinsaaretChileKamerunKiinaKolumbiaClippertoninsaariCo" +
+ "sta RicaKuubaKap VerdeCuraçaoJoulusaariKyprosTšekkiSaksaDiego GarciaDjib" +
+ "outiTanskaDominicaDominikaaninen tasavaltaAlgeriaCeuta ja MelillaEcuador" +
+ "ViroEgyptiLänsi-SaharaEritreaEspanjaEtiopiaEuroopan unioniSuomiFidžiFalk" +
+ "landinsaaretMikronesian liittovaltioFärsaaretRanskaGabonIso-BritanniaGre" +
+ "nadaGeorgiaRanskan GuayanaGuernseyGhanaGibraltarGrönlantiGambiaGuineaGua" +
+ "deloupePäiväntasaajan GuineaKreikkaEtelä-Georgia ja Eteläiset Sandwichsa" +
+ "aretGuatemalaGuamGuinea-BissauGuyanaHongkong – Kiinan e.h.a.Heard ja McD" +
+ "onaldinsaaretHondurasKroatiaHaitiUnkariKanariansaaretIndonesiaIrlantiIsr" +
+ "aelMansaariIntiaBrittiläinen Intian valtameren alueIrakIranIslantiItalia" +
+ "JerseyJamaikaJordaniaJapaniKeniaKirgisiaKambodžaKiribatiKomoritSaint Kit" +
+ "ts ja NevisPohjois-KoreaEtelä-KoreaKuwaitCaymansaaretKazakstanLaosLibano" +
+ "nSaint LuciaLiechtensteinSri LankaLiberiaLesothoLiettuaLuxemburgLatviaLi" +
+ "byaMarokkoMonacoMoldovaMontenegroSaint-MartinMadagaskarMarshallinsaaretM" +
+ "akedoniaMaliMyanmar (Burma)MongoliaMacao – Kiinan e.h.a.Pohjois-Mariaani" +
+ "tMartiniqueMauritaniaMontserratMaltaMauritiusMalediivitMalawiMeksikoMale" +
+ "siaMosambikNamibiaUusi-KaledoniaNigerNorfolkinsaariNigeriaNicaraguaAlank" +
+ "omaatNorjaNepalNauruNiueUusi-SeelantiOmanPanamaPeruRanskan PolynesiaPapu" +
+ "a-Uusi-GuineaFilippiinitPakistanPuolaSaint-Pierre ja MiquelonPitcairnPue" +
+ "rto RicoPalestiinalaisalueetPortugaliPalauParaguayQatarulkomeriRéunionRo" +
+ "maniaSerbiaVenäjäRuandaSaudi-ArabiaSalomonsaaretSeychellitSudanRuotsiSin" +
+ "gaporeSaint HelenaSloveniaHuippuvuoret ja Jan MayenSlovakiaSierra LeoneS" +
+ "an MarinoSenegalSomaliaSurinamEtelä-SudanSão Tomé ja PríncipeEl Salvador" +
+ "Sint MaartenSyyriaSwazimaaTristan da CunhaTurks- ja CaicossaaretTšadRans" +
+ "kan eteläiset alueetTogoThaimaaTadžikistanTokelauItä-TimorTurkmenistanTu" +
+ "nisiaTongaTurkkiTrinidad ja TobagoTuvaluTaiwanTansaniaUkrainaUgandaYhdys" +
+ "valtain erillissaaretYhdysvallatUruguayUzbekistanVatikaaniSaint Vincent " +
+ "ja GrenadiinitVenezuelaBrittiläiset NeitsytsaaretYhdysvaltain Neitsytsaa" +
+ "retVietnamVanuatuWallis ja FutunaSamoaKosovoJemenMayotteEtelä-AfrikkaSam" +
+ "biaZimbabwetuntematon aluemaailmaAfrikkaPohjois-AmerikkaEtelä-AmerikkaOs" +
+ "eaniaLänsi-AfrikkaVäli-AmerikkaItä-AfrikkaPohjois-AfrikkaKeski-Afrikkaet" +
+ "eläinen AfrikkaAmerikkapohjoinen AmerikkaKaribiaItä-AasiaEtelä-AasiaKaak" +
+ "kois-AasiaEtelä-EurooppaAustralaasiaMelanesiaMikronesiaPolynesiaAasiaKes" +
+ "ki-AasiaLänsi-AasiaEurooppaItä-EurooppaPohjois-EurooppaLänsi-EurooppaLat" +
+ "inalainen Amerikka"
+
+var fiRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0016, 0x0027, 0x0031, 0x0043, 0x004b, 0x0052,
+ 0x0059, 0x006e, 0x0074, 0x007d, 0x0087, 0x0095, 0x009e, 0x00a7,
+ 0x00ac, 0x00b6, 0x00c2, 0x00d8, 0x00e0, 0x00ea, 0x00f0, 0x00fc,
+ 0x0104, 0x010b, 0x0112, 0x0117, 0x0128, 0x012f, 0x0135, 0x013c,
+ 0x014f, 0x0157, 0x015d, 0x0163, 0x0172, 0x017a, 0x0188, 0x018e,
+ 0x0194, 0x01b0, 0x01cf, 0x01e6, 0x01f6, 0x01fd, 0x020e, 0x021a,
+ 0x021f, 0x0226, 0x022b, 0x0233, 0x0244, 0x024e, 0x0253, 0x025c,
+ 0x0264, 0x026e, 0x0274, 0x027b, 0x0280, 0x028c, 0x0294, 0x029a,
+ // Entry 40 - 7F
+ 0x02a2, 0x02ba, 0x02c1, 0x02d1, 0x02d8, 0x02dc, 0x02e2, 0x02ef,
+ 0x02f6, 0x02fd, 0x0304, 0x0313, 0x0318, 0x031e, 0x032e, 0x0346,
+ 0x0350, 0x0356, 0x035b, 0x0368, 0x036f, 0x0376, 0x0385, 0x038d,
+ 0x0392, 0x039b, 0x03a5, 0x03ab, 0x03b1, 0x03bb, 0x03d2, 0x03d9,
+ 0x0404, 0x040d, 0x0411, 0x041e, 0x0424, 0x043e, 0x0457, 0x045f,
+ 0x0466, 0x046b, 0x0471, 0x047f, 0x0488, 0x048f, 0x0495, 0x049d,
+ 0x04a2, 0x04c6, 0x04ca, 0x04ce, 0x04d5, 0x04db, 0x04e1, 0x04e8,
+ 0x04f0, 0x04f6, 0x04fb, 0x0503, 0x050c, 0x0514, 0x051b, 0x052f,
+ // Entry 80 - BF
+ 0x053c, 0x0548, 0x054e, 0x055a, 0x0563, 0x0567, 0x056e, 0x0579,
+ 0x0586, 0x058f, 0x0596, 0x059d, 0x05a4, 0x05ad, 0x05b3, 0x05b8,
+ 0x05bf, 0x05c5, 0x05cc, 0x05d6, 0x05e2, 0x05ec, 0x05fc, 0x0605,
+ 0x0609, 0x0618, 0x0620, 0x0637, 0x0648, 0x0652, 0x065c, 0x0666,
+ 0x066b, 0x0674, 0x067e, 0x0684, 0x068b, 0x0692, 0x069a, 0x06a1,
+ 0x06af, 0x06b4, 0x06c2, 0x06c9, 0x06d2, 0x06dc, 0x06e1, 0x06e6,
+ 0x06eb, 0x06ef, 0x06fc, 0x0700, 0x0706, 0x070a, 0x071b, 0x072c,
+ 0x0737, 0x073f, 0x0744, 0x075c, 0x0764, 0x076f, 0x0783, 0x078c,
+ // Entry C0 - FF
+ 0x0791, 0x0799, 0x079e, 0x07a6, 0x07ae, 0x07b5, 0x07bb, 0x07c3,
+ 0x07c9, 0x07d5, 0x07e2, 0x07ec, 0x07f1, 0x07f7, 0x0800, 0x080c,
+ 0x0814, 0x082d, 0x0835, 0x0841, 0x084b, 0x0852, 0x0859, 0x0860,
+ 0x086c, 0x0883, 0x088e, 0x089a, 0x08a0, 0x08a8, 0x08b8, 0x08ce,
+ 0x08d3, 0x08ec, 0x08f0, 0x08f7, 0x0903, 0x090a, 0x0914, 0x0920,
+ 0x0927, 0x092c, 0x0932, 0x0944, 0x094a, 0x0950, 0x0958, 0x095f,
+ 0x0965, 0x097f, 0x098a, 0x0991, 0x099b, 0x09a4, 0x09c0, 0x09c9,
+ 0x09e4, 0x09fe, 0x0a05, 0x0a0c, 0x0a1c, 0x0a21, 0x0a27, 0x0a2c,
+ // Entry 100 - 13F
+ 0x0a33, 0x0a41, 0x0a47, 0x0a4f, 0x0a5e, 0x0a65, 0x0a6c, 0x0a7c,
+ 0x0a8b, 0x0a92, 0x0aa0, 0x0aae, 0x0aba, 0x0ac9, 0x0ad6, 0x0ae8,
+ 0x0af0, 0x0b02, 0x0b09, 0x0b13, 0x0b1f, 0x0b2d, 0x0b3c, 0x0b48,
+ 0x0b51, 0x0b5b, 0x0b64, 0x0b69, 0x0b74, 0x0b80, 0x0b88, 0x0b95,
+ 0x0ba5, 0x0bb4, 0x0bc9,
+} // Size: 606 bytes
+
+var filRegionStr string = "" + // Size: 3038 bytes
+ "Acsencion islandAndorraUnited Arab EmiratesAfghanistanAntigua and Barbud" +
+ "aAnguillaAlbaniaArmeniaNetherlands AntillesAngolaAntarcticaArgentinaAmer" +
+ "ican SamoaAustriaAustraliaArubaÅland IslandsAzerbaijanBosnia and Herzego" +
+ "vinaBarbadosBangladeshBelgiumBurkina FasoBulgariaBahrainBurundiBeninSain" +
+ "t BarthélemyBermudaBruneiBoliviaCaribbean NetherlandsBrazilBahamasBhutan" +
+ "Bouvet IslandBotswanaBelarusBelizeCanadaCocos (Keeling) IslandsCongo - K" +
+ "inshasaCentral African RepublicCongo - BrazzavilleSwitzerlandCôte d’Ivoi" +
+ "reCook IslandsChileCameroonChinaColombiaClipperton IslandCosta RicaCubaC" +
+ "ape VerdeCuraçaoChristmas IslandCyprusCzech RepublicGermanyDiego GarciaD" +
+ "jiboutiDenmarkDominicaDominican RepublicAlgeriaCeuta and MelillaEcuadorE" +
+ "stoniaEgyptKanlurang SaharaEritreaSpainEthiopiaEuropean UnionFinlandFiji" +
+ "Falkland IslandsMicronesiaFaroe IslandsFranceGabonUnited KingdomGrenadaG" +
+ "eorgiaFrench GuianaGuernseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupe" +
+ "Equatorial GuineaGreeceSouth Georgia and the South Sandwich IslandsGuate" +
+ "malaGuamGuinea-BissauGuyanaHong Kong SAR ChinaHeard Island and McDonald " +
+ "IslandsHondurasCroatiaHaitiHungaryCanary IslandIndonesiaIrelandIsraelIsl" +
+ "e of ManIndiaBritish Indian Ocean TerritoryIraqIranIcelandItalyJerseyJam" +
+ "aicaJordanJapanKenyaKyrgyzstanCambodiaKiribatiComorosSaint Kitts and Nev" +
+ "isHilagang KoreaTimog KoreaKuwaitCayman IslandsKazakhstanLaosLebanonSain" +
+ "t LuciaLiechtensteinSri LankaLiberiaLesothoLithuaniaLuxembourgLatviaLiby" +
+ "aMoroccoMonacoMoldovaMontenegroSaint MartinMadagascarMarshall IslandsMac" +
+ "edoniaMaliMyanmar (Burma)MongoliaMacau SAR ChinaNorthern Mariana Islands" +
+ "MartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysia" +
+ "MozambiqueNamibiaNew CaledoniaNigerNorfolk IslandNigeriaNicaraguaNetherl" +
+ "andsNorwayNepalNauruNiueNew ZealandOmanPanamaPeruFrench PolynesiaPapua N" +
+ "ew GuineaPilipinasPakistanPolandSaint Pierre and MiquelonPitcairn Island" +
+ "sPuerto RicoPalestinian TerritoriesPortugalPalauParaguayQatarOutlying Oc" +
+ "eaniaRéunionRomaniaSerbiaRussiaRwandaSaudi ArabiaSolomon IslandsSeychell" +
+ "esSudanSwedenSingaporeSaint HelenaSloveniaSvalbard and Jan MayenSlovakia" +
+ "Sierra LeoneSan MarinoSenegalSomaliaSurinameTimog SudanSão Tomé and Prín" +
+ "cipeEl SalvadorSint MaartenSyriaSwazilandTristan de CunhaTurks and Caico" +
+ "s IslandsChadFrench Southern TerritoriesTogoThailandTajikistanTokelauTim" +
+ "or-LesteTurkmenistanTunisiaTongaTurkeyTrinidad and TobagoTuvaluTaiwanTan" +
+ "zaniaUkraineUgandaU.S. Outlying IslandsEstados UnidosUruguayUzbekistanVa" +
+ "tican CitySaint Vincent and the GrenadinesVenezuelaBritish Virgin Island" +
+ "sU.S. Virgin IslandsVietnamVanuatuWallis and FutunaSamoaKosovoYemenMayot" +
+ "teSouth AfricaZambiaZimbabweHindi Kilalang RehiyonMundoAfricaHilagang Am" +
+ "erikaTimog AmerikaOceaniaKanlurang AfricaGitnang AmerikaSilangang Africa" +
+ "Hilagang AfricaGitnang AfricaKatimugang AfricaAmericasNorthern AmericaCa" +
+ "rribbeanSilangang AsyaKatimugang AsyaTimog-Silangang AsyaKatimugang Euro" +
+ "peAustralasiaMelanesiaRehiyon ng MicronesiaPolynesiaAsyaGitnang AsyaKanl" +
+ "urang AsyaEuropeSilangang EuropeHilagang EuropeKanlurang EuropeLatin Ame" +
+ "rica"
+
+var filRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0017, 0x002b, 0x0036, 0x0049, 0x0051, 0x0058,
+ 0x005f, 0x0073, 0x0079, 0x0083, 0x008c, 0x009a, 0x00a1, 0x00aa,
+ 0x00af, 0x00bd, 0x00c7, 0x00dd, 0x00e5, 0x00ef, 0x00f6, 0x0102,
+ 0x010a, 0x0111, 0x0118, 0x011d, 0x012e, 0x0135, 0x013b, 0x0142,
+ 0x0157, 0x015d, 0x0164, 0x016a, 0x0177, 0x017f, 0x0186, 0x018c,
+ 0x0192, 0x01a9, 0x01b9, 0x01d1, 0x01e4, 0x01ef, 0x01ff, 0x020b,
+ 0x0210, 0x0218, 0x021d, 0x0225, 0x0236, 0x0240, 0x0244, 0x024e,
+ 0x0256, 0x0266, 0x026c, 0x027a, 0x0281, 0x028d, 0x0295, 0x029c,
+ // Entry 40 - 7F
+ 0x02a4, 0x02b6, 0x02bd, 0x02ce, 0x02d5, 0x02dc, 0x02e1, 0x02f1,
+ 0x02f8, 0x02fd, 0x0305, 0x0313, 0x031a, 0x031e, 0x032e, 0x0338,
+ 0x0345, 0x034b, 0x0350, 0x035e, 0x0365, 0x036c, 0x0379, 0x0381,
+ 0x0386, 0x038f, 0x0398, 0x039e, 0x03a4, 0x03ae, 0x03bf, 0x03c5,
+ 0x03f1, 0x03fa, 0x03fe, 0x040b, 0x0411, 0x0424, 0x0445, 0x044d,
+ 0x0454, 0x0459, 0x0460, 0x046d, 0x0476, 0x047d, 0x0483, 0x048e,
+ 0x0493, 0x04b1, 0x04b5, 0x04b9, 0x04c0, 0x04c5, 0x04cb, 0x04d2,
+ 0x04d8, 0x04dd, 0x04e2, 0x04ec, 0x04f4, 0x04fc, 0x0503, 0x0518,
+ // Entry 80 - BF
+ 0x0526, 0x0531, 0x0537, 0x0545, 0x054f, 0x0553, 0x055a, 0x0565,
+ 0x0572, 0x057b, 0x0582, 0x0589, 0x0592, 0x059c, 0x05a2, 0x05a7,
+ 0x05ae, 0x05b4, 0x05bb, 0x05c5, 0x05d1, 0x05db, 0x05eb, 0x05f4,
+ 0x05f8, 0x0607, 0x060f, 0x061e, 0x0636, 0x0640, 0x064a, 0x0654,
+ 0x0659, 0x0662, 0x066a, 0x0670, 0x0676, 0x067e, 0x0688, 0x068f,
+ 0x069c, 0x06a1, 0x06af, 0x06b6, 0x06bf, 0x06ca, 0x06d0, 0x06d5,
+ 0x06da, 0x06de, 0x06e9, 0x06ed, 0x06f3, 0x06f7, 0x0707, 0x0717,
+ 0x0720, 0x0728, 0x072e, 0x0747, 0x0757, 0x0762, 0x0779, 0x0781,
+ // Entry C0 - FF
+ 0x0786, 0x078e, 0x0793, 0x07a3, 0x07ab, 0x07b2, 0x07b8, 0x07be,
+ 0x07c4, 0x07d0, 0x07df, 0x07e9, 0x07ee, 0x07f4, 0x07fd, 0x0809,
+ 0x0811, 0x0827, 0x082f, 0x083b, 0x0845, 0x084c, 0x0853, 0x085b,
+ 0x0866, 0x087e, 0x0889, 0x0895, 0x089a, 0x08a3, 0x08b3, 0x08cb,
+ 0x08cf, 0x08ea, 0x08ee, 0x08f6, 0x0900, 0x0907, 0x0912, 0x091e,
+ 0x0925, 0x092a, 0x0930, 0x0943, 0x0949, 0x094f, 0x0957, 0x095e,
+ 0x0964, 0x0979, 0x0987, 0x098e, 0x0998, 0x09a4, 0x09c4, 0x09cd,
+ 0x09e3, 0x09f6, 0x09fd, 0x0a04, 0x0a15, 0x0a1a, 0x0a20, 0x0a25,
+ // Entry 100 - 13F
+ 0x0a2c, 0x0a38, 0x0a3e, 0x0a46, 0x0a5c, 0x0a61, 0x0a67, 0x0a77,
+ 0x0a84, 0x0a8b, 0x0a9b, 0x0aaa, 0x0aba, 0x0ac9, 0x0ad7, 0x0ae8,
+ 0x0af0, 0x0b00, 0x0b0a, 0x0b18, 0x0b27, 0x0b3b, 0x0b4c, 0x0b57,
+ 0x0b60, 0x0b75, 0x0b7e, 0x0b82, 0x0b8e, 0x0b9c, 0x0ba2, 0x0bb2,
+ 0x0bc1, 0x0bd1, 0x0bde,
+} // Size: 606 bytes
+
+var frRegionStr string = "" + // Size: 3330 bytes
+ "Île de l’AscensionAndorreÉmirats arabes unisAfghanistanAntigua-et-Barbud" +
+ "aAnguillaAlbanieArménieAntilles néerlandaisesAngolaAntarctiqueArgentineS" +
+ "amoa américainesAutricheAustralieArubaÎles ÅlandAzerbaïdjanBosnie-Herzég" +
+ "ovineBarbadeBangladeshBelgiqueBurkina FasoBulgarieBahreïnBurundiBéninSai" +
+ "nt-BarthélemyBermudesBrunéi DarussalamBoliviePays-Bas caribéensBrésilBah" +
+ "amasBhoutanÎle BouvetBotswanaBiélorussieBelizeCanadaÎles CocosCongo-Kins" +
+ "hasaRépublique centrafricaineCongo-BrazzavilleSuisseCôte d’IvoireÎles Co" +
+ "okChiliCamerounChineColombieÎle ClippertonCosta RicaCubaCap-VertCuraçaoÎ" +
+ "le ChristmasChypreRépublique tchèqueAllemagneDiego GarciaDjiboutiDanemar" +
+ "kDominiqueRépublique dominicaineAlgérieCeuta et MelillaÉquateurEstonieÉg" +
+ "ypteSahara occidentalÉrythréeEspagneÉthiopieUnion européenneFinlandeFidj" +
+ "iÎles MalouinesÉtats fédérés de MicronésieÎles FéroéFranceGabonRoyaume-U" +
+ "niGrenadeGéorgieGuyane françaiseGuerneseyGhanaGibraltarGroenlandGambieGu" +
+ "inéeGuadeloupeGuinée équatorialeGrèceGéorgie du Sud et îles Sandwich du " +
+ "SudGuatemalaGuamGuinée-BissauGuyanaR.A.S. chinoise de Hong KongÎles Hear" +
+ "d et McDonaldHondurasCroatieHaïtiHongrieÎles CanariesIndonésieIrlandeIsr" +
+ "aëlÎle de ManIndeTerritoire britannique de l’océan IndienIrakIranIslande" +
+ "ItalieJerseyJamaïqueJordanieJaponKenyaKirghizistanCambodgeKiribatiComore" +
+ "sSaint-Christophe-et-NiévèsCorée du NordCorée du SudKoweïtÎles CaïmansKa" +
+ "zakhstanLaosLibanSainte-LucieLiechtensteinSri LankaLibériaLesothoLituani" +
+ "eLuxembourgLettonieLibyeMarocMonacoMoldavieMonténégroSaint-MartinMadagas" +
+ "carÎles MarshallMacédoineMaliMyanmar (Birmanie)MongolieR.A.S. chinoise d" +
+ "e MacaoÎles Mariannes du NordMartiniqueMauritanieMontserratMalteMauriceM" +
+ "aldivesMalawiMexiqueMalaisieMozambiqueNamibieNouvelle-CalédonieNigerÎle " +
+ "NorfolkNigériaNicaraguaPays-BasNorvègeNépalNauruNiueNouvelle-ZélandeOman" +
+ "PanamaPérouPolynésie françaisePapouasie-Nouvelle-GuinéePhilippinesPakist" +
+ "anPologneSaint-Pierre-et-MiquelonÎles PitcairnPorto RicoTerritoires pale" +
+ "stiniensPortugalPalaosParaguayQatarrégions éloignées de l’OcéanieLa Réun" +
+ "ionRoumanieSerbieRussieRwandaArabie saouditeÎles SalomonSeychellesSoudan" +
+ "SuèdeSingapourSainte-HélèneSlovénieSvalbard et Jan MayenSlovaquieSierra " +
+ "LeoneSaint-MarinSénégalSomalieSurinameSoudan du SudSao Tomé-et-PrincipeE" +
+ "l SalvadorSaint-Martin (partie néerlandaise)SyrieSwazilandTristan da Cun" +
+ "haÎles Turques-et-CaïquesTchadTerres australes françaisesTogoThaïlandeTa" +
+ "djikistanTokélaouTimor orientalTurkménistanTunisieTongaTurquieTrinité-et" +
+ "-TobagoTuvaluTaïwanTanzanieUkraineOugandaÎles mineures éloignées des Éta" +
+ "ts-UnisÉtats-UnisUruguayOuzbékistanÉtat de la Cité du VaticanSaint-Vince" +
+ "nt-et-les-GrenadinesVenezuelaÎles Vierges britanniquesÎles Vierges des É" +
+ "tats-UnisVietnamVanuatuWallis-et-FutunaSamoaKosovoYémenMayotteAfrique du" +
+ " SudZambieZimbabwerégion indéterminéeMondeAfriqueAmérique du NordAmériqu" +
+ "e du SudOcéanieAfrique occidentaleAmérique centraleAfrique orientaleAfri" +
+ "que septentrionaleAfrique centraleAfrique australeAmériquesAmérique sept" +
+ "entrionaleCaraïbesAsie orientaleAsie du SudAsie du Sud-EstEurope méridio" +
+ "naleAustralasieMélanésierégion micronésiennePolynésieAsieAsie centraleAs" +
+ "ie occidentaleEuropeEurope de l’EstEurope septentrionaleEurope occidenta" +
+ "leAmérique latine"
+
+var frRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0015, 0x001c, 0x0030, 0x003b, 0x004d, 0x0055, 0x005c,
+ 0x0064, 0x007b, 0x0081, 0x008c, 0x0095, 0x00a7, 0x00af, 0x00b8,
+ 0x00bd, 0x00c9, 0x00d5, 0x00e8, 0x00ef, 0x00f9, 0x0101, 0x010d,
+ 0x0115, 0x011d, 0x0124, 0x012a, 0x013b, 0x0143, 0x0155, 0x015c,
+ 0x016f, 0x0176, 0x017d, 0x0184, 0x018f, 0x0197, 0x01a3, 0x01a9,
+ 0x01af, 0x01ba, 0x01c8, 0x01e2, 0x01f3, 0x01f9, 0x0209, 0x0213,
+ 0x0218, 0x0220, 0x0225, 0x022d, 0x023c, 0x0246, 0x024a, 0x0252,
+ 0x025a, 0x0268, 0x026e, 0x0282, 0x028b, 0x0297, 0x029f, 0x02a7,
+ // Entry 40 - 7F
+ 0x02b0, 0x02c7, 0x02cf, 0x02df, 0x02e8, 0x02ef, 0x02f6, 0x0307,
+ 0x0311, 0x0318, 0x0321, 0x0332, 0x033a, 0x033f, 0x034e, 0x036e,
+ 0x037b, 0x0381, 0x0386, 0x0391, 0x0398, 0x03a0, 0x03b1, 0x03ba,
+ 0x03bf, 0x03c8, 0x03d1, 0x03d7, 0x03de, 0x03e8, 0x03fc, 0x0402,
+ 0x042a, 0x0433, 0x0437, 0x0445, 0x044b, 0x0467, 0x047e, 0x0486,
+ 0x048d, 0x0493, 0x049a, 0x04a8, 0x04b2, 0x04b9, 0x04c0, 0x04cb,
+ 0x04cf, 0x04fa, 0x04fe, 0x0502, 0x0509, 0x050f, 0x0515, 0x051e,
+ 0x0526, 0x052b, 0x0530, 0x053c, 0x0544, 0x054c, 0x0553, 0x056f,
+ // Entry 80 - BF
+ 0x057d, 0x058a, 0x0591, 0x059f, 0x05a9, 0x05ad, 0x05b2, 0x05be,
+ 0x05cb, 0x05d4, 0x05dc, 0x05e3, 0x05eb, 0x05f5, 0x05fd, 0x0602,
+ 0x0607, 0x060d, 0x0615, 0x0621, 0x062d, 0x0637, 0x0645, 0x064f,
+ 0x0653, 0x0665, 0x066d, 0x0685, 0x069c, 0x06a6, 0x06b0, 0x06ba,
+ 0x06bf, 0x06c6, 0x06ce, 0x06d4, 0x06db, 0x06e3, 0x06ed, 0x06f4,
+ 0x0707, 0x070c, 0x0718, 0x0720, 0x0729, 0x0731, 0x0739, 0x073f,
+ 0x0744, 0x0748, 0x0759, 0x075d, 0x0763, 0x0769, 0x077e, 0x0798,
+ 0x07a3, 0x07ab, 0x07b2, 0x07ca, 0x07d8, 0x07e2, 0x07fa, 0x0802,
+ // Entry C0 - FF
+ 0x0808, 0x0810, 0x0815, 0x0839, 0x0844, 0x084c, 0x0852, 0x0858,
+ 0x085e, 0x086d, 0x087a, 0x0884, 0x088a, 0x0890, 0x0899, 0x08a8,
+ 0x08b1, 0x08c6, 0x08cf, 0x08db, 0x08e6, 0x08ef, 0x08f6, 0x08fe,
+ 0x090b, 0x0920, 0x092b, 0x094e, 0x0953, 0x095c, 0x096c, 0x0985,
+ 0x098a, 0x09a6, 0x09aa, 0x09b4, 0x09bf, 0x09c8, 0x09d6, 0x09e3,
+ 0x09ea, 0x09ef, 0x09f6, 0x0a08, 0x0a0e, 0x0a15, 0x0a1d, 0x0a24,
+ 0x0a2b, 0x0a55, 0x0a60, 0x0a67, 0x0a73, 0x0a8f, 0x0aae, 0x0ab7,
+ 0x0ad1, 0x0aee, 0x0af5, 0x0afc, 0x0b0c, 0x0b11, 0x0b17, 0x0b1d,
+ // Entry 100 - 13F
+ 0x0b24, 0x0b32, 0x0b38, 0x0b40, 0x0b56, 0x0b5b, 0x0b62, 0x0b73,
+ 0x0b83, 0x0b8b, 0x0b9e, 0x0bb0, 0x0bc1, 0x0bd7, 0x0be7, 0x0bf7,
+ 0x0c01, 0x0c19, 0x0c22, 0x0c30, 0x0c3b, 0x0c4a, 0x0c5d, 0x0c68,
+ 0x0c73, 0x0c89, 0x0c93, 0x0c97, 0x0ca4, 0x0cb4, 0x0cba, 0x0ccb,
+ 0x0ce0, 0x0cf2, 0x0d02,
+} // Size: 606 bytes
+
+var frCARegionStr string = "" + // Size: 145 bytes
+ "BélarusÎles Cocos (Keeling)MicronésieSaint-Martin (France)MyanmarSaint-M" +
+ "artin (Pays-Bas)TokelauSaint-Vincent-et-les GrenadinesEurope orientale"
+
+var frCARegionIdx = []uint16{ // 288 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008,
+ 0x0008, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ // Entry 40 - 7F
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d,
+ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ // Entry 80 - BF
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,
+ 0x0028, 0x0028, 0x0028, 0x0028, 0x003d, 0x003d, 0x003d, 0x003d,
+ 0x003d, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ // Entry C0 - FF
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
+ 0x0044, 0x0044, 0x0044, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b,
+ 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0062, 0x0062, 0x0062,
+ 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062,
+ 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ // Entry 100 - 13F
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,
+ 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0091,
+} // Size: 600 bytes
+
+var guRegionStr string = "" + // Size: 8706 bytes
+ "એસેન્શન આઇલેન્ડઍંડોરાયુનાઇટેડ આરબ અમીરાતઅફઘાનિસ્તાનએન્ટીગુઆ અને બર્મુડાઍ" +
+ "ંગ્વિલાઅલ્બેનિયાઆર્મેનિયાનેધરલેંડ્સ એંટિલેસઅંગોલાએન્ટાર્કટિકાઆર્જેન્ટી" +
+ "નાઅમેરીકન સમોઆઑસ્ટ્રિયાઑસ્ટ્રેલિયાઅરુબાએલેંડ ટાપુઓઅઝરબૈજાનબોસ્નિયા અને" +
+ " હર્ઝેગોવિનાબાર્બાડોસબાંગ્લાદેશબેલ્જીયમબુર્કિના ફાસોબલ્ગેરિયાબેહરીનબુરું" +
+ "ડીબેનિનસેન્ટ બાર્થેલેમીબર્મુડાબ્રુનેઇબોલિવિયાકેરેબિયન નેધરલેન્ડ્ઝબ્રાઝ" +
+ "િલબહામાસભૂટાનબૌવેત આઇલેન્ડબોત્સ્વાનાબેલારુસબેલીઝકેનેડાકોકોઝ (કીલીંગ) આ" +
+ "ઇલેન્ડ્સકોંગો - કિંશાસાસેન્ટ્રલ આફ્રિકન રીપબ્લિકકોંગો - બ્રાઝાવિલેસ્વિ" +
+ "ટ્ઝર્લૅન્ડકોટ ડી આઇવરીકુક આઇલેન્ડ્સચિલીકૅમરૂનચીનકોલમ્બિયાક્લિપરટન આઇલે" +
+ "ન્ડકોસ્ટા રિકાક્યુબાકૅપ વર્ડેકુરાકાઓક્રિસમસ આઇલેન્ડસાયપ્રસચેક રીપબ્લિક" +
+ "જર્મનીડિએગો ગારસિઆજીબૌટીડેનમાર્કડોમિનિકાડોમિનિકન રીપબ્લિકઅલ્જીરિયાસ્યુ" +
+ "ટા અને મેલિલાએક્વાડોરએસ્ટોનિયાઇજિપ્તપશ્ચિમી સહારાએરિટ્રિયાસ્પેનઇથિઓપિય" +
+ "ાયુરોપિયન સંઘફિનલેન્ડફીજીફૉકલેન્ડ ટાપુઓમાઇક્રોનેશિયાફૅરો ટાપુઓફ્રાંસગે" +
+ "બનયુનાઇટેડ કિંગડમગ્રેનેડાજ્યોર્જીયાફ્રેંચ ગયાનાગ્વેર્નસેઘાનાજીબ્રાલ્ટર" +
+ "ગ્રીનલેન્ડગેમ્બિયાગિનીગ્વાડેલોપઇક્વેટોરિયલ ગિનીગ્રીસદક્ષિણ જ્યોર્જીયા " +
+ "અને દક્ષિણ સેન્ડવિચ આઇલેન્ડ્સગ્વાટેમાલાગ્વામગિની-બિસાઉગયાનાહોંગકોંગ SA" +
+ "R ચીનહર્ડ અને મેકડોનાલ્ડ આઇલેન્ડ્સહોન્ડુરસક્રોએશિયાહૈતિહંગેરીકૅનેરી ટાપુ" +
+ "ઓઇન્ડોનેશિયાઆયર્લેન્ડઇઝરાઇલઆઈલ ઓફ મૅનભારતબ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરીઇર" +
+ "ાકઈરાનઆઇસલેન્ડઇટાલીજર્સીજમૈકાજોર્ડનજાપાનકેન્યાકિર્ગિઝ્સ્તાનકંબોડિયાકિર" +
+ "િબાટીકોમોરસસેન્ટ કિટ્સ અને નેવિસઉત્તર કોરિયાદક્ષિણ કોરિયાકુવૈતકેમેન ટા" +
+ "પુઓકઝાકિસ્તાનલાઓસલેબનોનસેન્ટ લુસિયાલૈચટેંસ્ટેઇનશ્રીલંકાલાઇબેરિયાલેસોથો" +
+ "લિથુઆનિયાલક્ઝમબર્ગલાત્વિયાલિબિયામોરોક્કોમોનાકોમોલડોવામૉન્ટેંનેગ્રોસેન્" +
+ "ટ માર્ટિનમેડાગાસ્કરમાર્શલ આઇલેન્ડ્સમેસેડોનિયામાલીમ્યાંમાર (બર્મા)મંગોલ" +
+ "િયામકાઉ SAR ચીનઉત્તરીય મારિયાના આઇલેન્ડ્સમાર્ટીનીકમૌરિટાનિયામોંટસેરાતમ" +
+ "ાલ્ટામોરિશિયસમાલદિવ્સમાલાવીમેક્સિકોમલેશિયામોઝામ્બિકનામિબિયાન્યુ સેલેડો" +
+ "નિયાનાઇજરનોરફૉક ટાપુનાઇજીરીયાનિકારાગુઆનેધરલેન્ડનૉર્વેનેપાળનૌરુનીયુન્યુ" +
+ "ઝીલેન્ડઓમાનપનામાપેરુફ્રેંચ પોલિનેશિયાપાપુઆ ન્યૂ ગિનીફિલીપાઇન્સપાકિસ્તા" +
+ "નપોલેંડસેન્ટ પિયર અને મીક્વેલનપીટકૈર્ન આઇલેન્ડ્સપ્યુઅર્ટો રિકોપેલેસ્ટિ" +
+ "નિયન ટેરિટરીપોર્ટુગલપલાઉપેરાગ્વેકતારઆઉટલાઈન્ગ ઓશનિયારીયુનિયનરોમાનિયાસર" +
+ "્બિયારશિયારવાંડાસાઉદી અરેબિયાસોલોમન આઇલેન્ડ્સસેશેલ્સસુદાનસ્વીડનસિંગાપુ" +
+ "રસેન્ટ હેલેનાસ્લોવેનિયાસ્વાલબર્ડ અને જેન મેયનસ્લોવેકિયાસીએરા લેઓનસૅન મ" +
+ "ેરિનોસેનેગલસોમાલિયાસુરીનામદક્ષિણ સુદાનસાઓ ટૉમ અને પ્રિંસિપેએલ સેલ્વાડો" +
+ "રસિંટ માર્ટેનસીરિયાસ્વાઝિલેન્ડત્રિસ્તાન દા કુન્હાતુર્ક્સ અને કાઇકોસ ટા" +
+ "પુઓચાડફ્રેંચ સદર્ન ટેરિટરીઝટોગોથાઇલેંડતાજીકિસ્તાનટોકેલાઉતિમોર-લેસ્તેતુ" +
+ "ર્કમેનિસ્તાનટ્યુનિશિયાટોંગાતુર્કીટ્રિનીદાદ અને ટોબેગોતુવાલુતાઇવાનતાંઝા" +
+ "નિયાયુક્રેનયુગાંડાસંયુક્ત રાજ્ય આઉટલાઇંગ આયલેન્ડ્સસંયુકત રાજ્ય અમેરિકા" +
+ "ઉરુગ્વેઉઝ્બેકિસ્તાનવેટિકન સિટીસેન્ટ વિન્સેટ અને ગ્રેનેડીન્સવેનેઝુએલાબ્" +
+ "રિટિશ વર્જિન ટાપુઓયુ.એસ. વર્જિન ટાપુઓવિયેતનામવાનુઆતુવેલીસ અને ફ્યુટુના" +
+ "સમોઆકોસોવોયેમેનમેયોટદક્ષિણ આફ્રિકાઝામ્બિયાઝિમ્બાબ્વેઅજ્ઞાત પ્રદેશવિશ્વ" +
+ "આફ્રિકાઉત્તર અમેરિકાદક્ષિણ અમેરિકાઓશનિયાપશ્ચિમી આફ્રિકામધ્ય અમેરિકાપૂર" +
+ "્વીય આફ્રિકાઉત્તરીય આફ્રિકામધ્ય આફ્રિકાસધર્ન આફ્રિકાઅમેરિકાઉત્તરીય અમે" +
+ "રિકાકેરિબિયનપૂર્વીય એશિયાસર્ધન એશિયાદક્ષિણપૂર્વ એશિયાસધર્ન યુરોપઓસ્ટ્ર" +
+ "ેલેશિયામેલાનેશિયામાઈક્રોનેશિયન ક્ષેત્રપોલિનેશિયાએશિયામધ્ય એશિયાપશ્ચિમી" +
+ " એશિયાયુરોપપૂર્વીય યુરોપઉત્તરીય યુરોપપશ્ચિમ યુરોપલેટિન અમેરિકા"
+
+var guRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x002b, 0x003d, 0x0072, 0x0093, 0x00cb, 0x00e3, 0x00fe,
+ 0x0119, 0x014d, 0x015f, 0x0183, 0x01a4, 0x01c6, 0x01e1, 0x0202,
+ 0x0211, 0x0230, 0x0248, 0x028c, 0x02a7, 0x02c5, 0x02dd, 0x0302,
+ 0x031d, 0x032f, 0x0344, 0x0353, 0x0381, 0x0396, 0x03ab, 0x03c3,
+ 0x03fd, 0x0412, 0x0424, 0x0433, 0x0458, 0x0476, 0x048b, 0x049a,
+ 0x04ac, 0x04ec, 0x0513, 0x055a, 0x058a, 0x05b4, 0x05d4, 0x05f9,
+ 0x0605, 0x0617, 0x0620, 0x063b, 0x0669, 0x0688, 0x069a, 0x06b3,
+ 0x06c8, 0x06f3, 0x0708, 0x072a, 0x073c, 0x075e, 0x0770, 0x0788,
+ // Entry 40 - 7F
+ 0x07a0, 0x07d1, 0x07ec, 0x081b, 0x0833, 0x084e, 0x0860, 0x0885,
+ 0x08a0, 0x08af, 0x08c7, 0x08e9, 0x0901, 0x090d, 0x0935, 0x095c,
+ 0x0978, 0x098a, 0x0996, 0x09c1, 0x09d9, 0x09f7, 0x0a19, 0x0a34,
+ 0x0a40, 0x0a5e, 0x0a7c, 0x0a94, 0x0aa0, 0x0abb, 0x0ae9, 0x0af8,
+ 0x0b7b, 0x0b99, 0x0ba8, 0x0bc4, 0x0bd3, 0x0bf9, 0x0c4a, 0x0c62,
+ 0x0c7d, 0x0c89, 0x0c9b, 0x0cbd, 0x0cde, 0x0cf9, 0x0d0b, 0x0d25,
+ 0x0d31, 0x0d7c, 0x0d88, 0x0d94, 0x0dac, 0x0dbb, 0x0dca, 0x0dd9,
+ 0x0deb, 0x0dfa, 0x0e0c, 0x0e33, 0x0e4b, 0x0e63, 0x0e75, 0x0eae,
+ // Entry 80 - BF
+ 0x0ed0, 0x0ef5, 0x0f04, 0x0f23, 0x0f41, 0x0f4d, 0x0f5f, 0x0f81,
+ 0x0fa5, 0x0fbd, 0x0fd8, 0x0fea, 0x1005, 0x1020, 0x1038, 0x104a,
+ 0x1062, 0x1074, 0x1089, 0x10b0, 0x10d5, 0x10f3, 0x1121, 0x113f,
+ 0x114b, 0x1175, 0x118d, 0x11a7, 0x11f1, 0x120c, 0x122a, 0x1245,
+ 0x1257, 0x126f, 0x1287, 0x1299, 0x12b1, 0x12c6, 0x12e1, 0x12f9,
+ 0x1324, 0x1333, 0x1352, 0x136d, 0x1388, 0x13a3, 0x13b5, 0x13c4,
+ 0x13d0, 0x13dc, 0x13fd, 0x1409, 0x1418, 0x1424, 0x1455, 0x147e,
+ 0x149c, 0x14b7, 0x14c9, 0x1508, 0x153c, 0x1564, 0x159e, 0x15b6,
+ // Entry C0 - FF
+ 0x15c2, 0x15da, 0x15e6, 0x1614, 0x162c, 0x1644, 0x1659, 0x1668,
+ 0x167a, 0x169f, 0x16cd, 0x16e2, 0x16f1, 0x1703, 0x171b, 0x173d,
+ 0x175b, 0x1797, 0x17b5, 0x17d1, 0x17ed, 0x17ff, 0x1817, 0x182c,
+ 0x184e, 0x1887, 0x18a9, 0x18cb, 0x18dd, 0x18fe, 0x1933, 0x1975,
+ 0x197e, 0x19b9, 0x19c5, 0x19da, 0x19fb, 0x1a10, 0x1a32, 0x1a5c,
+ 0x1a7a, 0x1a89, 0x1a9b, 0x1ad3, 0x1ae5, 0x1af7, 0x1b12, 0x1b27,
+ 0x1b3c, 0x1b96, 0x1bce, 0x1be3, 0x1c07, 0x1c26, 0x1c77, 0x1c92,
+ 0x1cca, 0x1cfb, 0x1d13, 0x1d28, 0x1d5a, 0x1d66, 0x1d78, 0x1d87,
+ // Entry 100 - 13F
+ 0x1d96, 0x1dbe, 0x1dd6, 0x1df4, 0x1e19, 0x1e28, 0x1e3d, 0x1e62,
+ 0x1e8a, 0x1e9c, 0x1ec7, 0x1ee9, 0x1f14, 0x1f3f, 0x1f61, 0x1f86,
+ 0x1f9b, 0x1fc6, 0x1fde, 0x2003, 0x2022, 0x2053, 0x2072, 0x2099,
+ 0x20b7, 0x20f4, 0x2112, 0x2121, 0x213d, 0x2162, 0x2171, 0x2196,
+ 0x21bb, 0x21dd, 0x2202,
+} // Size: 606 bytes
+
+var heRegionStr string = "" + // Size: 5023 bytes
+ "האי אסנשןאנדורהאיחוד האמירויות הערביותאפגניסטןאנטיגואה וברבודהאנגילהאלבנ" +
+ "יהארמניהאנטילים הולנדייםאנגולהאנטארקטיקהארגנטינהסמואה האמריקניתאוסטריהא" +
+ "וסטרליהארובהאיי אולנדאזרבייג׳ןבוסניה והרצגובינהברבדוסבנגלדשבלגיהבורקינה" +
+ " פאסובולגריהבחרייןבורונדיבניןסנט ברתולומיאוברמודהברונייבוליביההאיים הקרי" +
+ "ביים ההולנדייםברזילאיי בהאמהבהוטןאיי בובהבוטסוואנהבלארוסבליזקנדהאיי קוק" +
+ "וס (קילינג)קונגו - קינשאסההרפובליקה של מרכז אפריקהקונגו - ברזאוילשווייץ" +
+ "חוף השנהבאיי קוקצ׳ילהקמרוןסיןקולומביההאי קליפרטוןקוסטה ריקהקובהכף ורדהק" +
+ "וראסאואי חג המולדקפריסיןצ׳כיהגרמניהדייגו גרסיהג׳יבוטידנמרקדומיניקההרפוב" +
+ "ליקה הדומיניקניתאלג׳יריהסאוטה ומלייהאקוודוראסטוניהמצריםסהרה המערביתארית" +
+ "ריאהספרדאתיופיההאיחוד האירופיפינלנדפיג׳יאיי פוקלנדמיקרונזיהאיי פארוצרפת" +
+ "גאבוןהממלכה המאוחדתגרנדהגאורגיהגיאנה הצרפתיתגרנסיגאנהגיברלטרגרינלנדגמבי" +
+ "הגיניאהגוואדלופגיניאה המשווניתיווןג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומי" +
+ "יםגואטמלהגואםגיניאה-ביסאוגיאנההונג קונג - מחוז מנהלי מיוחד של סיןהאי הר" +
+ "ד ואיי מקדונלדהונדורסקרואטיההאיטיהונגריההאיים הקנרייםאינדונזיהאירלנדישר" +
+ "אלהאי מאןהודוהטריטוריה הבריטית באוקיינוס ההודיעיראקאיראןאיסלנדאיטליהג׳ר" +
+ "סיג׳מייקהירדןיפןקניהקירגיזסטןקמבודיהקיריבאטיקומורוסנט קיטס ונוויסקוריאה" +
+ " הצפוניתקוריאה הדרומיתכוויתאיי קיימןקזחסטןלאוסלבנוןסנט לוסיהליכטנשטייןסר" +
+ "י לנקהליבריהלסוטוליטאלוקסמבורגלטביהלובמרוקומונקומולדובהמונטנגרוסן מרטןמ" +
+ "דגסקראיי מרשלמקדוניהמאלימיאנמאר (בורמה)\u200eמונגוליהמקאו - מחוז מנהלי " +
+ "מיוחד של סיןאיי מריאנה הצפונייםמרטיניקמאוריטניהמונסראטמלטהמאוריציוסהאיי" +
+ "ם המלדיבייםמלאווימקסיקומלזיהמוזמביקנמיביהקלדוניה החדשהניז׳ראיי נורפוקני" +
+ "גריהניקרגואההולנדנורווגיהנפאלנאורוניווהניו זילנדעומאןפנמהפרופולינזיה הצ" +
+ "רפתיתפפואה גיניאה החדשהפיליפיניםפקיסטןפוליןסנט פייר ומיקלוןאיי פיטקרןפו" +
+ "ארטו ריקוהשטחים הפלסטינייםפורטוגלפאלאופרגוואיקטאראוקיאניה חיצוניתראוניו" +
+ "ןרומניהסרביהרוסיהרואנדהערב הסעודיתאיי שלמהאיי סיישלסודןשוודיהסינגפורסנט" +
+ " הלנהסלובניהסוולבארד ויאן מאייןסלובקיהסיירה לאונהסן מרינוסנגלסומליהסורינ" +
+ "םדרום סודןסאו טומה ופרינסיפהאל סלבדורסנט מארטןסוריהסווזילנדטריסטן דה קו" +
+ "נהאיי טורקס וקאיקוסצ׳אדטריטוריות דרומיות של צרפתטוגותאילנדטג׳יקיסטןטוקל" +
+ "אוטימור לסטהטורקמניסטןתוניסיהטונגהטורקיהטרינידד וטובגוטובלוטייוואןטנזני" +
+ "האוקראינהאוגנדהאיים לחוף ארצות הבריתארצות הבריתאורוגוואיאוזבקיסטןהוותיק" +
+ "ןסנט וינסנט והגרנדיניםונצואלהאיי הבתולה הבריטייםאיי הבתולה של ארצות הבר" +
+ "יתוייטנאםונואטואיי ווליס ופוטונהסמואהקוסובותימןמאיוטדרום אפריקהזמביהזימ" +
+ "באבווהאזור לא ידועהעולםאפריקהצפון אמריקהדרום אמריקהאוקיאניהמערב אפריקהמ" +
+ "רכז אמריקהמזרח אפריקהצפון אפריקהמרכז אפריקהדרום יבשת אפריקהאמריקהאמריקה" +
+ " הצפוניתהאיים הקריבייםמזרח אסיהדרום אסיהדרום־מזרח אסיהדרום אירופהאוסטרלא" +
+ "סיהמלנזיהאזור מיקרונזיהפולינזיהאסיהמרכז אסיהמערב אסיהאירופהמזרח אירופהצ" +
+ "פון אירופהמערב אירופהאמריקה הלטינית"
+
+var heRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0011, 0x001d, 0x0049, 0x0059, 0x0078, 0x0084, 0x0090,
+ 0x009c, 0x00bb, 0x00c7, 0x00db, 0x00eb, 0x0108, 0x0116, 0x0126,
+ 0x0130, 0x0141, 0x0153, 0x0174, 0x0180, 0x018c, 0x0196, 0x01ad,
+ 0x01bb, 0x01c7, 0x01d5, 0x01dd, 0x01f8, 0x0204, 0x0210, 0x021e,
+ 0x024c, 0x0256, 0x0267, 0x0271, 0x0280, 0x0292, 0x029e, 0x02a6,
+ 0x02ae, 0x02ce, 0x02e9, 0x0316, 0x0331, 0x033d, 0x034e, 0x035b,
+ 0x0365, 0x036f, 0x0375, 0x0385, 0x039c, 0x03af, 0x03b7, 0x03c4,
+ 0x03d2, 0x03e6, 0x03f4, 0x03fe, 0x040a, 0x041f, 0x042d, 0x0437,
+ // Entry 40 - 7F
+ 0x0447, 0x0470, 0x0480, 0x0497, 0x04a5, 0x04b3, 0x04bd, 0x04d4,
+ 0x04e4, 0x04ec, 0x04fa, 0x0515, 0x0521, 0x052b, 0x053e, 0x0550,
+ 0x055f, 0x0567, 0x0571, 0x058c, 0x0596, 0x05a4, 0x05bd, 0x05c7,
+ 0x05cf, 0x05dd, 0x05eb, 0x05f5, 0x0601, 0x0611, 0x062e, 0x0636,
+ 0x0680, 0x068e, 0x0696, 0x06ad, 0x06b7, 0x06f5, 0x071a, 0x0728,
+ 0x0736, 0x0740, 0x074e, 0x0767, 0x0779, 0x0785, 0x078f, 0x079c,
+ 0x07a4, 0x07e3, 0x07ed, 0x07f7, 0x0803, 0x080f, 0x0819, 0x0827,
+ 0x082f, 0x0835, 0x083d, 0x084f, 0x085d, 0x086d, 0x0879, 0x0895,
+ // Entry 80 - BF
+ 0x08b0, 0x08cb, 0x08d5, 0x08e6, 0x08f2, 0x08fa, 0x0904, 0x0915,
+ 0x0929, 0x0938, 0x0944, 0x094e, 0x0956, 0x0968, 0x0972, 0x0978,
+ 0x0982, 0x098c, 0x099a, 0x09aa, 0x09b7, 0x09c3, 0x09d2, 0x09e0,
+ 0x09e8, 0x0a06, 0x0a16, 0x0a4b, 0x0a6f, 0x0a7d, 0x0a8f, 0x0a9d,
+ 0x0aa5, 0x0ab7, 0x0ad4, 0x0ae0, 0x0aec, 0x0af6, 0x0b04, 0x0b10,
+ 0x0b29, 0x0b33, 0x0b46, 0x0b52, 0x0b62, 0x0b6c, 0x0b7c, 0x0b84,
+ 0x0b8e, 0x0b98, 0x0ba9, 0x0bb3, 0x0bbb, 0x0bc1, 0x0be0, 0x0c02,
+ 0x0c14, 0x0c20, 0x0c2a, 0x0c48, 0x0c5b, 0x0c70, 0x0c91, 0x0c9f,
+ // Entry C0 - FF
+ 0x0ca9, 0x0cb7, 0x0cbf, 0x0cde, 0x0cec, 0x0cf8, 0x0d02, 0x0d0c,
+ 0x0d18, 0x0d2d, 0x0d3c, 0x0d4d, 0x0d55, 0x0d61, 0x0d6f, 0x0d7e,
+ 0x0d8c, 0x0db0, 0x0dbe, 0x0dd3, 0x0de2, 0x0dea, 0x0df6, 0x0e02,
+ 0x0e13, 0x0e35, 0x0e46, 0x0e57, 0x0e61, 0x0e71, 0x0e8b, 0x0eab,
+ 0x0eb3, 0x0ee2, 0x0eea, 0x0ef6, 0x0f08, 0x0f14, 0x0f27, 0x0f3b,
+ 0x0f49, 0x0f53, 0x0f5f, 0x0f7a, 0x0f84, 0x0f92, 0x0f9e, 0x0fae,
+ 0x0fba, 0x0fe1, 0x0ff6, 0x1008, 0x101a, 0x1028, 0x1050, 0x105e,
+ 0x1082, 0x10b0, 0x10be, 0x10ca, 0x10ea, 0x10f4, 0x1100, 0x1108,
+ // Entry 100 - 13F
+ 0x1112, 0x1127, 0x1131, 0x1143, 0x1159, 0x1163, 0x116f, 0x1184,
+ 0x1199, 0x11a9, 0x11be, 0x11d3, 0x11e8, 0x11fd, 0x1212, 0x1230,
+ 0x123c, 0x1257, 0x1272, 0x1283, 0x1294, 0x12af, 0x12c4, 0x12d8,
+ 0x12e4, 0x12ff, 0x130f, 0x1317, 0x1328, 0x1339, 0x1345, 0x135a,
+ 0x136f, 0x1384, 0x139f,
+} // Size: 606 bytes
+
+var hiRegionStr string = "" + // Size: 8760 bytes
+ "असेंशन द्वीपएंडोरासंयुक्त अरब अमीरातअफ़गानिस्तानएंटिगुआ और बरबुडाएंग्विल" +
+ "ाअल्बानियाआर्मेनियानीदरलैंडी ऐंटीलअंगोलाअंटार्कटिकाअर्जेंटीनाअमेरिकी स" +
+ "मोआऑस्ट्रियाऑस्ट्रेलियाअरूबाएलैंड द्वीपसमूहअज़रबैजानबोस्निया और हर्ज़े" +
+ "गोविनाबारबाडोसबांग्लादेशबेल्जियमबुर्किना फ़ासोबुल्गारियाबहरीनबुरुंडीबे" +
+ "निनसेंट बार्थेलेमीबरमूडाब्रूनेईबोलीवियाकैरिबियन नीदरलैंडब्राज़ीलबहामास" +
+ "भूटानबोवेत द्वीपबोत्स्वानाबेलारूसबेलीज़कनाडाकोकोस (कीलिंग) द्वीपसमूहका" +
+ "ंगो - किंशासामध्य अफ़्रीकी गणराज्यकांगो – ब्राज़ाविलस्विट्ज़रलैंडकोट ड" +
+ "ी आइवरकुक द्वीपसमूहचिलीकैमरूनचीनकोलंबियाक्लिपर्टन द्वीपकोस्टारिकाक्यूब" +
+ "ाकेप वर्डक्यूरासाओक्रिसमस द्वीपसाइप्रसचेक गणराज्यजर्मनीडिएगो गार्सियाज" +
+ "िबूतीडेनमार्कडोमिनिकाडोमिनिकन गणराज्यअल्जीरियासेउटा और मेलिलाइक्वाडोरए" +
+ "स्टोनियामिस्रपश्चिमी सहाराइरिट्रियास्पेनइथियोपियायूरोपीय संघफ़िनलैंडफ़" +
+ "िजीफ़ॉकलैंड द्वीपसमूहमाइक्रोनेशियाफ़ेरो द्वीपसमूहफ़्रांसगैबॉनयूनाइटेड " +
+ "किंगडमग्रेनाडाजॉर्जियाफ़्रेंच गयानागर्नसीघानाजिब्राल्टरग्रीनलैंडगाम्बि" +
+ "यागिनीग्वाडेलूपइक्वेटोरियल गिनीयूनानदक्षिण जॉर्जिया और दक्षिण सैंडविच " +
+ "द्वीपसमूहग्वाटेमालागुआमगिनी-बिसाउगयानाहाँग काँग (चीन विशेष प्रशासनिक क" +
+ "्षेत्र)हर्ड द्वीप और मैकडोनॉल्ड द्वीपसमूहहोंडूरासक्रोएशियाहैतीहंगरीकैन" +
+ "ेरी द्वीपसमूहइंडोनेशियाआयरलैंडइसराइलआइल ऑफ़ मैनभारतब्रिटिश हिंद महासाग" +
+ "रीय क्षेत्रइराकईरानआइसलैंडइटलीजर्सीजमैकाजॉर्डनजापानकेन्याकिर्गिज़स्तान" +
+ "कंबोडियाकिरिबातीकोमोरोससेंट किट्स और नेविसउत्तर कोरियादक्षिण कोरियाकुव" +
+ "ैतकेमैन द्वीपसमूहकज़ाखस्तानलाओसलेबनानसेंट लूसियालिचेंस्टीनश्रीलंकालाइब" +
+ "ेरियालेसोथोलिथुआनियालग्ज़मबर्गलातवियालीबियामोरक्कोमोनाकोमॉल्डोवामोंटेन" +
+ "ेग्रोसेंट मार्टिनमेडागास्करमार्शल द्वीपसमूहमैसिडोनियामालीम्यांमार (बर्" +
+ "मा)मंगोलियामकाऊ (विशेष प्रशासनिक क्षेत्र चीन)उत्तरी मारियाना द्वीपसमूह" +
+ "मार्टीनिकमॉरिटानियामोंटसेरातमाल्टामॉरिशसमालदीवमलावीमैक्सिकोमलेशियामोज़" +
+ "ांबिकनामीबियान्यू कैलेडोनियानाइजरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआनीदरलै" +
+ "ंडनॉर्वेनेपालनाउरुनीयून्यूज़ीलैंडओमानपनामापेरूफ़्रेंच पोलिनेशियापापुआ " +
+ "न्यू गिनीफ़िलिपींसपाकिस्तानपोलैंडसेंट पिएरे और मिक्वेलानपिटकैर्न द्वीप" +
+ "समूहपोर्टो रिकोफ़िलिस्तीनी क्षेत्रपुर्तगालपलाऊपेराग्वेक़तरआउटलाइंग ओशि" +
+ "नियारियूनियनरोमानियासर्बियारूसरवांडासऊदी अरबसोलोमन द्वीपसमूहसेशेल्ससूड" +
+ "ानस्वीडनसिंगापुरसेंट हेलेनास्लोवेनियास्वालबार्ड और जान मायेनस्लोवाकिया" +
+ "सिएरा लियोनसैन मेरीनोसेनेगलसोमालियासूरीनामदक्षिण सूडानसाओ टोम और प्रिं" +
+ "सिपेअल सल्वाडोरसिंट मार्टिनसीरियास्वाज़ीलैंडत्रिस्टान डा कुनातुर्क और " +
+ "कैकोज़ द्वीपसमूहचाडफ़्रांसीसी दक्षिणी क्षेत्रटोगोथाईलैंडताजिकिस्तानतोक" +
+ "ेलाउतिमोर-लेस्ततुर्कमेनिस्तानट्यूनीशियाटोंगातुर्कीत्रिनिदाद और टोबैगोत" +
+ "ुवालूताइवानतंज़ानियायूक्रेनयुगांडायू.एस. आउटलाइंग द्वीपसमूहसंयुक्त राज" +
+ "्यउरूग्वेउज़्बेकिस्तानवेटिकन सिटीसेंट विंसेंट और ग्रेनाडाइंसवेनेज़ुएला" +
+ "ब्रिटिश वर्जिन द्वीपसमूहयू.एस. वर्जिन द्वीपसमूहवियतनामवनुआतूवालिस और फ" +
+ "़्यूचूनासमोआकोसोवोयमनमायोतेदक्षिण अफ़्रीकाज़ाम्बियाज़िम्बाब्वेअज्ञात क" +
+ "्षेत्रविश्वअफ़्रीकाउत्तर अमेरिकादक्षिण अमेरिकाओशिआनियापश्चिमी अफ़्रीका" +
+ "मध्य अमेरिकापूर्वी अफ़्रीकाउत्तरी अफ़्रीकामध्य अफ़्रीकादक्षिणी अफ़्रीक" +
+ "ाअमेरिकाज़उत्तरी अमेरिकाकैरिबियनपूर्वी एशियादक्षिणी एशियादक्षिण-पूर्व " +
+ "एशियादक्षिणी यूरोपऑस्ट्रेलेशियामेलानेशियामाइक्रोनेशियाई क्षेत्रपोलीनेश" +
+ "ियाएशियामध्य एशियापश्चिमी एशियायूरोपपूर्वी यूरोपउत्तरी यूरोपपश्चिमी यू" +
+ "रोपलैटिन अमेरिका"
+
+var hiRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0022, 0x0034, 0x0066, 0x008a, 0x00b9, 0x00d1, 0x00ec,
+ 0x0107, 0x0132, 0x0144, 0x0165, 0x0183, 0x01a5, 0x01c0, 0x01e1,
+ 0x01f0, 0x021b, 0x0236, 0x027a, 0x0292, 0x02b0, 0x02c8, 0x02f0,
+ 0x030e, 0x031d, 0x0332, 0x0341, 0x036c, 0x037e, 0x0393, 0x03ab,
+ 0x03dc, 0x03f4, 0x0406, 0x0415, 0x0434, 0x0452, 0x0467, 0x0479,
+ 0x0488, 0x04c8, 0x04ef, 0x052a, 0x055c, 0x0583, 0x05a0, 0x05c5,
+ 0x05d1, 0x05e3, 0x05ec, 0x0604, 0x062f, 0x064d, 0x065f, 0x0675,
+ 0x0690, 0x06b5, 0x06ca, 0x06e9, 0x06fb, 0x0723, 0x0735, 0x074d,
+ // Entry 40 - 7F
+ 0x0765, 0x0793, 0x07ae, 0x07d7, 0x07ef, 0x080a, 0x0819, 0x083e,
+ 0x0859, 0x0868, 0x0883, 0x08a2, 0x08ba, 0x08c9, 0x08fd, 0x0924,
+ 0x094f, 0x0964, 0x0973, 0x099e, 0x09b6, 0x09ce, 0x09f3, 0x0a05,
+ 0x0a11, 0x0a2f, 0x0a4a, 0x0a62, 0x0a6e, 0x0a89, 0x0ab7, 0x0ac6,
+ 0x0b3d, 0x0b5b, 0x0b67, 0x0b83, 0x0b92, 0x0bf9, 0x0c57, 0x0c6f,
+ 0x0c8a, 0x0c96, 0x0ca5, 0x0cd3, 0x0cf1, 0x0d06, 0x0d18, 0x0d35,
+ 0x0d41, 0x0d95, 0x0da1, 0x0dad, 0x0dc2, 0x0dce, 0x0ddd, 0x0dec,
+ 0x0dfe, 0x0e0d, 0x0e1f, 0x0e46, 0x0e5e, 0x0e76, 0x0e8b, 0x0ebe,
+ // Entry 80 - BF
+ 0x0ee0, 0x0f05, 0x0f14, 0x0f3f, 0x0f5d, 0x0f69, 0x0f7b, 0x0f9a,
+ 0x0fb8, 0x0fd0, 0x0feb, 0x0ffd, 0x1018, 0x1036, 0x104b, 0x105d,
+ 0x1072, 0x1084, 0x109c, 0x10bd, 0x10df, 0x10fd, 0x112b, 0x1149,
+ 0x1155, 0x117f, 0x1197, 0x11f1, 0x1238, 0x1253, 0x1271, 0x128c,
+ 0x129e, 0x12b0, 0x12c2, 0x12d1, 0x12e9, 0x12fe, 0x1319, 0x1331,
+ 0x135c, 0x136b, 0x1390, 0x13ab, 0x13c6, 0x13de, 0x13f0, 0x13ff,
+ 0x140e, 0x141a, 0x143b, 0x1447, 0x1456, 0x1462, 0x1496, 0x14bf,
+ 0x14da, 0x14f5, 0x1507, 0x1546, 0x157a, 0x1599, 0x15d0, 0x15e8,
+ // Entry C0 - FF
+ 0x15f4, 0x160c, 0x1618, 0x1646, 0x165e, 0x1676, 0x168b, 0x1694,
+ 0x16a6, 0x16bc, 0x16ea, 0x16ff, 0x170e, 0x1720, 0x1738, 0x1757,
+ 0x1775, 0x17b4, 0x17d2, 0x17f1, 0x180d, 0x181f, 0x1837, 0x184c,
+ 0x186e, 0x18a4, 0x18c3, 0x18e5, 0x18f7, 0x1918, 0x1947, 0x198c,
+ 0x1995, 0x19df, 0x19eb, 0x1a00, 0x1a21, 0x1a36, 0x1a55, 0x1a7f,
+ 0x1a9d, 0x1aac, 0x1abe, 0x1af3, 0x1b05, 0x1b17, 0x1b32, 0x1b47,
+ 0x1b5c, 0x1b9f, 0x1bc4, 0x1bd9, 0x1c00, 0x1c1f, 0x1c6a, 0x1c88,
+ 0x1ccc, 0x1d09, 0x1d1e, 0x1d30, 0x1d62, 0x1d6e, 0x1d80, 0x1d89,
+ // Entry 100 - 13F
+ 0x1d9b, 0x1dc6, 0x1de1, 0x1e02, 0x1e2a, 0x1e39, 0x1e51, 0x1e76,
+ 0x1e9e, 0x1eb6, 0x1ee4, 0x1f06, 0x1f31, 0x1f5c, 0x1f81, 0x1faf,
+ 0x1fca, 0x1ff2, 0x200a, 0x202c, 0x2051, 0x2083, 0x20a8, 0x20cf,
+ 0x20ed, 0x212d, 0x214b, 0x215a, 0x2176, 0x219b, 0x21aa, 0x21cc,
+ 0x21ee, 0x2213, 0x2238,
+} // Size: 606 bytes
+
+var hrRegionStr string = "" + // Size: 3113 bytes
+ "Otok AscensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigua i Barbud" +
+ "aAngvilaAlbanijaArmenijaNizozemski AntiliAngolaAntarktikaArgentinaAmerič" +
+ "ka SamoaAustrijaAustralijaArubaOtoci AlandAzerbajdžanBosna i Hercegovina" +
+ "BarbadosBangladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti Bar" +
+ "tolomejBermudaBrunejBolivijaKaripski otoci NizozemskeBrazilBahamiButanOt" +
+ "ok BouvetBocvanaBjelorusijaBelizeKanadaKokosovi (Keeling) OtociKongo - K" +
+ "inshasaSrednjoafrička RepublikaKongo - BrazzavilleŠvicarskaObala Bjeloko" +
+ "stiCookovi OtociČileKamerunKinaKolumbijaOtok ClippertonKostarikaKubaZele" +
+ "nortska RepublikaCuraçaoBožićni OtokCiparČeška RepublikaNjemačkaDiego Ga" +
+ "rciaDžibutiDanskaDominikaDominikanska RepublikaAlžirCeuta i MelillaEkvad" +
+ "orEstonijaEgipatZapadna SaharaEritrejaŠpanjolskaEtiopijaEuropska unijaFi" +
+ "nskaFidžiFalklandski OtociMikronezijaFarski OtociFrancuskaGabonVelika Br" +
+ "itanijaGrenadaGruzijaFrancuska GvajanaGuernseyGanaGibraltarGrenlandGambi" +
+ "jaGvinejaGuadalupaEkvatorska GvinejaGrčkaJužna Georgija i Južni Sendvičk" +
+ "i OtociGvatemalaGuamGvineja BisauGvajanaHong Kong PUP KinaOtoci Heard i " +
+ "McDonaldHondurasHrvatskaHaitiMađarskaKanarski OtociIndonezijaIrskaIzrael" +
+ "Otok ManIndijaBritanski Indijskooceanski TeritorijIrakIranIslandItalijaJ" +
+ "erseyJamajkaJordanJapanKenijaKirgistanKambodžaKiribatiKomoriSveti Kristo" +
+ "for i NevisSjeverna KorejaJužna KorejaKuvajtKajmanski OtociKazahstanLaos" +
+ "LibanonSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvaLuksemburgLatv" +
+ "ijaLibijaMarokoMonakoMoldavijaCrna GoraSveti MartinMadagaskarMaršalovi O" +
+ "tociMakedonijaMaliMijanmar (Burma)MongolijaMakao PUP KinaSjeverni Marija" +
+ "nski OtociMartiniqueMauritanijaMontserratMaltaMauricijusMaldiviMalaviMek" +
+ "sikoMalezijaMozambikNamibijaNova KaledonijaNigerOtok NorfolkNigerijaNika" +
+ "ragvaNizozemskaNorveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFrancuska " +
+ "PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSveti Petar i Mikelon" +
+ "Otoci PitcairnPortorikoPalestinsko PodručjePortugalPalauParagvajKatarOst" +
+ "ala oceanijaReunionRumunjskaSrbijaRusijaRuandaSaudijska ArabijaSalomonsk" +
+ "i OtociSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalbard i Jan Ma" +
+ "yenSlovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSveti " +
+ "Toma i PrincipSalvadorSint MaartenSirijaSvaziTristan da CunhaOtoci Turks" +
+ " i CaicosČadFrancuske Južne i Antarktičke ZemljeTogoTajlandTadžikistanTo" +
+ "kelauIstočni TimorTurkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTaj" +
+ "vanTanzanijaUkrajinaUgandaMali udaljeni otoci SAD-aSjedinjene Američke D" +
+ "ržaveUrugvajUzbekistanSveta StolicaSveti Vincent i GrenadiniVenezuelaBri" +
+ "tanski Djevičanski OtociAmerički Djevičanski OtociVijetnamVanuatuWallis " +
+ "i FutunaSamoaKosovoJemenMayotteJužnoafrička RepublikaZambijaZimbabvenepo" +
+ "znato područjeSvijetAfrikaSjevernoamerički kontinentJužna AmerikaOceanij" +
+ "aZapadna AfrikaCentralna AmerikaIstočna AfrikaSjeverna AfrikaSredišnja A" +
+ "frikaJužna AfrikaAmerikeSjeverna AmerikaKaribiIstočna AzijaJužna AzijaJu" +
+ "goistočna AzijaJužna EuropaAustralazijaMelanezijaMikronezijsko područjeP" +
+ "olinezijaAzijaSrednja AzijaZapadna AzijaEuropaIstočna EuropaSjeverna Eur" +
+ "opaZapadna EuropaLatinska Amerika"
+
+var hrRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x0014, 0x002e, 0x0038, 0x0049, 0x0050, 0x0058,
+ 0x0060, 0x0071, 0x0077, 0x0081, 0x008a, 0x0099, 0x00a1, 0x00ab,
+ 0x00b0, 0x00bb, 0x00c7, 0x00da, 0x00e2, 0x00ec, 0x00f3, 0x00ff,
+ 0x0107, 0x010e, 0x0115, 0x011a, 0x012a, 0x0131, 0x0137, 0x013f,
+ 0x0158, 0x015e, 0x0164, 0x0169, 0x0174, 0x017b, 0x0186, 0x018c,
+ 0x0192, 0x01aa, 0x01ba, 0x01d3, 0x01e6, 0x01f0, 0x0200, 0x020d,
+ 0x0212, 0x0219, 0x021d, 0x0226, 0x0235, 0x023e, 0x0242, 0x0257,
+ 0x025f, 0x026d, 0x0272, 0x0283, 0x028c, 0x0298, 0x02a0, 0x02a6,
+ // Entry 40 - 7F
+ 0x02ae, 0x02c4, 0x02ca, 0x02d9, 0x02e0, 0x02e8, 0x02ee, 0x02fc,
+ 0x0304, 0x030f, 0x0317, 0x0325, 0x032b, 0x0331, 0x0342, 0x034d,
+ 0x0359, 0x0362, 0x0367, 0x0377, 0x037e, 0x0385, 0x0396, 0x039e,
+ 0x03a2, 0x03ab, 0x03b3, 0x03ba, 0x03c1, 0x03ca, 0x03dc, 0x03e2,
+ 0x040b, 0x0414, 0x0418, 0x0425, 0x042c, 0x043e, 0x0454, 0x045c,
+ 0x0464, 0x0469, 0x0472, 0x0480, 0x048a, 0x048f, 0x0495, 0x049d,
+ 0x04a3, 0x04c7, 0x04cb, 0x04cf, 0x04d5, 0x04dc, 0x04e2, 0x04e9,
+ 0x04ef, 0x04f4, 0x04fa, 0x0503, 0x050c, 0x0514, 0x051a, 0x0531,
+ // Entry 80 - BF
+ 0x0540, 0x054d, 0x0553, 0x0562, 0x056b, 0x056f, 0x0576, 0x0582,
+ 0x058e, 0x0598, 0x05a0, 0x05a6, 0x05ab, 0x05b5, 0x05bc, 0x05c2,
+ 0x05c8, 0x05ce, 0x05d7, 0x05e0, 0x05ec, 0x05f6, 0x0606, 0x0610,
+ 0x0614, 0x0624, 0x062d, 0x063b, 0x0654, 0x065e, 0x0669, 0x0673,
+ 0x0678, 0x0682, 0x0689, 0x068f, 0x0696, 0x069e, 0x06a6, 0x06ae,
+ 0x06bd, 0x06c2, 0x06ce, 0x06d6, 0x06df, 0x06e9, 0x06f2, 0x06f7,
+ 0x06fc, 0x0700, 0x070b, 0x070f, 0x0715, 0x0719, 0x072d, 0x073f,
+ 0x0747, 0x074f, 0x0756, 0x076b, 0x0779, 0x0782, 0x0797, 0x079f,
+ // Entry C0 - FF
+ 0x07a4, 0x07ac, 0x07b1, 0x07c0, 0x07c7, 0x07d0, 0x07d6, 0x07dc,
+ 0x07e2, 0x07f3, 0x0803, 0x080b, 0x0810, 0x0818, 0x0820, 0x082c,
+ 0x0835, 0x0849, 0x0852, 0x085e, 0x0868, 0x086f, 0x0877, 0x087e,
+ 0x088a, 0x089e, 0x08a6, 0x08b2, 0x08b8, 0x08bd, 0x08cd, 0x08e1,
+ 0x08e5, 0x090b, 0x090f, 0x0916, 0x0922, 0x0929, 0x0937, 0x0943,
+ 0x0948, 0x094d, 0x0953, 0x0964, 0x096a, 0x0970, 0x0979, 0x0981,
+ 0x0987, 0x09a0, 0x09bc, 0x09c3, 0x09cd, 0x09da, 0x09f3, 0x09fc,
+ 0x0a18, 0x0a34, 0x0a3c, 0x0a43, 0x0a52, 0x0a57, 0x0a5d, 0x0a62,
+ // Entry 100 - 13F
+ 0x0a69, 0x0a81, 0x0a88, 0x0a90, 0x0aa3, 0x0aa9, 0x0aaf, 0x0aca,
+ 0x0ad8, 0x0ae0, 0x0aee, 0x0aff, 0x0b0e, 0x0b1d, 0x0b2e, 0x0b3b,
+ 0x0b42, 0x0b52, 0x0b58, 0x0b66, 0x0b72, 0x0b84, 0x0b91, 0x0b9d,
+ 0x0ba7, 0x0bbe, 0x0bc8, 0x0bcd, 0x0bda, 0x0be7, 0x0bed, 0x0bfc,
+ 0x0c0b, 0x0c19, 0x0c29,
+} // Size: 606 bytes
+
+var huRegionStr string = "" + // Size: 3354 bytes
+ "Ascension-szigetAndorraEgyesült Arab EmírségekAfganisztánAntigua és Barb" +
+ "udaAnguillaAlbániaÖrményországHolland AntillákAngolaAntarktiszArgentínaA" +
+ "merikai SzamoaAusztriaAusztráliaArubaÅland-szigetekAzerbajdzsánBosznia-H" +
+ "ercegovinaBarbadosBangladesBelgiumBurkina FasoBulgáriaBahreinBurundiBeni" +
+ "nSaint-BarthélemyBermudaBruneiBolíviaHolland Karib-térségBrazíliaBahama-" +
+ "szigetekBhutánBouvet-szigetBotswanaFehéroroszországBelizeKanadaKókusz-sz" +
+ "igetekKongó - KinshasaKözép-afrikai KöztársaságKongó - BrazzavilleSvájcE" +
+ "lefántcsontpartCook-szigetekChileKamerunKínaKolumbiaClipperton-szigetCos" +
+ "ta RicaKubaZöld-foki KöztársaságCuraçaoKarácsony-szigetCiprusCsehországN" +
+ "émetországDiego GarciaDzsibutiDániaDominikaDominikai KöztársaságAlgéria" +
+ "Ceuta és MelillaEcuadorÉsztországEgyiptomNyugat-SzaharaEritreaSpanyolors" +
+ "zágEtiópiaEurópai UnióFinnországFidzsiFalkland-szigetekMikronéziaFeröer-" +
+ "szigetekFranciaországGabonEgyesült KirályságGrenadaGrúziaFrancia GuyanaG" +
+ "uernseyGhánaGibraltárGrönlandGambiaGuineaGuadeloupeEgyenlítői-GuineaGörö" +
+ "gországDéli-Georgia és Déli-Sandwich-szigetekGuatemalaGuamBissau-GuineaG" +
+ "uyanaHongkong SAR KínaHeard-sziget és McDonald-szigetekHondurasHorvátors" +
+ "zágHaitiMagyarországKanári-szigetekIndonéziaÍrországIzraelMan-szigetIndi" +
+ "aBrit Indiai-óceáni TerületIrakIránIzlandOlaszországJerseyJamaicaJordáni" +
+ "aJapánKenyaKirgizisztánKambodzsaKiribatiComore-szigetekSaint Kitts és Ne" +
+ "visÉszak-KoreaDél-KoreaKuvaitKajmán-szigetekKazahsztánLaoszLibanonSanta " +
+ "LuciaLiechtensteinSrí LankaLibériaLesothoLitvániaLuxemburgLettországLíbi" +
+ "aMarokkóMonacoMoldovaMontenegróSaint MartinMadagaszkárMarshall-szigetekM" +
+ "acedóniaMaliMianmar (Burma)MongóliaMakaó SAR KínaÉszaki Mariana-szigetek" +
+ "MartiniqueMauritániaMontserratMáltaMauritiusMaldív-szigetekMalawiMexikóM" +
+ "alajziaMozambikNamíbiaÚj-KaledóniaNigerNorfolk-szigetNigériaNicaraguaHol" +
+ "landiaNorvégiaNepálNauruNiueÚj-ZélandOmánPanamaPeruFrancia PolinéziaPápu" +
+ "a Új-GuineaFülöp-szigetekPakisztánLengyelországSaint Pierre és MiquelonP" +
+ "itcairn-szigetekPuerto RicoPalesztin TerületPortugáliaPalauParaguayKatar" +
+ "Külső-ÓceániaReunionRomániaSzerbiaOroszországRuandaSzaúd-ArábiaSalamon-s" +
+ "zigetekSeychelle-szigetekSzudánSvédországSzingapúrSzent IlonaSzlovéniaSp" +
+ "itzbergák és Jan Mayen-szigetekSzlovákiaSierra LeoneSan MarinoSzenegálSz" +
+ "omáliaSurinameDél-SzudánSao Tomé és PríncipeSalvadorSint MaartenSzíriaSz" +
+ "váziföldTristan da CunhaTurks- és Caicos-szigetekCsádFrancia Déli Terüle" +
+ "tekTogoThaiföldTádzsikisztánTokelauKelet-TimorTürkmenisztánTunéziaTongaT" +
+ "örökországTrinidad és TobagoTuvaluTajvanTanzániaUkrajnaUgandaAmerikai C" +
+ "sendes-óceáni SzigetekEgyesült ÁllamokUruguayÜzbegisztánVatikánSaint Vin" +
+ "cent és a Grenadine-szigetekVenezuelaBrit Virgin-szigetekAmerikai Virgin" +
+ "-szigetekVietnamVanuatuWallis- és Futuna-szigetekSzamoaKoszovóJemenMayot" +
+ "teDél-afrikai KöztársaságZambiaZimbabweIsmeretlen körzetVilágAfrikaÉszak" +
+ "-AmerikaDél-AmerikaÓceániaNyugat-AfrikaKözép-AmerikaKelet-AfrikaÉszak-Af" +
+ "rikaKözép-AfrikaAfrika déli részeAmerikaAmerika északi részeKarib-térség" +
+ "Kelet-ÁzsiaDél-ÁzsiaDélkelet-ÁzsiaDél-EurópaAusztrálázsiaMelanéziaMikron" +
+ "éziai régióPolinéziaÁzsiaKözép-ÁzsiaNyugat-ÁzsiaEurópaKelet-EurópaÉszak" +
+ "-EurópaNyugat-EurópaLatin-Amerika"
+
+var huRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0017, 0x0031, 0x003d, 0x0050, 0x0058, 0x0060,
+ 0x006f, 0x0080, 0x0086, 0x0090, 0x009a, 0x00a9, 0x00b1, 0x00bc,
+ 0x00c1, 0x00d0, 0x00dd, 0x00f0, 0x00f8, 0x0101, 0x0108, 0x0114,
+ 0x011d, 0x0124, 0x012b, 0x0130, 0x0141, 0x0148, 0x014e, 0x0156,
+ 0x016c, 0x0175, 0x0184, 0x018b, 0x0198, 0x01a0, 0x01b2, 0x01b8,
+ 0x01be, 0x01ce, 0x01df, 0x01fd, 0x0211, 0x0217, 0x0228, 0x0235,
+ 0x023a, 0x0241, 0x0246, 0x024e, 0x025f, 0x0269, 0x026d, 0x0286,
+ 0x028e, 0x029f, 0x02a5, 0x02b0, 0x02bd, 0x02c9, 0x02d1, 0x02d7,
+ // Entry 40 - 7F
+ 0x02df, 0x02f7, 0x02ff, 0x0310, 0x0317, 0x0323, 0x032b, 0x0339,
+ 0x0340, 0x034e, 0x0356, 0x0364, 0x036f, 0x0375, 0x0386, 0x0391,
+ 0x03a1, 0x03af, 0x03b4, 0x03c9, 0x03d0, 0x03d7, 0x03e5, 0x03ed,
+ 0x03f3, 0x03fd, 0x0406, 0x040c, 0x0412, 0x041c, 0x042f, 0x043d,
+ 0x0466, 0x046f, 0x0473, 0x0480, 0x0486, 0x0498, 0x04ba, 0x04c2,
+ 0x04d0, 0x04d5, 0x04e2, 0x04f2, 0x04fc, 0x0506, 0x050c, 0x0516,
+ 0x051b, 0x0538, 0x053c, 0x0541, 0x0547, 0x0553, 0x0559, 0x0560,
+ 0x0569, 0x056f, 0x0574, 0x0581, 0x058a, 0x0592, 0x05a1, 0x05b6,
+ // Entry 80 - BF
+ 0x05c2, 0x05cc, 0x05d2, 0x05e2, 0x05ed, 0x05f2, 0x05f9, 0x0604,
+ 0x0611, 0x061b, 0x0623, 0x062a, 0x0633, 0x063c, 0x0647, 0x064d,
+ 0x0655, 0x065b, 0x0662, 0x066d, 0x0679, 0x0685, 0x0696, 0x06a0,
+ 0x06a4, 0x06b3, 0x06bc, 0x06cc, 0x06e4, 0x06ee, 0x06f9, 0x0703,
+ 0x0709, 0x0712, 0x0722, 0x0728, 0x072f, 0x0737, 0x073f, 0x0747,
+ 0x0755, 0x075a, 0x0768, 0x0770, 0x0779, 0x0782, 0x078b, 0x0791,
+ 0x0796, 0x079a, 0x07a5, 0x07aa, 0x07b0, 0x07b4, 0x07c6, 0x07d7,
+ 0x07e7, 0x07f1, 0x07ff, 0x0818, 0x0829, 0x0834, 0x0846, 0x0851,
+ // Entry C0 - FF
+ 0x0856, 0x085e, 0x0863, 0x0874, 0x087b, 0x0883, 0x088a, 0x0896,
+ 0x089c, 0x08aa, 0x08ba, 0x08cc, 0x08d3, 0x08df, 0x08e9, 0x08f4,
+ 0x08fe, 0x0921, 0x092b, 0x0937, 0x0941, 0x094a, 0x0953, 0x095b,
+ 0x0967, 0x097e, 0x0986, 0x0992, 0x0999, 0x09a5, 0x09b5, 0x09cf,
+ 0x09d4, 0x09ec, 0x09f0, 0x09f9, 0x0a08, 0x0a0f, 0x0a1a, 0x0a29,
+ 0x0a31, 0x0a36, 0x0a44, 0x0a57, 0x0a5d, 0x0a63, 0x0a6c, 0x0a73,
+ 0x0a79, 0x0a9b, 0x0aad, 0x0ab4, 0x0ac1, 0x0ac9, 0x0aef, 0x0af8,
+ 0x0b0c, 0x0b24, 0x0b2b, 0x0b32, 0x0b4d, 0x0b53, 0x0b5b, 0x0b60,
+ // Entry 100 - 13F
+ 0x0b67, 0x0b82, 0x0b88, 0x0b90, 0x0ba2, 0x0ba8, 0x0bae, 0x0bbc,
+ 0x0bc8, 0x0bd1, 0x0bde, 0x0bed, 0x0bf9, 0x0c06, 0x0c14, 0x0c27,
+ 0x0c2e, 0x0c44, 0x0c52, 0x0c5e, 0x0c69, 0x0c79, 0x0c85, 0x0c94,
+ 0x0c9e, 0x0cb2, 0x0cbc, 0x0cc2, 0x0cd0, 0x0cdd, 0x0ce4, 0x0cf1,
+ 0x0cff, 0x0d0d, 0x0d1a,
+} // Size: 606 bytes
+
+var hyRegionStr string = "" + // Size: 6292 bytes
+ "Համբարձման կղզիԱնդորրաԱրաբական Միացյալ ԷմիրություններԱֆղանստանԱնտիգուա և" +
+ " ԲարբուդաԱնգիլյաԱլբանիաՀայաստանԱնգոլաԱնտարկտիդաԱրգենտինաԱմերիկյան ՍամոաԱ" +
+ "վստրիաԱվստրալիաԱրուբաԱլանդյան կղզիներԱդրբեջանԲոսնիա և ՀերցեգովինաԲարբադ" +
+ "ոսԲանգլադեշԲելգիաԲուրկինա ՖասոԲուլղարիաԲահրեյնԲուրունդիԲենինՍուրբ Բարդո" +
+ "ւղիմեոսԲերմուդյան կղզիներԲրունեյԲոլիվիաԿարիբյան ՆիդեռլանդներԲրազիլիաԲահ" +
+ "ամներԲութանԲուվե կղզիԲոթսվանաԲելառուսԲելիզԿանադաԿոկոսյան (Քիլինգ) կղզին" +
+ "երԿոնգո - ԿինշասաԿենտրոնական Աֆրիկյան ՀանրապետությունԿոնգո - ԲրազավիլՇվ" +
+ "եյցարիաԿոտ Դ՛իվուարԿուկի կղզիներՉիլիԿամերունՉինաստանԿոլումբիաՔլիփերթոն " +
+ "կղզիԿոստա ՌիկաԿուբաԿաբո ՎերդեԿյուրասաոԾննդյան կղզիԿիպրոսՉեխիաԳերմանիաԴի" +
+ "եգո ԳարսիաՋիբուտիԴանիաԴոմինիկաԴոմինիկյան ՀանրապետությունԱլժիրՍեուտա և Մ" +
+ "ելիլյաԷկվադորԷստոնիաԵգիպտոսԱրևմտյան ՍահարաԷրիտրեաԻսպանիաԵթովպիաԵվրոպակա" +
+ "ն ՄիությունՖինլանդիաՖիջիՖոլքլենդյան կղզիներՄիկրոնեզիաՖարերյան կղզիներՖր" +
+ "անսիաԳաբոնՄեծ ԲրիտանիաԳրենադաՎրաստանՖրանսիական ԳվիանաԳերնսիԳանաՋիբրալթա" +
+ "րԳրենլանդիաԳամբիաԳվինեաԳվադելուպաՀասարակածային ԳվինեաՀունաստանՀարավային" +
+ " Ջորջիա և Հարավային Սենդվիչյան կղզիներԳվատեմալաԳուամԳվինեա-ԲիսաուԳայանաՀ" +
+ "ոնկոնգի ՀՎՇՀերդ կղզի և ՄակԴոնալդի կղզիներՀոնդուրասԽորվաթիաՀաիթիՀունգարի" +
+ "աԿանարյան կղզիներԻնդոնեզիաԻռլանդիաԻսրայելՄեն կղզիՀնդկաստանՀնդկական Օվկի" +
+ "անոսում Բրիտանական ՏարածքԻրաքԻրանԻսլանդիաԻտալիաՋերսիՃամայկաՀորդանանՃապո" +
+ "նիաՔենիաՂրղզստանԿամբոջաԿիրիբատիԿոմորյան կղզիներՍենթ Քիթս և ՆեվիսՀյուսիս" +
+ "ային ԿորեաՀարավային ԿորեաՔուվեյթԿայմանյան կղզիներՂազախստանԼաոսԼիբանանՍե" +
+ "նթ ԼուսիաԼիխտենշտեյնՇրի ԼանկաԼիբերիաԼեսոտոԼիտվաԼյուքսեմբուրգԼատվիաԼիբիա" +
+ "ՄարոկկոՄոնակոՄոլդովաՉեռնոգորիաՍեն ՄարտենՄադագասկարՄարշալյան կղզիներՄակե" +
+ "դոնիաՄալիՄյանմա (Բիրմա)ՄոնղոլիաՉինաստանի Մակաո ՀՎՇՀյուսիսային Մարիանյան" +
+ " կղզիներՄարտինիկաՄավրիտանիաՄոնտսերատՄալթաՄավրիկիոսՄալդիվներՄալավիՄեքսիկա" +
+ "ՄալայզիաՄոզամբիկՆամիբիաՆոր ԿալեդոնիաՆիգերՆորֆոլկ կղզիՆիգերիաՆիկարագուաՆ" +
+ "իդեռլանդներՆորվեգիաՆեպալՆաուրուՆիուեՆոր ԶելանդիաՕմանՊանամաՊերուՖրանսիակ" +
+ "ան ՊոլինեզիաՊապուա Նոր ԳվինեաՖիլիպիններՊակիստանԼեհաստանՍեն Պիեռ և Միքել" +
+ "ոնՊիտկեռն կղզիներՊուերտո ՌիկոՊաղեստինյան տարածքներՊորտուգալիաՊալաուՊարա" +
+ "գվայԿատարԱրտաքին ՕվկիանիաՌեյունիոնՌումինիաՍերբիաՌուսաստանՌուանդաՍաուդյա" +
+ "ն ԱրաբիաՍողոմոնյան կղզիներՍեյշելյան կղզիներՍուդանՇվեդիաՍինգապուրՍուրբ Հ" +
+ "եղինեի կղզիՍլովենիաՍվալբարդ և Յան ՄայենՍլովակիաՍիերա ԼեոնեՍան ՄարինոՍեն" +
+ "եգալՍոմալիՍուրինամՀարավային ՍուդանՍան Տոմե և ՓրինսիփիՍալվադորՍինտ Մարտե" +
+ "նՍիրիաՍվազիլենդՏրիստան դա ԿունյաԹըրքս և Կայկոս կղզիներՉադՖրանսիական Հար" +
+ "ավային ՏարածքներՏոգոԹաիլանդՏաջիկստանՏոկելաուԹիմոր-ԼեստեԹուրքմենստանԹուն" +
+ "իսՏոնգաԹուրքիաՏրինիդադ և ՏոբագոՏուվալուԹայվանԹանզանիաՈւկրաինաՈւգանդաԱրտ" +
+ "աքին կղզիներ (ԱՄՆ)Ամերիկայի Միացյալ ՆահանգներՈւրուգվայՈւզբեկստանՎատիկան" +
+ " քաղաք-պետությունՍենթ Վինսենթ և ԳրենադիններՎենեսուելաԲրիտանական Վիրջինյա" +
+ "ն կղզիներԱմերիկյան Վիրջինյան կղզիներՎիետնամՎանուատուՈւոլիս և ՖուտունաՍա" +
+ "մոաԿոսովոԵմենՄայոտՀարավաֆրիկյան ՀանրապետությունԶամբիաԶիմբաբվեԱնհայտ տար" +
+ "ածաշրջանԱշխարհԱֆրիկաՀյուսիսային ԱմերիկաՀարավային ԱմերիկաՕվկիանիաԱրևմտյա" +
+ "ն ԱֆրիկաԿենտրոնական ԱմերիկաԱրևելյան ԱֆրիկաՀյուսիսային ԱֆրիկաԿենտրոնական" +
+ " ԱֆրիկաՀարավային ԱֆրիկաԱմերիկաՀյուսիսային Ամերիկա - ԱՄՆ և ԿանադաԿարիբյան" +
+ " կղզիներԱրևելյան ԱսիաՀարավային ԱսիաՀարավ-Արևելյան ԱսիաՀարավային ԵվրոպաԱվ" +
+ "ստրալիա և Նոր ԶելանդիաՄելանեզիաՄիկրոնեզիայի տարածաշրջանՊոլինեզիաԱսիաԿեն" +
+ "տրոնական ԱսիաԱրևմտյան ԱսիաԵվրոպաԱրևելյան ԵվրոպաՀյուսիսային ԵվրոպաԱրևմտյ" +
+ "ան ԵվրոպաԼատինական Ամերիկա"
+
+var hyRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001d, 0x002b, 0x0067, 0x0079, 0x009d, 0x00ab, 0x00b9,
+ 0x00c9, 0x00c9, 0x00d5, 0x00e9, 0x00fb, 0x0118, 0x0126, 0x0138,
+ 0x0144, 0x0163, 0x0173, 0x0199, 0x01a9, 0x01bb, 0x01c7, 0x01e0,
+ 0x01f2, 0x0200, 0x0212, 0x021c, 0x023f, 0x0262, 0x0270, 0x027e,
+ 0x02a7, 0x02b7, 0x02c7, 0x02d3, 0x02e6, 0x02f6, 0x0306, 0x0310,
+ 0x031c, 0x034a, 0x0365, 0x03ab, 0x03c8, 0x03da, 0x03f1, 0x040a,
+ 0x0412, 0x0422, 0x0432, 0x0444, 0x045f, 0x0472, 0x047c, 0x048f,
+ 0x04a1, 0x04b8, 0x04c4, 0x04ce, 0x04de, 0x04f5, 0x0503, 0x050d,
+ // Entry 40 - 7F
+ 0x051d, 0x0550, 0x055a, 0x0578, 0x0586, 0x0594, 0x05a2, 0x05bf,
+ 0x05cd, 0x05db, 0x05e9, 0x060e, 0x0620, 0x0628, 0x064d, 0x0661,
+ 0x0680, 0x068e, 0x0698, 0x06af, 0x06bd, 0x06cb, 0x06ec, 0x06f8,
+ 0x0700, 0x0712, 0x0726, 0x0732, 0x073e, 0x0752, 0x0779, 0x078b,
+ 0x07e4, 0x07f6, 0x0800, 0x0819, 0x0825, 0x083c, 0x0874, 0x0886,
+ 0x0896, 0x08a0, 0x08b2, 0x08d1, 0x08e3, 0x08f3, 0x0901, 0x0910,
+ 0x0922, 0x096b, 0x0973, 0x097b, 0x098b, 0x0997, 0x09a1, 0x09af,
+ 0x09bf, 0x09cd, 0x09d7, 0x09e7, 0x09f5, 0x0a05, 0x0a24, 0x0a43,
+ // Entry 80 - BF
+ 0x0a64, 0x0a81, 0x0a8f, 0x0ab0, 0x0ac2, 0x0aca, 0x0ad8, 0x0aed,
+ 0x0b03, 0x0b14, 0x0b22, 0x0b2e, 0x0b38, 0x0b52, 0x0b5e, 0x0b68,
+ 0x0b76, 0x0b82, 0x0b90, 0x0ba4, 0x0bb7, 0x0bcb, 0x0bec, 0x0bfe,
+ 0x0c06, 0x0c1f, 0x0c2f, 0x0c53, 0x0c8b, 0x0c9d, 0x0cb1, 0x0cc3,
+ 0x0ccd, 0x0cdf, 0x0cf1, 0x0cfd, 0x0d0b, 0x0d1b, 0x0d2b, 0x0d39,
+ 0x0d52, 0x0d5c, 0x0d73, 0x0d81, 0x0d95, 0x0dad, 0x0dbd, 0x0dc7,
+ 0x0dd5, 0x0ddf, 0x0df6, 0x0dfe, 0x0e0a, 0x0e14, 0x0e3b, 0x0e5b,
+ 0x0e6f, 0x0e7f, 0x0e8f, 0x0eb0, 0x0ecd, 0x0ee4, 0x0f0d, 0x0f23,
+ // Entry C0 - FF
+ 0x0f2f, 0x0f3f, 0x0f49, 0x0f68, 0x0f7a, 0x0f8a, 0x0f96, 0x0fa8,
+ 0x0fb6, 0x0fd3, 0x0ff6, 0x1017, 0x1023, 0x102f, 0x1041, 0x1063,
+ 0x1073, 0x1098, 0x10a8, 0x10bd, 0x10d0, 0x10de, 0x10ea, 0x10fa,
+ 0x1119, 0x113c, 0x114c, 0x1161, 0x116b, 0x117d, 0x119d, 0x11c6,
+ 0x11cc, 0x1206, 0x120e, 0x121c, 0x122e, 0x123e, 0x1253, 0x126b,
+ 0x1277, 0x1281, 0x128f, 0x12af, 0x12bf, 0x12cb, 0x12db, 0x12eb,
+ 0x12f9, 0x131f, 0x1353, 0x1365, 0x1379, 0x13a7, 0x13d8, 0x13ec,
+ 0x1422, 0x1456, 0x1464, 0x1476, 0x1496, 0x14a0, 0x14ac, 0x14b4,
+ // Entry 100 - 13F
+ 0x14be, 0x14f7, 0x1503, 0x1513, 0x1536, 0x1542, 0x154e, 0x1573,
+ 0x1594, 0x15a4, 0x15c1, 0x15e6, 0x1603, 0x1626, 0x1649, 0x1668,
+ 0x1676, 0x16b4, 0x16d3, 0x16ec, 0x1707, 0x172b, 0x174a, 0x1777,
+ 0x1789, 0x17b8, 0x17ca, 0x17d2, 0x17f1, 0x180a, 0x1816, 0x1833,
+ 0x1856, 0x1873, 0x1894,
+} // Size: 606 bytes
+
+var idRegionStr string = "" + // Size: 3042 bytes
+ "Pulau AscensionAndorraUni Emirat ArabAfganistanAntigua dan BarbudaAnguil" +
+ "laAlbaniaArmeniaAntilla BelandaAngolaAntarktikaArgentinaSamoa AmerikaAus" +
+ "triaAustraliaArubaKepulauan AlandAzerbaijanBosnia dan HerzegovinaBarbado" +
+ "sBangladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint Barthelemy" +
+ "BermudaBruneiBoliviaKaribia BelandaBrasilBahamaBhutanPulau BouvetBotswan" +
+ "aBelarusBelizeKanadaKepulauan CocosKongo - KinshasaRepublik Afrika Tenga" +
+ "hKongo - BrazzavilleSwissCote d’IvoireKepulauan CookCileKamerunChinaKolo" +
+ "mbiaPulau ClippertonKosta RikaKubaTanjung VerdeCuraçaoPulau ChristmasSip" +
+ "rusRepublik CheskaJermanDiego GarciaJibutiDenmarkDominikaRepublik Domini" +
+ "kaAljazairCeuta dan MelillaEkuadorEstoniaMesirSahara BaratEritreaSpanyol" +
+ "EtiopiaUni EropaFinlandiaFijiKepulauan MalvinasMikronesiaKepulauan Faroe" +
+ "PrancisGabonInggrisGrenadaGeorgiaGuyana PrancisGuernseyGhanaGibraltarGri" +
+ "nlandiaGambiaGuineaGuadeloupeGuinea EkuatorialYunaniGeorgia Selatan & Ke" +
+ "p. Sandwich SelatanGuatemalaGuamGuinea-BissauGuyanaHong Kong SAR ChinaPu" +
+ "lau Heard dan Kepulauan McDonaldHondurasKroasiaHaitiHungariaKepulauan Ca" +
+ "naryIndonesiaIrlandiaIsraelPulau ManIndiaWilayah Inggris di Samudra Hind" +
+ "iaIrakIranIslandiaItaliaJerseyJamaikaYordaniaJepangKenyaKirgistanKamboja" +
+ "KiribatiKomoroSaint Kitts dan NevisKorea UtaraKorea SelatanKuwaitKepulau" +
+ "an CaymanKazakstanLaosLebanonSaint LuciaLiechtensteinSri LankaLiberiaLes" +
+ "othoLituaniaLuksemburgLatviaLibiaMarokoMonakoMoldovaMontenegroSaint Mart" +
+ "inMadagaskarKepulauan MarshallMakedoniaMaliMyanmar (Burma)MongoliaMakau " +
+ "SAR ChinaKepulauan Mariana UtaraMartinikMauritaniaMontserratMaltaMauriti" +
+ "usMaladewaMalawiMeksikoMalaysiaMozambikNamibiaKaledonia BaruNigerKepulau" +
+ "an NorfolkNigeriaNikaraguaBelandaNorwegiaNepalNauruNiueSelandia BaruOman" +
+ "PanamaPeruPolinesia PrancisPapua NuginiFilipinaPakistanPolandiaSaint Pie" +
+ "rre dan MiquelonKepulauan PitcairnPuerto RikoWilayah PalestinaPortugalPa" +
+ "lauParaguayQatarOseania LuarRéunionRumaniaSerbiaRusiaRwandaArab SaudiKep" +
+ "ulauan SolomonSeychellesSudanSwediaSingapuraSaint HelenaSloveniaKepulaua" +
+ "n Svalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSuri" +
+ "nameSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSuriahSwazi" +
+ "landTristan da CunhaKepulauan Turks dan CaicosCadWilayah Kutub Selatan P" +
+ "rancisTogoThailandTajikistanTokelauTimor LesteTurkimenistanTunisiaTongaT" +
+ "urkiTrinidad dan TobagoTuvaluTaiwanTanzaniaUkrainaUgandaKepulauan Terlua" +
+ "r A.S.Amerika SerikatUruguayUzbekistanVatikanSaint Vincent dan Grenadine" +
+ "sVenezuelaKepulauan Virgin InggrisKepulauan Virgin A.S.VietnamVanuatuKep" +
+ "ulauan Wallis dan FutunaSamoaKosovoYamanMayotteAfrika SelatanZambiaZimba" +
+ "bweWilayah Tidak DikenalDuniaAfrikaAmerika UtaraAmerika SelatanOseaniaAf" +
+ "rika Bagian BaratAmerika TengahAfrika Bagian TimurAfrika Bagian UtaraAfr" +
+ "ika Bagian TengahAfrika Bagian SelatanAmerikaAmerika Bagian UtaraKepulau" +
+ "an KaribiaAsia Bagian TimurAsia Bagian SelatanAsia TenggaraEropa Bagian " +
+ "SelatanAustralasiaMelanesiaWilayah MikronesiaPolinesiaAsiaAsia TengahAsi" +
+ "a Bagian BaratEropaEropa Bagian TimurEropa Bagian UtaraEropa Bagian Bara" +
+ "tAmerika Latin"
+
+var idRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0016, 0x0025, 0x002f, 0x0042, 0x004a, 0x0051,
+ 0x0058, 0x0067, 0x006d, 0x0077, 0x0080, 0x008d, 0x0094, 0x009d,
+ 0x00a2, 0x00b1, 0x00bb, 0x00d1, 0x00d9, 0x00e3, 0x00e9, 0x00f5,
+ 0x00fd, 0x0104, 0x010b, 0x0110, 0x0120, 0x0127, 0x012d, 0x0134,
+ 0x0143, 0x0149, 0x014f, 0x0155, 0x0161, 0x0169, 0x0170, 0x0176,
+ 0x017c, 0x018b, 0x019b, 0x01b1, 0x01c4, 0x01c9, 0x01d8, 0x01e6,
+ 0x01ea, 0x01f1, 0x01f6, 0x01fe, 0x020e, 0x0218, 0x021c, 0x0229,
+ 0x0231, 0x0240, 0x0246, 0x0255, 0x025b, 0x0267, 0x026d, 0x0274,
+ // Entry 40 - 7F
+ 0x027c, 0x028d, 0x0295, 0x02a6, 0x02ad, 0x02b4, 0x02b9, 0x02c5,
+ 0x02cc, 0x02d3, 0x02da, 0x02e3, 0x02ec, 0x02f0, 0x0302, 0x030c,
+ 0x031b, 0x0322, 0x0327, 0x032e, 0x0335, 0x033c, 0x034a, 0x0352,
+ 0x0357, 0x0360, 0x036a, 0x0370, 0x0376, 0x0380, 0x0391, 0x0397,
+ 0x03be, 0x03c7, 0x03cb, 0x03d8, 0x03de, 0x03f1, 0x0413, 0x041b,
+ 0x0422, 0x0427, 0x042f, 0x043f, 0x0448, 0x0450, 0x0456, 0x045f,
+ 0x0464, 0x0485, 0x0489, 0x048d, 0x0495, 0x049b, 0x04a1, 0x04a8,
+ 0x04b0, 0x04b6, 0x04bb, 0x04c4, 0x04cb, 0x04d3, 0x04d9, 0x04ee,
+ // Entry 80 - BF
+ 0x04f9, 0x0506, 0x050c, 0x051c, 0x0525, 0x0529, 0x0530, 0x053b,
+ 0x0548, 0x0551, 0x0558, 0x055f, 0x0567, 0x0571, 0x0577, 0x057c,
+ 0x0582, 0x0588, 0x058f, 0x0599, 0x05a5, 0x05af, 0x05c1, 0x05ca,
+ 0x05ce, 0x05dd, 0x05e5, 0x05f4, 0x060b, 0x0613, 0x061d, 0x0627,
+ 0x062c, 0x0635, 0x063d, 0x0643, 0x064a, 0x0652, 0x065a, 0x0661,
+ 0x066f, 0x0674, 0x0685, 0x068c, 0x0695, 0x069c, 0x06a4, 0x06a9,
+ 0x06ae, 0x06b2, 0x06bf, 0x06c3, 0x06c9, 0x06cd, 0x06de, 0x06ea,
+ 0x06f2, 0x06fa, 0x0702, 0x071b, 0x072d, 0x0738, 0x0749, 0x0751,
+ // Entry C0 - FF
+ 0x0756, 0x075e, 0x0763, 0x076f, 0x0777, 0x077e, 0x0784, 0x0789,
+ 0x078f, 0x0799, 0x07aa, 0x07b4, 0x07b9, 0x07bf, 0x07c8, 0x07d4,
+ 0x07dc, 0x07fc, 0x0804, 0x0810, 0x081a, 0x0821, 0x0828, 0x0830,
+ 0x083d, 0x0852, 0x085d, 0x0869, 0x086f, 0x0878, 0x0888, 0x08a2,
+ 0x08a5, 0x08c2, 0x08c6, 0x08ce, 0x08d8, 0x08df, 0x08ea, 0x08f7,
+ 0x08fe, 0x0903, 0x0908, 0x091b, 0x0921, 0x0927, 0x092f, 0x0936,
+ 0x093c, 0x0952, 0x0961, 0x0968, 0x0972, 0x0979, 0x0995, 0x099e,
+ 0x09b6, 0x09cb, 0x09d2, 0x09d9, 0x09f4, 0x09f9, 0x09ff, 0x0a04,
+ // Entry 100 - 13F
+ 0x0a0b, 0x0a19, 0x0a1f, 0x0a27, 0x0a3c, 0x0a41, 0x0a47, 0x0a54,
+ 0x0a63, 0x0a6a, 0x0a7d, 0x0a8b, 0x0a9e, 0x0ab1, 0x0ac5, 0x0ada,
+ 0x0ae1, 0x0af5, 0x0b06, 0x0b17, 0x0b2a, 0x0b37, 0x0b4b, 0x0b56,
+ 0x0b5f, 0x0b71, 0x0b7a, 0x0b7e, 0x0b89, 0x0b9a, 0x0b9f, 0x0bb1,
+ 0x0bc3, 0x0bd5, 0x0be2,
+} // Size: 606 bytes
+
+var isRegionStr string = "" + // Size: 3324 bytes
+ "Ascension-eyjaAndorraSameinuðu arabísku furstadæminAfganistanAntígva og " +
+ "BarbúdaAngvillaAlbaníaArmeníaHollensku AntillurAngólaSuðurskautslandiðAr" +
+ "gentínaBandaríska SamóaAusturríkiÁstralíaArúbaÁlandseyjarAserbaídsjanBos" +
+ "nía og HersegóvínaBarbadosBangladessBelgíaBúrkína FasóBúlgaríaBareinBúrú" +
+ "ndíBenínSankti BartólómeusareyjarBermúdaeyjarBrúneiBólivíaKaríbahafshlut" +
+ "i HollandsBrasilíaBahamaeyjarBútanBouveteyjaBotsvanaHvíta-RússlandBelísK" +
+ "anadaKókoseyjar (Keeling)Kongó-KinshasaMið-AfríkulýðveldiðKongó-Brazzavi" +
+ "lleSvissFílabeinsströndinCooks-eyjarSíleKamerúnKínaKólumbíaClipperton-ey" +
+ "jaKostaríkaKúbaGrænhöfðaeyjarCuracaoJólaeyKýpurTékklandÞýskalandDiego Ga" +
+ "rciaDjíbútíDanmörkDóminíkaDóminíska lýðveldiðAlsírCeuta og MelillaEkvado" +
+ "rEistlandEgyptalandVestur-SaharaErítreaSpánnEþíópíaEvrópusambandiðFinnla" +
+ "ndFídjíeyjarFalklandseyjarMíkrónesíaFæreyjarFrakklandGabonBretlandGrenad" +
+ "aGeorgíaFranska GvæjanaGuernseyGanaGíbraltarGrænlandGambíaGíneaGvadelúpe" +
+ "yjarMiðbaugs-GíneaGrikklandSuður-Georgía og Suður-SandvíkureyjarGvatemal" +
+ "aGvamGínea-BissáGvæjanaSjálfstjórnarsvæðið Hong KongHeard og McDonaldsey" +
+ "jarHondúrasKróatíaHaítíUngverjalandKanaríeyjarIndónesíaÍrlandÍsraelMönIn" +
+ "dlandBresku IndlandshafseyjarÍrakÍranÍslandÍtalíaJerseyJamaíkaJórdaníaJa" +
+ "panKeníaKirgistanKambódíaKíribatíKómoreyjarSankti Kitts og NevisNorður-K" +
+ "óreaSuður-KóreaKúveitCaymaneyjarKasakstanLaosLíbanonSankti LúsíaLiechte" +
+ "nsteinSrí LankaLíberíaLesótóLitháenLúxemborgLettlandLíbíaMarokkóMónakóMo" +
+ "ldóvaSvartfjallalandSt. MartinMadagaskarMarshalleyjarMakedóníaMalíMjanma" +
+ "r (Búrma)MongólíaSjálfstjórnarsvæðið MakaóNorður-MaríanaeyjarMartiníkMár" +
+ "itaníaMontserratMaltaMáritíusMaldíveyjarMalavíMexíkóMalasíaMósambíkNamib" +
+ "íaNýja-KaledóníaNígerNorfolkeyjaNígeríaNíkaragvaHollandNoregurNepalNárú" +
+ "NiueNýja-SjálandÓmanPanamaPerúFranska PólýnesíaPapúa Nýja-GíneaFilippsey" +
+ "jarPakistanPóllandSankti Pierre og MiquelonPitcairn-eyjarPúertó RíkóHeim" +
+ "astjórnarsvæði PalestínumannaPortúgalPaláParagvæKatarYtri EyjaálfaRéunio" +
+ "nRúmeníaSerbíaRússlandRúandaSádi-ArabíaSalómonseyjarSeychelles-eyjarSúda" +
+ "nSvíþjóðSingapúrSankti HelenaSlóveníaSvalbarði og Jan MayenSlóvakíaSíerr" +
+ "a LeóneSan MarínóSenegalSómalíaSúrínamSuður-SúdanSaó Tóme og PrinsípeEl " +
+ "SalvadorSankti MartinSýrlandSvasílandTristan da CunhaTurks- og Caicoseyj" +
+ "arTsjadFrönsku suðlægu landsvæðinTógóTaílandTadsjikistanTókeláTímor-Lest" +
+ "eTúrkmenistanTúnisTongaTyrklandTrínidad og TóbagóTúvalúTaívanTansaníaÚkr" +
+ "aínaÚgandaSmáeyjar BandaríkjannaBandaríkinÚrúgvæÚsbekistanVatíkaniðSankt" +
+ "i Vinsent og GrenadíneyjarVenesúelaBresku JómfrúaeyjarBandarísku Jómfrúa" +
+ "eyjarVíetnamVanúatúWallis- og FútúnaeyjarSamóaKósóvóJemenMayotteSuður-Af" +
+ "ríkaSambíaSimbabveÓþekkt svæðiHeimurinnAfríkaNorður-AmeríkaSuður-Ameríka" +
+ "EyjaálfaVestur-AfríkaMið-AmeríkaAustur-AfríkaNorður-AfríkaMið-AfríkaSuðu" +
+ "rhluti AfríkuAmeríkaAmeríka norðan MexikóKaríbahafiðAustur-AsíaSuður-Así" +
+ "aSuðaustur-AsíaSuður-EvrópaÁstralasíaMelanesíaMíkrónesíusvæðiðPólýnesíaA" +
+ "síaMið-AsíaVestur-AsíaEvrópaAustur-EvrópaNorður-EvrópaVestur-EvrópaRóman" +
+ "ska Ameríka"
+
+var isRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x0015, 0x0036, 0x0040, 0x0054, 0x005c, 0x0064,
+ 0x006c, 0x007e, 0x0085, 0x0098, 0x00a2, 0x00b4, 0x00bf, 0x00c9,
+ 0x00cf, 0x00db, 0x00e8, 0x0100, 0x0108, 0x0112, 0x0119, 0x0128,
+ 0x0132, 0x0138, 0x0142, 0x0148, 0x0163, 0x0170, 0x0177, 0x0180,
+ 0x0199, 0x01a2, 0x01ad, 0x01b3, 0x01bd, 0x01c5, 0x01d5, 0x01db,
+ 0x01e1, 0x01f6, 0x0205, 0x021d, 0x022f, 0x0234, 0x0247, 0x0252,
+ 0x0257, 0x025f, 0x0264, 0x026e, 0x027d, 0x0287, 0x028c, 0x029d,
+ 0x02a4, 0x02ab, 0x02b1, 0x02ba, 0x02c5, 0x02d1, 0x02db, 0x02e3,
+ // Entry 40 - 7F
+ 0x02ed, 0x0305, 0x030b, 0x031b, 0x0322, 0x032a, 0x0334, 0x0341,
+ 0x0349, 0x034f, 0x035a, 0x036b, 0x0373, 0x037f, 0x038d, 0x039a,
+ 0x03a3, 0x03ac, 0x03b1, 0x03b9, 0x03c0, 0x03c8, 0x03d8, 0x03e0,
+ 0x03e4, 0x03ee, 0x03f7, 0x03fe, 0x0404, 0x0412, 0x0422, 0x042b,
+ 0x0454, 0x045d, 0x0461, 0x046e, 0x0476, 0x0498, 0x04af, 0x04b8,
+ 0x04c1, 0x04c8, 0x04d4, 0x04e0, 0x04eb, 0x04f2, 0x04f9, 0x04fd,
+ 0x0504, 0x051c, 0x0521, 0x0526, 0x052d, 0x0535, 0x053b, 0x0543,
+ 0x054d, 0x0552, 0x0558, 0x0561, 0x056b, 0x0575, 0x0580, 0x0595,
+ // Entry 80 - BF
+ 0x05a3, 0x05b0, 0x05b7, 0x05c2, 0x05cb, 0x05cf, 0x05d7, 0x05e5,
+ 0x05f2, 0x05fc, 0x0605, 0x060d, 0x0615, 0x061f, 0x0627, 0x062e,
+ 0x0636, 0x063e, 0x0646, 0x0655, 0x065f, 0x0669, 0x0676, 0x0681,
+ 0x0686, 0x0696, 0x06a0, 0x06bf, 0x06d4, 0x06dd, 0x06e8, 0x06f2,
+ 0x06f7, 0x0701, 0x070d, 0x0714, 0x071c, 0x0724, 0x072e, 0x0736,
+ 0x0747, 0x074d, 0x0758, 0x0761, 0x076b, 0x0772, 0x0779, 0x077e,
+ 0x0784, 0x0788, 0x0796, 0x079b, 0x07a1, 0x07a6, 0x07ba, 0x07cd,
+ 0x07d9, 0x07e1, 0x07e9, 0x0802, 0x0810, 0x081f, 0x0844, 0x084d,
+ // Entry C0 - FF
+ 0x0852, 0x085a, 0x085f, 0x086d, 0x0875, 0x087e, 0x0885, 0x088e,
+ 0x0895, 0x08a2, 0x08b0, 0x08c0, 0x08c6, 0x08d1, 0x08da, 0x08e7,
+ 0x08f1, 0x0908, 0x0912, 0x0920, 0x092c, 0x0933, 0x093c, 0x0945,
+ 0x0952, 0x0969, 0x0974, 0x0981, 0x0989, 0x0993, 0x09a3, 0x09b8,
+ 0x09bd, 0x09dc, 0x09e2, 0x09ea, 0x09f6, 0x09fe, 0x0a0a, 0x0a17,
+ 0x0a1d, 0x0a22, 0x0a2a, 0x0a3f, 0x0a47, 0x0a4e, 0x0a57, 0x0a60,
+ 0x0a67, 0x0a7f, 0x0a8a, 0x0a93, 0x0a9e, 0x0aa9, 0x0ac9, 0x0ad3,
+ 0x0ae8, 0x0b02, 0x0b0a, 0x0b13, 0x0b2b, 0x0b31, 0x0b3a, 0x0b3f,
+ // Entry 100 - 13F
+ 0x0b46, 0x0b54, 0x0b5b, 0x0b63, 0x0b73, 0x0b7c, 0x0b83, 0x0b93,
+ 0x0ba2, 0x0bab, 0x0bb9, 0x0bc6, 0x0bd4, 0x0be3, 0x0bef, 0x0c02,
+ 0x0c0a, 0x0c22, 0x0c2f, 0x0c3b, 0x0c47, 0x0c57, 0x0c65, 0x0c71,
+ 0x0c7b, 0x0c91, 0x0c9d, 0x0ca2, 0x0cac, 0x0cb8, 0x0cbf, 0x0ccd,
+ 0x0cdc, 0x0cea, 0x0cfc,
+} // Size: 606 bytes
+
+var itRegionStr string = "" + // Size: 3049 bytes
+ "Isola AscensioneAndorraEmirati Arabi UnitiAfghanistanAntigua e BarbudaAn" +
+ "guillaAlbaniaArmeniaAntille OlandesiAngolaAntartideArgentinaSamoa americ" +
+ "aneAustriaAustraliaArubaIsole ÅlandAzerbaigianBosnia ed ErzegovinaBarbad" +
+ "osBangladeshBelgioBurkina FasoBulgariaBahreinBurundiBeninSaint-Barthélem" +
+ "yBermudaBruneiBoliviaCaraibi OlandesiBrasileBahamasBhutanIsola BouvetBot" +
+ "swanaBielorussiaBelizeCanadaIsole Cocos (Keeling)Congo - KinshasaRepubbl" +
+ "ica CentrafricanaCongo-BrazzavilleSvizzeraCosta d’AvorioIsole CookCileCa" +
+ "merunCinaColombiaIsola di ClippertonCosta RicaCubaCapo VerdeCuraçaoIsola" +
+ " ChristmasCiproRepubblica CecaGermaniaDiego GarciaGibutiDanimarcaDominic" +
+ "aRepubblica DominicanaAlgeriaCeuta e MelillaEcuadorEstoniaEgittoSahara o" +
+ "ccidentaleEritreaSpagnaEtiopiaUnione EuropeaFinlandiaFigiIsole FalklandM" +
+ "icronesiaIsole Fær ØerFranciaGabonRegno UnitoGrenadaGeorgiaGuyana france" +
+ "seGuernseyGhanaGibilterraGroenlandiaGambiaGuineaGuadalupaGuinea Equatori" +
+ "aleGreciaGeorgia del Sud e isole Sandwich australiGuatemalaGuamGuinea-Bi" +
+ "ssauGuyanaRAS di Hong KongIsole Heard e McDonaldHondurasCroaziaHaitiUngh" +
+ "eriaIsole CanarieIndonesiaIrlandaIsraeleIsola di ManIndiaTerritorio brit" +
+ "annico dell’Oceano IndianoIraqIranIslandaItaliaJerseyGiamaicaGiordaniaGi" +
+ "apponeKenyaKirghizistanCambogiaKiribatiComoreSaint Kitts e NevisCorea de" +
+ "l NordCorea del SudKuwaitIsole CaymanKazakistanLaosLibanoSaint LuciaLiec" +
+ "htensteinSri LankaLiberiaLesothoLituaniaLussemburgoLettoniaLibiaMaroccoM" +
+ "onacoMoldaviaMontenegroSaint MartinMadagascarIsole MarshallRepubblica di" +
+ " MacedoniaMaliMyanmar (Birmania)MongoliaRAS di MacaoIsole Marianne sette" +
+ "ntrionaliMartinicaMauritaniaMontserratMaltaMauritiusMaldiveMalawiMessico" +
+ "MalaysiaMozambicoNamibiaNuova CaledoniaNigerIsola NorfolkNigeriaNicaragu" +
+ "aPaesi BassiNorvegiaNepalNauruNiueNuova ZelandaOmanPanamáPerùPolinesia f" +
+ "rancesePapua Nuova GuineaFilippinePakistanPoloniaSaint Pierre e Miquelon" +
+ "Isole PitcairnPortoricoTerritori palestinesiPortogalloPalauParaguayQatar" +
+ "Oceania lontanaRiunioneRomaniaSerbiaRussiaRuandaArabia SauditaIsole Salo" +
+ "moneSeychellesSudanSveziaSingaporeSant’ElenaSloveniaSvalbard e Jan Mayen" +
+ "SlovacchiaSierra LeoneSan MarinoSenegalSomaliaSurinameSud SudanSão Tomé " +
+ "e PríncipeEl SalvadorSint MaartenSiriaSwazilandTristan da CunhaIsole Tur" +
+ "ks e CaicosCiadTerre australi francesiTogoThailandiaTagikistanTokelauTim" +
+ "or LesteTurkmenistanTunisiaTongaTurchiaTrinidad e TobagoTuvaluTaiwanTanz" +
+ "aniaUcrainaUgandaAltre isole americane del PacificoStati UnitiUruguayUzb" +
+ "ekistanCittà del VaticanoSaint Vincent e GrenadinesVenezuelaIsole Vergin" +
+ "i BritannicheIsole Vergini AmericaneVietnamVanuatuWallis e FutunaSamoaKo" +
+ "sovoYemenMayotteSudafricaZambiaZimbabweRegione sconosciutaMondoAfricaNor" +
+ "d AmericaAmerica del SudOceaniaAfrica occidentaleAmerica CentraleAfrica " +
+ "orientaleNordafricaAfrica centraleAfrica del SudAmericheAmerica del Nord" +
+ "CaraibiAsia orientaleAsia del SudSud-est asiaticoEuropa meridionaleAustr" +
+ "alasiaMelanesiaRegione MicronesianaPolinesiaAsiaAsia centraleAsia occide" +
+ "ntaleEuropaEuropa orientaleEuropa settentrionaleEuropa occidentaleAmeric" +
+ "a Latina"
+
+var itRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0017, 0x002a, 0x0035, 0x0046, 0x004e, 0x0055,
+ 0x005c, 0x006c, 0x0072, 0x007b, 0x0084, 0x0093, 0x009a, 0x00a3,
+ 0x00a8, 0x00b4, 0x00bf, 0x00d3, 0x00db, 0x00e5, 0x00eb, 0x00f7,
+ 0x00ff, 0x0106, 0x010d, 0x0112, 0x0123, 0x012a, 0x0130, 0x0137,
+ 0x0147, 0x014e, 0x0155, 0x015b, 0x0167, 0x016f, 0x017a, 0x0180,
+ 0x0186, 0x019b, 0x01ab, 0x01c3, 0x01d4, 0x01dc, 0x01ec, 0x01f6,
+ 0x01fa, 0x0201, 0x0205, 0x020d, 0x0220, 0x022a, 0x022e, 0x0238,
+ 0x0240, 0x024f, 0x0254, 0x0263, 0x026b, 0x0277, 0x027d, 0x0286,
+ // Entry 40 - 7F
+ 0x028e, 0x02a3, 0x02aa, 0x02b9, 0x02c0, 0x02c7, 0x02cd, 0x02df,
+ 0x02e6, 0x02ec, 0x02f3, 0x0301, 0x030a, 0x030e, 0x031c, 0x0326,
+ 0x0335, 0x033c, 0x0341, 0x034c, 0x0353, 0x035a, 0x0369, 0x0371,
+ 0x0376, 0x0380, 0x038b, 0x0391, 0x0397, 0x03a0, 0x03b2, 0x03b8,
+ 0x03e1, 0x03ea, 0x03ee, 0x03fb, 0x0401, 0x0411, 0x0427, 0x042f,
+ 0x0436, 0x043b, 0x0443, 0x0450, 0x0459, 0x0460, 0x0467, 0x0473,
+ 0x0478, 0x04a3, 0x04a7, 0x04ab, 0x04b2, 0x04b8, 0x04be, 0x04c6,
+ 0x04cf, 0x04d7, 0x04dc, 0x04e8, 0x04f0, 0x04f8, 0x04fe, 0x0511,
+ // Entry 80 - BF
+ 0x051f, 0x052c, 0x0532, 0x053e, 0x0548, 0x054c, 0x0552, 0x055d,
+ 0x056a, 0x0573, 0x057a, 0x0581, 0x0589, 0x0594, 0x059c, 0x05a1,
+ 0x05a8, 0x05ae, 0x05b6, 0x05c0, 0x05cc, 0x05d6, 0x05e4, 0x05fb,
+ 0x05ff, 0x0611, 0x0619, 0x0625, 0x0642, 0x064b, 0x0655, 0x065f,
+ 0x0664, 0x066d, 0x0674, 0x067a, 0x0681, 0x0689, 0x0692, 0x0699,
+ 0x06a8, 0x06ad, 0x06ba, 0x06c1, 0x06ca, 0x06d5, 0x06dd, 0x06e2,
+ 0x06e7, 0x06eb, 0x06f8, 0x06fc, 0x0703, 0x0708, 0x071a, 0x072c,
+ 0x0735, 0x073d, 0x0744, 0x075b, 0x0769, 0x0772, 0x0787, 0x0791,
+ // Entry C0 - FF
+ 0x0796, 0x079e, 0x07a3, 0x07b2, 0x07ba, 0x07c1, 0x07c7, 0x07cd,
+ 0x07d3, 0x07e1, 0x07ef, 0x07f9, 0x07fe, 0x0804, 0x080d, 0x0819,
+ 0x0821, 0x0835, 0x083f, 0x084b, 0x0855, 0x085c, 0x0863, 0x086b,
+ 0x0874, 0x088a, 0x0895, 0x08a1, 0x08a6, 0x08af, 0x08bf, 0x08d3,
+ 0x08d7, 0x08ee, 0x08f2, 0x08fc, 0x0906, 0x090d, 0x0918, 0x0924,
+ 0x092b, 0x0930, 0x0937, 0x0948, 0x094e, 0x0954, 0x095c, 0x0963,
+ 0x0969, 0x098b, 0x0996, 0x099d, 0x09a7, 0x09ba, 0x09d4, 0x09dd,
+ 0x09f6, 0x0a0d, 0x0a14, 0x0a1b, 0x0a2a, 0x0a2f, 0x0a35, 0x0a3a,
+ // Entry 100 - 13F
+ 0x0a41, 0x0a4a, 0x0a50, 0x0a58, 0x0a6b, 0x0a70, 0x0a76, 0x0a82,
+ 0x0a91, 0x0a98, 0x0aaa, 0x0aba, 0x0aca, 0x0ad4, 0x0ae3, 0x0af1,
+ 0x0af9, 0x0b09, 0x0b10, 0x0b1e, 0x0b2a, 0x0b3a, 0x0b4c, 0x0b57,
+ 0x0b60, 0x0b74, 0x0b7d, 0x0b81, 0x0b8e, 0x0b9e, 0x0ba4, 0x0bb4,
+ 0x0bc9, 0x0bdb, 0x0be9,
+} // Size: 606 bytes
+
+var jaRegionStr string = "" + // Size: 4839 bytes
+ "アセンション島アンドラアラブ首長国連邦アフガニスタンアンティグア・バーブーダアンギラアルバニアアルメニアオランダ領アンティルアンゴラ南極アルゼン" +
+ "チン米領サモアオーストリアオーストラリアアルバオーランド諸島アゼルバイジャンボスニア・ヘルツェゴビナバルバドスバングラデシュベルギーブルキナ" +
+ "ファソブルガリアバーレーンブルンジベナンサン・バルテルミー島バミューダブルネイボリビアオランダ領カリブブラジルバハマブータンブーベ島ボツワナ" +
+ "ベラルーシベリーズカナダココス(キーリング)諸島コンゴ民主共和国(キンシャサ)中央アフリカ共和国コンゴ共和国(ブラザビル)スイスコートジボワ" +
+ "ールクック諸島チリカメルーン中国コロンビアクリッパートン島コスタリカキューバカーボベルデキュラソークリスマス島キプロスチェコ共和国ドイツディ" +
+ "エゴガルシア島ジブチデンマークドミニカ国ドミニカ共和国アルジェリアセウタ・メリリャエクアドルエストニアエジプト西サハラエリトリアスペインエチ" +
+ "オピア欧州連合フィンランドフィジーフォークランド諸島ミクロネシア連邦フェロー諸島フランスガボンイギリスグレナダジョージア仏領ギアナガーンジー" +
+ "ガーナジブラルタルグリーンランドガンビアギニアグアドループ赤道ギニアギリシャ南ジョージア島・南サンドイッチ諸島グアテマラグアムギニアビサウガ" +
+ "イアナ中華人民共和国香港特別行政区ハード島・マクドナルド諸島ホンジュラスクロアチアハイチハンガリーカナリア諸島インドネシアアイルランドイスラ" +
+ "エルマン島インド英領インド洋地域イラクイランアイスランドイタリアジャージージャマイカヨルダン日本ケニアキルギスカンボジアキリバスコモロセント" +
+ "クリストファー・ネイビス朝鮮民主主義人民共和国大韓民国クウェートケイマン諸島カザフスタンラオスレバノンセントルシアリヒテンシュタインスリラン" +
+ "カリベリアレソトリトアニアルクセンブルグラトビアリビアモロッコモナコモルドバモンテネグロサン・マルタンマダガスカルマーシャル諸島マケドニアマ" +
+ "リミャンマーモンゴル中華人民共和国マカオ特別行政区北マリアナ諸島マルティニークモーリタニアモントセラトマルタモーリシャスモルディブマラウイメ" +
+ "キシコマレーシアモザンビークナミビアニューカレドニアニジェールノーフォーク島ナイジェリアニカラグアオランダノルウェーネパールナウルニウエ島ニ" +
+ "ュージーランドオマーンパナマペルー仏領ポリネシアパプアニューギニアフィリピンパキスタンポーランドサンピエール島・ミクロン島ピトケアン諸島プエ" +
+ "ルトリコパレスチナポルトガルパラオパラグアイカタールオセアニア周辺地域レユニオン島ルーマニアセルビアロシアルワンダサウジアラビアソロモン諸島" +
+ "セーシェルスーダンスウェーデンシンガポールセントヘレナスロベニアスバールバル諸島・ヤンマイエン島スロバキアシエラレオネサンマリノセネガルソマ" +
+ "リアスリナム南スーダンサントメ・プリンシペエルサルバドルシント・マールテンシリアスワジランドトリスタン・ダ・クーニャタークス・カイコス諸島チ" +
+ "ャド仏領極南諸島トーゴタイタジキスタントケラウ東ティモールトルクメニスタンチュニジアトンガトルコトリニダード・トバゴツバル台湾タンザニアウク" +
+ "ライナウガンダ米領太平洋諸島アメリカ合衆国ウルグアイウズベキスタンバチカン市国セントビンセント・グレナディーン諸島ベネズエラ英領ヴァージン諸" +
+ "島米領ヴァージン諸島ベトナムバヌアツウォリス・フツナサモアコソボイエメンマヨット島南アフリカザンビアジンバブエ不明な地域世界アフリカ北アメリ" +
+ "カ大陸南アメリカオセアニア西アフリカ中央アメリカ東アフリカ北アフリカ中部アフリカ南部アフリカアメリカ大陸北アメリカカリブ東アジア南アジア東南" +
+ "アジア南ヨーロッパオーストララシアメラネシアミクロネシアポリネシアアジア中央アジア西アジアヨーロッパ東ヨーロッパ北ヨーロッパ西ヨーロッパラテ" +
+ "ンアメリカ"
+
+var jaRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0015, 0x0021, 0x0039, 0x004e, 0x0072, 0x007e, 0x008d,
+ 0x009c, 0x00ba, 0x00c6, 0x00cc, 0x00de, 0x00ed, 0x00ff, 0x0114,
+ 0x011d, 0x0132, 0x014a, 0x016e, 0x017d, 0x0192, 0x019e, 0x01b3,
+ 0x01c2, 0x01d1, 0x01dd, 0x01e6, 0x0204, 0x0213, 0x021f, 0x022b,
+ 0x0243, 0x024f, 0x0258, 0x0264, 0x0270, 0x027c, 0x028b, 0x0297,
+ 0x02a0, 0x02c0, 0x02e9, 0x0304, 0x0327, 0x0330, 0x0348, 0x0357,
+ 0x035d, 0x036c, 0x0372, 0x0381, 0x0399, 0x03a8, 0x03b4, 0x03c6,
+ 0x03d5, 0x03e7, 0x03f3, 0x0405, 0x040e, 0x0429, 0x0432, 0x0441,
+ // Entry 40 - 7F
+ 0x0450, 0x0465, 0x0477, 0x048f, 0x049e, 0x04ad, 0x04b9, 0x04c5,
+ 0x04d4, 0x04e0, 0x04ef, 0x04fb, 0x050d, 0x0519, 0x0534, 0x054c,
+ 0x055e, 0x056a, 0x0573, 0x057f, 0x058b, 0x059a, 0x05a9, 0x05b8,
+ 0x05c1, 0x05d3, 0x05e8, 0x05f4, 0x05fd, 0x060f, 0x061e, 0x062a,
+ 0x065d, 0x066c, 0x0675, 0x0687, 0x0693, 0x06bd, 0x06e4, 0x06f6,
+ 0x0705, 0x070e, 0x071d, 0x072f, 0x0741, 0x0753, 0x0762, 0x076b,
+ 0x0774, 0x078c, 0x0795, 0x079e, 0x07b0, 0x07bc, 0x07cb, 0x07da,
+ 0x07e6, 0x07ec, 0x07f5, 0x0801, 0x0810, 0x081c, 0x0825, 0x0852,
+ // Entry 80 - BF
+ 0x0873, 0x087f, 0x088e, 0x08a0, 0x08b2, 0x08bb, 0x08c7, 0x08d9,
+ 0x08f4, 0x0903, 0x090f, 0x0918, 0x0927, 0x093c, 0x0948, 0x0951,
+ 0x095d, 0x0966, 0x0972, 0x0984, 0x0999, 0x09ab, 0x09c0, 0x09cf,
+ 0x09d5, 0x09e4, 0x09f0, 0x0a1d, 0x0a32, 0x0a47, 0x0a59, 0x0a6b,
+ 0x0a74, 0x0a86, 0x0a95, 0x0aa1, 0x0aad, 0x0abc, 0x0ace, 0x0ada,
+ 0x0af2, 0x0b01, 0x0b16, 0x0b28, 0x0b37, 0x0b43, 0x0b52, 0x0b5e,
+ 0x0b67, 0x0b73, 0x0b8b, 0x0b97, 0x0ba0, 0x0ba9, 0x0bbe, 0x0bd9,
+ 0x0be8, 0x0bf7, 0x0c06, 0x0c2d, 0x0c42, 0x0c54, 0x0c63, 0x0c72,
+ // Entry C0 - FF
+ 0x0c7b, 0x0c8a, 0x0c96, 0x0cb1, 0x0cc3, 0x0cd2, 0x0cde, 0x0ce7,
+ 0x0cf3, 0x0d08, 0x0d1a, 0x0d29, 0x0d35, 0x0d47, 0x0d59, 0x0d6b,
+ 0x0d7a, 0x0daa, 0x0db9, 0x0dcb, 0x0dda, 0x0de6, 0x0df2, 0x0dfe,
+ 0x0e0d, 0x0e2b, 0x0e40, 0x0e5b, 0x0e64, 0x0e76, 0x0e9a, 0x0ebb,
+ 0x0ec4, 0x0ed6, 0x0edf, 0x0ee5, 0x0ef7, 0x0f03, 0x0f15, 0x0f2d,
+ 0x0f3c, 0x0f45, 0x0f4e, 0x0f6c, 0x0f75, 0x0f7b, 0x0f8a, 0x0f99,
+ 0x0fa5, 0x0fba, 0x0fcf, 0x0fde, 0x0ff3, 0x1005, 0x103b, 0x104a,
+ 0x1065, 0x1080, 0x108c, 0x1098, 0x10b0, 0x10b9, 0x10c2, 0x10ce,
+ // Entry 100 - 13F
+ 0x10dd, 0x10ec, 0x10f8, 0x1107, 0x1116, 0x111c, 0x1128, 0x113d,
+ 0x114c, 0x115b, 0x116a, 0x117c, 0x118b, 0x119a, 0x11ac, 0x11be,
+ 0x11d0, 0x11df, 0x11e8, 0x11f4, 0x1200, 0x120f, 0x1221, 0x1239,
+ 0x1248, 0x125a, 0x1269, 0x1272, 0x1281, 0x128d, 0x129c, 0x12ae,
+ 0x12c0, 0x12d2, 0x12e7,
+} // Size: 606 bytes
+
+var kaRegionStr string = "" + // Size: 9560 bytes
+ "ამაღლების კუნძულიანდორაარაბთა გაერთიანებული საამიროებიავღანეთიანტიგუა და" +
+ " ბარბუდაანგილიაალბანეთისომხეთინიდერლანდების ანტილებიანგოლაანტარქტიკაარგე" +
+ "ნტინაამერიკის სამოაავსტრიაავსტრალიაარუბაალანდის კუნძულებიაზერბაიჯანიბო" +
+ "სნია და ჰერცეგოვინაბარბადოსიბანგლადეშიბელგიაბურკინა-ფასობულგარეთიბაჰრე" +
+ "ინიბურუნდიბენინისენ-ბართელმიბერმუდიბრუნეიბოლივიაკარიბის ნიდერლანდებიბრ" +
+ "აზილიაბაჰამის კუნძულებიბჰუტანიბუვებოტსვანაბელარუსიბელიზიკანადაქოქოსის " +
+ "კუნძულებიკონგო - კინშასაცენტრალური აფრიკის რესპუბლიკაკონგო - ბრაზავილი" +
+ "შვეიცარიაკოტ-დივუარიკუკის კუნძულებიჩილეკამერუნიჩინეთიკოლუმბიაკლიპერტონ" +
+ "ის კუნძულიკოსტა-რიკაკუბაკაბო-ვერდეკიურასაოშობის კუნძულიკვიპროსიჩეხეთის" +
+ " რესპუბლიკაგერმანიადიეგო-გარსიაჯიბუტიდანიადომინიკადომინიკელთა რესპუბლიკა" +
+ "ალჟირისეუტა და მელილაეკვადორიესტონეთიეგვიპტედასავლეთი საჰარაერიტრეაესპ" +
+ "ანეთიეთიოპიაევროკავშირიფინეთიფიჯიფოლკლენდის კუნძულებიმიკრონეზიაფარერის" +
+ " კუნძულებისაფრანგეთიგაბონიდიდი ბრიტანეთიგრენადასაქართველოსაფრანგეთის გვი" +
+ "ანაგერნსიგანაგიბრალტარიგრენლანდიაგამბიაგვინეაგვადელუპაეკვატორული გვინე" +
+ "ასაბერძნეთისამხრეთი გეორგია და სამხრეთ სენდვიჩის კუნძულებიგვატემალაგუა" +
+ "მიგვინეა-ბისაუგაიანაჰონკონგის სპეციალური ადმინისტრაციული რეგიონი ჩინეთ" +
+ "იჰერდი და მაკდონალდის კუნძულებიჰონდურასიხორვატიაჰაიტიუნგრეთიკანარის კუ" +
+ "ნძულებიინდონეზიაირლანდიაისრაელიმენის კუნძულიინდოეთიბრიტ. ტერიტ. ინდ. ო" +
+ "კეანეშიერაყიირანიისლანდიაიტალიაჯერსიიამაიკაიორდანიაიაპონიაკენიაყირგიზე" +
+ "თიკამბოჯაკირიბატიკომორის კუნძულებისენტ-კიტსი და ნევისიჩრდილოეთი კორეას" +
+ "ამხრეთი კორეაქუვეითიკაიმანის კუნძულებიყაზახეთილაოსილიბანისენტ-ლუსიალიხ" +
+ "ტენშტაინიშრი-ლანკალიბერიალესოთოლიტვალუქსემბურგილატვიალიბიამაროკომონაკო" +
+ "მოლდოვამონტენეგროსენ-მარტენიმადაგასკარიმარშალის კუნძულებიმაკედონიამალი" +
+ "მიანმარი (ბირმა)მონღოლეთიმაკაოს სპეციალური ადმინისტრაციული რეგიონი ჩინ" +
+ "ეთიჩრდილოეთ მარიანას კუნძულებიმარტინიკამავრიტანიამონსერატიმალტამავრიკი" +
+ "მალდივის რესპუბლიკამალავიმექსიკამალაიზიამოზამბიკინამიბიაახალი კალედონი" +
+ "ანიგერინორფოლკის კუნძულინიგერიანიკარაგუანიდერლანდებინორვეგიანეპალინაურ" +
+ "უნიუეახალი ზელანდიაომანიპანამაპერუსაფრანგეთის პოლინეზიაპაპუა-ახალი გვი" +
+ "ნეაფილიპინებიპაკისტანიპოლონეთისენ-პიერი და მიკელონიპიტკერნის კუნძულები" +
+ "პუერტო-რიკოპალესტინის ტერიტორიებიპორტუგალიაპალაუპარაგვაიკატარიშორეული " +
+ "ოკეანეთირეუნიონირუმინეთისერბეთირუსეთირუანდასაუდის არაბეთისოლომონის კუნ" +
+ "ძულებისეიშელის კუნძულებისუდანიშვედეთისინგაპურიწმინდა ელენეს კუნძულისლო" +
+ "ვენიაშპიცბერგენი და იან-მაიენისლოვაკეთისიერა-ლეონესან-მარინოსენეგალისო" +
+ "მალისურინამისამხრეთი სუდანისან-ტომე და პრინსიპისალვადორისინტ-მარტენისი" +
+ "რიასვაზილენდიტრისტან-და-კუნიატერქსისა და კაიკოსის კუნძულებიჩადიფრანგულ" +
+ "ი სამხრეთის ტერიტორიებიტოგოტაილანდიტაჯიკეთიტოკელაუაღმოსავლეთი ტიმორითუ" +
+ "რქმენეთიტუნისიტონგათურქეთიტრინიდადი და ტობაგოტუვალუტაივანიტანზანიაუკრა" +
+ "ინაუგანდააშშ-ის შორეული კუნძულებიამერიკის შეერთებული შტატებიურუგვაიუზბ" +
+ "ეკეთიქალაქი ვატიკანისენტ-ვინსენტი და გრენადინებივენესუელაბრიტანეთის ვი" +
+ "რჯინის კუნძულებიაშშ-ის ვირჯინის კუნძულებივიეტნამივანუატუუოლისი და ფუტუ" +
+ "ნასამოაკოსოვოიემენიმაიოტასამხრეთ აფრიკის რესპუბლიკაზამბიაზიმბაბვეუცნობ" +
+ "ი რეგიონიმსოფლიოაფრიკაჩრდილოეთი ამერიკასამხრეთი ამერიკაოკეანეთიდასავლე" +
+ "თი აფრიკაცენტრალური ამერიკააღმოსავლეთი აფრიკაჩრდილოეთი აფრიკაშუა აფრიკ" +
+ "ასამხრეთი აფრიკაამერიკებიამერიკის ჩრდილოეთიკარიბის ზღვააღმოსავლეთი აზი" +
+ "ასამხრეთი აზიასამხრეთ-აღმოსავლეთი აზიასამხრეთი ევროპაავსტრალაზიამელანე" +
+ "ზიამიკრონეზიის რეგიონიპოლინეზიააზიაცენტრალური აზიადასავლეთი აზიაევროპა" +
+ "აღმოსავლეთი ევროპაჩრდილოეთი ევროპადასავლეთი ევროპალათინური ამერიკა"
+
+var kaRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0031, 0x0043, 0x009c, 0x00b4, 0x00e6, 0x00fb, 0x0113,
+ 0x0128, 0x0168, 0x017a, 0x0198, 0x01b3, 0x01db, 0x01f0, 0x020b,
+ 0x021a, 0x024b, 0x026c, 0x02a7, 0x02c2, 0x02e0, 0x02f2, 0x0314,
+ 0x032f, 0x0347, 0x035c, 0x036e, 0x0390, 0x03a5, 0x03b7, 0x03cc,
+ 0x0406, 0x041e, 0x044f, 0x0464, 0x0470, 0x0488, 0x04a0, 0x04b2,
+ 0x04c4, 0x04f5, 0x051c, 0x056f, 0x059c, 0x05b7, 0x05d6, 0x0601,
+ 0x060d, 0x0625, 0x0637, 0x064f, 0x0686, 0x06a2, 0x06ae, 0x06ca,
+ 0x06e2, 0x0707, 0x071f, 0x0753, 0x076b, 0x078d, 0x079f, 0x07ae,
+ // Entry 40 - 7F
+ 0x07c6, 0x0806, 0x0818, 0x0841, 0x0859, 0x0871, 0x0886, 0x08b4,
+ 0x08c9, 0x08e1, 0x08f6, 0x0917, 0x0929, 0x0935, 0x096f, 0x098d,
+ 0x09be, 0x09dc, 0x09ee, 0x0a16, 0x0a2b, 0x0a49, 0x0a7d, 0x0a8f,
+ 0x0a9b, 0x0ab9, 0x0ad7, 0x0ae9, 0x0afb, 0x0b16, 0x0b47, 0x0b65,
+ 0x0be8, 0x0c03, 0x0c12, 0x0c34, 0x0c46, 0x0cd7, 0x0d2b, 0x0d46,
+ 0x0d5e, 0x0d6d, 0x0d82, 0x0db3, 0x0dce, 0x0de6, 0x0dfb, 0x0e20,
+ 0x0e35, 0x0e77, 0x0e86, 0x0e95, 0x0ead, 0x0ebf, 0x0ece, 0x0ee3,
+ 0x0efb, 0x0f10, 0x0f1f, 0x0f3a, 0x0f4f, 0x0f67, 0x0f98, 0x0fce,
+ // Entry 80 - BF
+ 0x0ff9, 0x1021, 0x1036, 0x106a, 0x1082, 0x1091, 0x10a3, 0x10bf,
+ 0x10e3, 0x10fc, 0x1111, 0x1123, 0x1132, 0x1153, 0x1165, 0x1174,
+ 0x1186, 0x1198, 0x11ad, 0x11cb, 0x11ea, 0x120b, 0x123f, 0x125a,
+ 0x1266, 0x1290, 0x12ab, 0x1333, 0x1380, 0x139b, 0x13b9, 0x13d4,
+ 0x13e3, 0x13f8, 0x142f, 0x1441, 0x1456, 0x146e, 0x1489, 0x149e,
+ 0x14c9, 0x14db, 0x150c, 0x1521, 0x153c, 0x1560, 0x1578, 0x158a,
+ 0x1599, 0x15a5, 0x15cd, 0x15dc, 0x15ee, 0x15fa, 0x1637, 0x1669,
+ 0x1687, 0x16a2, 0x16ba, 0x16f3, 0x172a, 0x1749, 0x1789, 0x17a7,
+ // Entry C0 - FF
+ 0x17b6, 0x17ce, 0x17e0, 0x180e, 0x1826, 0x183e, 0x1853, 0x1865,
+ 0x1877, 0x189f, 0x18d6, 0x190a, 0x191c, 0x1931, 0x194c, 0x1987,
+ 0x199f, 0x19e4, 0x19ff, 0x1a1e, 0x1a3a, 0x1a52, 0x1a64, 0x1a7c,
+ 0x1aa7, 0x1add, 0x1af8, 0x1b1a, 0x1b29, 0x1b47, 0x1b73, 0x1bc7,
+ 0x1bd3, 0x1c29, 0x1c35, 0x1c4d, 0x1c65, 0x1c7a, 0x1cae, 0x1ccc,
+ 0x1cde, 0x1ced, 0x1d02, 0x1d37, 0x1d49, 0x1d5e, 0x1d76, 0x1d8b,
+ 0x1d9d, 0x1ddf, 0x1e2c, 0x1e41, 0x1e59, 0x1e84, 0x1ed2, 0x1eed,
+ 0x1f40, 0x1f85, 0x1f9d, 0x1fb2, 0x1fde, 0x1fed, 0x1fff, 0x2011,
+ // Entry 100 - 13F
+ 0x2023, 0x206d, 0x207f, 0x2097, 0x20bf, 0x20d4, 0x20e6, 0x2117,
+ 0x2145, 0x215d, 0x218b, 0x21bf, 0x21f3, 0x2221, 0x223d, 0x2268,
+ 0x2283, 0x22b7, 0x22d9, 0x2307, 0x232c, 0x2370, 0x239b, 0x23bc,
+ 0x23d7, 0x240e, 0x2429, 0x2435, 0x2460, 0x2488, 0x249a, 0x24ce,
+ 0x24fc, 0x252a, 0x2558,
+} // Size: 606 bytes
+
+var kkRegionStr string = "" + // Size: 6084 bytes
+ "Әскенжін аралыАндорраБіріккен Араб ӘмірліктеріАуғанстанАнтигуа мен Барбу" +
+ "даАнгильяАлбанияАрменияАнголаАнтарктикаАргентинаАмерикандық СамоаАвстри" +
+ "яАвстралияАрубаАланд аралдарыӘзірбайжанБосния және ГерцеговинаБарбадосБ" +
+ "англадешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСен-БартелемиБерм" +
+ "уд аралдарыБрунейБоливияКариб НидерландысыБразилияБагам аралдарыБутанБу" +
+ "ве аралыБотсванаБеларусьБелизКанадаКокос (Килинг) аралдарыКонгоОрталық " +
+ "Африка РеспубликасыКонго-Браззавиль РеспубликасыШвейцарияКот-д’ИвуарКук" +
+ " аралдарыЧилиКамерунҚытайКолумбияКлиппертон аралыКоста-РикаКубаКабо-Верд" +
+ "еКюрасаоКристмас аралыКипрЧех РеспубликасыГерманияДиего-ГарсияДжибутиДа" +
+ "нияДоминикаДоминикан РеспубликасыАлжирСеута мен МелильяЭквадорЭстонияМы" +
+ "сырБатыс СахараЭритреяИспанияЭфиопияЕуропалық ОдақФинляндияФиджиФолклен" +
+ "д аралдарыМикронезияФарер аралдарыФранцияГабонБіріккен КорольдікГренада" +
+ "ГрузияФранцуз ГвианасыГернсиГанаГибралтарГренландияГамбияГвинеяГваделуп" +
+ "аЭкваторлық ГвинеяГрецияОңтүстік Георгия және Оңтүстік Сандвич аралдары" +
+ "ГватемалаГуамГвинея-БисауГайанаҚытай Халық Республикасының Гонг-Конг ар" +
+ "найы әкімшілік ауданыХерд аралы мен Макдональд аралдарыГондурасХорватия" +
+ "ГаитиВенгрияКанар аралдарыИндонезияИрландияИзраильМэн аралыҮндістанҮнді" +
+ " мұхитындағы Британ аймағыИракИранИсландияИталияДжерсиЯмайкаИорданияЖапо" +
+ "нияКенияҚырғызстанКамбоджаКирибатиКоморСент-Китс және НевисОңтүстік Кор" +
+ "еяСолтүстік КореяКувейтКайман аралдарыҚазақстанЛаосЛиванСент-ЛюсияЛихте" +
+ "нштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМороккоМонакоМолд" +
+ "оваЧерногорияСен-МартенМадагаскарМаршалл аралдарыМакедонияМалиМьянма (Б" +
+ "ирма)МоңғолияҚытай Халық Республикасының Макао арнайы әкімшілік ауданыС" +
+ "олтүстік Мариан аралдарыМартиникаМавританияМонтсерратМальтаМаврикийМаль" +
+ "див РеспубликасыМалавиМексикаМалайзияМозамбикНамибияЖаңа КаледонияНигер" +
+ "Норфолк аралыНигерияНикарагуаНидерландНорвегияНепалНауруНиуэЖаңа Зеланд" +
+ "ияОманПанамаПеруФранцуз ПолинезиясыПапуа — Жаңа ГвинеяФилиппинПәкістанП" +
+ "ольшаСен-Пьер және МикелонПиткэрн аралдарыПуэрто-РикоПалестина аймақтар" +
+ "ыПортугалияПалауПарагвайКатарАлыс ОкеанияРеюньонРумынияСербияРесейРуанд" +
+ "аСауд АрабиясыСоломон аралдарыСейшель аралдарыСуданШвецияСингапурӘулие " +
+ "Елена аралыСловенияШпицберген мен Ян-МайенСловакияСьерра-ЛеонеСан-Марин" +
+ "оСенегалСомалиСуринамОңтүстік СуданСан-Томе мен ПринсипиСальвадорСинт-М" +
+ "артенСирияСвазилендТристан-да-КуньяТеркс және Кайкос аралдарыЧадФранция" +
+ "ның оңтүстік аймақтарыТогоТайландТәжікстанТокелауТимор-ЛестеТүрікменста" +
+ "нТунисТонгаТүркияТринидад пен ТобагоТувалуТайваньТанзанияУкраинаУгандаА" +
+ "ҚШ-тың сыртқы кіші аралдарыАҚШУругвайӨзбекстанВатиканСент-Винсент және " +
+ "Гренадин аралдарыВенесуэлаБритандық Виргин аралдарыАҚШ-тың Виргин аралд" +
+ "арыВьетнамВануатуУоллис пен ФутунаСамоаКосовоЙеменМайоттаОңтүстік Африк" +
+ "а РеспубликасыЗамбияЗимбабвеБелгісіз аймақӘлемАфрикаСолтүстік АмерикаОң" +
+ "түстік АмерикаОкеанияБатыс АфрикаОрталық АмерикаШығыс АфрикаСолтүстік А" +
+ "фрикаОрталық АфрикаОңтүстік АфрикаСолтүстік және Оңтүстік АмерикаАмерик" +
+ "аның солтүстігіКарибШығыс АзияОңтүстік АзияОңтүстік-шығыс АзияОңтүстік " +
+ "ЕуропаАвстралазияМеланезияМикронезия аймағыПолинезияАзияОрталық АзияБат" +
+ "ыс АзияЕуропаШығыс ЕуропаСолтүстік ЕуропаБатыс ЕуропаЛатын Америкасы"
+
+var kkRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001b, 0x0029, 0x0059, 0x006b, 0x008f, 0x009d, 0x00ab,
+ 0x00b9, 0x00b9, 0x00c5, 0x00d9, 0x00eb, 0x010c, 0x011a, 0x012c,
+ 0x0136, 0x0151, 0x0165, 0x0191, 0x01a1, 0x01b3, 0x01c1, 0x01d8,
+ 0x01e8, 0x01f6, 0x0204, 0x020e, 0x0227, 0x0244, 0x0250, 0x025e,
+ 0x0281, 0x0291, 0x02ac, 0x02b6, 0x02c9, 0x02d9, 0x02e9, 0x02f3,
+ 0x02ff, 0x0329, 0x0333, 0x0367, 0x039f, 0x03b1, 0x03c7, 0x03de,
+ 0x03e6, 0x03f4, 0x03fe, 0x040e, 0x042d, 0x0440, 0x0448, 0x045b,
+ 0x0469, 0x0484, 0x048c, 0x04ab, 0x04bb, 0x04d2, 0x04e0, 0x04ea,
+ // Entry 40 - 7F
+ 0x04fa, 0x0525, 0x052f, 0x054f, 0x055d, 0x056b, 0x0575, 0x058c,
+ 0x059a, 0x05a8, 0x05b6, 0x05d1, 0x05e3, 0x05ed, 0x060e, 0x0622,
+ 0x063d, 0x064b, 0x0655, 0x0678, 0x0686, 0x0692, 0x06b1, 0x06bd,
+ 0x06c5, 0x06d7, 0x06eb, 0x06f7, 0x0703, 0x0715, 0x0736, 0x0742,
+ 0x079b, 0x07ad, 0x07b5, 0x07cc, 0x07d8, 0x084b, 0x088b, 0x089b,
+ 0x08ab, 0x08b5, 0x08c3, 0x08de, 0x08f0, 0x0900, 0x090e, 0x091f,
+ 0x092f, 0x0968, 0x0970, 0x0978, 0x0988, 0x0994, 0x09a0, 0x09ac,
+ 0x09bc, 0x09ca, 0x09d4, 0x09e8, 0x09f8, 0x0a08, 0x0a12, 0x0a37,
+ // Entry 80 - BF
+ 0x0a52, 0x0a6f, 0x0a7b, 0x0a98, 0x0aaa, 0x0ab2, 0x0abc, 0x0acf,
+ 0x0ae5, 0x0af6, 0x0b04, 0x0b10, 0x0b1a, 0x0b2e, 0x0b3a, 0x0b44,
+ 0x0b52, 0x0b5e, 0x0b6c, 0x0b80, 0x0b93, 0x0ba7, 0x0bc6, 0x0bd8,
+ 0x0be0, 0x0bf9, 0x0c09, 0x0c75, 0x0ca5, 0x0cb7, 0x0ccb, 0x0cdf,
+ 0x0ceb, 0x0cfb, 0x0d22, 0x0d2e, 0x0d3c, 0x0d4c, 0x0d5c, 0x0d6a,
+ 0x0d85, 0x0d8f, 0x0da8, 0x0db6, 0x0dc8, 0x0dda, 0x0dea, 0x0df4,
+ 0x0dfe, 0x0e06, 0x0e1f, 0x0e27, 0x0e33, 0x0e3b, 0x0e60, 0x0e84,
+ 0x0e94, 0x0ea4, 0x0eb0, 0x0ed7, 0x0ef6, 0x0f0b, 0x0f30, 0x0f44,
+ // Entry C0 - FF
+ 0x0f4e, 0x0f5e, 0x0f68, 0x0f7f, 0x0f8d, 0x0f9b, 0x0fa7, 0x0fb1,
+ 0x0fbd, 0x0fd6, 0x0ff5, 0x1014, 0x101e, 0x102a, 0x103a, 0x105a,
+ 0x106a, 0x1095, 0x10a5, 0x10bc, 0x10cf, 0x10dd, 0x10e9, 0x10f7,
+ 0x1112, 0x1139, 0x114b, 0x1160, 0x116a, 0x117c, 0x119a, 0x11cb,
+ 0x11d1, 0x1209, 0x1211, 0x121f, 0x1231, 0x123f, 0x1254, 0x126c,
+ 0x1276, 0x1280, 0x128c, 0x12b0, 0x12bc, 0x12ca, 0x12da, 0x12e8,
+ 0x12f4, 0x1328, 0x132e, 0x133c, 0x134e, 0x135c, 0x139e, 0x13b0,
+ 0x13e0, 0x140b, 0x1419, 0x1427, 0x1447, 0x1451, 0x145d, 0x1467,
+ // Entry 100 - 13F
+ 0x1475, 0x14ab, 0x14b7, 0x14c7, 0x14e2, 0x14ea, 0x14f6, 0x1517,
+ 0x1536, 0x1544, 0x155b, 0x1578, 0x158f, 0x15ae, 0x15c9, 0x15e6,
+ 0x1621, 0x164a, 0x1654, 0x1667, 0x1680, 0x16a4, 0x16c1, 0x16d7,
+ 0x16e9, 0x170a, 0x171c, 0x1724, 0x173b, 0x174e, 0x175a, 0x1771,
+ 0x1790, 0x17a7, 0x17c4,
+} // Size: 606 bytes
+
+var kmRegionStr string = "" + // Size: 9048 bytes
+ "កោះ\u200bអាសេនសិនអង់ដូរ៉ាអារ៉ាប់រួមអាហ្វហ្គានីស្ថានអង់ទីគ័រ និង\u200bបាប" +
+ "ុយដាអង់កូឡាអាល់បានីអារមេនីអង់ហ្គោឡាអង់តាក់ទិកអាហ្សង់ទីនសាម៉ូអាអាមេរិកអ" +
+ "ូទ្រីសអូស្ត្រាលីអារូបាកោះ\u200bអាឡាំងអាហ៊្សែរបែហ្សង់បូស្នី និងហឺហ្សីហ្" +
+ "គូវីណាបារបាដូសបង់ក្លាដេស្ហបែលហ្ស៉ិកប៊ូរគីណាហ្វាសូប៊ុលហ្គារីបារ៉ែនប៊ូរុ" +
+ "នឌីបេណាំងសង់ បាតេឡេម៉ីប៊ឺមុយដាប្រ៊ុយណេបូលីវីហុល្លង់ ការ៉ាប៊ីនប្រេស៊ីលប" +
+ "ាហាម៉ាប៊ូតានកោះ\u200bប៊ូវ៉េតបុតស្វាណាបេឡារុស្សបេលីហ្សកាណាដាកោះ\u200bកូ" +
+ "កូសកុងហ្គោ- គីនស្ហាសាសាធារណរដ្ឋអាហ្វ្រិកកណ្ដាលកុងហ្គោ - ប្រាហ្សាវីលស្វ" +
+ "ីសកូដឌីវ័រកោះ\u200bខូកស៊ីលីកាមេរូនចិនកូឡុំប៊ីកោះ\u200bឃ្លីភឺតុនកូស្តារ" +
+ "ីកាគុយបាកាបវែរកូរ៉ាកៅកោះ\u200bគ្រីស្មាសស៊ីពរ៍សាធារណរដ្ឋឆេកអាល្លឺម៉ង់ឌៀ" +
+ "ហ្គោហ្គាស៊ីហ្ស៊ីបូទីដាណឺម៉ាកដូមីនីកាសាធារណរដ្ឋដូមីនីកែនអាល់ហ្សេរីជឺតា " +
+ "និង\u200bម៉េលីឡាអេក្វាឌ័រអេស្តូនីអេហ្ស៊ីបសាហារ៉ាខាងលិចអេរីទ្រាអេស្ប៉ាញ" +
+ "អេត្យូពីសហភាព\u200bអឺរ៉ុបហ្វាំងឡង់ហ្វីជីកោះ\u200bហ្វក់ឡែនមីក្រូនេស៊ីកោ" +
+ "ះ\u200bហ្វារ៉ូបារាំងហ្គាបុងចក្រភព\u200bអង់គ្លេសហ្គ្រីណាដាហ្សកហ្ស៉ីហ្គៀ" +
+ "ណាបារាំងហ្គេនស៊ីហ្គាណាហ្គីប្រាលតាហ្គ្រោអង់ឡង់ហ្គាំប៊ីហ្គីណេហ្គោដឺឡុបហ្" +
+ "គីណេអេក្វាទ័រក្រិចកោះ\u200bហ្សកហ្ស៊ី\u200bខាង\u200bត្បូង និង\u200bសាន់" +
+ "វិច\u200bខាង\u200bត្បូងហ្គាតេម៉ាឡាហ្គាំហ្គីណេប៊ីសូហ្គីយ៉ាណាហុងកុងកោះ" +
+ "\u200bហឺដ និង\u200bម៉ាក់ដូណាល់ហុងឌួរ៉ាស់ក្រូអាតហៃទីហុងគ្រីកោះ\u200bកាណារ" +
+ "ីឥណ្ឌូណេស៊ីអៀរឡង់អ៊ីស្រាអែលអែលអុហ្វមែនឥណ្ឌាដែន\u200bមហា\u200bសមុទ្រ" +
+ "\u200bឥណ្ឌា ចក្រភព\u200bអង់គ្លេសអ៊ីរ៉ាក់អ៊ីរ៉ង់អ៊ីស្លង់អ៊ីតាលីជឺស៊ីចាម៉ៃ" +
+ "កាហ៊្សកដានីជប៉ុនកេនយ៉ាគៀរហ្គីស្តង់កម្ពុជាគិរិបាទីកុំម៉ូរ៉ូសសង់ឃីត និង" +
+ "\u200bណេវីសកូរ៉េ\u200bខាង\u200bជើងកូរ៉េ\u200bខាង\u200bត្បូងគុយវ៉ែតកោះ" +
+ "\u200bកៃម៉ង់កាហ្សាក់ស្តង់់ឡាវលីបង់សង់\u200bលូសៀលិចទេនស្តែនស្រីលង្កាលីបេរ" +
+ "ីយ៉ាលើសូតូលីទុយអានីលុចហ្សំបួរឡាតវីយ៉ាលីប៊ីម៉ារ៉ុកម៉ូណាកូសាធារណរដ្ឋម៉ុល" +
+ "ដាវីម៉ុងតេណេហ្គ្រោសង់\u200bម៉ាទីនម៉ាដាហ្កាស្ការកោះ\u200bម៉ាស់សលម៉ាសេដូ" +
+ "នាម៉ាលីមីយ៉ាន់ម៉ា (ភូមា)ម៉ុងហ្គោលីម៉ាកាវកោះ\u200bម៉ារីណា\u200bខាង" +
+ "\u200bជើងម៉ាទីនីកម៉ូរីតានីម៉ុង\u200bសេរ៉ង់ម៉ាល់តាម៉ូរីទុសម៉ាល់ឌីវម៉ាឡាវី" +
+ "ម៉ិចសិកម៉ាឡេស៊ីម៉ូហ្សាំប៊ិកណាមីប៊ីញូកាឡេដូនៀនីហ្សេរកោះ\u200bណ័រហ្វក់នី" +
+ "ហ្សេរីយ៉ានីការ៉ាហ្គ័រហុល្លង់ន័រវែសនេប៉ាល់ណូរូណៀនូវែលហ្សេឡង់អូម៉ង់ប៉ាណា" +
+ "ម៉ាប៉េរូប៉ូលី\u200bណេស៊ី\u200bបារាំងប៉ាពួញ៉ូហ្គីណេហ្វីលីពីនប៉ាគីស្ថានប" +
+ "៉ូឡូញសង់ព្យែរ និង\u200bមីគីឡុងកោះ\u200bភីតខារិនព័រតូរីកូដែន\u200bប៉ាលេ" +
+ "ស្ទីនព័រទុយហ្កាល់ផៅឡូប៉ារ៉ាហ្គាយកាតាតំបន់ជាយអូសេអានីរ៉េអ៊ុយ៉ុងរូម៉ានីស" +
+ "៊ែបរុស្ស៊ីរវ៉ាន់ដាអារ៉ាប៊ីសាអ៊ូឌីតកោះ\u200bស៊ូឡូម៉ុងសីសែលស៊ូដង់ស៊ុយអែដ" +
+ "សិង្ហបុរីសង់\u200bហេឡេណាស្លូវេនីស្វាប៊ឺត និង\u200bហ្យង់ម៉ាយេនស្លូវ៉ាគី" +
+ "សេរ៉ាឡេអូនសាន\u200bម៉ារីណូសេនេហ្កាល់សូម៉ាលីសូរីណាមស៊ូដង់\u200bខាង" +
+ "\u200bត្បូងសៅ\u200bតូមេ និង\u200bព្រីនស៊ីប៉េអែលសាល់វ៉ាឌ័រសីង\u200bម៉ាធីន" +
+ "ស៊ីរីស្វាហ្ស៊ីឡង់ទ្រីស្តង់\u200bដា\u200bចូនហាកោះ\u200bកៃកូស និងទូកឆាដដ" +
+ "ែន\u200bបារាំង\u200bខាង\u200bត្បូងតូហ្គោថៃតាជីគីស្តង់តូខេឡៅទីម័រទួគមេន" +
+ "ីស្តង់ទុយនេស៊ីតុងហ្គាទួរគីទ្រីនីដាត និង\u200bតូបាហ្គោទូវ៉ាលូតៃវ៉ាន់តង់" +
+ "ហ្សានីអ៊ុយក្រែនអ៊ូហ្កង់ដាកោះ\u200bអៅឡាយីង\u200bអាមេរិកសហរដ្ឋអាមេរិកអ៊ុ" +
+ "យរ៉ាហ្គាយអ៊ូហ្សបេគីស្តង់ទីក្រុងវ៉ាទីកង់សាំង\u200bវីនសេន និង\u200bឌឹ" +
+ "\u200bហ្គ្រីណាឌីនីសវេនេហ្ស៊ុយឡាកោះ\u200bវឺជិន\u200bចក្រភព\u200bអង់គ្លេសក" +
+ "ោះ\u200bវឺជីន\u200bអាមេរិកវៀតណាមវ៉ានូអាទូវ៉ាលីស និង\u200bហ្វូទូណាសា" +
+ "\u200bម៉ូអាកូសូវ៉ូយេមែនម៉ាយុតអាហ្វ្រិកខាងត្បូងហ្សាំប៊ីហ្ស៊ីមបាវ៉េតំបន់មិ" +
+ "នស្គាល់ពិភពលោកអាហ្វ្រិកអាមេរិក\u200bខាង\u200bជើងអាមេរិក\u200bខាង\u200b" +
+ "ត្បូងអូសេអានីអាហ្វ្រិក\u200bខាង\u200bលិចអាមេរិក\u200bកណ្ដាលអាហ្វ្រិកខា" +
+ "ងកើតអាហ្វ្រិក\u200bខាង\u200bជើងអាហ្វ្រិក\u200bកណ្តាលអាហ្វ្រិកភាគខាងត្ប" +
+ "ូងអាមេរិកអាមេរិក\u200bភាគ\u200bខាង\u200bជើងការ៉ាប៊ីនអាស៊ី\u200bខាង" +
+ "\u200bកើតអាស៊ី\u200bខាង\u200bត្បូងអាស៊ីអាគ្នេយ៍អឺរ៉ុប\u200bខាង\u200bត្បូ" +
+ "ងអូស្ត្រាឡាស៊ីមេឡាណេស៊ីតំបន់\u200bមីក្រូណេស៊ីប៉ូលីណេស៊ីអាស៊ីអាស៊ី" +
+ "\u200bកណ្ដាលអាស៊ី\u200bខាង\u200bលិចអឺរ៉ុបអឺរ៉ុប\u200bខាង\u200bកើតអឺរ៉ុប" +
+ "\u200bខាង\u200bជើងអឺរ៉ុប\u200bខាង\u200bលិចអាមេរិក\u200bឡាទីន"
+
+var kmRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0024, 0x003c, 0x005a, 0x008a, 0x00c4, 0x00d9, 0x00f1,
+ 0x0106, 0x0106, 0x0121, 0x013f, 0x015d, 0x0187, 0x019c, 0x01ba,
+ 0x01cc, 0x01ea, 0x0217, 0x025d, 0x0275, 0x0299, 0x02b4, 0x02de,
+ 0x02fc, 0x030e, 0x0326, 0x0338, 0x035d, 0x0375, 0x038d, 0x039f,
+ 0x03d0, 0x03e8, 0x03fd, 0x040f, 0x0430, 0x044b, 0x0466, 0x047b,
+ 0x048d, 0x04a8, 0x04da, 0x0525, 0x055e, 0x056d, 0x0585, 0x059a,
+ 0x05a9, 0x05be, 0x05c7, 0x05df, 0x0606, 0x0624, 0x0633, 0x0645,
+ 0x065a, 0x0681, 0x0693, 0x06ba, 0x06d8, 0x06ff, 0x071a, 0x0732,
+ // Entry 40 - 7F
+ 0x074a, 0x0783, 0x07a1, 0x07cf, 0x07ea, 0x0802, 0x081a, 0x0841,
+ 0x0859, 0x0871, 0x0889, 0x08ad, 0x08c8, 0x08da, 0x08fe, 0x091f,
+ 0x0940, 0x0952, 0x0967, 0x0994, 0x09b2, 0x09cd, 0x09f1, 0x0a09,
+ 0x0a1b, 0x0a3c, 0x0a60, 0x0a78, 0x0a8a, 0x0aa5, 0x0ad2, 0x0ae1,
+ 0x0b66, 0x0b87, 0x0b96, 0x0bb7, 0x0bd2, 0x0be4, 0x0c27, 0x0c45,
+ 0x0c5a, 0x0c66, 0x0c7b, 0x0c99, 0x0cb7, 0x0cc9, 0x0ce7, 0x0d08,
+ 0x0d17, 0x0d81, 0x0d99, 0x0dae, 0x0dc6, 0x0ddb, 0x0dea, 0x0dff,
+ 0x0e1a, 0x0e29, 0x0e3b, 0x0e5f, 0x0e74, 0x0e8c, 0x0eaa, 0x0ed8,
+ // Entry 80 - BF
+ 0x0eff, 0x0f2c, 0x0f41, 0x0f5f, 0x0f89, 0x0f92, 0x0fa1, 0x0fb9,
+ 0x0fda, 0x0ff5, 0x1010, 0x1022, 0x103d, 0x105b, 0x1073, 0x1082,
+ 0x1097, 0x10ac, 0x10e2, 0x110c, 0x112a, 0x1154, 0x1175, 0x1190,
+ 0x119f, 0x11cc, 0x11ea, 0x11fc, 0x1235, 0x124d, 0x1268, 0x1289,
+ 0x129e, 0x12b6, 0x12ce, 0x12e3, 0x12f8, 0x1310, 0x1334, 0x1349,
+ 0x1367, 0x137c, 0x13a0, 0x13c1, 0x13e5, 0x13fa, 0x140c, 0x1421,
+ 0x142d, 0x1433, 0x1457, 0x1469, 0x1481, 0x1490, 0x14c6, 0x14f0,
+ 0x150b, 0x1529, 0x153b, 0x1575, 0x1599, 0x15b4, 0x15de, 0x1602,
+ // Entry C0 - FF
+ 0x160e, 0x162f, 0x163b, 0x166b, 0x1689, 0x169e, 0x16aa, 0x16bf,
+ 0x16d7, 0x1707, 0x172e, 0x173d, 0x174f, 0x1764, 0x177f, 0x179d,
+ 0x17b5, 0x17fb, 0x1816, 0x1834, 0x1855, 0x1873, 0x1888, 0x189d,
+ 0x18cd, 0x1910, 0x1937, 0x1955, 0x1964, 0x1988, 0x19be, 0x19ec,
+ 0x19f5, 0x1a31, 0x1a43, 0x1a49, 0x1a6a, 0x1a7c, 0x1a8b, 0x1aaf,
+ 0x1ac7, 0x1adc, 0x1aeb, 0x1b2b, 0x1b40, 0x1b55, 0x1b70, 0x1b8b,
+ 0x1ba9, 0x1be2, 0x1c09, 0x1c2d, 0x1c5a, 0x1c87, 0x1ce5, 0x1d09,
+ 0x1d54, 0x1d87, 0x1d99, 0x1db4, 0x1deb, 0x1e03, 0x1e18, 0x1e27,
+ // Entry 100 - 13F
+ 0x1e39, 0x1e6c, 0x1e84, 0x1ea5, 0x1ecf, 0x1ee4, 0x1eff, 0x1f2c,
+ 0x1f5f, 0x1f77, 0x1faa, 0x1fd4, 0x2001, 0x2034, 0x2064, 0x20a0,
+ 0x20b5, 0x20ee, 0x2109, 0x2130, 0x215d, 0x2184, 0x21b4, 0x21db,
+ 0x21f6, 0x2229, 0x2247, 0x2256, 0x227a, 0x22a1, 0x22b3, 0x22dd,
+ 0x2307, 0x2331, 0x2358,
+} // Size: 606 bytes
+
+var knRegionStr string = "" + // Size: 9427 bytes
+ "ಅಸೆನ್ಶನ್ ದ್ವೀಪಅಂಡೋರಾಸಂಯುಕ್ತ ಅರಬ್ ಎಮಿರೇಟಸ್ಅಫಘಾನಿಸ್ಥಾನ್ಆಂಟಿಗುವಾ ಮತ್ತು ಬರ್ಬ" +
+ "ುಡಾಆಂಗುಯಿಲ್ಲಾಅಲ್ಬೇನಿಯಾಅರ್ಮೇನಿಯಾನೆದರ್\u200cಲ್ಯಾಂಡ್ಅಂಗೋಲಾಅಂಟಾರ್ಟಿಕಾಅರ್ಜೆ" +
+ "ಂಟಿನಾಅಮೇರಿಕನ್ ಸಮೋವಾಆಸ್ಟ್ರಿಯಾಆಸ್ಟ್ರೇಲಿಯಅರುಬಾಆಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳುಅಜರ್ಬೈಜಾನ್" +
+ "ಬೋಸ್ನಿಯಾ ಮತ್ತು ಹರ್ಜೆಗೋವಿನಾಬಾರ್ಬಡೋಸ್ಬಾಂಗ್ಲಾದೇಶ್ಬೆಲ್ಜಿಯಮ್ಬುರ್ಕಿನಾ ಫಾಸೋಬಲ" +
+ "್ಗೇರಿಯಾಬಹರೈನ್ಬುರುಂಡಿಬೆನಿನ್ಸೇಂಟ್ ಬಾರ್ಥೆಲೆಮಿಬರ್ಮುಡಾಬ್ರೂನಿಬೊಲಿವಿಯಾಕೆರೀಬಿಯ" +
+ "ನ್ ನೆದರ್\u200cಲ್ಯಾಂಡ್ಸ್ಬ್ರೆಜಿಲ್ಬಹಾಮಾಸ್ಭೂತಾನ್ಬೋವೆಟ್ ದ್ವೀಪಬೋಟ್ಸ್\u200cವಾ" +
+ "ನಾಬೆಲಾರಸ್ಬೆಲಿಜ್ಕೆನಡಾಕೊಕೊಸ್ (ಕೀಲಿಂಗ್) ದ್ವೀಪಗಳುಕಾಂಗೋ - ಕಿನ್ಶಾಸಾಮಧ್ಯ ಆಫ್ರ" +
+ "ಿಕಾ ಗಣರಾಜ್ಯಕಾಂಗೋ - ಬ್ರಾಜಾವಿಲ್ಲೇಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್ಕೋತ್\u200c ದಿವಾರ್\u200d" +
+ "ಕುಕ್ ದ್ವೀಪಗಳುಚಿಲಿಕ್ಯಾಮರೋನ್ಚೀನಾಕೊಲಂಬಿಯಾಕ್ಲಿಪ್ಪರ್\u200cಟಾನ್ ದ್ವೀಪಗಳುಕೊಸ್" +
+ "ಟಾ ರಿಕಾಕ್ಯೂಬಾಕೇಪ್ ವರ್ಡೆಕುರಾಕಾವ್ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪಸೈಪ್ರಸ್ಚೆಕ್ ರಿಪಬ್ಲಿಕ್ಜರ್" +
+ "ಮನಿಡೈಗೋ ಗಾರ್ಸಿಯಜಿಬೋಟಿಡೆನ್ಮಾರ್ಕ್ಡೊಮಿನಿಕಾಡೊಮೆನಿಕನ್ ರಿಪಬ್ಲಿಕ್ಅಲ್ಗೇರಿಯಾಸೆಯ" +
+ "ುಟಾ ಹಾಗೂ ಮೆಲಿಲ್ಲಾಈಕ್ವೆಡಾರ್ಎಸ್ಟೋನಿಯಾಈಜಿಪ್ಟ್ಪಶ್ಚಿಮ ಸಹಾರಾಏರಿಟ್ರಿಯಾಸ್ಪೇನ್ಇ" +
+ "ಥಿಯೋಪಿಯಾಯುರೋಪಿಯನ್ ಯೂನಿಯನ್ಫಿನ್\u200cಲ್ಯಾಂಡ್ಫಿಜಿಫಾಲ್ಕ್\u200cಲ್ಯಾಂಡ್ ದ್ವೀ" +
+ "ಪಗಳುಮೈಕ್ರೋನೇಶಿಯಾಫರೋ ದ್ವೀಪಗಳುಫ್ರಾನ್ಸ್ಗೆಬೊನ್ಬ್ರಿಟನ್/ಇಂಗ್ಲೆಂಡ್ಗ್ರೆನೆಡಾಜಾರ" +
+ "್ಜಿಯಾಫ್ರೆಂಚ್ ಗಯಾನಾಗುರ್ನ್\u200cಸೆಘಾನಾಗಿಬ್ರಾಲ್ಟರ್ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ಗ್ಯಾ" +
+ "ಂಬಿಯಾಗಿನಿಗುಡೆಲೋಪ್ಈಕ್ವೆಟೋರಿಯಲ್ ಗಿನಿಗ್ರೀಸ್ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಮತ್ತು ದಕ್ಷಿಣ ಸ" +
+ "್ಯಾಂಡ್\u200dವಿಚ್ ದ್ವೀಪಗಳುಗ್ವಾಟೆಮಾಲಾಗುಯಾಮ್ಗಿನಿ-ಬಿಸ್ಸಾವ್ಗಯಾನಾಹಾಂಗ್ ಕಾಂಗ್" +
+ " SAR ಚೈನಾಹರ್ಡ್ ದ್ವೀಪ ಮತ್ತು ಮ್ಯಾಕ್\u200dಡೊನಾಲ್ಡ್ ದ್ವೀಪಗಳುಹೊಂಡುರಾಸ್ಕ್ರೊಯೇಶ" +
+ "ಿಯಾಹೈಟಿಹಂಗಾರಿಕ್ಯಾನರಿ ದ್ವೀಪಗಳುಇಂಡೋನೇಶಿಯಾಐರ್ಲೆಂಡ್ಇಸ್ರೇಲ್ಐಲ್ ಆಫ್ ಮ್ಯಾನ್ಭಾ" +
+ "ರತಬ್ರಿಟೀಶ್ ಇಂಡಿಯನ್ ಮಹಾಸಾಗರ ಪ್ರದೇಶಇರಾಕ್ಇರಾನ್ಐಸ್\u200cಲ್ಯಾಂಡ್ಇಟಲಿಜೆರ್ಸಿಜ" +
+ "ಮೈಕಾಜೋರ್ಡಾನ್ಜಪಾನ್ಕೀನ್ಯಾಕಿರ್ಗಿಸ್ಥಾನ್ಕಾಂಬೋಡಿಯಾಕಿರಿಬಾತಿಕೊಮೊರೊಸ್ಸೇಂಟ್ ಕಿಟ್" +
+ "ಸ್ ಮತ್ತು ನೆವಿಸ್ಉತ್ತರ ಕೋರಿಯಾದಕ್ಷಿಣ ಕೋರಿಯಾಕುವೈತ್ಕೇಮನ್ ದ್ವೀಪಗಳುಕಝಾಕಿಸ್ಥಾನ" +
+ "್ಲಾವೋಸ್ಲೆಬನಾನ್ಸೇಂಟ್ ಲೂಸಿಯಾಲಿಚೆನ್\u200cಸ್ಟೈನ್ಶ್ರೀಲಂಕಾಲಿಬೇರಿಯಾಲೆಸೊಥೋಲಿಥು" +
+ "ವೇನಿಯಾಲಕ್ಸಂಬರ್ಗ್ಲಾಟ್ವಿಯಾಲಿಬಿಯಾಮೊರಾಕ್ಕೊಮೊನಾಕೊಮೊಲ್ಡೋವಾಮೊಂಟೆನೆಗ್ರೋಸೇಂಟ್ ಮ" +
+ "ಾರ್ಟಿನ್ಮಡಗಾಸ್ಕರ್ಮಾರ್ಷಲ್ ದ್ವೀಪಗಳುಮ್ಯಾಸಿಡೋನಿಯಾಮಾಲಿಮಯನ್ಮಾರ್ (ಬರ್ಮಾ)ಮೊಂಗೋಲ" +
+ "ಿಯಾಮಖಾವ್ (SAR) ಚೈನಾಉತ್ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳುಮಾರ್ಟಿನಿಕ್ಮಾರಿಟೇನಿಯಾಮಾಂಟ್" +
+ "\u200cಸೆರೇಟ್ಮಾಲ್ಟಾಮಾರಿಶಿಯಸ್ಮಾಲ್ಡಿವ್ಸ್ಮಲಾವಿಮೆಕ್ಸಿಕೊಮಲೇಶಿಯಾಮೊಜಾಂಬಿಕ್ನಮೀಬಿಯ" +
+ "ಾನ್ಯೂ ಕ್ಯಾಲಿಡೋನಿಯಾನೈಜರ್ನಾರ್ಫೋಕ್ ದ್ವೀಪನೈಜೀರಿಯಾನಿಕಾರಾಗುವಾನೆದರ್\u200cಲ್ಯಾ" +
+ "ಂಡ್ಸ್ನಾರ್ವೇನೇಪಾಳನೌರುನಿಯುನ್ಯೂಜಿಲೆಂಡ್ಓಮನ್ಪನಾಮಾಪೆರುಫ್ರೆಂಚ್ ಪಾಲಿನೇಷ್ಯಾಪಪುವ" +
+ "ಾ ನ್ಯೂಗಿನಿಯಾಫಿಲಿಫೈನ್ಸ್ಪಾಕಿಸ್ತಾನಪೋಲ್ಯಾಂಡ್ಸೇಂಟ್ ಪಿಯರೆ ಮತ್ತು ಮಿಕೆಲನ್ಪಿಟ್" +
+ "\u200cಕೈರ್ನ್ ದ್ವೀಪಗಳುಪ್ಯೂರ್ಟೋ ರಿಕೊಪ್ಯಾಲೇಸ್ಟೇನಿಯನ್ ಪ್ರದೇಶಪೋರ್ಚುಗಲ್ಪಲಾವುಪರ" +
+ "ಾಗ್ವೇಖತಾರ್ಔಟ್ ಲೈಯಿಂಗ್ ಓಷಿಯಾನಿಯಾರೀಯೂನಿಯನ್ರೊಮೇನಿಯಾಸೆರ್ಬಿಯಾರಷ್ಯಾರುವಾಂಡಾಸೌ" +
+ "ದಿ ಅರೇಬಿಯಾಸೊಲೊಮನ್ ದ್ವೀಪಗಳುಸೀಶೆಲ್ಲೆಸ್ಸೂಡಾನ್ಸ್ವೀಡನ್ಸಿಂಗಾಪುರ್ಸೇಂಟ್ ಹೆಲೆನಾ" +
+ "ಸ್ಲೋವೇನಿಯಾಸ್ವಾಲ್ಬಾರ್ಡ್ ಮತ್ತು ಜಾನ್ ಮೆಯನ್ಸ್ಲೋವೇಕಿಯಾಸಿಯೆರ್ರಾ ಲಿಯೋನ್ಸ್ಯಾನ್" +
+ " ಮೆರಿನೋಸೆನೆಗಲ್ಸೊಮಾಲಿಯಾಸುರಿನಾಮದಕ್ಷಿಣ ಸೂಡಾನ್ಸಾವೋ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪಿಎಲ್ " +
+ "ಸಾಲ್ವೇಡಾರ್ಸಿಂಟ್ ಮಾರ್ಟೆನ್ಸಿರಿಯಾಸ್ವಾಜಿಲ್ಯಾಂಡ್ಟ್ರಿಸ್ತನ್ ಡಾ ಕುನ್ಹಾಟರ್ಕ್ಸ್ " +
+ "ಮತ್ತು ಕೈಕೋಸ್ ದ್ವೀಪಗಳುಚಾದ್ಫ್ರೆಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳುಟೋಗೋಥೈಲ್ಯಾಂಡ್ತಜಾಕಿಸ್ಥ" +
+ "ಾನ್ಟೊಕೆಲಾವ್ಪೂರ್ವ ತಿಮೋರ್ತುರ್ಕ್ಮೇನಿಸ್ಥಾನ್ಟುನಿಶಿಯಾಟೊಂಗಟರ್ಕಿಟ್ರಿನಿಡಾಡ್ ಮತ್" +
+ "ತು ಟೊಬಾಗೊಟುವಾಲುಥೈವಾನ್ತಾಂಜೇನಿಯಾಉಕ್ರೈನ್ಉಗಾಂಡಾಯುಎಸ್\u200c. ಔಟ್\u200cಲೇಯಿಂ" +
+ "ಗ್ ದ್ವೀಪಗಳುಅಮೇರಿಕಾ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನಉರುಗ್ವೇಉಜ್ಬೇಕಿಸ್ಥಾನ್ವ್ಯಾಟಿಕನ್ಸೇಂಟ್. " +
+ "ವಿನ್ಸೆಂಟ್ ಮತ್ತು ಗ್ರೆನೆಡೈನ್ಸ್ವೆನೆಜುವೆಲಾಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳುಯು.ಎಸ್." +
+ " ವರ್ಜಿನ್ ದ್ವೀಪಗಳುವಿಯೇಟ್ನಾಮ್ವನೌಟುವಾಲಿಸ್ ಮತ್ತು ಫುಟುನಾಸಮೋವಾಕೊಸೊವೊಯೆಮನ್ಮಯೊಟ್" +
+ "ಟೆದಕ್ಷಿಣ ಆಫ್ರಿಕಾಝಾಂಬಿಯಾಜಿಂಬಾಬ್ವೆಅಜ್ಞಾತ ಪ್ರದೇಶಪ್ರಪಂಚಆಫ್ರಿಕಾಉತ್ತರ ಅಮೇರಿಕ" +
+ "ಾದಕ್ಷಿಣ ಅಮೇರಿಕಾಓಶಿಯೇನಿಯಾಪಶ್ಚಿಮ ಆಫ್ರಿಕಾಮಧ್ಯ ಅಮೇರಿಕಾಪೂರ್ವ ಆಫ್ರಿಕಾಉತ್ತರ ಆ" +
+ "ಫ್ರಿಕಾಮಧ್ಯ ಆಫ್ರಿಕಾಆಫ್ರಿಕಾದ ದಕ್ಷಿಣ ಭಾಗಅಮೆರಿಕಾಸ್ಅಮೇರಿಕಾದ ಉತ್ತರ ಭಾಗಕೆರೀಬಿ" +
+ "ಯನ್ಪೂರ್ವ ಏಷ್ಯಾದಕ್ಷಿಣ ಏಷ್ಯಾಆಗ್ನೇಯ ಏಷ್ಯಾದಕ್ಷಿಣ ಯೂರೋಪ್ಆಸ್ಟ್ರೇಲೇಷ್ಯಾಮೆಲನೇಷ" +
+ "ಿಯಾಮೈಕ್ರೋನೇಶಿಯನ್ ಪ್ರದೇಶಪಾಲಿನೇಷ್ಯಾಏಷ್ಯಾಮಧ್ಯ ಏಷ್ಯಾಪಶ್ಚಿಮ ಏಷ್ಯಾಯೂರೋಪ್ಪೂರ್" +
+ "ವ ಯೂರೋಪ್ಉತ್ತರ ಯೂರೋಪ್ಪಶ್ಚಿಮ ಯೂರೋಪ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕಾ"
+
+var knRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0028, 0x003a, 0x0075, 0x0099, 0x00d7, 0x00f5, 0x0110,
+ 0x012b, 0x0152, 0x0164, 0x0182, 0x01a0, 0x01c8, 0x01e3, 0x0201,
+ 0x0210, 0x0241, 0x025f, 0x02a9, 0x02c4, 0x02e5, 0x0300, 0x0325,
+ 0x0340, 0x0352, 0x0367, 0x0379, 0x03a7, 0x03bc, 0x03ce, 0x03e6,
+ 0x042f, 0x0447, 0x045c, 0x046e, 0x0490, 0x04b1, 0x04c6, 0x04d8,
+ 0x04e7, 0x052a, 0x0554, 0x058c, 0x05c2, 0x05f2, 0x0617, 0x063c,
+ 0x0648, 0x0663, 0x066f, 0x0687, 0x06ca, 0x06e9, 0x06fb, 0x0717,
+ 0x072f, 0x075a, 0x076f, 0x0797, 0x07a9, 0x07cb, 0x07dd, 0x07fb,
+ // Entry 40 - 7F
+ 0x0813, 0x084a, 0x0865, 0x089d, 0x08b8, 0x08d3, 0x08e8, 0x090a,
+ 0x0925, 0x0937, 0x0952, 0x0983, 0x09a7, 0x09b3, 0x09f6, 0x0a1a,
+ 0x0a3c, 0x0a54, 0x0a66, 0x0a97, 0x0aaf, 0x0ac7, 0x0aec, 0x0b07,
+ 0x0b13, 0x0b34, 0x0b5e, 0x0b79, 0x0b85, 0x0b9d, 0x0bce, 0x0be0,
+ 0x0c6c, 0x0c8a, 0x0c9c, 0x0cc1, 0x0cd0, 0x0d00, 0x0d76, 0x0d91,
+ 0x0daf, 0x0dbb, 0x0dcd, 0x0dfb, 0x0e19, 0x0e31, 0x0e46, 0x0e6c,
+ 0x0e78, 0x0ecf, 0x0ede, 0x0eed, 0x0f0e, 0x0f1a, 0x0f2c, 0x0f3b,
+ 0x0f53, 0x0f62, 0x0f74, 0x0f98, 0x0fb3, 0x0fcb, 0x0fe3, 0x1028,
+ // Entry 80 - BF
+ 0x104a, 0x106f, 0x1081, 0x10a9, 0x10ca, 0x10dc, 0x10f1, 0x1113,
+ 0x113a, 0x1152, 0x116a, 0x117c, 0x119a, 0x11b8, 0x11d0, 0x11e2,
+ 0x11fa, 0x120c, 0x1224, 0x1245, 0x126d, 0x1288, 0x12b6, 0x12da,
+ 0x12e6, 0x1310, 0x132b, 0x134d, 0x138b, 0x13a9, 0x13c7, 0x13eb,
+ 0x13fd, 0x1418, 0x1436, 0x1445, 0x145d, 0x1472, 0x148d, 0x14a2,
+ 0x14d3, 0x14e2, 0x150a, 0x1522, 0x1540, 0x156d, 0x157f, 0x158e,
+ 0x159a, 0x15a6, 0x15c7, 0x15d3, 0x15e2, 0x15ee, 0x1622, 0x1650,
+ 0x166e, 0x1689, 0x16a4, 0x16e9, 0x1723, 0x1748, 0x1788, 0x17a3,
+ // Entry C0 - FF
+ 0x17b2, 0x17c7, 0x17d6, 0x1811, 0x182c, 0x1844, 0x185c, 0x186b,
+ 0x1880, 0x18a2, 0x18d0, 0x18ee, 0x1900, 0x1915, 0x1930, 0x1952,
+ 0x1970, 0x19c1, 0x19df, 0x1a0a, 0x1a2f, 0x1a44, 0x1a5c, 0x1a71,
+ 0x1a96, 0x1ade, 0x1b06, 0x1b2e, 0x1b40, 0x1b67, 0x1b9c, 0x1bed,
+ 0x1bf9, 0x1c3d, 0x1c49, 0x1c64, 0x1c85, 0x1c9d, 0x1cbf, 0x1cef,
+ 0x1d07, 0x1d13, 0x1d22, 0x1d63, 0x1d75, 0x1d87, 0x1da2, 0x1db7,
+ 0x1dc9, 0x1e17, 0x1e58, 0x1e6d, 0x1e94, 0x1eaf, 0x1f10, 0x1f2e,
+ 0x1f75, 0x1fb5, 0x1fd3, 0x1fe2, 0x2017, 0x2026, 0x2038, 0x2047,
+ // Entry 100 - 13F
+ 0x205c, 0x2084, 0x2099, 0x20b4, 0x20d9, 0x20eb, 0x2100, 0x2125,
+ 0x214d, 0x2168, 0x2190, 0x21b2, 0x21d7, 0x21fc, 0x221e, 0x2253,
+ 0x226e, 0x22a0, 0x22bb, 0x22da, 0x22fc, 0x231e, 0x2343, 0x236a,
+ 0x2385, 0x23bf, 0x23dd, 0x23ec, 0x2408, 0x242a, 0x243c, 0x245e,
+ 0x2480, 0x24a5, 0x24d3,
+} // Size: 606 bytes
+
+var koRegionStr string = "" + // Size: 3916 bytes
+ "어센션 섬안도라아랍에미리트아프가니스탄앤티가 바부다앵귈라알바니아아르메니아네덜란드령 안틸레스앙골라남극 대륙아르헨티나아메리칸 사모아오스" +
+ "트리아오스트레일리아아루바올란드 제도아제르바이잔보스니아 헤르체고비나바베이도스방글라데시벨기에부르키나파소불가리아바레인부룬디베냉생바르" +
+ "텔레미버뮤다브루나이볼리비아네덜란드령 카리브브라질바하마부탄부베섬보츠와나벨라루스벨리즈캐나다코코스 제도콩고-킨샤사중앙 아프리카 공화" +
+ "국콩고스위스코트디부아르쿡 제도칠레카메룬중국콜롬비아클립퍼튼 섬코스타리카쿠바카보베르데퀴라소크리스마스섬키프로스체코독일디에고 가르시아" +
+ "지부티덴마크도미니카도미니카 공화국알제리세우타 및 멜리야에콰도르에스토니아이집트서사하라에리트리아스페인에티오피아유럽 연합핀란드피지포" +
+ "클랜드 제도미크로네시아페로 제도프랑스가봉영국그레나다조지아프랑스령 기아나건지가나지브롤터그린란드감비아기니과들루프적도 기니그리스사우" +
+ "스조지아 사우스샌드위치 제도과테말라괌기니비사우가이아나홍콩(중국 특별행정구)허드 맥도널드 제도온두라스크로아티아아이티헝가리카나리아" +
+ " 제도인도네시아아일랜드이스라엘맨 섬인도영국령 인도양 식민지이라크이란아이슬란드이탈리아저지자메이카요르단일본케냐키르기스스탄캄보디아키리바" +
+ "시코모로세인트키츠 네비스조선민주주의인민공화국대한민국쿠웨이트케이맨 제도카자흐스탄라오스레바논세인트루시아리히텐슈타인스리랑카라이베리아" +
+ "레소토리투아니아룩셈부르크라트비아리비아모로코모나코몰도바몬테네그로생마르탱마다가스카르마셜 제도마케도니아말리미얀마몽골마카오(중국 특별" +
+ "행정구)북마리아나제도마르티니크모리타니몬트세라트몰타모리셔스몰디브말라위멕시코말레이시아모잠비크나미비아뉴칼레도니아니제르노퍽섬나이지리아" +
+ "니카라과네덜란드노르웨이네팔나우루니우에뉴질랜드오만파나마페루프랑스령 폴리네시아파푸아뉴기니필리핀파키스탄폴란드생피에르 미클롱핏케언 섬" +
+ "푸에르토리코팔레스타인 지구포르투갈팔라우파라과이카타르오세아니아 외곽리유니온루마니아세르비아러시아르완다사우디아라비아솔로몬 제도세이셸" +
+ "수단스웨덴싱가포르세인트헬레나슬로베니아스발바르제도-얀마웬섬슬로바키아시에라리온산마리노세네갈소말리아수리남남수단상투메 프린시페엘살바도" +
+ "르신트마르턴시리아스와질란드트리스탄다쿠나터크스 케이커스 제도차드프랑스 남부 지방토고태국타지키스탄토켈라우동티모르투르크메니스탄튀니지" +
+ "통가터키트리니다드 토바고투발루대만탄자니아우크라이나우간다미국령 해외 제도미국우루과이우즈베키스탄바티칸 시국세인트빈센트그레나딘베네수" +
+ "엘라영국령 버진아일랜드미국령 버진아일랜드베트남바누아투왈리스-푸투나 제도사모아코소보예멘마요트남아프리카잠비아짐바브웨알려지지 않은 " +
+ "지역세계아프리카북아메리카남아메리카(남미)오세아니아서부 아프리카중앙 아메리카동부 아프리카북부 아프리카중부 아프리카남부 아프리카아" +
+ "메리카 대륙북부 아메리카카리브 제도동아시아남아시아동남아시아남유럽오스트랄라시아멜라네시아미크로네시아 지역폴리네시아아시아중앙 아시아" +
+ "서아시아유럽동유럽북유럽서유럽라틴 아메리카"
+
+var koRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000d, 0x0016, 0x0028, 0x003a, 0x004d, 0x0056, 0x0062,
+ 0x0071, 0x008d, 0x0096, 0x00a3, 0x00b2, 0x00c8, 0x00d7, 0x00ec,
+ 0x00f5, 0x0105, 0x0117, 0x0136, 0x0145, 0x0154, 0x015d, 0x016f,
+ 0x017b, 0x0184, 0x018d, 0x0193, 0x01a5, 0x01ae, 0x01ba, 0x01c6,
+ 0x01df, 0x01e8, 0x01f1, 0x01f7, 0x0200, 0x020c, 0x0218, 0x0221,
+ 0x022a, 0x023a, 0x024a, 0x0267, 0x026d, 0x0276, 0x0288, 0x0292,
+ 0x0298, 0x02a1, 0x02a7, 0x02b3, 0x02c3, 0x02d2, 0x02d8, 0x02e7,
+ 0x02f0, 0x0302, 0x030e, 0x0314, 0x031a, 0x0330, 0x0339, 0x0342,
+ // Entry 40 - 7F
+ 0x034e, 0x0364, 0x036d, 0x0384, 0x0390, 0x039f, 0x03a8, 0x03b4,
+ 0x03c3, 0x03cc, 0x03db, 0x03e8, 0x03f1, 0x03f7, 0x040a, 0x041c,
+ 0x0429, 0x0432, 0x0438, 0x043e, 0x044a, 0x0453, 0x0469, 0x046f,
+ 0x0475, 0x0481, 0x048d, 0x0496, 0x049c, 0x04a8, 0x04b5, 0x04be,
+ 0x04ed, 0x04f9, 0x04fc, 0x050b, 0x0517, 0x0535, 0x054f, 0x055b,
+ 0x056a, 0x0573, 0x057c, 0x058f, 0x059e, 0x05aa, 0x05b6, 0x05bd,
+ 0x05c3, 0x05e0, 0x05e9, 0x05ef, 0x05fe, 0x060a, 0x0610, 0x061c,
+ 0x0625, 0x062b, 0x0631, 0x0643, 0x064f, 0x065b, 0x0664, 0x067d,
+ // Entry 80 - BF
+ 0x069e, 0x06aa, 0x06b6, 0x06c6, 0x06d5, 0x06de, 0x06e7, 0x06f9,
+ 0x070b, 0x0717, 0x0726, 0x072f, 0x073e, 0x074d, 0x0759, 0x0762,
+ 0x076b, 0x0774, 0x077d, 0x078c, 0x0798, 0x07aa, 0x07b7, 0x07c6,
+ 0x07cc, 0x07d5, 0x07db, 0x07fc, 0x0811, 0x0820, 0x082c, 0x083b,
+ 0x0841, 0x084d, 0x0856, 0x085f, 0x0868, 0x0877, 0x0883, 0x088f,
+ 0x08a1, 0x08aa, 0x08b3, 0x08c2, 0x08ce, 0x08da, 0x08e6, 0x08ec,
+ 0x08f5, 0x08fe, 0x090a, 0x0910, 0x0919, 0x091f, 0x093b, 0x094d,
+ 0x0956, 0x0962, 0x096b, 0x0981, 0x098e, 0x09a0, 0x09b6, 0x09c2,
+ // Entry C0 - FF
+ 0x09cb, 0x09d7, 0x09e0, 0x09f6, 0x0a02, 0x0a0e, 0x0a1a, 0x0a23,
+ 0x0a2c, 0x0a41, 0x0a51, 0x0a5a, 0x0a60, 0x0a69, 0x0a75, 0x0a87,
+ 0x0a96, 0x0ab5, 0x0ac4, 0x0ad3, 0x0adf, 0x0ae8, 0x0af4, 0x0afd,
+ 0x0b06, 0x0b1c, 0x0b2b, 0x0b3a, 0x0b43, 0x0b52, 0x0b67, 0x0b84,
+ 0x0b8a, 0x0ba1, 0x0ba7, 0x0bad, 0x0bbc, 0x0bc8, 0x0bd4, 0x0be9,
+ 0x0bf2, 0x0bf8, 0x0bfe, 0x0c17, 0x0c20, 0x0c26, 0x0c32, 0x0c41,
+ 0x0c4a, 0x0c61, 0x0c67, 0x0c73, 0x0c85, 0x0c95, 0x0cb3, 0x0cc2,
+ 0x0cde, 0x0cfa, 0x0d03, 0x0d0f, 0x0d29, 0x0d32, 0x0d3b, 0x0d41,
+ // Entry 100 - 13F
+ 0x0d4a, 0x0d59, 0x0d62, 0x0d6e, 0x0d88, 0x0d8e, 0x0d9a, 0x0da9,
+ 0x0dc0, 0x0dcf, 0x0de2, 0x0df5, 0x0e08, 0x0e1b, 0x0e2e, 0x0e41,
+ 0x0e54, 0x0e67, 0x0e77, 0x0e83, 0x0e8f, 0x0e9e, 0x0ea7, 0x0ebc,
+ 0x0ecb, 0x0ee4, 0x0ef3, 0x0efc, 0x0f0c, 0x0f18, 0x0f1e, 0x0f27,
+ 0x0f30, 0x0f39, 0x0f4c,
+} // Size: 606 bytes
+
+var kyRegionStr string = "" + // Size: 5805 bytes
+ "Ассеншин аралыАндорраБириккен Араб ЭмираттарыАфганистанАнтигуа жана Барб" +
+ "удаАнгуилаАлбанияАрменияАнголаАнтарктикаАргентинаАмерика СамоасыАвстрия" +
+ "АвстралияАрубаАланд аралдарыАзербайжанБосния жана ГерцеговинаБарбадосБа" +
+ "нгладешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСент БартелемиБерм" +
+ "уд аралдарыБрунейБоливияКариб НидерланддарыБразилияБагам аралдарыБутанБ" +
+ "уве аралдарыБотсванаБеларусьБелизКанадаКокос (Килиӊ) аралдарыКонго-Кинш" +
+ "асаБорбордук Африка РеспубликасыКонго-БраззавилШвейцарияКот-д’ИвуарКук " +
+ "аралдарыЧилиКамерунКытайКолумбияКлиппертон аралыКоста-РикаКубаКапе Верд" +
+ "еКюрасаоКрисмас аралыКипрЧехияГерманияДиего ГарсияДжибутиДанияДоминикаД" +
+ "оминика РеспубликасыАлжирСеута жана МелиллаЭквадорЭстонияЕгипетБатыш Са" +
+ "хараЭритреяИспанияЭфиопияЕвропа БиримдигиФинляндияФиджиФолклэнд аралдар" +
+ "ыМикронезияФарер аралдарыФранцияГабонУлуу БританияГренадаГрузияГвиана (" +
+ "Франция)ГернсиГанаГибралтарГренландияГамбияГвинеяГваделупаЭкваториалдык" +
+ " ГвинеяГрецияТүштүк Жоржия жана Түштүк Сэндвич аралдарыГватемалаГуамГвин" +
+ "ея-БисауГайанаГонконг Кытай АААХерд жана Макдоналд аралдарыГондурасХорв" +
+ "атияГаитиВенгрияКанар аралдарыИндонезияИрландияИзраильМэн аралыИндияБри" +
+ "таниянын Индия океанындагы аймагыИракИранИсландияИталияЖерсиЯмайкаИорда" +
+ "нияЯпонияКенияКыргызстанКамбоджаКирибатиКоморосСент-Китс жана НевисТүнд" +
+ "үк КореяТүштүк КореяКувейтКайман АралдарыКазакстанЛаосЛиванСент-ЛюсияЛи" +
+ "хтенштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМароккоМонакоМ" +
+ "олдоваЧерногорияСент-МартинМадагаскарМаршалл аралдарыМакедонияМалиМьянм" +
+ "а (Бирма)МонголияМакау Кытай АААТүндүк Мариана аралдарыМартиникаМаврита" +
+ "нияМонсерратМальтаМаврикийМалдив аралдарыМалавиМексикаМалайзияМозамбикН" +
+ "амибияЖаӊы КаледонияНигерНорфолк аралыНигерияНикарагуаНидерланддарНорве" +
+ "гияНепалНауруНиуэЖаӊы ЗеландияОманПанамаПеруФранцуз ПолинезиясыПапуа Жа" +
+ "ңы-ГвинеяФиллипинПакистанПольшаСен-Пьер жана МикелонПиткэрн аралдарыПуэ" +
+ "рто-РикоПалестина аймактарыПортугалияПалауПарагвайКатарАлыскы ОкеанияРе" +
+ "юнионРумынияСербияРоссияРуандаСауд АрабиясыСоломон аралдарыСейшелдерСуд" +
+ "анШвецияСингапурЫйык ЕленаСловенияСвалбард жана Жан МайенСловакияСьерра" +
+ "-ЛеонеСан МариноСенегалСомалиСуринамеТүштүк СуданСан-Томе жана ПринсипиЭ" +
+ "л СалвадорСинт МаартенСирияСвазилендТристан да КуньяТүркс жана Кайкос а" +
+ "ралдарыЧадФранциянын Түштүктөгү аймактарыТогоТаиландТажикстанТокелауТим" +
+ "ор-ЛестеТүркмөнстанТунисТонгаТүркияТринидад жана ТобагоТувалуТайваньТан" +
+ "занияУкраинаУгандаАКШнын сырткы аралдарыАмерика Кошмо ШтаттарыУругвайӨз" +
+ "бекстанВатиканСент-Винсент жана ГренадиналарВенесуэлаВиргин аралдары (Б" +
+ "ритания)Виргин аралдары (АКШ)ВьетнамВануатуУоллис жана ФутунаСамоаКосов" +
+ "оЙеменМайоттаТүштүк Африка РеспубликасыЗамбияЗимбабвеБелгисиз регионДүй" +
+ "нөАфрикаТүндүк АмерикаТүштүк АмерикаОкеанияБатыш АфрикаБорбордук Америк" +
+ "аЧыгыш АфрикаТүндүк АфрикаБорбордук АфрикаТүштүк АфрикаАмерикаТүндүк Ам" +
+ "ерика (регион)Кариб аралдарыЧыгыш АзияТүштүк АзияТүштүк-Чыгыш АзияТүштү" +
+ "к ЕвропаАвстралазияМеланезияМикронезия РегионуПолинезияАзияБорбор АзияБ" +
+ "атыш АзияЕвропаЧыгыш ЕвропаТүндүк ЕвропаБатыш ЕвропаЛатын Америкасы"
+
+var kyRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001b, 0x0029, 0x0057, 0x006b, 0x0091, 0x009f, 0x00ad,
+ 0x00bb, 0x00bb, 0x00c7, 0x00db, 0x00ed, 0x010a, 0x0118, 0x012a,
+ 0x0134, 0x014f, 0x0163, 0x018f, 0x019f, 0x01b1, 0x01bf, 0x01d6,
+ 0x01e6, 0x01f4, 0x0202, 0x020c, 0x0227, 0x0244, 0x0250, 0x025e,
+ 0x0283, 0x0293, 0x02ae, 0x02b8, 0x02d1, 0x02e1, 0x02f1, 0x02fb,
+ 0x0307, 0x032f, 0x0348, 0x0380, 0x039d, 0x03af, 0x03c5, 0x03dc,
+ 0x03e4, 0x03f2, 0x03fc, 0x040c, 0x042b, 0x043e, 0x0446, 0x0459,
+ 0x0467, 0x0480, 0x0488, 0x0492, 0x04a2, 0x04b9, 0x04c7, 0x04d1,
+ // Entry 40 - 7F
+ 0x04e1, 0x050a, 0x0514, 0x0536, 0x0544, 0x0552, 0x055e, 0x0575,
+ 0x0583, 0x0591, 0x059f, 0x05be, 0x05d0, 0x05da, 0x05fb, 0x060f,
+ 0x062a, 0x0638, 0x0642, 0x065b, 0x0669, 0x0675, 0x0692, 0x069e,
+ 0x06a6, 0x06b8, 0x06cc, 0x06d8, 0x06e4, 0x06f6, 0x071d, 0x0729,
+ 0x0778, 0x078a, 0x0792, 0x07a9, 0x07b5, 0x07d5, 0x080a, 0x081a,
+ 0x082a, 0x0834, 0x0842, 0x085d, 0x086f, 0x087f, 0x088d, 0x089e,
+ 0x08a8, 0x08ed, 0x08f5, 0x08fd, 0x090d, 0x0919, 0x0923, 0x092f,
+ 0x093f, 0x094b, 0x0955, 0x0969, 0x0979, 0x0989, 0x0997, 0x09bc,
+ // Entry 80 - BF
+ 0x09d3, 0x09ea, 0x09f6, 0x0a13, 0x0a25, 0x0a2d, 0x0a37, 0x0a4a,
+ 0x0a60, 0x0a71, 0x0a7f, 0x0a8b, 0x0a95, 0x0aa9, 0x0ab5, 0x0abf,
+ 0x0acd, 0x0ad9, 0x0ae7, 0x0afb, 0x0b10, 0x0b24, 0x0b43, 0x0b55,
+ 0x0b5d, 0x0b76, 0x0b86, 0x0ba2, 0x0bce, 0x0be0, 0x0bf4, 0x0c06,
+ 0x0c12, 0x0c22, 0x0c3f, 0x0c4b, 0x0c59, 0x0c69, 0x0c79, 0x0c87,
+ 0x0ca2, 0x0cac, 0x0cc5, 0x0cd3, 0x0ce5, 0x0cfd, 0x0d0d, 0x0d17,
+ 0x0d21, 0x0d29, 0x0d42, 0x0d4a, 0x0d56, 0x0d5e, 0x0d83, 0x0da3,
+ 0x0db3, 0x0dc3, 0x0dcf, 0x0df6, 0x0e15, 0x0e2a, 0x0e4f, 0x0e63,
+ // Entry C0 - FF
+ 0x0e6d, 0x0e7d, 0x0e87, 0x0ea2, 0x0eb0, 0x0ebe, 0x0eca, 0x0ed6,
+ 0x0ee2, 0x0efb, 0x0f1a, 0x0f2c, 0x0f36, 0x0f42, 0x0f52, 0x0f65,
+ 0x0f75, 0x0fa0, 0x0fb0, 0x0fc7, 0x0fda, 0x0fe8, 0x0ff4, 0x1004,
+ 0x101b, 0x1044, 0x1059, 0x1070, 0x107a, 0x108c, 0x10aa, 0x10db,
+ 0x10e1, 0x111d, 0x1125, 0x1133, 0x1145, 0x1153, 0x1168, 0x117e,
+ 0x1188, 0x1192, 0x119e, 0x11c4, 0x11d0, 0x11de, 0x11ee, 0x11fc,
+ 0x1208, 0x1232, 0x125c, 0x126a, 0x127c, 0x128a, 0x12c3, 0x12d5,
+ 0x1305, 0x132b, 0x1339, 0x1347, 0x1369, 0x1373, 0x137f, 0x1389,
+ // Entry 100 - 13F
+ 0x1397, 0x13c9, 0x13d5, 0x13e5, 0x1402, 0x140c, 0x1418, 0x1433,
+ 0x144e, 0x145c, 0x1473, 0x1494, 0x14ab, 0x14c4, 0x14e3, 0x14fc,
+ 0x150a, 0x1534, 0x154f, 0x1562, 0x1577, 0x1597, 0x15b0, 0x15c6,
+ 0x15d8, 0x15fb, 0x160d, 0x1615, 0x162a, 0x163d, 0x1649, 0x1660,
+ 0x1679, 0x1690, 0x16ad,
+} // Size: 606 bytes
+
+var loRegionStr string = "" + // Size: 8043 bytes
+ "ເກາະອາເຊນຊັນອັນດໍຣາສະຫະລັດອາຣັບເອມິເຣດອາຟການິສຖານອາທິກົວ ບາບູດາແອນກຸຍລາແ" +
+ "ອວເບເນຍອາເມເນຍອັນໂກລາແອນຕາດຕິກາອາເຈນທິນາອາເມຣິກາ ຊາມົວໂອຕາລິກອອສເຕຣເລຍ" +
+ "ອໍຣູບາຫມູ່ເກາະໂອລັນອາເຊີໄບຈານບອດສະເນຍ ແລະ ແຮສໂກວີນາບາບາໂດສບັງກະລາເທດແບ" +
+ "ລຊິກເບີກິນາ ຟາໂຊບູລກາຣິບາເຣນບູຣຸນດິເບນິນເຊນ ບາເທເລມີເບີມິວດາບຣູໄນໂບລິເ" +
+ "ວຍຄາຣິບບຽນ ເນເທີແລນບະເລຊີນບາຮາມາສພູຖານເກາະບູເວດບອດສະວານາເບວບາຣຸສເບລີຊກ" +
+ "ານາດາຫມູ່ເກາະໂກໂກສຄອງໂກ - ຄິນຊາຊາສາທາລະນະລັດອາຟຣິກາກາງຄອງໂກ - ບຣາຊາວິວ" +
+ "ສະວິດເຊີແລນໂຄຕີ ວົວໝູ່ເກາະຄຸກຈີເລຄາເມຣູນຈີນໂຄລົມເບຍເກາະຄລິບເປີຕັນໂຄສຕາ" +
+ " ຣິກາກຸຍບາເຄບ ເວີດຄູຣາຊາວເກາະຄຣິສມາດໄຊປຣັສສາທາລະນະລັດເຊກເຢຍລະມັນດິເອໂກ ກ" +
+ "າເຊຍຈິບູຕິເດນມາກໂດມີນິຄາສາທາລະນະລັດ ໂດມິນິກັນອັລຈິເຣຍເຊວຕາ ແລະເມລິນລາເ" +
+ "ອກວາດໍເອສໂຕເນຍອີຢິບຊາຮາຣາຕາເວັນຕົກເອຣິເທຣຍສະເປນອີທິໂອເປຍສະຫະພາບຢູໂຣບຝຽ" +
+ "ກລັງຟິຈິຫມູ່ເກາະຟອກແລນໄມໂຄຣນີເຊຍຫມູ່ເກາະແຟໂຣຝຣັ່ງກາບອນສະຫະລາດຊະອະນາຈັກ" +
+ "ເກຣເນດາຈໍເຈຍເຟຣນຊ໌ ກຸຍອານາເກີນຊີການາຈິບບຣອນທາກຣີນແລນສາທາລະນະລັດແກມເບຍກ" +
+ "ິນີກົວດາລູບອີຄົວໂຕຣຽວ ກີນີກຣີຊໝູ່ເກາະຈໍເຈຍ & ເຊົາ ແຊນວິດກົວເທມາລາກວມກິ" +
+ "ນີ-ບິສເຊົາກາຍຢານາຮອງກົງ ເຂດປົກຄອງພິເສດ ຈີນໝູ່ເກາະເຮີດ & ແມັກໂດນອລຮອນດູ" +
+ "ຣັສໂຄຣເອເທຍໄຮຕິຮັງກາຣີໝູ່ເກາະຄານາຣີອິນໂດເນເຊຍໄອຣ໌ແລນອິສຣາເອວເອວ ອອບ ແມ" +
+ "ນອິນເດຍເຂດແດນບຣິທິສອິນດຽນໂອຊຽນອີຣັກອີຣ່ານໄອສແລນອິຕາລີເຈີຊີຈາໄມຄາຈໍແດນຍ" +
+ "ີ່ປຸ່ນເຄນຢາຄີກິສຖານກຳປູເຈຍຄິຣິບາທິໂຄໂມໂຣສເຊນ ຄິດ ແລະ ເນວິສເກົາຫລີເໜືອເ" +
+ "ກົາຫລີໃຕ້ກູເວດເຄແມນ ໄອແລນຄາຊັກສະຖານລາວເລບານອນເຊນ ລູເຊຍລິດເທນສະຕາຍສີລັງ" +
+ "ກາລິເບີເຣຍເລໂຊໂທລິທົວເນຍລຸກຊຳບົວລັດເວຍລິເບຍໂມຣັອກໂຄໂມນາໂຄໂມນໂດວາມອນເຕເ" +
+ "ນໂກຣເຊນ ມາທິນມາດາກາສກາຫມູ່ເກາະມາແຊວແມຊິໂດເນຍມາລິມຽນມາ (ເບີມາ)ມົງໂກລີມາ" +
+ "ເກົ້າ ເຂດປົກຄອງພິເສດ ຈີນຫມູ່ເກາະມາແຊວຕອນເຫນືອມາຕິນີກມົວຣິເທເນຍມອນເຊີຣາ" +
+ "ດມອນທາມົວຣິຊຽສມັນດິຟມາລາວີແມັກຊີໂກມາເລເຊຍໂມແຊມບິກນາມີເບຍນິວ ຄາເລໂດເນຍນ" +
+ "ິເຈີເກາະນໍໂຟກໄນຈີເຣຍນິກຄາຣາກົວເນເທີແລນນອກແວ໊ເນປານນາອູຣູນີອູເອນິວຊີແລນໂ" +
+ "ອມານພານາມາເປຣູເຟຣນຊ໌ ໂພລີນີເຊຍປາປົວນິວກີນີຟິລິບປິນປາກິສຖານໂປໂລຍເຊນ ປີແ" +
+ "ອ ມິເກວລອນໝູ່ເກາະພິດແຄນເພືອໂຕ ຣິໂກດິນແດນ ປາເລສຕິນຽນພອລທູໂກປາເລົາພາຣາກວ" +
+ "ຍກາຕາເຂດຫ່າງໄກໂອຊີເນຍເຣອູນິຍົງໂຣມານີເຊີເບຍຣັດເຊຍຣວັນດາຊາອຸດິ ອາຣາເບຍຫມ" +
+ "ູ່ເກາະໂຊໂລມອນເຊເຊວເລສຊູດານສະວີເດັນສິງກະໂປເຊນ ເຮເລນາສະໂລເວເນຍສະວາບາ ແລະ" +
+ " ແຢນ ມາເຢນສະໂລວາເກຍເຊຍຣາ ລີໂອນແຊນ ມາຣິໂນເຊນີໂກລໂຊມາລີຊູຣິນາມຊູດານໃຕ້ເຊົາ" +
+ "ທູເມ ແລະ ພຣິນຊິບເອວ ຊໍວາດໍຊິນ ມາເທັນຊີເຣຍສະວາຊິແລນທຣິສຕັນ ດາ ກັນຮາໝູ່ເ" +
+ "ກາະ ເທີກ ແລະ ໄຄໂຄສຊາດເຂດແດນທາງໃຕ້ຂອຝຮັ່ງໂຕໂກໄທທາຈິກິສຖານໂຕເກເລົາທິມໍ-ເ" +
+ "ລສເຕເທີກເມນິສຖານຕູນິເຊຍທອງກາເທີຄີທຣິນິແດດ ແລະ ໂທແບໂກຕູວາລູໄຕ້ຫວັນທານຊາ" +
+ "ເນຍຢູເຄຣນອູການດາໝູ່ເກາະຮອບນອກຂອງສະຫະລັດຯສະຫະລັດອູຣຸກວຍອຸສເບກິສຖານນະຄອນ" +
+ " ວາຕິກັນເຊນ ວິນເຊນ & ເກຣເນດິນເວເນຊູເອລາໝູ່ເກາະ ບຣິທິຊ ເວີຈິນໝູ່ເກາະ ຢູເອ" +
+ "ສ ເວີຈິນຫວຽດນາມວານົວຕູວາລິສ ແລະ ຟຸຕູນາຊາມົວໂຄໂຊໂວເຢເມນມາຢັອດອາຟະລິກາໃຕ" +
+ "້ແຊມເບຍຊິມບັບເວຂົງເຂດທີ່ບໍ່ຮູ້ຈັກໂລກອາຟຣິກາອາເມລິກາເໜືອອາເມລິກາໃຕ້ໂອຊີ" +
+ "ອານີອາຟຣິກາຕາເວັນຕົກອາເມລິກາກາງອາຟຣິກາຕາເວັນອອກອາຟຣິກາເໜືອອາຟຣິກາກາງອາ" +
+ "ຟຣິກາໃຕ້ອາເມຣິກາພາກເໜືອອາເມລີກາຄາຣິບບຽນອາຊີຕາເວັນອອກອາຊີໄຕ້ອາຊີຕາເວັນອ" +
+ "ອກສ່ຽງໄຕ້ຢູໂຣບໃຕ້ໂອດສະຕາລີເມລານີເຊຍເຂດໄມໂຄຣເນຊຽນໂພລີນີເຊຍອາຊີອາຊີກາງອາ" +
+ "ຊີຕາເວັນຕົກຢູໂຣບຢູໂຣບຕາເວັນອອກຢູໂຣບເໜືອຢູໂຣບຕາເວັນຕົກລາຕິນ ອາເມລິກາ"
+
+var loRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0024, 0x0039, 0x0072, 0x0093, 0x00bb, 0x00d3, 0x00eb,
+ 0x0100, 0x0100, 0x0115, 0x0133, 0x014e, 0x0176, 0x018b, 0x01a6,
+ 0x01b8, 0x01df, 0x01fd, 0x023b, 0x0250, 0x026e, 0x0280, 0x02a2,
+ 0x02b7, 0x02c6, 0x02db, 0x02ea, 0x030c, 0x0324, 0x0333, 0x0348,
+ 0x0379, 0x038e, 0x03a3, 0x03b2, 0x03cd, 0x03e8, 0x0400, 0x040f,
+ 0x0421, 0x0448, 0x046f, 0x04ae, 0x04d8, 0x04f9, 0x050f, 0x052d,
+ 0x0539, 0x054e, 0x0557, 0x056f, 0x0599, 0x05b5, 0x05c4, 0x05da,
+ 0x05ef, 0x0610, 0x0622, 0x064c, 0x0664, 0x0686, 0x0698, 0x06aa,
+ // Entry 40 - 7F
+ 0x06c2, 0x06ff, 0x0717, 0x0745, 0x075a, 0x0772, 0x0781, 0x07ae,
+ 0x07c6, 0x07d5, 0x07f0, 0x0814, 0x0826, 0x0832, 0x085c, 0x087a,
+ 0x089e, 0x08ad, 0x08bc, 0x08ec, 0x0901, 0x0910, 0x0938, 0x094a,
+ 0x0956, 0x0971, 0x0986, 0x09b9, 0x09c5, 0x09dd, 0x0a08, 0x0a14,
+ 0x0a5a, 0x0a75, 0x0a7e, 0x0aa0, 0x0ab5, 0x0afc, 0x0b3b, 0x0b53,
+ 0x0b6b, 0x0b77, 0x0b8c, 0x0bb3, 0x0bd1, 0x0be6, 0x0bfe, 0x0c1b,
+ 0x0c2d, 0x0c72, 0x0c81, 0x0c93, 0x0ca5, 0x0cb7, 0x0cc6, 0x0cd8,
+ 0x0ce7, 0x0cfc, 0x0d0b, 0x0d23, 0x0d38, 0x0d50, 0x0d65, 0x0d92,
+ // Entry 80 - BF
+ 0x0db3, 0x0dd1, 0x0de0, 0x0dff, 0x0e1d, 0x0e26, 0x0e3b, 0x0e54,
+ 0x0e75, 0x0e8a, 0x0ea2, 0x0eb4, 0x0ecc, 0x0ee4, 0x0ef6, 0x0f05,
+ 0x0f1d, 0x0f2f, 0x0f44, 0x0f62, 0x0f7b, 0x0f96, 0x0fbd, 0x0fd8,
+ 0x0fe4, 0x1005, 0x101a, 0x1064, 0x10a3, 0x10b8, 0x10d6, 0x10f1,
+ 0x1100, 0x1118, 0x112a, 0x113c, 0x1154, 0x1169, 0x1181, 0x1196,
+ 0x11bb, 0x11ca, 0x11e5, 0x11fa, 0x1218, 0x1230, 0x1242, 0x1251,
+ 0x1263, 0x1275, 0x128d, 0x129c, 0x12ae, 0x12ba, 0x12e8, 0x130c,
+ 0x1324, 0x133c, 0x134b, 0x137a, 0x13a1, 0x13c0, 0x13f1, 0x1406,
+ // Entry C0 - FF
+ 0x1418, 0x142d, 0x1439, 0x1469, 0x1484, 0x1496, 0x14a8, 0x14ba,
+ 0x14cc, 0x14f4, 0x1521, 0x1539, 0x1548, 0x1560, 0x1575, 0x1591,
+ 0x15ac, 0x15e2, 0x15fd, 0x161c, 0x1638, 0x164d, 0x165f, 0x1674,
+ 0x168c, 0x16c4, 0x16e0, 0x16fc, 0x170b, 0x1726, 0x1752, 0x178e,
+ 0x1797, 0x17d0, 0x17dc, 0x17e2, 0x1800, 0x1818, 0x1834, 0x1858,
+ 0x186d, 0x187c, 0x188b, 0x18c0, 0x18d2, 0x18e7, 0x18ff, 0x1911,
+ 0x1926, 0x196e, 0x1983, 0x1998, 0x19b9, 0x19de, 0x1a15, 0x1a33,
+ 0x1a6e, 0x1aa6, 0x1abb, 0x1ad0, 0x1afc, 0x1b0b, 0x1b1d, 0x1b2c,
+ // Entry 100 - 13F
+ 0x1b3e, 0x1b5f, 0x1b71, 0x1b89, 0x1bbf, 0x1bc8, 0x1bdd, 0x1c01,
+ 0x1c22, 0x1c3a, 0x1c6a, 0x1c8b, 0x1cbb, 0x1cdc, 0x1cfa, 0x1d18,
+ 0x1d30, 0x1d5d, 0x1d75, 0x1d9c, 0x1db1, 0x1ded, 0x1e05, 0x1e20,
+ 0x1e3b, 0x1e62, 0x1e7d, 0x1e89, 0x1e9e, 0x1ec5, 0x1ed4, 0x1efe,
+ 0x1f19, 0x1f43, 0x1f6b,
+} // Size: 606 bytes
+
+var ltRegionStr string = "" + // Size: 3396 bytes
+ "Dangun Žengimo salaAndoraJungtiniai Arabų EmyrataiAfganistanasAntigva ir" +
+ " BarbudaAngilijaAlbanijaArmėnijaOlandijos AntilaiAngolaAntarktidaArgenti" +
+ "naAmerikos SamoaAustrijaAustralijaArubaAlandų SalosAzerbaidžanasBosnija " +
+ "ir HercegovinaBarbadosasBangladešasBelgijaBurkina FasasBulgarijaBahreina" +
+ "sBurundisBeninasSen BartelemiBermudaBrunėjusBolivijaKaribų NyderlandaiBr" +
+ "azilijaBahamosButanasBuvė SalaBotsvanaBaltarusijaBelizasKanadaKokosų (Ki" +
+ "lingo) SalosKongas-KinšasaCentrinės Afrikos RespublikaKongas-BrazavilisŠ" +
+ "veicarijaDramblio Kaulo KrantasKuko SalosČilėKamerūnasKinijaKolumbijaKli" +
+ "pertono salaKosta RikaKubaŽaliasis KyšulysKiurasaoKalėdų SalaKiprasČekij" +
+ "aVokietijaDiego GarsijaDžibutisDanijaDominikaDominikos RespublikaAlžyras" +
+ "Seuta ir MelilaEkvadorasEstijaEgiptasVakarų SacharaEritrėjaIspanijaEtiop" +
+ "ijaEuropos SąjungaSuomijaFidžisFolklando SalosMikronezijaFarerų SalosPra" +
+ "ncūzijaGabonasDidžioji BritanijaGrenadaGruzijaPrancūzijos GvianaGernsisG" +
+ "anaGibraltarasGrenlandijaGambijaGvinėjaGvadelupaPusiaujo GvinėjaGraikija" +
+ "Pietų Džordžija ir Pietų Sandvičo salosGvatemalaGuamasBisau GvinėjaGajan" +
+ "aYpatingasis Administracinis Kinijos Regionas HonkongasHerdo ir Makdonal" +
+ "do SalosHondūrasKroatijaHaitisVengrijaKanarų salosIndonezijaAirijaIzrael" +
+ "isMeno SalaIndijaIndijos Vandenyno Britų SritisIrakasIranasIslandijaItal" +
+ "ijaDžersisJamaikaJordanijaJaponijaKenijaKirgizijaKambodžaKiribatisKomora" +
+ "iSent Kitsas ir NevisŠiaurės KorėjaPietų KorėjaKuveitasKaimanų SalosKaza" +
+ "chstanasLaosasLibanasŠventoji LiucijaLichtenšteinasŠri LankaLiberijaLeso" +
+ "tasLietuvaLiuksemburgasLatvijaLibijaMarokasMonakasMoldovaJuodkalnijaSen " +
+ "MartenasMadagaskarasMaršalo SalosMakedonijaMalisMianmaras (Birma)Mongoli" +
+ "jaYpatingasis Administracinis Kinijos Regionas MakaoMarianos Šiaurinės S" +
+ "alosMartinikaMauritanijaMontseratasMaltaMauricijusMaldyvaiMalavisMeksika" +
+ "MalaizijaMozambikasNamibijaNaujoji KaledonijaNigerisNorfolko salaNigerij" +
+ "aNikaragvaNyderlandaiNorvegijaNepalasNauruNiujėNaujoji ZelandijaOmanasPa" +
+ "namaPeruPrancūzų PolinezijaPapua Naujoji GvinėjaFilipinaiPakistanasLenki" +
+ "jaSen Pjeras ir MikelonasPitkernasPuerto RikasPalestinos teritorijaPortu" +
+ "galijaPalauParagvajusKatarasNuošali OkeanijaReunjonasRumunijaSerbijaRusi" +
+ "jaRuandaSaudo ArabijaSaliamono SalosSeišeliaiSudanasŠvedijaSingapūrasŠv." +
+ " Elenos SalaSlovėnijaSvalbardas ir Janas MajenasSlovakijaSiera LeonėSan " +
+ "MarinasSenegalasSomalisSurinamasPietų SudanasSan Tomė ir PrinsipėSalvado" +
+ "rasSint MartenasSirijaSvazilandasTristanas da KunjaTerkso ir Kaikoso Sal" +
+ "osČadasPrancūzijos Pietų sritysTogasTailandasTadžikijaTokelauRytų Timora" +
+ "sTurkmėnistanasTunisasTongaTurkijaTrinidadas ir TobagasTuvaluTaivanasTan" +
+ "zanijaUkrainaUgandaJungtinių Valstijų Mažosios Tolimosios SalosJungtinės" +
+ " ValstijosUrugvajusUzbekistanasVatikano Miesto ValstybėŠventasis Vincent" +
+ "as ir GrenadinaiVenesuelaDidžiosios Britanijos Mergelių SalosJungtinių V" +
+ "alstijų Mergelių SalosVietnamasVanuatuVolisas ir FutunaSamoaKosovasJemen" +
+ "asMajotasPietų AfrikaZambijaZimbabvėnežinoma sritispasaulisAfrikaŠiaurės" +
+ " AmerikaPietų AmerikaOkeanijaVakarų AfrikaCentrinė AmerikaRytų AfrikaŠia" +
+ "urės AfrikaVidurio AfrikaPietinė AfrikaAmerikaŠiaurinė AmerikaKaribaiRyt" +
+ "ų AzijaPietų AzijaPietryčių AzijaPietų EuropaAustralazijaMelanezijaMikr" +
+ "onezijos regionasPolinezijaAzijaCentrinė AzijaVakarų AzijaEuropaRytų Eur" +
+ "opaŠiaurės EuropaVakarų EuropaLotynų Amerika"
+
+var ltRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0014, 0x001a, 0x0034, 0x0040, 0x0052, 0x005a, 0x0062,
+ 0x006b, 0x007c, 0x0082, 0x008c, 0x0095, 0x00a3, 0x00ab, 0x00b5,
+ 0x00ba, 0x00c7, 0x00d5, 0x00eb, 0x00f5, 0x0101, 0x0108, 0x0115,
+ 0x011e, 0x0127, 0x012f, 0x0136, 0x0143, 0x014a, 0x0153, 0x015b,
+ 0x016e, 0x0177, 0x017e, 0x0185, 0x018f, 0x0197, 0x01a2, 0x01a9,
+ 0x01af, 0x01c6, 0x01d5, 0x01f2, 0x0203, 0x020e, 0x0224, 0x022e,
+ 0x0234, 0x023e, 0x0244, 0x024d, 0x025c, 0x0266, 0x026a, 0x027c,
+ 0x0284, 0x0291, 0x0297, 0x029e, 0x02a7, 0x02b4, 0x02bd, 0x02c3,
+ // Entry 40 - 7F
+ 0x02cb, 0x02df, 0x02e7, 0x02f6, 0x02ff, 0x0305, 0x030c, 0x031b,
+ 0x0324, 0x032c, 0x0334, 0x0344, 0x034b, 0x0352, 0x0361, 0x036c,
+ 0x0379, 0x0384, 0x038b, 0x039e, 0x03a5, 0x03ac, 0x03bf, 0x03c6,
+ 0x03ca, 0x03d5, 0x03e0, 0x03e7, 0x03ef, 0x03f8, 0x0409, 0x0411,
+ 0x043d, 0x0446, 0x044c, 0x045a, 0x0460, 0x0496, 0x04af, 0x04b8,
+ 0x04c0, 0x04c6, 0x04ce, 0x04db, 0x04e5, 0x04eb, 0x04f3, 0x04fc,
+ 0x0502, 0x0521, 0x0527, 0x052d, 0x0536, 0x053d, 0x0545, 0x054c,
+ 0x0555, 0x055d, 0x0563, 0x056c, 0x0575, 0x057e, 0x0585, 0x0599,
+ // Entry 80 - BF
+ 0x05aa, 0x05b8, 0x05c0, 0x05ce, 0x05da, 0x05e0, 0x05e7, 0x05f8,
+ 0x0607, 0x0611, 0x0619, 0x0620, 0x0627, 0x0634, 0x063b, 0x0641,
+ 0x0648, 0x064f, 0x0656, 0x0661, 0x066d, 0x0679, 0x0687, 0x0691,
+ 0x0696, 0x06a7, 0x06b0, 0x06e2, 0x06fc, 0x0705, 0x0710, 0x071b,
+ 0x0720, 0x072a, 0x0732, 0x0739, 0x0740, 0x0749, 0x0753, 0x075b,
+ 0x076d, 0x0774, 0x0781, 0x0789, 0x0792, 0x079d, 0x07a6, 0x07ad,
+ 0x07b2, 0x07b8, 0x07c9, 0x07cf, 0x07d5, 0x07d9, 0x07ee, 0x0804,
+ 0x080d, 0x0817, 0x081e, 0x0835, 0x083e, 0x084a, 0x085f, 0x086a,
+ // Entry C0 - FF
+ 0x086f, 0x0879, 0x0880, 0x0891, 0x089a, 0x08a2, 0x08a9, 0x08af,
+ 0x08b5, 0x08c2, 0x08d1, 0x08db, 0x08e2, 0x08ea, 0x08f5, 0x0905,
+ 0x090f, 0x092a, 0x0933, 0x093f, 0x094a, 0x0953, 0x095a, 0x0963,
+ 0x0971, 0x0987, 0x0991, 0x099e, 0x09a4, 0x09af, 0x09c1, 0x09d8,
+ 0x09de, 0x09f8, 0x09fd, 0x0a06, 0x0a10, 0x0a17, 0x0a24, 0x0a33,
+ 0x0a3a, 0x0a3f, 0x0a46, 0x0a5b, 0x0a61, 0x0a69, 0x0a72, 0x0a79,
+ 0x0a7f, 0x0aae, 0x0ac2, 0x0acb, 0x0ad7, 0x0af0, 0x0b12, 0x0b1b,
+ 0x0b41, 0x0b65, 0x0b6e, 0x0b75, 0x0b86, 0x0b8b, 0x0b92, 0x0b99,
+ // Entry 100 - 13F
+ 0x0ba0, 0x0bad, 0x0bb4, 0x0bbd, 0x0bcd, 0x0bd5, 0x0bdb, 0x0bec,
+ 0x0bfa, 0x0c02, 0x0c10, 0x0c21, 0x0c2d, 0x0c3d, 0x0c4b, 0x0c5a,
+ 0x0c61, 0x0c73, 0x0c7a, 0x0c85, 0x0c91, 0x0ca2, 0x0caf, 0x0cbb,
+ 0x0cc5, 0x0cda, 0x0ce4, 0x0ce9, 0x0cf8, 0x0d05, 0x0d0b, 0x0d17,
+ 0x0d27, 0x0d35, 0x0d44,
+} // Size: 606 bytes
+
+var lvRegionStr string = "" + // Size: 3293 bytes
+ "Debesbraukšanas salaAndoraApvienotie Arābu EmirātiAfganistānaAntigva un " +
+ "BarbudaAngiljaAlbānijaArmēnijaNīderlandes AntiļasAngolaAntarktikaArgentī" +
+ "naAmerikāņu SamoaAustrijaAustrālijaArubaOlandes salasAzerbaidžānaBosnija" +
+ " un HercegovinaBarbadosaBangladešaBeļģijaBurkinafasoBulgārijaBahreinaBur" +
+ "undiBeninaSenbartelmīBermudu salasBrunejaBolīvijaNīderlandes Karību sala" +
+ "sBrazīlijaBahamu salasButānaBuvē salaBotsvānaBaltkrievijaBelizaKanādaKok" +
+ "osu jeb Kīlinga salasKongo-KinšasaCentrālāfrikas RepublikaKongo - Brazav" +
+ "ilaŠveiceKotdivuāraKuka salasČīleKamerūnaĶīnaKolumbijaKlipertona salaKos" +
+ "tarikaKubaKaboverdeKirasaoZiemsvētku salaKipraČehijaVācijaDjego Garsijas" +
+ " atolsDžibutijaDānijaDominikaDominikānaAlžīrijaSeūta un MeliljaEkvadoraI" +
+ "gaunijaĒģipteRietumsahāraEritrejaSpānijaEtiopijaEiropas SavienībaSomijaF" +
+ "idžiFolklenda salasMikronēzijaFēru SalasFrancijaGabonaLielbritānijaGrenā" +
+ "daGruzijaFranču GviānaGērnsijaGanaGibraltārsGrenlandeGambijaGvinejaGvade" +
+ "lupaEkvatoriālā GvinejaGrieķijaDienviddžordžija un Dienvidsendviču salas" +
+ "GvatemalaGuamaGvineja-BisavaGajānaĶīnas īpašās pārvaldes apgabals Honkon" +
+ "gaHērda un Makdonalda salasHondurasaHorvātijaHaitiUngārijaKanāriju salas" +
+ "IndonēzijaĪrijaIzraēlaMenaIndijaIndijas okeāna Britu teritorijaIrākaIrān" +
+ "aĪslandeItālijaDžērsijaJamaikaJordānijaJapānaKenijaKirgizstānaKambodžaKi" +
+ "ribatiKomoru salasSentkitsa un NevisaZiemeļkorejaDienvidkorejaKuveitaKai" +
+ "manu salasKazahstānaLaosaLibānaSentlūsijaLihtenšteinaŠrilankaLibērijaLes" +
+ "otoLietuvaLuksemburgaLatvijaLībijaMarokaMonakoMoldovaMelnkalneSenmartēna" +
+ "MadagaskaraMāršala salasMaķedonijaMaliMjanma (Birma)MongolijaĶīnas īpašā" +
+ "s pārvaldes apgabals MakaoZiemeļu Marianas salasMartinikaMauritānijaMont" +
+ "serrataMaltaMaurīcijaMaldīvijaMalāvijaMeksikaMalaizijaMozambikaNamībijaJ" +
+ "aunkaledonijaNigēraNorfolkas salaNigērijaNikaragvaNīderlandeNorvēģijaNep" +
+ "ālaNauruNiueJaunzēlandeOmānaPanamaPeruFranču PolinēzijaPapua-Jaungvinej" +
+ "aFilipīnasPakistānaPolijaSenpjēra un MikelonaPitkērnaPuertorikoPalestīna" +
+ "PortugālePalauParagvajaKataraOkeānijas attālās salasReinjonaRumānijaSerb" +
+ "ijaKrievijaRuandaSaūda ArābijaZālamana salasŠeišelu salasSudānaZviedrija" +
+ "SingapūraSv.Helēnas salaSlovēnijaSvalbāra un Jana Majena salaSlovākijaSj" +
+ "erraleoneSanmarīnoSenegālaSomālijaSurinamaDienvidsudānaSantome un Prinsi" +
+ "piSalvadoraSintmārtenaSīrijaSvazilendaTristana da Kuņas salasTērksas un " +
+ "Kaikosas salasČadaFrancijas Dienvidjūru ZemesTogoTaizemeTadžikistānaToke" +
+ "lauAustrumtimoraTurkmenistānaTunisijaTongaTurcijaTrinidāda un TobāgoTuva" +
+ "luTaivānaTanzānijaUkrainaUgandaASV Aizjūras salasAmerikas Savienotās Val" +
+ "stisUrugvajaUzbekistānaVatikānsSentvinsenta un GrenadīnasVenecuēlaBritu " +
+ "VirdžīnasASV VirdžīnasVjetnamaVanuatuVolisa un FutunaSamoaKosovaJemenaMa" +
+ "jotaDienvidāfrikas RepublikaZambijaZimbabvenezināms reģionspasauleĀfrika" +
+ "ZiemeļamerikaDienvidamerikaOkeānijaRietumāfrikaCentrālamerikaAustrumāfri" +
+ "kaZiemeļāfrikaVidusāfrikaDienvidāfrikaAmerikaAmerikas ziemeļu daļaKarību" +
+ " jūras reģionsAustrumāzijaDienvidāzijaCentrālaustrumāzijaDienvideiropaAu" +
+ "strālāzijaMelanēzijaMikronēzijas reģionsPolinēzijaĀzijaCentrālāzijaRietu" +
+ "māzijaEiropaAustrumeiropaZiemeļeiropaRietumeiropaLatīņamerika"
+
+var lvRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0015, 0x001b, 0x0035, 0x0041, 0x0053, 0x005a, 0x0063,
+ 0x006c, 0x0081, 0x0087, 0x0091, 0x009b, 0x00ac, 0x00b4, 0x00bf,
+ 0x00c4, 0x00d1, 0x00df, 0x00f5, 0x00fe, 0x0109, 0x0112, 0x011d,
+ 0x0127, 0x012f, 0x0136, 0x013c, 0x0148, 0x0155, 0x015c, 0x0165,
+ 0x017f, 0x0189, 0x0195, 0x019c, 0x01a6, 0x01af, 0x01bb, 0x01c1,
+ 0x01c8, 0x01e1, 0x01ef, 0x0209, 0x021a, 0x0221, 0x022c, 0x0236,
+ 0x023c, 0x0245, 0x024b, 0x0254, 0x0263, 0x026c, 0x0270, 0x0279,
+ 0x0280, 0x0290, 0x0295, 0x029c, 0x02a3, 0x02b7, 0x02c1, 0x02c8,
+ // Entry 40 - 7F
+ 0x02d0, 0x02db, 0x02e5, 0x02f6, 0x02fe, 0x0306, 0x030e, 0x031b,
+ 0x0323, 0x032b, 0x0333, 0x0345, 0x034b, 0x0351, 0x0360, 0x036c,
+ 0x0377, 0x037f, 0x0385, 0x0393, 0x039b, 0x03a2, 0x03b1, 0x03ba,
+ 0x03be, 0x03c9, 0x03d2, 0x03d9, 0x03e0, 0x03e9, 0x03fe, 0x0407,
+ 0x0433, 0x043c, 0x0441, 0x044f, 0x0456, 0x0484, 0x049e, 0x04a7,
+ 0x04b1, 0x04b6, 0x04bf, 0x04ce, 0x04d9, 0x04df, 0x04e7, 0x04eb,
+ 0x04f1, 0x0511, 0x0517, 0x051d, 0x0525, 0x052d, 0x0537, 0x053e,
+ 0x0548, 0x054f, 0x0555, 0x0561, 0x056a, 0x0572, 0x057e, 0x0591,
+ // Entry 80 - BF
+ 0x059e, 0x05ab, 0x05b2, 0x05bf, 0x05ca, 0x05cf, 0x05d6, 0x05e1,
+ 0x05ee, 0x05f7, 0x0600, 0x0606, 0x060d, 0x0618, 0x061f, 0x0626,
+ 0x062c, 0x0632, 0x0639, 0x0642, 0x064d, 0x0658, 0x0667, 0x0672,
+ 0x0676, 0x0684, 0x068d, 0x06b8, 0x06cf, 0x06d8, 0x06e4, 0x06ef,
+ 0x06f4, 0x06fe, 0x0708, 0x0711, 0x0718, 0x0721, 0x072a, 0x0733,
+ 0x0741, 0x0748, 0x0756, 0x075f, 0x0768, 0x0773, 0x077e, 0x0785,
+ 0x078a, 0x078e, 0x079a, 0x07a0, 0x07a6, 0x07aa, 0x07bd, 0x07ce,
+ 0x07d8, 0x07e2, 0x07e8, 0x07fd, 0x0806, 0x0810, 0x081a, 0x0824,
+ // Entry C0 - FF
+ 0x0829, 0x0832, 0x0838, 0x0852, 0x085a, 0x0863, 0x086a, 0x0872,
+ 0x0878, 0x0887, 0x0896, 0x08a5, 0x08ac, 0x08b5, 0x08bf, 0x08cf,
+ 0x08d9, 0x08f6, 0x0900, 0x090b, 0x0915, 0x091e, 0x0927, 0x092f,
+ 0x093d, 0x0950, 0x0959, 0x0965, 0x096c, 0x0976, 0x098e, 0x09a8,
+ 0x09ad, 0x09c9, 0x09cd, 0x09d4, 0x09e2, 0x09e9, 0x09f6, 0x0a04,
+ 0x0a0c, 0x0a11, 0x0a18, 0x0a2d, 0x0a33, 0x0a3b, 0x0a45, 0x0a4c,
+ 0x0a52, 0x0a65, 0x0a81, 0x0a89, 0x0a95, 0x0a9e, 0x0ab9, 0x0ac3,
+ 0x0ad4, 0x0ae3, 0x0aeb, 0x0af2, 0x0b02, 0x0b07, 0x0b0d, 0x0b13,
+ // Entry 100 - 13F
+ 0x0b19, 0x0b32, 0x0b39, 0x0b41, 0x0b53, 0x0b5a, 0x0b61, 0x0b6f,
+ 0x0b7d, 0x0b86, 0x0b93, 0x0ba2, 0x0bb0, 0x0bbe, 0x0bca, 0x0bd8,
+ 0x0bdf, 0x0bf6, 0x0c0d, 0x0c1a, 0x0c27, 0x0c3c, 0x0c49, 0x0c57,
+ 0x0c62, 0x0c78, 0x0c83, 0x0c89, 0x0c97, 0x0ca3, 0x0ca9, 0x0cb6,
+ 0x0cc3, 0x0ccf, 0x0cdd,
+} // Size: 606 bytes
+
+var mkRegionStr string = "" + // Size: 6058 bytes
+ "Остров АсенсионАндораОбединети Арапски ЕмиратиАвганистанАнтигва и Барбуд" +
+ "аАнгвилаАлбанијаЕрменијаХоландски АнтилиАнголаАнтарктикАргентинаАмерика" +
+ "нска СамоаАвстријаАвстралијаАрубаОландски островиАзербејџанБосна и Херц" +
+ "еговинаБарбадосБангладешБелгијаБуркина ФасоБугаријаБахреинБурундиБенинС" +
+ "вети ВартоломејБермудиБрунејБоливијаКарипска ХоландијаБразилБахамиБутан" +
+ "Остров БувеБоцванаБелорусијаБелизеКанадаКокосови (Килиншки) ОстровиКонг" +
+ "о - КиншасаЦентралноафриканска РепубликаКонго - БразавилШвајцаријаБрего" +
+ "т на Слоновата КоскаКукови ОстровиЧилеКамерунКинаКолумбијаОстров Клипер" +
+ "тонКостарикаКубаЗелен ’РтКурасаоБожиќен ОстровКипарРепублика ЧешкаГерма" +
+ "нијаДиего ГарсијаЏибутиДанскаДоминикаДоминиканска РепубликаАлжирСеута и" +
+ " МелиљаЕквадорЕстонијаЕгипетЗападна СахараЕритрејаШпанијаЕтиопијаЕвропск" +
+ "а унијаФинскаФиџиФолкландски ОстровиМикронезијаФарски ОстровиФранцијаГа" +
+ "бонОбединето КралствоГренадаГрузијаФранцуска ГвајанаГернзиГанаГибралтар" +
+ "ГренландГамбијаГвинејаГвадалупеЕкваторска ГвинејаГрцијаЈужна Џорџија и " +
+ "Јужни Сендвички ОстровиГватемалаГвамГвинеја-БисауГвајанаХонг Конг С.А.Р" +
+ " КинаОстров Херд и Острови МакдоналдХондурасХрватскаХаитиУнгаријаКанарск" +
+ "и ОстровиИндонезијаИрскаИзраелОстров МанИндијаБританска Индоокеанска Те" +
+ "риторијаИракИранИсландИталијаЏерсиЈамајкаЈорданЈапонијаКенијаКиргистанК" +
+ "амбоџаКирибатиКоморски ОстровиСвети Кристофер и НевисСеверна КорејаЈужн" +
+ "а КорејаКувајтКајмански ОстровиКазахстанЛаосЛибанСвета ЛуцијаЛихтенштај" +
+ "нШри ЛанкаЛиберијаЛесотоЛитванијаЛуксембургЛатвијаЛибијаМарокоМонакоМол" +
+ "давијаЦрна ГораСент МартинМадагаскарМаршалски ОстровиМакедонијаМалиМјан" +
+ "мар (Бурма)МонголијаМакао С.А.Р КинаСеверни Маријански ОстровиМартиникМ" +
+ "авританијаМонсератМалтаМаврициусМалдивиМалавиМексикоМалезијаМозамбикНам" +
+ "ибијаНова КаледонијаНигерНорфолшки ОстровНигеријаНикарагваХоландијаНорв" +
+ "ешкаНепалНауруНиуеНов ЗеландОманПанамаПеруФранцуска ПолинезијаПапуа Нов" +
+ "а ГвинејаФилипиниПакистанПолскаСент Пјер и МикеланПиткернски ОстровиПор" +
+ "торикоПалестински територииПортугалијаПалауПарагвајКатарЗависни земји в" +
+ "о ОкеанијаРијунионРоманијаСрбијаРусијаРуандаСаудиска АрабијаСоломонски " +
+ "ОстровиСејшелиСуданШведскаСингапурСвета ЕленаСловенијаСвалбард и Жан Ме" +
+ "јенСловачкаСиера ЛеонеСан МариноСенегалСомалијаСуринамЈужен СуданСао То" +
+ "ме и ПринсипеЕл СалвадорСвети МартинСиријаСвазилендТристан да КуњаОстро" +
+ "ви Туркс и КајкосЧадФранцуски Јужни територииТогоТајландТаџикистанТокел" +
+ "ауИсточен Тимор (Тимор Лесте)ТуркменистанТунисТонгаТурцијаТринидад и То" +
+ "багоТувалуТајванТанзанијаУкраинаУгандаАмерикански територии во Пацифико" +
+ "тСоединети Американски ДржавиУругвајУзбекистанВатиканСвети Винсент и Гр" +
+ "енадинитеВенецуелаБритански Девствени ОстровиАмерикански Девствени Остр" +
+ "овиВиетнамВануатуВалис и ФутунаСамоаКосовоЈеменМајотЈужноафриканска Реп" +
+ "убликаЗамбијаЗимбабвеНепознат регионСветАфрикаСеверна АмерикаЈужна Амер" +
+ "икаОкеанијаЗападна АфрикаЦентрална АмерикаИсточна АфрикаСеверна АфрикаС" +
+ "редна АфрикаЈужна АфрикаАмерикиСеверна континентална АмерикаКарибиИсточ" +
+ "на АзијаЈужна АзијаЈугоисточна АзијаЈужна ЕвропаАвстралазијаМеланезијаМ" +
+ "икронезиски регионПолинезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсто" +
+ "чна ЕвропаСеверна ЕвропаЗападна ЕвропаЛатинска Америка"
+
+var mkRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab,
+ 0x00bb, 0x00da, 0x00e6, 0x00f8, 0x010a, 0x012b, 0x013b, 0x014f,
+ 0x0159, 0x0178, 0x018c, 0x01b0, 0x01c0, 0x01d2, 0x01e0, 0x01f7,
+ 0x0207, 0x0215, 0x0223, 0x022d, 0x024c, 0x025a, 0x0266, 0x0276,
+ 0x0299, 0x02a5, 0x02b1, 0x02bb, 0x02d0, 0x02de, 0x02f2, 0x02fe,
+ 0x030a, 0x033c, 0x0357, 0x0390, 0x03ad, 0x03c1, 0x03f0, 0x040b,
+ 0x0413, 0x0421, 0x0429, 0x043b, 0x045a, 0x046c, 0x0474, 0x0486,
+ 0x0494, 0x04af, 0x04b9, 0x04d6, 0x04e8, 0x0501, 0x050d, 0x0519,
+ // Entry 40 - 7F
+ 0x0529, 0x0554, 0x055e, 0x0578, 0x0586, 0x0596, 0x05a2, 0x05bd,
+ 0x05cd, 0x05db, 0x05eb, 0x0606, 0x0612, 0x061a, 0x063f, 0x0655,
+ 0x0670, 0x0680, 0x068a, 0x06ad, 0x06bb, 0x06c9, 0x06ea, 0x06f6,
+ 0x06fe, 0x0710, 0x0720, 0x072e, 0x073c, 0x074e, 0x0771, 0x077d,
+ 0x07c6, 0x07d8, 0x07e0, 0x07f9, 0x0807, 0x082a, 0x0864, 0x0874,
+ 0x0884, 0x088e, 0x089e, 0x08bd, 0x08d1, 0x08db, 0x08e7, 0x08fa,
+ 0x0906, 0x0946, 0x094e, 0x0956, 0x0962, 0x0970, 0x097a, 0x0988,
+ 0x0994, 0x09a4, 0x09b0, 0x09c2, 0x09d0, 0x09e0, 0x09ff, 0x0a2a,
+ // Entry 80 - BF
+ 0x0a45, 0x0a5c, 0x0a68, 0x0a89, 0x0a9b, 0x0aa3, 0x0aad, 0x0ac4,
+ 0x0ada, 0x0aeb, 0x0afb, 0x0b07, 0x0b19, 0x0b2d, 0x0b3b, 0x0b47,
+ 0x0b53, 0x0b5f, 0x0b71, 0x0b82, 0x0b97, 0x0bab, 0x0bcc, 0x0be0,
+ 0x0be8, 0x0c03, 0x0c15, 0x0c31, 0x0c63, 0x0c73, 0x0c89, 0x0c99,
+ 0x0ca3, 0x0cb5, 0x0cc3, 0x0ccf, 0x0cdd, 0x0ced, 0x0cfd, 0x0d0d,
+ 0x0d2a, 0x0d34, 0x0d53, 0x0d63, 0x0d75, 0x0d87, 0x0d97, 0x0da1,
+ 0x0dab, 0x0db3, 0x0dc6, 0x0dce, 0x0dda, 0x0de2, 0x0e09, 0x0e2b,
+ 0x0e3b, 0x0e4b, 0x0e57, 0x0e7a, 0x0e9d, 0x0eaf, 0x0ed8, 0x0eee,
+ // Entry C0 - FF
+ 0x0ef8, 0x0f08, 0x0f12, 0x0f41, 0x0f51, 0x0f61, 0x0f6d, 0x0f79,
+ 0x0f85, 0x0fa4, 0x0fc7, 0x0fd5, 0x0fdf, 0x0fed, 0x0ffd, 0x1012,
+ 0x1024, 0x1049, 0x1059, 0x106e, 0x1081, 0x108f, 0x109f, 0x10ad,
+ 0x10c2, 0x10e5, 0x10fa, 0x1111, 0x111d, 0x112f, 0x114b, 0x1174,
+ 0x117a, 0x11aa, 0x11b2, 0x11c0, 0x11d4, 0x11e2, 0x1213, 0x122b,
+ 0x1235, 0x123f, 0x124d, 0x126d, 0x1279, 0x1285, 0x1297, 0x12a5,
+ 0x12b1, 0x12f2, 0x1328, 0x1336, 0x134a, 0x1358, 0x138b, 0x139d,
+ 0x13d1, 0x1409, 0x1417, 0x1425, 0x143f, 0x1449, 0x1455, 0x145f,
+ // Entry 100 - 13F
+ 0x1469, 0x149a, 0x14a8, 0x14b8, 0x14d5, 0x14dd, 0x14e9, 0x1506,
+ 0x151f, 0x152f, 0x154a, 0x156b, 0x1586, 0x15a1, 0x15ba, 0x15d1,
+ 0x15df, 0x1617, 0x1623, 0x163c, 0x1651, 0x1672, 0x1689, 0x16a1,
+ 0x16b5, 0x16da, 0x16ee, 0x16f8, 0x1715, 0x172e, 0x173a, 0x1755,
+ 0x1770, 0x178b, 0x17aa,
+} // Size: 606 bytes
+
+var mlRegionStr string = "" + // Size: 9275 bytes
+ "അസൻഷൻ ദ്വീപ്അന്റോറയുണൈറ്റഡ് അറബ് എമിറൈറ്റ്\u200cസ്അഫ്\u200cഗാനിസ്ഥാൻആൻറി" +
+ "ഗ്വയും ബർബുഡയുംആൻഗ്വില്ലഅൽബേനിയഅർമേനിയനെതർലൻഡ്സ് ആൻറിലിസ്അംഗോളഅൻറാർട്ട" +
+ "ിക്കഅർജൻറീനഅമേരിക്കൻ സമോവഓസ്ട്രിയഓസ്\u200cട്രേലിയഅറൂബഅലൻഡ് ദ്വീപുകൾഅസർ" +
+ "ബൈജാൻബോസ്നിയയും ഹെർസഗോവിനയുംബാർബഡോസ്ബംഗ്ലാദേശ്ബെൽജിയംബുർക്കിനാ ഫാസോബൾഗ" +
+ "േറിയബഹ്റിൻബറുണ്ടിബെനിൻസെന്റ് ബാർത്തലമിബർമുഡബ്രൂണൈബൊളീവിയബൊണെയ്ർ, സിന്റ" +
+ "് യുസ്റ്റേഷ്യസ്, സാബ എന്നിവബ്രസീൽബഹാമാസ്ഭൂട്ടാൻബൗവെട്ട് ദ്വീപ്ബോട്സ്വാ" +
+ "നബെലറൂസ്ബെലീസ്കാനഡകോക്കസ് (കീലിംഗ്) ദ്വീപുകൾകോംഗോ - കിൻഷാസസെൻട്രൽ ആഫ്ര" +
+ "ിക്കൻ റിപ്പബ്ലിക്കോംഗോ - ബ്രാസവില്ലിസ്വിറ്റ്സർലാൻഡ്കോട്ട് ഡി വാർകുക്ക്" +
+ " ദ്വീപുകൾചിലികാമറൂൺചൈനകൊളംബിയക്ലിപ്പെർട്ടൻ ദ്വീപ്കോസ്റ്ററിക്കക്യൂബകേപ്പ്" +
+ " വെർദെകുറാകാവോക്രിസ്മസ് ദ്വീപ്സൈപ്രസ്ചെക്ക് റിപ്പബ്ലിക്ജർമനിഡീഗോ ഗ്രാഷ്യ" +
+ "ദിജിബൗട്ടിഡെൻമാർക്ക്ഡൊമിനിക്കഡൊമിനിക്കൻ റിപ്പബ്ലിക്അൾജീരിയസെയൂത്ത ആൻഡ്" +
+ " മെലിയഇക്വഡോർഎസ്റ്റോണിയ\u200dഈജിപ്ത്പശ്ചിമ സഹാറഎറിത്രിയസ്\u200cപെയിൻഎത്യ" +
+ "ോപ്യയൂറോപ്യൻ യൂണിയൻഫിൻലാൻഡ്ഫിജിഫാക്ക്\u200cലാന്റ് ദ്വീപുകൾമൈക്രോനേഷ്യഫ" +
+ "റോ ദ്വീപുകൾഫ്രാൻസ്ഗാബൺയുണൈറ്റഡ് കിംഗ്ഡംഗ്രനേഡജോർജ്ജിയഫ്രഞ്ച് ഗയാനഗേൺസി" +
+ "ഘാനജിബ്രാൾട്ടർഗ്രീൻലാൻറ്ഗാംബിയഗിനിയഗ്വാഡലൂപ്പ്ഇക്വറ്റോറിയൽ ഗിനിയഗ്രീസ്" +
+ "ദക്ഷിണ ജോർജ്ജിയയും ദക്ഷിണ സാൻഡ്\u200cവിച്ച് ദ്വീപുകളുംഗ്വാട്ടിമാലഗ്വാം" +
+ "ഗിനിയ-ബിസൗഗയാനഹോങ്കോങ്ങ് (SAR) ചൈനഹിയേർഡും മക്\u200cഡൊണാൾഡ് ദ്വീപുകളും" +
+ "ഹോണ്ടുറാസ്ക്രൊയേഷ്യഹെയ്തിഹംഗറികാനറി ദ്വീപുകൾഇന്തോനേഷ്യഅയർലാൻഡ്ഇസ്രായേൽ" +
+ "ഐൽ ഓഫ് മാൻഇന്ത്യബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാസമുദ്ര പ്രദേശംഇറാഖ്ഇറാൻഐസ്\u200c" +
+ "ലാന്റ്ഇറ്റലിജേഴ്സിജമൈക്കജോർദ്ദാൻജപ്പാൻകെനിയകിർഗിസ്ഥാൻകംബോഡിയകിരിബാട്ടി" +
+ "കോമൊറോസ്സെന്റ് കിറ്റ്\u200cസും നെവിസുംഉത്തരകൊറിയദക്ഷിണകൊറിയകുവൈറ്റ്കേമ" +
+ "ാൻ ദ്വീപുകൾകസാഖിസ്ഥാൻലാവോസ്ലെബനൻസെൻറ് ലൂസിയലിച്ചൺസ്റ്റൈൻശ്രീലങ്കലൈബീരി" +
+ "യലെസോതോലിത്വാനിയലക്സംബർഗ്ലാറ്റ്വിയലിബിയമൊറോക്കൊമൊണാക്കോമൾഡോവമോണ്ടെനെഗ്" +
+ "രോസെൻറ് മാർട്ടിൻമഡഗാസ്കർമാർഷൽ\u200d\u200d ദ്വീപുകൾമാസിഡോണിയമാലിമ്യാൻമാ" +
+ "ർ (ബർമ്മ)മംഗോളിയമക്കാവു (SAR) ചൈനഉത്തര മറിയാനാ ദ്വീപുകൾമാർട്ടിനിക്ക്മൗ" +
+ "റിറ്റാനിയമൊണ്ടെസരത്ത്മാൾട്ടമൗറീഷ്യസ്മാലിദ്വീപ്മലാവിമെക്സിക്കോമലേഷ്യമൊസ" +
+ "ാംബിക്ക്നമീബിയപുതിയ കാലിഡോണിയനൈജർനോർഫോക് ദ്വീപ്നൈജീരിയനിക്കരാഗ്വനെതർലാ" +
+ "ൻഡ്\u200cസ്നോർവെനേപ്പാൾനൗറുന്യൂയിന്യൂസിലാൻറ്ഒമാൻപനാമപെറുഫ്രഞ്ച് പോളിനേ" +
+ "ഷ്യപാപ്പുവ ന്യൂ ഗിനിയഫിലിപ്പൈൻസ്പാക്കിസ്ഥാൻപോളണ്ട്സെന്റ് പിയറിയും മിക്" +
+ "കലണുംപിറ്റ്\u200cകെയ്\u200cൻ ദ്വീപുകൾപ്യൂർട്ടോ റിക്കോപാലസ്\u200cതീൻ പ്" +
+ "രദേശങ്ങൾപോർച്ചുഗൽപലാവുപരാഗ്വേഖത്തർദ്വീപസമൂഹംറീയൂണിയൻറൊമാനിയസെർബിയറഷ്യറ" +
+ "ുവാണ്ടസൗദി അറേബ്യസോളമൻ\u200d ദ്വീപുകൾസെയ്\u200cഷെൽസ്സുഡാൻസ്വീഡൻസിംഗപ്പ" +
+ "ുർസെൻറ് ഹെലീനസ്ലോവേനിയസ്വാൽബാഡും ജാൻ മായേനുംസ്ലോവാക്യസിയെറ ലിയോൺസാൻ മറ" +
+ "ിനോസെനഗൽസോമാലിയസുരിനെയിംദക്ഷിണ സുഡാൻസാവോ ടോമും പ്രിൻസിപെയുംഎൽ സാൽവദോർസ" +
+ "ിന്റ് മാർട്ടെൻസിറിയസ്വാസിലാൻറ്ട്രസ്റ്റൻ ഡ കൂനടർക്ക്\u200cസും കെയ്" +
+ "\u200cക്കോ ദ്വീപുകളുംഛാഡ്ഫ്രഞ്ച് ദക്ഷിണ ഭൂപ്രദേശംടോഗോതായ്\u200cലാൻഡ്താജി" +
+ "ക്കിസ്ഥാൻടോക്കെലൂതിമോർ-ലെസ്റ്റെതുർക്ക്മെനിസ്ഥാൻടുണീഷ്യടോംഗതുർക്കിട്രിന" +
+ "ിഡാഡും ടുബാഗോയുംടുവാലുതായ്\u200cവാൻടാൻസാനിയഉക്രെയ്\u200cൻഉഗാണ്ടയു.എസ്." +
+ " ദ്വീപസമൂഹങ്ങൾഅമേരിക്കൻ ഐക്യനാടുകൾഉറുഗ്വേഉസ്\u200cബെക്കിസ്ഥാൻവത്തിക്കാൻസ" +
+ "െന്റ് വിൻസെന്റും ഗ്രനെഡൈൻസുംവെനിസ്വേലബ്രിട്ടീഷ് വെർജിൻ ദ്വീപുകൾയു.എസ്." +
+ " വെർജിൻ ദ്വീപുകൾവിയറ്റ്നാംവന്വാതുവാലിസ് ആന്റ് ഫ്യൂച്യുനസമോവകൊസോവൊയെമൻമയോ" +
+ "ട്ടിദക്ഷിണാഫ്രിക്കസാംബിയസിംബാബ്\u200cവേഅജ്ഞാത പ്രദേശംലോകംആഫ്രിക്കവടക്ക" +
+ "േ അമേരിക്കതെക്കേ അമേരിക്കഓഷ്യാനിയപശ്ചിമ ആഫ്രിക്കമദ്ധ്യഅമേരിക്കകിഴക്കൻ " +
+ "ആഫ്രിക്കഉത്തരാഫ്രിക്കമദ്ധ്യആഫ്രിക്കതെക്കേ ആഫ്രിക്കഅമേരിക്കകൾവടക്കൻ അമേ" +
+ "രിക്കകരീബിയൻകിഴക്കൻ ഏഷ്യതെക്കേ ഏഷ്യതെക്ക്-കിഴക്കൻ ഏഷ്യതെക്കേ യൂറോപ്പ്ഓ" +
+ "സ്\u200cട്രേലിയയും ന്യൂസിലാൻഡുംമെലനേഷ്യമൈക്രോനേഷ്യൻ പ്രദേശംപോളിനേഷ്യഏഷ" +
+ "്യമദ്ധ്യേഷ്യപശ്ചിമേഷ്യയൂറോപ്പ്കിഴക്കൻ യൂറോപ്പ്വടക്കേ യൂറോപ്പ്പശ്ചിമ യൂ" +
+ "റോപ്പ്ലാറ്റിനമേരിക്ക"
+
+var mlRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0022, 0x0034, 0x0081, 0x00a8, 0x00df, 0x00fa, 0x010f,
+ 0x0124, 0x015b, 0x016a, 0x018e, 0x01a3, 0x01cb, 0x01e3, 0x0204,
+ 0x0210, 0x0238, 0x0250, 0x0293, 0x02ab, 0x02c9, 0x02de, 0x0306,
+ 0x031b, 0x032d, 0x0342, 0x0351, 0x037f, 0x038e, 0x03a0, 0x03b5,
+ 0x0424, 0x0436, 0x044b, 0x0460, 0x048b, 0x04a6, 0x04bb, 0x04cd,
+ 0x04d9, 0x051f, 0x0543, 0x0596, 0x05c9, 0x05f6, 0x0619, 0x0644,
+ 0x0650, 0x0662, 0x066b, 0x0680, 0x06ba, 0x06de, 0x06ed, 0x070f,
+ 0x0727, 0x0755, 0x076a, 0x079e, 0x07ad, 0x07cf, 0x07ed, 0x080b,
+ // Entry 40 - 7F
+ 0x0826, 0x0866, 0x087b, 0x08ad, 0x08c2, 0x08e3, 0x08f8, 0x0917,
+ 0x092f, 0x0947, 0x095f, 0x098a, 0x09a2, 0x09ae, 0x09ee, 0x0a0f,
+ 0x0a31, 0x0a46, 0x0a52, 0x0a83, 0x0a95, 0x0aad, 0x0acf, 0x0ade,
+ 0x0ae7, 0x0b08, 0x0b26, 0x0b38, 0x0b47, 0x0b68, 0x0b9c, 0x0bae,
+ 0x0c39, 0x0c5a, 0x0c69, 0x0c85, 0x0c91, 0x0cbf, 0x0d18, 0x0d36,
+ 0x0d51, 0x0d63, 0x0d72, 0x0d9a, 0x0db8, 0x0dd0, 0x0de8, 0x0e02,
+ 0x0e14, 0x0e7a, 0x0e89, 0x0e95, 0x0eb3, 0x0ec5, 0x0ed7, 0x0ee9,
+ 0x0f01, 0x0f13, 0x0f22, 0x0f40, 0x0f55, 0x0f73, 0x0f8b, 0x0fd2,
+ // Entry 80 - BF
+ 0x0ff0, 0x1011, 0x1029, 0x1051, 0x106f, 0x1081, 0x1090, 0x10af,
+ 0x10d6, 0x10ee, 0x1103, 0x1115, 0x1130, 0x114b, 0x1166, 0x1175,
+ 0x118d, 0x11a5, 0x11b4, 0x11d8, 0x1200, 0x1218, 0x1246, 0x1261,
+ 0x126d, 0x1297, 0x12ac, 0x12d1, 0x130f, 0x1336, 0x1357, 0x137b,
+ 0x138d, 0x13a8, 0x13c6, 0x13d5, 0x13f3, 0x1405, 0x1426, 0x1438,
+ 0x1463, 0x146f, 0x1497, 0x14ac, 0x14ca, 0x14ee, 0x14fd, 0x1512,
+ 0x151e, 0x1530, 0x1551, 0x155d, 0x1569, 0x1575, 0x15a6, 0x15d8,
+ 0x15f9, 0x161a, 0x162f, 0x1676, 0x16b6, 0x16e4, 0x171e, 0x1739,
+ // Entry C0 - FF
+ 0x1748, 0x175d, 0x176c, 0x178a, 0x17a2, 0x17b7, 0x17c9, 0x17d5,
+ 0x17ea, 0x1809, 0x1834, 0x1852, 0x1861, 0x1873, 0x188e, 0x18ad,
+ 0x18c8, 0x1906, 0x1921, 0x1940, 0x1959, 0x1968, 0x197d, 0x1998,
+ 0x19ba, 0x19fb, 0x1a17, 0x1a42, 0x1a51, 0x1a72, 0x1a9b, 0x1af4,
+ 0x1b00, 0x1b44, 0x1b50, 0x1b6e, 0x1b95, 0x1bad, 0x1bd5, 0x1c05,
+ 0x1c1a, 0x1c26, 0x1c3b, 0x1c78, 0x1c8a, 0x1ca2, 0x1cba, 0x1cd5,
+ 0x1ce7, 0x1d20, 0x1d5a, 0x1d6f, 0x1d9c, 0x1dba, 0x1e0d, 0x1e28,
+ 0x1e72, 0x1eaf, 0x1ecd, 0x1ee2, 0x1f20, 0x1f2c, 0x1f3e, 0x1f4a,
+ // Entry 100 - 13F
+ 0x1f5f, 0x1f89, 0x1f9b, 0x1fb9, 0x1fe1, 0x1fed, 0x2005, 0x2030,
+ 0x205b, 0x2073, 0x209e, 0x20c8, 0x20f6, 0x211d, 0x2147, 0x2172,
+ 0x2190, 0x21bb, 0x21d0, 0x21f2, 0x2211, 0x2246, 0x2271, 0x22c0,
+ 0x22d8, 0x2312, 0x232d, 0x2339, 0x2357, 0x2375, 0x238d, 0x23bb,
+ 0x23e6, 0x2411, 0x243b,
+} // Size: 606 bytes
+
+var mnRegionStr string = "" + // Size: 5487 bytes
+ "Аскенсион АралАндорраАрабын Нэгдсэн ЭмиратАфганистанАнтигуа ба БарбудаАн" +
+ "гилаАлбаниАрменАнголАнтарктикАргентинАмерикийн СамоаАвстриАвстралиАруба" +
+ "Аландын АрлуудАзербайжанБосни ХерцеговинБарбадосБангладешБелгиБуркина ф" +
+ "асоБолгарБахрейнБурундиБенинСент БартельмиБермудБрунейБоливиКарибын Нид" +
+ "ерландБразилБагамБутанБуветын АрлуудБотсванаБеларусБелизКанадКокос (Кий" +
+ "линг) АрлуудКонго-КиншасаТөв Африкийн Бүгд Найрамдах УлсКонго Браззавил" +
+ "ьШвейцариКот д’ИвуарКүүкийн АрлуудЧилиКамерунХятадКолумбКлиппертон Арал" +
+ "Коста РикаКубаКапе ВердеКуракаоЗул Сарын АралКипрБүгд Найрамдах Чех Улс" +
+ "ГерманДиего ГарсиаДжибутиДаниДоминикБүгд Найрамдах ДоминиканАлжирСеута " +
+ "ба МелильяЭквадорЭстонЕгипетБаруун СахарЭритриИспаниЭтиопЕвропын Холбоо" +
+ "ФинландФижиФолькландын АрлуудМикронезиФароэ АрлуудФранцГабонИх БританиГ" +
+ "ренадаГүржФранцын ГайанаГернсиГанаГибралтарГренландГамбиГвинейГваделупЭ" +
+ "кваторын ГвинейГрекӨмнөд Жоржиа ба Өмнөд Сэндвичийн АрлуудГватемалГуамГ" +
+ "виней-БисауГайанаБНХАУ-ын Тусгай захиргааны бүс Хонг КонгХэрд болон Мак" +
+ "доналд АрлуудГондурасХорватГаитиУнгарКанарын арлуудИндонезиИрландИзраил" +
+ "ьМэн АралЭнэтхэгБританийн харьяа Энэтхэгийн далай дахь нутаг дэвсгэрүүд" +
+ "ИракИранИсландИталиЖерсиЯмайкЙорданЯпонКениКыргызстанКамбожКирибатиКомо" +
+ "росСент-Киттс ба НевисХойд СолонгосӨмнөд СолонгосКувейтКайманы АрлуудКа" +
+ "захстанЛаосЛиванСент ЛюсиаЛихтенштейнШри ЛанкаЛибериЛесотоЛитваЛюксембу" +
+ "ргЛатвиЛивиМароккоМонакоМолдавМонтенегроСент-МартинМадагаскарМаршаллын " +
+ "АрлуудМакедонМалиМьянмар (Бурма)МонголБНХАУ-ын Тусгай захиргааны бүс Ма" +
+ "каоХойд Марианы АрлуудМартиникМавританиМонтсерратМальтаМавритусМальдивМ" +
+ "алавиМексикМалайзМозамбикНамибиШинэ КаледониНигерНорфолк АрлуудНигериНи" +
+ "карагуаНидерландНорвегиБалбаНауруНиуэШинэ ЗеландОманПанамПеруФранцын По" +
+ "линезПапуа Шинэ ГвинейФилиппинПакистанПольшСэнт Пьер ба МикелонПиткэрн " +
+ "АрлуудПуэрто РикоПалестины нутаг дэвсгэрүүдПортугалПалауПарагвайКатарНо" +
+ "мхон далайг тойрсон улс орнуудРеюньонРумынСербиОросРуандаСаудын АрабСол" +
+ "омоны АрлуудСейшелСуданШведСингапурСент ХеленаСловениСвалбард ба Ян Май" +
+ "енСловакСьерра-ЛеонеСан-МариноСенегалСомалиСуринамӨмнөд СуданСан-Томе б" +
+ "а ПринсипиЭль СальвадорСинт МартенСириСвазиландТристан да КуньяТурк ба " +
+ "Кайкосын АрлуудЧадФранцын өмнөд газар нутагТогоТайландТажикистанТокелау" +
+ "Тимор-ЛестеТуркменистанТунисТонгаТуркТринидад ба ТобагоТувалуТайванТанз" +
+ "аниУкрайнУгандаАНУ-ын тойрсон арлуудАмерикийн Нэгдсэн УлсУругвайУзбекис" +
+ "танВатикан хот улсСэнт Винсэнт ба ГренадинВенесуэлБританийн Виржиний Ар" +
+ "луудАНУ-ын Виржиний АрлуудВьетнамВануатуУоллис ба ФутунаСамоаКосовоЙеме" +
+ "нМайоттеӨмнөд Африк тивЗамбиЗимбабвеТодорхойгүйДэлхийАфрикХойд АмерикӨм" +
+ "нөд АмерикНомхон далайн орнуудБаруун АфрикТөв АмерикЗүүн АфрикХойд Афри" +
+ "кТөв АфрикӨмнөд АфрикАмерикХойд Америк тивКарибынЗүүн АзиӨмнөд АзиЗүүн " +
+ "Өмнөд АзиӨмнөд ЕвропАвстралиазиМеланезиМикронезийн бүсПолинезАзиТөв Ази" +
+ "Баруун АзиЕвропЗүүн ЕвропХойд ЕвропБаруун ЕвропЛатин Америк"
+
+var mnRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001b, 0x0029, 0x0051, 0x0065, 0x0087, 0x0093, 0x009f,
+ 0x00a9, 0x00a9, 0x00b3, 0x00c5, 0x00d5, 0x00f2, 0x00fe, 0x010e,
+ 0x0118, 0x0133, 0x0147, 0x0166, 0x0176, 0x0188, 0x0192, 0x01a9,
+ 0x01b5, 0x01c3, 0x01d1, 0x01db, 0x01f6, 0x0202, 0x020e, 0x021a,
+ 0x023b, 0x0247, 0x0251, 0x025b, 0x0276, 0x0286, 0x0294, 0x029e,
+ 0x02a8, 0x02d0, 0x02e9, 0x0323, 0x0342, 0x0352, 0x0368, 0x0383,
+ 0x038b, 0x0399, 0x03a3, 0x03af, 0x03cc, 0x03df, 0x03e7, 0x03fa,
+ 0x0408, 0x0422, 0x042a, 0x0453, 0x045f, 0x0476, 0x0484, 0x048c,
+ // Entry 40 - 7F
+ 0x049a, 0x04c8, 0x04d2, 0x04f0, 0x04fe, 0x0508, 0x0514, 0x052b,
+ 0x0537, 0x0543, 0x054d, 0x0568, 0x0576, 0x057e, 0x05a1, 0x05b3,
+ 0x05ca, 0x05d4, 0x05de, 0x05f1, 0x05ff, 0x0607, 0x0622, 0x062e,
+ 0x0636, 0x0648, 0x0658, 0x0662, 0x066e, 0x067e, 0x069d, 0x06a5,
+ 0x06ee, 0x06fe, 0x0706, 0x071d, 0x0729, 0x0773, 0x07a6, 0x07b6,
+ 0x07c2, 0x07cc, 0x07d6, 0x07f1, 0x0801, 0x080d, 0x081b, 0x082a,
+ 0x0838, 0x08a0, 0x08a8, 0x08b0, 0x08bc, 0x08c6, 0x08d0, 0x08da,
+ 0x08e6, 0x08ee, 0x08f6, 0x090a, 0x0916, 0x0926, 0x0934, 0x0957,
+ // Entry 80 - BF
+ 0x0970, 0x098b, 0x0997, 0x09b2, 0x09c4, 0x09cc, 0x09d6, 0x09e9,
+ 0x09ff, 0x0a10, 0x0a1c, 0x0a28, 0x0a32, 0x0a46, 0x0a50, 0x0a58,
+ 0x0a66, 0x0a72, 0x0a7e, 0x0a92, 0x0aa7, 0x0abb, 0x0ada, 0x0ae8,
+ 0x0af0, 0x0b0b, 0x0b17, 0x0b5a, 0x0b7e, 0x0b8e, 0x0ba0, 0x0bb4,
+ 0x0bc0, 0x0bd0, 0x0bde, 0x0bea, 0x0bf6, 0x0c02, 0x0c12, 0x0c1e,
+ 0x0c37, 0x0c41, 0x0c5c, 0x0c68, 0x0c7a, 0x0c8c, 0x0c9a, 0x0ca4,
+ 0x0cae, 0x0cb6, 0x0ccb, 0x0cd3, 0x0cdd, 0x0ce5, 0x0d02, 0x0d22,
+ 0x0d32, 0x0d42, 0x0d4c, 0x0d71, 0x0d8c, 0x0da1, 0x0dd3, 0x0de3,
+ // Entry C0 - FF
+ 0x0ded, 0x0dfd, 0x0e07, 0x0e43, 0x0e51, 0x0e5b, 0x0e65, 0x0e6d,
+ 0x0e79, 0x0e8e, 0x0eab, 0x0eb7, 0x0ec1, 0x0ec9, 0x0ed9, 0x0eee,
+ 0x0efc, 0x0f21, 0x0f2d, 0x0f44, 0x0f57, 0x0f65, 0x0f71, 0x0f7f,
+ 0x0f94, 0x0fb9, 0x0fd2, 0x0fe7, 0x0fef, 0x1001, 0x101f, 0x104a,
+ 0x1050, 0x107f, 0x1087, 0x1095, 0x10a9, 0x10b7, 0x10cc, 0x10e4,
+ 0x10ee, 0x10f8, 0x1100, 0x1122, 0x112e, 0x113a, 0x1148, 0x1154,
+ 0x1160, 0x1187, 0x11af, 0x11bd, 0x11d1, 0x11ed, 0x121a, 0x122a,
+ 0x125a, 0x1283, 0x1291, 0x129f, 0x12bd, 0x12c7, 0x12d3, 0x12dd,
+ // Entry 100 - 13F
+ 0x12eb, 0x1307, 0x1311, 0x1321, 0x1337, 0x1343, 0x134d, 0x1362,
+ 0x1379, 0x139f, 0x13b6, 0x13c9, 0x13dc, 0x13ef, 0x1400, 0x1415,
+ 0x1421, 0x143d, 0x144b, 0x145a, 0x146b, 0x1485, 0x149a, 0x14b0,
+ 0x14c0, 0x14dd, 0x14eb, 0x14f1, 0x14fe, 0x1511, 0x151b, 0x152e,
+ 0x1541, 0x1558, 0x156f,
+} // Size: 606 bytes
+
+var mrRegionStr string = "" + // Size: 8490 bytes
+ "अ\u200dॅसेन्शियन बेटअँडोरासंयुक्त अरब अमीरातअफगाणिस्तानअँटिग्वा आणि बर्ब" +
+ "ुडाअँग्विलाअल्बानियाअर्मेनियानेदरलँड्\u200dस अँ\u200dटिल्सअंगोलाअंटार्" +
+ "क्टिकाअर्जेंटिनाअमेरिकन सामोआऑस्ट्रियाऑस्ट्रेलियाअरुबाअ\u200dॅलँड बेटे" +
+ "अझरबैजानबोस्निया अणि हर्जेगोविनाबार्बाडोसबांगलादेशबेल्जियमबुर्किना फास" +
+ "ोबल्गेरियाबहारीनबुरुंडीबेनिनसेंट बार्थेलेमीबर्मुडाब्रुनेईबोलिव्हियाकॅर" +
+ "िबियन नेदरलँड्सब्राझिलबहामाजभूतानबोउवेट बेटबोट्सवानाबेलारूसबलिझकॅनडाको" +
+ "कोस (कीलिंग) बेटेकाँगो - किंशासाकेंद्रीय अफ्रिकी प्रजासत्ताककाँगो - ब्" +
+ "राझाविलेस्वित्झर्लंडआयव्हरी कोस्टकुक बेटेचिलीकॅमेरूनचीनकोलम्बियाक्लिपर" +
+ "टोन बेटकोस्टा रिकाक्यूबाकेप व्हर्डेक्युरासाओख्रिसमस बेटसायप्रसझेक प्रज" +
+ "ासत्ताकजर्मनीदिएगो गार्सियाजिबौटीडेन्मार्कडोमिनिकाडोमिनिकन प्रजासत्ताक" +
+ "अल्जीरियास्यूटा आणि मेलिलाइक्वाडोरएस्टोनियाइजिप्तपश्चिम सहाराएरिट्रिया" +
+ "स्पेनइथिओपियायुरोपीय संघफिनलंडफिजीफॉकलंड बेटेमायक्रोनेशियाफेरो बेटेफ्र" +
+ "ान्सगॅबॉनयुनायटेड किंगडमग्रेनेडाजॉर्जियाफ्रेंच गयानाग्वेर्नसेघानाजिब्र" +
+ "ाल्टरग्रीनलंडगाम्बियागिनीग्वाडेलोउपेइक्वेटोरियल गिनीग्रीसदक्षिण जॉर्जि" +
+ "या आणि दक्षिण सँडविच बेटेग्वाटेमालागुआमगिनी-बिसाउगयानाहाँगकाँग एसएआर च" +
+ "ीनहर्ड आणि मॅक्डोनाल्ड बेटेहोंडुरासक्रोएशियाहैतीहंगेरीकॅनरी बेटेइंडोने" +
+ "शियाआयर्लंडइस्त्राइलइस्ले ऑफ मॅनभारतब्रिटिश हिंदी महासागर क्षेत्रइराकइ" +
+ "राणआइसलँडइटलीजर्सीजमैकाजॉर्डनजपानकेनियाकिरगिझस्तानकंबोडियाकिरीबाटीकोमो" +
+ "रोजसेंट किट्स आणि नेव्हिसउत्तर कोरियादक्षिण कोरियाकुवेतकेमन बेटेकझाकस्" +
+ "तानलाओसलेबनॉनसेंट ल्यूसियालिक्टेनस्टाइनश्रीलंकालायबेरियालेसोथोलिथुआनिय" +
+ "ालक्झेंबर्गलात्वियालिबियामोरोक्कोमोनॅकोमोल्डोव्हामोंटेनेग्रोसेंट मार्ट" +
+ "िनमादागास्करमार्शल बेटेमॅसेडोनियामालीम्यानमार (बर्मा)मंगोलियामकाओ एसएआ" +
+ "र चीनउत्तरी मारियाना बेटेमार्टिनिकमॉरिटानियामॉन्ट्सेराटमाल्टामॉरिशसमाल" +
+ "दीवमलावीमेक्सिकोमलेशियामोझाम्बिकनामिबियान्यू कॅलेडोनियानाइजरनॉरफॉक बेट" +
+ "नायजेरियानिकाराग्वानेदरलँडनॉर्वेनेपाळनाउरूनीयून्यूझीलंडओमानपनामापेरूफ्" +
+ "रेंच पॉलिनेशियापापुआ न्यू गिनीफिलिपिन्सपाकिस्तानपोलंडसेंट पियरे आणि मि" +
+ "क्वेलोनपिटकैर्न बेटेप्युएर्तो रिकोपॅलेस्टिनियन प्रदेशपोर्तुगालपलाऊपराग" +
+ "्वेकतारआउटलाईंग ओशनियारियुनियनरोमानियासर्बियारशियारवांडासौदी अरबसोलोमन" +
+ " बेटेसेशेल्ससुदानस्वीडनसिंगापूरसेंट हेलेनास्लोव्हेनियास्वालबर्ड आणि जान " +
+ "मायेनस्लोव्हाकियासिएरा लिओनसॅन मरीनोसेनेगलसोमालियासुरिनामदक्षिण सुदानस" +
+ "ाओ टोम आणि प्रिंसिपेअल साल्वाडोरसिंट मार्टेनसीरियास्वाझिलँडट्रिस्टन दा" +
+ " कुन्हाटर्क्स आणि कैकोस बेटेचाडफ्रेंच दाक्षिणात्य प्रदेशटोगोथायलंडताजिकि" +
+ "स्तानतोकेलाउपूर्व तिमोरतुर्कमेनिस्तानट्यूनिशियाटोंगातुर्कीत्रिनिदाद आण" +
+ "ि टोबॅगोटुवालुतैवानटांझानियायुक्रेनयुगांडायू.एस. आउटलाइंग बेटेयुनायटेड" +
+ " स्टेट्सउरुग्वेउझबेकिस्तानव्हॅटिकन सिटीसेंट व्हिन्सेंट आणि ग्रेनडाइन्सव्" +
+ "हेनेझुएलाब्रिटिश व्हर्जिन बेटेयू.एस. व्हर्जिन बेटेव्हिएतनामवानुआतुवालि" +
+ "स आणि फ्यूचूनासामोआकोसोव्होयेमेनमायोट्टेदक्षिण आफ्रिकाझाम्बियाझिम्बाब्" +
+ "वेअज्ञात प्रदेशविश्वआफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओशनियापश्चिम आफ्" +
+ "रिकामध्य अमेरिकापूर्व आफ्रिकाउत्तर आफ्रिकामध्य आफ्रिकादक्षिणी आफ्रिकाअ" +
+ "मेरिकाउत्तरी अमेरिकाकॅरीबियनपूर्व आशियादक्षिण आशियादक्षिण पूर्व आशियाद" +
+ "क्षिण युरोपऑस्\u200dट्रेलेशियामेलानेशियामायक्रोनेशियन प्रदेशपॉलिनेशिया" +
+ "अशियामध्य आशियापश्चिम आशियायुरोपपूर्व युरोपउत्तर युरोपपश्चिम युरोपलॅटि" +
+ "न अमेरिका"
+
+var mrRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x002b, 0x003d, 0x006f, 0x0090, 0x00c8, 0x00e0, 0x00fb,
+ 0x0116, 0x014d, 0x015f, 0x0183, 0x01a1, 0x01c6, 0x01e1, 0x0202,
+ 0x0211, 0x0230, 0x0248, 0x028c, 0x02a7, 0x02c2, 0x02da, 0x02ff,
+ 0x031a, 0x032c, 0x0341, 0x0350, 0x037b, 0x0390, 0x03a5, 0x03c3,
+ 0x03f7, 0x040c, 0x041e, 0x042d, 0x0449, 0x0464, 0x0479, 0x0485,
+ 0x0494, 0x04c5, 0x04ec, 0x053c, 0x056c, 0x0590, 0x05b5, 0x05cb,
+ 0x05d7, 0x05ec, 0x05f5, 0x0610, 0x0635, 0x0654, 0x0666, 0x0685,
+ 0x06a0, 0x06bf, 0x06d4, 0x06ff, 0x0711, 0x0739, 0x074b, 0x0766,
+ // Entry 40 - 7F
+ 0x077e, 0x07b8, 0x07d3, 0x0802, 0x081a, 0x0835, 0x0847, 0x0869,
+ 0x0884, 0x0893, 0x08ab, 0x08ca, 0x08dc, 0x08e8, 0x0907, 0x092e,
+ 0x0947, 0x095c, 0x096b, 0x0996, 0x09ae, 0x09c6, 0x09e8, 0x0a03,
+ 0x0a0f, 0x0a2d, 0x0a45, 0x0a5d, 0x0a69, 0x0a8a, 0x0ab8, 0x0ac7,
+ 0x0b2f, 0x0b4d, 0x0b59, 0x0b75, 0x0b84, 0x0bb6, 0x0bfb, 0x0c13,
+ 0x0c2e, 0x0c3a, 0x0c4c, 0x0c68, 0x0c86, 0x0c9b, 0x0cb6, 0x0cd6,
+ 0x0ce2, 0x0d33, 0x0d3f, 0x0d4b, 0x0d5d, 0x0d69, 0x0d78, 0x0d87,
+ 0x0d99, 0x0da5, 0x0db7, 0x0dd8, 0x0df0, 0x0e08, 0x0e1d, 0x0e59,
+ // Entry 80 - BF
+ 0x0e7b, 0x0ea0, 0x0eaf, 0x0ec8, 0x0ee3, 0x0eef, 0x0f01, 0x0f26,
+ 0x0f4d, 0x0f65, 0x0f80, 0x0f92, 0x0fad, 0x0fcb, 0x0fe3, 0x0ff5,
+ 0x100d, 0x101f, 0x103d, 0x105e, 0x1080, 0x109e, 0x10bd, 0x10db,
+ 0x10e7, 0x1111, 0x1129, 0x114f, 0x1187, 0x11a2, 0x11c0, 0x11e1,
+ 0x11f3, 0x1205, 0x1217, 0x1226, 0x123e, 0x1253, 0x126e, 0x1286,
+ 0x12b1, 0x12c0, 0x12dc, 0x12f7, 0x1315, 0x132a, 0x133c, 0x134b,
+ 0x135a, 0x1366, 0x1381, 0x138d, 0x139c, 0x13a8, 0x13d9, 0x1402,
+ 0x141d, 0x1438, 0x1447, 0x1489, 0x14ae, 0x14d6, 0x150d, 0x1528,
+ // Entry C0 - FF
+ 0x1534, 0x1549, 0x1555, 0x1580, 0x1598, 0x15b0, 0x15c5, 0x15d4,
+ 0x15e6, 0x15fc, 0x161b, 0x1630, 0x163f, 0x1651, 0x1669, 0x1688,
+ 0x16ac, 0x16eb, 0x170f, 0x172b, 0x1744, 0x1756, 0x176e, 0x1783,
+ 0x17a5, 0x17de, 0x1800, 0x1822, 0x1834, 0x184f, 0x1881, 0x18ba,
+ 0x18c3, 0x190a, 0x1916, 0x1928, 0x1949, 0x195e, 0x197d, 0x19a7,
+ 0x19c5, 0x19d4, 0x19e6, 0x1a1e, 0x1a30, 0x1a3f, 0x1a5a, 0x1a6f,
+ 0x1a84, 0x1ab8, 0x1ae6, 0x1afb, 0x1b1c, 0x1b41, 0x1b98, 0x1bb9,
+ 0x1bf4, 0x1c28, 0x1c43, 0x1c58, 0x1c8a, 0x1c99, 0x1cb1, 0x1cc0,
+ // Entry 100 - 13F
+ 0x1cd8, 0x1d00, 0x1d18, 0x1d36, 0x1d5b, 0x1d6a, 0x1d7f, 0x1da4,
+ 0x1dcc, 0x1dde, 0x1e06, 0x1e28, 0x1e4d, 0x1e72, 0x1e94, 0x1ebf,
+ 0x1ed4, 0x1efc, 0x1f14, 0x1f33, 0x1f55, 0x1f87, 0x1fa9, 0x1fd3,
+ 0x1ff1, 0x202b, 0x2049, 0x2058, 0x2074, 0x2096, 0x20a5, 0x20c4,
+ 0x20e3, 0x2105, 0x212a,
+} // Size: 606 bytes
+
+var msRegionStr string = "" + // Size: 2966 bytes
+ "Pulau AscensionAndorraEmiriah Arab BersatuAfghanistanAntigua dan Barbuda" +
+ "AnguillaAlbaniaArmeniaNetherlands AntillesAngolaAntartikaArgentinaSamoa " +
+ "AmerikaAustriaAustraliaArubaKepulauan AlandAzerbaijanBosnia dan Herzegov" +
+ "inaBarbadosBangladeshBelgiumBurkina FasoBulgariaBahrainBurundiBeninSaint" +
+ " BarthélemyBermudaBruneiBoliviaBelanda CaribbeanBrazilBahamasBhutanPulau" +
+ " BouvetBotswanaBelarusBelizeKanadaKepulauan Cocos (Keeling)Congo - Kinsh" +
+ "asaRepublik Afrika TengahCongo - BrazzavilleSwitzerlandCote d’IvoireKepu" +
+ "lauan CookChileCameroonChinaColombiaPulau ClippertonCosta RicaCubaCape V" +
+ "erdeCuracaoPulau KrismasCyprusRepublik CzechJermanDiego GarciaDjiboutiDe" +
+ "nmarkDominicaRepublik DominicaAlgeriaCeuta dan MelillaEcuadorEstoniaMesi" +
+ "rSahara BaratEritreaSepanyolEthiopiaKesatuan EropahFinlandFijiKepulauan " +
+ "FalklandMicronesiaKepulauan FaroePerancisGabonUnited KingdomGrenadaGeorg" +
+ "iaGuiana PerancisGuernseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupeGu" +
+ "inea KhatulistiwaGreeceKepulauan Georgia Selatan & Sandwich SelatanGuate" +
+ "malaGuamGuinea BissauGuyanaHong Kong SAR ChinaKepulauan Heard & McDonald" +
+ "HondurasCroatiaHaitiHungaryKepulauan CanaryIndonesiaIrelandIsraelIsle of" +
+ " ManIndiaWilayah Lautan Hindi BritishIraqIranIcelandItaliJerseyJamaicaJo" +
+ "rdanJepunKenyaKyrgyzstanKembojaKiribatiComorosSaint Kitts dan NevisKorea" +
+ " UtaraKorea SelatanKuwaitKepulauan CaymanKazakhstanLaosLubnanSaint Lucia" +
+ "LiechtensteinSri LankaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMaghri" +
+ "biMonacoMoldovaMontenegroSaint MartinMadagaskarKepulauan MarshallMacedon" +
+ "iaMaliMyanmar (Burma)MongoliaMacau SAR ChinaKepulauan Mariana UtaraMarti" +
+ "niqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMozam" +
+ "biqueNamibiaNew CaledoniaNigerPulau NorfolkNigeriaNicaraguaBelandaNorway" +
+ "NepalNauruNiueNew ZealandOmanPanamaPeruPolinesia PerancisPapua New Guine" +
+ "aFilipinaPakistanPolandSaint Pierre dan MiquelonKepulauan PitcairnPuerto" +
+ " RicoWilayah PalestinPortugalPalauParaguayQatarOceania TerpencilReunionR" +
+ "omaniaSerbiaRusiaRwandaArab SaudiKepulauan SolomonSeychellesSudanSwedenS" +
+ "ingapuraSaint HelenaSloveniaSvalbard dan Jan MayenSlovakiaSierra LeoneSa" +
+ "n MarinoSenegalSomaliaSurinamSudan SelatanSao Tome dan PrincipeEl Salvad" +
+ "orSint MaartenSyriaSwazilandTristan da CunhaKepulauan Turks dan CaicosCh" +
+ "adWilayah Selatan PerancisTogoThailandTajikistanTokelauTimor-LesteTurkme" +
+ "nistanTunisiaTongaTurkiTrinidad dan TobagoTuvaluTaiwanTanzaniaUkraineUga" +
+ "ndaKepulauan Terpencil A.S.Amerika SyarikatUruguayUzbekistanKota Vatican" +
+ "Saint Vincent dan GrenadinesVenezuelaKepulauan Virgin BritishKepulauan V" +
+ "irgin A.S.VietnamVanuatuWallis dan FutunaSamoaKosovoYamanMayotteAfrika S" +
+ "elatanZambiaZimbabweWilayah Tidak DiketahuiDuniaAfrikaAmerika UtaraAmeri" +
+ "ka SelatanOceaniaAfrika BaratAmerika TengahAfrika TimurAfrika UtaraAfrik" +
+ "a TengahSelatan AfrikaAmerikaUtara AmerikaCaribbeanAsia TimurAsia Selata" +
+ "nAsia TenggaraEropah SelatanAustralasiaMelanesiaWilayah MikronesiaPoline" +
+ "siaAsiaAsia TengahAsia BaratEropahEropah TimurEropah UtaraEropah BaratAm" +
+ "erika Latin"
+
+var msRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0016, 0x002a, 0x0035, 0x0048, 0x0050, 0x0057,
+ 0x005e, 0x0072, 0x0078, 0x0081, 0x008a, 0x0097, 0x009e, 0x00a7,
+ 0x00ac, 0x00bb, 0x00c5, 0x00db, 0x00e3, 0x00ed, 0x00f4, 0x0100,
+ 0x0108, 0x010f, 0x0116, 0x011b, 0x012c, 0x0133, 0x0139, 0x0140,
+ 0x0151, 0x0157, 0x015e, 0x0164, 0x0170, 0x0178, 0x017f, 0x0185,
+ 0x018b, 0x01a4, 0x01b4, 0x01ca, 0x01dd, 0x01e8, 0x01f7, 0x0205,
+ 0x020a, 0x0212, 0x0217, 0x021f, 0x022f, 0x0239, 0x023d, 0x0247,
+ 0x024e, 0x025b, 0x0261, 0x026f, 0x0275, 0x0281, 0x0289, 0x0290,
+ // Entry 40 - 7F
+ 0x0298, 0x02a9, 0x02b0, 0x02c1, 0x02c8, 0x02cf, 0x02d4, 0x02e0,
+ 0x02e7, 0x02ef, 0x02f7, 0x0306, 0x030d, 0x0311, 0x0323, 0x032d,
+ 0x033c, 0x0344, 0x0349, 0x0357, 0x035e, 0x0365, 0x0374, 0x037c,
+ 0x0381, 0x038a, 0x0393, 0x0399, 0x039f, 0x03a9, 0x03bc, 0x03c2,
+ 0x03ee, 0x03f7, 0x03fb, 0x0408, 0x040e, 0x0421, 0x043b, 0x0443,
+ 0x044a, 0x044f, 0x0456, 0x0466, 0x046f, 0x0476, 0x047c, 0x0487,
+ 0x048c, 0x04a8, 0x04ac, 0x04b0, 0x04b7, 0x04bc, 0x04c2, 0x04c9,
+ 0x04cf, 0x04d4, 0x04d9, 0x04e3, 0x04ea, 0x04f2, 0x04f9, 0x050e,
+ // Entry 80 - BF
+ 0x0519, 0x0526, 0x052c, 0x053c, 0x0546, 0x054a, 0x0550, 0x055b,
+ 0x0568, 0x0571, 0x0578, 0x057f, 0x0588, 0x0592, 0x0598, 0x059d,
+ 0x05a5, 0x05ab, 0x05b2, 0x05bc, 0x05c8, 0x05d2, 0x05e4, 0x05ed,
+ 0x05f1, 0x0600, 0x0608, 0x0617, 0x062e, 0x0638, 0x0642, 0x064c,
+ 0x0651, 0x065a, 0x0662, 0x0668, 0x066e, 0x0676, 0x0680, 0x0687,
+ 0x0694, 0x0699, 0x06a6, 0x06ad, 0x06b6, 0x06bd, 0x06c3, 0x06c8,
+ 0x06cd, 0x06d1, 0x06dc, 0x06e0, 0x06e6, 0x06ea, 0x06fc, 0x070c,
+ 0x0714, 0x071c, 0x0722, 0x073b, 0x074d, 0x0758, 0x0768, 0x0770,
+ // Entry C0 - FF
+ 0x0775, 0x077d, 0x0782, 0x0793, 0x079a, 0x07a1, 0x07a7, 0x07ac,
+ 0x07b2, 0x07bc, 0x07cd, 0x07d7, 0x07dc, 0x07e2, 0x07eb, 0x07f7,
+ 0x07ff, 0x0815, 0x081d, 0x0829, 0x0833, 0x083a, 0x0841, 0x0848,
+ 0x0855, 0x086a, 0x0875, 0x0881, 0x0886, 0x088f, 0x089f, 0x08b9,
+ 0x08bd, 0x08d5, 0x08d9, 0x08e1, 0x08eb, 0x08f2, 0x08fd, 0x0909,
+ 0x0910, 0x0915, 0x091a, 0x092d, 0x0933, 0x0939, 0x0941, 0x0948,
+ 0x094e, 0x0966, 0x0976, 0x097d, 0x0987, 0x0993, 0x09af, 0x09b8,
+ 0x09d0, 0x09e5, 0x09ec, 0x09f3, 0x0a04, 0x0a09, 0x0a0f, 0x0a14,
+ // Entry 100 - 13F
+ 0x0a1b, 0x0a29, 0x0a2f, 0x0a37, 0x0a4e, 0x0a53, 0x0a59, 0x0a66,
+ 0x0a75, 0x0a7c, 0x0a88, 0x0a96, 0x0aa2, 0x0aae, 0x0abb, 0x0ac9,
+ 0x0ad0, 0x0add, 0x0ae6, 0x0af0, 0x0afc, 0x0b09, 0x0b17, 0x0b22,
+ 0x0b2b, 0x0b3d, 0x0b46, 0x0b4a, 0x0b55, 0x0b5f, 0x0b65, 0x0b71,
+ 0x0b7d, 0x0b89, 0x0b96,
+} // Size: 606 bytes
+
+var myRegionStr string = "" + // Size: 9769 bytes
+ "အက်စ်စင်ရှီအွန်ကျွန်းအန်ဒိုရာယူအေအီးအာဖဂန်နစ္စတန်အန်တီဂုအာနှင့်ဘာဘုဒါအန်" +
+ "ဂွီလာအဲလ်ဘာနီအာအာမေနီးယားအင်ဂိုလာအန္တာတိကအာဂျင်တီးနားအမေရိကန် စမိုအဩစတ" +
+ "ြီးယားဩစတြေးလျအာရုဘာအာလန်ကျွန်းအဇာဘိုင်ဂျန်ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီ" +
+ "းနားဘာဘဒိုးစ်ဘင်္ဂလားဒေ့ရှ်ဘယ်လ်ဂျီယမ်ဘာကီနာ ဖာဆိုဘူဂေးရီးယားဘာရိန်းBI" +
+ "ဘီနင်စိန့်ဘာသီလီမိုင်ဘာမူဒါဘရူနိုင်းဘိုလီးဘီးယားကာရီဘီယံနယ်သာလန်ဘရာဇီး" +
+ "ဘဟားမားဘူတန်ဘူဗက်ကျွန်းBWဘီလာရုစ်ဘေလီဇ်ကနေဒါကိုကိုး ကျွန်းစုကွန်ဂို-ကင" +
+ "်ရှာစအလယ်ပိုင်း အာဖရိက ပြည်ထောင်စုကွန်ဂို-ဘရာဇာဗီလ်ဆွစ်ဇလန်အိုင်ဗရီကို" +
+ "စ့်ကွတ် ကျွန်းစုချီလီကင်မရွန်းတရုတ်ကိုလံဘီယာကလစ်ပါတန်ကျွန်းကော့စ်တာရီက" +
+ "ာကျူးဘားခေ့ပ်ဗာဒူခူရာကာအိုခရစ်စမတ် ကျွန်းဆိုက်ပရက်စ်ချက် ပြည်ထောင်စုဂျ" +
+ "ာမဏီဒီအေဂိုဂရာစီအာဂျီဘူတီဒိန်းမတ်ဒိုမီနီကာဒိုမီနီကန်DZဆယ်ဥတာနှင့်မယ်လီ" +
+ "လ်လာအီကွေဒေါအက်စတိုးနီးယားEGEHအီရီတရီအာစပိန်အီသီယိုးပီးယားဥရောပသမဂ္ဂဖင" +
+ "်လန်ဖီဂျီဖောက်ကလန် ကျွန်းစုမိုင်ခရိုနီရှားဖာရိုး ကျွန်းစုများပြင်သစ်ဂါ" +
+ "ဘွန်ယူနိုက်တက်ကင်းဒမ်းဂရီနာဒါဂျော်ဂျီယာပြင်သစ် ဂီယာနာဂွန်းဇီဂါနာဂျီဘရေ" +
+ "ာ်လ်တာဂရင်းလန်းဂန်ဘီရာဂီးနီဂူအာဒီလုပ်အီကွေတာ ဂီရာနာဂရိတောင် ဂျော်ဂျီယာ" +
+ " နှင့် တောင် ဆင်းဒဝစ်ဂျ် ကျွန်းစုများဂွာတီမာလာဂူအမ်ဂီရာနာ-ဘီစ်စာဥဂူရာနာတ" +
+ "ရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ ဟောင်ကောင်ဟတ်ကျွန်းနှင့်မက်ဒေါနယ်ကျွန်းစုဟွန" +
+ "်ဒူးရပ်စ်ခရိုအေးရှားဟေတီဟန်ဂေရီကာနာရီကျွန်းစုအင်ဒိုနီးရှားအိုင်ယာလန်အစ" +
+ "္စရေးမန်ကျွန်းအိန္ဒိယဗြိတိသျှ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက်အီရတ်အီရန်အိုက" +
+ "်စလန်အီတလီဂျာစီဂျမေကာဂျော်ဒန်ဂျပန်KEခရူဂစ်စတန်ကမ္ဘောဒီးယားခီရီဘာတီကိုမ" +
+ "ိုရိုစ်စိန့်ကစ်နှင့်နီဗီစ်မြောက်ကိုရီးယားတောင်ကိုရီးယားကူဝိတ်ကေမန် ကျွ" +
+ "န်းစုကာဇက်စတန်လာအိုလက်ဘနွန်စိန့်လူစီအာလစ်ခ်ထင်စတိုင်သီရိလင်္ကာလိုင်ဘေး" +
+ "ရီးယားလီဆိုသိုလစ်သူယေးနီးယားလူဇင်ဘတ်လတ်ဗီးယားLYMAမိုနာကိုမောလ်ဒိုဗာမွန" +
+ "်တီနိဂရိုးစိန့်မာတင်မာဒါဂတ်စကာမာရှယ် ကျွန်းစုမာစီဒိုးနီးယားမာလီမြန်မာမ" +
+ "ွန်ဂိုးလီးယားတရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ မကာအိုတောင်ပိုင်းမာရီအာနာကျွန်" +
+ "းစုမာတီနီကီမောရီတာနီအာမောင့်စဲရက်မောလ်တာမော်ရေရှားစ်မော်လ်ဒိုက်မာလာဝီမ" +
+ "က္ကဆီကိုမလေးရှားမိုဇန်ဘစ်နမ်မီးဘီးယားနယူး ကယ်လီဒိုနီးယားနိုင်ဂျာနောဖော" +
+ "့ခ်ကျွန်းနိုင်ဂျီးရီးယားနီကာရာဂွာနယ်သာလန်နော်ဝေနီပေါနာဥူရူနီဥူအေနယူးဇီ" +
+ "လန်အိုမန်ပနားမားပီရူးပြင်သစ် ပေါ်လီနေးရှားပါပူရာနယူးဂီနီဖိလစ်ပိုင်ပါကစ" +
+ "္စတန်ပိုလန်စိန့်ပီအဲရီနှင့်မီကွီလွန်ပစ်တ်ကိန်းကျွန်းစုပေါ်တူရီကိုပါလက်" +
+ "စတိုင်း ပိုင်နက်ပေါ်တူဂီပလောင်ပါရာဂွေးကာတာသမုဒ္ဒရာဒေသအပြင်ထွက်နေသောဒေသ" +
+ "များရဲအူနီရွန်ရိုမေးနီးယားဆားဘီးယားရုရှRWဆော်ဒီအာရေးဗီးယားဆော်လမွန်ကျွ" +
+ "န်းစုဆေးရှလ်SDဆွီဒင်စင်္ကာပူစိန့်ဟဲလီနာစလိုဗေးနီးယားစဗိုလ်ဘတ်နှင့်ဂျန်" +
+ "မေရန်စလိုဗေးကီးယားဆီအဲရာ လီအိုနီဆော့န်မာရီနိုဆီနီဂေါဆိုမာလီယာဆူရီနိမ်း" +
+ "မြောက်ဆူဒန်စိန့်တိုမီနှင့်ပရင်စီပ့်အယ်လ်ဆာဗေးဒိုးဆင့်မာအာတင်ဆီးရီးယားS" +
+ "Zထရစ်တန်ဒါကွန်ဟာတခ်စ်နှင့်ကာအီကိုစ်ကျွန်းစုချဒ်ပြင်သစ် တောင်ပိုင်း ပိုင်" +
+ "နက်များတိုဂိုထိုင်းတာဂျီကစ္စတန်ထိုးခါလူအရှေ့တီမောတာခ်မီန့စ်တန်တူနီးရှာ" +
+ "းတွန်ဂါတူရကီထရိုင်နီဒတ်နှင့်တိုဘာဂိုထူးဗလူထိုင်ဝမ်တန်ဇန်းနီးယားယူကရိန်" +
+ "းUGယူနိုက်တက်စတိတ် အပြင်ထွက် နေသည့် သေးငယ်သောကျွန်းများယူနိုက်တက်စတိတ်" +
+ "ဥရုဂွေးဥဘက်ကစ္စတန်ဗာတီကန်စီတီးစိန့်ဗင့်ဆင့်နှင့် သည်ဂရဲနာဒင်းစ်ဗင်နီဇွ" +
+ "ဲလားဗြိတိသျှ ဗာဂျင်း ကျွန်းစုယူအက်စ် ဗာဂျင်း ကျွန်းစုဗီယက်နမ်ဗာနုအာတူဝ" +
+ "ေါလစ်နှင့်ဖူထူးနားဆာမိုအာကိုဆိုဗိုယီမင်မေအိုတီတောင်အာဖရိကဇမ်ဘီယာဇင်ဘာဘ" +
+ "ွေမသိ သို့မဟုတ် မရှိ သော နေရာကမ္ဘာအာဖရိကမြောက် အမေရိကတောင် အမေရိကသမုဒ္" +
+ "ဒရာဒေသအနောက် အာဖရိကအလယ်ပိုင်း အမေရိကအရှေ့ပိုင်း အာဖရိကမြောက်ပိုင်း အာဖ" +
+ "ရိကအလယ်ပိုင်း အာဖရိကတောင်ပိုင်း အာဖရိကအမေရိကများမြောက်ပိုင်း အမေရိကကာရ" +
+ "ီဘီယံအရှေ့ပိုင်း အာရှတောင်ပိုင်း အာရှအရှေ့တောင်ပိုင်းအာရှတောင်ပိုင်း ဥ" +
+ "ရောပဩစတြေးလျနှင့် နယူးဇီလန်မီလာနီးရှားမိုင်ခရိုနီရှားနယ်ပိုလီနီရှားအာရ" +
+ "ှအလယ် အာရှအနောက် အာရှဥရောပအရှေ့ပိုင်း ဥရောပမြောက်ပိုင်း ဥရောပအနောက်ပို" +
+ "င်း ဥရောပလက်တင်အမေရိက"
+
+var myRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x003f, 0x0057, 0x006c, 0x0093, 0x00cf, 0x00e7, 0x0105,
+ 0x0123, 0x0123, 0x013b, 0x0153, 0x0177, 0x019f, 0x01ba, 0x01d2,
+ 0x01e4, 0x0205, 0x0229, 0x0282, 0x029d, 0x02c7, 0x02e8, 0x030a,
+ 0x032b, 0x0340, 0x0342, 0x0351, 0x0381, 0x0393, 0x03ae, 0x03d2,
+ 0x0402, 0x0414, 0x0429, 0x0438, 0x0459, 0x045b, 0x0473, 0x0485,
+ 0x0494, 0x04c2, 0x04ed, 0x0540, 0x0571, 0x0589, 0x05b3, 0x05d8,
+ 0x05e7, 0x0602, 0x0611, 0x062c, 0x0659, 0x067d, 0x0692, 0x06ad,
+ 0x06c8, 0x06f3, 0x0714, 0x0742, 0x0754, 0x077e, 0x0793, 0x07ab,
+ // Entry 40 - 7F
+ 0x07c6, 0x07e4, 0x07e6, 0x0822, 0x083a, 0x0864, 0x0866, 0x0868,
+ 0x0883, 0x0892, 0x08bc, 0x08da, 0x08ec, 0x08fb, 0x092f, 0x095c,
+ 0x0993, 0x09a8, 0x09ba, 0x09f0, 0x0a05, 0x0a23, 0x0a4b, 0x0a60,
+ 0x0a6c, 0x0a90, 0x0aab, 0x0ac0, 0x0acf, 0x0aed, 0x0b15, 0x0b1e,
+ 0x0bb3, 0x0bce, 0x0bdd, 0x0c05, 0x0c17, 0x0c82, 0x0cdf, 0x0d03,
+ 0x0d24, 0x0d30, 0x0d45, 0x0d6f, 0x0d96, 0x0db4, 0x0dc9, 0x0de4,
+ 0x0df9, 0x0e5c, 0x0e6b, 0x0e7a, 0x0e95, 0x0ea4, 0x0eb3, 0x0ec5,
+ 0x0edd, 0x0eec, 0x0eee, 0x0f0c, 0x0f30, 0x0f48, 0x0f69, 0x0fa2,
+ // Entry 80 - BF
+ 0x0fcf, 0x0ff9, 0x100b, 0x1033, 0x104e, 0x105d, 0x1075, 0x1096,
+ 0x10c0, 0x10de, 0x1108, 0x1120, 0x114a, 0x1162, 0x117d, 0x117f,
+ 0x1181, 0x1199, 0x11b7, 0x11de, 0x11fc, 0x121a, 0x1245, 0x126f,
+ 0x127b, 0x128d, 0x12b7, 0x1316, 0x1367, 0x137f, 0x13a0, 0x13c1,
+ 0x13d6, 0x13fa, 0x141b, 0x142d, 0x1448, 0x1460, 0x147b, 0x149f,
+ 0x14d6, 0x14ee, 0x151b, 0x1548, 0x1563, 0x157b, 0x158d, 0x159c,
+ 0x15ae, 0x15c0, 0x15db, 0x15ed, 0x1602, 0x1611, 0x164e, 0x1678,
+ 0x1696, 0x16b1, 0x16c3, 0x170e, 0x1744, 0x1765, 0x17a2, 0x17ba,
+ // Entry C0 - FF
+ 0x17cc, 0x17e4, 0x17f0, 0x1850, 0x186e, 0x1892, 0x18ad, 0x18b9,
+ 0x18bb, 0x18ee, 0x1921, 0x1936, 0x1938, 0x194a, 0x1962, 0x1983,
+ 0x19aa, 0x19ef, 0x1a16, 0x1a3e, 0x1a65, 0x1a7a, 0x1a95, 0x1ab0,
+ 0x1ad1, 0x1b19, 0x1b43, 0x1b64, 0x1b7f, 0x1b81, 0x1bae, 0x1bff,
+ 0x1c0b, 0x1c67, 0x1c79, 0x1c8b, 0x1caf, 0x1cc7, 0x1ce5, 0x1d0c,
+ 0x1d27, 0x1d39, 0x1d48, 0x1d90, 0x1da2, 0x1dba, 0x1de1, 0x1df9,
+ 0x1dfb, 0x1e91, 0x1ebe, 0x1ed3, 0x1ef4, 0x1f18, 0x1f79, 0x1f9a,
+ 0x1fe1, 0x2025, 0x203d, 0x2055, 0x208e, 0x20a3, 0x20be, 0x20cd,
+ // Entry 100 - 13F
+ 0x20e2, 0x2103, 0x2118, 0x2130, 0x2179, 0x2188, 0x219a, 0x21bf,
+ 0x21e1, 0x2202, 0x2227, 0x2258, 0x228c, 0x22c3, 0x22f4, 0x2328,
+ 0x2346, 0x237d, 0x2395, 0x23c3, 0x23f1, 0x242d, 0x245e, 0x24a1,
+ 0x24c2, 0x24f8, 0x2519, 0x2525, 0x253e, 0x255d, 0x256c, 0x259d,
+ 0x25d1, 0x2605, 0x2629,
+} // Size: 606 bytes
+
+var neRegionStr string = "" + // Size: 9084 bytes
+ "एस्केन्सन टापुअन्डोर्रासंयुक्त अरब इमिराट्सअफगानिस्तानएन्टिगुआ र बारबुडा" +
+ "आङ्गुइलाअल्बानियाआर्मेनियानेदरल्याण्ड्स एण्टिलिसअङ्गोलाअन्टारतिकाअर्जे" +
+ "न्टिनाअमेरिकी समोआअष्ट्रियाअष्ट्रेलियाआरूबाअलान्ड टापुहरुअजरबैजानबोस्न" +
+ "िया एण्ड हर्जगोभिनियाबार्बाडोसबङ्गलादेशबेल्जियमबर्किना फासोबुल्गेरियाब" +
+ "हराइनबुरूण्डीबेनिनसेन्ट बार्थालेमीबर्मुडाब्रुनाइबोलिभियाक्यारिवियन नेद" +
+ "रल्याण्ड्सब्राजिलबहामासभुटानबुभेट टापुबोट्स्वानाबेलारूसबेलिजक्यानाडाको" +
+ "कोस (किलिंग) टापुहरुकोङ्गो-किन्शासाकेन्द्रीय अफ्रिकी गणतन्त्रकोङ्गो - " +
+ "ब्राज्जाभिल्लेस्विजरल्याण्डआइभरी कोस्टकुक टापुहरुचिलीक्यामरूनचीनकोलोम्" +
+ "बियाक्लिप्पेर्टन टापुकोष्टारिकाक्युबाकेप भर्डेकुराकाओक्रिष्टमस टापुसाइ" +
+ "प्रसचेक गणतन्त्रजर्मनीडियगो गार्सियाडिजिबुटीडेनमार्कडोमिनिकाडोमिनिकन ग" +
+ "णतन्त्रअल्जेरियासिउटा र मेलिलाइक्वडेरइस्टोनियाइजिप्टपश्चिमी साहाराएरित" +
+ "्रियास्पेनइथियोपियायुरोपियन युनियनफिन्ल्याण्डफिजीफकल्याण्ड टापुहरुमाइक" +
+ "्रोनेसियाफारोर टापुहरुफ्रान्सगावोनबेलायतग्रेनाडाजर्जियाफ्रान्सेली गायन" +
+ "ागुएर्नसेघानाजिब्राल्टारग्रिनल्याण्डगाम्वियागिनीग्वाडेलुपभू-मध्यीय गिन" +
+ "ीग्रिसदक्षिण जर्जिया र दक्षिण स्यान्डवीच टापुहरूग्वाटेमालागुवामगिनी-बि" +
+ "साउगुयानाहङकङ चिनिया समाजवादी स्वायत्त क्षेत्रहर्ड टापु एण्ड म्याकडोना" +
+ "ल्ड टापुहरुहन्डुरासक्रोएशियाहैटीहङ्गेरीक्यानारी टापुहरूइन्डोनेशियाआयरल" +
+ "्याण्डइजरायलआइज्ले अफ् म्यानभारतबेलायती हिन्द महासागर क्षेत्रइराकइरानआ" +
+ "इस्ल्याण्डइटालीजर्सीजमाइकाजोर्डनजापानकेन्याकिर्गिस्थानकम्बोडियाकिरिबाट" +
+ "ीकोमोरोससेन्ट किट्स र नेभिसउत्तर कोरियादक्षिण कोरियाकुवेतकेयमान टापुका" +
+ "जाकस्तानलाओसलेबननसेन्ट लुसियालिएखटेन्स्टाइनश्रीलङ्कालाइबेरियालेसोथोलिथ" +
+ "ुअनियालक्जेमबर्गलाट्भियालिबियामोरोक्कोमोनाकोमाल्डोभामोन्टेनेग्रोसेन्ट " +
+ "मार्टिनमडागास्करमार्शल टापुहरुम्याकेडोनियामालीम्यान्मार (बर्मा)मङ्गोलि" +
+ "यामकावो चिनिँया स्वशासित क्षेत्रउत्तरी मारिआना टापुमार्टिनिकमाउरिटानिय" +
+ "ामोन्टसेर्राटमाल्टामाउरिटसमाल्दिभ्समालावीमेक्सिकोमलेसियामोजाम्बिकनामिब" +
+ "ियानयाँ कालेडोनियानाइजरनोरफोल्क टापुनाइजेरियानिकारागुवानेदरल्याण्ड्सनर" +
+ "्वेनेपालनाउरूनियुइन्युजिल्याण्डओमनपनामापेरूफ्रान्सेली पोलिनेसियापपुआ न" +
+ "्यू गाइनियाफिलिपिन्सपाकिस्तानपोल्याण्डसेन्ट पिर्रे र मिक्केलोनपिटकाइर्" +
+ "न टापुहरुपुएर्टो रिकोप्यालेस्टनी भू-भागहरुपोर्चुगलपलाउप्याराग्वेकतारबा" +
+ "ह्य ओसनियारियुनियनरोमानियासर्बियारूसरवाण्डासाउदी अरबसोलोमोन टापुहरुसेच" +
+ "ेलेससुडानस्विडेनसिङ्गापुरसेन्ट हेलेनास्लोभेनियासभाल्बार्ड र जान मायेनस" +
+ "्लोभाकियासिएर्रा लिओनसान् मारिनोसेनेगालसोमालियासुरिनेमदक्षिणी सुडानसाओ" +
+ " टोमे र प्रिन्सिपएल् साल्भाडोरसिन्ट मार्टेनसिरियास्वाजिल्याण्डट्रिस्टान " +
+ "डा कुन्हातुर्क र काइकोस टापुचाडफ्रान्सेली दक्षिणी क्षेत्रहरुटोगोथाइल्य" +
+ "ाण्डताजिकिस्तानतोकेलाउटिमोर-लेस्टेतुर्कमेनिस्तानट्युनिसियाटोंगाटर्कीत्" +
+ "रिनिडाड एण्ड टोबागोतुभालुताइवानतान्जानियायुक्रेनयुगाण्डासंयुक्त राज्य " +
+ "बाह्य टापुहरुसंयुक्त राज्यउरूग्वेउज्बेकिस्तानभेटिकन सिटीसेन्ट भिन्सेन्" +
+ "ट र ग्रेनाडिन्सभेनेजुएलाबेलायती भर्जिन टापुहरुसंयुक्त राज्य भर्जिन टाप" +
+ "ुहरुभिएतनामभानुआतुवालिस र फुटुनासामोआकोसोवोयेमेनमायोट्टदक्षिण अफ्रिकाज" +
+ "ाम्बियाजिम्बाबेअज्ञात क्षेत्रविश्वअफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओस" +
+ "नियापश्चिमी अफ्रिकाकेन्द्रीय अमेरिकापूर्वी अफ्रिकाउत्तरी अफ्रिकामध्य अ" +
+ "फ्रिकादक्षिणी अफ्रिकाअमेरिकासउत्तरी अमेरिकाक्यारिबियनपूर्वी एशियादक्षि" +
+ "णी एशियादक्षिण पूर्वी एशियादक्षिणी युरोपअष्ट्रालासियामेलानेसियामाइक्रो" +
+ "नेसियाली क्षेत्रपोलिनेशियाएशियाकेन्द्रीय एशियापश्चिमी एशियायुरोपपूर्वी" +
+ " युरोपउत्तरी युरोपपश्चिमी युरोपल्याटिन अमेरिका"
+
+var neRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0028, 0x0043, 0x007b, 0x009c, 0x00ce, 0x00e6, 0x0101,
+ 0x011c, 0x015c, 0x0171, 0x018f, 0x01b0, 0x01d2, 0x01ed, 0x020e,
+ 0x021d, 0x0245, 0x025d, 0x02a7, 0x02c2, 0x02dd, 0x02f5, 0x0317,
+ 0x0335, 0x0347, 0x035f, 0x036e, 0x039c, 0x03b1, 0x03c6, 0x03de,
+ 0x0424, 0x0439, 0x044b, 0x045a, 0x0476, 0x0494, 0x04a9, 0x04b8,
+ 0x04d0, 0x050a, 0x0535, 0x057f, 0x05be, 0x05e5, 0x0604, 0x0623,
+ 0x062f, 0x0647, 0x0650, 0x066e, 0x069f, 0x06bd, 0x06cf, 0x06e8,
+ 0x06fd, 0x0725, 0x073a, 0x075c, 0x076e, 0x0796, 0x07ae, 0x07c6,
+ // Entry 40 - 7F
+ 0x07de, 0x080f, 0x082a, 0x0850, 0x0865, 0x0880, 0x0892, 0x08ba,
+ 0x08d5, 0x08e4, 0x08ff, 0x092a, 0x094b, 0x0957, 0x0988, 0x09af,
+ 0x09d4, 0x09e9, 0x09f8, 0x0a0a, 0x0a22, 0x0a37, 0x0a65, 0x0a7d,
+ 0x0a89, 0x0aaa, 0x0ace, 0x0ae6, 0x0af2, 0x0b0d, 0x0b33, 0x0b42,
+ 0x0bb6, 0x0bd4, 0x0be3, 0x0bff, 0x0c11, 0x0c78, 0x0cd9, 0x0cf1,
+ 0x0d0c, 0x0d18, 0x0d2d, 0x0d5b, 0x0d7c, 0x0d9a, 0x0dac, 0x0dd8,
+ 0x0de4, 0x0e35, 0x0e41, 0x0e4d, 0x0e6e, 0x0e7d, 0x0e8c, 0x0e9e,
+ 0x0eb0, 0x0ebf, 0x0ed1, 0x0ef2, 0x0f0d, 0x0f25, 0x0f3a, 0x0f6d,
+ // Entry 80 - BF
+ 0x0f8f, 0x0fb4, 0x0fc3, 0x0fe2, 0x1000, 0x100c, 0x101b, 0x103d,
+ 0x1067, 0x1082, 0x109d, 0x10af, 0x10ca, 0x10e8, 0x1100, 0x1112,
+ 0x112a, 0x113c, 0x1154, 0x1178, 0x119d, 0x11b8, 0x11e0, 0x1204,
+ 0x1210, 0x123d, 0x1258, 0x12ac, 0x12e1, 0x12fc, 0x131d, 0x1341,
+ 0x1353, 0x1368, 0x1383, 0x1395, 0x13ad, 0x13c2, 0x13dd, 0x13f5,
+ 0x1420, 0x142f, 0x1454, 0x146f, 0x148d, 0x14b4, 0x14c3, 0x14d2,
+ 0x14e1, 0x14f0, 0x1517, 0x1520, 0x152f, 0x153b, 0x1578, 0x15a7,
+ 0x15c2, 0x15dd, 0x15f8, 0x163a, 0x166b, 0x168d, 0x16c8, 0x16e0,
+ // Entry C0 - FF
+ 0x16ec, 0x170a, 0x1716, 0x1738, 0x1750, 0x1768, 0x177d, 0x1786,
+ 0x179b, 0x17b4, 0x17df, 0x17f4, 0x1803, 0x1818, 0x1833, 0x1855,
+ 0x1873, 0x18af, 0x18cd, 0x18ef, 0x190e, 0x1923, 0x193b, 0x1950,
+ 0x1975, 0x19ab, 0x19d0, 0x19f5, 0x1a07, 0x1a2e, 0x1a63, 0x1a96,
+ 0x1a9f, 0x1af2, 0x1afe, 0x1b1c, 0x1b3d, 0x1b52, 0x1b74, 0x1b9e,
+ 0x1bbc, 0x1bcb, 0x1bda, 0x1c15, 0x1c27, 0x1c39, 0x1c57, 0x1c6c,
+ 0x1c84, 0x1ccf, 0x1cf4, 0x1d09, 0x1d2d, 0x1d4c, 0x1d9d, 0x1db8,
+ 0x1df6, 0x1e44, 0x1e59, 0x1e6e, 0x1e94, 0x1ea3, 0x1eb5, 0x1ec4,
+ // Entry 100 - 13F
+ 0x1ed9, 0x1f01, 0x1f19, 0x1f31, 0x1f59, 0x1f68, 0x1f7d, 0x1fa2,
+ 0x1fca, 0x1fdc, 0x2007, 0x2038, 0x2060, 0x2088, 0x20aa, 0x20d5,
+ 0x20ed, 0x2115, 0x2133, 0x2155, 0x217a, 0x21af, 0x21d4, 0x21fb,
+ 0x2219, 0x225c, 0x227a, 0x2289, 0x22b4, 0x22d9, 0x22e8, 0x230a,
+ 0x232c, 0x2351, 0x237c,
+} // Size: 606 bytes
+
+var nlRegionStr string = "" + // Size: 3081 bytes
+ "AscensionAndorraVerenigde Arabische EmiratenAfghanistanAntigua en Barbud" +
+ "aAnguillaAlbaniëArmeniëNederlandse AntillenAngolaAntarcticaArgentiniëAme" +
+ "rikaans-SamoaOostenrijkAustraliëArubaÅlandAzerbeidzjanBosnië en Herzegov" +
+ "inaBarbadosBangladeshBelgiëBurkina FasoBulgarijeBahreinBurundiBeninSaint" +
+ "-BarthélemyBermudaBruneiBoliviaCaribisch NederlandBraziliëBahama’sBhutan" +
+ "BouveteilandBotswanaBelarusBelizeCanadaCocoseilandenCongo-KinshasaCentra" +
+ "al-Afrikaanse RepubliekCongo-BrazzavilleZwitserlandIvoorkustCookeilanden" +
+ "ChiliKameroenChinaColombiaClippertonCosta RicaCubaKaapverdiëCuraçaoChris" +
+ "tmaseilandCyprusTsjechiëDuitslandDiego GarciaDjiboutiDenemarkenDominicaD" +
+ "ominicaanse RepubliekAlgerijeCeuta en MelillaEcuadorEstlandEgypteWesteli" +
+ "jke SaharaEritreaSpanjeEthiopiëEuropese UnieFinlandFijiFalklandeilandenM" +
+ "icronesiaFaeröerFrankrijkGabonVerenigd KoninkrijkGrenadaGeorgiëFrans-Guy" +
+ "anaGuernseyGhanaGibraltarGroenlandGambiaGuineeGuadeloupeEquatoriaal-Guin" +
+ "eaGriekenlandZuid-Georgia en Zuidelijke SandwicheilandenGuatemalaGuamGui" +
+ "nee-BissauGuyanaHongkong SAR van ChinaHeard en McDonaldeilandenHondurasK" +
+ "roatiëHaïtiHongarijeCanarische EilandenIndonesiëIerlandIsraëlIsle of Man" +
+ "IndiaBritse Gebieden in de Indische OceaanIrakIranIJslandItaliëJerseyJam" +
+ "aicaJordaniëJapanKeniaKirgiziëCambodjaKiribatiComorenSaint Kitts en Nevi" +
+ "sNoord-KoreaZuid-KoreaKoeweitCaymaneilandenKazachstanLaosLibanonSaint Lu" +
+ "ciaLiechtensteinSri LankaLiberiaLesothoLitouwenLuxemburgLetlandLibiëMaro" +
+ "kkoMonacoMoldaviëMontenegroSaint-MartinMadagaskarMarshalleilandenMacedon" +
+ "iëMaliMyanmar (Birma)MongoliëMacau SAR van ChinaNoordelijke MarianenMart" +
+ "iniqueMauritaniëMontserratMaltaMauritiusMaldivenMalawiMexicoMaleisiëMoza" +
+ "mbiqueNamibiëNieuw-CaledoniëNigerNorfolkNigeriaNicaraguaNederlandNoorweg" +
+ "enNepalNauruNiueNieuw-ZeelandOmanPanamaPeruFrans-PolynesiëPapoea-Nieuw-G" +
+ "uineaFilipijnenPakistanPolenSaint-Pierre en MiquelonPitcairneilandenPuer" +
+ "to RicoPalestijnse gebiedenPortugalPalauParaguayQataroverig OceaniëRéuni" +
+ "onRoemeniëServiëRuslandRwandaSaoedi-ArabiëSalomonseilandenSeychellenSoed" +
+ "anZwedenSingaporeSint-HelenaSloveniëSpitsbergen en Jan MayenSlowakijeSie" +
+ "rra LeoneSan MarinoSenegalSomaliëSurinameZuid-SoedanSao Tomé en Principe" +
+ "El SalvadorSint-MaartenSyriëSwazilandTristan da CunhaTurks- en Caicoseil" +
+ "andenTsjaadFranse Gebieden in de zuidelijke Indische OceaanTogoThailandT" +
+ "adzjikistanTokelauOost-TimorTurkmenistanTunesiëTongaTurkijeTrinidad en T" +
+ "obagoTuvaluTaiwanTanzaniaOekraïneOegandaKleine afgelegen eilanden van de" +
+ " Verenigde StatenVerenigde StatenUruguayOezbekistanVaticaanstadSaint Vin" +
+ "cent en de GrenadinesVenezuelaBritse MaagdeneilandenAmerikaanse Maagdene" +
+ "ilandenVietnamVanuatuWallis en FutunaSamoaKosovoJemenMayotteZuid-AfrikaZ" +
+ "ambiaZimbabweonbekend gebiedwereldAfrikaNoord-AmerikaZuid-AmerikaOceanië" +
+ "West-AfrikaMidden-AmerikaOost-AfrikaNoord-AfrikaCentraal-AfrikaZuidelijk" +
+ " AfrikaAmerikaNoordelijk AmerikaCaribisch gebiedOost-AziëZuid-AziëZuidoo" +
+ "st-AziëZuid-EuropaAustralaziëMelanesiëMicronesische regioPolynesiëAziëCe" +
+ "ntraal-AziëWest-AziëEuropaOost-EuropaNoord-EuropaWest-EuropaLatijns-Amer" +
+ "ika"
+
+var nlRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0049, 0x0051, 0x0059,
+ 0x0061, 0x0075, 0x007b, 0x0085, 0x0090, 0x00a0, 0x00aa, 0x00b4,
+ 0x00b9, 0x00bf, 0x00cb, 0x00e1, 0x00e9, 0x00f3, 0x00fa, 0x0106,
+ 0x010f, 0x0116, 0x011d, 0x0122, 0x0133, 0x013a, 0x0140, 0x0147,
+ 0x015a, 0x0163, 0x016d, 0x0173, 0x017f, 0x0187, 0x018e, 0x0194,
+ 0x019a, 0x01a7, 0x01b5, 0x01d2, 0x01e3, 0x01ee, 0x01f7, 0x0203,
+ 0x0208, 0x0210, 0x0215, 0x021d, 0x0227, 0x0231, 0x0235, 0x0240,
+ 0x0248, 0x0257, 0x025d, 0x0266, 0x026f, 0x027b, 0x0283, 0x028d,
+ // Entry 40 - 7F
+ 0x0295, 0x02ab, 0x02b3, 0x02c3, 0x02ca, 0x02d1, 0x02d7, 0x02e8,
+ 0x02ef, 0x02f5, 0x02fe, 0x030b, 0x0312, 0x0316, 0x0326, 0x0330,
+ 0x0338, 0x0341, 0x0346, 0x0359, 0x0360, 0x0368, 0x0374, 0x037c,
+ 0x0381, 0x038a, 0x0393, 0x0399, 0x039f, 0x03a9, 0x03bb, 0x03c6,
+ 0x03f1, 0x03fa, 0x03fe, 0x040b, 0x0411, 0x0427, 0x0440, 0x0448,
+ 0x0450, 0x0456, 0x045f, 0x0472, 0x047c, 0x0483, 0x048a, 0x0495,
+ 0x049a, 0x04bf, 0x04c3, 0x04c7, 0x04ce, 0x04d5, 0x04db, 0x04e2,
+ 0x04eb, 0x04f0, 0x04f5, 0x04fe, 0x0506, 0x050e, 0x0515, 0x0529,
+ // Entry 80 - BF
+ 0x0534, 0x053e, 0x0545, 0x0553, 0x055d, 0x0561, 0x0568, 0x0573,
+ 0x0580, 0x0589, 0x0590, 0x0597, 0x059f, 0x05a8, 0x05af, 0x05b5,
+ 0x05bc, 0x05c2, 0x05cb, 0x05d5, 0x05e1, 0x05eb, 0x05fb, 0x0605,
+ 0x0609, 0x0618, 0x0621, 0x0634, 0x0648, 0x0652, 0x065d, 0x0667,
+ 0x066c, 0x0675, 0x067d, 0x0683, 0x0689, 0x0692, 0x069c, 0x06a4,
+ 0x06b4, 0x06b9, 0x06c0, 0x06c7, 0x06d0, 0x06d9, 0x06e2, 0x06e7,
+ 0x06ec, 0x06f0, 0x06fd, 0x0701, 0x0707, 0x070b, 0x071b, 0x072e,
+ 0x0738, 0x0740, 0x0745, 0x075d, 0x076d, 0x0778, 0x078c, 0x0794,
+ // Entry C0 - FF
+ 0x0799, 0x07a1, 0x07a6, 0x07b5, 0x07bd, 0x07c6, 0x07cd, 0x07d4,
+ 0x07da, 0x07e8, 0x07f8, 0x0802, 0x0808, 0x080e, 0x0817, 0x0822,
+ 0x082b, 0x0843, 0x084c, 0x0858, 0x0862, 0x0869, 0x0871, 0x0879,
+ 0x0884, 0x0899, 0x08a4, 0x08b0, 0x08b6, 0x08bf, 0x08cf, 0x08e7,
+ 0x08ed, 0x091d, 0x0921, 0x0929, 0x0935, 0x093c, 0x0946, 0x0952,
+ 0x095a, 0x095f, 0x0966, 0x0978, 0x097e, 0x0984, 0x098c, 0x0995,
+ 0x099c, 0x09cd, 0x09dd, 0x09e4, 0x09ef, 0x09fb, 0x0a19, 0x0a22,
+ 0x0a38, 0x0a53, 0x0a5a, 0x0a61, 0x0a71, 0x0a76, 0x0a7c, 0x0a81,
+ // Entry 100 - 13F
+ 0x0a88, 0x0a93, 0x0a99, 0x0aa1, 0x0ab0, 0x0ab6, 0x0abc, 0x0ac9,
+ 0x0ad5, 0x0add, 0x0ae8, 0x0af6, 0x0b01, 0x0b0d, 0x0b1c, 0x0b2c,
+ 0x0b33, 0x0b45, 0x0b55, 0x0b5f, 0x0b69, 0x0b77, 0x0b82, 0x0b8e,
+ 0x0b98, 0x0bab, 0x0bb5, 0x0bba, 0x0bc8, 0x0bd2, 0x0bd8, 0x0be3,
+ 0x0bef, 0x0bfa, 0x0c09,
+} // Size: 606 bytes
+
+var noRegionStr string = "" + // Size: 2836 bytes
+ "AscensionAndorraDe forente arabiske emiraterAfghanistanAntigua og Barbud" +
+ "aAnguillaAlbaniaArmeniaDe nederlandske antillerAngolaAntarktisArgentinaA" +
+ "merikansk SamoaØsterrikeAustraliaArubaÅlandAserbajdsjanBosnia-Hercegovin" +
+ "aBarbadosBangladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint-Ba" +
+ "rthélemyBermudaBruneiBoliviaKaribisk NederlandBrasilBahamasBhutanBouvetø" +
+ "yaBotswanaHviterusslandBelizeCanadaKokosøyeneKongo-KinshasaDen sentralaf" +
+ "rikanske republikkKongo-BrazzavilleSveitsElfenbenskystenCookøyeneChileKa" +
+ "merunKinaColombiaClippertonøyaCosta RicaCubaKapp VerdeCuraçaoChristmasøy" +
+ "aKyprosTsjekkiaTysklandDiego GarciaDjiboutiDanmarkDominicaDen dominikans" +
+ "ke republikkAlgerieCeuta og MelillaEcuadorEstlandEgyptVest-SaharaEritrea" +
+ "SpaniaEtiopiaEUFinlandFijiFalklandsøyeneMikronesiaføderasjonenFærøyeneFr" +
+ "ankrikeGabonStorbritanniaGrenadaGeorgiaFransk GuyanaGuernseyGhanaGibralt" +
+ "arGrønlandGambiaGuineaGuadeloupeEkvatorial-GuineaHellasSør-Georgia og Sø" +
+ "r-SandwichøyeneGuatemalaGuamGuinea-BissauGuyanaHongkong S.A.R. KinaHeard" +
+ "- og McDonaldøyeneHondurasKroatiaHaitiUngarnKanariøyeneIndonesiaIrlandIs" +
+ "raelManIndiaDet britiske territoriet i IndiahavetIrakIranIslandItaliaJer" +
+ "seyJamaicaJordanJapanKenyaKirgisistanKambodsjaKiribatiKomoreneSaint Kitt" +
+ "s og NevisNord-KoreaSør-KoreaKuwaitCaymanøyeneKasakhstanLaosLibanonSt. L" +
+ "uciaLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLatviaLibyaMarok" +
+ "koMonacoMoldovaMontenegroSaint-MartinMadagaskarMarshalløyeneMakedoniaMal" +
+ "iMyanmar (Burma)MongoliaMacao S.A.R. KinaNord-MarianeneMartiniqueMaurita" +
+ "niaMontserratMaltaMauritiusMaldiveneMalawiMexicoMalaysiaMosambikNamibiaN" +
+ "y-CaledoniaNigerNorfolkøyaNigeriaNicaraguaNederlandNorgeNepalNauruNiueNe" +
+ "w ZealandOmanPanamaPeruFransk PolynesiaPapua Ny-GuineaFilippinenePakista" +
+ "nPolenSt. Pierre og MiquelonPitcairnPuerto RicoDet palestinske områdetPo" +
+ "rtugalPalauParaguayQatarytre OseaniaRéunionRomaniaSerbiaRusslandRwandaSa" +
+ "udi-ArabiaSalomonøyeneSeychelleneSudanSverigeSingaporeSt. HelenaSlovenia" +
+ "Svalbard og Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinam" +
+ "Sør-SudanSão Tomé og PríncipeEl SalvadorSint MaartenSyriaSwazilandTrista" +
+ "n da CunhaTurks- og CaicosøyeneTsjadDe franske sørterritorierTogoThailan" +
+ "dTadsjikistanTokelauØst-TimorTurkmenistanTunisiaTongaTyrkiaTrinidad og T" +
+ "obagoTuvaluTaiwanTanzaniaUkrainaUgandaUSAs ytre øyerUSAUruguayUsbekistan" +
+ "VatikanstatenSt. Vincent og GrenadineneVenezuelaDe britiske jomfruøyeneD" +
+ "e amerikanske jomfruøyeneVietnamVanuatuWallis og FutunaSamoaKosovoJemenM" +
+ "ayotteSør-AfrikaZambiaZimbabweukjent områdeverdenAfrikaNord-AmerikaSør-A" +
+ "merikaOseaniaVest-AfrikaMellom-AmerikaØst-AfrikaNord-AfrikaSentral-Afrik" +
+ "aSørlige AfrikaAmerikaNordlige AmerikaKaribiaØst-AsiaSør-AsiaSørøst-Asia" +
+ "Sør-EuropaAustralasiaMelanesiaMikronesiaPolynesiaAsiaSentral-AsiaVest-As" +
+ "iaEuropaØst-EuropaNord-EuropaVest-EuropaLatin-Amerika"
+
+var noRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0049, 0x0051, 0x0058,
+ 0x005f, 0x0077, 0x007d, 0x0086, 0x008f, 0x009f, 0x00a9, 0x00b2,
+ 0x00b7, 0x00bd, 0x00c9, 0x00db, 0x00e3, 0x00ed, 0x00f3, 0x00ff,
+ 0x0107, 0x010e, 0x0115, 0x011a, 0x012b, 0x0132, 0x0138, 0x013f,
+ 0x0151, 0x0157, 0x015e, 0x0164, 0x016e, 0x0176, 0x0183, 0x0189,
+ 0x018f, 0x019a, 0x01a8, 0x01c7, 0x01d8, 0x01de, 0x01ed, 0x01f7,
+ 0x01fc, 0x0203, 0x0207, 0x020f, 0x021d, 0x0227, 0x022b, 0x0235,
+ 0x023d, 0x024a, 0x0250, 0x0258, 0x0260, 0x026c, 0x0274, 0x027b,
+ // Entry 40 - 7F
+ 0x0283, 0x029d, 0x02a4, 0x02b4, 0x02bb, 0x02c2, 0x02c7, 0x02d2,
+ 0x02d9, 0x02df, 0x02e6, 0x02e8, 0x02ef, 0x02f3, 0x0302, 0x0319,
+ 0x0323, 0x032c, 0x0331, 0x033e, 0x0345, 0x034c, 0x0359, 0x0361,
+ 0x0366, 0x036f, 0x0378, 0x037e, 0x0384, 0x038e, 0x039f, 0x03a5,
+ 0x03c8, 0x03d1, 0x03d5, 0x03e2, 0x03e8, 0x03fc, 0x0414, 0x041c,
+ 0x0423, 0x0428, 0x042e, 0x043a, 0x0443, 0x0449, 0x044f, 0x0452,
+ 0x0457, 0x047c, 0x0480, 0x0484, 0x048a, 0x0490, 0x0496, 0x049d,
+ 0x04a3, 0x04a8, 0x04ad, 0x04b8, 0x04c1, 0x04c9, 0x04d1, 0x04e5,
+ // Entry 80 - BF
+ 0x04ef, 0x04f9, 0x04ff, 0x050b, 0x0515, 0x0519, 0x0520, 0x0529,
+ 0x0536, 0x053f, 0x0546, 0x054d, 0x0554, 0x055d, 0x0563, 0x0568,
+ 0x056f, 0x0575, 0x057c, 0x0586, 0x0592, 0x059c, 0x05aa, 0x05b3,
+ 0x05b7, 0x05c6, 0x05ce, 0x05df, 0x05ed, 0x05f7, 0x0601, 0x060b,
+ 0x0610, 0x0619, 0x0622, 0x0628, 0x062e, 0x0636, 0x063e, 0x0645,
+ 0x0651, 0x0656, 0x0661, 0x0668, 0x0671, 0x067a, 0x067f, 0x0684,
+ 0x0689, 0x068d, 0x0698, 0x069c, 0x06a2, 0x06a6, 0x06b6, 0x06c5,
+ 0x06d0, 0x06d8, 0x06dd, 0x06f3, 0x06fb, 0x0706, 0x071e, 0x0726,
+ // Entry C0 - FF
+ 0x072b, 0x0733, 0x0738, 0x0744, 0x074c, 0x0753, 0x0759, 0x0761,
+ 0x0767, 0x0773, 0x0780, 0x078b, 0x0790, 0x0797, 0x07a0, 0x07aa,
+ 0x07b2, 0x07c7, 0x07cf, 0x07db, 0x07e5, 0x07ec, 0x07f3, 0x07fa,
+ 0x0804, 0x081b, 0x0826, 0x0832, 0x0837, 0x0840, 0x0850, 0x0866,
+ 0x086b, 0x0885, 0x0889, 0x0891, 0x089d, 0x08a4, 0x08ae, 0x08ba,
+ 0x08c1, 0x08c6, 0x08cc, 0x08de, 0x08e4, 0x08ea, 0x08f2, 0x08f9,
+ 0x08ff, 0x090e, 0x0911, 0x0918, 0x0922, 0x092f, 0x0949, 0x0952,
+ 0x096a, 0x0985, 0x098c, 0x0993, 0x09a3, 0x09a8, 0x09ae, 0x09b3,
+ // Entry 100 - 13F
+ 0x09ba, 0x09c5, 0x09cb, 0x09d3, 0x09e1, 0x09e7, 0x09ed, 0x09f9,
+ 0x0a05, 0x0a0c, 0x0a17, 0x0a25, 0x0a30, 0x0a3b, 0x0a49, 0x0a58,
+ 0x0a5f, 0x0a6f, 0x0a76, 0x0a7f, 0x0a88, 0x0a95, 0x0aa0, 0x0aab,
+ 0x0ab4, 0x0abe, 0x0ac7, 0x0acb, 0x0ad7, 0x0ae0, 0x0ae6, 0x0af1,
+ 0x0afc, 0x0b07, 0x0b14,
+} // Size: 606 bytes
+
+var paRegionStr string = "" + // Size: 7688 bytes
+ "ਅਸੈਂਸ਼ਨ ਟਾਪੂਅੰਡੋਰਾਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤਅਫ਼ਗਾਨਿਸਤਾਨਐਂਟੀਗੁਆ ਅਤੇ ਬਾਰਬੁਡਾਅੰਗੁਇਲਾ" +
+ "ਅਲਬਾਨੀਆਅਰਮੀਨੀਆਅੰਗੋਲਾਅੰਟਾਰਕਟਿਕਾਅਰਜਨਟੀਨਾਅਮੈਰੀਕਨ ਸਮੋਆਆਸਟਰੀਆਆਸਟ੍ਰੇਲੀਆਅਰੂਬਾ" +
+ "ਅਲੈਂਡ ਟਾਪੂਅਜ਼ਰਬਾਈਜਾਨਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾਬਾਰਬਾਡੋਸਬੰਗਲਾਦੇਸ਼ਬੈਲਜੀਅਮਬੁਰਕ" +
+ "ੀਨਾ ਫ਼ਾਸੋਬੁਲਗਾਰੀਆਬਹਿਰੀਨਬੁਰੁੰਡੀਬੇਨਿਨਸੇਂਟ ਬਾਰਥੇਲੇਮੀਬਰਮੂਡਾਬਰੂਨੇਈਬੋਲੀਵੀਆਕੈ" +
+ "ਰੇਬੀਆਈ ਨੀਦਰਲੈਂਡਬ੍ਰਾਜ਼ੀਲਬਹਾਮਾਸਭੂਟਾਨਬੌਵੇਟ ਟਾਪੂਬੋਟਸਵਾਨਾਬੇਲਾਰੂਸਬੇਲੀਜ਼ਕੈਨੇਡ" +
+ "ਾਕੋਕੋਸ (ਕੀਲਿੰਗ) ਟਾਪੂਕਾਂਗੋ - ਕਿੰਸ਼ਾਸਾਕੇਂਦਰੀ ਅਫ਼ਰੀਕੀ ਗਣਰਾਜਕਾਂਗੋ - ਬ੍ਰਾਜ਼" +
+ "ਾਵਿਲੇਸਵਿਟਜ਼ਰਲੈਂਡਕੋਟ ਡੀਵੋਆਰਕੁੱਕ ਟਾਪੂਚਿਲੀਕੈਮਰੂਨਚੀਨਕੋਲੰਬੀਆਕਲਿੱਪਰਟਨ ਟਾਪੂਕੋ" +
+ "ਸਟਾ ਰੀਕਾਕਿਊਬਾਕੇਪ ਵਰਡੇਕੁਰਾਕਾਓਕ੍ਰਿਸਮਿਸ ਟਾਪੂਸਾਇਪ੍ਰਸਚੈਕ ਗਣਰਾਜਜਰਮਨੀਡੀਇਗੋ ਗਾ" +
+ "ਰਸੀਆਜ਼ੀਬੂਤੀਡੈਨਮਾਰਕਡੋਮੀਨਿਕਾਡੋਮੀਨਿਕਾਈ ਗਣਰਾਜਅਲਜੀਰੀਆਸਿਓਟਾ ਅਤੇ ਮੇਲਿੱਲਾਇਕਵੇਡ" +
+ "ੋਰਇਸਟੋਨੀਆਮਿਸਰਪੱਛਮੀ ਸਹਾਰਾਇਰੀਟ੍ਰਿਆਸਪੇਨਇਥੋਪੀਆਯੂਰਪੀ ਯੂਨੀਅਨਫਿਨਲੈਂਡਫ਼ਿਜੀਫ਼ਾਕ" +
+ "ਲੈਂਡ ਟਾਪੂਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਫੈਰੋ ਟਾਪੂਫ਼ਰਾਂਸਗਬੋਨਯੂਨਾਈਟਡ ਕਿੰਗਡਮਗ੍ਰੇਨਾਡਾਜਾਰਜੀਆਫ" +
+ "਼ਰੈਂਚ ਗੁਆਨਾਗਰਨਜੀਘਾਨਾਜਿਬਰਾਲਟਰਗ੍ਰੀਨਲੈਂਡਗੈਂਬੀਆਗਿਨੀਗੁਆਡੇਲੋਪਭੂ-ਖੰਡੀ ਗਿਨੀਗ੍ਰ" +
+ "ੀਸਦੱਖਣੀ ਜਾਰਜੀਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਟਾਪੂਗੁਆਟੇਮਾਲਾਗੁਆਮਗਿਨੀ-ਬਿਸਾਉਗੁਯਾਨਾਹਾਂਗ" +
+ " ਕਾਂਗ ਐਸਏਆਰ ਚੀਨਹਰਡ ਤੇ ਮੈਕਡੋਨਾਲਡ ਟਾਪੂਹੋਂਡੁਰਸਕਰੋਏਸ਼ੀਆਹੈਤੀਹੰਗਰੀਕੇਨਾਰੀ ਟਾਪੂਇ" +
+ "ੰਡੋਨੇਸ਼ੀਆਆਇਰਲੈਂਡਇਜ਼ਰਾਈਲਆਇਲ ਆਫ ਮੈਨਭਾਰਤਬਰਤਾਨਵੀ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਪ੍ਰਦੇਸ਼ਇਰਾਕ" +
+ "ਈਰਾਨਆਈਸਲੈਂਡਇਟਲੀਜਰਸੀਜਮਾਇਕਾਜਾਰਡਨਜਪਾਨਕੀਨੀਆਕਿਰਗਿਜ਼ਸਤਾਨਕੰਬੋਡੀਆਕਿਰਬਾਤੀਕੋਮੋਰੋ" +
+ "ਸਸੈਂਟ ਕਿਟਸ ਐਂਡ ਨੇਵਿਸਉੱਤਰੀ ਕੋਰੀਆਦੱਖਣੀ ਕੋਰੀਆਕੁਵੈਤਕੇਮੈਨ ਟਾਪੂਕਜ਼ਾਖਸਤਾਨਲਾਓਸ" +
+ "ਲੈਬਨਾਨਸੇਂਟ ਲੂਸੀਆਲਿਚੇਂਸਟਾਇਨਸ੍ਰੀ ਲੰਕਾਲਾਈਬੀਰੀਆਲੇਸੋਥੋਲਿਥੁਆਨੀਆਲਕਜ਼ਮਬਰਗਲਾਟਵੀ" +
+ "ਆਲੀਬੀਆਮੋਰੱਕੋਮੋਨਾਕੋਮੋਲਡੋਵਾਮੋਂਟੇਨੇਗਰੋਸੇਂਟ ਮਾਰਟਿਨਮੈਡਾਗਾਸਕਰਮਾਰਸ਼ਲ ਟਾਪੂਮੈਕਡ" +
+ "ੋਨੀਆਮਾਲੀਮਿਆਂਮਾਰ (ਬਰਮਾ)ਮੰਗੋਲੀਆਮਕਾਉ ਐਸਏਆਰ ਚੀਨਉੱਤਰੀ ਮਾਰੀਆਨਾ ਟਾਪੂਮਾਰਟੀਨਿਕਮ" +
+ "ੋਰਿਟਾਨੀਆਮੋਂਟਸੇਰਾਤਮਾਲਟਾਮੌਰਿਸ਼ਸਮਾਲਦੀਵਮਲਾਵੀਮੈਕਸੀਕੋਮਲੇਸ਼ੀਆਮੋਜ਼ਾਮਬੀਕਨਾਮੀਬੀਆ" +
+ "ਨਿਊ ਕੈਲੇਡੋਨੀਆਨਾਈਜਰਨੋਰਫੌਕ ਟਾਪੂਨਾਈਜੀਰੀਆਨਿਕਾਰਾਗੁਆਨੀਦਰਲੈਂਡਨਾਰਵੇਨੇਪਾਲਨਾਉਰੂਨ" +
+ "ਿਯੂਨਿਊਜ਼ੀਲੈਂਡਓਮਾਨਪਨਾਮਾਪੇਰੂਫਰੈਂਚ ਪੋਲੀਨੇਸ਼ੀਆਪਾਪੂਆ ਨਿਊ ਗਿਨੀਫਿਲੀਪੀਂਸਪਾਕਿਸਤ" +
+ "ਾਨਪੋਲੈਂਡਸੈਂਟ ਪੀਅਰੇ ਐਂਡ ਮਿਕੇਲਨਪਿਟਕੇਰਨ ਟਾਪੂਪਿਊਰਟੋ ਰਿਕੋਫਿਲੀਸਤੀਨੀ ਖੇਤਰਪੁਰਤ" +
+ "ਗਾਲਪਲਾਉਪੈਰਾਗਵੇਕਤਰਆਊਟਲਾਇੰਗ ਓਸ਼ੀਨੀਆਰਿਯੂਨੀਅਨਰੋਮਾਨੀਆਸਰਬੀਆਰੂਸਰਵਾਂਡਾਸਾਊਦੀ ਅਰ" +
+ "ਬਸੋਲੋਮਨ ਟਾਪੂਸੇਸ਼ਲਸਸੂਡਾਨਸਵੀਡਨਸਿੰਗਾਪੁਰਸੇਂਟ ਹੇਲੇਨਾਸਲੋਵੇਨੀਆਸਵਾਲਬਰਡ ਅਤੇ ਜਾਨ" +
+ " ਮਾਯੇਨਸਲੋਵਾਕੀਆਸਿਏਰਾ ਲਿਓਨਸੈਨ ਮਰੀਨੋਸੇਨੇਗਲਸੋਮਾਲੀਆਸੂਰੀਨਾਮਦੱਖਣੀ ਸੂਡਾਨਸਾਓ ਟੋਮ " +
+ "ਅਤੇ ਪ੍ਰਿੰਸੀਪੇਅਲ ਸਲਵਾਡੋਰਸਿੰਟ ਮਾਰਟੀਨਸੀਰੀਆਸਵਾਜ਼ੀਲੈਂਡਟ੍ਰਿਸਟਾਨ ਦਾ ਕੁੰਹਾਟੁਰਕ" +
+ "ਸ ਅਤੇ ਕੈਕੋਸ ਟਾਪੂਚਾਡਫਰੈਂਚ ਦੱਖਣੀ ਪ੍ਰਦੇਸ਼ਟੋਗੋਥਾਈਲੈਂਡਤਾਜਿਕਿਸਤਾਨਟੋਕੇਲਾਉਤਿਮੋ" +
+ "ਰ-ਲੇਸਤੇਤੁਰਕਮੇਨਿਸਤਾਨਟਿਊਨੀਸ਼ੀਆਟੌਂਗਾਤੁਰਕੀਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋਟੁਵਾਲੂਤਾਇਵਾਨ" +
+ "ਤਨਜ਼ਾਨੀਆਯੂਕਰੇਨਯੂਗਾਂਡਾਯੂ.ਐਸ. ਦੂਰ-ਦੁਰਾਡੇ ਟਾਪੂਸੰਯੁਕਤ ਰਾਜਉਰੂਗਵੇਉਜ਼ਬੇਕਿਸਤਾਨ" +
+ "ਵੈਟੀਕਨ ਸਿਟੀਸੇਂਟ ਵਿਨਸੈਂਟ ਐਂਡ ਗ੍ਰੇਨਾਡੀਨਸਵੇਨੇਜ਼ੂਏਲਾਬ੍ਰਿਟਿਸ਼ ਵਰਜਿਨ ਟਾਪੂਯੂ " +
+ "ਐਸ ਵਰਜਿਨ ਟਾਪੂਵੀਅਤਨਾਮਵਾਨੂਆਟੂਵਾਲਿਸ ਅਤੇ ਫੂਟੂਨਾਸਾਮੋਆਕੋਸੋਵੋਯਮਨਮਾਯੋਟੀਦੱਖਣੀ ਅ" +
+ "ਫਰੀਕਾਜ਼ਾਮਬੀਆਜ਼ਿੰਬਾਬਵੇਅਣਪਛਾਤਾ ਖੇਤਰਸੰਸਾਰਅਫ਼ਰੀਕਾਉੱਤਰ ਅਮਰੀਕਾਦੱਖਣੀ ਅਮਰੀਕਾਓਸ" +
+ "਼ੇਨੀਆਪੱਛਮੀ ਅਫ਼ਰੀਕਾਕੇਂਦਰੀ ਅਮਰੀਕਾਪੂਰਬੀ ਅਫ਼ਰੀਕਾਉੱਤਰੀ ਅਫ਼ਰੀਕਾਮੱਧ ਅਫ਼ਰੀਕਾਦੱ" +
+ "ਖਣੀ ਅਫ਼ਰੀਕਾਅਮਰੀਕਾਉੱਤਰੀ ਅਮਰੀਕਾਕੈਰੇਬੀਆਈਪੂਰਬੀ ਏਸ਼ੀਆਦੱਖਣੀ ਏਸ਼ੀਆਦੱਖਣ-ਪੂਰਬੀ " +
+ "ਏਸ਼ੀਆਦੱਖਣੀ ਯੂਰਪਆਸਟਰੇਲੇਸ਼ੀਆਮੇਲਾਨੇਸ਼ੀਆਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਈ ਖੇਤਰਪੋਲੀਨੇਸ਼ੀਆਏਸ਼ੀਆ" +
+ "ਕੇਂਦਰੀ ਏਸ਼ੀਆਪੱਛਮੀ ਏਸ਼ੀਆਯੂਰਪਪੂਰਬੀ ਯੂਰਪਉੱਤਰੀ ਯੂਰਪਪੱਛਮੀ ਯੂਰਪਲਾਤੀਨੀ ਅਮਰੀਕਾ"
+
+var paRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0022, 0x0034, 0x0063, 0x0084, 0x00b9, 0x00ce, 0x00e3,
+ 0x00f8, 0x00f8, 0x010a, 0x0128, 0x0140, 0x0162, 0x0174, 0x018f,
+ 0x019e, 0x01ba, 0x01d8, 0x0216, 0x022e, 0x0249, 0x025e, 0x0283,
+ 0x029b, 0x02ad, 0x02c2, 0x02d1, 0x02f9, 0x030b, 0x031d, 0x0332,
+ 0x0363, 0x037b, 0x038d, 0x039c, 0x03b8, 0x03d0, 0x03e5, 0x03f7,
+ 0x0409, 0x043a, 0x0464, 0x049c, 0x04cf, 0x04f0, 0x050c, 0x0525,
+ 0x0531, 0x0543, 0x054c, 0x0561, 0x0586, 0x05a2, 0x05b1, 0x05c7,
+ 0x05dc, 0x0601, 0x0616, 0x062f, 0x063e, 0x0660, 0x0675, 0x068a,
+ // Entry 40 - 7F
+ 0x06a2, 0x06cd, 0x06e2, 0x0711, 0x0726, 0x073b, 0x0747, 0x0766,
+ 0x077e, 0x078a, 0x079c, 0x07be, 0x07d3, 0x07e2, 0x0807, 0x082e,
+ 0x0847, 0x0859, 0x0865, 0x088d, 0x08a5, 0x08b7, 0x08d9, 0x08e8,
+ 0x08f4, 0x090c, 0x0927, 0x0939, 0x0945, 0x095d, 0x097d, 0x098c,
+ 0x09eb, 0x0a06, 0x0a12, 0x0a2e, 0x0a40, 0x0a73, 0x0aac, 0x0ac1,
+ 0x0ad9, 0x0ae5, 0x0af4, 0x0b13, 0x0b31, 0x0b46, 0x0b5b, 0x0b75,
+ 0x0b81, 0x0bd2, 0x0bde, 0x0bea, 0x0bff, 0x0c0b, 0x0c17, 0x0c29,
+ 0x0c38, 0x0c44, 0x0c53, 0x0c74, 0x0c89, 0x0c9e, 0x0cb3, 0x0ce6,
+ // Entry 80 - BF
+ 0x0d05, 0x0d24, 0x0d33, 0x0d4f, 0x0d6a, 0x0d76, 0x0d88, 0x0da4,
+ 0x0dc2, 0x0ddb, 0x0df3, 0x0e05, 0x0e1d, 0x0e35, 0x0e47, 0x0e56,
+ 0x0e68, 0x0e7a, 0x0e8f, 0x0ead, 0x0ecc, 0x0ee7, 0x0f06, 0x0f1e,
+ 0x0f2a, 0x0f4e, 0x0f63, 0x0f89, 0x0fbb, 0x0fd3, 0x0fee, 0x1009,
+ 0x1018, 0x102d, 0x103f, 0x104e, 0x1063, 0x1078, 0x1093, 0x10a8,
+ 0x10cd, 0x10dc, 0x10fb, 0x1113, 0x112e, 0x1146, 0x1155, 0x1164,
+ 0x1173, 0x117f, 0x119d, 0x11a9, 0x11b8, 0x11c4, 0x11f2, 0x1218,
+ 0x1230, 0x1248, 0x125a, 0x1293, 0x12b5, 0x12d4, 0x12fc, 0x1311,
+ // Entry C0 - FF
+ 0x131d, 0x1332, 0x133b, 0x1369, 0x1381, 0x1396, 0x13a5, 0x13ae,
+ 0x13c0, 0x13d9, 0x13f8, 0x140a, 0x1419, 0x1428, 0x1440, 0x145f,
+ 0x1477, 0x14b0, 0x14c8, 0x14e4, 0x14fd, 0x150f, 0x1524, 0x1539,
+ 0x1558, 0x1591, 0x15ad, 0x15cc, 0x15db, 0x15f9, 0x1628, 0x165e,
+ 0x1667, 0x169c, 0x16a8, 0x16bd, 0x16db, 0x16f0, 0x170f, 0x1733,
+ 0x174e, 0x175d, 0x176c, 0x17a4, 0x17b6, 0x17c8, 0x17e0, 0x17f2,
+ 0x1807, 0x183f, 0x185b, 0x186d, 0x188e, 0x18ad, 0x18f8, 0x1916,
+ 0x194b, 0x1975, 0x198a, 0x199f, 0x19cb, 0x19da, 0x19ec, 0x19f5,
+ // Entry 100 - 13F
+ 0x1a07, 0x1a29, 0x1a3e, 0x1a59, 0x1a7b, 0x1a8a, 0x1a9f, 0x1abe,
+ 0x1ae0, 0x1af5, 0x1b1a, 0x1b3f, 0x1b64, 0x1b89, 0x1ba8, 0x1bcd,
+ 0x1bdf, 0x1c01, 0x1c19, 0x1c38, 0x1c57, 0x1c83, 0x1c9f, 0x1cc0,
+ 0x1cde, 0x1d15, 0x1d33, 0x1d42, 0x1d64, 0x1d83, 0x1d8f, 0x1dab,
+ 0x1dc7, 0x1de3, 0x1e08,
+} // Size: 606 bytes
+
+var plRegionStr string = "" + // Size: 3161 bytes
+ "Wyspa WniebowstąpieniaAndoraZjednoczone Emiraty ArabskieAfganistanAntigu" +
+ "a i BarbudaAnguillaAlbaniaArmeniaAntyle HolenderskieAngolaAntarktykaArge" +
+ "ntynaSamoa AmerykańskieAustriaAustraliaArubaWyspy AlandzkieAzerbejdżanBo" +
+ "śnia i HercegowinaBarbadosBangladeszBelgiaBurkina FasoBułgariaBahrajnBu" +
+ "rundiBeninSaint-BarthélemyBermudyBrunei DarussalamBoliwiaNiderlandy Kara" +
+ "ibskieBrazyliaBahamyBhutanWyspa BouvetaBotswanaBiałoruśBelizeKanadaWyspy" +
+ " KokosoweDemokratyczna Republika KongaRepublika ŚrodkowoafrykańskaKongoS" +
+ "zwajcariaCôte d’IvoireWyspy CookaChileKamerunChinyKolumbiaClippertonKost" +
+ "arykaKubaRepublika Zielonego PrzylądkaCuraçaoWyspa Bożego NarodzeniaCypr" +
+ "CzechyNiemcyDiego GarciaDżibutiDaniaDominikaDominikanaAlgieriaCeuta i Me" +
+ "lillaEkwadorEstoniaEgiptSahara ZachodniaErytreaHiszpaniaEtiopiaUnia Euro" +
+ "pejskaFinlandiaFidżiFalklandyMikronezjaWyspy OwczeFrancjaGabonWielka Bry" +
+ "taniaGrenadaGruzjaGujana FrancuskaGuernseyGhanaGibraltarGrenlandiaGambia" +
+ "GwineaGwadelupaGwinea RównikowaGrecjaGeorgia Południowa i Sandwich Połud" +
+ "niowyGwatemalaGuamGwinea BissauGujanaSRA Hongkong (Chiny)Wyspy Heard i M" +
+ "cDonaldaHondurasChorwacjaHaitiWęgryWyspy KanaryjskieIndonezjaIrlandiaIzr" +
+ "aelWyspa ManIndieBrytyjskie Terytorium Oceanu IndyjskiegoIrakIranIslandi" +
+ "aWłochyJerseyJamajkaJordaniaJaponiaKeniaKirgistanKambodżaKiribatiKomoryS" +
+ "aint Kitts i NevisKorea PółnocnaKorea PołudniowaKuwejtKajmanyKazachstanL" +
+ "aosLibanSaint LuciaLiechtensteinSri LankaLiberiaLesothoLitwaLuksemburgŁo" +
+ "twaLibiaMarokoMonakoMołdawiaCzarnogóraSaint-MartinMadagaskarWyspy Marsha" +
+ "llaMacedoniaMaliMjanma (Birma)MongoliaSRA Makau (Chiny)Mariany PółnocneM" +
+ "artynikaMauretaniaMontserratMaltaMauritiusMalediwyMalawiMeksykMalezjaMoz" +
+ "ambikNamibiaNowa KaledoniaNigerNorfolkNigeriaNikaraguaHolandiaNorwegiaNe" +
+ "palNauruNiueNowa ZelandiaOmanPanamaPeruPolinezja FrancuskaPapua-Nowa Gwi" +
+ "neaFilipinyPakistanPolskaSaint-Pierre i MiquelonPitcairnPortorykoTerytor" +
+ "ia PalestyńskiePortugaliaPalauParagwajKatarOceania inneReunionRumuniaSer" +
+ "biaRosjaRwandaArabia SaudyjskaWyspy SalomonaSeszeleSudanSzwecjaSingapurW" +
+ "yspa Świętej HelenySłoweniaSvalbard i Jan MayenSłowacjaSierra LeoneSan M" +
+ "arinoSenegalSomaliaSurinamSudan PołudniowyWyspy Świętego Tomasza i Książ" +
+ "ęcaSalwadorSint MaartenSyriaSuaziTristan da CunhaTurks i CaicosCzadFran" +
+ "cuskie Terytoria Południowe i AntarktyczneTogoTajlandiaTadżykistanTokela" +
+ "uTimor WschodniTurkmenistanTunezjaTongaTurcjaTrynidad i TobagoTuvaluTajw" +
+ "anTanzaniaUkrainaUgandaDalekie Wyspy Mniejsze Stanów ZjednoczonychStany " +
+ "ZjednoczoneUrugwajUzbekistanWatykanSaint Vincent i GrenadynyWenezuelaBry" +
+ "tyjskie Wyspy DziewiczeWyspy Dziewicze Stanów ZjednoczonychWietnamVanuat" +
+ "uWallis i FutunaSamoaKosowoJemenMajottaRepublika Południowej AfrykiZambi" +
+ "aZimbabweNieznany regionświatAfrykaAmeryka PółnocnaAmeryka PołudniowaOce" +
+ "aniaAfryka ZachodniaAmeryka ŚrodkowaAfryka WschodniaAfryka PółnocnaAfryk" +
+ "a ŚrodkowaAfryka PołudniowaAmerykaAmeryka Północna (USA, Kanada)KaraibyA" +
+ "zja WschodniaAzja PołudniowaAzja Południowo-WschodniaEuropa PołudniowaAu" +
+ "stralazjaMelanezjaRegion MikronezjiPolinezjaAzjaAzja ŚrodkowaAzja Zachod" +
+ "niaEuropaEuropa WschodniaEuropa PółnocnaEuropa ZachodniaAmeryka Łacińska"
+
+var plRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0017, 0x001d, 0x0039, 0x0043, 0x0054, 0x005c, 0x0063,
+ 0x006a, 0x007d, 0x0083, 0x008d, 0x0096, 0x00a9, 0x00b0, 0x00b9,
+ 0x00be, 0x00cd, 0x00d9, 0x00ee, 0x00f6, 0x0100, 0x0106, 0x0112,
+ 0x011b, 0x0122, 0x0129, 0x012e, 0x013f, 0x0146, 0x0157, 0x015e,
+ 0x0173, 0x017b, 0x0181, 0x0187, 0x0194, 0x019c, 0x01a6, 0x01ac,
+ 0x01b2, 0x01c0, 0x01dd, 0x01fb, 0x0200, 0x020a, 0x021a, 0x0225,
+ 0x022a, 0x0231, 0x0236, 0x023e, 0x0248, 0x0251, 0x0255, 0x0273,
+ 0x027b, 0x0293, 0x0297, 0x029d, 0x02a3, 0x02af, 0x02b7, 0x02bc,
+ // Entry 40 - 7F
+ 0x02c4, 0x02ce, 0x02d6, 0x02e5, 0x02ec, 0x02f3, 0x02f8, 0x0308,
+ 0x030f, 0x0318, 0x031f, 0x032e, 0x0337, 0x033d, 0x0346, 0x0350,
+ 0x035b, 0x0362, 0x0367, 0x0376, 0x037d, 0x0383, 0x0393, 0x039b,
+ 0x03a0, 0x03a9, 0x03b3, 0x03b9, 0x03bf, 0x03c8, 0x03d9, 0x03df,
+ 0x0409, 0x0412, 0x0416, 0x0423, 0x0429, 0x043d, 0x0454, 0x045c,
+ 0x0465, 0x046a, 0x0470, 0x0481, 0x048a, 0x0492, 0x0498, 0x04a1,
+ 0x04a6, 0x04ce, 0x04d2, 0x04d6, 0x04de, 0x04e5, 0x04eb, 0x04f2,
+ 0x04fa, 0x0501, 0x0506, 0x050f, 0x0518, 0x0520, 0x0526, 0x0539,
+ // Entry 80 - BF
+ 0x0549, 0x055a, 0x0560, 0x0567, 0x0571, 0x0575, 0x057a, 0x0585,
+ 0x0592, 0x059b, 0x05a2, 0x05a9, 0x05ae, 0x05b8, 0x05be, 0x05c3,
+ 0x05c9, 0x05cf, 0x05d8, 0x05e3, 0x05ef, 0x05f9, 0x0608, 0x0611,
+ 0x0615, 0x0623, 0x062b, 0x063c, 0x064e, 0x0657, 0x0661, 0x066b,
+ 0x0670, 0x0679, 0x0681, 0x0687, 0x068d, 0x0694, 0x069c, 0x06a3,
+ 0x06b1, 0x06b6, 0x06bd, 0x06c4, 0x06cd, 0x06d5, 0x06dd, 0x06e2,
+ 0x06e7, 0x06eb, 0x06f8, 0x06fc, 0x0702, 0x0706, 0x0719, 0x072a,
+ 0x0732, 0x073a, 0x0740, 0x0757, 0x075f, 0x0768, 0x077f, 0x0789,
+ // Entry C0 - FF
+ 0x078e, 0x0796, 0x079b, 0x07a7, 0x07ae, 0x07b5, 0x07bb, 0x07c0,
+ 0x07c6, 0x07d6, 0x07e4, 0x07eb, 0x07f0, 0x07f7, 0x07ff, 0x0815,
+ 0x081e, 0x0832, 0x083b, 0x0847, 0x0851, 0x0858, 0x085f, 0x0866,
+ 0x0877, 0x089d, 0x08a5, 0x08b1, 0x08b6, 0x08bb, 0x08cb, 0x08d9,
+ 0x08dd, 0x090c, 0x0910, 0x0919, 0x0925, 0x092c, 0x093a, 0x0946,
+ 0x094d, 0x0952, 0x0958, 0x0969, 0x096f, 0x0975, 0x097d, 0x0984,
+ 0x098a, 0x09b6, 0x09c7, 0x09ce, 0x09d8, 0x09df, 0x09f8, 0x0a01,
+ 0x0a1b, 0x0a40, 0x0a47, 0x0a4e, 0x0a5d, 0x0a62, 0x0a68, 0x0a6d,
+ // Entry 100 - 13F
+ 0x0a74, 0x0a91, 0x0a97, 0x0a9f, 0x0aae, 0x0ab4, 0x0aba, 0x0acc,
+ 0x0adf, 0x0ae6, 0x0af6, 0x0b07, 0x0b17, 0x0b28, 0x0b38, 0x0b4a,
+ 0x0b51, 0x0b71, 0x0b78, 0x0b86, 0x0b96, 0x0bb0, 0x0bc2, 0x0bcd,
+ 0x0bd6, 0x0be7, 0x0bf0, 0x0bf4, 0x0c02, 0x0c10, 0x0c16, 0x0c26,
+ 0x0c37, 0x0c47, 0x0c59,
+} // Size: 606 bytes
+
+var ptRegionStr string = "" + // Size: 3176 bytes
+ "Ilha de AscensãoAndorraEmirados Árabes UnidosAfeganistãoAntígua e Barbud" +
+ "aAnguillaAlbâniaArmêniaAntilhas HolandesasAngolaAntártidaArgentinaSamoa " +
+ "AmericanaÁustriaAustráliaArubaIlhas ÅlandAzerbaijãoBósnia e HerzegovinaB" +
+ "arbadosBangladeshBélgicaBurquina FasoBulgáriaBahreinBurundiBeninSão Bart" +
+ "olomeuBermudasBruneiBolíviaPaíses Baixos CaribenhosBrasilBahamasButãoIlh" +
+ "a BouvetBotsuanaBielorrússiaBelizeCanadáIlhas Cocos (Keeling)Congo - Kin" +
+ "shasaRepública Centro-AfricanaCongo - BrazzavilleSuíçaCosta do MarfimIlh" +
+ "as CookChileRepública dos CamarõesChinaColômbiaIlha de ClippertonCosta R" +
+ "icaCubaCabo VerdeCuraçaoIlha ChristmasChipreRepública TchecaAlemanhaDieg" +
+ "o GarciaDjibutiDinamarcaDominicaRepública DominicanaArgéliaCeuta e Melil" +
+ "haEquadorEstôniaEgitoSaara OcidentalEritreiaEspanhaEtiópiaUnião Europeia" +
+ "FinlândiaFijiIlhas MalvinasMicronésiaIlhas FaroeFrançaGabãoReino UnidoGr" +
+ "anadaGeórgiaGuiana FrancesaGuernseyGanaGibraltarGroenlândiaGâmbiaGuinéGu" +
+ "adalupeGuiné EquatorialGréciaIlhas Geórgia do Sul e Sandwich do SulGuate" +
+ "malaGuamGuiné-BissauGuianaHong Kong, RAE da ChinaIlhas Heard e McDonaldH" +
+ "ondurasCroáciaHaitiHungriaIlhas CanáriasIndonésiaIrlandaIsraelIlha de Ma" +
+ "nÍndiaTerritório Britânico do Oceano ÍndicoIraqueIrãIslândiaItáliaJersey" +
+ "JamaicaJordâniaJapãoQuêniaQuirguistãoCambojaQuiribatiComoresSão Cristóvã" +
+ "o e NevisCoreia do NorteCoreia do SulKuwaitIlhas CaymanCazaquistãoLaosLí" +
+ "banoSanta LúciaLiechtensteinSri LankaLibériaLesotoLituâniaLuxemburgoLetô" +
+ "niaLíbiaMarrocosMônacoMoldáviaMontenegroSão MartinhoMadagascarIlhas Mars" +
+ "hallMacedôniaMaliMianmar (Birmânia)MongóliaMacau, RAE da ChinaIlhas Mari" +
+ "anas do NorteMartinicaMauritâniaMontserratMaltaMaurícioMaldivasMalawiMéx" +
+ "icoMalásiaMoçambiqueNamíbiaNova CaledôniaNígerIlha NorfolkNigériaNicarág" +
+ "uaHolandaNoruegaNepalNauruNiueNova ZelândiaOmãPanamáPeruPolinésia France" +
+ "saPapua-Nova GuinéFilipinasPaquistãoPolôniaSaint Pierre e MiquelonIlhas " +
+ "PitcairnPorto RicoTerritórios palestinosPortugalPalauParaguaiCatarOceani" +
+ "a RemotaReuniãoRomêniaSérviaRússiaRuandaArábia SauditaIlhas SalomãoSeych" +
+ "ellesSudãoSuéciaCingapuraSanta HelenaEslovêniaSvalbard e Jan MayenEslová" +
+ "quiaSerra LeoaSan MarinoSenegalSomáliaSurinameSudão do SulSão Tomé e Prí" +
+ "ncipeEl SalvadorSint MaartenSíriaSuazilândiaTristão da CunhaIlhas Turks " +
+ "e CaicosChadeTerritórios Franceses do SulTogoTailândiaTajiquistãoTokelau" +
+ "Timor-LesteTurcomenistãoTunísiaTongaTurquiaTrinidad e TobagoTuvaluTaiwan" +
+ "TanzâniaUcrâniaUgandaIlhas Menores Distantes dos EUAEstados UnidosUrugua" +
+ "iUzbequistãoCidade do VaticanoSão Vicente e GranadinasVenezuelaIlhas Vir" +
+ "gens BritânicasIlhas Virgens dos EUAVietnãVanuatuWallis e FutunaSamoaKos" +
+ "ovoIêmenMayotteÁfrica do SulZâmbiaZimbábueRegião desconhecidaMundoÁfrica" +
+ "América do NorteAmérica do SulOceaniaÁfrica OcidentalAmérica CentralÁfri" +
+ "ca OrientalÁfrica do NorteÁfrica CentralÁfrica AustralAméricasAmérica Se" +
+ "tentrionalCaribeÁsia OrientalÁsia do SulSudeste AsiáticoEuropa do SulAus" +
+ "tralásiaMelanésiaRegião da MicronésiaPolinésiaÁsiaÁsia CentralÁsia Ocide" +
+ "ntalEuropaEuropa OrientalEuropa SetentrionalEuropa OcidentalAmérica Lati" +
+ "na"
+
+var ptRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0011, 0x0018, 0x002f, 0x003b, 0x004d, 0x0055, 0x005d,
+ 0x0065, 0x0078, 0x007e, 0x0088, 0x0091, 0x00a0, 0x00a8, 0x00b2,
+ 0x00b7, 0x00c3, 0x00ce, 0x00e3, 0x00eb, 0x00f5, 0x00fd, 0x010a,
+ 0x0113, 0x011a, 0x0121, 0x0126, 0x0135, 0x013d, 0x0143, 0x014b,
+ 0x0164, 0x016a, 0x0171, 0x0177, 0x0182, 0x018a, 0x0197, 0x019d,
+ 0x01a4, 0x01b9, 0x01c9, 0x01e3, 0x01f6, 0x01fd, 0x020c, 0x0216,
+ 0x021b, 0x0233, 0x0238, 0x0241, 0x0253, 0x025d, 0x0261, 0x026b,
+ 0x0273, 0x0281, 0x0287, 0x0298, 0x02a0, 0x02ac, 0x02b3, 0x02bc,
+ // Entry 40 - 7F
+ 0x02c4, 0x02d9, 0x02e1, 0x02f0, 0x02f7, 0x02ff, 0x0304, 0x0313,
+ 0x031b, 0x0322, 0x032a, 0x0339, 0x0343, 0x0347, 0x0355, 0x0360,
+ 0x036b, 0x0372, 0x0378, 0x0383, 0x038a, 0x0392, 0x03a1, 0x03a9,
+ 0x03ad, 0x03b6, 0x03c2, 0x03c9, 0x03cf, 0x03d8, 0x03e9, 0x03f0,
+ 0x0417, 0x0420, 0x0424, 0x0431, 0x0437, 0x044e, 0x0464, 0x046c,
+ 0x0474, 0x0479, 0x0480, 0x048f, 0x0499, 0x04a0, 0x04a6, 0x04b1,
+ 0x04b7, 0x04df, 0x04e5, 0x04e9, 0x04f2, 0x04f9, 0x04ff, 0x0506,
+ 0x050f, 0x0515, 0x051c, 0x0528, 0x052f, 0x0538, 0x053f, 0x0557,
+ // Entry 80 - BF
+ 0x0566, 0x0573, 0x0579, 0x0585, 0x0591, 0x0595, 0x059c, 0x05a8,
+ 0x05b5, 0x05be, 0x05c6, 0x05cc, 0x05d5, 0x05df, 0x05e7, 0x05ed,
+ 0x05f5, 0x05fc, 0x0605, 0x060f, 0x061c, 0x0626, 0x0634, 0x063e,
+ 0x0642, 0x0655, 0x065e, 0x0671, 0x0688, 0x0691, 0x069c, 0x06a6,
+ 0x06ab, 0x06b4, 0x06bc, 0x06c2, 0x06c9, 0x06d1, 0x06dc, 0x06e4,
+ 0x06f3, 0x06f9, 0x0705, 0x070d, 0x0717, 0x071e, 0x0725, 0x072a,
+ 0x072f, 0x0733, 0x0741, 0x0745, 0x074c, 0x0750, 0x0763, 0x0774,
+ 0x077d, 0x0787, 0x078f, 0x07a6, 0x07b4, 0x07be, 0x07d5, 0x07dd,
+ // Entry C0 - FF
+ 0x07e2, 0x07ea, 0x07ef, 0x07fd, 0x0805, 0x080d, 0x0814, 0x081b,
+ 0x0821, 0x0830, 0x083e, 0x0848, 0x084e, 0x0855, 0x085e, 0x086a,
+ 0x0874, 0x0888, 0x0893, 0x089d, 0x08a7, 0x08ae, 0x08b6, 0x08be,
+ 0x08cb, 0x08e1, 0x08ec, 0x08f8, 0x08fe, 0x090a, 0x091b, 0x092f,
+ 0x0934, 0x0951, 0x0955, 0x095f, 0x096b, 0x0972, 0x097d, 0x098b,
+ 0x0993, 0x0998, 0x099f, 0x09b0, 0x09b6, 0x09bc, 0x09c5, 0x09cd,
+ 0x09d3, 0x09f2, 0x0a00, 0x0a07, 0x0a13, 0x0a25, 0x0a3e, 0x0a47,
+ 0x0a60, 0x0a75, 0x0a7c, 0x0a83, 0x0a92, 0x0a97, 0x0a9d, 0x0aa3,
+ // Entry 100 - 13F
+ 0x0aaa, 0x0ab8, 0x0abf, 0x0ac8, 0x0adc, 0x0ae1, 0x0ae8, 0x0af9,
+ 0x0b08, 0x0b0f, 0x0b20, 0x0b30, 0x0b40, 0x0b50, 0x0b5f, 0x0b6e,
+ 0x0b77, 0x0b8c, 0x0b92, 0x0ba0, 0x0bac, 0x0bbd, 0x0bca, 0x0bd6,
+ 0x0be0, 0x0bf6, 0x0c00, 0x0c05, 0x0c12, 0x0c21, 0x0c27, 0x0c36,
+ 0x0c49, 0x0c59, 0x0c68,
+} // Size: 606 bytes
+
+var ptPTRegionStr string = "" + // Size: 687 bytes
+ "AnguilaArméniaAlandaBangladecheBarémBenimBaamasIlhas dos Cocos (Keeling)" +
+ "Congo-KinshasaCongo-BrazzavilleCamarõesCuraçauIlha do NatalRepública Che" +
+ "caJibutiDomínicaEstóniaIlhas FalklandIlhas FaroéGronelândiaGuameIrãoQuén" +
+ "iaSão Cristóvão e NevesIlhas CaimãoListenstaineSri LancaLetóniaMónacoMad" +
+ "agáscarMacedóniaMonserrateMauríciaMaláuiNova CaledóniaPaíses BaixosPolón" +
+ "iaSão Pedro e MiquelãoTerritórios palestinianosOceânia InsularRoméniaSei" +
+ "chelesSingapuraEslovéniaSão MarinhoSalvadorIlhas Turcas e CaicosToquelau" +
+ "TurquemenistãoTrindade e TobagoIlhas Menores Afastadas dos EUAUsbequistã" +
+ "oVietnameIémenMaioteZimbabuéOceâniaNorte de ÁfricaCaraíbasEuropa do Nort" +
+ "e"
+
+var ptPTRegionIdx = []uint16{ // 289 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007,
+ 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f,
+ 0x000f, 0x0015, 0x0015, 0x0015, 0x0015, 0x0020, 0x0020, 0x0020,
+ 0x0020, 0x0026, 0x0026, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b,
+ 0x002b, 0x002b, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031,
+ 0x0031, 0x004a, 0x0058, 0x0058, 0x0069, 0x0069, 0x0069, 0x0069,
+ 0x0069, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,
+ 0x007a, 0x0087, 0x0087, 0x0097, 0x0097, 0x0097, 0x009d, 0x009d,
+ // Entry 40 - 7F
+ 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00ae, 0x00ae, 0x00ae,
+ 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00bc, 0x00bc,
+ 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8,
+ 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4, 0x00d4,
+ 0x00d4, 0x00d4, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9,
+ 0x00d9, 0x00d9, 0x00d9, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de,
+ 0x00de, 0x00de, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00fd,
+ // Entry 80 - BF
+ 0x00fd, 0x00fd, 0x00fd, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a,
+ 0x0116, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x0127, 0x0127,
+ 0x0127, 0x012e, 0x012e, 0x012e, 0x012e, 0x0139, 0x0139, 0x0143,
+ 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x014d,
+ 0x014d, 0x0156, 0x0156, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d,
+ 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x017a, 0x017a, 0x017a,
+ 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a,
+ 0x017a, 0x017a, 0x0182, 0x0198, 0x0198, 0x0198, 0x01b2, 0x01b2,
+ // Entry C0 - FF
+ 0x01b2, 0x01b2, 0x01b2, 0x01c2, 0x01c2, 0x01ca, 0x01ca, 0x01ca,
+ 0x01ca, 0x01ca, 0x01ca, 0x01d3, 0x01d3, 0x01d3, 0x01dc, 0x01dc,
+ 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2, 0x01f2, 0x01f2, 0x01f2,
+ 0x01f2, 0x01f2, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x020f,
+ 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0217, 0x0217, 0x0226,
+ 0x0226, 0x0226, 0x0226, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237,
+ 0x0237, 0x0256, 0x0256, 0x0256, 0x0262, 0x0262, 0x0262, 0x0262,
+ 0x0262, 0x0262, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x0270,
+ // Entry 100 - 13F
+ 0x0276, 0x0276, 0x0276, 0x027f, 0x027f, 0x027f, 0x027f, 0x027f,
+ 0x027f, 0x0287, 0x0287, 0x0287, 0x0287, 0x0297, 0x0297, 0x0297,
+ 0x0297, 0x0297, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0,
+ 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0,
+ 0x02af,
+} // Size: 602 bytes
+
+var roRegionStr string = "" + // Size: 3238 bytes
+ "Insula AscensionAndorraEmiratele Arabe UniteAfganistanAntigua și Barbuda" +
+ "AnguillaAlbaniaArmeniaAntilele OlandezeAngolaAntarcticaArgentinaSamoa Am" +
+ "ericanăAustriaAustraliaArubaInsulele ÅlandAzerbaidjanBosnia și Herțegovi" +
+ "naBarbadosBangladeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSfântul" +
+ " BartolomeuBermudaBruneiBoliviaInsulele Caraibe OlandezeBraziliaBahamasB" +
+ "hutanInsula BouvetBotswanaBelarusBelizeCanadaInsulele Cocos (Keeling)Con" +
+ "go - KinshasaRepublica CentrafricanăCongo - BrazzavilleElvețiaCôte d’Ivo" +
+ "ireInsulele CookChileCamerunChinaColumbiaInsula ClippertonCosta RicaCuba" +
+ "Capul VerdeCuraçaoInsula ChristmasCipruRepublica CehăGermaniaDiego Garci" +
+ "aDjiboutiDanemarcaDominicaRepublica DominicanăAlgeriaCeuta și MelillaEcu" +
+ "adorEstoniaEgiptSahara OccidentalăEritreeaSpaniaEtiopiaUniunea Europeană" +
+ "FinlandaFijiInsulele FalklandMicroneziaInsulele FeroeFranțaGabonRegatul " +
+ "UnitGrenadaGeorgiaGuyana FrancezăGuernseyGhanaGibraltarGroenlandaGambiaG" +
+ "uineeaGuadelupaGuineea EcuatorialăGreciaGeorgia de Sud și Insulele Sandw" +
+ "ich de SudGuatemalaGuamGuineea-BissauGuyanaR.A.S. Hong Kong a ChineiInsu" +
+ "la Heard și Insulele McDonaldHondurasCroațiaHaitiUngariaInsulele CanareI" +
+ "ndoneziaIrlandaIsraelInsula ManIndiaTeritoriul Britanic din Oceanul Indi" +
+ "anIrakIranIslandaItaliaJerseyJamaicaIordaniaJaponiaKenyaKârgâzstanCambod" +
+ "giaKiribatiComoreSaint Kitts și NevisCoreea de NordCoreea de SudKuweitIn" +
+ "sulele CaymanKazahstanLaosLibanSfânta LuciaLiechtensteinSri LankaLiberia" +
+ "LesothoLituaniaLuxemburgLetoniaLibiaMarocMonacoRepublica MoldovaMunteneg" +
+ "ruSfântul MartinMadagascarInsulele MarshallMacedoniaMaliMyanmar (Birmani" +
+ "a)MongoliaR.A.S. Macao a ChineiInsulele Mariane de NordMartinicaMauritan" +
+ "iaMontserratMaltaMauritiusMaldiveMalawiMexicMalaysiaMozambicNamibiaNoua " +
+ "CaledonieNigerInsula NorfolkNigeriaNicaraguaȚările de JosNorvegiaNepalNa" +
+ "uruNiueNoua ZeelandăOmanPanamaPeruPolinezia FrancezăPapua-Noua GuineeFil" +
+ "ipinePakistanPoloniaSaint-Pierre și MiquelonInsulele PitcairnPuerto Rico" +
+ "Teritoriile PalestinienePortugaliaPalauParaguayQatarOceania PerifericăRé" +
+ "unionRomâniaSerbiaRusiaRwandaArabia SaudităInsulele SolomonSeychellesSud" +
+ "anSuediaSingaporeSfânta ElenaSloveniaSvalbard și Jan MayenSlovaciaSierra" +
+ " LeoneSan MarinoSenegalSomaliaSurinameSudanul de SudSao Tome și Principe" +
+ "El SalvadorSint-MaartenSiriaSwazilandTristan da CunhaInsulele Turks și C" +
+ "aicosCiadTeritoriile Australe și Antarctice FrancezeTogoThailandaTadjiki" +
+ "stanTokelauTimorul de EstTurkmenistanTunisiaTongaTurciaTrinidad și Tobag" +
+ "oTuvaluTaiwanTanzaniaUcrainaUgandaInsulele Îndepărtate ale S.U.A.Statele" +
+ " Unite ale AmericiiUruguayUzbekistanStatul Cetății VaticanuluiSaint Vinc" +
+ "ent și GrenadineleVenezuelaInsulele Virgine BritaniceInsulele Virgine S." +
+ "U.A.VietnamVanuatuWallis și FutunaSamoaKosovoYemenMayotteAfrica de SudZa" +
+ "mbiaZimbabweRegiune necunoscutăLumeAfricaAmerica de NordAmerica de SudOc" +
+ "eaniaAfrica OccidentalăAmerica CentralăAfrica OrientalăAfrica Septentrio" +
+ "nalăAfrica CentralăAfrica MeridionalăAmericiAmerica SeptentrionalăCaraib" +
+ "eAsia OrientalăAsia MeridionalăAsia de Sud-EstEuropa MeridionalăAustrala" +
+ "siaMelaneziaRegiunea MicroneziaPolineziaAsiaAsia CentralăAsia Occidental" +
+ "ăEuropaEuropa OrientalăEuropa SeptentrionalăEuropa OccidentalăAmerica L" +
+ "atină"
+
+var roRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0017, 0x002c, 0x0036, 0x0049, 0x0051, 0x0058,
+ 0x005f, 0x0070, 0x0076, 0x0080, 0x0089, 0x0099, 0x00a0, 0x00a9,
+ 0x00ae, 0x00bd, 0x00c8, 0x00df, 0x00e7, 0x00f1, 0x00f7, 0x0103,
+ 0x010b, 0x0112, 0x0119, 0x011e, 0x0131, 0x0138, 0x013e, 0x0145,
+ 0x015e, 0x0166, 0x016d, 0x0173, 0x0180, 0x0188, 0x018f, 0x0195,
+ 0x019b, 0x01b3, 0x01c3, 0x01db, 0x01ee, 0x01f6, 0x0206, 0x0213,
+ 0x0218, 0x021f, 0x0224, 0x022c, 0x023d, 0x0247, 0x024b, 0x0256,
+ 0x025e, 0x026e, 0x0273, 0x0282, 0x028a, 0x0296, 0x029e, 0x02a7,
+ // Entry 40 - 7F
+ 0x02af, 0x02c4, 0x02cb, 0x02dc, 0x02e3, 0x02ea, 0x02ef, 0x0302,
+ 0x030a, 0x0310, 0x0317, 0x0329, 0x0331, 0x0335, 0x0346, 0x0350,
+ 0x035e, 0x0365, 0x036a, 0x0376, 0x037d, 0x0384, 0x0394, 0x039c,
+ 0x03a1, 0x03aa, 0x03b4, 0x03ba, 0x03c1, 0x03ca, 0x03de, 0x03e4,
+ 0x040f, 0x0418, 0x041c, 0x042a, 0x0430, 0x0449, 0x046b, 0x0473,
+ 0x047b, 0x0480, 0x0487, 0x0496, 0x049f, 0x04a6, 0x04ac, 0x04b6,
+ 0x04bb, 0x04e1, 0x04e5, 0x04e9, 0x04f0, 0x04f6, 0x04fc, 0x0503,
+ 0x050b, 0x0512, 0x0517, 0x0523, 0x052c, 0x0534, 0x053a, 0x054f,
+ // Entry 80 - BF
+ 0x055d, 0x056a, 0x0570, 0x057f, 0x0588, 0x058c, 0x0591, 0x059e,
+ 0x05ab, 0x05b4, 0x05bb, 0x05c2, 0x05ca, 0x05d3, 0x05da, 0x05df,
+ 0x05e4, 0x05ea, 0x05fb, 0x0605, 0x0614, 0x061e, 0x062f, 0x0638,
+ 0x063c, 0x064e, 0x0656, 0x066b, 0x0683, 0x068c, 0x0696, 0x06a0,
+ 0x06a5, 0x06ae, 0x06b5, 0x06bb, 0x06c0, 0x06c8, 0x06d0, 0x06d7,
+ 0x06e5, 0x06ea, 0x06f8, 0x06ff, 0x0708, 0x0717, 0x071f, 0x0724,
+ 0x0729, 0x072d, 0x073b, 0x073f, 0x0745, 0x0749, 0x075c, 0x076d,
+ 0x0775, 0x077d, 0x0784, 0x079d, 0x07ae, 0x07b9, 0x07d1, 0x07db,
+ // Entry C0 - FF
+ 0x07e0, 0x07e8, 0x07ed, 0x0800, 0x0808, 0x0810, 0x0816, 0x081b,
+ 0x0821, 0x0830, 0x0840, 0x084a, 0x084f, 0x0855, 0x085e, 0x086b,
+ 0x0873, 0x0889, 0x0891, 0x089d, 0x08a7, 0x08ae, 0x08b5, 0x08bd,
+ 0x08cb, 0x08e0, 0x08eb, 0x08f7, 0x08fc, 0x0905, 0x0915, 0x092e,
+ 0x0932, 0x095e, 0x0962, 0x096b, 0x0976, 0x097d, 0x098b, 0x0997,
+ 0x099e, 0x09a3, 0x09a9, 0x09bc, 0x09c2, 0x09c8, 0x09d0, 0x09d7,
+ 0x09dd, 0x09fe, 0x0a18, 0x0a1f, 0x0a29, 0x0a45, 0x0a62, 0x0a6b,
+ 0x0a85, 0x0a9c, 0x0aa3, 0x0aaa, 0x0abb, 0x0ac0, 0x0ac6, 0x0acb,
+ // Entry 100 - 13F
+ 0x0ad2, 0x0adf, 0x0ae5, 0x0aed, 0x0b01, 0x0b05, 0x0b0b, 0x0b1a,
+ 0x0b28, 0x0b2f, 0x0b42, 0x0b53, 0x0b64, 0x0b7a, 0x0b8a, 0x0b9d,
+ 0x0ba4, 0x0bbb, 0x0bc2, 0x0bd1, 0x0be2, 0x0bf1, 0x0c04, 0x0c0f,
+ 0x0c18, 0x0c2b, 0x0c34, 0x0c38, 0x0c46, 0x0c57, 0x0c5d, 0x0c6e,
+ 0x0c84, 0x0c97, 0x0ca6,
+} // Size: 606 bytes
+
+var ruRegionStr string = "" + // Size: 5872 bytes
+ "о-в ВознесенияАндорраОАЭАфганистанАнтигуа и БарбудаАнгильяАлбанияАрмения" +
+ "Нидерландские Антильские о-ваАнголаАнтарктидаАргентинаАмериканское Само" +
+ "аАвстрияАвстралияАрубаАландские о-ваАзербайджанБосния и ГерцеговинаБарб" +
+ "адосБангладешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСен-Бартельм" +
+ "иБермудские о-ваБруней-ДаруссаламБоливияБонэйр, Синт-Эстатиус и СабаБра" +
+ "зилияБагамские о-ваБутано-в БувеБотсванаБеларусьБелизКанадаКокосовые о-" +
+ "ваКонго - КиншасаЦАРКонго - БраззавильШвейцарияКот-д’Ивуаро-ва КукаЧили" +
+ "КамерунКитайКолумбияо-в КлиппертонКоста-РикаКубаКабо-ВердеКюрасаоо-в Ро" +
+ "ждестваКипрЧехияГерманияДиего-ГарсияДжибутиДанияДоминикаДоминиканская Р" +
+ "еспубликаАлжирСеута и МелильяЭквадорЭстонияЕгипетЗападная СахараЭритрея" +
+ "ИспанияЭфиопияЕвропейский союзФинляндияФиджиФолклендские о-ваФедеративн" +
+ "ые Штаты МикронезииФарерские о-ваФранцияГабонВеликобританияГренадаГрузи" +
+ "яФранцузская ГвианаГернсиГанаГибралтарГренландияГамбияГвинеяГваделупаЭк" +
+ "ваториальная ГвинеяГрецияЮжная Георгия и Южные Сандвичевы о-ваГватемала" +
+ "ГуамГвинея-БисауГайанаГонконг (специальный административный район)о-ва " +
+ "Херд и МакдональдГондурасХорватияГаитиВенгрияКанарские о-ваИндонезияИрл" +
+ "андияИзраильо-в МэнИндияБританская территория в Индийском океанеИракИра" +
+ "нИсландияИталияДжерсиЯмайкаИорданияЯпонияКенияКиргизияКамбоджаКирибатиК" +
+ "оморские о-ваСент-Китс и НевисКНДРРеспублика КореяКувейтКаймановы о-ваК" +
+ "азахстанЛаосЛиванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксем" +
+ "бургЛатвияЛивияМароккоМонакоМолдоваЧерногорияСен-МартенМадагаскарМаршал" +
+ "ловы о-ваМакедонияМалиМьянма (Бирма)МонголияМакао (специальный админист" +
+ "ративный район)Северные Марианские о-ваМартиникаМавританияМонтсерратМал" +
+ "ьтаМаврикийМальдивыМалавиМексикаМалайзияМозамбикНамибияНовая КаледонияН" +
+ "игеро-в НорфолкНигерияНикарагуаНидерландыНорвегияНепалНауруНиуэНовая Зе" +
+ "ландияОманПанамаПеруФранцузская ПолинезияПапуа – Новая ГвинеяФилиппиныП" +
+ "акистанПольшаСен-Пьер и Микелонострова ПиткэрнПуэрто-РикоПалестинские т" +
+ "ерриторииПортугалияПалауПарагвайКатарВнешняя ОкеанияРеюньонРумынияСерби" +
+ "яРоссияРуандаСаудовская АравияСоломоновы о-ваСейшельские о-ваСуданШвеци" +
+ "яСингапуро-в Св. ЕленыСловенияШпицберген и Ян-МайенСловакияСьерра-Леоне" +
+ "Сан-МариноСенегалСомалиСуринамЮжный СуданСан-Томе и ПринсипиСальвадорСи" +
+ "нт-МартенСирияСвазилендТристан-да-Куньяо-ва Тёркс и КайкосЧадФранцузски" +
+ "е Южные ТерриторииТогоТаиландТаджикистанТокелауВосточный ТиморТуркменис" +
+ "танТунисТонгаТурцияТринидад и ТобагоТувалуТайваньТанзанияУкраинаУгандаВ" +
+ "нешние малые о-ва (США)Соединенные ШтатыУругвайУзбекистанВатиканСент-Ви" +
+ "нсент и ГренадиныВенесуэлаВиргинские о-ва (Британские)Виргинские о-ва (" +
+ "США)ВьетнамВануатуУоллис и ФутунаСамоаКосовоЙеменМайоттаЮАРЗамбияЗимбаб" +
+ "веНеизвестный регионМирАфрикаСеверная АмерикаЮжная АмерикаОкеанияЗападн" +
+ "ая АфрикаЦентральная АмерикаВосточная АфрикаСеверная АфрикаЦентральная " +
+ "АфрикаЮжная АфрикаАмерикаСеверная Америка – США и КанадаКарибыВосточная" +
+ " АзияЮжная АзияЮго-Восточная АзияЮжная ЕвропаАвстралазияМеланезияМикроне" +
+ "зияПолинезияАзияСредняя АзияБлижний и Средний ВостокЕвропаВосточная Евр" +
+ "опаСеверная ЕвропаЗападная ЕвропаЛатинская Америка"
+
+var ruRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001a, 0x0028, 0x002e, 0x0042, 0x0062, 0x0070, 0x007e,
+ 0x008c, 0x00c3, 0x00cf, 0x00e3, 0x00f5, 0x0118, 0x0126, 0x0138,
+ 0x0142, 0x015c, 0x0172, 0x0198, 0x01a8, 0x01ba, 0x01c8, 0x01df,
+ 0x01ef, 0x01fd, 0x020b, 0x0215, 0x022e, 0x024a, 0x026b, 0x0279,
+ 0x02ac, 0x02bc, 0x02d6, 0x02e0, 0x02ee, 0x02fe, 0x030e, 0x0318,
+ 0x0324, 0x033e, 0x0359, 0x035f, 0x0380, 0x0392, 0x03a8, 0x03b8,
+ 0x03c0, 0x03ce, 0x03d8, 0x03e8, 0x0402, 0x0415, 0x041d, 0x0430,
+ 0x043e, 0x0456, 0x045e, 0x0468, 0x0478, 0x048f, 0x049d, 0x04a7,
+ // Entry 40 - 7F
+ 0x04b7, 0x04e6, 0x04f0, 0x050c, 0x051a, 0x0528, 0x0534, 0x0551,
+ 0x055f, 0x056d, 0x057b, 0x059a, 0x05ac, 0x05b6, 0x05d6, 0x060e,
+ 0x0628, 0x0636, 0x0640, 0x065c, 0x066a, 0x0676, 0x0699, 0x06a5,
+ 0x06ad, 0x06bf, 0x06d3, 0x06df, 0x06eb, 0x06fd, 0x0726, 0x0732,
+ 0x0776, 0x0788, 0x0790, 0x07a7, 0x07b3, 0x0806, 0x082e, 0x083e,
+ 0x084e, 0x0858, 0x0866, 0x0880, 0x0892, 0x08a2, 0x08b0, 0x08bc,
+ 0x08c6, 0x0912, 0x091a, 0x0922, 0x0932, 0x093e, 0x094a, 0x0956,
+ 0x0966, 0x0972, 0x097c, 0x098c, 0x099c, 0x09ac, 0x09c6, 0x09e5,
+ // Entry 80 - BF
+ 0x09ed, 0x0a0c, 0x0a18, 0x0a32, 0x0a44, 0x0a4c, 0x0a56, 0x0a69,
+ 0x0a7f, 0x0a90, 0x0a9e, 0x0aaa, 0x0ab4, 0x0ac8, 0x0ad4, 0x0ade,
+ 0x0aec, 0x0af8, 0x0b06, 0x0b1a, 0x0b2d, 0x0b41, 0x0b5d, 0x0b6f,
+ 0x0b77, 0x0b90, 0x0ba0, 0x0bef, 0x0c1c, 0x0c2e, 0x0c42, 0x0c56,
+ 0x0c62, 0x0c72, 0x0c82, 0x0c8e, 0x0c9c, 0x0cac, 0x0cbc, 0x0cca,
+ 0x0ce7, 0x0cf1, 0x0d05, 0x0d13, 0x0d25, 0x0d39, 0x0d49, 0x0d53,
+ 0x0d5d, 0x0d65, 0x0d80, 0x0d88, 0x0d94, 0x0d9c, 0x0dc5, 0x0deb,
+ 0x0dfd, 0x0e0d, 0x0e19, 0x0e3a, 0x0e57, 0x0e6c, 0x0e99, 0x0ead,
+ // Entry C0 - FF
+ 0x0eb7, 0x0ec7, 0x0ed1, 0x0eee, 0x0efc, 0x0f0a, 0x0f16, 0x0f22,
+ 0x0f2e, 0x0f4f, 0x0f6b, 0x0f89, 0x0f93, 0x0f9f, 0x0faf, 0x0fc5,
+ 0x0fd5, 0x0ffc, 0x100c, 0x1023, 0x1036, 0x1044, 0x1050, 0x105e,
+ 0x1073, 0x1096, 0x10a8, 0x10bd, 0x10c7, 0x10d9, 0x10f7, 0x1119,
+ 0x111f, 0x1155, 0x115d, 0x116b, 0x1181, 0x118f, 0x11ac, 0x11c4,
+ 0x11ce, 0x11d8, 0x11e4, 0x1204, 0x1210, 0x121e, 0x122e, 0x123c,
+ 0x1248, 0x1272, 0x1293, 0x12a1, 0x12b5, 0x12c3, 0x12f0, 0x1302,
+ 0x1335, 0x135a, 0x1368, 0x1376, 0x1392, 0x139c, 0x13a8, 0x13b2,
+ // Entry 100 - 13F
+ 0x13c0, 0x13c6, 0x13d2, 0x13e2, 0x1405, 0x140b, 0x1417, 0x1436,
+ 0x144f, 0x145d, 0x147a, 0x149f, 0x14be, 0x14db, 0x14fe, 0x1515,
+ 0x1523, 0x155d, 0x1569, 0x1584, 0x1597, 0x15b9, 0x15d0, 0x15e6,
+ 0x15f8, 0x160c, 0x161e, 0x1626, 0x163d, 0x166a, 0x1676, 0x1695,
+ 0x16b2, 0x16cf, 0x16f0,
+} // Size: 606 bytes
+
+var siRegionStr string = "" + // Size: 9356 bytes
+ "ඇසෙන්ෂන් දිවයිනඇන්ඩෝරාවඑක්සත් අරාබි එමිර් රාජ්\u200dයයඇෆ්ගනිස්ථානයඇන්ටිග" +
+ "ුවා සහ බාබියුඩාවඇන්ගුයිලාවඇල්බේනියාවආර්මේනියාවනෙදර්ලන්ත ඇන්ටිලීසියඇන්ග" +
+ "ෝලාවඇන්ටාක්ටිකාවආර්ජෙන්ටිනාවඇමරිකානු සැමෝවාවඔස්ට්\u200dරියාවඕස්ට්" +
+ "\u200dරේලියාවඅරුබාවඕලන්ඩ් දූපත්අසර්බයිජානයබොස්නියාව සහ හර්සගොවීනාවබාර්බඩ" +
+ "ෝස්බංග්ලාදේශයබෙල්ජියමබර්කිනා ෆාසෝබල්ගේරියාවබහරේන්බුරුන්දිබෙනින්ශාන්ත බ" +
+ "ර්තලෙමිබර්මියුඩාබෲනායිබොලීවියාවකැරිබියානු නෙදර්ලන්තයබ්\u200dරසීලයබහමාස" +
+ "්භූතානයබුවට් දුපත්බොට්ස්වානාබෙලරුස්බෙලීස්කැනඩාවකොකෝස් දූපත්කොංගො - කින" +
+ "්ශාසාමධ්\u200dයම අප්\u200dරිකානු ජනරජයකොංගො - බ්\u200dරසාවිල්ස්විස්ටර්" +
+ "ලන්තයකෝට් දි අයිවරිකුක් දූපත්චිලීකැමරූන්චීනයකොළොම්බියාවක්ලීපර්ටන් දූපත" +
+ "කොස්ටරිකාවකියුබාවකේප් වර්ඩ්කුරකාවෝක්\u200dරිස්මස් දූපතසයිප්\u200dරසයචෙ" +
+ "ක් ජනරජයජර්මනියදියාගෝ ගාර්සියාජිබුටිඩෙන්මාර්කයඩොමිනිකාවඩොමිනිකා ජනරජයඇ" +
+ "ල්ජීරියාවසෙයුටා සහ මෙලිල්ලාඉක්වදෝරයඑස්තෝනියාවඊජිප්තුවබටහිර සහරාවඑරිත්" +
+ "\u200dරියාවස්පාඤ්ඤයඉතියෝපියාවයුරෝපා සංගමයෆින්ලන්තයෆීජීෆෝක්ලන්ත දූපත්මයික" +
+ "්\u200dරොනීසියාවෆැරෝ දූපත්ප්\u200dරංශයගැබොන්එක්සත් රාජධානියග්\u200dරැන" +
+ "ඩාවජෝර්ජියාවප්\u200dරංශ ගයනාවගර්න්සියඝානාවජිබ්\u200dරෝල්ටාවග්\u200dරීන" +
+ "්ලන්තයගැම්බියාවගිණියාවග්වෝඩලෝප්සමක ගිනියාවග්\u200dරීසියදකුණු ජෝර්ජියාව" +
+ " සහ දකුණු සැන්ඩ්විච් දූපත්ගෝතමාලාවගුවාම්ගිනි බිසව්ගයනාවහොංකොං චීන විශේෂ " +
+ "පරිපාලන කලාපයහර්ඩ් දූපත සහ මැක්ඩොනල්ඩ් දූපත්හොන්ඩුරාස්ක්\u200dරොඒෂියාව" +
+ "හයිටිහන්ගේරියාවකැනරි සූපත්ඉන්දුනීසියාවඅයර්ලන්තයඊශ්\u200dරායලයඅයිල් ඔෆ්" +
+ " මෑන්ඉන්දියාවබ්\u200dරිතාන්\u200dය ඉන්දීය සාගර බල ප්\u200dරදේශයඉරාකයඉරාන" +
+ "යඅයිස්ලන්තයඉතාලියජර්සිජැමෙයිකාවජෝර්දානයජපානයකෙන්යාවකිර්ගිස්තානයකාම්බෝජ" +
+ "යකිරිබතිකොමොරෝස්ශාන්ත කිට්ස් සහ නේවිස්උතුරු කොරියාවදකුණු කොරියාවකුවේටය" +
+ "කේමන් දූපත්කසකස්තානයලාඕසයලෙබනනයශාන්ත ලුසියාලික්ටන්ස්ටයින්ශ්\u200dරී ලං" +
+ "කාවලයිබීරියාවලෙසතෝලිතුවේනියාවලක්ශම්බර්ග්ලැට්වියාවලිබියාවමොරොක්කෝවමොනැක" +
+ "ෝවමොල්ඩෝවාවමොන්ටෙනීග්\u200dරෝශාන්ත මාර්ටින්මැඩගස්කරයමාෂල් දූපත්මැසිඩෝන" +
+ "ියාවමාලිමියන්මාරය (බුරුමය)මොන්ගෝලියාවමකාවු චීන විශේෂ පරිපාලන කලාපයඋතුර" +
+ "ු මරියානා දූපත්මර්ටිනික්මොරිටේනියාවමොන්සෙරාට්මෝල්ටාවමුරුසියමාල දිවයිනම" +
+ "ලාවිමෙක්සිකෝවමැලේසියාවමොසැම්බික්නැමීබියාවනව කැලිඩෝනියාවනයිජර්නෝෆෝක් දූ" +
+ "පතනයිජීරියාවනිකරගුවාවනෙදර්ලන්තයනෝර්වේනේපාලයනාවුරුනියූනවසීලන්තයඕමානයපැන" +
+ "මාවපේරුප්\u200dරංශ පොලිනීසියාවපැපුවා නිව් ගිනියාවපිලිපීනයපාකිස්තානයපෝල" +
+ "න්තයශාන්ත පියරේ සහ මැකෝලන්පිට්කෙය්න් දූපත්පුවර්ටෝ රිකෝපලස්තීන රාජ්" +
+ "\u200dයයපෘතුගාලයපලාවුපැරගුවේකටාර්ඈත ඕෂනියාවරීයුනියන්රුමේනියාවසර්බියාවරුස" +
+ "ියාවරුවන්ඩාවසෞදි අරාබියසොලමන් දූපත්සීශෙල්ස්සූඩානයස්වීඩනයසිංගප්පූරුවශාන" +
+ "්ත හෙලේනාස්ලෝවේනියාවස්වෙල්බර්ඩ් සහ ජේන් මයේන්ස්ලෝවැකියාවසියරාලියෝන්සැන" +
+ "් මැරිනෝසෙනගාලයසෝමාලියාවසුරිනාමයදකුණු සුඩානයසාඕ තෝම් සහ ප්\u200dරින්සි" +
+ "ප්එල් සැල්වදෝරයශාන්ත මාර්ටෙන්සිරියාවස්වාසිලන්තයට්\u200dරිස්ටන් ද කුන්හ" +
+ "ාටර්ක්ස් සහ කයිකොස් දූපත්චැච්දකුණු ප්\u200dරංශ දූපත් සමූහයටොගෝතායිලන්ත" +
+ "යටජිකිස්තානයටොකලාවුටිමෝර් - ලෙස්ත්ටර්ක්මෙනිස්ථානයටියුනීසියාවටොංගාතුර්ක" +
+ "ියට්\u200dරිනිඩෑඩ් සහ ටොබැගෝටුවාලූතායිවානයටැන්සානියාවයුක්රේනයඋගන්ඩාවඑක" +
+ "්සත් ජනපද ඈත දූපත්එක්සත් ජනපදයඋරුගුවේඋස්බෙකිස්ථානයවතිකානු නගරයශාන්ත වි" +
+ "න්සන්ට් සහ ග්\u200dරෙනඩින්ස්වෙනිසියුලාවබ්\u200dරිතාන්\u200dය වර්ජින් ද" +
+ "ූපත්ඇමරිකානු වර්ජින් දූපත්වියට්නාමයවනුවාටුවැලිස් සහ ෆුටුනාසැමෝවාකොසෝවෝ" +
+ "යේමනයමයෝට්දකුණු අප්\u200dරිකාවසැම්බියාවසිම්බාබ්වේහඳුනා නොගත් කළාපයලෝකය" +
+ "අප්\u200dරිකාවඋතුරු ඇමෙරිකාවදකුණු ඇමෙරිකාවඕෂනියාවබටහිරදිග අප්\u200dරික" +
+ "ාවමධ්\u200dයම ඇමෙරිකාවපෙරදිග අප්\u200dරිකාවඋතුරුදිග අප්\u200dරිකාවමධ්" +
+ "\u200dයම අප්\u200dරිකාවදකුණුදිග අප්\u200dරිකාවඇමරිකාවඋතුරුදිග ඇමෙරිකාවකැ" +
+ "රීබියන්නැගෙනහිර ආසියාවදකුණු ආසියාවඅග්නිදිග ආසියාවදකුණුදිග යුරෝපයඕස්ට්" +
+ "\u200dරලේෂියාවමෙලනීසියාවමයික්\u200dරෝනීසියානු කළාපයපොලිනීසියාවආසියාවමධ්" +
+ "\u200dයම ආසියාවබටහිර ආසියාවයුරෝපයනැගෙනහිර යුරෝපයඋතුරු යුරෝපයබටහිර යුරෝපය" +
+ "ලතින් ඇමෙරිකාව"
+
+var siRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x002b, 0x0043, 0x008b, 0x00af, 0x00ed, 0x010b, 0x0129,
+ 0x0147, 0x0181, 0x0199, 0x01bd, 0x01e1, 0x020f, 0x0230, 0x0257,
+ 0x0269, 0x028b, 0x02ac, 0x02f0, 0x030b, 0x0329, 0x0341, 0x0363,
+ 0x0381, 0x0393, 0x03ab, 0x03bd, 0x03e5, 0x0400, 0x0412, 0x042d,
+ 0x046a, 0x0482, 0x0494, 0x04a6, 0x04c5, 0x04e3, 0x04f8, 0x050a,
+ 0x051c, 0x053e, 0x0568, 0x05a9, 0x05d9, 0x0603, 0x0629, 0x0645,
+ 0x0651, 0x0666, 0x0672, 0x0693, 0x06be, 0x06dc, 0x06f1, 0x070d,
+ 0x0722, 0x074d, 0x0768, 0x0784, 0x0799, 0x07c4, 0x07d6, 0x07f4,
+ // Entry 40 - 7F
+ 0x080f, 0x0837, 0x0855, 0x0887, 0x089f, 0x08bd, 0x08d5, 0x08f4,
+ 0x0915, 0x092d, 0x094b, 0x096d, 0x0988, 0x0994, 0x09bc, 0x09e9,
+ 0x0a05, 0x0a1a, 0x0a2c, 0x0a57, 0x0a72, 0x0a8d, 0x0aaf, 0x0ac7,
+ 0x0ad6, 0x0afa, 0x0b1e, 0x0b39, 0x0b4e, 0x0b69, 0x0b88, 0x0ba0,
+ 0x0c11, 0x0c29, 0x0c3b, 0x0c57, 0x0c66, 0x0cb8, 0x0d0d, 0x0d2b,
+ 0x0d4c, 0x0d5b, 0x0d79, 0x0d98, 0x0dbc, 0x0dd7, 0x0df2, 0x0e18,
+ 0x0e30, 0x0e91, 0x0ea0, 0x0eaf, 0x0ecd, 0x0edf, 0x0eee, 0x0f09,
+ 0x0f21, 0x0f30, 0x0f45, 0x0f69, 0x0f81, 0x0f96, 0x0fae, 0x0fea,
+ // Entry 80 - BF
+ 0x100f, 0x1034, 0x1046, 0x1065, 0x1080, 0x108f, 0x10a1, 0x10c3,
+ 0x10ed, 0x110c, 0x112a, 0x1139, 0x115a, 0x117b, 0x1196, 0x11ab,
+ 0x11c6, 0x11db, 0x11f6, 0x121d, 0x1245, 0x1260, 0x127f, 0x12a0,
+ 0x12ac, 0x12dc, 0x12fd, 0x134c, 0x1381, 0x139c, 0x13bd, 0x13db,
+ 0x13f0, 0x1405, 0x1421, 0x1430, 0x144b, 0x1466, 0x1484, 0x149f,
+ 0x14c7, 0x14d9, 0x14f8, 0x1516, 0x1531, 0x154f, 0x1561, 0x1573,
+ 0x1585, 0x1591, 0x15ac, 0x15bb, 0x15cd, 0x15d9, 0x160d, 0x1642,
+ 0x165a, 0x1678, 0x168d, 0x16c9, 0x16f7, 0x1719, 0x1744, 0x175c,
+ // Entry C0 - FF
+ 0x176b, 0x1780, 0x178f, 0x17ab, 0x17c6, 0x17e1, 0x17f9, 0x180e,
+ 0x1826, 0x1845, 0x1867, 0x187f, 0x1891, 0x18a6, 0x18c7, 0x18e9,
+ 0x190a, 0x194f, 0x1970, 0x1991, 0x19b0, 0x19c5, 0x19e0, 0x19f8,
+ 0x1a1a, 0x1a59, 0x1a7e, 0x1aa6, 0x1abb, 0x1adc, 0x1b11, 0x1b53,
+ 0x1b5f, 0x1ba1, 0x1bad, 0x1bc8, 0x1be9, 0x1bfe, 0x1c25, 0x1c52,
+ 0x1c73, 0x1c82, 0x1c97, 0x1cd2, 0x1ce4, 0x1cfc, 0x1d1d, 0x1d35,
+ 0x1d4a, 0x1d80, 0x1da2, 0x1db7, 0x1dde, 0x1e00, 0x1e57, 0x1e78,
+ 0x1ebf, 0x1efd, 0x1f18, 0x1f2d, 0x1f59, 0x1f6b, 0x1f7d, 0x1f8c,
+ // Entry 100 - 13F
+ 0x1f9b, 0x1fc6, 0x1fe1, 0x1fff, 0x202e, 0x203a, 0x2055, 0x207d,
+ 0x20a5, 0x20ba, 0x20ee, 0x2119, 0x2147, 0x217b, 0x21a9, 0x21dd,
+ 0x21f2, 0x2223, 0x223e, 0x2269, 0x228b, 0x22b6, 0x22e1, 0x230b,
+ 0x2329, 0x2369, 0x238a, 0x239c, 0x23c1, 0x23e3, 0x23f5, 0x2420,
+ 0x2442, 0x2464, 0x248c,
+} // Size: 606 bytes
+
+var skRegionStr string = "" + // Size: 3211 bytes
+ "AscensiónAndorraSpojené arabské emirátyAfganistanAntigua a BarbudaAnguil" +
+ "laAlbánskoArménskoHolandské AntilyAngolaAntarktídaArgentínaAmerická Samo" +
+ "aRakúskoAustráliaArubaÅlandyAzerbajdžanBosna a HercegovinaBarbadosBangla" +
+ "déšBelgickoBurkina FasoBulharskoBahrajnBurundiBeninSvätý BartolomejBermu" +
+ "dyBrunejBolíviaKaribské HolandskoBrazíliaBahamyBhutánBouvetov ostrovBots" +
+ "wanaBieloruskoBelizeKanadaKokosové ostrovyKongo - KinshasaStredoafrická " +
+ "republikaKongo - BrazzavilleŠvajčiarskoPobrežie SlonovinyCookove ostrovy" +
+ "ČileKamerunČínaKolumbiaClippertonKostarikaKubaKapverdyCuraçaoVianočný o" +
+ "strovCyprusČeská republikaNemeckoDiego GarcíaDžibutskoDánskoDominikaDomi" +
+ "nikánska republikaAlžírskoCeuta a MelillaEkvádorEstónskoEgyptZápadná Sah" +
+ "araEritreaŠpanielskoEtiópiaEurópska úniaFínskoFidžiFalklandyMikronéziaFa" +
+ "erské ostrovyFrancúzskoGabonSpojené kráľovstvoGrenadaGruzínskoFrancúzska" +
+ " GuayanaGuernseyGhanaGibraltárGrónskoGambiaGuineaGuadeloupeRovníková Gui" +
+ "neaGréckoJužná Georgia a Južné Sandwichove ostrovyGuatemalaGuamGuinea-Bi" +
+ "ssauGuayanaHongkong – OAO ČínyHeardov ostrov a McDonaldove ostrovyHondur" +
+ "asChorvátskoHaitiMaďarskoKanárske ostrovyIndonéziaÍrskoIzraelOstrov ManI" +
+ "ndiaBritské indickooceánske územieIrakIránIslandTalianskoJerseyJamajkaJo" +
+ "rdánskoJaponskoKeňaKirgizskoKambodžaKiribatiKomorySvätý Krištof a NevisS" +
+ "everná KóreaJužná KóreaKuvajtKajmanie ostrovyKazachstanLaosLibanonSvätá " +
+ "LuciaLichtenštajnskoSrí LankaLibériaLesothoLitvaLuxemburskoLotyšskoLíbya" +
+ "MarokoMonakoMoldavskoČierna HoraSvätý MartinMadagaskarMarshallove ostrov" +
+ "yMacedónskoMaliMjanmarskoMongolskoMacao – OAO ČínySeverné MariányMartini" +
+ "kMauritániaMontserratMaltaMauríciusMaldivyMalawiMexikoMalajziaMozambikNa" +
+ "míbiaNová KaledóniaNigerNorfolkNigériaNikaraguaHolandskoNórskoNepálNauru" +
+ "NiueNový ZélandOmánPanamaPeruFrancúzska PolynéziaPapua Nová GuineaFilipí" +
+ "nyPakistanPoľskoSaint Pierre a MiquelonPitcairnove ostrovyPortorikoPales" +
+ "tínske územiaPortugalskoPalauParaguajKatarostatné TichomorieRéunionRumun" +
+ "skoSrbskoRuskoRwandaSaudská ArábiaŠalamúnove ostrovySeychelySudánŠvédsko" +
+ "SingapurSvätá HelenaSlovinskoSvalbard a Jan MayenSlovenskoSierra LeoneSa" +
+ "n MarínoSenegalSomálskoSurinamJužný SudánSvätý Tomáš a Princov ostrovSal" +
+ "vádorSint MaartenSýriaSvazijskoTristan da CunhaTurks a CaicosČadFrancúzs" +
+ "ke južné a antarktické územiaTogoThajskoTadžikistanTokelauVýchodný Timor" +
+ "TurkménskoTuniskoTongaTureckoTrinidad a TobagoTuvaluTaiwanTanzániaUkraji" +
+ "naUgandaMenšie odľahlé ostrovy USASpojené štátyUruguajUzbekistanVatikánS" +
+ "vätý Vincent a GrenadínyVenezuelaBritské Panenské ostrovyAmerické Panens" +
+ "ké ostrovyVietnamVanuatuWallis a FutunaSamoaKosovoJemenMayotteJužná Afri" +
+ "kaZambiaZimbabweneznámy regiónsvetAfrikaSeverná AmerikaJužná AmerikaOceá" +
+ "niazápadná AfrikaStredná Amerikavýchodná Afrikaseverná Afrikastredná Afr" +
+ "ikajužné územia AfrikyAmerikaseverné územia AmerikyKaribikvýchodná Áziaj" +
+ "užná Áziajuhovýchodná Áziajužná EurópaAustraláziaMelanéziaoblasť Mikroné" +
+ "ziePolynéziaÁziastredná Áziazápadná ÁziaEurópavýchodná Európaseverná Eur" +
+ "ópazápadná EurópaLatinská Amerika"
+
+var skRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000a, 0x0011, 0x002b, 0x0035, 0x0046, 0x004e, 0x0057,
+ 0x0060, 0x0071, 0x0077, 0x0082, 0x008c, 0x009b, 0x00a3, 0x00ad,
+ 0x00b2, 0x00b9, 0x00c5, 0x00d8, 0x00e0, 0x00eb, 0x00f3, 0x00ff,
+ 0x0108, 0x010f, 0x0116, 0x011b, 0x012d, 0x0134, 0x013a, 0x0142,
+ 0x0155, 0x015e, 0x0164, 0x016b, 0x017a, 0x0182, 0x018c, 0x0192,
+ 0x0198, 0x01a9, 0x01b9, 0x01d1, 0x01e4, 0x01f1, 0x0204, 0x0213,
+ 0x0218, 0x021f, 0x0225, 0x022d, 0x0237, 0x0240, 0x0244, 0x024c,
+ 0x0254, 0x0265, 0x026b, 0x027c, 0x0283, 0x0290, 0x029a, 0x02a1,
+ // Entry 40 - 7F
+ 0x02a9, 0x02c0, 0x02ca, 0x02d9, 0x02e1, 0x02ea, 0x02ef, 0x02ff,
+ 0x0306, 0x0311, 0x0319, 0x0328, 0x032f, 0x0335, 0x033e, 0x0349,
+ 0x0359, 0x0364, 0x0369, 0x037e, 0x0385, 0x038f, 0x03a2, 0x03aa,
+ 0x03af, 0x03b9, 0x03c1, 0x03c7, 0x03cd, 0x03d7, 0x03e9, 0x03f0,
+ 0x041d, 0x0426, 0x042a, 0x0437, 0x043e, 0x0455, 0x0479, 0x0481,
+ 0x048c, 0x0491, 0x049a, 0x04ab, 0x04b5, 0x04bb, 0x04c1, 0x04cb,
+ 0x04d0, 0x04f1, 0x04f5, 0x04fa, 0x0500, 0x0509, 0x050f, 0x0516,
+ 0x0520, 0x0528, 0x052d, 0x0536, 0x053f, 0x0547, 0x054d, 0x0565,
+ // Entry 80 - BF
+ 0x0574, 0x0582, 0x0588, 0x0598, 0x05a2, 0x05a6, 0x05ad, 0x05ba,
+ 0x05ca, 0x05d4, 0x05dc, 0x05e3, 0x05e8, 0x05f3, 0x05fc, 0x0602,
+ 0x0608, 0x060e, 0x0617, 0x0623, 0x0631, 0x063b, 0x064e, 0x0659,
+ 0x065d, 0x0667, 0x0670, 0x0684, 0x0695, 0x069d, 0x06a8, 0x06b2,
+ 0x06b7, 0x06c1, 0x06c8, 0x06ce, 0x06d4, 0x06dc, 0x06e4, 0x06ec,
+ 0x06fc, 0x0701, 0x0708, 0x0710, 0x0719, 0x0722, 0x0729, 0x072f,
+ 0x0734, 0x0738, 0x0745, 0x074a, 0x0750, 0x0754, 0x076a, 0x077c,
+ 0x0785, 0x078d, 0x0794, 0x07ab, 0x07be, 0x07c7, 0x07db, 0x07e6,
+ // Entry C0 - FF
+ 0x07eb, 0x07f3, 0x07f8, 0x080b, 0x0813, 0x081b, 0x0821, 0x0826,
+ 0x082c, 0x083c, 0x0850, 0x0858, 0x085e, 0x0867, 0x086f, 0x087d,
+ 0x0886, 0x089a, 0x08a3, 0x08af, 0x08ba, 0x08c1, 0x08ca, 0x08d1,
+ 0x08df, 0x08ff, 0x0908, 0x0914, 0x091a, 0x0923, 0x0933, 0x0941,
+ 0x0945, 0x096f, 0x0973, 0x097a, 0x0986, 0x098d, 0x099d, 0x09a8,
+ 0x09af, 0x09b4, 0x09bb, 0x09cc, 0x09d2, 0x09d8, 0x09e1, 0x09e9,
+ 0x09ef, 0x0a0c, 0x0a1c, 0x0a23, 0x0a2d, 0x0a35, 0x0a51, 0x0a5a,
+ 0x0a74, 0x0a8f, 0x0a96, 0x0a9d, 0x0aac, 0x0ab1, 0x0ab7, 0x0abc,
+ // Entry 100 - 13F
+ 0x0ac3, 0x0ad1, 0x0ad7, 0x0adf, 0x0aef, 0x0af3, 0x0af9, 0x0b09,
+ 0x0b18, 0x0b20, 0x0b30, 0x0b40, 0x0b51, 0x0b60, 0x0b6f, 0x0b85,
+ 0x0b8c, 0x0ba4, 0x0bab, 0x0bbb, 0x0bc8, 0x0bdc, 0x0beb, 0x0bf7,
+ 0x0c01, 0x0c14, 0x0c1e, 0x0c23, 0x0c31, 0x0c40, 0x0c47, 0x0c59,
+ 0x0c69, 0x0c7a, 0x0c8b,
+} // Size: 606 bytes
+
+var slRegionStr string = "" + // Size: 3205 bytes
+ "Otok AscensionAndoraZdruženi arabski emiratiAfganistanAntigva in Barbuda" +
+ "AngvilaAlbanijaArmenijaNizozemski AntiliAngolaAntarktikaArgentinaAmerišk" +
+ "a SamoaAvstrijaAvstralijaArubaÅlandski otokiAzerbajdžanBosna in Hercegov" +
+ "inaBarbadosBangladešBelgijaBurkina FasoBolgarijaBahrajnBurundiBeninSaint" +
+ " BarthélemyBermudiBrunejBolivijaNizozemski KaribiBrazilijaBahamiButanBou" +
+ "vetov otokBocvanaBelorusijaBelizeKanadaKokosovi otokiDemokratična republ" +
+ "ika KongoCentralnoafriška republikaKongo - BrazzavilleŠvicaSlonokoščena " +
+ "obalaCookovi otokiČileKamerunKitajskaKolumbijaOtok ClippertonKostarikaKu" +
+ "baZelenortski otokiCuraçaoBožični otokCiperČeškaNemčijaDiego GarciaDžibu" +
+ "tiDanskaDominikaDominikanska republikaAlžirijaCeuta in MelillaEkvadorEst" +
+ "onijaEgiptZahodna SaharaEritrejaŠpanijaEtiopijaEvropska unijaFinskaFidži" +
+ "Falklandski otokiMikronezijaFerski otokiFrancijaGabonZdruženo kraljestvo" +
+ "GrenadaGruzijaFrancoska GvajanaGuernseyGanaGibraltarGrenlandijaGambijaGv" +
+ "inejaGvadalupeEkvatorialna GvinejaGrčijaJužna Georgia in Južni Sandwiche" +
+ "vi otokiGvatemalaGuamGvineja BissauGvajanaPosebno administrativno območj" +
+ "e LR Kitajske Hong KongHeardov otok in McDonaldovi otokiHondurasHrvaškaH" +
+ "aitiMadžarskaKanarski otokiIndonezijaIrskaIzraelOtok ManIndijaBritansko " +
+ "ozemlje v Indijskem oceanuIrakIranIslandijaItalijaJerseyJamajkaJordanija" +
+ "JaponskaKenijaKirgizistanKambodžaKiribatiKomoriSaint Kitts in NevisSever" +
+ "na KorejaJužna KorejaKuvajtKajmanski otokiKazahstanLaosLibanonSaint Luci" +
+ "aLihtenštajnŠrilankaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoMona" +
+ "koMoldavijaČrna goraSaint MartinMadagaskarMarshallovi otokiMakedonijaMal" +
+ "iMjanmar (Burma)MongolijaPosebno administrativno območje LR Kitajske Mac" +
+ "aoSeverni Marianski otokiMartinikMavretanijaMontserratMaltaMauritiusMald" +
+ "iviMalaviMehikaMalezijaMozambikNamibijaNova KaledonijaNigerNorfolški oto" +
+ "kNigerijaNikaragvaNizozemskaNorveškaNepalNauruNiueNova ZelandijaOmanPana" +
+ "maPeruFrancoska PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSaint" +
+ " Pierre in MiquelonPitcairnPortorikoPalestinsko ozemljePortugalskaPalauP" +
+ "aragvajKatarOstala oceanijaReunionRomunijaSrbijaRusijaRuandaSaudova Arab" +
+ "ijaSalomonovi otokiSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalb" +
+ "ard in Jan MayenSlovaškaSierra LeoneSan MarinoSenegalSomalijaSurinamJužn" +
+ "i SudanSao Tome in PrincipeSalvadorSint MaartenSirijaSvaziTristan da Cun" +
+ "haOtočji Turks in CaicosČadFrancosko južno ozemljeTogoTajskaTadžikistanT" +
+ "okelauVzhodni TimorTurkmenistanTunizijaTongaTurčijaTrinidad in TobagoTuv" +
+ "aluTajvanTanzanijaUkrajinaUgandaDruga ameriška ozemlja v Tihem oceanuZdr" +
+ "užene države AmerikeUrugvajUzbekistanVatikanSaint Vincent in GrenadineVe" +
+ "nezuelaBritanski Deviški otokiAmeriški Deviški otokiVietnamVanuatuWallis" +
+ " in FutunaSamoaKosovoJemenMayotteJužnoafriška republikaZambijaZimbabveNe" +
+ "znano ali neveljavno območjeSvetAfrikaSeverna AmerikaJužna AmerikaOceani" +
+ "jaZahodna AfrikaSrednja AmerikaVzhodna AfrikaSeverna AfrikaSrednja Afrik" +
+ "aJužna AfrikaAmerikesevernoameriška celinaKaribiVzhodna AzijaJužna Azija" +
+ "Jugovzhodna AzijaJužna EvropaAvstralija in Nova ZelandijaMelanezijamikro" +
+ "nezijska regijaPolinezijaAzijaOsrednja AzijaZahodna AzijaEvropaVzhodna E" +
+ "vropaSeverna EvropaZahodna EvropaLatinska Amerika"
+
+var slRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x0014, 0x002d, 0x0037, 0x0049, 0x0050, 0x0058,
+ 0x0060, 0x0071, 0x0077, 0x0081, 0x008a, 0x0099, 0x00a1, 0x00ab,
+ 0x00b0, 0x00bf, 0x00cb, 0x00df, 0x00e7, 0x00f1, 0x00f8, 0x0104,
+ 0x010d, 0x0114, 0x011b, 0x0120, 0x0131, 0x0138, 0x013e, 0x0146,
+ 0x0157, 0x0160, 0x0166, 0x016b, 0x0178, 0x017f, 0x0189, 0x018f,
+ 0x0195, 0x01a3, 0x01c0, 0x01db, 0x01ee, 0x01f4, 0x0208, 0x0215,
+ 0x021a, 0x0221, 0x0229, 0x0232, 0x0241, 0x024a, 0x024e, 0x025f,
+ 0x0267, 0x0275, 0x027a, 0x0281, 0x0289, 0x0295, 0x029d, 0x02a3,
+ // Entry 40 - 7F
+ 0x02ab, 0x02c1, 0x02ca, 0x02da, 0x02e1, 0x02e9, 0x02ee, 0x02fc,
+ 0x0304, 0x030c, 0x0314, 0x0322, 0x0328, 0x032e, 0x033f, 0x034a,
+ 0x0356, 0x035e, 0x0363, 0x0377, 0x037e, 0x0385, 0x0396, 0x039e,
+ 0x03a2, 0x03ab, 0x03b6, 0x03bd, 0x03c4, 0x03cd, 0x03e1, 0x03e8,
+ 0x0412, 0x041b, 0x041f, 0x042d, 0x0434, 0x046a, 0x048b, 0x0493,
+ 0x049b, 0x04a0, 0x04aa, 0x04b8, 0x04c2, 0x04c7, 0x04cd, 0x04d5,
+ 0x04db, 0x04ff, 0x0503, 0x0507, 0x0510, 0x0517, 0x051d, 0x0524,
+ 0x052d, 0x0535, 0x053b, 0x0546, 0x054f, 0x0557, 0x055d, 0x0571,
+ // Entry 80 - BF
+ 0x057f, 0x058c, 0x0592, 0x05a1, 0x05aa, 0x05ae, 0x05b5, 0x05c0,
+ 0x05cc, 0x05d5, 0x05dd, 0x05e3, 0x05e8, 0x05f2, 0x05f9, 0x05ff,
+ 0x0605, 0x060b, 0x0614, 0x061e, 0x062a, 0x0634, 0x0645, 0x064f,
+ 0x0653, 0x0662, 0x066b, 0x069d, 0x06b4, 0x06bc, 0x06c7, 0x06d1,
+ 0x06d6, 0x06df, 0x06e6, 0x06ec, 0x06f2, 0x06fa, 0x0702, 0x070a,
+ 0x0719, 0x071e, 0x072d, 0x0735, 0x073e, 0x0748, 0x0751, 0x0756,
+ 0x075b, 0x075f, 0x076d, 0x0771, 0x0777, 0x077b, 0x078f, 0x07a1,
+ 0x07a9, 0x07b1, 0x07b8, 0x07d0, 0x07d8, 0x07e1, 0x07f4, 0x07ff,
+ // Entry C0 - FF
+ 0x0804, 0x080c, 0x0811, 0x0820, 0x0827, 0x082f, 0x0835, 0x083b,
+ 0x0841, 0x0850, 0x0860, 0x0868, 0x086d, 0x0875, 0x087d, 0x0889,
+ 0x0892, 0x08a7, 0x08b0, 0x08bc, 0x08c6, 0x08cd, 0x08d5, 0x08dc,
+ 0x08e8, 0x08fc, 0x0904, 0x0910, 0x0916, 0x091b, 0x092b, 0x0942,
+ 0x0946, 0x095e, 0x0962, 0x0968, 0x0974, 0x097b, 0x0988, 0x0994,
+ 0x099c, 0x09a1, 0x09a9, 0x09bb, 0x09c1, 0x09c7, 0x09d0, 0x09d8,
+ 0x09de, 0x0a04, 0x0a1d, 0x0a24, 0x0a2e, 0x0a35, 0x0a4f, 0x0a58,
+ 0x0a70, 0x0a88, 0x0a8f, 0x0a96, 0x0aa6, 0x0aab, 0x0ab1, 0x0ab6,
+ // Entry 100 - 13F
+ 0x0abd, 0x0ad5, 0x0adc, 0x0ae4, 0x0b03, 0x0b07, 0x0b0d, 0x0b1c,
+ 0x0b2a, 0x0b32, 0x0b40, 0x0b4f, 0x0b5d, 0x0b6b, 0x0b79, 0x0b86,
+ 0x0b8d, 0x0ba4, 0x0baa, 0x0bb7, 0x0bc3, 0x0bd4, 0x0be1, 0x0bfd,
+ 0x0c07, 0x0c1b, 0x0c25, 0x0c2a, 0x0c38, 0x0c45, 0x0c4b, 0x0c59,
+ 0x0c67, 0x0c75, 0x0c85,
+} // Size: 606 bytes
+
+var sqRegionStr string = "" + // Size: 3130 bytes
+ "Ishulli AsenshionAndorrëEmiratet e Bashkuara ArabeAfganistanAntigua e Ba" +
+ "rbudaAnguilëShqipëriArmeniAngolëAntarktikëArgjentinëSamoa AmerikaneAustr" +
+ "iAustraliArubëIshujt AlandëAzerbajxhanBosnjë-HercegovinëBarbadosBanglade" +
+ "shBelgjikëBurkina-FasoBullgariBahreinBurundBeninShën-BartolemeoBermudëBr" +
+ "unejBoliviKaraibet holandezeBrazilBahamasButanIshujt Bove’BotsuanëBjello" +
+ "rusiBelizëKanadaIshujt KokosëKongo-KinshasaRepublika Afrikano-QendroreKo" +
+ "ngo-BrazavilëZvicërBregu i FildishtëIshujt KukëKiliKamerunKinëKolumbiIsh" +
+ "ulli KlipërtonKosta-RikëKubëKepi i GjelbërKuraçaoIshulli i Krishtlindjes" +
+ "QiproRepublika ÇekeGjermaniDiego-GarsiaXhibutDanimarkëDominikëRepublika " +
+ "DominikaneAlgjeriTheuta e MelilaEkuadorEstoniEgjiptSaharaja PerëndimoreE" +
+ "ritreSpanjëEtiopiBashkimi EuropianFinlandëFixhiIshujt FolklandëMikronezi" +
+ "Ishujt FaroeFrancëGabonMbretëria e BashkuarGrenadëGjeorgjiGuajana France" +
+ "zeGuernsejGanëGjibraltarGrenlandëGambiGuineGuadalupeGuineja EkuatorialeG" +
+ "reqiXhorxha Jugore dhe Ishujt Senduiçë të JugutGuatemalëGuamGuine-BisauG" +
+ "uajanëRVAK i Hong KongutIshulli Hërd dhe Ishujt MekdonaldëHondurasKroaci" +
+ "HaitiHungariIshujt KanarieIndoneziIrlandëIzraelIshulli i ManitIndiTerrit" +
+ "ori Britanik i Oqeanit IndianIrakIranIslandëItaliXhersejXhamajkëJordaniJ" +
+ "aponiKeniaKirgistanKamboxhiaQiribatiKomoreShën-Kits dhe NevisKoreja e Ve" +
+ "riutKoreja e JugutKuvajtIshujt KajmanëKazakistanLaosLibanShën-LuçiaLihtë" +
+ "nshtajnSri-LankëLiberiLesotoLituaniLuksemburgLetoniLibiMarokMonakoMoldav" +
+ "iMali i ZiShën-MartinMadagaskarIshujt MarshallëMaqedoniMaliMianmar (Burm" +
+ "a)MongoliRVAK i MakaosIshujt e Marianës VerioreMartinikMauritaniMontsera" +
+ "tMaltëMauritiusMaldiveMalaviMeksikëMalajziMozambikNamibiKaledonia e ReNi" +
+ "gerIshulli NorfolkNigeriNikaraguaHolandëNorvegjiNepalNauruNiueZelanda e " +
+ "ReOmanPanamaPeruPolinezia FrancezePapua Guineja e ReFilipinePakistanPolo" +
+ "niShën-Peir dhe MikuelonIshujt PitkernëPorto-RikoTerritoret PalestinezeP" +
+ "ortugaliPalauParaguaiKatarOqeania e Largët (Lindja e Largët)ReunionRuman" +
+ "iSerbiRusiRuandëArabia SauditeIshujt SolomonëSishelSudanSuediSingaporShë" +
+ "n-HelenaSlloveniSvalbard e Zhan-MajenSllovakiSiera-LeoneSan-MarinoSenega" +
+ "liSomaliSurinamiSudani i JugutSao-Tome e PrinsipeEl SalvadorShën-Martin " +
+ "(Sint Maarten - pjesa e Mbretërisë së Holandës)SiriSuazilandëTristan-da-" +
+ "KunaIshujt Turke dhe KaikeÇadTerritoret Australiane FrancezeTogoTajlandë" +
+ "TaxhikistanTokelauTimori LindorTurkmenistanTuniziTongaTurqiTrinidad e To" +
+ "bagoTuvaluTajvanTanzaniUkrainëUgandëIshujt periferikë të SHBA-sëShtetet " +
+ "e Bashkuara të AmerikësUruguaiUzbekistanVatikanShën-Vinsent dhe Grenadin" +
+ "etVenezuelëIshujt e Virgjër BritanikëIshujt e Virgjër AmerikanëVietnamVa" +
+ "nuatuUollis e FutinaSamoaKosovëJemenMajotëAfrika e JugutZambiZimbabveI p" +
+ "anjohurBotaAfrikëAmerika e VeriutAmerika e JugutOqeaniAfrika Perëndimore" +
+ "Amerika QendroreAfrika LindoreAfrika VerioreAfrika e MesmeAfrika JugoreA" +
+ "merikëAmerika VerioreKaraibeAzia LindoreAzia JugoreAzia JuglindoreEuropa" +
+ " JugoreAustralaziaMelaneziaRajoni MikronezianPolineziaAziAzia QendroreAz" +
+ "ia PerëndimoreEuropëEuropa LindoreEuropa VerioreEuropa PerëndimoreAmerik" +
+ "a Latine"
+
+var sqRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0011, 0x0019, 0x0033, 0x003d, 0x004e, 0x0056, 0x005f,
+ 0x0065, 0x0065, 0x006c, 0x0077, 0x0082, 0x0091, 0x0097, 0x009f,
+ 0x00a5, 0x00b3, 0x00be, 0x00d2, 0x00da, 0x00e4, 0x00ed, 0x00f9,
+ 0x0101, 0x0108, 0x010e, 0x0113, 0x0123, 0x012b, 0x0131, 0x0137,
+ 0x0149, 0x014f, 0x0156, 0x015b, 0x0169, 0x0172, 0x017c, 0x0183,
+ 0x0189, 0x0197, 0x01a5, 0x01c0, 0x01d0, 0x01d7, 0x01e9, 0x01f5,
+ 0x01f9, 0x0200, 0x0205, 0x020c, 0x021e, 0x0229, 0x022e, 0x023d,
+ 0x0245, 0x025c, 0x0261, 0x0270, 0x0278, 0x0284, 0x028a, 0x0294,
+ // Entry 40 - 7F
+ 0x029d, 0x02b1, 0x02b8, 0x02c7, 0x02ce, 0x02d4, 0x02da, 0x02ef,
+ 0x02f5, 0x02fc, 0x0302, 0x0313, 0x031c, 0x0321, 0x0332, 0x033b,
+ 0x0347, 0x034e, 0x0353, 0x0368, 0x0370, 0x0378, 0x0388, 0x0390,
+ 0x0395, 0x039f, 0x03a9, 0x03ae, 0x03b3, 0x03bc, 0x03cf, 0x03d4,
+ 0x0402, 0x040c, 0x0410, 0x041b, 0x0423, 0x0435, 0x0459, 0x0461,
+ 0x0467, 0x046c, 0x0473, 0x0481, 0x0489, 0x0491, 0x0497, 0x04a6,
+ 0x04aa, 0x04cd, 0x04d1, 0x04d5, 0x04dd, 0x04e2, 0x04e9, 0x04f2,
+ 0x04f9, 0x04ff, 0x0504, 0x050d, 0x0516, 0x051e, 0x0524, 0x0538,
+ // Entry 80 - BF
+ 0x0547, 0x0555, 0x055b, 0x056a, 0x0574, 0x0578, 0x057d, 0x0589,
+ 0x0596, 0x05a0, 0x05a6, 0x05ac, 0x05b3, 0x05bd, 0x05c3, 0x05c7,
+ 0x05cc, 0x05d2, 0x05d9, 0x05e2, 0x05ee, 0x05f8, 0x0609, 0x0611,
+ 0x0615, 0x0624, 0x062b, 0x0638, 0x0652, 0x065a, 0x0663, 0x066c,
+ 0x0672, 0x067b, 0x0682, 0x0688, 0x0690, 0x0697, 0x069f, 0x06a5,
+ 0x06b3, 0x06b8, 0x06c7, 0x06cd, 0x06d6, 0x06de, 0x06e6, 0x06eb,
+ 0x06f0, 0x06f4, 0x0700, 0x0704, 0x070a, 0x070e, 0x0720, 0x0732,
+ 0x073a, 0x0742, 0x0748, 0x075f, 0x076f, 0x0779, 0x078f, 0x0798,
+ // Entry C0 - FF
+ 0x079d, 0x07a5, 0x07aa, 0x07ce, 0x07d5, 0x07db, 0x07e0, 0x07e4,
+ 0x07eb, 0x07f9, 0x0809, 0x080f, 0x0814, 0x0819, 0x0821, 0x082d,
+ 0x0835, 0x084a, 0x0852, 0x085d, 0x0867, 0x086f, 0x0875, 0x087d,
+ 0x088b, 0x089e, 0x08a9, 0x08e9, 0x08ed, 0x08f8, 0x0907, 0x091d,
+ 0x0921, 0x0940, 0x0944, 0x094d, 0x0958, 0x095f, 0x096c, 0x0978,
+ 0x097e, 0x0983, 0x0988, 0x0999, 0x099f, 0x09a5, 0x09ac, 0x09b4,
+ 0x09bb, 0x09da, 0x09fb, 0x0a02, 0x0a0c, 0x0a13, 0x0a2f, 0x0a39,
+ 0x0a55, 0x0a71, 0x0a78, 0x0a7f, 0x0a8e, 0x0a93, 0x0a9a, 0x0a9f,
+ // Entry 100 - 13F
+ 0x0aa6, 0x0ab4, 0x0ab9, 0x0ac1, 0x0acb, 0x0acf, 0x0ad6, 0x0ae6,
+ 0x0af5, 0x0afb, 0x0b0e, 0x0b1e, 0x0b2c, 0x0b3a, 0x0b48, 0x0b55,
+ 0x0b5d, 0x0b6c, 0x0b73, 0x0b7f, 0x0b8a, 0x0b99, 0x0ba6, 0x0bb1,
+ 0x0bba, 0x0bcc, 0x0bd5, 0x0bd8, 0x0be5, 0x0bf6, 0x0bfd, 0x0c0b,
+ 0x0c19, 0x0c2c, 0x0c3a,
+} // Size: 606 bytes
+
+var srRegionStr string = "" + // Size: 5923 bytes
+ "Острво АсенсионАндораУједињени Арапски ЕмиратиАвганистанАнтигва и Барбуд" +
+ "аАнгвилаАлбанијаЈерменијаХоландски АнтилиАнголаАнтарктикАргентинаАмерич" +
+ "ка СамоаАустријаАустралијаАрубаОландска острваАзербејџанБосна и Херцего" +
+ "винаБарбадосБангладешБелгијаБуркина ФасоБугарскаБахреинБурундиБенинСвет" +
+ "и БартоломејБермудаБрунејБоливијаКарипска ХоландијаБразилБахамиБутанОст" +
+ "рво БувеБоцванаБелорусијаБелизеКанадаКокосова (Килингова) ОстрваКонго -" +
+ " КиншасаЦентралноафричка РепубликаКонго - БразавилШвајцарскаОбала Слонов" +
+ "ачеКукова ОстрваЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаКубаЗе" +
+ "ленортска ОстрваКурасаоБожићно острвоКипарЧешкаНемачкаДијего ГарсијаЏиб" +
+ "утиДанскаДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстони" +
+ "јаЕгипатЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска УнијаФинскаФиџиФо" +
+ "кландска острваМикронезијаФарска ОстрваФранцускаГабонВелика БританијаГр" +
+ "енадаГрузијаФранцуска ГвајанаГурнсиГанаГибралтарГренландГамбијаГвинејаГ" +
+ "ваделупеЕкваторијална ГвинејаГрчкаЈужна Џорџија и Јужна Сендвич ОстрваГ" +
+ "ватемалаГуамГвинеја-БисаоГвајанаСАР Хонгконг (Кина)Острва Херд и Мекдон" +
+ "алдХондурасХрватскаХаитиМађарскаКанарска острваИндонезијаИрскаИзраелОст" +
+ "рво МанИндијаБританска територија у Индијском океануИракИранИсландИтали" +
+ "јаЏерсиЈамајкаЈорданЈапанКенијаКиргистанКамбоџаКирибатиКоморска ОстрваС" +
+ "ент Китс и НевисСеверна КорејаЈужна КорејаКувајтКајманска ОстрваКазахст" +
+ "анЛаосЛибанСвета ЛуцијаЛихтенштајнШри ЛанкаЛиберијаЛесотоЛитванијаЛуксе" +
+ "мбургЛетонијаЛибијаМарокоМонакоМолдавијаЦрна ГораСент МартинМадагаскарМ" +
+ "аршалска ОстрваМакедонијаМалиМијанмар (Бурма)МонголијаСАР Макао (Кина)С" +
+ "еверна Маријанска ОстрваМартиникМауританијаМонсератМалтаМаурицијусМалди" +
+ "виМалавиМексикоМалезијаМозамбикНамибијаНова КаледонијаНигерОстрво Норфо" +
+ "кНигеријаНикарагваХоландијаНорвешкаНепалНауруНиуеНови ЗеландОманПанамаП" +
+ "еруФранцуска ПолинезијаПапуа Нова ГвинејаФилипиниПакистанПољскаСен Пјер" +
+ " и МикелонПиткернПорторикоПалестинске територијеПортугалПалауПарагвајКат" +
+ "арОкеанија (удаљена острва)РеинионРумунијаСрбијаРусијаРуандаСаудијска А" +
+ "рабијаСоломонска ОстрваСејшелиСуданШведскаСингапурСвета ЈеленаСловенија" +
+ "Свалбард и Јан МајенСловачкаСијера ЛеонеСан МариноСенегалСомалијаСурина" +
+ "мЈужни СуданСао Томе и ПринципеСалвадорСвети МартинСиријаСвазилендТрист" +
+ "ан да КуњаОстрва Туркс и КаикосЧадФранцуске Јужне ТериторијеТогоТајланд" +
+ "ТаџикистанТокелауИсточни ТиморТуркменистанТунисТонгаТурскаТринидад и То" +
+ "багоТувалуТајванТанзанијаУкрајинаУгандаУдаљена острва САДСједињене Амер" +
+ "ичке ДржавеУругвајУзбекистанВатиканСент Винсент и ГренадиниВенецуелаБри" +
+ "танска Девичанска ОстрваАмеричка Девичанска ОстрваВијетнамВануатуВалис " +
+ "и ФутунаСамоаКосовоЈеменМајотЈужноафричка РепубликаЗамбијаЗимбабвеНепоз" +
+ "нат регионсветАфрикаСеверноамерички континентЈужна АмерикаОкеанијаЗапад" +
+ "на АфрикаЦентрална АмерикаИсточна АфрикаСеверна АфрикаЦентрална АфрикаЈ" +
+ "ужна АфрикаСеверна и Јужна АмерикаСеверна АмерикаКарибиИсточна АзијаЈуж" +
+ "на АзијаЈугоисточна АзијаЈужна ЕвропаАустралија и Нови ЗеландМеланезија" +
+ "Микронезијски регионПолинезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИс" +
+ "точна ЕвропаСеверна ЕвропаЗападна ЕвропаЛатинска Америка"
+
+var srRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab,
+ 0x00bd, 0x00dc, 0x00e8, 0x00fa, 0x010c, 0x0127, 0x0137, 0x014b,
+ 0x0155, 0x0172, 0x0186, 0x01aa, 0x01ba, 0x01cc, 0x01da, 0x01f1,
+ 0x0201, 0x020f, 0x021d, 0x0227, 0x0246, 0x0254, 0x0260, 0x0270,
+ 0x0293, 0x029f, 0x02ab, 0x02b5, 0x02ca, 0x02d8, 0x02ec, 0x02f8,
+ 0x0304, 0x0336, 0x0351, 0x0384, 0x03a1, 0x03b5, 0x03d2, 0x03eb,
+ 0x03f3, 0x0401, 0x0409, 0x041b, 0x043a, 0x044c, 0x0454, 0x0477,
+ 0x0485, 0x04a0, 0x04aa, 0x04b4, 0x04c2, 0x04dd, 0x04e9, 0x04f5,
+ // Entry 40 - 7F
+ 0x0505, 0x0530, 0x053a, 0x0554, 0x0562, 0x0572, 0x057e, 0x0599,
+ 0x05a9, 0x05b7, 0x05c7, 0x05e2, 0x05ee, 0x05f6, 0x0617, 0x062d,
+ 0x0646, 0x0658, 0x0662, 0x0681, 0x068f, 0x069d, 0x06be, 0x06ca,
+ 0x06d2, 0x06e4, 0x06f4, 0x0702, 0x0710, 0x0722, 0x074b, 0x0755,
+ 0x0798, 0x07aa, 0x07b2, 0x07cb, 0x07d9, 0x07fb, 0x0826, 0x0836,
+ 0x0846, 0x0850, 0x0860, 0x087d, 0x0891, 0x089b, 0x08a7, 0x08ba,
+ 0x08c6, 0x0910, 0x0918, 0x0920, 0x092c, 0x093a, 0x0944, 0x0952,
+ 0x095e, 0x0968, 0x0974, 0x0986, 0x0994, 0x09a4, 0x09c1, 0x09e0,
+ // Entry 80 - BF
+ 0x09fb, 0x0a12, 0x0a1e, 0x0a3d, 0x0a4f, 0x0a57, 0x0a61, 0x0a78,
+ 0x0a8e, 0x0a9f, 0x0aaf, 0x0abb, 0x0acd, 0x0ae1, 0x0af1, 0x0afd,
+ 0x0b09, 0x0b15, 0x0b27, 0x0b38, 0x0b4d, 0x0b61, 0x0b80, 0x0b94,
+ 0x0b9c, 0x0bb9, 0x0bcb, 0x0be7, 0x0c17, 0x0c27, 0x0c3d, 0x0c4d,
+ 0x0c57, 0x0c6b, 0x0c79, 0x0c85, 0x0c93, 0x0ca3, 0x0cb3, 0x0cc3,
+ 0x0ce0, 0x0cea, 0x0d03, 0x0d13, 0x0d25, 0x0d37, 0x0d47, 0x0d51,
+ 0x0d5b, 0x0d63, 0x0d78, 0x0d80, 0x0d8c, 0x0d94, 0x0dbb, 0x0ddd,
+ 0x0ded, 0x0dfd, 0x0e09, 0x0e2a, 0x0e38, 0x0e4a, 0x0e75, 0x0e85,
+ // Entry C0 - FF
+ 0x0e8f, 0x0e9f, 0x0ea9, 0x0ed7, 0x0ee5, 0x0ef5, 0x0f01, 0x0f0d,
+ 0x0f19, 0x0f3a, 0x0f5b, 0x0f69, 0x0f73, 0x0f81, 0x0f91, 0x0fa8,
+ 0x0fba, 0x0fdf, 0x0fef, 0x1006, 0x1019, 0x1027, 0x1037, 0x1045,
+ 0x105a, 0x107d, 0x108d, 0x10a4, 0x10b0, 0x10c2, 0x10de, 0x1105,
+ 0x110b, 0x113d, 0x1145, 0x1153, 0x1167, 0x1175, 0x118e, 0x11a6,
+ 0x11b0, 0x11ba, 0x11c6, 0x11e6, 0x11f2, 0x11fe, 0x1210, 0x1220,
+ 0x122c, 0x124e, 0x127e, 0x128c, 0x12a0, 0x12ae, 0x12db, 0x12ed,
+ 0x1321, 0x1353, 0x1363, 0x1371, 0x138b, 0x1395, 0x13a1, 0x13ab,
+ // Entry 100 - 13F
+ 0x13b5, 0x13e0, 0x13ee, 0x13fe, 0x141b, 0x1423, 0x142f, 0x1460,
+ 0x1479, 0x1489, 0x14a4, 0x14c5, 0x14e0, 0x14fb, 0x151a, 0x1531,
+ 0x155c, 0x1579, 0x1585, 0x159e, 0x15b3, 0x15d4, 0x15eb, 0x1618,
+ 0x162c, 0x1653, 0x1667, 0x1671, 0x168e, 0x16a7, 0x16b3, 0x16ce,
+ 0x16e9, 0x1704, 0x1723,
+} // Size: 606 bytes
+
+var srLatnRegionStr string = "" + // Size: 3112 bytes
+ "Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAvganistanAntigva i Barbu" +
+ "daAngvilaAlbanijaJermenijaHolandski AntiliAngolaAntarktikArgentinaAmerič" +
+ "ka SamoaAustrijaAustralijaArubaOlandska ostrvaAzerbejdžanBosna i Hercego" +
+ "vinaBarbadosBangladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti" +
+ " BartolomejBermudaBrunejBolivijaKaripska HolandijaBrazilBahamiButanOstrv" +
+ "o BuveBocvanaBelorusijaBelizeKanadaKokosova (Kilingova) OstrvaKongo - Ki" +
+ "nšasaCentralnoafrička RepublikaKongo - BrazavilŠvajcarskaObala Slonovače" +
+ "Kukova OstrvaČileKamerunKinaKolumbijaOstrvo KlipertonKostarikaKubaZeleno" +
+ "rtska OstrvaKurasaoBožićno ostrvoKiparČeškaNemačkaDijego GarsijaDžibutiD" +
+ "anskaDominikaDominikanska RepublikaAlžirSeuta i MeliljaEkvadorEstonijaEg" +
+ "ipatZapadna SaharaEritrejaŠpanijaEtiopijaEvropska UnijaFinskaFidžiFoklan" +
+ "dska ostrvaMikronezijaFarska OstrvaFrancuskaGabonVelika BritanijaGrenada" +
+ "GruzijaFrancuska GvajanaGurnsiGanaGibraltarGrenlandGambijaGvinejaGvadelu" +
+ "peEkvatorijalna GvinejaGrčkaJužna Džordžija i Južna Sendvič OstrvaGvatem" +
+ "alaGuamGvineja-BisaoGvajanaSAR Hongkong (Kina)Ostrva Herd i MekdonaldHon" +
+ "durasHrvatskaHaitiMađarskaKanarska ostrvaIndonezijaIrskaIzraelOstrvo Man" +
+ "IndijaBritanska teritorija u Indijskom okeanuIrakIranIslandItalijaDžersi" +
+ "JamajkaJordanJapanKenijaKirgistanKambodžaKiribatiKomorska OstrvaSent Kit" +
+ "s i NevisSeverna KorejaJužna KorejaKuvajtKajmanska OstrvaKazahstanLaosLi" +
+ "banSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLeto" +
+ "nijaLibijaMarokoMonakoMoldavijaCrna GoraSent MartinMadagaskarMaršalska O" +
+ "strvaMakedonijaMaliMijanmar (Burma)MongolijaSAR Makao (Kina)Severna Mari" +
+ "janska OstrvaMartinikMauritanijaMonseratMaltaMauricijusMaldiviMalaviMeks" +
+ "ikoMalezijaMozambikNamibijaNova KaledonijaNigerOstrvo NorfokNigerijaNika" +
+ "ragvaHolandijaNorveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFrancuska P" +
+ "olinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSen Pjer i MikelonPitk" +
+ "ernPortorikoPalestinske teritorijePortugalPalauParagvajKatarOkeanija (ud" +
+ "aljena ostrva)ReinionRumunijaSrbijaRusijaRuandaSaudijska ArabijaSolomons" +
+ "ka OstrvaSejšeliSudanŠvedskaSingapurSveta JelenaSlovenijaSvalbard i Jan " +
+ "MajenSlovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSao " +
+ "Tome i PrincipeSalvadorSveti MartinSirijaSvazilendTristan da KunjaOstrva" +
+ " Turks i KaikosČadFrancuske Južne TeritorijeTogoTajlandTadžikistanTokela" +
+ "uIstočni TimorTurkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanT" +
+ "anzanijaUkrajinaUgandaUdaljena ostrva SADSjedinjene Američke DržaveUrugv" +
+ "ajUzbekistanVatikanSent Vinsent i GrenadiniVenecuelaBritanska Devičanska" +
+ " OstrvaAmerička Devičanska OstrvaVijetnamVanuatuValis i FutunaSamoaKosov" +
+ "oJemenMajotJužnoafrička RepublikaZambijaZimbabveNepoznat regionsvetAfrik" +
+ "aSevernoamerički kontinentJužna AmerikaOkeanijaZapadna AfrikaCentralna A" +
+ "merikaIstočna AfrikaSeverna AfrikaCentralna AfrikaJužna AfrikaSeverna i " +
+ "Južna AmerikaSeverna AmerikaKaribiIstočna AzijaJužna AzijaJugoistočna Az" +
+ "ijaJužna EvropaAustralija i Novi ZelandMelanezijaMikronezijski regionPol" +
+ "inezijaAzijaCentralna AzijaZapadna AzijaEvropaIstočna EvropaSeverna Evro" +
+ "paZapadna EvropaLatinska Amerika"
+
+var srLatnRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000f, 0x0015, 0x002f, 0x0039, 0x004a, 0x0051, 0x0059,
+ 0x0062, 0x0072, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a1, 0x00ab,
+ 0x00b0, 0x00bf, 0x00cb, 0x00de, 0x00e6, 0x00f0, 0x00f7, 0x0103,
+ 0x010b, 0x0112, 0x0119, 0x011e, 0x012e, 0x0135, 0x013b, 0x0143,
+ 0x0155, 0x015b, 0x0161, 0x0166, 0x0171, 0x0178, 0x0182, 0x0188,
+ 0x018e, 0x01a9, 0x01b9, 0x01d4, 0x01e4, 0x01ef, 0x01ff, 0x020c,
+ 0x0211, 0x0218, 0x021c, 0x0225, 0x0235, 0x023e, 0x0242, 0x0254,
+ 0x025b, 0x026b, 0x0270, 0x0277, 0x027f, 0x028d, 0x0295, 0x029b,
+ // Entry 40 - 7F
+ 0x02a3, 0x02b9, 0x02bf, 0x02ce, 0x02d5, 0x02dd, 0x02e3, 0x02f1,
+ 0x02f9, 0x0301, 0x0309, 0x0317, 0x031d, 0x0323, 0x0334, 0x033f,
+ 0x034c, 0x0355, 0x035a, 0x036a, 0x0371, 0x0378, 0x0389, 0x038f,
+ 0x0393, 0x039c, 0x03a4, 0x03ab, 0x03b2, 0x03bb, 0x03d0, 0x03d6,
+ 0x0401, 0x040a, 0x040e, 0x041b, 0x0422, 0x0435, 0x044c, 0x0454,
+ 0x045c, 0x0461, 0x046a, 0x0479, 0x0483, 0x0488, 0x048e, 0x0498,
+ 0x049e, 0x04c5, 0x04c9, 0x04cd, 0x04d3, 0x04da, 0x04e1, 0x04e8,
+ 0x04ee, 0x04f3, 0x04f9, 0x0502, 0x050b, 0x0513, 0x0522, 0x0533,
+ // Entry 80 - BF
+ 0x0541, 0x054e, 0x0554, 0x0564, 0x056d, 0x0571, 0x0576, 0x0582,
+ 0x058e, 0x0598, 0x05a0, 0x05a6, 0x05af, 0x05b9, 0x05c1, 0x05c7,
+ 0x05cd, 0x05d3, 0x05dc, 0x05e5, 0x05f0, 0x05fa, 0x060b, 0x0615,
+ 0x0619, 0x0629, 0x0632, 0x0642, 0x065b, 0x0663, 0x066e, 0x0676,
+ 0x067b, 0x0685, 0x068c, 0x0692, 0x0699, 0x06a1, 0x06a9, 0x06b1,
+ 0x06c0, 0x06c5, 0x06d2, 0x06da, 0x06e3, 0x06ec, 0x06f5, 0x06fa,
+ 0x06ff, 0x0703, 0x070e, 0x0712, 0x0718, 0x071c, 0x0730, 0x0742,
+ 0x074a, 0x0752, 0x0759, 0x076b, 0x0772, 0x077b, 0x0791, 0x0799,
+ // Entry C0 - FF
+ 0x079e, 0x07a6, 0x07ab, 0x07c5, 0x07cc, 0x07d4, 0x07da, 0x07e0,
+ 0x07e6, 0x07f7, 0x0808, 0x0810, 0x0815, 0x081d, 0x0825, 0x0831,
+ 0x083a, 0x084e, 0x0857, 0x0863, 0x086d, 0x0874, 0x087c, 0x0883,
+ 0x088f, 0x08a2, 0x08aa, 0x08b6, 0x08bc, 0x08c5, 0x08d5, 0x08ea,
+ 0x08ee, 0x0909, 0x090d, 0x0914, 0x0920, 0x0927, 0x0935, 0x0941,
+ 0x0946, 0x094b, 0x0951, 0x0962, 0x0968, 0x096e, 0x0977, 0x097f,
+ 0x0985, 0x0998, 0x09b4, 0x09bb, 0x09c5, 0x09cc, 0x09e4, 0x09ed,
+ 0x0a09, 0x0a25, 0x0a2d, 0x0a34, 0x0a42, 0x0a47, 0x0a4d, 0x0a52,
+ // Entry 100 - 13F
+ 0x0a57, 0x0a6f, 0x0a76, 0x0a7e, 0x0a8d, 0x0a91, 0x0a97, 0x0ab1,
+ 0x0abf, 0x0ac7, 0x0ad5, 0x0ae6, 0x0af5, 0x0b03, 0x0b13, 0x0b20,
+ 0x0b38, 0x0b47, 0x0b4d, 0x0b5b, 0x0b67, 0x0b79, 0x0b86, 0x0b9e,
+ 0x0ba8, 0x0bbc, 0x0bc6, 0x0bcb, 0x0bda, 0x0be7, 0x0bed, 0x0bfc,
+ 0x0c0a, 0x0c18, 0x0c28,
+} // Size: 606 bytes
+
+var svRegionStr string = "" + // Size: 2924 bytes
+ "AscensionAndorraFörenade ArabemiratenAfghanistanAntigua och BarbudaAngui" +
+ "llaAlbanienArmenienNederländska AntillernaAngolaAntarktisArgentinaAmerik" +
+ "anska SamoaÖsterrikeAustralienArubaÅlandAzerbajdzjanBosnien och Hercegov" +
+ "inaBarbadosBangladeshBelgienBurkina FasoBulgarienBahrainBurundiBeninS:t " +
+ "BarthélemyBermudaBruneiBoliviaKaribiska NederländernaBrasilienBahamasBhu" +
+ "tanBouvetönBotswanaVitrysslandBelizeKanadaKokosöarnaKongo-KinshasaCentra" +
+ "lafrikanska republikenKongo-BrazzavilleSchweizElfenbenskustenCooköarnaCh" +
+ "ileKamerunKinaColombiaClippertonönCosta RicaKubaKap VerdeCuraçaoJulönCyp" +
+ "ernTjeckienTysklandDiego GarciaDjiboutiDanmarkDominicaDominikanska repub" +
+ "likenAlgerietCeuta och MelillaEcuadorEstlandEgyptenVästsaharaEritreaSpan" +
+ "ienEtiopienEuropeiska unionenFinlandFijiFalklandsöarnaMikronesienFäröarn" +
+ "aFrankrikeGabonStorbritannienGrenadaGeorgienFranska GuyanaGuernseyGhanaG" +
+ "ibraltarGrönlandGambiaGuineaGuadeloupeEkvatorialguineaGreklandSydgeorgie" +
+ "n och SydsandwichöarnaGuatemalaGuamGuinea-BissauGuyanaHongkong, S.A.R. K" +
+ "inaHeardön och McDonaldöarnaHondurasKroatienHaitiUngernKanarieöarnaIndon" +
+ "esienIrlandIsraelIsle of ManIndienBrittiska territoriet i Indiska oceane" +
+ "nIrakIranIslandItalienJerseyJamaicaJordanienJapanKenyaKirgizistanKambodj" +
+ "aKiribatiKomorernaS:t Kitts och NevisNordkoreaSydkoreaKuwaitCaymanöarnaK" +
+ "azakstanLaosLibanonS:t LuciaLiechtensteinSri LankaLiberiaLesothoLitauenL" +
+ "uxemburgLettlandLibyenMarockoMonacoMoldavienMontenegroS:t MartinMadagask" +
+ "arMarshallöarnaMakedonienMaliMyanmar (Burma)MongolietMacao, S.A.R. KinaN" +
+ "ordmarianernaMartiniqueMauretanienMontserratMaltaMauritiusMaldivernaMala" +
+ "wiMexikoMalaysiaMoçambiqueNamibiaNya KaledonienNigerNorfolkönNigeriaNica" +
+ "raguaNederländernaNorgeNepalNauruNiueNya ZeelandOmanPanamaPeruFranska Po" +
+ "lynesienPapua Nya GuineaFilippinernaPakistanPolenS:t Pierre och Miquelon" +
+ "PitcairnöarnaPuerto RicoPalestinska territoriernaPortugalPalauParaguayQa" +
+ "taryttre öar i OceanienRéunionRumänienSerbienRysslandRwandaSaudiarabienS" +
+ "alomonöarnaSeychellernaSudanSverigeSingaporeS:t HelenaSlovenienSvalbard " +
+ "och Jan MayenSlovakienSierra LeoneSan MarinoSenegalSomaliaSurinamSydsuda" +
+ "nSão Tomé och PríncipeEl SalvadorSint MaartenSyrienSwazilandTristan da C" +
+ "unhaTurks- och CaicosöarnaTchadFranska sydterritoriernaTogoThailandTadzj" +
+ "ikistanTokelauÖsttimorTurkmenistanTunisienTongaTurkietTrinidad och Tobag" +
+ "oTuvaluTaiwanTanzaniaUkrainaUgandaUSA:s yttre öarUSAUruguayUzbekistanVat" +
+ "ikanstatenS:t Vincent och GrenadinernaVenezuelaBrittiska JungfruöarnaAme" +
+ "rikanska JungfruöarnaVietnamVanuatuWallis- och FutunaöarnaSamoaKosovoJem" +
+ "enMayotteSydafrikaZambiaZimbabweokänd regionvärldenAfrikaNordamerikaSyda" +
+ "merikaOceanienVästafrikaCentralamerikaÖstafrikaNordafrikaCentralafrikasö" +
+ "dra AfrikaNord- och Sydamerikanorra AmerikaKaribienÖstasienSydasienSydos" +
+ "tasienSydeuropaAustralasienMelanesienMikronesiska öarnaPolynesienAsienCe" +
+ "ntralasienVästasienEuropaÖsteuropaNordeuropaVästeuropaLatinamerika"
+
+var svRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x0010, 0x0026, 0x0031, 0x0044, 0x004c, 0x0054,
+ 0x005c, 0x0074, 0x007a, 0x0083, 0x008c, 0x009d, 0x00a7, 0x00b1,
+ 0x00b6, 0x00bc, 0x00c8, 0x00df, 0x00e7, 0x00f1, 0x00f8, 0x0104,
+ 0x010d, 0x0114, 0x011b, 0x0120, 0x012f, 0x0136, 0x013c, 0x0143,
+ 0x015b, 0x0164, 0x016b, 0x0171, 0x017a, 0x0182, 0x018d, 0x0193,
+ 0x0199, 0x01a4, 0x01b2, 0x01ce, 0x01df, 0x01e6, 0x01f5, 0x01ff,
+ 0x0204, 0x020b, 0x020f, 0x0217, 0x0224, 0x022e, 0x0232, 0x023b,
+ 0x0243, 0x0249, 0x024f, 0x0257, 0x025f, 0x026b, 0x0273, 0x027a,
+ // Entry 40 - 7F
+ 0x0282, 0x0299, 0x02a1, 0x02b2, 0x02b9, 0x02c0, 0x02c7, 0x02d2,
+ 0x02d9, 0x02e0, 0x02e8, 0x02fa, 0x0301, 0x0305, 0x0314, 0x031f,
+ 0x0329, 0x0332, 0x0337, 0x0345, 0x034c, 0x0354, 0x0362, 0x036a,
+ 0x036f, 0x0378, 0x0381, 0x0387, 0x038d, 0x0397, 0x03a7, 0x03af,
+ 0x03d0, 0x03d9, 0x03dd, 0x03ea, 0x03f0, 0x0405, 0x0420, 0x0428,
+ 0x0430, 0x0435, 0x043b, 0x0448, 0x0452, 0x0458, 0x045e, 0x0469,
+ 0x046f, 0x0496, 0x049a, 0x049e, 0x04a4, 0x04ab, 0x04b1, 0x04b8,
+ 0x04c1, 0x04c6, 0x04cb, 0x04d6, 0x04de, 0x04e6, 0x04ef, 0x0502,
+ // Entry 80 - BF
+ 0x050b, 0x0513, 0x0519, 0x0525, 0x052e, 0x0532, 0x0539, 0x0542,
+ 0x054f, 0x0558, 0x055f, 0x0566, 0x056d, 0x0576, 0x057e, 0x0584,
+ 0x058b, 0x0591, 0x059a, 0x05a4, 0x05ae, 0x05b8, 0x05c6, 0x05d0,
+ 0x05d4, 0x05e3, 0x05ec, 0x05fe, 0x060c, 0x0616, 0x0621, 0x062b,
+ 0x0630, 0x0639, 0x0643, 0x0649, 0x064f, 0x0657, 0x0662, 0x0669,
+ 0x0677, 0x067c, 0x0686, 0x068d, 0x0696, 0x06a4, 0x06a9, 0x06ae,
+ 0x06b3, 0x06b7, 0x06c2, 0x06c6, 0x06cc, 0x06d0, 0x06e2, 0x06f2,
+ 0x06fe, 0x0706, 0x070b, 0x0722, 0x0730, 0x073b, 0x0754, 0x075c,
+ // Entry C0 - FF
+ 0x0761, 0x0769, 0x076e, 0x0783, 0x078b, 0x0794, 0x079b, 0x07a3,
+ 0x07a9, 0x07b5, 0x07c2, 0x07ce, 0x07d3, 0x07da, 0x07e3, 0x07ed,
+ 0x07f6, 0x080c, 0x0815, 0x0821, 0x082b, 0x0832, 0x0839, 0x0840,
+ 0x0848, 0x0860, 0x086b, 0x0877, 0x087d, 0x0886, 0x0896, 0x08ad,
+ 0x08b2, 0x08ca, 0x08ce, 0x08d6, 0x08e2, 0x08e9, 0x08f2, 0x08fe,
+ 0x0906, 0x090b, 0x0912, 0x0925, 0x092b, 0x0931, 0x0939, 0x0940,
+ 0x0946, 0x0956, 0x0959, 0x0960, 0x096a, 0x0977, 0x0993, 0x099c,
+ 0x09b3, 0x09cc, 0x09d3, 0x09da, 0x09f2, 0x09f7, 0x09fd, 0x0a02,
+ // Entry 100 - 13F
+ 0x0a09, 0x0a12, 0x0a18, 0x0a20, 0x0a2d, 0x0a35, 0x0a3b, 0x0a46,
+ 0x0a50, 0x0a58, 0x0a63, 0x0a71, 0x0a7b, 0x0a85, 0x0a92, 0x0a9f,
+ 0x0ab3, 0x0ac0, 0x0ac8, 0x0ad1, 0x0ad9, 0x0ae4, 0x0aed, 0x0af9,
+ 0x0b03, 0x0b16, 0x0b20, 0x0b25, 0x0b31, 0x0b3b, 0x0b41, 0x0b4b,
+ 0x0b55, 0x0b60, 0x0b6c,
+} // Size: 606 bytes
+
+var swRegionStr string = "" + // Size: 3122 bytes
+ "Kisiwa cha AscensionAndoraFalme za KiarabuAfghanistanAntigua na BarbudaA" +
+ "nguillaAlbaniaArmeniaAntili za UholanziAngolaAntaktikaAjentinaSamoa ya M" +
+ "arekaniAustriaAustraliaArubaVisiwa vya AlandiAzabajaniBosnia na Hezegovi" +
+ "naBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareniBurundiBeninSanta" +
+ "bathelemiBermudaBruneiBoliviaUholanzi ya KaribianiBraziliBahamaBhutanKis" +
+ "iwa cha BouvetBotswanaBelarusiBelizeKanadaVisiwa vya Cocos (Keeling)Jamh" +
+ "uri ya Kidemokrasia ya KongoJamhuri ya Afrika ya KatiKongo - Brazzaville" +
+ "UswisiCôte d’IvoireVisiwa vya CookChileKameruniChinaKolombiaKisiwa cha C" +
+ "lippertonKostarikaKubaKepuvedeKurakaoKisiwa cha KrismasiCyprusJamhuri ya" +
+ " ChekiUjerumaniDiego GarciaJibutiDenmarkDominikaJamhuri ya DominikaAljer" +
+ "iaCeuta na MelillaEkwadoEstoniaMisriSahara MagharibiEritreaHispaniaUhabe" +
+ "shiUmoja wa UlayaUfiniFijiVisiwa vya FalklandMikronesiaVisiwa vya FaroeU" +
+ "faransaGabonUingerezaGrenadaJojiaGwiyana ya UfaransaGuernseyGhanaJibralt" +
+ "aGrinlandiGambiaGineGwadelupeGinekwetaUgirikiJojia Kusini na Visiwa vya " +
+ "Sandwich KusiniGwatemalaGwamGinebisauGuyanaHong Kong SAR ChinaKisiwa cha" +
+ " Heard na Visiwa vya McDonaldHondurasiKorasiaHaitiHungariaVisiwa vya Kan" +
+ "ariIndonesiaAyalandiIsraeliIsle of ManIndiaEneo la Uingereza katika Baha" +
+ "ri HindiIrakiIranAislandiItaliaJerseyJamaikaYordaniJapaniKenyaKirigizist" +
+ "aniKambodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniK" +
+ "uwaitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLiechtensteinSr" +
+ "i LankaLiberiaLesotoLitwaniaLuxembourgLativiaLibyaMorokoMonakoMoldovaMon" +
+ "tenegroSaint MartinMadagaskaVisiwa vya MarshallMasedoniaMaliMyanmar (Bur" +
+ "ma)MongoliaMacau SAR ChinaVisiwa vya Mariana vya KaskaziniMartinikiMorit" +
+ "aniaMontserratiMaltaMorisiMaldivesMalawiMeksikoMalesiaMsumbijiNamibiaNyu" +
+ "kaledoniaNigerKisiwa cha NorfolkNigeriaNikaragwaUholanziNorweNepalNauruN" +
+ "iueNyuzilandiOmaniPanamaPeruPolinesia ya UfaransaPapua New GuineaUfilipi" +
+ "noPakistaniPolandiSantapierre na MiquelonVisiwa vya PitcairnPuerto RicoM" +
+ "aeneo ya PalestinaUrenoPalauParagwaiQatarOceania ya NjeRiyunioniRomaniaS" +
+ "erbiaUrusiRwandaSaudiVisiwa vya SolomonShelisheliSudaniUswidiSingaporeSa" +
+ "ntahelenaSloveniaSvalbard na Jan MayenSlovakiaSiera LeoniSan MarinoSeneg" +
+ "aliSomaliaSurinamuSudani KusiniSão Tomé na PríncipeElsavadoSint MaartenS" +
+ "yriaUswaziTristan da CunhaVisiwa vya Turki na KaikoChadMaeneo ya Kusini " +
+ "ya UfaransaTogoTailandiTajikistaniTokelauTimor-LesteTurukimenistaniTunis" +
+ "iaTongaUturukiTrinidad na TobagoTuvaluTaiwanTanzaniaUkrainiUgandaVisiwa " +
+ "Vidogo vya Nje vya MarekaniMarekaniUrugwaiUzibekistaniVatikaniSantavisen" +
+ "ti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa vya Virgin" +
+ " vya MarekaniVietnamVanuatuWalis na FutunaSamoaKosovoYemeniMayotteAfrika" +
+ " KusiniZambiaZimbabweEneo lisilojulikanaDuniaAfrikaAmerika KaskaziniAmer" +
+ "ika KusiniOceaniaAfrika ya MagharibiAmerika ya KatiAfrika ya MasharikiAf" +
+ "rika ya KaskaziniAfrika ya KatiAfrika ya KusiniAmerikaAmerika ya Kaskazi" +
+ "niKaribianiAsia MasharikiAsia ya KusiniAsia ya Kusini MasharikiUlaya ya " +
+ "KusiniAustralasiaMelanesiaEneo la MikronesiaPolynesiaAsiaAsia ya KatiAsi" +
+ "a ya MagharibiUlayaUlaya ya MasharikiUlaya ya KaskaziniUlaya ya Magharib" +
+ "iAmerika ya Kilatini"
+
+var swRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0014, 0x001a, 0x002a, 0x0035, 0x0047, 0x004f, 0x0056,
+ 0x005d, 0x006f, 0x0075, 0x007e, 0x0086, 0x0097, 0x009e, 0x00a7,
+ 0x00ac, 0x00bd, 0x00c6, 0x00da, 0x00e2, 0x00ed, 0x00f5, 0x00ff,
+ 0x0107, 0x010f, 0x0116, 0x011b, 0x0129, 0x0130, 0x0136, 0x013d,
+ 0x0152, 0x0159, 0x015f, 0x0165, 0x0176, 0x017e, 0x0186, 0x018c,
+ 0x0192, 0x01ac, 0x01cc, 0x01e5, 0x01f8, 0x01fe, 0x020e, 0x021d,
+ 0x0222, 0x022a, 0x022f, 0x0237, 0x024c, 0x0255, 0x0259, 0x0261,
+ 0x0268, 0x027b, 0x0281, 0x0291, 0x029a, 0x02a6, 0x02ac, 0x02b3,
+ // Entry 40 - 7F
+ 0x02bb, 0x02ce, 0x02d5, 0x02e5, 0x02eb, 0x02f2, 0x02f7, 0x0307,
+ 0x030e, 0x0316, 0x031e, 0x032c, 0x0331, 0x0335, 0x0348, 0x0352,
+ 0x0362, 0x036a, 0x036f, 0x0378, 0x037f, 0x0384, 0x0397, 0x039f,
+ 0x03a4, 0x03ac, 0x03b5, 0x03bb, 0x03bf, 0x03c8, 0x03d1, 0x03d8,
+ 0x0402, 0x040b, 0x040f, 0x0418, 0x041e, 0x0431, 0x0458, 0x0461,
+ 0x0468, 0x046d, 0x0475, 0x0486, 0x048f, 0x0497, 0x049e, 0x04a9,
+ 0x04ae, 0x04d3, 0x04d8, 0x04dc, 0x04e4, 0x04ea, 0x04f0, 0x04f7,
+ 0x04fe, 0x0504, 0x0509, 0x0516, 0x051e, 0x0526, 0x052c, 0x053f,
+ // Entry 80 - BF
+ 0x054e, 0x055a, 0x0561, 0x0572, 0x057d, 0x0582, 0x058a, 0x0594,
+ 0x05a1, 0x05aa, 0x05b1, 0x05b7, 0x05bf, 0x05c9, 0x05d0, 0x05d5,
+ 0x05db, 0x05e1, 0x05e8, 0x05f2, 0x05fe, 0x0607, 0x061a, 0x0623,
+ 0x0627, 0x0636, 0x063e, 0x064d, 0x066d, 0x0676, 0x067f, 0x068a,
+ 0x068f, 0x0695, 0x069d, 0x06a3, 0x06aa, 0x06b1, 0x06b9, 0x06c0,
+ 0x06cc, 0x06d1, 0x06e3, 0x06ea, 0x06f3, 0x06fb, 0x0700, 0x0705,
+ 0x070a, 0x070e, 0x0718, 0x071d, 0x0723, 0x0727, 0x073c, 0x074c,
+ 0x0755, 0x075e, 0x0765, 0x077c, 0x078f, 0x079a, 0x07ad, 0x07b2,
+ // Entry C0 - FF
+ 0x07b7, 0x07bf, 0x07c4, 0x07d2, 0x07db, 0x07e2, 0x07e8, 0x07ed,
+ 0x07f3, 0x07f8, 0x080a, 0x0814, 0x081a, 0x0820, 0x0829, 0x0834,
+ 0x083c, 0x0851, 0x0859, 0x0864, 0x086e, 0x0876, 0x087d, 0x0885,
+ 0x0892, 0x08a9, 0x08b1, 0x08bd, 0x08c2, 0x08c8, 0x08d8, 0x08f1,
+ 0x08f5, 0x0911, 0x0915, 0x091d, 0x0928, 0x092f, 0x093a, 0x0949,
+ 0x0950, 0x0955, 0x095c, 0x096e, 0x0974, 0x097a, 0x0982, 0x0989,
+ 0x098f, 0x09b1, 0x09b9, 0x09c0, 0x09cc, 0x09d4, 0x09ed, 0x09f6,
+ 0x0a15, 0x0a33, 0x0a3a, 0x0a41, 0x0a50, 0x0a55, 0x0a5b, 0x0a61,
+ // Entry 100 - 13F
+ 0x0a68, 0x0a75, 0x0a7b, 0x0a83, 0x0a96, 0x0a9b, 0x0aa1, 0x0ab2,
+ 0x0ac0, 0x0ac7, 0x0ada, 0x0ae9, 0x0afc, 0x0b0f, 0x0b1d, 0x0b2d,
+ 0x0b34, 0x0b48, 0x0b51, 0x0b5f, 0x0b6d, 0x0b85, 0x0b94, 0x0b9f,
+ 0x0ba8, 0x0bba, 0x0bc3, 0x0bc7, 0x0bd3, 0x0be4, 0x0be9, 0x0bfb,
+ 0x0c0d, 0x0c1f, 0x0c32,
+} // Size: 606 bytes
+
+var taRegionStr string = "" + // Size: 9580 bytes
+ "அஷன்ஷியன் தீவுஅன்டோராஐக்கிய அரபு எமிரேட்ஸ்ஆப்கானிஸ்தான்ஆண்டிகுவா மற்றும்" +
+ " பார்புடாஅங்குய்லாஅல்பேனியாஅர்மேனியாநெதர்லாந்து ஆண்டில்லெஸ்அங்கோலாஅண்டார" +
+ "்டிகாஅர்ஜென்டினாஅமெரிக்க சமோவாஆஸ்திரியாஆஸ்திரேலியாஅரூபாஆலந்து தீவுகள்அ" +
+ "சர்பைஜான்போஸ்னியா & ஹெர்ஸகோவினாபார்படோஸ்பங்களாதேஷ்பெல்ஜியம்புர்கினா ஃப" +
+ "ாஸோபல்கேரியாபஹ்ரைன்புருண்டிபெனின்செயின்ட் பார்தேலெமிபெர்முடாபுரூனேய்பொ" +
+ "லிவியாகரீபியன் நெதர்லாந்துபிரேசில்பஹாமாஸ்பூடான்பொவேட் தீவுகள்போட்ஸ்வான" +
+ "ாபெலாரூஸ்பெலிஸ்கனடாகோகோஸ் (கீலிங்) தீவுகள்காங்கோ - கின்ஷாசாமத்திய ஆப்ர" +
+ "ிக்கக் குடியரசுகாங்கோ - ப்ராஸாவில்லேஸ்விட்சர்லாந்துகோட் தி’வாயர்குக் த" +
+ "ீவுகள்சிலிகேமரூன்சீனாகொலம்பியாகிலிப்பர்டன் தீவுகோஸ்டாரிகாகியூபாகேப் வெ" +
+ "ர்டேகுராகவ்கிறிஸ்துமஸ் தீவுசைப்ரஸ்செக் குடியரசுஜெர்மனிடியகோ கார்ஷியாஜி" +
+ "பௌட்டிடென்மார்க்டொமினிகாடொமினிகன் குடியரசுஅல்ஜீரியாசியூடா & மெலில்லாஈக" +
+ "்வடார்எஸ்டோனியாஎகிப்துமேற்கு சஹாராஎரிட்ரியாஸ்பெயின்எதியோப்பியாஐரோப்பிய" +
+ " யூனியன்பின்லாந்துஃபிஜிஃபாக்லாந்து தீவுகள்மைக்ரோனேஷியாஃபாரோ தீவுகள்பிரான" +
+ "்ஸ்கேபான்ஐக்கிய பேரரசுகிரனெடாஜார்ஜியாபிரெஞ்சு கயானாகெர்ன்சிகானாஜிப்ரால" +
+ "்டர்கிரீன்லாந்துகாம்பியாகினியாக்வாதேலோப்ஈக்வடோரியல் கினியாகிரீஸ்தென் ஜ" +
+ "ியார்ஜியா மற்றும் தென் சான்ட்விச் தீவுகள்கவுதமாலாகுவாம்கினியா-பிஸ்ஸாவ்" +
+ "கயானாஹாங்காங் எஸ்ஏஆர் சீனாஹேர்ட் மற்றும் மெக்டொனால்டு தீவுகள்ஹோண்டூராஸ" +
+ "்குரேஷியாஹைட்டிஹங்கேரிகேனரி தீவுகள்இந்தோனேஷியாஅயர்லாந்துஇஸ்ரேல்ஐல் ஆஃப" +
+ "் மேன்இந்தியாபிரிட்டிஷ் இந்தியப் பெருங்கடல் பிரதேசம்ஈராக்ஈரான்ஐஸ்லாந்த" +
+ "ுஇத்தாலிஜெர்சிஜமைகாஜோர்டான்ஜப்பான்கென்யாகிர்கிஸ்தான்கம்போடியாகிரிபடிகோ" +
+ "மரோஸ்செயின்ட் கிட்ஸ் & நெவிஸ்வட கொரியாதென் கொரியாகுவைத்கெய்மென் தீவுகள" +
+ "்கஸகஸ்தான்லாவோஸ்லெபனான்செயின்ட் லூசியாலிச்செண்ஸ்டெய்ன்இலங்கைலைபீரியாலெ" +
+ "சோதோலிதுவேனியாலக்ஸ்சம்பர்க்லாட்வியாலிபியாமொராக்கோமொனாக்கோமால்டோவாமான்ட" +
+ "ேனெக்ரோசெயின்ட் மார்ட்டீன்மடகாஸ்கர்மார்ஷல் தீவுகள்மாசிடோனியாமாலிமியான்" +
+ "மார் (பர்மா)மங்கோலியாமகாவ் எஸ்ஏஆர் சீனாவடக்கு மரியானா தீவுகள்மார்டினிக" +
+ "்மௌரிடானியாமாண்ட்செராட்மால்டாமொரிசியஸ்மாலத்தீவுமலாவிமெக்சிகோமலேசியாமொச" +
+ "ாம்பிக்நமீபியாநியூ கேலிடோனியாநைஜர்நார்ஃபோக் தீவுகள்நைஜீரியாநிகரகுவாநெத" +
+ "ர்லாந்துநார்வேநேபாளம்நௌருநியூநியூசிலாந்துஓமன்பனாமாபெருபிரெஞ்சு பாலினேஷ" +
+ "ியாபப்புவா நியூ கினியாபிலிப்பைன்ஸ்பாகிஸ்தான்போலந்துசெயின்ட் பியர் & மி" +
+ "க்வேலான்பிட்கெய்ர்ன் தீவுகள்பியூர்டோ ரிகோபாலஸ்தீனிய பிரதேசங்கள்போர்ச்ச" +
+ "ுக்கல்பாலோபராகுவேகத்தார்வெளிப்புற ஓஷியானியாரீயூனியன்ருமேனியாசெர்பியாரஷ" +
+ "்யாருவான்டாசவூதி அரேபியாசாலமன் தீவுகள்சீஷெல்ஸ்சூடான்ஸ்வீடன்சிங்கப்பூர்" +
+ "செயின்ட் ஹெலெனாஸ்லோவேனியாஸ்வல்பார்டு & ஜான் மேயன்ஸ்லோவாகியாசியாரா லியோ" +
+ "ன்சான் மரினோசெனெகல்சோமாலியாசுரினாம்தெற்கு சூடான்சாவ் தோம் & ப்ரின்சிபி" +
+ "எல் சால்வடார்சின்ட் மார்டென்சிரியாஸ்வாஸிலாந்துடிரிஸ்டன் டா குன்ஹாடர்க்" +
+ "ஸ் & கைகோஸ் தீவுகள்சாட்பிரெஞ்சு தெற்கு பிரதேசங்கள்டோகோதாய்லாந்துதாஜிகி" +
+ "ஸ்தான்டோகேலோதைமூர்-லெஸ்தேதுர்க்மெனிஸ்தான்டுனிசியாடோங்காதுருக்கிட்ரினிட" +
+ "ாட் & டொபாகோதுவாலூதைவான்தான்சானியாஉக்ரைன்உகாண்டாயூ.எஸ். வெளிப்புற தீவு" +
+ "கள்அமெரிக்காஉருகுவேஉஸ்பெகிஸ்தான்வாடிகன் நகரம்செயின்ட் வின்சென்ட் & கிர" +
+ "ெனடைன்ஸ்வெனிசுலாபிரிட்டீஷ் கன்னித் தீவுகள்யூ.எஸ். கன்னித் தீவுகள்வியட்" +
+ "நாம்வனுவாட்டுவாலிஸ் மற்றும் ஃபுடுனாசமோவாகொசோவோஏமன்மயோட்தென் ஆப்பிரிக்க" +
+ "ாஜாம்பியாஜிம்பாப்வேஅறியப்படாத பிரதேசம்உலகம்ஆப்ரிக்காவட அமெரிக்காதென் அ" +
+ "மெரிக்காஓஷியானியாமேற்கு ஆப்ரிக்காமத்திய அமெரிக்காகிழக்கு ஆப்ரிக்காவடக்" +
+ "கு ஆப்ரிக்காமத்திய ஆப்ரிக்காதெற்கு ஆப்ரிக்காஅமெரிக்காஸ்வடக்கு அமெரிக்க" +
+ "ாகரீபியன்கிழக்கு ஆசியாதெற்கு ஆசியாதென்கிழக்கு ஆசியாதெற்கு ஐரோப்பாஆஸ்தி" +
+ "ரலேசியாமெலனேஷியாமைக்ரோ நேஷியா பிரதேசம்பாலினேஷியாஆசியாமத்திய ஆசியாமேற்க" +
+ "ு ஆசியாஐரோப்பாகிழக்கு ஐரோப்பாவடக்கு ஐரோப்பாமேற்கு ஐரோப்பாலத்தீன் அமெரி" +
+ "க்கா"
+
+var taRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0028, 0x003d, 0x0078, 0x009f, 0x00e9, 0x0104, 0x011f,
+ 0x013a, 0x017d, 0x0192, 0x01b3, 0x01d4, 0x01fc, 0x0217, 0x0238,
+ 0x0247, 0x026f, 0x028d, 0x02c9, 0x02e4, 0x0302, 0x031d, 0x0345,
+ 0x0360, 0x0375, 0x038d, 0x039f, 0x03d6, 0x03ee, 0x0406, 0x041e,
+ 0x0458, 0x0470, 0x0485, 0x0497, 0x04bf, 0x04dd, 0x04f5, 0x0507,
+ 0x0513, 0x0550, 0x057d, 0x05c7, 0x0600, 0x062d, 0x0652, 0x0674,
+ 0x0680, 0x0695, 0x06a1, 0x06bc, 0x06ed, 0x070b, 0x071d, 0x073c,
+ 0x0751, 0x077f, 0x0794, 0x07b9, 0x07ce, 0x07f6, 0x080e, 0x082c,
+ // Entry 40 - 7F
+ 0x0844, 0x0878, 0x0893, 0x08c0, 0x08d8, 0x08f3, 0x0908, 0x092a,
+ 0x0945, 0x095d, 0x097e, 0x09ac, 0x09ca, 0x09d9, 0x0a10, 0x0a34,
+ 0x0a59, 0x0a71, 0x0a83, 0x0aa8, 0x0abd, 0x0ad5, 0x0afd, 0x0b15,
+ 0x0b21, 0x0b42, 0x0b66, 0x0b7e, 0x0b90, 0x0bae, 0x0be2, 0x0bf4,
+ 0x0c77, 0x0c8f, 0x0ca1, 0x0ccc, 0x0cdb, 0x0d16, 0x0d79, 0x0d97,
+ 0x0daf, 0x0dc1, 0x0dd6, 0x0dfb, 0x0e1c, 0x0e3a, 0x0e4f, 0x0e72,
+ 0x0e87, 0x0ef6, 0x0f05, 0x0f14, 0x0f2f, 0x0f44, 0x0f56, 0x0f65,
+ 0x0f7d, 0x0f92, 0x0fa4, 0x0fc8, 0x0fe3, 0x0ff8, 0x100d, 0x104d,
+ // Entry 80 - BF
+ 0x1066, 0x1085, 0x1097, 0x10c5, 0x10e0, 0x10f2, 0x1107, 0x1132,
+ 0x1162, 0x1174, 0x118c, 0x119e, 0x11bc, 0x11e3, 0x11fb, 0x120d,
+ 0x1225, 0x123d, 0x1255, 0x1279, 0x12b0, 0x12cb, 0x12f6, 0x1314,
+ 0x1320, 0x1350, 0x136b, 0x139d, 0x13db, 0x13f9, 0x1417, 0x143b,
+ 0x144d, 0x1468, 0x1483, 0x1492, 0x14aa, 0x14bf, 0x14dd, 0x14f2,
+ 0x151d, 0x152c, 0x155d, 0x1575, 0x158d, 0x15ae, 0x15c0, 0x15d5,
+ 0x15e1, 0x15ed, 0x1611, 0x161d, 0x162c, 0x1638, 0x166f, 0x16a4,
+ 0x16c8, 0x16e6, 0x16fb, 0x1744, 0x177e, 0x17a3, 0x17e3, 0x180a,
+ // Entry C0 - FF
+ 0x1816, 0x182b, 0x1840, 0x1877, 0x1892, 0x18aa, 0x18c2, 0x18d1,
+ 0x18e9, 0x190e, 0x1936, 0x194e, 0x1960, 0x1975, 0x1996, 0x19c1,
+ 0x19df, 0x1a1f, 0x1a3d, 0x1a62, 0x1a7e, 0x1a93, 0x1aab, 0x1ac3,
+ 0x1ae8, 0x1b22, 0x1b47, 0x1b72, 0x1b84, 0x1ba8, 0x1bdd, 0x1c1d,
+ 0x1c29, 0x1c76, 0x1c82, 0x1ca0, 0x1cc4, 0x1cd6, 0x1cfb, 0x1d2b,
+ 0x1d43, 0x1d55, 0x1d6d, 0x1da0, 0x1db2, 0x1dc4, 0x1de2, 0x1df7,
+ 0x1e0c, 0x1e4f, 0x1e6a, 0x1e7f, 0x1ea6, 0x1ecb, 0x1f26, 0x1f3e,
+ 0x1f88, 0x1fc5, 0x1fe0, 0x1ffb, 0x2039, 0x2048, 0x205a, 0x2066,
+ // Entry 100 - 13F
+ 0x2075, 0x20a3, 0x20bb, 0x20d9, 0x2110, 0x211f, 0x213a, 0x215c,
+ 0x2184, 0x219f, 0x21cd, 0x21fb, 0x222c, 0x225a, 0x2288, 0x22b6,
+ 0x22d7, 0x2305, 0x231d, 0x2342, 0x2364, 0x2395, 0x23bd, 0x23e1,
+ 0x23fc, 0x243a, 0x2458, 0x2467, 0x2489, 0x24ab, 0x24c0, 0x24eb,
+ 0x2513, 0x253b, 0x256c,
+} // Size: 606 bytes
+
+var teRegionStr string = "" + // Size: 9380 bytes
+ "ఎసెషన్ దీవిఅండొర్రాయునైటెడ్ అరబ్ ఎమిరేట్స్ఆఫ్ఘనిస్తాన్ఆంటిగ్వా మరియు బార" +
+ "్బుడాఆంగవిల్లాఅల్బేనియాఆర్మేనియానేదేర్లేండ్స్ అంటిల్లిస్అంగోలాఅంటార్కట" +
+ "ికాఅర్జెంటీనాఅమెరికన్ సమోవాఆస్ట్రియాఆస్ట్రేలియాఅరుబాఆలేండ్ దీవులుఅజర్బ" +
+ "ైజాన్బోస్నియా మరియు హెర్జెగొవీనాబార్బడోస్బంగ్లాదేశ్బెల్జియంబుర్కినా ఫా" +
+ "సోబల్గేరియాబహ్రెయిన్బురుండిబెనిన్సెంట్ బర్తేలెమీబెర్ముడాబ్రూనైబొలీవియా" +
+ "కరీబియన్ నెదర్లాండ్స్బ్రెజిల్బహామాస్భూటాన్బొవెట్ దీవిబోట్స్వానాబెలారస్" +
+ "బెలిజ్కెనడాకోకోస్ (కీలింగ్) దీవులుకాంగో- కిన్షాసాసెంట్రల్ ఆఫ్రికన్ రిప" +
+ "బ్లిక్కాంగో- బ్రాజావిల్లిస్విట్జర్లాండ్ఐవరీ కోస్ట్కుక్ దీవులుచిలీకామెర" +
+ "ూన్చైనాకొలంబియాక్లిప్పర్టన్ దీవికోస్టా రికాక్యూబాకేప్ వెర్డేకురాకవోక్ర" +
+ "ిస్మస్ దీవిసైప్రస్చెక్ రిపబ్లిక్జర్మనీడియాగో గార్సియాజిబౌటిడెన్మార్క్డ" +
+ "ోమెనికడొమెనికన్ రిపబ్లిక్అల్జీరియాస్యూటా మరియు మెలిల్లాఈక్వడార్ఎస్టోని" +
+ "యాఈజిప్ట్పడమటి సహారాఎరిట్రియాస్పెయిన్ఇథియోపియాయురోపియన్ యునియన్ఫిన్లాం" +
+ "డ్ఫిజీఫాక్\u200cల్యాండ్ దీవులుమైక్రోనేశియఫారో దీవులుఫ్రాన్స్\u200cగాబన" +
+ "్యునైటెడ్ కింగ్\u200cడమ్గ్రెనెడాజార్జియాఫ్రెంచ్ గియానాగ్వేర్నసేఘనాజిబ్" +
+ "రాల్టార్గ్రీన్\u200cలాండ్గాంబియాగినియాగ్వాడేలోప్ఈక్వటోరియల్ గినియాగ్రీ" +
+ "స్దక్షిణ జార్జియా & దక్షిణ శాండ్విచ్ దీవులుగ్వాటిమాలగ్వామ్గినియా-బిస్స" +
+ "ావ్గయానాహాంకాంగ్ ఎస్ఏఆర్ చైనాహెర్డ్ & మెక్ డొనాల్డ్ దీవులుహోండురాస్క్ర" +
+ "ోయేషియాహైటిహంగేరీకేనరీ దీవులుఇండోనేషియాఐర్లాండ్ఇజ్రాయిల్ఐల్ ఆఫ్ మాన్భా" +
+ "రత దేశంబ్రిటీష్ భారతీయ సముద్రపు ప్రాంతంఇరాక్ఇరాన్ఐస్లాండ్ఇటలీజెర్సీజమై" +
+ "కాజోర్డాన్జపాన్కెన్యాకిర్గిజిస్తాన్కంబోడియాకిరిబాటికొమొరోస్సెంట్ కిట్ట" +
+ "్స్ మరియు నెవిస్ఉత్తర కొరియాదక్షిణ కొరియాకువైట్కేమాన్ దీవులుకజకస్తాన్ల" +
+ "ావోస్లెబనాన్సెంట్ లూసియాలిక్టెస్టేన్శ్రీలంకలైబీరియాలెసోతోలిథువేనియాలక్" +
+ "సంబర్గ్లాత్వియాలిబియామొరాక్కోమొనాకోమోల్డోవామోంటేనేగ్రోసెంట్ మార్టిన్మడ" +
+ "గాస్కర్మార్షల్ దీవులుమేసిడోనియామాలిమయన్మార్ (బర్మా)మంగోలియామాకావ్ ఎస్ఏ" +
+ "ఆర్ చైనాఉత్తర మరియానా దీవులుమార్టినిక్మౌరిటేనియామోంట్సేర్రాట్మాల్టామార" +
+ "ిషస్మాల్దీవులుమాలావిమెక్సికోమలేషియామొజాంబిక్నమీబియాక్రొత్త కాలెడోనియాన" +
+ "ైజర్నార్ఫాక్ దీవినైజీరియానికరాగువానెదర్లాండ్స్నార్వేనేపాల్నౌరునియున్యూ" +
+ "జిలాండ్ఒమన్పనామాపెరూఫ్రెంచ్ పోలినిషియాపాపువా న్యు గినియాఫిలిప్పీన్స్పా" +
+ "కిస్తాన్పోలాండ్సెంట్ పియెర్ మరియు మికెలాన్పిట్\u200cకెయిర్న్ దీవులుఫ్య" +
+ "ూర్టో రికోపాలస్తీనియన్ ప్రాంతాలుపోర్చుగల్పలావుపరాగ్వేకతర్ఒషీనియా బయటున" +
+ "్నవిరియూనియన్రోమానియాసెర్బియారష్యారువాండాసౌదీ అరేబియాసోలమన్ దీవులుసీషె" +
+ "ల్స్సూడాన్స్వీడన్సింగపూర్సెంట్ హెలినాస్లోవేనియాస్వాల్బార్డ్ మరియు యాన్" +
+ " మాయేన్స్లోవేకియాసియెర్రా లియాన్సాన్ మారినోసెనెగల్సోమాలియాసురినామ్దక్షిణ" +
+ " సూడాన్సావోటోమ్ మరియు ప్రిన్సిపేఎల్ సాల్వడోర్సింట్ మార్టెన్సిరియాస్వాజిల" +
+ "్యాండ్ట్రిస్టన్ డ కన్హాతుర్క్ మరియు కాలికోస్ దీవులుచాద్ఫ్రెంచ్ దక్షిణ " +
+ "ప్రాంతాలుటోగోథాయిలాండ్తజికిస్తాన్టోకేలావ్టిమోర్-లెస్టెతుర్కమేనిస్తాన్ట" +
+ "్యునీషియాటోంగాటర్కీట్రినిడాడ్ మరియు టొబాగోటువాలుతైవాన్టాంజానియాఉక్రెయి" +
+ "న్ఉగాండాసంయుక్త రాజ్య అమెరికా బయట ఉన్న దీవులుఅమెరికా సంయుక్త రాష్ట్రాల" +
+ "ుఉరుగువేఉజ్బెకిస్తాన్వాటికన్ నగరంసెంట్ విన్సెంట్ మరియు గ్రెనడీన్స్వెను" +
+ "జువేలాబ్రిటిష్ వర్జిన్ దీవులుయు.ఎస్. వర్జిన్ దీవులువియత్నాంవనాటువాలిస్" +
+ " మరియు ఫ్యుత్యునాసమోవాకొసోవోయెమెన్మాయొట్టిదక్షిణ ఆఫ్రికాజాంబియాజింబాబ్వే" +
+ "తెలియని ప్రాంతంప్రపంచంఆఫ్రికాఉత్తర అమెరికాదక్షిణ అమెరికాఒషీనియపశ్చిమ ఆ" +
+ "ఫ్రికా భూభాగంమధ్యమ అమెరికాతూర్పు ఆఫ్రికాఉత్తర ఆఫ్రికామధ్యమ ఆఫ్రికాదక్ష" +
+ "ిణ ఆఫ్రికా భూభాగంఅమెరికాలుఉత్తర అమెరికా భూభాగంకరిబ్బియన్తూర్పు ఆసియాదక" +
+ "్షిణ ఆసియానైరుతి ఆసియాదక్షిణ యూరోప్ఆస్ట్రేలేసియామెలనేశియమైక్రోనేశియ ప్" +
+ "రాంతంపాలినేషియాఆసియామధ్య ఆసియాపడమటి ఆసియాయూరోప్తూర్పు యూరోప్ఉత్తర యూరో" +
+ "ప్పశ్చిమ యూరోప్లాటిన్ అమెరికా"
+
+var teRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x001f, 0x0037, 0x0078, 0x009c, 0x00dd, 0x00f8, 0x0113,
+ 0x012e, 0x0174, 0x0186, 0x01a7, 0x01c5, 0x01ed, 0x0208, 0x0229,
+ 0x0238, 0x025d, 0x027b, 0x02c8, 0x02e3, 0x0301, 0x0319, 0x033e,
+ 0x0359, 0x0374, 0x0389, 0x039b, 0x03c6, 0x03de, 0x03f0, 0x0408,
+ 0x0445, 0x045d, 0x0472, 0x0484, 0x04a3, 0x04c1, 0x04d6, 0x04e8,
+ 0x04f7, 0x0534, 0x055d, 0x05aa, 0x05df, 0x0609, 0x0628, 0x0647,
+ 0x0653, 0x066b, 0x0677, 0x068f, 0x06c0, 0x06df, 0x06f1, 0x0710,
+ 0x0725, 0x074d, 0x0762, 0x078a, 0x079c, 0x07c7, 0x07d9, 0x07f7,
+ // Entry 40 - 7F
+ 0x080c, 0x0843, 0x085e, 0x0899, 0x08b1, 0x08cc, 0x08e1, 0x0900,
+ 0x091b, 0x0933, 0x094e, 0x097f, 0x099a, 0x09a6, 0x09dd, 0x09fe,
+ 0x0a1d, 0x0a38, 0x0a47, 0x0a7b, 0x0a93, 0x0aab, 0x0ad3, 0x0aee,
+ 0x0af7, 0x0b1b, 0x0b3f, 0x0b54, 0x0b66, 0x0b84, 0x0bb8, 0x0bca,
+ 0x0c39, 0x0c54, 0x0c66, 0x0c91, 0x0ca0, 0x0cdb, 0x0d28, 0x0d43,
+ 0x0d61, 0x0d6d, 0x0d7f, 0x0da1, 0x0dbf, 0x0dd7, 0x0df2, 0x0e12,
+ 0x0e2b, 0x0e85, 0x0e94, 0x0ea3, 0x0ebb, 0x0ec7, 0x0ed9, 0x0ee8,
+ 0x0f00, 0x0f0f, 0x0f21, 0x0f4b, 0x0f63, 0x0f7b, 0x0f93, 0x0fde,
+ // Entry 80 - BF
+ 0x1000, 0x1025, 0x1037, 0x105c, 0x1077, 0x1089, 0x109e, 0x10c0,
+ 0x10e4, 0x10f9, 0x1111, 0x1123, 0x1141, 0x115f, 0x1177, 0x1189,
+ 0x11a1, 0x11b3, 0x11cb, 0x11ec, 0x1214, 0x122f, 0x1257, 0x1275,
+ 0x1281, 0x12ab, 0x12c3, 0x12f8, 0x1330, 0x134e, 0x136c, 0x1393,
+ 0x13a5, 0x13ba, 0x13d8, 0x13ea, 0x1402, 0x1417, 0x1432, 0x1447,
+ 0x147b, 0x148a, 0x14af, 0x14c7, 0x14e2, 0x1506, 0x1518, 0x152a,
+ 0x1536, 0x1542, 0x1563, 0x156f, 0x157e, 0x158a, 0x15be, 0x15f0,
+ 0x1614, 0x1632, 0x1647, 0x1692, 0x16cc, 0x16f1, 0x1731, 0x174c,
+ // Entry C0 - FF
+ 0x175b, 0x1770, 0x177c, 0x17ad, 0x17c8, 0x17e0, 0x17f8, 0x1807,
+ 0x181c, 0x183e, 0x1863, 0x187b, 0x188d, 0x18a2, 0x18ba, 0x18dc,
+ 0x18fa, 0x194e, 0x196c, 0x1997, 0x19b6, 0x19cb, 0x19e3, 0x19fb,
+ 0x1a20, 0x1a67, 0x1a8c, 0x1ab4, 0x1ac6, 0x1aed, 0x1b1c, 0x1b6a,
+ 0x1b76, 0x1bba, 0x1bc6, 0x1be1, 0x1c02, 0x1c1a, 0x1c3f, 0x1c6c,
+ 0x1c8a, 0x1c99, 0x1ca8, 0x1ce9, 0x1cfb, 0x1d0d, 0x1d28, 0x1d43,
+ 0x1d55, 0x1dba, 0x1e04, 0x1e19, 0x1e40, 0x1e62, 0x1ebf, 0x1edd,
+ 0x1f1e, 0x1f58, 0x1f70, 0x1f7f, 0x1fc0, 0x1fcf, 0x1fe1, 0x1ff3,
+ // Entry 100 - 13F
+ 0x200b, 0x2033, 0x2048, 0x2063, 0x208e, 0x20a3, 0x20b8, 0x20dd,
+ 0x2105, 0x2117, 0x2152, 0x2177, 0x219f, 0x21c4, 0x21e9, 0x2224,
+ 0x223f, 0x2277, 0x2295, 0x22b7, 0x22d9, 0x22fb, 0x2320, 0x2347,
+ 0x235f, 0x2396, 0x23b4, 0x23c3, 0x23df, 0x23fe, 0x2410, 0x2435,
+ 0x2457, 0x247c, 0x24a4,
+} // Size: 606 bytes
+
+var thRegionStr string = "" + // Size: 9078 bytes
+ "เกาะแอสเซนชันอันดอร์ราสหรัฐอาหรับเอมิเรตส์อัฟกานิสถานแอนติกาและบาร์บูดาแ" +
+ "องกวิลลาแอลเบเนียอาร์เมเนียเนเธอร์แลนด์แอนทิลลิสแองโกลาแอนตาร์กติกาอาร" +
+ "์เจนตินาอเมริกันซามัวออสเตรียออสเตรเลียอารูบาหมู่เกาะโอลันด์อาเซอร์ไบจ" +
+ "านบอสเนียและเฮอร์เซโกวีนาบาร์เบโดสบังกลาเทศเบลเยียมบูร์กินาฟาโซบัลแกเร" +
+ "ียบาห์เรนบุรุนดีเบนินเซนต์บาร์เธเลมีเบอร์มิวดาบรูไนโบลิเวียเนเธอร์แลนด" +
+ "์แคริบเบียนบราซิลบาฮามาสภูฏานเกาะบูเวตบอตสวานาเบลารุสเบลีซแคนาดาหมู่เก" +
+ "าะโคโคส (คีลิง)คองโก-กินชาซาสาธารณรัฐแอฟริกากลางคองโก-บราซซาวิลสวิตเซอ" +
+ "ร์แลนด์ไอวอรี่โคสต์หมู่เกาะคุกชิลีแคเมอรูนจีนโคลอมเบียเกาะคลิปเปอร์ตัน" +
+ "คอสตาริกาคิวบาเคปเวิร์ดคูราเซาเกาะคริสต์มาสไซปรัสสาธารณรัฐเช็กเยอรมนีด" +
+ "ิเอโกการ์เซียจิบูตีเดนมาร์กโดมินิกาสาธารณรัฐโดมินิกันแอลจีเรียซีโอตาแล" +
+ "ะเมลิลลาเอกวาดอร์เอสโตเนียอียิปต์ซาฮาราตะวันตกเอริเทรียสเปนเอธิโอเปียส" +
+ "หภาพยุโรปฟินแลนด์ฟิจิหมู่เกาะฟอล์กแลนด์ไมโครนีเซียหมู่เกาะแฟโรฝรั่งเศส" +
+ "กาบองสหราชอาณาจักรเกรเนดาจอร์เจียเฟรนช์เกียนาเกิร์นซีย์กานายิบรอลตาร์ก" +
+ "รีนแลนด์แกมเบียกินีกวาเดอลูปอิเควทอเรียลกินีกรีซเกาะเซาท์จอร์เจียและหม" +
+ "ู่เกาะเซาท์แซนด์วิชกัวเตมาลากวมกินี-บิสเซากายอานาเขตปกครองพิเศษฮ่องกงแ" +
+ "ห่งสาธารณรัฐประชาชนจีนเกาะเฮิร์ดและหมู่เกาะแมกดอนัลด์ฮอนดูรัสโครเอเชีย" +
+ "เฮติฮังการีหมู่เกาะคานารีอินโดนีเซียไอร์แลนด์อิสราเอลเกาะแมนอินเดียบริ" +
+ "ติชอินเดียนโอเชียนเทร์ริทอรีอิรักอิหร่านไอซ์แลนด์อิตาลีเจอร์ซีย์จาเมกา" +
+ "จอร์แดนญี่ปุ่นเคนยาคีร์กีซสถานกัมพูชาคิริบาสคอโมโรสเซนต์คิตส์และเนวิสเ" +
+ "กาหลีเหนือเกาหลีใต้คูเวตหมู่เกาะเคย์แมนคาซัคสถานลาวเลบานอนเซนต์ลูเซียล" +
+ "ิกเตนสไตน์ศรีลังกาไลบีเรียเลโซโทลิทัวเนียลักเซมเบิร์กลัตเวียลิเบียโมร็" +
+ "อกโกโมนาโกมอลโดวามอนเตเนโกรเซนต์มาตินมาดากัสการ์หมู่เกาะมาร์แชลล์มาซิโ" +
+ "ดเนียมาลีเมียนม่าร์ (พม่า)มองโกเลียเขตปกครองพิเศษมาเก๊าแห่งสาธารณรัฐปร" +
+ "ะชาชนจีนหมู่เกาะนอร์เทิร์นมาเรียนามาร์ตินีกมอริเตเนียมอนต์เซอร์รัตมอลต" +
+ "ามอริเชียสมัลดีฟส์มาลาวีเม็กซิโกมาเลเซียโมซัมบิกนามิเบียนิวแคลิโดเนียไ" +
+ "นเจอร์เกาะนอร์ฟอล์กไนจีเรียนิการากัวเนเธอร์แลนด์นอร์เวย์เนปาลนาอูรูนีอ" +
+ "ูเอนิวซีแลนด์โอมานปานามาเปรูเฟรนช์โปลินีเซียปาปัวนิวกินีฟิลิปปินส์ปากี" +
+ "สถานโปแลนด์แซงปีแยร์และมีเกอลงหมู่เกาะพิตแคร์นเปอร์โตริโกดินแดนปาเลสไต" +
+ "น์โปรตุเกสปาเลาปารากวัยกาตาร์เอาต์ไลอิงโอเชียเนียเรอูนียงโรมาเนียเซอร์" +
+ "เบียรัสเซียรวันดาซาอุดีอาระเบียหมู่เกาะโซโลมอนเซเชลส์ซูดานสวีเดนสิงคโป" +
+ "ร์เซนต์เฮเลนาสโลวีเนียสฟาลบาร์และยานไมเอนสโลวะเกียเซียร์ราลีโอนซานมารี" +
+ "โนเซเนกัลโซมาเลียซูรินาเมซูดานใต้เซาตูเมและปรินซิปีเอลซัลวาดอร์เซนต์มา" +
+ "ร์ตินซีเรียสวาซิแลนด์ทริสตัน เดอ คูนาหมู่เกาะเติกส์และหมู่เกาะเคคอสชาด" +
+ "เฟรนช์เซาเทิร์นเทร์ริทอรีส์โตโกไทยทาจิกิสถานโตเกเลาติมอร์-เลสเตเติร์กเ" +
+ "มนิสถานตูนิเซียตองกาตุรกีตรินิแดดและโตเบโกตูวาลูไต้หวันแทนซาเนียยูเครน" +
+ "ยูกันดาหมู่เกาะรอบนอกของสหรัฐอเมริกาสหรัฐอเมริกาอุรุกวัยอุซเบกิสถานนคร" +
+ "วาติกันเซนต์วินเซนต์และเกรนาดีนส์เวเนซุเอลาหมู่เกาะบริติชเวอร์จินหมู่เ" +
+ "กาะยูเอสเวอร์จินเวียดนามวานูอาตูวาลลิสและฟุตูนาซามัวโคโซโวเยเมนมายอตแอ" +
+ "ฟริกาใต้แซมเบียซิมบับเวภูมิภาคที่ไม่รู้จักโลกแอฟริกาอเมริกาเหนืออเมริก" +
+ "าใต้โอเชียเนียแอฟริกาตะวันตกอเมริกากลางแอฟริกาตะวันออกแอฟริกาเหนือแอฟร" +
+ "ิกากลางแอฟริกาตอนใต้อเมริกาอเมริกาตอนเหนือแคริบเบียนเอเชียตะวันออกเอเช" +
+ "ียใต้เอเชียตะวันออกเฉียงใต้ยุโรปใต้ออสตราเลเซียเมลานีเซียเขตไมโครนีเซี" +
+ "ยโปลินีเซียเอเชียเอเชียกลางเอเชียตะวันตกยุโรปยุโรปตะวันออกยุโรปเหนือยุ" +
+ "โรปตะวันตกละตินอเมริกา"
+
+var thRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0027, 0x0042, 0x007e, 0x009f, 0x00d5, 0x00f0, 0x010b,
+ 0x0129, 0x0168, 0x017d, 0x01a1, 0x01c2, 0x01e9, 0x0201, 0x021f,
+ 0x0231, 0x025e, 0x0282, 0x02c7, 0x02e2, 0x02fd, 0x0315, 0x0339,
+ 0x0354, 0x0369, 0x037e, 0x038d, 0x03ba, 0x03d8, 0x03e7, 0x03ff,
+ 0x0441, 0x0453, 0x0468, 0x0477, 0x0492, 0x04aa, 0x04bf, 0x04ce,
+ 0x04e0, 0x0519, 0x053e, 0x057a, 0x05a5, 0x05cf, 0x05f3, 0x0614,
+ 0x0620, 0x0638, 0x0641, 0x065c, 0x068c, 0x06a7, 0x06b6, 0x06d1,
+ 0x06e6, 0x070d, 0x071f, 0x0746, 0x075b, 0x0785, 0x0797, 0x07af,
+ // Entry 40 - 7F
+ 0x07c7, 0x07fd, 0x0818, 0x0848, 0x0863, 0x087e, 0x0893, 0x08ba,
+ 0x08d5, 0x08e1, 0x08ff, 0x091d, 0x0935, 0x0941, 0x0977, 0x0998,
+ 0x09bc, 0x09d4, 0x09e3, 0x0a0a, 0x0a1f, 0x0a37, 0x0a5b, 0x0a79,
+ 0x0a85, 0x0aa3, 0x0abe, 0x0ad3, 0x0adf, 0x0afa, 0x0b2a, 0x0b36,
+ 0x0bb1, 0x0bcc, 0x0bd5, 0x0bf4, 0x0c09, 0x0c8a, 0x0ce7, 0x0cff,
+ 0x0d1a, 0x0d26, 0x0d3b, 0x0d65, 0x0d86, 0x0da1, 0x0db9, 0x0dce,
+ 0x0de3, 0x0e40, 0x0e4f, 0x0e64, 0x0e7f, 0x0e91, 0x0eac, 0x0ebe,
+ 0x0ed3, 0x0ee8, 0x0ef7, 0x0f18, 0x0f2d, 0x0f42, 0x0f57, 0x0f8d,
+ // Entry 80 - BF
+ 0x0fae, 0x0fc9, 0x0fd8, 0x1005, 0x1020, 0x1029, 0x103e, 0x105f,
+ 0x1080, 0x1098, 0x10b0, 0x10c2, 0x10dd, 0x1101, 0x1116, 0x1128,
+ 0x1140, 0x1152, 0x1167, 0x1185, 0x11a3, 0x11c4, 0x11f7, 0x1215,
+ 0x1221, 0x124e, 0x1269, 0x12ea, 0x1338, 0x1353, 0x1371, 0x1398,
+ 0x13a7, 0x13c2, 0x13da, 0x13ec, 0x1404, 0x141c, 0x1434, 0x144c,
+ 0x1473, 0x1488, 0x14af, 0x14c7, 0x14e2, 0x1506, 0x151e, 0x152d,
+ 0x153f, 0x1551, 0x156f, 0x157e, 0x1590, 0x159c, 0x15cc, 0x15f0,
+ 0x160e, 0x1626, 0x163b, 0x1674, 0x16a4, 0x16c5, 0x16f2, 0x170a,
+ // Entry C0 - FF
+ 0x1719, 0x1731, 0x1743, 0x177f, 0x1797, 0x17af, 0x17ca, 0x17df,
+ 0x17f1, 0x181b, 0x1848, 0x185d, 0x186c, 0x187e, 0x1896, 0x18b7,
+ 0x18d2, 0x190b, 0x1926, 0x194d, 0x1968, 0x197d, 0x1995, 0x19ad,
+ 0x19c5, 0x19fb, 0x1a1f, 0x1a43, 0x1a55, 0x1a73, 0x1a9f, 0x1af9,
+ 0x1b02, 0x1b53, 0x1b5f, 0x1b68, 0x1b86, 0x1b9b, 0x1bbd, 0x1be7,
+ 0x1bff, 0x1c0e, 0x1c1d, 0x1c50, 0x1c62, 0x1c77, 0x1c92, 0x1ca4,
+ 0x1cb9, 0x1d10, 0x1d34, 0x1d4c, 0x1d6d, 0x1d8b, 0x1dd9, 0x1df7,
+ 0x1e39, 0x1e78, 0x1e90, 0x1ea8, 0x1ed5, 0x1ee4, 0x1ef6, 0x1f05,
+ // Entry 100 - 13F
+ 0x1f14, 0x1f32, 0x1f47, 0x1f5f, 0x1f98, 0x1fa1, 0x1fb6, 0x1fda,
+ 0x1ff8, 0x2016, 0x2040, 0x2061, 0x208e, 0x20b2, 0x20d3, 0x20fa,
+ 0x210f, 0x213c, 0x215a, 0x2184, 0x219f, 0x21e1, 0x21f9, 0x221d,
+ 0x223b, 0x2265, 0x2283, 0x2295, 0x22b3, 0x22da, 0x22e9, 0x2310,
+ 0x232e, 0x2352, 0x2376,
+} // Size: 606 bytes
+
+var trRegionStr string = "" + // Size: 3053 bytes
+ "Ascension AdasıAndorraBirleşik Arap EmirlikleriAfganistanAntigua ve Barb" +
+ "udaAnguillaArnavutlukErmenistanHollanda AntilleriAngolaAntarktikaArjanti" +
+ "nAmerikan SamoasıAvusturyaAvustralyaArubaÅland AdalarıAzerbaycanBosna He" +
+ "rsekBarbadosBangladeşBelçikaBurkina FasoBulgaristanBahreynBurundiBeninSa" +
+ "int BarthelemyBermudaBruneiBolivyaKarayip HollandaBrezilyaBahamalarButan" +
+ "Bouvet AdasıBotsvanaBeyaz RusyaBelizeKanadaCocos (Keeling) AdalarıKongo " +
+ "- KinşasaOrta Afrika CumhuriyetiKongo - BrazavilİsviçreFildişi SahiliCoo" +
+ "k AdalarıŞiliKamerunÇinKolombiyaClipperton AdasıKosta RikaKübaCape Verde" +
+ "CuraçaoChristmas AdasıGüney Kıbrıs Rum KesimiÇek CumhuriyetiAlmanyaDiego" +
+ " GarciaCibutiDanimarkaDominikaDominik CumhuriyetiCezayirSepte ve Melilla" +
+ "EkvadorEstonyaMısırBatı SaharaEritreİspanyaEtiyopyaAvrupa BirliğiFinland" +
+ "iyaFijiFalkland AdalarıMikronezyaFaroe AdalarıFransaGabonBirleşik Krallı" +
+ "kGrenadaGürcistanFransız GuyanasıGuernseyGanaCebelitarıkGrönlandGambiyaG" +
+ "ineGuadalupeEkvator GinesiYunanistanGüney Georgia ve Güney Sandwich Adal" +
+ "arıGuatemalaGuamGine-BissauGuyanaÇin Hong Kong ÖYBHeard Adası ve McDonal" +
+ "d AdalarıHondurasHırvatistanHaitiMacaristanKanarya AdalarıEndonezyaİrlan" +
+ "daİsrailMan AdasıHindistanBritanya Hint Okyanusu TopraklarıIrakİranİzlan" +
+ "daİtalyaJerseyJamaikaÜrdünJaponyaKenyaKırgızistanKamboçyaKiribatiKomorla" +
+ "rSaint Kitts ve NevisKuzey KoreGüney KoreKuveytCayman AdalarıKazakistanL" +
+ "aosLübnanSaint LuciaLiechtensteinSri LankaLiberyaLesotoLitvanyaLüksembur" +
+ "gLetonyaLibyaFasMonakoMoldovaKaradağSaint MartinMadagaskarMarshall Adala" +
+ "rıMakedonyaMaliMyanmar (Burma)MoğolistanÇin Makao ÖYBKuzey Mariana Adala" +
+ "rıMartinikMoritanyaMontserratMaltaMauritiusMaldivlerMalaviMeksikaMalezya" +
+ "MozambikNamibyaYeni KaledonyaNijerNorfolk AdasıNijeryaNikaraguaHollandaN" +
+ "orveçNepalNauruNiueYeni ZelandaUmmanPanamaPeruFransız PolinezyasıPapua Y" +
+ "eni GineFilipinlerPakistanPolonyaSaint Pierre ve MiquelonPitcairn Adalar" +
+ "ıPorto RikoFilistin BölgeleriPortekizPalauParaguayKatarUzak OkyanusyaRé" +
+ "unionRomanyaSırbistanRusyaRuandaSuudi ArabistanSolomon AdalarıSeyşellerS" +
+ "udanİsveçSingapurSaint HelenaSlovenyaSvalbard ve Jan Mayen AdalarıSlovak" +
+ "yaSierra LeoneSan MarinoSenegalSomaliSurinamGüney SudanSão Tomé ve Prínc" +
+ "ipeEl SalvadorSint MaartenSuriyeSvazilandTristan da CunhaTurks ve Caicos" +
+ " AdalarıÇadFransız Güney TopraklarıTogoTaylandTacikistanTokelauTimor-Les" +
+ "teTürkmenistanTunusTongaTürkiyeTrinidad ve TobagoTuvaluTayvanTanzanyaUkr" +
+ "aynaUgandaABD Uzak AdalarıABDUruguayÖzbekistanVatikanSaint Vincent ve Gr" +
+ "enadinlerVenezuelaBritanya Virjin AdalarıABD Virjin AdalarıVietnamVanuat" +
+ "uWallis ve Futuna AdalarıSamoaKosovaYemenMayotteGüney AfrikaZambiyaZimba" +
+ "bveBilinmeyen BölgeDünyaAfrikaKuzey AmerikaGüney AmerikaOkyanusyaBatı Af" +
+ "rikaOrta AmerikaDoğu AfrikaKuzey AfrikaOrta AfrikaAfrika’nın GüneyiAmeri" +
+ "kaAmerika’nın KuzeyiKarayiplerDoğu AsyaGüney AsyaGüneydoğu AsyaGüney Avr" +
+ "upaAvustralasyaMelanezyaMikronezya BölgesiPolinezyaAsyaOrta AsyaBatı Asy" +
+ "aAvrupaDoğu AvrupaKuzey AvrupaBatı AvrupaLatin Amerika"
+
+var trRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0017, 0x0031, 0x003b, 0x004d, 0x0055, 0x005f,
+ 0x0069, 0x007b, 0x0081, 0x008b, 0x0093, 0x00a4, 0x00ad, 0x00b7,
+ 0x00bc, 0x00cb, 0x00d5, 0x00e1, 0x00e9, 0x00f3, 0x00fb, 0x0107,
+ 0x0112, 0x0119, 0x0120, 0x0125, 0x0135, 0x013c, 0x0142, 0x0149,
+ 0x0159, 0x0161, 0x016a, 0x016f, 0x017c, 0x0184, 0x018f, 0x0195,
+ 0x019b, 0x01b3, 0x01c3, 0x01da, 0x01ea, 0x01f3, 0x0202, 0x020f,
+ 0x0214, 0x021b, 0x021f, 0x0228, 0x0239, 0x0243, 0x0248, 0x0252,
+ 0x025a, 0x026a, 0x0284, 0x0294, 0x029b, 0x02a7, 0x02ad, 0x02b6,
+ // Entry 40 - 7F
+ 0x02be, 0x02d1, 0x02d8, 0x02e8, 0x02ef, 0x02f6, 0x02fd, 0x0309,
+ 0x030f, 0x0317, 0x031f, 0x032e, 0x0338, 0x033c, 0x034d, 0x0357,
+ 0x0365, 0x036b, 0x0370, 0x0382, 0x0389, 0x0393, 0x03a5, 0x03ad,
+ 0x03b1, 0x03bd, 0x03c6, 0x03cd, 0x03d1, 0x03da, 0x03e8, 0x03f2,
+ 0x041c, 0x0425, 0x0429, 0x0434, 0x043a, 0x044d, 0x046e, 0x0476,
+ 0x0482, 0x0487, 0x0491, 0x04a1, 0x04aa, 0x04b2, 0x04b9, 0x04c3,
+ 0x04cc, 0x04ee, 0x04f2, 0x04f7, 0x04ff, 0x0506, 0x050c, 0x0513,
+ 0x051a, 0x0521, 0x0526, 0x0533, 0x053c, 0x0544, 0x054c, 0x0560,
+ // Entry 80 - BF
+ 0x056a, 0x0575, 0x057b, 0x058a, 0x0594, 0x0598, 0x059f, 0x05aa,
+ 0x05b7, 0x05c0, 0x05c7, 0x05cd, 0x05d5, 0x05e0, 0x05e7, 0x05ec,
+ 0x05ef, 0x05f5, 0x05fc, 0x0604, 0x0610, 0x061a, 0x062b, 0x0634,
+ 0x0638, 0x0647, 0x0652, 0x0661, 0x0677, 0x067f, 0x0688, 0x0692,
+ 0x0697, 0x06a0, 0x06a9, 0x06af, 0x06b6, 0x06bd, 0x06c5, 0x06cc,
+ 0x06da, 0x06df, 0x06ed, 0x06f4, 0x06fd, 0x0705, 0x070c, 0x0711,
+ 0x0716, 0x071a, 0x0726, 0x072b, 0x0731, 0x0735, 0x074a, 0x0759,
+ 0x0763, 0x076b, 0x0772, 0x078a, 0x079b, 0x07a5, 0x07b8, 0x07c0,
+ // Entry C0 - FF
+ 0x07c5, 0x07cd, 0x07d2, 0x07e0, 0x07e8, 0x07ef, 0x07f9, 0x07fe,
+ 0x0804, 0x0813, 0x0823, 0x082d, 0x0832, 0x0839, 0x0841, 0x084d,
+ 0x0855, 0x0873, 0x087b, 0x0887, 0x0891, 0x0898, 0x089e, 0x08a5,
+ 0x08b1, 0x08c8, 0x08d3, 0x08df, 0x08e5, 0x08ee, 0x08fe, 0x0916,
+ 0x091a, 0x0935, 0x0939, 0x0940, 0x094a, 0x0951, 0x095c, 0x0969,
+ 0x096e, 0x0973, 0x097b, 0x098d, 0x0993, 0x0999, 0x09a1, 0x09a8,
+ 0x09ae, 0x09bf, 0x09c2, 0x09c9, 0x09d4, 0x09db, 0x09f7, 0x0a00,
+ 0x0a18, 0x0a2b, 0x0a32, 0x0a39, 0x0a52, 0x0a57, 0x0a5d, 0x0a62,
+ // Entry 100 - 13F
+ 0x0a69, 0x0a76, 0x0a7d, 0x0a85, 0x0a96, 0x0a9c, 0x0aa2, 0x0aaf,
+ 0x0abd, 0x0ac6, 0x0ad2, 0x0ade, 0x0aea, 0x0af6, 0x0b01, 0x0b16,
+ 0x0b1d, 0x0b32, 0x0b3c, 0x0b46, 0x0b51, 0x0b61, 0x0b6e, 0x0b7a,
+ 0x0b83, 0x0b96, 0x0b9f, 0x0ba3, 0x0bac, 0x0bb6, 0x0bbc, 0x0bc8,
+ 0x0bd4, 0x0be0, 0x0bed,
+} // Size: 606 bytes
+
+var ukRegionStr string = "" + // Size: 6146 bytes
+ "Острів ВознесінняАндорраОбʼєднані Арабські ЕміратиАфганістанАнтигуа і Ба" +
+ "рбудаАнгільяАлбаніяВірменіяНідерландські Антильські ОстровиАнголаАнтарк" +
+ "тикаАргентинаАмериканське СамоаАвстріяАвстраліяАрубаАландські островиАз" +
+ "ербайджанБоснія і ГерцоговинаБарбадосБангладешБельгіяБуркіна-ФасоБолгар" +
+ "іяБахрейнБурундіБенінСен-БартельміБермудські островиБрунейБолівіяНідерл" +
+ "андські Карибські островиБразиліяБагамські ОстровиБутанОстрів БувеБотсв" +
+ "анаБілорусьБелізКанадаКокосові (Кілінгові) островиКонго – КіншасаЦентра" +
+ "льноафриканська РеспублікаКонго – БраззавільШвейцаріяКот-д’ІвуарОстрови" +
+ " КукаЧиліКамерунКитайКолумбіяОстрів КліппертонКоста-РикаКубаКабо ВердеКю" +
+ "расаоОстрів РіздваКіпрЧехіяНімеччинаДієго-ГарсіяДжибутіДаніяДомінікаДом" +
+ "ініканська РеспублікаАлжирСеута і МелільяЕквадорЕстоніяЄгипетЗахідна Са" +
+ "хараЕритреяІспаніяЕфіопіяЄвропейський СоюзФінляндіяФіджіФолклендські ос" +
+ "тровиМікронезіяФарерські островиФранціяГабонВелика БританіяГренадаГрузі" +
+ "яФранцузька ГвіанаГернсіГанаГібралтарГренландіяГамбіяГвінеяГваделупаЕкв" +
+ "аторіальна ГвінеяГреціяПівденна Джорджія та Південні Сандвічеві острови" +
+ "ГватемалаГуамГвінея-БісауГаянаГонконг, О.А.Р. КитаюОстрови Херд і Мак-Д" +
+ "ональдГондурасХорватіяГаїтіУгорщинаКанарські островиІндонезіяІрландіяІз" +
+ "раїльОстрів МенІндіяБританські території в Індійському океаніІракІранІс" +
+ "ландіяІталіяДжерсіЯмайкаЙорданіяЯпоніяКеніяКиргизстанКамбоджаКірибатіКо" +
+ "морські островиСент-Кітс і НевісПівнічна КореяПівденна КореяКувейтКайма" +
+ "нові островиКазахстанЛаосЛіванСент-ЛюсіяЛіхтенштейнШрі-ЛанкаЛіберіяЛесо" +
+ "тоЛитваЛюксембургЛатвіяЛівіяМароккоМонакоМолдоваЧорногоріяСен-МартенМад" +
+ "агаскарМаршаллові ОстровиМакедоніяМаліМʼянма (Бірма)МонголіяМакао, О.А." +
+ "Р КитаюПівнічні Маріанські островиМартинікаМавританіяМонтсерратМальтаМа" +
+ "врикійМальдівиМалавіМексикаМалайзіяМозамбікНамібіяНова КаледоніяНігерОс" +
+ "трів НорфолкНігеріяНікарагуаНідерландиНорвегіяНепалНауруНіуеНова Зеланд" +
+ "іяОманПанамаПеруФранцузька ПолінезіяПапуа Нова ГвінеяФіліппіниПакистанП" +
+ "ольщаСен-Пʼєр і МікелонОстрови ПіткернПуерто-РикоПалестинські території" +
+ "ПортугаліяПалауПарагвайКатарВіддалені острови ОкеаніїРеюньйонРумуніяСер" +
+ "біяРосіяРуандаСаудівська АравіяСоломонові ОстровиСейшельські островиСуд" +
+ "анШвеціяСінгапурОстрів Святої ЄлениСловеніяОстрови Свальбард і Ян-МаєнС" +
+ "ловаччинаСьєрра-ЛеонеСан-МариноСенегалСомаліСуринамПівденний СуданСан-Т" +
+ "оме і ПрінсіпіСальвадорСінт-МартенСиріяСвазілендТрістан-да-КуньяОстрови" +
+ " Теркс і КайкосЧадФранцузькі Південні ТериторіїТогоТаїландТаджикистанТок" +
+ "елауТимор-ЛештіТуркменістанТунісТонгаТуреччинаТринідад і ТобагоТувалуТа" +
+ "йваньТанзаніяУкраїнаУгандаВіддалені острови СШАСШАУругвайУзбекистанВати" +
+ "канСент-Вінсент і ГренадиниВенесуелаБританські Віргінські островиВіргін" +
+ "ські острови, СШАВʼєтнамВануатуВолліс і ФутунаСамоаКосовоЄменМайоттаПів" +
+ "денно-Африканська РеспублікаЗамбіяЗімбабвеНевідомий регіонСвітАфрикаПів" +
+ "нічна АмерикаПівденна АмерикаОкеаніяЗахідна АфрикаЦентральна АмерикаСхі" +
+ "дна АфрикаПівнічна АфрикаЦентральна АфрикаПівденна АфрикаАмерикаПівнічн" +
+ "а Америка (регіон)Карибський басейнСхідна АзіяПівденна АзіяПівденно-Схі" +
+ "дна АзіяПівденна ЄвропаАвстралазіяМеланезіяМікронезійський регіонПоліне" +
+ "зіяАзіяЦентральна АзіяЗахідна АзіяЄвропаСхідна ЄвропаПівнічна ЄвропаЗах" +
+ "ідна ЄвропаЛатинська Америка"
+
+var ukRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0021, 0x002f, 0x0061, 0x0075, 0x0095, 0x00a3, 0x00b1,
+ 0x00c1, 0x00ff, 0x010b, 0x011f, 0x0131, 0x0154, 0x0162, 0x0174,
+ 0x017e, 0x019f, 0x01b5, 0x01db, 0x01eb, 0x01fd, 0x020b, 0x0222,
+ 0x0232, 0x0240, 0x024e, 0x0258, 0x0271, 0x0294, 0x02a0, 0x02ae,
+ 0x02ea, 0x02fa, 0x031b, 0x0325, 0x033a, 0x034a, 0x035a, 0x0364,
+ 0x0370, 0x03a4, 0x03c1, 0x0400, 0x0423, 0x0435, 0x044b, 0x0462,
+ 0x046a, 0x0478, 0x0482, 0x0492, 0x04b3, 0x04c6, 0x04ce, 0x04e1,
+ 0x04ef, 0x0508, 0x0510, 0x051a, 0x052c, 0x0543, 0x0551, 0x055b,
+ // Entry 40 - 7F
+ 0x056b, 0x059a, 0x05a4, 0x05c0, 0x05ce, 0x05dc, 0x05e8, 0x0603,
+ 0x0611, 0x061f, 0x062d, 0x064e, 0x0660, 0x066a, 0x0691, 0x06a5,
+ 0x06c6, 0x06d4, 0x06de, 0x06fb, 0x0709, 0x0715, 0x0736, 0x0742,
+ 0x074a, 0x075c, 0x0770, 0x077c, 0x0788, 0x079a, 0x07c1, 0x07cd,
+ 0x0828, 0x083a, 0x0842, 0x0859, 0x0863, 0x0887, 0x08b7, 0x08c7,
+ 0x08d7, 0x08e1, 0x08f1, 0x0912, 0x0924, 0x0934, 0x0942, 0x0955,
+ 0x095f, 0x09ad, 0x09b5, 0x09bd, 0x09cd, 0x09d9, 0x09e5, 0x09f1,
+ 0x0a01, 0x0a0d, 0x0a17, 0x0a2b, 0x0a3b, 0x0a4b, 0x0a6c, 0x0a8b,
+ // Entry 80 - BF
+ 0x0aa6, 0x0ac1, 0x0acd, 0x0aee, 0x0b00, 0x0b08, 0x0b12, 0x0b25,
+ 0x0b3b, 0x0b4c, 0x0b5a, 0x0b66, 0x0b70, 0x0b84, 0x0b90, 0x0b9a,
+ 0x0ba8, 0x0bb4, 0x0bc2, 0x0bd6, 0x0be9, 0x0bfd, 0x0c20, 0x0c32,
+ 0x0c3a, 0x0c53, 0x0c63, 0x0c82, 0x0cb6, 0x0cc8, 0x0cdc, 0x0cf0,
+ 0x0cfc, 0x0d0c, 0x0d1c, 0x0d28, 0x0d36, 0x0d46, 0x0d56, 0x0d64,
+ 0x0d7f, 0x0d89, 0x0da4, 0x0db2, 0x0dc4, 0x0dd8, 0x0de8, 0x0df2,
+ 0x0dfc, 0x0e04, 0x0e1d, 0x0e25, 0x0e31, 0x0e39, 0x0e60, 0x0e80,
+ 0x0e92, 0x0ea2, 0x0eae, 0x0ecf, 0x0eec, 0x0f01, 0x0f2c, 0x0f40,
+ // Entry C0 - FF
+ 0x0f4a, 0x0f5a, 0x0f64, 0x0f94, 0x0fa4, 0x0fb2, 0x0fbe, 0x0fc8,
+ 0x0fd4, 0x0ff5, 0x1018, 0x103d, 0x1047, 0x1053, 0x1063, 0x1087,
+ 0x1097, 0x10c9, 0x10dd, 0x10f4, 0x1107, 0x1115, 0x1121, 0x112f,
+ 0x114c, 0x116f, 0x1181, 0x1196, 0x11a0, 0x11b2, 0x11d0, 0x11f9,
+ 0x11ff, 0x1237, 0x123f, 0x124d, 0x1263, 0x1271, 0x1286, 0x129e,
+ 0x12a8, 0x12b2, 0x12c4, 0x12e4, 0x12f0, 0x12fe, 0x130e, 0x131c,
+ 0x1328, 0x1350, 0x1356, 0x1364, 0x1378, 0x1386, 0x13b3, 0x13c5,
+ 0x13fd, 0x1428, 0x1436, 0x1444, 0x1460, 0x146a, 0x1476, 0x147e,
+ // Entry 100 - 13F
+ 0x148c, 0x14c8, 0x14d4, 0x14e4, 0x1503, 0x150b, 0x1517, 0x1536,
+ 0x1555, 0x1563, 0x157e, 0x15a1, 0x15ba, 0x15d7, 0x15f8, 0x1615,
+ 0x1623, 0x1651, 0x1672, 0x1687, 0x16a0, 0x16c6, 0x16e3, 0x16f9,
+ 0x170b, 0x1736, 0x1748, 0x1750, 0x176d, 0x1784, 0x1790, 0x17a9,
+ 0x17c6, 0x17e1, 0x1802,
+} // Size: 606 bytes
+
+var urRegionStr string = "" + // Size: 5159 bytes
+ "اسینشن آئلینڈانڈورامتحدہ عرب اماراتافغانستانانٹیگوا اور باربوداانگوئیلاا" +
+ "لبانیہآرمینیانیدرلینڈز انٹیلیزانگولاانٹارکٹیکاارجنٹیناامریکی ساموآآسٹری" +
+ "اآسٹریلیااروباآلینڈ آئلینڈزآذربائجانبوسنیا اور ہرزیگووینابارباڈوسبنگلہ " +
+ "دیشبیلجیمبرکینا فاسوبلغاریہبحرینبرونڈیبیننسینٹ برتھلیمیبرمودابرونئیبولی" +
+ "ویاکریبیائی نیدرلینڈزبرازیلبہاماسبھوٹانبؤویٹ آئلینڈبوتسوانابیلاروسبیلائ" +
+ "زکینیڈاکوکوس (کیلنگ) جزائرکانگو - کنشاساوسط افریقی جمہوریہکانگو - برازا" +
+ "ویلےسوئٹزر لینڈکوٹ ڈی آئیوریکک آئلینڈزچلیکیمرونچینکولمبیاکلپرٹن آئلینڈک" +
+ "وسٹا ریکاکیوباکیپ ورڈیکیوراکاؤکرسمس آئلینڈقبرصچیک جمہوریہجرمنیڈائجو گار" +
+ "سیاجبوتیڈنمارکڈومنیکاڈومنیکن جمہوریہالجیریاسیئوٹا اور میلیلاایکواڈوراسٹ" +
+ "ونیامصرمغربی صحارااریٹیریاہسپانیہایتھوپیایوروپی یونینفن لینڈفجیفاکلینڈ " +
+ "جزائرمائکرونیشیاجزائر فاروفرانسگیبونسلطنت متحدہگریناڈاجارجیافرینچ گیانا" +
+ "گوئرنسیگھاناجبل الطارقگرین لینڈگامبیاگنیگواڈیلوپاستوائی گیانایونانجنوبی" +
+ " جارجیا اور جنوبی سینڈوچ جزائرگواٹے مالاگوآمگنی بساؤگیاناہانگ کانگ SAR چ" +
+ "ینہیئرڈ آئلینڈ اور میکڈونالڈ آئلینڈزہونڈاروسکروشیاہیتیہنگریکینری آئلینڈ" +
+ "زانڈونیشیاآئرلینڈاسرائیلآئل آف مینبھارتبرطانوی ہندوستانی سمندری خطہعراق" +
+ "ایرانآئس لینڈاٹلیجرسیجمائیکااردنجاپانکینیاکرغزستانکمبوڈیاکریباتیکوموروس" +
+ "سینٹ کٹس اور نیویسشمالی کوریاجنوبی کوریاکویتکیمین آئلینڈزقزاخستانلاؤسلب" +
+ "نانسینٹ لوسیالیشٹنسٹائنسری لنکالائبیریالیسوتھولتھوانیالگژمبرگلٹویالیبیا" +
+ "مراقشموناکومالدووامونٹے نیگروسینٹ مارٹنمڈغاسکرمارشل آئلینڈزمقدونیہمالیم" +
+ "یانمار (برما)منگولیامکاؤ SAR چینشمالی ماریانا آئلینڈزمارٹینکموریطانیہمو" +
+ "نٹسیراٹمالٹاماریشسمالدیپملاویمیکسیکوملیشیاموزمبیقنامیبیانیو کلیڈونیانائ" +
+ "جرنارفوک آئلینڈنائجیریانکاراگووانیدر لینڈزناروےنیپالنؤرونیئونیوزی ینڈعم" +
+ "انپنامہپیروفرانسیسی پولینیشیاپاپوآ نیو گنیفلپائنیپاکستانپولینڈسینٹ پیئر" +
+ " اور میکلیئونپٹکائرن جزائرپیورٹو ریکوفلسطینی خطےپرتگالپلاؤپیراگوئےقطربیر" +
+ "ونی اوشیانیاری یونینرومانیاسربیاروسروانڈاسعودی عربسولومن آئلینڈزسشلیزسو" +
+ "ڈانسویڈنسنگاپورسینٹ ہیلیناسلووینیاسوالبرڈ اور جان ماینسلوواکیہسیئر لیون" +
+ "سان مارینوسینیگلصومالیہسورینامجنوبی سوڈانساؤ ٹوم اور پرنسپےال سلواڈورسن" +
+ "ٹ مارٹنشامسوازی لینڈٹرسٹن ڈا کیونہاترکس اور کیکاؤس جزائرچاڈفرانسیسی جنو" +
+ "بی خطےٹوگوتھائی لینڈتاجکستانٹوکیلاؤتیمور لیسٹترکمانستانتیونیسیاٹونگاترک" +
+ "یترینیداد اور ٹوباگوٹووالوتائیوانتنزانیہیوکرینیوگانڈاامریکہ سے باہر کے " +
+ "چھوٹے جزائزریاستہائے متحدہیوروگوئےازبکستانواٹیکن سٹیسینٹ ونسنٹ اور گرین" +
+ "یڈائنزوینزوئیلابرٹش ورجن آئلینڈزامریکی ورجن آئلینڈزویتناموینوآٹوویلیز ا" +
+ "ور فیوٹیوناساموآکوسووویمنمایوٹجنوبی افریقہزامبیازمبابوےنامعلوم علاقہدنی" +
+ "اافریقہشمالی امریکہجنوبی امریکہاوشیانیامغربی افریقہوسطی امریکہمشرقی افر" +
+ "یقہشمالی افریقہوسطی افریقہجنوبی افریقہ کے علاقہامیریکازشمالی امریکہ کا " +
+ "علاقہکریبیائیمشرقی ایشیاجنوبی ایشیاجنوب مشرقی ایشیاجنوبی یورپآسٹریلیشیا" +
+ "مالینیشیامائکرونیشیائی علاقہپولینیشیاایشیاوسطی ایشیامغربی ایشیایورپمشرق" +
+ "ی یورپشمالی یورپمغربی یورپلاطینی امریکہ"
+
+var urRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0019, 0x0025, 0x0043, 0x0055, 0x0079, 0x0089, 0x0097,
+ 0x00a5, 0x00c6, 0x00d2, 0x00e6, 0x00f6, 0x010d, 0x0119, 0x0129,
+ 0x0133, 0x014c, 0x015e, 0x0186, 0x0196, 0x01a7, 0x01b3, 0x01c8,
+ 0x01d6, 0x01e0, 0x01ec, 0x01f4, 0x020d, 0x0219, 0x0225, 0x0233,
+ 0x0256, 0x0262, 0x026e, 0x027a, 0x0291, 0x02a1, 0x02af, 0x02bb,
+ 0x02c7, 0x02e9, 0x0302, 0x0324, 0x0343, 0x0358, 0x0370, 0x0383,
+ 0x0389, 0x0395, 0x039b, 0x03a9, 0x03c2, 0x03d5, 0x03df, 0x03ee,
+ 0x03fe, 0x0415, 0x041d, 0x0432, 0x043c, 0x0453, 0x045d, 0x0469,
+ // Entry 40 - 7F
+ 0x0477, 0x0494, 0x04a2, 0x04c2, 0x04d2, 0x04e0, 0x04e6, 0x04fb,
+ 0x050b, 0x0519, 0x0529, 0x0540, 0x054d, 0x0553, 0x056c, 0x0582,
+ 0x0595, 0x059f, 0x05a9, 0x05be, 0x05cc, 0x05d8, 0x05ed, 0x05fb,
+ 0x0605, 0x0618, 0x0629, 0x0635, 0x063b, 0x064b, 0x0664, 0x066e,
+ 0x06af, 0x06c2, 0x06ca, 0x06d9, 0x06e3, 0x06ff, 0x073f, 0x074f,
+ 0x075b, 0x0763, 0x076d, 0x0786, 0x0798, 0x07a6, 0x07b4, 0x07c6,
+ 0x07d0, 0x0805, 0x080d, 0x0817, 0x0826, 0x082e, 0x0836, 0x0844,
+ 0x084c, 0x0856, 0x0860, 0x0870, 0x087e, 0x088c, 0x089a, 0x08bb,
+ // Entry 80 - BF
+ 0x08d0, 0x08e5, 0x08ed, 0x0906, 0x0916, 0x091e, 0x0928, 0x093b,
+ 0x094f, 0x095e, 0x096e, 0x097c, 0x098c, 0x099a, 0x09a4, 0x09ae,
+ 0x09b8, 0x09c4, 0x09d2, 0x09e7, 0x09fa, 0x0a08, 0x0a21, 0x0a2f,
+ 0x0a37, 0x0a50, 0x0a5e, 0x0a71, 0x0a99, 0x0aa7, 0x0ab9, 0x0acb,
+ 0x0ad5, 0x0ae1, 0x0aed, 0x0af7, 0x0b05, 0x0b11, 0x0b1f, 0x0b2d,
+ 0x0b44, 0x0b4e, 0x0b67, 0x0b77, 0x0b89, 0x0b9c, 0x0ba6, 0x0bb0,
+ 0x0bb8, 0x0bc0, 0x0bd1, 0x0bd9, 0x0be3, 0x0beb, 0x0c0e, 0x0c26,
+ 0x0c34, 0x0c42, 0x0c4e, 0x0c77, 0x0c90, 0x0ca5, 0x0cba, 0x0cc6,
+ // Entry C0 - FF
+ 0x0cce, 0x0cde, 0x0ce4, 0x0d01, 0x0d10, 0x0d1e, 0x0d28, 0x0d2e,
+ 0x0d3a, 0x0d4b, 0x0d66, 0x0d70, 0x0d7a, 0x0d84, 0x0d92, 0x0da7,
+ 0x0db7, 0x0ddc, 0x0dec, 0x0dfd, 0x0e10, 0x0e1c, 0x0e2a, 0x0e38,
+ 0x0e4d, 0x0e6e, 0x0e81, 0x0e92, 0x0e98, 0x0eab, 0x0ec7, 0x0eee,
+ 0x0ef4, 0x0f16, 0x0f1e, 0x0f31, 0x0f41, 0x0f4f, 0x0f62, 0x0f76,
+ 0x0f86, 0x0f90, 0x0f98, 0x0fbc, 0x0fc8, 0x0fd6, 0x0fe4, 0x0ff0,
+ 0x0ffe, 0x1033, 0x1050, 0x1060, 0x1070, 0x1083, 0x10b2, 0x10c4,
+ 0x10e4, 0x1108, 0x1114, 0x1122, 0x1144, 0x114e, 0x115a, 0x1160,
+ // Entry 100 - 13F
+ 0x116a, 0x1181, 0x118d, 0x119b, 0x11b4, 0x11bc, 0x11c8, 0x11df,
+ 0x11f6, 0x1206, 0x121d, 0x1232, 0x1249, 0x1260, 0x1275, 0x129c,
+ 0x12ac, 0x12d3, 0x12e3, 0x12f8, 0x130d, 0x132b, 0x133e, 0x1352,
+ 0x1364, 0x1389, 0x139b, 0x13a5, 0x13b8, 0x13cd, 0x13d5, 0x13e8,
+ 0x13fb, 0x140e, 0x1427,
+} // Size: 606 bytes
+
+var uzRegionStr string = "" + // Size: 3194 bytes
+ "Me’roj oroliAndorraBirlashgan Arab AmirliklariAfgʻonistonAntigua va Barb" +
+ "adosAngilyaAlbaniyaArmanistonAngolaAntarktidaArgentinaAmerika SamoasiAvs" +
+ "triyaAvstraliyaArubaAland orollariOzarbayjonBosniya va GertsegovinaBarba" +
+ "dosBangladeshBelgiyaBurkina-FasoBolgariyaBahraynBurundiBeninSen-Bartelem" +
+ "iBermuda orollariBruneyBoliviyaBoneyr, Sint-Estatius va SabaBraziliyaBag" +
+ "ama orollariButanBuve oroliBotsvanaBelarusBelizKanadaKokos (Kiling) orol" +
+ "lariKongo – KinshasaMarkaziy Afrika RespublikasiKongo – BrazzavilShveyts" +
+ "ariyaKot-d’IvuarKuk orollariChiliKamerunXitoyKolumbiyaKlipperton oroliKo" +
+ "sta-RikaKubaKabo-VerdeKyurasaoRojdestvo oroliKiprChexiya RespublikasiGer" +
+ "maniyaDiyego-GarsiyaJibutiDaniyaDominikaDominikan RespublikasiJazoirSeut" +
+ "a va MelilyaEkvadorEstoniyaMisrG‘arbiy Sahroi KabirEritreyaIspaniyaEfiop" +
+ "iyaYevropa IttifoqiFinlandiyaFijiFolklend orollariMikroneziyaFarer oroll" +
+ "ariFransiyaGabonBirlashgan QirollikGrenadaGruziyaFransuz GvianasiGernsiG" +
+ "anaGibraltarGrenlandiyaGambiyaGvineyaGvadelupeEkvatorial GvineyaGretsiya" +
+ "Janubiy Georgiya va Janubiy Sendvich orollariGvatemalaGuamGvineya-BisauG" +
+ "ayanaGonkong (Xitoy MMH)Xerd va Makdonald orollariGondurasXorvatiyaGaiti" +
+ "VengriyaKanar orollariIndoneziyaIrlandiyaIsroilMen oroliHindistonBritani" +
+ "yaning Hind okeanidagi hududiIroqEronIslandiyaItaliyaJersiYamaykaIordani" +
+ "yaYaponiyaKeniyaQirgʻizistonKambodjaKiribatiKomor orollariSent-Kits va N" +
+ "evisShimoliy KoreyaJanubiy KoreyaQuvaytKayman orollariQozogʻistonLaosLiv" +
+ "anSent-LyusiyaLixtenshteynShri-LankaLiberiyaLesotoLitvaLyuksemburgLatviy" +
+ "aLiviyaMarokashMonakoMoldovaChernogoriyaSent-MartinMadagaskarMarshall or" +
+ "ollariMakedoniyaMaliMyanma (Birma)MongoliyaMakao (Xitoy MMH)Shimoliy Mar" +
+ "iana orollariMartinikaMavritaniyaMontserratMaltaMavrikiyMaldiv orollariM" +
+ "alaviMeksikaMalayziyaMozambikNamibiyaYangi KaledoniyaNigerNorfolk oroliN" +
+ "igeriyaNikaraguaNiderlandiyaNorvegiyaNepalNauruNiueYangi ZelandiyaUmmonP" +
+ "anamaPeruFransuz PolineziyasiPapua – Yangi GvineyaFilippinPokistonPolsha" +
+ "Sent-Pyer va MikelonPitkern orollariPuerto-RikoFalastin hududiPortugaliy" +
+ "aPalauParagvayQatarYondosh OkeaniyaReyunionRuminiyaSerbiyaRossiyaRuandaS" +
+ "audiya ArabistoniSolomon orollariSeyshel orollariSudanShvetsiyaSingapurM" +
+ "uqaddas Yelena oroliSloveniyaSvalbard va Yan-MayenSlovakiyaSyerra-LeoneS" +
+ "an-MarinoSenegalSomaliSurinamJanubiy SudanSan-Tome va PrinsipiSalvadorSi" +
+ "nt-MartenSuriyaSvazilendTristan-da-KunyaTurks va Kaykos orollariChadFran" +
+ "suz Janubiy hududlariTogoTailandTojikistonTokelauTimorTurkmanistonTunisT" +
+ "ongaTurkiyaTrinidad va TobagoTuvaluTayvanTanzaniyaUkrainaUgandaAQSH yond" +
+ "osh orollariQoʻshma ShtatlarUrugvayOʻzbekistonVatikanSent-Vinsent va Gre" +
+ "nadinVenesuelaBritaniya Virgin orollariAQSH Virgin orollariVyetnamVanuat" +
+ "uUollis va FutunaSamoaKosovoYamanMayottaJanubiy Afrika RespublikasiZambi" +
+ "yaZimbabveNoma’lum mintaqaDunyoAfrikaShimoliy AmerikaJanubiy AmerikaOkea" +
+ "niyaG‘arbiy AfrikaMarkaziy AmerikaSharqiy AfrikaShimoliy AfrikaMarkaziy " +
+ "AfrikaJanubiy AfrikaAmerikaShimoliy Amerika – AQSH va KanadaKarib havzas" +
+ "iSharqiy OsiyoJanubiy OsiyoJanubi-sharqiy OsiyoJanubiy YevropaAvstralazi" +
+ "yaMelaneziyaMikroneziya mintaqasiPolineziyaOsiyoMarkaziy OsiyoG‘arbiy Os" +
+ "iyoYevropaSharqiy YevropaShimoliy YevropaG‘arbiy YevropaLotin Amerikasi"
+
+var uzRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000e, 0x0015, 0x0030, 0x003c, 0x004f, 0x0056, 0x005e,
+ 0x0068, 0x0068, 0x006e, 0x0078, 0x0081, 0x0090, 0x0098, 0x00a2,
+ 0x00a7, 0x00b5, 0x00bf, 0x00d6, 0x00de, 0x00e8, 0x00ef, 0x00fb,
+ 0x0104, 0x010b, 0x0112, 0x0117, 0x0124, 0x0134, 0x013a, 0x0142,
+ 0x015f, 0x0168, 0x0177, 0x017c, 0x0186, 0x018e, 0x0195, 0x019a,
+ 0x01a0, 0x01b7, 0x01c9, 0x01e5, 0x01f8, 0x0204, 0x0211, 0x021d,
+ 0x0222, 0x0229, 0x022e, 0x0237, 0x0247, 0x0251, 0x0255, 0x025f,
+ 0x0267, 0x0276, 0x027a, 0x028e, 0x0297, 0x02a5, 0x02ab, 0x02b1,
+ // Entry 40 - 7F
+ 0x02b9, 0x02cf, 0x02d5, 0x02e5, 0x02ec, 0x02f4, 0x02f8, 0x030e,
+ 0x0316, 0x031e, 0x0326, 0x0336, 0x0340, 0x0344, 0x0355, 0x0360,
+ 0x036e, 0x0376, 0x037b, 0x038e, 0x0395, 0x039c, 0x03ac, 0x03b2,
+ 0x03b6, 0x03bf, 0x03ca, 0x03d1, 0x03d8, 0x03e1, 0x03f3, 0x03fb,
+ 0x0428, 0x0431, 0x0435, 0x0442, 0x0448, 0x045b, 0x0475, 0x047d,
+ 0x0486, 0x048b, 0x0493, 0x04a1, 0x04ab, 0x04b4, 0x04ba, 0x04c3,
+ 0x04cc, 0x04f0, 0x04f4, 0x04f8, 0x0501, 0x0508, 0x050d, 0x0514,
+ 0x051d, 0x0525, 0x052b, 0x0538, 0x0540, 0x0548, 0x0556, 0x0568,
+ // Entry 80 - BF
+ 0x0577, 0x0585, 0x058b, 0x059a, 0x05a6, 0x05aa, 0x05af, 0x05bb,
+ 0x05c7, 0x05d1, 0x05d9, 0x05df, 0x05e4, 0x05ef, 0x05f6, 0x05fc,
+ 0x0604, 0x060a, 0x0611, 0x061d, 0x0628, 0x0632, 0x0643, 0x064d,
+ 0x0651, 0x065f, 0x0668, 0x0679, 0x0692, 0x069b, 0x06a6, 0x06b0,
+ 0x06b5, 0x06bd, 0x06cc, 0x06d2, 0x06d9, 0x06e2, 0x06ea, 0x06f2,
+ 0x0702, 0x0707, 0x0714, 0x071c, 0x0725, 0x0731, 0x073a, 0x073f,
+ 0x0744, 0x0748, 0x0757, 0x075c, 0x0762, 0x0766, 0x077a, 0x0791,
+ 0x0799, 0x07a1, 0x07a7, 0x07bb, 0x07cb, 0x07d6, 0x07e5, 0x07f0,
+ // Entry C0 - FF
+ 0x07f5, 0x07fd, 0x0802, 0x0812, 0x081a, 0x0822, 0x0829, 0x0830,
+ 0x0836, 0x0848, 0x0858, 0x0868, 0x086d, 0x0876, 0x087e, 0x0893,
+ 0x089c, 0x08b1, 0x08ba, 0x08c6, 0x08d0, 0x08d7, 0x08dd, 0x08e4,
+ 0x08f1, 0x0905, 0x090d, 0x0918, 0x091e, 0x0927, 0x0937, 0x094f,
+ 0x0953, 0x096c, 0x0970, 0x0977, 0x0981, 0x0988, 0x098d, 0x0999,
+ 0x099e, 0x09a3, 0x09aa, 0x09bc, 0x09c2, 0x09c8, 0x09d1, 0x09d8,
+ 0x09de, 0x09f3, 0x0a04, 0x0a0b, 0x0a17, 0x0a1e, 0x0a36, 0x0a3f,
+ 0x0a58, 0x0a6c, 0x0a73, 0x0a7a, 0x0a8a, 0x0a8f, 0x0a95, 0x0a9a,
+ // Entry 100 - 13F
+ 0x0aa1, 0x0abc, 0x0ac3, 0x0acb, 0x0add, 0x0ae2, 0x0ae8, 0x0af8,
+ 0x0b07, 0x0b0f, 0x0b1f, 0x0b2f, 0x0b3d, 0x0b4c, 0x0b5b, 0x0b69,
+ 0x0b70, 0x0b93, 0x0ba0, 0x0bad, 0x0bba, 0x0bce, 0x0bdd, 0x0be9,
+ 0x0bf3, 0x0c08, 0x0c12, 0x0c17, 0x0c25, 0x0c34, 0x0c3b, 0x0c4a,
+ 0x0c5a, 0x0c6b, 0x0c7a,
+} // Size: 606 bytes
+
+var viRegionStr string = "" + // Size: 3230 bytes
+ "Đảo AscensionAndorraCác Tiểu V.quốc Ả Rập T.nhấtAfghanistanAntigua và Ba" +
+ "rbudaAnguillaAlbaniArmeniaTây Ấn Hà LanAngolaNam CựcArgentinaĐảo Somoa t" +
+ "huộc MỹÁoÚcArubaQuần đảo ÅlandAzerbaijanBosnia và HerzegovinaBarbadosBan" +
+ "gladeshBỉBurkina FasoBungariBahrainBurundiBeninSt. BarthélemyBermudaBrun" +
+ "eiBoliviaCa-ri-bê Hà LanBrazilBahamasBhutanĐảo BouvetBotswanaBelarusBeli" +
+ "zeCanadaQuần đảo Cocos (Keeling)Congo - KinshasaCộng hòa Trung PhiCongo " +
+ "- BrazzavilleThụy SĩBờ Biển NgàQuần đảo CookChileCameroonTrung QuốcColom" +
+ "biaĐảo ClippertonCosta RicaCubaCape VerdeCuraçaoĐảo Giáng SinhSípCộng hò" +
+ "a SécĐứcDiego GarciaDjiboutiĐan MạchDominicaCộng hòa DominicaAlgeriaCeut" +
+ "a và MelillaEcuadorEstoniaAi CậpTây SaharaEritreaTây Ban NhaEthiopiaLiên" +
+ " Minh Châu ÂuPhần LanFijiQuần đảo FalklandMicronesiaQuần đảo FaroePhápGa" +
+ "bonVương quốc AnhGrenadaGeorgiaGuiana thuộc PhápGuernseyGhanaGibraltarGr" +
+ "eenlandGambiaGuineaGuadeloupeGuinea Xích ĐạoHy LạpQuần đảo Nam Georgia v" +
+ "à Nam SandwichGuatemalaGuamGuinea-BissauGuyanaHồng Kông, Trung QuốcQuần" +
+ " đảo Heard và McDonaldHondurasCroatiaHaitiHungariQuần đảo CanaryIndonesi" +
+ "aAi-lenIsraelĐảo ManẤn ĐộThuộc địa Anh tại Ấn Độ DươngI-rắcIranIcelandÝJ" +
+ "erseyJamaicaJordanNhật BảnKenyaKyrgyzstanCampuchiaKiribatiComorosSt. Kit" +
+ "ts và NevisTriều TiênHàn QuốcCô-oétQuần đảo CaymanKazakhstanLàoLi-băngSt" +
+ ". LuciaLiechtensteinSri LankaLiberiaLesothoLít-vaLuxembourgLatviaLi-biMa" +
+ "-rốcMonacoMoldovaMontenegroSt. MartinMadagascarQuần đảo MarshallMacedoni" +
+ "aMaliMyanmar (Miến Điện)Mông CổMacao, Trung QuốcQuần đảo Bắc MarianaMart" +
+ "iniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMoza" +
+ "mbiqueNamibiaNew CaledoniaNigerĐảo NorfolkNigeriaNicaraguaHà LanNa UyNep" +
+ "alNauruNiueNew ZealandOmanPanamaPeruPolynesia thuộc PhápPapua New Guinea" +
+ "PhilippinPakistanBa LanSaint Pierre và MiquelonQuần đảo PitcairnPuerto R" +
+ "icoLãnh thổ PalestineBồ Đào NhaPalauParaguayQatarVùng xa xôi thuộc Châu " +
+ "Đại DươngRéunionRomaniaSerbiaNgaRwandaẢ Rập Xê-útQuần đảo SolomonSeyche" +
+ "llesSudanThụy ĐiểnSingaporeSt. HelenaSloveniaSvalbard và Jan MayenSlovak" +
+ "iaSierra LeoneSan MarinoSenegalSomaliSurinameNam SudanSão Tomé và Prínci" +
+ "peEl SalvadorSint MaartenSyriaSwazilandTristan da CunhaQuần đảo Turk và " +
+ "CaicosChadLãnh thổ miền nam nước PhápTogoThái LanTajikistanTokelauĐông T" +
+ "imorTurkmenistanTunisiaTongaThổ Nhĩ KỳTrinidad và TobagoTuvaluĐài LoanTa" +
+ "nzaniaUkrainaUgandaCác đảo nhỏ xa t.tâm thuộc MỹHoa KỳUruguayUzbekistanT" +
+ "hành VaticanSt. Vincent và GrenadinesVenezuelaQuần đảo Virgin thuộc AnhQ" +
+ "uần đảo Virgin thuộc MỹViệt NamVanuatuWallis và FutunaSamoaKosovoYemenMa" +
+ "yotteNam PhiZambiaZimbabweVùng không xác địnhThế giớiChâu PhiBắc MỹNam M" +
+ "ỹChâu Đại DươngTây PhiTrung MỹĐông PhiBắc PhiTrung PhiMiền Nam Châu Ph" +
+ "iChâu MỹMiền Bắc Châu MỹCa-ri-bêĐông ÁNam ÁĐông Nam ÁNam ÂuÚc và New Zea" +
+ "landMelanesiaVùng MicronesianPolynesiaChâu ÁTrung ÁTây ÁChâu ÂuĐông ÂuBắ" +
+ "c ÂuTây ÂuChâu Mỹ La-tinh"
+
+var viRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0010, 0x0017, 0x003e, 0x0049, 0x005c, 0x0064, 0x006a,
+ 0x0071, 0x0082, 0x0088, 0x0091, 0x009a, 0x00b3, 0x00b6, 0x00b9,
+ 0x00be, 0x00d2, 0x00dc, 0x00f2, 0x00fa, 0x0104, 0x0108, 0x0114,
+ 0x011b, 0x0122, 0x0129, 0x012e, 0x013d, 0x0144, 0x014a, 0x0151,
+ 0x0162, 0x0168, 0x016f, 0x0175, 0x0182, 0x018a, 0x0191, 0x0197,
+ 0x019d, 0x01ba, 0x01ca, 0x01df, 0x01f2, 0x01fc, 0x020c, 0x021e,
+ 0x0223, 0x022b, 0x0237, 0x023f, 0x0250, 0x025a, 0x025e, 0x0268,
+ 0x0270, 0x0282, 0x0286, 0x0296, 0x029c, 0x02a8, 0x02b0, 0x02bb,
+ // Entry 40 - 7F
+ 0x02c3, 0x02d7, 0x02de, 0x02ef, 0x02f6, 0x02fd, 0x0305, 0x0310,
+ 0x0317, 0x0323, 0x032b, 0x033f, 0x0349, 0x034d, 0x0363, 0x036d,
+ 0x0380, 0x0385, 0x038a, 0x039c, 0x03a3, 0x03aa, 0x03be, 0x03c6,
+ 0x03cb, 0x03d4, 0x03dd, 0x03e3, 0x03e9, 0x03f3, 0x0406, 0x040e,
+ 0x0438, 0x0441, 0x0445, 0x0452, 0x0458, 0x0472, 0x0492, 0x049a,
+ 0x04a1, 0x04a6, 0x04ad, 0x04c1, 0x04ca, 0x04d0, 0x04d6, 0x04e0,
+ 0x04ea, 0x0515, 0x051c, 0x0520, 0x0527, 0x0529, 0x052f, 0x0536,
+ 0x053c, 0x0548, 0x054d, 0x0557, 0x0560, 0x0568, 0x056f, 0x0582,
+ // Entry 80 - BF
+ 0x058f, 0x059a, 0x05a2, 0x05b6, 0x05c0, 0x05c4, 0x05cc, 0x05d5,
+ 0x05e2, 0x05eb, 0x05f2, 0x05f9, 0x0600, 0x060a, 0x0610, 0x0615,
+ 0x061d, 0x0623, 0x062a, 0x0634, 0x063e, 0x0648, 0x065e, 0x0667,
+ 0x066b, 0x0683, 0x068d, 0x06a0, 0x06bb, 0x06c5, 0x06cf, 0x06d9,
+ 0x06de, 0x06e7, 0x06ef, 0x06f5, 0x06fb, 0x0703, 0x070d, 0x0714,
+ 0x0721, 0x0726, 0x0734, 0x073b, 0x0744, 0x074b, 0x0750, 0x0755,
+ 0x075a, 0x075e, 0x0769, 0x076d, 0x0773, 0x0777, 0x078e, 0x079e,
+ 0x07a7, 0x07af, 0x07b5, 0x07ce, 0x07e4, 0x07ef, 0x0804, 0x0812,
+ // Entry C0 - FF
+ 0x0817, 0x081f, 0x0824, 0x084e, 0x0856, 0x085d, 0x0863, 0x0866,
+ 0x086c, 0x087d, 0x0892, 0x089c, 0x08a1, 0x08af, 0x08b8, 0x08c2,
+ 0x08ca, 0x08e0, 0x08e8, 0x08f4, 0x08fe, 0x0905, 0x090b, 0x0913,
+ 0x091c, 0x0934, 0x093f, 0x094b, 0x0950, 0x0959, 0x0969, 0x0986,
+ 0x098a, 0x09ae, 0x09b2, 0x09bb, 0x09c5, 0x09cc, 0x09d8, 0x09e4,
+ 0x09eb, 0x09f0, 0x09ff, 0x0a12, 0x0a18, 0x0a22, 0x0a2a, 0x0a31,
+ 0x0a37, 0x0a5f, 0x0a67, 0x0a6e, 0x0a78, 0x0a86, 0x0aa0, 0x0aa9,
+ 0x0ac9, 0x0aea, 0x0af4, 0x0afb, 0x0b0c, 0x0b11, 0x0b17, 0x0b1c,
+ // Entry 100 - 13F
+ 0x0b23, 0x0b2a, 0x0b30, 0x0b38, 0x0b51, 0x0b5d, 0x0b66, 0x0b70,
+ 0x0b78, 0x0b8c, 0x0b94, 0x0b9e, 0x0ba8, 0x0bb1, 0x0bba, 0x0bce,
+ 0x0bd8, 0x0bef, 0x0bf8, 0x0c01, 0x0c07, 0x0c14, 0x0c1b, 0x0c2e,
+ 0x0c37, 0x0c48, 0x0c51, 0x0c59, 0x0c61, 0x0c68, 0x0c71, 0x0c7b,
+ 0x0c84, 0x0c8c, 0x0c9e,
+} // Size: 606 bytes
+
+var zhRegionStr string = "" + // Size: 3331 bytes
+ "阿森松岛安道尔阿拉伯联合酋长国阿富汗安提瓜和巴布达安圭拉阿尔巴尼亚亚美尼亚荷属安的列斯群岛安哥拉南极洲阿根廷美属萨摩亚奥地利澳大利亚阿鲁巴奥兰群" +
+ "岛阿塞拜疆波斯尼亚和黑塞哥维那巴巴多斯孟加拉国比利时布基纳法索保加利亚巴林布隆迪贝宁圣巴泰勒米百慕大文莱玻利维亚荷兰加勒比区巴西巴哈马不丹布" +
+ "维岛博茨瓦纳白俄罗斯伯利兹加拿大科科斯(基林)群岛刚果(金)中非共和国刚果(布)瑞士科特迪瓦库克群岛智利喀麦隆中国哥伦比亚克利珀顿岛哥斯达黎" +
+ "加古巴佛得角库拉索圣诞岛塞浦路斯捷克共和国德国迪戈加西亚岛吉布提丹麦多米尼克多米尼加共和国阿尔及利亚休达及梅利利亚厄瓜多尔爱沙尼亚埃及西撒哈" +
+ "拉厄立特里亚西班牙埃塞俄比亚欧盟芬兰斐济福克兰群岛密克罗尼西亚法罗群岛法国加蓬英国格林纳达格鲁吉亚法属圭亚那根西岛加纳直布罗陀格陵兰冈比亚几" +
+ "内亚瓜德罗普赤道几内亚希腊南乔治亚岛和南桑威齐群岛危地马拉关岛几内亚比绍圭亚那中国香港特别行政区赫德岛和麦克唐纳群岛洪都拉斯克罗地亚海地匈牙" +
+ "利加纳利群岛印度尼西亚爱尔兰以色列曼岛印度英属印度洋领地伊拉克伊朗冰岛意大利泽西岛牙买加约旦日本肯尼亚吉尔吉斯斯坦柬埔寨基里巴斯科摩罗圣基茨" +
+ "和尼维斯朝鲜韩国科威特开曼群岛哈萨克斯坦老挝黎巴嫩圣卢西亚列支敦士登斯里兰卡利比里亚莱索托立陶宛卢森堡拉脱维亚利比亚摩洛哥摩纳哥摩尔多瓦黑山" +
+ "法属圣马丁马达加斯加马绍尔群岛马其顿马里缅甸蒙古中国澳门特别行政区北马里亚纳群岛马提尼克毛里塔尼亚蒙特塞拉特马耳他毛里求斯马尔代夫马拉维墨西" +
+ "哥马来西亚莫桑比克纳米比亚新喀里多尼亚尼日尔诺福克岛尼日利亚尼加拉瓜荷兰挪威尼泊尔瑙鲁纽埃新西兰阿曼巴拿马秘鲁法属波利尼西亚巴布亚新几内亚菲" +
+ "律宾巴基斯坦波兰圣皮埃尔和密克隆群岛皮特凯恩群岛波多黎各巴勒斯坦领土葡萄牙帕劳巴拉圭卡塔尔大洋洲边远群岛留尼汪罗马尼亚塞尔维亚俄罗斯卢旺达沙" +
+ "特阿拉伯所罗门群岛塞舌尔苏丹瑞典新加坡圣赫勒拿斯洛文尼亚斯瓦尔巴特和扬马延斯洛伐克塞拉利昂圣马力诺塞内加尔索马里苏里南南苏丹圣多美和普林西比" +
+ "萨尔瓦多荷属圣马丁叙利亚斯威士兰特里斯坦-达库尼亚群岛特克斯和凯科斯群岛乍得法属南部领地多哥泰国塔吉克斯坦托克劳东帝汶土库曼斯坦突尼斯汤加土" +
+ "耳其特立尼达和多巴哥图瓦卢台湾坦桑尼亚乌克兰乌干达美国本土外小岛屿美国乌拉圭乌兹别克斯坦梵蒂冈圣文森特和格林纳丁斯委内瑞拉英属维京群岛美属维" +
+ "京群岛越南瓦努阿图瓦利斯和富图纳萨摩亚科索沃也门马约特南非赞比亚津巴布韦未知地区世界非洲北美洲南美洲大洋洲西非中美洲东非北非中非南部非洲美洲" +
+ "美洲北部加勒比地区东亚南亚东南亚南欧澳大拉西亚美拉尼西亚密克罗尼西亚地区玻利尼西亚亚洲中亚西亚欧洲东欧北欧西欧拉丁美洲"
+
+var zhRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063,
+ 0x006f, 0x0087, 0x0090, 0x0099, 0x00a2, 0x00b1, 0x00ba, 0x00c6,
+ 0x00cf, 0x00db, 0x00e7, 0x0105, 0x0111, 0x011d, 0x0126, 0x0135,
+ 0x0141, 0x0147, 0x0150, 0x0156, 0x0165, 0x016e, 0x0174, 0x0180,
+ 0x0192, 0x0198, 0x01a1, 0x01a7, 0x01b0, 0x01bc, 0x01c8, 0x01d1,
+ 0x01da, 0x01f5, 0x0204, 0x0213, 0x0222, 0x0228, 0x0234, 0x0240,
+ 0x0246, 0x024f, 0x0255, 0x0261, 0x0270, 0x027f, 0x0285, 0x028e,
+ 0x0297, 0x02a0, 0x02ac, 0x02bb, 0x02c1, 0x02d3, 0x02dc, 0x02e2,
+ // Entry 40 - 7F
+ 0x02ee, 0x0303, 0x0312, 0x0327, 0x0333, 0x033f, 0x0345, 0x0351,
+ 0x0360, 0x0369, 0x0378, 0x037e, 0x0384, 0x038a, 0x0399, 0x03ab,
+ 0x03b7, 0x03bd, 0x03c3, 0x03c9, 0x03d5, 0x03e1, 0x03f0, 0x03f9,
+ 0x03ff, 0x040b, 0x0414, 0x041d, 0x0426, 0x0432, 0x0441, 0x0447,
+ 0x046b, 0x0477, 0x047d, 0x048c, 0x0495, 0x04b0, 0x04ce, 0x04da,
+ 0x04e6, 0x04ec, 0x04f5, 0x0504, 0x0513, 0x051c, 0x0525, 0x052b,
+ 0x0531, 0x0546, 0x054f, 0x0555, 0x055b, 0x0564, 0x056d, 0x0576,
+ 0x057c, 0x0582, 0x058b, 0x059d, 0x05a6, 0x05b2, 0x05bb, 0x05d0,
+ // Entry 80 - BF
+ 0x05d6, 0x05dc, 0x05e5, 0x05f1, 0x0600, 0x0606, 0x060f, 0x061b,
+ 0x062a, 0x0636, 0x0642, 0x064b, 0x0654, 0x065d, 0x0669, 0x0672,
+ 0x067b, 0x0684, 0x0690, 0x0696, 0x06a5, 0x06b4, 0x06c3, 0x06cc,
+ 0x06d2, 0x06d8, 0x06de, 0x06f9, 0x070e, 0x071a, 0x0729, 0x0738,
+ 0x0741, 0x074d, 0x0759, 0x0762, 0x076b, 0x0777, 0x0783, 0x078f,
+ 0x07a1, 0x07aa, 0x07b6, 0x07c2, 0x07ce, 0x07d4, 0x07da, 0x07e3,
+ 0x07e9, 0x07ef, 0x07f8, 0x07fe, 0x0807, 0x080d, 0x0822, 0x0837,
+ 0x0840, 0x084c, 0x0852, 0x0870, 0x0882, 0x088e, 0x08a0, 0x08a9,
+ // Entry C0 - FF
+ 0x08af, 0x08b8, 0x08c1, 0x08d6, 0x08df, 0x08eb, 0x08f7, 0x0900,
+ 0x0909, 0x0918, 0x0927, 0x0930, 0x0936, 0x093c, 0x0945, 0x0951,
+ 0x0960, 0x097b, 0x0987, 0x0993, 0x099f, 0x09ab, 0x09b4, 0x09bd,
+ 0x09c6, 0x09de, 0x09ea, 0x09f9, 0x0a02, 0x0a0e, 0x0a2d, 0x0a48,
+ 0x0a4e, 0x0a60, 0x0a66, 0x0a6c, 0x0a7b, 0x0a84, 0x0a8d, 0x0a9c,
+ 0x0aa5, 0x0aab, 0x0ab4, 0x0acc, 0x0ad5, 0x0adb, 0x0ae7, 0x0af0,
+ 0x0af9, 0x0b11, 0x0b17, 0x0b20, 0x0b32, 0x0b3b, 0x0b59, 0x0b65,
+ 0x0b77, 0x0b89, 0x0b8f, 0x0b9b, 0x0bb0, 0x0bb9, 0x0bc2, 0x0bc8,
+ // Entry 100 - 13F
+ 0x0bd1, 0x0bd7, 0x0be0, 0x0bec, 0x0bf8, 0x0bfe, 0x0c04, 0x0c0d,
+ 0x0c16, 0x0c1f, 0x0c25, 0x0c2e, 0x0c34, 0x0c3a, 0x0c40, 0x0c4c,
+ 0x0c52, 0x0c5e, 0x0c6d, 0x0c73, 0x0c79, 0x0c82, 0x0c88, 0x0c97,
+ 0x0ca6, 0x0cbe, 0x0ccd, 0x0cd3, 0x0cd9, 0x0cdf, 0x0ce5, 0x0ceb,
+ 0x0cf1, 0x0cf7, 0x0d03,
+} // Size: 606 bytes
+
+var zhHantRegionStr string = "" + // Size: 3333 bytes
+ "阿森松島安道爾阿拉伯聯合大公國阿富汗安地卡及巴布達安圭拉阿爾巴尼亞亞美尼亞荷屬安地列斯安哥拉南極洲阿根廷美屬薩摩亞奧地利澳洲荷屬阿魯巴奧蘭群島亞" +
+ "塞拜然波士尼亞與赫塞哥維納巴貝多孟加拉比利時布吉納法索保加利亞巴林蒲隆地貝南聖巴瑟米百慕達汶萊玻利維亞荷蘭加勒比區巴西巴哈馬不丹布威島波札那" +
+ "白俄羅斯貝里斯加拿大科科斯(基林)群島剛果(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中華人民共和國哥倫比亞克里派頓島哥" +
+ "斯大黎加古巴維德角庫拉索聖誕島賽普勒斯捷克共和國德國迪亞哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼亞埃及" +
+ "西撒哈拉厄利垂亞西班牙衣索比亞歐盟芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島法國加彭英國格瑞那達喬治亞共和國法屬圭亞那根西島迦納直布羅陀格陵" +
+ "蘭甘比亞幾內亞瓜地洛普赤道幾內亞希臘南喬治亞與南三明治群島瓜地馬拉關島幾內亞比索蓋亞那中華人民共和國香港特別行政區赫德島和麥克唐納群島宏都拉" +
+ "斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加約旦日本肯亞吉爾吉斯柬埔寨吉里巴斯葛摩" +
+ "聖克里斯多福及尼維斯北韓南韓科威特開曼群島哈薩克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾" +
+ "多瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬其頓馬利緬甸蒙古中華人民共和國澳門特別行政區北馬里亞納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里" +
+ "西斯馬爾地夫馬拉威墨西哥馬來西亞莫三比克納米比亞新喀里多尼亞尼日諾福克島奈及利亞尼加拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬" +
+ "玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦波蘭聖皮埃爾和密克隆群島皮特肯群島波多黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼" +
+ "亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典新加坡聖赫勒拿島斯洛維尼亞冷岸及央麥恩群島斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇" +
+ "利南南蘇丹聖多美普林西比薩爾瓦多荷屬聖馬丁敘利亞史瓦濟蘭特里斯坦達庫尼亞群島土克斯及開科斯群島查德法屬南方屬地多哥泰國塔吉克托克勞群島東帝汶" +
+ "土庫曼突尼西亞東加土耳其千里達及托巴哥吐瓦魯台灣坦尚尼亞烏克蘭烏干達美國本土外小島嶼美國烏拉圭烏茲別克梵蒂岡聖文森及格瑞那丁委內瑞拉英屬維京" +
+ "群島美屬維京群島越南萬那杜瓦利斯和富圖納群島薩摩亞科索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西非中美東非北非中非非洲" +
+ "南部美洲北美加勒比海東亞南亞東南亞南歐澳洲與紐西蘭美拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲"
+
+var zhHantRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063,
+ 0x006f, 0x0081, 0x008a, 0x0093, 0x009c, 0x00ab, 0x00b4, 0x00ba,
+ 0x00c9, 0x00d5, 0x00e1, 0x00ff, 0x0108, 0x0111, 0x011a, 0x0129,
+ 0x0135, 0x013b, 0x0144, 0x014a, 0x0156, 0x015f, 0x0165, 0x0171,
+ 0x0183, 0x0189, 0x0192, 0x0198, 0x01a1, 0x01aa, 0x01b6, 0x01bf,
+ 0x01c8, 0x01e3, 0x01f8, 0x0207, 0x021c, 0x0222, 0x022e, 0x023a,
+ 0x0240, 0x0249, 0x025e, 0x026a, 0x0279, 0x0288, 0x028e, 0x0297,
+ 0x02a0, 0x02a9, 0x02b5, 0x02c4, 0x02ca, 0x02df, 0x02e8, 0x02ee,
+ // Entry 40 - 7F
+ 0x02fa, 0x030f, 0x031e, 0x0333, 0x033c, 0x0348, 0x034e, 0x035a,
+ 0x0366, 0x036f, 0x037b, 0x0381, 0x0387, 0x038d, 0x039c, 0x03b4,
+ 0x03c0, 0x03c6, 0x03cc, 0x03d2, 0x03de, 0x03f0, 0x03ff, 0x0408,
+ 0x040e, 0x041a, 0x0423, 0x042c, 0x0435, 0x0441, 0x0450, 0x0456,
+ 0x0477, 0x0483, 0x0489, 0x0498, 0x04a1, 0x04cb, 0x04e9, 0x04f5,
+ 0x0504, 0x050a, 0x0513, 0x0522, 0x0528, 0x0531, 0x053a, 0x0540,
+ 0x0546, 0x055b, 0x0564, 0x056a, 0x0570, 0x0579, 0x0582, 0x058b,
+ 0x0591, 0x0597, 0x059d, 0x05a9, 0x05b2, 0x05be, 0x05c4, 0x05e2,
+ // Entry 80 - BF
+ 0x05e8, 0x05ee, 0x05f7, 0x0603, 0x060c, 0x0612, 0x061b, 0x0627,
+ 0x0636, 0x0642, 0x064e, 0x0657, 0x0660, 0x0669, 0x0675, 0x067e,
+ 0x0687, 0x0690, 0x069c, 0x06ab, 0x06ba, 0x06c9, 0x06d8, 0x06e1,
+ 0x06e7, 0x06ed, 0x06f3, 0x071d, 0x0732, 0x0741, 0x0750, 0x0759,
+ 0x0762, 0x076e, 0x077a, 0x0783, 0x078c, 0x0798, 0x07a4, 0x07b0,
+ 0x07c2, 0x07c8, 0x07d4, 0x07e0, 0x07ec, 0x07f2, 0x07f8, 0x0801,
+ 0x0807, 0x0810, 0x0819, 0x0825, 0x082e, 0x0834, 0x0849, 0x085e,
+ 0x0867, 0x0873, 0x0879, 0x0897, 0x08a6, 0x08b2, 0x08c7, 0x08d0,
+ // Entry C0 - FF
+ 0x08d6, 0x08df, 0x08e5, 0x08fa, 0x0903, 0x090f, 0x091b, 0x0924,
+ 0x092d, 0x093f, 0x094e, 0x0957, 0x095d, 0x0963, 0x096c, 0x097b,
+ 0x098a, 0x09a2, 0x09ae, 0x09b7, 0x09c3, 0x09cf, 0x09db, 0x09e4,
+ 0x09ed, 0x0a02, 0x0a0e, 0x0a1d, 0x0a26, 0x0a32, 0x0a50, 0x0a6b,
+ 0x0a71, 0x0a83, 0x0a89, 0x0a8f, 0x0a98, 0x0aa7, 0x0ab0, 0x0ab9,
+ 0x0ac5, 0x0acb, 0x0ad4, 0x0ae9, 0x0af2, 0x0af8, 0x0b04, 0x0b0d,
+ 0x0b16, 0x0b2e, 0x0b34, 0x0b3d, 0x0b49, 0x0b52, 0x0b6a, 0x0b76,
+ 0x0b88, 0x0b9a, 0x0ba0, 0x0ba9, 0x0bc4, 0x0bcd, 0x0bd6, 0x0bdc,
+ // Entry 100 - 13F
+ 0x0be5, 0x0beb, 0x0bf4, 0x0bfd, 0x0c09, 0x0c0f, 0x0c15, 0x0c1e,
+ 0x0c27, 0x0c30, 0x0c36, 0x0c3c, 0x0c42, 0x0c48, 0x0c4e, 0x0c5a,
+ 0x0c60, 0x0c66, 0x0c72, 0x0c78, 0x0c7e, 0x0c87, 0x0c8d, 0x0c9f,
+ 0x0cae, 0x0cc0, 0x0ccf, 0x0cd5, 0x0cdb, 0x0ce1, 0x0ce7, 0x0ced,
+ 0x0cf3, 0x0cf9, 0x0d05,
+} // Size: 606 bytes
+
+var zuRegionStr string = "" + // Size: 3578 bytes
+ "i-Ascension Islandi-Andorrai-United Arab Emiratesi-Afghanistani-Antigua " +
+ "and Barbudai-Anguillai-Albaniai-Armeniai-Netherlands Antillesi-Angolai-A" +
+ "ntarcticai-Argentinai-American Samoai-Austriai-Australiai-Arubai-Åland I" +
+ "slandsi-Azerbaijani-Bosnia ne-Herzegovinai-Barbadosi-Bangladeshi-Belgium" +
+ "i-Burkina Fasoi-Bulgariai-Bahraini-Burundii-Benini-Saint Barthélemyi-Ber" +
+ "mudai-Bruneii-Boliviai-Caribbean Netherlandsi-Brazili-Bahamasi-Bhutani-B" +
+ "ouvet IslandiBotswanai-Belarusi-Belizei-Canadai-Cocos (Keeling) Islandsi" +
+ "-Congo - Kinshasai-Central African Republici-Congo - Brazzavillei-Switze" +
+ "rlandi-Côte d’Ivoirei-Cook Islandsi-Chilei-Camerooni-Chinai-Colombiai-Cl" +
+ "ipperton Islandi-Costa Ricai-Cubai-Cape Verdei-Curaçaoi-Christmas Island" +
+ "i-Cyprusi-Czech Republici-Germanyi-Diego Garciai-Djiboutii-Denmarki-Domi" +
+ "nicai-Dominican Republici-Algeriai-Cueta ne-Melillai-Ecuadori-Estoniai-E" +
+ "gypti-Western Saharai-Eritreai-Spaini-Ethiopiai-European Unioni-Finlandi" +
+ "-Fijii-Falkland Islandsi-Micronesiai-Faroe Islandsi-Francei-Gaboni-Unite" +
+ "d Kingdomi-Grenadai-Georgiai-French Guianai-Guernseyi-Ghanai-Gibraltari-" +
+ "Greenlandi-Gambiai-Guineai-Guadeloupei-Equatorial Guineai-Greecei-South " +
+ "Georgia ne-South Sandwich Islandsi-Guatemalai-Guami-Guinea-Bissaui-Guyan" +
+ "ai-Hong Kong SAR Chinai-Heard Island ne-McDonald Islandsi-Hondurasi-Croa" +
+ "tiai-Haitii-Hungaryi-Canary Islandsi-Indonesiai-Irelandkwa-Israeli-Isle " +
+ "of Mani-Indiai-British Indian Ocean Territoryi-Iraqi-Irani-Icelandi-Ital" +
+ "yi-Jerseyi-Jamaicai-Jordani-Japani-Kenyai-Kyrgyzstani-Cambodiai-Kiribati" +
+ "i-Comorosi-Saint Kitts ne-Nevisi-North Koreai-South Koreai-Kuwaiti-Cayma" +
+ "n Islandsi-Kazakhstani-Laosi-Lebanoni-Saint Luciai-Liechtensteini-Sri La" +
+ "nkai-LiberiaiLesothoi-Lithuaniai-Luxembourgi-Latviai-Libyai-Moroccoi-Mon" +
+ "acoi-Moldovai-Montenegroi-Saint Martini-Madagascari-Marshall Islandsi-Ma" +
+ "cedoniaiMalii-Myanmar (Burma)i-Mongoliai-Macau SAR Chinai-Northern Maria" +
+ "na Islandsi-Martiniquei-Mauritaniai-Montserrati-Maltai-Mauritiusi-Maldiv" +
+ "esiMalawii-Mexicoi-Malaysiai-Mozambiquei-Namibiai-New Caledoniai-Nigeri-" +
+ "Norfolk Islandi-Nigeriai-Nicaraguai-Netherlandsi-Norwayi-Nepali-Naurui-N" +
+ "iuei-New Zealandi-Omani-Panamai-Perui-French Polynesiai-Papua New Guinea" +
+ "i-Philippinesi-Pakistani-Polandi-Saint Pierre kanye ne-Miqueloni-Pitcair" +
+ "n Islandsi-Puerto Ricoi-Palestinian Territoriesi-Portugali-Palaui-Paragu" +
+ "ayi-Qatari-Outlying Oceaniai-Réunioni-Romaniai-Serbiai-Russiai-Rwandai-S" +
+ "audi Arabiai-Solomon Islandsi-Seychellesi-Sudani-Swedeni-Singaporei-Sain" +
+ "t Helenai-Sloveniai-Svalbard ne-Jan Mayeni-Slovakiai-Sierra Leonei-San M" +
+ "arinoi-Senegali-Somaliai-Surinamei-South Sudani-São Tomé kanye ne-Prínci" +
+ "pei-El Salvadori-Sint Maarteni-Syriai-Swazilandi-Tristan da Cunhai-Turks" +
+ " and Caicos Islandsi-Chadi-French Southern Territoriesi-Togoi-Thailandi-" +
+ "Tajikistani-Tokelaui-Timor-Lestei-Turkmenistani-Tunisiai-Tongai-Turkeyi-" +
+ "Trinidad ne-Tobagoi-Tuvalui-Taiwani-Tanzaniai-Ukrainei-Ugandai-U.S. Mino" +
+ "r Outlying Islandsi-United Statesi-Uruguayi-Uzbekistani-Vatican Cityi-Sa" +
+ "int Vincent ne-Grenadinesi-Venezuelai-British Virgin Islandsi-U.S. Virgi" +
+ "n Islandsi-Vietnami-Vanuatui-Wallis ne-Futunai-Samoai-Kosovoi-Yemeni-May" +
+ "ottei-South Africai-ZambiaiZimbabweiSifunda esingaziwaumhlabai-Africai-N" +
+ "orth Americai-South Americai-Oceaniai-Western Africai-Central Americai-E" +
+ "astern Africai-Northern Africai-Middle Africai-Southern Africai-Americas" +
+ "i-Northern Americai-Caribbeani-Eastern Asiai-Southern Asiai-South-Easter" +
+ "n Asiai-Southern Europei-Australasiai-Melanesiai-Micronesian Regioni-Pol" +
+ "ynesiai-Asiai-Central Asiai-Western Asiai-Europei-Eastern Europei-Northe" +
+ "rn Europei-Western Europei-Latin America"
+
+var zuRegionIdx = []uint16{ // 291 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0012, 0x001b, 0x0031, 0x003e, 0x0053, 0x005d, 0x0066,
+ 0x006f, 0x0085, 0x008d, 0x0099, 0x00a4, 0x00b4, 0x00bd, 0x00c8,
+ 0x00cf, 0x00df, 0x00eb, 0x0102, 0x010c, 0x0118, 0x0121, 0x012f,
+ 0x0139, 0x0142, 0x014b, 0x0152, 0x0165, 0x016e, 0x0176, 0x017f,
+ 0x0196, 0x019e, 0x01a7, 0x01af, 0x01be, 0x01c7, 0x01d0, 0x01d8,
+ 0x01e0, 0x01f9, 0x020b, 0x0225, 0x023a, 0x0247, 0x0259, 0x0267,
+ 0x026e, 0x0278, 0x027f, 0x0289, 0x029c, 0x02a8, 0x02ae, 0x02ba,
+ 0x02c4, 0x02d6, 0x02de, 0x02ee, 0x02f7, 0x0305, 0x030f, 0x0318,
+ // Entry 40 - 7F
+ 0x0322, 0x0336, 0x033f, 0x0351, 0x035a, 0x0363, 0x036a, 0x037a,
+ 0x0383, 0x038a, 0x0394, 0x03a4, 0x03ad, 0x03b3, 0x03c5, 0x03d1,
+ 0x03e0, 0x03e8, 0x03ef, 0x03ff, 0x0408, 0x0411, 0x0420, 0x042a,
+ 0x0431, 0x043c, 0x0447, 0x044f, 0x0457, 0x0463, 0x0476, 0x047e,
+ 0x04a7, 0x04b2, 0x04b8, 0x04c7, 0x04cf, 0x04e4, 0x0506, 0x0510,
+ 0x0519, 0x0520, 0x0529, 0x0539, 0x0544, 0x054d, 0x0557, 0x0564,
+ 0x056b, 0x058b, 0x0591, 0x0597, 0x05a0, 0x05a7, 0x05af, 0x05b8,
+ 0x05c0, 0x05c7, 0x05ce, 0x05da, 0x05e4, 0x05ee, 0x05f7, 0x060d,
+ // Entry 80 - BF
+ 0x061a, 0x0627, 0x062f, 0x063f, 0x064b, 0x0651, 0x065a, 0x0667,
+ 0x0676, 0x0681, 0x068a, 0x0692, 0x069d, 0x06a9, 0x06b1, 0x06b8,
+ 0x06c1, 0x06c9, 0x06d2, 0x06de, 0x06ec, 0x06f8, 0x070a, 0x0715,
+ 0x071a, 0x072b, 0x0735, 0x0746, 0x0760, 0x076c, 0x0778, 0x0784,
+ 0x078b, 0x0796, 0x07a0, 0x07a7, 0x07af, 0x07b9, 0x07c5, 0x07ce,
+ 0x07dd, 0x07e4, 0x07f4, 0x07fd, 0x0808, 0x0815, 0x081d, 0x0824,
+ 0x082b, 0x0831, 0x083e, 0x0844, 0x084c, 0x0852, 0x0864, 0x0876,
+ 0x0883, 0x088d, 0x0895, 0x08b5, 0x08c7, 0x08d4, 0x08ed, 0x08f7,
+ // Entry C0 - FF
+ 0x08fe, 0x0908, 0x090f, 0x0921, 0x092b, 0x0934, 0x093c, 0x0944,
+ 0x094c, 0x095a, 0x096b, 0x0977, 0x097e, 0x0986, 0x0991, 0x099f,
+ 0x09a9, 0x09c0, 0x09ca, 0x09d8, 0x09e4, 0x09ed, 0x09f6, 0x0a00,
+ 0x0a0d, 0x0a2c, 0x0a39, 0x0a47, 0x0a4e, 0x0a59, 0x0a6b, 0x0a85,
+ 0x0a8b, 0x0aa8, 0x0aae, 0x0ab8, 0x0ac4, 0x0acd, 0x0ada, 0x0ae8,
+ 0x0af1, 0x0af8, 0x0b00, 0x0b14, 0x0b1c, 0x0b24, 0x0b2e, 0x0b37,
+ 0x0b3f, 0x0b5c, 0x0b6b, 0x0b74, 0x0b80, 0x0b8e, 0x0bab, 0x0bb6,
+ 0x0bce, 0x0be3, 0x0bec, 0x0bf5, 0x0c07, 0x0c0e, 0x0c16, 0x0c1d,
+ // Entry 100 - 13F
+ 0x0c26, 0x0c34, 0x0c3c, 0x0c45, 0x0c58, 0x0c5f, 0x0c67, 0x0c76,
+ 0x0c85, 0x0c8e, 0x0c9e, 0x0caf, 0x0cbf, 0x0cd0, 0x0cdf, 0x0cf0,
+ 0x0cfa, 0x0d0c, 0x0d17, 0x0d25, 0x0d34, 0x0d48, 0x0d59, 0x0d66,
+ 0x0d71, 0x0d85, 0x0d90, 0x0d96, 0x0da4, 0x0db2, 0x0dba, 0x0dca,
+ 0x0ddb, 0x0deb, 0x0dfa,
+} // Size: 606 bytes
+
+// Total size for region: 808214 bytes (808 KB)
+
+const numSupported = 218
+
+var supported string = "" + // Size: 833 bytes
+ "af|agq|ak|am|ar|ar-EG|as|asa|ast|az|az-Cyrl|bas|be|bem|bez|bg|bm|bn|bo|b" +
+ "o-IN|br|brx|bs|bs-Cyrl|ca|ce|cgg|chr|ckb|cs|cy|da|dav|de|de-CH|dje|dsb|d" +
+ "ua|dyo|dz|ebu|ee|el|en|en-AU|en-GB|eo|es|es-419|es-CL|es-MX|et|eu|ewo|fa" +
+ "|fa-AF|ff|fi|fil|fo|fr|fr-CA|fr-CH|fur|fy|ga|gd|gl|gsw|gu|guz|gv|ha|haw|" +
+ "he|hi|hr|hsb|hu|hy|id|ig|ii|is|it|ja|jgo|jmc|ka|kab|kam|kde|kea|khq|ki|k" +
+ "k|kkj|kl|kln|km|kn|ko|kok|ks|ksb|ksf|ksh|kw|ky|lag|lb|lg|lkt|ln|lo|lrc|l" +
+ "t|lu|luo|luy|lv|mas|mer|mfe|mg|mgh|mgo|mk|ml|mn|mr|ms|mt|mua|my|mzn|naq|" +
+ "nd|ne|nl|nmg|nn|nnh|no|nus|nyn|om|or|os|pa|pa-Arab|pl|prg|ps|pt|pt-PT|qu" +
+ "|rm|rn|ro|rof|ru|rw|rwk|sah|saq|sbp|se|se-FI|seh|ses|sg|shi|shi-Latn|si|" +
+ "sk|sl|smn|sn|so|sq|sr|sr-Latn|sv|sv-FI|sw|sw-CD|ta|te|teo|th|ti|to|tr|tw" +
+ "q|tzm|ug|uk|ur|ur-IN|uz|uz-Arab|uz-Cyrl|vai|vai-Latn|vi|vun|wae|xog|yav|" +
+ "yi|yo|yo-BJ|zgh|zh|zh-Hant|zh-Hant-HK|zu|"
+
+// Dictionary entries of frequent languages
+var (
+ af = Dictionary{ // af
+ nil,
+ header{afLangStr, afLangIdx},
+ header{afScriptStr, afScriptIdx},
+ header{afRegionStr, afRegionIdx},
+ }
+ am = Dictionary{ // am
+ nil,
+ header{amLangStr, amLangIdx},
+ header{amScriptStr, amScriptIdx},
+ header{amRegionStr, amRegionIdx},
+ }
+ ar = Dictionary{ // ar
+ nil,
+ header{arLangStr, arLangIdx},
+ header{arScriptStr, arScriptIdx},
+ header{arRegionStr, arRegionIdx},
+ }
+ az = Dictionary{ // az
+ nil,
+ header{azLangStr, azLangIdx},
+ header{azScriptStr, azScriptIdx},
+ header{azRegionStr, azRegionIdx},
+ }
+ bg = Dictionary{ // bg
+ nil,
+ header{bgLangStr, bgLangIdx},
+ header{bgScriptStr, bgScriptIdx},
+ header{bgRegionStr, bgRegionIdx},
+ }
+ bn = Dictionary{ // bn
+ nil,
+ header{bnLangStr, bnLangIdx},
+ header{bnScriptStr, bnScriptIdx},
+ header{bnRegionStr, bnRegionIdx},
+ }
+ ca = Dictionary{ // ca
+ nil,
+ header{caLangStr, caLangIdx},
+ header{caScriptStr, caScriptIdx},
+ header{caRegionStr, caRegionIdx},
+ }
+ cs = Dictionary{ // cs
+ nil,
+ header{csLangStr, csLangIdx},
+ header{csScriptStr, csScriptIdx},
+ header{csRegionStr, csRegionIdx},
+ }
+ da = Dictionary{ // da
+ nil,
+ header{daLangStr, daLangIdx},
+ header{daScriptStr, daScriptIdx},
+ header{daRegionStr, daRegionIdx},
+ }
+ de = Dictionary{ // de
+ nil,
+ header{deLangStr, deLangIdx},
+ header{deScriptStr, deScriptIdx},
+ header{deRegionStr, deRegionIdx},
+ }
+ el = Dictionary{ // el
+ nil,
+ header{elLangStr, elLangIdx},
+ header{elScriptStr, elScriptIdx},
+ header{elRegionStr, elRegionIdx},
+ }
+ en = Dictionary{ // en
+ nil,
+ header{enLangStr, enLangIdx},
+ header{enScriptStr, enScriptIdx},
+ header{enRegionStr, enRegionIdx},
+ }
+ enGB = Dictionary{ // en-GB
+ &en,
+ header{enGBLangStr, enGBLangIdx},
+ header{enGBScriptStr, enGBScriptIdx},
+ header{enGBRegionStr, enGBRegionIdx},
+ }
+ es = Dictionary{ // es
+ nil,
+ header{esLangStr, esLangIdx},
+ header{esScriptStr, esScriptIdx},
+ header{esRegionStr, esRegionIdx},
+ }
+ es419 = Dictionary{ // es-419
+ &es,
+ header{es419LangStr, es419LangIdx},
+ header{es419ScriptStr, es419ScriptIdx},
+ header{es419RegionStr, es419RegionIdx},
+ }
+ et = Dictionary{ // et
+ nil,
+ header{etLangStr, etLangIdx},
+ header{etScriptStr, etScriptIdx},
+ header{etRegionStr, etRegionIdx},
+ }
+ fa = Dictionary{ // fa
+ nil,
+ header{faLangStr, faLangIdx},
+ header{faScriptStr, faScriptIdx},
+ header{faRegionStr, faRegionIdx},
+ }
+ fi = Dictionary{ // fi
+ nil,
+ header{fiLangStr, fiLangIdx},
+ header{fiScriptStr, fiScriptIdx},
+ header{fiRegionStr, fiRegionIdx},
+ }
+ fil = Dictionary{ // fil
+ nil,
+ header{filLangStr, filLangIdx},
+ header{filScriptStr, filScriptIdx},
+ header{filRegionStr, filRegionIdx},
+ }
+ fr = Dictionary{ // fr
+ nil,
+ header{frLangStr, frLangIdx},
+ header{frScriptStr, frScriptIdx},
+ header{frRegionStr, frRegionIdx},
+ }
+ frCA = Dictionary{ // fr-CA
+ &fr,
+ header{frCALangStr, frCALangIdx},
+ header{frCAScriptStr, frCAScriptIdx},
+ header{frCARegionStr, frCARegionIdx},
+ }
+ gu = Dictionary{ // gu
+ nil,
+ header{guLangStr, guLangIdx},
+ header{guScriptStr, guScriptIdx},
+ header{guRegionStr, guRegionIdx},
+ }
+ he = Dictionary{ // he
+ nil,
+ header{heLangStr, heLangIdx},
+ header{heScriptStr, heScriptIdx},
+ header{heRegionStr, heRegionIdx},
+ }
+ hi = Dictionary{ // hi
+ nil,
+ header{hiLangStr, hiLangIdx},
+ header{hiScriptStr, hiScriptIdx},
+ header{hiRegionStr, hiRegionIdx},
+ }
+ hr = Dictionary{ // hr
+ nil,
+ header{hrLangStr, hrLangIdx},
+ header{hrScriptStr, hrScriptIdx},
+ header{hrRegionStr, hrRegionIdx},
+ }
+ hu = Dictionary{ // hu
+ nil,
+ header{huLangStr, huLangIdx},
+ header{huScriptStr, huScriptIdx},
+ header{huRegionStr, huRegionIdx},
+ }
+ hy = Dictionary{ // hy
+ nil,
+ header{hyLangStr, hyLangIdx},
+ header{hyScriptStr, hyScriptIdx},
+ header{hyRegionStr, hyRegionIdx},
+ }
+ id = Dictionary{ // id
+ nil,
+ header{idLangStr, idLangIdx},
+ header{idScriptStr, idScriptIdx},
+ header{idRegionStr, idRegionIdx},
+ }
+ is = Dictionary{ // is
+ nil,
+ header{isLangStr, isLangIdx},
+ header{isScriptStr, isScriptIdx},
+ header{isRegionStr, isRegionIdx},
+ }
+ it = Dictionary{ // it
+ nil,
+ header{itLangStr, itLangIdx},
+ header{itScriptStr, itScriptIdx},
+ header{itRegionStr, itRegionIdx},
+ }
+ ja = Dictionary{ // ja
+ nil,
+ header{jaLangStr, jaLangIdx},
+ header{jaScriptStr, jaScriptIdx},
+ header{jaRegionStr, jaRegionIdx},
+ }
+ ka = Dictionary{ // ka
+ nil,
+ header{kaLangStr, kaLangIdx},
+ header{kaScriptStr, kaScriptIdx},
+ header{kaRegionStr, kaRegionIdx},
+ }
+ kk = Dictionary{ // kk
+ nil,
+ header{kkLangStr, kkLangIdx},
+ header{kkScriptStr, kkScriptIdx},
+ header{kkRegionStr, kkRegionIdx},
+ }
+ km = Dictionary{ // km
+ nil,
+ header{kmLangStr, kmLangIdx},
+ header{kmScriptStr, kmScriptIdx},
+ header{kmRegionStr, kmRegionIdx},
+ }
+ kn = Dictionary{ // kn
+ nil,
+ header{knLangStr, knLangIdx},
+ header{knScriptStr, knScriptIdx},
+ header{knRegionStr, knRegionIdx},
+ }
+ ko = Dictionary{ // ko
+ nil,
+ header{koLangStr, koLangIdx},
+ header{koScriptStr, koScriptIdx},
+ header{koRegionStr, koRegionIdx},
+ }
+ ky = Dictionary{ // ky
+ nil,
+ header{kyLangStr, kyLangIdx},
+ header{kyScriptStr, kyScriptIdx},
+ header{kyRegionStr, kyRegionIdx},
+ }
+ lo = Dictionary{ // lo
+ nil,
+ header{loLangStr, loLangIdx},
+ header{loScriptStr, loScriptIdx},
+ header{loRegionStr, loRegionIdx},
+ }
+ lt = Dictionary{ // lt
+ nil,
+ header{ltLangStr, ltLangIdx},
+ header{ltScriptStr, ltScriptIdx},
+ header{ltRegionStr, ltRegionIdx},
+ }
+ lv = Dictionary{ // lv
+ nil,
+ header{lvLangStr, lvLangIdx},
+ header{lvScriptStr, lvScriptIdx},
+ header{lvRegionStr, lvRegionIdx},
+ }
+ mk = Dictionary{ // mk
+ nil,
+ header{mkLangStr, mkLangIdx},
+ header{mkScriptStr, mkScriptIdx},
+ header{mkRegionStr, mkRegionIdx},
+ }
+ ml = Dictionary{ // ml
+ nil,
+ header{mlLangStr, mlLangIdx},
+ header{mlScriptStr, mlScriptIdx},
+ header{mlRegionStr, mlRegionIdx},
+ }
+ mn = Dictionary{ // mn
+ nil,
+ header{mnLangStr, mnLangIdx},
+ header{mnScriptStr, mnScriptIdx},
+ header{mnRegionStr, mnRegionIdx},
+ }
+ mr = Dictionary{ // mr
+ nil,
+ header{mrLangStr, mrLangIdx},
+ header{mrScriptStr, mrScriptIdx},
+ header{mrRegionStr, mrRegionIdx},
+ }
+ ms = Dictionary{ // ms
+ nil,
+ header{msLangStr, msLangIdx},
+ header{msScriptStr, msScriptIdx},
+ header{msRegionStr, msRegionIdx},
+ }
+ my = Dictionary{ // my
+ nil,
+ header{myLangStr, myLangIdx},
+ header{myScriptStr, myScriptIdx},
+ header{myRegionStr, myRegionIdx},
+ }
+ ne = Dictionary{ // ne
+ nil,
+ header{neLangStr, neLangIdx},
+ header{neScriptStr, neScriptIdx},
+ header{neRegionStr, neRegionIdx},
+ }
+ nl = Dictionary{ // nl
+ nil,
+ header{nlLangStr, nlLangIdx},
+ header{nlScriptStr, nlScriptIdx},
+ header{nlRegionStr, nlRegionIdx},
+ }
+ no = Dictionary{ // no
+ nil,
+ header{noLangStr, noLangIdx},
+ header{noScriptStr, noScriptIdx},
+ header{noRegionStr, noRegionIdx},
+ }
+ pa = Dictionary{ // pa
+ nil,
+ header{paLangStr, paLangIdx},
+ header{paScriptStr, paScriptIdx},
+ header{paRegionStr, paRegionIdx},
+ }
+ pl = Dictionary{ // pl
+ nil,
+ header{plLangStr, plLangIdx},
+ header{plScriptStr, plScriptIdx},
+ header{plRegionStr, plRegionIdx},
+ }
+ pt = Dictionary{ // pt
+ nil,
+ header{ptLangStr, ptLangIdx},
+ header{ptScriptStr, ptScriptIdx},
+ header{ptRegionStr, ptRegionIdx},
+ }
+ ptPT = Dictionary{ // pt-PT
+ &pt,
+ header{ptPTLangStr, ptPTLangIdx},
+ header{ptPTScriptStr, ptPTScriptIdx},
+ header{ptPTRegionStr, ptPTRegionIdx},
+ }
+ ro = Dictionary{ // ro
+ nil,
+ header{roLangStr, roLangIdx},
+ header{roScriptStr, roScriptIdx},
+ header{roRegionStr, roRegionIdx},
+ }
+ ru = Dictionary{ // ru
+ nil,
+ header{ruLangStr, ruLangIdx},
+ header{ruScriptStr, ruScriptIdx},
+ header{ruRegionStr, ruRegionIdx},
+ }
+ si = Dictionary{ // si
+ nil,
+ header{siLangStr, siLangIdx},
+ header{siScriptStr, siScriptIdx},
+ header{siRegionStr, siRegionIdx},
+ }
+ sk = Dictionary{ // sk
+ nil,
+ header{skLangStr, skLangIdx},
+ header{skScriptStr, skScriptIdx},
+ header{skRegionStr, skRegionIdx},
+ }
+ sl = Dictionary{ // sl
+ nil,
+ header{slLangStr, slLangIdx},
+ header{slScriptStr, slScriptIdx},
+ header{slRegionStr, slRegionIdx},
+ }
+ sq = Dictionary{ // sq
+ nil,
+ header{sqLangStr, sqLangIdx},
+ header{sqScriptStr, sqScriptIdx},
+ header{sqRegionStr, sqRegionIdx},
+ }
+ sr = Dictionary{ // sr
+ nil,
+ header{srLangStr, srLangIdx},
+ header{srScriptStr, srScriptIdx},
+ header{srRegionStr, srRegionIdx},
+ }
+ srLatn = Dictionary{ // sr-Latn
+ nil,
+ header{srLatnLangStr, srLatnLangIdx},
+ header{srLatnScriptStr, srLatnScriptIdx},
+ header{srLatnRegionStr, srLatnRegionIdx},
+ }
+ sv = Dictionary{ // sv
+ nil,
+ header{svLangStr, svLangIdx},
+ header{svScriptStr, svScriptIdx},
+ header{svRegionStr, svRegionIdx},
+ }
+ sw = Dictionary{ // sw
+ nil,
+ header{swLangStr, swLangIdx},
+ header{swScriptStr, swScriptIdx},
+ header{swRegionStr, swRegionIdx},
+ }
+ ta = Dictionary{ // ta
+ nil,
+ header{taLangStr, taLangIdx},
+ header{taScriptStr, taScriptIdx},
+ header{taRegionStr, taRegionIdx},
+ }
+ te = Dictionary{ // te
+ nil,
+ header{teLangStr, teLangIdx},
+ header{teScriptStr, teScriptIdx},
+ header{teRegionStr, teRegionIdx},
+ }
+ th = Dictionary{ // th
+ nil,
+ header{thLangStr, thLangIdx},
+ header{thScriptStr, thScriptIdx},
+ header{thRegionStr, thRegionIdx},
+ }
+ tr = Dictionary{ // tr
+ nil,
+ header{trLangStr, trLangIdx},
+ header{trScriptStr, trScriptIdx},
+ header{trRegionStr, trRegionIdx},
+ }
+ uk = Dictionary{ // uk
+ nil,
+ header{ukLangStr, ukLangIdx},
+ header{ukScriptStr, ukScriptIdx},
+ header{ukRegionStr, ukRegionIdx},
+ }
+ ur = Dictionary{ // ur
+ nil,
+ header{urLangStr, urLangIdx},
+ header{urScriptStr, urScriptIdx},
+ header{urRegionStr, urRegionIdx},
+ }
+ uz = Dictionary{ // uz
+ nil,
+ header{uzLangStr, uzLangIdx},
+ header{uzScriptStr, uzScriptIdx},
+ header{uzRegionStr, uzRegionIdx},
+ }
+ vi = Dictionary{ // vi
+ nil,
+ header{viLangStr, viLangIdx},
+ header{viScriptStr, viScriptIdx},
+ header{viRegionStr, viRegionIdx},
+ }
+ zh = Dictionary{ // zh
+ nil,
+ header{zhLangStr, zhLangIdx},
+ header{zhScriptStr, zhScriptIdx},
+ header{zhRegionStr, zhRegionIdx},
+ }
+ zhHant = Dictionary{ // zh-Hant
+ nil,
+ header{zhHantLangStr, zhHantLangIdx},
+ header{zhHantScriptStr, zhHantScriptIdx},
+ header{zhHantRegionStr, zhHantRegionIdx},
+ }
+ zu = Dictionary{ // zu
+ nil,
+ header{zuLangStr, zuLangIdx},
+ header{zuScriptStr, zuScriptIdx},
+ header{zuRegionStr, zuRegionIdx},
+ }
+)
+
+// Total size for 79 entries: 10112 bytes (10 KB)
+
+// Number of keys: 217
+var (
+ selfIndex = tagIndex{
+ "afakamarasazbebgbmbnbobrbscacecscydadedzeeeleneoeseteufafffifofrfygagdgl" +
+ "gugvhahehihrhuhyidigiiisitjakakikkklkmknkokskwkylblglnloltlulvmgmkml" +
+ "mnmrmsmtmyndnenlnnnoomorospaplpsptqurmrnrorurwsesgsiskslsnsosqsrsvsw" +
+ "tatethtitotrugukuruzviyiyozhzu",
+ "agqasaastbasbembezbrxcggchrckbdavdjedsbduadyoebuewofilfurgswguzhawhsbjgo" +
+ "jmckabkamkdekeakhqkkjklnkokksbksfkshlaglktlrcluoluymasmermfemghmgomu" +
+ "amznnaqnnhnusnynprgrofrwksahsaqsbpsehsesshismnteotwqtzmvaivunwaexogy" +
+ "avzgh",
+ "",
+ }
+ selfTagsLong = []string{ // 27 elements
+ "ar-001",
+ "az-Cyrl",
+ "bs-Cyrl",
+ "de-AT",
+ "de-CH",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-US",
+ "es-419",
+ "es-ES",
+ "es-MX",
+ "fa-AF",
+ "fr-CA",
+ "fr-CH",
+ "nl-BE",
+ "pa-Arab",
+ "pt-BR",
+ "pt-PT",
+ "ro-MD",
+ "shi-Latn",
+ "sr-Latn",
+ "uz-Arab",
+ "uz-Cyrl",
+ "vai-Latn",
+ "zh-Hans",
+ "zh-Hant",
+ }
+)
+
+var selfHeaders = [1]header{
+ { // mul
+ "AfrikaansAkanአማርኛالعربيةঅসমীয়াazərbaycan diliбеларускаябългарскиbamanak" +
+ "anবাংলাབོད་སྐད་brezhonegbosanskicatalàнохчийнčeštinaCymraegdanskDeut" +
+ "schརྫོང་ཁEʋegbeΕλληνικάEnglishesperantoespañoleestieuskaraفارسیPulaa" +
+ "rsuomiføroysktfrançaisWest-FryskGaeilgeGàidhliggalegoગુજરાતીGaelgHau" +
+ "saעבריתहिन्दीhrvatskimagyarհայերենIndonesiaIgboꆈꌠꉙíslenskaitaliano日本" +
+ "語ქართულიGikuyuқазақ тіліkalaallisutខ្មែរಕನ್ನಡ한국어کٲشُرkernewekкыргы" +
+ "зчаLëtzebuergeschLugandalingálaລາວlietuviųTshilubalatviešuMalagasyм" +
+ "акедонскиമലയാളംмонголमराठीBahasa MelayuMaltiဗမာisiNdebeleनेपालीNede" +
+ "rlandsnynorsknorsk bokmålOromooଓଡ଼ିଆиронਪੰਜਾਬੀpolskiپښتوportuguêsRun" +
+ "asimirumantschIkirundiromânăрусскийKinyarwandadavvisámegiellaSängöසි" +
+ "ංහලslovenčinaslovenščinachiShonaSoomaalishqipсрпскиsvenskaKiswahil" +
+ "iதமிழ்తెలుగుไทยትግርኛlea fakatongaTürkçeئۇيغۇرچەукраїнськаاردوo‘zbekTi" +
+ "ếng ViệtייִדישÈdè Yorùbá中文isiZuluAghemKipareasturianuƁàsàaIchibemb" +
+ "aHibenaबड़ोRukigaᏣᎳᎩکوردیی ناوەندیKitaitaZarmaciinedolnoserbšćinaduá" +
+ "lájoolaKĩembuewondoFilipinofurlanSchwiizertüütschEkegusiiʻŌlelo Hawa" +
+ "iʻihornjoserbšćinaNdaꞌaKimachameTaqbaylitKikambaChimakondekabuverdia" +
+ "nuKoyra ciinikakɔKalenjinकोंकणीKishambaarikpaKölschKɨlaangiLakȟólʼiy" +
+ "apiلۊری شومالیDholuoLuluhiaMaaKĩmĩrũkreol morisienMakuametaʼMUNDAŊما" +
+ "زرونیKhoekhoegowabShwóŋò ngiembɔɔnThok NathRunyankoreprūsiskanKihor" +
+ "omboKiruwaсаха тылаKisampurIshisangusenaKoyraboro senniⵜⴰⵛⵍⵃⵉⵜanarâš" +
+ "kielâKitesoTasawaq senniTamaziɣt n laṭlaṣꕙꔤKyivunjoWalserOlusoganuas" +
+ "ueⵜⴰⵎⴰⵣⵉⵖⵜالعربية الرسمية الحديثةазәрбајҹан дилибосанскиÖsterreichis" +
+ "ches DeutschSchweizer HochdeutschAustralian EnglishCanadian EnglishB" +
+ "ritish EnglishAmerican Englishespañol latinoamericanoespañol de Espa" +
+ "ñaespañol de Méxicoدریfrançais canadienfrançais suisseVlaamsپنجابیp" +
+ "ortuguês do Brasilportuguês europeumoldoveneascăTashelḥiytSrpskohrva" +
+ "tskiاوزبیکЎзбекVai简体中文繁體中文",
+ []uint16{ // 218 elements
+ // Entry 0 - 3F
+ 0x0000, 0x0009, 0x000d, 0x0019, 0x0027, 0x003c, 0x004c, 0x0060,
+ 0x0072, 0x007b, 0x008a, 0x00a2, 0x00ab, 0x00b3, 0x00ba, 0x00c8,
+ 0x00d1, 0x00d8, 0x00dd, 0x00e4, 0x00f6, 0x00fd, 0x010d, 0x0114,
+ 0x011d, 0x0125, 0x012a, 0x0131, 0x013b, 0x0141, 0x0146, 0x014f,
+ 0x0158, 0x0162, 0x0169, 0x0172, 0x0178, 0x018d, 0x0192, 0x0197,
+ 0x01a1, 0x01b3, 0x01bb, 0x01c1, 0x01cf, 0x01d8, 0x01dc, 0x01e5,
+ 0x01ee, 0x01f6, 0x01ff, 0x0214, 0x021a, 0x022d, 0x0238, 0x0247,
+ 0x0256, 0x025f, 0x0269, 0x0271, 0x0281, 0x0290, 0x0297, 0x029f,
+ // Entry 40 - 7F
+ 0x02a8, 0x02b1, 0x02b9, 0x02c2, 0x02ca, 0x02de, 0x02f0, 0x02fc,
+ 0x030b, 0x0318, 0x031d, 0x0326, 0x0330, 0x0342, 0x034c, 0x0353,
+ 0x0360, 0x0366, 0x0375, 0x037d, 0x038f, 0x0395, 0x039d, 0x03a7,
+ 0x03af, 0x03b8, 0x03c0, 0x03c8, 0x03d6, 0x03e1, 0x03f1, 0x03f8,
+ 0x0407, 0x0412, 0x041f, 0x0427, 0x042f, 0x0434, 0x0440, 0x0447,
+ 0x0450, 0x045f, 0x0471, 0x047a, 0x0486, 0x0493, 0x049b, 0x04ab,
+ 0x04bf, 0x04c7, 0x04cf, 0x04dd, 0x04e9, 0x04f7, 0x04fd, 0x0504,
+ 0x0509, 0x050f, 0x0518, 0x0520, 0x0529, 0x052f, 0x053b, 0x0541,
+ // Entry 80 - BF
+ 0x054a, 0x0565, 0x056c, 0x0576, 0x0586, 0x058d, 0x0592, 0x0599,
+ 0x059f, 0x05a7, 0x05ad, 0x05bf, 0x05c7, 0x05d8, 0x05e9, 0x05f0,
+ 0x05f9, 0x0602, 0x0609, 0x0613, 0x061f, 0x062a, 0x062f, 0x0637,
+ 0x0649, 0x0652, 0x0657, 0x065e, 0x0667, 0x0676, 0x068b, 0x0691,
+ 0x0698, 0x069b, 0x06a4, 0x06b2, 0x06b7, 0x06bd, 0x06c4, 0x06d2,
+ 0x06df, 0x06f4, 0x06fd, 0x0707, 0x0711, 0x071a, 0x0720, 0x0731,
+ 0x0739, 0x0742, 0x0746, 0x0755, 0x076a, 0x0778, 0x077e, 0x078b,
+ 0x07a1, 0x07a7, 0x07af, 0x07b5, 0x07bc, 0x07c2, 0x07da, 0x0806,
+ // Entry C0 - FF
+ 0x0823, 0x0833, 0x084c, 0x0861, 0x0873, 0x0883, 0x0892, 0x08a2,
+ 0x08ba, 0x08cd, 0x08e0, 0x08e6, 0x08f8, 0x0908, 0x090e, 0x091a,
+ 0x092e, 0x0940, 0x094e, 0x095a, 0x0968, 0x0974, 0x097e, 0x0981,
+ 0x098d, 0x0999,
+ },
+ },
+}
+
+// Total size for self: 4071 bytes (4 KB)
+
+// Total table size 1949845 bytes (1904KiB); checksum: 2C9D44F
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/gen_common.go b/Godeps/_workspace/src/golang.org/x/text/language/gen_common.go
new file mode 100644
index 000000000..83ce18013
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/gen_common.go
@@ -0,0 +1,20 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+package main
+
+// This file contains code common to the maketables.go and the package code.
+
+// langAliasType is the type of an alias in langAliasMap.
+type langAliasType int8
+
+const (
+ langDeprecated langAliasType = iota
+ langMacro
+ langLegacy
+
+ langAliasTypeUnknown langAliasType = -1
+)
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/gen_index.go b/Godeps/_workspace/src/golang.org/x/text/language/gen_index.go
new file mode 100644
index 000000000..eef555cd3
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/gen_index.go
@@ -0,0 +1,162 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+package main
+
+// This file generates derivative tables based on the language package itself.
+
+import (
+ "bytes"
+ "flag"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "reflect"
+ "sort"
+ "strings"
+
+ "golang.org/x/text/internal/gen"
+ "golang.org/x/text/language"
+ "golang.org/x/text/unicode/cldr"
+)
+
+var (
+ test = flag.Bool("test", false,
+ "test existing tables; can be used to compare web data with package data.")
+
+ draft = flag.String("draft",
+ "contributed",
+ `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`)
+)
+
+func main() {
+ gen.Init()
+
+ // Read the CLDR zip file.
+ r := gen.OpenCLDRCoreZip()
+ defer r.Close()
+
+ d := &cldr.Decoder{}
+ data, err := d.DecodeZip(r)
+ if err != nil {
+ log.Fatalf("DecodeZip: %v", err)
+ }
+
+ w := gen.NewCodeWriter()
+ defer func() {
+ buf := &bytes.Buffer{}
+
+ if _, err = w.WriteGo(buf, "language"); err != nil {
+ log.Fatalf("Error formatting file index.go: %v", err)
+ }
+
+ // Since we're generating a table for our own package we need to rewrite
+ // doing the equivalent of go fmt -r 'language.b -> b'. Using
+ // bytes.Replace will do.
+ out := bytes.Replace(buf.Bytes(), []byte("language."), nil, -1)
+ if err := ioutil.WriteFile("index.go", out, 0600); err != nil {
+ log.Fatalf("Could not create file index.go: %v", err)
+ }
+ }()
+
+ m := map[language.Tag]bool{}
+ for _, lang := range data.Locales() {
+ // We include all locales unconditionally to be consistent with en_US.
+ // We want en_US, even though it has no data associated with it.
+
+ // TODO: put any of the languages for which no data exists at the end
+ // of the index. This allows all components based on ICU to use that
+ // as the cutoff point.
+ // if x := data.RawLDML(lang); false ||
+ // x.LocaleDisplayNames != nil ||
+ // x.Characters != nil ||
+ // x.Delimiters != nil ||
+ // x.Measurement != nil ||
+ // x.Dates != nil ||
+ // x.Numbers != nil ||
+ // x.Units != nil ||
+ // x.ListPatterns != nil ||
+ // x.Collations != nil ||
+ // x.Segmentations != nil ||
+ // x.Rbnf != nil ||
+ // x.Annotations != nil ||
+ // x.Metadata != nil {
+
+ // TODO: support POSIX natively, albeit non-standard.
+ tag := language.Make(strings.Replace(lang, "_POSIX", "-u-va-posix", 1))
+ m[tag] = true
+ // }
+ }
+ // Include locales for plural rules, which uses a different structure.
+ for _, plurals := range data.Supplemental().Plurals {
+ for _, rules := range plurals.PluralRules {
+ for _, lang := range strings.Split(rules.Locales, " ") {
+ m[language.Make(lang)] = true
+ }
+ }
+ }
+
+ var core, special []language.Tag
+
+ for t := range m {
+ if x := t.Extensions(); len(x) != 0 && fmt.Sprint(x) != "[u-va-posix]" {
+ log.Fatalf("Unexpected extension %v in %v", x, t)
+ }
+ if len(t.Variants()) == 0 && len(t.Extensions()) == 0 {
+ core = append(core, t)
+ } else {
+ special = append(special, t)
+ }
+ }
+
+ w.WriteComment(`
+ NumCompactTags is the number of common tags. The maximum tag is
+ NumCompactTags-1.`)
+ w.WriteConst("NumCompactTags", len(core)+len(special))
+
+ sort.Sort(byAlpha(special))
+ w.WriteVar("specialTags", special)
+
+ // TODO: order by frequency?
+ sort.Sort(byAlpha(core))
+
+ // Size computations are just an estimate.
+ w.Size += int(reflect.TypeOf(map[uint32]uint16{}).Size())
+ w.Size += len(core) * 6 // size of uint32 and uint16
+
+ fmt.Fprintln(w)
+ fmt.Fprintln(w, "var coreTags = map[uint32]uint16{")
+ fmt.Fprintln(w, "0x0: 0, // und")
+ i := len(special) + 1 // Und and special tags already written.
+ for _, t := range core {
+ if t == language.Und {
+ continue
+ }
+ fmt.Fprint(w.Hash, t, i)
+ b, s, r := t.Raw()
+ fmt.Fprintf(w, "0x%s%s%s: %d, // %s\n",
+ getIndex(b, 3), // 3 is enough as it is guaranteed to be a compact number
+ getIndex(s, 2),
+ getIndex(r, 3),
+ i, t)
+ i++
+ }
+ fmt.Fprintln(w, "}")
+}
+
+// getIndex prints the subtag type and extracts its index of size nibble.
+// If the index is less than n nibbles, the result is prefixed with 0s.
+func getIndex(x interface{}, n int) string {
+ s := fmt.Sprintf("%#v", x) // s is of form Type{typeID: 0x00}
+ s = s[strings.Index(s, "0x")+2 : len(s)-1]
+ return strings.Repeat("0", n-len(s)) + s
+}
+
+type byAlpha []language.Tag
+
+func (a byAlpha) Len() int { return len(a) }
+func (a byAlpha) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
+func (a byAlpha) Less(i, j int) bool { return a[i].String() < a[j].String() }
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/go1_1.go b/Godeps/_workspace/src/golang.org/x/text/language/go1_1.go
new file mode 100644
index 000000000..380f4c09f
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/go1_1.go
@@ -0,0 +1,38 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.2
+
+package language
+
+import "sort"
+
+func sortStable(s sort.Interface) {
+ ss := stableSort{
+ s: s,
+ pos: make([]int, s.Len()),
+ }
+ for i := range ss.pos {
+ ss.pos[i] = i
+ }
+ sort.Sort(&ss)
+}
+
+type stableSort struct {
+ s sort.Interface
+ pos []int
+}
+
+func (s *stableSort) Len() int {
+ return len(s.pos)
+}
+
+func (s *stableSort) Less(i, j int) bool {
+ return s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j]
+}
+
+func (s *stableSort) Swap(i, j int) {
+ s.s.Swap(i, j)
+ s.pos[i], s.pos[j] = s.pos[j], s.pos[i]
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/go1_2.go b/Godeps/_workspace/src/golang.org/x/text/language/go1_2.go
new file mode 100644
index 000000000..38268c57a
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/go1_2.go
@@ -0,0 +1,11 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.2
+
+package language
+
+import "sort"
+
+var sortStable = sort.Stable
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/index.go b/Godeps/_workspace/src/golang.org/x/text/language/index.go
new file mode 100644
index 000000000..c640f1e14
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/index.go
@@ -0,0 +1,757 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package language
+
+// NumCompactTags is the number of common tags. The maximum tag is
+// NumCompactTags-1.
+const NumCompactTags = 742
+
+var specialTags = []Tag{ // 2 elements
+ 0: {lang: 0x61, region: 0x6d, script: 0x0, pVariant: 0x5, pExt: 0xe, str: "ca-ES-valencia"},
+ 1: {lang: 0x9a, region: 0x132, script: 0x0, pVariant: 0x5, pExt: 0x5, str: "en-US-u-va-posix"},
+} // Size: 72 bytes
+
+var coreTags = map[uint32]uint16{
+ 0x0: 0, // und
+ 0x00a00000: 3, // af
+ 0x00a000d0: 4, // af-NA
+ 0x00a0015e: 5, // af-ZA
+ 0x00b00000: 6, // agq
+ 0x00b00051: 7, // agq-CM
+ 0x00d00000: 8, // ak
+ 0x00d0007e: 9, // ak-GH
+ 0x01100000: 10, // am
+ 0x0110006e: 11, // am-ET
+ 0x01500000: 12, // ar
+ 0x01500001: 13, // ar-001
+ 0x01500022: 14, // ar-AE
+ 0x01500038: 15, // ar-BH
+ 0x01500061: 16, // ar-DJ
+ 0x01500066: 17, // ar-DZ
+ 0x0150006a: 18, // ar-EG
+ 0x0150006b: 19, // ar-EH
+ 0x0150006c: 20, // ar-ER
+ 0x01500095: 21, // ar-IL
+ 0x01500099: 22, // ar-IQ
+ 0x0150009f: 23, // ar-JO
+ 0x015000a6: 24, // ar-KM
+ 0x015000aa: 25, // ar-KW
+ 0x015000ae: 26, // ar-LB
+ 0x015000b7: 27, // ar-LY
+ 0x015000b8: 28, // ar-MA
+ 0x015000c7: 29, // ar-MR
+ 0x015000df: 30, // ar-OM
+ 0x015000eb: 31, // ar-PS
+ 0x015000f1: 32, // ar-QA
+ 0x01500106: 33, // ar-SA
+ 0x01500109: 34, // ar-SD
+ 0x01500113: 35, // ar-SO
+ 0x01500115: 36, // ar-SS
+ 0x0150011a: 37, // ar-SY
+ 0x0150011e: 38, // ar-TD
+ 0x01500126: 39, // ar-TN
+ 0x0150015b: 40, // ar-YE
+ 0x01c00000: 41, // as
+ 0x01c00097: 42, // as-IN
+ 0x01d00000: 43, // asa
+ 0x01d0012d: 44, // asa-TZ
+ 0x01f00000: 45, // ast
+ 0x01f0006d: 46, // ast-ES
+ 0x02400000: 47, // az
+ 0x0241d000: 48, // az-Cyrl
+ 0x0241d031: 49, // az-Cyrl-AZ
+ 0x0244f000: 50, // az-Latn
+ 0x0244f031: 51, // az-Latn-AZ
+ 0x02a00000: 52, // bas
+ 0x02a00051: 53, // bas-CM
+ 0x02f00000: 54, // be
+ 0x02f00046: 55, // be-BY
+ 0x03100000: 56, // bem
+ 0x0310015f: 57, // bem-ZM
+ 0x03300000: 58, // bez
+ 0x0330012d: 59, // bez-TZ
+ 0x03800000: 60, // bg
+ 0x03800037: 61, // bg-BG
+ 0x03c00000: 62, // bh
+ 0x04900000: 63, // bm
+ 0x049000c1: 64, // bm-ML
+ 0x04b00000: 65, // bn
+ 0x04b00034: 66, // bn-BD
+ 0x04b00097: 67, // bn-IN
+ 0x04c00000: 68, // bo
+ 0x04c00052: 69, // bo-CN
+ 0x04c00097: 70, // bo-IN
+ 0x05000000: 71, // br
+ 0x05000076: 72, // br-FR
+ 0x05300000: 73, // brx
+ 0x05300097: 74, // brx-IN
+ 0x05400000: 75, // bs
+ 0x0541d000: 76, // bs-Cyrl
+ 0x0541d032: 77, // bs-Cyrl-BA
+ 0x0544f000: 78, // bs-Latn
+ 0x0544f032: 79, // bs-Latn-BA
+ 0x06100000: 80, // ca
+ 0x06100021: 81, // ca-AD
+ 0x0610006d: 82, // ca-ES
+ 0x06100076: 83, // ca-FR
+ 0x0610009c: 84, // ca-IT
+ 0x06400000: 85, // ce
+ 0x06400104: 86, // ce-RU
+ 0x06600000: 87, // cgg
+ 0x0660012f: 88, // cgg-UG
+ 0x06c00000: 89, // chr
+ 0x06c00132: 90, // chr-US
+ 0x06f00000: 91, // ckb
+ 0x06f00099: 92, // ckb-IQ
+ 0x06f0009a: 93, // ckb-IR
+ 0x07900000: 94, // cs
+ 0x0790005d: 95, // cs-CZ
+ 0x07d00000: 96, // cu
+ 0x07d00104: 97, // cu-RU
+ 0x07f00000: 98, // cy
+ 0x07f00079: 99, // cy-GB
+ 0x08000000: 100, // da
+ 0x08000062: 101, // da-DK
+ 0x08000080: 102, // da-GL
+ 0x08300000: 103, // dav
+ 0x083000a2: 104, // dav-KE
+ 0x08500000: 105, // de
+ 0x0850002d: 106, // de-AT
+ 0x08500035: 107, // de-BE
+ 0x0850004d: 108, // de-CH
+ 0x0850005f: 109, // de-DE
+ 0x085000b0: 110, // de-LI
+ 0x085000b5: 111, // de-LU
+ 0x08800000: 112, // dje
+ 0x088000d2: 113, // dje-NE
+ 0x08b00000: 114, // dsb
+ 0x08b0005f: 115, // dsb-DE
+ 0x08e00000: 116, // dua
+ 0x08e00051: 117, // dua-CM
+ 0x08f00000: 118, // dv
+ 0x09000000: 119, // dyo
+ 0x09000112: 120, // dyo-SN
+ 0x09200000: 121, // dz
+ 0x09200042: 122, // dz-BT
+ 0x09300000: 123, // ebu
+ 0x093000a2: 124, // ebu-KE
+ 0x09400000: 125, // ee
+ 0x0940007e: 126, // ee-GH
+ 0x09400120: 127, // ee-TG
+ 0x09900000: 128, // el
+ 0x0990005c: 129, // el-CY
+ 0x09900085: 130, // el-GR
+ 0x09a00000: 131, // en
+ 0x09a00001: 132, // en-001
+ 0x09a0001a: 133, // en-150
+ 0x09a00024: 134, // en-AG
+ 0x09a00025: 135, // en-AI
+ 0x09a0002c: 136, // en-AS
+ 0x09a0002d: 137, // en-AT
+ 0x09a0002e: 138, // en-AU
+ 0x09a00033: 139, // en-BB
+ 0x09a00035: 140, // en-BE
+ 0x09a00039: 141, // en-BI
+ 0x09a0003c: 142, // en-BM
+ 0x09a00041: 143, // en-BS
+ 0x09a00045: 144, // en-BW
+ 0x09a00047: 145, // en-BZ
+ 0x09a00048: 146, // en-CA
+ 0x09a00049: 147, // en-CC
+ 0x09a0004d: 148, // en-CH
+ 0x09a0004f: 149, // en-CK
+ 0x09a00051: 150, // en-CM
+ 0x09a0005b: 151, // en-CX
+ 0x09a0005c: 152, // en-CY
+ 0x09a0005f: 153, // en-DE
+ 0x09a00060: 154, // en-DG
+ 0x09a00062: 155, // en-DK
+ 0x09a00063: 156, // en-DM
+ 0x09a0006c: 157, // en-ER
+ 0x09a00070: 158, // en-FI
+ 0x09a00071: 159, // en-FJ
+ 0x09a00072: 160, // en-FK
+ 0x09a00073: 161, // en-FM
+ 0x09a00079: 162, // en-GB
+ 0x09a0007a: 163, // en-GD
+ 0x09a0007d: 164, // en-GG
+ 0x09a0007e: 165, // en-GH
+ 0x09a0007f: 166, // en-GI
+ 0x09a00081: 167, // en-GM
+ 0x09a00088: 168, // en-GU
+ 0x09a0008a: 169, // en-GY
+ 0x09a0008b: 170, // en-HK
+ 0x09a00094: 171, // en-IE
+ 0x09a00095: 172, // en-IL
+ 0x09a00096: 173, // en-IM
+ 0x09a00097: 174, // en-IN
+ 0x09a00098: 175, // en-IO
+ 0x09a0009d: 176, // en-JE
+ 0x09a0009e: 177, // en-JM
+ 0x09a000a2: 178, // en-KE
+ 0x09a000a5: 179, // en-KI
+ 0x09a000a7: 180, // en-KN
+ 0x09a000ab: 181, // en-KY
+ 0x09a000af: 182, // en-LC
+ 0x09a000b2: 183, // en-LR
+ 0x09a000b3: 184, // en-LS
+ 0x09a000bd: 185, // en-MG
+ 0x09a000be: 186, // en-MH
+ 0x09a000c4: 187, // en-MO
+ 0x09a000c5: 188, // en-MP
+ 0x09a000c8: 189, // en-MS
+ 0x09a000c9: 190, // en-MT
+ 0x09a000ca: 191, // en-MU
+ 0x09a000cc: 192, // en-MW
+ 0x09a000ce: 193, // en-MY
+ 0x09a000d0: 194, // en-NA
+ 0x09a000d3: 195, // en-NF
+ 0x09a000d4: 196, // en-NG
+ 0x09a000d7: 197, // en-NL
+ 0x09a000db: 198, // en-NR
+ 0x09a000dd: 199, // en-NU
+ 0x09a000de: 200, // en-NZ
+ 0x09a000e4: 201, // en-PG
+ 0x09a000e5: 202, // en-PH
+ 0x09a000e6: 203, // en-PK
+ 0x09a000e9: 204, // en-PN
+ 0x09a000ea: 205, // en-PR
+ 0x09a000ee: 206, // en-PW
+ 0x09a00105: 207, // en-RW
+ 0x09a00107: 208, // en-SB
+ 0x09a00108: 209, // en-SC
+ 0x09a00109: 210, // en-SD
+ 0x09a0010a: 211, // en-SE
+ 0x09a0010b: 212, // en-SG
+ 0x09a0010c: 213, // en-SH
+ 0x09a0010d: 214, // en-SI
+ 0x09a00110: 215, // en-SL
+ 0x09a00115: 216, // en-SS
+ 0x09a00119: 217, // en-SX
+ 0x09a0011b: 218, // en-SZ
+ 0x09a0011d: 219, // en-TC
+ 0x09a00123: 220, // en-TK
+ 0x09a00127: 221, // en-TO
+ 0x09a0012a: 222, // en-TT
+ 0x09a0012b: 223, // en-TV
+ 0x09a0012d: 224, // en-TZ
+ 0x09a0012f: 225, // en-UG
+ 0x09a00131: 226, // en-UM
+ 0x09a00132: 227, // en-US
+ 0x09a00136: 228, // en-VC
+ 0x09a00139: 229, // en-VG
+ 0x09a0013a: 230, // en-VI
+ 0x09a0013c: 231, // en-VU
+ 0x09a0013f: 232, // en-WS
+ 0x09a0015e: 233, // en-ZA
+ 0x09a0015f: 234, // en-ZM
+ 0x09a00161: 235, // en-ZW
+ 0x09b00000: 236, // eo
+ 0x09b00001: 237, // eo-001
+ 0x09c00000: 238, // es
+ 0x09c00003: 239, // es-003
+ 0x09c0001e: 240, // es-419
+ 0x09c0002b: 241, // es-AR
+ 0x09c0003e: 242, // es-BO
+ 0x09c00050: 243, // es-CL
+ 0x09c00053: 244, // es-CO
+ 0x09c00055: 245, // es-CR
+ 0x09c00058: 246, // es-CU
+ 0x09c00064: 247, // es-DO
+ 0x09c00067: 248, // es-EA
+ 0x09c00068: 249, // es-EC
+ 0x09c0006d: 250, // es-ES
+ 0x09c00084: 251, // es-GQ
+ 0x09c00087: 252, // es-GT
+ 0x09c0008d: 253, // es-HN
+ 0x09c00092: 254, // es-IC
+ 0x09c000cd: 255, // es-MX
+ 0x09c000d6: 256, // es-NI
+ 0x09c000e0: 257, // es-PA
+ 0x09c000e2: 258, // es-PE
+ 0x09c000e5: 259, // es-PH
+ 0x09c000ea: 260, // es-PR
+ 0x09c000ef: 261, // es-PY
+ 0x09c00118: 262, // es-SV
+ 0x09c00132: 263, // es-US
+ 0x09c00133: 264, // es-UY
+ 0x09c00138: 265, // es-VE
+ 0x09e00000: 266, // et
+ 0x09e00069: 267, // et-EE
+ 0x0a000000: 268, // eu
+ 0x0a00006d: 269, // eu-ES
+ 0x0a100000: 270, // ewo
+ 0x0a100051: 271, // ewo-CM
+ 0x0a300000: 272, // fa
+ 0x0a300023: 273, // fa-AF
+ 0x0a30009a: 274, // fa-IR
+ 0x0a500000: 275, // ff
+ 0x0a500051: 276, // ff-CM
+ 0x0a500082: 277, // ff-GN
+ 0x0a5000c7: 278, // ff-MR
+ 0x0a500112: 279, // ff-SN
+ 0x0a700000: 280, // fi
+ 0x0a700070: 281, // fi-FI
+ 0x0a900000: 282, // fil
+ 0x0a9000e5: 283, // fil-PH
+ 0x0ac00000: 284, // fo
+ 0x0ac00062: 285, // fo-DK
+ 0x0ac00074: 286, // fo-FO
+ 0x0ae00000: 287, // fr
+ 0x0ae00035: 288, // fr-BE
+ 0x0ae00036: 289, // fr-BF
+ 0x0ae00039: 290, // fr-BI
+ 0x0ae0003a: 291, // fr-BJ
+ 0x0ae0003b: 292, // fr-BL
+ 0x0ae00048: 293, // fr-CA
+ 0x0ae0004a: 294, // fr-CD
+ 0x0ae0004b: 295, // fr-CF
+ 0x0ae0004c: 296, // fr-CG
+ 0x0ae0004d: 297, // fr-CH
+ 0x0ae0004e: 298, // fr-CI
+ 0x0ae00051: 299, // fr-CM
+ 0x0ae00061: 300, // fr-DJ
+ 0x0ae00066: 301, // fr-DZ
+ 0x0ae00076: 302, // fr-FR
+ 0x0ae00078: 303, // fr-GA
+ 0x0ae0007c: 304, // fr-GF
+ 0x0ae00082: 305, // fr-GN
+ 0x0ae00083: 306, // fr-GP
+ 0x0ae00084: 307, // fr-GQ
+ 0x0ae0008f: 308, // fr-HT
+ 0x0ae000a6: 309, // fr-KM
+ 0x0ae000b5: 310, // fr-LU
+ 0x0ae000b8: 311, // fr-MA
+ 0x0ae000b9: 312, // fr-MC
+ 0x0ae000bc: 313, // fr-MF
+ 0x0ae000bd: 314, // fr-MG
+ 0x0ae000c1: 315, // fr-ML
+ 0x0ae000c6: 316, // fr-MQ
+ 0x0ae000c7: 317, // fr-MR
+ 0x0ae000ca: 318, // fr-MU
+ 0x0ae000d1: 319, // fr-NC
+ 0x0ae000d2: 320, // fr-NE
+ 0x0ae000e3: 321, // fr-PF
+ 0x0ae000e8: 322, // fr-PM
+ 0x0ae00100: 323, // fr-RE
+ 0x0ae00105: 324, // fr-RW
+ 0x0ae00108: 325, // fr-SC
+ 0x0ae00112: 326, // fr-SN
+ 0x0ae0011a: 327, // fr-SY
+ 0x0ae0011e: 328, // fr-TD
+ 0x0ae00120: 329, // fr-TG
+ 0x0ae00126: 330, // fr-TN
+ 0x0ae0013c: 331, // fr-VU
+ 0x0ae0013d: 332, // fr-WF
+ 0x0ae0015c: 333, // fr-YT
+ 0x0b500000: 334, // fur
+ 0x0b50009c: 335, // fur-IT
+ 0x0b800000: 336, // fy
+ 0x0b8000d7: 337, // fy-NL
+ 0x0b900000: 338, // ga
+ 0x0b900094: 339, // ga-IE
+ 0x0c100000: 340, // gd
+ 0x0c100079: 341, // gd-GB
+ 0x0c700000: 342, // gl
+ 0x0c70006d: 343, // gl-ES
+ 0x0d100000: 344, // gsw
+ 0x0d10004d: 345, // gsw-CH
+ 0x0d100076: 346, // gsw-FR
+ 0x0d1000b0: 347, // gsw-LI
+ 0x0d200000: 348, // gu
+ 0x0d200097: 349, // gu-IN
+ 0x0d600000: 350, // guw
+ 0x0d700000: 351, // guz
+ 0x0d7000a2: 352, // guz-KE
+ 0x0d800000: 353, // gv
+ 0x0d800096: 354, // gv-IM
+ 0x0db00000: 355, // ha
+ 0x0db0007e: 356, // ha-GH
+ 0x0db000d2: 357, // ha-NE
+ 0x0db000d4: 358, // ha-NG
+ 0x0dd00000: 359, // haw
+ 0x0dd00132: 360, // haw-US
+ 0x0df00000: 361, // he
+ 0x0df00095: 362, // he-IL
+ 0x0e000000: 363, // hi
+ 0x0e000097: 364, // hi-IN
+ 0x0ed00000: 365, // hr
+ 0x0ed00032: 366, // hr-BA
+ 0x0ed0008e: 367, // hr-HR
+ 0x0ee00000: 368, // hsb
+ 0x0ee0005f: 369, // hsb-DE
+ 0x0f100000: 370, // hu
+ 0x0f100090: 371, // hu-HU
+ 0x0f200000: 372, // hy
+ 0x0f200027: 373, // hy-AM
+ 0x0f700000: 374, // id
+ 0x0f700093: 375, // id-ID
+ 0x0f900000: 376, // ig
+ 0x0f9000d4: 377, // ig-NG
+ 0x0fa00000: 378, // ii
+ 0x0fa00052: 379, // ii-CN
+ 0x10100000: 380, // is
+ 0x1010009b: 381, // is-IS
+ 0x10200000: 382, // it
+ 0x1020004d: 383, // it-CH
+ 0x1020009c: 384, // it-IT
+ 0x10200111: 385, // it-SM
+ 0x10300000: 386, // iu
+ 0x10600000: 387, // ja
+ 0x106000a0: 388, // ja-JP
+ 0x10800000: 389, // jbo
+ 0x10900000: 390, // jgo
+ 0x10900051: 391, // jgo-CM
+ 0x10b00000: 392, // jmc
+ 0x10b0012d: 393, // jmc-TZ
+ 0x10e00000: 394, // jv
+ 0x11000000: 395, // ka
+ 0x1100007b: 396, // ka-GE
+ 0x11200000: 397, // kab
+ 0x11200066: 398, // kab-DZ
+ 0x11400000: 399, // kaj
+ 0x11500000: 400, // kam
+ 0x115000a2: 401, // kam-KE
+ 0x11800000: 402, // kcg
+ 0x11a00000: 403, // kde
+ 0x11a0012d: 404, // kde-TZ
+ 0x11c00000: 405, // kea
+ 0x11c00059: 406, // kea-CV
+ 0x12700000: 407, // khq
+ 0x127000c1: 408, // khq-ML
+ 0x12a00000: 409, // ki
+ 0x12a000a2: 410, // ki-KE
+ 0x12e00000: 411, // kk
+ 0x12e000ac: 412, // kk-KZ
+ 0x12f00000: 413, // kkj
+ 0x12f00051: 414, // kkj-CM
+ 0x13000000: 415, // kl
+ 0x13000080: 416, // kl-GL
+ 0x13100000: 417, // kln
+ 0x131000a2: 418, // kln-KE
+ 0x13200000: 419, // km
+ 0x132000a4: 420, // km-KH
+ 0x13400000: 421, // kn
+ 0x13400097: 422, // kn-IN
+ 0x13500000: 423, // ko
+ 0x135000a8: 424, // ko-KP
+ 0x135000a9: 425, // ko-KR
+ 0x13700000: 426, // kok
+ 0x13700097: 427, // kok-IN
+ 0x14000000: 428, // ks
+ 0x14000097: 429, // ks-IN
+ 0x14100000: 430, // ksb
+ 0x1410012d: 431, // ksb-TZ
+ 0x14200000: 432, // ksf
+ 0x14200051: 433, // ksf-CM
+ 0x14300000: 434, // ksh
+ 0x1430005f: 435, // ksh-DE
+ 0x14400000: 436, // ku
+ 0x14900000: 437, // kw
+ 0x14900079: 438, // kw-GB
+ 0x14c00000: 439, // ky
+ 0x14c000a3: 440, // ky-KG
+ 0x15000000: 441, // lag
+ 0x1500012d: 442, // lag-TZ
+ 0x15300000: 443, // lb
+ 0x153000b5: 444, // lb-LU
+ 0x15900000: 445, // lg
+ 0x1590012f: 446, // lg-UG
+ 0x16000000: 447, // lkt
+ 0x16000132: 448, // lkt-US
+ 0x16300000: 449, // ln
+ 0x16300029: 450, // ln-AO
+ 0x1630004a: 451, // ln-CD
+ 0x1630004b: 452, // ln-CF
+ 0x1630004c: 453, // ln-CG
+ 0x16400000: 454, // lo
+ 0x164000ad: 455, // lo-LA
+ 0x16700000: 456, // lrc
+ 0x16700099: 457, // lrc-IQ
+ 0x1670009a: 458, // lrc-IR
+ 0x16800000: 459, // lt
+ 0x168000b4: 460, // lt-LT
+ 0x16a00000: 461, // lu
+ 0x16a0004a: 462, // lu-CD
+ 0x16c00000: 463, // luo
+ 0x16c000a2: 464, // luo-KE
+ 0x16d00000: 465, // luy
+ 0x16d000a2: 466, // luy-KE
+ 0x16f00000: 467, // lv
+ 0x16f000b6: 468, // lv-LV
+ 0x17900000: 469, // mas
+ 0x179000a2: 470, // mas-KE
+ 0x1790012d: 471, // mas-TZ
+ 0x17f00000: 472, // mer
+ 0x17f000a2: 473, // mer-KE
+ 0x18100000: 474, // mfe
+ 0x181000ca: 475, // mfe-MU
+ 0x18200000: 476, // mg
+ 0x182000bd: 477, // mg-MG
+ 0x18300000: 478, // mgh
+ 0x183000cf: 479, // mgh-MZ
+ 0x18400000: 480, // mgo
+ 0x18400051: 481, // mgo-CM
+ 0x18b00000: 482, // mk
+ 0x18b000c0: 483, // mk-MK
+ 0x18c00000: 484, // ml
+ 0x18c00097: 485, // ml-IN
+ 0x18e00000: 486, // mn
+ 0x18e000c3: 487, // mn-MN
+ 0x19500000: 488, // mr
+ 0x19500097: 489, // mr-IN
+ 0x19900000: 490, // ms
+ 0x1990003d: 491, // ms-BN
+ 0x199000ce: 492, // ms-MY
+ 0x1990010b: 493, // ms-SG
+ 0x19a00000: 494, // mt
+ 0x19a000c9: 495, // mt-MT
+ 0x19c00000: 496, // mua
+ 0x19c00051: 497, // mua-CM
+ 0x1a400000: 498, // my
+ 0x1a4000c2: 499, // my-MM
+ 0x1a800000: 500, // mzn
+ 0x1a80009a: 501, // mzn-IR
+ 0x1aa00000: 502, // nah
+ 0x1ad00000: 503, // naq
+ 0x1ad000d0: 504, // naq-NA
+ 0x1ae00000: 505, // nb
+ 0x1ae000d8: 506, // nb-NO
+ 0x1ae0010e: 507, // nb-SJ
+ 0x1b000000: 508, // nd
+ 0x1b000161: 509, // nd-ZW
+ 0x1b300000: 510, // ne
+ 0x1b300097: 511, // ne-IN
+ 0x1b3000d9: 512, // ne-NP
+ 0x1bc00000: 513, // nl
+ 0x1bc0002f: 514, // nl-AW
+ 0x1bc00035: 515, // nl-BE
+ 0x1bc0003f: 516, // nl-BQ
+ 0x1bc0005a: 517, // nl-CW
+ 0x1bc000d7: 518, // nl-NL
+ 0x1bc00114: 519, // nl-SR
+ 0x1bc00119: 520, // nl-SX
+ 0x1bd00000: 521, // nmg
+ 0x1bd00051: 522, // nmg-CM
+ 0x1be00000: 523, // nn
+ 0x1be000d8: 524, // nn-NO
+ 0x1bf00000: 525, // nnh
+ 0x1bf00051: 526, // nnh-CM
+ 0x1c000000: 527, // no
+ 0x1c400000: 528, // nqo
+ 0x1c500000: 529, // nr
+ 0x1c700000: 530, // nso
+ 0x1c800000: 531, // nus
+ 0x1c800115: 532, // nus-SS
+ 0x1cb00000: 533, // ny
+ 0x1cd00000: 534, // nyn
+ 0x1cd0012f: 535, // nyn-UG
+ 0x1d100000: 536, // om
+ 0x1d10006e: 537, // om-ET
+ 0x1d1000a2: 538, // om-KE
+ 0x1d200000: 539, // or
+ 0x1d200097: 540, // or-IN
+ 0x1d300000: 541, // os
+ 0x1d30007b: 542, // os-GE
+ 0x1d300104: 543, // os-RU
+ 0x1d500000: 544, // pa
+ 0x1d505000: 545, // pa-Arab
+ 0x1d5050e6: 546, // pa-Arab-PK
+ 0x1d52e000: 547, // pa-Guru
+ 0x1d52e097: 548, // pa-Guru-IN
+ 0x1d900000: 549, // pap
+ 0x1e500000: 550, // pl
+ 0x1e5000e7: 551, // pl-PL
+ 0x1eb00000: 552, // prg
+ 0x1eb00001: 553, // prg-001
+ 0x1ec00000: 554, // ps
+ 0x1ec00023: 555, // ps-AF
+ 0x1ed00000: 556, // pt
+ 0x1ed00029: 557, // pt-AO
+ 0x1ed00040: 558, // pt-BR
+ 0x1ed00059: 559, // pt-CV
+ 0x1ed00089: 560, // pt-GW
+ 0x1ed000c4: 561, // pt-MO
+ 0x1ed000cf: 562, // pt-MZ
+ 0x1ed000ec: 563, // pt-PT
+ 0x1ed00116: 564, // pt-ST
+ 0x1ed00124: 565, // pt-TL
+ 0x1ef00000: 566, // qu
+ 0x1ef0003e: 567, // qu-BO
+ 0x1ef00068: 568, // qu-EC
+ 0x1ef000e2: 569, // qu-PE
+ 0x1fa00000: 570, // rm
+ 0x1fa0004d: 571, // rm-CH
+ 0x1ff00000: 572, // rn
+ 0x1ff00039: 573, // rn-BI
+ 0x20100000: 574, // ro
+ 0x201000ba: 575, // ro-MD
+ 0x20100102: 576, // ro-RO
+ 0x20300000: 577, // rof
+ 0x2030012d: 578, // rof-TZ
+ 0x20500000: 579, // ru
+ 0x20500046: 580, // ru-BY
+ 0x205000a3: 581, // ru-KG
+ 0x205000ac: 582, // ru-KZ
+ 0x205000ba: 583, // ru-MD
+ 0x20500104: 584, // ru-RU
+ 0x2050012e: 585, // ru-UA
+ 0x20800000: 586, // rw
+ 0x20800105: 587, // rw-RW
+ 0x20900000: 588, // rwk
+ 0x2090012d: 589, // rwk-TZ
+ 0x20d00000: 590, // sah
+ 0x20d00104: 591, // sah-RU
+ 0x20e00000: 592, // saq
+ 0x20e000a2: 593, // saq-KE
+ 0x21200000: 594, // sbp
+ 0x2120012d: 595, // sbp-TZ
+ 0x21a00000: 596, // sdh
+ 0x21b00000: 597, // se
+ 0x21b00070: 598, // se-FI
+ 0x21b000d8: 599, // se-NO
+ 0x21b0010a: 600, // se-SE
+ 0x21d00000: 601, // seh
+ 0x21d000cf: 602, // seh-MZ
+ 0x21f00000: 603, // ses
+ 0x21f000c1: 604, // ses-ML
+ 0x22000000: 605, // sg
+ 0x2200004b: 606, // sg-CF
+ 0x22400000: 607, // shi
+ 0x2244f000: 608, // shi-Latn
+ 0x2244f0b8: 609, // shi-Latn-MA
+ 0x224cc000: 610, // shi-Tfng
+ 0x224cc0b8: 611, // shi-Tfng-MA
+ 0x22600000: 612, // si
+ 0x226000b1: 613, // si-LK
+ 0x22800000: 614, // sk
+ 0x2280010f: 615, // sk-SK
+ 0x22a00000: 616, // sl
+ 0x22a0010d: 617, // sl-SI
+ 0x22e00000: 618, // sma
+ 0x22f00000: 619, // smi
+ 0x23000000: 620, // smj
+ 0x23100000: 621, // smn
+ 0x23100070: 622, // smn-FI
+ 0x23300000: 623, // sms
+ 0x23400000: 624, // sn
+ 0x23400161: 625, // sn-ZW
+ 0x23600000: 626, // so
+ 0x23600061: 627, // so-DJ
+ 0x2360006e: 628, // so-ET
+ 0x236000a2: 629, // so-KE
+ 0x23600113: 630, // so-SO
+ 0x23800000: 631, // sq
+ 0x23800026: 632, // sq-AL
+ 0x238000c0: 633, // sq-MK
+ 0x2380014a: 634, // sq-XK
+ 0x23900000: 635, // sr
+ 0x2391d000: 636, // sr-Cyrl
+ 0x2391d032: 637, // sr-Cyrl-BA
+ 0x2391d0bb: 638, // sr-Cyrl-ME
+ 0x2391d103: 639, // sr-Cyrl-RS
+ 0x2391d14a: 640, // sr-Cyrl-XK
+ 0x2394f000: 641, // sr-Latn
+ 0x2394f032: 642, // sr-Latn-BA
+ 0x2394f0bb: 643, // sr-Latn-ME
+ 0x2394f103: 644, // sr-Latn-RS
+ 0x2394f14a: 645, // sr-Latn-XK
+ 0x23e00000: 646, // ss
+ 0x23f00000: 647, // ssy
+ 0x24000000: 648, // st
+ 0x24500000: 649, // sv
+ 0x24500030: 650, // sv-AX
+ 0x24500070: 651, // sv-FI
+ 0x2450010a: 652, // sv-SE
+ 0x24600000: 653, // sw
+ 0x2460004a: 654, // sw-CD
+ 0x246000a2: 655, // sw-KE
+ 0x2460012d: 656, // sw-TZ
+ 0x2460012f: 657, // sw-UG
+ 0x24d00000: 658, // syr
+ 0x24f00000: 659, // ta
+ 0x24f00097: 660, // ta-IN
+ 0x24f000b1: 661, // ta-LK
+ 0x24f000ce: 662, // ta-MY
+ 0x24f0010b: 663, // ta-SG
+ 0x25600000: 664, // te
+ 0x25600097: 665, // te-IN
+ 0x25800000: 666, // teo
+ 0x258000a2: 667, // teo-KE
+ 0x2580012f: 668, // teo-UG
+ 0x25b00000: 669, // th
+ 0x25b00121: 670, // th-TH
+ 0x25f00000: 671, // ti
+ 0x25f0006c: 672, // ti-ER
+ 0x25f0006e: 673, // ti-ET
+ 0x26000000: 674, // tig
+ 0x26200000: 675, // tk
+ 0x26200125: 676, // tk-TM
+ 0x26900000: 677, // tn
+ 0x26a00000: 678, // to
+ 0x26a00127: 679, // to-TO
+ 0x26d00000: 680, // tr
+ 0x26d0005c: 681, // tr-CY
+ 0x26d00129: 682, // tr-TR
+ 0x27000000: 683, // ts
+ 0x27c00000: 684, // twq
+ 0x27c000d2: 685, // twq-NE
+ 0x27f00000: 686, // tzm
+ 0x27f000b8: 687, // tzm-MA
+ 0x28100000: 688, // ug
+ 0x28100052: 689, // ug-CN
+ 0x28300000: 690, // uk
+ 0x2830012e: 691, // uk-UA
+ 0x28900000: 692, // ur
+ 0x28900097: 693, // ur-IN
+ 0x289000e6: 694, // ur-PK
+ 0x28a00000: 695, // uz
+ 0x28a05000: 696, // uz-Arab
+ 0x28a05023: 697, // uz-Arab-AF
+ 0x28a1d000: 698, // uz-Cyrl
+ 0x28a1d134: 699, // uz-Cyrl-UZ
+ 0x28a4f000: 700, // uz-Latn
+ 0x28a4f134: 701, // uz-Latn-UZ
+ 0x28b00000: 702, // vai
+ 0x28b4f000: 703, // vai-Latn
+ 0x28b4f0b2: 704, // vai-Latn-LR
+ 0x28bd3000: 705, // vai-Vaii
+ 0x28bd30b2: 706, // vai-Vaii-LR
+ 0x28c00000: 707, // ve
+ 0x28f00000: 708, // vi
+ 0x28f0013b: 709, // vi-VN
+ 0x29400000: 710, // vo
+ 0x29400001: 711, // vo-001
+ 0x29700000: 712, // vun
+ 0x2970012d: 713, // vun-TZ
+ 0x29800000: 714, // wa
+ 0x29900000: 715, // wae
+ 0x2990004d: 716, // wae-CH
+ 0x2a100000: 717, // wo
+ 0x2a600000: 718, // xh
+ 0x2ae00000: 719, // xog
+ 0x2ae0012f: 720, // xog-UG
+ 0x2b400000: 721, // yav
+ 0x2b400051: 722, // yav-CM
+ 0x2b600000: 723, // yi
+ 0x2b600001: 724, // yi-001
+ 0x2b700000: 725, // yo
+ 0x2b70003a: 726, // yo-BJ
+ 0x2b7000d4: 727, // yo-NG
+ 0x2bf00000: 728, // zgh
+ 0x2bf000b8: 729, // zgh-MA
+ 0x2c000000: 730, // zh
+ 0x2c032000: 731, // zh-Hans
+ 0x2c032052: 732, // zh-Hans-CN
+ 0x2c03208b: 733, // zh-Hans-HK
+ 0x2c0320c4: 734, // zh-Hans-MO
+ 0x2c03210b: 735, // zh-Hans-SG
+ 0x2c033000: 736, // zh-Hant
+ 0x2c03308b: 737, // zh-Hant-HK
+ 0x2c0330c4: 738, // zh-Hant-MO
+ 0x2c03312c: 739, // zh-Hant-TW
+ 0x2c200000: 740, // zu
+ 0x2c20015e: 741, // zu-ZA
+}
+
+// Total table size 4520 bytes (4KiB); checksum: E686101E
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/language.go b/Godeps/_workspace/src/golang.org/x/text/language/language.go
new file mode 100644
index 000000000..8b0b0dba9
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/language.go
@@ -0,0 +1,975 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:generate go run maketables.go gen_common.go -output tables.go
+//go:generate go run gen_index.go
+
+// Package language implements BCP 47 language tags and related functionality.
+//
+// The Tag type, which is used to represent languages, is agnostic to the
+// meaning of its subtags. Tags are not fully canonicalized to preserve
+// information that may be valuable in certain contexts. As a consequence, two
+// different tags may represent identical languages.
+//
+// Initializing language- or locale-specific components usually consists of
+// two steps. The first step is to select a display language based on the
+// preferred languages of the user and the languages supported by an application.
+// The second step is to create the language-specific services based on
+// this selection. Each is discussed in more details below.
+//
+// Matching preferred against supported languages
+//
+// An application may support various languages. This list is typically limited
+// by the languages for which there exists translations of the user interface.
+// Similarly, a user may provide a list of preferred languages which is limited
+// by the languages understood by this user.
+// An application should use a Matcher to find the best supported language based
+// on the user's preferred list.
+// Matchers are aware of the intricacies of equivalence between languages.
+// The default Matcher implementation takes into account things such as
+// deprecated subtags, legacy tags, and mutual intelligibility between scripts
+// and languages.
+//
+// A Matcher for English, Australian English, Danish, and standard Mandarin can
+// be defined as follows:
+//
+// var matcher = language.NewMatcher([]language.Tag{
+// language.English, // The first language is used as fallback.
+// language.MustParse("en-AU"),
+// language.Danish,
+// language.Chinese,
+// })
+//
+// The following code selects the best match for someone speaking Spanish and
+// Norwegian:
+//
+// preferred := []language.Tag{ language.Spanish, language.Norwegian }
+// tag, _, _ := matcher.Match(preferred...)
+//
+// In this case, the best match is Danish, as Danish is sufficiently a match to
+// Norwegian to not have to fall back to the default.
+// See ParseAcceptLanguage on how to handle the Accept-Language HTTP header.
+//
+// Selecting language-specific services
+//
+// One should always use the Tag returned by the Matcher to create an instance
+// of any of the language-specific services provided by the text repository.
+// This prevents the mixing of languages, such as having a different language for
+// messages and display names, as well as improper casing or sorting order for
+// the selected language.
+// Using the returned Tag also allows user-defined settings, such as collation
+// order or numbering system to be transparently passed as options.
+//
+// If you have language-specific data in your application, however, it will in
+// most cases suffice to use the index returned by the matcher to identify
+// the user language.
+// The following loop provides an alternative in case this is not sufficient:
+//
+// supported := map[language.Tag]data{
+// language.English: enData,
+// language.MustParse("en-AU"): enAUData,
+// language.Danish: daData,
+// language.Chinese: zhData,
+// }
+// tag, _, _ := matcher.Match(preferred...)
+// for ; tag != language.Und; tag = tag.Parent() {
+// if v, ok := supported[tag]; ok {
+// return v
+// }
+// }
+// return enData // should not reach here
+//
+// Repeatedly taking the Parent of the tag returned by Match will eventually
+// match one of the tags used to initialize the Matcher.
+//
+// Canonicalization
+//
+// By default, only legacy and deprecated tags are converted into their
+// canonical equivalent. All other information is preserved. This approach makes
+// the confidence scores more accurate and allows matchers to distinguish
+// between variants that are otherwise lost.
+//
+// As a consequence, two tags that should be treated as identical according to
+// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The
+// Matchers will handle such distinctions, though, and are aware of the
+// equivalence relations. The CanonType type can be used to alter the
+// canonicalization form.
+//
+// References
+//
+// BCP 47 - Tags for Identifying Languages
+// http://tools.ietf.org/html/bcp47
+package language
+
+// TODO: Remove above NOTE after:
+// - verifying that tables are dropped correctly (most notably matcher tables).
+
+import (
+ "errors"
+ "fmt"
+ "strings"
+)
+
+const (
+ // maxCoreSize is the maximum size of a BCP 47 tag without variants and
+ // extensions. Equals max lang (3) + script (4) + max reg (3) + 2 dashes.
+ maxCoreSize = 12
+
+ // max99thPercentileSize is a somewhat arbitrary buffer size that presumably
+ // is large enough to hold at least 99% of the BCP 47 tags.
+ max99thPercentileSize = 32
+
+ // maxSimpleUExtensionSize is the maximum size of a -u extension with one
+ // key-type pair. Equals len("-u-") + key (2) + dash + max value (8).
+ maxSimpleUExtensionSize = 14
+)
+
+// Tag represents a BCP 47 language tag. It is used to specify an instance of a
+// specific language or locale. All language tag values are guaranteed to be
+// well-formed.
+type Tag struct {
+ lang langID
+ region regionID
+ script scriptID
+ pVariant byte // offset in str, includes preceding '-'
+ pExt uint16 // offset of first extension, includes preceding '-'
+
+ // str is the string representation of the Tag. It will only be used if the
+ // tag has variants or extensions.
+ str string
+}
+
+// Make is a convenience wrapper for Parse that omits the error.
+// In case of an error, a sensible default is returned.
+func Make(s string) Tag {
+ return Default.Make(s)
+}
+
+// Make is a convenience wrapper for c.Parse that omits the error.
+// In case of an error, a sensible default is returned.
+func (c CanonType) Make(s string) Tag {
+ t, _ := c.Parse(s)
+ return t
+}
+
+// Raw returns the raw base language, script and region, without making an
+// attempt to infer their values.
+func (t Tag) Raw() (b Base, s Script, r Region) {
+ return Base{t.lang}, Script{t.script}, Region{t.region}
+}
+
+// equalTags compares language, script and region subtags only.
+func (t Tag) equalTags(a Tag) bool {
+ return t.lang == a.lang && t.script == a.script && t.region == a.region
+}
+
+// IsRoot returns true if t is equal to language "und".
+func (t Tag) IsRoot() bool {
+ if int(t.pVariant) < len(t.str) {
+ return false
+ }
+ return t.equalTags(und)
+}
+
+// private reports whether the Tag consists solely of a private use tag.
+func (t Tag) private() bool {
+ return t.str != "" && t.pVariant == 0
+}
+
+// CanonType can be used to enable or disable various types of canonicalization.
+type CanonType int
+
+const (
+ // Replace deprecated base languages with their preferred replacements.
+ DeprecatedBase CanonType = 1 << iota
+ // Replace deprecated scripts with their preferred replacements.
+ DeprecatedScript
+ // Replace deprecated regions with their preferred replacements.
+ DeprecatedRegion
+ // Remove redundant scripts.
+ SuppressScript
+ // Normalize legacy encodings. This includes legacy languages defined in
+ // CLDR as well as bibliographic codes defined in ISO-639.
+ Legacy
+ // Map the dominant language of a macro language group to the macro language
+ // subtag. For example cmn -> zh.
+ Macro
+ // The CLDR flag should be used if full compatibility with CLDR is required.
+ // There are a few cases where language.Tag may differ from CLDR. To follow all
+ // of CLDR's suggestions, use All|CLDR.
+ CLDR
+
+ // Raw can be used to Compose or Parse without Canonicalization.
+ Raw CanonType = 0
+
+ // Replace all deprecated tags with their preferred replacements.
+ Deprecated = DeprecatedBase | DeprecatedScript | DeprecatedRegion
+
+ // All canonicalizations recommended by BCP 47.
+ BCP47 = Deprecated | SuppressScript
+
+ // All canonicalizations.
+ All = BCP47 | Legacy | Macro
+
+ // Default is the canonicalization used by Parse, Make and Compose. To
+ // preserve as much information as possible, canonicalizations that remove
+ // potentially valuable information are not included. The Matcher is
+ // designed to recognize similar tags that would be the same if
+ // they were canonicalized using All.
+ Default = Deprecated | Legacy
+
+ canonLang = DeprecatedBase | Legacy | Macro
+
+ // TODO: LikelyScript, LikelyRegion: suppress similar to ICU.
+)
+
+// canonicalize returns the canonicalized equivalent of the tag and
+// whether there was any change.
+func (t Tag) canonicalize(c CanonType) (Tag, bool) {
+ if c == Raw {
+ return t, false
+ }
+ changed := false
+ if c&SuppressScript != 0 {
+ if t.lang < langNoIndexOffset && uint8(t.script) == suppressScript[t.lang] {
+ t.script = 0
+ changed = true
+ }
+ }
+ if c&canonLang != 0 {
+ for {
+ if l, aliasType := normLang(t.lang); l != t.lang {
+ switch aliasType {
+ case langLegacy:
+ if c&Legacy != 0 {
+ if t.lang == _sh && t.script == 0 {
+ t.script = _Latn
+ }
+ t.lang = l
+ changed = true
+ }
+ case langMacro:
+ if c&Macro != 0 {
+ // We deviate here from CLDR. The mapping "nb" -> "no"
+ // qualifies as a typical Macro language mapping. However,
+ // for legacy reasons, CLDR maps "no", the macro language
+ // code for Norwegian, to the dominant variant "nb". This
+ // change is currently under consideration for CLDR as well.
+ // See http://unicode.org/cldr/trac/ticket/2698 and also
+ // http://unicode.org/cldr/trac/ticket/1790 for some of the
+ // practical implications. TODO: this check could be removed
+ // if CLDR adopts this change.
+ if c&CLDR == 0 || t.lang != _nb {
+ changed = true
+ t.lang = l
+ }
+ }
+ case langDeprecated:
+ if c&DeprecatedBase != 0 {
+ if t.lang == _mo && t.region == 0 {
+ t.region = _MD
+ }
+ t.lang = l
+ changed = true
+ // Other canonicalization types may still apply.
+ continue
+ }
+ }
+ } else if c&Legacy != 0 && t.lang == _no && c&CLDR != 0 {
+ t.lang = _nb
+ changed = true
+ }
+ break
+ }
+ }
+ if c&DeprecatedScript != 0 {
+ if t.script == _Qaai {
+ changed = true
+ t.script = _Zinh
+ }
+ }
+ if c&DeprecatedRegion != 0 {
+ if r := normRegion(t.region); r != 0 {
+ changed = true
+ t.region = r
+ }
+ }
+ return t, changed
+}
+
+// Canonicalize returns the canonicalized equivalent of the tag.
+func (c CanonType) Canonicalize(t Tag) (Tag, error) {
+ t, changed := t.canonicalize(c)
+ if changed {
+ t.remakeString()
+ }
+ return t, nil
+}
+
+// Confidence indicates the level of certainty for a given return value.
+// For example, Serbian may be written in Cyrillic or Latin script.
+// The confidence level indicates whether a value was explicitly specified,
+// whether it is typically the only possible value, or whether there is
+// an ambiguity.
+type Confidence int
+
+const (
+ No Confidence = iota // full confidence that there was no match
+ Low // most likely value picked out of a set of alternatives
+ High // value is generally assumed to be the correct match
+ Exact // exact match or explicitly specified value
+)
+
+var confName = []string{"No", "Low", "High", "Exact"}
+
+func (c Confidence) String() string {
+ return confName[c]
+}
+
+// remakeString is used to update t.str in case lang, script or region changed.
+// It is assumed that pExt and pVariant still point to the start of the
+// respective parts.
+func (t *Tag) remakeString() {
+ if t.str == "" {
+ return
+ }
+ extra := t.str[t.pVariant:]
+ if t.pVariant > 0 {
+ extra = extra[1:]
+ }
+ if t.equalTags(und) && strings.HasPrefix(extra, "x-") {
+ t.str = extra
+ t.pVariant = 0
+ t.pExt = 0
+ return
+ }
+ var buf [max99thPercentileSize]byte // avoid extra memory allocation in most cases.
+ b := buf[:t.genCoreBytes(buf[:])]
+ if extra != "" {
+ diff := uint8(len(b)) - t.pVariant
+ b = append(b, '-')
+ b = append(b, extra...)
+ t.pVariant += diff
+ t.pExt += uint16(diff)
+ } else {
+ t.pVariant = uint8(len(b))
+ t.pExt = uint16(len(b))
+ }
+ t.str = string(b)
+}
+
+// genCoreBytes writes a string for the base languages, script and region tags
+// to the given buffer and returns the number of bytes written. It will never
+// write more than maxCoreSize bytes.
+func (t *Tag) genCoreBytes(buf []byte) int {
+ n := t.lang.stringToBuf(buf[:])
+ if t.script != 0 {
+ n += copy(buf[n:], "-")
+ n += copy(buf[n:], t.script.String())
+ }
+ if t.region != 0 {
+ n += copy(buf[n:], "-")
+ n += copy(buf[n:], t.region.String())
+ }
+ return n
+}
+
+// String returns the canonical string representation of the language tag.
+func (t Tag) String() string {
+ if t.str != "" {
+ return t.str
+ }
+ if t.script == 0 && t.region == 0 {
+ return t.lang.String()
+ }
+ buf := [maxCoreSize]byte{}
+ return string(buf[:t.genCoreBytes(buf[:])])
+}
+
+// Base returns the base language of the language tag. If the base language is
+// unspecified, an attempt will be made to infer it from the context.
+// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.
+func (t Tag) Base() (Base, Confidence) {
+ if t.lang != 0 {
+ return Base{t.lang}, Exact
+ }
+ c := High
+ if t.script == 0 && !(Region{t.region}).IsCountry() {
+ c = Low
+ }
+ if tag, err := addTags(t); err == nil && tag.lang != 0 {
+ return Base{tag.lang}, c
+ }
+ return Base{0}, No
+}
+
+// Script infers the script for the language tag. If it was not explicitly given, it will infer
+// a most likely candidate.
+// If more than one script is commonly used for a language, the most likely one
+// is returned with a low confidence indication. For example, it returns (Cyrl, Low)
+// for Serbian.
+// If a script cannot be inferred (Zzzz, No) is returned. We do not use Zyyy (undetermined)
+// as one would suspect from the IANA registry for BCP 47. In a Unicode context Zyyy marks
+// common characters (like 1, 2, 3, '.', etc.) and is therefore more like multiple scripts.
+// See http://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for
+// unknown value in CLDR. (Zzzz, Exact) is returned if Zzzz was explicitly specified.
+// Note that an inferred script is never guaranteed to be the correct one. Latin is
+// almost exclusively used for Afrikaans, but Arabic has been used for some texts
+// in the past. Also, the script that is commonly used may change over time.
+// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.
+func (t Tag) Script() (Script, Confidence) {
+ if t.script != 0 {
+ return Script{t.script}, Exact
+ }
+ sc, c := scriptID(_Zzzz), No
+ if t.lang < langNoIndexOffset {
+ if scr := scriptID(suppressScript[t.lang]); scr != 0 {
+ // Note: it is not always the case that a language with a suppress
+ // script value is only written in one script (e.g. kk, ms, pa).
+ if t.region == 0 {
+ return Script{scriptID(scr)}, High
+ }
+ sc, c = scr, High
+ }
+ }
+ if tag, err := addTags(t); err == nil {
+ if tag.script != sc {
+ sc, c = tag.script, Low
+ }
+ } else {
+ t, _ = (Deprecated | Macro).Canonicalize(t)
+ if tag, err := addTags(t); err == nil && tag.script != sc {
+ sc, c = tag.script, Low
+ }
+ }
+ return Script{sc}, c
+}
+
+// Region returns the region for the language tag. If it was not explicitly given, it will
+// infer a most likely candidate from the context.
+// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change.
+func (t Tag) Region() (Region, Confidence) {
+ if t.region != 0 {
+ return Region{t.region}, Exact
+ }
+ if t, err := addTags(t); err == nil {
+ return Region{t.region}, Low // TODO: differentiate between high and low.
+ }
+ t, _ = (Deprecated | Macro).Canonicalize(t)
+ if tag, err := addTags(t); err == nil {
+ return Region{tag.region}, Low
+ }
+ return Region{_ZZ}, No // TODO: return world instead of undetermined?
+}
+
+// Variant returns the variants specified explicitly for this language tag.
+// or nil if no variant was specified.
+func (t Tag) Variants() []Variant {
+ v := []Variant{}
+ if int(t.pVariant) < int(t.pExt) {
+ for x, str := "", t.str[t.pVariant:t.pExt]; str != ""; {
+ x, str = nextToken(str)
+ v = append(v, Variant{x})
+ }
+ }
+ return v
+}
+
+// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a
+// specific language are substituted with fields from the parent language.
+// The parent for a language may change for newer versions of CLDR.
+func (t Tag) Parent() Tag {
+ if t.str != "" {
+ // Strip the variants and extensions.
+ t, _ = Raw.Compose(t.Raw())
+ if t.region == 0 && t.script != 0 && t.lang != 0 {
+ base, _ := addTags(Tag{lang: t.lang})
+ if base.script == t.script {
+ return Tag{lang: t.lang}
+ }
+ }
+ return t
+ }
+ if t.lang != 0 {
+ if t.region != 0 {
+ maxScript := t.script
+ if maxScript == 0 {
+ max, _ := addTags(t)
+ maxScript = max.script
+ }
+
+ for i := range parents {
+ if langID(parents[i].lang) == t.lang && scriptID(parents[i].maxScript) == maxScript {
+ for _, r := range parents[i].fromRegion {
+ if regionID(r) == t.region {
+ return Tag{
+ lang: t.lang,
+ script: scriptID(parents[i].script),
+ region: regionID(parents[i].toRegion),
+ }
+ }
+ }
+ }
+ }
+
+ // Strip the script if it is the default one.
+ base, _ := addTags(Tag{lang: t.lang})
+ if base.script != maxScript {
+ return Tag{lang: t.lang, script: maxScript}
+ }
+ return Tag{lang: t.lang}
+ } else if t.script != 0 {
+ // The parent for an base-script pair with a non-default script is
+ // "und" instead of the base language.
+ base, _ := addTags(Tag{lang: t.lang})
+ if base.script != t.script {
+ return und
+ }
+ return Tag{lang: t.lang}
+ }
+ }
+ return und
+}
+
+// returns token t and the rest of the string.
+func nextToken(s string) (t, tail string) {
+ p := strings.Index(s[1:], "-")
+ if p == -1 {
+ return s[1:], ""
+ }
+ p++
+ return s[1:p], s[p:]
+}
+
+// Extension is a single BCP 47 extension.
+type Extension struct {
+ s string
+}
+
+// String returns the string representation of the extension, including the
+// type tag.
+func (e Extension) String() string {
+ return e.s
+}
+
+// ParseExtension parses s as an extension and returns it on success.
+func ParseExtension(s string) (e Extension, err error) {
+ scan := makeScannerString(s)
+ var end int
+ if n := len(scan.token); n != 1 {
+ return Extension{}, errSyntax
+ }
+ scan.toLower(0, len(scan.b))
+ end = parseExtension(&scan)
+ if end != len(s) {
+ return Extension{}, errSyntax
+ }
+ return Extension{string(scan.b)}, nil
+}
+
+// Type returns the one-byte extension type of e. It returns 0 for the zero
+// exception.
+func (e Extension) Type() byte {
+ if e.s == "" {
+ return 0
+ }
+ return e.s[0]
+}
+
+// Tokens returns the list of tokens of e.
+func (e Extension) Tokens() []string {
+ return strings.Split(e.s, "-")
+}
+
+// Extension returns the extension of type x for tag t. It will return
+// false for ok if t does not have the requested extension. The returned
+// extension will be invalid in this case.
+func (t Tag) Extension(x byte) (ext Extension, ok bool) {
+ for i := int(t.pExt); i < len(t.str)-1; {
+ var ext string
+ i, ext = getExtension(t.str, i)
+ if ext[0] == x {
+ return Extension{ext}, true
+ }
+ }
+ return Extension{string(x)}, false
+}
+
+// Extensions returns all extensions of t.
+func (t Tag) Extensions() []Extension {
+ e := []Extension{}
+ for i := int(t.pExt); i < len(t.str)-1; {
+ var ext string
+ i, ext = getExtension(t.str, i)
+ e = append(e, Extension{ext})
+ }
+ return e
+}
+
+// TypeForKey returns the type associated with the given key, where key and type
+// are of the allowed values defined for the Unicode locale extension ('u') in
+// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// TypeForKey will traverse the inheritance chain to get the correct value.
+func (t Tag) TypeForKey(key string) string {
+ if start, end, _ := t.findTypeForKey(key); end != start {
+ return t.str[start:end]
+ }
+ return ""
+}
+
+var (
+ errPrivateUse = errors.New("cannot set a key on a private use tag")
+ errInvalidArguments = errors.New("invalid key or type")
+)
+
+// SetTypeForKey returns a new Tag with the key set to type, where key and type
+// are of the allowed values defined for the Unicode locale extension ('u') in
+// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// An empty value removes an existing pair with the same key.
+func (t Tag) SetTypeForKey(key, value string) (Tag, error) {
+ if t.private() {
+ return t, errPrivateUse
+ }
+ if len(key) != 2 {
+ return t, errInvalidArguments
+ }
+
+ // Remove the setting if value is "".
+ if value == "" {
+ start, end, _ := t.findTypeForKey(key)
+ if start != end {
+ // Remove key tag and leading '-'.
+ start -= 4
+
+ // Remove a possible empty extension.
+ if (end == len(t.str) || t.str[end+2] == '-') && t.str[start-2] == '-' {
+ start -= 2
+ }
+ if start == int(t.pVariant) && end == len(t.str) {
+ t.str = ""
+ t.pVariant, t.pExt = 0, 0
+ } else {
+ t.str = fmt.Sprintf("%s%s", t.str[:start], t.str[end:])
+ }
+ }
+ return t, nil
+ }
+
+ if len(value) < 3 || len(value) > 8 {
+ return t, errInvalidArguments
+ }
+
+ var (
+ buf [maxCoreSize + maxSimpleUExtensionSize]byte
+ uStart int // start of the -u extension.
+ )
+
+ // Generate the tag string if needed.
+ if t.str == "" {
+ uStart = t.genCoreBytes(buf[:])
+ buf[uStart] = '-'
+ uStart++
+ }
+
+ // Create new key-type pair and parse it to verify.
+ b := buf[uStart:]
+ copy(b, "u-")
+ copy(b[2:], key)
+ b[4] = '-'
+ b = b[:5+copy(b[5:], value)]
+ scan := makeScanner(b)
+ if parseExtensions(&scan); scan.err != nil {
+ return t, scan.err
+ }
+
+ // Assemble the replacement string.
+ if t.str == "" {
+ t.pVariant, t.pExt = byte(uStart-1), uint16(uStart-1)
+ t.str = string(buf[:uStart+len(b)])
+ } else {
+ s := t.str
+ start, end, hasExt := t.findTypeForKey(key)
+ if start == end {
+ if hasExt {
+ b = b[2:]
+ }
+ t.str = fmt.Sprintf("%s-%s%s", s[:start], b, s[end:])
+ } else {
+ t.str = fmt.Sprintf("%s%s%s", s[:start], value, s[end:])
+ }
+ }
+ return t, nil
+}
+
+// findKeyAndType returns the start and end position for the type corresponding
+// to key or the point at which to insert the key-value pair if the type
+// wasn't found. The hasExt return value reports whether an -u extension was present.
+// Note: the extensions are typically very small and are likely to contain
+// only one key-type pair.
+func (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) {
+ p := int(t.pExt)
+ if len(key) != 2 || p == len(t.str) || p == 0 {
+ return p, p, false
+ }
+ s := t.str
+
+ // Find the correct extension.
+ for p++; s[p] != 'u'; p++ {
+ if s[p] > 'u' {
+ p--
+ return p, p, false
+ }
+ if p = nextExtension(s, p); p == len(s) {
+ return len(s), len(s), false
+ }
+ }
+ // Proceed to the hyphen following the extension name.
+ p++
+
+ // curKey is the key currently being processed.
+ curKey := ""
+
+ // Iterate over keys until we get the end of a section.
+ for {
+ // p points to the hyphen preceding the current token.
+ if p3 := p + 3; s[p3] == '-' {
+ // Found a key.
+ // Check whether we just processed the key that was requested.
+ if curKey == key {
+ return start, p, true
+ }
+ // Set to the next key and continue scanning type tokens.
+ curKey = s[p+1 : p3]
+ if curKey > key {
+ return p, p, true
+ }
+ // Start of the type token sequence.
+ start = p + 4
+ // A type is at least 3 characters long.
+ p += 7 // 4 + 3
+ } else {
+ // Attribute or type, which is at least 3 characters long.
+ p += 4
+ }
+ // p points past the third character of a type or attribute.
+ max := p + 5 // maximum length of token plus hyphen.
+ if len(s) < max {
+ max = len(s)
+ }
+ for ; p < max && s[p] != '-'; p++ {
+ }
+ // Bail if we have exhausted all tokens or if the next token starts
+ // a new extension.
+ if p == len(s) || s[p+2] == '-' {
+ if curKey == key {
+ return start, p, true
+ }
+ return p, p, true
+ }
+ }
+}
+
+// CompactIndex returns an index, where 0 <= index < NumCompactTags, for tags
+// for which data exists in the text repository. The index will change over time
+// and should not be stored in persistent storage. Extensions, except for the
+// 'va' type of the 'u' extension, are ignored. It will return 0, false if no
+// compact tag exists, where 0 is the index for the root language (Und).
+func CompactIndex(t Tag) (index int, ok bool) {
+ // TODO: perhaps give more frequent tags a lower index.
+ // TODO: we could make the indexes stable. This will excluded some
+ // possibilities for optimization, so don't do this quite yet.
+ b, s, r := t.Raw()
+ if len(t.str) > 0 {
+ if strings.HasPrefix(t.str, "x-") {
+ // We have no entries for user-defined tags.
+ return 0, false
+ }
+ if uint16(t.pVariant) != t.pExt {
+ // There are no tags with variants and an u-va type.
+ if t.TypeForKey("va") != "" {
+ return 0, false
+ }
+ t, _ = Raw.Compose(b, s, r, t.Variants())
+ } else if _, ok := t.Extension('u'); ok {
+ // Strip all but the 'va' entry.
+ variant := t.TypeForKey("va")
+ t, _ = Raw.Compose(b, s, r)
+ t, _ = t.SetTypeForKey("va", variant)
+ }
+ if len(t.str) > 0 {
+ // We have some variants.
+ for i, s := range specialTags {
+ if s == t {
+ return i + 1, true
+ }
+ }
+ return 0, false
+ }
+ }
+ // No variants specified: just compare core components.
+ // The key has the form lllssrrr, where l, s, and r are nibbles for
+ // respectively the langID, scriptID, and regionID.
+ key := uint32(b.langID) << (8 + 12)
+ key |= uint32(s.scriptID) << 12
+ key |= uint32(r.regionID)
+ x, ok := coreTags[key]
+ return int(x), ok
+}
+
+// Base is an ISO 639 language code, used for encoding the base language
+// of a language tag.
+type Base struct {
+ langID
+}
+
+// ParseBase parses a 2- or 3-letter ISO 639 code.
+// It returns a ValueError if s is a well-formed but unknown language identifier
+// or another error if another error occurred.
+func ParseBase(s string) (Base, error) {
+ if n := len(s); n < 2 || 3 < n {
+ return Base{}, errSyntax
+ }
+ var buf [3]byte
+ l, err := getLangID(buf[:copy(buf[:], s)])
+ return Base{l}, err
+}
+
+// Script is a 4-letter ISO 15924 code for representing scripts.
+// It is idiomatically represented in title case.
+type Script struct {
+ scriptID
+}
+
+// ParseScript parses a 4-letter ISO 15924 code.
+// It returns a ValueError if s is a well-formed but unknown script identifier
+// or another error if another error occurred.
+func ParseScript(s string) (Script, error) {
+ if len(s) != 4 {
+ return Script{}, errSyntax
+ }
+ var buf [4]byte
+ sc, err := getScriptID(script, buf[:copy(buf[:], s)])
+ return Script{sc}, err
+}
+
+// Region is an ISO 3166-1 or UN M.49 code for representing countries and regions.
+type Region struct {
+ regionID
+}
+
+// EncodeM49 returns the Region for the given UN M.49 code.
+// It returns an error if r is not a valid code.
+func EncodeM49(r int) (Region, error) {
+ rid, err := getRegionM49(r)
+ return Region{rid}, err
+}
+
+// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code.
+// It returns a ValueError if s is a well-formed but unknown region identifier
+// or another error if another error occurred.
+func ParseRegion(s string) (Region, error) {
+ if n := len(s); n < 2 || 3 < n {
+ return Region{}, errSyntax
+ }
+ var buf [3]byte
+ r, err := getRegionID(buf[:copy(buf[:], s)])
+ return Region{r}, err
+}
+
+// IsCountry returns whether this region is a country or autonomous area. This
+// includes non-standard definitions from CLDR.
+func (r Region) IsCountry() bool {
+ if r.regionID == 0 || r.IsGroup() || r.IsPrivateUse() && r.regionID != _XK {
+ return false
+ }
+ return true
+}
+
+// IsGroup returns whether this region defines a collection of regions. This
+// includes non-standard definitions from CLDR.
+func (r Region) IsGroup() bool {
+ if r.regionID == 0 {
+ return false
+ }
+ return int(regionInclusion[r.regionID]) < len(regionContainment)
+}
+
+// Contains returns whether Region c is contained by Region r. It returns true
+// if c == r.
+func (r Region) Contains(c Region) bool {
+ return r.regionID.contains(c.regionID)
+}
+
+func (r regionID) contains(c regionID) bool {
+ if r == c {
+ return true
+ }
+ g := regionInclusion[r]
+ if g >= nRegionGroups {
+ return false
+ }
+ m := regionContainment[g]
+
+ d := regionInclusion[c]
+ b := regionInclusionBits[d]
+
+ // A contained country may belong to multiple disjoint groups. Matching any
+ // of these indicates containment. If the contained region is a group, it
+ // must strictly be a subset.
+ if d >= nRegionGroups {
+ return b&m != 0
+ }
+ return b&^m == 0
+}
+
+var errNoTLD = errors.New("language: region is not a valid ccTLD")
+
+// TLD returns the country code top-level domain (ccTLD). UK is returned for GB.
+// In all other cases it returns either the region itself or an error.
+//
+// This method may return an error for a region for which there exists a
+// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The
+// region will already be canonicalized it was obtained from a Tag that was
+// obtained using any of the default methods.
+func (r Region) TLD() (Region, error) {
+ // See http://en.wikipedia.org/wiki/Country_code_top-level_domain for the
+ // difference between ISO 3166-1 and IANA ccTLD.
+ if r.regionID == _GB {
+ r = Region{_UK}
+ }
+ if (r.typ() & ccTLD) == 0 {
+ return Region{}, errNoTLD
+ }
+ return r, nil
+}
+
+// Canonicalize returns the region or a possible replacement if the region is
+// deprecated. It will not return a replacement for deprecated regions that
+// are split into multiple regions.
+func (r Region) Canonicalize() Region {
+ if cr := normRegion(r.regionID); cr != 0 {
+ return Region{cr}
+ }
+ return r
+}
+
+// Variant represents a registered variant of a language as defined by BCP 47.
+type Variant struct {
+ variant string
+}
+
+// ParseVariant parses and returns a Variant. An error is returned if s is not
+// a valid variant.
+func ParseVariant(s string) (Variant, error) {
+ s = strings.ToLower(s)
+ if _, ok := variantIndex[s]; ok {
+ return Variant{s}, nil
+ }
+ return Variant{}, mkErrInvalid([]byte(s))
+}
+
+// String returns the string representation of the variant.
+func (v Variant) String() string {
+ return v.variant
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/lookup.go b/Godeps/_workspace/src/golang.org/x/text/language/lookup.go
new file mode 100644
index 000000000..1d80ac370
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/lookup.go
@@ -0,0 +1,396 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package language
+
+import (
+ "bytes"
+ "fmt"
+ "sort"
+ "strconv"
+
+ "golang.org/x/text/internal/tag"
+)
+
+// findIndex tries to find the given tag in idx and returns a standardized error
+// if it could not be found.
+func findIndex(idx tag.Index, key []byte, form string) (index int, err error) {
+ if !tag.FixCase(form, key) {
+ return 0, errSyntax
+ }
+ i := idx.Index(key)
+ if i == -1 {
+ return 0, mkErrInvalid(key)
+ }
+ return i, nil
+}
+
+func searchUint(imap []uint16, key uint16) int {
+ return sort.Search(len(imap), func(i int) bool {
+ return imap[i] >= key
+ })
+}
+
+type langID uint16
+
+// getLangID returns the langID of s if s is a canonical subtag
+// or langUnknown if s is not a canonical subtag.
+func getLangID(s []byte) (langID, error) {
+ if len(s) == 2 {
+ return getLangISO2(s)
+ }
+ return getLangISO3(s)
+}
+
+// mapLang returns the mapped langID of id according to mapping m.
+func normLang(id langID) (langID, langAliasType) {
+ k := sort.Search(len(langAliasMap), func(i int) bool {
+ return langAliasMap[i].from >= uint16(id)
+ })
+ if k < len(langAliasMap) && langAliasMap[k].from == uint16(id) {
+ return langID(langAliasMap[k].to), langAliasTypes[k]
+ }
+ return id, langAliasTypeUnknown
+}
+
+// getLangISO2 returns the langID for the given 2-letter ISO language code
+// or unknownLang if this does not exist.
+func getLangISO2(s []byte) (langID, error) {
+ if !tag.FixCase("zz", s) {
+ return 0, errSyntax
+ }
+ if i := lang.Index(s); i != -1 && lang.Elem(i)[3] != 0 {
+ return langID(i), nil
+ }
+ return 0, mkErrInvalid(s)
+}
+
+const base = 'z' - 'a' + 1
+
+func strToInt(s []byte) uint {
+ v := uint(0)
+ for i := 0; i < len(s); i++ {
+ v *= base
+ v += uint(s[i] - 'a')
+ }
+ return v
+}
+
+// converts the given integer to the original ASCII string passed to strToInt.
+// len(s) must match the number of characters obtained.
+func intToStr(v uint, s []byte) {
+ for i := len(s) - 1; i >= 0; i-- {
+ s[i] = byte(v%base) + 'a'
+ v /= base
+ }
+}
+
+// getLangISO3 returns the langID for the given 3-letter ISO language code
+// or unknownLang if this does not exist.
+func getLangISO3(s []byte) (langID, error) {
+ if tag.FixCase("und", s) {
+ // first try to match canonical 3-letter entries
+ for i := lang.Index(s[:2]); i != -1; i = lang.Next(s[:2], i) {
+ if e := lang.Elem(i); e[3] == 0 && e[2] == s[2] {
+ // We treat "und" as special and always translate it to "unspecified".
+ // Note that ZZ and Zzzz are private use and are not treated as
+ // unspecified by default.
+ id := langID(i)
+ if id == nonCanonicalUnd {
+ return 0, nil
+ }
+ return id, nil
+ }
+ }
+ if i := altLangISO3.Index(s); i != -1 {
+ return langID(altLangIndex[altLangISO3.Elem(i)[3]]), nil
+ }
+ n := strToInt(s)
+ if langNoIndex[n/8]&(1<<(n%8)) != 0 {
+ return langID(n) + langNoIndexOffset, nil
+ }
+ // Check for non-canonical uses of ISO3.
+ for i := lang.Index(s[:1]); i != -1; i = lang.Next(s[:1], i) {
+ if e := lang.Elem(i); e[2] == s[1] && e[3] == s[2] {
+ return langID(i), nil
+ }
+ }
+ return 0, mkErrInvalid(s)
+ }
+ return 0, errSyntax
+}
+
+// stringToBuf writes the string to b and returns the number of bytes
+// written. cap(b) must be >= 3.
+func (id langID) stringToBuf(b []byte) int {
+ if id >= langNoIndexOffset {
+ intToStr(uint(id)-langNoIndexOffset, b[:3])
+ return 3
+ } else if id == 0 {
+ return copy(b, "und")
+ }
+ l := lang[id<<2:]
+ if l[3] == 0 {
+ return copy(b, l[:3])
+ }
+ return copy(b, l[:2])
+}
+
+// String returns the BCP 47 representation of the langID.
+// Use b as variable name, instead of id, to ensure the variable
+// used is consistent with that of Base in which this type is embedded.
+func (b langID) String() string {
+ if b == 0 {
+ return "und"
+ } else if b >= langNoIndexOffset {
+ b -= langNoIndexOffset
+ buf := [3]byte{}
+ intToStr(uint(b), buf[:])
+ return string(buf[:])
+ }
+ l := lang.Elem(int(b))
+ if l[3] == 0 {
+ return l[:3]
+ }
+ return l[:2]
+}
+
+// ISO3 returns the ISO 639-3 language code.
+func (b langID) ISO3() string {
+ if b == 0 || b >= langNoIndexOffset {
+ return b.String()
+ }
+ l := lang.Elem(int(b))
+ if l[3] == 0 {
+ return l[:3]
+ } else if l[2] == 0 {
+ return altLangISO3.Elem(int(l[3]))[:3]
+ }
+ // This allocation will only happen for 3-letter ISO codes
+ // that are non-canonical BCP 47 language identifiers.
+ return l[0:1] + l[2:4]
+}
+
+// IsPrivateUse reports whether this language code is reserved for private use.
+func (b langID) IsPrivateUse() bool {
+ return langPrivateStart <= b && b <= langPrivateEnd
+}
+
+type regionID uint16
+
+// getRegionID returns the region id for s if s is a valid 2-letter region code
+// or unknownRegion.
+func getRegionID(s []byte) (regionID, error) {
+ if len(s) == 3 {
+ if isAlpha(s[0]) {
+ return getRegionISO3(s)
+ }
+ if i, err := strconv.ParseUint(string(s), 10, 10); err == nil {
+ return getRegionM49(int(i))
+ }
+ }
+ return getRegionISO2(s)
+}
+
+// getRegionISO2 returns the regionID for the given 2-letter ISO country code
+// or unknownRegion if this does not exist.
+func getRegionISO2(s []byte) (regionID, error) {
+ i, err := findIndex(regionISO, s, "ZZ")
+ if err != nil {
+ return 0, err
+ }
+ return regionID(i) + isoRegionOffset, nil
+}
+
+// getRegionISO3 returns the regionID for the given 3-letter ISO country code
+// or unknownRegion if this does not exist.
+func getRegionISO3(s []byte) (regionID, error) {
+ if tag.FixCase("ZZZ", s) {
+ for i := regionISO.Index(s[:1]); i != -1; i = regionISO.Next(s[:1], i) {
+ if e := regionISO.Elem(i); e[2] == s[1] && e[3] == s[2] {
+ return regionID(i) + isoRegionOffset, nil
+ }
+ }
+ for i := 0; i < len(altRegionISO3); i += 3 {
+ if tag.Compare(altRegionISO3[i:i+3], s) == 0 {
+ return regionID(altRegionIDs[i/3]), nil
+ }
+ }
+ return 0, mkErrInvalid(s)
+ }
+ return 0, errSyntax
+}
+
+func getRegionM49(n int) (regionID, error) {
+ if 0 < n && n <= 999 {
+ const (
+ searchBits = 7
+ regionBits = 9
+ regionMask = 1<<regionBits - 1
+ )
+ idx := n >> searchBits
+ buf := fromM49[m49Index[idx]:m49Index[idx+1]]
+ val := uint16(n) << regionBits // we rely on bits shifting out
+ i := sort.Search(len(buf), func(i int) bool {
+ return buf[i] >= val
+ })
+ if r := fromM49[int(m49Index[idx])+i]; r&^regionMask == val {
+ return regionID(r & regionMask), nil
+ }
+ }
+ var e ValueError
+ fmt.Fprint(bytes.NewBuffer([]byte(e.v[:])), n)
+ return 0, e
+}
+
+// normRegion returns a region if r is deprecated or 0 otherwise.
+// TODO: consider supporting BYS (-> BLR), CSK (-> 200 or CZ), PHI (-> PHL) and AFI (-> DJ).
+// TODO: consider mapping split up regions to new most populous one (like CLDR).
+func normRegion(r regionID) regionID {
+ m := regionOldMap
+ k := sort.Search(len(m), func(i int) bool {
+ return m[i].from >= uint16(r)
+ })
+ if k < len(m) && m[k].from == uint16(r) {
+ return regionID(m[k].to)
+ }
+ return 0
+}
+
+const (
+ iso3166UserAssigned = 1 << iota
+ ccTLD
+ bcp47Region
+)
+
+func (r regionID) typ() byte {
+ return regionTypes[r]
+}
+
+// String returns the BCP 47 representation for the region.
+// It returns "ZZ" for an unspecified region.
+func (r regionID) String() string {
+ if r < isoRegionOffset {
+ if r == 0 {
+ return "ZZ"
+ }
+ return fmt.Sprintf("%03d", r.M49())
+ }
+ r -= isoRegionOffset
+ return regionISO.Elem(int(r))[:2]
+}
+
+// ISO3 returns the 3-letter ISO code of r.
+// Note that not all regions have a 3-letter ISO code.
+// In such cases this method returns "ZZZ".
+func (r regionID) ISO3() string {
+ if r < isoRegionOffset {
+ return "ZZZ"
+ }
+ r -= isoRegionOffset
+ reg := regionISO.Elem(int(r))
+ switch reg[2] {
+ case 0:
+ return altRegionISO3[reg[3]:][:3]
+ case ' ':
+ return "ZZZ"
+ }
+ return reg[0:1] + reg[2:4]
+}
+
+// M49 returns the UN M.49 encoding of r, or 0 if this encoding
+// is not defined for r.
+func (r regionID) M49() int {
+ return int(m49[r])
+}
+
+// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This
+// may include private-use tags that are assigned by CLDR and used in this
+// implementation. So IsPrivateUse and IsCountry can be simultaneously true.
+func (r regionID) IsPrivateUse() bool {
+ return r.typ()&iso3166UserAssigned != 0
+}
+
+type scriptID uint8
+
+// getScriptID returns the script id for string s. It assumes that s
+// is of the format [A-Z][a-z]{3}.
+func getScriptID(idx tag.Index, s []byte) (scriptID, error) {
+ i, err := findIndex(idx, s, "Zzzz")
+ return scriptID(i), err
+}
+
+// String returns the script code in title case.
+// It returns "Zzzz" for an unspecified script.
+func (s scriptID) String() string {
+ if s == 0 {
+ return "Zzzz"
+ }
+ return script.Elem(int(s))
+}
+
+// IsPrivateUse reports whether this script code is reserved for private use.
+func (s scriptID) IsPrivateUse() bool {
+ return _Qaaa <= s && s <= _Qabx
+}
+
+const (
+ maxAltTaglen = len("en-US-POSIX")
+ maxLen = maxAltTaglen
+)
+
+var (
+ // grandfatheredMap holds a mapping from legacy and grandfathered tags to
+ // their base language or index to more elaborate tag.
+ grandfatheredMap = map[[maxLen]byte]int16{
+ [maxLen]byte{'a', 'r', 't', '-', 'l', 'o', 'j', 'b', 'a', 'n'}: _jbo, // art-lojban
+ [maxLen]byte{'i', '-', 'a', 'm', 'i'}: _ami, // i-ami
+ [maxLen]byte{'i', '-', 'b', 'n', 'n'}: _bnn, // i-bnn
+ [maxLen]byte{'i', '-', 'h', 'a', 'k'}: _hak, // i-hak
+ [maxLen]byte{'i', '-', 'k', 'l', 'i', 'n', 'g', 'o', 'n'}: _tlh, // i-klingon
+ [maxLen]byte{'i', '-', 'l', 'u', 'x'}: _lb, // i-lux
+ [maxLen]byte{'i', '-', 'n', 'a', 'v', 'a', 'j', 'o'}: _nv, // i-navajo
+ [maxLen]byte{'i', '-', 'p', 'w', 'n'}: _pwn, // i-pwn
+ [maxLen]byte{'i', '-', 't', 'a', 'o'}: _tao, // i-tao
+ [maxLen]byte{'i', '-', 't', 'a', 'y'}: _tay, // i-tay
+ [maxLen]byte{'i', '-', 't', 's', 'u'}: _tsu, // i-tsu
+ [maxLen]byte{'n', 'o', '-', 'b', 'o', 'k'}: _nb, // no-bok
+ [maxLen]byte{'n', 'o', '-', 'n', 'y', 'n'}: _nn, // no-nyn
+ [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'f', 'r'}: _sfb, // sgn-BE-FR
+ [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'n', 'l'}: _vgt, // sgn-BE-NL
+ [maxLen]byte{'s', 'g', 'n', '-', 'c', 'h', '-', 'd', 'e'}: _sgg, // sgn-CH-DE
+ [maxLen]byte{'z', 'h', '-', 'g', 'u', 'o', 'y', 'u'}: _cmn, // zh-guoyu
+ [maxLen]byte{'z', 'h', '-', 'h', 'a', 'k', 'k', 'a'}: _hak, // zh-hakka
+ [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n', '-', 'n', 'a', 'n'}: _nan, // zh-min-nan
+ [maxLen]byte{'z', 'h', '-', 'x', 'i', 'a', 'n', 'g'}: _hsn, // zh-xiang
+
+ // Grandfathered tags with no modern replacement will be converted as
+ // follows:
+ [maxLen]byte{'c', 'e', 'l', '-', 'g', 'a', 'u', 'l', 'i', 's', 'h'}: -1, // cel-gaulish
+ [maxLen]byte{'e', 'n', '-', 'g', 'b', '-', 'o', 'e', 'd'}: -2, // en-GB-oed
+ [maxLen]byte{'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'}: -3, // i-default
+ [maxLen]byte{'i', '-', 'e', 'n', 'o', 'c', 'h', 'i', 'a', 'n'}: -4, // i-enochian
+ [maxLen]byte{'i', '-', 'm', 'i', 'n', 'g', 'o'}: -5, // i-mingo
+ [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n'}: -6, // zh-min
+
+ // CLDR-specific tag.
+ [maxLen]byte{'r', 'o', 'o', 't'}: 0, // root
+ [maxLen]byte{'e', 'n', '-', 'u', 's', '-', 'p', 'o', 's', 'i', 'x'}: -7, // en_US_POSIX"
+ }
+
+ altTagIndex = [...]uint8{0, 17, 31, 45, 61, 74, 86, 102}
+
+ altTags = "xtg-x-cel-gaulishen-GB-oxendicten-x-i-defaultund-x-i-enochiansee-x-i-mingonan-x-zh-minen-US-u-va-posix"
+)
+
+func grandfathered(s [maxAltTaglen]byte) (t Tag, ok bool) {
+ if v, ok := grandfatheredMap[s]; ok {
+ if v < 0 {
+ return Make(altTags[altTagIndex[-v-1]:altTagIndex[-v]]), true
+ }
+ t.lang = langID(v)
+ return t, true
+ }
+ return t, false
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/maketables.go b/Godeps/_workspace/src/golang.org/x/text/language/maketables.go
new file mode 100644
index 000000000..2cc995b37
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/maketables.go
@@ -0,0 +1,1635 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// Language tag table generator.
+// Data read from the web.
+
+package main
+
+import (
+ "bufio"
+ "flag"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "log"
+ "math"
+ "reflect"
+ "regexp"
+ "sort"
+ "strconv"
+ "strings"
+
+ "golang.org/x/text/internal/gen"
+ "golang.org/x/text/internal/tag"
+ "golang.org/x/text/unicode/cldr"
+)
+
+var (
+ test = flag.Bool("test",
+ false,
+ "test existing tables; can be used to compare web data with package data.")
+ outputFile = flag.String("output",
+ "tables.go",
+ "output file for generated tables")
+)
+
+var comment = []string{
+ `
+lang holds an alphabetically sorted list of ISO-639 language identifiers.
+All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.
+For 2-byte language identifiers, the two successive bytes have the following meaning:
+ - if the first letter of the 2- and 3-letter ISO codes are the same:
+ the second and third letter of the 3-letter ISO code.
+ - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.
+For 3-byte language identifiers the 4th byte is 0.`,
+ `
+langNoIndex is a bit vector of all 3-letter language codes that are not used as an index
+in lookup tables. The language ids for these language codes are derived directly
+from the letters and are not consecutive.`,
+ `
+altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives
+to 2-letter language codes that cannot be derived using the method described above.
+Each 3-letter code is followed by its 1-byte langID.`,
+ `
+altLangIndex is used to convert indexes in altLangISO3 to langIDs.`,
+ `
+langAliasMap maps langIDs to their suggested replacements.`,
+ `
+script is an alphabetically sorted list of ISO 15924 codes. The index
+of the script in the string, divided by 4, is the internal scriptID.`,
+ `
+isoRegionOffset needs to be added to the index of regionISO to obtain the regionID
+for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for
+the UN.M49 codes used for groups.)`,
+ `
+regionISO holds a list of alphabetically sorted 2-letter ISO region codes.
+Each 2-letter codes is followed by two bytes with the following meaning:
+ - [A-Z}{2}: the first letter of the 2-letter code plus these two
+ letters form the 3-letter ISO code.
+ - 0, n: index into altRegionISO3.`,
+ `
+regionTypes defines the status of a region for various standards.`,
+ `
+m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are
+codes indicating collections of regions.`,
+ `
+m49Index gives indexes into fromM49 based on the three most significant bits
+of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in
+ fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]]
+for an entry where the first 7 bits match the 7 lsb of the UN.M49 code.
+The region code is stored in the 9 lsb of the indexed value.`,
+ `
+fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details.`,
+ `
+altRegionISO3 holds a list of 3-letter region codes that cannot be
+mapped to 2-letter codes using the default algorithm. This is a short list.`,
+ `
+altRegionIDs holds a list of regionIDs the positions of which match those
+of the 3-letter ISO codes in altRegionISO3.`,
+ `
+variantNumSpecialized is the number of specialized variants in variants.`,
+ `
+suppressScript is an index from langID to the dominant script for that language,
+if it exists. If a script is given, it should be suppressed from the language tag.`,
+ `
+likelyLang is a lookup table, indexed by langID, for the most likely
+scripts and regions given incomplete information. If more entries exist for a
+given language, region and script are the index and size respectively
+of the list in likelyLangList.`,
+ `
+likelyLangList holds lists info associated with likelyLang.`,
+ `
+likelyRegion is a lookup table, indexed by regionID, for the most likely
+languages and scripts given incomplete information. If more entries exist
+for a given regionID, lang and script are the index and size respectively
+of the list in likelyRegionList.
+TODO: exclude containers and user-definable regions from the list.`,
+ `
+likelyRegionList holds lists info associated with likelyRegion.`,
+ `
+likelyScript is a lookup table, indexed by scriptID, for the most likely
+languages and regions given a script.`,
+ `
+matchLang holds pairs of langIDs of base languages that are typically
+mutually intelligible. Each pair is associated with a confidence and
+whether the intelligibility goes one or both ways.`,
+ `
+matchScript holds pairs of scriptIDs where readers of one script
+can typically also read the other. Each is associated with a confidence.`,
+ `
+nRegionGroups is the number of region groups.`,
+ `
+regionInclusion maps region identifiers to sets of regions in regionInclusionBits,
+where each set holds all groupings that are directly connected in a region
+containment graph.`,
+ `
+regionInclusionBits is an array of bit vectors where every vector represents
+a set of region groupings. These sets are used to compute the distance
+between two regions for the purpose of language matching.`,
+ `
+regionInclusionNext marks, for each entry in regionInclusionBits, the set of
+all groups that are reachable from the groups set in the respective entry.`,
+}
+
+// TODO: consider changing some of these structures to tries. This can reduce
+// memory, but may increase the need for memory allocations. This could be
+// mitigated if we can piggyback on language tags for common cases.
+
+func failOnError(e error) {
+ if e != nil {
+ log.Panic(e)
+ }
+}
+
+type setType int
+
+const (
+ Indexed setType = 1 + iota // all elements must be of same size
+ Linear
+)
+
+type stringSet struct {
+ s []string
+ sorted, frozen bool
+
+ // We often need to update values after the creation of an index is completed.
+ // We include a convenience map for keeping track of this.
+ update map[string]string
+ typ setType // used for checking.
+}
+
+func (ss *stringSet) clone() stringSet {
+ c := *ss
+ c.s = append([]string(nil), c.s...)
+ return c
+}
+
+func (ss *stringSet) setType(t setType) {
+ if ss.typ != t && ss.typ != 0 {
+ log.Panicf("type %d cannot be assigned as it was already %d", t, ss.typ)
+ }
+}
+
+// parse parses a whitespace-separated string and initializes ss with its
+// components.
+func (ss *stringSet) parse(s string) {
+ scan := bufio.NewScanner(strings.NewReader(s))
+ scan.Split(bufio.ScanWords)
+ for scan.Scan() {
+ ss.add(scan.Text())
+ }
+}
+
+func (ss *stringSet) assertChangeable() {
+ if ss.frozen {
+ log.Panic("attempt to modify a frozen stringSet")
+ }
+}
+
+func (ss *stringSet) add(s string) {
+ ss.assertChangeable()
+ ss.s = append(ss.s, s)
+ ss.sorted = ss.frozen
+}
+
+func (ss *stringSet) freeze() {
+ ss.compact()
+ ss.frozen = true
+}
+
+func (ss *stringSet) compact() {
+ if ss.sorted {
+ return
+ }
+ a := ss.s
+ sort.Strings(a)
+ k := 0
+ for i := 1; i < len(a); i++ {
+ if a[k] != a[i] {
+ a[k+1] = a[i]
+ k++
+ }
+ }
+ ss.s = a[:k+1]
+ ss.sorted = ss.frozen
+}
+
+type funcSorter struct {
+ fn func(a, b string) bool
+ sort.StringSlice
+}
+
+func (s funcSorter) Less(i, j int) bool {
+ return s.fn(s.StringSlice[i], s.StringSlice[j])
+}
+
+func (ss *stringSet) sortFunc(f func(a, b string) bool) {
+ ss.compact()
+ sort.Sort(funcSorter{f, sort.StringSlice(ss.s)})
+}
+
+func (ss *stringSet) remove(s string) {
+ ss.assertChangeable()
+ if i, ok := ss.find(s); ok {
+ copy(ss.s[i:], ss.s[i+1:])
+ ss.s = ss.s[:len(ss.s)-1]
+ }
+}
+
+func (ss *stringSet) replace(ol, nu string) {
+ ss.s[ss.index(ol)] = nu
+ ss.sorted = ss.frozen
+}
+
+func (ss *stringSet) index(s string) int {
+ ss.setType(Indexed)
+ i, ok := ss.find(s)
+ if !ok {
+ if i < len(ss.s) {
+ log.Panicf("find: item %q is not in list. Closest match is %q.", s, ss.s[i])
+ }
+ log.Panicf("find: item %q is not in list", s)
+
+ }
+ return i
+}
+
+func (ss *stringSet) find(s string) (int, bool) {
+ ss.compact()
+ i := sort.SearchStrings(ss.s, s)
+ return i, i != len(ss.s) && ss.s[i] == s
+}
+
+func (ss *stringSet) slice() []string {
+ ss.compact()
+ return ss.s
+}
+
+func (ss *stringSet) updateLater(v, key string) {
+ if ss.update == nil {
+ ss.update = map[string]string{}
+ }
+ ss.update[v] = key
+}
+
+// join joins the string and ensures that all entries are of the same length.
+func (ss *stringSet) join() string {
+ ss.setType(Indexed)
+ n := len(ss.s[0])
+ for _, s := range ss.s {
+ if len(s) != n {
+ log.Panicf("join: not all entries are of the same length: %q", s)
+ }
+ }
+ ss.s = append(ss.s, strings.Repeat("\xff", n))
+ return strings.Join(ss.s, "")
+}
+
+// ianaEntry holds information for an entry in the IANA Language Subtag Repository.
+// All types use the same entry.
+// See http://tools.ietf.org/html/bcp47#section-5.1 for a description of the various
+// fields.
+type ianaEntry struct {
+ typ string
+ description []string
+ scope string
+ added string
+ preferred string
+ deprecated string
+ suppressScript string
+ macro string
+ prefix []string
+}
+
+type builder struct {
+ w *gen.CodeWriter
+ hw io.Writer // MultiWriter for w and w.Hash
+ data *cldr.CLDR
+ supp *cldr.SupplementalData
+
+ // indices
+ locale stringSet // common locales
+ lang stringSet // canonical language ids (2 or 3 letter ISO codes) with data
+ langNoIndex stringSet // 3-letter ISO codes with no associated data
+ script stringSet // 4-letter ISO codes
+ region stringSet // 2-letter ISO or 3-digit UN M49 codes
+ variant stringSet // 4-8-alphanumeric variant code.
+
+ // Region codes that are groups with their corresponding group IDs.
+ groups map[int]index
+
+ // langInfo
+ registry map[string]*ianaEntry
+}
+
+type index uint
+
+func newBuilder(w *gen.CodeWriter) *builder {
+ r := gen.OpenCLDRCoreZip()
+ defer r.Close()
+ d := &cldr.Decoder{}
+ data, err := d.DecodeZip(r)
+ failOnError(err)
+ b := builder{
+ w: w,
+ hw: io.MultiWriter(w, w.Hash),
+ data: data,
+ supp: data.Supplemental(),
+ }
+ b.parseRegistry()
+ return &b
+}
+
+func (b *builder) parseRegistry() {
+ r := gen.OpenIANAFile("assignments/language-subtag-registry")
+ defer r.Close()
+ b.registry = make(map[string]*ianaEntry)
+
+ scan := bufio.NewScanner(r)
+ scan.Split(bufio.ScanWords)
+ var record *ianaEntry
+ for more := scan.Scan(); more; {
+ key := scan.Text()
+ more = scan.Scan()
+ value := scan.Text()
+ switch key {
+ case "Type:":
+ record = &ianaEntry{typ: value}
+ case "Subtag:", "Tag:":
+ if s := strings.SplitN(value, "..", 2); len(s) > 1 {
+ for a := s[0]; a <= s[1]; a = inc(a) {
+ b.addToRegistry(a, record)
+ }
+ } else {
+ b.addToRegistry(value, record)
+ }
+ case "Suppress-Script:":
+ record.suppressScript = value
+ case "Added:":
+ record.added = value
+ case "Deprecated:":
+ record.deprecated = value
+ case "Macrolanguage:":
+ record.macro = value
+ case "Preferred-Value:":
+ record.preferred = value
+ case "Prefix:":
+ record.prefix = append(record.prefix, value)
+ case "Scope:":
+ record.scope = value
+ case "Description:":
+ buf := []byte(value)
+ for more = scan.Scan(); more; more = scan.Scan() {
+ b := scan.Bytes()
+ if b[0] == '%' || b[len(b)-1] == ':' {
+ break
+ }
+ buf = append(buf, ' ')
+ buf = append(buf, b...)
+ }
+ record.description = append(record.description, string(buf))
+ continue
+ default:
+ continue
+ }
+ more = scan.Scan()
+ }
+ if scan.Err() != nil {
+ log.Panic(scan.Err())
+ }
+}
+
+func (b *builder) addToRegistry(key string, entry *ianaEntry) {
+ if info, ok := b.registry[key]; ok {
+ if info.typ != "language" || entry.typ != "extlang" {
+ log.Fatalf("parseRegistry: tag %q already exists", key)
+ }
+ } else {
+ b.registry[key] = entry
+ }
+}
+
+var commentIndex = make(map[string]string)
+
+func init() {
+ for _, s := range comment {
+ key := strings.TrimSpace(strings.SplitN(s, " ", 2)[0])
+ commentIndex[key] = s
+ }
+}
+
+func (b *builder) comment(name string) {
+ if s := commentIndex[name]; len(s) > 0 {
+ b.w.WriteComment(s)
+ } else {
+ fmt.Fprintln(b.w)
+ }
+}
+
+func (b *builder) pf(f string, x ...interface{}) {
+ fmt.Fprintf(b.hw, f, x...)
+ fmt.Fprint(b.hw, "\n")
+}
+
+func (b *builder) p(x ...interface{}) {
+ fmt.Fprintln(b.hw, x...)
+}
+
+func (b *builder) addSize(s int) {
+ b.w.Size += s
+ b.pf("// Size: %d bytes", s)
+}
+
+func (b *builder) writeConst(name string, x interface{}) {
+ b.comment(name)
+ b.w.WriteConst(name, x)
+}
+
+// writeConsts computes f(v) for all v in values and writes the results
+// as constants named _v to a single constant block.
+func (b *builder) writeConsts(f func(string) int, values ...string) {
+ b.pf("const (")
+ for _, v := range values {
+ b.pf("\t_%s = %v", v, f(v))
+ }
+ b.pf(")")
+}
+
+// writeType writes the type of the given value, which must be a struct.
+func (b *builder) writeType(value interface{}) {
+ b.comment(reflect.TypeOf(value).Name())
+ b.w.WriteType(value)
+}
+
+func (b *builder) writeSlice(name string, ss interface{}) {
+ b.writeSliceAddSize(name, 0, ss)
+}
+
+func (b *builder) writeSliceAddSize(name string, extraSize int, ss interface{}) {
+ b.comment(name)
+ b.w.Size += extraSize
+ v := reflect.ValueOf(ss)
+ t := v.Type().Elem()
+ b.pf("// Size: %d bytes, %d elements", v.Len()*int(t.Size())+extraSize, v.Len())
+
+ fmt.Fprintf(b.w, "var %s = ", name)
+ b.w.WriteArray(ss)
+ b.p()
+}
+
+type fromTo struct {
+ from, to uint16
+}
+
+func (b *builder) writeSortedMap(name string, ss *stringSet, index func(s string) uint16) {
+ ss.sortFunc(func(a, b string) bool {
+ return index(a) < index(b)
+ })
+ m := []fromTo{}
+ for _, s := range ss.s {
+ m = append(m, fromTo{index(s), index(ss.update[s])})
+ }
+ b.writeSlice(name, m)
+}
+
+const base = 'z' - 'a' + 1
+
+func strToInt(s string) uint {
+ v := uint(0)
+ for i := 0; i < len(s); i++ {
+ v *= base
+ v += uint(s[i] - 'a')
+ }
+ return v
+}
+
+// converts the given integer to the original ASCII string passed to strToInt.
+// len(s) must match the number of characters obtained.
+func intToStr(v uint, s []byte) {
+ for i := len(s) - 1; i >= 0; i-- {
+ s[i] = byte(v%base) + 'a'
+ v /= base
+ }
+}
+
+func (b *builder) writeBitVector(name string, ss []string) {
+ vec := make([]uint8, int(math.Ceil(math.Pow(base, float64(len(ss[0])))/8)))
+ for _, s := range ss {
+ v := strToInt(s)
+ vec[v/8] |= 1 << (v % 8)
+ }
+ b.writeSlice(name, vec)
+}
+
+// TODO: convert this type into a list or two-stage trie.
+func (b *builder) writeMapFunc(name string, m map[string]string, f func(string) uint16) {
+ b.comment(name)
+ v := reflect.ValueOf(m)
+ sz := v.Len() * (2 + int(v.Type().Key().Size()))
+ for _, k := range m {
+ sz += len(k)
+ }
+ b.addSize(sz)
+ keys := []string{}
+ b.pf(`var %s = map[string]uint16{`, name)
+ for k := range m {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+ for _, k := range keys {
+ b.pf("\t%q: %v,", k, f(m[k]))
+ }
+ b.p("}")
+}
+
+func (b *builder) writeMap(name string, m interface{}) {
+ b.comment(name)
+ v := reflect.ValueOf(m)
+ sz := v.Len() * (2 + int(v.Type().Key().Size()) + int(v.Type().Elem().Size()))
+ b.addSize(sz)
+ f := strings.FieldsFunc(fmt.Sprintf("%#v", m), func(r rune) bool {
+ return strings.IndexRune("{}, ", r) != -1
+ })
+ sort.Strings(f[1:])
+ b.pf(`var %s = %s{`, name, f[0])
+ for _, kv := range f[1:] {
+ b.pf("\t%s,", kv)
+ }
+ b.p("}")
+}
+
+func (b *builder) langIndex(s string) uint16 {
+ if s == "und" {
+ return 0
+ }
+ if i, ok := b.lang.find(s); ok {
+ return uint16(i)
+ }
+ return uint16(strToInt(s)) + uint16(len(b.lang.s))
+}
+
+// inc advances the string to its lexicographical successor.
+func inc(s string) string {
+ const maxTagLength = 4
+ var buf [maxTagLength]byte
+ intToStr(strToInt(strings.ToLower(s))+1, buf[:len(s)])
+ for i := 0; i < len(s); i++ {
+ if s[i] <= 'Z' {
+ buf[i] -= 'a' - 'A'
+ }
+ }
+ return string(buf[:len(s)])
+}
+
+func (b *builder) parseIndices() {
+ meta := b.supp.Metadata
+
+ for k, v := range b.registry {
+ var ss *stringSet
+ switch v.typ {
+ case "language":
+ if len(k) == 2 || v.suppressScript != "" || v.scope == "special" {
+ b.lang.add(k)
+ continue
+ } else {
+ ss = &b.langNoIndex
+ }
+ case "region":
+ ss = &b.region
+ case "script":
+ ss = &b.script
+ case "variant":
+ ss = &b.variant
+ default:
+ continue
+ }
+ ss.add(k)
+ }
+ // Include any language for which there is data.
+ for _, lang := range b.data.Locales() {
+ if x := b.data.RawLDML(lang); false ||
+ x.LocaleDisplayNames != nil ||
+ x.Characters != nil ||
+ x.Delimiters != nil ||
+ x.Measurement != nil ||
+ x.Dates != nil ||
+ x.Numbers != nil ||
+ x.Units != nil ||
+ x.ListPatterns != nil ||
+ x.Collations != nil ||
+ x.Segmentations != nil ||
+ x.Rbnf != nil ||
+ x.Annotations != nil ||
+ x.Metadata != nil {
+
+ from := strings.Split(lang, "_")
+ if lang := from[0]; lang != "root" {
+ b.lang.add(lang)
+ }
+ }
+ }
+ // Include locales for plural rules, which uses a different structure.
+ for _, plurals := range b.data.Supplemental().Plurals {
+ for _, rules := range plurals.PluralRules {
+ for _, lang := range strings.Split(rules.Locales, " ") {
+ if lang = strings.Split(lang, "_")[0]; lang != "root" {
+ b.lang.add(lang)
+ }
+ }
+ }
+ }
+ // Include languages in likely subtags.
+ for _, m := range b.supp.LikelySubtags.LikelySubtag {
+ from := strings.Split(m.From, "_")
+ b.lang.add(from[0])
+ }
+ // Include ISO-639 alpha-3 bibliographic entries.
+ for _, a := range meta.Alias.LanguageAlias {
+ if a.Reason == "bibliographic" {
+ b.langNoIndex.add(a.Type)
+ }
+ }
+ // Include regions in territoryAlias (not all are in the IANA registry!)
+ for _, reg := range b.supp.Metadata.Alias.TerritoryAlias {
+ if len(reg.Type) == 2 {
+ b.region.add(reg.Type)
+ }
+ }
+
+ for _, s := range b.lang.s {
+ if len(s) == 3 {
+ b.langNoIndex.remove(s)
+ }
+ }
+ b.writeConst("numLanguages", len(b.lang.slice())+len(b.langNoIndex.slice()))
+ b.writeConst("numScripts", len(b.script.slice()))
+ b.writeConst("numRegions", len(b.region.slice()))
+
+ // Add dummy codes at the start of each list to represent "unspecified".
+ b.lang.add("---")
+ b.script.add("----")
+ b.region.add("---")
+
+ // common locales
+ b.locale.parse(meta.DefaultContent.Locales)
+}
+
+func (b *builder) computeRegionGroups() {
+ b.groups = make(map[int]index)
+
+ // Create group indices.
+ for i := 1; b.region.s[i][0] < 'A'; i++ { // Base M49 indices on regionID.
+ b.groups[i] = index(len(b.groups))
+ }
+ for _, g := range b.supp.TerritoryContainment.Group {
+ group := b.region.index(g.Type)
+ if _, ok := b.groups[group]; !ok {
+ b.groups[group] = index(len(b.groups))
+ }
+ }
+ if len(b.groups) > 32 {
+ log.Fatalf("only 32 groups supported, found %d", len(b.groups))
+ }
+ b.writeConst("nRegionGroups", len(b.groups))
+}
+
+var langConsts = []string{
+ "af", "am", "ar", "az", "bg", "bn", "ca", "cs", "da", "de", "el", "en", "es",
+ "et", "fa", "fi", "fil", "fr", "gu", "he", "hi", "hr", "hu", "hy", "id", "is",
+ "it", "ja", "ka", "kk", "km", "kn", "ko", "ky", "lo", "lt", "lv", "mk", "ml",
+ "mn", "mo", "mr", "ms", "mul", "my", "nb", "ne", "nl", "no", "pa", "pl", "pt",
+ "ro", "ru", "sh", "si", "sk", "sl", "sq", "sr", "sv", "sw", "ta", "te", "th",
+ "tl", "tn", "tr", "uk", "ur", "uz", "vi", "zh", "zu",
+
+ // constants for grandfathered tags (if not already defined)
+ "jbo", "ami", "bnn", "hak", "tlh", "lb", "nv", "pwn", "tao", "tay", "tsu",
+ "nn", "sfb", "vgt", "sgg", "cmn", "nan", "hsn",
+}
+
+// writeLanguage generates all tables needed for language canonicalization.
+func (b *builder) writeLanguage() {
+ meta := b.supp.Metadata
+
+ b.writeConst("nonCanonicalUnd", b.lang.index("und"))
+ b.writeConsts(func(s string) int { return int(b.langIndex(s)) }, langConsts...)
+ b.writeConst("langPrivateStart", b.langIndex("qaa"))
+ b.writeConst("langPrivateEnd", b.langIndex("qtz"))
+
+ // Get language codes that need to be mapped (overlong 3-letter codes,
+ // deprecated 2-letter codes, legacy and grandfathered tags.)
+ langAliasMap := stringSet{}
+ aliasTypeMap := map[string]langAliasType{}
+
+ // altLangISO3 get the alternative ISO3 names that need to be mapped.
+ altLangISO3 := stringSet{}
+ // Add dummy start to avoid the use of index 0.
+ altLangISO3.add("---")
+ altLangISO3.updateLater("---", "aa")
+
+ lang := b.lang.clone()
+ for _, a := range meta.Alias.LanguageAlias {
+ if a.Replacement == "" {
+ a.Replacement = "und"
+ }
+ // TODO: support mapping to tags
+ repl := strings.SplitN(a.Replacement, "_", 2)[0]
+ if a.Reason == "overlong" {
+ if len(a.Replacement) == 2 && len(a.Type) == 3 {
+ lang.updateLater(a.Replacement, a.Type)
+ }
+ } else if len(a.Type) <= 3 {
+ switch a.Reason {
+ case "macrolanguage":
+ aliasTypeMap[a.Type] = langMacro
+ case "deprecated":
+ // handled elsewhere
+ continue
+ case "bibliographic", "legacy":
+ if a.Type == "no" {
+ continue
+ }
+ aliasTypeMap[a.Type] = langLegacy
+ default:
+ log.Fatalf("new %s alias: %s", a.Reason, a.Type)
+ }
+ langAliasMap.add(a.Type)
+ langAliasMap.updateLater(a.Type, repl)
+ }
+ }
+ // Manually add the mapping of "nb" (Norwegian) to its macro language.
+ // This can be removed if CLDR adopts this change.
+ langAliasMap.add("nb")
+ langAliasMap.updateLater("nb", "no")
+ aliasTypeMap["nb"] = langMacro
+
+ for k, v := range b.registry {
+ // Also add deprecated values for 3-letter ISO codes, which CLDR omits.
+ if v.typ == "language" && v.deprecated != "" && v.preferred != "" {
+ langAliasMap.add(k)
+ langAliasMap.updateLater(k, v.preferred)
+ aliasTypeMap[k] = langDeprecated
+ }
+ }
+ // Fix CLDR mappings.
+ lang.updateLater("tl", "tgl")
+ lang.updateLater("sh", "hbs")
+ lang.updateLater("mo", "mol")
+ lang.updateLater("no", "nor")
+ lang.updateLater("tw", "twi")
+ lang.updateLater("nb", "nob")
+ lang.updateLater("ak", "aka")
+
+ // Ensure that each 2-letter code is matched with a 3-letter code.
+ for _, v := range lang.s[1:] {
+ s, ok := lang.update[v]
+ if !ok {
+ if s, ok = lang.update[langAliasMap.update[v]]; !ok {
+ continue
+ }
+ lang.update[v] = s
+ }
+ if v[0] != s[0] {
+ altLangISO3.add(s)
+ altLangISO3.updateLater(s, v)
+ }
+ }
+
+ // Complete canonialized language tags.
+ lang.freeze()
+ for i, v := range lang.s {
+ // We can avoid these manual entries by using the IANI registry directly.
+ // Seems easier to update the list manually, as changes are rare.
+ // The panic in this loop will trigger if we miss an entry.
+ add := ""
+ if s, ok := lang.update[v]; ok {
+ if s[0] == v[0] {
+ add = s[1:]
+ } else {
+ add = string([]byte{0, byte(altLangISO3.index(s))})
+ }
+ } else if len(v) == 3 {
+ add = "\x00"
+ } else {
+ log.Panicf("no data for long form of %q", v)
+ }
+ lang.s[i] += add
+ }
+ b.writeConst("lang", tag.Index(lang.join()))
+
+ b.writeConst("langNoIndexOffset", len(b.lang.s))
+
+ // space of all valid 3-letter language identifiers.
+ b.writeBitVector("langNoIndex", b.langNoIndex.slice())
+
+ altLangIndex := []uint16{}
+ for i, s := range altLangISO3.slice() {
+ altLangISO3.s[i] += string([]byte{byte(len(altLangIndex))})
+ if i > 0 {
+ idx := b.lang.index(altLangISO3.update[s])
+ altLangIndex = append(altLangIndex, uint16(idx))
+ }
+ }
+ b.writeConst("altLangISO3", tag.Index(altLangISO3.join()))
+ b.writeSlice("altLangIndex", altLangIndex)
+
+ b.writeSortedMap("langAliasMap", &langAliasMap, b.langIndex)
+ types := make([]langAliasType, len(langAliasMap.s))
+ for i, s := range langAliasMap.s {
+ types[i] = aliasTypeMap[s]
+ }
+ b.writeSlice("langAliasTypes", types)
+}
+
+var scriptConsts = []string{
+ "Latn", "Hani", "Hans", "Hant", "Qaaa", "Qaai", "Qabx", "Zinh", "Zyyy",
+ "Zzzz",
+}
+
+func (b *builder) writeScript() {
+ b.writeConsts(b.script.index, scriptConsts...)
+ b.writeConst("script", tag.Index(b.script.join()))
+
+ supp := make([]uint8, len(b.lang.slice()))
+ for i, v := range b.lang.slice()[1:] {
+ if sc := b.registry[v].suppressScript; sc != "" {
+ supp[i+1] = uint8(b.script.index(sc))
+ }
+ }
+ b.writeSlice("suppressScript", supp)
+
+ // There is only one deprecated script in CLDR. This value is hard-coded.
+ // We check here if the code must be updated.
+ for _, a := range b.supp.Metadata.Alias.ScriptAlias {
+ if a.Type != "Qaai" {
+ log.Panicf("unexpected deprecated stript %q", a.Type)
+ }
+ }
+}
+
+func parseM49(s string) int16 {
+ if len(s) == 0 {
+ return 0
+ }
+ v, err := strconv.ParseUint(s, 10, 10)
+ failOnError(err)
+ return int16(v)
+}
+
+var regionConsts = []string{
+ "001", "419", "BR", "CA", "ES", "GB", "MD", "PT", "UK", "US",
+ "ZZ", "XA", "XC", "XK", // Unofficial tag for Kosovo.
+}
+
+func (b *builder) writeRegion() {
+ b.writeConsts(b.region.index, regionConsts...)
+
+ isoOffset := b.region.index("AA")
+ m49map := make([]int16, len(b.region.slice()))
+ fromM49map := make(map[int16]int)
+ altRegionISO3 := ""
+ altRegionIDs := []uint16{}
+
+ b.writeConst("isoRegionOffset", isoOffset)
+
+ // 2-letter region lookup and mapping to numeric codes.
+ regionISO := b.region.clone()
+ regionISO.s = regionISO.s[isoOffset:]
+ regionISO.sorted = false
+
+ regionTypes := make([]byte, len(b.region.s))
+
+ // Is the region valid BCP 47?
+ for s, e := range b.registry {
+ if len(s) == 2 && s == strings.ToUpper(s) {
+ i := b.region.index(s)
+ for _, d := range e.description {
+ if strings.Contains(d, "Private use") {
+ regionTypes[i] = iso3166UserAssgined
+ }
+ }
+ regionTypes[i] |= bcp47Region
+ }
+ }
+
+ // Is the region a valid ccTLD?
+ r := gen.OpenIANAFile("domains/root/db")
+ defer r.Close()
+
+ buf, err := ioutil.ReadAll(r)
+ failOnError(err)
+ re := regexp.MustCompile(`"/domains/root/db/([a-z]{2}).html"`)
+ for _, m := range re.FindAllSubmatch(buf, -1) {
+ i := b.region.index(strings.ToUpper(string(m[1])))
+ regionTypes[i] |= ccTLD
+ }
+
+ b.writeSlice("regionTypes", regionTypes)
+
+ iso3Set := make(map[string]int)
+ update := func(iso2, iso3 string) {
+ i := regionISO.index(iso2)
+ if j, ok := iso3Set[iso3]; !ok && iso3[0] == iso2[0] {
+ regionISO.s[i] += iso3[1:]
+ iso3Set[iso3] = -1
+ } else {
+ if ok && j >= 0 {
+ regionISO.s[i] += string([]byte{0, byte(j)})
+ } else {
+ iso3Set[iso3] = len(altRegionISO3)
+ regionISO.s[i] += string([]byte{0, byte(len(altRegionISO3))})
+ altRegionISO3 += iso3
+ altRegionIDs = append(altRegionIDs, uint16(isoOffset+i))
+ }
+ }
+ }
+ for _, tc := range b.supp.CodeMappings.TerritoryCodes {
+ i := regionISO.index(tc.Type) + isoOffset
+ if d := m49map[i]; d != 0 {
+ log.Panicf("%s found as a duplicate UN.M49 code of %03d", tc.Numeric, d)
+ }
+ m49 := parseM49(tc.Numeric)
+ m49map[i] = m49
+ if r := fromM49map[m49]; r == 0 {
+ fromM49map[m49] = i
+ } else if r != i {
+ dep := b.registry[regionISO.s[r-isoOffset]].deprecated
+ if t := b.registry[tc.Type]; t != nil && dep != "" && (t.deprecated == "" || t.deprecated > dep) {
+ fromM49map[m49] = i
+ }
+ }
+ }
+ for _, ta := range b.supp.Metadata.Alias.TerritoryAlias {
+ if len(ta.Type) == 3 && ta.Type[0] <= '9' && len(ta.Replacement) == 2 {
+ from := parseM49(ta.Type)
+ if r := fromM49map[from]; r == 0 {
+ fromM49map[from] = regionISO.index(ta.Replacement) + isoOffset
+ }
+ }
+ }
+ for _, tc := range b.supp.CodeMappings.TerritoryCodes {
+ if len(tc.Alpha3) == 3 {
+ update(tc.Type, tc.Alpha3)
+ }
+ }
+ // This entries are not included in territoryCodes. Mostly 3-letter variants
+ // of deleted codes and an entry for QU.
+ for _, m := range []struct{ iso2, iso3 string }{
+ {"CT", "CTE"},
+ {"DY", "DHY"},
+ {"HV", "HVO"},
+ {"JT", "JTN"},
+ {"MI", "MID"},
+ {"NH", "NHB"},
+ {"NQ", "ATN"},
+ {"PC", "PCI"},
+ {"PU", "PUS"},
+ {"PZ", "PCZ"},
+ {"RH", "RHO"},
+ {"VD", "VDR"},
+ {"WK", "WAK"},
+ // These three-letter codes are used for others as well.
+ {"FQ", "ATF"},
+ } {
+ update(m.iso2, m.iso3)
+ }
+ for i, s := range regionISO.s {
+ if len(s) != 4 {
+ regionISO.s[i] = s + " "
+ }
+ }
+ b.writeConst("regionISO", tag.Index(regionISO.join()))
+ b.writeConst("altRegionISO3", altRegionISO3)
+ b.writeSlice("altRegionIDs", altRegionIDs)
+
+ // Create list of deprecated regions.
+ // TODO: consider inserting SF -> FI. Not included by CLDR, but is the only
+ // Transitionally-reserved mapping not included.
+ regionOldMap := stringSet{}
+ // Include regions in territoryAlias (not all are in the IANA registry!)
+ for _, reg := range b.supp.Metadata.Alias.TerritoryAlias {
+ if len(reg.Type) == 2 && reg.Reason == "deprecated" && len(reg.Replacement) == 2 {
+ regionOldMap.add(reg.Type)
+ regionOldMap.updateLater(reg.Type, reg.Replacement)
+ i, _ := regionISO.find(reg.Type)
+ j, _ := regionISO.find(reg.Replacement)
+ if k := m49map[i+isoOffset]; k == 0 {
+ m49map[i+isoOffset] = m49map[j+isoOffset]
+ }
+ }
+ }
+ b.writeSortedMap("regionOldMap", &regionOldMap, func(s string) uint16 {
+ return uint16(b.region.index(s))
+ })
+ // 3-digit region lookup, groupings.
+ for i := 1; i < isoOffset; i++ {
+ m := parseM49(b.region.s[i])
+ m49map[i] = m
+ fromM49map[m] = i
+ }
+ b.writeSlice("m49", m49map)
+
+ const (
+ searchBits = 7
+ regionBits = 9
+ )
+ if len(m49map) >= 1<<regionBits {
+ log.Fatalf("Maximum number of regions exceeded: %d > %d", len(m49map), 1<<regionBits)
+ }
+ m49Index := [9]int16{}
+ fromM49 := []uint16{}
+ m49 := []int{}
+ for k, _ := range fromM49map {
+ m49 = append(m49, int(k))
+ }
+ sort.Ints(m49)
+ for _, k := range m49[1:] {
+ val := (k & (1<<searchBits - 1)) << regionBits
+ fromM49 = append(fromM49, uint16(val|fromM49map[int16(k)]))
+ m49Index[1:][k>>searchBits] = int16(len(fromM49))
+ }
+ b.writeSlice("m49Index", m49Index)
+ b.writeSlice("fromM49", fromM49)
+}
+
+const (
+ // TODO: put these lists in regionTypes as user data? Could be used for
+ // various optimizations and refinements and could be exposed in the API.
+ iso3166Except = "AC CP DG EA EU FX IC SU TA UK"
+ iso3166Trans = "AN BU CS NT TP YU ZR" // SF is not in our set of Regions.
+ // DY and RH are actually not deleted, but indeterminately reserved.
+ iso3166DelCLDR = "CT DD DY FQ HV JT MI NH NQ PC PU PZ RH VD WK YD"
+)
+
+const (
+ iso3166UserAssgined = 1 << iota
+ ccTLD
+ bcp47Region
+)
+
+func find(list []string, s string) int {
+ for i, t := range list {
+ if t == s {
+ return i
+ }
+ }
+ return -1
+}
+
+// writeVariants generates per-variant information and creates a map from variant
+// name to index value. We assign index values such that sorting multiple
+// variants by index value will result in the correct order.
+// There are two types of variants: specialized and general. Specialized variants
+// are only applicable to certain language or language-script pairs. Generalized
+// variants apply to any language. Generalized variants always sort after
+// specialized variants. We will therefore always assign a higher index value
+// to a generalized variant than any other variant. Generalized variants are
+// sorted alphabetically among themselves.
+// Specialized variants may also sort after other specialized variants. Such
+// variants will be ordered after any of the variants they may follow.
+// We assume that if a variant x is followed by a variant y, then for any prefix
+// p of x, p-x is a prefix of y. This allows us to order tags based on the
+// maximum of the length of any of its prefixes.
+// TODO: it is possible to define a set of Prefix values on variants such that
+// a total order cannot be defined to the point that this algorithm breaks.
+// In other words, we cannot guarantee the same order of variants for the
+// future using the same algorithm or for non-compliant combinations of
+// variants. For this reason, consider using simple alphabetic sorting
+// of variants and ignore Prefix restrictions altogether.
+func (b *builder) writeVariant() {
+ generalized := stringSet{}
+ specialized := stringSet{}
+ specializedExtend := stringSet{}
+ // Collate the variants by type and check assumptions.
+ for _, v := range b.variant.slice() {
+ e := b.registry[v]
+ if len(e.prefix) == 0 {
+ generalized.add(v)
+ continue
+ }
+ c := strings.Split(e.prefix[0], "-")
+ hasScriptOrRegion := false
+ if len(c) > 1 {
+ _, hasScriptOrRegion = b.script.find(c[1])
+ if !hasScriptOrRegion {
+ _, hasScriptOrRegion = b.region.find(c[1])
+
+ }
+ }
+ if len(c) == 1 || len(c) == 2 && hasScriptOrRegion {
+ // Variant is preceded by a language.
+ specialized.add(v)
+ continue
+ }
+ // Variant is preceded by another variant.
+ specializedExtend.add(v)
+ prefix := c[0] + "-"
+ if hasScriptOrRegion {
+ prefix += c[1]
+ }
+ for _, p := range e.prefix {
+ // Verify that the prefix minus the last element is a prefix of the
+ // predecessor element.
+ i := strings.LastIndex(p, "-")
+ pred := b.registry[p[i+1:]]
+ if find(pred.prefix, p[:i]) < 0 {
+ log.Fatalf("prefix %q for variant %q not consistent with predecessor spec", p, v)
+ }
+ // The sorting used below does not work in the general case. It works
+ // if we assume that variants that may be followed by others only have
+ // prefixes of the same length. Verify this.
+ count := strings.Count(p[:i], "-")
+ for _, q := range pred.prefix {
+ if c := strings.Count(q, "-"); c != count {
+ log.Fatalf("variant %q preceding %q has a prefix %q of size %d; want %d", p[i+1:], v, q, c, count)
+ }
+ }
+ if !strings.HasPrefix(p, prefix) {
+ log.Fatalf("prefix %q of variant %q should start with %q", p, v, prefix)
+ }
+ }
+ }
+
+ // Sort extended variants.
+ a := specializedExtend.s
+ less := func(v, w string) bool {
+ // Sort by the maximum number of elements.
+ maxCount := func(s string) (max int) {
+ for _, p := range b.registry[s].prefix {
+ if c := strings.Count(p, "-"); c > max {
+ max = c
+ }
+ }
+ return
+ }
+ if cv, cw := maxCount(v), maxCount(w); cv != cw {
+ return cv < cw
+ }
+ // Sort by name as tie breaker.
+ return v < w
+ }
+ sort.Sort(funcSorter{less, sort.StringSlice(a)})
+ specializedExtend.frozen = true
+
+ // Create index from variant name to index.
+ variantIndex := make(map[string]uint8)
+ add := func(s []string) {
+ for _, v := range s {
+ variantIndex[v] = uint8(len(variantIndex))
+ }
+ }
+ add(specialized.slice())
+ add(specializedExtend.s)
+ numSpecialized := len(variantIndex)
+ add(generalized.slice())
+ if n := len(variantIndex); n > 255 {
+ log.Fatalf("maximum number of variants exceeded: was %d; want <= 255", n)
+ }
+ b.writeMap("variantIndex", variantIndex)
+ b.writeConst("variantNumSpecialized", numSpecialized)
+}
+
+func (b *builder) writeLanguageInfo() {
+}
+
+// writeLikelyData writes tables that are used both for finding parent relations and for
+// language matching. Each entry contains additional bits to indicate the status of the
+// data to know when it cannot be used for parent relations.
+func (b *builder) writeLikelyData() {
+ const (
+ isList = 1 << iota
+ scriptInFrom
+ regionInFrom
+ )
+ type ( // generated types
+ likelyScriptRegion struct {
+ region uint16
+ script uint8
+ flags uint8
+ }
+ likelyLangScript struct {
+ lang uint16
+ script uint8
+ flags uint8
+ }
+ likelyLangRegion struct {
+ lang uint16
+ region uint16
+ }
+ // likelyTag is used for getting likely tags for group regions, where
+ // the likely region might be a region contained in the group.
+ likelyTag struct {
+ lang uint16
+ region uint16
+ script uint8
+ }
+ )
+ var ( // generated variables
+ likelyRegionGroup = make([]likelyTag, len(b.groups))
+ likelyLang = make([]likelyScriptRegion, len(b.lang.s))
+ likelyRegion = make([]likelyLangScript, len(b.region.s))
+ likelyScript = make([]likelyLangRegion, len(b.script.s))
+ likelyLangList = []likelyScriptRegion{}
+ likelyRegionList = []likelyLangScript{}
+ )
+ type fromTo struct {
+ from, to []string
+ }
+ langToOther := map[int][]fromTo{}
+ regionToOther := map[int][]fromTo{}
+ for _, m := range b.supp.LikelySubtags.LikelySubtag {
+ from := strings.Split(m.From, "_")
+ to := strings.Split(m.To, "_")
+ if len(to) != 3 {
+ log.Fatalf("invalid number of subtags in %q: found %d, want 3", m.To, len(to))
+ }
+ if len(from) > 3 {
+ log.Fatalf("invalid number of subtags: found %d, want 1-3", len(from))
+ }
+ if from[0] != to[0] && from[0] != "und" {
+ log.Fatalf("unexpected language change in expansion: %s -> %s", from, to)
+ }
+ if len(from) == 3 {
+ if from[2] != to[2] {
+ log.Fatalf("unexpected region change in expansion: %s -> %s", from, to)
+ }
+ if from[0] != "und" {
+ log.Fatalf("unexpected fully specified from tag: %s -> %s", from, to)
+ }
+ }
+ if len(from) == 1 || from[0] != "und" {
+ id := 0
+ if from[0] != "und" {
+ id = b.lang.index(from[0])
+ }
+ langToOther[id] = append(langToOther[id], fromTo{from, to})
+ } else if len(from) == 2 && len(from[1]) == 4 {
+ sid := b.script.index(from[1])
+ likelyScript[sid].lang = uint16(b.langIndex(to[0]))
+ likelyScript[sid].region = uint16(b.region.index(to[2]))
+ } else {
+ r := b.region.index(from[len(from)-1])
+ if id, ok := b.groups[r]; ok {
+ if from[0] != "und" {
+ log.Fatalf("region changed unexpectedly: %s -> %s", from, to)
+ }
+ likelyRegionGroup[id].lang = uint16(b.langIndex(to[0]))
+ likelyRegionGroup[id].script = uint8(b.script.index(to[1]))
+ likelyRegionGroup[id].region = uint16(b.region.index(to[2]))
+ } else {
+ regionToOther[r] = append(regionToOther[r], fromTo{from, to})
+ }
+ }
+ }
+ b.writeType(likelyLangRegion{})
+ b.writeSlice("likelyScript", likelyScript)
+
+ for id := range b.lang.s {
+ list := langToOther[id]
+ if len(list) == 1 {
+ likelyLang[id].region = uint16(b.region.index(list[0].to[2]))
+ likelyLang[id].script = uint8(b.script.index(list[0].to[1]))
+ } else if len(list) > 1 {
+ likelyLang[id].flags = isList
+ likelyLang[id].region = uint16(len(likelyLangList))
+ likelyLang[id].script = uint8(len(list))
+ for _, x := range list {
+ flags := uint8(0)
+ if len(x.from) > 1 {
+ if x.from[1] == x.to[2] {
+ flags = regionInFrom
+ } else {
+ flags = scriptInFrom
+ }
+ }
+ likelyLangList = append(likelyLangList, likelyScriptRegion{
+ region: uint16(b.region.index(x.to[2])),
+ script: uint8(b.script.index(x.to[1])),
+ flags: flags,
+ })
+ }
+ }
+ }
+ // TODO: merge suppressScript data with this table.
+ b.writeType(likelyScriptRegion{})
+ b.writeSlice("likelyLang", likelyLang)
+ b.writeSlice("likelyLangList", likelyLangList)
+
+ for id := range b.region.s {
+ list := regionToOther[id]
+ if len(list) == 1 {
+ likelyRegion[id].lang = uint16(b.langIndex(list[0].to[0]))
+ likelyRegion[id].script = uint8(b.script.index(list[0].to[1]))
+ if len(list[0].from) > 2 {
+ likelyRegion[id].flags = scriptInFrom
+ }
+ } else if len(list) > 1 {
+ likelyRegion[id].flags = isList
+ likelyRegion[id].lang = uint16(len(likelyRegionList))
+ likelyRegion[id].script = uint8(len(list))
+ for i, x := range list {
+ if len(x.from) == 2 && i != 0 || i > 0 && len(x.from) != 3 {
+ log.Fatalf("unspecified script must be first in list: %v at %d", x.from, i)
+ }
+ x := likelyLangScript{
+ lang: uint16(b.langIndex(x.to[0])),
+ script: uint8(b.script.index(x.to[1])),
+ }
+ if len(list[0].from) > 2 {
+ x.flags = scriptInFrom
+ }
+ likelyRegionList = append(likelyRegionList, x)
+ }
+ }
+ }
+ b.writeType(likelyLangScript{})
+ b.writeSlice("likelyRegion", likelyRegion)
+ b.writeSlice("likelyRegionList", likelyRegionList)
+
+ b.writeType(likelyTag{})
+ b.writeSlice("likelyRegionGroup", likelyRegionGroup)
+}
+
+type mutualIntelligibility struct {
+ want, have uint16
+ conf uint8
+ oneway bool
+}
+
+type scriptIntelligibility struct {
+ lang uint16 // langID or 0 if *
+ want, have uint8
+ conf uint8
+}
+
+type sortByConf []mutualIntelligibility
+
+func (l sortByConf) Less(a, b int) bool {
+ return l[a].conf > l[b].conf
+}
+
+func (l sortByConf) Swap(a, b int) {
+ l[a], l[b] = l[b], l[a]
+}
+
+func (l sortByConf) Len() int {
+ return len(l)
+}
+
+// toConf converts a percentage value [0, 100] to a confidence class.
+func toConf(pct uint8) uint8 {
+ switch {
+ case pct == 100:
+ return 3 // Exact
+ case pct >= 90:
+ return 2 // High
+ case pct > 50:
+ return 1 // Low
+ default:
+ return 0 // No
+ }
+}
+
+// writeMatchData writes tables with languages and scripts for which there is
+// mutual intelligibility. The data is based on CLDR's languageMatching data.
+// Note that we use a different algorithm than the one defined by CLDR and that
+// we slightly modify the data. For example, we convert scores to confidence levels.
+// We also drop all region-related data as we use a different algorithm to
+// determine region equivalence.
+func (b *builder) writeMatchData() {
+ b.writeType(mutualIntelligibility{})
+ b.writeType(scriptIntelligibility{})
+ lm := b.supp.LanguageMatching.LanguageMatches
+ cldr.MakeSlice(&lm).SelectAnyOf("type", "written")
+
+ matchLang := []mutualIntelligibility{}
+ matchScript := []scriptIntelligibility{}
+ // Convert the languageMatch entries in lists keyed by desired language.
+ for _, m := range lm[0].LanguageMatch {
+ // Different versions of CLDR use different separators.
+ desired := strings.Replace(m.Desired, "-", "_", -1)
+ supported := strings.Replace(m.Supported, "-", "_", -1)
+ d := strings.Split(desired, "_")
+ s := strings.Split(supported, "_")
+ if len(d) != len(s) || len(d) > 2 {
+ // Skip all entries with regions and work around CLDR bug.
+ continue
+ }
+ pct, _ := strconv.ParseInt(m.Percent, 10, 8)
+ if len(d) == 2 && d[0] == s[0] && len(d[1]) == 4 {
+ // language-script pair.
+ lang := uint16(0)
+ if d[0] != "*" {
+ lang = uint16(b.langIndex(d[0]))
+ }
+ matchScript = append(matchScript, scriptIntelligibility{
+ lang: lang,
+ want: uint8(b.script.index(d[1])),
+ have: uint8(b.script.index(s[1])),
+ conf: toConf(uint8(pct)),
+ })
+ if m.Oneway != "true" {
+ matchScript = append(matchScript, scriptIntelligibility{
+ lang: lang,
+ want: uint8(b.script.index(s[1])),
+ have: uint8(b.script.index(d[1])),
+ conf: toConf(uint8(pct)),
+ })
+ }
+ } else if len(d) == 1 && d[0] != "*" {
+ if pct == 100 {
+ // nb == no is already handled by macro mapping. Check there
+ // really is only this case.
+ if d[0] != "no" || s[0] != "nb" {
+ log.Fatalf("unhandled equivalence %s == %s", s[0], d[0])
+ }
+ continue
+ }
+ matchLang = append(matchLang, mutualIntelligibility{
+ want: uint16(b.langIndex(d[0])),
+ have: uint16(b.langIndex(s[0])),
+ conf: uint8(pct),
+ oneway: m.Oneway == "true",
+ })
+ } else {
+ // TODO: Handle other mappings.
+ a := []string{"*;*", "*_*;*_*", "es_MX;es_419"}
+ s := strings.Join([]string{desired, supported}, ";")
+ if i := sort.SearchStrings(a, s); i == len(a) || a[i] != s {
+ log.Printf("%q not handled", s)
+ }
+ }
+ }
+ sort.Stable(sortByConf(matchLang))
+ // collapse percentage into confidence classes
+ for i, m := range matchLang {
+ matchLang[i].conf = toConf(m.conf)
+ }
+ b.writeSlice("matchLang", matchLang)
+ b.writeSlice("matchScript", matchScript)
+}
+
+func (b *builder) writeRegionInclusionData() {
+ var (
+ // mm holds for each group the set of groups with a distance of 1.
+ mm = make(map[int][]index)
+
+ // containment holds for each group the transitive closure of
+ // containment of other groups.
+ containment = make(map[index][]index)
+ )
+ for _, g := range b.supp.TerritoryContainment.Group {
+ group := b.region.index(g.Type)
+ groupIdx := b.groups[group]
+ for _, mem := range strings.Split(g.Contains, " ") {
+ r := b.region.index(mem)
+ mm[r] = append(mm[r], groupIdx)
+ if g, ok := b.groups[r]; ok {
+ mm[group] = append(mm[group], g)
+ containment[groupIdx] = append(containment[groupIdx], g)
+ }
+ }
+ }
+
+ regionContainment := make([]uint32, len(b.groups))
+ for _, g := range b.groups {
+ l := containment[g]
+
+ // Compute the transitive closure of containment.
+ for i := 0; i < len(l); i++ {
+ l = append(l, containment[l[i]]...)
+ }
+
+ // Compute the bitmask.
+ regionContainment[g] = 1 << g
+ for _, v := range l {
+ regionContainment[g] |= 1 << v
+ }
+ // log.Printf("%d: %X", g, regionContainment[g])
+ }
+ b.writeSlice("regionContainment", regionContainment)
+
+ regionInclusion := make([]uint8, len(b.region.s))
+ bvs := make(map[uint32]index)
+ // Make the first bitvector positions correspond with the groups.
+ for r, i := range b.groups {
+ bv := uint32(1 << i)
+ for _, g := range mm[r] {
+ bv |= 1 << g
+ }
+ bvs[bv] = i
+ regionInclusion[r] = uint8(bvs[bv])
+ }
+ for r := 1; r < len(b.region.s); r++ {
+ if _, ok := b.groups[r]; !ok {
+ bv := uint32(0)
+ for _, g := range mm[r] {
+ bv |= 1 << g
+ }
+ if bv == 0 {
+ // Pick the world for unspecified regions.
+ bv = 1 << b.groups[b.region.index("001")]
+ }
+ if _, ok := bvs[bv]; !ok {
+ bvs[bv] = index(len(bvs))
+ }
+ regionInclusion[r] = uint8(bvs[bv])
+ }
+ }
+ b.writeSlice("regionInclusion", regionInclusion)
+ regionInclusionBits := make([]uint32, len(bvs))
+ for k, v := range bvs {
+ regionInclusionBits[v] = uint32(k)
+ }
+ // Add bit vectors for increasingly large distances until a fixed point is reached.
+ regionInclusionNext := []uint8{}
+ for i := 0; i < len(regionInclusionBits); i++ {
+ bits := regionInclusionBits[i]
+ next := bits
+ for i := uint(0); i < uint(len(b.groups)); i++ {
+ if bits&(1<<i) != 0 {
+ next |= regionInclusionBits[i]
+ }
+ }
+ if _, ok := bvs[next]; !ok {
+ bvs[next] = index(len(bvs))
+ regionInclusionBits = append(regionInclusionBits, next)
+ }
+ regionInclusionNext = append(regionInclusionNext, uint8(bvs[next]))
+ }
+ b.writeSlice("regionInclusionBits", regionInclusionBits)
+ b.writeSlice("regionInclusionNext", regionInclusionNext)
+}
+
+type parentRel struct {
+ lang uint16
+ script uint8
+ maxScript uint8
+ toRegion uint16
+ fromRegion []uint16
+}
+
+func (b *builder) writeParents() {
+ b.writeType(parentRel{})
+
+ parents := []parentRel{}
+
+ // Construct parent overrides.
+ n := 0
+ for _, p := range b.data.Supplemental().ParentLocales.ParentLocale {
+ // Skipping non-standard scripts to root is implemented using addTags.
+ if p.Parent == "root" {
+ continue
+ }
+
+ sub := strings.Split(p.Parent, "_")
+ parent := parentRel{lang: b.langIndex(sub[0])}
+ if len(sub) == 2 {
+ // TODO: check that all undefined scripts are indeed Latn in these
+ // cases.
+ parent.maxScript = uint8(b.script.index("Latn"))
+ parent.toRegion = uint16(b.region.index(sub[1]))
+ } else {
+ parent.script = uint8(b.script.index(sub[1]))
+ parent.maxScript = parent.script
+ parent.toRegion = uint16(b.region.index(sub[2]))
+ }
+ for _, c := range strings.Split(p.Locales, " ") {
+ region := b.region.index(c[strings.LastIndex(c, "_")+1:])
+ parent.fromRegion = append(parent.fromRegion, uint16(region))
+ }
+ parents = append(parents, parent)
+ n += len(parent.fromRegion)
+ }
+ b.writeSliceAddSize("parents", n*2, parents)
+}
+
+func main() {
+ gen.Init()
+
+ gen.Repackage("gen_common.go", "common.go", "language")
+
+ w := gen.NewCodeWriter()
+ defer w.WriteGoFile("tables.go", "language")
+
+ fmt.Fprintln(w, `import "golang.org/x/text/internal/tag"`)
+
+ b := newBuilder(w)
+ gen.WriteCLDRVersion(w)
+
+ b.parseIndices()
+ b.writeType(fromTo{})
+ b.writeLanguage()
+ b.writeScript()
+ b.writeRegion()
+ b.writeVariant()
+ // TODO: b.writeLocale()
+ b.computeRegionGroups()
+ b.writeLikelyData()
+ b.writeMatchData()
+ b.writeRegionInclusionData()
+ b.writeParents()
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/match.go b/Godeps/_workspace/src/golang.org/x/text/language/match.go
new file mode 100644
index 000000000..eec72bcc1
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/match.go
@@ -0,0 +1,840 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package language
+
+import "errors"
+
+// Matcher is the interface that wraps the Match method.
+//
+// Match returns the best match for any of the given tags, along with
+// a unique index associated with the returned tag and a confidence
+// score.
+type Matcher interface {
+ Match(t ...Tag) (tag Tag, index int, c Confidence)
+}
+
+// Comprehends reports the confidence score for a speaker of a given language
+// to being able to comprehend the written form of an alternative language.
+func Comprehends(speaker, alternative Tag) Confidence {
+ _, _, c := NewMatcher([]Tag{alternative}).Match(speaker)
+ return c
+}
+
+// NewMatcher returns a Matcher that matches an ordered list of preferred tags
+// against a list of supported tags based on written intelligibility, closeness
+// of dialect, equivalence of subtags and various other rules. It is initialized
+// with the list of supported tags. The first element is used as the default
+// value in case no match is found.
+//
+// Its Match method matches the first of the given Tags to reach a certain
+// confidence threshold. The tags passed to Match should therefore be specified
+// in order of preference. Extensions are ignored for matching.
+//
+// The index returned by the Match method corresponds to the index of the
+// matched tag in t, but is augmented with the Unicode extension ('u')of the
+// corresponding preferred tag. This allows user locale options to be passed
+// transparently.
+func NewMatcher(t []Tag) Matcher {
+ return newMatcher(t)
+}
+
+func (m *matcher) Match(want ...Tag) (t Tag, index int, c Confidence) {
+ match, w, c := m.getBest(want...)
+ if match == nil {
+ t = m.default_.tag
+ } else {
+ t, index = match.tag, match.index
+ }
+ // Copy options from the user-provided tag into the result tag. This is hard
+ // to do after the fact, so we do it here.
+ // TODO: consider also adding in variants that are compatible with the
+ // matched language.
+ // TODO: Add back region if it is non-ambiguous? Or create another tag to
+ // preserve the region?
+ if u, ok := w.Extension('u'); ok {
+ t, _ = Raw.Compose(t, u)
+ }
+ return t, index, c
+}
+
+type scriptRegionFlags uint8
+
+const (
+ isList = 1 << iota
+ scriptInFrom
+ regionInFrom
+)
+
+func (t *Tag) setUndefinedLang(id langID) {
+ if t.lang == 0 {
+ t.lang = id
+ }
+}
+
+func (t *Tag) setUndefinedScript(id scriptID) {
+ if t.script == 0 {
+ t.script = id
+ }
+}
+
+func (t *Tag) setUndefinedRegion(id regionID) {
+ if t.region == 0 || t.region.contains(id) {
+ t.region = id
+ }
+}
+
+// ErrMissingLikelyTagsData indicates no information was available
+// to compute likely values of missing tags.
+var ErrMissingLikelyTagsData = errors.New("missing likely tags data")
+
+// addLikelySubtags sets subtags to their most likely value, given the locale.
+// In most cases this means setting fields for unknown values, but in some
+// cases it may alter a value. It returns a ErrMissingLikelyTagsData error
+// if the given locale cannot be expanded.
+func (t Tag) addLikelySubtags() (Tag, error) {
+ id, err := addTags(t)
+ if err != nil {
+ return t, err
+ } else if id.equalTags(t) {
+ return t, nil
+ }
+ id.remakeString()
+ return id, nil
+}
+
+// specializeRegion attempts to specialize a group region.
+func specializeRegion(t *Tag) bool {
+ if i := regionInclusion[t.region]; i < nRegionGroups {
+ x := likelyRegionGroup[i]
+ if langID(x.lang) == t.lang && scriptID(x.script) == t.script {
+ t.region = regionID(x.region)
+ }
+ return true
+ }
+ return false
+}
+
+func addTags(t Tag) (Tag, error) {
+ // We leave private use identifiers alone.
+ if t.private() {
+ return t, nil
+ }
+ if t.script != 0 && t.region != 0 {
+ if t.lang != 0 {
+ // already fully specified
+ specializeRegion(&t)
+ return t, nil
+ }
+ // Search matches for und-script-region. Note that for these cases
+ // region will never be a group so there is no need to check for this.
+ list := likelyRegion[t.region : t.region+1]
+ if x := list[0]; x.flags&isList != 0 {
+ list = likelyRegionList[x.lang : x.lang+uint16(x.script)]
+ }
+ for _, x := range list {
+ // Deviating from the spec. See match_test.go for details.
+ if scriptID(x.script) == t.script {
+ t.setUndefinedLang(langID(x.lang))
+ return t, nil
+ }
+ }
+ }
+ if t.lang != 0 {
+ // Search matches for lang-script and lang-region, where lang != und.
+ if t.lang < langNoIndexOffset {
+ x := likelyLang[t.lang]
+ if x.flags&isList != 0 {
+ list := likelyLangList[x.region : x.region+uint16(x.script)]
+ if t.script != 0 {
+ for _, x := range list {
+ if scriptID(x.script) == t.script && x.flags&scriptInFrom != 0 {
+ t.setUndefinedRegion(regionID(x.region))
+ return t, nil
+ }
+ }
+ } else if t.region != 0 {
+ count := 0
+ goodScript := true
+ tt := t
+ for _, x := range list {
+ // We visit all entries for which the script was not
+ // defined, including the ones where the region was not
+ // defined. This allows for proper disambiguation within
+ // regions.
+ if x.flags&scriptInFrom == 0 && t.region.contains(regionID(x.region)) {
+ tt.region = regionID(x.region)
+ tt.setUndefinedScript(scriptID(x.script))
+ goodScript = goodScript && tt.script == scriptID(x.script)
+ count++
+ }
+ }
+ if count == 1 {
+ return tt, nil
+ }
+ // Even if we fail to find a unique Region, we might have
+ // an unambiguous script.
+ if goodScript {
+ t.script = tt.script
+ }
+ }
+ }
+ }
+ } else {
+ // Search matches for und-script.
+ if t.script != 0 {
+ x := likelyScript[t.script]
+ if x.region != 0 {
+ t.setUndefinedRegion(regionID(x.region))
+ t.setUndefinedLang(langID(x.lang))
+ return t, nil
+ }
+ }
+ // Search matches for und-region. If und-script-region exists, it would
+ // have been found earlier.
+ if t.region != 0 {
+ if i := regionInclusion[t.region]; i < nRegionGroups {
+ x := likelyRegionGroup[i]
+ if x.region != 0 {
+ t.setUndefinedLang(langID(x.lang))
+ t.setUndefinedScript(scriptID(x.script))
+ t.region = regionID(x.region)
+ }
+ } else {
+ x := likelyRegion[t.region]
+ if x.flags&isList != 0 {
+ x = likelyRegionList[x.lang]
+ }
+ if x.script != 0 && x.flags != scriptInFrom {
+ t.setUndefinedLang(langID(x.lang))
+ t.setUndefinedScript(scriptID(x.script))
+ return t, nil
+ }
+ }
+ }
+ }
+
+ // Search matches for lang.
+ if t.lang < langNoIndexOffset {
+ x := likelyLang[t.lang]
+ if x.flags&isList != 0 {
+ x = likelyLangList[x.region]
+ }
+ if x.region != 0 {
+ t.setUndefinedScript(scriptID(x.script))
+ t.setUndefinedRegion(regionID(x.region))
+ }
+ specializeRegion(&t)
+ if t.lang == 0 {
+ t.lang = _en // default language
+ }
+ return t, nil
+ }
+ return t, ErrMissingLikelyTagsData
+}
+
+func (t *Tag) setTagsFrom(id Tag) {
+ t.lang = id.lang
+ t.script = id.script
+ t.region = id.region
+}
+
+// minimize removes the region or script subtags from t such that
+// t.addLikelySubtags() == t.minimize().addLikelySubtags().
+func (t Tag) minimize() (Tag, error) {
+ t, err := minimizeTags(t)
+ if err != nil {
+ return t, err
+ }
+ t.remakeString()
+ return t, nil
+}
+
+// minimizeTags mimics the behavior of the ICU 51 C implementation.
+func minimizeTags(t Tag) (Tag, error) {
+ if t.equalTags(und) {
+ return t, nil
+ }
+ max, err := addTags(t)
+ if err != nil {
+ return t, err
+ }
+ for _, id := range [...]Tag{
+ {lang: t.lang},
+ {lang: t.lang, region: t.region},
+ {lang: t.lang, script: t.script},
+ } {
+ if x, err := addTags(id); err == nil && max.equalTags(x) {
+ t.setTagsFrom(id)
+ break
+ }
+ }
+ return t, nil
+}
+
+// Tag Matching
+// CLDR defines an algorithm for finding the best match between two sets of language
+// tags. The basic algorithm defines how to score a possible match and then find
+// the match with the best score
+// (see http://www.unicode.org/reports/tr35/#LanguageMatching).
+// Using scoring has several disadvantages. The scoring obfuscates the importance of
+// the various factors considered, making the algorithm harder to understand. Using
+// scoring also requires the full score to be computed for each pair of tags.
+//
+// We will use a different algorithm which aims to have the following properties:
+// - clarity on the precedence of the various selection factors, and
+// - improved performance by allowing early termination of a comparison.
+//
+// Matching algorithm (overview)
+// Input:
+// - supported: a set of supported tags
+// - default: the default tag to return in case there is no match
+// - desired: list of desired tags, ordered by preference, starting with
+// the most-preferred.
+//
+// Algorithm:
+// 1) Set the best match to the lowest confidence level
+// 2) For each tag in "desired":
+// a) For each tag in "supported":
+// 1) compute the match between the two tags.
+// 2) if the match is better than the previous best match, replace it
+// with the new match. (see next section)
+// b) if the current best match is above a certain threshold, return this
+// match without proceeding to the next tag in "desired". [See Note 1]
+// 3) If the best match so far is below a certain threshold, return "default".
+//
+// Ranking:
+// We use two phases to determine whether one pair of tags are a better match
+// than another pair of tags. First, we determine a rough confidence level. If the
+// levels are different, the one with the highest confidence wins.
+// Second, if the rough confidence levels are identical, we use a set of tie-breaker
+// rules.
+//
+// The confidence level of matching a pair of tags is determined by finding the
+// lowest confidence level of any matches of the corresponding subtags (the
+// result is deemed as good as its weakest link).
+// We define the following levels:
+// Exact - An exact match of a subtag, before adding likely subtags.
+// MaxExact - An exact match of a subtag, after adding likely subtags.
+// [See Note 2].
+// High - High level of mutual intelligibility between different subtag
+// variants.
+// Low - Low level of mutual intelligibility between different subtag
+// variants.
+// No - No mutual intelligibility.
+//
+// The following levels can occur for each type of subtag:
+// Base: Exact, MaxExact, High, Low, No
+// Script: Exact, MaxExact [see Note 3], Low, No
+// Region: Exact, MaxExact, High
+// Variant: Exact, High
+// Private: Exact, No
+//
+// Any result with a confidence level of Low or higher is deemed a possible match.
+// Once a desired tag matches any of the supported tags with a level of MaxExact
+// or higher, the next desired tag is not considered (see Step 2.b).
+// Note that CLDR provides languageMatching data that defines close equivalence
+// classes for base languages, scripts and regions.
+//
+// Tie-breaking
+// If we get the same confidence level for two matches, we apply a sequence of
+// tie-breaking rules. The first that succeeds defines the result. The rules are
+// applied in the following order.
+// 1) Original language was defined and was identical.
+// 2) Original region was defined and was identical.
+// 3) Distance between two maximized regions was the smallest.
+// 4) Original script was defined and was identical.
+// 5) Distance from want tag to have tag using the parent relation [see Note 5.]
+// If there is still no winner after these rules are applied, the first match
+// found wins.
+//
+// Notes:
+// [1] Note that even if we may not have a perfect match, if a match is above a
+// certain threshold, it is considered a better match than any other match
+// to a tag later in the list of preferred language tags.
+// [2] In practice, as matching of Exact is done in a separate phase from
+// matching the other levels, we reuse the Exact level to mean MaxExact in
+// the second phase. As a consequence, we only need the levels defined by
+// the Confidence type. The MaxExact confidence level is mapped to High in
+// the public API.
+// [3] We do not differentiate between maximized script values that were derived
+// from suppressScript versus most likely tag data. We determined that in
+// ranking the two, one ranks just after the other. Moreover, the two cannot
+// occur concurrently. As a consequence, they are identical for practical
+// purposes.
+// [4] In case of deprecated, macro-equivalents and legacy mappings, we assign
+// the MaxExact level to allow iw vs he to still be a closer match than
+// en-AU vs en-US, for example.
+// [5] In CLDR a locale inherits fields that are unspecified for this locale
+// from its parent. Therefore, if a locale is a parent of another locale,
+// it is a strong measure for closeness, especially when no other tie
+// breaker rule applies. One could also argue it is inconsistent, for
+// example, when pt-AO matches pt (which CLDR equates with pt-BR), even
+// though its parent is pt-PT according to the inheritance rules.
+//
+// Implementation Details:
+// There are several performance considerations worth pointing out. Most notably,
+// we preprocess as much as possible (within reason) at the time of creation of a
+// matcher. This includes:
+// - creating a per-language map, which includes data for the raw base language
+// and its canonicalized variant (if applicable),
+// - expanding entries for the equivalence classes defined in CLDR's
+// languageMatch data.
+// The per-language map ensures that typically only a very small number of tags
+// need to be considered. The pre-expansion of canonicalized subtags and
+// equivalence classes reduces the amount of map lookups that need to be done at
+// runtime.
+
+// matcher keeps a set of supported language tags, indexed by language.
+type matcher struct {
+ default_ *haveTag
+ index map[langID]*matchHeader
+ passSettings bool
+}
+
+// matchHeader has the lists of tags for exact matches and matches based on
+// maximized and canonicalized tags for a given language.
+type matchHeader struct {
+ exact []haveTag
+ max []haveTag
+}
+
+// haveTag holds a supported Tag and its maximized script and region. The maximized
+// or canonicalized language is not stored as it is not needed during matching.
+type haveTag struct {
+ tag Tag
+
+ // index of this tag in the original list of supported tags.
+ index int
+
+ // conf is the maximum confidence that can result from matching this haveTag.
+ // When conf < Exact this means it was inserted after applying a CLDR equivalence rule.
+ conf Confidence
+
+ // Maximized region and script.
+ maxRegion regionID
+ maxScript scriptID
+
+ // altScript may be checked as an alternative match to maxScript. If altScript
+ // matches, the confidence level for this match is Low. Theoretically there
+ // could be multiple alternative scripts. This does not occur in practice.
+ altScript scriptID
+
+ // nextMax is the index of the next haveTag with the same maximized tags.
+ nextMax uint16
+}
+
+func makeHaveTag(tag Tag, index int) (haveTag, langID) {
+ max := tag
+ if tag.lang != 0 {
+ max, _ = max.canonicalize(All)
+ max, _ = addTags(max)
+ max.remakeString()
+ }
+ return haveTag{tag, index, Exact, max.region, max.script, altScript(max.lang, max.script), 0}, max.lang
+}
+
+// altScript returns an alternative script that may match the given script with
+// a low confidence. At the moment, the langMatch data allows for at most one
+// script to map to another and we rely on this to keep the code simple.
+func altScript(l langID, s scriptID) scriptID {
+ for _, alt := range matchScript {
+ if (alt.lang == 0 || langID(alt.lang) == l) && scriptID(alt.have) == s {
+ return scriptID(alt.want)
+ }
+ }
+ return 0
+}
+
+// addIfNew adds a haveTag to the list of tags only if it is a unique tag.
+// Tags that have the same maximized values are linked by index.
+func (h *matchHeader) addIfNew(n haveTag, exact bool) {
+ // Don't add new exact matches.
+ for _, v := range h.exact {
+ if v.tag.equalsRest(n.tag) {
+ return
+ }
+ }
+ if exact {
+ h.exact = append(h.exact, n)
+ }
+ // Allow duplicate maximized tags, but create a linked list to allow quickly
+ // comparing the equivalents and bail out.
+ for i, v := range h.max {
+ if v.maxScript == n.maxScript &&
+ v.maxRegion == n.maxRegion &&
+ v.tag.variantOrPrivateTagStr() == n.tag.variantOrPrivateTagStr() {
+ for h.max[i].nextMax != 0 {
+ i = int(h.max[i].nextMax)
+ }
+ h.max[i].nextMax = uint16(len(h.max))
+ break
+ }
+ }
+ h.max = append(h.max, n)
+}
+
+// header returns the matchHeader for the given language. It creates one if
+// it doesn't already exist.
+func (m *matcher) header(l langID) *matchHeader {
+ if h := m.index[l]; h != nil {
+ return h
+ }
+ h := &matchHeader{}
+ m.index[l] = h
+ return h
+}
+
+// newMatcher builds an index for the given supported tags and returns it as
+// a matcher. It also expands the index by considering various equivalence classes
+// for a given tag.
+func newMatcher(supported []Tag) *matcher {
+ m := &matcher{
+ index: make(map[langID]*matchHeader),
+ }
+ if len(supported) == 0 {
+ m.default_ = &haveTag{}
+ return m
+ }
+ // Add supported languages to the index. Add exact matches first to give
+ // them precedence.
+ for i, tag := range supported {
+ pair, _ := makeHaveTag(tag, i)
+ m.header(tag.lang).addIfNew(pair, true)
+ }
+ m.default_ = &m.header(supported[0].lang).exact[0]
+ for i, tag := range supported {
+ pair, max := makeHaveTag(tag, i)
+ if max != tag.lang {
+ m.header(max).addIfNew(pair, false)
+ }
+ }
+
+ // update is used to add indexes in the map for equivalent languages.
+ // If force is true, the update will also apply to derived entries. To
+ // avoid applying a "transitive closure", use false.
+ update := func(want, have uint16, conf Confidence, force bool) {
+ if hh := m.index[langID(have)]; hh != nil {
+ if !force && len(hh.exact) == 0 {
+ return
+ }
+ hw := m.header(langID(want))
+ for _, v := range hh.max {
+ if conf < v.conf {
+ v.conf = conf
+ }
+ v.nextMax = 0 // this value needs to be recomputed
+ if v.altScript != 0 {
+ v.altScript = altScript(langID(want), v.maxScript)
+ }
+ hw.addIfNew(v, conf == Exact && len(hh.exact) > 0)
+ }
+ }
+ }
+
+ // Add entries for languages with mutual intelligibility as defined by CLDR's
+ // languageMatch data.
+ for _, ml := range matchLang {
+ update(ml.want, ml.have, Confidence(ml.conf), false)
+ if !ml.oneway {
+ update(ml.have, ml.want, Confidence(ml.conf), false)
+ }
+ }
+
+ // Add entries for possible canonicalizations. This is an optimization to
+ // ensure that only one map lookup needs to be done at runtime per desired tag.
+ // First we match deprecated equivalents. If they are perfect equivalents
+ // (their canonicalization simply substitutes a different language code, but
+ // nothing else), the match confidence is Exact, otherwise it is High.
+ for i, lm := range langAliasMap {
+ if lm.from == _sh {
+ continue
+ }
+
+ // If deprecated codes match and there is no fiddling with the script or
+ // or region, we consider it an exact match.
+ conf := Exact
+ if langAliasTypes[i] != langMacro {
+ if !isExactEquivalent(langID(lm.from)) {
+ conf = High
+ }
+ update(lm.to, lm.from, conf, true)
+ }
+ update(lm.from, lm.to, conf, true)
+ }
+ return m
+}
+
+// getBest gets the best matching tag in m for any of the given tags, taking into
+// account the order of preference of the given tags.
+func (m *matcher) getBest(want ...Tag) (got *haveTag, orig Tag, c Confidence) {
+ best := bestMatch{}
+ for _, w := range want {
+ var max Tag
+ // Check for exact match first.
+ h := m.index[w.lang]
+ if w.lang != 0 {
+ // Base language is defined.
+ if h == nil {
+ continue
+ }
+ for i := range h.exact {
+ have := &h.exact[i]
+ if have.tag.equalsRest(w) {
+ return have, w, Exact
+ }
+ }
+ max, _ = w.canonicalize(Legacy | Deprecated)
+ max, _ = addTags(max)
+ } else {
+ // Base language is not defined.
+ if h != nil {
+ for i := range h.exact {
+ have := &h.exact[i]
+ if have.tag.equalsRest(w) {
+ return have, w, Exact
+ }
+ }
+ }
+ if w.script == 0 && w.region == 0 {
+ // We skip all tags matching und for approximate matching, including
+ // private tags.
+ continue
+ }
+ max, _ = addTags(w)
+ if h = m.index[max.lang]; h == nil {
+ continue
+ }
+ }
+ // Check for match based on maximized tag.
+ for i := range h.max {
+ have := &h.max[i]
+ best.update(have, w, max.script, max.region)
+ if best.conf == Exact {
+ for have.nextMax != 0 {
+ have = &h.max[have.nextMax]
+ best.update(have, w, max.script, max.region)
+ }
+ return best.have, best.want, High
+ }
+ }
+ }
+ if best.conf <= No {
+ if len(want) != 0 {
+ return nil, want[0], No
+ }
+ return nil, Tag{}, No
+ }
+ return best.have, best.want, best.conf
+}
+
+// bestMatch accumulates the best match so far.
+type bestMatch struct {
+ have *haveTag
+ want Tag
+ conf Confidence
+ // Cached results from applying tie-breaking rules.
+ origLang bool
+ origReg bool
+ regDist uint8
+ origScript bool
+ parentDist uint8 // 255 if have is not an ancestor of want tag.
+}
+
+// update updates the existing best match if the new pair is considered to be a
+// better match.
+// To determine if the given pair is a better match, it first computes the rough
+// confidence level. If this surpasses the current match, it will replace it and
+// update the tie-breaker rule cache. If there is a tie, it proceeds with applying
+// a series of tie-breaker rules. If there is no conclusive winner after applying
+// the tie-breaker rules, it leaves the current match as the preferred match.
+func (m *bestMatch) update(have *haveTag, tag Tag, maxScript scriptID, maxRegion regionID) {
+ // Bail if the maximum attainable confidence is below that of the current best match.
+ c := have.conf
+ if c < m.conf {
+ return
+ }
+ if have.maxScript != maxScript {
+ // There is usually very little comprehension between different scripts.
+ // In a few cases there may still be Low comprehension. This possibility is
+ // pre-computed and stored in have.altScript.
+ if Low < m.conf || have.altScript != maxScript {
+ return
+ }
+ c = Low
+ } else if have.maxRegion != maxRegion {
+ // There is usually a small difference between languages across regions.
+ // We use the region distance (below) to disambiguate between equal matches.
+ if High < c {
+ c = High
+ }
+ }
+
+ // We store the results of the computations of the tie-breaker rules along
+ // with the best match. There is no need to do the checks once we determine
+ // we have a winner, but we do still need to do the tie-breaker computations.
+ // We use "beaten" to keep track if we still need to do the checks.
+ beaten := false // true if the new pair defeats the current one.
+ if c != m.conf {
+ if c < m.conf {
+ return
+ }
+ beaten = true
+ }
+
+ // Tie-breaker rules:
+ // We prefer if the pre-maximized language was specified and identical.
+ origLang := have.tag.lang == tag.lang && tag.lang != 0
+ if !beaten && m.origLang != origLang {
+ if m.origLang {
+ return
+ }
+ beaten = true
+ }
+
+ // We prefer if the pre-maximized region was specified and identical.
+ origReg := have.tag.region == tag.region && tag.region != 0
+ if !beaten && m.origReg != origReg {
+ if m.origReg {
+ return
+ }
+ beaten = true
+ }
+
+ // Next we prefer smaller distances between regions, as defined by regionDist.
+ regDist := regionDist(have.maxRegion, maxRegion, tag.lang)
+ if !beaten && m.regDist != regDist {
+ if regDist > m.regDist {
+ return
+ }
+ beaten = true
+ }
+
+ // Next we prefer if the pre-maximized script was specified and identical.
+ origScript := have.tag.script == tag.script && tag.script != 0
+ if !beaten && m.origScript != origScript {
+ if m.origScript {
+ return
+ }
+ beaten = true
+ }
+
+ // Finally we prefer tags which have a closer parent relationship.
+ parentDist := parentDistance(have.tag.region, tag)
+ if !beaten && m.parentDist != parentDist {
+ if parentDist > m.parentDist {
+ return
+ }
+ beaten = true
+ }
+
+ // Update m to the newly found best match.
+ if beaten {
+ m.have = have
+ m.want = tag
+ m.conf = c
+ m.origLang = origLang
+ m.origReg = origReg
+ m.origScript = origScript
+ m.regDist = regDist
+ m.parentDist = parentDist
+ }
+}
+
+// parentDistance returns the number of times Parent must be called before the
+// regions match. It is assumed that it has already been checked that lang and
+// script are identical. If haveRegion does not occur in the ancestor chain of
+// tag, it returns 255.
+func parentDistance(haveRegion regionID, tag Tag) uint8 {
+ p := tag.Parent()
+ d := uint8(1)
+ for haveRegion != p.region {
+ if p.region == 0 {
+ return 255
+ }
+ p = p.Parent()
+ d++
+ }
+ return d
+}
+
+// regionDist wraps regionDistance with some exceptions to the algorithmic distance.
+func regionDist(a, b regionID, lang langID) uint8 {
+ if lang == _en {
+ // Two variants of non-US English are close to each other, regardless of distance.
+ if a != _US && b != _US {
+ return 2
+ }
+ }
+ return uint8(regionDistance(a, b))
+}
+
+// regionDistance computes the distance between two regions based on the
+// distance in the graph of region containments as defined in CLDR. It iterates
+// over increasingly inclusive sets of groups, represented as bit vectors, until
+// the source bit vector has bits in common with the destination vector.
+func regionDistance(a, b regionID) int {
+ if a == b {
+ return 0
+ }
+ p, q := regionInclusion[a], regionInclusion[b]
+ if p < nRegionGroups {
+ p, q = q, p
+ }
+ set := regionInclusionBits
+ if q < nRegionGroups && set[p]&(1<<q) != 0 {
+ return 1
+ }
+ d := 2
+ for goal := set[q]; set[p]&goal == 0; p = regionInclusionNext[p] {
+ d++
+ }
+ return d
+}
+
+func (t Tag) variants() string {
+ if t.pVariant == 0 {
+ return ""
+ }
+ return t.str[t.pVariant:t.pExt]
+}
+
+// variantOrPrivateTagStr returns variants or private use tags.
+func (t Tag) variantOrPrivateTagStr() string {
+ if t.pExt > 0 {
+ return t.str[t.pVariant:t.pExt]
+ }
+ return t.str[t.pVariant:]
+}
+
+// equalsRest compares everything except the language.
+func (a Tag) equalsRest(b Tag) bool {
+ // TODO: don't include extensions in this comparison. To do this efficiently,
+ // though, we should handle private tags separately.
+ return a.script == b.script && a.region == b.region && a.variantOrPrivateTagStr() == b.variantOrPrivateTagStr()
+}
+
+// isExactEquivalent returns true if canonicalizing the language will not alter
+// the script or region of a tag.
+func isExactEquivalent(l langID) bool {
+ for _, o := range notEquivalent {
+ if o == l {
+ return false
+ }
+ }
+ return true
+}
+
+var notEquivalent []langID
+
+func init() {
+ // Create a list of all languages for which canonicalization may alter the
+ // script or region.
+ for _, lm := range langAliasMap {
+ tag := Tag{lang: langID(lm.from)}
+ if tag, _ = tag.canonicalize(All); tag.script != 0 || tag.region != 0 {
+ notEquivalent = append(notEquivalent, langID(lm.from))
+ }
+ }
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/parse.go b/Godeps/_workspace/src/golang.org/x/text/language/parse.go
new file mode 100644
index 000000000..cfa28f56e
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/parse.go
@@ -0,0 +1,859 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package language
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "sort"
+ "strconv"
+ "strings"
+
+ "golang.org/x/text/internal/tag"
+)
+
+// isAlpha returns true if the byte is not a digit.
+// b must be an ASCII letter or digit.
+func isAlpha(b byte) bool {
+ return b > '9'
+}
+
+// isAlphaNum returns true if the string contains only ASCII letters or digits.
+func isAlphaNum(s []byte) bool {
+ for _, c := range s {
+ if !('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9') {
+ return false
+ }
+ }
+ return true
+}
+
+// errSyntax is returned by any of the parsing functions when the
+// input is not well-formed, according to BCP 47.
+// TODO: return the position at which the syntax error occurred?
+var errSyntax = errors.New("language: tag is not well-formed")
+
+// ValueError is returned by any of the parsing functions when the
+// input is well-formed but the respective subtag is not recognized
+// as a valid value.
+type ValueError struct {
+ v [8]byte
+}
+
+func mkErrInvalid(s []byte) error {
+ var e ValueError
+ copy(e.v[:], s)
+ return e
+}
+
+func (e ValueError) tag() []byte {
+ n := bytes.IndexByte(e.v[:], 0)
+ if n == -1 {
+ n = 8
+ }
+ return e.v[:n]
+}
+
+// Error implements the error interface.
+func (e ValueError) Error() string {
+ return fmt.Sprintf("language: subtag %q is well-formed but unknown", e.tag())
+}
+
+// Subtag returns the subtag for which the error occurred.
+func (e ValueError) Subtag() string {
+ return string(e.tag())
+}
+
+// scanner is used to scan BCP 47 tokens, which are separated by _ or -.
+type scanner struct {
+ b []byte
+ bytes [max99thPercentileSize]byte
+ token []byte
+ start int // start position of the current token
+ end int // end position of the current token
+ next int // next point for scan
+ err error
+ done bool
+}
+
+func makeScannerString(s string) scanner {
+ scan := scanner{}
+ if len(s) <= len(scan.bytes) {
+ scan.b = scan.bytes[:copy(scan.bytes[:], s)]
+ } else {
+ scan.b = []byte(s)
+ }
+ scan.init()
+ return scan
+}
+
+// makeScanner returns a scanner using b as the input buffer.
+// b is not copied and may be modified by the scanner routines.
+func makeScanner(b []byte) scanner {
+ scan := scanner{b: b}
+ scan.init()
+ return scan
+}
+
+func (s *scanner) init() {
+ for i, c := range s.b {
+ if c == '_' {
+ s.b[i] = '-'
+ }
+ }
+ s.scan()
+}
+
+// restToLower converts the string between start and end to lower case.
+func (s *scanner) toLower(start, end int) {
+ for i := start; i < end; i++ {
+ c := s.b[i]
+ if 'A' <= c && c <= 'Z' {
+ s.b[i] += 'a' - 'A'
+ }
+ }
+}
+
+func (s *scanner) setError(e error) {
+ if s.err == nil || (e == errSyntax && s.err != errSyntax) {
+ s.err = e
+ }
+}
+
+// resizeRange shrinks or grows the array at position oldStart such that
+// a new string of size newSize can fit between oldStart and oldEnd.
+// Sets the scan point to after the resized range.
+func (s *scanner) resizeRange(oldStart, oldEnd, newSize int) {
+ s.start = oldStart
+ if end := oldStart + newSize; end != oldEnd {
+ diff := end - oldEnd
+ if end < cap(s.b) {
+ b := make([]byte, len(s.b)+diff)
+ copy(b, s.b[:oldStart])
+ copy(b[end:], s.b[oldEnd:])
+ s.b = b
+ } else {
+ s.b = append(s.b[end:], s.b[oldEnd:]...)
+ }
+ s.next = end + (s.next - s.end)
+ s.end = end
+ }
+}
+
+// replace replaces the current token with repl.
+func (s *scanner) replace(repl string) {
+ s.resizeRange(s.start, s.end, len(repl))
+ copy(s.b[s.start:], repl)
+}
+
+// gobble removes the current token from the input.
+// Caller must call scan after calling gobble.
+func (s *scanner) gobble(e error) {
+ s.setError(e)
+ if s.start == 0 {
+ s.b = s.b[:+copy(s.b, s.b[s.next:])]
+ s.end = 0
+ } else {
+ s.b = s.b[:s.start-1+copy(s.b[s.start-1:], s.b[s.end:])]
+ s.end = s.start - 1
+ }
+ s.next = s.start
+}
+
+// deleteRange removes the given range from s.b before the current token.
+func (s *scanner) deleteRange(start, end int) {
+ s.setError(errSyntax)
+ s.b = s.b[:start+copy(s.b[start:], s.b[end:])]
+ diff := end - start
+ s.next -= diff
+ s.start -= diff
+ s.end -= diff
+}
+
+// scan parses the next token of a BCP 47 string. Tokens that are larger
+// than 8 characters or include non-alphanumeric characters result in an error
+// and are gobbled and removed from the output.
+// It returns the end position of the last token consumed.
+func (s *scanner) scan() (end int) {
+ end = s.end
+ s.token = nil
+ for s.start = s.next; s.next < len(s.b); {
+ i := bytes.IndexByte(s.b[s.next:], '-')
+ if i == -1 {
+ s.end = len(s.b)
+ s.next = len(s.b)
+ i = s.end - s.start
+ } else {
+ s.end = s.next + i
+ s.next = s.end + 1
+ }
+ token := s.b[s.start:s.end]
+ if i < 1 || i > 8 || !isAlphaNum(token) {
+ s.gobble(errSyntax)
+ continue
+ }
+ s.token = token
+ return end
+ }
+ if n := len(s.b); n > 0 && s.b[n-1] == '-' {
+ s.setError(errSyntax)
+ s.b = s.b[:len(s.b)-1]
+ }
+ s.done = true
+ return end
+}
+
+// acceptMinSize parses multiple tokens of the given size or greater.
+// It returns the end position of the last token consumed.
+func (s *scanner) acceptMinSize(min int) (end int) {
+ end = s.end
+ s.scan()
+ for ; len(s.token) >= min; s.scan() {
+ end = s.end
+ }
+ return end
+}
+
+// Parse parses the given BCP 47 string and returns a valid Tag. If parsing
+// failed it returns an error and any part of the tag that could be parsed.
+// If parsing succeeded but an unknown value was found, it returns
+// ValueError. The Tag returned in this case is just stripped of the unknown
+// value. All other values are preserved. It accepts tags in the BCP 47 format
+// and extensions to this standard defined in
+// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// The resulting tag is canonicalized using the default canonicalization type.
+func Parse(s string) (t Tag, err error) {
+ return Default.Parse(s)
+}
+
+// Parse parses the given BCP 47 string and returns a valid Tag. If parsing
+// failed it returns an error and any part of the tag that could be parsed.
+// If parsing succeeded but an unknown value was found, it returns
+// ValueError. The Tag returned in this case is just stripped of the unknown
+// value. All other values are preserved. It accepts tags in the BCP 47 format
+// and extensions to this standard defined in
+// http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers.
+// The resulting tag is canonicalized using the the canonicalization type c.
+func (c CanonType) Parse(s string) (t Tag, err error) {
+ // TODO: consider supporting old-style locale key-value pairs.
+ if s == "" {
+ return und, errSyntax
+ }
+ if len(s) <= maxAltTaglen {
+ b := [maxAltTaglen]byte{}
+ for i, c := range s {
+ // Generating invalid UTF-8 is okay as it won't match.
+ if 'A' <= c && c <= 'Z' {
+ c += 'a' - 'A'
+ } else if c == '_' {
+ c = '-'
+ }
+ b[i] = byte(c)
+ }
+ if t, ok := grandfathered(b); ok {
+ return t, nil
+ }
+ }
+ scan := makeScannerString(s)
+ t, err = parse(&scan, s)
+ t, changed := t.canonicalize(c)
+ if changed {
+ t.remakeString()
+ }
+ return t, err
+}
+
+func parse(scan *scanner, s string) (t Tag, err error) {
+ t = und
+ var end int
+ if n := len(scan.token); n <= 1 {
+ scan.toLower(0, len(scan.b))
+ if n == 0 || scan.token[0] != 'x' {
+ return t, errSyntax
+ }
+ end = parseExtensions(scan)
+ } else if n >= 4 {
+ return und, errSyntax
+ } else { // the usual case
+ t, end = parseTag(scan)
+ if n := len(scan.token); n == 1 {
+ t.pExt = uint16(end)
+ end = parseExtensions(scan)
+ } else if end < len(scan.b) {
+ scan.setError(errSyntax)
+ scan.b = scan.b[:end]
+ }
+ }
+ if int(t.pVariant) < len(scan.b) {
+ if end < len(s) {
+ s = s[:end]
+ }
+ if len(s) > 0 && tag.Compare(s, scan.b) == 0 {
+ t.str = s
+ } else {
+ t.str = string(scan.b)
+ }
+ } else {
+ t.pVariant, t.pExt = 0, 0
+ }
+ return t, scan.err
+}
+
+// parseTag parses language, script, region and variants.
+// It returns a Tag and the end position in the input that was parsed.
+func parseTag(scan *scanner) (t Tag, end int) {
+ var e error
+ // TODO: set an error if an unknown lang, script or region is encountered.
+ t.lang, e = getLangID(scan.token)
+ scan.setError(e)
+ scan.replace(t.lang.String())
+ langStart := scan.start
+ end = scan.scan()
+ for len(scan.token) == 3 && isAlpha(scan.token[0]) {
+ // From http://tools.ietf.org/html/bcp47, <lang>-<extlang> tags are equivalent
+ // to a tag of the form <extlang>.
+ lang, e := getLangID(scan.token)
+ if lang != 0 {
+ t.lang = lang
+ copy(scan.b[langStart:], lang.String())
+ scan.b[langStart+3] = '-'
+ scan.start = langStart + 4
+ }
+ scan.gobble(e)
+ end = scan.scan()
+ }
+ if len(scan.token) == 4 && isAlpha(scan.token[0]) {
+ t.script, e = getScriptID(script, scan.token)
+ if t.script == 0 {
+ scan.gobble(e)
+ }
+ end = scan.scan()
+ }
+ if n := len(scan.token); n >= 2 && n <= 3 {
+ t.region, e = getRegionID(scan.token)
+ if t.region == 0 {
+ scan.gobble(e)
+ } else {
+ scan.replace(t.region.String())
+ }
+ end = scan.scan()
+ }
+ scan.toLower(scan.start, len(scan.b))
+ t.pVariant = byte(end)
+ end = parseVariants(scan, end, t)
+ t.pExt = uint16(end)
+ return t, end
+}
+
+var separator = []byte{'-'}
+
+// parseVariants scans tokens as long as each token is a valid variant string.
+// Duplicate variants are removed.
+func parseVariants(scan *scanner, end int, t Tag) int {
+ start := scan.start
+ varIDBuf := [4]uint8{}
+ variantBuf := [4][]byte{}
+ varID := varIDBuf[:0]
+ variant := variantBuf[:0]
+ last := -1
+ needSort := false
+ for ; len(scan.token) >= 4; scan.scan() {
+ // TODO: measure the impact of needing this conversion and redesign
+ // the data structure if there is an issue.
+ v, ok := variantIndex[string(scan.token)]
+ if !ok {
+ // unknown variant
+ // TODO: allow user-defined variants?
+ scan.gobble(mkErrInvalid(scan.token))
+ continue
+ }
+ varID = append(varID, v)
+ variant = append(variant, scan.token)
+ if !needSort {
+ if last < int(v) {
+ last = int(v)
+ } else {
+ needSort = true
+ // There is no legal combinations of more than 7 variants
+ // (and this is by no means a useful sequence).
+ const maxVariants = 8
+ if len(varID) > maxVariants {
+ break
+ }
+ }
+ }
+ end = scan.end
+ }
+ if needSort {
+ sort.Sort(variantsSort{varID, variant})
+ k, l := 0, -1
+ for i, v := range varID {
+ w := int(v)
+ if l == w {
+ // Remove duplicates.
+ continue
+ }
+ varID[k] = varID[i]
+ variant[k] = variant[i]
+ k++
+ l = w
+ }
+ if str := bytes.Join(variant[:k], separator); len(str) == 0 {
+ end = start - 1
+ } else {
+ scan.resizeRange(start, end, len(str))
+ copy(scan.b[scan.start:], str)
+ end = scan.end
+ }
+ }
+ return end
+}
+
+type variantsSort struct {
+ i []uint8
+ v [][]byte
+}
+
+func (s variantsSort) Len() int {
+ return len(s.i)
+}
+
+func (s variantsSort) Swap(i, j int) {
+ s.i[i], s.i[j] = s.i[j], s.i[i]
+ s.v[i], s.v[j] = s.v[j], s.v[i]
+}
+
+func (s variantsSort) Less(i, j int) bool {
+ return s.i[i] < s.i[j]
+}
+
+type bytesSort [][]byte
+
+func (b bytesSort) Len() int {
+ return len(b)
+}
+
+func (b bytesSort) Swap(i, j int) {
+ b[i], b[j] = b[j], b[i]
+}
+
+func (b bytesSort) Less(i, j int) bool {
+ return bytes.Compare(b[i], b[j]) == -1
+}
+
+// parseExtensions parses and normalizes the extensions in the buffer.
+// It returns the last position of scan.b that is part of any extension.
+// It also trims scan.b to remove excess parts accordingly.
+func parseExtensions(scan *scanner) int {
+ start := scan.start
+ exts := [][]byte{}
+ private := []byte{}
+ end := scan.end
+ for len(scan.token) == 1 {
+ extStart := scan.start
+ ext := scan.token[0]
+ end = parseExtension(scan)
+ extension := scan.b[extStart:end]
+ if len(extension) < 3 || (ext != 'x' && len(extension) < 4) {
+ scan.setError(errSyntax)
+ end = extStart
+ continue
+ } else if start == extStart && (ext == 'x' || scan.start == len(scan.b)) {
+ scan.b = scan.b[:end]
+ return end
+ } else if ext == 'x' {
+ private = extension
+ break
+ }
+ exts = append(exts, extension)
+ }
+ sort.Sort(bytesSort(exts))
+ if len(private) > 0 {
+ exts = append(exts, private)
+ }
+ scan.b = scan.b[:start]
+ if len(exts) > 0 {
+ scan.b = append(scan.b, bytes.Join(exts, separator)...)
+ } else if start > 0 {
+ // Strip trailing '-'.
+ scan.b = scan.b[:start-1]
+ }
+ return end
+}
+
+// parseExtension parses a single extension and returns the position of
+// the extension end.
+func parseExtension(scan *scanner) int {
+ start, end := scan.start, scan.end
+ switch scan.token[0] {
+ case 'u':
+ attrStart := end
+ scan.scan()
+ for last := []byte{}; len(scan.token) > 2; scan.scan() {
+ if bytes.Compare(scan.token, last) != -1 {
+ // Attributes are unsorted. Start over from scratch.
+ p := attrStart + 1
+ scan.next = p
+ attrs := [][]byte{}
+ for scan.scan(); len(scan.token) > 2; scan.scan() {
+ attrs = append(attrs, scan.token)
+ end = scan.end
+ }
+ sort.Sort(bytesSort(attrs))
+ copy(scan.b[p:], bytes.Join(attrs, separator))
+ break
+ }
+ last = scan.token
+ end = scan.end
+ }
+ var last, key []byte
+ for attrEnd := end; len(scan.token) == 2; last = key {
+ key = scan.token
+ keyEnd := scan.end
+ end = scan.acceptMinSize(3)
+ // TODO: check key value validity
+ if keyEnd == end || bytes.Compare(key, last) != 1 {
+ // We have an invalid key or the keys are not sorted.
+ // Start scanning keys from scratch and reorder.
+ p := attrEnd + 1
+ scan.next = p
+ keys := [][]byte{}
+ for scan.scan(); len(scan.token) == 2; {
+ keyStart, keyEnd := scan.start, scan.end
+ end = scan.acceptMinSize(3)
+ if keyEnd != end {
+ keys = append(keys, scan.b[keyStart:end])
+ } else {
+ scan.setError(errSyntax)
+ end = keyStart
+ }
+ }
+ sort.Sort(bytesSort(keys))
+ reordered := bytes.Join(keys, separator)
+ if e := p + len(reordered); e < end {
+ scan.deleteRange(e, end)
+ end = e
+ }
+ copy(scan.b[p:], bytes.Join(keys, separator))
+ break
+ }
+ }
+ case 't':
+ scan.scan()
+ if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) {
+ _, end = parseTag(scan)
+ scan.toLower(start, end)
+ }
+ for len(scan.token) == 2 && !isAlpha(scan.token[1]) {
+ end = scan.acceptMinSize(3)
+ }
+ case 'x':
+ end = scan.acceptMinSize(1)
+ default:
+ end = scan.acceptMinSize(2)
+ }
+ return end
+}
+
+// Compose creates a Tag from individual parts, which may be of type Tag, Base,
+// Script, Region, Variant, []Variant, Extension, []Extension or error. If a
+// Base, Script or Region or slice of type Variant or Extension is passed more
+// than once, the latter will overwrite the former. Variants and Extensions are
+// accumulated, but if two extensions of the same type are passed, the latter
+// will replace the former. A Tag overwrites all former values and typically
+// only makes sense as the first argument. The resulting tag is returned after
+// canonicalizing using the Default CanonType. If one or more errors are
+// encountered, one of the errors is returned.
+func Compose(part ...interface{}) (t Tag, err error) {
+ return Default.Compose(part...)
+}
+
+// Compose creates a Tag from individual parts, which may be of type Tag, Base,
+// Script, Region, Variant, []Variant, Extension, []Extension or error. If a
+// Base, Script or Region or slice of type Variant or Extension is passed more
+// than once, the latter will overwrite the former. Variants and Extensions are
+// accumulated, but if two extensions of the same type are passed, the latter
+// will replace the former. A Tag overwrites all former values and typically
+// only makes sense as the first argument. The resulting tag is returned after
+// canonicalizing using CanonType c. If one or more errors are encountered,
+// one of the errors is returned.
+func (c CanonType) Compose(part ...interface{}) (t Tag, err error) {
+ var b builder
+ if err = b.update(part...); err != nil {
+ return und, err
+ }
+ t, _ = b.tag.canonicalize(c)
+
+ if len(b.ext) > 0 || len(b.variant) > 0 {
+ sort.Sort(sortVariant(b.variant))
+ sort.Strings(b.ext)
+ if b.private != "" {
+ b.ext = append(b.ext, b.private)
+ }
+ n := maxCoreSize + tokenLen(b.variant...) + tokenLen(b.ext...)
+ buf := make([]byte, n)
+ p := t.genCoreBytes(buf)
+ t.pVariant = byte(p)
+ p += appendTokens(buf[p:], b.variant...)
+ t.pExt = uint16(p)
+ p += appendTokens(buf[p:], b.ext...)
+ t.str = string(buf[:p])
+ } else if b.private != "" {
+ t.str = b.private
+ t.remakeString()
+ }
+ return
+}
+
+type builder struct {
+ tag Tag
+
+ private string // the x extension
+ ext []string
+ variant []string
+
+ err error
+}
+
+func (b *builder) addExt(e string) {
+ if e == "" {
+ } else if e[0] == 'x' {
+ b.private = e
+ } else {
+ b.ext = append(b.ext, e)
+ }
+}
+
+var errInvalidArgument = errors.New("invalid Extension or Variant")
+
+func (b *builder) update(part ...interface{}) (err error) {
+ replace := func(l *[]string, s string, eq func(a, b string) bool) bool {
+ if s == "" {
+ b.err = errInvalidArgument
+ return true
+ }
+ for i, v := range *l {
+ if eq(v, s) {
+ (*l)[i] = s
+ return true
+ }
+ }
+ return false
+ }
+ for _, x := range part {
+ switch v := x.(type) {
+ case Tag:
+ b.tag.lang = v.lang
+ b.tag.region = v.region
+ b.tag.script = v.script
+ if v.str != "" {
+ b.variant = nil
+ for x, s := "", v.str[v.pVariant:v.pExt]; s != ""; {
+ x, s = nextToken(s)
+ b.variant = append(b.variant, x)
+ }
+ b.ext, b.private = nil, ""
+ for i, e := int(v.pExt), ""; i < len(v.str); {
+ i, e = getExtension(v.str, i)
+ b.addExt(e)
+ }
+ }
+ case Base:
+ b.tag.lang = v.langID
+ case Script:
+ b.tag.script = v.scriptID
+ case Region:
+ b.tag.region = v.regionID
+ case Variant:
+ if !replace(&b.variant, v.variant, func(a, b string) bool { return a == b }) {
+ b.variant = append(b.variant, v.variant)
+ }
+ case Extension:
+ if !replace(&b.ext, v.s, func(a, b string) bool { return a[0] == b[0] }) {
+ b.addExt(v.s)
+ }
+ case []Variant:
+ b.variant = nil
+ for _, x := range v {
+ b.update(x)
+ }
+ case []Extension:
+ b.ext, b.private = nil, ""
+ for _, e := range v {
+ b.update(e)
+ }
+ // TODO: support parsing of raw strings based on morphology or just extensions?
+ case error:
+ err = v
+ }
+ }
+ return
+}
+
+func tokenLen(token ...string) (n int) {
+ for _, t := range token {
+ n += len(t) + 1
+ }
+ return
+}
+
+func appendTokens(b []byte, token ...string) int {
+ p := 0
+ for _, t := range token {
+ b[p] = '-'
+ copy(b[p+1:], t)
+ p += 1 + len(t)
+ }
+ return p
+}
+
+type sortVariant []string
+
+func (s sortVariant) Len() int {
+ return len(s)
+}
+
+func (s sortVariant) Swap(i, j int) {
+ s[j], s[i] = s[i], s[j]
+}
+
+func (s sortVariant) Less(i, j int) bool {
+ return variantIndex[s[i]] < variantIndex[s[j]]
+}
+
+func findExt(list []string, x byte) int {
+ for i, e := range list {
+ if e[0] == x {
+ return i
+ }
+ }
+ return -1
+}
+
+// getExtension returns the name, body and end position of the extension.
+func getExtension(s string, p int) (end int, ext string) {
+ if s[p] == '-' {
+ p++
+ }
+ if s[p] == 'x' {
+ return len(s), s[p:]
+ }
+ end = nextExtension(s, p)
+ return end, s[p:end]
+}
+
+// nextExtension finds the next extension within the string, searching
+// for the -<char>- pattern from position p.
+// In the fast majority of cases, language tags will have at most
+// one extension and extensions tend to be small.
+func nextExtension(s string, p int) int {
+ for n := len(s) - 3; p < n; {
+ if s[p] == '-' {
+ if s[p+2] == '-' {
+ return p
+ }
+ p += 3
+ } else {
+ p++
+ }
+ }
+ return len(s)
+}
+
+var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight")
+
+// ParseAcceptLanguage parses the contents of a Accept-Language header as
+// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and
+// a list of corresponding quality weights. It is more permissive than RFC 2616
+// and may return non-nil slices even if the input is not valid.
+// The Tags will be sorted by highest weight first and then by first occurrence.
+// Tags with a weight of zero will be dropped. An error will be returned if the
+// input could not be parsed.
+func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) {
+ var entry string
+ for s != "" {
+ if entry, s = split(s, ','); entry == "" {
+ continue
+ }
+
+ entry, weight := split(entry, ';')
+
+ // Scan the language.
+ t, err := Parse(entry)
+ if err != nil {
+ id, ok := acceptFallback[entry]
+ if !ok {
+ return nil, nil, err
+ }
+ t = Tag{lang: id}
+ }
+
+ // Scan the optional weight.
+ w := 1.0
+ if weight != "" {
+ weight = consume(weight, 'q')
+ weight = consume(weight, '=')
+ // consume returns the empty string when a token could not be
+ // consumed, resulting in an error for ParseFloat.
+ if w, err = strconv.ParseFloat(weight, 32); err != nil {
+ return nil, nil, errInvalidWeight
+ }
+ // Drop tags with a quality weight of 0.
+ if w <= 0 {
+ continue
+ }
+ }
+
+ tag = append(tag, t)
+ q = append(q, float32(w))
+ }
+ sortStable(&tagSort{tag, q})
+ return tag, q, nil
+}
+
+// consume removes a leading token c from s and returns the result or the empty
+// string if there is no such token.
+func consume(s string, c byte) string {
+ if s == "" || s[0] != c {
+ return ""
+ }
+ return strings.TrimSpace(s[1:])
+}
+
+func split(s string, c byte) (head, tail string) {
+ if i := strings.IndexByte(s, c); i >= 0 {
+ return strings.TrimSpace(s[:i]), strings.TrimSpace(s[i+1:])
+ }
+ return strings.TrimSpace(s), ""
+}
+
+// Add hack mapping to deal with a small number of cases that that occur
+// in Accept-Language (with reasonable frequency).
+var acceptFallback = map[string]langID{
+ "english": _en,
+ "deutsch": _de,
+ "italian": _it,
+ "french": _fr,
+ "*": _mul, // defined in the spec to match all languages.
+}
+
+type tagSort struct {
+ tag []Tag
+ q []float32
+}
+
+func (s *tagSort) Len() int {
+ return len(s.q)
+}
+
+func (s *tagSort) Less(i, j int) bool {
+ return s.q[i] > s.q[j]
+}
+
+func (s *tagSort) Swap(i, j int) {
+ s.tag[i], s.tag[j] = s.tag[j], s.tag[i]
+ s.q[i], s.q[j] = s.q[j], s.q[i]
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/tables.go b/Godeps/_workspace/src/golang.org/x/text/language/tables.go
new file mode 100644
index 000000000..5868eed53
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/tables.go
@@ -0,0 +1,2742 @@
+// This file was generated by go generate; DO NOT EDIT
+
+package language
+
+import "golang.org/x/text/internal/tag"
+
+// CLDRVersion is the CLDR version from which the tables in this package are derived.
+const CLDRVersion = "28"
+
+const numLanguages = 8632
+
+const numScripts = 223
+
+const numRegions = 354
+
+type fromTo struct {
+ from uint16
+ to uint16
+}
+
+const nonCanonicalUnd = 646
+const (
+ _af = 10
+ _am = 17
+ _ar = 21
+ _az = 36
+ _bg = 56
+ _bn = 75
+ _ca = 97
+ _cs = 121
+ _da = 128
+ _de = 133
+ _el = 153
+ _en = 154
+ _es = 156
+ _et = 158
+ _fa = 163
+ _fi = 167
+ _fil = 169
+ _fr = 174
+ _gu = 210
+ _he = 223
+ _hi = 224
+ _hr = 237
+ _hu = 241
+ _hy = 242
+ _id = 247
+ _is = 257
+ _it = 258
+ _ja = 262
+ _ka = 272
+ _kk = 302
+ _km = 306
+ _kn = 308
+ _ko = 309
+ _ky = 332
+ _lo = 356
+ _lt = 360
+ _lv = 367
+ _mk = 395
+ _ml = 396
+ _mn = 398
+ _mo = 401
+ _mr = 405
+ _ms = 409
+ _mul = 413
+ _my = 420
+ _nb = 430
+ _ne = 435
+ _nl = 444
+ _no = 448
+ _pa = 469
+ _pl = 485
+ _pt = 493
+ _ro = 513
+ _ru = 517
+ _sh = 547
+ _si = 550
+ _sk = 552
+ _sl = 554
+ _sq = 568
+ _sr = 569
+ _sv = 581
+ _sw = 582
+ _ta = 591
+ _te = 598
+ _th = 603
+ _tl = 614
+ _tn = 617
+ _tr = 621
+ _uk = 643
+ _ur = 649
+ _uz = 650
+ _vi = 655
+ _zh = 704
+ _zu = 706
+ _jbo = 264
+ _ami = 1029
+ _bnn = 1736
+ _hak = 220
+ _tlh = 13846
+ _lb = 339
+ _nv = 457
+ _pwn = 11434
+ _tao = 13567
+ _tay = 13577
+ _tsu = 14041
+ _nn = 446
+ _sfb = 13008
+ _vgt = 15080
+ _sgg = 13039
+ _cmn = 2386
+ _nan = 427
+ _hsn = 239
+)
+
+const langPrivateStart = 0x2d05
+
+const langPrivateEnd = 0x2f0c
+
+// lang holds an alphabetically sorted list of ISO-639 language identifiers.
+// All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.
+// For 2-byte language identifiers, the two successive bytes have the following meaning:
+// - if the first letter of the 2- and 3-letter ISO codes are the same:
+// the second and third letter of the 3-letter ISO code.
+// - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.
+// For 3-byte language identifiers the 4th byte is 0.
+var lang tag.Index = "" + // Size: 2840 bytes
+ "---\x00aaarabbkabr\x00ace\x00ach\x00ada\x00ady\x00aeveaeb\x00affragq\x00" +
+ "aho\x00akkaakk\x00aln\x00alt\x00ammhamo\x00anrgaoz\x00arraarc\x00arn\x00" +
+ "aro\x00arq\x00ary\x00arz\x00assmasa\x00ase\x00ast\x00atj\x00avvaawa\x00a" +
+ "yymazzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bax\x00bbc\x00bbj\x00bci" +
+ "\x00beelbej\x00bem\x00bew\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc" +
+ "\x00bgn\x00bgx\x00bhihbhb\x00bhi\x00bhk\x00bho\x00biisbik\x00bin\x00bjj" +
+ "\x00bjn\x00bkm\x00bku\x00blt\x00bmambmq\x00bnenboodbpy\x00bqi\x00bqv\x00" +
+ "brrebra\x00brh\x00brx\x00bsosbsq\x00bss\x00bto\x00btv\x00bua\x00buc\x00b" +
+ "ug\x00bum\x00bvb\x00byn\x00byv\x00bze\x00caatcch\x00ccp\x00ceheceb\x00cg" +
+ "g\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00ckb\x00cooscop" +
+ "\x00cps\x00crrecrj\x00crk\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd" +
+ "\x00cuhucvhvcyymdaandak\x00dar\x00dav\x00dcc\x00deeuden\x00dgr\x00dje" +
+ "\x00dnj\x00doi\x00dsb\x00dtm\x00dtp\x00dua\x00dvivdyo\x00dyu\x00dzzoebu" +
+ "\x00eeweefi\x00egl\x00egy\x00eky\x00elllenngeopoes\x00\x05esu\x00etstett" +
+ "\x00euusewo\x00ext\x00faasfan\x00ffulffm\x00fiinfia\x00fil\x00fit\x00fji" +
+ "jfoaofon\x00frrafrc\x00frp\x00frr\x00frs\x00fud\x00fuq\x00fur\x00fuv\x00" +
+ "fvr\x00fyrygalegaa\x00gag\x00gan\x00gay\x00gbm\x00gbz\x00gcr\x00gdlagez" +
+ "\x00ggn\x00gil\x00gjk\x00gju\x00gllgglk\x00gnrngom\x00gon\x00gor\x00gos" +
+ "\x00got\x00grc\x00grt\x00gsw\x00guujgub\x00guc\x00gur\x00guw\x00guz\x00g" +
+ "vlvgvr\x00gwi\x00haauhak\x00haw\x00haz\x00heebhiinhif\x00hil\x00hlu\x00h" +
+ "md\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homohoc\x00hoj\x00hrrvhsb\x00hs" +
+ "n\x00htathuunhyyehzerianaiba\x00ibb\x00idndieleigboiiiiikpkikt\x00ilo" +
+ "\x00inndinh\x00iodoisslittaiukuiw\x00\x03izh\x00japnjam\x00jbo\x00jgo" +
+ "\x00ji\x00\x06jmc\x00jml\x00jut\x00jvavjwavkaatkaa\x00kab\x00kac\x00kaj" +
+ "\x00kam\x00kao\x00kbd\x00kcg\x00kck\x00kde\x00kdt\x00kea\x00ken\x00kfo" +
+ "\x00kfr\x00kfy\x00kgonkge\x00kgp\x00kha\x00khb\x00khn\x00khq\x00kht\x00k" +
+ "hw\x00kiikkiu\x00kjuakjg\x00kkazkkj\x00klalkln\x00kmhmkmb\x00knankoorkoi" +
+ "\x00kok\x00kos\x00kpe\x00kraukrc\x00kri\x00krj\x00krl\x00kru\x00ksasksb" +
+ "\x00ksf\x00ksh\x00kuurkum\x00kvomkvr\x00kvx\x00kw\x00\x01kxm\x00kxp\x00k" +
+ "yirlaatlab\x00lad\x00lag\x00lah\x00laj\x00lbtzlbe\x00lbw\x00lcp\x00lep" +
+ "\x00lez\x00lgugliimlif\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lmn\x00lmo" +
+ "\x00lninloaolol\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy\x00luz" +
+ "\x00lvavlwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00man\x00m" +
+ "as\x00maz\x00mdf\x00mdh\x00mdr\x00men\x00mer\x00mfa\x00mfe\x00mglgmgh" +
+ "\x00mgo\x00mgp\x00mgy\x00mhahmirimin\x00mis\x00mkkdmlalmls\x00mnonmni" +
+ "\x00mnw\x00moolmoe\x00moh\x00mos\x00mrarmrd\x00mrj\x00mru\x00mssamtltmtr" +
+ "\x00mua\x00mul\x00mus\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00myyamyv\x00m" +
+ "yx\x00myz\x00mzn\x00naaunah\x00nan\x00nap\x00naq\x00nbobnch\x00nddendc" +
+ "\x00nds\x00neepnew\x00ngdongl\x00nhe\x00nhw\x00nij\x00niu\x00njo\x00nlld" +
+ "nmg\x00nnnonnh\x00noornod\x00noe\x00non\x00nqo\x00nrblnsk\x00nso\x00nus" +
+ "\x00nvavnxq\x00nyyanym\x00nyn\x00nzi\x00occiojjiomrmorriosssotk\x00paanp" +
+ "ag\x00pal\x00pam\x00pap\x00pau\x00pcd\x00pcm\x00pdc\x00pdt\x00peo\x00pfl" +
+ "\x00phn\x00pilipka\x00pko\x00plolpms\x00pnt\x00pon\x00pra\x00prd\x00prg" +
+ "\x00psusptorpuu\x00quuequc\x00qug\x00raj\x00rcf\x00rej\x00rgn\x00ria\x00" +
+ "rif\x00rjs\x00rkt\x00rmohrmf\x00rmo\x00rmt\x00rmu\x00rnunrng\x00roonrob" +
+ "\x00rof\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00ryu\x00saansaf\x00s" +
+ "ah\x00saq\x00sas\x00sat\x00saz\x00sbp\x00scrdsck\x00scn\x00sco\x00scs" +
+ "\x00sdndsdc\x00sdh\x00semesef\x00seh\x00sei\x00ses\x00sgagsga\x00sgs\x00" +
+ "sh\x00\x02shi\x00shn\x00siinsid\x00sklkskr\x00sllvsli\x00sly\x00smmosma" +
+ "\x00smi\x00smj\x00smn\x00smp\x00sms\x00snnasnk\x00soomsou\x00sqqisrrpsrb" +
+ "\x00srn\x00srr\x00srx\x00ssswssy\x00stotstq\x00suunsuk\x00sus\x00svwesww" +
+ "aswb\x00swc\x00swg\x00swv\x00sxn\x00syl\x00syr\x00szl\x00taamtaj\x00tbw" +
+ "\x00tcy\x00tdd\x00tdg\x00tdh\x00teeltem\x00teo\x00tet\x00tggkthhathl\x00" +
+ "thq\x00thr\x00tiirtig\x00tiv\x00tkuktkl\x00tkr\x00tkt\x00tlgltly\x00tmh" +
+ "\x00tnsntoontog\x00tpi\x00trurtru\x00trv\x00tssotsd\x00tsf\x00tsg\x00tsj" +
+ "\x00ttatttj\x00tts\x00ttt\x00tum\x00tvl\x00twwitwq\x00tyahtyv\x00tzm\x00" +
+ "udm\x00ugiguga\x00ukkruli\x00umb\x00und\x00unr\x00unx\x00urrduzzbvai\x00" +
+ "veenvec\x00vep\x00viievic\x00vls\x00vmf\x00vmw\x00voolvot\x00vro\x00vun" +
+ "\x00walnwae\x00wal\x00war\x00wbp\x00wbq\x00wbr\x00wls\x00wni\x00woolwtm" +
+ "\x00wuu\x00xav\x00xcr\x00xhhoxlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna\x00x" +
+ "nr\x00xog\x00xpr\x00xsa\x00xsr\x00yao\x00yap\x00yav\x00ybb\x00yiidyooryr" +
+ "l\x00yua\x00zahazag\x00zbl\x00zdj\x00zea\x00zgh\x00zhhozmi\x00zuulzxx" +
+ "\x00zza\x00\xff\xff\xff\xff"
+
+const langNoIndexOffset = 709
+
+// langNoIndex is a bit vector of all 3-letter language codes that are not used as an index
+// in lookup tables. The language ids for these language codes are derived directly
+// from the letters and are not consecutive.
+// Size: 2197 bytes, 2197 elements
+var langNoIndex = [2197]uint8{
+ // Entry 0 - 3F
+ 0xff, 0xfd, 0xfd, 0xfe, 0xef, 0xf7, 0xbf, 0xd2,
+ 0xfb, 0xbf, 0xfe, 0xfa, 0xb7, 0x1d, 0x3c, 0x57,
+ 0x6f, 0x97, 0x73, 0xf8, 0xff, 0xef, 0xff, 0x70,
+ 0xaf, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x85, 0x62,
+ 0xe9, 0xbf, 0xfd, 0xff, 0xff, 0xf7, 0xfd, 0x77,
+ 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3,
+ 0xc9, 0xff, 0xff, 0xff, 0x4d, 0xb8, 0x0a, 0x6a,
+ 0x7e, 0xfa, 0xe3, 0xfe, 0x7e, 0xff, 0x77, 0xff,
+ // Entry 40 - 7F
+ 0xff, 0xff, 0xff, 0xdf, 0x2b, 0xf4, 0xf1, 0xe0,
+ 0x5d, 0xe7, 0x9f, 0x14, 0x07, 0x20, 0xdf, 0xed,
+ 0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0xf7,
+ 0x7e, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff,
+ 0xff, 0xff, 0x5f, 0xfc, 0xdb, 0xfd, 0xbf, 0xb5,
+ 0x7b, 0xdf, 0x7f, 0xf7, 0xeb, 0xfe, 0xff, 0xa7,
+ 0xbd, 0xff, 0x7f, 0xf7, 0xff, 0xef, 0xef, 0xef,
+ 0xff, 0xff, 0x9f, 0xff, 0xff, 0xef, 0xff, 0xdf,
+ // Entry 80 - BF
+ 0xff, 0xff, 0xf3, 0xff, 0xfb, 0x2f, 0xff, 0xff,
+ 0xfb, 0xee, 0xff, 0xbd, 0xdb, 0xff, 0xdf, 0xf7,
+ 0xff, 0xfa, 0xfd, 0xff, 0x7e, 0xaf, 0x7b, 0xfe,
+ 0x7f, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xdf, 0xff,
+ 0xff, 0xdf, 0xfb, 0xff, 0xfd, 0xfc, 0xfb, 0xff,
+ 0xff, 0xff, 0xff, 0xf7, 0x7f, 0xbf, 0xfd, 0xd5,
+ 0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c,
+ 0x08, 0x24, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80,
+ // Entry C0 - FF
+ 0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96,
+ 0x9b, 0x14, 0x88, 0xf6, 0x7b, 0xe7, 0x17, 0x56,
+ 0x55, 0x7d, 0x0e, 0x1c, 0x37, 0x71, 0xf3, 0xef,
+ 0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10,
+ 0xbc, 0x87, 0xaf, 0xdf, 0xff, 0xf7, 0x73, 0x35,
+ 0x3e, 0x87, 0xc7, 0xdf, 0xff, 0x00, 0x81, 0x00,
+ 0xb0, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x40, 0x00, 0x40, 0x92, 0x21, 0xd0, 0xbf, 0x5d,
+ // Entry 100 - 13F
+ 0xfd, 0xde, 0xfe, 0x5e, 0x00, 0x00, 0x02, 0x64,
+ 0x8d, 0x19, 0xc1, 0xdf, 0x79, 0x22, 0x00, 0x00,
+ 0x00, 0xdf, 0x6d, 0xdc, 0x26, 0xe5, 0xd9, 0xf3,
+ 0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x01, 0x0c,
+ 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc5, 0x67, 0x5f,
+ 0x56, 0x89, 0x5e, 0xb7, 0xec, 0xef, 0x03, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0xc0, 0x77, 0xda, 0x57,
+ 0x90, 0x69, 0x01, 0x2c, 0x16, 0x79, 0xe4, 0xff,
+ // Entry 140 - 17F
+ 0xff, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x08, 0x46,
+ 0x00, 0x00, 0x00, 0xb0, 0x14, 0x03, 0x50, 0x16,
+ 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x09,
+ 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x04,
+ 0x08, 0x00, 0x00, 0x04, 0x00, 0x80, 0x28, 0x04,
+ 0x00, 0x00, 0x50, 0xd5, 0x2d, 0x00, 0x64, 0x35,
+ 0x24, 0x53, 0xf5, 0xd4, 0xbd, 0xe2, 0xcd, 0x03,
+ // Entry 180 - 1BF
+ 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x17, 0x39, 0x01, 0xd9, 0x57, 0x98,
+ 0x21, 0x98, 0xa5, 0x00, 0x00, 0x01, 0x40, 0x82,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0xb0, 0xfe,
+ 0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ // Entry 1C0 - 1FF
+ 0x00, 0x01, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x20, 0x04, 0xa6, 0x08, 0x04, 0x00, 0x08,
+ 0x01, 0x50, 0x00, 0x00, 0x08, 0x11, 0x86, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x06, 0x55,
+ 0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x60,
+ 0x3b, 0x83, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xbe, 0xdf, 0xff, 0xfe, 0xbf,
+ // Entry 200 - 23F
+ 0xdf, 0xc7, 0x83, 0x82, 0xc0, 0xff, 0xdf, 0x27,
+ 0xcf, 0x5f, 0xe7, 0x01, 0x10, 0x20, 0xb2, 0xc5,
+ 0xa4, 0x45, 0x25, 0x9b, 0x03, 0xcf, 0xf0, 0xdf,
+ 0x03, 0xc4, 0x00, 0x10, 0x01, 0x0e, 0x01, 0xe3,
+ 0x92, 0x54, 0xdb, 0x38, 0xf1, 0x7f, 0xf7, 0x6d,
+ 0xf9, 0xff, 0x1c, 0x7d, 0x04, 0x08, 0x00, 0x01,
+ 0x21, 0x12, 0x6c, 0x5f, 0xdd, 0x0f, 0x85, 0x4f,
+ 0x40, 0x40, 0x00, 0x04, 0xf9, 0xfd, 0xbd, 0xd4,
+ // Entry 240 - 27F
+ 0xe8, 0x13, 0xf4, 0x27, 0xa3, 0x0d, 0x00, 0x00,
+ 0x20, 0x7b, 0x39, 0x02, 0x05, 0x84, 0x00, 0xf0,
+ 0xbf, 0x7f, 0xda, 0x00, 0x18, 0x04, 0x81, 0x00,
+ 0x00, 0x00, 0x80, 0x10, 0x94, 0x1c, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04,
+ 0x08, 0xb4, 0x7c, 0xa5, 0x0c, 0x40, 0x00, 0x00,
+ 0x11, 0x04, 0x04, 0x6c, 0x00, 0x20, 0x70, 0xff,
+ 0xfb, 0x7f, 0x60, 0x00, 0x05, 0x9b, 0xdd, 0x6e,
+ // Entry 280 - 2BF
+ 0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05,
+ 0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51,
+ 0xe2, 0xff, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x60,
+ 0xe5, 0x48, 0x14, 0x89, 0x20, 0xc0, 0x47, 0x80,
+ 0x07, 0x00, 0x00, 0x00, 0xcc, 0x50, 0x40, 0x24,
+ 0x85, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20,
+ // Entry 2C0 - 2FF
+ 0x02, 0x50, 0x88, 0x11, 0x00, 0xd1, 0x6c, 0xee,
+ 0x50, 0x03, 0x1d, 0x11, 0x69, 0x06, 0x59, 0xe9,
+ 0x33, 0x08, 0x00, 0x20, 0x05, 0x40, 0x10, 0x00,
+ 0x00, 0x00, 0x50, 0x44, 0x96, 0x49, 0xd6, 0x5d,
+ 0xa7, 0x81, 0x45, 0x97, 0xfb, 0x00, 0x10, 0x00,
+ 0x08, 0x00, 0x80, 0x00, 0x40, 0x45, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x04, 0x08,
+ 0xf8, 0xeb, 0xf6, 0x39, 0xc4, 0x89, 0x16, 0x00,
+ // Entry 300 - 33F
+ 0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa2,
+ 0x01, 0x00, 0x00, 0x00, 0x12, 0x04, 0x00, 0x00,
+ 0x04, 0x10, 0xf0, 0x9d, 0x95, 0x13, 0x04, 0x80,
+ 0x00, 0x00, 0xd0, 0x12, 0x40, 0x00, 0x10, 0xb0,
+ 0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x0a, 0x00,
+ 0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0xc0,
+ 0x00, 0x80, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0xf0, 0xd8, 0x6f, 0x15, 0x02, 0x08, 0x00,
+ // Entry 340 - 37F
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01,
+ 0x00, 0x10, 0x00, 0x00, 0x00, 0xf8, 0x85, 0xe3,
+ 0xdd, 0xff, 0xff, 0xff, 0xbb, 0xff, 0x7f, 0xfb,
+ 0xff, 0xfc, 0xfe, 0xdf, 0xff, 0xff, 0xff, 0xf6,
+ 0xfb, 0xfe, 0xf7, 0x1f, 0xff, 0xb3, 0xed, 0xff,
+ 0xdb, 0xed, 0xff, 0xfe, 0xff, 0xfe, 0xdf, 0xff,
+ 0xff, 0xff, 0xf7, 0xff, 0xfd, 0xff, 0xff, 0xff,
+ 0xfd, 0xff, 0xdf, 0xaf, 0x9c, 0xff, 0xfb, 0xff,
+ // Entry 380 - 3BF
+ 0xff, 0xff, 0xff, 0xff, 0xef, 0xd2, 0xbb, 0xdf,
+ 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xef,
+ 0xfd, 0xff, 0xff, 0xf7, 0xfd, 0xff, 0xff, 0xff,
+ 0xef, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x5f, 0xd3, 0x7b, 0xfd, 0xd9, 0xdf, 0xef,
+ 0xbc, 0x18, 0x05, 0x2c, 0xff, 0x07, 0xf0, 0xff,
+ 0xf7, 0x5f, 0x00, 0x08, 0x00, 0xc3, 0x3d, 0x1b,
+ 0x06, 0xe6, 0x72, 0xf0, 0xdd, 0x3c, 0x7f, 0x44,
+ // Entry 3C0 - 3FF
+ 0x02, 0x30, 0x9f, 0x7a, 0x16, 0xfd, 0xff, 0x57,
+ 0xf2, 0xff, 0x39, 0xff, 0xf2, 0x1e, 0x95, 0xf7,
+ 0xf7, 0xff, 0x45, 0x80, 0x01, 0x02, 0x00, 0x00,
+ 0x40, 0x54, 0x9f, 0x8a, 0xd9, 0xd9, 0x0e, 0x11,
+ 0x84, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x00, 0x01,
+ 0x05, 0xd1, 0x50, 0x58, 0x00, 0x00, 0x00, 0x10,
+ 0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2,
+ 0xf9, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
+ // Entry 400 - 43F
+ 0xd7, 0x6f, 0xff, 0xff, 0xdf, 0x7d, 0xbb, 0xff,
+ 0xff, 0xff, 0xf7, 0xf3, 0xef, 0xff, 0xff, 0xf7,
+ 0xff, 0xdf, 0xdb, 0x77, 0xff, 0xff, 0x7f, 0xff,
+ 0xff, 0xff, 0xef, 0xff, 0xbc, 0xff, 0xff, 0xfb,
+ 0xff, 0xfb, 0xff, 0xde, 0x76, 0xbd, 0xff, 0xf7,
+ 0xff, 0xff, 0xf7, 0xff, 0xff, 0xdf, 0xf3, 0xbf,
+ 0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xde,
+ 0xf7, 0xbb, 0xef, 0xf7, 0xff, 0xfb, 0xbf, 0xdf,
+ // Entry 440 - 47F
+ 0xfd, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0x5f, 0x7d,
+ 0x7f, 0xff, 0xff, 0xf7, 0xe5, 0xfc, 0xff, 0xfd,
+ 0x7f, 0x7f, 0xff, 0x9e, 0xae, 0xff, 0xee, 0xff,
+ 0x7f, 0xf7, 0x7b, 0x02, 0x82, 0x04, 0xff, 0xf7,
+ 0xff, 0xbf, 0xd7, 0xef, 0xfe, 0xdf, 0xf7, 0xfe,
+ 0xe2, 0x8e, 0xe7, 0xff, 0xf7, 0xff, 0x56, 0xbd,
+ 0xcd, 0xff, 0xfb, 0xff, 0xff, 0xdf, 0xef, 0xff,
+ 0xe5, 0xdf, 0x7d, 0x0f, 0xa7, 0x51, 0x04, 0x44,
+ // Entry 480 - 4BF
+ 0x13, 0xd0, 0x5d, 0xaf, 0xa6, 0xfd, 0xb9, 0xff,
+ 0x43, 0x5d, 0x5b, 0xff, 0xff, 0xbf, 0x3f, 0x20,
+ 0x14, 0x00, 0x57, 0x51, 0x82, 0x65, 0xf5, 0x49,
+ 0xe2, 0xff, 0xfc, 0xdf, 0x00, 0x05, 0xc5, 0x05,
+ 0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x04,
+ 0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x51, 0x60, 0x05, 0x04, 0x01, 0x00, 0x00,
+ 0x06, 0x01, 0x20, 0x00, 0x18, 0x01, 0x92, 0xb1,
+ // Entry 4C0 - 4FF
+ 0xfd, 0x67, 0x4b, 0x06, 0x95, 0x02, 0x57, 0xed,
+ 0xfb, 0x4c, 0x9d, 0x7b, 0x83, 0x04, 0x62, 0x40,
+ 0x00, 0x15, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83,
+ 0xf9, 0x5f, 0x10, 0x8c, 0xc9, 0x46, 0xde, 0xf7,
+ 0x13, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00,
+ 0x01, 0x40, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x7d,
+ 0xba, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41,
+ // Entry 500 - 53F
+ 0xb0, 0xff, 0x79, 0x7a, 0x04, 0x00, 0x00, 0x49,
+ 0x2d, 0x14, 0x25, 0x77, 0xed, 0xf1, 0xbf, 0xef,
+ 0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xfc,
+ 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xf5, 0xff,
+ 0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7f, 0x10,
+ 0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9,
+ 0x5f, 0x05, 0x86, 0xef, 0xf5, 0x77, 0xbd, 0x3c,
+ 0x00, 0x00, 0x00, 0x43, 0x71, 0x42, 0x00, 0x40,
+ // Entry 540 - 57F
+ 0x00, 0x00, 0x01, 0x43, 0x19, 0x00, 0x08, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ // Entry 580 - 5BF
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xab, 0xbd, 0xe7, 0x57, 0xee, 0x13, 0x5d,
+ 0x09, 0xc1, 0x40, 0x21, 0xfa, 0x17, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0xde, 0xff, 0xbf,
+ 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x30, 0x95, 0xe3, 0x10, 0x00, 0x00, 0x00,
+ 0x11, 0x04, 0x16, 0x00, 0x01, 0x02, 0x00, 0x81,
+ 0xa3, 0x01, 0x50, 0x00, 0x00, 0x83, 0x11, 0x40,
+ // Entry 5C0 - 5FF
+ 0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0x7e, 0x02,
+ 0xaa, 0x10, 0x5d, 0xd8, 0x52, 0x00, 0x80, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x02, 0x02,
+ 0x09, 0x00, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d,
+ 0x31, 0x00, 0x00, 0x00, 0x01, 0x50, 0x02, 0x20,
+ 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x00,
+ 0x00, 0x1f, 0xdf, 0xf2, 0xfd, 0xff, 0xfd, 0x3f,
+ 0x9f, 0x18, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe,
+ // Entry 600 - 63F
+ 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xfd,
+ 0xb7, 0xf7, 0xff, 0xf3, 0xdf, 0xff, 0x6f, 0xf1,
+ 0x7b, 0xf1, 0x7f, 0xdf, 0x7f, 0xbf, 0xfe, 0xb7,
+ 0xee, 0x1c, 0xfb, 0xdb, 0xef, 0xdf, 0xff, 0xfd,
+ 0x7e, 0xbe, 0x57, 0xff, 0x6f, 0x81, 0x76, 0x1f,
+ 0xd4, 0x77, 0xf5, 0xfd, 0xff, 0xff, 0xeb, 0xfe,
+ 0xbf, 0x5f, 0x57, 0x1b, 0xeb, 0x5f, 0x50, 0x18,
+ 0x02, 0xfa, 0xff, 0x9d, 0x15, 0x97, 0x15, 0x0f,
+ // Entry 640 - 67F
+ 0x75, 0xc4, 0x7d, 0x81, 0x82, 0xf1, 0xd7, 0x7e,
+ 0xff, 0xff, 0xff, 0xef, 0xff, 0xfd, 0xdd, 0xde,
+ 0xbc, 0xfd, 0xf6, 0x5f, 0x7a, 0x1f, 0x40, 0x98,
+ 0x02, 0xff, 0xe3, 0xff, 0xf3, 0xd6, 0xf2, 0xff,
+ 0xfb, 0xdf, 0x7d, 0x50, 0x1e, 0x15, 0x7b, 0xb4,
+ 0xf5, 0xbe, 0xff, 0xff, 0xf3, 0xf7, 0xff, 0xf7,
+ 0x7f, 0xff, 0xff, 0xbe, 0xdb, 0xf7, 0xd7, 0xf9,
+ 0xef, 0x2f, 0x80, 0xbf, 0xc5, 0xff, 0xff, 0xf3,
+ // Entry 680 - 6BF
+ 0x97, 0x9d, 0xff, 0xff, 0xf7, 0xcf, 0xfd, 0xbf,
+ 0xde, 0x7f, 0x06, 0x1d, 0x57, 0xff, 0xf8, 0xda,
+ 0x5d, 0xcf, 0x7d, 0x16, 0xb9, 0xea, 0x69, 0xa0,
+ 0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x48,
+ 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00,
+ 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x01, 0x06,
+ 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00,
+ 0x04, 0x00, 0x10, 0x8c, 0x58, 0xd5, 0x0d, 0x0f,
+ // Entry 6C0 - 6FF
+ 0x14, 0x4d, 0xf1, 0x16, 0x44, 0xd1, 0x42, 0x08,
+ 0x40, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0xdc, 0xff, 0xeb, 0x1f, 0x58, 0x08, 0x41,
+ 0x04, 0xa0, 0x04, 0x00, 0x30, 0x12, 0x40, 0x22,
+ 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xaf,
+ 0x6f, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x25, 0x00, 0x00,
+ // Entry 700 - 73F
+ 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
+ 0x80, 0x86, 0xc2, 0x02, 0x00, 0x00, 0x00, 0x01,
+ 0xdf, 0x18, 0x00, 0x00, 0x02, 0xf0, 0xfd, 0x79,
+ 0x3b, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x03, 0x00, 0x09, 0x20, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ // Entry 740 - 77F
+ 0x00, 0x00, 0x00, 0xef, 0xf7, 0xfd, 0xcf, 0x7e,
+ 0xa0, 0x11, 0x10, 0x00, 0x00, 0x92, 0x01, 0x44,
+ 0xcd, 0xf9, 0x5e, 0x00, 0x01, 0x00, 0x30, 0x14,
+ 0x04, 0x55, 0x10, 0x01, 0x04, 0xf6, 0x3f, 0x7a,
+ 0x05, 0x04, 0x00, 0xb0, 0x80, 0x00, 0x55, 0x55,
+ 0x97, 0x7c, 0x9f, 0x71, 0xcc, 0x78, 0xd1, 0x43,
+ 0xf5, 0x57, 0x67, 0x14, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x2c, 0xf7, 0xdb, 0x1f, 0x50, 0x60,
+ // Entry 780 - 7BF
+ 0x03, 0x68, 0x01, 0x10, 0x8b, 0x38, 0xaa, 0x01,
+ 0x00, 0x00, 0x30, 0x00, 0x24, 0x44, 0x00, 0x00,
+ 0x10, 0x03, 0x11, 0x02, 0x01, 0x00, 0x00, 0xf0,
+ 0xb5, 0xff, 0xd5, 0xd7, 0xbc, 0x70, 0xd6, 0x78,
+ 0x78, 0x15, 0x50, 0x00, 0xa4, 0x84, 0xe9, 0x41,
+ 0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x00,
+ 0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02,
+ 0xff, 0xef, 0xff, 0x4f, 0x85, 0x53, 0xf4, 0xed,
+ // Entry 7C0 - 7FF
+ 0xdd, 0xbf, 0x72, 0x19, 0xc7, 0x0c, 0xf5, 0x42,
+ 0x54, 0xdd, 0x77, 0x14, 0x00, 0x80, 0xc0, 0x56,
+ 0xcc, 0x16, 0x9e, 0xfb, 0x35, 0x7d, 0xef, 0xff,
+ 0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x5d,
+ 0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80,
+ 0x10, 0x20, 0x24, 0x00, 0xff, 0x3f, 0xdf, 0x67,
+ 0xfe, 0x01, 0x06, 0x88, 0x0a, 0x40, 0x16, 0x01,
+ 0x01, 0x15, 0x2b, 0x3e, 0x01, 0x00, 0x00, 0x10,
+ // Entry 800 - 83F
+ 0x90, 0x69, 0x45, 0x02, 0x02, 0x01, 0xe1, 0xbf,
+ 0xbf, 0x03, 0x00, 0x00, 0x10, 0xd4, 0xa7, 0xd1,
+ 0x54, 0x9e, 0x44, 0xdf, 0xfd, 0x8f, 0x66, 0xb3,
+ 0x55, 0x20, 0xd4, 0xc3, 0xd8, 0x30, 0x3d, 0x80,
+ 0x00, 0x00, 0x00, 0x4c, 0xd4, 0x10, 0xc5, 0x84,
+ 0x6e, 0x50, 0x00, 0x22, 0x50, 0x7e, 0xbf, 0xdb,
+ 0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10,
+ 0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00,
+ // Entry 840 - 87F
+ 0xf0, 0xfb, 0xfd, 0x3f, 0x05, 0x00, 0x12, 0x81,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28,
+ 0x84, 0x00, 0x33, 0xc0, 0x23, 0x24, 0x00, 0x00,
+ 0x00, 0xcb, 0xe4, 0x3a, 0x42, 0xc8, 0x14, 0xf1,
+ 0xef, 0xff, 0x7f, 0x16, 0x01, 0x01, 0x84, 0x50,
+ 0x07, 0xfc, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x40,
+ 0x10, 0x38, 0x01, 0x01, 0x1c, 0x12, 0x40, 0xe1,
+ // Entry 880 - 8BF
+ 0x76, 0x16, 0x08, 0x03, 0x10, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x24,
+ 0x0a, 0x00, 0x80, 0x00, 0x00,
+}
+
+// altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives
+// to 2-letter language codes that cannot be derived using the method described above.
+// Each 3-letter code is followed by its 1-byte langID.
+var altLangISO3 tag.Index = "---\x00cor\x00hbs\x01heb\x02kin\x03spa\x04yid\x05\xff\xff\xff\xff"
+
+// altLangIndex is used to convert indexes in altLangISO3 to langIDs.
+// Size: 12 bytes, 6 elements
+var altLangIndex = [6]uint16{
+ 0x0149, 0x0223, 0x0104, 0x0208, 0x009c, 0x010a,
+}
+
+// langAliasMap maps langIDs to their suggested replacements.
+// Size: 556 bytes, 139 elements
+var langAliasMap = [139]fromTo{
+ 0: {from: 0xfe, to: 0xf7},
+ 1: {from: 0x104, to: 0xdf},
+ 2: {from: 0x10a, to: 0x2b6},
+ 3: {from: 0x10f, to: 0x10e},
+ 4: {from: 0x191, to: 0x201},
+ 5: {from: 0x1ae, to: 0x1c0},
+ 6: {from: 0x223, to: 0x239},
+ 7: {from: 0x266, to: 0xa9},
+ 8: {from: 0x272, to: 0x250},
+ 9: {from: 0x27b, to: 0xd},
+ 10: {from: 0x2d1, to: 0x2d7},
+ 11: {from: 0x322, to: 0x92},
+ 12: {from: 0x3c3, to: 0x1c44},
+ 13: {from: 0x3e4, to: 0x238},
+ 14: {from: 0x3f5, to: 0x238},
+ 15: {from: 0x480, to: 0x15},
+ 16: {from: 0x48b, to: 0xf2},
+ 17: {from: 0x4d1, to: 0x1f34},
+ 18: {from: 0x546, to: 0x23},
+ 19: {from: 0x54c, to: 0x272e},
+ 20: {from: 0x558, to: 0x24},
+ 21: {from: 0x579, to: 0xa0},
+ 22: {from: 0x59f, to: 0x26},
+ 23: {from: 0x5a8, to: 0x42},
+ 24: {from: 0x656, to: 0xc76},
+ 25: {from: 0x782, to: 0x1a4},
+ 26: {from: 0x7c9, to: 0x16d},
+ 27: {from: 0x7d0, to: 0x59},
+ 28: {from: 0x851, to: 0x30b5},
+ 29: {from: 0x8cb, to: 0x2c0},
+ 30: {from: 0x908, to: 0x23ed},
+ 31: {from: 0x911, to: 0x956},
+ 32: {from: 0x92e, to: 0x24d},
+ 33: {from: 0x94f, to: 0x3fbc},
+ 34: {from: 0x952, to: 0x2c0},
+ 35: {from: 0xa4c, to: 0x73},
+ 36: {from: 0xa9b, to: 0x79},
+ 37: {from: 0xb5b, to: 0x8a},
+ 38: {from: 0xb6a, to: 0x1a1},
+ 39: {from: 0xb8b, to: 0xb8e},
+ 40: {from: 0xb91, to: 0x2c4},
+ 41: {from: 0xc72, to: 0x1ded},
+ 42: {from: 0xc81, to: 0x2c2d},
+ 43: {from: 0xccc, to: 0x1bc},
+ 44: {from: 0xe63, to: 0x9e},
+ 45: {from: 0xe97, to: 0x178},
+ 46: {from: 0xf33, to: 0xfb},
+ 47: {from: 0x100c, to: 0xd},
+ 48: {from: 0x11b7, to: 0xae},
+ 49: {from: 0x1203, to: 0xa5},
+ 50: {from: 0x12b2, to: 0xb2e},
+ 51: {from: 0x12b6, to: 0x1d1},
+ 52: {from: 0x12c5, to: 0x1458},
+ 53: {from: 0x1313, to: 0x110},
+ 54: {from: 0x1316, to: 0x85},
+ 55: {from: 0x1336, to: 0x3a42},
+ 56: {from: 0x13fd, to: 0xcb},
+ 57: {from: 0x145b, to: 0x99},
+ 58: {from: 0x1493, to: 0x278b},
+ 59: {from: 0x14ab, to: 0xc9},
+ 60: {from: 0x150d, to: 0x12b7},
+ 61: {from: 0x159c, to: 0x1549},
+ 62: {from: 0x15a9, to: 0x1686},
+ 63: {from: 0x161d, to: 0x23d},
+ 64: {from: 0x170c, to: 0x1a94},
+ 65: {from: 0x1807, to: 0x2943},
+ 66: {from: 0x181d, to: 0x101},
+ 67: {from: 0x18ed, to: 0x103},
+ 68: {from: 0x1919, to: 0x12a8},
+ 69: {from: 0x1dd0, to: 0x1e70},
+ 70: {from: 0x1ded, to: 0x18e},
+ 71: {from: 0x1e76, to: 0x144},
+ 72: {from: 0x1e81, to: 0x13a},
+ 73: {from: 0x1e85, to: 0x121},
+ 74: {from: 0x1e8c, to: 0x137},
+ 75: {from: 0x1ea2, to: 0x1f7e},
+ 76: {from: 0x1ec8, to: 0x146},
+ 77: {from: 0x1f79, to: 0x4231},
+ 78: {from: 0x1f87, to: 0x3716},
+ 79: {from: 0x1ff5, to: 0x6bd},
+ 80: {from: 0x20a9, to: 0x2fb9},
+ 81: {from: 0x2115, to: 0x30f8},
+ 82: {from: 0x2205, to: 0x16f},
+ 83: {from: 0x2277, to: 0x18b},
+ 84: {from: 0x2283, to: 0x188},
+ 85: {from: 0x228d, to: 0x199},
+ 86: {from: 0x22e3, to: 0x8ee},
+ 87: {from: 0x233c, to: 0x69},
+ 88: {from: 0x23d1, to: 0x178},
+ 89: {from: 0x245c, to: 0x2447},
+ 90: {from: 0x248c, to: 0x1f2},
+ 91: {from: 0x24ba, to: 0x3a42},
+ 92: {from: 0x24f8, to: 0x2447},
+ 93: {from: 0x2682, to: 0x25ca},
+ 94: {from: 0x26a7, to: 0x1b3},
+ 95: {from: 0x28ad, to: 0x1d0},
+ 96: {from: 0x298f, to: 0x1d2},
+ 97: {from: 0x29d2, to: 0x3a42},
+ 98: {from: 0x2a8f, to: 0x1ec},
+ 99: {from: 0x2aa6, to: 0x32a},
+ 100: {from: 0x2ada, to: 0xa3},
+ 101: {from: 0x2adb, to: 0xa3},
+ 102: {from: 0x2b92, to: 0x182},
+ 103: {from: 0x2bad, to: 0x2b28},
+ 104: {from: 0x2bb4, to: 0x151},
+ 105: {from: 0x2bf8, to: 0x2015},
+ 106: {from: 0x2c82, to: 0x2c6a},
+ 107: {from: 0x2f26, to: 0x1ef},
+ 108: {from: 0x30f9, to: 0x3121},
+ 109: {from: 0x31bd, to: 0x201},
+ 110: {from: 0x3281, to: 0x1663},
+ 111: {from: 0x3379, to: 0x228},
+ 112: {from: 0x33eb, to: 0x131},
+ 113: {from: 0x3409, to: 0x213},
+ 114: {from: 0x3490, to: 0x246},
+ 115: {from: 0x35be, to: 0x2a2e},
+ 116: {from: 0x35c2, to: 0x4c},
+ 117: {from: 0x35c5, to: 0x2fbb},
+ 118: {from: 0x35ff, to: 0x3739},
+ 119: {from: 0x3625, to: 0x3d53},
+ 120: {from: 0x3648, to: 0x2c2d},
+ 121: {from: 0x36ef, to: 0x268},
+ 122: {from: 0x38e1, to: 0xb24},
+ 123: {from: 0x390b, to: 0xe8d},
+ 124: {from: 0x3a2c, to: 0x28a},
+ 125: {from: 0x3d50, to: 0x7f},
+ 126: {from: 0x4051, to: 0x306},
+ 127: {from: 0x410b, to: 0x139},
+ 128: {from: 0x415e, to: 0x345e},
+ 129: {from: 0x4160, to: 0x86},
+ 130: {from: 0x4242, to: 0x30b5},
+ 131: {from: 0x4276, to: 0x2b6},
+ 132: {from: 0x435d, to: 0x219c},
+ 133: {from: 0x4370, to: 0x246f},
+ 134: {from: 0x43a3, to: 0x4641},
+ 135: {from: 0x4441, to: 0x4433},
+ 136: {from: 0x44d1, to: 0x44d8},
+ 137: {from: 0x46a9, to: 0x199},
+ 138: {from: 0x473a, to: 0x2ba},
+}
+
+// Size: 139 bytes, 139 elements
+var langAliasTypes = [139]langAliasType{
+ // Entry 0 - 3F
+ 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 1, 2, 1, 1,
+ 2, 0, 1, 0, 1, 2, 1, 1, 0, 2, 1, 1, 0, 2, 0, 0,
+ 1, 0, 1, 1, 2, 1, 1, 1, 1, 0, 0, 2, 1, 1, 1, 1,
+ 2, 1, 0, 1, 1, 2, 2, 0, 1, 2, 0, 1, 1, 1, 1, 1,
+ // Entry 40 - 7F
+ 0, 0, 2, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1,
+ 0, 0, 1, 2, 2, 2, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1,
+ 1, 0, 1, 0, 2, 1, 1, 0, 1, 0, 0, 1, 1, 2, 0, 2,
+ 1, 1, 1, 0, 2, 0, 0, 0, 0, 1, 1, 0, 1, 2, 0, 1,
+ // Entry 80 - BF
+ 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1,
+}
+
+const (
+ _Latn = 79
+ _Hani = 48
+ _Hans = 50
+ _Hant = 51
+ _Qaaa = 125
+ _Qaai = 133
+ _Qabx = 174
+ _Zinh = 218
+ _Zyyy = 222
+ _Zzzz = 223
+)
+
+// script is an alphabetically sorted list of ISO 15924 codes. The index
+// of the script in the string, divided by 4, is the internal scriptID.
+var script tag.Index = "" + // Size: 900 bytes
+ "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBlisBopoBrah" +
+ "BraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgydEgyh" +
+ "EgypElbaEthiGeokGeorGlagGothGranGrekGujrGuruHangHaniHanoHansHantHatrHebr" +
+ "HiraHluwHmngHrktHungIndsItalJavaJpanJurcKaliKanaKharKhmrKhojKitlKitsKnda" +
+ "KoreKpelKthiLanaLaooLatfLatgLatnLepcLimbLinaLinbLisuLomaLyciLydiMahjMand" +
+ "ManiMarcMayaMendMercMeroMlymModiMongMoonMrooMteiMultMymrNarbNbatNkgbNkoo" +
+ "NshuOgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhagPhliPhlpPhlvPhnxPlrdPrtiQaaa" +
+ "QaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaamQaanQaaoQaapQaaqQaarQaas" +
+ "QaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabeQabfQabgQabhQabiQabjQabk" +
+ "QablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabwQabxRjngRoroRunrSamrSara" +
+ "SarbSaurSgnwShawShrdSiddSindSinhSoraSundSyloSyrcSyreSyrjSyrnTagbTakrTale" +
+ "TaluTamlTangTavtTeluTengTfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWoleXpeo" +
+ "XsuxYiiiZinhZmthZsymZxxxZyyyZzzz\xff\xff\xff\xff"
+
+// suppressScript is an index from langID to the dominant script for that language,
+// if it exists. If a script is given, it should be suppressed from the language tag.
+// Size: 709 bytes, 709 elements
+var suppressScript = [709]uint8{
+ // Entry 0 - 3F
+ 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x26, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ // Entry 40 - 7F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ // Entry 80 - BF
+ 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xce,
+ 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x2c, 0x4f, 0x4f, 0x4f, 0x00, 0x4f, 0x00,
+ 0x4f, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x4f, 0x4f, 0x00, 0x4f, 0x00,
+ 0x00, 0x4f, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x4f, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ // Entry C0 - FF
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x4f, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35,
+ 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4f, 0x00,
+ 0x4f, 0x4f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ // Entry 100 - 13F
+ 0x00, 0x4f, 0x4f, 0x00, 0x35, 0x00, 0x3e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00,
+ 0x4f, 0x00, 0x43, 0x00, 0x47, 0x48, 0x00, 0x1f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ // Entry 140 - 17F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x4f, 0x4c, 0x00, 0x00, 0x00,
+ 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ // Entry 180 - 1BF
+ 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x1d, 0x60, 0x00, 0x00, 0x00,
+ 0x00, 0x4f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
+ 0x00, 0x4f, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00,
+ 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ 0x4f, 0x00, 0x4f, 0x1f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00,
+ // Entry 1C0 - 1FF
+ 0x4f, 0x00, 0x00, 0x00, 0x6b, 0x4f, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x4f, 0x70, 0x00, 0x00, 0x2e, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x05, 0x4f, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f,
+ // Entry 200 - 23F
+ 0x00, 0x4f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00,
+ 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x00,
+ 0x4f, 0x00, 0x4f, 0x00, 0x00, 0x4f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ // Entry 240 - 27F
+ 0x4f, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x4f,
+ 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x26,
+ 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x4f, 0x00,
+ 0x4f, 0x4f, 0x4f, 0x00, 0x4f, 0x4f, 0x00, 0x00,
+ 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ // Entry 280 - 2BF
+ 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x4f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
+ // Entry 2C0 - 2FF
+ 0x00, 0x00, 0x4f, 0x00, 0x00,
+}
+
+const (
+ _001 = 1
+ _419 = 30
+ _BR = 64
+ _CA = 72
+ _ES = 109
+ _GB = 121
+ _MD = 186
+ _PT = 236
+ _UK = 304
+ _US = 306
+ _ZZ = 354
+ _XA = 320
+ _XC = 322
+ _XK = 330
+)
+
+// isoRegionOffset needs to be added to the index of regionISO to obtain the regionID
+// for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for
+// the UN.M49 codes used for groups.)
+const isoRegionOffset = 31
+
+// regionTypes defines the status of a region for various standards.
+// Size: 355 bytes, 355 elements
+var regionTypes = [355]uint8{
+ // Entry 0 - 3F
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ // Entry 40 - 7F
+ 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x04, 0x00,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x06,
+ 0x04, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ // Entry 80 - BF
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00,
+ // Entry C0 - FF
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06,
+ 0x06, 0x06, 0x00, 0x06, 0x04, 0x06, 0x06, 0x06,
+ 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06,
+ 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ // Entry 100 - 13F
+ 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x02, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06,
+ // Entry 140 - 17F
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x04, 0x06, 0x06, 0x04, 0x06, 0x06,
+ 0x04, 0x06, 0x05,
+}
+
+// regionISO holds a list of alphabetically sorted 2-letter ISO region codes.
+// Each 2-letter codes is followed by two bytes with the following meaning:
+// - [A-Z}{2}: the first letter of the 2-letter code plus these two
+// letters form the 3-letter ISO code.
+// - 0, n: index into altRegionISO3.
+var regionISO tag.Index = "" + // Size: 1300 bytes
+ "AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA" +
+ "AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN" +
+ "BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT" +
+ "CRRICS\x00\x00CTTECUUBCVPVCWUWCXXRCYYPCZZEDDDRDEEUDGGADJJIDKNKDMMADOOMDY" +
+ "HYDZZAEA ECCUEESTEGGYEHSHERRIESSPETTHEU\x00\x03FIINFJJIFKLKFMSMFOROFQ" +
+ "\x00\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQNQGRRC" +
+ "GS\x00\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC IDDNIERLILSRIM" +
+ "MNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM\x00\x09" +
+ "KNNAKP\x00\x0cKRORKWWTKY\x00\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSOLTTULUUX" +
+ "LVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNPMQTQMRRT" +
+ "MSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLDNOORNPPL" +
+ "NQ\x00\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM\x00\x12" +
+ "PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSSQTTTQU" +
+ "\x00\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\x00\x15RUUSRWWASAAUSBLBSCYCSD" +
+ "DNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXMSYYRSZ" +
+ "WZTAAATCCATDCDTF\x00\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTTTOTVUV" +
+ "TWWNTZZAUAKRUGGAUK UMMIUSSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVNNMVUUTWFLF" +
+ "WKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXNNNXOOOXPPP" +
+ "XQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\x00\x1bYUUGZAAFZMMBZR" +
+ "ARZWWEZZZZ\xff\xff\xff\xff"
+
+// altRegionISO3 holds a list of 3-letter region codes that cannot be
+// mapped to 2-letter codes using the default algorithm. This is a short list.
+var altRegionISO3 string = "SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN"
+
+// altRegionIDs holds a list of regionIDs the positions of which match those
+// of the 3-letter ISO codes in altRegionISO3.
+// Size: 22 bytes, 11 elements
+var altRegionIDs = [11]uint16{
+ 0x0056, 0x006f, 0x0086, 0x00a6, 0x00a8, 0x00ab, 0x00e8, 0x0103,
+ 0x011f, 0x015c, 0x00da,
+}
+
+// Size: 80 bytes, 20 elements
+var regionOldMap = [20]fromTo{
+ 0: {from: 0x43, to: 0xc2},
+ 1: {from: 0x57, to: 0xa5},
+ 2: {from: 0x5e, to: 0x5f},
+ 3: {from: 0x65, to: 0x3a},
+ 4: {from: 0x77, to: 0x76},
+ 5: {from: 0x91, to: 0x36},
+ 6: {from: 0xa1, to: 0x131},
+ 7: {from: 0xbf, to: 0x131},
+ 8: {from: 0xd5, to: 0x13c},
+ 9: {from: 0xda, to: 0x2a},
+ 10: {from: 0xed, to: 0x131},
+ 11: {from: 0xf0, to: 0xe0},
+ 12: {from: 0xfa, to: 0x6f},
+ 13: {from: 0x101, to: 0x161},
+ 14: {from: 0x128, to: 0x124},
+ 15: {from: 0x130, to: 0x79},
+ 16: {from: 0x137, to: 0x13b},
+ 17: {from: 0x13e, to: 0x131},
+ 18: {from: 0x15a, to: 0x15b},
+ 19: {from: 0x160, to: 0x4a},
+}
+
+// m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are
+// codes indicating collections of regions.
+// Size: 710 bytes, 355 elements
+var m49 = [355]int16{
+ // Entry 0 - 3F
+ 0, 1, 2, 3, 5, 9, 11, 13,
+ 14, 15, 17, 18, 19, 21, 29, 30,
+ 34, 35, 39, 53, 54, 57, 61, 142,
+ 143, 145, 150, 151, 154, 155, 419, 958,
+ 0, 20, 784, 4, 28, 660, 8, 51,
+ 530, 24, 10, 32, 16, 40, 36, 533,
+ 248, 31, 70, 52, 50, 56, 854, 100,
+ 48, 108, 204, 652, 60, 96, 68, 535,
+ // Entry 40 - 7F
+ 76, 44, 64, 104, 74, 72, 112, 84,
+ 124, 166, 180, 140, 178, 756, 384, 184,
+ 152, 120, 156, 170, 0, 188, 891, 296,
+ 192, 132, 531, 162, 196, 203, 278, 276,
+ 0, 262, 208, 212, 214, 204, 12, 0,
+ 218, 233, 818, 732, 232, 724, 231, 967,
+ 246, 242, 238, 583, 234, 0, 250, 249,
+ 266, 826, 308, 268, 254, 831, 288, 292,
+ // Entry 80 - BF
+ 304, 270, 324, 312, 226, 300, 239, 320,
+ 316, 624, 328, 344, 334, 340, 191, 332,
+ 348, 854, 0, 360, 372, 376, 833, 356,
+ 86, 368, 364, 352, 380, 832, 388, 400,
+ 392, 581, 404, 417, 116, 296, 174, 659,
+ 408, 410, 414, 136, 398, 418, 422, 662,
+ 438, 144, 430, 426, 440, 442, 428, 434,
+ 504, 492, 498, 499, 663, 450, 584, 581,
+ // Entry C0 - FF
+ 807, 466, 104, 496, 446, 580, 474, 478,
+ 500, 470, 480, 462, 454, 484, 458, 508,
+ 516, 540, 562, 574, 566, 548, 558, 528,
+ 578, 524, 10, 520, 536, 570, 554, 512,
+ 591, 0, 604, 258, 598, 608, 586, 616,
+ 666, 612, 630, 275, 620, 581, 585, 600,
+ 591, 634, 959, 960, 961, 962, 963, 964,
+ 965, 966, 967, 968, 969, 970, 971, 972,
+ // Entry 100 - 13F
+ 638, 716, 642, 688, 643, 646, 682, 90,
+ 690, 729, 752, 702, 654, 705, 744, 703,
+ 694, 674, 686, 706, 740, 728, 678, 810,
+ 222, 534, 760, 748, 0, 796, 148, 260,
+ 768, 764, 762, 772, 626, 795, 788, 776,
+ 626, 792, 780, 798, 158, 834, 804, 800,
+ 826, 581, 840, 858, 860, 336, 670, 704,
+ 862, 92, 850, 704, 548, 876, 581, 882,
+ // Entry 140 - 17F
+ 973, 974, 975, 976, 977, 978, 979, 980,
+ 981, 982, 983, 984, 985, 986, 987, 988,
+ 989, 990, 991, 992, 993, 994, 995, 996,
+ 997, 998, 720, 887, 175, 891, 710, 894,
+ 180, 716, 999,
+}
+
+// m49Index gives indexes into fromM49 based on the three most significant bits
+// of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in
+// fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]]
+// for an entry where the first 7 bits match the 7 lsb of the UN.M49 code.
+// The region code is stored in the 9 lsb of the indexed value.
+// Size: 18 bytes, 9 elements
+var m49Index = [9]int16{
+ 0, 59, 107, 142, 180, 219, 258, 290,
+ 332,
+}
+
+// fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details.
+// Size: 664 bytes, 332 elements
+var fromM49 = [332]uint16{
+ // Entry 0 - 3F
+ 0x0201, 0x0402, 0x0603, 0x0823, 0x0a04, 0x1026, 0x1205, 0x142a,
+ 0x1606, 0x1866, 0x1a07, 0x1c08, 0x1e09, 0x202c, 0x220a, 0x240b,
+ 0x260c, 0x2821, 0x2a0d, 0x3029, 0x3824, 0x3a0e, 0x3c0f, 0x3e31,
+ 0x402b, 0x4410, 0x4611, 0x482e, 0x4e12, 0x502d, 0x5841, 0x6038,
+ 0x6434, 0x6627, 0x6833, 0x6a13, 0x6c14, 0x7035, 0x7215, 0x783c,
+ 0x7a16, 0x8042, 0x883e, 0x8c32, 0x9045, 0x9444, 0x9840, 0xa847,
+ 0xac98, 0xb507, 0xb939, 0xc03d, 0xc837, 0xd0c2, 0xd839, 0xe046,
+ 0xe8a4, 0xf051, 0xf848, 0x0859, 0x10ab, 0x184b, 0x1c17, 0x1e18,
+ // Entry 40 - 7F
+ 0x20b1, 0x2219, 0x291e, 0x2c1a, 0x2e1b, 0x3050, 0x341c, 0x361d,
+ 0x3852, 0x3d2c, 0x445b, 0x4c49, 0x5453, 0x5ca6, 0x5f5c, 0x644c,
+ 0x684a, 0x704f, 0x7855, 0x7e8e, 0x8058, 0x885c, 0x965d, 0x983a,
+ 0xa062, 0xa863, 0xac64, 0xb468, 0xbd18, 0xc484, 0xcc6e, 0xce6e,
+ 0xd06c, 0xd269, 0xd474, 0xdc72, 0xde86, 0xe471, 0xec70, 0xf030,
+ 0xf277, 0xf476, 0xfc7c, 0x04e3, 0x091f, 0x0c61, 0x1478, 0x187b,
+ 0x1c81, 0x26eb, 0x285f, 0x2c5e, 0x305f, 0x407e, 0x487f, 0x50a5,
+ 0x5885, 0x6080, 0x687a, 0x7083, 0x7888, 0x8087, 0x8882, 0x908a,
+ // Entry 80 - BF
+ 0x988f, 0x9c8c, 0xa135, 0xa88d, 0xb08b, 0xb890, 0xc09b, 0xc897,
+ 0xd093, 0xd89a, 0xe099, 0xe894, 0xf095, 0xf89c, 0x004e, 0x089e,
+ 0x10a0, 0x1cac, 0x209f, 0x28a2, 0x30a8, 0x34a9, 0x3caa, 0x42a3,
+ 0x44ad, 0x461e, 0x4cae, 0x54b3, 0x58b6, 0x5cb2, 0x64b7, 0x6cb0,
+ 0x70b4, 0x74b5, 0x7cc4, 0x84bd, 0x8ccc, 0x94ce, 0x9ccb, 0xa4c1,
+ 0xacc9, 0xb4c6, 0xbcc7, 0xc0ca, 0xc8cd, 0xd8b9, 0xe0c3, 0xe4ba,
+ 0xe6bb, 0xe8c8, 0xf0b8, 0xf8cf, 0x00df, 0x08d0, 0x10db, 0x18d9,
+ 0x20d7, 0x2428, 0x265a, 0x2a2f, 0x2d19, 0x2e3f, 0x30dc, 0x38d1,
+ // Entry C0 - FF
+ 0x493c, 0x54de, 0x5cd6, 0x64d2, 0x6cd4, 0x74dd, 0x7cd3, 0x84d8,
+ 0x88c5, 0x8b31, 0x8e73, 0x90be, 0x92ee, 0x94e6, 0x9ee0, 0xace4,
+ 0xb0ef, 0xb8e2, 0xc0e5, 0xc8e9, 0xd0e7, 0xd8ec, 0xe089, 0xe524,
+ 0xecea, 0xf4f1, 0xfd00, 0x0502, 0x0704, 0x0d05, 0x183b, 0x1d0c,
+ 0x26a7, 0x2825, 0x2caf, 0x2ebc, 0x34e8, 0x3d36, 0x4511, 0x4d16,
+ 0x5506, 0x5d12, 0x6103, 0x6508, 0x6d10, 0x7d0b, 0x7f0f, 0x813b,
+ 0x830d, 0x8513, 0x8d5e, 0x9961, 0xa15a, 0xa86d, 0xb115, 0xb309,
+ 0xb86b, 0xc109, 0xc914, 0xd10e, 0xd91b, 0xe10a, 0xe84d, 0xf11a,
+ // Entry 100 - 13F
+ 0xf522, 0xf921, 0x0120, 0x0923, 0x1127, 0x192a, 0x2022, 0x2926,
+ 0x3129, 0x3725, 0x391d, 0x3d2b, 0x412f, 0x492e, 0x4ec0, 0x5517,
+ 0x646a, 0x7479, 0x7e7d, 0x809d, 0x8296, 0x852d, 0x9132, 0xa53a,
+ 0xac36, 0xb533, 0xb934, 0xbd38, 0xd93d, 0xe53f, 0xed5b, 0xef5b,
+ 0xf656, 0xfd5f, 0x7c1f, 0x7ef2, 0x80f3, 0x82f4, 0x84f5, 0x86f6,
+ 0x88f7, 0x8af8, 0x8cf9, 0x8e6f, 0x90fb, 0x92fc, 0x94fd, 0x96fe,
+ 0x98ff, 0x9b40, 0x9d41, 0x9f42, 0xa143, 0xa344, 0xa545, 0xa746,
+ 0xa947, 0xab48, 0xad49, 0xaf4a, 0xb14b, 0xb34c, 0xb54d, 0xb74e,
+ // Entry 140 - 17F
+ 0xb94f, 0xbb50, 0xbd51, 0xbf52, 0xc153, 0xc354, 0xc555, 0xc756,
+ 0xc957, 0xcb58, 0xcd59, 0xcf62,
+}
+
+// Size: 1311 bytes
+var variantIndex = map[string]uint8{
+ "1606nict": 0x0,
+ "1694acad": 0x1,
+ "1901": 0x2,
+ "1959acad": 0x3,
+ "1994": 0x3f,
+ "1996": 0x4,
+ "alalc97": 0x41,
+ "aluku": 0x5,
+ "arevela": 0x6,
+ "arevmda": 0x7,
+ "baku1926": 0x8,
+ "balanka": 0x9,
+ "barla": 0xa,
+ "bauddha": 0xb,
+ "biscayan": 0xc,
+ "biske": 0x3a,
+ "bohoric": 0xd,
+ "boont": 0xe,
+ "dajnko": 0xf,
+ "ekavsk": 0x10,
+ "emodeng": 0x11,
+ "fonipa": 0x42,
+ "fonupa": 0x43,
+ "fonxsamp": 0x44,
+ "hepburn": 0x12,
+ "heploc": 0x40,
+ "hognorsk": 0x13,
+ "ijekavsk": 0x14,
+ "itihasa": 0x15,
+ "jauer": 0x16,
+ "jyutping": 0x17,
+ "kkcor": 0x18,
+ "kociewie": 0x19,
+ "kscor": 0x1a,
+ "laukika": 0x1b,
+ "lipaw": 0x3b,
+ "luna1918": 0x1c,
+ "metelko": 0x1d,
+ "monoton": 0x1e,
+ "ndyuka": 0x1f,
+ "nedis": 0x20,
+ "njiva": 0x3c,
+ "nulik": 0x21,
+ "osojs": 0x3d,
+ "oxendict": 0x22,
+ "pamaka": 0x23,
+ "petr1708": 0x24,
+ "pinyin": 0x25,
+ "polyton": 0x26,
+ "puter": 0x27,
+ "rigik": 0x28,
+ "rozaj": 0x29,
+ "rumgr": 0x2a,
+ "scotland": 0x2b,
+ "scouse": 0x2c,
+ "solba": 0x3e,
+ "sotav": 0x2d,
+ "surmiran": 0x2e,
+ "sursilv": 0x2f,
+ "sutsilv": 0x30,
+ "tarask": 0x31,
+ "uccor": 0x32,
+ "ucrcor": 0x33,
+ "ulster": 0x34,
+ "unifon": 0x35,
+ "vaidika": 0x36,
+ "valencia": 0x37,
+ "vallader": 0x38,
+ "wadegile": 0x39,
+}
+
+// variantNumSpecialized is the number of specialized variants in variants.
+const variantNumSpecialized = 65
+
+// nRegionGroups is the number of region groups.
+const nRegionGroups = 32
+
+type likelyLangRegion struct {
+ lang uint16
+ region uint16
+}
+
+// likelyScript is a lookup table, indexed by scriptID, for the most likely
+// languages and regions given a script.
+// Size: 900 bytes, 225 elements
+var likelyScript = [225]likelyLangRegion{
+ 3: {lang: 0x158, region: 0x104},
+ 4: {lang: 0xc, region: 0x97},
+ 5: {lang: 0x15, region: 0x6a},
+ 7: {lang: 0x16, region: 0x9a},
+ 8: {lang: 0xf2, region: 0x27},
+ 9: {lang: 0x8, region: 0x9a},
+ 10: {lang: 0x27, region: 0x93},
+ 11: {lang: 0x2b, region: 0x51},
+ 12: {lang: 0x55, region: 0xb2},
+ 13: {lang: 0x2c, region: 0x93},
+ 14: {lang: 0x4b, region: 0x34},
+ 16: {lang: 0x2c0, region: 0x12c},
+ 17: {lang: 0x1e3, region: 0x97},
+ 18: {lang: 0xae, region: 0x76},
+ 19: {lang: 0x5b, region: 0x93},
+ 20: {lang: 0x47, region: 0xe5},
+ 21: {lang: 0x63, region: 0x34},
+ 22: {lang: 0x73, region: 0x48},
+ 23: {lang: 0x2a5, region: 0x129},
+ 24: {lang: 0x6e, region: 0x13b},
+ 25: {lang: 0x6c, region: 0x132},
+ 27: {lang: 0x71, region: 0x6a},
+ 28: {lang: 0xcf, region: 0x5c},
+ 29: {lang: 0x205, region: 0x104},
+ 31: {lang: 0xe0, region: 0x97},
+ 33: {lang: 0xae, region: 0x76},
+ 36: {lang: 0x97, region: 0x6a},
+ 37: {lang: 0x238, region: 0x26},
+ 38: {lang: 0x11, region: 0x6e},
+ 40: {lang: 0x110, region: 0x7b},
+ 41: {lang: 0x7d, region: 0x37},
+ 42: {lang: 0xce, region: 0x12e},
+ 43: {lang: 0x20b, region: 0x97},
+ 44: {lang: 0x99, region: 0x85},
+ 45: {lang: 0xd2, region: 0x97},
+ 46: {lang: 0x1d5, region: 0x97},
+ 47: {lang: 0x135, region: 0xa9},
+ 48: {lang: 0x2c0, region: 0x52},
+ 49: {lang: 0xe8, region: 0xe5},
+ 50: {lang: 0x2c0, region: 0x52},
+ 51: {lang: 0x2c0, region: 0x12c},
+ 52: {lang: 0x18a, region: 0x99},
+ 53: {lang: 0xdf, region: 0x95},
+ 54: {lang: 0x106, region: 0xa0},
+ 55: {lang: 0xe3, region: 0x129},
+ 56: {lang: 0xe7, region: 0xad},
+ 58: {lang: 0xf1, region: 0x90},
+ 60: {lang: 0x9f, region: 0x9c},
+ 61: {lang: 0x10e, region: 0x93},
+ 62: {lang: 0x106, region: 0xa0},
+ 64: {lang: 0x98, region: 0xc2},
+ 65: {lang: 0x106, region: 0xa0},
+ 66: {lang: 0x1e9, region: 0xe6},
+ 67: {lang: 0x132, region: 0xa4},
+ 68: {lang: 0x218, region: 0x97},
+ 71: {lang: 0x134, region: 0x97},
+ 72: {lang: 0x135, region: 0xa9},
+ 74: {lang: 0x3c, region: 0x97},
+ 75: {lang: 0x1c1, region: 0x121},
+ 76: {lang: 0x164, region: 0xad},
+ 80: {lang: 0x157, region: 0x97},
+ 81: {lang: 0x15b, region: 0x97},
+ 82: {lang: 0x14e, region: 0x85},
+ 83: {lang: 0xcf, region: 0x85},
+ 84: {lang: 0x15d, region: 0x52},
+ 86: {lang: 0x2a7, region: 0x129},
+ 87: {lang: 0x2a8, region: 0x129},
+ 88: {lang: 0xe0, region: 0x97},
+ 89: {lang: 0x1a7, region: 0x9a},
+ 90: {lang: 0x2aa, region: 0x52},
+ 93: {lang: 0x17e, region: 0x110},
+ 94: {lang: 0x2ab, region: 0x109},
+ 95: {lang: 0x2ab, region: 0x109},
+ 96: {lang: 0x18c, region: 0x97},
+ 97: {lang: 0x195, region: 0x97},
+ 98: {lang: 0x18e, region: 0x52},
+ 100: {lang: 0x198, region: 0x34},
+ 101: {lang: 0x18f, region: 0x97},
+ 102: {lang: 0x229, region: 0xe6},
+ 103: {lang: 0x1a4, region: 0xc2},
+ 104: {lang: 0x2ac, region: 0x106},
+ 105: {lang: 0x16, region: 0x9f},
+ 107: {lang: 0x178, region: 0x82},
+ 109: {lang: 0x221, region: 0x94},
+ 110: {lang: 0x210, region: 0x97},
+ 111: {lang: 0x1d4, region: 0xc3},
+ 112: {lang: 0x1d2, region: 0x97},
+ 114: {lang: 0x236, region: 0x113},
+ 115: {lang: 0x16, region: 0x11a},
+ 116: {lang: 0x7c, region: 0xc2},
+ 117: {lang: 0x146, region: 0x104},
+ 118: {lang: 0x171, region: 0x52},
+ 119: {lang: 0x1d7, region: 0x9a},
+ 120: {lang: 0x1d7, region: 0x52},
+ 122: {lang: 0x1e1, region: 0xae},
+ 123: {lang: 0xe4, region: 0x52},
+ 124: {lang: 0x2af, region: 0x9a},
+ 175: {lang: 0x1f4, region: 0x93},
+ 177: {lang: 0x1c3, region: 0x10a},
+ 178: {lang: 0x232, region: 0x95},
+ 180: {lang: 0x2b0, region: 0x15b},
+ 181: {lang: 0x211, region: 0x97},
+ 182: {lang: 0x1e, region: 0x132},
+ 183: {lang: 0x9a, region: 0x79},
+ 184: {lang: 0x20b, region: 0x97},
+ 185: {lang: 0x20b, region: 0x97},
+ 186: {lang: 0x218, region: 0x97},
+ 187: {lang: 0x226, region: 0xb1},
+ 188: {lang: 0x23a, region: 0x97},
+ 189: {lang: 0x242, region: 0x93},
+ 190: {lang: 0x24c, region: 0x34},
+ 191: {lang: 0x24d, region: 0x99},
+ 195: {lang: 0x251, region: 0xe5},
+ 196: {lang: 0x8a, region: 0x97},
+ 197: {lang: 0x253, region: 0x52},
+ 198: {lang: 0x125, region: 0x52},
+ 199: {lang: 0x24f, region: 0x97},
+ 201: {lang: 0x48, region: 0x13b},
+ 202: {lang: 0x256, region: 0x97},
+ 204: {lang: 0x2bf, region: 0xb8},
+ 205: {lang: 0xa9, region: 0xe5},
+ 206: {lang: 0x8f, region: 0xcb},
+ 207: {lang: 0x25b, region: 0x121},
+ 208: {lang: 0x4c, region: 0x52},
+ 209: {lang: 0x176, region: 0x97},
+ 210: {lang: 0x282, region: 0x11a},
+ 211: {lang: 0x28b, region: 0xb2},
+ 213: {lang: 0xeb, region: 0x97},
+ 215: {lang: 0x1df, region: 0x9a},
+ 216: {lang: 0xe, region: 0x99},
+ 217: {lang: 0xfa, region: 0x52},
+}
+
+type likelyScriptRegion struct {
+ region uint16
+ script uint8
+ flags uint8
+}
+
+// likelyLang is a lookup table, indexed by langID, for the most likely
+// scripts and regions given incomplete information. If more entries exist for a
+// given language, region and script are the index and size respectively
+// of the list in likelyLangList.
+// Size: 2836 bytes, 709 elements
+var likelyLang = [709]likelyScriptRegion{
+ 0: {region: 0x132, script: 0x4f, flags: 0x0},
+ 1: {region: 0x6e, script: 0x4f, flags: 0x0},
+ 2: {region: 0x7b, script: 0x1d, flags: 0x0},
+ 3: {region: 0x7e, script: 0x4f, flags: 0x0},
+ 4: {region: 0x93, script: 0x4f, flags: 0x0},
+ 5: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 6: {region: 0x7e, script: 0x4f, flags: 0x0},
+ 7: {region: 0x104, script: 0x1d, flags: 0x0},
+ 8: {region: 0x9a, script: 0x9, flags: 0x0},
+ 9: {region: 0x126, script: 0x5, flags: 0x0},
+ 10: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 11: {region: 0x51, script: 0x4f, flags: 0x0},
+ 12: {region: 0x97, script: 0x4, flags: 0x0},
+ 13: {region: 0x7e, script: 0x4f, flags: 0x0},
+ 14: {region: 0x99, script: 0xd8, flags: 0x0},
+ 15: {region: 0x14a, script: 0x4f, flags: 0x0},
+ 16: {region: 0x104, script: 0x1d, flags: 0x0},
+ 17: {region: 0x6e, script: 0x26, flags: 0x0},
+ 18: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 20: {region: 0x93, script: 0x4f, flags: 0x0},
+ 21: {region: 0x6a, script: 0x5, flags: 0x0},
+ 22: {region: 0x0, script: 0x3, flags: 0x1},
+ 23: {region: 0x50, script: 0x4f, flags: 0x0},
+ 24: {region: 0x3e, script: 0x4f, flags: 0x0},
+ 25: {region: 0x66, script: 0x5, flags: 0x0},
+ 26: {region: 0xb8, script: 0x5, flags: 0x0},
+ 27: {region: 0x6a, script: 0x5, flags: 0x0},
+ 28: {region: 0x97, script: 0xe, flags: 0x0},
+ 29: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 30: {region: 0x132, script: 0xb6, flags: 0x0},
+ 31: {region: 0x6d, script: 0x4f, flags: 0x0},
+ 32: {region: 0x48, script: 0x4f, flags: 0x0},
+ 33: {region: 0x104, script: 0x1d, flags: 0x0},
+ 34: {region: 0x97, script: 0x1f, flags: 0x0},
+ 35: {region: 0x3e, script: 0x4f, flags: 0x0},
+ 36: {region: 0x3, script: 0x5, flags: 0x1},
+ 37: {region: 0x104, script: 0x1d, flags: 0x0},
+ 38: {region: 0xe6, script: 0x5, flags: 0x0},
+ 39: {region: 0x93, script: 0x4f, flags: 0x0},
+ 40: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 41: {region: 0x2d, script: 0x4f, flags: 0x0},
+ 42: {region: 0x51, script: 0x4f, flags: 0x0},
+ 43: {region: 0x51, script: 0xb, flags: 0x0},
+ 44: {region: 0x93, script: 0x4f, flags: 0x0},
+ 45: {region: 0x51, script: 0x4f, flags: 0x0},
+ 46: {region: 0x4e, script: 0x4f, flags: 0x0},
+ 47: {region: 0x46, script: 0x1d, flags: 0x0},
+ 48: {region: 0x109, script: 0x5, flags: 0x0},
+ 49: {region: 0x15f, script: 0x4f, flags: 0x0},
+ 50: {region: 0x93, script: 0x4f, flags: 0x0},
+ 51: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 52: {region: 0x51, script: 0x4f, flags: 0x0},
+ 53: {region: 0x97, script: 0xc7, flags: 0x0},
+ 54: {region: 0xe6, script: 0x5, flags: 0x0},
+ 55: {region: 0x97, script: 0x1f, flags: 0x0},
+ 56: {region: 0x37, script: 0x1d, flags: 0x0},
+ 57: {region: 0x97, script: 0x1f, flags: 0x0},
+ 58: {region: 0xe6, script: 0x5, flags: 0x0},
+ 59: {region: 0x129, script: 0x2c, flags: 0x0},
+ 60: {region: 0x97, script: 0x4a, flags: 0x0},
+ 61: {region: 0x97, script: 0x1f, flags: 0x0},
+ 62: {region: 0x97, script: 0x1f, flags: 0x0},
+ 63: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 64: {region: 0x97, script: 0x1f, flags: 0x0},
+ 65: {region: 0x13c, script: 0x4f, flags: 0x0},
+ 66: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 67: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 68: {region: 0x97, script: 0x1f, flags: 0x0},
+ 69: {region: 0x93, script: 0x4f, flags: 0x0},
+ 70: {region: 0x51, script: 0x4f, flags: 0x0},
+ 71: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 72: {region: 0x13b, script: 0xc9, flags: 0x0},
+ 73: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 74: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 75: {region: 0x34, script: 0xe, flags: 0x0},
+ 76: {region: 0x52, script: 0xd0, flags: 0x0},
+ 77: {region: 0x97, script: 0xe, flags: 0x0},
+ 78: {region: 0x9a, script: 0x5, flags: 0x0},
+ 79: {region: 0x4e, script: 0x4f, flags: 0x0},
+ 80: {region: 0x76, script: 0x4f, flags: 0x0},
+ 81: {region: 0x97, script: 0x1f, flags: 0x0},
+ 82: {region: 0xe6, script: 0x5, flags: 0x0},
+ 83: {region: 0x97, script: 0x1f, flags: 0x0},
+ 84: {region: 0x32, script: 0x4f, flags: 0x0},
+ 85: {region: 0xb2, script: 0xc, flags: 0x0},
+ 86: {region: 0x51, script: 0x4f, flags: 0x0},
+ 87: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 88: {region: 0xe6, script: 0x1f, flags: 0x0},
+ 89: {region: 0x104, script: 0x1d, flags: 0x0},
+ 90: {region: 0x15c, script: 0x4f, flags: 0x0},
+ 91: {region: 0x93, script: 0x4f, flags: 0x0},
+ 92: {region: 0x51, script: 0x4f, flags: 0x0},
+ 93: {region: 0x84, script: 0x4f, flags: 0x0},
+ 94: {region: 0x6c, script: 0x26, flags: 0x0},
+ 95: {region: 0x51, script: 0x4f, flags: 0x0},
+ 96: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 97: {region: 0x6d, script: 0x4f, flags: 0x0},
+ 98: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 99: {region: 0x8, script: 0x2, flags: 0x1},
+ 100: {region: 0x104, script: 0x1d, flags: 0x0},
+ 101: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 102: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 103: {region: 0x88, script: 0x4f, flags: 0x0},
+ 104: {region: 0x73, script: 0x4f, flags: 0x0},
+ 105: {region: 0x104, script: 0x1d, flags: 0x0},
+ 106: {region: 0x132, script: 0x4f, flags: 0x0},
+ 107: {region: 0x48, script: 0x4f, flags: 0x0},
+ 108: {region: 0x132, script: 0x19, flags: 0x0},
+ 109: {region: 0xa4, script: 0x5, flags: 0x0},
+ 110: {region: 0x13b, script: 0x18, flags: 0x0},
+ 111: {region: 0x99, script: 0x5, flags: 0x0},
+ 112: {region: 0x76, script: 0x4f, flags: 0x0},
+ 113: {region: 0x6a, script: 0x1b, flags: 0x0},
+ 114: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 115: {region: 0x48, script: 0x16, flags: 0x0},
+ 116: {region: 0x48, script: 0x16, flags: 0x0},
+ 117: {region: 0x48, script: 0x16, flags: 0x0},
+ 118: {region: 0x48, script: 0x16, flags: 0x0},
+ 119: {region: 0x48, script: 0x16, flags: 0x0},
+ 120: {region: 0x108, script: 0x4f, flags: 0x0},
+ 121: {region: 0x5d, script: 0x4f, flags: 0x0},
+ 122: {region: 0xe7, script: 0x4f, flags: 0x0},
+ 123: {region: 0x48, script: 0x16, flags: 0x0},
+ 124: {region: 0xc2, script: 0x74, flags: 0x0},
+ 125: {region: 0xa, script: 0x2, flags: 0x1},
+ 126: {region: 0x104, script: 0x1d, flags: 0x0},
+ 127: {region: 0x79, script: 0x4f, flags: 0x0},
+ 128: {region: 0x62, script: 0x4f, flags: 0x0},
+ 129: {region: 0x132, script: 0x4f, flags: 0x0},
+ 130: {region: 0x104, script: 0x1d, flags: 0x0},
+ 131: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 132: {region: 0x97, script: 0x5, flags: 0x0},
+ 133: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 134: {region: 0x48, script: 0x4f, flags: 0x0},
+ 135: {region: 0x48, script: 0x4f, flags: 0x0},
+ 136: {region: 0xd2, script: 0x4f, flags: 0x0},
+ 137: {region: 0x4e, script: 0x4f, flags: 0x0},
+ 138: {region: 0x97, script: 0x5, flags: 0x0},
+ 139: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 140: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 141: {region: 0xce, script: 0x4f, flags: 0x0},
+ 142: {region: 0x51, script: 0x4f, flags: 0x0},
+ 143: {region: 0xcb, script: 0xce, flags: 0x0},
+ 144: {region: 0x112, script: 0x4f, flags: 0x0},
+ 145: {region: 0x36, script: 0x4f, flags: 0x0},
+ 146: {region: 0x42, script: 0xd0, flags: 0x0},
+ 147: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 148: {region: 0x7e, script: 0x4f, flags: 0x0},
+ 149: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 150: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 151: {region: 0x6a, script: 0x24, flags: 0x0},
+ 152: {region: 0xc2, script: 0x40, flags: 0x0},
+ 153: {region: 0x85, script: 0x2c, flags: 0x0},
+ 154: {region: 0xc, script: 0x2, flags: 0x1},
+ 155: {region: 0x1, script: 0x4f, flags: 0x0},
+ 156: {region: 0x6d, script: 0x4f, flags: 0x0},
+ 157: {region: 0x132, script: 0x4f, flags: 0x0},
+ 158: {region: 0x69, script: 0x4f, flags: 0x0},
+ 159: {region: 0x9c, script: 0x3c, flags: 0x0},
+ 160: {region: 0x6d, script: 0x4f, flags: 0x0},
+ 161: {region: 0x51, script: 0x4f, flags: 0x0},
+ 162: {region: 0x6d, script: 0x4f, flags: 0x0},
+ 163: {region: 0x9a, script: 0x5, flags: 0x0},
+ 164: {region: 0x84, script: 0x4f, flags: 0x0},
+ 165: {region: 0x112, script: 0x4f, flags: 0x0},
+ 166: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 167: {region: 0x70, script: 0x4f, flags: 0x0},
+ 168: {region: 0x109, script: 0x5, flags: 0x0},
+ 169: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 170: {region: 0x10a, script: 0x4f, flags: 0x0},
+ 171: {region: 0x71, script: 0x4f, flags: 0x0},
+ 172: {region: 0x74, script: 0x4f, flags: 0x0},
+ 173: {region: 0x3a, script: 0x4f, flags: 0x0},
+ 174: {region: 0x76, script: 0x4f, flags: 0x0},
+ 175: {region: 0x132, script: 0x4f, flags: 0x0},
+ 176: {region: 0x76, script: 0x4f, flags: 0x0},
+ 177: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 178: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 179: {region: 0x13d, script: 0x4f, flags: 0x0},
+ 180: {region: 0xd2, script: 0x4f, flags: 0x0},
+ 181: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 182: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 183: {region: 0x109, script: 0x4f, flags: 0x0},
+ 184: {region: 0xd7, script: 0x4f, flags: 0x0},
+ 185: {region: 0x94, script: 0x4f, flags: 0x0},
+ 186: {region: 0x7e, script: 0x4f, flags: 0x0},
+ 187: {region: 0xba, script: 0x4f, flags: 0x0},
+ 188: {region: 0x52, script: 0x32, flags: 0x0},
+ 189: {region: 0x93, script: 0x4f, flags: 0x0},
+ 190: {region: 0x97, script: 0x1f, flags: 0x0},
+ 191: {region: 0x9a, script: 0x5, flags: 0x0},
+ 192: {region: 0x7c, script: 0x4f, flags: 0x0},
+ 193: {region: 0x79, script: 0x4f, flags: 0x0},
+ 194: {region: 0x6e, script: 0x26, flags: 0x0},
+ 195: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 196: {region: 0xa5, script: 0x4f, flags: 0x0},
+ 197: {region: 0xe6, script: 0x5, flags: 0x0},
+ 198: {region: 0xe6, script: 0x5, flags: 0x0},
+ 199: {region: 0x6d, script: 0x4f, flags: 0x0},
+ 200: {region: 0x9a, script: 0x5, flags: 0x0},
+ 201: {region: 0xef, script: 0x4f, flags: 0x0},
+ 202: {region: 0x97, script: 0x1f, flags: 0x0},
+ 203: {region: 0x97, script: 0xca, flags: 0x0},
+ 204: {region: 0x93, script: 0x4f, flags: 0x0},
+ 205: {region: 0xd7, script: 0x4f, flags: 0x0},
+ 206: {region: 0x12e, script: 0x2a, flags: 0x0},
+ 207: {region: 0xe, script: 0x2, flags: 0x1},
+ 208: {region: 0x97, script: 0xe, flags: 0x0},
+ 209: {region: 0x4d, script: 0x4f, flags: 0x0},
+ 210: {region: 0x97, script: 0x2d, flags: 0x0},
+ 211: {region: 0x40, script: 0x4f, flags: 0x0},
+ 212: {region: 0x53, script: 0x4f, flags: 0x0},
+ 213: {region: 0x7e, script: 0x4f, flags: 0x0},
+ 215: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 216: {region: 0x96, script: 0x4f, flags: 0x0},
+ 217: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 218: {region: 0x48, script: 0x4f, flags: 0x0},
+ 219: {region: 0x10, script: 0x3, flags: 0x1},
+ 220: {region: 0x52, script: 0x32, flags: 0x0},
+ 221: {region: 0x132, script: 0x4f, flags: 0x0},
+ 222: {region: 0x23, script: 0x5, flags: 0x0},
+ 223: {region: 0x95, script: 0x35, flags: 0x0},
+ 224: {region: 0x97, script: 0x1f, flags: 0x0},
+ 225: {region: 0x71, script: 0x4f, flags: 0x0},
+ 226: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 227: {region: 0x129, script: 0x37, flags: 0x0},
+ 228: {region: 0x52, script: 0x7b, flags: 0x0},
+ 229: {region: 0xe6, script: 0x5, flags: 0x0},
+ 230: {region: 0x97, script: 0x1f, flags: 0x0},
+ 231: {region: 0xad, script: 0x38, flags: 0x0},
+ 232: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 233: {region: 0xe6, script: 0x5, flags: 0x0},
+ 234: {region: 0xe4, script: 0x4f, flags: 0x0},
+ 235: {region: 0x97, script: 0x1f, flags: 0x0},
+ 236: {region: 0x97, script: 0x1f, flags: 0x0},
+ 237: {region: 0x8e, script: 0x4f, flags: 0x0},
+ 238: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 239: {region: 0x52, script: 0x32, flags: 0x0},
+ 240: {region: 0x8f, script: 0x4f, flags: 0x0},
+ 241: {region: 0x90, script: 0x4f, flags: 0x0},
+ 242: {region: 0x27, script: 0x8, flags: 0x0},
+ 243: {region: 0xd0, script: 0x4f, flags: 0x0},
+ 244: {region: 0x76, script: 0x4f, flags: 0x0},
+ 245: {region: 0xce, script: 0x4f, flags: 0x0},
+ 246: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 247: {region: 0x93, script: 0x4f, flags: 0x0},
+ 249: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 250: {region: 0x52, script: 0xd9, flags: 0x0},
+ 251: {region: 0x132, script: 0x4f, flags: 0x0},
+ 252: {region: 0x48, script: 0x4f, flags: 0x0},
+ 253: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 254: {region: 0x93, script: 0x4f, flags: 0x0},
+ 255: {region: 0x104, script: 0x1d, flags: 0x0},
+ 257: {region: 0x9b, script: 0x4f, flags: 0x0},
+ 258: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 259: {region: 0x48, script: 0x16, flags: 0x0},
+ 260: {region: 0x95, script: 0x35, flags: 0x0},
+ 261: {region: 0x104, script: 0x4f, flags: 0x0},
+ 262: {region: 0xa0, script: 0x3e, flags: 0x0},
+ 263: {region: 0x9e, script: 0x4f, flags: 0x0},
+ 265: {region: 0x51, script: 0x4f, flags: 0x0},
+ 266: {region: 0x12e, script: 0x35, flags: 0x0},
+ 267: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 268: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 269: {region: 0x62, script: 0x4f, flags: 0x0},
+ 270: {region: 0x93, script: 0x4f, flags: 0x0},
+ 271: {region: 0x93, script: 0x4f, flags: 0x0},
+ 272: {region: 0x7b, script: 0x28, flags: 0x0},
+ 273: {region: 0x134, script: 0x1d, flags: 0x0},
+ 274: {region: 0x66, script: 0x4f, flags: 0x0},
+ 275: {region: 0xc2, script: 0x4f, flags: 0x0},
+ 276: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 277: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 278: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 279: {region: 0x104, script: 0x1d, flags: 0x0},
+ 280: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 281: {region: 0x161, script: 0x4f, flags: 0x0},
+ 282: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 283: {region: 0x121, script: 0xcf, flags: 0x0},
+ 284: {region: 0x59, script: 0x4f, flags: 0x0},
+ 285: {region: 0x51, script: 0x4f, flags: 0x0},
+ 286: {region: 0x4e, script: 0x4f, flags: 0x0},
+ 287: {region: 0x97, script: 0x1f, flags: 0x0},
+ 288: {region: 0x97, script: 0x1f, flags: 0x0},
+ 289: {region: 0x4a, script: 0x4f, flags: 0x0},
+ 290: {region: 0x93, script: 0x4f, flags: 0x0},
+ 291: {region: 0x40, script: 0x4f, flags: 0x0},
+ 292: {region: 0x97, script: 0x4f, flags: 0x0},
+ 293: {region: 0x52, script: 0xc6, flags: 0x0},
+ 294: {region: 0x97, script: 0x1f, flags: 0x0},
+ 295: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 296: {region: 0x97, script: 0x67, flags: 0x0},
+ 297: {region: 0xe6, script: 0x5, flags: 0x0},
+ 298: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 299: {region: 0x129, script: 0x4f, flags: 0x0},
+ 300: {region: 0xd0, script: 0x4f, flags: 0x0},
+ 301: {region: 0xad, script: 0x4c, flags: 0x0},
+ 302: {region: 0x13, script: 0x6, flags: 0x1},
+ 303: {region: 0x51, script: 0x4f, flags: 0x0},
+ 304: {region: 0x80, script: 0x4f, flags: 0x0},
+ 305: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 306: {region: 0xa4, script: 0x43, flags: 0x0},
+ 307: {region: 0x29, script: 0x4f, flags: 0x0},
+ 308: {region: 0x97, script: 0x47, flags: 0x0},
+ 309: {region: 0xa9, script: 0x48, flags: 0x0},
+ 310: {region: 0x104, script: 0x1d, flags: 0x0},
+ 311: {region: 0x97, script: 0x1f, flags: 0x0},
+ 312: {region: 0x73, script: 0x4f, flags: 0x0},
+ 313: {region: 0xb2, script: 0x4f, flags: 0x0},
+ 315: {region: 0x104, script: 0x1d, flags: 0x0},
+ 316: {region: 0x110, script: 0x4f, flags: 0x0},
+ 317: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 318: {region: 0x104, script: 0x4f, flags: 0x0},
+ 319: {region: 0x97, script: 0x1f, flags: 0x0},
+ 320: {region: 0x97, script: 0x5, flags: 0x0},
+ 321: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 322: {region: 0x51, script: 0x4f, flags: 0x0},
+ 323: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 324: {region: 0x19, script: 0x3, flags: 0x1},
+ 325: {region: 0x104, script: 0x1d, flags: 0x0},
+ 326: {region: 0x104, script: 0x1d, flags: 0x0},
+ 327: {region: 0x93, script: 0x4f, flags: 0x0},
+ 328: {region: 0xe6, script: 0x5, flags: 0x0},
+ 329: {region: 0x79, script: 0x4f, flags: 0x0},
+ 330: {region: 0x121, script: 0xcf, flags: 0x0},
+ 331: {region: 0xe6, script: 0x5, flags: 0x0},
+ 332: {region: 0x1c, script: 0x5, flags: 0x1},
+ 333: {region: 0x135, script: 0x4f, flags: 0x0},
+ 334: {region: 0x85, script: 0x52, flags: 0x0},
+ 335: {region: 0x95, script: 0x35, flags: 0x0},
+ 336: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 337: {region: 0xe6, script: 0x5, flags: 0x0},
+ 338: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 339: {region: 0xb5, script: 0x4f, flags: 0x0},
+ 340: {region: 0x104, script: 0x1d, flags: 0x0},
+ 341: {region: 0x93, script: 0x4f, flags: 0x0},
+ 342: {region: 0x52, script: 0xcf, flags: 0x0},
+ 343: {region: 0x97, script: 0x50, flags: 0x0},
+ 344: {region: 0x104, script: 0x1d, flags: 0x0},
+ 345: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 346: {region: 0xd7, script: 0x4f, flags: 0x0},
+ 347: {region: 0x21, script: 0x2, flags: 0x1},
+ 348: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 349: {region: 0x52, script: 0x54, flags: 0x0},
+ 350: {region: 0x93, script: 0x4f, flags: 0x0},
+ 351: {region: 0x9a, script: 0x5, flags: 0x0},
+ 352: {region: 0x132, script: 0x4f, flags: 0x0},
+ 353: {region: 0x97, script: 0xca, flags: 0x0},
+ 354: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 355: {region: 0x4a, script: 0x4f, flags: 0x0},
+ 356: {region: 0xad, script: 0x4c, flags: 0x0},
+ 357: {region: 0x4a, script: 0x4f, flags: 0x0},
+ 358: {region: 0x15f, script: 0x4f, flags: 0x0},
+ 359: {region: 0x9a, script: 0x5, flags: 0x0},
+ 360: {region: 0xb4, script: 0x4f, flags: 0x0},
+ 361: {region: 0xb6, script: 0x4f, flags: 0x0},
+ 362: {region: 0x4a, script: 0x4f, flags: 0x0},
+ 363: {region: 0x4a, script: 0x4f, flags: 0x0},
+ 364: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 365: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 366: {region: 0x9a, script: 0x5, flags: 0x0},
+ 367: {region: 0xb6, script: 0x4f, flags: 0x0},
+ 368: {region: 0x121, script: 0xcf, flags: 0x0},
+ 369: {region: 0x52, script: 0x32, flags: 0x0},
+ 370: {region: 0x129, script: 0x4f, flags: 0x0},
+ 371: {region: 0x93, script: 0x4f, flags: 0x0},
+ 372: {region: 0x51, script: 0x4f, flags: 0x0},
+ 373: {region: 0x97, script: 0x1f, flags: 0x0},
+ 374: {region: 0x97, script: 0x1f, flags: 0x0},
+ 375: {region: 0x93, script: 0x4f, flags: 0x0},
+ 376: {region: 0x23, script: 0x3, flags: 0x1},
+ 377: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 378: {region: 0xcd, script: 0x4f, flags: 0x0},
+ 379: {region: 0x104, script: 0x1d, flags: 0x0},
+ 380: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 381: {region: 0x93, script: 0x4f, flags: 0x0},
+ 382: {region: 0x110, script: 0x4f, flags: 0x0},
+ 383: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 384: {region: 0x121, script: 0x5, flags: 0x0},
+ 385: {region: 0xca, script: 0x4f, flags: 0x0},
+ 386: {region: 0xbd, script: 0x4f, flags: 0x0},
+ 387: {region: 0xcf, script: 0x4f, flags: 0x0},
+ 388: {region: 0x51, script: 0x4f, flags: 0x0},
+ 389: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 390: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 391: {region: 0xbe, script: 0x4f, flags: 0x0},
+ 392: {region: 0xde, script: 0x4f, flags: 0x0},
+ 393: {region: 0x93, script: 0x4f, flags: 0x0},
+ 394: {region: 0x99, script: 0x34, flags: 0x0},
+ 395: {region: 0xc0, script: 0x1d, flags: 0x0},
+ 396: {region: 0x97, script: 0x60, flags: 0x0},
+ 397: {region: 0x109, script: 0x4f, flags: 0x0},
+ 398: {region: 0x26, script: 0x3, flags: 0x1},
+ 399: {region: 0x97, script: 0xe, flags: 0x0},
+ 400: {region: 0xc2, script: 0x67, flags: 0x0},
+ 402: {region: 0x48, script: 0x4f, flags: 0x0},
+ 403: {region: 0x48, script: 0x4f, flags: 0x0},
+ 404: {region: 0x36, script: 0x4f, flags: 0x0},
+ 405: {region: 0x97, script: 0x1f, flags: 0x0},
+ 406: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 407: {region: 0x104, script: 0x1d, flags: 0x0},
+ 408: {region: 0x34, script: 0x64, flags: 0x0},
+ 409: {region: 0x29, script: 0x3, flags: 0x1},
+ 410: {region: 0xc9, script: 0x4f, flags: 0x0},
+ 411: {region: 0x97, script: 0x1f, flags: 0x0},
+ 412: {region: 0x51, script: 0x4f, flags: 0x0},
+ 414: {region: 0x132, script: 0x4f, flags: 0x0},
+ 415: {region: 0xe6, script: 0x5, flags: 0x0},
+ 416: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 417: {region: 0x97, script: 0x1f, flags: 0x0},
+ 418: {region: 0x93, script: 0x4f, flags: 0x0},
+ 419: {region: 0x161, script: 0x4f, flags: 0x0},
+ 420: {region: 0xc2, script: 0x67, flags: 0x0},
+ 421: {region: 0x104, script: 0x1d, flags: 0x0},
+ 422: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 423: {region: 0x9a, script: 0x59, flags: 0x0},
+ 424: {region: 0x9a, script: 0x5, flags: 0x0},
+ 425: {region: 0xdb, script: 0x4f, flags: 0x0},
+ 427: {region: 0x52, script: 0x32, flags: 0x0},
+ 428: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 429: {region: 0xd0, script: 0x4f, flags: 0x0},
+ 430: {region: 0xd8, script: 0x4f, flags: 0x0},
+ 431: {region: 0xcd, script: 0x4f, flags: 0x0},
+ 432: {region: 0x161, script: 0x4f, flags: 0x0},
+ 433: {region: 0xcf, script: 0x4f, flags: 0x0},
+ 434: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 435: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 436: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 437: {region: 0xd0, script: 0x4f, flags: 0x0},
+ 438: {region: 0xcf, script: 0x4f, flags: 0x0},
+ 439: {region: 0xcd, script: 0x4f, flags: 0x0},
+ 440: {region: 0xcd, script: 0x4f, flags: 0x0},
+ 441: {region: 0x93, script: 0x4f, flags: 0x0},
+ 442: {region: 0xdd, script: 0x4f, flags: 0x0},
+ 443: {region: 0x97, script: 0x4f, flags: 0x0},
+ 444: {region: 0xd7, script: 0x4f, flags: 0x0},
+ 445: {region: 0x51, script: 0x4f, flags: 0x0},
+ 446: {region: 0xd8, script: 0x4f, flags: 0x0},
+ 447: {region: 0x51, script: 0x4f, flags: 0x0},
+ 448: {region: 0xd8, script: 0x4f, flags: 0x0},
+ 449: {region: 0x121, script: 0x4b, flags: 0x0},
+ 450: {region: 0x97, script: 0x1f, flags: 0x0},
+ 451: {region: 0x10a, script: 0xb1, flags: 0x0},
+ 452: {region: 0x82, script: 0x6b, flags: 0x0},
+ 453: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 454: {region: 0x48, script: 0x16, flags: 0x0},
+ 455: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 456: {region: 0x115, script: 0x4f, flags: 0x0},
+ 457: {region: 0x132, script: 0x4f, flags: 0x0},
+ 458: {region: 0x52, script: 0x4f, flags: 0x0},
+ 459: {region: 0xcc, script: 0x4f, flags: 0x0},
+ 460: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 461: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 462: {region: 0x7e, script: 0x4f, flags: 0x0},
+ 463: {region: 0x76, script: 0x4f, flags: 0x0},
+ 465: {region: 0x6e, script: 0x4f, flags: 0x0},
+ 466: {region: 0x97, script: 0x70, flags: 0x0},
+ 467: {region: 0x7b, script: 0x1d, flags: 0x0},
+ 468: {region: 0xc3, script: 0x6f, flags: 0x0},
+ 469: {region: 0x2c, script: 0x3, flags: 0x1},
+ 470: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 471: {region: 0x2f, script: 0x2, flags: 0x1},
+ 472: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 473: {region: 0x2f, script: 0x4f, flags: 0x0},
+ 474: {region: 0xee, script: 0x4f, flags: 0x0},
+ 475: {region: 0x76, script: 0x4f, flags: 0x0},
+ 476: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 477: {region: 0x132, script: 0x4f, flags: 0x0},
+ 478: {region: 0x48, script: 0x4f, flags: 0x0},
+ 479: {region: 0x9a, script: 0xd7, flags: 0x0},
+ 480: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 481: {region: 0xae, script: 0x7a, flags: 0x0},
+ 483: {region: 0x97, script: 0x11, flags: 0x0},
+ 484: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 485: {region: 0xe7, script: 0x4f, flags: 0x0},
+ 486: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 487: {region: 0x85, script: 0x2c, flags: 0x0},
+ 488: {region: 0x73, script: 0x4f, flags: 0x0},
+ 489: {region: 0xe6, script: 0x42, flags: 0x0},
+ 490: {region: 0x9a, script: 0x5, flags: 0x0},
+ 491: {region: 0x1, script: 0x4f, flags: 0x0},
+ 492: {region: 0x23, script: 0x5, flags: 0x0},
+ 493: {region: 0x40, script: 0x4f, flags: 0x0},
+ 494: {region: 0x78, script: 0x4f, flags: 0x0},
+ 495: {region: 0xe2, script: 0x4f, flags: 0x0},
+ 496: {region: 0x87, script: 0x4f, flags: 0x0},
+ 497: {region: 0x68, script: 0x4f, flags: 0x0},
+ 498: {region: 0x97, script: 0x1f, flags: 0x0},
+ 499: {region: 0x100, script: 0x4f, flags: 0x0},
+ 500: {region: 0x93, script: 0x4f, flags: 0x0},
+ 501: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 502: {region: 0x97, script: 0x4f, flags: 0x0},
+ 503: {region: 0x31, script: 0x2, flags: 0x1},
+ 504: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 505: {region: 0x34, script: 0xe, flags: 0x0},
+ 506: {region: 0x4d, script: 0x4f, flags: 0x0},
+ 507: {region: 0x70, script: 0x4f, flags: 0x0},
+ 508: {region: 0x4d, script: 0x4f, flags: 0x0},
+ 509: {region: 0x9a, script: 0x5, flags: 0x0},
+ 510: {region: 0x10a, script: 0x4f, flags: 0x0},
+ 511: {region: 0x39, script: 0x4f, flags: 0x0},
+ 512: {region: 0xcf, script: 0x4f, flags: 0x0},
+ 513: {region: 0x102, script: 0x4f, flags: 0x0},
+ 514: {region: 0x93, script: 0x4f, flags: 0x0},
+ 515: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 516: {region: 0x71, script: 0x4f, flags: 0x0},
+ 517: {region: 0x104, script: 0x1d, flags: 0x0},
+ 518: {region: 0x12e, script: 0x1d, flags: 0x0},
+ 519: {region: 0x107, script: 0x4f, flags: 0x0},
+ 520: {region: 0x105, script: 0x4f, flags: 0x0},
+ 521: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 522: {region: 0xa0, script: 0x41, flags: 0x0},
+ 523: {region: 0x97, script: 0x1f, flags: 0x0},
+ 524: {region: 0x7e, script: 0x4f, flags: 0x0},
+ 525: {region: 0x104, script: 0x1d, flags: 0x0},
+ 526: {region: 0xa2, script: 0x4f, flags: 0x0},
+ 527: {region: 0x93, script: 0x4f, flags: 0x0},
+ 528: {region: 0x97, script: 0x4f, flags: 0x0},
+ 529: {region: 0x97, script: 0xb5, flags: 0x0},
+ 530: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 531: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 532: {region: 0x97, script: 0x1f, flags: 0x0},
+ 533: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 534: {region: 0x79, script: 0x4f, flags: 0x0},
+ 535: {region: 0x48, script: 0x4f, flags: 0x0},
+ 536: {region: 0x33, script: 0x4, flags: 0x1},
+ 537: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 538: {region: 0x9a, script: 0x5, flags: 0x0},
+ 539: {region: 0xd8, script: 0x4f, flags: 0x0},
+ 540: {region: 0x4e, script: 0x4f, flags: 0x0},
+ 541: {region: 0xcf, script: 0x4f, flags: 0x0},
+ 542: {region: 0xcd, script: 0x4f, flags: 0x0},
+ 543: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 544: {region: 0x4b, script: 0x4f, flags: 0x0},
+ 545: {region: 0x94, script: 0x6d, flags: 0x0},
+ 546: {region: 0xb4, script: 0x4f, flags: 0x0},
+ 548: {region: 0xb8, script: 0xcc, flags: 0x0},
+ 549: {region: 0xc2, script: 0x67, flags: 0x0},
+ 550: {region: 0xb1, script: 0xbb, flags: 0x0},
+ 551: {region: 0x6e, script: 0x4f, flags: 0x0},
+ 552: {region: 0x10f, script: 0x4f, flags: 0x0},
+ 553: {region: 0xe6, script: 0x5, flags: 0x0},
+ 554: {region: 0x10d, script: 0x4f, flags: 0x0},
+ 555: {region: 0xe7, script: 0x4f, flags: 0x0},
+ 556: {region: 0x93, script: 0x4f, flags: 0x0},
+ 557: {region: 0x13f, script: 0x4f, flags: 0x0},
+ 558: {region: 0x10a, script: 0x4f, flags: 0x0},
+ 560: {region: 0x10a, script: 0x4f, flags: 0x0},
+ 561: {region: 0x70, script: 0x4f, flags: 0x0},
+ 562: {region: 0x95, script: 0xb2, flags: 0x0},
+ 563: {region: 0x70, script: 0x4f, flags: 0x0},
+ 564: {region: 0x161, script: 0x4f, flags: 0x0},
+ 565: {region: 0xc1, script: 0x4f, flags: 0x0},
+ 566: {region: 0x113, script: 0x4f, flags: 0x0},
+ 567: {region: 0x121, script: 0xcf, flags: 0x0},
+ 568: {region: 0x26, script: 0x4f, flags: 0x0},
+ 569: {region: 0x37, script: 0x5, flags: 0x1},
+ 570: {region: 0x97, script: 0xbc, flags: 0x0},
+ 571: {region: 0x114, script: 0x4f, flags: 0x0},
+ 572: {region: 0x112, script: 0x4f, flags: 0x0},
+ 573: {region: 0x97, script: 0x1f, flags: 0x0},
+ 574: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 575: {region: 0x6c, script: 0x4f, flags: 0x0},
+ 576: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 577: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 578: {region: 0x93, script: 0x4f, flags: 0x0},
+ 579: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 580: {region: 0x82, script: 0x4f, flags: 0x0},
+ 581: {region: 0x10a, script: 0x4f, flags: 0x0},
+ 582: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 583: {region: 0x15c, script: 0x5, flags: 0x0},
+ 584: {region: 0x4a, script: 0x4f, flags: 0x0},
+ 585: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 586: {region: 0x97, script: 0x1f, flags: 0x0},
+ 587: {region: 0x93, script: 0x4f, flags: 0x0},
+ 588: {region: 0x34, script: 0xe, flags: 0x0},
+ 589: {region: 0x99, script: 0xbf, flags: 0x0},
+ 590: {region: 0xe7, script: 0x4f, flags: 0x0},
+ 591: {region: 0x97, script: 0xc7, flags: 0x0},
+ 592: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 593: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 594: {region: 0x97, script: 0x47, flags: 0x0},
+ 595: {region: 0x52, script: 0xc5, flags: 0x0},
+ 596: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 597: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 598: {region: 0x97, script: 0xca, flags: 0x0},
+ 599: {region: 0x110, script: 0x4f, flags: 0x0},
+ 600: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 601: {region: 0x124, script: 0x4f, flags: 0x0},
+ 602: {region: 0x3c, script: 0x3, flags: 0x1},
+ 603: {region: 0x121, script: 0xcf, flags: 0x0},
+ 604: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 605: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 606: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 607: {region: 0x6e, script: 0x26, flags: 0x0},
+ 608: {region: 0x6c, script: 0x26, flags: 0x0},
+ 609: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 610: {region: 0x125, script: 0x4f, flags: 0x0},
+ 611: {region: 0x123, script: 0x4f, flags: 0x0},
+ 612: {region: 0x31, script: 0x4f, flags: 0x0},
+ 613: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 614: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 615: {region: 0x31, script: 0x4f, flags: 0x0},
+ 616: {region: 0xd2, script: 0x4f, flags: 0x0},
+ 617: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 618: {region: 0x127, script: 0x4f, flags: 0x0},
+ 619: {region: 0xcc, script: 0x4f, flags: 0x0},
+ 620: {region: 0xe4, script: 0x4f, flags: 0x0},
+ 621: {region: 0x129, script: 0x4f, flags: 0x0},
+ 622: {region: 0x129, script: 0x4f, flags: 0x0},
+ 623: {region: 0x12c, script: 0x4f, flags: 0x0},
+ 624: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 625: {region: 0x85, script: 0x2c, flags: 0x0},
+ 626: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 627: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 628: {region: 0x42, script: 0xd0, flags: 0x0},
+ 629: {region: 0x104, script: 0x1d, flags: 0x0},
+ 630: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 631: {region: 0x121, script: 0xcf, flags: 0x0},
+ 632: {region: 0x31, script: 0x4f, flags: 0x0},
+ 633: {region: 0xcc, script: 0x4f, flags: 0x0},
+ 634: {region: 0x12b, script: 0x4f, flags: 0x0},
+ 636: {region: 0xd2, script: 0x4f, flags: 0x0},
+ 637: {region: 0xe3, script: 0x4f, flags: 0x0},
+ 638: {region: 0x104, script: 0x1d, flags: 0x0},
+ 639: {region: 0xb8, script: 0x4f, flags: 0x0},
+ 640: {region: 0x104, script: 0x1d, flags: 0x0},
+ 641: {region: 0x3f, script: 0x4, flags: 0x1},
+ 642: {region: 0x11a, script: 0xd2, flags: 0x0},
+ 643: {region: 0x12e, script: 0x1d, flags: 0x0},
+ 644: {region: 0x73, script: 0x4f, flags: 0x0},
+ 645: {region: 0x29, script: 0x4f, flags: 0x0},
+ 647: {region: 0x43, script: 0x3, flags: 0x1},
+ 648: {region: 0x97, script: 0xe, flags: 0x0},
+ 649: {region: 0xe6, script: 0x5, flags: 0x0},
+ 650: {region: 0x46, script: 0x4, flags: 0x1},
+ 651: {region: 0xb2, script: 0xd3, flags: 0x0},
+ 652: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 653: {region: 0x9c, script: 0x4f, flags: 0x0},
+ 654: {region: 0x104, script: 0x4f, flags: 0x0},
+ 655: {region: 0x13b, script: 0x4f, flags: 0x0},
+ 656: {region: 0x119, script: 0x4f, flags: 0x0},
+ 657: {region: 0x35, script: 0x4f, flags: 0x0},
+ 658: {region: 0x5f, script: 0x4f, flags: 0x0},
+ 659: {region: 0xcf, script: 0x4f, flags: 0x0},
+ 660: {region: 0x1, script: 0x4f, flags: 0x0},
+ 661: {region: 0x104, script: 0x4f, flags: 0x0},
+ 662: {region: 0x69, script: 0x4f, flags: 0x0},
+ 663: {region: 0x12d, script: 0x4f, flags: 0x0},
+ 664: {region: 0x35, script: 0x4f, flags: 0x0},
+ 665: {region: 0x4d, script: 0x4f, flags: 0x0},
+ 666: {region: 0x6e, script: 0x26, flags: 0x0},
+ 667: {region: 0xe5, script: 0x4f, flags: 0x0},
+ 668: {region: 0x2e, script: 0x4f, flags: 0x0},
+ 669: {region: 0x97, script: 0xca, flags: 0x0},
+ 670: {region: 0x97, script: 0x1f, flags: 0x0},
+ 671: {region: 0x13d, script: 0x4f, flags: 0x0},
+ 672: {region: 0xa6, script: 0x5, flags: 0x0},
+ 673: {region: 0x112, script: 0x4f, flags: 0x0},
+ 674: {region: 0x97, script: 0x1f, flags: 0x0},
+ 675: {region: 0x52, script: 0x32, flags: 0x0},
+ 676: {region: 0x40, script: 0x4f, flags: 0x0},
+ 677: {region: 0x129, script: 0x17, flags: 0x0},
+ 678: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 679: {region: 0x129, script: 0x56, flags: 0x0},
+ 680: {region: 0x129, script: 0x57, flags: 0x0},
+ 681: {region: 0x7b, script: 0x28, flags: 0x0},
+ 682: {region: 0x52, script: 0x5a, flags: 0x0},
+ 683: {region: 0x109, script: 0x5e, flags: 0x0},
+ 684: {region: 0x106, script: 0x68, flags: 0x0},
+ 685: {region: 0x97, script: 0x1f, flags: 0x0},
+ 686: {region: 0x12f, script: 0x4f, flags: 0x0},
+ 687: {region: 0x9a, script: 0x7c, flags: 0x0},
+ 688: {region: 0x15b, script: 0xb4, flags: 0x0},
+ 689: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 690: {region: 0xcf, script: 0x4f, flags: 0x0},
+ 691: {region: 0x73, script: 0x4f, flags: 0x0},
+ 692: {region: 0x51, script: 0x4f, flags: 0x0},
+ 693: {region: 0x51, script: 0x4f, flags: 0x0},
+ 694: {region: 0x1, script: 0x35, flags: 0x0},
+ 695: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 696: {region: 0x40, script: 0x4f, flags: 0x0},
+ 697: {region: 0xcd, script: 0x4f, flags: 0x0},
+ 698: {region: 0x52, script: 0x4f, flags: 0x0},
+ 699: {region: 0x109, script: 0x4f, flags: 0x0},
+ 701: {region: 0xa6, script: 0x5, flags: 0x0},
+ 702: {region: 0xd7, script: 0x4f, flags: 0x0},
+ 703: {region: 0xb8, script: 0xcc, flags: 0x0},
+ 704: {region: 0x4a, script: 0x13, flags: 0x1},
+ 705: {region: 0xce, script: 0x4f, flags: 0x0},
+ 706: {region: 0x15e, script: 0x4f, flags: 0x0},
+ 708: {region: 0x129, script: 0x4f, flags: 0x0},
+}
+
+// likelyLangList holds lists info associated with likelyLang.
+// Size: 372 bytes, 93 elements
+var likelyLangList = [93]likelyScriptRegion{
+ 0: {region: 0x9a, script: 0x7, flags: 0x0},
+ 1: {region: 0x9f, script: 0x69, flags: 0x2},
+ 2: {region: 0x11a, script: 0x73, flags: 0x2},
+ 3: {region: 0x31, script: 0x4f, flags: 0x0},
+ 4: {region: 0x99, script: 0x5, flags: 0x4},
+ 5: {region: 0x9a, script: 0x5, flags: 0x4},
+ 6: {region: 0x104, script: 0x1d, flags: 0x4},
+ 7: {region: 0x9a, script: 0x5, flags: 0x2},
+ 8: {region: 0x97, script: 0xe, flags: 0x0},
+ 9: {region: 0x34, script: 0x15, flags: 0x2},
+ 10: {region: 0x104, script: 0x1d, flags: 0x0},
+ 11: {region: 0x37, script: 0x29, flags: 0x2},
+ 12: {region: 0x132, script: 0x4f, flags: 0x0},
+ 13: {region: 0x79, script: 0xb7, flags: 0x2},
+ 14: {region: 0x5c, script: 0x1c, flags: 0x0},
+ 15: {region: 0x85, script: 0x53, flags: 0x2},
+ 16: {region: 0xd4, script: 0x4f, flags: 0x0},
+ 17: {region: 0x51, script: 0x5, flags: 0x4},
+ 18: {region: 0x109, script: 0x5, flags: 0x4},
+ 19: {region: 0xac, script: 0x1d, flags: 0x0},
+ 20: {region: 0x23, script: 0x5, flags: 0x4},
+ 21: {region: 0x52, script: 0x5, flags: 0x4},
+ 22: {region: 0x9a, script: 0x5, flags: 0x4},
+ 23: {region: 0xc3, script: 0x5, flags: 0x4},
+ 24: {region: 0x52, script: 0x5, flags: 0x2},
+ 25: {region: 0x129, script: 0x4f, flags: 0x0},
+ 26: {region: 0xae, script: 0x5, flags: 0x4},
+ 27: {region: 0x99, script: 0x5, flags: 0x2},
+ 28: {region: 0xa3, script: 0x1d, flags: 0x0},
+ 29: {region: 0x52, script: 0x5, flags: 0x4},
+ 30: {region: 0x129, script: 0x4f, flags: 0x4},
+ 31: {region: 0x52, script: 0x5, flags: 0x2},
+ 32: {region: 0x129, script: 0x4f, flags: 0x2},
+ 33: {region: 0xd9, script: 0x1f, flags: 0x0},
+ 34: {region: 0x97, script: 0x51, flags: 0x2},
+ 35: {region: 0x81, script: 0x4f, flags: 0x0},
+ 36: {region: 0x82, script: 0x6b, flags: 0x4},
+ 37: {region: 0x82, script: 0x6b, flags: 0x2},
+ 38: {region: 0xc3, script: 0x1d, flags: 0x0},
+ 39: {region: 0x52, script: 0x62, flags: 0x4},
+ 40: {region: 0x52, script: 0x62, flags: 0x2},
+ 41: {region: 0xce, script: 0x4f, flags: 0x0},
+ 42: {region: 0x49, script: 0x5, flags: 0x4},
+ 43: {region: 0x93, script: 0x5, flags: 0x4},
+ 44: {region: 0x97, script: 0x2e, flags: 0x0},
+ 45: {region: 0xe6, script: 0x5, flags: 0x4},
+ 46: {region: 0xe6, script: 0x5, flags: 0x2},
+ 47: {region: 0x9a, script: 0x77, flags: 0x0},
+ 48: {region: 0x52, script: 0x78, flags: 0x2},
+ 49: {region: 0xb8, script: 0xcc, flags: 0x0},
+ 50: {region: 0xd7, script: 0x4f, flags: 0x4},
+ 51: {region: 0xe6, script: 0x5, flags: 0x0},
+ 52: {region: 0x97, script: 0x1f, flags: 0x2},
+ 53: {region: 0x97, script: 0x44, flags: 0x2},
+ 54: {region: 0x97, script: 0xba, flags: 0x2},
+ 55: {region: 0x103, script: 0x1d, flags: 0x0},
+ 56: {region: 0xbb, script: 0x4f, flags: 0x4},
+ 57: {region: 0x102, script: 0x4f, flags: 0x4},
+ 58: {region: 0x104, script: 0x4f, flags: 0x4},
+ 59: {region: 0x129, script: 0x4f, flags: 0x4},
+ 60: {region: 0x122, script: 0x1d, flags: 0x0},
+ 61: {region: 0xe6, script: 0x5, flags: 0x4},
+ 62: {region: 0xe6, script: 0x5, flags: 0x2},
+ 63: {region: 0x52, script: 0x5, flags: 0x0},
+ 64: {region: 0xac, script: 0x1d, flags: 0x4},
+ 65: {region: 0xc3, script: 0x1d, flags: 0x4},
+ 66: {region: 0xac, script: 0x1d, flags: 0x2},
+ 67: {region: 0x97, script: 0xe, flags: 0x0},
+ 68: {region: 0xd9, script: 0x1f, flags: 0x4},
+ 69: {region: 0xd9, script: 0x1f, flags: 0x2},
+ 70: {region: 0x134, script: 0x4f, flags: 0x0},
+ 71: {region: 0x23, script: 0x5, flags: 0x4},
+ 72: {region: 0x52, script: 0x1d, flags: 0x4},
+ 73: {region: 0x23, script: 0x5, flags: 0x2},
+ 74: {region: 0x52, script: 0x32, flags: 0x0},
+ 75: {region: 0x2e, script: 0x33, flags: 0x4},
+ 76: {region: 0x3d, script: 0x33, flags: 0x4},
+ 77: {region: 0x79, script: 0x33, flags: 0x4},
+ 78: {region: 0x7c, script: 0x33, flags: 0x4},
+ 79: {region: 0x8b, script: 0x33, flags: 0x4},
+ 80: {region: 0x93, script: 0x33, flags: 0x4},
+ 81: {region: 0xc4, script: 0x33, flags: 0x4},
+ 82: {region: 0xce, script: 0x33, flags: 0x4},
+ 83: {region: 0xe0, script: 0x33, flags: 0x4},
+ 84: {region: 0xe3, script: 0x33, flags: 0x4},
+ 85: {region: 0xe5, script: 0x33, flags: 0x4},
+ 86: {region: 0x114, script: 0x33, flags: 0x4},
+ 87: {region: 0x121, script: 0x33, flags: 0x4},
+ 88: {region: 0x12c, script: 0x33, flags: 0x4},
+ 89: {region: 0x132, script: 0x33, flags: 0x4},
+ 90: {region: 0x13b, script: 0x33, flags: 0x4},
+ 91: {region: 0x12c, script: 0x10, flags: 0x2},
+ 92: {region: 0x12c, script: 0x33, flags: 0x2},
+}
+
+type likelyLangScript struct {
+ lang uint16
+ script uint8
+ flags uint8
+}
+
+// likelyRegion is a lookup table, indexed by regionID, for the most likely
+// languages and scripts given incomplete information. If more entries exist
+// for a given regionID, lang and script are the index and size respectively
+// of the list in likelyRegionList.
+// TODO: exclude containers and user-definable regions from the list.
+// Size: 1420 bytes, 355 elements
+var likelyRegion = [355]likelyLangScript{
+ 33: {lang: 0x61, script: 0x4f, flags: 0x0},
+ 34: {lang: 0x15, script: 0x5, flags: 0x0},
+ 35: {lang: 0x0, script: 0x2, flags: 0x1},
+ 38: {lang: 0x2, script: 0x2, flags: 0x1},
+ 39: {lang: 0x4, script: 0x2, flags: 0x1},
+ 41: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 42: {lang: 0x0, script: 0x4f, flags: 0x0},
+ 43: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 44: {lang: 0x22d, script: 0x4f, flags: 0x0},
+ 45: {lang: 0x85, script: 0x4f, flags: 0x0},
+ 47: {lang: 0x1bc, script: 0x4f, flags: 0x0},
+ 48: {lang: 0x245, script: 0x4f, flags: 0x0},
+ 49: {lang: 0x24, script: 0x4f, flags: 0x0},
+ 50: {lang: 0x6, script: 0x2, flags: 0x1},
+ 52: {lang: 0x4b, script: 0xe, flags: 0x0},
+ 53: {lang: 0x1bc, script: 0x4f, flags: 0x0},
+ 54: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 55: {lang: 0x38, script: 0x1d, flags: 0x0},
+ 56: {lang: 0x15, script: 0x5, flags: 0x0},
+ 57: {lang: 0x1ff, script: 0x4f, flags: 0x0},
+ 58: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 59: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 61: {lang: 0x199, script: 0x4f, flags: 0x0},
+ 62: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 63: {lang: 0x1d9, script: 0x4f, flags: 0x0},
+ 64: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 66: {lang: 0x8, script: 0x2, flags: 0x1},
+ 68: {lang: 0x0, script: 0x4f, flags: 0x0},
+ 70: {lang: 0x2f, script: 0x1d, flags: 0x0},
+ 72: {lang: 0x2b6, script: 0x35, flags: 0x2},
+ 73: {lang: 0x199, script: 0x5, flags: 0x2},
+ 74: {lang: 0x246, script: 0x4f, flags: 0x0},
+ 75: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 76: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 77: {lang: 0x85, script: 0x4f, flags: 0x0},
+ 78: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 80: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 81: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 82: {lang: 0xa, script: 0x4, flags: 0x1},
+ 83: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 84: {lang: 0x0, script: 0x4f, flags: 0x0},
+ 85: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 88: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 89: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 90: {lang: 0x1d9, script: 0x4f, flags: 0x0},
+ 92: {lang: 0xe, script: 0x2, flags: 0x1},
+ 93: {lang: 0x79, script: 0x4f, flags: 0x0},
+ 95: {lang: 0x85, script: 0x4f, flags: 0x0},
+ 97: {lang: 0x1, script: 0x4f, flags: 0x0},
+ 98: {lang: 0x80, script: 0x4f, flags: 0x0},
+ 100: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 102: {lang: 0x10, script: 0x2, flags: 0x1},
+ 103: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 104: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 105: {lang: 0x9e, script: 0x4f, flags: 0x0},
+ 106: {lang: 0x15, script: 0x5, flags: 0x0},
+ 107: {lang: 0x15, script: 0x5, flags: 0x0},
+ 108: {lang: 0x25f, script: 0x26, flags: 0x0},
+ 109: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 110: {lang: 0x12, script: 0x2, flags: 0x1},
+ 112: {lang: 0xa7, script: 0x4f, flags: 0x0},
+ 113: {lang: 0xe1, script: 0x1f, flags: 0x2},
+ 116: {lang: 0xac, script: 0x4f, flags: 0x0},
+ 118: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 120: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 121: {lang: 0x14, script: 0x2, flags: 0x1},
+ 123: {lang: 0x16, script: 0x3, flags: 0x1},
+ 124: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 126: {lang: 0xd, script: 0x4f, flags: 0x0},
+ 128: {lang: 0x130, script: 0x4f, flags: 0x0},
+ 130: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 131: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 132: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 133: {lang: 0x19, script: 0x2, flags: 0x1},
+ 134: {lang: 0x0, script: 0x4f, flags: 0x0},
+ 135: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 137: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 139: {lang: 0x2c0, script: 0x33, flags: 0x0},
+ 140: {lang: 0x0, script: 0x4f, flags: 0x0},
+ 141: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 142: {lang: 0xed, script: 0x4f, flags: 0x0},
+ 143: {lang: 0xf0, script: 0x4f, flags: 0x0},
+ 144: {lang: 0xf1, script: 0x4f, flags: 0x0},
+ 146: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 147: {lang: 0x1b, script: 0x2, flags: 0x1},
+ 149: {lang: 0xdf, script: 0x35, flags: 0x0},
+ 151: {lang: 0x1d, script: 0x3, flags: 0x1},
+ 153: {lang: 0x15, script: 0x5, flags: 0x0},
+ 154: {lang: 0x20, script: 0x2, flags: 0x1},
+ 155: {lang: 0x101, script: 0x4f, flags: 0x0},
+ 156: {lang: 0x102, script: 0x4f, flags: 0x0},
+ 159: {lang: 0x15, script: 0x5, flags: 0x0},
+ 160: {lang: 0x106, script: 0x3e, flags: 0x0},
+ 162: {lang: 0x246, script: 0x4f, flags: 0x0},
+ 163: {lang: 0x14c, script: 0x1d, flags: 0x0},
+ 164: {lang: 0x22, script: 0x3, flags: 0x1},
+ 166: {lang: 0x25, script: 0x2, flags: 0x1},
+ 168: {lang: 0x135, script: 0x48, flags: 0x0},
+ 169: {lang: 0x135, script: 0x48, flags: 0x0},
+ 170: {lang: 0x15, script: 0x5, flags: 0x0},
+ 172: {lang: 0x205, script: 0x1d, flags: 0x0},
+ 173: {lang: 0x27, script: 0x2, flags: 0x1},
+ 174: {lang: 0x15, script: 0x5, flags: 0x0},
+ 176: {lang: 0x85, script: 0x4f, flags: 0x0},
+ 177: {lang: 0x226, script: 0xbb, flags: 0x0},
+ 179: {lang: 0x240, script: 0x4f, flags: 0x0},
+ 180: {lang: 0x168, script: 0x4f, flags: 0x0},
+ 181: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 182: {lang: 0x16f, script: 0x4f, flags: 0x0},
+ 183: {lang: 0x15, script: 0x5, flags: 0x0},
+ 184: {lang: 0x29, script: 0x2, flags: 0x1},
+ 185: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 186: {lang: 0x2b, script: 0x2, flags: 0x1},
+ 187: {lang: 0x239, script: 0x4f, flags: 0x0},
+ 188: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 189: {lang: 0x182, script: 0x4f, flags: 0x0},
+ 192: {lang: 0x2d, script: 0x2, flags: 0x1},
+ 193: {lang: 0x49, script: 0x4f, flags: 0x0},
+ 194: {lang: 0x2f, script: 0x2, flags: 0x1},
+ 195: {lang: 0x31, script: 0x2, flags: 0x1},
+ 196: {lang: 0x33, script: 0x2, flags: 0x1},
+ 198: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 199: {lang: 0x35, script: 0x2, flags: 0x1},
+ 201: {lang: 0x19a, script: 0x4f, flags: 0x0},
+ 202: {lang: 0x37, script: 0x3, flags: 0x1},
+ 203: {lang: 0x8f, script: 0xce, flags: 0x0},
+ 205: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 206: {lang: 0x199, script: 0x4f, flags: 0x0},
+ 207: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 208: {lang: 0xa, script: 0x4f, flags: 0x0},
+ 209: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 210: {lang: 0xdb, script: 0x4f, flags: 0x0},
+ 212: {lang: 0xdb, script: 0x5, flags: 0x2},
+ 214: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 215: {lang: 0x1bc, script: 0x4f, flags: 0x0},
+ 216: {lang: 0x1ae, script: 0x4f, flags: 0x0},
+ 217: {lang: 0x1b3, script: 0x1f, flags: 0x0},
+ 223: {lang: 0x15, script: 0x5, flags: 0x0},
+ 224: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 226: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 227: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 228: {lang: 0x26c, script: 0x4f, flags: 0x0},
+ 229: {lang: 0xa9, script: 0x4f, flags: 0x0},
+ 230: {lang: 0x3a, script: 0x3, flags: 0x1},
+ 231: {lang: 0x3d, script: 0x2, flags: 0x1},
+ 232: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 234: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 235: {lang: 0x15, script: 0x5, flags: 0x0},
+ 236: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 238: {lang: 0x1da, script: 0x4f, flags: 0x0},
+ 239: {lang: 0xc9, script: 0x4f, flags: 0x0},
+ 241: {lang: 0x15, script: 0x5, flags: 0x0},
+ 256: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 258: {lang: 0x3f, script: 0x2, flags: 0x1},
+ 259: {lang: 0x239, script: 0x1d, flags: 0x0},
+ 260: {lang: 0x41, script: 0x2, flags: 0x1},
+ 261: {lang: 0x208, script: 0x4f, flags: 0x0},
+ 262: {lang: 0x15, script: 0x5, flags: 0x0},
+ 264: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 265: {lang: 0x15, script: 0x5, flags: 0x0},
+ 266: {lang: 0x43, script: 0x2, flags: 0x1},
+ 269: {lang: 0x22a, script: 0x4f, flags: 0x0},
+ 270: {lang: 0x1ae, script: 0x4f, flags: 0x0},
+ 271: {lang: 0x45, script: 0x2, flags: 0x1},
+ 273: {lang: 0x102, script: 0x4f, flags: 0x0},
+ 274: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 275: {lang: 0x236, script: 0x4f, flags: 0x0},
+ 276: {lang: 0x1bc, script: 0x4f, flags: 0x0},
+ 278: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 280: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 282: {lang: 0x47, script: 0x2, flags: 0x1},
+ 286: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 287: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 288: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 289: {lang: 0x49, script: 0x3, flags: 0x1},
+ 290: {lang: 0x4c, script: 0x2, flags: 0x1},
+ 291: {lang: 0x263, script: 0x4f, flags: 0x0},
+ 292: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 293: {lang: 0x262, script: 0x4f, flags: 0x0},
+ 294: {lang: 0x4e, script: 0x2, flags: 0x1},
+ 295: {lang: 0x26a, script: 0x4f, flags: 0x0},
+ 297: {lang: 0x50, script: 0x4, flags: 0x1},
+ 299: {lang: 0x27a, script: 0x4f, flags: 0x0},
+ 300: {lang: 0x54, script: 0x2, flags: 0x1},
+ 301: {lang: 0x246, script: 0x4f, flags: 0x0},
+ 302: {lang: 0x56, script: 0x3, flags: 0x1},
+ 303: {lang: 0x246, script: 0x4f, flags: 0x0},
+ 306: {lang: 0x2b6, script: 0x35, flags: 0x2},
+ 307: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 308: {lang: 0x28a, script: 0x4f, flags: 0x0},
+ 309: {lang: 0x102, script: 0x4f, flags: 0x0},
+ 312: {lang: 0x9c, script: 0x4f, flags: 0x0},
+ 315: {lang: 0x28f, script: 0x4f, flags: 0x0},
+ 316: {lang: 0x41, script: 0x4f, flags: 0x0},
+ 317: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 319: {lang: 0x22d, script: 0x4f, flags: 0x0},
+ 330: {lang: 0x59, script: 0x2, flags: 0x1},
+ 347: {lang: 0x15, script: 0x5, flags: 0x0},
+ 348: {lang: 0x5b, script: 0x2, flags: 0x1},
+ 353: {lang: 0x234, script: 0x4f, flags: 0x0},
+}
+
+// likelyRegionList holds lists info associated with likelyRegion.
+// Size: 372 bytes, 93 elements
+var likelyRegionList = [93]likelyLangScript{
+ 0: {lang: 0xa3, script: 0x5, flags: 0x0},
+ 1: {lang: 0x262, script: 0x4f, flags: 0x0},
+ 2: {lang: 0x238, script: 0x4f, flags: 0x0},
+ 3: {lang: 0x18b, script: 0x1d, flags: 0x0},
+ 4: {lang: 0xf2, script: 0x8, flags: 0x0},
+ 5: {lang: 0x144, script: 0x4f, flags: 0x0},
+ 6: {lang: 0x54, script: 0x4f, flags: 0x0},
+ 7: {lang: 0x239, script: 0x1d, flags: 0x0},
+ 8: {lang: 0x92, script: 0xd0, flags: 0x0},
+ 9: {lang: 0x1b3, script: 0x1f, flags: 0x0},
+ 10: {lang: 0x2c0, script: 0x32, flags: 0x0},
+ 11: {lang: 0x281, script: 0x5, flags: 0x0},
+ 12: {lang: 0x2ba, script: 0x4f, flags: 0x0},
+ 13: {lang: 0x156, script: 0xcf, flags: 0x0},
+ 14: {lang: 0x99, script: 0x2c, flags: 0x0},
+ 15: {lang: 0x26d, script: 0x4f, flags: 0x0},
+ 16: {lang: 0x15, script: 0x5, flags: 0x0},
+ 17: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 18: {lang: 0x11, script: 0x26, flags: 0x0},
+ 19: {lang: 0x9a, script: 0x4f, flags: 0x0},
+ 20: {lang: 0x140, script: 0x5, flags: 0x2},
+ 21: {lang: 0x2b6, script: 0x35, flags: 0x2},
+ 22: {lang: 0x110, script: 0x28, flags: 0x0},
+ 23: {lang: 0x2, script: 0x1d, flags: 0x0},
+ 24: {lang: 0x144, script: 0x4f, flags: 0x0},
+ 25: {lang: 0x99, script: 0x2c, flags: 0x0},
+ 26: {lang: 0x18b, script: 0x1d, flags: 0x0},
+ 27: {lang: 0xf7, script: 0x4f, flags: 0x0},
+ 28: {lang: 0x199, script: 0x5, flags: 0x0},
+ 29: {lang: 0xe0, script: 0x1f, flags: 0x0},
+ 30: {lang: 0x289, script: 0x5, flags: 0x0},
+ 31: {lang: 0x128, script: 0x67, flags: 0x0},
+ 32: {lang: 0xa3, script: 0x5, flags: 0x0},
+ 33: {lang: 0x262, script: 0x4f, flags: 0x0},
+ 34: {lang: 0x132, script: 0x43, flags: 0x0},
+ 35: {lang: 0x6d, script: 0x5, flags: 0x0},
+ 36: {lang: 0x11b, script: 0xcf, flags: 0x0},
+ 37: {lang: 0x15, script: 0x5, flags: 0x0},
+ 38: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 39: {lang: 0x164, script: 0x4c, flags: 0x0},
+ 40: {lang: 0x11b, script: 0xcf, flags: 0x0},
+ 41: {lang: 0x15, script: 0x5, flags: 0x0},
+ 42: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 43: {lang: 0x201, script: 0x4f, flags: 0x0},
+ 44: {lang: 0x283, script: 0x1d, flags: 0x0},
+ 45: {lang: 0x18b, script: 0x1d, flags: 0x0},
+ 46: {lang: 0x238, script: 0x4f, flags: 0x0},
+ 47: {lang: 0x1a4, script: 0x67, flags: 0x0},
+ 48: {lang: 0x113, script: 0x4f, flags: 0x0},
+ 49: {lang: 0x18e, script: 0x1d, flags: 0x0},
+ 50: {lang: 0x12e, script: 0x5, flags: 0x0},
+ 51: {lang: 0x2c0, script: 0x33, flags: 0x0},
+ 52: {lang: 0x1ed, script: 0x4f, flags: 0x0},
+ 53: {lang: 0x15, script: 0x5, flags: 0x0},
+ 54: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 55: {lang: 0x181, script: 0x4f, flags: 0x0},
+ 56: {lang: 0x289, script: 0x5, flags: 0x0},
+ 57: {lang: 0x40, script: 0x1f, flags: 0x0},
+ 58: {lang: 0x289, script: 0x5, flags: 0x0},
+ 59: {lang: 0x289, script: 0x5, flags: 0x0},
+ 60: {lang: 0x58, script: 0x1f, flags: 0x0},
+ 61: {lang: 0x1e5, script: 0x4f, flags: 0x0},
+ 62: {lang: 0x2f, script: 0x1d, flags: 0x0},
+ 63: {lang: 0x201, script: 0x4f, flags: 0x0},
+ 64: {lang: 0x38, script: 0x1d, flags: 0x0},
+ 65: {lang: 0x205, script: 0x1d, flags: 0x0},
+ 66: {lang: 0x13e, script: 0x4f, flags: 0x0},
+ 67: {lang: 0x245, script: 0x4f, flags: 0x0},
+ 68: {lang: 0x2b6, script: 0x35, flags: 0x0},
+ 69: {lang: 0x228, script: 0x4f, flags: 0x0},
+ 70: {lang: 0x283, script: 0x1d, flags: 0x0},
+ 71: {lang: 0x15, script: 0x5, flags: 0x0},
+ 72: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 73: {lang: 0x25b, script: 0xcf, flags: 0x0},
+ 74: {lang: 0x180, script: 0x5, flags: 0x0},
+ 75: {lang: 0x190, script: 0x67, flags: 0x0},
+ 76: {lang: 0x25a, script: 0x1d, flags: 0x0},
+ 77: {lang: 0xa3, script: 0x5, flags: 0x0},
+ 78: {lang: 0x15, script: 0x5, flags: 0x0},
+ 79: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 80: {lang: 0x26d, script: 0x4f, flags: 0x0},
+ 81: {lang: 0x24, script: 0x5, flags: 0x0},
+ 82: {lang: 0x117, script: 0x1d, flags: 0x0},
+ 83: {lang: 0x3b, script: 0x2c, flags: 0x0},
+ 84: {lang: 0x2c0, script: 0x33, flags: 0x0},
+ 85: {lang: 0x26f, script: 0x4f, flags: 0x0},
+ 86: {lang: 0x283, script: 0x1d, flags: 0x0},
+ 87: {lang: 0x2b6, script: 0x35, flags: 0x0},
+ 88: {lang: 0x1e5, script: 0x4f, flags: 0x0},
+ 89: {lang: 0x238, script: 0x4f, flags: 0x0},
+ 90: {lang: 0x239, script: 0x1d, flags: 0x0},
+ 91: {lang: 0xae, script: 0x4f, flags: 0x0},
+ 92: {lang: 0x247, script: 0x5, flags: 0x0},
+}
+
+type likelyTag struct {
+ lang uint16
+ region uint16
+ script uint8
+}
+
+// Size: 192 bytes, 32 elements
+var likelyRegionGroup = [32]likelyTag{
+ 1: {lang: 0x9a, region: 0xd4, script: 0x4f},
+ 2: {lang: 0x9a, region: 0x132, script: 0x4f},
+ 3: {lang: 0x1ed, region: 0x40, script: 0x4f},
+ 4: {lang: 0x9a, region: 0x2e, script: 0x4f},
+ 5: {lang: 0x9a, region: 0xd4, script: 0x4f},
+ 6: {lang: 0x9c, region: 0xcd, script: 0x4f},
+ 7: {lang: 0x246, region: 0x12d, script: 0x4f},
+ 8: {lang: 0x15, region: 0x6a, script: 0x5},
+ 9: {lang: 0x246, region: 0x4a, script: 0x4f},
+ 10: {lang: 0x9a, region: 0x15e, script: 0x4f},
+ 11: {lang: 0x9a, region: 0x132, script: 0x4f},
+ 12: {lang: 0x9a, region: 0x132, script: 0x4f},
+ 13: {lang: 0x9c, region: 0x58, script: 0x4f},
+ 14: {lang: 0x2c0, region: 0x52, script: 0x32},
+ 15: {lang: 0xe0, region: 0x97, script: 0x1f},
+ 16: {lang: 0xf7, region: 0x93, script: 0x4f},
+ 17: {lang: 0x102, region: 0x9c, script: 0x4f},
+ 18: {lang: 0x9a, region: 0x2e, script: 0x4f},
+ 19: {lang: 0x9a, region: 0xe4, script: 0x4f},
+ 20: {lang: 0x9a, region: 0x88, script: 0x4f},
+ 21: {lang: 0x22d, region: 0x13f, script: 0x4f},
+ 22: {lang: 0x2c0, region: 0x52, script: 0x32},
+ 23: {lang: 0x28a, region: 0x134, script: 0x4f},
+ 24: {lang: 0x15, region: 0x106, script: 0x5},
+ 25: {lang: 0x205, region: 0x104, script: 0x1d},
+ 26: {lang: 0x205, region: 0x104, script: 0x1d},
+ 27: {lang: 0x9a, region: 0x79, script: 0x4f},
+ 28: {lang: 0x85, region: 0x5f, script: 0x4f},
+ 29: {lang: 0x9c, region: 0x1e, script: 0x4f},
+ 30: {lang: 0x9a, region: 0x98, script: 0x4f},
+ 31: {lang: 0x9a, region: 0x79, script: 0x4f},
+}
+
+type mutualIntelligibility struct {
+ want uint16
+ have uint16
+ conf uint8
+ oneway bool
+}
+
+type scriptIntelligibility struct {
+ lang uint16
+ want uint8
+ have uint8
+ conf uint8
+}
+
+// matchLang holds pairs of langIDs of base languages that are typically
+// mutually intelligible. Each pair is associated with a confidence and
+// whether the intelligibility goes one or both ways.
+// Size: 708 bytes, 118 elements
+var matchLang = [118]mutualIntelligibility{
+ 0: {want: 0x1c0, have: 0x1ae, conf: 0x2, oneway: false},
+ 1: {want: 0x144, have: 0x6f, conf: 0x2, oneway: false},
+ 2: {want: 0xed, have: 0x54, conf: 0x2, oneway: false},
+ 3: {want: 0x223, have: 0x54, conf: 0x2, oneway: false},
+ 4: {want: 0x239, have: 0x54, conf: 0x2, oneway: false},
+ 5: {want: 0x223, have: 0xed, conf: 0x2, oneway: false},
+ 6: {want: 0x239, have: 0xed, conf: 0x2, oneway: false},
+ 7: {want: 0x223, have: 0x239, conf: 0x2, oneway: false},
+ 8: {want: 0x23f, have: 0x1, conf: 0x2, oneway: false},
+ 9: {want: 0xd1, have: 0x85, conf: 0x2, oneway: true},
+ 10: {want: 0x153, have: 0x85, conf: 0x2, oneway: true},
+ 11: {want: 0x80, have: 0x1c0, conf: 0x2, oneway: false},
+ 12: {want: 0x80, have: 0x1ae, conf: 0x2, oneway: false},
+ 13: {want: 0x6f, have: 0x144, conf: 0x2, oneway: false},
+ 14: {want: 0x2, have: 0x205, conf: 0x2, oneway: true},
+ 15: {want: 0x5, have: 0x9a, conf: 0x2, oneway: true},
+ 16: {want: 0xa, have: 0x1bc, conf: 0x2, oneway: true},
+ 17: {want: 0xd, have: 0x9a, conf: 0x2, oneway: true},
+ 18: {want: 0x23, have: 0x9c, conf: 0x2, oneway: true},
+ 19: {want: 0x24, have: 0x205, conf: 0x2, oneway: true},
+ 20: {want: 0x2f, have: 0x205, conf: 0x2, oneway: true},
+ 21: {want: 0x31, have: 0x9a, conf: 0x2, oneway: true},
+ 22: {want: 0x3c, have: 0xe0, conf: 0x2, oneway: true},
+ 23: {want: 0x4b, have: 0x9a, conf: 0x2, oneway: true},
+ 24: {want: 0x50, have: 0xae, conf: 0x2, oneway: true},
+ 25: {want: 0x65, have: 0xa9, conf: 0x2, oneway: true},
+ 26: {want: 0x6c, have: 0x9a, conf: 0x2, oneway: true},
+ 27: {want: 0x6f, have: 0x15, conf: 0x2, oneway: true},
+ 28: {want: 0x70, have: 0xae, conf: 0x2, oneway: true},
+ 29: {want: 0x78, have: 0xae, conf: 0x2, oneway: true},
+ 30: {want: 0x7f, have: 0x9a, conf: 0x2, oneway: true},
+ 31: {want: 0x94, have: 0x9a, conf: 0x2, oneway: true},
+ 32: {want: 0x9b, have: 0x9a, conf: 0x2, oneway: true},
+ 33: {want: 0x9e, have: 0xa7, conf: 0x2, oneway: true},
+ 34: {want: 0xa0, have: 0x9c, conf: 0x2, oneway: true},
+ 35: {want: 0xac, have: 0x80, conf: 0x2, oneway: true},
+ 36: {want: 0xb8, have: 0x1bc, conf: 0x2, oneway: true},
+ 37: {want: 0xb9, have: 0x9a, conf: 0x2, oneway: true},
+ 38: {want: 0xba, have: 0x9a, conf: 0x2, oneway: true},
+ 39: {want: 0xc1, have: 0x9a, conf: 0x2, oneway: true},
+ 40: {want: 0xc7, have: 0x9c, conf: 0x2, oneway: true},
+ 41: {want: 0xc9, have: 0x9c, conf: 0x2, oneway: true},
+ 42: {want: 0xd2, have: 0xe0, conf: 0x2, oneway: true},
+ 43: {want: 0xdb, have: 0x9a, conf: 0x2, oneway: true},
+ 44: {want: 0xdd, have: 0x9a, conf: 0x2, oneway: true},
+ 45: {want: 0xf0, have: 0xae, conf: 0x2, oneway: true},
+ 46: {want: 0xf2, have: 0x205, conf: 0x2, oneway: true},
+ 47: {want: 0xf4, have: 0x9a, conf: 0x2, oneway: true},
+ 48: {want: 0xf9, have: 0x9a, conf: 0x2, oneway: true},
+ 49: {want: 0x101, have: 0x9a, conf: 0x2, oneway: true},
+ 50: {want: 0x10e, have: 0xf7, conf: 0x2, oneway: true},
+ 51: {want: 0x110, have: 0x9a, conf: 0x2, oneway: true},
+ 52: {want: 0x121, have: 0xae, conf: 0x2, oneway: true},
+ 53: {want: 0x12e, have: 0x205, conf: 0x2, oneway: true},
+ 54: {want: 0x132, have: 0x9a, conf: 0x2, oneway: true},
+ 55: {want: 0x134, have: 0x9a, conf: 0x2, oneway: true},
+ 56: {want: 0x13c, have: 0x9a, conf: 0x2, oneway: true},
+ 57: {want: 0x144, have: 0x26d, conf: 0x2, oneway: true},
+ 58: {want: 0x14c, have: 0x205, conf: 0x2, oneway: true},
+ 59: {want: 0x14d, have: 0x102, conf: 0x2, oneway: true},
+ 60: {want: 0x159, have: 0x9a, conf: 0x2, oneway: true},
+ 61: {want: 0x163, have: 0xae, conf: 0x2, oneway: true},
+ 62: {want: 0x164, have: 0x9a, conf: 0x2, oneway: true},
+ 63: {want: 0x166, have: 0x9a, conf: 0x2, oneway: true},
+ 64: {want: 0x16b, have: 0xae, conf: 0x2, oneway: true},
+ 65: {want: 0x181, have: 0x9a, conf: 0x2, oneway: true},
+ 66: {want: 0x182, have: 0xae, conf: 0x2, oneway: true},
+ 67: {want: 0x188, have: 0x9a, conf: 0x2, oneway: true},
+ 68: {want: 0x18b, have: 0x38, conf: 0x2, oneway: true},
+ 69: {want: 0x18c, have: 0x9a, conf: 0x2, oneway: true},
+ 70: {want: 0x18e, have: 0x205, conf: 0x2, oneway: true},
+ 71: {want: 0x195, have: 0xe0, conf: 0x2, oneway: true},
+ 72: {want: 0x199, have: 0xf7, conf: 0x2, oneway: true},
+ 73: {want: 0x19a, have: 0x9a, conf: 0x2, oneway: true},
+ 74: {want: 0x1a4, have: 0x9a, conf: 0x2, oneway: true},
+ 75: {want: 0x1b3, have: 0x9a, conf: 0x2, oneway: true},
+ 76: {want: 0x1be, have: 0x1ae, conf: 0x2, oneway: false},
+ 77: {want: 0x1be, have: 0x1c0, conf: 0x2, oneway: true},
+ 78: {want: 0x1c7, have: 0x9a, conf: 0x2, oneway: true},
+ 79: {want: 0x1cb, have: 0x9a, conf: 0x2, oneway: true},
+ 80: {want: 0x1cd, have: 0x9a, conf: 0x2, oneway: true},
+ 81: {want: 0x1cf, have: 0xae, conf: 0x2, oneway: true},
+ 82: {want: 0x1d1, have: 0x9a, conf: 0x2, oneway: true},
+ 83: {want: 0x1d2, have: 0x9a, conf: 0x2, oneway: true},
+ 84: {want: 0x1d5, have: 0x9a, conf: 0x2, oneway: true},
+ 85: {want: 0x1dc, have: 0x9a, conf: 0x2, oneway: true},
+ 86: {want: 0x1ec, have: 0x9a, conf: 0x2, oneway: true},
+ 87: {want: 0x1ef, have: 0x9c, conf: 0x2, oneway: true},
+ 88: {want: 0x1fa, have: 0x85, conf: 0x2, oneway: true},
+ 89: {want: 0x1ff, have: 0x9a, conf: 0x2, oneway: true},
+ 90: {want: 0x208, have: 0xae, conf: 0x2, oneway: true},
+ 91: {want: 0x20b, have: 0xe0, conf: 0x2, oneway: true},
+ 92: {want: 0x218, have: 0x9a, conf: 0x2, oneway: true},
+ 93: {want: 0x226, have: 0x9a, conf: 0x2, oneway: true},
+ 94: {want: 0x234, have: 0x9a, conf: 0x2, oneway: true},
+ 95: {want: 0x236, have: 0x9a, conf: 0x2, oneway: true},
+ 96: {want: 0x238, have: 0x9a, conf: 0x2, oneway: true},
+ 97: {want: 0x240, have: 0x9a, conf: 0x2, oneway: true},
+ 98: {want: 0x242, have: 0xf7, conf: 0x2, oneway: true},
+ 99: {want: 0x246, have: 0x9a, conf: 0x2, oneway: true},
+ 100: {want: 0x24f, have: 0x9a, conf: 0x2, oneway: true},
+ 101: {want: 0x256, have: 0x9a, conf: 0x2, oneway: true},
+ 102: {want: 0x25a, have: 0x205, conf: 0x2, oneway: true},
+ 103: {want: 0x25f, have: 0x9a, conf: 0x2, oneway: true},
+ 104: {want: 0x262, have: 0x205, conf: 0x2, oneway: true},
+ 105: {want: 0x3616, have: 0x9a, conf: 0x2, oneway: true},
+ 106: {want: 0x269, have: 0x9a, conf: 0x2, oneway: true},
+ 107: {want: 0x26a, have: 0x9a, conf: 0x2, oneway: true},
+ 108: {want: 0x275, have: 0x205, conf: 0x2, oneway: true},
+ 109: {want: 0x279, have: 0x9a, conf: 0x2, oneway: true},
+ 110: {want: 0x281, have: 0x2c0, conf: 0x2, oneway: true},
+ 111: {want: 0x289, have: 0x9a, conf: 0x2, oneway: true},
+ 112: {want: 0x28a, have: 0x205, conf: 0x2, oneway: true},
+ 113: {want: 0x2a1, have: 0xae, conf: 0x2, oneway: true},
+ 114: {want: 0x2a6, have: 0x9a, conf: 0x2, oneway: true},
+ 115: {want: 0x2b6, have: 0x9a, conf: 0x2, oneway: true},
+ 116: {want: 0x2b7, have: 0x9a, conf: 0x2, oneway: true},
+ 117: {want: 0x2c2, have: 0x9a, conf: 0x2, oneway: true},
+}
+
+// matchScript holds pairs of scriptIDs where readers of one script
+// can typically also read the other. Each is associated with a confidence.
+// Size: 24 bytes, 4 elements
+var matchScript = [4]scriptIntelligibility{
+ 0: {lang: 0x239, want: 0x4f, have: 0x1d, conf: 0x2},
+ 1: {lang: 0x239, want: 0x1d, have: 0x4f, conf: 0x2},
+ 2: {lang: 0x0, want: 0x32, have: 0x33, conf: 0x1},
+ 3: {lang: 0x0, want: 0x33, have: 0x32, conf: 0x1},
+}
+
+// Size: 128 bytes, 32 elements
+var regionContainment = [32]uint32{
+ 0xffffffff, 0x000007a2, 0x00003044, 0x00000008,
+ 0x403c0010, 0x00000020, 0x00000040, 0x00000080,
+ 0x00000100, 0x00000200, 0x00000400, 0x2000384c,
+ 0x00001000, 0x00002000, 0x00004000, 0x00008000,
+ 0x00010000, 0x00020000, 0x00040000, 0x00080000,
+ 0x00100000, 0x00200000, 0x01c1c000, 0x00800000,
+ 0x01000000, 0x1e020000, 0x04000000, 0x08000000,
+ 0x10000000, 0x20002048, 0x40000000, 0x80000000,
+}
+
+// regionInclusion maps region identifiers to sets of regions in regionInclusionBits,
+// where each set holds all groupings that are directly connected in a region
+// containment graph.
+// Size: 355 bytes, 355 elements
+var regionInclusion = [355]uint8{
+ // Entry 0 - 3F
+ 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
+ 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
+ 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+ 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x20,
+ 0x21, 0x22, 0x23, 0x24, 0x25, 0x25, 0x22, 0x23,
+ 0x25, 0x26, 0x21, 0x27, 0x28, 0x29, 0x2a, 0x25,
+ 0x2b, 0x23, 0x22, 0x25, 0x24, 0x29, 0x2c, 0x2d,
+ 0x23, 0x2e, 0x2c, 0x25, 0x2f, 0x30, 0x27, 0x25,
+ // Entry 40 - 7F
+ 0x27, 0x25, 0x24, 0x30, 0x21, 0x31, 0x32, 0x33,
+ 0x2f, 0x21, 0x26, 0x26, 0x26, 0x34, 0x2c, 0x28,
+ 0x27, 0x26, 0x35, 0x27, 0x21, 0x33, 0x22, 0x20,
+ 0x25, 0x2c, 0x25, 0x21, 0x36, 0x2d, 0x34, 0x29,
+ 0x21, 0x2e, 0x37, 0x25, 0x25, 0x20, 0x38, 0x38,
+ 0x27, 0x37, 0x38, 0x38, 0x2e, 0x39, 0x2e, 0x1f,
+ 0x37, 0x3a, 0x27, 0x3b, 0x2b, 0x20, 0x29, 0x34,
+ 0x26, 0x37, 0x25, 0x23, 0x27, 0x2b, 0x2c, 0x22,
+ // Entry 80 - BF
+ 0x2f, 0x2c, 0x2c, 0x25, 0x26, 0x39, 0x21, 0x33,
+ 0x3b, 0x2c, 0x27, 0x35, 0x21, 0x33, 0x39, 0x25,
+ 0x2d, 0x20, 0x38, 0x30, 0x37, 0x23, 0x2b, 0x24,
+ 0x21, 0x23, 0x24, 0x2b, 0x39, 0x2b, 0x25, 0x23,
+ 0x35, 0x20, 0x2e, 0x3c, 0x30, 0x3b, 0x2e, 0x25,
+ 0x35, 0x35, 0x23, 0x25, 0x3c, 0x30, 0x23, 0x25,
+ 0x34, 0x24, 0x2c, 0x31, 0x37, 0x29, 0x37, 0x38,
+ 0x38, 0x34, 0x32, 0x22, 0x25, 0x2e, 0x3b, 0x20,
+ // Entry C0 - FF
+ 0x22, 0x2c, 0x30, 0x35, 0x35, 0x3b, 0x25, 0x2c,
+ 0x25, 0x39, 0x2e, 0x24, 0x2e, 0x33, 0x30, 0x2e,
+ 0x31, 0x3a, 0x2c, 0x2a, 0x2c, 0x20, 0x33, 0x29,
+ 0x2b, 0x24, 0x20, 0x3b, 0x23, 0x28, 0x2a, 0x23,
+ 0x33, 0x20, 0x27, 0x28, 0x3a, 0x30, 0x24, 0x2d,
+ 0x2f, 0x28, 0x25, 0x23, 0x39, 0x20, 0x3b, 0x27,
+ 0x20, 0x23, 0x20, 0x20, 0x1e, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ // Entry 100 - 13F
+ 0x2e, 0x20, 0x2d, 0x22, 0x32, 0x2e, 0x23, 0x3a,
+ 0x2e, 0x38, 0x37, 0x30, 0x2c, 0x39, 0x2b, 0x2d,
+ 0x2c, 0x22, 0x2c, 0x2e, 0x27, 0x38, 0x26, 0x32,
+ 0x33, 0x25, 0x23, 0x31, 0x21, 0x25, 0x26, 0x21,
+ 0x2c, 0x30, 0x3c, 0x28, 0x30, 0x3c, 0x38, 0x28,
+ 0x30, 0x23, 0x25, 0x28, 0x35, 0x2e, 0x32, 0x2e,
+ 0x20, 0x21, 0x2f, 0x27, 0x3c, 0x22, 0x25, 0x20,
+ 0x27, 0x25, 0x25, 0x30, 0x3a, 0x28, 0x20, 0x28,
+ // Entry 140 - 17F
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x23, 0x23, 0x2e, 0x22, 0x31, 0x2e,
+ 0x26, 0x2e, 0x20,
+}
+
+// regionInclusionBits is an array of bit vectors where every vector represents
+// a set of region groupings. These sets are used to compute the distance
+// between two regions for the purpose of language matching.
+// Size: 288 bytes, 72 elements
+var regionInclusionBits = [72]uint32{
+ // Entry 0 - 1F
+ 0x82400813, 0x000007a3, 0x00003844, 0x20000808,
+ 0x403c0011, 0x00000022, 0x20000844, 0x00000082,
+ 0x00000102, 0x00000202, 0x00000402, 0x2000384d,
+ 0x00001804, 0x20002804, 0x00404000, 0x00408000,
+ 0x00410000, 0x02020000, 0x00040010, 0x00080010,
+ 0x00100010, 0x00200010, 0x01c1c001, 0x00c00000,
+ 0x01400000, 0x1e020001, 0x06000000, 0x0a000000,
+ 0x12000000, 0x20002848, 0x40000010, 0x80000001,
+ // Entry 20 - 3F
+ 0x00000001, 0x40000000, 0x00020000, 0x01000000,
+ 0x00008000, 0x00002000, 0x00000200, 0x00000008,
+ 0x00200000, 0x90000000, 0x00040000, 0x08000000,
+ 0x00000020, 0x84000000, 0x00000080, 0x00001000,
+ 0x00010000, 0x00000400, 0x04000000, 0x00000040,
+ 0x10000000, 0x00004000, 0x81000000, 0x88000000,
+ 0x00000100, 0x80020000, 0x00080000, 0x00100000,
+ 0x00800000, 0xffffffff, 0x82400fb3, 0xc27c0813,
+ // Entry 40 - 5F
+ 0xa240385f, 0x83c1c813, 0x9e420813, 0x92000001,
+ 0x86000001, 0x81400001, 0x8a000001, 0x82020001,
+}
+
+// regionInclusionNext marks, for each entry in regionInclusionBits, the set of
+// all groups that are reachable from the groups set in the respective entry.
+// Size: 72 bytes, 72 elements
+var regionInclusionNext = [72]uint8{
+ // Entry 0 - 3F
+ 0x3d, 0x3e, 0x0b, 0x0b, 0x3f, 0x01, 0x0b, 0x01,
+ 0x01, 0x01, 0x01, 0x40, 0x0b, 0x0b, 0x16, 0x16,
+ 0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x41, 0x16,
+ 0x16, 0x42, 0x19, 0x19, 0x19, 0x0b, 0x04, 0x00,
+ 0x00, 0x1e, 0x11, 0x18, 0x0f, 0x0d, 0x09, 0x03,
+ 0x15, 0x43, 0x12, 0x1b, 0x05, 0x44, 0x07, 0x0c,
+ 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x45, 0x46,
+ 0x08, 0x47, 0x13, 0x14, 0x17, 0x3d, 0x3d, 0x3d,
+ // Entry 40 - 7F
+ 0x3d, 0x3d, 0x3d, 0x42, 0x42, 0x41, 0x42, 0x42,
+}
+
+type parentRel struct {
+ lang uint16
+ script uint8
+ maxScript uint8
+ toRegion uint16
+ fromRegion []uint16
+}
+
+// Size: 404 bytes, 5 elements
+var parents = [5]parentRel{
+ 0: {lang: 0x9a, script: 0x0, maxScript: 0x4f, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x24, 0x25, 0x2e, 0x33, 0x35, 0x3c, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4f, 0x51, 0x5b, 0x5c, 0x60, 0x63, 0x6c, 0x71, 0x72, 0x73, 0x79, 0x7a, 0x7d, 0x7e, 0x7f, 0x81, 0x8a, 0x8b, 0x94, 0x95, 0x96, 0x97, 0x98, 0x9d, 0x9e, 0xa2, 0xa5, 0xa7, 0xab, 0xaf, 0xb2, 0xb3, 0xbd, 0xc4, 0xc8, 0xc9, 0xca, 0xcc, 0xce, 0xd0, 0xd3, 0xd4, 0xdb, 0xdd, 0xde, 0xe4, 0xe5, 0xe6, 0xe9, 0xee, 0x105, 0x107, 0x108, 0x109, 0x10b, 0x10c, 0x110, 0x115, 0x119, 0x11b, 0x11d, 0x123, 0x127, 0x12a, 0x12b, 0x12d, 0x12f, 0x136, 0x139, 0x13c, 0x13f, 0x15e, 0x15f, 0x161}},
+ 1: {lang: 0x9a, script: 0x0, maxScript: 0x4f, toRegion: 0x1a, fromRegion: []uint16{0x2d, 0x4d, 0x5f, 0x62, 0x70, 0xd7, 0x10a, 0x10d}},
+ 2: {lang: 0x9c, script: 0x0, maxScript: 0x4f, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x87, 0x8d, 0xcd, 0xd6, 0xe0, 0xe2, 0xea, 0xef, 0x118, 0x132, 0x133, 0x138}},
+ 3: {lang: 0x1ed, script: 0x0, maxScript: 0x4f, toRegion: 0xec, fromRegion: []uint16{0x29, 0x59, 0x89, 0xc4, 0xcf, 0x116, 0x124}},
+ 4: {lang: 0x2c0, script: 0x33, maxScript: 0x33, toRegion: 0x8b, fromRegion: []uint16{0xc4}},
+}
+
+// Total table size 19949 bytes (19KiB); checksum: 13F4A4EF
diff --git a/Godeps/_workspace/src/golang.org/x/text/language/tags.go b/Godeps/_workspace/src/golang.org/x/text/language/tags.go
new file mode 100644
index 000000000..de30155a2
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/language/tags.go
@@ -0,0 +1,143 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package language
+
+// TODO: Various sets of commonly use tags and regions.
+
+// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed.
+// It simplifies safe initialization of Tag values.
+func MustParse(s string) Tag {
+ t, err := Parse(s)
+ if err != nil {
+ panic(err)
+ }
+ return t
+}
+
+// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed.
+// It simplifies safe initialization of Tag values.
+func (c CanonType) MustParse(s string) Tag {
+ t, err := c.Parse(s)
+ if err != nil {
+ panic(err)
+ }
+ return t
+}
+
+// MustParseBase is like ParseBase, but panics if the given base cannot be parsed.
+// It simplifies safe initialization of Base values.
+func MustParseBase(s string) Base {
+ b, err := ParseBase(s)
+ if err != nil {
+ panic(err)
+ }
+ return b
+}
+
+// MustParseScript is like ParseScript, but panics if the given script cannot be
+// parsed. It simplifies safe initialization of Script values.
+func MustParseScript(s string) Script {
+ scr, err := ParseScript(s)
+ if err != nil {
+ panic(err)
+ }
+ return scr
+}
+
+// MustParseRegion is like ParseRegion, but panics if the given region cannot be
+// parsed. It simplifies safe initialization of Region values.
+func MustParseRegion(s string) Region {
+ r, err := ParseRegion(s)
+ if err != nil {
+ panic(err)
+ }
+ return r
+}
+
+var (
+ und = Tag{}
+
+ Und Tag = Tag{}
+
+ Afrikaans Tag = Tag{lang: _af} // af
+ Amharic Tag = Tag{lang: _am} // am
+ Arabic Tag = Tag{lang: _ar} // ar
+ ModernStandardArabic Tag = Tag{lang: _ar, region: _001} // ar-001
+ Azerbaijani Tag = Tag{lang: _az} // az
+ Bulgarian Tag = Tag{lang: _bg} // bg
+ Bengali Tag = Tag{lang: _bn} // bn
+ Catalan Tag = Tag{lang: _ca} // ca
+ Czech Tag = Tag{lang: _cs} // cs
+ Danish Tag = Tag{lang: _da} // da
+ German Tag = Tag{lang: _de} // de
+ Greek Tag = Tag{lang: _el} // el
+ English Tag = Tag{lang: _en} // en
+ AmericanEnglish Tag = Tag{lang: _en, region: _US} // en-US
+ BritishEnglish Tag = Tag{lang: _en, region: _GB} // en-GB
+ Spanish Tag = Tag{lang: _es} // es
+ EuropeanSpanish Tag = Tag{lang: _es, region: _ES} // es-ES
+ LatinAmericanSpanish Tag = Tag{lang: _es, region: _419} // es-419
+ Estonian Tag = Tag{lang: _et} // et
+ Persian Tag = Tag{lang: _fa} // fa
+ Finnish Tag = Tag{lang: _fi} // fi
+ Filipino Tag = Tag{lang: _fil} // fil
+ French Tag = Tag{lang: _fr} // fr
+ CanadianFrench Tag = Tag{lang: _fr, region: _CA} // fr-CA
+ Gujarati Tag = Tag{lang: _gu} // gu
+ Hebrew Tag = Tag{lang: _he} // he
+ Hindi Tag = Tag{lang: _hi} // hi
+ Croatian Tag = Tag{lang: _hr} // hr
+ Hungarian Tag = Tag{lang: _hu} // hu
+ Armenian Tag = Tag{lang: _hy} // hy
+ Indonesian Tag = Tag{lang: _id} // id
+ Icelandic Tag = Tag{lang: _is} // is
+ Italian Tag = Tag{lang: _it} // it
+ Japanese Tag = Tag{lang: _ja} // ja
+ Georgian Tag = Tag{lang: _ka} // ka
+ Kazakh Tag = Tag{lang: _kk} // kk
+ Khmer Tag = Tag{lang: _km} // km
+ Kannada Tag = Tag{lang: _kn} // kn
+ Korean Tag = Tag{lang: _ko} // ko
+ Kirghiz Tag = Tag{lang: _ky} // ky
+ Lao Tag = Tag{lang: _lo} // lo
+ Lithuanian Tag = Tag{lang: _lt} // lt
+ Latvian Tag = Tag{lang: _lv} // lv
+ Macedonian Tag = Tag{lang: _mk} // mk
+ Malayalam Tag = Tag{lang: _ml} // ml
+ Mongolian Tag = Tag{lang: _mn} // mn
+ Marathi Tag = Tag{lang: _mr} // mr
+ Malay Tag = Tag{lang: _ms} // ms
+ Burmese Tag = Tag{lang: _my} // my
+ Nepali Tag = Tag{lang: _ne} // ne
+ Dutch Tag = Tag{lang: _nl} // nl
+ Norwegian Tag = Tag{lang: _no} // no
+ Punjabi Tag = Tag{lang: _pa} // pa
+ Polish Tag = Tag{lang: _pl} // pl
+ Portuguese Tag = Tag{lang: _pt} // pt
+ BrazilianPortuguese Tag = Tag{lang: _pt, region: _BR} // pt-BR
+ EuropeanPortuguese Tag = Tag{lang: _pt, region: _PT} // pt-PT
+ Romanian Tag = Tag{lang: _ro} // ro
+ Russian Tag = Tag{lang: _ru} // ru
+ Sinhala Tag = Tag{lang: _si} // si
+ Slovak Tag = Tag{lang: _sk} // sk
+ Slovenian Tag = Tag{lang: _sl} // sl
+ Albanian Tag = Tag{lang: _sq} // sq
+ Serbian Tag = Tag{lang: _sr} // sr
+ SerbianLatin Tag = Tag{lang: _sr, script: _Latn} // sr-Latn
+ Swedish Tag = Tag{lang: _sv} // sv
+ Swahili Tag = Tag{lang: _sw} // sw
+ Tamil Tag = Tag{lang: _ta} // ta
+ Telugu Tag = Tag{lang: _te} // te
+ Thai Tag = Tag{lang: _th} // th
+ Turkish Tag = Tag{lang: _tr} // tr
+ Ukrainian Tag = Tag{lang: _uk} // uk
+ Urdu Tag = Tag{lang: _ur} // ur
+ Uzbek Tag = Tag{lang: _uz} // uz
+ Vietnamese Tag = Tag{lang: _vi} // vi
+ Chinese Tag = Tag{lang: _zh} // zh
+ SimplifiedChinese Tag = Tag{lang: _zh, script: _Hans} // zh-Hans
+ TraditionalChinese Tag = Tag{lang: _zh, script: _Hant} // zh-Hant
+ Zulu Tag = Tag{lang: _zu} // zu
+)
diff --git a/Godeps/_workspace/src/golang.org/x/text/runes/cond.go b/Godeps/_workspace/src/golang.org/x/text/runes/cond.go
new file mode 100644
index 000000000..ae7a92158
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/runes/cond.go
@@ -0,0 +1,126 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package runes
+
+import (
+ "unicode/utf8"
+
+ "golang.org/x/text/transform"
+)
+
+// Note: below we pass invalid UTF-8 to the tIn and tNotIn transformers as is.
+// This is done for various reasons:
+// - To retain the semantics of the Nop transformer: if input is passed to a Nop
+// one would expect it to be unchanged.
+// - It would be very expensive to pass a converted RuneError to a transformer:
+// a transformer might need more source bytes after RuneError, meaning that
+// the only way to pass it safely is to create a new buffer and manage the
+// intermingling of RuneErrors and normal input.
+// - Many transformers leave ill-formed UTF-8 as is, so this is not
+// inconsistent. Generally ill-formed UTF-8 is only replaced if it is a
+// logical consequence of the operation (as for Map) or if it otherwise would
+// pose security concerns (as for Remove).
+// - An alternative would be to return an error on ill-formed UTF-8, but this
+// would be inconsistent with other operations.
+
+// If returns a transformer that applies tIn to consecutive runes for which
+// s.Contains(r) and tNotIn to consecutive runes for which !s.Contains(r). Reset
+// is called on tIn and tNotIn at the start of each run. A Nop transformer will
+// substitute a nil value passed to tIn or tNotIn. Invalid UTF-8 is translated
+// to RuneError to determine which transformer to apply, but is passed as is to
+// the respective transformer.
+func If(s Set, tIn, tNotIn transform.Transformer) Transformer {
+ if tIn == nil && tNotIn == nil {
+ return Transformer{transform.Nop}
+ }
+ if tIn == nil {
+ tIn = transform.Nop
+ }
+ if tNotIn == nil {
+ tNotIn = transform.Nop
+ }
+ a := &cond{
+ tIn: tIn,
+ tNotIn: tNotIn,
+ f: s.Contains,
+ }
+ a.Reset()
+ return Transformer{a}
+}
+
+type cond struct {
+ tIn, tNotIn transform.Transformer
+ f func(rune) bool
+ check func(rune) bool // current check to perform
+ t transform.Transformer // current transformer to use
+}
+
+// Reset implements transform.Transformer.
+func (t *cond) Reset() {
+ t.check = t.is
+ t.t = t.tIn
+ t.t.Reset() // notIn will be reset on first usage.
+}
+
+func (t *cond) is(r rune) bool {
+ if t.f(r) {
+ return true
+ }
+ t.check = t.isNot
+ t.t = t.tNotIn
+ t.tNotIn.Reset()
+ return false
+}
+
+func (t *cond) isNot(r rune) bool {
+ if !t.f(r) {
+ return true
+ }
+ t.check = t.is
+ t.t = t.tIn
+ t.tIn.Reset()
+ return false
+}
+
+func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+ p := 0
+ for nSrc < len(src) && err == nil {
+ // Don't process too much at a time, as the work might be wasted if the
+ // destination buffer isn't large enough to hold the result or a
+ // transform returns an error early.
+ const maxChunk = 4096
+ max := len(src)
+ if n := nSrc + maxChunk; n < len(src) {
+ max = n
+ }
+ atEnd := false
+ size := 0
+ current := t.t
+ for ; p < max; p += size {
+ var r rune
+ r, size = utf8.DecodeRune(src[p:])
+ if r == utf8.RuneError && size == 1 {
+ if !atEOF && !utf8.FullRune(src[p:]) {
+ err = transform.ErrShortSrc
+ break
+ }
+ }
+ if !t.check(r) {
+ // The next rune will be the start of a new run.
+ atEnd = true
+ break
+ }
+ }
+ nDst2, nSrc2, err2 := current.Transform(dst[nDst:], src[nSrc:p], atEnd || (atEOF && p == len(src)))
+ nDst += nDst2
+ nSrc += nSrc2
+ if err2 != nil {
+ return nDst, nSrc, err2
+ }
+ // At this point either err != nil or t.check will pass for the rune at p.
+ p = nSrc + size
+ }
+ return nDst, nSrc, err
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/runes/runes.go b/Godeps/_workspace/src/golang.org/x/text/runes/runes.go
new file mode 100644
index 000000000..291de656b
--- /dev/null
+++ b/Godeps/_workspace/src/golang.org/x/text/runes/runes.go
@@ -0,0 +1,278 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package runes provide transforms for UTF-8 encoded text.
+package runes
+
+import (
+ "unicode"
+ "unicode/utf8"
+
+ "golang.org/x/text/transform"
+)
+
+// A Set is a collection of runes.
+type Set interface {
+ // Contains returns true if r is contained in the set.
+ Contains(r rune) bool
+}
+
+type setFunc func(rune) bool
+
+func (s setFunc) Contains(r rune) bool {
+ return s(r)
+}
+
+// Note: using funcs here instead of wrapping types result in cleaner
+// documentation and a smaller API.
+
+// In creates a Set with a Contains method that returns true for all runes in
+// the given RangeTable.
+func In(rt *unicode.RangeTable) Set {
+ return setFunc(func(r rune) bool { return unicode.Is(rt, r) })
+}
+
+// In creates a Set with a Contains method that returns true for all runes not
+// in the given RangeTable.
+func NotIn(rt *unicode.RangeTable) Set {
+ return setFunc(func(r rune) bool { return !unicode.Is(rt, r) })
+}
+
+// Predicate creates a Set with a Contains method that returns f(r).
+func Predicate(f func(rune) bool) Set {
+ return setFunc(f)
+}
+
+// Transformer implements the transform.Transformer interface.
+type Transformer struct {
+ transform.Transformer
+}
+
+// Bytes returns a new byte slice with the result of converting b using t. It
+// calls Reset on t. It returns nil if any error was found. This can only happen
+// if an error-producing Transformer is passed to If.
+func (t Transformer) Bytes(b []byte) []byte {
+ b, _, err := transform.Bytes(t, b)
+ if err != nil {
+ return nil
+ }
+ return b
+}
+
+// String returns a string with the result of converting s using t. It calls
+// Reset on t. It returns the empty string if any error was found. This can only
+// happen if an error-producing Transformer is passed to If.
+func (t Transformer) String(s string) string {
+ s, _, err := transform.String(t, s)
+ if err != nil {
+ return ""
+ }
+ return s
+}
+
+// TODO:
+// - Copy: copying strings and bytes in whole-rune units.
+// - Validation (maybe)
+// - Well-formed-ness (maybe)
+
+const runeErrorString = string(utf8.RuneError)
+
+// Remove returns a Transformer that removes runes r for which s.Contains(r).
+// Illegal input bytes are replaced by RuneError before being passed to f.
+func Remove(s Set) Transformer {
+ if f, ok := s.(setFunc); ok {
+ // This little trick cuts the running time of BenchmarkRemove for sets
+ // created by Predicate roughly in half.
+ // TODO: special-case RangeTables as well.
+ return Transformer{remove(f)}
+ }
+ return Transformer{remove(s.Contains)}
+}
+
+// TODO: remove transform.RemoveFunc.
+
+type remove func(r rune) bool
+
+func (remove) Reset() {}
+
+// Transform implements transform.Transformer.
+func (t remove) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+ for r, size := rune(0), 0; nSrc < len(src); {
+ if r = rune(src[nSrc]); r < utf8.RuneSelf {
+ size = 1
+ } else {
+ r, size = utf8.DecodeRune(src[nSrc:])
+
+ if size == 1 {
+ // Invalid rune.
+ if !atEOF && !utf8.FullRune(src[nSrc:]) {
+ err = transform.ErrShortSrc
+ break
+ }
+ // We replace illegal bytes with RuneError. Not doing so might
+ // otherwise turn a sequence of invalid UTF-8 into valid UTF-8.
+ // The resulting byte sequence may subsequently contain runes
+ // for which t(r) is true that were passed unnoticed.
+ if !t(utf8.RuneError) {
+ if nDst+3 > len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ dst[nDst+0] = runeErrorString[0]
+ dst[nDst+1] = runeErrorString[1]
+ dst[nDst+2] = runeErrorString[2]
+ nDst += 3
+ }
+ nSrc++
+ continue
+ }
+ }
+
+ if t(r) {
+ nSrc += size
+ continue
+ }
+ if nDst+size > len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ for i := 0; i < size; i++ {
+ dst[nDst] = src[nSrc]
+ nDst++
+ nSrc++
+ }
+ }
+ return
+}
+
+// Map returns a Transformer that maps the runes in the input using the given
+// mapping. Illegal bytes in the input are converted to utf8.RuneError before
+// being passed to the mapping func.
+func Map(mapping func(rune) rune) Transformer {
+ return Transformer{mapper(mapping)}
+}
+
+type mapper func(rune) rune
+
+func (mapper) Reset() {}
+
+// Transform implements transform.Transformer.
+func (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+ var replacement rune
+ var b [utf8.UTFMax]byte
+
+ for r, size := rune(0), 0; nSrc < len(src); {
+ if r = rune(src[nSrc]); r < utf8.RuneSelf {
+ if replacement = t(r); replacement < utf8.RuneSelf {
+ if nDst == len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ dst[nDst] = byte(replacement)
+ nDst++
+ nSrc++
+ continue
+ }
+ size = 1
+ } else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 {
+ // Invalid rune.
+ if !atEOF && !utf8.FullRune(src[nSrc:]) {
+ err = transform.ErrShortSrc
+ break
+ }
+
+ if replacement = t(utf8.RuneError); replacement == utf8.RuneError {
+ if nDst+3 > len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ dst[nDst+0] = runeErrorString[0]
+ dst[nDst+1] = runeErrorString[1]
+ dst[nDst+2] = runeErrorString[2]
+ nDst += 3
+ nSrc++
+ continue
+ }
+ } else if replacement = t(r); replacement == r {
+ if nDst+size > len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ for i := 0; i < size; i++ {
+ dst[nDst] = src[nSrc]
+ nDst++
+ nSrc++
+ }
+ continue
+ }
+
+ n := utf8.EncodeRune(b[:], replacement)
+
+ if nDst+n > len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ for i := 0; i < n; i++ {
+ dst[nDst] = b[i]
+ nDst++
+ }
+ nSrc += size
+ }
+ return
+}
+
+// ReplaceIllFormed returns a transformer that replaces all input bytes that are
+// not part of a well-formed UTF-8 code sequence with utf8.RuneError.
+func ReplaceIllFormed() Transformer {
+ return Transformer{&replaceIllFormed{}}
+}
+
+type replaceIllFormed struct{ transform.NopResetter }
+
+func (t replaceIllFormed) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
+ for nSrc < len(src) {
+ r, size := utf8.DecodeRune(src[nSrc:])
+
+ // Look for an ASCII rune.
+ if r < utf8.RuneSelf {
+ if nDst == len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ dst[nDst] = byte(r)
+ nDst++
+ nSrc++
+ continue
+ }
+
+ // Look for a valid non-ASCII rune.
+ if r != utf8.RuneError || size != 1 {
+ if size != copy(dst[nDst:], src[nSrc:nSrc+size]) {
+ err = transform.ErrShortDst
+ break
+ }
+ nDst += size
+ nSrc += size
+ continue
+ }
+
+ // Look for short source data.
+ if !atEOF && !utf8.FullRune(src[nSrc:]) {
+ err = transform.ErrShortSrc
+ break
+ }
+
+ // We have an invalid rune.
+ if nDst+3 > len(dst) {
+ err = transform.ErrShortDst
+ break
+ }
+ dst[nDst+0] = runeErrorString[0]
+ dst[nDst+1] = runeErrorString[1]
+ dst[nDst+2] = runeErrorString[2]
+ nDst += 3
+ nSrc++
+ }
+ return nDst, nSrc, err
+}
diff --git a/Godeps/_workspace/src/golang.org/x/text/transform/examples_test.go b/Godeps/_workspace/src/golang.org/x/text/transform/examples_test.go
deleted file mode 100644
index f2e284dba..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/transform/examples_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package transform_test
-
-import (
- "fmt"
- "unicode"
-
- "golang.org/x/text/transform"
- "golang.org/x/text/unicode/norm"
-)
-
-func ExampleRemoveFunc() {
- input := []byte(`tschüß; до свидания`)
-
- b := make([]byte, len(input))
-
- t := transform.RemoveFunc(unicode.IsSpace)
- n, _, _ := t.Transform(b, input, true)
- fmt.Println(string(b[:n]))
-
- t = transform.RemoveFunc(func(r rune) bool {
- return !unicode.Is(unicode.Latin, r)
- })
- n, _, _ = t.Transform(b, input, true)
- fmt.Println(string(b[:n]))
-
- n, _, _ = t.Transform(b, norm.NFD.Bytes(input), true)
- fmt.Println(string(b[:n]))
-
- // Output:
- // tschüß;досвидания
- // tschüß
- // tschuß
-}
diff --git a/Godeps/_workspace/src/golang.org/x/text/transform/transform.go b/Godeps/_workspace/src/golang.org/x/text/transform/transform.go
index 157ee7892..f79b461b8 100644
--- a/Godeps/_workspace/src/golang.org/x/text/transform/transform.go
+++ b/Godeps/_workspace/src/golang.org/x/text/transform/transform.go
@@ -596,11 +596,25 @@ func String(t Transformer, s string) (result string, n int, err error) {
// Bytes returns a new byte slice with the result of converting b[:n] using t,
// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t.
func Bytes(t Transformer, b []byte) (result []byte, n int, err error) {
+ return doAppend(t, 0, make([]byte, len(b)), b)
+}
+
+// Append appends the result of converting src[:n] using t to dst, where
+// n <= len(src), If err == nil, n will be len(src). It calls Reset on t.
+func Append(t Transformer, dst, src []byte) (result []byte, n int, err error) {
+ if len(dst) == cap(dst) {
+ n := len(src) + len(dst) // It is okay for this to be 0.
+ b := make([]byte, n)
+ dst = b[:copy(b, dst)]
+ }
+ return doAppend(t, len(dst), dst[:cap(dst)], src)
+}
+
+func doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) {
t.Reset()
- dst := make([]byte, len(b))
- pDst, pSrc := 0, 0
+ pSrc := 0
for {
- nDst, nSrc, err := t.Transform(dst[pDst:], b[pSrc:], true)
+ nDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true)
pDst += nDst
pSrc += nSrc
if err != ErrShortDst {
diff --git a/Godeps/_workspace/src/golang.org/x/text/transform/transform_test.go b/Godeps/_workspace/src/golang.org/x/text/transform/transform_test.go
deleted file mode 100644
index b463f4f1b..000000000
--- a/Godeps/_workspace/src/golang.org/x/text/transform/transform_test.go
+++ /dev/null
@@ -1,1082 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package transform
-
-import (
- "bytes"
- "errors"
- "fmt"
- "io/ioutil"
- "strconv"
- "strings"
- "testing"
- "time"
- "unicode/utf8"
-)
-
-type lowerCaseASCII struct{ NopResetter }
-
-func (lowerCaseASCII) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- n := len(src)
- if n > len(dst) {
- n, err = len(dst), ErrShortDst
- }
- for i, c := range src[:n] {
- if 'A' <= c && c <= 'Z' {
- c += 'a' - 'A'
- }
- dst[i] = c
- }
- return n, n, err
-}
-
-var errYouMentionedX = errors.New("you mentioned X")
-
-type dontMentionX struct{ NopResetter }
-
-func (dontMentionX) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- n := len(src)
- if n > len(dst) {
- n, err = len(dst), ErrShortDst
- }
- for i, c := range src[:n] {
- if c == 'X' {
- return i, i, errYouMentionedX
- }
- dst[i] = c
- }
- return n, n, err
-}
-
-// doublerAtEOF is a strange Transformer that transforms "this" to "tthhiiss",
-// but only if atEOF is true.
-type doublerAtEOF struct{ NopResetter }
-
-func (doublerAtEOF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- if !atEOF {
- return 0, 0, ErrShortSrc
- }
- for i, c := range src {
- if 2*i+2 >= len(dst) {
- return 2 * i, i, ErrShortDst
- }
- dst[2*i+0] = c
- dst[2*i+1] = c
- }
- return 2 * len(src), len(src), nil
-}
-
-// rleDecode and rleEncode implement a toy run-length encoding: "aabbbbbbbbbb"
-// is encoded as "2a10b". The decoding is assumed to not contain any numbers.
-
-type rleDecode struct{ NopResetter }
-
-func (rleDecode) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
-loop:
- for len(src) > 0 {
- n := 0
- for i, c := range src {
- if '0' <= c && c <= '9' {
- n = 10*n + int(c-'0')
- continue
- }
- if i == 0 {
- return nDst, nSrc, errors.New("rleDecode: bad input")
- }
- if n > len(dst) {
- return nDst, nSrc, ErrShortDst
- }
- for j := 0; j < n; j++ {
- dst[j] = c
- }
- dst, src = dst[n:], src[i+1:]
- nDst, nSrc = nDst+n, nSrc+i+1
- continue loop
- }
- if atEOF {
- return nDst, nSrc, errors.New("rleDecode: bad input")
- }
- return nDst, nSrc, ErrShortSrc
- }
- return nDst, nSrc, nil
-}
-
-type rleEncode struct {
- NopResetter
-
- // allowStutter means that "xxxxxxxx" can be encoded as "5x3x"
- // instead of always as "8x".
- allowStutter bool
-}
-
-func (e rleEncode) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- for len(src) > 0 {
- n, c0 := len(src), src[0]
- for i, c := range src[1:] {
- if c != c0 {
- n = i + 1
- break
- }
- }
- if n == len(src) && !atEOF && !e.allowStutter {
- return nDst, nSrc, ErrShortSrc
- }
- s := strconv.Itoa(n)
- if len(s) >= len(dst) {
- return nDst, nSrc, ErrShortDst
- }
- copy(dst, s)
- dst[len(s)] = c0
- dst, src = dst[len(s)+1:], src[n:]
- nDst, nSrc = nDst+len(s)+1, nSrc+n
- }
- return nDst, nSrc, nil
-}
-
-// trickler consumes all input bytes, but writes a single byte at a time to dst.
-type trickler []byte
-
-func (t *trickler) Reset() {
- *t = nil
-}
-
-func (t *trickler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- *t = append(*t, src...)
- if len(*t) == 0 {
- return 0, 0, nil
- }
- if len(dst) == 0 {
- return 0, len(src), ErrShortDst
- }
- dst[0] = (*t)[0]
- *t = (*t)[1:]
- if len(*t) > 0 {
- err = ErrShortDst
- }
- return 1, len(src), err
-}
-
-// delayedTrickler is like trickler, but delays writing output to dst. This is
-// highly unlikely to be relevant in practice, but it seems like a good idea
-// to have some tolerance as long as progress can be detected.
-type delayedTrickler []byte
-
-func (t *delayedTrickler) Reset() {
- *t = nil
-}
-func (t *delayedTrickler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- if len(*t) > 0 && len(dst) > 0 {
- dst[0] = (*t)[0]
- *t = (*t)[1:]
- nDst = 1
- }
- *t = append(*t, src...)
- if len(*t) > 0 {
- err = ErrShortDst
- }
- return nDst, len(src), err
-}
-
-type testCase struct {
- desc string
- t Transformer
- src string
- dstSize int
- srcSize int
- ioSize int
- wantStr string
- wantErr error
- wantIter int // number of iterations taken; 0 means we don't care.
-}
-
-func (t testCase) String() string {
- return tstr(t.t) + "; " + t.desc
-}
-
-func tstr(t Transformer) string {
- if stringer, ok := t.(fmt.Stringer); ok {
- return stringer.String()
- }
- s := fmt.Sprintf("%T", t)
- return s[1+strings.Index(s, "."):]
-}
-
-func (c chain) String() string {
- buf := &bytes.Buffer{}
- buf.WriteString("Chain(")
- for i, l := range c.link[:len(c.link)-1] {
- if i != 0 {
- fmt.Fprint(buf, ", ")
- }
- buf.WriteString(tstr(l.t))
- }
- buf.WriteString(")")
- return buf.String()
-}
-
-var testCases = []testCase{
- {
- desc: "empty",
- t: lowerCaseASCII{},
- src: "",
- dstSize: 100,
- srcSize: 100,
- wantStr: "",
- },
-
- {
- desc: "basic",
- t: lowerCaseASCII{},
- src: "Hello WORLD.",
- dstSize: 100,
- srcSize: 100,
- wantStr: "hello world.",
- },
-
- {
- desc: "small dst",
- t: lowerCaseASCII{},
- src: "Hello WORLD.",
- dstSize: 3,
- srcSize: 100,
- wantStr: "hello world.",
- },
-
- {
- desc: "small src",
- t: lowerCaseASCII{},
- src: "Hello WORLD.",
- dstSize: 100,
- srcSize: 4,
- wantStr: "hello world.",
- },
-
- {
- desc: "small buffers",
- t: lowerCaseASCII{},
- src: "Hello WORLD.",
- dstSize: 3,
- srcSize: 4,
- wantStr: "hello world.",
- },
-
- {
- desc: "very small buffers",
- t: lowerCaseASCII{},
- src: "Hello WORLD.",
- dstSize: 1,
- srcSize: 1,
- wantStr: "hello world.",
- },
-
- {
- desc: "basic",
- t: dontMentionX{},
- src: "The First Rule of Transform Club: don't mention Mister X, ever.",
- dstSize: 100,
- srcSize: 100,
- wantStr: "The First Rule of Transform Club: don't mention Mister ",
- wantErr: errYouMentionedX,
- },
-
- {
- desc: "small buffers",
- t: dontMentionX{},
- src: "The First Rule of Transform Club: don't mention Mister X, ever.",
- dstSize: 10,
- srcSize: 10,
- wantStr: "The First Rule of Transform Club: don't mention Mister ",
- wantErr: errYouMentionedX,
- },
-
- {
- desc: "very small buffers",
- t: dontMentionX{},
- src: "The First Rule of Transform Club: don't mention Mister X, ever.",
- dstSize: 1,
- srcSize: 1,
- wantStr: "The First Rule of Transform Club: don't mention Mister ",
- wantErr: errYouMentionedX,
- },
-
- {
- desc: "only transform at EOF",
- t: doublerAtEOF{},
- src: "this",
- dstSize: 100,
- srcSize: 100,
- wantStr: "tthhiiss",
- },
-
- {
- desc: "basic",
- t: rleDecode{},
- src: "1a2b3c10d11e0f1g",
- dstSize: 100,
- srcSize: 100,
- wantStr: "abbcccddddddddddeeeeeeeeeeeg",
- },
-
- {
- desc: "long",
- t: rleDecode{},
- src: "12a23b34c45d56e99z",
- dstSize: 100,
- srcSize: 100,
- wantStr: strings.Repeat("a", 12) +
- strings.Repeat("b", 23) +
- strings.Repeat("c", 34) +
- strings.Repeat("d", 45) +
- strings.Repeat("e", 56) +
- strings.Repeat("z", 99),
- },
-
- {
- desc: "tight buffers",
- t: rleDecode{},
- src: "1a2b3c10d11e0f1g",
- dstSize: 11,
- srcSize: 3,
- wantStr: "abbcccddddddddddeeeeeeeeeeeg",
- },
-
- {
- desc: "short dst",
- t: rleDecode{},
- src: "1a2b3c10d11e0f1g",
- dstSize: 10,
- srcSize: 3,
- wantStr: "abbcccdddddddddd",
- wantErr: ErrShortDst,
- },
-
- {
- desc: "short src",
- t: rleDecode{},
- src: "1a2b3c10d11e0f1g",
- dstSize: 11,
- srcSize: 2,
- ioSize: 2,
- wantStr: "abbccc",
- wantErr: ErrShortSrc,
- },
-
- {
- desc: "basic",
- t: rleEncode{},
- src: "abbcccddddddddddeeeeeeeeeeeg",
- dstSize: 100,
- srcSize: 100,
- wantStr: "1a2b3c10d11e1g",
- },
-
- {
- desc: "long",
- t: rleEncode{},
- src: strings.Repeat("a", 12) +
- strings.Repeat("b", 23) +
- strings.Repeat("c", 34) +
- strings.Repeat("d", 45) +
- strings.Repeat("e", 56) +
- strings.Repeat("z", 99),
- dstSize: 100,
- srcSize: 100,
- wantStr: "12a23b34c45d56e99z",
- },
-
- {
- desc: "tight buffers",
- t: rleEncode{},
- src: "abbcccddddddddddeeeeeeeeeeeg",
- dstSize: 3,
- srcSize: 12,
- wantStr: "1a2b3c10d11e1g",
- },
-
- {
- desc: "short dst",
- t: rleEncode{},
- src: "abbcccddddddddddeeeeeeeeeeeg",
- dstSize: 2,
- srcSize: 12,
- wantStr: "1a2b3c",
- wantErr: ErrShortDst,
- },
-
- {
- desc: "short src",
- t: rleEncode{},
- src: "abbcccddddddddddeeeeeeeeeeeg",
- dstSize: 3,
- srcSize: 11,
- ioSize: 11,
- wantStr: "1a2b3c10d",
- wantErr: ErrShortSrc,
- },
-
- {
- desc: "allowStutter = false",
- t: rleEncode{allowStutter: false},
- src: "aaaabbbbbbbbccccddddd",
- dstSize: 10,
- srcSize: 10,
- wantStr: "4a8b4c5d",
- },
-
- {
- desc: "allowStutter = true",
- t: rleEncode{allowStutter: true},
- src: "aaaabbbbbbbbccccddddd",
- dstSize: 10,
- srcSize: 10,
- ioSize: 10,
- wantStr: "4a6b2b4c4d1d",
- },
-
- {
- desc: "trickler",
- t: &trickler{},
- src: "abcdefghijklm",
- dstSize: 3,
- srcSize: 15,
- wantStr: "abcdefghijklm",
- },
-
- {
- desc: "delayedTrickler",
- t: &delayedTrickler{},
- src: "abcdefghijklm",
- dstSize: 3,
- srcSize: 15,
- wantStr: "abcdefghijklm",
- },
-}
-
-func TestReader(t *testing.T) {
- for _, tc := range testCases {
- r := NewReader(strings.NewReader(tc.src), tc.t)
- // Differently sized dst and src buffers are not part of the
- // exported API. We override them manually.
- r.dst = make([]byte, tc.dstSize)
- r.src = make([]byte, tc.srcSize)
- got, err := ioutil.ReadAll(r)
- str := string(got)
- if str != tc.wantStr || err != tc.wantErr {
- t.Errorf("%s:\ngot %q, %v\nwant %q, %v", tc, str, err, tc.wantStr, tc.wantErr)
- }
- }
-}
-
-func TestWriter(t *testing.T) {
- tests := append(testCases, chainTests()...)
- for _, tc := range tests {
- sizes := []int{1, 2, 3, 4, 5, 10, 100, 1000}
- if tc.ioSize > 0 {
- sizes = []int{tc.ioSize}
- }
- for _, sz := range sizes {
- bb := &bytes.Buffer{}
- w := NewWriter(bb, tc.t)
- // Differently sized dst and src buffers are not part of the
- // exported API. We override them manually.
- w.dst = make([]byte, tc.dstSize)
- w.src = make([]byte, tc.srcSize)
- src := make([]byte, sz)
- var err error
- for b := tc.src; len(b) > 0 && err == nil; {
- n := copy(src, b)
- b = b[n:]
- m := 0
- m, err = w.Write(src[:n])
- if m != n && err == nil {
- t.Errorf("%s:%d: did not consume all bytes %d < %d", tc, sz, m, n)
- }
- }
- if err == nil {
- err = w.Close()
- }
- str := bb.String()
- if str != tc.wantStr || err != tc.wantErr {
- t.Errorf("%s:%d:\ngot %q, %v\nwant %q, %v", tc, sz, str, err, tc.wantStr, tc.wantErr)
- }
- }
- }
-}
-
-func TestNop(t *testing.T) {
- testCases := []struct {
- str string
- dstSize int
- err error
- }{
- {"", 0, nil},
- {"", 10, nil},
- {"a", 0, ErrShortDst},
- {"a", 1, nil},
- {"a", 10, nil},
- }
- for i, tc := range testCases {
- dst := make([]byte, tc.dstSize)
- nDst, nSrc, err := Nop.Transform(dst, []byte(tc.str), true)
- want := tc.str
- if tc.dstSize < len(want) {
- want = want[:tc.dstSize]
- }
- if got := string(dst[:nDst]); got != want || err != tc.err || nSrc != nDst {
- t.Errorf("%d:\ngot %q, %d, %v\nwant %q, %d, %v", i, got, nSrc, err, want, nDst, tc.err)
- }
- }
-}
-
-func TestDiscard(t *testing.T) {
- testCases := []struct {
- str string
- dstSize int
- }{
- {"", 0},
- {"", 10},
- {"a", 0},
- {"ab", 10},
- }
- for i, tc := range testCases {
- nDst, nSrc, err := Discard.Transform(make([]byte, tc.dstSize), []byte(tc.str), true)
- if nDst != 0 || nSrc != len(tc.str) || err != nil {
- t.Errorf("%d:\ngot %q, %d, %v\nwant 0, %d, nil", i, nDst, nSrc, err, len(tc.str))
- }
- }
-}
-
-// mkChain creates a Chain transformer. x must be alternating between transformer
-// and bufSize, like T, (sz, T)*
-func mkChain(x ...interface{}) *chain {
- t := []Transformer{}
- for i := 0; i < len(x); i += 2 {
- t = append(t, x[i].(Transformer))
- }
- c := Chain(t...).(*chain)
- for i, j := 1, 1; i < len(x); i, j = i+2, j+1 {
- c.link[j].b = make([]byte, x[i].(int))
- }
- return c
-}
-
-func chainTests() []testCase {
- return []testCase{
- {
- desc: "nil error",
- t: mkChain(rleEncode{}, 100, lowerCaseASCII{}),
- src: "ABB",
- dstSize: 100,
- srcSize: 100,
- wantStr: "1a2b",
- wantErr: nil,
- wantIter: 1,
- },
-
- {
- desc: "short dst buffer",
- t: mkChain(lowerCaseASCII{}, 3, rleDecode{}),
- src: "1a2b3c10d11e0f1g",
- dstSize: 10,
- srcSize: 3,
- wantStr: "abbcccdddddddddd",
- wantErr: ErrShortDst,
- },
-
- {
- desc: "short internal dst buffer",
- t: mkChain(lowerCaseASCII{}, 3, rleDecode{}, 10, Nop),
- src: "1a2b3c10d11e0f1g",
- dstSize: 100,
- srcSize: 3,
- wantStr: "abbcccdddddddddd",
- wantErr: errShortInternal,
- },
-
- {
- desc: "short internal dst buffer from input",
- t: mkChain(rleDecode{}, 10, Nop),
- src: "1a2b3c10d11e0f1g",
- dstSize: 100,
- srcSize: 3,
- wantStr: "abbcccdddddddddd",
- wantErr: errShortInternal,
- },
-
- {
- desc: "empty short internal dst buffer",
- t: mkChain(lowerCaseASCII{}, 3, rleDecode{}, 10, Nop),
- src: "4a7b11e0f1g",
- dstSize: 100,
- srcSize: 3,
- wantStr: "aaaabbbbbbb",
- wantErr: errShortInternal,
- },
-
- {
- desc: "empty short internal dst buffer from input",
- t: mkChain(rleDecode{}, 10, Nop),
- src: "4a7b11e0f1g",
- dstSize: 100,
- srcSize: 3,
- wantStr: "aaaabbbbbbb",
- wantErr: errShortInternal,
- },
-
- {
- desc: "short internal src buffer after full dst buffer",
- t: mkChain(Nop, 5, rleEncode{}, 10, Nop),
- src: "cccccddddd",
- dstSize: 100,
- srcSize: 100,
- wantStr: "",
- wantErr: errShortInternal,
- wantIter: 1,
- },
-
- {
- desc: "short internal src buffer after short dst buffer; test lastFull",
- t: mkChain(rleDecode{}, 5, rleEncode{}, 4, Nop),
- src: "2a1b4c6d",
- dstSize: 100,
- srcSize: 100,
- wantStr: "2a1b",
- wantErr: errShortInternal,
- },
-
- {
- desc: "short internal src buffer after successful complete fill",
- t: mkChain(Nop, 3, rleDecode{}),
- src: "123a4b",
- dstSize: 4,
- srcSize: 3,
- wantStr: "",
- wantErr: errShortInternal,
- wantIter: 1,
- },
-
- {
- desc: "short internal src buffer after short dst buffer; test lastFull",
- t: mkChain(rleDecode{}, 5, rleEncode{}),
- src: "2a1b4c6d",
- dstSize: 4,
- srcSize: 100,
- wantStr: "2a1b",
- wantErr: errShortInternal,
- },
-
- {
- desc: "short src buffer",
- t: mkChain(rleEncode{}, 5, Nop),
- src: "abbcccddddeeeee",
- dstSize: 4,
- srcSize: 4,
- ioSize: 4,
- wantStr: "1a2b3c",
- wantErr: ErrShortSrc,
- },
-
- {
- desc: "process all in one go",
- t: mkChain(rleEncode{}, 5, Nop),
- src: "abbcccddddeeeeeffffff",
- dstSize: 100,
- srcSize: 100,
- wantStr: "1a2b3c4d5e6f",
- wantErr: nil,
- wantIter: 1,
- },
-
- {
- desc: "complete processing downstream after error",
- t: mkChain(dontMentionX{}, 2, rleDecode{}, 5, Nop),
- src: "3a4b5eX",
- dstSize: 100,
- srcSize: 100,
- ioSize: 100,
- wantStr: "aaabbbbeeeee",
- wantErr: errYouMentionedX,
- },
-
- {
- desc: "return downstream fatal errors first (followed by short dst)",
- t: mkChain(dontMentionX{}, 8, rleDecode{}, 4, Nop),
- src: "3a4b5eX",
- dstSize: 100,
- srcSize: 100,
- ioSize: 100,
- wantStr: "aaabbbb",
- wantErr: errShortInternal,
- },
-
- {
- desc: "return downstream fatal errors first (followed by short src)",
- t: mkChain(dontMentionX{}, 5, Nop, 1, rleDecode{}),
- src: "1a5bX",
- dstSize: 100,
- srcSize: 100,
- ioSize: 100,
- wantStr: "",
- wantErr: errShortInternal,
- },
-
- {
- desc: "short internal",
- t: mkChain(Nop, 11, rleEncode{}, 3, Nop),
- src: "abbcccddddddddddeeeeeeeeeeeg",
- dstSize: 3,
- srcSize: 100,
- wantStr: "1a2b3c10d",
- wantErr: errShortInternal,
- },
- }
-}
-
-func doTransform(tc testCase) (res string, iter int, err error) {
- tc.t.Reset()
- dst := make([]byte, tc.dstSize)
- out, in := make([]byte, 0, 2*len(tc.src)), []byte(tc.src)
- for {
- iter++
- src, atEOF := in, true
- if len(src) > tc.srcSize {
- src, atEOF = src[:tc.srcSize], false
- }
- nDst, nSrc, err := tc.t.Transform(dst, src, atEOF)
- out = append(out, dst[:nDst]...)
- in = in[nSrc:]
- switch {
- case err == nil && len(in) != 0:
- case err == ErrShortSrc && nSrc > 0:
- case err == ErrShortDst && (nDst > 0 || nSrc > 0):
- default:
- return string(out), iter, err
- }
- }
-}
-
-func TestChain(t *testing.T) {
- if c, ok := Chain().(nop); !ok {
- t.Errorf("empty chain: %v; want Nop", c)
- }
-
- // Test Chain for a single Transformer.
- for _, tc := range testCases {
- tc.t = Chain(tc.t)
- str, _, err := doTransform(tc)
- if str != tc.wantStr || err != tc.wantErr {
- t.Errorf("%s:\ngot %q, %v\nwant %q, %v", tc, str, err, tc.wantStr, tc.wantErr)
- }
- }
-
- tests := chainTests()
- sizes := []int{1, 2, 3, 4, 5, 7, 10, 100, 1000}
- addTest := func(tc testCase, t *chain) {
- if t.link[0].t != tc.t && tc.wantErr == ErrShortSrc {
- tc.wantErr = errShortInternal
- }
- if t.link[len(t.link)-2].t != tc.t && tc.wantErr == ErrShortDst {
- tc.wantErr = errShortInternal
- }
- tc.t = t
- tests = append(tests, tc)
- }
- for _, tc := range testCases {
- for _, sz := range sizes {
- tt := tc
- tt.dstSize = sz
- addTest(tt, mkChain(tc.t, tc.dstSize, Nop))
- addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 2, Nop))
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop))
- if sz >= tc.dstSize && (tc.wantErr != ErrShortDst || sz == tc.dstSize) {
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t))
- addTest(tt, mkChain(Nop, 100, Nop, tc.srcSize, tc.t))
- }
- }
- }
- for _, tc := range testCases {
- tt := tc
- tt.dstSize = 1
- tt.wantStr = ""
- addTest(tt, mkChain(tc.t, tc.dstSize, Discard))
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Discard))
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, tc.dstSize, Discard))
- }
- for _, tc := range testCases {
- tt := tc
- tt.dstSize = 100
- tt.wantStr = strings.Replace(tc.src, "0f", "", -1)
- // Chain encoders and decoders.
- if _, ok := tc.t.(rleEncode); ok && tc.wantErr == nil {
- addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 1000, rleDecode{}))
- addTest(tt, mkChain(tc.t, tc.dstSize, Nop, tc.dstSize, rleDecode{}))
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleDecode{}))
- // decoding needs larger destinations
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, rleDecode{}, 100, Nop))
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleDecode{}, 100, Nop))
- } else if _, ok := tc.t.(rleDecode); ok && tc.wantErr == nil {
- // The internal buffer size may need to be the sum of the maximum segment
- // size of the two encoders!
- addTest(tt, mkChain(tc.t, 2*tc.dstSize, rleEncode{}))
- addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 101, rleEncode{}))
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleEncode{}))
- addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 200, rleEncode{}, 100, Nop))
- }
- }
- for _, tc := range tests {
- str, iter, err := doTransform(tc)
- mi := tc.wantIter != 0 && tc.wantIter != iter
- if str != tc.wantStr || err != tc.wantErr || mi {
- t.Errorf("%s:\ngot iter:%d, %q, %v\nwant iter:%d, %q, %v", tc, iter, str, err, tc.wantIter, tc.wantStr, tc.wantErr)
- }
- break
- }
-}
-
-func TestRemoveFunc(t *testing.T) {
- filter := RemoveFunc(func(r rune) bool {
- return strings.IndexRune("ab\u0300\u1234,", r) != -1
- })
- tests := []testCase{
- {
- src: ",",
- wantStr: "",
- },
-
- {
- src: "c",
- wantStr: "c",
- },
-
- {
- src: "\u2345",
- wantStr: "\u2345",
- },
-
- {
- src: "tschüß",
- wantStr: "tschüß",
- },
-
- {
- src: ",до,свидания,",
- wantStr: "досвидания",
- },
-
- {
- src: "a\xbd\xb2=\xbc ⌘",
- wantStr: "\uFFFD\uFFFD=\uFFFD ⌘",
- },
-
- {
- // If we didn't replace illegal bytes with RuneError, the result
- // would be \u0300 or the code would need to be more complex.
- src: "\xcc\u0300\x80",
- wantStr: "\uFFFD\uFFFD",
- },
-
- {
- src: "\xcc\u0300\x80",
- dstSize: 3,
- wantStr: "\uFFFD\uFFFD",
- wantIter: 2,
- },
-
- {
- // Test a long buffer greater than the internal buffer size
- src: "hello\xcc\xcc\xccworld",
- srcSize: 13,
- wantStr: "hello\uFFFD\uFFFD\uFFFDworld",
- wantIter: 1,
- },
-
- {
- src: "\u2345",
- dstSize: 2,
- wantStr: "",
- wantErr: ErrShortDst,
- },
-
- {
- src: "\xcc",
- dstSize: 2,
- wantStr: "",
- wantErr: ErrShortDst,
- },
-
- {
- src: "\u0300",
- dstSize: 2,
- srcSize: 1,
- wantStr: "",
- wantErr: ErrShortSrc,
- },
-
- {
- t: RemoveFunc(func(r rune) bool {
- return r == utf8.RuneError
- }),
- src: "\xcc\u0300\x80",
- wantStr: "\u0300",
- },
- }
-
- for _, tc := range tests {
- tc.desc = tc.src
- if tc.t == nil {
- tc.t = filter
- }
- if tc.dstSize == 0 {
- tc.dstSize = 100
- }
- if tc.srcSize == 0 {
- tc.srcSize = 100
- }
- str, iter, err := doTransform(tc)
- mi := tc.wantIter != 0 && tc.wantIter != iter
- if str != tc.wantStr || err != tc.wantErr || mi {
- t.Errorf("%+q:\ngot iter:%d, %+q, %v\nwant iter:%d, %+q, %v", tc.src, iter, str, err, tc.wantIter, tc.wantStr, tc.wantErr)
- }
-
- tc.src = str
- idem, _, _ := doTransform(tc)
- if str != idem {
- t.Errorf("%+q: found %+q; want %+q", tc.src, idem, str)
- }
- }
-}
-
-func testString(t *testing.T, f func(Transformer, string) (string, int, error)) {
- for _, tt := range append(testCases, chainTests()...) {
- if tt.desc == "allowStutter = true" {
- // We don't have control over the buffer size, so we eliminate tests
- // that depend on a specific buffer size being set.
- continue
- }
- if tt.wantErr == ErrShortDst || tt.wantErr == ErrShortSrc {
- // The result string will be different.
- continue
- }
- got, n, err := f(tt.t, tt.src)
- if tt.wantErr != err {
- t.Errorf("%s:error: got %v; want %v", tt.desc, err, tt.wantErr)
- }
- if got, want := err == nil, n == len(tt.src); got != want {
- t.Errorf("%s:n: got %v; want %v", tt.desc, got, want)
- }
- if got != tt.wantStr {
- t.Errorf("%s:string: got %q; want %q", tt.desc, got, tt.wantStr)
- }
- }
-}
-
-func TestBytes(t *testing.T) {
- testString(t, func(z Transformer, s string) (string, int, error) {
- b, n, err := Bytes(z, []byte(s))
- return string(b), n, err
- })
-}
-
-func TestString(t *testing.T) {
- testString(t, String)
-
- // Overrun the internal destination buffer.
- for i, s := range []string{
- strings.Repeat("a", initialBufSize-1),
- strings.Repeat("a", initialBufSize+0),
- strings.Repeat("a", initialBufSize+1),
- strings.Repeat("A", initialBufSize-1),
- strings.Repeat("A", initialBufSize+0),
- strings.Repeat("A", initialBufSize+1),
- strings.Repeat("A", 2*initialBufSize-1),
- strings.Repeat("A", 2*initialBufSize+0),
- strings.Repeat("A", 2*initialBufSize+1),
- strings.Repeat("a", initialBufSize-2) + "A",
- strings.Repeat("a", initialBufSize-1) + "A",
- strings.Repeat("a", initialBufSize+0) + "A",
- strings.Repeat("a", initialBufSize+1) + "A",
- } {
- got, _, _ := String(lowerCaseASCII{}, s)
- if want := strings.ToLower(s); got != want {
- t.Errorf("%d:dst buffer test: got %s (%d); want %s (%d)", i, got, len(got), want, len(want))
- }
- }
-
- // Overrun the internal source buffer.
- for i, s := range []string{
- strings.Repeat("a", initialBufSize-1),
- strings.Repeat("a", initialBufSize+0),
- strings.Repeat("a", initialBufSize+1),
- strings.Repeat("a", 2*initialBufSize+1),
- strings.Repeat("a", 2*initialBufSize+0),
- strings.Repeat("a", 2*initialBufSize+1),
- } {
- got, _, _ := String(rleEncode{}, s)
- if want := fmt.Sprintf("%da", len(s)); got != want {
- t.Errorf("%d:src buffer test: got %s (%d); want %s (%d)", i, got, len(got), want, len(want))
- }
- }
-
- // Test allocations for non-changing strings.
- // Note we still need to allocate a single buffer.
- for i, s := range []string{
- "",
- "123",
- "123456789",
- strings.Repeat("a", initialBufSize),
- strings.Repeat("a", 10*initialBufSize),
- } {
- if n := testing.AllocsPerRun(5, func() { String(&lowerCaseASCII{}, s) }); n > 1 {
- t.Errorf("%d: #allocs was %f; want 1", i, n)
- }
- }
-}
-
-// TestBytesAllocation tests that buffer growth stays limited with the trickler
-// transformer, which behaves oddly but within spec. In case buffer growth is
-// not correctly handled, the test will either panic with a failed allocation or
-// thrash. To ensure the tests terminate under the last condition, we time out
-// after some sufficiently long period of time.
-func TestBytesAllocation(t *testing.T) {
- done := make(chan bool)
- go func() {
- in := bytes.Repeat([]byte{'a'}, 1000)
- tr := trickler(make([]byte, 1))
- Bytes(&tr, in)
- done <- true
- }()
- select {
- case <-done:
- case <-time.After(3 * time.Second):
- t.Error("time out, likely due to excessive allocation")
- }
-}
-
-// TestStringAllocation tests that buffer growth stays limited with the trickler
-// transformer, which behaves oddly but within spec. In case buffer growth is
-// not correctly handled, the test will either panic with a failed allocation or
-// thrash. To ensure the tests terminate under the last condition, we time out
-// after some sufficiently long period of time.
-func TestStringAllocation(t *testing.T) {
- done := make(chan bool)
- go func() {
- in := strings.Repeat("a", 1000)
- tr := trickler(make([]byte, 1))
- String(&tr, in)
- done <- true
- }()
- select {
- case <-done:
- case <-time.After(3 * time.Second):
- t.Error("time out, likely due to excessive allocation")
- }
-}
-
-func BenchmarkStringLower(b *testing.B) {
- in := strings.Repeat("a", 4096)
- for i := 0; i < b.N; i++ {
- String(&lowerCaseASCII{}, in)
- }
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/benchmark.go b/Godeps/_workspace/src/gopkg.in/check.v1/benchmark.go
index 48cb8c811..46ea9dc6d 100644
--- a/Godeps/_workspace/src/gopkg.in/check.v1/benchmark.go
+++ b/Godeps/_workspace/src/gopkg.in/check.v1/benchmark.go
@@ -1,6 +1,30 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// Copyright (c) 2012 The Go Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package check
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/benchmark_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/benchmark_test.go
deleted file mode 100644
index 4dd827c16..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/benchmark_test.go
+++ /dev/null
@@ -1,91 +0,0 @@
-// These tests verify the test running logic.
-
-package check_test
-
-import (
- "time"
- . "gopkg.in/check.v1"
-)
-
-var benchmarkS = Suite(&BenchmarkS{})
-
-type BenchmarkS struct{}
-
-func (s *BenchmarkS) TestCountSuite(c *C) {
- suitesRun += 1
-}
-
-func (s *BenchmarkS) TestBasicTestTiming(c *C) {
- helper := FixtureHelper{sleepOn: "Test1", sleep: 1000000 * time.Nanosecond}
- output := String{}
- runConf := RunConf{Output: &output, Verbose: true}
- Run(&helper, &runConf)
-
- expected := "PASS: check_test\\.go:[0-9]+: FixtureHelper\\.Test1\t0\\.001s\n" +
- "PASS: check_test\\.go:[0-9]+: FixtureHelper\\.Test2\t0\\.000s\n"
- c.Assert(output.value, Matches, expected)
-}
-
-func (s *BenchmarkS) TestStreamTestTiming(c *C) {
- helper := FixtureHelper{sleepOn: "SetUpSuite", sleep: 1000000 * time.Nanosecond}
- output := String{}
- runConf := RunConf{Output: &output, Stream: true}
- Run(&helper, &runConf)
-
- expected := "(?s).*\nPASS: check_test\\.go:[0-9]+: FixtureHelper\\.SetUpSuite\t *0\\.001s\n.*"
- c.Assert(output.value, Matches, expected)
-}
-
-func (s *BenchmarkS) TestBenchmark(c *C) {
- helper := FixtureHelper{sleep: 100000}
- output := String{}
- runConf := RunConf{
- Output: &output,
- Benchmark: true,
- BenchmarkTime: 10000000,
- Filter: "Benchmark1",
- }
- Run(&helper, &runConf)
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Benchmark1")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "SetUpTest")
- c.Check(helper.calls[5], Equals, "Benchmark1")
- c.Check(helper.calls[6], Equals, "TearDownTest")
- // ... and more.
-
- expected := "PASS: check_test\\.go:[0-9]+: FixtureHelper\\.Benchmark1\t *100\t *[12][0-9]{5} ns/op\n"
- c.Assert(output.value, Matches, expected)
-}
-
-func (s *BenchmarkS) TestBenchmarkBytes(c *C) {
- helper := FixtureHelper{sleep: 100000}
- output := String{}
- runConf := RunConf{
- Output: &output,
- Benchmark: true,
- BenchmarkTime: 10000000,
- Filter: "Benchmark2",
- }
- Run(&helper, &runConf)
-
- expected := "PASS: check_test\\.go:[0-9]+: FixtureHelper\\.Benchmark2\t *100\t *[12][0-9]{5} ns/op\t *[4-9]\\.[0-9]{2} MB/s\n"
- c.Assert(output.value, Matches, expected)
-}
-
-func (s *BenchmarkS) TestBenchmarkMem(c *C) {
- helper := FixtureHelper{sleep: 100000}
- output := String{}
- runConf := RunConf{
- Output: &output,
- Benchmark: true,
- BenchmarkMem: true,
- BenchmarkTime: 10000000,
- Filter: "Benchmark3",
- }
- Run(&helper, &runConf)
-
- expected := "PASS: check_test\\.go:[0-9]+: FixtureHelper\\.Benchmark3\t *100\t *[12][0-9]{5} ns/op\t *[0-9]+ B/op\t *[1-9] allocs/op\n"
- c.Assert(output.value, Matches, expected)
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/bootstrap_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/bootstrap_test.go
deleted file mode 100644
index e55f327c7..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/bootstrap_test.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// These initial tests are for bootstrapping. They verify that we can
-// basically use the testing infrastructure itself to check if the test
-// system is working.
-//
-// These tests use will break down the test runner badly in case of
-// errors because if they simply fail, we can't be sure the developer
-// will ever see anything (because failing means the failing system
-// somehow isn't working! :-)
-//
-// Do not assume *any* internal functionality works as expected besides
-// what's actually tested here.
-
-package check_test
-
-import (
- "fmt"
- "gopkg.in/check.v1"
- "strings"
-)
-
-type BootstrapS struct{}
-
-var boostrapS = check.Suite(&BootstrapS{})
-
-func (s *BootstrapS) TestCountSuite(c *check.C) {
- suitesRun += 1
-}
-
-func (s *BootstrapS) TestFailedAndFail(c *check.C) {
- if c.Failed() {
- critical("c.Failed() must be false first!")
- }
- c.Fail()
- if !c.Failed() {
- critical("c.Fail() didn't put the test in a failed state!")
- }
- c.Succeed()
-}
-
-func (s *BootstrapS) TestFailedAndSucceed(c *check.C) {
- c.Fail()
- c.Succeed()
- if c.Failed() {
- critical("c.Succeed() didn't put the test back in a non-failed state")
- }
-}
-
-func (s *BootstrapS) TestLogAndGetTestLog(c *check.C) {
- c.Log("Hello there!")
- log := c.GetTestLog()
- if log != "Hello there!\n" {
- critical(fmt.Sprintf("Log() or GetTestLog() is not working! Got: %#v", log))
- }
-}
-
-func (s *BootstrapS) TestLogfAndGetTestLog(c *check.C) {
- c.Logf("Hello %v", "there!")
- log := c.GetTestLog()
- if log != "Hello there!\n" {
- critical(fmt.Sprintf("Logf() or GetTestLog() is not working! Got: %#v", log))
- }
-}
-
-func (s *BootstrapS) TestRunShowsErrors(c *check.C) {
- output := String{}
- check.Run(&FailHelper{}, &check.RunConf{Output: &output})
- if strings.Index(output.value, "Expected failure!") == -1 {
- critical(fmt.Sprintf("RunWithWriter() output did not contain the "+
- "expected failure! Got: %#v",
- output.value))
- }
-}
-
-func (s *BootstrapS) TestRunDoesntShowSuccesses(c *check.C) {
- output := String{}
- check.Run(&SuccessHelper{}, &check.RunConf{Output: &output})
- if strings.Index(output.value, "Expected success!") != -1 {
- critical(fmt.Sprintf("RunWithWriter() output contained a successful "+
- "test! Got: %#v",
- output.value))
- }
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/check.go b/Godeps/_workspace/src/gopkg.in/check.v1/check.go
index ca8c0f92d..82c26fa73 100644
--- a/Godeps/_workspace/src/gopkg.in/check.v1/check.go
+++ b/Godeps/_workspace/src/gopkg.in/check.v1/check.go
@@ -21,6 +21,7 @@ import (
"strconv"
"strings"
"sync"
+ "sync/atomic"
"time"
)
@@ -43,7 +44,7 @@ const (
missedSt
)
-type funcStatus int
+type funcStatus uint32
// A method value can't reach its own Method structure.
type methodType struct {
@@ -81,7 +82,7 @@ type C struct {
method *methodType
kind funcKind
testName string
- status funcStatus
+ _status funcStatus
logb *logger
logw io.Writer
done chan *C
@@ -93,6 +94,14 @@ type C struct {
timer
}
+func (c *C) status() funcStatus {
+ return funcStatus(atomic.LoadUint32((*uint32)(&c._status)))
+}
+
+func (c *C) setStatus(s funcStatus) {
+ atomic.StoreUint32((*uint32)(&c._status), uint32(s))
+}
+
func (c *C) stopNow() {
runtime.Goexit()
}
@@ -326,7 +335,7 @@ func (c *C) logPanic(skip int, value interface{}) {
if name == "Value.call" && strings.HasSuffix(path, valueGo) {
continue
}
- if name == "call16" && strings.Contains(path, asmGo) {
+ if (name == "call16" || name == "call32") && strings.Contains(path, asmGo) {
continue
}
c.logf("%s:%d\n in %s", nicePath(file), line, name)
@@ -455,7 +464,7 @@ func (tracker *resultTracker) _loopRoutine() {
tracker._waiting += 1
case c = <-tracker._doneChan:
tracker._waiting -= 1
- switch c.status {
+ switch c.status() {
case succeededSt:
if c.kind == testKd {
if c.mustFail {
@@ -601,15 +610,15 @@ func (runner *suiteRunner) run() *Result {
runner.tracker.start()
if runner.checkFixtureArgs() {
c := runner.runFixture(runner.setUpSuite, "", nil)
- if c == nil || c.status == succeededSt {
+ if c == nil || c.status() == succeededSt {
for i := 0; i != len(runner.tests); i++ {
c := runner.runTest(runner.tests[i])
- if c.status == fixturePanickedSt {
+ if c.status() == fixturePanickedSt {
runner.skipTests(missedSt, runner.tests[i+1:])
break
}
}
- } else if c != nil && c.status == skippedSt {
+ } else if c != nil && c.status() == skippedSt {
runner.skipTests(skippedSt, runner.tests)
} else {
runner.skipTests(missedSt, runner.tests)
@@ -674,22 +683,22 @@ func (runner *suiteRunner) callDone(c *C) {
switch v := value.(type) {
case *fixturePanic:
if v.status == skippedSt {
- c.status = skippedSt
+ c.setStatus(skippedSt)
} else {
c.logSoftPanic("Fixture has panicked (see related PANIC)")
- c.status = fixturePanickedSt
+ c.setStatus(fixturePanickedSt)
}
default:
c.logPanic(1, value)
- c.status = panickedSt
+ c.setStatus(panickedSt)
}
}
if c.mustFail {
- switch c.status {
+ switch c.status() {
case failedSt:
- c.status = succeededSt
+ c.setStatus(succeededSt)
case succeededSt:
- c.status = failedSt
+ c.setStatus(failedSt)
c.logString("Error: Test succeeded, but was expected to fail")
c.logString("Reason: " + c.reason)
}
@@ -724,11 +733,11 @@ func (runner *suiteRunner) runFixtureWithPanic(method *methodType, testName stri
return nil
}
c := runner.runFixture(method, testName, logb)
- if c != nil && c.status != succeededSt {
+ if c != nil && c.status() != succeededSt {
if skipped != nil {
- *skipped = c.status == skippedSt
+ *skipped = c.status() == skippedSt
}
- panic(&fixturePanic{c.status, method})
+ panic(&fixturePanic{c.status(), method})
}
return c
}
@@ -753,7 +762,7 @@ func (runner *suiteRunner) forkTest(method *methodType) *C {
if mt.NumIn() != 1 || mt.In(0) != reflect.TypeOf(c) {
// Rather than a plain panic, provide a more helpful message when
// the argument type is incorrect.
- c.status = panickedSt
+ c.setStatus(panickedSt)
c.logArgPanic(c.method, "*check.C")
return
}
@@ -773,7 +782,7 @@ func (runner *suiteRunner) forkTest(method *methodType) *C {
c.StartTimer()
c.method.Call([]reflect.Value{reflect.ValueOf(c)})
c.StopTimer()
- if c.status != succeededSt || c.duration >= c.benchTime || benchN >= 1e9 {
+ if c.status() != succeededSt || c.duration >= c.benchTime || benchN >= 1e9 {
return
}
perOpN := int(1e9)
@@ -808,7 +817,7 @@ func (runner *suiteRunner) runTest(method *methodType) *C {
func (runner *suiteRunner) skipTests(status funcStatus, methods []*methodType) {
for _, method := range methods {
runner.runFunc(method, testKd, "", nil, func(c *C) {
- c.status = status
+ c.setStatus(status)
})
}
}
@@ -825,7 +834,7 @@ func (runner *suiteRunner) checkFixtureArgs() bool {
succeeded = false
runner.runFunc(method, fixtureKd, "", nil, func(c *C) {
c.logArgPanic(method, "*check.C")
- c.status = panickedSt
+ c.setStatus(panickedSt)
})
}
}
@@ -839,7 +848,7 @@ func (runner *suiteRunner) reportCallStarted(c *C) {
func (runner *suiteRunner) reportCallDone(c *C) {
runner.tracker.callDone(c)
- switch c.status {
+ switch c.status() {
case succeededSt:
if c.mustFail {
runner.output.WriteCallSuccess("FAIL EXPECTED", c)
@@ -862,84 +871,3 @@ func (runner *suiteRunner) reportCallDone(c *C) {
runner.output.WriteCallSuccess("MISS", c)
}
}
-
-// -----------------------------------------------------------------------
-// Output writer manages atomic output writing according to settings.
-
-type outputWriter struct {
- m sync.Mutex
- writer io.Writer
- wroteCallProblemLast bool
- Stream bool
- Verbose bool
-}
-
-func newOutputWriter(writer io.Writer, stream, verbose bool) *outputWriter {
- return &outputWriter{writer: writer, Stream: stream, Verbose: verbose}
-}
-
-func (ow *outputWriter) Write(content []byte) (n int, err error) {
- ow.m.Lock()
- n, err = ow.writer.Write(content)
- ow.m.Unlock()
- return
-}
-
-func (ow *outputWriter) WriteCallStarted(label string, c *C) {
- if ow.Stream {
- header := renderCallHeader(label, c, "", "\n")
- ow.m.Lock()
- ow.writer.Write([]byte(header))
- ow.m.Unlock()
- }
-}
-
-func (ow *outputWriter) WriteCallProblem(label string, c *C) {
- var prefix string
- if !ow.Stream {
- prefix = "\n-----------------------------------" +
- "-----------------------------------\n"
- }
- header := renderCallHeader(label, c, prefix, "\n\n")
- ow.m.Lock()
- ow.wroteCallProblemLast = true
- ow.writer.Write([]byte(header))
- if !ow.Stream {
- c.logb.WriteTo(ow.writer)
- }
- ow.m.Unlock()
-}
-
-func (ow *outputWriter) WriteCallSuccess(label string, c *C) {
- if ow.Stream || (ow.Verbose && c.kind == testKd) {
- // TODO Use a buffer here.
- var suffix string
- if c.reason != "" {
- suffix = " (" + c.reason + ")"
- }
- if c.status == succeededSt {
- suffix += "\t" + c.timerString()
- }
- suffix += "\n"
- if ow.Stream {
- suffix += "\n"
- }
- header := renderCallHeader(label, c, "", suffix)
- ow.m.Lock()
- // Resist temptation of using line as prefix above due to race.
- if !ow.Stream && ow.wroteCallProblemLast {
- header = "\n-----------------------------------" +
- "-----------------------------------\n" +
- header
- }
- ow.wroteCallProblemLast = false
- ow.writer.Write([]byte(header))
- ow.m.Unlock()
- }
-}
-
-func renderCallHeader(label string, c *C, prefix, suffix string) string {
- pc := c.method.PC()
- return fmt.Sprintf("%s%s: %s: %s%s", prefix, label, niceFuncPath(pc),
- niceFuncName(pc), suffix)
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/check_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/check_test.go
deleted file mode 100644
index 871b32527..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/check_test.go
+++ /dev/null
@@ -1,207 +0,0 @@
-// This file contains just a few generic helpers which are used by the
-// other test files.
-
-package check_test
-
-import (
- "flag"
- "fmt"
- "os"
- "regexp"
- "runtime"
- "testing"
- "time"
-
- "gopkg.in/check.v1"
-)
-
-// We count the number of suites run at least to get a vague hint that the
-// test suite is behaving as it should. Otherwise a bug introduced at the
-// very core of the system could go unperceived.
-const suitesRunExpected = 8
-
-var suitesRun int = 0
-
-func Test(t *testing.T) {
- check.TestingT(t)
- if suitesRun != suitesRunExpected && flag.Lookup("check.f").Value.String() == "" {
- critical(fmt.Sprintf("Expected %d suites to run rather than %d",
- suitesRunExpected, suitesRun))
- }
-}
-
-// -----------------------------------------------------------------------
-// Helper functions.
-
-// Break down badly. This is used in test cases which can't yet assume
-// that the fundamental bits are working.
-func critical(error string) {
- fmt.Fprintln(os.Stderr, "CRITICAL: "+error)
- os.Exit(1)
-}
-
-// Return the file line where it's called.
-func getMyLine() int {
- if _, _, line, ok := runtime.Caller(1); ok {
- return line
- }
- return -1
-}
-
-// -----------------------------------------------------------------------
-// Helper type implementing a basic io.Writer for testing output.
-
-// Type implementing the io.Writer interface for analyzing output.
-type String struct {
- value string
-}
-
-// The only function required by the io.Writer interface. Will append
-// written data to the String.value string.
-func (s *String) Write(p []byte) (n int, err error) {
- s.value += string(p)
- return len(p), nil
-}
-
-// Trivial wrapper to test errors happening on a different file
-// than the test itself.
-func checkEqualWrapper(c *check.C, obtained, expected interface{}) (result bool, line int) {
- return c.Check(obtained, check.Equals, expected), getMyLine()
-}
-
-// -----------------------------------------------------------------------
-// Helper suite for testing basic fail behavior.
-
-type FailHelper struct {
- testLine int
-}
-
-func (s *FailHelper) TestLogAndFail(c *check.C) {
- s.testLine = getMyLine() - 1
- c.Log("Expected failure!")
- c.Fail()
-}
-
-// -----------------------------------------------------------------------
-// Helper suite for testing basic success behavior.
-
-type SuccessHelper struct{}
-
-func (s *SuccessHelper) TestLogAndSucceed(c *check.C) {
- c.Log("Expected success!")
-}
-
-// -----------------------------------------------------------------------
-// Helper suite for testing ordering and behavior of fixture.
-
-type FixtureHelper struct {
- calls []string
- panicOn string
- skip bool
- skipOnN int
- sleepOn string
- sleep time.Duration
- bytes int64
-}
-
-func (s *FixtureHelper) trace(name string, c *check.C) {
- s.calls = append(s.calls, name)
- if name == s.panicOn {
- panic(name)
- }
- if s.sleep > 0 && s.sleepOn == name {
- time.Sleep(s.sleep)
- }
- if s.skip && s.skipOnN == len(s.calls)-1 {
- c.Skip("skipOnN == n")
- }
-}
-
-func (s *FixtureHelper) SetUpSuite(c *check.C) {
- s.trace("SetUpSuite", c)
-}
-
-func (s *FixtureHelper) TearDownSuite(c *check.C) {
- s.trace("TearDownSuite", c)
-}
-
-func (s *FixtureHelper) SetUpTest(c *check.C) {
- s.trace("SetUpTest", c)
-}
-
-func (s *FixtureHelper) TearDownTest(c *check.C) {
- s.trace("TearDownTest", c)
-}
-
-func (s *FixtureHelper) Test1(c *check.C) {
- s.trace("Test1", c)
-}
-
-func (s *FixtureHelper) Test2(c *check.C) {
- s.trace("Test2", c)
-}
-
-func (s *FixtureHelper) Benchmark1(c *check.C) {
- s.trace("Benchmark1", c)
- for i := 0; i < c.N; i++ {
- time.Sleep(s.sleep)
- }
-}
-
-func (s *FixtureHelper) Benchmark2(c *check.C) {
- s.trace("Benchmark2", c)
- c.SetBytes(1024)
- for i := 0; i < c.N; i++ {
- time.Sleep(s.sleep)
- }
-}
-
-func (s *FixtureHelper) Benchmark3(c *check.C) {
- var x []int64
- s.trace("Benchmark3", c)
- for i := 0; i < c.N; i++ {
- time.Sleep(s.sleep)
- x = make([]int64, 5)
- _ = x
- }
-}
-
-// -----------------------------------------------------------------------
-// Helper which checks the state of the test and ensures that it matches
-// the given expectations. Depends on c.Errorf() working, so shouldn't
-// be used to test this one function.
-
-type expectedState struct {
- name string
- result interface{}
- failed bool
- log string
-}
-
-// Verify the state of the test. Note that since this also verifies if
-// the test is supposed to be in a failed state, no other checks should
-// be done in addition to what is being tested.
-func checkState(c *check.C, result interface{}, expected *expectedState) {
- failed := c.Failed()
- c.Succeed()
- log := c.GetTestLog()
- matched, matchError := regexp.MatchString("^"+expected.log+"$", log)
- if matchError != nil {
- c.Errorf("Error in matching expression used in testing %s",
- expected.name)
- } else if !matched {
- c.Errorf("%s logged:\n----------\n%s----------\n\nExpected:\n----------\n%s\n----------",
- expected.name, log, expected.log)
- }
- if result != expected.result {
- c.Errorf("%s returned %#v rather than %#v",
- expected.name, result, expected.result)
- }
- if failed != expected.failed {
- if failed {
- c.Errorf("%s has failed when it shouldn't", expected.name)
- } else {
- c.Errorf("%s has not failed when it should", expected.name)
- }
- }
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/checkers_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/checkers_test.go
deleted file mode 100644
index 5c6974746..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/checkers_test.go
+++ /dev/null
@@ -1,272 +0,0 @@
-package check_test
-
-import (
- "errors"
- "gopkg.in/check.v1"
- "reflect"
- "runtime"
-)
-
-type CheckersS struct{}
-
-var _ = check.Suite(&CheckersS{})
-
-func testInfo(c *check.C, checker check.Checker, name string, paramNames []string) {
- info := checker.Info()
- if info.Name != name {
- c.Fatalf("Got name %s, expected %s", info.Name, name)
- }
- if !reflect.DeepEqual(info.Params, paramNames) {
- c.Fatalf("Got param names %#v, expected %#v", info.Params, paramNames)
- }
-}
-
-func testCheck(c *check.C, checker check.Checker, result bool, error string, params ...interface{}) ([]interface{}, []string) {
- info := checker.Info()
- if len(params) != len(info.Params) {
- c.Fatalf("unexpected param count in test; expected %d got %d", len(info.Params), len(params))
- }
- names := append([]string{}, info.Params...)
- result_, error_ := checker.Check(params, names)
- if result_ != result || error_ != error {
- c.Fatalf("%s.Check(%#v) returned (%#v, %#v) rather than (%#v, %#v)",
- info.Name, params, result_, error_, result, error)
- }
- return params, names
-}
-
-func (s *CheckersS) TestComment(c *check.C) {
- bug := check.Commentf("a %d bc", 42)
- comment := bug.CheckCommentString()
- if comment != "a 42 bc" {
- c.Fatalf("Commentf returned %#v", comment)
- }
-}
-
-func (s *CheckersS) TestIsNil(c *check.C) {
- testInfo(c, check.IsNil, "IsNil", []string{"value"})
-
- testCheck(c, check.IsNil, true, "", nil)
- testCheck(c, check.IsNil, false, "", "a")
-
- testCheck(c, check.IsNil, true, "", (chan int)(nil))
- testCheck(c, check.IsNil, false, "", make(chan int))
- testCheck(c, check.IsNil, true, "", (error)(nil))
- testCheck(c, check.IsNil, false, "", errors.New(""))
- testCheck(c, check.IsNil, true, "", ([]int)(nil))
- testCheck(c, check.IsNil, false, "", make([]int, 1))
- testCheck(c, check.IsNil, false, "", int(0))
-}
-
-func (s *CheckersS) TestNotNil(c *check.C) {
- testInfo(c, check.NotNil, "NotNil", []string{"value"})
-
- testCheck(c, check.NotNil, false, "", nil)
- testCheck(c, check.NotNil, true, "", "a")
-
- testCheck(c, check.NotNil, false, "", (chan int)(nil))
- testCheck(c, check.NotNil, true, "", make(chan int))
- testCheck(c, check.NotNil, false, "", (error)(nil))
- testCheck(c, check.NotNil, true, "", errors.New(""))
- testCheck(c, check.NotNil, false, "", ([]int)(nil))
- testCheck(c, check.NotNil, true, "", make([]int, 1))
-}
-
-func (s *CheckersS) TestNot(c *check.C) {
- testInfo(c, check.Not(check.IsNil), "Not(IsNil)", []string{"value"})
-
- testCheck(c, check.Not(check.IsNil), false, "", nil)
- testCheck(c, check.Not(check.IsNil), true, "", "a")
-}
-
-type simpleStruct struct {
- i int
-}
-
-func (s *CheckersS) TestEquals(c *check.C) {
- testInfo(c, check.Equals, "Equals", []string{"obtained", "expected"})
-
- // The simplest.
- testCheck(c, check.Equals, true, "", 42, 42)
- testCheck(c, check.Equals, false, "", 42, 43)
-
- // Different native types.
- testCheck(c, check.Equals, false, "", int32(42), int64(42))
-
- // With nil.
- testCheck(c, check.Equals, false, "", 42, nil)
-
- // Slices
- testCheck(c, check.Equals, false, "runtime error: comparing uncomparable type []uint8", []byte{1, 2}, []byte{1, 2})
-
- // Struct values
- testCheck(c, check.Equals, true, "", simpleStruct{1}, simpleStruct{1})
- testCheck(c, check.Equals, false, "", simpleStruct{1}, simpleStruct{2})
-
- // Struct pointers
- testCheck(c, check.Equals, false, "", &simpleStruct{1}, &simpleStruct{1})
- testCheck(c, check.Equals, false, "", &simpleStruct{1}, &simpleStruct{2})
-}
-
-func (s *CheckersS) TestDeepEquals(c *check.C) {
- testInfo(c, check.DeepEquals, "DeepEquals", []string{"obtained", "expected"})
-
- // The simplest.
- testCheck(c, check.DeepEquals, true, "", 42, 42)
- testCheck(c, check.DeepEquals, false, "", 42, 43)
-
- // Different native types.
- testCheck(c, check.DeepEquals, false, "", int32(42), int64(42))
-
- // With nil.
- testCheck(c, check.DeepEquals, false, "", 42, nil)
-
- // Slices
- testCheck(c, check.DeepEquals, true, "", []byte{1, 2}, []byte{1, 2})
- testCheck(c, check.DeepEquals, false, "", []byte{1, 2}, []byte{1, 3})
-
- // Struct values
- testCheck(c, check.DeepEquals, true, "", simpleStruct{1}, simpleStruct{1})
- testCheck(c, check.DeepEquals, false, "", simpleStruct{1}, simpleStruct{2})
-
- // Struct pointers
- testCheck(c, check.DeepEquals, true, "", &simpleStruct{1}, &simpleStruct{1})
- testCheck(c, check.DeepEquals, false, "", &simpleStruct{1}, &simpleStruct{2})
-}
-
-func (s *CheckersS) TestHasLen(c *check.C) {
- testInfo(c, check.HasLen, "HasLen", []string{"obtained", "n"})
-
- testCheck(c, check.HasLen, true, "", "abcd", 4)
- testCheck(c, check.HasLen, true, "", []int{1, 2}, 2)
- testCheck(c, check.HasLen, false, "", []int{1, 2}, 3)
-
- testCheck(c, check.HasLen, false, "n must be an int", []int{1, 2}, "2")
- testCheck(c, check.HasLen, false, "obtained value type has no length", nil, 2)
-}
-
-func (s *CheckersS) TestErrorMatches(c *check.C) {
- testInfo(c, check.ErrorMatches, "ErrorMatches", []string{"value", "regex"})
-
- testCheck(c, check.ErrorMatches, false, "Error value is nil", nil, "some error")
- testCheck(c, check.ErrorMatches, false, "Value is not an error", 1, "some error")
- testCheck(c, check.ErrorMatches, true, "", errors.New("some error"), "some error")
- testCheck(c, check.ErrorMatches, true, "", errors.New("some error"), "so.*or")
-
- // Verify params mutation
- params, names := testCheck(c, check.ErrorMatches, false, "", errors.New("some error"), "other error")
- c.Assert(params[0], check.Equals, "some error")
- c.Assert(names[0], check.Equals, "error")
-}
-
-func (s *CheckersS) TestMatches(c *check.C) {
- testInfo(c, check.Matches, "Matches", []string{"value", "regex"})
-
- // Simple matching
- testCheck(c, check.Matches, true, "", "abc", "abc")
- testCheck(c, check.Matches, true, "", "abc", "a.c")
-
- // Must match fully
- testCheck(c, check.Matches, false, "", "abc", "ab")
- testCheck(c, check.Matches, false, "", "abc", "bc")
-
- // String()-enabled values accepted
- testCheck(c, check.Matches, true, "", reflect.ValueOf("abc"), "a.c")
- testCheck(c, check.Matches, false, "", reflect.ValueOf("abc"), "a.d")
-
- // Some error conditions.
- testCheck(c, check.Matches, false, "Obtained value is not a string and has no .String()", 1, "a.c")
- testCheck(c, check.Matches, false, "Can't compile regex: error parsing regexp: missing closing ]: `[c$`", "abc", "a[c")
-}
-
-func (s *CheckersS) TestPanics(c *check.C) {
- testInfo(c, check.Panics, "Panics", []string{"function", "expected"})
-
- // Some errors.
- testCheck(c, check.Panics, false, "Function has not panicked", func() bool { return false }, "BOOM")
- testCheck(c, check.Panics, false, "Function must take zero arguments", 1, "BOOM")
-
- // Plain strings.
- testCheck(c, check.Panics, true, "", func() { panic("BOOM") }, "BOOM")
- testCheck(c, check.Panics, false, "", func() { panic("KABOOM") }, "BOOM")
- testCheck(c, check.Panics, true, "", func() bool { panic("BOOM") }, "BOOM")
-
- // Error values.
- testCheck(c, check.Panics, true, "", func() { panic(errors.New("BOOM")) }, errors.New("BOOM"))
- testCheck(c, check.Panics, false, "", func() { panic(errors.New("KABOOM")) }, errors.New("BOOM"))
-
- type deep struct{ i int }
- // Deep value
- testCheck(c, check.Panics, true, "", func() { panic(&deep{99}) }, &deep{99})
-
- // Verify params/names mutation
- params, names := testCheck(c, check.Panics, false, "", func() { panic(errors.New("KABOOM")) }, errors.New("BOOM"))
- c.Assert(params[0], check.ErrorMatches, "KABOOM")
- c.Assert(names[0], check.Equals, "panic")
-
- // Verify a nil panic
- testCheck(c, check.Panics, true, "", func() { panic(nil) }, nil)
- testCheck(c, check.Panics, false, "", func() { panic(nil) }, "NOPE")
-}
-
-func (s *CheckersS) TestPanicMatches(c *check.C) {
- testInfo(c, check.PanicMatches, "PanicMatches", []string{"function", "expected"})
-
- // Error matching.
- testCheck(c, check.PanicMatches, true, "", func() { panic(errors.New("BOOM")) }, "BO.M")
- testCheck(c, check.PanicMatches, false, "", func() { panic(errors.New("KABOOM")) }, "BO.M")
-
- // Some errors.
- testCheck(c, check.PanicMatches, false, "Function has not panicked", func() bool { return false }, "BOOM")
- testCheck(c, check.PanicMatches, false, "Function must take zero arguments", 1, "BOOM")
-
- // Plain strings.
- testCheck(c, check.PanicMatches, true, "", func() { panic("BOOM") }, "BO.M")
- testCheck(c, check.PanicMatches, false, "", func() { panic("KABOOM") }, "BOOM")
- testCheck(c, check.PanicMatches, true, "", func() bool { panic("BOOM") }, "BO.M")
-
- // Verify params/names mutation
- params, names := testCheck(c, check.PanicMatches, false, "", func() { panic(errors.New("KABOOM")) }, "BOOM")
- c.Assert(params[0], check.Equals, "KABOOM")
- c.Assert(names[0], check.Equals, "panic")
-
- // Verify a nil panic
- testCheck(c, check.PanicMatches, false, "Panic value is not a string or an error", func() { panic(nil) }, "")
-}
-
-func (s *CheckersS) TestFitsTypeOf(c *check.C) {
- testInfo(c, check.FitsTypeOf, "FitsTypeOf", []string{"obtained", "sample"})
-
- // Basic types
- testCheck(c, check.FitsTypeOf, true, "", 1, 0)
- testCheck(c, check.FitsTypeOf, false, "", 1, int64(0))
-
- // Aliases
- testCheck(c, check.FitsTypeOf, false, "", 1, errors.New(""))
- testCheck(c, check.FitsTypeOf, false, "", "error", errors.New(""))
- testCheck(c, check.FitsTypeOf, true, "", errors.New("error"), errors.New(""))
-
- // Structures
- testCheck(c, check.FitsTypeOf, false, "", 1, simpleStruct{})
- testCheck(c, check.FitsTypeOf, false, "", simpleStruct{42}, &simpleStruct{})
- testCheck(c, check.FitsTypeOf, true, "", simpleStruct{42}, simpleStruct{})
- testCheck(c, check.FitsTypeOf, true, "", &simpleStruct{42}, &simpleStruct{})
-
- // Some bad values
- testCheck(c, check.FitsTypeOf, false, "Invalid sample value", 1, interface{}(nil))
- testCheck(c, check.FitsTypeOf, false, "", interface{}(nil), 0)
-}
-
-func (s *CheckersS) TestImplements(c *check.C) {
- testInfo(c, check.Implements, "Implements", []string{"obtained", "ifaceptr"})
-
- var e error
- var re runtime.Error
- testCheck(c, check.Implements, true, "", errors.New(""), &e)
- testCheck(c, check.Implements, false, "", errors.New(""), &re)
-
- // Some bad values
- testCheck(c, check.Implements, false, "ifaceptr should be a pointer to an interface variable", 0, errors.New(""))
- testCheck(c, check.Implements, false, "ifaceptr should be a pointer to an interface variable", 0, interface{}(nil))
- testCheck(c, check.Implements, false, "", interface{}(nil), &e)
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/export_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/export_test.go
deleted file mode 100644
index 0e6cfe0f2..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/export_test.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package check
-
-func PrintLine(filename string, line int) (string, error) {
- return printLine(filename, line)
-}
-
-func Indent(s, with string) string {
- return indent(s, with)
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/fixture_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/fixture_test.go
deleted file mode 100644
index 2bff9e163..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/fixture_test.go
+++ /dev/null
@@ -1,484 +0,0 @@
-// Tests for the behavior of the test fixture system.
-
-package check_test
-
-import (
- . "gopkg.in/check.v1"
-)
-
-// -----------------------------------------------------------------------
-// Fixture test suite.
-
-type FixtureS struct{}
-
-var fixtureS = Suite(&FixtureS{})
-
-func (s *FixtureS) TestCountSuite(c *C) {
- suitesRun += 1
-}
-
-// -----------------------------------------------------------------------
-// Basic fixture ordering verification.
-
-func (s *FixtureS) TestOrder(c *C) {
- helper := FixtureHelper{}
- Run(&helper, nil)
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Test1")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "SetUpTest")
- c.Check(helper.calls[5], Equals, "Test2")
- c.Check(helper.calls[6], Equals, "TearDownTest")
- c.Check(helper.calls[7], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 8)
-}
-
-// -----------------------------------------------------------------------
-// Check the behavior when panics occur within tests and fixtures.
-
-func (s *FixtureS) TestPanicOnTest(c *C) {
- helper := FixtureHelper{panicOn: "Test1"}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Test1")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "SetUpTest")
- c.Check(helper.calls[5], Equals, "Test2")
- c.Check(helper.calls[6], Equals, "TearDownTest")
- c.Check(helper.calls[7], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 8)
-
- expected := "^\n-+\n" +
- "PANIC: check_test\\.go:[0-9]+: FixtureHelper.Test1\n\n" +
- "\\.\\.\\. Panic: Test1 \\(PC=[xA-F0-9]+\\)\n\n" +
- ".+:[0-9]+\n" +
- " in (go)?panic\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.trace\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.Test1\n" +
- "(.|\n)*$"
-
- c.Check(output.value, Matches, expected)
-}
-
-func (s *FixtureS) TestPanicOnSetUpTest(c *C) {
- helper := FixtureHelper{panicOn: "SetUpTest"}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "TearDownTest")
- c.Check(helper.calls[3], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 4)
-
- expected := "^\n-+\n" +
- "PANIC: check_test\\.go:[0-9]+: " +
- "FixtureHelper\\.SetUpTest\n\n" +
- "\\.\\.\\. Panic: SetUpTest \\(PC=[xA-F0-9]+\\)\n\n" +
- ".+:[0-9]+\n" +
- " in (go)?panic\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.trace\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.SetUpTest\n" +
- "(.|\n)*" +
- "\n-+\n" +
- "PANIC: check_test\\.go:[0-9]+: " +
- "FixtureHelper\\.Test1\n\n" +
- "\\.\\.\\. Panic: Fixture has panicked " +
- "\\(see related PANIC\\)\n$"
-
- c.Check(output.value, Matches, expected)
-}
-
-func (s *FixtureS) TestPanicOnTearDownTest(c *C) {
- helper := FixtureHelper{panicOn: "TearDownTest"}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Test1")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 5)
-
- expected := "^\n-+\n" +
- "PANIC: check_test\\.go:[0-9]+: " +
- "FixtureHelper.TearDownTest\n\n" +
- "\\.\\.\\. Panic: TearDownTest \\(PC=[xA-F0-9]+\\)\n\n" +
- ".+:[0-9]+\n" +
- " in (go)?panic\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.trace\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.TearDownTest\n" +
- "(.|\n)*" +
- "\n-+\n" +
- "PANIC: check_test\\.go:[0-9]+: " +
- "FixtureHelper\\.Test1\n\n" +
- "\\.\\.\\. Panic: Fixture has panicked " +
- "\\(see related PANIC\\)\n$"
-
- c.Check(output.value, Matches, expected)
-}
-
-func (s *FixtureS) TestPanicOnSetUpSuite(c *C) {
- helper := FixtureHelper{panicOn: "SetUpSuite"}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 2)
-
- expected := "^\n-+\n" +
- "PANIC: check_test\\.go:[0-9]+: " +
- "FixtureHelper.SetUpSuite\n\n" +
- "\\.\\.\\. Panic: SetUpSuite \\(PC=[xA-F0-9]+\\)\n\n" +
- ".+:[0-9]+\n" +
- " in (go)?panic\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.trace\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.SetUpSuite\n" +
- "(.|\n)*$"
-
- c.Check(output.value, Matches, expected)
-}
-
-func (s *FixtureS) TestPanicOnTearDownSuite(c *C) {
- helper := FixtureHelper{panicOn: "TearDownSuite"}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Test1")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "SetUpTest")
- c.Check(helper.calls[5], Equals, "Test2")
- c.Check(helper.calls[6], Equals, "TearDownTest")
- c.Check(helper.calls[7], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 8)
-
- expected := "^\n-+\n" +
- "PANIC: check_test\\.go:[0-9]+: " +
- "FixtureHelper.TearDownSuite\n\n" +
- "\\.\\.\\. Panic: TearDownSuite \\(PC=[xA-F0-9]+\\)\n\n" +
- ".+:[0-9]+\n" +
- " in (go)?panic\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.trace\n" +
- ".*check_test.go:[0-9]+\n" +
- " in FixtureHelper.TearDownSuite\n" +
- "(.|\n)*$"
-
- c.Check(output.value, Matches, expected)
-}
-
-// -----------------------------------------------------------------------
-// A wrong argument on a test or fixture will produce a nice error.
-
-func (s *FixtureS) TestPanicOnWrongTestArg(c *C) {
- helper := WrongTestArgHelper{}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "TearDownTest")
- c.Check(helper.calls[3], Equals, "SetUpTest")
- c.Check(helper.calls[4], Equals, "Test2")
- c.Check(helper.calls[5], Equals, "TearDownTest")
- c.Check(helper.calls[6], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 7)
-
- expected := "^\n-+\n" +
- "PANIC: fixture_test\\.go:[0-9]+: " +
- "WrongTestArgHelper\\.Test1\n\n" +
- "\\.\\.\\. Panic: WrongTestArgHelper\\.Test1 argument " +
- "should be \\*check\\.C\n"
-
- c.Check(output.value, Matches, expected)
-}
-
-func (s *FixtureS) TestPanicOnWrongSetUpTestArg(c *C) {
- helper := WrongSetUpTestArgHelper{}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(len(helper.calls), Equals, 0)
-
- expected :=
- "^\n-+\n" +
- "PANIC: fixture_test\\.go:[0-9]+: " +
- "WrongSetUpTestArgHelper\\.SetUpTest\n\n" +
- "\\.\\.\\. Panic: WrongSetUpTestArgHelper\\.SetUpTest argument " +
- "should be \\*check\\.C\n"
-
- c.Check(output.value, Matches, expected)
-}
-
-func (s *FixtureS) TestPanicOnWrongSetUpSuiteArg(c *C) {
- helper := WrongSetUpSuiteArgHelper{}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(len(helper.calls), Equals, 0)
-
- expected :=
- "^\n-+\n" +
- "PANIC: fixture_test\\.go:[0-9]+: " +
- "WrongSetUpSuiteArgHelper\\.SetUpSuite\n\n" +
- "\\.\\.\\. Panic: WrongSetUpSuiteArgHelper\\.SetUpSuite argument " +
- "should be \\*check\\.C\n"
-
- c.Check(output.value, Matches, expected)
-}
-
-// -----------------------------------------------------------------------
-// Nice errors also when tests or fixture have wrong arg count.
-
-func (s *FixtureS) TestPanicOnWrongTestArgCount(c *C) {
- helper := WrongTestArgCountHelper{}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "TearDownTest")
- c.Check(helper.calls[3], Equals, "SetUpTest")
- c.Check(helper.calls[4], Equals, "Test2")
- c.Check(helper.calls[5], Equals, "TearDownTest")
- c.Check(helper.calls[6], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 7)
-
- expected := "^\n-+\n" +
- "PANIC: fixture_test\\.go:[0-9]+: " +
- "WrongTestArgCountHelper\\.Test1\n\n" +
- "\\.\\.\\. Panic: WrongTestArgCountHelper\\.Test1 argument " +
- "should be \\*check\\.C\n"
-
- c.Check(output.value, Matches, expected)
-}
-
-func (s *FixtureS) TestPanicOnWrongSetUpTestArgCount(c *C) {
- helper := WrongSetUpTestArgCountHelper{}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(len(helper.calls), Equals, 0)
-
- expected :=
- "^\n-+\n" +
- "PANIC: fixture_test\\.go:[0-9]+: " +
- "WrongSetUpTestArgCountHelper\\.SetUpTest\n\n" +
- "\\.\\.\\. Panic: WrongSetUpTestArgCountHelper\\.SetUpTest argument " +
- "should be \\*check\\.C\n"
-
- c.Check(output.value, Matches, expected)
-}
-
-func (s *FixtureS) TestPanicOnWrongSetUpSuiteArgCount(c *C) {
- helper := WrongSetUpSuiteArgCountHelper{}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(len(helper.calls), Equals, 0)
-
- expected :=
- "^\n-+\n" +
- "PANIC: fixture_test\\.go:[0-9]+: " +
- "WrongSetUpSuiteArgCountHelper\\.SetUpSuite\n\n" +
- "\\.\\.\\. Panic: WrongSetUpSuiteArgCountHelper" +
- "\\.SetUpSuite argument should be \\*check\\.C\n"
-
- c.Check(output.value, Matches, expected)
-}
-
-// -----------------------------------------------------------------------
-// Helper test suites with wrong function arguments.
-
-type WrongTestArgHelper struct {
- FixtureHelper
-}
-
-func (s *WrongTestArgHelper) Test1(t int) {
-}
-
-type WrongSetUpTestArgHelper struct {
- FixtureHelper
-}
-
-func (s *WrongSetUpTestArgHelper) SetUpTest(t int) {
-}
-
-type WrongSetUpSuiteArgHelper struct {
- FixtureHelper
-}
-
-func (s *WrongSetUpSuiteArgHelper) SetUpSuite(t int) {
-}
-
-type WrongTestArgCountHelper struct {
- FixtureHelper
-}
-
-func (s *WrongTestArgCountHelper) Test1(c *C, i int) {
-}
-
-type WrongSetUpTestArgCountHelper struct {
- FixtureHelper
-}
-
-func (s *WrongSetUpTestArgCountHelper) SetUpTest(c *C, i int) {
-}
-
-type WrongSetUpSuiteArgCountHelper struct {
- FixtureHelper
-}
-
-func (s *WrongSetUpSuiteArgCountHelper) SetUpSuite(c *C, i int) {
-}
-
-// -----------------------------------------------------------------------
-// Ensure fixture doesn't run without tests.
-
-type NoTestsHelper struct {
- hasRun bool
-}
-
-func (s *NoTestsHelper) SetUpSuite(c *C) {
- s.hasRun = true
-}
-
-func (s *NoTestsHelper) TearDownSuite(c *C) {
- s.hasRun = true
-}
-
-func (s *FixtureS) TestFixtureDoesntRunWithoutTests(c *C) {
- helper := NoTestsHelper{}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Check(helper.hasRun, Equals, false)
-}
-
-// -----------------------------------------------------------------------
-// Verify that checks and assertions work correctly inside the fixture.
-
-type FixtureCheckHelper struct {
- fail string
- completed bool
-}
-
-func (s *FixtureCheckHelper) SetUpSuite(c *C) {
- switch s.fail {
- case "SetUpSuiteAssert":
- c.Assert(false, Equals, true)
- case "SetUpSuiteCheck":
- c.Check(false, Equals, true)
- }
- s.completed = true
-}
-
-func (s *FixtureCheckHelper) SetUpTest(c *C) {
- switch s.fail {
- case "SetUpTestAssert":
- c.Assert(false, Equals, true)
- case "SetUpTestCheck":
- c.Check(false, Equals, true)
- }
- s.completed = true
-}
-
-func (s *FixtureCheckHelper) Test(c *C) {
- // Do nothing.
-}
-
-func (s *FixtureS) TestSetUpSuiteCheck(c *C) {
- helper := FixtureCheckHelper{fail: "SetUpSuiteCheck"}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Assert(output.value, Matches,
- "\n---+\n"+
- "FAIL: fixture_test\\.go:[0-9]+: "+
- "FixtureCheckHelper\\.SetUpSuite\n\n"+
- "fixture_test\\.go:[0-9]+:\n"+
- " c\\.Check\\(false, Equals, true\\)\n"+
- "\\.+ obtained bool = false\n"+
- "\\.+ expected bool = true\n\n")
- c.Assert(helper.completed, Equals, true)
-}
-
-func (s *FixtureS) TestSetUpSuiteAssert(c *C) {
- helper := FixtureCheckHelper{fail: "SetUpSuiteAssert"}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Assert(output.value, Matches,
- "\n---+\n"+
- "FAIL: fixture_test\\.go:[0-9]+: "+
- "FixtureCheckHelper\\.SetUpSuite\n\n"+
- "fixture_test\\.go:[0-9]+:\n"+
- " c\\.Assert\\(false, Equals, true\\)\n"+
- "\\.+ obtained bool = false\n"+
- "\\.+ expected bool = true\n\n")
- c.Assert(helper.completed, Equals, false)
-}
-
-// -----------------------------------------------------------------------
-// Verify that logging within SetUpTest() persists within the test log itself.
-
-type FixtureLogHelper struct {
- c *C
-}
-
-func (s *FixtureLogHelper) SetUpTest(c *C) {
- s.c = c
- c.Log("1")
-}
-
-func (s *FixtureLogHelper) Test(c *C) {
- c.Log("2")
- s.c.Log("3")
- c.Log("4")
- c.Fail()
-}
-
-func (s *FixtureLogHelper) TearDownTest(c *C) {
- s.c.Log("5")
-}
-
-func (s *FixtureS) TestFixtureLogging(c *C) {
- helper := FixtureLogHelper{}
- output := String{}
- Run(&helper, &RunConf{Output: &output})
- c.Assert(output.value, Matches,
- "\n---+\n"+
- "FAIL: fixture_test\\.go:[0-9]+: "+
- "FixtureLogHelper\\.Test\n\n"+
- "1\n2\n3\n4\n5\n")
-}
-
-// -----------------------------------------------------------------------
-// Skip() within fixture methods.
-
-func (s *FixtureS) TestSkipSuite(c *C) {
- helper := FixtureHelper{skip: true, skipOnN: 0}
- output := String{}
- result := Run(&helper, &RunConf{Output: &output})
- c.Assert(output.value, Equals, "")
- c.Assert(helper.calls[0], Equals, "SetUpSuite")
- c.Assert(helper.calls[1], Equals, "TearDownSuite")
- c.Assert(len(helper.calls), Equals, 2)
- c.Assert(result.Skipped, Equals, 2)
-}
-
-func (s *FixtureS) TestSkipTest(c *C) {
- helper := FixtureHelper{skip: true, skipOnN: 1}
- output := String{}
- result := Run(&helper, &RunConf{Output: &output})
- c.Assert(helper.calls[0], Equals, "SetUpSuite")
- c.Assert(helper.calls[1], Equals, "SetUpTest")
- c.Assert(helper.calls[2], Equals, "SetUpTest")
- c.Assert(helper.calls[3], Equals, "Test2")
- c.Assert(helper.calls[4], Equals, "TearDownTest")
- c.Assert(helper.calls[5], Equals, "TearDownSuite")
- c.Assert(len(helper.calls), Equals, 6)
- c.Assert(result.Skipped, Equals, 1)
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/foundation_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/foundation_test.go
deleted file mode 100644
index 8ecf7915f..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/foundation_test.go
+++ /dev/null
@@ -1,335 +0,0 @@
-// These tests check that the foundations of gocheck are working properly.
-// They already assume that fundamental failing is working already, though,
-// since this was tested in bootstrap_test.go. Even then, some care may
-// still have to be taken when using external functions, since they should
-// of course not rely on functionality tested here.
-
-package check_test
-
-import (
- "fmt"
- "gopkg.in/check.v1"
- "log"
- "os"
- "regexp"
- "strings"
-)
-
-// -----------------------------------------------------------------------
-// Foundation test suite.
-
-type FoundationS struct{}
-
-var foundationS = check.Suite(&FoundationS{})
-
-func (s *FoundationS) TestCountSuite(c *check.C) {
- suitesRun += 1
-}
-
-func (s *FoundationS) TestErrorf(c *check.C) {
- // Do not use checkState() here. It depends on Errorf() working.
- expectedLog := fmt.Sprintf("foundation_test.go:%d:\n"+
- " c.Errorf(\"Error %%v!\", \"message\")\n"+
- "... Error: Error message!\n\n",
- getMyLine()+1)
- c.Errorf("Error %v!", "message")
- failed := c.Failed()
- c.Succeed()
- if log := c.GetTestLog(); log != expectedLog {
- c.Logf("Errorf() logged %#v rather than %#v", log, expectedLog)
- c.Fail()
- }
- if !failed {
- c.Logf("Errorf() didn't put the test in a failed state")
- c.Fail()
- }
-}
-
-func (s *FoundationS) TestError(c *check.C) {
- expectedLog := fmt.Sprintf("foundation_test.go:%d:\n"+
- " c\\.Error\\(\"Error \", \"message!\"\\)\n"+
- "\\.\\.\\. Error: Error message!\n\n",
- getMyLine()+1)
- c.Error("Error ", "message!")
- checkState(c, nil,
- &expectedState{
- name: "Error(`Error `, `message!`)",
- failed: true,
- log: expectedLog,
- })
-}
-
-func (s *FoundationS) TestFailNow(c *check.C) {
- defer (func() {
- if !c.Failed() {
- c.Error("FailNow() didn't fail the test")
- } else {
- c.Succeed()
- if c.GetTestLog() != "" {
- c.Error("Something got logged:\n" + c.GetTestLog())
- }
- }
- })()
-
- c.FailNow()
- c.Log("FailNow() didn't stop the test")
-}
-
-func (s *FoundationS) TestSucceedNow(c *check.C) {
- defer (func() {
- if c.Failed() {
- c.Error("SucceedNow() didn't succeed the test")
- }
- if c.GetTestLog() != "" {
- c.Error("Something got logged:\n" + c.GetTestLog())
- }
- })()
-
- c.Fail()
- c.SucceedNow()
- c.Log("SucceedNow() didn't stop the test")
-}
-
-func (s *FoundationS) TestFailureHeader(c *check.C) {
- output := String{}
- failHelper := FailHelper{}
- check.Run(&failHelper, &check.RunConf{Output: &output})
- header := fmt.Sprintf(""+
- "\n-----------------------------------"+
- "-----------------------------------\n"+
- "FAIL: check_test.go:%d: FailHelper.TestLogAndFail\n",
- failHelper.testLine)
- if strings.Index(output.value, header) == -1 {
- c.Errorf(""+
- "Failure didn't print a proper header.\n"+
- "... Got:\n%s... Expected something with:\n%s",
- output.value, header)
- }
-}
-
-func (s *FoundationS) TestFatal(c *check.C) {
- var line int
- defer (func() {
- if !c.Failed() {
- c.Error("Fatal() didn't fail the test")
- } else {
- c.Succeed()
- expected := fmt.Sprintf("foundation_test.go:%d:\n"+
- " c.Fatal(\"Die \", \"now!\")\n"+
- "... Error: Die now!\n\n",
- line)
- if c.GetTestLog() != expected {
- c.Error("Incorrect log:", c.GetTestLog())
- }
- }
- })()
-
- line = getMyLine() + 1
- c.Fatal("Die ", "now!")
- c.Log("Fatal() didn't stop the test")
-}
-
-func (s *FoundationS) TestFatalf(c *check.C) {
- var line int
- defer (func() {
- if !c.Failed() {
- c.Error("Fatalf() didn't fail the test")
- } else {
- c.Succeed()
- expected := fmt.Sprintf("foundation_test.go:%d:\n"+
- " c.Fatalf(\"Die %%s!\", \"now\")\n"+
- "... Error: Die now!\n\n",
- line)
- if c.GetTestLog() != expected {
- c.Error("Incorrect log:", c.GetTestLog())
- }
- }
- })()
-
- line = getMyLine() + 1
- c.Fatalf("Die %s!", "now")
- c.Log("Fatalf() didn't stop the test")
-}
-
-func (s *FoundationS) TestCallerLoggingInsideTest(c *check.C) {
- log := fmt.Sprintf(""+
- "foundation_test.go:%d:\n"+
- " result := c.Check\\(10, check.Equals, 20\\)\n"+
- "\\.\\.\\. obtained int = 10\n"+
- "\\.\\.\\. expected int = 20\n\n",
- getMyLine()+1)
- result := c.Check(10, check.Equals, 20)
- checkState(c, result,
- &expectedState{
- name: "Check(10, Equals, 20)",
- result: false,
- failed: true,
- log: log,
- })
-}
-
-func (s *FoundationS) TestCallerLoggingInDifferentFile(c *check.C) {
- result, line := checkEqualWrapper(c, 10, 20)
- testLine := getMyLine() - 1
- log := fmt.Sprintf(""+
- "foundation_test.go:%d:\n"+
- " result, line := checkEqualWrapper\\(c, 10, 20\\)\n"+
- "check_test.go:%d:\n"+
- " return c.Check\\(obtained, check.Equals, expected\\), getMyLine\\(\\)\n"+
- "\\.\\.\\. obtained int = 10\n"+
- "\\.\\.\\. expected int = 20\n\n",
- testLine, line)
- checkState(c, result,
- &expectedState{
- name: "Check(10, Equals, 20)",
- result: false,
- failed: true,
- log: log,
- })
-}
-
-// -----------------------------------------------------------------------
-// ExpectFailure() inverts the logic of failure.
-
-type ExpectFailureSucceedHelper struct{}
-
-func (s *ExpectFailureSucceedHelper) TestSucceed(c *check.C) {
- c.ExpectFailure("It booms!")
- c.Error("Boom!")
-}
-
-type ExpectFailureFailHelper struct{}
-
-func (s *ExpectFailureFailHelper) TestFail(c *check.C) {
- c.ExpectFailure("Bug #XYZ")
-}
-
-func (s *FoundationS) TestExpectFailureFail(c *check.C) {
- helper := ExpectFailureFailHelper{}
- output := String{}
- result := check.Run(&helper, &check.RunConf{Output: &output})
-
- expected := "" +
- "^\n-+\n" +
- "FAIL: foundation_test\\.go:[0-9]+:" +
- " ExpectFailureFailHelper\\.TestFail\n\n" +
- "\\.\\.\\. Error: Test succeeded, but was expected to fail\n" +
- "\\.\\.\\. Reason: Bug #XYZ\n$"
-
- matched, err := regexp.MatchString(expected, output.value)
- if err != nil {
- c.Error("Bad expression: ", expected)
- } else if !matched {
- c.Error("ExpectFailure() didn't log properly:\n", output.value)
- }
-
- c.Assert(result.ExpectedFailures, check.Equals, 0)
-}
-
-func (s *FoundationS) TestExpectFailureSucceed(c *check.C) {
- helper := ExpectFailureSucceedHelper{}
- output := String{}
- result := check.Run(&helper, &check.RunConf{Output: &output})
-
- c.Assert(output.value, check.Equals, "")
- c.Assert(result.ExpectedFailures, check.Equals, 1)
-}
-
-func (s *FoundationS) TestExpectFailureSucceedVerbose(c *check.C) {
- helper := ExpectFailureSucceedHelper{}
- output := String{}
- result := check.Run(&helper, &check.RunConf{Output: &output, Verbose: true})
-
- expected := "" +
- "FAIL EXPECTED: foundation_test\\.go:[0-9]+:" +
- " ExpectFailureSucceedHelper\\.TestSucceed \\(It booms!\\)\t *[.0-9]+s\n"
-
- matched, err := regexp.MatchString(expected, output.value)
- if err != nil {
- c.Error("Bad expression: ", expected)
- } else if !matched {
- c.Error("ExpectFailure() didn't log properly:\n", output.value)
- }
-
- c.Assert(result.ExpectedFailures, check.Equals, 1)
-}
-
-// -----------------------------------------------------------------------
-// Skip() allows stopping a test without positive/negative results.
-
-type SkipTestHelper struct{}
-
-func (s *SkipTestHelper) TestFail(c *check.C) {
- c.Skip("Wrong platform or whatever")
- c.Error("Boom!")
-}
-
-func (s *FoundationS) TestSkip(c *check.C) {
- helper := SkipTestHelper{}
- output := String{}
- check.Run(&helper, &check.RunConf{Output: &output})
-
- if output.value != "" {
- c.Error("Skip() logged something:\n", output.value)
- }
-}
-
-func (s *FoundationS) TestSkipVerbose(c *check.C) {
- helper := SkipTestHelper{}
- output := String{}
- check.Run(&helper, &check.RunConf{Output: &output, Verbose: true})
-
- expected := "SKIP: foundation_test\\.go:[0-9]+: SkipTestHelper\\.TestFail" +
- " \\(Wrong platform or whatever\\)"
- matched, err := regexp.MatchString(expected, output.value)
- if err != nil {
- c.Error("Bad expression: ", expected)
- } else if !matched {
- c.Error("Skip() didn't log properly:\n", output.value)
- }
-}
-
-// -----------------------------------------------------------------------
-// Check minimum *log.Logger interface provided by *check.C.
-
-type minLogger interface {
- Output(calldepth int, s string) error
-}
-
-func (s *BootstrapS) TestMinLogger(c *check.C) {
- var logger minLogger
- logger = log.New(os.Stderr, "", 0)
- logger = c
- logger.Output(0, "Hello there")
- expected := `\[LOG\] [0-9]+:[0-9][0-9]\.[0-9][0-9][0-9] +Hello there\n`
- output := c.GetTestLog()
- c.Assert(output, check.Matches, expected)
-}
-
-// -----------------------------------------------------------------------
-// Ensure that suites with embedded types are working fine, including the
-// the workaround for issue 906.
-
-type EmbeddedInternalS struct {
- called bool
-}
-
-type EmbeddedS struct {
- EmbeddedInternalS
-}
-
-var embeddedS = check.Suite(&EmbeddedS{})
-
-func (s *EmbeddedS) TestCountSuite(c *check.C) {
- suitesRun += 1
-}
-
-func (s *EmbeddedInternalS) TestMethod(c *check.C) {
- c.Error("TestMethod() of the embedded type was called!?")
-}
-
-func (s *EmbeddedS) TestMethod(c *check.C) {
- // http://code.google.com/p/go/issues/detail?id=906
- c.Check(s.called, check.Equals, false) // Go issue 906 is affecting the runner?
- s.called = true
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/helpers.go b/Godeps/_workspace/src/gopkg.in/check.v1/helpers.go
index 4b6c26da4..58a733b50 100644
--- a/Godeps/_workspace/src/gopkg.in/check.v1/helpers.go
+++ b/Godeps/_workspace/src/gopkg.in/check.v1/helpers.go
@@ -16,7 +16,7 @@ func (c *C) TestName() string {
// Failed returns whether the currently running test has already failed.
func (c *C) Failed() bool {
- return c.status == failedSt
+ return c.status() == failedSt
}
// Fail marks the currently running test as failed.
@@ -25,7 +25,7 @@ func (c *C) Failed() bool {
// what went wrong. The higher level helper functions will fail the test
// and do the logging properly.
func (c *C) Fail() {
- c.status = failedSt
+ c.setStatus(failedSt)
}
// FailNow marks the currently running test as failed and stops running it.
@@ -40,7 +40,7 @@ func (c *C) FailNow() {
// Succeed marks the currently running test as succeeded, undoing any
// previous failures.
func (c *C) Succeed() {
- c.status = succeededSt
+ c.setStatus(succeededSt)
}
// SucceedNow marks the currently running test as succeeded, undoing any
@@ -72,7 +72,7 @@ func (c *C) Skip(reason string) {
panic("Missing reason why the test is being skipped")
}
c.reason = reason
- c.status = skippedSt
+ c.setStatus(skippedSt)
c.stopNow()
}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/helpers_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/helpers_test.go
deleted file mode 100644
index 4baa656ba..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/helpers_test.go
+++ /dev/null
@@ -1,519 +0,0 @@
-// These tests verify the inner workings of the helper methods associated
-// with check.T.
-
-package check_test
-
-import (
- "gopkg.in/check.v1"
- "os"
- "reflect"
- "runtime"
- "sync"
-)
-
-var helpersS = check.Suite(&HelpersS{})
-
-type HelpersS struct{}
-
-func (s *HelpersS) TestCountSuite(c *check.C) {
- suitesRun += 1
-}
-
-// -----------------------------------------------------------------------
-// Fake checker and bug info to verify the behavior of Assert() and Check().
-
-type MyChecker struct {
- info *check.CheckerInfo
- params []interface{}
- names []string
- result bool
- error string
-}
-
-func (checker *MyChecker) Info() *check.CheckerInfo {
- if checker.info == nil {
- return &check.CheckerInfo{Name: "MyChecker", Params: []string{"myobtained", "myexpected"}}
- }
- return checker.info
-}
-
-func (checker *MyChecker) Check(params []interface{}, names []string) (bool, string) {
- rparams := checker.params
- rnames := checker.names
- checker.params = append([]interface{}{}, params...)
- checker.names = append([]string{}, names...)
- if rparams != nil {
- copy(params, rparams)
- }
- if rnames != nil {
- copy(names, rnames)
- }
- return checker.result, checker.error
-}
-
-type myCommentType string
-
-func (c myCommentType) CheckCommentString() string {
- return string(c)
-}
-
-func myComment(s string) myCommentType {
- return myCommentType(s)
-}
-
-// -----------------------------------------------------------------------
-// Ensure a real checker actually works fine.
-
-func (s *HelpersS) TestCheckerInterface(c *check.C) {
- testHelperSuccess(c, "Check(1, Equals, 1)", true, func() interface{} {
- return c.Check(1, check.Equals, 1)
- })
-}
-
-// -----------------------------------------------------------------------
-// Tests for Check(), mostly the same as for Assert() following these.
-
-func (s *HelpersS) TestCheckSucceedWithExpected(c *check.C) {
- checker := &MyChecker{result: true}
- testHelperSuccess(c, "Check(1, checker, 2)", true, func() interface{} {
- return c.Check(1, checker, 2)
- })
- if !reflect.DeepEqual(checker.params, []interface{}{1, 2}) {
- c.Fatalf("Bad params for check: %#v", checker.params)
- }
-}
-
-func (s *HelpersS) TestCheckSucceedWithoutExpected(c *check.C) {
- checker := &MyChecker{result: true, info: &check.CheckerInfo{Params: []string{"myvalue"}}}
- testHelperSuccess(c, "Check(1, checker)", true, func() interface{} {
- return c.Check(1, checker)
- })
- if !reflect.DeepEqual(checker.params, []interface{}{1}) {
- c.Fatalf("Bad params for check: %#v", checker.params)
- }
-}
-
-func (s *HelpersS) TestCheckFailWithExpected(c *check.C) {
- checker := &MyChecker{result: false}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, checker, 2\\)\n" +
- "\\.+ myobtained int = 1\n" +
- "\\.+ myexpected int = 2\n\n"
- testHelperFailure(c, "Check(1, checker, 2)", false, false, log,
- func() interface{} {
- return c.Check(1, checker, 2)
- })
-}
-
-func (s *HelpersS) TestCheckFailWithExpectedAndComment(c *check.C) {
- checker := &MyChecker{result: false}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, checker, 2, myComment\\(\"Hello world!\"\\)\\)\n" +
- "\\.+ myobtained int = 1\n" +
- "\\.+ myexpected int = 2\n" +
- "\\.+ Hello world!\n\n"
- testHelperFailure(c, "Check(1, checker, 2, msg)", false, false, log,
- func() interface{} {
- return c.Check(1, checker, 2, myComment("Hello world!"))
- })
-}
-
-func (s *HelpersS) TestCheckFailWithExpectedAndStaticComment(c *check.C) {
- checker := &MyChecker{result: false}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " // Nice leading comment\\.\n" +
- " return c\\.Check\\(1, checker, 2\\) // Hello there\n" +
- "\\.+ myobtained int = 1\n" +
- "\\.+ myexpected int = 2\n\n"
- testHelperFailure(c, "Check(1, checker, 2, msg)", false, false, log,
- func() interface{} {
- // Nice leading comment.
- return c.Check(1, checker, 2) // Hello there
- })
-}
-
-func (s *HelpersS) TestCheckFailWithoutExpected(c *check.C) {
- checker := &MyChecker{result: false, info: &check.CheckerInfo{Params: []string{"myvalue"}}}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, checker\\)\n" +
- "\\.+ myvalue int = 1\n\n"
- testHelperFailure(c, "Check(1, checker)", false, false, log,
- func() interface{} {
- return c.Check(1, checker)
- })
-}
-
-func (s *HelpersS) TestCheckFailWithoutExpectedAndMessage(c *check.C) {
- checker := &MyChecker{result: false, info: &check.CheckerInfo{Params: []string{"myvalue"}}}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, checker, myComment\\(\"Hello world!\"\\)\\)\n" +
- "\\.+ myvalue int = 1\n" +
- "\\.+ Hello world!\n\n"
- testHelperFailure(c, "Check(1, checker, msg)", false, false, log,
- func() interface{} {
- return c.Check(1, checker, myComment("Hello world!"))
- })
-}
-
-func (s *HelpersS) TestCheckWithMissingExpected(c *check.C) {
- checker := &MyChecker{result: true}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, checker\\)\n" +
- "\\.+ Check\\(myobtained, MyChecker, myexpected\\):\n" +
- "\\.+ Wrong number of parameters for MyChecker: " +
- "want 3, got 2\n\n"
- testHelperFailure(c, "Check(1, checker, !?)", false, false, log,
- func() interface{} {
- return c.Check(1, checker)
- })
-}
-
-func (s *HelpersS) TestCheckWithTooManyExpected(c *check.C) {
- checker := &MyChecker{result: true}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, checker, 2, 3\\)\n" +
- "\\.+ Check\\(myobtained, MyChecker, myexpected\\):\n" +
- "\\.+ Wrong number of parameters for MyChecker: " +
- "want 3, got 4\n\n"
- testHelperFailure(c, "Check(1, checker, 2, 3)", false, false, log,
- func() interface{} {
- return c.Check(1, checker, 2, 3)
- })
-}
-
-func (s *HelpersS) TestCheckWithError(c *check.C) {
- checker := &MyChecker{result: false, error: "Some not so cool data provided!"}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, checker, 2\\)\n" +
- "\\.+ myobtained int = 1\n" +
- "\\.+ myexpected int = 2\n" +
- "\\.+ Some not so cool data provided!\n\n"
- testHelperFailure(c, "Check(1, checker, 2)", false, false, log,
- func() interface{} {
- return c.Check(1, checker, 2)
- })
-}
-
-func (s *HelpersS) TestCheckWithNilChecker(c *check.C) {
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, nil\\)\n" +
- "\\.+ Check\\(obtained, nil!\\?, \\.\\.\\.\\):\n" +
- "\\.+ Oops\\.\\. you've provided a nil checker!\n\n"
- testHelperFailure(c, "Check(obtained, nil)", false, false, log,
- func() interface{} {
- return c.Check(1, nil)
- })
-}
-
-func (s *HelpersS) TestCheckWithParamsAndNamesMutation(c *check.C) {
- checker := &MyChecker{result: false, params: []interface{}{3, 4}, names: []string{"newobtained", "newexpected"}}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " return c\\.Check\\(1, checker, 2\\)\n" +
- "\\.+ newobtained int = 3\n" +
- "\\.+ newexpected int = 4\n\n"
- testHelperFailure(c, "Check(1, checker, 2) with mutation", false, false, log,
- func() interface{} {
- return c.Check(1, checker, 2)
- })
-}
-
-// -----------------------------------------------------------------------
-// Tests for Assert(), mostly the same as for Check() above.
-
-func (s *HelpersS) TestAssertSucceedWithExpected(c *check.C) {
- checker := &MyChecker{result: true}
- testHelperSuccess(c, "Assert(1, checker, 2)", nil, func() interface{} {
- c.Assert(1, checker, 2)
- return nil
- })
- if !reflect.DeepEqual(checker.params, []interface{}{1, 2}) {
- c.Fatalf("Bad params for check: %#v", checker.params)
- }
-}
-
-func (s *HelpersS) TestAssertSucceedWithoutExpected(c *check.C) {
- checker := &MyChecker{result: true, info: &check.CheckerInfo{Params: []string{"myvalue"}}}
- testHelperSuccess(c, "Assert(1, checker)", nil, func() interface{} {
- c.Assert(1, checker)
- return nil
- })
- if !reflect.DeepEqual(checker.params, []interface{}{1}) {
- c.Fatalf("Bad params for check: %#v", checker.params)
- }
-}
-
-func (s *HelpersS) TestAssertFailWithExpected(c *check.C) {
- checker := &MyChecker{result: false}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " c\\.Assert\\(1, checker, 2\\)\n" +
- "\\.+ myobtained int = 1\n" +
- "\\.+ myexpected int = 2\n\n"
- testHelperFailure(c, "Assert(1, checker, 2)", nil, true, log,
- func() interface{} {
- c.Assert(1, checker, 2)
- return nil
- })
-}
-
-func (s *HelpersS) TestAssertFailWithExpectedAndMessage(c *check.C) {
- checker := &MyChecker{result: false}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " c\\.Assert\\(1, checker, 2, myComment\\(\"Hello world!\"\\)\\)\n" +
- "\\.+ myobtained int = 1\n" +
- "\\.+ myexpected int = 2\n" +
- "\\.+ Hello world!\n\n"
- testHelperFailure(c, "Assert(1, checker, 2, msg)", nil, true, log,
- func() interface{} {
- c.Assert(1, checker, 2, myComment("Hello world!"))
- return nil
- })
-}
-
-func (s *HelpersS) TestAssertFailWithoutExpected(c *check.C) {
- checker := &MyChecker{result: false, info: &check.CheckerInfo{Params: []string{"myvalue"}}}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " c\\.Assert\\(1, checker\\)\n" +
- "\\.+ myvalue int = 1\n\n"
- testHelperFailure(c, "Assert(1, checker)", nil, true, log,
- func() interface{} {
- c.Assert(1, checker)
- return nil
- })
-}
-
-func (s *HelpersS) TestAssertFailWithoutExpectedAndMessage(c *check.C) {
- checker := &MyChecker{result: false, info: &check.CheckerInfo{Params: []string{"myvalue"}}}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " c\\.Assert\\(1, checker, myComment\\(\"Hello world!\"\\)\\)\n" +
- "\\.+ myvalue int = 1\n" +
- "\\.+ Hello world!\n\n"
- testHelperFailure(c, "Assert(1, checker, msg)", nil, true, log,
- func() interface{} {
- c.Assert(1, checker, myComment("Hello world!"))
- return nil
- })
-}
-
-func (s *HelpersS) TestAssertWithMissingExpected(c *check.C) {
- checker := &MyChecker{result: true}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " c\\.Assert\\(1, checker\\)\n" +
- "\\.+ Assert\\(myobtained, MyChecker, myexpected\\):\n" +
- "\\.+ Wrong number of parameters for MyChecker: " +
- "want 3, got 2\n\n"
- testHelperFailure(c, "Assert(1, checker, !?)", nil, true, log,
- func() interface{} {
- c.Assert(1, checker)
- return nil
- })
-}
-
-func (s *HelpersS) TestAssertWithError(c *check.C) {
- checker := &MyChecker{result: false, error: "Some not so cool data provided!"}
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " c\\.Assert\\(1, checker, 2\\)\n" +
- "\\.+ myobtained int = 1\n" +
- "\\.+ myexpected int = 2\n" +
- "\\.+ Some not so cool data provided!\n\n"
- testHelperFailure(c, "Assert(1, checker, 2)", nil, true, log,
- func() interface{} {
- c.Assert(1, checker, 2)
- return nil
- })
-}
-
-func (s *HelpersS) TestAssertWithNilChecker(c *check.C) {
- log := "(?s)helpers_test\\.go:[0-9]+:.*\nhelpers_test\\.go:[0-9]+:\n" +
- " c\\.Assert\\(1, nil\\)\n" +
- "\\.+ Assert\\(obtained, nil!\\?, \\.\\.\\.\\):\n" +
- "\\.+ Oops\\.\\. you've provided a nil checker!\n\n"
- testHelperFailure(c, "Assert(obtained, nil)", nil, true, log,
- func() interface{} {
- c.Assert(1, nil)
- return nil
- })
-}
-
-// -----------------------------------------------------------------------
-// Ensure that values logged work properly in some interesting cases.
-
-func (s *HelpersS) TestValueLoggingWithArrays(c *check.C) {
- checker := &MyChecker{result: false}
- log := "(?s)helpers_test.go:[0-9]+:.*\nhelpers_test.go:[0-9]+:\n" +
- " return c\\.Check\\(\\[\\]byte{1, 2}, checker, \\[\\]byte{1, 3}\\)\n" +
- "\\.+ myobtained \\[\\]uint8 = \\[\\]byte{0x1, 0x2}\n" +
- "\\.+ myexpected \\[\\]uint8 = \\[\\]byte{0x1, 0x3}\n\n"
- testHelperFailure(c, "Check([]byte{1}, chk, []byte{3})", false, false, log,
- func() interface{} {
- return c.Check([]byte{1, 2}, checker, []byte{1, 3})
- })
-}
-
-func (s *HelpersS) TestValueLoggingWithMultiLine(c *check.C) {
- checker := &MyChecker{result: false}
- log := "(?s)helpers_test.go:[0-9]+:.*\nhelpers_test.go:[0-9]+:\n" +
- " return c\\.Check\\(\"a\\\\nb\\\\n\", checker, \"a\\\\nb\\\\nc\"\\)\n" +
- "\\.+ myobtained string = \"\" \\+\n" +
- "\\.+ \"a\\\\n\" \\+\n" +
- "\\.+ \"b\\\\n\"\n" +
- "\\.+ myexpected string = \"\" \\+\n" +
- "\\.+ \"a\\\\n\" \\+\n" +
- "\\.+ \"b\\\\n\" \\+\n" +
- "\\.+ \"c\"\n\n"
- testHelperFailure(c, `Check("a\nb\n", chk, "a\nb\nc")`, false, false, log,
- func() interface{} {
- return c.Check("a\nb\n", checker, "a\nb\nc")
- })
-}
-
-func (s *HelpersS) TestValueLoggingWithMultiLineException(c *check.C) {
- // If the newline is at the end of the string, don't log as multi-line.
- checker := &MyChecker{result: false}
- log := "(?s)helpers_test.go:[0-9]+:.*\nhelpers_test.go:[0-9]+:\n" +
- " return c\\.Check\\(\"a b\\\\n\", checker, \"a\\\\nb\"\\)\n" +
- "\\.+ myobtained string = \"a b\\\\n\"\n" +
- "\\.+ myexpected string = \"\" \\+\n" +
- "\\.+ \"a\\\\n\" \\+\n" +
- "\\.+ \"b\"\n\n"
- testHelperFailure(c, `Check("a b\n", chk, "a\nb")`, false, false, log,
- func() interface{} {
- return c.Check("a b\n", checker, "a\nb")
- })
-}
-
-// -----------------------------------------------------------------------
-// MakeDir() tests.
-
-type MkDirHelper struct {
- path1 string
- path2 string
- isDir1 bool
- isDir2 bool
- isDir3 bool
- isDir4 bool
-}
-
-func (s *MkDirHelper) SetUpSuite(c *check.C) {
- s.path1 = c.MkDir()
- s.isDir1 = isDir(s.path1)
-}
-
-func (s *MkDirHelper) Test(c *check.C) {
- s.path2 = c.MkDir()
- s.isDir2 = isDir(s.path2)
-}
-
-func (s *MkDirHelper) TearDownSuite(c *check.C) {
- s.isDir3 = isDir(s.path1)
- s.isDir4 = isDir(s.path2)
-}
-
-func (s *HelpersS) TestMkDir(c *check.C) {
- helper := MkDirHelper{}
- output := String{}
- check.Run(&helper, &check.RunConf{Output: &output})
- c.Assert(output.value, check.Equals, "")
- c.Check(helper.isDir1, check.Equals, true)
- c.Check(helper.isDir2, check.Equals, true)
- c.Check(helper.isDir3, check.Equals, true)
- c.Check(helper.isDir4, check.Equals, true)
- c.Check(helper.path1, check.Not(check.Equals),
- helper.path2)
- c.Check(isDir(helper.path1), check.Equals, false)
- c.Check(isDir(helper.path2), check.Equals, false)
-}
-
-func isDir(path string) bool {
- if stat, err := os.Stat(path); err == nil {
- return stat.IsDir()
- }
- return false
-}
-
-// Concurrent logging should not corrupt the underling buffer.
-// Use go test -race to detect the race in this test.
-func (s *HelpersS) TestConcurrentLogging(c *check.C) {
- defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(runtime.NumCPU()))
- var start, stop sync.WaitGroup
- start.Add(1)
- for i, n := 0, runtime.NumCPU()*2; i < n; i++ {
- stop.Add(1)
- go func(i int) {
- start.Wait()
- for j := 0; j < 30; j++ {
- c.Logf("Worker %d: line %d", i, j)
- }
- stop.Done()
- }(i)
- }
- start.Done()
- stop.Wait()
-}
-
-// -----------------------------------------------------------------------
-// Test the TestName function
-
-type TestNameHelper struct {
- name1 string
- name2 string
- name3 string
- name4 string
- name5 string
-}
-
-func (s *TestNameHelper) SetUpSuite(c *check.C) { s.name1 = c.TestName() }
-func (s *TestNameHelper) SetUpTest(c *check.C) { s.name2 = c.TestName() }
-func (s *TestNameHelper) Test(c *check.C) { s.name3 = c.TestName() }
-func (s *TestNameHelper) TearDownTest(c *check.C) { s.name4 = c.TestName() }
-func (s *TestNameHelper) TearDownSuite(c *check.C) { s.name5 = c.TestName() }
-
-func (s *HelpersS) TestTestName(c *check.C) {
- helper := TestNameHelper{}
- output := String{}
- check.Run(&helper, &check.RunConf{Output: &output})
- c.Check(helper.name1, check.Equals, "")
- c.Check(helper.name2, check.Equals, "TestNameHelper.Test")
- c.Check(helper.name3, check.Equals, "TestNameHelper.Test")
- c.Check(helper.name4, check.Equals, "TestNameHelper.Test")
- c.Check(helper.name5, check.Equals, "")
-}
-
-// -----------------------------------------------------------------------
-// A couple of helper functions to test helper functions. :-)
-
-func testHelperSuccess(c *check.C, name string, expectedResult interface{}, closure func() interface{}) {
- var result interface{}
- defer (func() {
- if err := recover(); err != nil {
- panic(err)
- }
- checkState(c, result,
- &expectedState{
- name: name,
- result: expectedResult,
- failed: false,
- log: "",
- })
- })()
- result = closure()
-}
-
-func testHelperFailure(c *check.C, name string, expectedResult interface{}, shouldStop bool, log string, closure func() interface{}) {
- var result interface{}
- defer (func() {
- if err := recover(); err != nil {
- panic(err)
- }
- checkState(c, result,
- &expectedState{
- name: name,
- result: expectedResult,
- failed: true,
- log: log,
- })
- })()
- result = closure()
- if shouldStop {
- c.Logf("%s didn't stop when it should", name)
- }
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/printer_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/printer_test.go
deleted file mode 100644
index 538b2d52e..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/printer_test.go
+++ /dev/null
@@ -1,104 +0,0 @@
-package check_test
-
-import (
- . "gopkg.in/check.v1"
-)
-
-var _ = Suite(&PrinterS{})
-
-type PrinterS struct{}
-
-func (s *PrinterS) TestCountSuite(c *C) {
- suitesRun += 1
-}
-
-var printTestFuncLine int
-
-func init() {
- printTestFuncLine = getMyLine() + 3
-}
-
-func printTestFunc() {
- println(1) // Comment1
- if 2 == 2 { // Comment2
- println(3) // Comment3
- }
- switch 5 {
- case 6: println(6) // Comment6
- println(7)
- }
- switch interface{}(9).(type) {// Comment9
- case int: println(10)
- println(11)
- }
- select {
- case <-(chan bool)(nil): println(14)
- println(15)
- default: println(16)
- println(17)
- }
- println(19,
- 20)
- _ = func() { println(21)
- println(22)
- }
- println(24, func() {
- println(25)
- })
- // Leading comment
- // with multiple lines.
- println(29) // Comment29
-}
-
-var printLineTests = []struct {
- line int
- output string
-}{
- {1, "println(1) // Comment1"},
- {2, "if 2 == 2 { // Comment2\n ...\n}"},
- {3, "println(3) // Comment3"},
- {5, "switch 5 {\n...\n}"},
- {6, "case 6:\n println(6) // Comment6\n ..."},
- {7, "println(7)"},
- {9, "switch interface{}(9).(type) { // Comment9\n...\n}"},
- {10, "case int:\n println(10)\n ..."},
- {14, "case <-(chan bool)(nil):\n println(14)\n ..."},
- {15, "println(15)"},
- {16, "default:\n println(16)\n ..."},
- {17, "println(17)"},
- {19, "println(19,\n 20)"},
- {20, "println(19,\n 20)"},
- {21, "_ = func() {\n println(21)\n println(22)\n}"},
- {22, "println(22)"},
- {24, "println(24, func() {\n println(25)\n})"},
- {25, "println(25)"},
- {26, "println(24, func() {\n println(25)\n})"},
- {29, "// Leading comment\n// with multiple lines.\nprintln(29) // Comment29"},
-}
-
-func (s *PrinterS) TestPrintLine(c *C) {
- for _, test := range printLineTests {
- output, err := PrintLine("printer_test.go", printTestFuncLine+test.line)
- c.Assert(err, IsNil)
- c.Assert(output, Equals, test.output)
- }
-}
-
-var indentTests = []struct {
- in, out string
-}{
- {"", ""},
- {"\n", "\n"},
- {"a", ">>>a"},
- {"a\n", ">>>a\n"},
- {"a\nb", ">>>a\n>>>b"},
- {" ", ">>> "},
-}
-
-func (s *PrinterS) TestIndent(c *C) {
- for _, test := range indentTests {
- out := Indent(test.in, ">>>")
- c.Assert(out, Equals, test.out)
- }
-
-}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/reporter.go b/Godeps/_workspace/src/gopkg.in/check.v1/reporter.go
new file mode 100644
index 000000000..fb04f76f6
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/check.v1/reporter.go
@@ -0,0 +1,88 @@
+package check
+
+import (
+ "fmt"
+ "io"
+ "sync"
+)
+
+// -----------------------------------------------------------------------
+// Output writer manages atomic output writing according to settings.
+
+type outputWriter struct {
+ m sync.Mutex
+ writer io.Writer
+ wroteCallProblemLast bool
+ Stream bool
+ Verbose bool
+}
+
+func newOutputWriter(writer io.Writer, stream, verbose bool) *outputWriter {
+ return &outputWriter{writer: writer, Stream: stream, Verbose: verbose}
+}
+
+func (ow *outputWriter) Write(content []byte) (n int, err error) {
+ ow.m.Lock()
+ n, err = ow.writer.Write(content)
+ ow.m.Unlock()
+ return
+}
+
+func (ow *outputWriter) WriteCallStarted(label string, c *C) {
+ if ow.Stream {
+ header := renderCallHeader(label, c, "", "\n")
+ ow.m.Lock()
+ ow.writer.Write([]byte(header))
+ ow.m.Unlock()
+ }
+}
+
+func (ow *outputWriter) WriteCallProblem(label string, c *C) {
+ var prefix string
+ if !ow.Stream {
+ prefix = "\n-----------------------------------" +
+ "-----------------------------------\n"
+ }
+ header := renderCallHeader(label, c, prefix, "\n\n")
+ ow.m.Lock()
+ ow.wroteCallProblemLast = true
+ ow.writer.Write([]byte(header))
+ if !ow.Stream {
+ c.logb.WriteTo(ow.writer)
+ }
+ ow.m.Unlock()
+}
+
+func (ow *outputWriter) WriteCallSuccess(label string, c *C) {
+ if ow.Stream || (ow.Verbose && c.kind == testKd) {
+ // TODO Use a buffer here.
+ var suffix string
+ if c.reason != "" {
+ suffix = " (" + c.reason + ")"
+ }
+ if c.status() == succeededSt {
+ suffix += "\t" + c.timerString()
+ }
+ suffix += "\n"
+ if ow.Stream {
+ suffix += "\n"
+ }
+ header := renderCallHeader(label, c, "", suffix)
+ ow.m.Lock()
+ // Resist temptation of using line as prefix above due to race.
+ if !ow.Stream && ow.wroteCallProblemLast {
+ header = "\n-----------------------------------" +
+ "-----------------------------------\n" +
+ header
+ }
+ ow.wroteCallProblemLast = false
+ ow.writer.Write([]byte(header))
+ ow.m.Unlock()
+ }
+}
+
+func renderCallHeader(label string, c *C, prefix, suffix string) string {
+ pc := c.method.PC()
+ return fmt.Sprintf("%s%s: %s: %s%s", prefix, label, niceFuncPath(pc),
+ niceFuncName(pc), suffix)
+}
diff --git a/Godeps/_workspace/src/gopkg.in/check.v1/run_test.go b/Godeps/_workspace/src/gopkg.in/check.v1/run_test.go
deleted file mode 100644
index f41fffc3f..000000000
--- a/Godeps/_workspace/src/gopkg.in/check.v1/run_test.go
+++ /dev/null
@@ -1,419 +0,0 @@
-// These tests verify the test running logic.
-
-package check_test
-
-import (
- "errors"
- . "gopkg.in/check.v1"
- "os"
- "sync"
-)
-
-var runnerS = Suite(&RunS{})
-
-type RunS struct{}
-
-func (s *RunS) TestCountSuite(c *C) {
- suitesRun += 1
-}
-
-// -----------------------------------------------------------------------
-// Tests ensuring result counting works properly.
-
-func (s *RunS) TestSuccess(c *C) {
- output := String{}
- result := Run(&SuccessHelper{}, &RunConf{Output: &output})
- c.Check(result.Succeeded, Equals, 1)
- c.Check(result.Failed, Equals, 0)
- c.Check(result.Skipped, Equals, 0)
- c.Check(result.Panicked, Equals, 0)
- c.Check(result.FixturePanicked, Equals, 0)
- c.Check(result.Missed, Equals, 0)
- c.Check(result.RunError, IsNil)
-}
-
-func (s *RunS) TestFailure(c *C) {
- output := String{}
- result := Run(&FailHelper{}, &RunConf{Output: &output})
- c.Check(result.Succeeded, Equals, 0)
- c.Check(result.Failed, Equals, 1)
- c.Check(result.Skipped, Equals, 0)
- c.Check(result.Panicked, Equals, 0)
- c.Check(result.FixturePanicked, Equals, 0)
- c.Check(result.Missed, Equals, 0)
- c.Check(result.RunError, IsNil)
-}
-
-func (s *RunS) TestFixture(c *C) {
- output := String{}
- result := Run(&FixtureHelper{}, &RunConf{Output: &output})
- c.Check(result.Succeeded, Equals, 2)
- c.Check(result.Failed, Equals, 0)
- c.Check(result.Skipped, Equals, 0)
- c.Check(result.Panicked, Equals, 0)
- c.Check(result.FixturePanicked, Equals, 0)
- c.Check(result.Missed, Equals, 0)
- c.Check(result.RunError, IsNil)
-}
-
-func (s *RunS) TestPanicOnTest(c *C) {
- output := String{}
- helper := &FixtureHelper{panicOn: "Test1"}
- result := Run(helper, &RunConf{Output: &output})
- c.Check(result.Succeeded, Equals, 1)
- c.Check(result.Failed, Equals, 0)
- c.Check(result.Skipped, Equals, 0)
- c.Check(result.Panicked, Equals, 1)
- c.Check(result.FixturePanicked, Equals, 0)
- c.Check(result.Missed, Equals, 0)
- c.Check(result.RunError, IsNil)
-}
-
-func (s *RunS) TestPanicOnSetUpTest(c *C) {
- output := String{}
- helper := &FixtureHelper{panicOn: "SetUpTest"}
- result := Run(helper, &RunConf{Output: &output})
- c.Check(result.Succeeded, Equals, 0)
- c.Check(result.Failed, Equals, 0)
- c.Check(result.Skipped, Equals, 0)
- c.Check(result.Panicked, Equals, 0)
- c.Check(result.FixturePanicked, Equals, 1)
- c.Check(result.Missed, Equals, 2)
- c.Check(result.RunError, IsNil)
-}
-
-func (s *RunS) TestPanicOnSetUpSuite(c *C) {
- output := String{}
- helper := &FixtureHelper{panicOn: "SetUpSuite"}
- result := Run(helper, &RunConf{Output: &output})
- c.Check(result.Succeeded, Equals, 0)
- c.Check(result.Failed, Equals, 0)
- c.Check(result.Skipped, Equals, 0)
- c.Check(result.Panicked, Equals, 0)
- c.Check(result.FixturePanicked, Equals, 1)
- c.Check(result.Missed, Equals, 2)
- c.Check(result.RunError, IsNil)
-}
-
-// -----------------------------------------------------------------------
-// Check result aggregation.
-
-func (s *RunS) TestAdd(c *C) {
- result := &Result{
- Succeeded: 1,
- Skipped: 2,
- Failed: 3,
- Panicked: 4,
- FixturePanicked: 5,
- Missed: 6,
- ExpectedFailures: 7,
- }
- result.Add(&Result{
- Succeeded: 10,
- Skipped: 20,
- Failed: 30,
- Panicked: 40,
- FixturePanicked: 50,
- Missed: 60,
- ExpectedFailures: 70,
- })
- c.Check(result.Succeeded, Equals, 11)
- c.Check(result.Skipped, Equals, 22)
- c.Check(result.Failed, Equals, 33)
- c.Check(result.Panicked, Equals, 44)
- c.Check(result.FixturePanicked, Equals, 55)
- c.Check(result.Missed, Equals, 66)
- c.Check(result.ExpectedFailures, Equals, 77)
- c.Check(result.RunError, IsNil)
-}
-
-// -----------------------------------------------------------------------
-// Check the Passed() method.
-
-func (s *RunS) TestPassed(c *C) {
- c.Assert((&Result{}).Passed(), Equals, true)
- c.Assert((&Result{Succeeded: 1}).Passed(), Equals, true)
- c.Assert((&Result{Skipped: 1}).Passed(), Equals, true)
- c.Assert((&Result{Failed: 1}).Passed(), Equals, false)
- c.Assert((&Result{Panicked: 1}).Passed(), Equals, false)
- c.Assert((&Result{FixturePanicked: 1}).Passed(), Equals, false)
- c.Assert((&Result{Missed: 1}).Passed(), Equals, false)
- c.Assert((&Result{RunError: errors.New("!")}).Passed(), Equals, false)
-}
-
-// -----------------------------------------------------------------------
-// Check that result printing is working correctly.
-
-func (s *RunS) TestPrintSuccess(c *C) {
- result := &Result{Succeeded: 5}
- c.Check(result.String(), Equals, "OK: 5 passed")
-}
-
-func (s *RunS) TestPrintFailure(c *C) {
- result := &Result{Failed: 5}
- c.Check(result.String(), Equals, "OOPS: 0 passed, 5 FAILED")
-}
-
-func (s *RunS) TestPrintSkipped(c *C) {
- result := &Result{Skipped: 5}
- c.Check(result.String(), Equals, "OK: 0 passed, 5 skipped")
-}
-
-func (s *RunS) TestPrintExpectedFailures(c *C) {
- result := &Result{ExpectedFailures: 5}
- c.Check(result.String(), Equals, "OK: 0 passed, 5 expected failures")
-}
-
-func (s *RunS) TestPrintPanicked(c *C) {
- result := &Result{Panicked: 5}
- c.Check(result.String(), Equals, "OOPS: 0 passed, 5 PANICKED")
-}
-
-func (s *RunS) TestPrintFixturePanicked(c *C) {
- result := &Result{FixturePanicked: 5}
- c.Check(result.String(), Equals, "OOPS: 0 passed, 5 FIXTURE-PANICKED")
-}
-
-func (s *RunS) TestPrintMissed(c *C) {
- result := &Result{Missed: 5}
- c.Check(result.String(), Equals, "OOPS: 0 passed, 5 MISSED")
-}
-
-func (s *RunS) TestPrintAll(c *C) {
- result := &Result{Succeeded: 1, Skipped: 2, ExpectedFailures: 3,
- Panicked: 4, FixturePanicked: 5, Missed: 6}
- c.Check(result.String(), Equals,
- "OOPS: 1 passed, 2 skipped, 3 expected failures, 4 PANICKED, "+
- "5 FIXTURE-PANICKED, 6 MISSED")
-}
-
-func (s *RunS) TestPrintRunError(c *C) {
- result := &Result{Succeeded: 1, Failed: 1,
- RunError: errors.New("Kaboom!")}
- c.Check(result.String(), Equals, "ERROR: Kaboom!")
-}
-
-// -----------------------------------------------------------------------
-// Verify that the method pattern flag works correctly.
-
-func (s *RunS) TestFilterTestName(c *C) {
- helper := FixtureHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Filter: "Test[91]"}
- Run(&helper, &runConf)
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Test1")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 5)
-}
-
-func (s *RunS) TestFilterTestNameWithAll(c *C) {
- helper := FixtureHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Filter: ".*"}
- Run(&helper, &runConf)
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Test1")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "SetUpTest")
- c.Check(helper.calls[5], Equals, "Test2")
- c.Check(helper.calls[6], Equals, "TearDownTest")
- c.Check(helper.calls[7], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 8)
-}
-
-func (s *RunS) TestFilterSuiteName(c *C) {
- helper := FixtureHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Filter: "FixtureHelper"}
- Run(&helper, &runConf)
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Test1")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "SetUpTest")
- c.Check(helper.calls[5], Equals, "Test2")
- c.Check(helper.calls[6], Equals, "TearDownTest")
- c.Check(helper.calls[7], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 8)
-}
-
-func (s *RunS) TestFilterSuiteNameAndTestName(c *C) {
- helper := FixtureHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Filter: "FixtureHelper\\.Test2"}
- Run(&helper, &runConf)
- c.Check(helper.calls[0], Equals, "SetUpSuite")
- c.Check(helper.calls[1], Equals, "SetUpTest")
- c.Check(helper.calls[2], Equals, "Test2")
- c.Check(helper.calls[3], Equals, "TearDownTest")
- c.Check(helper.calls[4], Equals, "TearDownSuite")
- c.Check(len(helper.calls), Equals, 5)
-}
-
-func (s *RunS) TestFilterAllOut(c *C) {
- helper := FixtureHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Filter: "NotFound"}
- Run(&helper, &runConf)
- c.Check(len(helper.calls), Equals, 0)
-}
-
-func (s *RunS) TestRequirePartialMatch(c *C) {
- helper := FixtureHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Filter: "est"}
- Run(&helper, &runConf)
- c.Check(len(helper.calls), Equals, 8)
-}
-
-func (s *RunS) TestFilterError(c *C) {
- helper := FixtureHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Filter: "]["}
- result := Run(&helper, &runConf)
- c.Check(result.String(), Equals,
- "ERROR: Bad filter expression: error parsing regexp: missing closing ]: `[`")
- c.Check(len(helper.calls), Equals, 0)
-}
-
-// -----------------------------------------------------------------------
-// Verify that List works correctly.
-
-func (s *RunS) TestListFiltered(c *C) {
- names := List(&FixtureHelper{}, &RunConf{Filter: "1"})
- c.Assert(names, DeepEquals, []string{
- "FixtureHelper.Test1",
- })
-}
-
-func (s *RunS) TestList(c *C) {
- names := List(&FixtureHelper{}, &RunConf{})
- c.Assert(names, DeepEquals, []string{
- "FixtureHelper.Test1",
- "FixtureHelper.Test2",
- })
-}
-
-// -----------------------------------------------------------------------
-// Verify that verbose mode prints tests which pass as well.
-
-func (s *RunS) TestVerboseMode(c *C) {
- helper := FixtureHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Verbose: true}
- Run(&helper, &runConf)
-
- expected := "PASS: check_test\\.go:[0-9]+: FixtureHelper\\.Test1\t *[.0-9]+s\n" +
- "PASS: check_test\\.go:[0-9]+: FixtureHelper\\.Test2\t *[.0-9]+s\n"
-
- c.Assert(output.value, Matches, expected)
-}
-
-func (s *RunS) TestVerboseModeWithFailBeforePass(c *C) {
- helper := FixtureHelper{panicOn: "Test1"}
- output := String{}
- runConf := RunConf{Output: &output, Verbose: true}
- Run(&helper, &runConf)
-
- expected := "(?s).*PANIC.*\n-+\n" + // Should have an extra line.
- "PASS: check_test\\.go:[0-9]+: FixtureHelper\\.Test2\t *[.0-9]+s\n"
-
- c.Assert(output.value, Matches, expected)
-}
-
-// -----------------------------------------------------------------------
-// Verify the stream output mode. In this mode there's no output caching.
-
-type StreamHelper struct {
- l2 sync.Mutex
- l3 sync.Mutex
-}
-
-func (s *StreamHelper) SetUpSuite(c *C) {
- c.Log("0")
-}
-
-func (s *StreamHelper) Test1(c *C) {
- c.Log("1")
- s.l2.Lock()
- s.l3.Lock()
- go func() {
- s.l2.Lock() // Wait for "2".
- c.Log("3")
- s.l3.Unlock()
- }()
-}
-
-func (s *StreamHelper) Test2(c *C) {
- c.Log("2")
- s.l2.Unlock()
- s.l3.Lock() // Wait for "3".
- c.Fail()
- c.Log("4")
-}
-
-func (s *RunS) TestStreamMode(c *C) {
- helper := &StreamHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Stream: true}
- Run(helper, &runConf)
-
- expected := "START: run_test\\.go:[0-9]+: StreamHelper\\.SetUpSuite\n0\n" +
- "PASS: run_test\\.go:[0-9]+: StreamHelper\\.SetUpSuite\t *[.0-9]+s\n\n" +
- "START: run_test\\.go:[0-9]+: StreamHelper\\.Test1\n1\n" +
- "PASS: run_test\\.go:[0-9]+: StreamHelper\\.Test1\t *[.0-9]+s\n\n" +
- "START: run_test\\.go:[0-9]+: StreamHelper\\.Test2\n2\n3\n4\n" +
- "FAIL: run_test\\.go:[0-9]+: StreamHelper\\.Test2\n\n"
-
- c.Assert(output.value, Matches, expected)
-}
-
-type StreamMissHelper struct{}
-
-func (s *StreamMissHelper) SetUpSuite(c *C) {
- c.Log("0")
- c.Fail()
-}
-
-func (s *StreamMissHelper) Test1(c *C) {
- c.Log("1")
-}
-
-func (s *RunS) TestStreamModeWithMiss(c *C) {
- helper := &StreamMissHelper{}
- output := String{}
- runConf := RunConf{Output: &output, Stream: true}
- Run(helper, &runConf)
-
- expected := "START: run_test\\.go:[0-9]+: StreamMissHelper\\.SetUpSuite\n0\n" +
- "FAIL: run_test\\.go:[0-9]+: StreamMissHelper\\.SetUpSuite\n\n" +
- "START: run_test\\.go:[0-9]+: StreamMissHelper\\.Test1\n" +
- "MISS: run_test\\.go:[0-9]+: StreamMissHelper\\.Test1\n\n"
-
- c.Assert(output.value, Matches, expected)
-}
-
-// -----------------------------------------------------------------------
-// Verify that that the keep work dir request indeed does so.
-
-type WorkDirSuite struct {}
-
-func (s *WorkDirSuite) Test(c *C) {
- c.MkDir()
-}
-
-func (s *RunS) TestKeepWorkDir(c *C) {
- output := String{}
- runConf := RunConf{Output: &output, Verbose: true, KeepWorkDir: true}
- result := Run(&WorkDirSuite{}, &runConf)
-
- c.Assert(result.String(), Matches, ".*\nWORK=" + result.WorkDir)
-
- stat, err := os.Stat(result.WorkDir)
- c.Assert(err, IsNil)
- c.Assert(stat.IsDir(), Equals, true)
-}
diff --git a/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_nots_test.go b/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_nots_test.go
deleted file mode 100644
index fd599699f..000000000
--- a/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_nots_test.go
+++ /dev/null
@@ -1,282 +0,0 @@
-package set
-
-import (
- "reflect"
- "strings"
- "testing"
-)
-
-func TestSetNonTS_NewNonTS_parameters(t *testing.T) {
- s := NewNonTS("string", "another_string", 1, 3.14)
-
- if s.Size() != 4 {
- t.Error("NewNonTS: calling with parameters should create a set with size of four")
- }
-}
-
-func TestSetNonTS_Add(t *testing.T) {
- s := NewNonTS()
- s.Add(1)
- s.Add(2)
- s.Add(2) // duplicate
- s.Add("fatih")
- s.Add("zeynep")
- s.Add("zeynep") // another duplicate
-
- if s.Size() != 4 {
- t.Error("Add: items are not unique. The set size should be four")
- }
-
- if !s.Has(1, 2, "fatih", "zeynep") {
- t.Error("Add: added items are not availabile in the set.")
- }
-}
-
-func TestSetNonTS_Add_multiple(t *testing.T) {
- s := NewNonTS()
- s.Add("ankara", "san francisco", 3.14)
-
- if s.Size() != 3 {
- t.Error("Add: items are not unique. The set size should be three")
- }
-
- if !s.Has("ankara", "san francisco", 3.14) {
- t.Error("Add: added items are not availabile in the set.")
- }
-}
-
-func TestSetNonTS_Remove(t *testing.T) {
- s := NewNonTS()
- s.Add(1)
- s.Add(2)
- s.Add("fatih")
-
- s.Remove(1)
- if s.Size() != 2 {
- t.Error("Remove: set size should be two after removing")
- }
-
- s.Remove(1)
- if s.Size() != 2 {
- t.Error("Remove: set size should be not change after trying to remove a non-existing item")
- }
-
- s.Remove(2)
- s.Remove("fatih")
- if s.Size() != 0 {
- t.Error("Remove: set size should be zero")
- }
-
- s.Remove("fatih") // try to remove something from a zero length set
-}
-
-func TestSetNonTS_Remove_multiple(t *testing.T) {
- s := NewNonTS()
- s.Add("ankara", "san francisco", 3.14, "istanbul")
- s.Remove("ankara", "san francisco", 3.14)
-
- if s.Size() != 1 {
- t.Error("Remove: items are not unique. The set size should be four")
- }
-
- if !s.Has("istanbul") {
- t.Error("Add: added items are not availabile in the set.")
- }
-}
-
-func TestSetNonTS_Pop(t *testing.T) {
- s := NewNonTS()
- s.Add(1)
- s.Add(2)
- s.Add("fatih")
-
- a := s.Pop()
- if s.Size() != 2 {
- t.Error("Pop: set size should be two after popping out")
- }
-
- if s.Has(a) {
- t.Error("Pop: returned item should not exist")
- }
-
- s.Pop()
- s.Pop()
- b := s.Pop()
- if b != nil {
- t.Error("Pop: should return nil because set is empty")
- }
-
- s.Pop() // try to remove something from a zero length set
-}
-
-func TestSetNonTS_Has(t *testing.T) {
- s := NewNonTS("1", "2", "3", "4")
-
- if !s.Has("1") {
- t.Error("Has: the item 1 exist, but 'Has' is returning false")
- }
-
- if !s.Has("1", "2", "3", "4") {
- t.Error("Has: the items all exist, but 'Has' is returning false")
- }
-}
-
-func TestSetNonTS_Clear(t *testing.T) {
- s := NewNonTS()
- s.Add(1)
- s.Add("istanbul")
- s.Add("san francisco")
-
- s.Clear()
- if s.Size() != 0 {
- t.Error("Clear: set size should be zero")
- }
-}
-
-func TestSetNonTS_IsEmpty(t *testing.T) {
- s := NewNonTS()
-
- empty := s.IsEmpty()
- if !empty {
- t.Error("IsEmpty: set is empty, it should be true")
- }
-
- s.Add(2)
- s.Add(3)
- notEmpty := s.IsEmpty()
-
- if notEmpty {
- t.Error("IsEmpty: set is filled, it should be false")
- }
-}
-
-func TestSetNonTS_IsEqual(t *testing.T) {
- s := NewNonTS("1", "2", "3")
- u := NewNonTS("1", "2", "3")
-
- ok := s.IsEqual(u)
- if !ok {
- t.Error("IsEqual: set s and t are equal. However it returns false")
- }
-
- // same size, different content
- a := NewNonTS("1", "2", "3")
- b := NewNonTS("4", "5", "6")
-
- ok = a.IsEqual(b)
- if ok {
- t.Error("IsEqual: set a and b are now equal (1). However it returns true")
- }
-
- // different size, similar content
- a = NewNonTS("1", "2", "3")
- b = NewNonTS("1", "2", "3", "4")
-
- ok = a.IsEqual(b)
- if ok {
- t.Error("IsEqual: set s and t are now equal (2). However it returns true")
- }
-
-}
-
-func TestSetNonTS_IsSubset(t *testing.T) {
- s := NewNonTS("1", "2", "3", "4")
- u := NewNonTS("1", "2", "3")
-
- ok := s.IsSubset(u)
- if !ok {
- t.Error("IsSubset: u is a subset of s. However it returns false")
- }
-
- ok = u.IsSubset(s)
- if ok {
- t.Error("IsSubset: s is not a subset of u. However it returns true")
- }
-
-}
-
-func TestSetNonTS_IsSuperset(t *testing.T) {
- s := NewNonTS("1", "2", "3", "4")
- u := NewNonTS("1", "2", "3")
-
- ok := u.IsSuperset(s)
- if !ok {
- t.Error("IsSuperset: s is a superset of u. However it returns false")
- }
-
- ok = s.IsSuperset(u)
- if ok {
- t.Error("IsSuperset: u is not a superset of u. However it returns true")
- }
-
-}
-
-func TestSetNonTS_String(t *testing.T) {
- s := NewNonTS()
- if s.String() != "[]" {
- t.Errorf("String: output is not what is excepted '%s'", s.String())
- }
-
- s.Add("1", "2", "3", "4")
- if !strings.HasPrefix(s.String(), "[") {
- t.Error("String: output should begin with a square bracket")
- }
-
- if !strings.HasSuffix(s.String(), "]") {
- t.Error("String: output should end with a square bracket")
- }
-
-}
-
-func TestSetNonTS_List(t *testing.T) {
- s := NewNonTS("1", "2", "3", "4")
-
- // this returns a slice of interface{}
- if len(s.List()) != 4 {
- t.Error("List: slice size should be four.")
- }
-
- for _, item := range s.List() {
- r := reflect.TypeOf(item)
- if r.Kind().String() != "string" {
- t.Error("List: slice item should be a string")
- }
- }
-}
-
-func TestSetNonTS_Copy(t *testing.T) {
- s := NewNonTS("1", "2", "3", "4")
- r := s.Copy()
-
- if !s.IsEqual(r) {
- t.Error("Copy: set s and r are not equal")
- }
-}
-
-func TestSetNonTS_Merge(t *testing.T) {
- s := NewNonTS("1", "2", "3")
- r := NewNonTS("3", "4", "5")
- s.Merge(r)
-
- if s.Size() != 5 {
- t.Error("Merge: the set doesn't have all items in it.")
- }
-
- if !s.Has("1", "2", "3", "4", "5") {
- t.Error("Merge: merged items are not availabile in the set.")
- }
-}
-
-func TestSetNonTS_Separate(t *testing.T) {
- s := NewNonTS("1", "2", "3")
- r := NewNonTS("3", "5")
- s.Separate(r)
-
- if s.Size() != 2 {
- t.Error("Separate: the set doesn't have all items in it.")
- }
-
- if !s.Has("1", "2") {
- t.Error("Separate: items after separation are not availabile in the set.")
- }
-}
diff --git a/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_test.go b/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_test.go
deleted file mode 100644
index 83dd5806d..000000000
--- a/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_test.go
+++ /dev/null
@@ -1,188 +0,0 @@
-package set
-
-import (
- "reflect"
- "testing"
-)
-
-func Test_Union(t *testing.T) {
- s := New("1", "2", "3")
- r := New("3", "4", "5")
- x := NewNonTS("5", "6", "7")
-
- u := Union(s, r, x)
- if settype := reflect.TypeOf(u).String(); settype != "*set.Set" {
- t.Error("Union should derive its set type from the first passed set, got", settype)
- }
- if u.Size() != 7 {
- t.Error("Union: the merged set doesn't have all items in it.")
- }
-
- if !u.Has("1", "2", "3", "4", "5", "6", "7") {
- t.Error("Union: merged items are not availabile in the set.")
- }
-
- z := Union(x, r)
- if z.Size() != 5 {
- t.Error("Union: Union of 2 sets doesn't have the proper number of items.")
- }
- if settype := reflect.TypeOf(z).String(); settype != "*set.SetNonTS" {
- t.Error("Union should derive its set type from the first passed set, got", settype)
- }
-
-}
-
-func Test_Difference(t *testing.T) {
- s := New("1", "2", "3")
- r := New("3", "4", "5")
- x := New("5", "6", "7")
- u := Difference(s, r, x)
-
- if u.Size() != 2 {
- t.Error("Difference: the set doesn't have all items in it.")
- }
-
- if !u.Has("1", "2") {
- t.Error("Difference: items are not availabile in the set.")
- }
-
- y := Difference(r, r)
- if y.Size() != 0 {
- t.Error("Difference: size should be zero")
- }
-
-}
-
-func Test_Intersection(t *testing.T) {
- s1 := New("1", "3", "4", "5")
- s2 := New("2", "3", "5", "6")
- s3 := New("4", "5", "6", "7")
- u := Intersection(s1, s2, s3)
-
- if u.Size() != 1 {
- t.Error("Intersection: the set doesn't have all items in it.")
- }
-
- if !u.Has("5") {
- t.Error("Intersection: items after intersection are not availabile in the set.")
- }
-}
-
-func Test_SymmetricDifference(t *testing.T) {
- s := New("1", "2", "3")
- r := New("3", "4", "5")
- u := SymmetricDifference(s, r)
-
- if u.Size() != 4 {
- t.Error("SymmetricDifference: the set doesn't have all items in it.")
- }
-
- if !u.Has("1", "2", "4", "5") {
- t.Error("SymmetricDifference: items are not availabile in the set.")
- }
-}
-
-func Test_StringSlice(t *testing.T) {
- s := New("san francisco", "istanbul", 3.14, 1321, "ankara")
- u := StringSlice(s)
-
- if len(u) != 3 {
- t.Error("StringSlice: slice should only have three items")
- }
-
- for _, item := range u {
- r := reflect.TypeOf(item)
- if r.Kind().String() != "string" {
- t.Error("StringSlice: slice item should be a string")
- }
- }
-}
-
-func Test_IntSlice(t *testing.T) {
- s := New("san francisco", "istanbul", 3.14, 1321, "ankara", 8876)
- u := IntSlice(s)
-
- if len(u) != 2 {
- t.Error("IntSlice: slice should only have two items")
- }
-
- for _, item := range u {
- r := reflect.TypeOf(item)
- if r.Kind().String() != "int" {
- t.Error("Intslice: slice item should be a int")
- }
- }
-}
-
-func BenchmarkSetEquality(b *testing.B) {
- s := New()
- u := New()
-
- for i := 0; i < b.N; i++ {
- s.Add(i)
- u.Add(i)
- }
-
- b.ResetTimer()
-
- for i := 0; i < b.N; i++ {
- s.IsEqual(u)
- }
-}
-
-func BenchmarkSubset(b *testing.B) {
- s := New()
- u := New()
-
- for i := 0; i < b.N; i++ {
- s.Add(i)
- u.Add(i)
- }
-
- b.ResetTimer()
-
- for i := 0; i < b.N; i++ {
- s.IsSubset(u)
- }
-}
-
-func benchmarkIntersection(b *testing.B, numberOfItems int) {
- s1 := New()
- s2 := New()
-
- for i := 0; i < numberOfItems/2; i++ {
- s1.Add(i)
- }
- for i := 0; i < numberOfItems; i++ {
- s2.Add(i)
- }
-
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- Intersection(s1, s2)
- }
-}
-
-func BenchmarkIntersection10(b *testing.B) {
- benchmarkIntersection(b, 10)
-}
-
-func BenchmarkIntersection100(b *testing.B) {
- benchmarkIntersection(b, 100)
-}
-
-func BenchmarkIntersection1000(b *testing.B) {
- benchmarkIntersection(b, 1000)
-}
-
-func BenchmarkIntersection10000(b *testing.B) {
- benchmarkIntersection(b, 10000)
-}
-
-func BenchmarkIntersection100000(b *testing.B) {
- benchmarkIntersection(b, 100000)
-}
-
-func BenchmarkIntersection1000000(b *testing.B) {
- benchmarkIntersection(b, 1000000)
-}
diff --git a/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_ts_test.go b/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_ts_test.go
deleted file mode 100644
index 8d2f509d0..000000000
--- a/Godeps/_workspace/src/gopkg.in/fatih/set.v0/set_ts_test.go
+++ /dev/null
@@ -1,321 +0,0 @@
-package set
-
-import (
- "reflect"
- "strconv"
- "strings"
- "testing"
-)
-
-func TestSet_New(t *testing.T) {
- s := New()
-
- if s.Size() != 0 {
- t.Error("New: calling without any parameters should create a set with zero size")
- }
-
- u := s.New()
- if u.Size() != 0 {
- t.Error("New: creating a new set via s.New() should create a set with zero size")
- }
-}
-
-func TestSet_New_parameters(t *testing.T) {
- s := New("string", "another_string", 1, 3.14)
-
- if s.Size() != 4 {
- t.Error("New: calling with parameters should create a set with size of four")
- }
-}
-
-func TestSet_Add(t *testing.T) {
- s := New()
- s.Add(1)
- s.Add(2)
- s.Add(2) // duplicate
- s.Add("fatih")
- s.Add("zeynep")
- s.Add("zeynep") // another duplicate
-
- if s.Size() != 4 {
- t.Error("Add: items are not unique. The set size should be four")
- }
-
- if !s.Has(1, 2, "fatih", "zeynep") {
- t.Error("Add: added items are not availabile in the set.")
- }
-}
-
-func TestSet_Add_multiple(t *testing.T) {
- s := New()
- s.Add("ankara", "san francisco", 3.14)
-
- if s.Size() != 3 {
- t.Error("Add: items are not unique. The set size should be three")
- }
-
- if !s.Has("ankara", "san francisco", 3.14) {
- t.Error("Add: added items are not availabile in the set.")
- }
-}
-
-func TestSet_Remove(t *testing.T) {
- s := New()
- s.Add(1)
- s.Add(2)
- s.Add("fatih")
-
- s.Remove(1)
- if s.Size() != 2 {
- t.Error("Remove: set size should be two after removing")
- }
-
- s.Remove(1)
- if s.Size() != 2 {
- t.Error("Remove: set size should be not change after trying to remove a non-existing item")
- }
-
- s.Remove(2)
- s.Remove("fatih")
- if s.Size() != 0 {
- t.Error("Remove: set size should be zero")
- }
-
- s.Remove("fatih") // try to remove something from a zero length set
-}
-
-func TestSet_Remove_multiple(t *testing.T) {
- s := New()
- s.Add("ankara", "san francisco", 3.14, "istanbul")
- s.Remove("ankara", "san francisco", 3.14)
-
- if s.Size() != 1 {
- t.Error("Remove: items are not unique. The set size should be four")
- }
-
- if !s.Has("istanbul") {
- t.Error("Add: added items are not availabile in the set.")
- }
-}
-
-func TestSet_Pop(t *testing.T) {
- s := New()
- s.Add(1)
- s.Add(2)
- s.Add("fatih")
-
- a := s.Pop()
- if s.Size() != 2 {
- t.Error("Pop: set size should be two after popping out")
- }
-
- if s.Has(a) {
- t.Error("Pop: returned item should not exist")
- }
-
- s.Pop()
- s.Pop()
- b := s.Pop()
- if b != nil {
- t.Error("Pop: should return nil because set is empty")
- }
-
- s.Pop() // try to remove something from a zero length set
-}
-
-func TestSet_Has(t *testing.T) {
- s := New("1", "2", "3", "4")
-
- if !s.Has("1") {
- t.Error("Has: the item 1 exist, but 'Has' is returning false")
- }
-
- if !s.Has("1", "2", "3", "4") {
- t.Error("Has: the items all exist, but 'Has' is returning false")
- }
-}
-
-func TestSet_Clear(t *testing.T) {
- s := New()
- s.Add(1)
- s.Add("istanbul")
- s.Add("san francisco")
-
- s.Clear()
- if s.Size() != 0 {
- t.Error("Clear: set size should be zero")
- }
-}
-
-func TestSet_IsEmpty(t *testing.T) {
- s := New()
-
- empty := s.IsEmpty()
- if !empty {
- t.Error("IsEmpty: set is empty, it should be true")
- }
-
- s.Add(2)
- s.Add(3)
- notEmpty := s.IsEmpty()
-
- if notEmpty {
- t.Error("IsEmpty: set is filled, it should be false")
- }
-}
-
-func TestSet_IsEqual(t *testing.T) {
- s := New("1", "2", "3")
- u := New("1", "2", "3")
-
- ok := s.IsEqual(u)
- if !ok {
- t.Error("IsEqual: set s and t are equal. However it returns false")
- }
-
- // same size, different content
- a := New("1", "2", "3")
- b := New("4", "5", "6")
-
- ok = a.IsEqual(b)
- if ok {
- t.Error("IsEqual: set a and b are now equal (1). However it returns true")
- }
-
- // different size, similar content
- a = New("1", "2", "3")
- b = New("1", "2", "3", "4")
-
- ok = a.IsEqual(b)
- if ok {
- t.Error("IsEqual: set s and t are now equal (2). However it returns true")
- }
-
-}
-
-func TestSet_IsSubset(t *testing.T) {
- s := New("1", "2", "3", "4")
- u := New("1", "2", "3")
-
- ok := s.IsSubset(u)
- if !ok {
- t.Error("IsSubset: u is a subset of s. However it returns false")
- }
-
- ok = u.IsSubset(s)
- if ok {
- t.Error("IsSubset: s is not a subset of u. However it returns true")
- }
-
-}
-
-func TestSet_IsSuperset(t *testing.T) {
- s := New("1", "2", "3", "4")
- u := New("1", "2", "3")
-
- ok := u.IsSuperset(s)
- if !ok {
- t.Error("IsSuperset: s is a superset of u. However it returns false")
- }
-
- ok = s.IsSuperset(u)
- if ok {
- t.Error("IsSuperset: u is not a superset of u. However it returns true")
- }
-
-}
-
-func TestSet_String(t *testing.T) {
- s := New()
- if s.String() != "[]" {
- t.Errorf("String: output is not what is excepted '%s'", s.String())
- }
-
- s.Add("1", "2", "3", "4")
- if !strings.HasPrefix(s.String(), "[") {
- t.Error("String: output should begin with a square bracket")
- }
-
- if !strings.HasSuffix(s.String(), "]") {
- t.Error("String: output should end with a square bracket")
- }
-}
-
-func TestSet_List(t *testing.T) {
- s := New("1", "2", "3", "4")
-
- // this returns a slice of interface{}
- if len(s.List()) != 4 {
- t.Error("List: slice size should be four.")
- }
-
- for _, item := range s.List() {
- r := reflect.TypeOf(item)
- if r.Kind().String() != "string" {
- t.Error("List: slice item should be a string")
- }
- }
-}
-
-func TestSet_Copy(t *testing.T) {
- s := New("1", "2", "3", "4")
- r := s.Copy()
-
- if !s.IsEqual(r) {
- t.Error("Copy: set s and r are not equal")
- }
-}
-
-func TestSet_Merge(t *testing.T) {
- s := New("1", "2", "3")
- r := New("3", "4", "5")
- s.Merge(r)
-
- if s.Size() != 5 {
- t.Error("Merge: the set doesn't have all items in it.")
- }
-
- if !s.Has("1", "2", "3", "4", "5") {
- t.Error("Merge: merged items are not availabile in the set.")
- }
-}
-
-func TestSet_Separate(t *testing.T) {
- s := New("1", "2", "3")
- r := New("3", "5")
- s.Separate(r)
-
- if s.Size() != 2 {
- t.Error("Separate: the set doesn't have all items in it.")
- }
-
- if !s.Has("1", "2") {
- t.Error("Separate: items after separation are not availabile in the set.")
- }
-}
-
-func TestSet_RaceAdd(t *testing.T) {
- // Create two sets. Add concurrently items to each of them. Remove from the
- // other one.
- // "go test -race" should detect this if the library is not thread-safe.
- s := New()
- u := New()
-
- go func() {
- for i := 0; i < 1000; i++ {
- item := "item" + strconv.Itoa(i)
- go func(i int) {
- s.Add(item)
- u.Add(item)
- }(i)
- }
- }()
-
- for i := 0; i < 1000; i++ {
- item := "item" + strconv.Itoa(i)
- go func(i int) {
- s.Add(item)
- u.Add(item)
- }(i)
- }
-}
diff --git a/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/LICENSE b/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/LICENSE
new file mode 100644
index 000000000..467d60878
--- /dev/null
+++ b/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2014 Péter Szilágyi. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Alternatively, the CookieJar toolbox may be used in accordance with the terms
+and conditions contained in a signed written agreement between you and the
+author(s).
diff --git a/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/example_test.go b/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/example_test.go
deleted file mode 100644
index 7b2e5ee84..000000000
--- a/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/example_test.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// CookieJar - A contestant's algorithm toolbox
-// Copyright (c) 2013 Peter Szilagyi. All rights reserved.
-//
-// CookieJar is dual licensed: you can redistribute it and/or modify it under
-// the terms of the GNU General Public License as published by the Free Software
-// Foundation, either version 3 of the License, or (at your option) any later
-// version.
-//
-// The toolbox is distributed in the hope that it will be useful, but WITHOUT
-// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-// more details.
-//
-// Alternatively, the CookieJar toolbox may be used in accordance with the terms
-// and conditions contained in a signed written agreement between you and the
-// author(s).
-
-package prque_test
-
-import (
- "fmt"
-
- "gopkg.in/karalabe/cookiejar.v2/collections/prque"
-)
-
-// Insert some data into a priority queue and pop them out in prioritized order.
-func Example_usage() {
- // Define some data to push into the priority queue
- prio := []float32{77.7, 22.2, 44.4, 55.5, 11.1, 88.8, 33.3, 99.9, 0.0, 66.6}
- data := []string{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}
-
- // Create the priority queue and insert the prioritized data
- pq := prque.New()
- for i := 0; i < len(data); i++ {
- pq.Push(data[i], prio[i])
- }
- // Pop out the data and print them
- for !pq.Empty() {
- val, prio := pq.Pop()
- fmt.Printf("%.1f:%s ", prio, val)
- }
- // Output:
- // 99.9:seven 88.8:five 77.7:zero 66.6:nine 55.5:three 44.4:two 33.3:six 22.2:one 11.1:four 0.0:eight
-}
diff --git a/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/prque_test.go b/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/prque_test.go
deleted file mode 100644
index 6a46bb807..000000000
--- a/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/prque_test.go
+++ /dev/null
@@ -1,130 +0,0 @@
-// CookieJar - A contestant's algorithm toolbox
-// Copyright (c) 2013 Peter Szilagyi. All rights reserved.
-//
-// CookieJar is dual licensed: use of this source code is governed by a BSD
-// license that can be found in the LICENSE file. Alternatively, the CookieJar
-// toolbox may be used in accordance with the terms and conditions contained
-// in a signed written agreement between you and the author(s).
-
-package prque
-
-import (
- "math/rand"
- "testing"
-)
-
-func TestPrque(t *testing.T) {
- // Generate a batch of random data and a specific priority order
- size := 16 * blockSize
- prio := rand.Perm(size)
- data := make([]int, size)
- for i := 0; i < size; i++ {
- data[i] = rand.Int()
- }
- queue := New()
- for rep := 0; rep < 2; rep++ {
- // Fill a priority queue with the above data
- for i := 0; i < size; i++ {
- queue.Push(data[i], float32(prio[i]))
- if queue.Size() != i+1 {
- t.Errorf("queue size mismatch: have %v, want %v.", queue.Size(), i+1)
- }
- }
- // Create a map the values to the priorities for easier verification
- dict := make(map[float32]int)
- for i := 0; i < size; i++ {
- dict[float32(prio[i])] = data[i]
- }
- // Pop out the elements in priority order and verify them
- prevPrio := float32(size + 1)
- for !queue.Empty() {
- val, prio := queue.Pop()
- if prio > prevPrio {
- t.Errorf("invalid priority order: %v after %v.", prio, prevPrio)
- }
- prevPrio = prio
- if val != dict[prio] {
- t.Errorf("push/pop mismatch: have %v, want %v.", val, dict[prio])
- }
- delete(dict, prio)
- }
- }
-}
-
-func TestReset(t *testing.T) {
- // Generate a batch of random data and a specific priority order
- size := 16 * blockSize
- prio := rand.Perm(size)
- data := make([]int, size)
- for i := 0; i < size; i++ {
- data[i] = rand.Int()
- }
- queue := New()
- for rep := 0; rep < 2; rep++ {
- // Fill a priority queue with the above data
- for i := 0; i < size; i++ {
- queue.Push(data[i], float32(prio[i]))
- if queue.Size() != i+1 {
- t.Errorf("queue size mismatch: have %v, want %v.", queue.Size(), i+1)
- }
- }
- // Create a map the values to the priorities for easier verification
- dict := make(map[float32]int)
- for i := 0; i < size; i++ {
- dict[float32(prio[i])] = data[i]
- }
- // Pop out half the elements in priority order and verify them
- prevPrio := float32(size + 1)
- for i := 0; i < size/2; i++ {
- val, prio := queue.Pop()
- if prio > prevPrio {
- t.Errorf("invalid priority order: %v after %v.", prio, prevPrio)
- }
- prevPrio = prio
- if val != dict[prio] {
- t.Errorf("push/pop mismatch: have %v, want %v.", val, dict[prio])
- }
- delete(dict, prio)
- }
- // Reset and ensure it's empty
- queue.Reset()
- if !queue.Empty() {
- t.Errorf("priority queue not empty after reset: %v", queue)
- }
- }
-}
-
-func BenchmarkPush(b *testing.B) {
- // Create some initial data
- data := make([]int, b.N)
- prio := make([]float32, b.N)
- for i := 0; i < len(data); i++ {
- data[i] = rand.Int()
- prio[i] = rand.Float32()
- }
- // Execute the benchmark
- b.ResetTimer()
- queue := New()
- for i := 0; i < len(data); i++ {
- queue.Push(data[i], prio[i])
- }
-}
-
-func BenchmarkPop(b *testing.B) {
- // Create some initial data
- data := make([]int, b.N)
- prio := make([]float32, b.N)
- for i := 0; i < len(data); i++ {
- data[i] = rand.Int()
- prio[i] = rand.Float32()
- }
- queue := New()
- for i := 0; i < len(data); i++ {
- queue.Push(data[i], prio[i])
- }
- // Execute the benchmark
- b.ResetTimer()
- for !queue.Empty() {
- queue.Pop()
- }
-}
diff --git a/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/sstack_test.go b/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/sstack_test.go
deleted file mode 100644
index def121812..000000000
--- a/Godeps/_workspace/src/gopkg.in/karalabe/cookiejar.v2/collections/prque/sstack_test.go
+++ /dev/null
@@ -1,100 +0,0 @@
-// CookieJar - A contestant's algorithm toolbox
-// Copyright (c) 2013 Peter Szilagyi. All rights reserved.
-//
-// CookieJar is dual licensed: use of this source code is governed by a BSD
-// license that can be found in the LICENSE file. Alternatively, the CookieJar
-// toolbox may be used in accordance with the terms and conditions contained
-// in a signed written agreement between you and the author(s).
-
-package prque
-
-import (
- "math/rand"
- "sort"
- "testing"
-)
-
-func TestSstack(t *testing.T) {
- // Create some initial data
- size := 16 * blockSize
- data := make([]*item, size)
- for i := 0; i < size; i++ {
- data[i] = &item{rand.Int(), rand.Float32()}
- }
- stack := newSstack()
- for rep := 0; rep < 2; rep++ {
- // Push all the data into the stack, pop out every second
- secs := []*item{}
- for i := 0; i < size; i++ {
- stack.Push(data[i])
- if i%2 == 0 {
- secs = append(secs, stack.Pop().(*item))
- }
- }
- rest := []*item{}
- for stack.Len() > 0 {
- rest = append(rest, stack.Pop().(*item))
- }
- // Make sure the contents of the resulting slices are ok
- for i := 0; i < size; i++ {
- if i%2 == 0 && data[i] != secs[i/2] {
- t.Errorf("push/pop mismatch: have %v, want %v.", secs[i/2], data[i])
- }
- if i%2 == 1 && data[i] != rest[len(rest)-i/2-1] {
- t.Errorf("push/pop mismatch: have %v, want %v.", rest[len(rest)-i/2-1], data[i])
- }
- }
- }
-}
-
-func TestSstackSort(t *testing.T) {
- // Create some initial data
- size := 16 * blockSize
- data := make([]*item, size)
- for i := 0; i < size; i++ {
- data[i] = &item{rand.Int(), float32(i)}
- }
- // Push all the data into the stack
- stack := newSstack()
- for _, val := range data {
- stack.Push(val)
- }
- // Sort and pop the stack contents (should reverse the order)
- sort.Sort(stack)
- for _, val := range data {
- out := stack.Pop()
- if out != val {
- t.Errorf("push/pop mismatch after sort: have %v, want %v.", out, val)
- }
- }
-}
-
-func TestSstackReset(t *testing.T) {
- // Create some initial data
- size := 16 * blockSize
- data := make([]*item, size)
- for i := 0; i < size; i++ {
- data[i] = &item{rand.Int(), rand.Float32()}
- }
- stack := newSstack()
- for rep := 0; rep < 2; rep++ {
- // Push all the data into the stack, pop out every second
- secs := []*item{}
- for i := 0; i < size; i++ {
- stack.Push(data[i])
- if i%2 == 0 {
- secs = append(secs, stack.Pop().(*item))
- }
- }
- // Reset and verify both pulled and stack contents
- stack.Reset()
- if stack.Len() != 0 {
- t.Errorf("stack not empty after reset: %v", stack)
- }
- for i := 0; i < size; i++ {
- if i%2 == 0 && data[i] != secs[i/2] {
- t.Errorf("push/pop mismatch: have %v, want %v.", secs[i/2], data[i])
- }
- }
- }
-}